commit 997f4f006caa784e6401d267aa2b04a1c0e63550
Author: Hiltjo Posthuma <[email protected]>
Date:   Wed Apr 23 22:48:04 2014 +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 <[email protected]>

diff --git a/chown.c b/chown.c
index 245eb2e..bf37e65 100644
--- 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);
 }


Reply via email to