← Commit list

2e51a14d5

Glenn L McGrath
Glenn L McGrath
2003-01-20
SOURCE BUG Duration: 2s

Subject

New test mode that allows run_parts to fail silently if the directory is not found. Patch from Bastian Blank

SOURCE BUG

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)

→ Bu hatanin tam hikayesini ve duzeltme diffini gor

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Debian 14.2.0-19) 14.2.0

—

Build Log

(log yok)

Commit Diff GitHub →

include/libbb.h+4 -4
@@ -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);
libbb/run_parts.c+9 -4
@@ -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;
networking/ifupdown.c+1 -1
@@ -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);
}