From: Rusty Russell Date: Mon, 3 Dec 2012 11:36:40 +0000 (+1030) Subject: tools: use tal/path instead of opencoding most paths. X-Git-Url: http://git.ozlabs.org/?p=ccan;a=commitdiff_plain;h=49a1a4366fdcea418582a97cb0bf700373b89868 tools: use tal/path instead of opencoding most paths. Signed-off-by: Rusty Russell --- diff --git a/tools/ccanlint/ccanlint.c b/tools/ccanlint/ccanlint.c index 83549cc9..196f75f4 100644 --- a/tools/ccanlint/ccanlint.c +++ b/tools/ccanlint/ccanlint.c @@ -647,7 +647,7 @@ int main(int argc, char *argv[]) strmap_iterate(&tests, add_to_all, &all); /* This links back to the module's test dir. */ - testlink = tal_fmt(NULL, "%s/test", temp_dir()); + testlink = path_join(NULL, temp_dir(), "test"); /* Defaults to pwd. */ if (argc == 1) { @@ -656,12 +656,8 @@ int main(int argc, char *argv[]) } for (i = 1; i < argc; i++) { - dir = argv[i]; - - if (dir[0] != '/') - dir = tal_fmt(NULL, "%s/%s", base_dir, dir); - while (strends(dir, "/")) - dir[strlen(dir)-1] = '\0'; + dir = path_simplify(NULL, + take(path_join(NULL, base_dir, argv[i]))); got_dir: /* We assume there's a ccan/ in there somewhere... */ @@ -685,7 +681,7 @@ int main(int argc, char *argv[]) /* Create a symlink from temp dir back to src dir's * test directory. */ unlink(testlink); - if (symlink(tal_fmt(m, "%s/test", dir), testlink) != 0) + if (symlink(path_join(m, dir, "test"), testlink) != 0) err(1, "Creating test symlink in %s", temp_dir()); if (!run_tests(&all, summary, m, prefix)) diff --git a/tools/ccanlint/tests/depends_exist.c b/tools/ccanlint/tests/depends_exist.c index c63d2d2c..39015fd5 100644 --- a/tools/ccanlint/tests/depends_exist.c +++ b/tools/ccanlint/tests/depends_exist.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -30,7 +31,7 @@ static bool add_dep(struct manifest *m, { struct stat st; struct manifest *subm; - char *dir = tal_fmt(m, "%s/%s", ccan_dir, dep); + char *dir = path_join(m, ccan_dir, dep); /* FIXME: get_manifest has a tendency to exit. */ if (stat(dir, &st) != 0) { diff --git a/tools/ccanlint/tests/license_exists.c b/tools/ccanlint/tests/license_exists.c index af1bc52a..85ff7985 100644 --- a/tools/ccanlint/tests/license_exists.c +++ b/tools/ccanlint/tests/license_exists.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -73,7 +74,7 @@ static void handle_license_link(struct manifest *m, struct score *score) { struct doc_section *d = find_license_tag(m); const char *prefix = link_prefix(m); - const char *link = tal_fmt(m, "%s/LICENSE", m->dir); + const char *link = path_join(m, m->dir, "LICENSE"); const char *ldest = expected_link(score, prefix, m->license); char *q; @@ -97,7 +98,7 @@ static void check_has_license(struct manifest *m, { char buf[PATH_MAX]; ssize_t len; - char *license = tal_fmt(m, "%s/LICENSE", m->dir); + char *license = path_join(m, m->dir, "LICENSE"); const char *expected; struct doc_section *d; const char *prefix = link_prefix(m); diff --git a/tools/ccanlint/tests/objects_build.c b/tools/ccanlint/tests/objects_build.c index b86c53be..21a02773 100644 --- a/tools/ccanlint/tests/objects_build.c +++ b/tools/ccanlint/tests/objects_build.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -35,7 +36,7 @@ void build_objects(struct manifest *m, list_for_each(&m->c_files, i, list) { char *output; - char *fullfile = tal_fmt(m, "%s/%s", m->dir, i->name); + char *fullfile = path_join(m, m->dir, i->name); i->compiled[ctype] = temp_file(m, "", fullfile); if (!compile_object(score, fullfile, ccan_dir, compiler, flags, diff --git a/tools/ccanlint/tests/tests_exist.c b/tools/ccanlint/tests/tests_exist.c index f339b6b9..69e01df6 100644 --- a/tools/ccanlint/tests/tests_exist.c +++ b/tools/ccanlint/tests/tests_exist.c @@ -1,5 +1,6 @@ #include #include +#include #include #include #include @@ -106,7 +107,7 @@ static void check_tests_exist(struct manifest *m, unsigned int *timeleft, struct score *score) { struct stat st; - char *test_dir = tal_fmt(m, "%s/test", m->dir); + char *test_dir = path_join(m, m->dir, "test"); if (lstat(test_dir, &st) != 0) { score->error = tal_strdup(score, "No test directory"); diff --git a/tools/depends.c b/tools/depends.c index 664b3972..4f56d14e 100644 --- a/tools/depends.c +++ b/tools/depends.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include "tools.h" @@ -125,7 +126,7 @@ static char **get_one_safe_deps(const void *ctx, unsigned int i, n; bool correct_style = false; - fname = tal_fmt(ctx, "%s/_info", dir); + fname = path_join(ctx, dir, "_info"); raw = tal_grab_file(fname, fname, NULL); if (!raw) errx(1, "Could not open %s", fname); @@ -206,7 +207,7 @@ get_all_deps(const void *ctx, const char *dir, const char *style, if (!strstarts(deps[i], "ccan/")) continue; - subdir = tal_fmt(ctx, "%s/%s", find_ccan_dir(dir), deps[i]); + subdir = path_join(ctx, find_ccan_dir(dir), deps[i]); newdeps = get_one(ctx, subdir, "depends", get_info); /* Should be short, so brute-force out dups. */ @@ -279,8 +280,7 @@ char **get_libs(const void *ctx, const char *dir, const char *style, if (!strstarts(deps[i], "ccan/")) continue; - subdir = tal_fmt(ctx, "%s/%s", - find_ccan_dir(dir), deps[i]); + subdir = path_join(ctx, find_ccan_dir(dir), deps[i]); newlibs = get_one_libs(ctx, subdir, get_info); newlen = tal_count(newlibs); diff --git a/tools/manifest.c b/tools/manifest.c index 612a8a6d..b94016e1 100644 --- a/tools/manifest.c +++ b/tools/manifest.c @@ -76,7 +76,7 @@ struct ccan_file *new_ccan_file(const void *ctx, const char *dir, char *name) for (i = 0; i < ARRAY_SIZE(f->compiled); i++) f->compiled[i] = NULL; f->name = tal_steal(f, name); - f->fullname = tal_fmt(f, "%s/%s", dir, f->name); + f->fullname = path_join(f, dir, f->name); f->contents = NULL; f->simplified = NULL; return f; diff --git a/tools/namespacize.c b/tools/namespacize.c index f1a9374e..ac413545 100644 --- a/tools/namespacize.c +++ b/tools/namespacize.c @@ -256,7 +256,8 @@ static void analyze_headers(const char *dir, struct replace **repl) char *hdr, *contents; /* Get hold of header, assume that's it. */ - hdr = tal_fmt(dir, "%s/%s.h", dir, path_basename(dir, dir)); + hdr = tal_fmt(dir, "%s.h", + path_join(NULL, dir, take(path_basename(NULL, dir)))); contents = tal_grab_file(dir, hdr, NULL); if (!contents) @@ -275,7 +276,7 @@ static void analyze_headers(const char *dir, struct replace **repl) static void write_replacement_file(const char *dir, struct replace **repl) { - char *replname = tal_fmt(dir, "%s/.namespacize", dir); + char *replname = path_join(dir, dir, ".namespacize"); int fd; struct replace *r; @@ -415,10 +416,7 @@ static void convert_dir(const char *dir) struct adjusted *adj = NULL; /* Remove any ugly trailing slashes. */ - name = tal_strdup(NULL, dir); - while (strends(name, "/")) - name[strlen(name)-1] = '\0'; - + name = path_canon(NULL, dir); analyze_headers(name, &replace); write_replacement_file(name, &replace); setup_adjust_files(name, replace, &adj); @@ -430,7 +428,7 @@ static void convert_dir(const char *dir) static struct replace *read_replacement_file(const char *depdir) { struct replace *repl = NULL; - char *replname = tal_fmt(depdir, "%s/.namespacize", depdir); + char *replname = path_join(depdir, depdir, ".namespacize"); char *file, **line; file = tal_grab_file(replname, replname, NULL); @@ -459,7 +457,7 @@ static void adjust_dir(const char *dir) struct adjusted *adj = NULL; struct replace *repl; - depdir = tal_fmt(parent, "%s/%s", parent, *deps); + depdir = path_join(parent, parent, *deps); repl = read_replacement_file(depdir); if (repl) { verbose("%s has been namespacized\n", depdir); @@ -488,7 +486,7 @@ static void adjust_dependents(const char *dir) if (path_basename(*file, *file)[0] == '.') continue; - info = tal_fmt(*file, "%s/_info", *file); + info = path_join(*file, *file, "_info"); if (access(info, R_OK) != 0) continue; diff --git a/tools/read_config_header.c b/tools/read_config_header.c index bd268722..732ab4ab 100644 --- a/tools/read_config_header.c +++ b/tools/read_config_header.c @@ -1,5 +1,6 @@ #include #include +#include #include "read_config_header.h" #include "tools.h" #include @@ -90,7 +91,7 @@ char *read_config_header(const char *ccan_dir, const char **compiler, const char **cflags, bool verbose) { - char *fname = tal_fmt(NULL, "%s/config.h", ccan_dir); + char *fname = path_join(NULL, ccan_dir, "config.h"); char **lines; unsigned int i; char *config_header;