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>
This commit is contained in:
parent
90861840b7
commit
997f4f006c
7
chown.c
7
chown.c
|
@ -13,6 +13,7 @@ static void chownpwgr(const char *);
|
||||||
static bool rflag = false;
|
static bool rflag = false;
|
||||||
static struct passwd *pw = NULL;
|
static struct passwd *pw = NULL;
|
||||||
static struct group *gr = NULL;
|
static struct group *gr = NULL;
|
||||||
|
static int ret = EXIT_SUCCESS;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
usage(void)
|
usage(void)
|
||||||
|
@ -62,15 +63,17 @@ main(int argc, char *argv[])
|
||||||
for(; argc > 0; argc--, argv++)
|
for(; argc > 0; argc--, argv++)
|
||||||
chownpwgr(argv[0]);
|
chownpwgr(argv[0]);
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
chownpwgr(const char *path)
|
chownpwgr(const char *path)
|
||||||
{
|
{
|
||||||
if(chown(path, pw ? pw->pw_uid : (uid_t)-1,
|
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);
|
weprintf("chown %s:", path);
|
||||||
|
ret = EXIT_FAILURE;
|
||||||
|
}
|
||||||
if(rflag)
|
if(rflag)
|
||||||
recurse(path, chownpwgr);
|
recurse(path, chownpwgr);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user