43441d8022f9a19de21db184aed4552ef92735ec
[olsrd.git] / gui / win32 / win32verify.c
1 #include <stdio.h>
2 #include <string.h>
3 #include <stdlib.h>
4 #include <errno.h>
5 #include "olsr.h"
6 #include "olsr_cfg.h"
7 #include "olsr_cfg_gen.h"
8
9 bool disp_pack_out = false;
10
11 #ifndef NODEBUG
12 FILE *debug_handle = NULL;
13 struct olsr_config *olsr_cnf;
14 #endif
15
16 void *olsr_malloc(size_t size, const char *id __attribute__ ((unused)))
17 {
18   return calloc(1, size);
19 }
20
21 char *olsr_strdup(const char *s)
22 {
23   char *ret = olsr_malloc(1 + strlen(s), "olsr_strdup");
24   strcpy(ret, s);
25   return ret;
26 }
27
28 char *olsr_strndup(const char *s, size_t n)
29 {
30   size_t len = n < strlen(s) ? n : strlen(s);
31   char *ret = olsr_malloc(1 + len, "olsr_strndup");
32   strncpy(ret, s, len);
33   ret[len] = 0;
34   return ret;
35 }
36
37 void parser_set_disp_pack_in(bool val __attribute__ ((unused)))
38 {
39 }
40
41 static int write_cnf(struct olsr_config *cnf, const char *fname)
42 {
43   FILE *fd;
44   struct autobuf abuf;
45   if (0 != strcmp(fname, "-")) {
46     fd = fopen(fname, "w");
47     if (fd == NULL) {
48       fprintf(stderr, "Could not open file %s for writing\n%s\n", fname, strerror(errno));
49       return -1;
50     }
51   }
52   else {
53     fd = stdout;
54   }
55
56   printf("Writing config to file \"%s\".... ", fname);
57
58   abuf_init(&abuf, 0);
59   olsr_write_cnf_buf(&abuf, cnf, false);
60   fputs(abuf.buf, fd);
61
62   abuf_free(&abuf);
63   if (0 != strcmp(fname, "-")) {
64     fclose(fd);
65   }
66   printf("DONE\n");
67
68   return 1;
69 }
70
71 int main(int argc, char *argv[])
72 {
73   int i, ret = 0;
74 #ifndef NODEBUG
75   debug_handle = stdout;
76 #endif
77   for (i = 1; i < argc; i++) {
78     struct olsr_config *cfg_tmp;
79     char cfg_msg[FILENAME_MAX + 256];
80     
81     printf("Verifying argv[%d]=%s\n", i, argv[i]);
82     if (CFG_ERROR != olsr_parse_cfg(0, NULL, argv[i], cfg_msg, &cfg_tmp)) {
83       printf("%s verified: %s\n", argv[i], 0 <= olsr_sanity_check_cfg(cfg_tmp) ? "yes" : "no");
84       if (&write_cnf != NULL) write_cnf(cfg_tmp, "-");
85     }
86     else {
87       fprintf(stderr, "%s not verified. %s\n", argv[i], cfg_msg);
88       ret = 1;
89     }
90     olsr_free_cfg(cfg_tmp);
91   }
92   return ret;
93 }