Patch from Dan Langlois
No binary (build failed)
—
$ git checkout -f ed8a9be2871bce5bfef43bd2edc645a95098df75 HEAD is now at ed8a9be28 Patch from Dan Langlois <[email protected]> Support SIGSTOP/SIGCONT for wierd situations when people want init to actualy stop doing anything for a while... $ git clean -fdx Removing .menuconfig.log Removing MCmenu0 Removing MCmenu1 Removing MCmenu2 Removing MCmenu3 Removing MCmenu4 Removing include/config/ Removing scripts/lxdialog/checklist.o Removing scripts/lxdialog/inputbox.o Removing scripts/lxdialog/lxdialog Removing scripts/lxdialog/lxdialog.o Removing scripts/lxdialog/menubox.o Removing scripts/lxdialog/msgbox.o Removing scripts/lxdialog/textbox.o Removing scripts/lxdialog/util.o Removing scripts/lxdialog/yesno.o $ make SHELL=/bin/bash CC=/root/asi_db/compat/cc-wrapper.sh HOSTCC=/root/asi_db/compat/cc-wrapper.sh defconfig make: *** No rule to make target 'defconfig'. Stop. $ make SHELL=/bin/bash CC=/root/asi_db/compat/cc-wrapper.sh HOSTCC=/root/asi_db/compat/cc-wrapper.sh allnoconfig make: *** No rule to make target 'allnoconfig'. Stop. $ make SHELL=/bin/bash CC=/root/asi_db/compat/cc-wrapper.sh HOSTCC=/root/asi_db/compat/cc-wrapper.sh include/bb_config.h make: *** No rule to make target 'include/bb_config.h'. Stop. $ make SHELL=/bin/bash CC=/root/asi_db/compat/cc-wrapper.sh HOSTCC=/root/asi_db/compat/cc-wrapper.sh -j3 V=1 mkdir -p /root/asi_db/builds/busybox/_worktrees/w0/include/config make -C scripts/lxdialog all make[1]: Entering directory '/root/asi_db/builds/busybox/_worktrees/w0/scripts/lxdialog' /root/asi_db/compat/cc-wrapper.sh -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o checklist.o checklist.c /root/asi_db/compat/cc-wrapper.sh -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o menubox.o menubox.c /root/asi_db/compat/cc-wrapper.sh -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o textbox.o textbox.c /root/asi_db/compat/cc-wrapper.sh -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o yesno.o yesno.c /root/asi_db/compat/cc-wrapper.sh -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o inputbox.o inputbox.c /root/asi_db/compat/cc-wrapper.sh -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o util.o util.c /root/asi_db/compat/cc-wrapper.sh -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o lxdialog.o lxdialog.c /root/asi_db/compat/cc-wrapper.sh -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -DLOCALE -DCURSES_LOC="<ncurses.h>" -c -o msgbox.o msgbox.c /root/asi_db/compat/cc-wrapper.sh -o lxdialog checklist.o menubox.o textbox.o yesno.o inputbox.o util.o lxdialog.o msgbox.o -lncurses make[1]: Leaving directory '/root/asi_db/builds/busybox/_worktrees/w0/scripts/lxdialog' /bin/bash scripts/Menuconfig sysdeps/linux/config.in Using defaults found in sysdeps/linux/defconfig Preparing scripts: functions, parsingAwk died with error code 137. Giving up. .....done. Your BusyBox configuration changes were NOT saved. lxtemp.c:1:1: warning: return type defaults to ‘int’ [-Wimplicit-int] 1 | main() {} | ^~~~ textbox.c: In function ‘dialog_textbox’: textbox.c:42:10: warning: variable ‘search_term’ set but not used [-Wunused-but-set-variable] 42 | char search_term[MAX_LEN + 1]; | ^~~~~~~~~~~ textbox.c: In function ‘print_line’: textbox.c:462:12: warning: variable ‘x’ set but not used [-Wunused-but-set-variable] 462 | int y, x; | ^ textbox.c:462:9: warning: variable ‘y’ set but not used [-Wunused-but-set-variable] 462 | int y, x; | ^ inputbox.c: In function ‘dialog_inputbox’: inputbox.c:107:17: warning: pointer targets in passing argument 1 of ‘strcpy’ differ in signedness [-Wpointer-sign] 107 | strcpy (instr, init); | ^~~~~ | | | unsigned char * In file included from /usr/include/features.h:486, from /usr/include/x86_64-linux-gnu/sys/sysmacros.h:22, from /root/asi_db/compat/compat_stime.h:9, from <command-line>: /usr/include/x86_64-linux-gnu/bits/string_fortified.h:77:1: note: expected ‘char * restrict’ but argument is of type ‘unsigned char *’ 77 | __NTH (strcpy (char *__restrict __dest, const char *__restrict __src)) | ^~~~~ inputbox.c:109:23: warning: pointer targets in passing argument 1 of ‘strlen’ differ in signedness [-Wpointer-sign] 109 | input_x = strlen (instr); | ^~~~~ | | | unsigned char * In file included from dialog.h:27, from inputbox.c:22: /usr/include/string.h:407:35: note: expected ‘const char *’ but argument is of type ‘unsigned char *’ 407 | extern size_t strlen (const char *__s) | ~~~~~~~~~~~~^~~ In file included from dialog.h:29, from inputbox.c:22: inputbox.c:117:26: warning: pointer targets in passing argument 2 of ‘waddnstr’ differ in signedness [-Wpointer-sign] 117 | waddstr (dialog, instr); | ^~~~~ | | | unsigned char * /usr/include/curses.h:830:47: note: expected ‘const char *’ but argument is of type ‘unsigned char *’ 830 | extern NCURSES_EXPORT(int) waddnstr (WINDOW *,const char *,int); /* implemented */ | ^~~~~~~~~~~~ inputbox.c:147:43: warning: pointer targets in passing argument 1 of ‘strlen’ differ in signedness [-Wpointer-sign] 147 | input_x = strlen (instr) - scroll; | ^~~~~ | | | unsigned char * In file included from dialog.h:27, from inputbox.c:22: /usr/include/string.h:407:35: note: expected ‘const char *’ but argument is of type ‘unsigned char *’ 407 | extern size_t strlen (const char *__s) | ~~~~~~~~~~~~^~~ lxdialog.c: In function ‘j_inputbox’: lxdialog.c:211:25: warning: pointer targets in passing argument 2 of ‘fprintf’ differ in signedness [-Wpointer-sign] 211 | fprintf(stderr, dialog_input_result); | ^~~~~~~~~~~~~~~~~~~ | | | unsigned char * In file included from /usr/include/stdio.h:894, from /usr/include/curses.h:232, from dialog.h:29, from lxdialog.c:22: /usr/include/x86_64-linux-gnu/bits/stdio2.h:103:60: note: expected ‘const char * restrict’ but argument is of type ‘unsigned char *’ 103 | fprintf (FILE *__restrict __stream, const char *__restrict __fmt, ...) | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~ lxdialog.c:211:25: warning: format not a string literal and no format arguments [-Wformat-security] 211 | fprintf(stderr, dialog_input_result); | ^~~~~~~~~~~~~~~~~~~ scripts/Menuconfig: line 559: 1132844 Killed awk "$1" Error opening terminal: unknown.
| @@ -181,6 +181,7 @@ static char *log = VC_5; | |
| static int kernelVersion = 0; | |
| static char termType[32] = "TERM=linux"; | |
| static char console[32] = _PATH_CONSOLE; | |
| + | sig_atomic_t got_cont = 0; |
| static void delete_initAction(initAction * action); | |
| @@ -473,6 +474,9 @@ static pid_t run(char *command, char *terminal, int get_enter) | |
| signal(SIGINT, SIG_DFL); | |
| signal(SIGTERM, SIG_DFL); | |
| signal(SIGHUP, SIG_DFL); | |
| + | signal(SIGCONT, SIG_DFL); |
| + | signal(SIGSTOP, SIG_DFL); |
| + | signal(SIGTSTP, SIG_DFL); |
| if ((fd = device_open(terminal, O_RDWR)) < 0) { | |
| if (stat(terminal, &sb) != 0) { | |
| @@ -652,6 +656,9 @@ static void shutdown_system(void) | |
| sigaddset(&block_signals, SIGUSR2); | |
| sigaddset(&block_signals, SIGINT); | |
| sigaddset(&block_signals, SIGTERM); | |
| + | sigaddset(&block_signals, SIGCONT); |
| + | sigaddset(&block_signals, SIGSTOP); |
| + | sigaddset(&block_signals, SIGTSTP); |
| sigprocmask(SIG_BLOCK, &block_signals, NULL); | |
| /* Allow Ctrl-Alt-Del to reboot system. */ | |
| @@ -726,6 +733,27 @@ static void ctrlaltdel_signal(int sig) | |
| run_actions(CTRLALTDEL); | |
| } | |
| + | /* |
| + | * The SIGSTOP & SIGTSTP handler |
| + | */ |
| + | static void stop_handler(int sig) |
| + | { |
| + | int saved_errno = errno; |
| + | |
| + | got_cont = 0; |
| + | while(!got_cont) pause(); |
| + | got_cont = 0; |
| + | errno = saved_errno; |
| + | } |
| + | |
| + | /* |
| + | * The SIGCONT handler |
| + | */ |
| + | static void cont_handler(int sig) |
| + | { |
| + | got_cont = 1; |
| + | } |
| + | |
| #endif /* ! DEBUG_INIT */ | |
| static void new_initAction(initActionEnum action, char *process, char *cons) | |
| @@ -925,6 +953,9 @@ extern int init_main(int argc, char **argv) | |
| signal(SIGUSR2, halt_signal); | |
| signal(SIGINT, ctrlaltdel_signal); | |
| signal(SIGTERM, reboot_signal); | |
| + | signal(SIGCONT, cont_handler); |
| + | signal(SIGSTOP, stop_handler); |
| + | signal(SIGTSTP, stop_handler); |
| /* Turn off rebooting via CTL-ALT-DEL -- we get a | |
| * SIGINT on CAD so we can shut things down gracefully... */ | |