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 --- |