New test mode that allows run_parts to fail silently if the directory is not found. Patch from Bastian Blank
This commit was genuinely broken at the time (not related to our build system): sysdeps/linux/Config.in "fileutils/Config.in" dosyasini kaynak gosteriyor ama bu dosya repoda hic var olmadi (2002-12-05 - 2003-02-15 arasi orijinal yazar hatasi, 3238ea167 ile duzeltildi)
No binary (build failed)
—
(log yok)
| @@ -86,11 +86,11 @@ char *strtok_r(char *s, const char *delim, char **ptrptr); | |
| extern void show_usage(void) __attribute__ ((noreturn)); | |
| extern void error_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))); | |
| extern void error_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2))); | |
| - | extern void perror_msg(const char *s, ...); |
| - | extern void perror_msg_and_die(const char *s, ...) __attribute__ ((noreturn)); |
| + | extern void perror_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))); |
| + | extern void perror_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2))); |
| extern void vherror_msg(const char *s, va_list p); | |
| - | extern void herror_msg(const char *s, ...); |
| - | extern void herror_msg_and_die(const char *s, ...) __attribute__ ((noreturn)); |
| + | extern void herror_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))); |
| + | extern void herror_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2))); |
| /* These two are used internally -- you shouldn't need to use them */ | |
| extern void verror_msg(const char *s, va_list p); | |
| @@ -43,8 +43,10 @@ static int valid_name(const struct dirent *d) | |
| return 1; | |
| } | |
| - | /* run_parts */ |
| - | /* Find the parts to run & call run_part() */ |
| + | /* test mode = 1 is the same as offical run_parts |
| + | * test_mode = 2 means to fail siliently on missing directories |
| + | */ |
| + | |
| extern int run_parts(char **args, const unsigned char test_mode) | |
| { | |
| struct dirent **namelist = 0; | |
| @@ -64,6 +66,9 @@ extern int run_parts(char **args, const unsigned char test_mode) | |
| entries = scandir(arg0, &namelist, valid_name, alphasort); | |
| if (entries == -1) { | |
| + | if (test_mode & 2) { |
| + | return(2); |
| + | } |
| perror_msg_and_die("failed to open directory %s", arg0); | |
| } | |
| @@ -75,8 +80,8 @@ extern int run_parts(char **args, const unsigned char test_mode) | |
| perror_msg_and_die("failed to stat component %s", filename); | |
| } | |
| if (S_ISREG(st.st_mode) && !access(filename, X_OK)) { | |
| - | if (test_mode) { |
| - | puts("%s", filename); |
| + | if (test_mode & 1) { |
| + | puts(filename); |
| } else { | |
| /* exec_errno is common vfork variable */ | |
| volatile int exec_errno = 0; | |
| @@ -1010,7 +1010,7 @@ static int execute_all(interface_defn_t *ifd, execfn *exec, const char *opt) | |
| buf = xmalloc(xstrlen(opt) + 19); | |
| sprintf(buf, "/etc/network/if-%s.d", opt); | |
| - | run_parts(&buf, 0); |
| + | run_parts(&buf, 2); |
| free(buf); | |
| return (1); | |
| } | |