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
chown.c
View File

@@ -9,6 +9,7 @@
#include "util.h"
static int rflag = 0;
static int fflag = 'P';
static uid_t uid = -1;
static gid_t gid = -1;
static int ret = 0;
@@ -16,14 +17,14 @@ static char *chown_f_name = "chown";
static int (*chown_f)(const char *, uid_t, gid_t) = chown;
static void
chownpwgr(const char *path)
chownpwgr(const char *path, int fflag)
{
if (chown_f(path, uid, gid) < 0) {
weprintf("%s %s:", chown_f_name, path);
ret = 1;
}
if (rflag)
recurse(path, chownpwgr);
recurse(path, chownpwgr, fflag);
}
static void
@@ -48,6 +49,11 @@ main(int argc, char *argv[])
case 'r':
rflag = 1;
break;
case 'H':
case 'L':
case 'P':
fflag = ARGC();
break;
default:
usage();
} ARGEND;
@@ -88,7 +94,7 @@ main(int argc, char *argv[])
}
}
for (; argc > 0; argc--, argv++)
chownpwgr(argv[0]);
chownpwgr(argv[0], fflag);
return ret;
}