From f00d1f78179ec57cf31b3b85c23dd25783308fc3 Mon Sep 17 00:00:00 2001 From: mouring Date: Mon, 25 Aug 2003 01:16:21 +0000 Subject: [PATCH] - (bal) redo how we handle 'mysignal()'. Move it to openbsd-compat/bsd-misc.c, s/mysignal/signal/ and #define signal to be our 'mysignal' by default. OK djm@ --- ChangeLog | 5 ++++- entropy.c | 4 ++-- misc.c | 26 -------------------------- misc.h | 4 ---- openbsd-compat/bsd-misc.c | 26 ++++++++++++++++++++++++++ openbsd-compat/bsd-misc.h | 6 ++++++ progressmeter.c | 4 ++-- sshd.c | 4 ++-- sshpty.c | 12 ++++++------ 9 files changed, 48 insertions(+), 43 deletions(-) diff --git a/ChangeLog b/ChangeLog index c8f80021..cb40cc15 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,7 +2,10 @@ - (djm) Bug #621: Select OpenSC keys by usage attributes. Patch from larsch@trustcenter.de - (bal) openbsd-compat/ OpenBSD updates. Mostly licensing, ansifications - and minor fixes. + and minor fixes. OK djm@ + - (bal) redo how we handle 'mysignal()'. Move it to + openbsd-compat/bsd-misc.c, s/mysignal/signal/ and #define signal to + be our 'mysignal' by default. OK djm@ 20030822 - (djm) s/get_progname/ssh_get_progname/g to avoid conflict with Heimdal diff --git a/entropy.c b/entropy.c index 6206bb01..2d8cec01 100644 --- a/entropy.c +++ b/entropy.c @@ -75,7 +75,7 @@ seed_rng(void) if (pipe(p) == -1) fatal("pipe: %s", strerror(errno)); - old_sigchld = mysignal(SIGCHLD, SIG_DFL); + old_sigchld = signal(SIGCHLD, SIG_DFL); if ((pid = fork()) == -1) fatal("Couldn't fork: %s", strerror(errno)); if (pid == 0) { @@ -116,7 +116,7 @@ seed_rng(void) if (waitpid(pid, &ret, 0) == -1) fatal("Couldn't wait for ssh-rand-helper completion: %s", strerror(errno)); - mysignal(SIGCHLD, old_sigchld); + signal(SIGCHLD, old_sigchld); /* We don't mind if the child exits upon a SIGPIPE */ if (!WIFEXITED(ret) && diff --git a/misc.c b/misc.c index ff196619..c457a952 100644 --- a/misc.c +++ b/misc.c @@ -323,29 +323,3 @@ addargs(arglist *args, char *fmt, ...) args->list[args->num++] = xstrdup(buf); args->list[args->num] = NULL; } - -mysig_t -mysignal(int sig, mysig_t act) -{ -#ifdef HAVE_SIGACTION - struct sigaction sa, osa; - - if (sigaction(sig, NULL, &osa) == -1) - return (mysig_t) -1; - if (osa.sa_handler != act) { - memset(&sa, 0, sizeof(sa)); - sigemptyset(&sa.sa_mask); - sa.sa_flags = 0; -#if defined(SA_INTERRUPT) - if (sig == SIGALRM) - sa.sa_flags |= SA_INTERRUPT; -#endif - sa.sa_handler = act; - if (sigaction(sig, &sa, NULL) == -1) - return (mysig_t) -1; - } - return (osa.sa_handler); -#else - return (signal(sig, act)); -#endif -} diff --git a/misc.h b/misc.h index 3b4b8796..6d2869b3 100644 --- a/misc.h +++ b/misc.h @@ -31,7 +31,3 @@ struct arglist { int nalloc; }; void addargs(arglist *, char *, ...) __attribute__((format(printf, 2, 3))); - -/* wrapper for signal interface */ -typedef void (*mysig_t)(int); -mysig_t mysignal(int sig, mysig_t act); diff --git a/openbsd-compat/bsd-misc.c b/openbsd-compat/bsd-misc.c index 836b2b53..4373ce24 100644 --- a/openbsd-compat/bsd-misc.c +++ b/openbsd-compat/bsd-misc.c @@ -200,3 +200,29 @@ tcsendbreak(int fd, int duration) # endif } #endif /* HAVE_TCSENDBREAK */ + +mysig_t +mysignal(int sig, mysig_t act) +{ +#ifdef HAVE_SIGACTION + struct sigaction sa, osa; + + if (sigaction(sig, NULL, &osa) == -1) + return (mysig_t) -1; + if (osa.sa_handler != act) { + memset(&sa, 0, sizeof(sa)); + sigemptyset(&sa.sa_mask); + sa.sa_flags = 0; +#ifdef SA_INTERRUPT + if (sig == SIGALRM) + sa.sa_flags |= SA_INTERRUPT; +#endif + sa.sa_handler = act; + if (sigaction(sig, &sa, NULL) == -1) + return (mysig_t) -1; + } + return (osa.sa_handler); +#else + return (signal(sig, act)); +#endif +} diff --git a/openbsd-compat/bsd-misc.h b/openbsd-compat/bsd-misc.h index edb84fc3..f0d0db16 100644 --- a/openbsd-compat/bsd-misc.h +++ b/openbsd-compat/bsd-misc.h @@ -97,4 +97,10 @@ pid_t tcgetpgrp(int); int tcsendbreak(int, int); #endif +/* wrapper for signal interface */ +typedef void (*mysig_t)(int); +mysig_t mysignal(int sig, mysig_t act); + +#define signal(a,b) mysignal(a,b) + #endif /* _BSD_MISC_H */ diff --git a/progressmeter.c b/progressmeter.c index 170d869f..9fe8cfa4 100644 --- a/progressmeter.c +++ b/progressmeter.c @@ -212,7 +212,7 @@ update_progress_meter(int ignore) if (can_output()) refresh_progress_meter(); - mysignal(SIGALRM, update_progress_meter); + signal(SIGALRM, update_progress_meter); alarm(UPDATE_INTERVAL); errno = save_errno; } @@ -243,7 +243,7 @@ start_progress_meter(char *f, off_t filesize, off_t *stat) if (can_output()) refresh_progress_meter(); - mysignal(SIGALRM, update_progress_meter); + signal(SIGALRM, update_progress_meter); alarm(UPDATE_INTERVAL); } diff --git a/sshd.c b/sshd.c index 0e1bde3a..8d04f6a7 100644 --- a/sshd.c +++ b/sshd.c @@ -1368,7 +1368,7 @@ main(int ac, char **av) if ((options.protocol & SSH_PROTO_1) && key_used == 0) { /* Schedule server key regeneration alarm. */ - mysignal(SIGALRM, key_regeneration_alarm); + signal(SIGALRM, key_regeneration_alarm); alarm(options.key_regeneration_time); key_used = 1; } @@ -1457,7 +1457,7 @@ main(int ac, char **av) * mode; it is just annoying to have the server exit just when you * are about to discover the bug. */ - mysignal(SIGALRM, grace_alarm_handler); + signal(SIGALRM, grace_alarm_handler); if (!debug_flag) alarm(options.login_grace_time); diff --git a/sshpty.c b/sshpty.c index 109fc96a..4747ceaf 100644 --- a/sshpty.c +++ b/sshpty.c @@ -101,12 +101,12 @@ pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, int namebuflen) error("/dev/ptmx: %.100s", strerror(errno)); return 0; } - old_signal = mysignal(SIGCHLD, SIG_DFL); + old_signal = signal(SIGCHLD, SIG_DFL); if (grantpt(ptm) < 0) { error("grantpt: %.100s", strerror(errno)); return 0; } - mysignal(SIGCHLD, old_signal); + signal(SIGCHLD, old_signal); if (unlockpt(ptm) < 0) { error("unlockpt: %.100s", strerror(errno)); return 0; @@ -274,9 +274,9 @@ pty_make_controlling_tty(int *ttyfd, const char *ttyname) fd = open(ttyname, O_RDWR|O_NOCTTY); if (fd != -1) { - mysignal(SIGHUP, SIG_IGN); + signal(SIGHUP, SIG_IGN); ioctl(fd, TCVHUP, (char *)NULL); - mysignal(SIGHUP, SIG_DFL); + signal(SIGHUP, SIG_DFL); setpgid(0, 0); close(fd); } else { @@ -323,9 +323,9 @@ pty_make_controlling_tty(int *ttyfd, const char *ttyname) error("SETPGRP %s",strerror(errno)); #endif /* HAVE_NEWS4 */ #ifdef USE_VHANGUP - old = mysignal(SIGHUP, SIG_IGN); + old = signal(SIGHUP, SIG_IGN); vhangup(); - mysignal(SIGHUP, old); + signal(SIGHUP, old); #endif /* USE_VHANGUP */ fd = open(ttyname, O_RDWR); if (fd < 0) { -- 2.45.2