kconfig: fix missing "0x" prefix from S_HEX symbol in autoconf.h
Arnaud Lacombe [Thu, 14 Jul 2011 19:31:07 +0000 (15:31 -0400)]
The specialized printer for headers (espectially autoconf.h) is missing
fixup code for S_HEX symbol's "0x" prefix. As long as kconfig does not
warn for such missing prefix, this code is needed. Fix this.

In the same time, fix some nits in `header_print_symbol()'.

Cc: Randy Dunlap <rdunlap@xenotime.net>
Cc: Mauro Carvalho Chehab <mchehab@infradead.org>

Broken-by: Arnaud Lacombe <lacombar@gmail.com>
Reported-by: Randy Dunlap <rdunlap@xenotime.net>
Reported-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Acked-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Acked-by: Randy Dunlap <rdunlap@xenotime.net>
Signed-off-by: Arnaud Lacombe <lacombar@gmail.com>
Signed-off-by: Michal Marek <mmarek@suse.cz>

scripts/kconfig/confdata.c

index be6952c..df629ec 100644 (file)
@@ -487,27 +487,43 @@ static struct conf_printer kconfig_printer_cb =
 static void
 header_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg)
 {
-       const char *suffix = "";
 
        switch (sym->type) {
        case S_BOOLEAN:
-       case S_TRISTATE:
+       case S_TRISTATE: {
+               const char *suffix = "";
+
                switch (*value) {
                case 'n':
                        return;
                case 'm':
                        suffix = "_MODULE";
-                       /* FALLTHROUGH */
+                       /* fall through */
                default:
                        value = "1";
                }
+               fprintf(fp, "#define %s%s%s %s\n",
+                   CONFIG_, sym->name, suffix, value);
+               break;
+       }
+       case S_HEX: {
+               const char *prefix = "";
+
+               if (value[0] != '0' || (value[1] != 'x' && value[1] != 'X'))
+                       prefix = "0x";
+               fprintf(fp, "#define %s%s %s%s\n",
+                   CONFIG_, sym->name, prefix, value);
+               break;
+       }
+       case S_STRING:
+       case S_INT:
+               fprintf(fp, "#define %s%s %s\n",
+                   CONFIG_, sym->name, value);
                break;
        default:
                break;
        }
 
-       fprintf(fp, "#define %s%s%s %s\n",
-           CONFIG_, sym->name, suffix, value);
 }
 
 static void