genksyms: Handle string literals with spaces in reference files
authorMichal Marek <mmarek@suse.com>
Wed, 9 Dec 2015 14:08:21 +0000 (15:08 +0100)
committerMichal Marek <mmarek@suse.com>
Wed, 9 Dec 2015 14:19:23 +0000 (15:19 +0100)
The reference files use spaces to separate tokens, however, we must
preserve spaces inside string literals. Currently the only case in the
tree is struct edac_raw_error_desc in <linux/edac.h>:

$ KBUILD_SYMTYPES=1 make -s drivers/edac/amd64_edac.symtypes
$ mv drivers/edac/amd64_edac.{symtypes,symref}
$ KBUILD_SYMTYPES=1 make -s drivers/edac/amd64_edac.symtypes
drivers/edac/amd64_edac.c:527: warning: amd64_get_dram_hole_info: modversion changed because of changes in struct edac_raw_error_desc

Signed-off-by: Michal Marek <mmarek@suse.com>
scripts/genksyms/genksyms.c

index 88632df4381b933a95c91de0e62c5e8648c4f089..dafaf96e0a34baea94d4b4e5f171f9ce0e53927e 100644 (file)
@@ -423,13 +423,15 @@ static struct string_list *read_node(FILE *f)
        struct string_list node = {
                .string = buffer,
                .tag = SYM_NORMAL };
-       int c;
+       int c, in_string = 0;
 
        while ((c = fgetc(f)) != EOF) {
-               if (c == ' ') {
+               if (!in_string && c == ' ') {
                        if (node.string == buffer)
                                continue;
                        break;
+               } else if (c == '"') {
+                       in_string = !in_string;
                } else if (c == '\n') {
                        if (node.string == buffer)
                                return NULL;
This page took 0.083513 seconds and 5 git commands to generate.