From: Joel Rosdahl Date: Wed, 24 Jul 2019 09:16:14 +0000 (+0200) Subject: Add x_ prefix to basename and dirname X-Git-Tag: v4.0~853 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fc49e169b480c43dbe9598a64bb89b6743c3bc7e;p=thirdparty%2Fccache.git Add x_ prefix to basename and dirname This avoids warnings about differing function prototypes when compiling as C++ code. --- diff --git a/src/ccache.c b/src/ccache.c index 6df8d45c6..ee8d430f8 100644 --- a/src/ccache.c +++ b/src/ccache.c @@ -526,7 +526,7 @@ init_hash_debug(struct hash *hash, const char *obj_path, char type, static enum guessed_compiler guess_compiler(const char *path) { - char *name = basename(path); + char *name = x_basename(path); enum guessed_compiler result = GUESSED_UNKNOWN; if (strstr(name, "clang")) { result = GUESSED_CLANG; @@ -755,17 +755,17 @@ make_relative_path(char *path) #endif // x_realpath only works for existing paths, so if path doesn't exist, try - // dirname(path) and assemble the path afterwards. We only bother to try + // x_dirname(path) and assemble the path afterwards. We only bother to try // canonicalizing one of these two paths since a compiler path argument - // typically only makes sense if path or dirname(path) exists. + // typically only makes sense if path or x_dirname(path) exists. char *path_suffix = NULL; struct stat st; if (stat(path, &st) != 0) { // path doesn't exist. - char *dir = dirname(path); + char *dir = x_dirname(path); // find the nearest existing directory in path while (stat(dir, &st) != 0) { - char *parent_dir = dirname(dir); + char *parent_dir = x_dirname(dir); free(dir); dir = parent_dir; } @@ -1427,7 +1427,7 @@ to_cache(struct args *args, struct hash *depend_mode_hash) // be done almost anywhere, but we might as well do it near the end as we // save the stat call if we exit early. { - char *first_level_dir = dirname(stats_file); + char *first_level_dir = x_dirname(stats_file); if (create_cachedirtag(first_level_dir) != 0) { cc_log("Failed to create %s/CACHEDIR.TAG (%s)\n", first_level_dir, strerror(errno)); @@ -1475,7 +1475,7 @@ get_result_name_from_cpp(struct args *args, struct hash *hash) // Limit the basename to 10 characters in order to cope with filesystem with // small maximum filename length limits. - char *input_base = basename(input_file); + char *input_base = x_basename(input_file); char *tmp = strchr(input_base, '.'); if (tmp) { *tmp = 0; @@ -1679,7 +1679,7 @@ hash_common_info(struct args *args, struct hash *hash) // Also hash the compiler name as some compilers use hard links and behave // differently depending on the real name. hash_delimiter(hash, "cc_name"); - char *base = basename(args->argv[0]); + char *base = x_basename(args->argv[0]); hash_string(hash, base); free(base); @@ -1735,12 +1735,12 @@ hash_common_info(struct args *args, struct hash *hash) // to include the target filename in the hash to avoid handing out an // object file with an incorrect .dwo link. hash_delimiter(hash, "filename"); - hash_string(hash, basename(output_obj)); + hash_string(hash, x_basename(output_obj)); } // Possibly hash the coverage data file path. if (generating_coverage && profile_arcs) { - char *dir = dirname(output_obj); + char *dir = x_dirname(output_obj); if (profile_dir) { dir = x_strdup(profile_dir); } else { @@ -1749,7 +1749,7 @@ hash_common_info(struct args *args, struct hash *hash) dir = real_dir; } if (dir) { - char *base_name = basename(output_obj); + char *base_name = x_basename(output_obj); char *p = remove_extension(base_name); free(base_name); char *gcda_path = format("%s/%s.gcda", dir, p); @@ -2193,7 +2193,7 @@ static void find_compiler(char **argv) { // We might be being invoked like "ccache gcc -c foo.c". - char *base = basename(argv[0]); + char *base = x_basename(argv[0]); if (same_executable_name(base, MYNAME)) { args_remove_first(orig_args); free(base); @@ -2201,7 +2201,7 @@ find_compiler(char **argv) // A full path was given. return; } - base = basename(orig_args->argv[0]); + base = x_basename(orig_args->argv[0]); } // Support user override of the compiler. @@ -2225,7 +2225,7 @@ bool is_precompiled_header(const char *path) { const char *ext = get_extension(path); - char *dir = dirname(path); + char *dir = x_dirname(path); const char *dir_ext = get_extension(dir); bool result = str_eq(ext, ".gch") @@ -3215,7 +3215,7 @@ cc_process_args(struct args *args, struct args **preprocessor_args, output_obj = format("%s.gch", input_file); } else { char extension = found_S_opt ? 's' : 'o'; - output_obj = basename(input_file); + output_obj = x_basename(input_file); char *p = strrchr(output_obj, '.'); if (!p) { reformat(&output_obj, "%s.%c", output_obj, extension); @@ -3253,7 +3253,7 @@ cc_process_args(struct args *args, struct args **preprocessor_args, goto out; } - char *output_dir = dirname(output_obj); + char *output_dir = x_dirname(output_obj); if (stat(output_dir, &st) != 0 || !S_ISDIR(st.st_mode)) { cc_log("Directory does not exist: %s", output_dir); stats_update(STATS_BADOUTPUTFILE); @@ -4059,7 +4059,7 @@ int ccache_main(int argc, char *argv[]) { // Check if we are being invoked as "ccache". - char *program_name = basename(argv[0]); + char *program_name = x_basename(argv[0]); if (same_executable_name(program_name, MYNAME)) { if (argc < 2) { fputs(USAGE_TEXT, stderr); diff --git a/src/ccache.h b/src/ccache.h index 61c4d5166..cac27d49f 100644 --- a/src/ccache.h +++ b/src/ccache.h @@ -175,8 +175,8 @@ int x_fstat(int fd, struct stat *buf); int x_lstat(const char *pathname, struct stat *buf); int x_stat(const char *pathname, struct stat *buf); void traverse(const char *dir, void (*fn)(const char *, struct stat *)); -char *basename(const char *path); -char *dirname(const char *path); +char *x_basename(const char *path); +char *x_dirname(const char *path); const char *get_extension(const char *path); char *remove_extension(const char *path); size_t file_size(struct stat *st); diff --git a/src/cleanup.c b/src/cleanup.c index 71e001a60..8eca68cc3 100644 --- a/src/cleanup.c +++ b/src/cleanup.c @@ -1,5 +1,5 @@ // Copyright (C) 2002-2006 Andrew Tridgell -// Copyright (C) 2009-2018 Joel Rosdahl and other contributors +// Copyright (C) 2009-2019 Joel Rosdahl and other contributors // // See doc/AUTHORS.adoc for a complete list of contributors. // @@ -55,7 +55,7 @@ traverse_fn(const char *fname, struct stat *st) return; } - char *p = basename(fname); + char *p = x_basename(fname); if (str_eq(p, "stats")) { goto out; } @@ -228,7 +228,7 @@ static void wipe_fn(const char *fname, struct stat *st) return; } - char *p = basename(fname); + char *p = x_basename(fname); if (str_eq(p, "stats")) { free(p); return; diff --git a/src/compress.c b/src/compress.c index 4315bc146..1d815a862 100644 --- a/src/compress.c +++ b/src/compress.c @@ -63,7 +63,7 @@ measure_fn(const char *fname, struct stat *st) return; } - char *p = basename(fname); + char *p = x_basename(fname); if (str_eq(p, "stats")) { goto out; } diff --git a/src/execute.c b/src/execute.c index b8a9cf111..d822e139c 100644 --- a/src/execute.c +++ b/src/execute.c @@ -338,7 +338,7 @@ find_executable_in_path(const char *name, const char *exclude_name, char *path) if (S_ISLNK(st1.st_mode)) { char *buf = x_realpath(fname); if (buf) { - char *p = basename(buf); + char *p = x_basename(buf); if (str_eq(p, exclude_name)) { // It's a link to "ccache"! free(p); diff --git a/src/stats.c b/src/stats.c index 4d49c7ff8..4cf505d28 100644 --- a/src/stats.c +++ b/src/stats.c @@ -486,7 +486,7 @@ stats_flush_to_file(const char *sfile, struct counters *updates) } } - char *subdir = dirname(sfile); + char *subdir = x_dirname(sfile); bool need_cleanup = false; if (conf->max_files != 0 diff --git a/src/util.c b/src/util.c index 2e5d5d41e..da3b1f33e 100644 --- a/src/util.c +++ b/src/util.c @@ -518,7 +518,7 @@ int create_parent_dirs(const char *path) { int res; - char *parent = dirname(path); + char *parent = x_dirname(path); struct stat st; if (stat(parent, &st) == 0) { if (S_ISDIR(st.st_mode)) { @@ -900,7 +900,7 @@ traverse(const char *dir, void (*fn)(const char *, struct stat *)) // Return the base name of a file - caller frees. char * -basename(const char *path) +x_basename(const char *path) { char *p = strrchr(path, '/'); if (p) { @@ -918,7 +918,7 @@ basename(const char *path) // Return the dir name of a file - caller frees. char * -dirname(const char *path) +x_dirname(const char *path) { char *s = x_strdup(path); char *p = strrchr(s, '/'); @@ -1247,7 +1247,7 @@ create_tmp_fd(char **fname) if (fd == -1 && errno == ENOENT) { if (create_parent_dirs(*fname) != 0) { fatal("Failed to create directory %s: %s", - dirname(*fname), strerror(errno)); + x_dirname(*fname), strerror(errno)); } reformat(&template, "%s.%s", *fname, tmp_string()); fd = mkstemp(template); diff --git a/unittest/test_util.c b/unittest/test_util.c index cab5fa077..dabbd614a 100644 --- a/unittest/test_util.c +++ b/unittest/test_util.c @@ -23,23 +23,23 @@ TEST_SUITE(util) -TEST(basename) +TEST(x_basename) { - CHECK_STR_EQ_FREE2("foo.c", basename("foo.c")); - CHECK_STR_EQ_FREE2("foo.c", basename("dir1/dir2/foo.c")); - CHECK_STR_EQ_FREE2("foo.c", basename("/dir/foo.c")); - CHECK_STR_EQ_FREE2("", basename("dir1/dir2/")); + CHECK_STR_EQ_FREE2("foo.c", x_basename("foo.c")); + CHECK_STR_EQ_FREE2("foo.c", x_basename("dir1/dir2/foo.c")); + CHECK_STR_EQ_FREE2("foo.c", x_basename("/dir/foo.c")); + CHECK_STR_EQ_FREE2("", x_basename("dir1/dir2/")); } -TEST(dirname) +TEST(x_dirname) { - CHECK_STR_EQ_FREE2(".", dirname("foo.c")); - CHECK_STR_EQ_FREE2(".", dirname("")); - CHECK_STR_EQ_FREE2("/", dirname("/")); - CHECK_STR_EQ_FREE2("/", dirname("/foo.c")); - CHECK_STR_EQ_FREE2("dir1/dir2", dirname("dir1/dir2/foo.c")); - CHECK_STR_EQ_FREE2("/dir", dirname("/dir/foo.c")); - CHECK_STR_EQ_FREE2("dir1/dir2", dirname("dir1/dir2/")); + CHECK_STR_EQ_FREE2(".", x_dirname("foo.c")); + CHECK_STR_EQ_FREE2(".", x_dirname("")); + CHECK_STR_EQ_FREE2("/", x_dirname("/")); + CHECK_STR_EQ_FREE2("/", x_dirname("/foo.c")); + CHECK_STR_EQ_FREE2("dir1/dir2", x_dirname("dir1/dir2/foo.c")); + CHECK_STR_EQ_FREE2("/dir", x_dirname("/dir/foo.c")); + CHECK_STR_EQ_FREE2("dir1/dir2", x_dirname("dir1/dir2/")); } TEST(common_dir_prefix_length)