summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2005-03-06 23:12:06 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2005-03-06 23:12:06 +0000
commit6b76ca09ca0964440800cd2614ff95f3d250826c (patch)
tree7754209bf0c981840ffb701874f8f67412558f8b
parent986fc6f13b5f61f46195fd1bc399b6e089c90a6c (diff)
downloadmailutils-6b76ca09ca0964440800cd2614ff95f3d250826c.tar.gz
mailutils-6b76ca09ca0964440800cd2614ff95f3d250826c.tar.bz2
(mu_spawnvp): Minor fixes
-rw-r--r--mailbox/mutil.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/mailbox/mutil.c b/mailbox/mutil.c
index 30044f21e..22e57f761 100644
--- a/mailbox/mutil.c
+++ b/mailbox/mutil.c
@@ -613,7 +613,7 @@ mu_tempname (const char *tmpdir)
* to find it.
*/
int
-mu_spawnvp (const char* prog, const char* const av_[], int* stat)
+mu_spawnvp (const char *prog, const char *const av_[], int *stat)
{
pid_t pid;
int err = 0;
@@ -623,7 +623,7 @@ mu_spawnvp (const char* prog, const char* const av_[], int* stat)
struct sigaction savequit;
sigset_t chldmask;
sigset_t savemask;
- char** av = (char**) av_;
+ char **av = (char **) av_;
if (!prog || !av)
return EINVAL;
@@ -635,13 +635,20 @@ mu_spawnvp (const char* prog, const char* const av_[], int* stat)
if (sigaction (SIGINT, &ignore, &saveintr) < 0)
return errno;
if (sigaction (SIGQUIT, &ignore, &savequit) < 0)
- return errno;
+ {
+ sigaction (SIGINT, &saveintr, NULL);
+ return errno;
+ }
sigemptyset (&chldmask); /* now block SIGCHLD */
sigaddset (&chldmask, SIGCHLD);
if (sigprocmask (SIG_BLOCK, &chldmask, &savemask) < 0)
- return errno;
+ {
+ sigaction (SIGINT, &saveintr, NULL);
+ sigaction (SIGQUIT, &savequit, NULL);
+ return errno;
+ }
#ifdef HAVE_VFORK
pid = vfork ();
@@ -675,7 +682,7 @@ mu_spawnvp (const char* prog, const char* const av_[], int* stat)
err = errno; /* error other than EINTR from waitpid() */
break;
}
- if(err == 0 && stat)
+ if (err == 0 && stat)
*stat = progstat;
}

Return to:

Send suggestions and report system problems to the System administrator.