recurse: add symlink derefencing flags -H and -L

This commit is contained in:
Tai Chi Minh Ralph Eastwood
2015-02-09 19:53:24 +00:00
committed by sin
parent 5a13865385
commit 82bc92da51
7 changed files with 37 additions and 19 deletions

12
chgrp.c
View File

@@ -10,19 +10,20 @@
static int gid;
static int status;
static int rflag;
static char fflag = 'P';
static struct stat st;
static char *chown_f_name = "chown";
static int (*chown_f)(const char *, uid_t, gid_t) = chown;
static void
chgrp(const char *path)
chgrp(const char *path, char fflag)
{
if (chown_f(path, st.st_uid, gid) < 0) {
weprintf("%s %s:", chown_f_name, path);
status = 1;
}
if (rflag)
recurse(path, chgrp);
recurse(path, chgrp, fflag);
}
static void
@@ -44,6 +45,11 @@ main(int argc, char *argv[])
case 'R':
rflag = 1;
break;
case 'H':
case 'L':
case 'P':
fflag = ARGC();
break;
default:
usage();
} ARGEND;
@@ -67,7 +73,7 @@ main(int argc, char *argv[])
status = 1;
continue;
}
chgrp(*argv);
chgrp(*argv, fflag);
}
return status;
}