From 624d45a10f4d2d84a32a4e9fbcd370aa653271f8 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Fri, 4 Sep 2020 21:28:33 +0200 Subject: Do not accept arguments MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- LICENSE | 2 +- Makefile | 2 +- arg.h | 35 +++++++++++++++++++++++++++++++++++ mongoclock.c | 20 ++++++++++++++++++++ 4 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 arg.h diff --git a/LICENSE b/LICENSE index d4d1e8b..9466715 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ ISC License -© 2013, 2015, 2017 Mattias Andrée +© 2013, 2015, 2017, 2020 Mattias Andrée Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above diff --git a/Makefile b/Makefile index b0a867a..f197990 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,7 @@ all: mongoclock mongoclock: mongoclock.o $(CC) -o $@ $^ $(LDFLAGS) -mongoclock.o: mongoclock.c $(DIGITS) +mongoclock.o: mongoclock.c arg.h $(DIGITS) $(CC) -c -o $@ mongoclock.c $(CPPFLAGS) $(CFLAGS) mongo_0.h: digit.sh diff --git a/arg.h b/arg.h new file mode 100644 index 0000000..54e3874 --- /dev/null +++ b/arg.h @@ -0,0 +1,35 @@ +/* + * Copy me if you can. + * by 20h + */ + +#ifndef ARG_H__ +#define ARG_H__ + +extern char *argv0; + +/* use main(int argc, char *argv[]) */ +#define ARGBEGIN for (argv0 = *argv, argv++, argc--;\ + argv[0] && argv[0][0] == '-'\ + && argv[0][1];\ + argc--, argv++) {\ + char argc_;\ + char **argv_;\ + int brk_;\ + if (argv[0][1] == '-' && argv[0][2] == '\0') {\ + argv++;\ + argc--;\ + break;\ + }\ + for (brk_ = 0, argv[0]++, argv_ = argv;\ + argv[0][0] && !brk_;\ + argv[0]++) {\ + if (argv_ != argv)\ + break;\ + argc_ = argv[0][0];\ + switch (argc_) + +#define ARGEND }\ + } + +#endif diff --git a/mongoclock.c b/mongoclock.c index e2d7e20..d94fd28 100644 --- a/mongoclock.c +++ b/mongoclock.c @@ -5,9 +5,12 @@ #include #include #include +#include #include #include +#include "arg.h" + #define DX 16 #define DY 12 #define DC 16 @@ -32,6 +35,15 @@ static const char **mongo_ds[] = { static volatile sig_atomic_t caught_sigterm = 0; static volatile sig_atomic_t caught_sigwinch = 1; +char *argv0; + +static void +usage(void) +{ + fprintf(stderr, "usage: %s\n", argv0); + exit(1); +} + static void sigterm(int signo) { @@ -77,6 +89,14 @@ main(int argc, char *argv[]) struct itimerspec itimerspec; uint64_t _overrun; + ARGBEGIN { + default: + usage(); + } ARGEND; + + if (argc) + usage(); + fprintf(stdout, "\033[?1049h\033[?25l"); if (clock_gettime(CLOCK_REALTIME, &itimerspec.it_value)) -- cgit v1.2.3-70-g09d2