|
|
1.1 root 1: /*
2: * Change the owner of specified files.
3: */
4:
5: #include <stdio.h>
6: #include <sys/stat.h>
7: #include <pwd.h>
8:
9: main(argc, argv)
10: char *argv[];
11: {
12: register struct passwd *pwp;
13: register int c;
14: register short owner, group;
15: struct stat sb;
16: register short status = 0;
17:
18: if (argc < 3)
19: usage();
20: if ((c = *argv[1])>='0' && c<='9')
21: owner = atoi(argv[1]);
22: else {
23: if ((pwp = getpwnam(argv[1])) == NULL)
24: cherr("Bad username `%s'\n", argv[1]);
25: owner = pwp->pw_uid;
26: }
27: for (c = 2; c < argc; c++) {
28: group = 0;
29: if (stat(argv[c], &sb) >= 0)
30: group = sb.st_gid;
31: if (chown(argv[c], owner, group) < 0) {
32: perror(argv[c]);
33: status = 2;
34: }
35: }
36: exit (status);
37: }
38:
39: usage()
40: {
41: fprintf(stderr, "Usage: chown owner file ...\n");
42: exit(1);
43: }
44:
45: /* VARARGS */
46: cherr(x)
47: {
48: fprintf(stderr, "chown: %r", &x);
49: exit(2);
50: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.