From 5348a94d2a6baae045918c4cc2bdd256ee8de5b8 Mon Sep 17 00:00:00 2001 From: vda Date: Sun, 1 Apr 2007 01:18:20 +0000 Subject: tcpsvd: new applet It's a GPL-ed 'clone' of Dan Bernstein's tcpserver. Author: Gerrit Pape http://smarden.sunsite.dk/ipsvd/ size tcpsvd.o text data bss dec hex filename 2571 4 16 2591 a1f tcpsvd.o git-svn-id: svn://busybox.net/trunk/busybox@18294 69ca8d6d-28ef-0310-b511-8ec308f3f277 --- runit/runit_lib.c | 70 +------------------------------------------------------ runit/runit_lib.h | 23 ------------------ runit/runsv.c | 6 ++--- runit/runsvdir.c | 7 +++--- runit/svlogd.c | 6 ++--- 5 files changed, 11 insertions(+), 101 deletions(-) (limited to 'runit') 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); -- cgit v1.2.3-55-g6feb