cnfparse.c

Small library to make config parsing easier
git clone git://git.finwo.net/lib/cnfparse.c
Log | Files | Refs | README | LICENSE

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 }