xref: /plan9/sys/src/cmd/chgrp.c (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
13e12c5d1SDavid du Colombier #include <u.h>
23e12c5d1SDavid du Colombier #include <libc.h>
33e12c5d1SDavid du Colombier 
43e12c5d1SDavid du Colombier int	readgid(char*);
57dd7cddfSDavid du Colombier int	uflag;
63e12c5d1SDavid du Colombier 
73e12c5d1SDavid du Colombier void
main(int argc,char * argv[])83e12c5d1SDavid du Colombier main(int argc, char *argv[])
93e12c5d1SDavid du Colombier {
103e12c5d1SDavid du Colombier 	int i;
113e12c5d1SDavid du Colombier 	Dir dir;
123e12c5d1SDavid du Colombier 	char *group;
133e12c5d1SDavid du Colombier 	char *errs;
143e12c5d1SDavid du Colombier 
157dd7cddfSDavid du Colombier 	ARGBEGIN {
167dd7cddfSDavid du Colombier 	default:
177dd7cddfSDavid du Colombier 	usage:
187dd7cddfSDavid du Colombier 		fprint(2, "usage: chgrp [ -uo ] group file ....\n");
193e12c5d1SDavid du Colombier 		exits("usage");
207dd7cddfSDavid du Colombier 		return;
217dd7cddfSDavid du Colombier 	case 'u':
227dd7cddfSDavid du Colombier 	case 'o':
237dd7cddfSDavid du Colombier 		uflag++;
247dd7cddfSDavid du Colombier 		break;
257dd7cddfSDavid du Colombier 	} ARGEND
267dd7cddfSDavid du Colombier 	if(argc < 1)
277dd7cddfSDavid du Colombier 		goto usage;
287dd7cddfSDavid du Colombier 
297dd7cddfSDavid du Colombier 	group = argv[0];
303e12c5d1SDavid du Colombier 	errs = 0;
317dd7cddfSDavid du Colombier 	for(i=1; i<argc; i++){
32*9a747e4fSDavid du Colombier 		nulldir(&dir);
337dd7cddfSDavid du Colombier 		if(uflag)
34*9a747e4fSDavid du Colombier 			dir.uid = group;
357dd7cddfSDavid du Colombier 		else
36*9a747e4fSDavid du Colombier 			dir.gid = group;
373e12c5d1SDavid du Colombier 		if(dirwstat(argv[i], &dir) == -1) {
387dd7cddfSDavid du Colombier 			fprint(2, "chgrp: can't wstat %s: %r\n", argv[i]);
393e12c5d1SDavid du Colombier 			errs = "can't wstat";
403e12c5d1SDavid du Colombier 			continue;
413e12c5d1SDavid du Colombier 		}
423e12c5d1SDavid du Colombier 	}
433e12c5d1SDavid du Colombier 	exits(errs);
443e12c5d1SDavid du Colombier }
45