diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-04-01 01:18:20 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-04-01 01:18:20 +0000 |
commit | 2856dab4770e521a87c18b04ae8ebc209a9b95f9 (patch) | |
tree | d4f6495339702c0b6d79816d0bb07ba4b6679ce8 /runit | |
parent | f443bffd3c24c4b7fcbc0472c75e747e26c24fef (diff) | |
download | busybox-2856dab4770e521a87c18b04ae8ebc209a9b95f9.tar.gz |
tcpsvd: new applet
It's a GPL-ed 'clone' of Dan Bernstein's tcpserver.
Author: Gerrit Pape <pape@smarden.org>
http://smarden.sunsite.dk/ipsvd/
size tcpsvd.o
text data bss dec hex filename
2571 4 16 2591 a1f tcpsvd.o
Diffstat (limited to 'runit')
-rw-r--r-- | runit/runit_lib.c | 70 | ||||
-rw-r--r-- | runit/runit_lib.h | 23 | ||||
-rw-r--r-- | runit/runsv.c | 6 | ||||
-rw-r--r-- | runit/runsvdir.c | 7 | ||||
-rw-r--r-- | runit/svlogd.c | 6 |
5 files changed, 11 insertions, 101 deletions
diff --git a/runit/runit_lib.c b/runit/runit_lib.c index 4762096b4..fcb66c3db 100644 --- a/runit/runit_lib.c +++ b/runit/runit_lib.c @@ -385,56 +385,9 @@ int seek_set(int fd,seek_pos pos) #endif -/*** sig_block.c ***/ - -void sig_block(int sig) -{ - sigset_t ss; - sigemptyset(&ss); - sigaddset(&ss, sig); - sigprocmask(SIG_BLOCK, &ss, NULL); -} - -void sig_unblock(int sig) -{ - sigset_t ss; - sigemptyset(&ss); - sigaddset(&ss, sig); - sigprocmask(SIG_UNBLOCK, &ss, NULL); -} - -void sig_blocknone(void) -{ - sigset_t ss; - sigemptyset(&ss); - sigprocmask(SIG_SETMASK, &ss, NULL); -} - - -/*** sig_catch.c ***/ - -void sig_catch(int sig,void (*f)(int)) -{ - struct sigaction sa; - sa.sa_handler = f; - sa.sa_flags = 0; - sigemptyset(&sa.sa_mask); - sigaction(sig,&sa, NULL); -} - - -/*** sig_pause.c ***/ - -void sig_pause(void) -{ - sigset_t ss; - sigemptyset(&ss); - sigsuspend(&ss); -} - - /*** str_chr.c ***/ +// strchrnul? unsigned str_chr(const char *s,int c) { char ch; @@ -449,24 +402,3 @@ unsigned str_chr(const char *s,int c) } return t - s; } - - -/*** wait_nohang.c ***/ - -int wait_nohang(int *wstat) -{ - return waitpid(-1, wstat, WNOHANG); -} - - -/*** wait_pid.c ***/ - -int wait_pid(int *wstat, int pid) -{ - int r; - - do - r = waitpid(pid, wstat, 0); - while ((r == -1) && (errno == EINTR)); - return r; -} diff --git a/runit/runit_lib.h b/runit/runit_lib.h index 9fe4166bc..25aeeaf70 100644 --- a/runit/runit_lib.h +++ b/runit/runit_lib.h @@ -123,32 +123,9 @@ extern int open_write(const char *); extern unsigned pmatch(const char *, const char *, unsigned); -/*** sig.h ***/ - -extern void sig_catch(int,void (*)(int)); -#define sig_ignore(s) (sig_catch((s), SIG_IGN)) -#define sig_uncatch(s) (sig_catch((s), SIG_DFL)) - -extern void sig_block(int); -extern void sig_unblock(int); -extern void sig_blocknone(void); -extern void sig_pause(void); - - /*** str.h ***/ extern unsigned str_chr(const char *,int); /* never returns NULL */ #define str_diff(s,t) strcmp((s), (t)) #define str_equal(s,t) (!strcmp((s), (t))) - - -/*** wait.h ***/ - -extern int wait_pid(int *wstat, int pid); -extern int wait_nohang(int *wstat); - -#define wait_crashed(w) ((w) & 127) -#define wait_exitcode(w) ((w) >> 8) -#define wait_stopsig(w) ((w) >> 8) -#define wait_stopped(w) (((w) & 127) == 127) diff --git a/runit/runsv.c b/runit/runsv.c index 018456847..61eb02e64 100644 --- a/runit/runsv.c +++ b/runit/runsv.c @@ -323,11 +323,11 @@ static void startservice(struct svdir *s) close(logpipe[0]); } } - sig_uncatch(SIGCHLD); + signal(SIGCHLD, SIG_DFL); + signal(SIGTERM, SIG_DFL); sig_unblock(SIGCHLD); - sig_uncatch(SIGTERM); sig_unblock(SIGTERM); - execve(*run, run, environ); + execvp(*run, run); fatal2_cannot(s->islog ? "start log/" : "start ", *run); } if (s->state != S_FINISH) { diff --git a/runit/runsvdir.c b/runit/runsvdir.c index cce2c5d9c..39929fc49 100644 --- a/runit/runsvdir.c +++ b/runit/runsvdir.c @@ -97,9 +97,10 @@ static void runsv(int no, const char *name) prog[0] = (char*)"runsv"; prog[1] = (char*)name; prog[2] = NULL; - sig_uncatch(SIGHUP); - sig_uncatch(SIGTERM); - if (pgrp) setsid(); + if (pgrp) + setsid(); + signal(SIGHUP, SIG_DFL); + signal(SIGTERM, SIG_DFL); BB_EXECVP(prog[0], prog); //pathexec_run(*prog, prog, (char* const*)environ); fatal2_cannot("start runsv ", name); diff --git a/runit/svlogd.c b/runit/svlogd.c index fb834a403..1d6625561 100644 --- a/runit/svlogd.c +++ b/runit/svlogd.c @@ -143,9 +143,9 @@ static unsigned processorstart(struct logdir *ld) int fd; /* child */ - sig_uncatch(SIGTERM); - sig_uncatch(SIGALRM); - sig_uncatch(SIGHUP); + signal(SIGTERM, SIG_DFL); + signal(SIGALRM, SIG_DFL); + signal(SIGHUP, SIG_DFL); sig_unblock(SIGTERM); sig_unblock(SIGALRM); sig_unblock(SIGHUP); |