X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=sbr%2Fpush.c;h=eb6011a970248119648878629daaddbcf5dcaa80;hb=7456ca0a9639bfb73899b721fe66323d90277160;hp=d664927b60d588bfbe60ae7d71e670b0521b071b;hpb=714b5c530ece27ea2835a313013f5b770163403c;p=mmh diff --git a/sbr/push.c b/sbr/push.c index d664927..eb6011a 100644 --- a/sbr/push.c +++ b/sbr/push.c @@ -15,34 +15,30 @@ void push(void) { pid_t pid; - int i; - for (i = 0; (pid = fork()) == -1 && i < 5; i++) - sleep(5); + switch (pid = fork()) { + case -1: + /* fork error */ + advise(NULL, "unable to fork, so can't push..."); + break; - switch (pid) { - case -1: - /* fork error */ - advise(NULL, "unable to fork, so can't push..."); - break; - - case 0: - /* child, block a few signals and continue */ - SIGNAL(SIGHUP, SIG_IGN); - SIGNAL(SIGINT, SIG_IGN); - SIGNAL(SIGQUIT, SIG_IGN); - SIGNAL(SIGTERM, SIG_IGN); + case 0: + /* child, block a few signals and continue */ + SIGNAL(SIGHUP, SIG_IGN); + SIGNAL(SIGINT, SIG_IGN); + SIGNAL(SIGQUIT, SIG_IGN); + SIGNAL(SIGTERM, SIG_IGN); #ifdef SIGTSTP - SIGNAL(SIGTSTP, SIG_IGN); - SIGNAL(SIGTTIN, SIG_IGN); - SIGNAL(SIGTTOU, SIG_IGN); + SIGNAL(SIGTSTP, SIG_IGN); + SIGNAL(SIGTTIN, SIG_IGN); + SIGNAL(SIGTTOU, SIG_IGN); #endif - freopen("/dev/null", "r", stdin); - freopen("/dev/null", "w", stdout); - break; + freopen("/dev/null", "r", stdin); + freopen("/dev/null", "w", stdout); + break; - default: - /* parent, just exit */ - done(0); + default: + /* parent, just exit */ + done(0); } }