* Copyright (c) 1980 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
"@(#) Copyright (c) 1980 Regents of the University of California.\n\
static char sccsid
[] = "@(#)chown.c 5.1 (Berkeley) %G%";
* chown [-fR] uid[.gid] file ...
struct passwd
*pwd
,*getpwnam();
register char *flags
, *group
;
fprintf(stderr
, "usage: chown [-fR] owner[.group] file ...\n");
for (flags
= argv
[1]; *flags
; ++flags
)
case 'f': fflag
++; break;
case 'R': rflag
++; break;
printf("chown: unknown option: %c\n", *flags
);
for (group
= argv
[1]; *group
; group
++) {
if ((grp
=getgrnam(group
)) == NULL
) {
printf("unknown group: %s\n",group
);
if ((pwd
=getpwnam(argv
[1])) == NULL
) {
printf("unknown user id: %s\n",argv
[1]);
if (lstat(argv
[c
], &stbuf
) < 0) {
printf("chown: couldn't stat %s\n", argv
[c
]);
if (rflag
&& stbuf
.st_mode
& S_IFDIR
)
status
+= chownr(argv
[c
], group
, uid
, gid
);
else if (chown(argv
[c
], uid
, gid
) < 0 && !fflag
) {
chownr(dir
, dogrp
, uid
, gid_save
)
register struct direct
*dp
;
if (getwd(savedir
) == 0) {
fprintf(stderr
, "chown: %s\n", savedir
);
if (chown(dir
, uid
, gid_save
) < 0 && !fflag
) {
if ((dirp
= opendir(".")) == NULL
) {
dp
= readdir(dirp
); /* read "." and ".." */
for (dp
= readdir(dirp
); dp
!= NULL
; dp
= readdir(dirp
)) {
if (lstat(dp
->d_name
, &st
) < 0) {
fprintf(stderr
, "chown: can't access %s\n", dp
->d_name
);
if (st
.st_mode
& S_IFDIR
)
chownr(dp
->d_name
, dogrp
, uid
, gid
);
if (chown(dp
->d_name
, uid
, gid
) < 0 && !fflag
) {