POSIX no longer requires sleep(1) to exit with status zero when sent SIGALRM:
---- If the sleep utility receives a SIGALRM signal, one of the following actions shall be taken: 1. Terminate normally with a zero exit status. 2. Effectively ignore the signal. 3. Provide the default behavior for signals described in the ASYNCHRONOUS EVENTS section of Section 1.4 (on page 2310). This could include terminating with a non-zero exit status. ---- AFAICT, we don't use SIGALRM in any of our install or rc scripting, so let's remove the unnecessary signal work. ok? Index: bin/sleep/sleep.1 =================================================================== RCS file: /data/src/openbsd/src/bin/sleep/sleep.1,v retrieving revision 1.21 diff -u -p -r1.21 sleep.1 --- bin/sleep/sleep.1 27 May 2014 13:50:52 -0000 1.21 +++ bin/sleep/sleep.1 21 Sep 2015 08:32:57 -0000 @@ -51,11 +51,6 @@ suspends execution for a minimum of the This number must be positive and may contain a decimal fraction. .Nm is commonly used to schedule the execution of other commands (see below). -.Sh ASYNCHRONOUS EVENTS -.Bl -tag -width "SIGALRMXXX" -.It Dv SIGALRM -Terminate normally, with a zero exit status. -.El .Sh EXIT STATUS .Ex -std sleep .Sh EXAMPLES Index: bin/sleep/sleep.c =================================================================== RCS file: /data/src/openbsd/src/bin/sleep/sleep.c,v retrieving revision 1.20 diff -u -p -r1.20 sleep.c --- bin/sleep/sleep.c 21 Nov 2013 15:54:46 -0000 1.20 +++ bin/sleep/sleep.c 21 Sep 2015 08:21:26 -0000 @@ -33,7 +33,6 @@ #include <ctype.h> #include <errno.h> #include <locale.h> -#include <signal.h> #include <stdio.h> #include <stdlib.h> #include <time.h> @@ -42,7 +41,6 @@ extern char *__progname; void usage(void); -void alarmh(int); int main(int argc, char *argv[]) @@ -56,8 +54,6 @@ main(int argc, char *argv[]) setlocale(LC_ALL, ""); - signal(SIGALRM, alarmh); - while ((ch = getopt(argc, argv, "")) != -1) switch(ch) { default: @@ -115,19 +111,4 @@ usage(void) { (void)fprintf(stderr, "usage: %s seconds\n", __progname); exit(1); -} - -/* - * POSIX 1003.2 says sleep should exit with 0 return code on reception - * of SIGALRM. - */ -/* ARGSUSED */ -void -alarmh(int signo) -{ - /* - * exit() flushes stdio buffers, which is not legal in a signal - * handler. Use _exit(). - */ - _exit(0); }