summaryrefslogtreecommitdiffstats
path: root/bin/sleep
diff options
context:
space:
mode:
authorjilles <jilles@FreeBSD.org>2013-05-28 22:07:31 +0000
committerjilles <jilles@FreeBSD.org>2013-05-28 22:07:31 +0000
commit95192e8f55193ed0e4619c6192dbab1c23eb84d8 (patch)
tree3bec83639c75f4ef73930610bfa741cda65f44be /bin/sleep
parent4f8aa13b4a8cb4702c8cf4795a91fb5302ae335f (diff)
downloadFreeBSD-src-95192e8f55193ed0e4619c6192dbab1c23eb84d8.zip
FreeBSD-src-95192e8f55193ed0e4619c6192dbab1c23eb84d8.tar.gz
sleep: Improve nanosleep() error handling:
* Work around kernel bugs that cause a spurious [EINTR] return if a debugger (such as truss(1)) is attached. * Write an error message if an error other than [EINTR] occurs. PR: bin/178664
Diffstat (limited to 'bin/sleep')
-rw-r--r--bin/sleep/sleep.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/bin/sleep/sleep.c b/bin/sleep/sleep.c
index fa7deb2..0d41a42 100644
--- a/bin/sleep/sleep.c
+++ b/bin/sleep/sleep.c
@@ -43,6 +43,7 @@ __FBSDID("$FreeBSD$");
#include <ctype.h>
#include <err.h>
+#include <errno.h>
#include <limits.h>
#include <signal.h>
#include <stdint.h>
@@ -87,8 +88,8 @@ main(int argc, char *argv[])
warnx("about %d second(s) left out of the original %d",
(int)time_to_sleep.tv_sec, (int)original);
report_requested = 0;
- } else
- break;
+ } else if (errno != EINTR)
+ err(1, "nanosleep");
}
return (0);
}
OpenPOWER on IntegriCloud