Use POSIX signals.

This commit is contained in:
mycroft 1995-03-21 21:47:04 +00:00
parent d1a49b5d27
commit ebeae88da2
2 changed files with 15 additions and 6 deletions

View File

@ -39,7 +39,7 @@ static char copyright[] =
#ifndef lint
/*static char sccsid[] = "from: @(#)comsat.c 8.1 (Berkeley) 6/4/93";*/
static char rcsid[] = "$Id: comsat.c,v 1.6 1994/08/06 23:26:39 jtc Exp $";
static char rcsid[] = "$Id: comsat.c,v 1.7 1995/03/21 21:47:04 mycroft Exp $";
#endif /* not lint */
#include <sys/param.h>
@ -89,6 +89,7 @@ main(argc, argv)
register int cc;
int fromlen;
char msgbuf[100];
sigset_t sigset;
/* verify proper invocation */
fromlen = sizeof(from);
@ -124,11 +125,14 @@ main(argc, argv)
}
if (!nutmp) /* no one has logged in yet */
continue;
sigblock(sigmask(SIGALRM));
sigemptyset(&sigset);
sigaddset(&sigset, SIGALRM);
sigprocmask(SIG_SETMASK, &sigset, NULL);
msgbuf[cc] = '\0';
(void)time(&lastmsgtime);
mailfor(msgbuf);
sigsetmask(0L);
sigemptyset(&sigset);
sigprocmask(SIG_SETMASK, &sigset, NULL);
}
}

View File

@ -37,7 +37,7 @@
#ifndef lint
static char sccsid[] = "@(#)popen.c 8.3 (Berkeley) 4/6/94";
static char rcsid[] = "$Id: popen.c,v 1.3 1994/06/29 01:49:50 deraadt Exp $";
static char rcsid[] = "$Id: popen.c,v 1.4 1995/03/21 21:47:19 mycroft Exp $";
#endif /* not lint */
#include <sys/types.h>
@ -151,6 +151,7 @@ ftpd_pclose(iop)
{
int fdes, omask, status;
pid_t pid;
sigset_t sigset, osigset;
/*
* pclose returns -1 if stream is not associated with a
@ -159,10 +160,14 @@ ftpd_pclose(iop)
if (pids == 0 || pids[fdes = fileno(iop)] == 0)
return (-1);
(void)fclose(iop);
omask = sigblock(sigmask(SIGINT)|sigmask(SIGQUIT)|sigmask(SIGHUP));
sigemptyset(&sigset);
sigaddset(&sigset, SIGINT);
sigaddset(&sigset, SIGQUIT);
sigaddset(&sigset, SIGHUP);
sigprocmask(SIG_BLOCK, &sigset, &osigset);
while ((pid = waitpid(pids[fdes], &status, 0)) < 0 && errno == EINTR)
continue;
(void)sigsetmask(omask);
sigprocmask(SIG_SETMASK, &osigset, NULL);
pids[fdes] = 0;
if (pid < 0)
return (pid);