diff --git a/src/coreutils/sleep/sleep.c b/src/coreutils/sleep/sleep.c index 38aeb82..2d6a21a 100644 --- a/src/coreutils/sleep/sleep.c +++ b/src/coreutils/sleep/sleep.c @@ -5,21 +5,25 @@ #include #include "duration.h" -int main(const int argc, const char **argv) { - if (argc == 1 || !strcmp(argv[argc - 1], "--help")) { - printf("sleep [num[m - minute / h - hour / d - days]] / [inf infinity]\n"); +int main(int argc, char **argv) { + + int opt; + while ((opt = getopt(argc, argv, "")) != -1 || argc == 1) { + printf("sleep [num[SUFFIX]] or [inf Infinity]\nSUFFIXES:\n\tm - minute\n\th - hour\n\td - days\n"); return 0; } - if (!strncasecmp(argv[1], "inf", 3)) - for (;;) + argv += optind; + argc -= optind; + + if (!strncasecmp(argv[0], "inf", 3)) + while (1) sleep(INT_MAX); - unsigned long long sec = 0; + unsigned long long usec = 0; + for (int i = 0; i < argc; i++) + usec += mu_parse_duration(argv[i]); - for (int i = 1; i < argc; i++) - sec += mu_parse_duration(argv[i]); - - usleep(sec); + usleep(usec); return 0; }