← Commit list

cd68a2e1a

Mike Frysinger
Mike Frysinger
2006-06-26
SOURCE BUG Duration: 33s

Subject

fix watchdog on no-mmu systems by adding -F option for rexec

SOURCE BUG

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)

→ Bu hatanin tam hikayesini ve duzeltme diffini gor

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

include/usage.h+3 -2
@@ -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]..."
miscutils/watchdog.c+9 -2
@@ -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