chmod: process file series behaviour

continue processing files if a chmod on a file in a series failed, but return with an error status code.

Signed-off-by: Hiltjo Posthuma <hiltjo@codemadness.org>
This commit is contained in:
Hiltjo Posthuma 2014-04-23 22:00:08 +02:00 committed by sin
parent bd99b92e91
commit 90861840b7
1 changed files with 10 additions and 4 deletions

14
chmod.c
View File

@ -11,6 +11,7 @@ static void chmodr(const char *);
static bool rflag = false;
static char *modestr = "";
static mode_t mask = 0;
static int ret = EXIT_SUCCESS;
static void
usage(void)
@ -55,7 +56,7 @@ done:
for (; argc > 0; argc--, argv++)
chmodr(argv[0]);
return EXIT_SUCCESS;
return ret;
}
void
@ -64,12 +65,17 @@ chmodr(const char *path)
struct stat st;
mode_t m;
if(stat(path, &st) == -1)
eprintf("stat %s:", path);
if(stat(path, &st) == -1) {
weprintf("stat %s:", path);
ret = EXIT_FAILURE;
return;
}
m = parsemode(modestr, st.st_mode, mask);
if(chmod(path, m) == -1)
if(chmod(path, m) == -1) {
weprintf("chmod %s:", path);
ret = EXIT_FAILURE;
}
if(rflag)
recurse(path, chmodr);
}