fixed several bugs.
[unix-history] / usr / src / usr.sbin / chown / chown.c
CommitLineData
69e53de7
BJ
1static char *sccsid = "@(#)chown.c 4.1 (Berkeley) %G%";
2/*
3 * chown uid file ...
4 */
5
6#include <stdio.h>
7#include <ctype.h>
8#include <sys/types.h>
9#include <sys/stat.h>
10#include <pwd.h>
11
12struct passwd *pwd,*getpwnam();
13struct stat stbuf;
14int uid;
15int status;
16
17main(argc, argv)
18char *argv[];
19{
20 register c;
21
22 if(argc < 3) {
23 printf("usage: chown uid file ...\n");
24 exit(4);
25 }
26 if(isnumber(argv[1])) {
27 uid = atoi(argv[1]);
28 goto cho;
29 }
30 if((pwd=getpwnam(argv[1])) == NULL) {
31 printf("unknown user id: %s\n",argv[1]);
32 exit(4);
33 }
34 uid = pwd->pw_uid;
35
36cho:
37 for(c=2; c<argc; c++) {
38 stat(argv[c], &stbuf);
39 if(chown(argv[c], uid, stbuf.st_gid) < 0) {
40 perror(argv[c]);
41 status = 1;
42 }
43 }
44 exit(status);
45}
46
47isnumber(s)
48char *s;
49{
50 register c;
51
52 while(c = *s++)
53 if(!isdigit(c))
54 return(0);
55 return(1);
56}