example.c (1040B)
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 #include "cnfparse.h" 6 7 void usage() { 8 printf("Usage:\n"); 9 printf(" cnfparse_test --config <path>\n"); 10 printf(" cnfparse_test --config=<path>\n"); 11 exit(0); 12 } 13 14 int main(int argc, char *argv[]) { 15 char *path = NULL; 16 17 // Handle params 18 for (int i = 1; i < argc; i++) { 19 if (strcmp(argv[i], "--config") == 0) { 20 if (i + 1 >= argc) { usage(); } 21 path = argv[++i]; 22 } else if (strncmp(argv[i], "--config=", 9) == 0) { 23 path = argv[i] + 9; 24 } else { 25 usage(); 26 } 27 } 28 if (!path) { 29 usage(); 30 } 31 32 FILE *fd = fopen(path, "r"); 33 if (!fd) { 34 fprintf(stderr, "%s: cannot open\n", path); 35 exit(1); 36 } 37 38 while(1) { 39 struct cnf_directive *dir = cnf_directive_read(fd); 40 if (!dir) break; 41 printf("dir:"); 42 if (dir->name) printf(" name=%s", dir->name); 43 printf(" argc=%ld", dir->argc); 44 for(int i = 0; i < dir->argc ; i++ ) { 45 printf(" argv[%d]=[%s]", i, dir->argv[i]); 46 } 47 printf("\n"); 48 } 49 50 return 42; 51 }