commit 997f4f006caa784e6401d267aa2b04a1c0e63550
parent 90861840b76dd41da28c86da42a47e32ab97c8cf
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Wed, 23 Apr 2014 22:48:04 +0200
chown: return EXIT_FAILURE if one file failed.
NOTE: coreutils chown wont process file series further on error, but busybox does. For consistency among the other tools follow busybox behaviour.
Signed-off-by: Hiltjo Posthuma <hiltjo@codemadness.org>
Diffstat:
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/chown.c b/chown.c
@@ -13,6 +13,7 @@ static void chownpwgr(const char *);
static bool rflag = false;
static struct passwd *pw = NULL;
static struct group *gr = NULL;
+static int ret = EXIT_SUCCESS;
static void
usage(void)
@@ -62,15 +63,17 @@ main(int argc, char *argv[])
for(; argc > 0; argc--, argv++)
chownpwgr(argv[0]);
- return EXIT_SUCCESS;
+ return ret;
}
void
chownpwgr(const char *path)
{
if(chown(path, pw ? pw->pw_uid : (uid_t)-1,
- gr ? gr->gr_gid : (gid_t)-1) == -1)
+ gr ? gr->gr_gid : (gid_t)-1) == -1) {
weprintf("chown %s:", path);
+ ret = EXIT_FAILURE;
+ }
if(rflag)
recurse(path, chownpwgr);
}