17aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley/* sleep.c - Wait for a number of seconds.
2fece5cb6d796119eccb1ae0074e5b3aaccbb74eeRob Landley *
32896480c4918f2accccb8301bec457a7bff7377eRob Landley * Copyright 2007 Rob Landley <rob@landley.net>
4f1e82dfa2131c4c8b8bfc83209c9f1d26cc7f35cGeorgi Chorbadzhiyski * Copyright 2012 Georgi Chorbadzhiyski <georgi@unixsol.org>
52896480c4918f2accccb8301bec457a7bff7377eRob Landley *
6f91b7c89bc852868692b9518185421ebb52d67b3Rob Landley * See http://opengroup.org/onlinepubs/9699919799/utilities/sleep.html
72896480c4918f2accccb8301bec457a7bff7377eRob Landley
855928b1e0a08d84a5cbc50020f0a8c1024f5b6ceRob LandleyUSE_SLEEP(NEWTOY(sleep, "<1", TOYFLAG_BIN))
955928b1e0a08d84a5cbc50020f0a8c1024f5b6ceRob Landley
102896480c4918f2accccb8301bec457a7bff7377eRob Landleyconfig SLEEP
117aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley  bool "sleep"
127aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley  default y
137aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley  help
1472756670274dac9562b869761c50c59ed57b7295Rob Landley    usage: sleep LENGTH
1572756670274dac9562b869761c50c59ed57b7295Rob Landley
1672756670274dac9562b869761c50c59ed57b7295Rob Landley    Wait before exiting. An optional suffix can be "m" (minutes), "h" (hours),
1772756670274dac9562b869761c50c59ed57b7295Rob Landley    "d" (days), or "s" (seconds, the default).
182896480c4918f2accccb8301bec457a7bff7377eRob Landley
192b7b1ad04bbbbadd61067f46c6f24264a318d666Rob Landley
202b7b1ad04bbbbadd61067f46c6f24264a318d666Rob Landleyconfig SLEEP_FLOAT
217aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley  bool
227aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley  default y
237aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley  depends on SLEEP && TOYBOX_FLOAT
247aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley  help
2572756670274dac9562b869761c50c59ed57b7295Rob Landley    Length can be a decimal fraction.
262896480c4918f2accccb8301bec457a7bff7377eRob Landley*/
27f2f98fa34e9c00c2b5366fb6a9a912cf94f9a157Rob Landley
28f2f98fa34e9c00c2b5366fb6a9a912cf94f9a157Rob Landley#include "toys.h"
29f2f98fa34e9c00c2b5366fb6a9a912cf94f9a157Rob Landley
30efda21ca931766eed6cfc49d1b2122c53827d9fcRob Landleyvoid sleep_main(void)
31f2f98fa34e9c00c2b5366fb6a9a912cf94f9a157Rob Landley{
3272756670274dac9562b869761c50c59ed57b7295Rob Landley  struct timespec tv;
332b7b1ad04bbbbadd61067f46c6f24264a318d666Rob Landley
3472756670274dac9562b869761c50c59ed57b7295Rob Landley  tv.tv_sec = xparsetime(*toys.optargs, 1000000000, &tv.tv_nsec);
3572756670274dac9562b869761c50c59ed57b7295Rob Landley  toys.exitval = !!nanosleep(&tv, NULL);
36f2f98fa34e9c00c2b5366fb6a9a912cf94f9a157Rob Landley}
37