kconfig: Terminate menu blocks with a comment in the generated config
[carl9170fw.git] / config / confdata.c
index 52f9282e63df28c20db394e9cbc6a1ebcdd11deb..695253e055cefc96b98f461fbf0ab1b4fc69860b 100644 (file)
@@ -226,7 +226,7 @@ const char *conf_get_configname(void)
        return name ? name : ".config";
 }
 
-const char *conf_get_autoconfig_name(void)
+static const char *conf_get_autoconfig_name(void)
 {
        char *name = getenv("KCONFIG_AUTOCONFIG");
 
@@ -241,7 +241,7 @@ char *conf_get_default_confname(void)
        name = expand_string(conf_defname);
        env = getenv(SRCTREE);
        if (env) {
-               sprintf(fullname, "%s/%s", env, name);
+               snprintf(fullname, sizeof(fullname), "%s/%s", env, name);
                if (is_present(fullname))
                        return fullname;
        }
@@ -913,6 +913,7 @@ int conf_write(const char *name)
        const char *str;
        char tmpname[PATH_MAX + 1], oldname[PATH_MAX + 1];
        char *env;
+       bool need_newline = false;
 
        if (!name)
                name = conf_get_configname();
@@ -958,12 +959,16 @@ int conf_write(const char *name)
                                     "#\n"
                                     "# %s\n"
                                     "#\n", str);
+                       need_newline = false;
                } else if (!(sym->flags & SYMBOL_CHOICE)) {
                        sym_calc_value(sym);
                        if (!(sym->flags & SYMBOL_WRITE))
                                goto next;
+                       if (need_newline) {
+                               fprintf(out, "\n");
+                               need_newline = false;
+                       }
                        sym->flags &= ~SYMBOL_WRITE;
-
                        conf_write_symbol(out, sym, &kconfig_printer_cb, NULL);
                }
 
@@ -975,6 +980,12 @@ next:
                if (menu->next)
                        menu = menu->next;
                else while ((menu = menu->parent)) {
+                       if (!menu->sym && menu_is_visible(menu) &&
+                           menu != &rootmenu) {
+                               str = menu_get_prompt(menu);
+                               fprintf(out, "# end of %s\n", str);
+                               need_newline = true;
+                       }
                        if (menu->next) {
                                menu = menu->next;
                                break;
@@ -1010,8 +1021,6 @@ static int conf_write_dep(const char *name)
        struct file *file;
        FILE *out;
 
-       if (!name)
-               name = ".kconfig.d";
        out = fopen("..config.tmp", "w");
        if (!out)
                return 1;