X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Fcontext_save.c;h=d1371d017afc4b91f1ca25817f84f725a9c477b4;hp=e62aca834c1de8bae60bd0c2c51f37842a377585;hb=ac0b9fcce4167e2959ebc5b8d6efb8511acec66d;hpb=714b5c530ece27ea2835a313013f5b770163403c diff --git a/sbr/context_save.c b/sbr/context_save.c index e62aca8..d1371d0 100644 --- a/sbr/context_save.c +++ b/sbr/context_save.c @@ -40,7 +40,7 @@ context_save(void) sigaddset(&set, SIGINT); sigaddset(&set, SIGQUIT); sigaddset(&set, SIGTERM); - SIGPROCMASK(SIG_BLOCK, &set, &oset); + sigprocmask(SIG_BLOCK, &set, &oset); if (!(out = lkfopen(ctxpath, "w"))) adios(ctxpath, "unable to write"); @@ -49,7 +49,7 @@ context_save(void) fprintf(out, "%s: %s\n", np->n_name, np->n_field); lkfclose(out, ctxpath); - SIGPROCMASK(SIG_SETMASK, &oset, &set); /* reset the signal mask */ + sigprocmask(SIG_SETMASK, &oset, &set); /* reset the signal mask */ if (action == 0) _exit(0); /* we are child, time to die */ @@ -68,27 +68,23 @@ context_save(void) static int m_chkids(void) { - int i; pid_t pid; if (getuid() == geteuid()) return (-1); - for (i = 0; (pid = fork()) == -1 && i < 5; i++) - sleep(5); + switch (pid = fork()) { + case -1: + break; - switch (pid) { - case -1: - break; + case 0: + setgid(getgid()); + setuid(getuid()); + break; - case 0: - setgid(getgid()); - setuid(getuid()); - break; - - default: - pidwait(pid, -1); - break; + default: + pidwait(pid, -1); + break; } return pid;