confdata.c (c955ccafc38e77312b4c65e5a70960080fb8a3f2) confdata.c (0c1822e6991a10da6dc391f0a2e2cf5fb2e31238)
1/*
2 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
3 * Released under the terms of the GNU GPL v2.0.
4 */
5
6#include <sys/stat.h>
7#include <ctype.h>
8#include <stdio.h>

--- 120 unchanged lines hidden (view full) ---

129 sym->flags |= SYMBOL_NEW | SYMBOL_CHANGED;
130 if (sym_is_choice(sym))
131 sym->flags &= ~SYMBOL_NEW;
132 sym->flags &= ~SYMBOL_VALID;
133 switch (sym->type) {
134 case S_INT:
135 case S_HEX:
136 case S_STRING:
1/*
2 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
3 * Released under the terms of the GNU GPL v2.0.
4 */
5
6#include <sys/stat.h>
7#include <ctype.h>
8#include <stdio.h>

--- 120 unchanged lines hidden (view full) ---

129 sym->flags |= SYMBOL_NEW | SYMBOL_CHANGED;
130 if (sym_is_choice(sym))
131 sym->flags &= ~SYMBOL_NEW;
132 sym->flags &= ~SYMBOL_VALID;
133 switch (sym->type) {
134 case S_INT:
135 case S_HEX:
136 case S_STRING:
137 if (sym->user.val)
138 free(sym->user.val);
137 if (sym->def[S_DEF_USER].val)
138 free(sym->def[S_DEF_USER].val);
139 default:
139 default:
140 sym->user.val = NULL;
141 sym->user.tri = no;
140 sym->def[S_DEF_USER].val = NULL;
141 sym->def[S_DEF_USER].tri = no;
142 }
143 }
144
145 while (fgets(line, sizeof(line), in)) {
146 conf_lineno++;
147 sym = NULL;
148 switch (line[0]) {
149 case '#':

--- 11 unchanged lines hidden (view full) ---

161 break;
162 } else if (!(sym->flags & SYMBOL_NEW)) {
163 conf_warning("trying to reassign symbol %s", sym->name);
164 break;
165 }
166 switch (sym->type) {
167 case S_BOOLEAN:
168 case S_TRISTATE:
142 }
143 }
144
145 while (fgets(line, sizeof(line), in)) {
146 conf_lineno++;
147 sym = NULL;
148 switch (line[0]) {
149 case '#':

--- 11 unchanged lines hidden (view full) ---

161 break;
162 } else if (!(sym->flags & SYMBOL_NEW)) {
163 conf_warning("trying to reassign symbol %s", sym->name);
164 break;
165 }
166 switch (sym->type) {
167 case S_BOOLEAN:
168 case S_TRISTATE:
169 sym->user.tri = no;
169 sym->def[S_DEF_USER].tri = no;
170 sym->flags &= ~SYMBOL_NEW;
171 break;
172 default:
173 ;
174 }
175 break;
176 case 'C':
177 if (memcmp(line, "CONFIG_", 7)) {

--- 13 unchanged lines hidden (view full) ---

191 break;
192 } else if (!(sym->flags & SYMBOL_NEW)) {
193 conf_warning("trying to reassign symbol %s", sym->name);
194 break;
195 }
196 switch (sym->type) {
197 case S_TRISTATE:
198 if (p[0] == 'm') {
170 sym->flags &= ~SYMBOL_NEW;
171 break;
172 default:
173 ;
174 }
175 break;
176 case 'C':
177 if (memcmp(line, "CONFIG_", 7)) {

--- 13 unchanged lines hidden (view full) ---

191 break;
192 } else if (!(sym->flags & SYMBOL_NEW)) {
193 conf_warning("trying to reassign symbol %s", sym->name);
194 break;
195 }
196 switch (sym->type) {
197 case S_TRISTATE:
198 if (p[0] == 'm') {
199 sym->user.tri = mod;
199 sym->def[S_DEF_USER].tri = mod;
200 sym->flags &= ~SYMBOL_NEW;
201 break;
202 }
203 case S_BOOLEAN:
204 if (p[0] == 'y') {
200 sym->flags &= ~SYMBOL_NEW;
201 break;
202 }
203 case S_BOOLEAN:
204 if (p[0] == 'y') {
205 sym->user.tri = yes;
205 sym->def[S_DEF_USER].tri = yes;
206 sym->flags &= ~SYMBOL_NEW;
207 break;
208 }
209 if (p[0] == 'n') {
206 sym->flags &= ~SYMBOL_NEW;
207 break;
208 }
209 if (p[0] == 'n') {
210 sym->user.tri = no;
210 sym->def[S_DEF_USER].tri = no;
211 sym->flags &= ~SYMBOL_NEW;
212 break;
213 }
214 conf_warning("symbol value '%s' invalid for %s", p, sym->name);
215 break;
216 case S_STRING:
217 if (*p++ != '"')
218 break;

--- 6 unchanged lines hidden (view full) ---

225 }
226 if (!p2) {
227 conf_warning("invalid string found");
228 continue;
229 }
230 case S_INT:
231 case S_HEX:
232 if (sym_string_valid(sym, p)) {
211 sym->flags &= ~SYMBOL_NEW;
212 break;
213 }
214 conf_warning("symbol value '%s' invalid for %s", p, sym->name);
215 break;
216 case S_STRING:
217 if (*p++ != '"')
218 break;

--- 6 unchanged lines hidden (view full) ---

225 }
226 if (!p2) {
227 conf_warning("invalid string found");
228 continue;
229 }
230 case S_INT:
231 case S_HEX:
232 if (sym_string_valid(sym, p)) {
233 sym->user.val = strdup(p);
233 sym->def[S_DEF_USER].val = strdup(p);
234 sym->flags &= ~SYMBOL_NEW;
235 } else {
236 conf_warning("symbol value '%s' invalid for %s", p, sym->name);
237 continue;
238 }
239 break;
240 default:
241 ;
242 }
243 break;
244 case '\n':
245 break;
246 default:
247 conf_warning("unexpected data");
248 continue;
249 }
250 if (sym && sym_is_choice_value(sym)) {
251 struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));
234 sym->flags &= ~SYMBOL_NEW;
235 } else {
236 conf_warning("symbol value '%s' invalid for %s", p, sym->name);
237 continue;
238 }
239 break;
240 default:
241 ;
242 }
243 break;
244 case '\n':
245 break;
246 default:
247 conf_warning("unexpected data");
248 continue;
249 }
250 if (sym && sym_is_choice_value(sym)) {
251 struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));
252 switch (sym->user.tri) {
252 switch (sym->def[S_DEF_USER].tri) {
253 case no:
254 break;
255 case mod:
253 case no:
254 break;
255 case mod:
256 if (cs->user.tri == yes) {
256 if (cs->def[S_DEF_USER].tri == yes) {
257 conf_warning("%s creates inconsistent choice state", sym->name);
258 cs->flags |= SYMBOL_NEW;
259 }
260 break;
261 case yes:
257 conf_warning("%s creates inconsistent choice state", sym->name);
258 cs->flags |= SYMBOL_NEW;
259 }
260 break;
261 case yes:
262 if (cs->user.tri != no) {
262 if (cs->def[S_DEF_USER].tri != no) {
263 conf_warning("%s creates inconsistent choice state", sym->name);
264 cs->flags |= SYMBOL_NEW;
265 } else
263 conf_warning("%s creates inconsistent choice state", sym->name);
264 cs->flags |= SYMBOL_NEW;
265 } else
266 cs->user.val = sym;
266 cs->def[S_DEF_USER].val = sym;
267 break;
268 }
267 break;
268 }
269 cs->user.tri = E_OR(cs->user.tri, sym->user.tri);
269 cs->def[S_DEF_USER].tri = E_OR(cs->def[S_DEF_USER].tri, sym->def[S_DEF_USER].tri);
270 }
271 }
272 fclose(in);
273
274 if (modules_sym)
275 sym_calc_value(modules_sym);
276 return 0;
277}

