diff options
Diffstat (limited to 'src/usleep.c')
-rw-r--r-- | src/usleep.c | 59 |
1 files changed, 38 insertions, 21 deletions
diff --git a/src/usleep.c b/src/usleep.c index 2d0a5565..12cabed7 100644 --- a/src/usleep.c +++ b/src/usleep.c @@ -11,27 +11,44 @@ #include <string.h> #include <stdio.h> -int main(int argc, char **argv) -{ - - double count; - - if (argc == 1) count=1; - else if (!strcmp(argv[1], "--help")) - { - printf("usleep [number]\n sleep [number] of microseconds\n the default number to sleep is 1 microsecond\n"); - exit(0); - } - else if (!strcmp(argv[1], "-v")) - { - printf("usleep version 1.0 by Donald Barnes <djb@redhat.com>\n usleep --help for more info\n"); - exit(0); - } - else - count = strtod(argv[1], NULL); +int main(int argc, char **argv) { + unsigned long count; + poptContext optCon; + int showVersion = 0; + int rc; + char * countStr; + struct poptOption options[] = { + { "version", 'v', POPT_ARG_NONE, &showVersion, 0, + "Display the version of this program, and exit" }, + POPT_AUTOHELP + { 0, 0, 0, 0, 0 } + }; + + optCon = poptGetContext("usleep", argc, argv, options,0); + /*poptReadDefaultConfig(optCon, 1);*/ + poptSetOtherOptionHelp(optCon, "[microseconds]"); + + if ((rc = poptGetNextOpt(optCon)) < -1) { + fprintf(stderr, "usleep: bad argument %s: %s\n", + poptBadOption(optCon, POPT_BADOPTION_NOALIAS), + poptStrerror(rc)); + return 2; + } + + if (showVersion) { + printf("usleep version 1.1 by Donald Barnes <djb@redhat.com>\n usleep --help for more info\n"); + return 0; + } + + countStr = poptGetArg(optCon); + if (countStr && poptGetArg(optCon)) { + fprintf(stderr, "usleep: exactly one argument (number of microseconds) " + "must be used\n"); + return 2; + } + + count = strtoul(countStr, NULL, 0); usleep(count); - exit(0); - - + return 0; } |