]> git.ozlabs.org Git - ccan/blobdiff - tools/ccanlint/tests/module_links.c
base64: fix for unsigned chars (e.g. ARM).
[ccan] / tools / ccanlint / tests / module_links.c
index d665ba7d6672f7a86849f6683686e6bb83fa42a3..9a2c0be5b4ccf2b36a59227f7c757c2477b41487 100644 (file)
@@ -1,7 +1,7 @@
 #include <tools/ccanlint/ccanlint.h>
 #include <tools/tools.h>
-#include <ccan/talloc/talloc.h>
 #include <ccan/str/str.h>
+#include <ccan/take/take.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
@@ -14,7 +14,7 @@
 #include <string.h>
 #include <ctype.h>
 
-static const char *can_build(struct manifest *m)
+static const char *can_build(struct manifest *m UNNEEDED)
 {
        if (safe_mode)
                return "Safe mode enabled";
@@ -27,59 +27,73 @@ static char *obj_list(const struct manifest *m)
        struct manifest *i;
 
        if (m->compiled[COMPILE_NORMAL])
-               list = talloc_strdup(m, m->compiled[COMPILE_NORMAL]);
+               list = tal_strdup(m, m->compiled[COMPILE_NORMAL]);
        else
-               list = talloc_strdup(m, "");
+               list = tal_strdup(m, "");
 
        /* Other CCAN deps. */
        list_for_each(&m->deps, i, list) {
-               if (i->compiled[COMPILE_NORMAL])
-                       list = talloc_asprintf_append(list, " %s",
-                                                     i->compiled
-                                                     [COMPILE_NORMAL]);
+               if (!i->compiled[COMPILE_NORMAL])
+                       continue;
+               list = tal_strcat(m, take(list), " ");
+               list = tal_strcat(m, take(list), i->compiled[COMPILE_NORMAL]);
        }
        return list;
 }
 
+static char *cflags_list(const struct manifest *m)
+{
+       unsigned int i;
+       char *ret = tal_strdup(m, cflags);
+
+       char **flags = get_cflags(m, m->dir, get_or_compile_info);
+       for (i = 0; flags[i]; i++)
+               tal_append_fmt(&ret, " %s", flags[i]);
+       return ret;
+}
+
 static char *lib_list(const struct manifest *m)
 {
        unsigned int i;
        char **libs;
-       char *ret = talloc_strdup(m, "");
+       char *ret = tal_strdup(m, "");
 
        libs = get_libs(m, m->dir, "depends", get_or_compile_info);
        for (i = 0; libs[i]; i++)
-               ret = talloc_asprintf_append(ret, "-l%s ", libs[i]);
+               tal_append_fmt(&ret, "-l%s ", libs[i]);
        return ret;
 }
 
 static void check_use_build(struct manifest *m,
-                           unsigned int *timeleft, struct score *score)
+                           unsigned int *timeleft UNNEEDED,
+                           struct score *score)
 {
        char *contents;
        char *tmpfile, *cmdout;
-       char *basename = talloc_asprintf(m, "%s/example.c", m->dir);
        int fd;
+       char *flags;
 
-       tmpfile = temp_file(m, ".c", basename);
+       tmpfile = temp_file(m, ".c", "example.c");
 
        fd = open(tmpfile, O_WRONLY | O_CREAT | O_EXCL, 0600);
        if (fd < 0)
                err(1, "Creating temporary file %s", tmpfile);
 
-       contents = talloc_asprintf(tmpfile,
-                                  "#include <ccan/%s/%s.h>\n"
-                                  "int main(void)\n"
-                                  "{\n"
-                                  "    return 0;\n"
-                                  "}\n",
-                                  m->basename, m->basename);
+       contents = tal_fmt(tmpfile,
+                          "#include <ccan/%s/%s.h>\n"
+                          "int main(void)\n"
+                          "{\n"
+                          "    return 0;\n"
+                          "}\n",
+                          m->modname, m->basename);
        if (write(fd, contents, strlen(contents)) != strlen(contents))
                err(1, "Failure writing to temporary file %s", tmpfile);
        close(fd);
 
+       flags = cflags_list(m);
+
        if (compile_and_link(score, tmpfile, ccan_dir, obj_list(m),
-                            compiler, cflags, lib_list(m),
+                            compiler, flags, lib_list(m),
                             temp_file(m, "", tmpfile),
                             &cmdout)) {
                score->pass = true;