summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Lindstrom <mouring@eviladmin.org>2003-08-25 01:16:21 +0000
committerBen Lindstrom <mouring@eviladmin.org>2003-08-25 01:16:21 +0000
commit5ade9abc37df3dacacbe20104877ca6dab61082a (patch)
treeb3a521b87d93ecc0f1f17f4e659c1d4bf90f86f5
parentaf4a6c3a5619299a16cfbb545cde110849596204 (diff)
- (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@
-rw-r--r--ChangeLog7
-rw-r--r--entropy.c6
-rw-r--r--misc.c26
-rw-r--r--misc.h4
-rw-r--r--openbsd-compat/bsd-misc.c28
-rw-r--r--openbsd-compat/bsd-misc.h8
-rw-r--r--progressmeter.c4
-rw-r--r--sshd.c4
-rw-r--r--sshpty.c12
9 files changed, 52 insertions, 47 deletions
diff --git a/ChangeLog b/ChangeLog
index 956a5e3a..6ea448a3 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
@@ -857,4 +860,4 @@
- Fix sshd BindAddress and -b options for systems using fake-getaddrinfo.
Report from murple@murple.net, diagnosis from dtucker@zip.com.au
-$Id: ChangeLog,v 1.2900 2003/08/25 01:10:51 mouring Exp $
+$Id: ChangeLog,v 1.2901 2003/08/25 01:16:21 mouring Exp $
diff --git a/entropy.c b/entropy.c
index a16ea10b..21687978 100644
--- a/entropy.c
+++ b/entropy.c
@@ -45,7 +45,7 @@
* XXX: we should tell the child how many bytes we need.
*/
-RCSID("$Id: entropy.c,v 1.45 2003/05/16 05:51:45 djm Exp $");
+RCSID("$Id: entropy.c,v 1.46 2003/08/25 01:16:21 mouring Exp $");
#ifndef OPENSSL_PRNG_ONLY
#define RANDOM_SEED_SIZE 48
@@ -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 56cb45ad..08b089bd 100644
--- a/openbsd-compat/bsd-misc.c
+++ b/openbsd-compat/bsd-misc.c
@@ -25,7 +25,7 @@
#include "includes.h"
#include "xmalloc.h"
-RCSID("$Id: bsd-misc.c,v 1.18 2003/08/21 23:34:42 djm Exp $");
+RCSID("$Id: bsd-misc.c,v 1.19 2003/08/25 01:16:21 mouring Exp $");
/*
* NB. duplicate __progname in case it is an alias for argv[0]
@@ -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 2857de59..0d6076ab 100644
--- a/openbsd-compat/bsd-misc.h
+++ b/openbsd-compat/bsd-misc.h
@@ -22,7 +22,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-/* $Id: bsd-misc.h,v 1.11 2003/08/21 23:34:42 djm Exp $ */
+/* $Id: bsd-misc.h,v 1.12 2003/08/25 01:16:22 mouring Exp $ */
#ifndef _BSD_MISC_H
#define _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) {