--- 14 unchanged lines hidden (view full) ---

292 sym_calc_value(sym);
293 if (sym_is_choice(sym) || (sym->flags & SYMBOL_AUTO))
294 goto sym_ok;
295 if (sym_has_value(sym) && (sym->flags & SYMBOL_WRITE)) {
296 /* check that calculated value agrees with saved value */
297 switch (sym->type) {
298 case S_BOOLEAN:
299 case S_TRISTATE:
270 }
271 }
272 fclose(in);
273
274 if (modules_sym)
275 sym_calc_value(modules_sym);
276 return 0;
277}

--- 14 unchanged lines hidden (view full) ---

292 sym_calc_value(sym);
293 if (sym_is_choice(sym) || (sym->flags & SYMBOL_AUTO))
294 goto sym_ok;
295 if (sym_has_value(sym) && (sym->flags & SYMBOL_WRITE)) {
296 /* check that calculated value agrees with saved value */
297 switch (sym->type) {
298 case S_BOOLEAN:
299 case S_TRISTATE:
300 if (sym->user.tri != sym_get_tristate_value(sym))
300 if (sym->def[S_DEF_USER].tri != sym_get_tristate_value(sym))
301 break;
302 if (!sym_is_choice(sym))
303 goto sym_ok;
304 default:
301 break;
302 if (!sym_is_choice(sym))
303 goto sym_ok;
304 default:
305 if (!strcmp(sym->curr.val, sym->user.val))
305 if (!strcmp(sym->curr.val, sym->def[S_DEF_USER].val))
306 goto sym_ok;
307 break;
308 }
309 } else if (!sym_has_value(sym) && !(sym->flags & SYMBOL_WRITE))
310 /* no previous value and not saved */
311 goto sym_ok;
312 conf_unsaved++;
313 /* maybe print value in verbose mode... */
314 sym_ok:
315 if (sym_has_value(sym) && !sym_is_choice_value(sym)) {
316 if (sym->visible == no)
317 sym->flags |= SYMBOL_NEW;
318 switch (sym->type) {
319 case S_STRING:
320 case S_INT:
321 case S_HEX:
306 goto sym_ok;
307 break;
308 }
309 } else if (!sym_has_value(sym) && !(sym->flags & SYMBOL_WRITE))
310 /* no previous value and not saved */
311 goto sym_ok;
312 conf_unsaved++;
313 /* maybe print value in verbose mode... */
314 sym_ok:
315 if (sym_has_value(sym) && !sym_is_choice_value(sym)) {
316 if (sym->visible == no)
317 sym->flags |= SYMBOL_NEW;
318 switch (sym->type) {
319 case S_STRING:
320 case S_INT:
321 case S_HEX:
322 if (!sym_string_within_range(sym, sym->user.val)) {
322 if (!sym_string_within_range(sym, sym->def[S_DEF_USER].val)) {
323 sym->flags |= SYMBOL_NEW;
324 sym->flags &= ~SYMBOL_VALID;
325 }
326 default:
327 break;
328 }
329 }
330 if (!sym_is_choice(sym))

--- 285 unchanged lines hidden ---
323 sym->flags |= SYMBOL_NEW;
324 sym->flags &= ~SYMBOL_VALID;
325 }
326 default:
327 break;
328 }
329 }
330 if (!sym_is_choice(sym))

--- 285 unchanged lines hidden ---