fix watchdog on no-mmu systems by adding -F option for rexec
This commit was genuinely broken at the time (not related to our build system): scripts/config/mkconfigs.c (2005-08-01 - 2006-10-05 arasi) uretilen bbconfigopts.h icine .config satirlarini kacissiz, ham newline'larla gömüyordu - gecerli C degildi, busybox'un kendi bb_mkdep araci bile parse edemiyordu (7d219aab7 ile duzeltildi, mkconfigs shell scripte cevrildi)
No binary (build failed)
—
(log yok)
| @@ -3372,11 +3372,12 @@ USE_FEATURE_START_STOP_DAEMON_FANCY( \ | |
| "Mon Dec 17 10:31:44 GMT 2000" | |
| #define watchdog_trivial_usage \ | |
| - | "[-t <seconds>] DEV" |
| + | "[-t <seconds>] [-F] DEV" |
| #define watchdog_full_usage \ | |
| "Periodically write to watchdog device DEV.\n" \ | |
| "Options:\n" \ | |
| - | "\t-t\tTimer period in seconds - default is 30" |
| + | "\t-t\tTimer period in seconds - default is 30\n" \ |
| + | "\t-F\tStay in the foreground and don't fork" |
| #define wc_trivial_usage \ | |
| "[OPTION]... [FILE]..." | |
| @@ -15,6 +15,9 @@ | |
| #include <stdlib.h> | |
| #include <signal.h> | |
| + | #define OPT_FOREGROUND 0x01 |
| + | #define OPT_TIMER 0x02 |
| + | |
| /* Watchdog file descriptor */ | |
| static int fd; | |
| @@ -27,10 +30,13 @@ static void watchdog_shutdown(int ATTRIBUTE_UNUSED unused) | |
| int watchdog_main(int argc, char **argv) | |
| { | |
| + | unsigned long opts; |
| unsigned long timer_duration = 30; /* Userspace timer duration, in seconds */ | |
| char *t_arg; | |
| - | if (bb_getopt_ulflags(argc, argv, "t:", &t_arg)) |
| + | opts = bb_getopt_ulflags(argc, argv, "Ft:", &t_arg); |
| + | |
| + | if (opts & OPT_TIMER) |
| timer_duration = bb_xgetlarg(t_arg, 10, 0, INT_MAX); | |
| /* We're only interested in the watchdog device .. */ | |
| @@ -38,7 +44,8 @@ int watchdog_main(int argc, char **argv) | |
| bb_show_usage(); | |
| #ifdef BB_NOMMU | |
| - | vfork_daemon(0, 1); |
| + | if (!(opts & OPT_FOREGROUND)) |
| + | vfork_daemon_rexec(0, 1, argc, argv, "-F"); |
| #else | |
| bb_xdaemon(0, 1); | |
| #endif | |