X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;ds=sidebyside;f=init.c;h=ab4ad56519f2085ebd46226be8cddba1fa5bde87;hb=79565b6c910e76c19cd5c0729659d6e96472c785;hp=26e4dc7a7b20143bc4abd30ad86169cb150cf38c;hpb=b02c54ebeef845480a09690fe092071d823c1f0f;p=oweals%2Fbusybox.git diff --git a/init.c b/init.c index 26e4dc7a7..ab4ad5651 100644 --- a/init.c +++ b/init.c @@ -37,21 +37,46 @@ #include #include #include -#include -#include /* for serial_struct */ -#include -#include -#include #include #include #include #include -#include /* for vt_stat */ #include #ifdef BB_SYSLOGD # include #endif +#define bb_need_full_version +#define BB_DECLARE_EXTERN +#include "messages.c" + +/* From */ +struct vt_stat { + unsigned short v_active; /* active vt */ + unsigned short v_signal; /* signal to send */ + unsigned short v_state; /* vt bitmask */ +}; +#define VT_GETSTATE 0x5603 /* get global vt state info */ + +/* From */ +struct serial_struct { + int type; + int line; + int port; + int irq; + int flags; + int xmit_fifo_size; + int custom_divisor; + int baud_base; + unsigned short close_delay; + char reserved_char[2]; + int hub6; + unsigned short closing_wait; /* time to wait before closing */ + unsigned short closing_wait2; /* no longer used... */ + int reserved[4]; +}; + + #ifndef RB_HALT_SYSTEM #define RB_HALT_SYSTEM 0xcdef0123 @@ -84,9 +109,7 @@ #include #endif -#ifndef KERNEL_VERSION #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) -#endif #if defined(__GLIBC__) #include @@ -132,7 +155,7 @@ static const struct initActionType actions[] = { {"wait", WAIT}, {"once", ONCE}, {"ctrlaltdel", CTRLALTDEL}, - {0} + {0, 0} }; /* Set up a linked list of initActions, to be read from inittab */ @@ -224,8 +247,6 @@ static void message(int device, char *fmt, ...) } } -#define CTRLCHAR(ch) ((ch)&0x1f) - /* Set terminal settings to reasonable defaults */ void set_term(int fd) { @@ -234,14 +255,14 @@ void set_term(int fd) tcgetattr(fd, &tty); /* set control chars */ - tty.c_cc[VINTR] = CTRLCHAR('C'); /* Ctrl-C */ - tty.c_cc[VQUIT] = CTRLCHAR('\\'); /* Ctrl-\ */ - tty.c_cc[VERASE] = CTRLCHAR('?'); /* Ctrl-? */ - tty.c_cc[VKILL] = CTRLCHAR('U'); /* Ctrl-U */ - tty.c_cc[VEOF] = CTRLCHAR('D'); /* Ctrl-D */ - tty.c_cc[VSTOP] = CTRLCHAR('S'); /* Ctrl-S */ - tty.c_cc[VSTART] = CTRLCHAR('Q'); /* Ctrl-Q */ - tty.c_cc[VSUSP] = CTRLCHAR('Z'); /* Ctrl-Z */ + tty.c_cc[VINTR] = 3; /* C-c */ + tty.c_cc[VQUIT] = 28; /* C-\ */ + tty.c_cc[VERASE] = 127; /* C-? */ + tty.c_cc[VKILL] = 21; /* C-u */ + tty.c_cc[VEOF] = 4; /* C-d */ + tty.c_cc[VSTART] = 17; /* C-q */ + tty.c_cc[VSTOP] = 19; /* C-s */ + tty.c_cc[VSUSP] = 26; /* C-z */ /* use line dicipline 0 */ tty.c_line = 0; @@ -568,7 +589,7 @@ static void shutdown_system(void) run_lastAction(); sync(); - if (kernelVersion > 0 && kernelVersion <= 2 * 65536 + 2 * 256 + 11) { + if (kernelVersion > 0 && kernelVersion <= KERNEL_VERSION(2,2,11)) { /* bdflush, kupdate not needed for kernels >2.2.11 */ bdflush(1, 0); sync(); @@ -587,11 +608,9 @@ static void halt_signal(int sig) /* allow time for last message to reach serial console */ sleep(2); -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0) - if (sig == SIGUSR2) + if (sig == SIGUSR2 && kernelVersion >= KERNEL_VERSION(2,2,0)) init_reboot(RB_POWER_OFF); else -#endif init_reboot(RB_HALT_SYSTEM); exit(0); } @@ -876,7 +895,7 @@ extern int init_main(int argc, char **argv) /* Expect to be invoked as init with PID=1 or be invoked as linuxrc */ if (getpid() != 1 #ifdef BB_FEATURE_LINUXRC - && strstr(argv[0], "linuxrc") == NULL + && strstr(applet_name, "linuxrc") == NULL #endif ) { @@ -887,7 +906,7 @@ extern int init_main(int argc, char **argv) /* Set up sig handlers -- be sure to * clear all of these in run() */ signal(SIGUSR1, halt_signal); - signal(SIGUSR2, reboot_signal); + signal(SIGUSR2, halt_signal); signal(SIGINT, reboot_signal); signal(SIGTERM, reboot_signal); #if defined BB_FEATURE_INIT_CHROOT @@ -923,16 +942,14 @@ extern int init_main(int argc, char **argv) CONSOLE| #endif LOG, - "init started: BusyBox v%s (%s) multi-call binary\r\n", - BB_VER, BB_BT); + "init started: %s\r\n", full_version); #else message( #if ! defined BB_FEATURE_EXTRA_QUIET CONSOLE| #endif LOG, - "init(%d) started: BusyBox v%s (%s) multi-call binary\r\n", - getpid(), BB_VER, BB_BT); + "init(%d) started: %s\r\n", getpid(), full_version); #endif