From 4b677a3ac8ab9dcd085a561bc75d82dbf7633784 Mon Sep 17 00:00:00 2001 From: tavo-wasd Date: Fri, 17 May 2024 14:27:59 -0600 Subject: [PATCH] suckless arguments --- snippets/arg.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 snippets/arg.h diff --git a/snippets/arg.h b/snippets/arg.h new file mode 100644 index 0000000..c8dd9f3 --- /dev/null +++ b/snippets/arg.h @@ -0,0 +1,24 @@ +#ifndef ARG_H +#define ARG_H + +/* int main(int argc, char *argv[]) */ +/* opts (case 'a': break; default: printf("Unknown : %c\n", opt);); */ + +#define opt argv[optidx][opt_i] +#define optarg (!argv[optidx + optargidx] ? NULL : (argv[optidx + optargidx++])) +#define opts(cases) \ + do { \ + unsigned optargidx, opt_i, optidx; \ + for (optargidx = 1, opt_i = 1, optidx = 1; \ + argv[optidx] && argv[optidx][0] == '-' && \ + argv[optidx][1] && argv[optidx][1] != '-'; \ + optidx += optargidx) { \ + for (opt_i = 1, optargidx = 1; opt; opt_i++) { \ + switch (opt) { \ + cases \ + } \ + } \ + } \ + } while (0) + +#endif