diff options
-rw-r--r-- | src/mslaap.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/mslaap.c b/src/mslaap.c new file mode 100644 index 0000000..4b32974 --- /dev/null +++ b/src/mslaap.c @@ -0,0 +1,46 @@ +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +#include "util/option.h" + +static const char *usage_string = + "Gebruik: %s <microseconden>n" + "\n" + "Slaap voor het gegeven aantal microseconden.\n" + "\n" + " -h Toon deze hulptekst\n" + " -V Toon versienummer\n"; + +static char** parse_options(int argc, char **argv) { + const struct option_spec spec[] = { + {'h', OPTION_HELPUSAGE(usage_string)}, + {'V', OPTION_VERSION()}, + OPTION_SPEC_END + }; + + return option_parse(argc, argv, spec); +} + +int entry_mslaap(int argc, char **argv) { + char **args = parse_options(argc, argv); + + if (*args == NULL) { + fprintf(stderr, "mslaap: geen hoeveelheid microseconden opgegeven\n"); + return 1; + } + + errno = 0; + const useconds_t us = strtoul(*args, NULL, 10); + if (errno != 0) { + fprintf(stderr, "mslaap: ongeldig aantal microseconden opgegeven\n"); + return 1; + } + + if (usleep(us) != 0) { + fprintf(stderr, "mslaap: fout tijdens slapen\n"); + return 1; + } + return 0; +} |