From 38b4853cf566b119140434de8bf0c7cfb31beb9e Mon Sep 17 00:00:00 2001 From: DTB Date: Sat, 19 Aug 2023 11:02:19 -0400 Subject: [PATCH] no longer reliant on libio --- sleep/Makefile | 7 +++++++ sleep/sleep.c | 18 +++++++++--------- 2 files changed, 16 insertions(+), 9 deletions(-) create mode 100644 sleep/Makefile diff --git a/sleep/Makefile b/sleep/Makefile new file mode 100644 index 0000000..00fc381 --- /dev/null +++ b/sleep/Makefile @@ -0,0 +1,7 @@ +sleep: sleep.c + $(CC) -g -o sleep sleep.c + +clean: + rm -f sleep + +.PHONY: clean diff --git a/sleep/sleep.c b/sleep/sleep.c index 6c0cdf3..75a6681 100644 --- a/sleep/sleep.c +++ b/sleep/sleep.c @@ -1,23 +1,23 @@ #include /* isdigit(3) */ -#include /* atoi(3) */ +#include /* errno */ +#include /* fprintf(3), stderr */ +#include /* strtol(3) */ #include /* EX_USAGE */ #include /* sleep(3) */ -#include "libio.h" static char *program_name = "sleep"; int main(int argc, char **argv){ int s; + extern int errno; + if(argc != 2){ -usage: write(2, "Usage: ", 7); - fdprint(2, argv[0] == NULL ? program_name : argv[0]); - write(2, " [seconds]\n", 11); +usage: fprintf(stderr, "Usage: %s [seconds]\n", argv[0] == NULL ? program_name : argv[0]); return EX_USAGE; } - s = parse_uint(argv[1]); - while(isdigit(*argv[1])) - ++argv[1]; - if(*argv[1] != '\0') + errno = 0; + s = strtol(argv[1], &argv[1], 10); + if(*argv[1] != '\0' || errno != 0) goto usage; while(s > 0) s = sleep(s);