Adds mode parameter to interface section of cfg.
[olsrd.git] / gui / win32 / win32verify.c
1 /*
2  * The olsr.org Optimized Link-State Routing daemon(olsrd)
3  * Copyright (c) 2004-2009, the olsr.org team - see HISTORY file
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * * Redistributions of source code must retain the above copyright
11  *   notice, this list of conditions and the following disclaimer.
12  * * Redistributions in binary form must reproduce the above copyright
13  *   notice, this list of conditions and the following disclaimer in
14  *   the documentation and/or other materials provided with the
15  *   distribution.
16  * * Neither the name of olsr.org, olsrd nor the names of its
17  *   contributors may be used to endorse or promote products derived
18  *   from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
30  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31  * POSSIBILITY OF SUCH DAMAGE.
32  *
33  * Visit http://www.olsr.org for more information.
34  *
35  * If you find this software useful feel free to make a donation
36  * to the project. For more information see the website or contact
37  * the copyright holders.
38  *
39  */
40
41 #include <stdio.h>
42 #include <string.h>
43 #include <stdlib.h>
44 #include <errno.h>
45 #include "olsr.h"
46 #include "olsr_cfg.h"
47 #include "olsr_cfg_gen.h"
48
49 /************ GLOBALS(begin) ***********/
50
51 #ifndef NODEBUG
52 FILE *debug_handle = NULL;
53 struct olsr_config *olsr_cnf;
54 #endif
55
56 void *olsr_malloc(size_t size, const char *id __attribute__ ((unused)))
57 {
58   return calloc(1, size);
59 }
60
61 char *olsr_strdup(const char *s)
62 {
63   char *ret = olsr_malloc(1 + strlen(s), "olsr_strdup");
64   strcpy(ret, s);
65   return ret;
66 }
67
68 char *olsr_strndup(const char *s, size_t n)
69 {
70   size_t len = n < strlen(s) ? n : strlen(s);
71   char *ret = olsr_malloc(1 + len, "olsr_strndup");
72   strncpy(ret, s, len);
73   ret[len] = 0;
74   return ret;
75 }
76
77 /************ GLOBALS(end) ***********/
78
79 static int write_cnf(struct olsr_config *cnf, const char *fname)
80 {
81   FILE *fd;
82   struct autobuf abuf;
83   if (0 != strcmp(fname, "-")) {
84     fd = fopen(fname, "w");
85     if (fd == NULL) {
86       fprintf(stderr, "Could not open file %s for writing\n%s\n", fname, strerror(errno));
87       return -1;
88     }
89   }
90   else {
91     fd = stdout;
92   }
93
94   printf("Writing config to file \"%s\".... ", fname);
95
96   abuf_init(&abuf, 0);
97   olsr_write_cnf_buf(&abuf, cnf, false);
98   fputs(abuf.buf, fd);
99
100   abuf_free(&abuf);
101   if (0 != strcmp(fname, "-")) {
102     fclose(fd);
103   }
104   printf("DONE\n");
105
106   return 1;
107 }
108
109 int main(int argc, char *argv[])
110 {
111   int i, ret = 0;
112 #ifndef NODEBUG
113   debug_handle = stdout;
114 #endif
115   for (i = 1; i < argc; i++) {
116     struct olsr_config *cfg_tmp;
117     char cfg_msg[FILENAME_MAX + 256];
118
119     printf("Verifying argv[%d]=%s\n", i, argv[i]);
120     if (CFG_ERROR != olsr_parse_cfg(0, NULL, argv[i], cfg_msg, &cfg_tmp)) {
121       printf("%s verified: %s\n", argv[i], 0 <= olsr_sanity_check_cfg(cfg_tmp) ? "yes" : "no");
122       if (&write_cnf != NULL) write_cnf(cfg_tmp, "-");
123     }
124     else {
125       fprintf(stderr, "%s not verified. %s\n", argv[i], cfg_msg);
126       ret = 1;
127     }
128     olsr_free_cfg(cfg_tmp);
129   }
130   return ret;
131 }