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