xref: /original-bsd/usr.sbin/chown/chgrp.c (revision 4c0d4567)
1 static char *sccsid = "@(#)chgrp.c	4.1 (Berkeley) 10/01/80";
2 /*
3  * chgrp gid file ...
4  */
5 
6 #include <stdio.h>
7 #include <ctype.h>
8 #include <sys/types.h>
9 #include <sys/stat.h>
10 #include <grp.h>
11 
12 struct	group	*gr,*getgrnam();
13 struct	stat	stbuf;
14 int	gid;
15 int	status;
16 
17 main(argc, argv)
18 char *argv[];
19 {
20 	register c;
21 
22 	if(argc < 3) {
23 		printf("usage: chgrp gid file ...\n");
24 		exit(4);
25 	}
26 	if(isnumber(argv[1])) {
27 		gid = atoi(argv[1]);
28 	} else {
29 		if((gr=getgrnam(argv[1])) == NULL) {
30 			printf("unknown group: %s\n",argv[1]);
31 			exit(4);
32 		}
33 		gid = gr->gr_gid;
34 	}
35 	for(c=2; c<argc; c++) {
36 		stat(argv[c], &stbuf);
37 		if(chown(argv[c], stbuf.st_uid, gid) < 0) {
38 			perror(argv[c]);
39 			status = 1;
40 		}
41 	}
42 	exit(status);
43 }
44 
45 isnumber(s)
46 char *s;
47 {
48 	register c;
49 
50 	while(c = *s++)
51 		if(!isdigit(c))
52 			return(0);
53 	return(1);
54 }
55