Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / scripts / kconfig / menu.c
index 7b26f98..0fce20c 100644 (file)
@@ -61,10 +61,11 @@ void menu_end_entry(void)
 {
 }
 
-void menu_add_menu(void)
+struct menu *menu_add_menu(void)
 {
-       current_menu = current_entry;
+       menu_end_entry();
        last_entry_ptr = &current_entry->list;
+       return current_menu = current_entry;
 }
 
 void menu_end_menu(void)
@@ -136,9 +137,9 @@ struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *e
        return prop;
 }
 
-void menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep)
+struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep)
 {
-       menu_add_prop(type, prompt, NULL, dep);
+       return menu_add_prop(type, prompt, NULL, dep);
 }
 
 void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep)
@@ -151,6 +152,12 @@ void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep)
        menu_add_prop(type, NULL, expr_alloc_symbol(sym), dep);
 }
 
+static int menu_range_valid_sym(struct symbol *sym, struct symbol *sym2)
+{
+       return sym2->type == S_INT || sym2->type == S_HEX ||
+              (sym2->type == S_UNKNOWN && sym_string_valid(sym, sym2->name));
+}
+
 void sym_check_prop(struct symbol *sym)
 {
        struct property *prop;
@@ -185,8 +192,8 @@ void sym_check_prop(struct symbol *sym)
                        if (sym->type != S_INT && sym->type != S_HEX)
                                prop_warn(prop, "range is only allowed "
                                                "for int or hex symbols");
-                       if (!sym_string_valid(sym, prop->expr->left.sym->name) ||
-                           !sym_string_valid(sym, prop->expr->right.sym->name))
+                       if (!menu_range_valid_sym(sym, prop->expr->left.sym) ||
+                           !menu_range_valid_sym(sym, prop->expr->right.sym))
                                prop_warn(prop, "range is invalid");
                        break;
                default:
@@ -365,9 +372,9 @@ bool menu_is_visible(struct menu *menu)
 const char *menu_get_prompt(struct menu *menu)
 {
        if (menu->prompt)
-               return menu->prompt->text;
+               return _(menu->prompt->text);
        else if (menu->sym)
-               return menu->sym->name;
+               return _(menu->sym->name);
        return NULL;
 }
 
@@ -388,43 +395,3 @@ struct menu *menu_get_parent_menu(struct menu *menu)
        return menu;
 }
 
-struct file *file_lookup(const char *name)
-{
-       struct file *file;
-
-       for (file = file_list; file; file = file->next) {
-               if (!strcmp(name, file->name))
-                       return file;
-       }
-
-       file = malloc(sizeof(*file));
-       memset(file, 0, sizeof(*file));
-       file->name = strdup(name);
-       file->next = file_list;
-       file_list = file;
-       return file;
-}
-
-int file_write_dep(const char *name)
-{
-       struct file *file;
-       FILE *out;
-
-       if (!name)
-               name = ".config.cmd";
-       out = fopen("..config.tmp", "w");
-       if (!out)
-               return 1;
-       fprintf(out, "deps_config := \\\n");
-       for (file = file_list; file; file = file->next) {
-               if (file->next)
-                       fprintf(out, "\t%s \\\n", file->name);
-               else
-                       fprintf(out, "\t%s\n", file->name);
-       }
-       fprintf(out, "\n.config include/linux/autoconf.h: $(deps_config)\n\n$(deps_config):\n");
-       fclose(out);
-       rename("..config.tmp", name);
-       return 0;
-}
-