Blame view
scripts/kconfig/conf.c
14.9 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 |
/* * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org> * Released under the terms of the GNU GPL v2.0. */ |
534a450c3 kconfig: gettext ... |
5 |
#include <locale.h> |
1da177e4c Linux-2.6.12-rc2 |
6 |
#include <ctype.h> |
9dfb563b0 [PATCH] config: u... |
7 |
#include <stdio.h> |
75ff4309c kconfig: fix whit... |
8 |
#include <stdlib.h> |
1da177e4c Linux-2.6.12-rc2 |
9 |
#include <string.h> |
1da177e4c Linux-2.6.12-rc2 |
10 |
#include <time.h> |
75ff4309c kconfig: fix whit... |
11 |
#include <unistd.h> |
4062f1a4c kconfig: use long... |
12 |
#include <getopt.h> |
1da177e4c Linux-2.6.12-rc2 |
13 |
#include <sys/stat.h> |
b0fe55100 kconfig: improve ... |
14 |
#include <sys/time.h> |
1da177e4c Linux-2.6.12-rc2 |
15 |
|
1da177e4c Linux-2.6.12-rc2 |
16 17 18 19 |
#include "lkc.h" static void conf(struct menu *menu); static void check_conf(struct menu *menu); |
ab63f58f2 kconfig/conf: mar... |
20 |
static void xfgets(char *str, int size, FILE *in); |
1da177e4c Linux-2.6.12-rc2 |
21 |
|
4062f1a4c kconfig: use long... |
22 23 24 25 26 27 28 |
enum input_mode { oldaskconfig, silentoldconfig, oldconfig, allnoconfig, allyesconfig, allmodconfig, |
0748cb3e1 kconfig: add alld... |
29 |
alldefconfig, |
4062f1a4c kconfig: use long... |
30 31 |
randconfig, defconfig, |
7cf3d73b4 kconfig: add save... |
32 |
savedefconfig, |
861b4ea4c kconfig: change n... |
33 |
listnewconfig, |
ef61ca88c kconfig: rename l... |
34 |
oldnoconfig, |
4062f1a4c kconfig: use long... |
35 |
} input_mode = oldaskconfig; |
1da177e4c Linux-2.6.12-rc2 |
36 37 |
static int indent = 1; static int valid_stdin = 1; |
204c96f60 kconfig: fix sile... |
38 |
static int sync_kconfig; |
1da177e4c Linux-2.6.12-rc2 |
39 |
static int conf_cnt; |
48b9d03c5 [PATCH] Kill sign... |
40 |
static char line[128]; |
1da177e4c Linux-2.6.12-rc2 |
41 |
static struct menu *rootEntry; |
66c4bd808 kconfig: make use... |
42 |
static void print_help(struct menu *menu) |
03d291227 kconfig: attach h... |
43 |
{ |
66c4bd808 kconfig: make use... |
44 45 46 47 48 49 50 51 |
struct gstr help = str_new(); menu_get_ext_help(menu, &help); printf(" %s ", str_get(&help)); str_free(&help); |
03d291227 kconfig: attach h... |
52 |
} |
48b9d03c5 [PATCH] Kill sign... |
53 |
static void strip(char *str) |
1da177e4c Linux-2.6.12-rc2 |
54 |
{ |
48b9d03c5 [PATCH] Kill sign... |
55 |
char *p = str; |
1da177e4c Linux-2.6.12-rc2 |
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
int l; while ((isspace(*p))) p++; l = strlen(p); if (p != str) memmove(str, p, l + 1); if (!l) return; p = str + l - 1; while ((isspace(*p))) *p-- = 0; } static void check_stdin(void) { |
204c96f60 kconfig: fix sile... |
72 |
if (!valid_stdin) { |
3b9fa0931 [PATCH] Kconfig i... |
73 74 75 76 77 78 79 |
printf(_("aborted! ")); printf(_("Console input/output is redirected. ")); printf(_("Run 'make oldconfig' to update configuration. ")); |
1da177e4c Linux-2.6.12-rc2 |
80 81 82 |
exit(1); } } |
f82f3f942 kconfig: oldconfi... |
83 |
static int conf_askvalue(struct symbol *sym, const char *def) |
1da177e4c Linux-2.6.12-rc2 |
84 85 |
{ enum symbol_type type = sym_get_type(sym); |
1da177e4c Linux-2.6.12-rc2 |
86 87 |
if (!sym_has_value(sym)) |
534a450c3 kconfig: gettext ... |
88 |
printf(_("(NEW) ")); |
1da177e4c Linux-2.6.12-rc2 |
89 90 91 92 93 94 95 96 97 98 99 |
line[0] = ' '; line[1] = 0; if (!sym_is_changable(sym)) { printf("%s ", def); line[0] = ' '; line[1] = 0; |
f82f3f942 kconfig: oldconfi... |
100 |
return 0; |
1da177e4c Linux-2.6.12-rc2 |
101 102 103 |
} switch (input_mode) { |
4062f1a4c kconfig: use long... |
104 105 |
case oldconfig: case silentoldconfig: |
1da177e4c Linux-2.6.12-rc2 |
106 107 108 |
if (sym_has_value(sym)) { printf("%s ", def); |
f82f3f942 kconfig: oldconfi... |
109 |
return 0; |
1da177e4c Linux-2.6.12-rc2 |
110 111 |
} check_stdin(); |
d8fc32007 kconfig: annotate... |
112 |
/* fall through */ |
4062f1a4c kconfig: use long... |
113 |
case oldaskconfig: |
1da177e4c Linux-2.6.12-rc2 |
114 |
fflush(stdout); |
4418a2b90 kconfig: Fix warn... |
115 |
xfgets(line, 128, stdin); |
f82f3f942 kconfig: oldconfi... |
116 |
return 1; |
1da177e4c Linux-2.6.12-rc2 |
117 118 119 120 121 122 123 124 125 126 |
default: break; } switch (type) { case S_INT: case S_HEX: case S_STRING: printf("%s ", def); |
f82f3f942 kconfig: oldconfi... |
127 |
return 1; |
1da177e4c Linux-2.6.12-rc2 |
128 129 130 |
default: ; } |
1da177e4c Linux-2.6.12-rc2 |
131 |
printf("%s", line); |
f82f3f942 kconfig: oldconfi... |
132 |
return 1; |
1da177e4c Linux-2.6.12-rc2 |
133 |
} |
4356f4890 kbuild: add stati... |
134 |
static int conf_string(struct menu *menu) |
1da177e4c Linux-2.6.12-rc2 |
135 136 |
{ struct symbol *sym = menu->sym; |
03d291227 kconfig: attach h... |
137 |
const char *def; |
1da177e4c Linux-2.6.12-rc2 |
138 139 |
while (1) { |
534a450c3 kconfig: gettext ... |
140 |
printf("%*s%s ", indent - 1, "", _(menu->prompt->text)); |
1da177e4c Linux-2.6.12-rc2 |
141 142 143 144 |
printf("(%s) ", sym->name); def = sym_get_string_value(sym); if (sym_get_string_value(sym)) printf("[%s] ", def); |
f82f3f942 kconfig: oldconfi... |
145 146 |
if (!conf_askvalue(sym, def)) return 0; |
1da177e4c Linux-2.6.12-rc2 |
147 148 149 150 151 152 153 154 |
switch (line[0]) { case ' ': break; case '?': /* print help */ if (line[1] == ' ') { |
66c4bd808 kconfig: make use... |
155 |
print_help(menu); |
1da177e4c Linux-2.6.12-rc2 |
156 157 158 |
def = NULL; break; } |
d8fc32007 kconfig: annotate... |
159 |
/* fall through */ |
1da177e4c Linux-2.6.12-rc2 |
160 161 162 163 164 165 166 167 168 169 170 171 |
default: line[strlen(line)-1] = 0; def = line; } if (def && sym_set_string_value(sym, def)) return 0; } } static int conf_sym(struct menu *menu) { struct symbol *sym = menu->sym; |
1da177e4c Linux-2.6.12-rc2 |
172 |
tristate oldval, newval; |
1da177e4c Linux-2.6.12-rc2 |
173 174 |
while (1) { |
534a450c3 kconfig: gettext ... |
175 |
printf("%*s%s ", indent - 1, "", _(menu->prompt->text)); |
1da177e4c Linux-2.6.12-rc2 |
176 177 |
if (sym->name) printf("(%s) ", sym->name); |
1da177e4c Linux-2.6.12-rc2 |
178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
putchar('['); oldval = sym_get_tristate_value(sym); switch (oldval) { case no: putchar('N'); break; case mod: putchar('M'); break; case yes: putchar('Y'); break; } if (oldval != no && sym_tristate_within_range(sym, no)) printf("/n"); if (oldval != mod && sym_tristate_within_range(sym, mod)) printf("/m"); if (oldval != yes && sym_tristate_within_range(sym, yes)) printf("/y"); |
03d291227 kconfig: attach h... |
197 |
if (menu_has_help(menu)) |
1da177e4c Linux-2.6.12-rc2 |
198 199 |
printf("/?"); printf("] "); |
f82f3f942 kconfig: oldconfi... |
200 201 |
if (!conf_askvalue(sym, sym_get_string_value(sym))) return 0; |
1da177e4c Linux-2.6.12-rc2 |
202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 |
strip(line); switch (line[0]) { case 'n': case 'N': newval = no; if (!line[1] || !strcmp(&line[1], "o")) break; continue; case 'm': case 'M': newval = mod; if (!line[1]) break; continue; case 'y': case 'Y': newval = yes; if (!line[1] || !strcmp(&line[1], "es")) break; continue; case 0: newval = oldval; break; case '?': goto help; default: continue; } if (sym_set_tristate_value(sym, newval)) return 0; help: |
66c4bd808 kconfig: make use... |
234 |
print_help(menu); |
1da177e4c Linux-2.6.12-rc2 |
235 236 237 238 239 240 241 |
} } static int conf_choice(struct menu *menu) { struct symbol *sym, *def_sym; struct menu *child; |
1da177e4c Linux-2.6.12-rc2 |
242 243 244 |
bool is_new; sym = menu->sym; |
1da177e4c Linux-2.6.12-rc2 |
245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 |
is_new = !sym_has_value(sym); if (sym_is_changable(sym)) { conf_sym(menu); sym_calc_value(sym); switch (sym_get_tristate_value(sym)) { case no: return 1; case mod: return 0; case yes: break; } } else { switch (sym_get_tristate_value(sym)) { case no: return 1; case mod: |
534a450c3 kconfig: gettext ... |
262 263 |
printf("%*s%s ", indent - 1, "", _(menu_get_prompt(menu))); |
1da177e4c Linux-2.6.12-rc2 |
264 265 266 267 268 269 270 271 |
return 0; case yes: break; } } while (1) { int cnt, def; |
534a450c3 kconfig: gettext ... |
272 273 |
printf("%*s%s ", indent - 1, "", _(menu_get_prompt(menu))); |
1da177e4c Linux-2.6.12-rc2 |
274 275 |
def_sym = sym_get_choice_value(sym); cnt = def = 0; |
40aee729b kconfig: fix defa... |
276 |
line[0] = 0; |
1da177e4c Linux-2.6.12-rc2 |
277 278 279 280 |
for (child = menu->list; child; child = child->next) { if (!menu_is_visible(child)) continue; if (!child->sym) { |
534a450c3 kconfig: gettext ... |
281 282 |
printf("%*c %s ", indent, '*', _(menu_get_prompt(child))); |
1da177e4c Linux-2.6.12-rc2 |
283 284 285 286 287 288 289 290 |
continue; } cnt++; if (child->sym == def_sym) { def = cnt; printf("%*c", indent, '>'); } else printf("%*c", indent, ' '); |
534a450c3 kconfig: gettext ... |
291 |
printf(" %d. %s", cnt, _(menu_get_prompt(child))); |
1da177e4c Linux-2.6.12-rc2 |
292 293 294 |
if (child->sym->name) printf(" (%s)", child->sym->name); if (!sym_has_value(child->sym)) |
534a450c3 kconfig: gettext ... |
295 |
printf(_(" (NEW)")); |
1da177e4c Linux-2.6.12-rc2 |
296 297 298 |
printf(" "); } |
534a450c3 kconfig: gettext ... |
299 |
printf(_("%*schoice"), indent - 1, ""); |
1da177e4c Linux-2.6.12-rc2 |
300 301 302 303 304 305 |
if (cnt == 1) { printf("[1]: 1 "); goto conf_childs; } printf("[1-%d", cnt); |
03d291227 kconfig: attach h... |
306 |
if (menu_has_help(menu)) |
1da177e4c Linux-2.6.12-rc2 |
307 308 309 |
printf("?"); printf("]: "); switch (input_mode) { |
4062f1a4c kconfig: use long... |
310 311 |
case oldconfig: case silentoldconfig: |
1da177e4c Linux-2.6.12-rc2 |
312 313 314 315 316 317 318 |
if (!is_new) { cnt = def; printf("%d ", cnt); break; } check_stdin(); |
d8fc32007 kconfig: annotate... |
319 |
/* fall through */ |
4062f1a4c kconfig: use long... |
320 |
case oldaskconfig: |
1da177e4c Linux-2.6.12-rc2 |
321 |
fflush(stdout); |
4418a2b90 kconfig: Fix warn... |
322 |
xfgets(line, 128, stdin); |
1da177e4c Linux-2.6.12-rc2 |
323 324 |
strip(line); if (line[0] == '?') { |
66c4bd808 kconfig: make use... |
325 |
print_help(menu); |
1da177e4c Linux-2.6.12-rc2 |
326 327 328 329 330 331 332 333 334 |
continue; } if (!line[0]) cnt = def; else if (isdigit(line[0])) cnt = atoi(line); else continue; break; |
f443d2ecc kconfig: speed up... |
335 336 |
default: break; |
1da177e4c Linux-2.6.12-rc2 |
337 338 339 340 341 342 343 344 345 346 347 |
} conf_childs: for (child = menu->list; child; child = child->next) { if (!child->sym || !menu_is_visible(child)) continue; if (!--cnt) break; } if (!child) continue; |
3ba416211 kconfig: Avoid bu... |
348 |
if (line[0] && line[strlen(line) - 1] == '?') { |
66c4bd808 kconfig: make use... |
349 |
print_help(child); |
1da177e4c Linux-2.6.12-rc2 |
350 351 352 |
continue; } sym_set_choice_value(sym, child->sym); |
f5eaa323e kconfig: tristate... |
353 |
for (child = child->list; child; child = child->next) { |
1da177e4c Linux-2.6.12-rc2 |
354 |
indent += 2; |
f5eaa323e kconfig: tristate... |
355 |
conf(child); |
1da177e4c Linux-2.6.12-rc2 |
356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 |
indent -= 2; } return 1; } } static void conf(struct menu *menu) { struct symbol *sym; struct property *prop; struct menu *child; if (!menu_is_visible(menu)) return; sym = menu->sym; prop = menu->prompt; if (prop) { const char *prompt; switch (prop->type) { case P_MENU: |
4062f1a4c kconfig: use long... |
378 |
if ((input_mode == silentoldconfig || |
861b4ea4c kconfig: change n... |
379 |
input_mode == listnewconfig || |
ef61ca88c kconfig: rename l... |
380 |
input_mode == oldnoconfig) && |
f0778c8c4 kconfig: introduc... |
381 |
rootEntry != menu) { |
1da177e4c Linux-2.6.12-rc2 |
382 383 384 |
check_conf(menu); return; } |
d8fc32007 kconfig: annotate... |
385 |
/* fall through */ |
1da177e4c Linux-2.6.12-rc2 |
386 387 388 389 390 391 392 393 |
case P_COMMENT: prompt = menu_get_prompt(menu); if (prompt) printf("%*c %*c %s %*c ", indent, '*', |
534a450c3 kconfig: gettext ... |
394 |
indent, '*', _(prompt), |
1da177e4c Linux-2.6.12-rc2 |
395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 |
indent, '*'); default: ; } } if (!sym) goto conf_childs; if (sym_is_choice(sym)) { conf_choice(menu); if (sym->curr.tri != mod) return; goto conf_childs; } switch (sym->type) { case S_INT: case S_HEX: case S_STRING: conf_string(menu); break; default: conf_sym(menu); break; } conf_childs: if (sym) indent += 2; for (child = menu->list; child; child = child->next) conf(child); if (sym) indent -= 2; } static void check_conf(struct menu *menu) { struct symbol *sym; struct menu *child; if (!menu_is_visible(menu)) return; sym = menu->sym; |
3f23ca2b3 [PATCH] kconfig: ... |
440 441 442 |
if (sym && !sym_has_value(sym)) { if (sym_is_changable(sym) || (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) { |
861b4ea4c kconfig: change n... |
443 444 |
if (input_mode == listnewconfig) { if (sym->name && !sym_is_choice_value(sym)) { |
ffb5957bc kconfig: allow bu... |
445 446 |
printf("%s%s ", CONFIG_, sym->name); |
f0778c8c4 kconfig: introduc... |
447 |
} |
71d806626 kbuild: fix oldno... |
448 |
} else if (input_mode != oldnoconfig) { |
f0778c8c4 kconfig: introduc... |
449 450 451 452 453 454 455 456 |
if (!conf_cnt++) printf(_("* * Restart config... * ")); rootEntry = menu_get_parent_menu(menu); conf(rootEntry); } |
1da177e4c Linux-2.6.12-rc2 |
457 |
} |
1da177e4c Linux-2.6.12-rc2 |
458 459 460 461 462 |
} for (child = menu->list; child; child = child->next) check_conf(child); } |
4062f1a4c kconfig: use long... |
463 464 465 466 467 |
static struct option long_opts[] = { {"oldaskconfig", no_argument, NULL, oldaskconfig}, {"oldconfig", no_argument, NULL, oldconfig}, {"silentoldconfig", no_argument, NULL, silentoldconfig}, {"defconfig", optional_argument, NULL, defconfig}, |
7cf3d73b4 kconfig: add save... |
468 |
{"savedefconfig", required_argument, NULL, savedefconfig}, |
4062f1a4c kconfig: use long... |
469 470 471 |
{"allnoconfig", no_argument, NULL, allnoconfig}, {"allyesconfig", no_argument, NULL, allyesconfig}, {"allmodconfig", no_argument, NULL, allmodconfig}, |
0748cb3e1 kconfig: add alld... |
472 |
{"alldefconfig", no_argument, NULL, alldefconfig}, |
4062f1a4c kconfig: use long... |
473 |
{"randconfig", no_argument, NULL, randconfig}, |
861b4ea4c kconfig: change n... |
474 |
{"listnewconfig", no_argument, NULL, listnewconfig}, |
ef61ca88c kconfig: rename l... |
475 |
{"oldnoconfig", no_argument, NULL, oldnoconfig}, |
4062f1a4c kconfig: use long... |
476 477 |
{NULL, 0, NULL, 0} }; |
32543999f kconfig/conf: add... |
478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 |
static void conf_usage(const char *progname) { printf("Usage: %s [option] <kconfig-file> ", progname); printf("[option] is _one_ of the following: "); printf(" --listnewconfig List new options "); printf(" --oldaskconfig Start a new configuration using a line-oriented program "); printf(" --oldconfig Update a configuration using a provided .config as base "); printf(" --silentoldconfig Same as oldconfig, but quietly, additionally update deps "); printf(" --oldnoconfig Same as silentoldconfig but set new symbols to no "); printf(" --defconfig <file> New config with default defined in <file> "); printf(" --savedefconfig <file> Save the minimal current configuration to <file> "); printf(" --allnoconfig New config where all options are answered with no "); printf(" --allyesconfig New config where all options are answered with yes "); printf(" --allmodconfig New config where all options are answered with mod "); printf(" --alldefconfig New config with all symbols set to default "); printf(" --randconfig New config with random answer to all options "); } |
1da177e4c Linux-2.6.12-rc2 |
510 511 |
int main(int ac, char **av) { |
32543999f kconfig/conf: add... |
512 |
const char *progname = av[0]; |
2f4b489b7 kconfig: use geto... |
513 |
int opt; |
275744cc8 kconfig/conf: red... |
514 |
const char *name, *defconfig_file = NULL /* gcc uninit */; |
1da177e4c Linux-2.6.12-rc2 |
515 |
struct stat tmpstat; |
534a450c3 kconfig: gettext ... |
516 517 518 |
setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); |
c94d3fb01 kbuild: use getop... |
519 |
while ((opt = getopt_long(ac, av, "", long_opts, NULL)) != -1) { |
4062f1a4c kconfig: use long... |
520 |
input_mode = (enum input_mode)opt; |
2f4b489b7 kconfig: use geto... |
521 |
switch (opt) { |
4062f1a4c kconfig: use long... |
522 |
case silentoldconfig: |
204c96f60 kconfig: fix sile... |
523 |
sync_kconfig = 1; |
1da177e4c Linux-2.6.12-rc2 |
524 |
break; |
4062f1a4c kconfig: use long... |
525 |
case defconfig: |
7cf3d73b4 kconfig: add save... |
526 |
case savedefconfig: |
2f4b489b7 kconfig: use geto... |
527 |
defconfig_file = optarg; |
1da177e4c Linux-2.6.12-rc2 |
528 |
break; |
4062f1a4c kconfig: use long... |
529 |
case randconfig: |
b0fe55100 kconfig: improve ... |
530 531 532 533 534 535 536 537 538 539 540 541 |
{ struct timeval now; unsigned int seed; /* * Use microseconds derived seed, * compensate for systems where it may be zero */ gettimeofday(&now, NULL); seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1)); srand(seed); |
1da177e4c Linux-2.6.12-rc2 |
542 |
break; |
b0fe55100 kconfig: improve ... |
543 |
} |
32543999f kconfig/conf: add... |
544 545 546 547 548 549 550 551 552 |
case oldaskconfig: case oldconfig: case allnoconfig: case allyesconfig: case allmodconfig: case alldefconfig: case listnewconfig: case oldnoconfig: break; |
4062f1a4c kconfig: use long... |
553 |
case '?': |
32543999f kconfig/conf: add... |
554 |
conf_usage(progname); |
2f4b489b7 kconfig: use geto... |
555 |
exit(1); |
4062f1a4c kconfig: use long... |
556 |
break; |
1da177e4c Linux-2.6.12-rc2 |
557 558 |
} } |
2f4b489b7 kconfig: use geto... |
559 |
if (ac == optind) { |
3b9fa0931 [PATCH] Kconfig i... |
560 561 |
printf(_("%s: Kconfig file missing "), av[0]); |
32543999f kconfig/conf: add... |
562 |
conf_usage(progname); |
250725aa1 kconfig: exit if ... |
563 |
exit(1); |
1da177e4c Linux-2.6.12-rc2 |
564 |
} |
2f4b489b7 kconfig: use geto... |
565 |
name = av[optind]; |
1da177e4c Linux-2.6.12-rc2 |
566 567 |
conf_parse(name); //zconfdump(stdout); |
204c96f60 kconfig: fix sile... |
568 |
if (sync_kconfig) { |
284026cdf kconfig: do not h... |
569 570 |
name = conf_get_configname(); if (stat(name, &tmpstat)) { |
204c96f60 kconfig: fix sile... |
571 572 |
fprintf(stderr, _("*** " |
652cf9821 kconfig: rephrase... |
573 574 |
"*** Configuration file \"%s\" not found! " |
204c96f60 kconfig: fix sile... |
575 576 577 578 579 580 |
"*** " "*** Please run some configurator (e.g. \"make oldconfig\" or " "*** \"make menuconfig\" or \"make xconfig\"). " |
284026cdf kconfig: do not h... |
581 582 |
"*** "), name); |
204c96f60 kconfig: fix sile... |
583 584 585 |
exit(1); } } |
1da177e4c Linux-2.6.12-rc2 |
586 |
switch (input_mode) { |
4062f1a4c kconfig: use long... |
587 |
case defconfig: |
1da177e4c Linux-2.6.12-rc2 |
588 589 590 |
if (!defconfig_file) defconfig_file = conf_get_default_confname(); if (conf_read(defconfig_file)) { |
534a450c3 kconfig: gettext ... |
591 592 |
printf(_("*** " |
1da177e4c Linux-2.6.12-rc2 |
593 594 |
"*** Can't find default configuration \"%s\"! " |
534a450c3 kconfig: gettext ... |
595 596 |
"*** "), defconfig_file); |
1da177e4c Linux-2.6.12-rc2 |
597 598 599 |
exit(1); } break; |
7cf3d73b4 kconfig: add save... |
600 |
case savedefconfig: |
4062f1a4c kconfig: use long... |
601 602 603 |
case silentoldconfig: case oldaskconfig: case oldconfig: |
861b4ea4c kconfig: change n... |
604 |
case listnewconfig: |
ef61ca88c kconfig: rename l... |
605 |
case oldnoconfig: |
1da177e4c Linux-2.6.12-rc2 |
606 607 |
conf_read(NULL); break; |
4062f1a4c kconfig: use long... |
608 609 610 |
case allnoconfig: case allyesconfig: case allmodconfig: |
0748cb3e1 kconfig: add alld... |
611 |
case alldefconfig: |
4062f1a4c kconfig: use long... |
612 |
case randconfig: |
90389160e [PATCH] kconfig: ... |
613 |
name = getenv("KCONFIG_ALLCONFIG"); |
9f420bf0f kbuild: all{no,ye... |
614 615 616 |
if (!name) break; if ((strcmp(name, "") != 0) && (strcmp(name, "1") != 0)) { |
5efe241ea kconfig: Add erro... |
617 618 619 620 621 622 623 |
if (conf_read_simple(name, S_DEF_USER)) { fprintf(stderr, _("*** Can't read seed configuration \"%s\"! "), name); exit(1); } |
90389160e [PATCH] kconfig: ... |
624 625 626 |
break; } switch (input_mode) { |
4062f1a4c kconfig: use long... |
627 628 629 |
case allnoconfig: name = "allno.config"; break; case allyesconfig: name = "allyes.config"; break; case allmodconfig: name = "allmod.config"; break; |
0748cb3e1 kconfig: add alld... |
630 |
case alldefconfig: name = "alldef.config"; break; |
4062f1a4c kconfig: use long... |
631 |
case randconfig: name = "allrandom.config"; break; |
90389160e [PATCH] kconfig: ... |
632 633 |
default: break; } |
5efe241ea kconfig: Add erro... |
634 635 636 637 638 639 640 641 |
if (conf_read_simple(name, S_DEF_USER) && conf_read_simple("all.config", S_DEF_USER)) { fprintf(stderr, _("*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found "), name); exit(1); } |
90389160e [PATCH] kconfig: ... |
642 |
break; |
1da177e4c Linux-2.6.12-rc2 |
643 644 645 |
default: break; } |
204c96f60 kconfig: fix sile... |
646 647 648 649 650 651 |
if (sync_kconfig) { if (conf_get_changed()) { name = getenv("KCONFIG_NOSILENTUPDATE"); if (name && *name) { fprintf(stderr, |
652cf9821 kconfig: rephrase... |
652 653 654 655 |
_(" *** The configuration requires explicit update. ")); |
204c96f60 kconfig: fix sile... |
656 657 658 659 660 |
return 1; } } valid_stdin = isatty(0) && isatty(1) && isatty(2); } |
f443d2ecc kconfig: speed up... |
661 |
switch (input_mode) { |
4062f1a4c kconfig: use long... |
662 |
case allnoconfig: |
f443d2ecc kconfig: speed up... |
663 664 |
conf_set_all_new_symbols(def_no); break; |
4062f1a4c kconfig: use long... |
665 |
case allyesconfig: |
f443d2ecc kconfig: speed up... |
666 667 |
conf_set_all_new_symbols(def_yes); break; |
4062f1a4c kconfig: use long... |
668 |
case allmodconfig: |
f443d2ecc kconfig: speed up... |
669 670 |
conf_set_all_new_symbols(def_mod); break; |
0748cb3e1 kconfig: add alld... |
671 672 673 |
case alldefconfig: conf_set_all_new_symbols(def_default); break; |
4062f1a4c kconfig: use long... |
674 |
case randconfig: |
f443d2ecc kconfig: speed up... |
675 676 |
conf_set_all_new_symbols(def_random); break; |
4062f1a4c kconfig: use long... |
677 |
case defconfig: |
09748e178 kconfig: make def... |
678 679 |
conf_set_all_new_symbols(def_default); break; |
7cf3d73b4 kconfig: add save... |
680 681 |
case savedefconfig: break; |
4062f1a4c kconfig: use long... |
682 |
case oldaskconfig: |
204c96f60 kconfig: fix sile... |
683 684 |
rootEntry = &rootmenu; conf(&rootmenu); |
4062f1a4c kconfig: use long... |
685 |
input_mode = silentoldconfig; |
204c96f60 kconfig: fix sile... |
686 |
/* fall through */ |
148283497 kconfig: fix make... |
687 |
case oldconfig: |
861b4ea4c kconfig: change n... |
688 |
case listnewconfig: |
ef61ca88c kconfig: rename l... |
689 |
case oldnoconfig: |
4062f1a4c kconfig: use long... |
690 |
case silentoldconfig: |
204c96f60 kconfig: fix sile... |
691 692 693 694 |
/* Update until a loop caused no more changes */ do { conf_cnt = 0; check_conf(&rootmenu); |
f0778c8c4 kconfig: introduc... |
695 |
} while (conf_cnt && |
861b4ea4c kconfig: change n... |
696 |
(input_mode != listnewconfig && |
ef61ca88c kconfig: rename l... |
697 |
input_mode != oldnoconfig)); |
f443d2ecc kconfig: speed up... |
698 699 |
break; } |
1da177e4c Linux-2.6.12-rc2 |
700 |
|
204c96f60 kconfig: fix sile... |
701 702 703 704 705 |
if (sync_kconfig) { /* silentoldconfig is used during the build so we shall update autoconf. * All other commands are only used to generate a config. */ if (conf_get_changed() && conf_write(NULL)) { |
652cf9821 kconfig: rephrase... |
706 707 708 709 |
fprintf(stderr, _(" *** Error during writing of the configuration. ")); |
204c96f60 kconfig: fix sile... |
710 711 712 |
exit(1); } if (conf_write_autoconf()) { |
652cf9821 kconfig: rephrase... |
713 714 715 716 |
fprintf(stderr, _(" *** Error during update of the configuration. ")); |
204c96f60 kconfig: fix sile... |
717 718 |
return 1; } |
7cf3d73b4 kconfig: add save... |
719 720 721 722 723 724 725 726 |
} else if (input_mode == savedefconfig) { if (conf_write_defconfig(defconfig_file)) { fprintf(stderr, _("n*** Error while saving defconfig to: %s "), defconfig_file); return 1; } |
861b4ea4c kconfig: change n... |
727 |
} else if (input_mode != listnewconfig) { |
204c96f60 kconfig: fix sile... |
728 |
if (conf_write(NULL)) { |
652cf9821 kconfig: rephrase... |
729 730 731 732 |
fprintf(stderr, _(" *** Error during writing of the configuration. ")); |
204c96f60 kconfig: fix sile... |
733 734 |
exit(1); } |
c955ccafc kconfig: fix .con... |
735 |
} |
861b4ea4c kconfig: change n... |
736 |
return 0; |
1da177e4c Linux-2.6.12-rc2 |
737 |
} |
ab63f58f2 kconfig/conf: mar... |
738 |
|
4418a2b90 kconfig: Fix warn... |
739 740 741 |
/* * Helper function to facilitate fgets() by Jean Sacren. */ |
ab63f58f2 kconfig/conf: mar... |
742 |
void xfgets(char *str, int size, FILE *in) |
4418a2b90 kconfig: Fix warn... |
743 744 745 746 747 748 |
{ if (fgets(str, size, in) == NULL) fprintf(stderr, " Error in reading or end of file. "); } |