]> git.ozlabs.org Git - ccan/blobdiff - tools/ccanlint/ccanlint.c
base64: fix for unsigned chars (e.g. ARM).
[ccan] / tools / ccanlint / ccanlint.c
index 0ed969cb868ef8fc5f7f38f61465653244bfc1ed..237e412817d8f99ff44d9e68afeed050365d89b6 100644 (file)
@@ -456,50 +456,43 @@ static void add_options(struct ccanlint *test, char **options,
        memcpy(&test->options[num], options, (num_options + 1)*sizeof(char *));
 }
 
-void add_info_options(struct ccan_file *info)
+void add_info_options(struct manifest *m)
 {
-       struct doc_section *d;
        unsigned int i;
-       struct ccanlint *test;
+       char **info_options = get_ccanlint(m, m->dir, get_or_compile_info);
 
-       list_for_each(get_ccan_file_docs(info), d, list) {
-               if (!streq(d->type, "ccanlint"))
+       for (i = 0; info_options[i]; i++) {
+               char **words = tal_strsplit(m, info_options[i], " \t",
+                                           STR_NO_EMPTY);
+               struct ccanlint *test;
+
+               if (!words[0])
+                       continue;
+
+               test = find_test(words[0]);
+               if (!test) {
+                       warnx("%s: unknown ccanlint test '%s'",
+                             m->info_file->fullname, words[0]);
                        continue;
+               }
+
+               if (!words[1]) {
+                       warnx("%s: no argument to test '%s'",
+                             m->info_file->fullname, words[0]);
+                       continue;
+               }
 
-               for (i = 0; i < d->num_lines; i++) {
-                       char **words = tal_strsplit(d, d->lines[i], " \t",
-                                                   STR_NO_EMPTY);
-                       if (!words[0])
-                               continue;
-
-                       if (strncmp(words[0], "//", 2) == 0)
-                               continue;
-
-                       test = find_test(words[0]);
-                       if (!test) {
-                               warnx("%s: unknown ccanlint test '%s'",
-                                     info->fullname, words[0]);
-                               continue;
-                       }
-
-                       if (!words[1]) {
-                               warnx("%s: no argument to test '%s'",
-                                     info->fullname, words[0]);
-                               continue;
-                       }
-
-                       /* Known failure? */
-                       if (strcasecmp(words[1], "FAIL") == 0) {
-                               if (!targeting)
-                                       skip_test_and_deps(test,
-                                                          "excluded in _info"
-                                                          " file");
-                       } else {
-                               if (!test->takes_options)
-                                       warnx("%s: %s doesn't take options",
-                                             info->fullname, words[0]);
-                               add_options(test, words+1, tal_count(words)-1);
-                       }
+               /* Known failure? */
+               if (strcasecmp(words[1], "FAIL") == 0) {
+                       if (!targeting)
+                               skip_test_and_deps(test,
+                                                  "excluded in _info"
+                                                  " file");
+               } else {
+                       if (!test->takes_options)
+                               warnx("%s: %s doesn't take options",
+                                     m->info_file->fullname, words[0]);
+                       add_options(test, words+1, tal_count(words)-1);
                }
        }
 }
@@ -623,6 +616,7 @@ int main(int argc, char *argv[])
        char *cwd = path_cwd(NULL), *dir;
        struct ccanlint top;  /* cannot_run may try to set ->can_run */
        const char *override_compiler = NULL, *override_cflags = NULL;
+       const char *override_gcov = NULL;
        
        /* Empty graph node to which we attach everything else. */
        dgraph_init_node(&top.node);
@@ -651,6 +645,8 @@ int main(int argc, char *argv[])
                         NULL, &override_compiler, "set the compiler");
        opt_register_arg("--cflags <flags>", opt_set_const_charp,
                         NULL, &override_cflags, "set the compiler flags");
+       opt_register_arg("--gcov <coverage tool>", opt_set_const_charp,
+                        NULL, &override_gcov, "set the coverage tool");
        opt_register_noarg("--deps-fail-ignore", opt_set_bool,
                           &deps_fail_ignore,
                           "don't fail if external dependencies are missing");
@@ -695,6 +691,8 @@ int main(int argc, char *argv[])
                cflags = override_cflags;
        if (override_compiler)
                compiler = override_compiler;
+       if (override_gcov)
+               gcov = override_gcov;
 
        if (argc == 1)
                pass = test_module(&top.node, cwd, "",