DEADSOFTWARE

ac3fb67dc7d33967e395f28f859c174f16334193
[flatwaifu.git] / src / args.c
1 #include "args.h"
2 #include "system.h"
3 #include "error.h"
4 #include "config.h"
5 #include <assert.h>
7 void ARG_parse (int argc, char **argv, int n, const cfg_t **list) {
8 assert(argc >= 0);
9 assert(argv != NULL);
10 assert(n >= 0);
11 assert(list != NULL);
12 int i, j;
13 char *key;
14 const cfg_t *c;
15 for (i = 1; i < argc; i++) {
16 if (argv[i][0] == '-' && argv[i][1] != 0) {
17 j = 0;
18 c = NULL;
19 key = &argv[i][1];
20 while (j < n && c == NULL){
21 c = CFG_find_entry(key, list[j]);
22 j++;
23 }
24 if (c == NULL) {
25 ERR_failinit("%s: unknown parameter %s\n", argv[0], argv[i]);
26 } else if (c->t == Y_SW_ON || c->t == Y_SW_OFF) {
27 CFG_update_key(key, "on", c);
28 } else if (i + 1 < argc) {
29 CFG_update_key(key, argv[i + 1], c);
30 i += 1;
31 } else {
32 ERR_failinit("%s: missing argument for parameter %s\n", argv[0], argv[i]);
33 }
34 } else {
35 ERR_failinit("%s: something wrong here: %s\n", argv[0], argv[i]);
36 }
37 }
38 }