summaryrefslogtreecommitdiff
path: root/sys/src/cmd/chgrp.c
blob: 398fddbc138d7504b113caaa3cc59b4a365b3219 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <u.h>
#include <libc.h>

int	readgid(char*);
int	uflag;

void
main(int argc, char *argv[])
{
	int i;
	Dir dir;
	char *group;
	char *errs;

	ARGBEGIN {
	default:
	usage:
		fprint(2, "usage: chgrp [ -uo ] group file ....\n");
		exits("usage");
		return;
	case 'u':
	case 'o':
		uflag++;
		break;
	} ARGEND
	if(argc < 1)
		goto usage;

	group = argv[0];
	errs = 0;
	for(i=1; i<argc; i++){
		nulldir(&dir);
		if(uflag)
			dir.uid = group;
		else
			dir.gid = group;
		if(dirwstat(argv[i], &dir) == -1) {
			fprint(2, "chgrp: can't wstat %s: %r\n", argv[i]);
			errs = "can't wstat";
			continue;
		}
	}
	exits(errs);
}