new defines in file.h
[unix-history] / usr / src / usr.sbin / chown / chown.c
CommitLineData
9a5d5654 1static char *sccsid = "@(#)chown.c 4.2 (Berkeley) %G%";
69e53de7
BJ
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;
9a5d5654 16int fflag;
69e53de7
BJ
17
18main(argc, argv)
19char *argv[];
20{
21 register c;
22
23 if(argc < 3) {
9a5d5654 24 printf("usage: chown -f uid file ...\n");
69e53de7
BJ
25 exit(4);
26 }
9a5d5654
KM
27 if (strcmp(argv[1], "-f") == 0) {
28 fflag++;
29 argv++, argc--;
30 }
69e53de7
BJ
31 if(isnumber(argv[1])) {
32 uid = atoi(argv[1]);
33 goto cho;
34 }
35 if((pwd=getpwnam(argv[1])) == NULL) {
36 printf("unknown user id: %s\n",argv[1]);
37 exit(4);
38 }
39 uid = pwd->pw_uid;
40
41cho:
42 for(c=2; c<argc; c++) {
43 stat(argv[c], &stbuf);
9a5d5654 44 if(chown(argv[c], uid, stbuf.st_gid) < 0 && !fflag) {
69e53de7
BJ
45 perror(argv[c]);
46 status = 1;
47 }
48 }
49 exit(status);
50}
51
52isnumber(s)
53char *s;
54{
55 register c;
56
57 while(c = *s++)
58 if(!isdigit(c))
59 return(0);
60 return(1);
61}