]> git.ozlabs.org Git - ccan/blobdiff - tools/ccanlint/compulsory_tests/check_includes_build.c
ccanlint: make compile commands return output.
[ccan] / tools / ccanlint / compulsory_tests / check_includes_build.c
index 79d10d29775d65c7fa3a7e2695c113429ff17d35..4e2badda9ce3ff6863812b3a9c5d3734745779a4 100644 (file)
@@ -32,15 +32,15 @@ static struct ccan_file *main_header(struct manifest *m)
                        return f;
        }
        /* Should not happen: we depend on has_main_header */
-       return NULL;
+       abort();
 }
 
-static void *check_includes_build(struct manifest *m,
-                                 bool keep,
-                                 unsigned int *timeleft)
+static void check_includes_build(struct manifest *m,
+                                bool keep,
+                                unsigned int *timeleft, struct score *score)
 {
        char *contents;
-       char *tmpsrc, *tmpobj;
+       char *tmpsrc, *tmpobj, *cmdout;
        int fd;
        struct ccan_file *mainh = main_header(m);
 
@@ -49,34 +49,28 @@ static void *check_includes_build(struct manifest *m,
 
        fd = open(tmpsrc, O_WRONLY | O_CREAT | O_EXCL, 0600);
        if (fd < 0)
-               return talloc_asprintf(m, "Creating temporary file %s: %s",
-                                      tmpsrc, strerror(errno));
+               err(1, "Creating temporary file %s", tmpsrc);
 
        contents = talloc_asprintf(tmpsrc, "#include <ccan/%s/%s.h>\n",
                                   m->basename, m->basename);
-       if (write(fd, contents, strlen(contents)) != strlen(contents)) {
-               close(fd);
-               return "Failure writing to temporary file";
-       }
+       if (write(fd, contents, strlen(contents)) != strlen(contents))
+               err(1, "writing to temporary file %s", tmpsrc);
        close(fd);
 
-       return compile_object(m, tmpsrc, ccan_dir, "", tmpobj);
-}
-
-static const char *describe_includes_build(struct manifest *m,
-                                          void *check_result)
-{
-       return talloc_asprintf(check_result, 
-                              "#include of the main header file:\n"
-                              "%s", (char *)check_result);
+       if (compile_object(score, tmpsrc, ccan_dir, "", tmpobj, &cmdout)) {
+               score->pass = true;
+               score->score = score->total;
+       } else {
+               score->error = talloc_asprintf(score,
+                                      "#include of the main header file:\n%s",
+                                      cmdout);
+       }
 }
 
 struct ccanlint includes_build = {
        .key = "include-main",
        .name = "Modules main header compiles",
-       .total_score = 1,
        .check = check_includes_build,
-       .describe = describe_includes_build,
        .can_run = can_build,
 };