diff --git a/abspath.c b/abspath.c index 9a81c5525b..d032f5dce5 100644 --- a/abspath.c +++ b/abspath.c @@ -1,4 +1,6 @@ -#include "cache.h" +#include "git-compat-util.h" +#include "abspath.h" +#include "strbuf.h" /* * Do not use this for inspecting *tracked* content. When path is a diff --git a/abspath.h b/abspath.h new file mode 100644 index 0000000000..7cd3de5e9d --- /dev/null +++ b/abspath.h @@ -0,0 +1,33 @@ +#ifndef ABSPATH_H +#define ABSPATH_H + +int is_directory(const char *); +char *strbuf_realpath(struct strbuf *resolved, const char *path, + int die_on_error); +char *strbuf_realpath_forgiving(struct strbuf *resolved, const char *path, + int die_on_error); +char *real_pathdup(const char *path, int die_on_error); +const char *absolute_path(const char *path); +char *absolute_pathdup(const char *path); + +/* + * Concatenate "prefix" (if len is non-zero) and "path", with no + * connecting characters (so "prefix" should end with a "/"). + * Unlike prefix_path, this should be used if the named file does + * not have to interact with index entry; i.e. name of a random file + * on the filesystem. + * + * The return value is always a newly allocated string (even if the + * prefix was empty). + */ +char *prefix_filename(const char *prefix, const char *path); + +/* Likewise, but path=="-" always yields "-" */ +char *prefix_filename_except_for_dash(const char *prefix, const char *path); + +static inline int is_absolute_path(const char *path) +{ + return is_dir_sep(path[0]) || has_dos_drive_prefix(path); +} + +#endif /* ABSPATH_H */ diff --git a/apply.c b/apply.c index e0bdd43a68..e5e11b8579 100644 --- a/apply.c +++ b/apply.c @@ -8,6 +8,7 @@ */ #include "cache.h" +#include "abspath.h" #include "alloc.h" #include "config.h" #include "object-store.h" diff --git a/archive.c b/archive.c index 2c3da1cff3..c3c45a5ebe 100644 --- a/archive.c +++ b/archive.c @@ -1,4 +1,5 @@ #include "git-compat-util.h" +#include "abspath.h" #include "alloc.h" #include "config.h" #include "gettext.h" diff --git a/builtin/am.c b/builtin/am.c index cc1fdf4f75..14347ecf9a 100644 --- a/builtin/am.c +++ b/builtin/am.c @@ -5,6 +5,7 @@ */ #define USE_THE_INDEX_VARIABLE #include "cache.h" +#include "abspath.h" #include "config.h" #include "builtin.h" #include "exec-cmd.h" diff --git a/builtin/bugreport.c b/builtin/bugreport.c index b61cfa9464..b5dfad4e12 100644 --- a/builtin/bugreport.c +++ b/builtin/bugreport.c @@ -1,4 +1,5 @@ #include "builtin.h" +#include "abspath.h" #include "gettext.h" #include "parse-options.h" #include "strbuf.h" diff --git a/builtin/bundle.c b/builtin/bundle.c index de3898ffa4..9e2aecadf7 100644 --- a/builtin/bundle.c +++ b/builtin/bundle.c @@ -1,4 +1,5 @@ #include "builtin.h" +#include "abspath.h" #include "gettext.h" #include "strvec.h" #include "parse-options.h" diff --git a/builtin/clean.c b/builtin/clean.c index 46c51029ab..fdcf62c5df 100644 --- a/builtin/clean.c +++ b/builtin/clean.c @@ -8,6 +8,7 @@ #define USE_THE_INDEX_VARIABLE #include "builtin.h" +#include "abspath.h" #include "cache.h" #include "config.h" #include "dir.h" diff --git a/builtin/clone.c b/builtin/clone.c index d605fcafa0..b94324ea02 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -10,6 +10,7 @@ #define USE_THE_INDEX_VARIABLE #include "builtin.h" +#include "abspath.h" #include "config.h" #include "gettext.h" #include "hex.h" diff --git a/builtin/config.c b/builtin/config.c index 33b17b40b4..42e6b8d348 100644 --- a/builtin/config.c +++ b/builtin/config.c @@ -1,4 +1,5 @@ #include "builtin.h" +#include "abspath.h" #include "alloc.h" #include "config.h" #include "color.h" diff --git a/builtin/credential-cache--daemon.c b/builtin/credential-cache--daemon.c index 0f00ba4d74..62c09a271d 100644 --- a/builtin/credential-cache--daemon.c +++ b/builtin/credential-cache--daemon.c @@ -1,4 +1,5 @@ #include "builtin.h" +#include "abspath.h" #include "alloc.h" #include "gettext.h" #include "parse-options.h" diff --git a/builtin/diagnose.c b/builtin/diagnose.c index 5b12d1fb96..0f8b64994c 100644 --- a/builtin/diagnose.c +++ b/builtin/diagnose.c @@ -1,4 +1,5 @@ #include "builtin.h" +#include "abspath.h" #include "gettext.h" #include "parse-options.h" #include "diagnose.h" diff --git a/builtin/difftool.c b/builtin/difftool.c index f7380dd1cc..ed06db1208 100644 --- a/builtin/difftool.c +++ b/builtin/difftool.c @@ -13,6 +13,7 @@ */ #define USE_THE_INDEX_VARIABLE #include "cache.h" +#include "abspath.h" #include "config.h" #include "builtin.h" #include "run-command.h" diff --git a/builtin/fast-import.c b/builtin/fast-import.c index f3635c7aef..7307c4657f 100644 --- a/builtin/fast-import.c +++ b/builtin/fast-import.c @@ -1,4 +1,5 @@ #include "builtin.h" +#include "abspath.h" #include "cache.h" #include "gettext.h" #include "hex.h" diff --git a/builtin/fsmonitor--daemon.c b/builtin/fsmonitor--daemon.c index 215e3813d7..4efb141734 100644 --- a/builtin/fsmonitor--daemon.c +++ b/builtin/fsmonitor--daemon.c @@ -1,4 +1,5 @@ #include "builtin.h" +#include "abspath.h" #include "alloc.h" #include "config.h" #include "gettext.h" diff --git a/builtin/gc.c b/builtin/gc.c index 32cabad7cf..ef063fc828 100644 --- a/builtin/gc.c +++ b/builtin/gc.c @@ -11,6 +11,7 @@ */ #include "builtin.h" +#include "abspath.h" #include "hex.h" #include "repository.h" #include "config.h" diff --git a/builtin/hash-object.c b/builtin/hash-object.c index f233eda759..7651a7a5f5 100644 --- a/builtin/hash-object.c +++ b/builtin/hash-object.c @@ -5,6 +5,7 @@ * Copyright (C) Junio C Hamano, 2005 */ #include "builtin.h" +#include "abspath.h" #include "config.h" #include "gettext.h" #include "hex.h" diff --git a/builtin/init-db.c b/builtin/init-db.c index e182bc7e83..6f724f694f 100644 --- a/builtin/init-db.c +++ b/builtin/init-db.c @@ -4,6 +4,7 @@ * Copyright (C) Linus Torvalds, 2005 */ #include "cache.h" +#include "abspath.h" #include "config.h" #include "gettext.h" #include "refs.h" diff --git a/builtin/log.c b/builtin/log.c index e702cf126e..b7333b34cc 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -5,6 +5,7 @@ * 2006 Junio Hamano */ #include "git-compat-util.h" +#include "abspath.h" #include "alloc.h" #include "config.h" #include "gettext.h" diff --git a/builtin/mailinfo.c b/builtin/mailinfo.c index e8bb011cfb..e14f7c0abc 100644 --- a/builtin/mailinfo.c +++ b/builtin/mailinfo.c @@ -3,6 +3,7 @@ * email to figure out authorship and subject */ #include "cache.h" +#include "abspath.h" #include "builtin.h" #include "gettext.h" #include "utf8.h" diff --git a/builtin/merge-file.c b/builtin/merge-file.c index ae45f523b9..c0096ee081 100644 --- a/builtin/merge-file.c +++ b/builtin/merge-file.c @@ -1,4 +1,5 @@ #include "builtin.h" +#include "abspath.h" #include "cache.h" #include "config.h" #include "gettext.h" diff --git a/builtin/merge.c b/builtin/merge.c index 2c9da4b23d..38243e55c5 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -8,6 +8,7 @@ #define USE_THE_INDEX_VARIABLE #include "cache.h" +#include "abspath.h" #include "alloc.h" #include "config.h" #include "environment.h" diff --git a/builtin/multi-pack-index.c b/builtin/multi-pack-index.c index e6757a4447..579bc2cac0 100644 --- a/builtin/multi-pack-index.c +++ b/builtin/multi-pack-index.c @@ -1,4 +1,5 @@ #include "builtin.h" +#include "abspath.h" #include "cache.h" #include "config.h" #include "gettext.h" diff --git a/builtin/mv.c b/builtin/mv.c index c02dddb72b..0a49bf21b0 100644 --- a/builtin/mv.c +++ b/builtin/mv.c @@ -5,6 +5,7 @@ */ #define USE_THE_INDEX_VARIABLE #include "builtin.h" +#include "abspath.h" #include "alloc.h" #include "config.h" #include "gettext.h" diff --git a/builtin/rebase.c b/builtin/rebase.c index a2c68b8ff7..a3f8be8888 100644 --- a/builtin/rebase.c +++ b/builtin/rebase.c @@ -6,6 +6,7 @@ #define USE_THE_INDEX_VARIABLE #include "builtin.h" +#include "abspath.h" #include "gettext.h" #include "hex.h" #include "run-command.h" diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c index 006565f851..aec5ee930b 100644 --- a/builtin/receive-pack.c +++ b/builtin/receive-pack.c @@ -1,4 +1,5 @@ #include "builtin.h" +#include "abspath.h" #include "repository.h" #include "config.h" #include "gettext.h" diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c index 5a932a861b..a4c0878bc9 100644 --- a/builtin/rev-parse.c +++ b/builtin/rev-parse.c @@ -5,6 +5,7 @@ */ #define USE_THE_INDEX_VARIABLE #include "cache.h" +#include "abspath.h" #include "alloc.h" #include "config.h" #include "commit.h" diff --git a/builtin/stash.c b/builtin/stash.c index 65817d0b76..52fa892f7e 100644 --- a/builtin/stash.c +++ b/builtin/stash.c @@ -1,5 +1,6 @@ #define USE_THE_INDEX_VARIABLE #include "builtin.h" +#include "abspath.h" #include "config.h" #include "gettext.h" #include "hex.h" diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c index a4bdd44daa..ff1fd8c87a 100644 --- a/builtin/submodule--helper.c +++ b/builtin/submodule--helper.c @@ -1,5 +1,6 @@ #define USE_THE_INDEX_VARIABLE #include "builtin.h" +#include "abspath.h" #include "alloc.h" #include "gettext.h" #include "hex.h" diff --git a/builtin/worktree.c b/builtin/worktree.c index ed89b7e972..ed614ffddc 100644 --- a/builtin/worktree.c +++ b/builtin/worktree.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "abspath.h" #include "checkout.h" #include "config.h" #include "builtin.h" diff --git a/cache.h b/cache.h index e122de6f93..260203c7a6 100644 --- a/cache.h +++ b/cache.h @@ -598,21 +598,6 @@ const char *setup_git_directory(void); char *prefix_path(const char *prefix, int len, const char *path); char *prefix_path_gently(const char *prefix, int len, int *remaining, const char *path); -/* - * Concatenate "prefix" (if len is non-zero) and "path", with no - * connecting characters (so "prefix" should end with a "/"). - * Unlike prefix_path, this should be used if the named file does - * not have to interact with index entry; i.e. name of a random file - * on the filesystem. - * - * The return value is always a newly allocated string (even if the - * prefix was empty). - */ -char *prefix_filename(const char *prefix, const char *path); - -/* Likewise, but path=="-" always yields "-" */ -char *prefix_filename_except_for_dash(const char *prefix, const char *path); - int check_filename(const char *prefix, const char *name); void verify_filename(const char *prefix, const char *name, @@ -1160,18 +1145,6 @@ char *interpolate_path(const char *path, int real_home); /* NEEDSWORK: remove this synonym once in-flight topics have migrated */ #define expand_user_path interpolate_path const char *enter_repo(const char *path, int strict); -static inline int is_absolute_path(const char *path) -{ - return is_dir_sep(path[0]) || has_dos_drive_prefix(path); -} -int is_directory(const char *); -char *strbuf_realpath(struct strbuf *resolved, const char *path, - int die_on_error); -char *strbuf_realpath_forgiving(struct strbuf *resolved, const char *path, - int die_on_error); -char *real_pathdup(const char *path, int die_on_error); -const char *absolute_path(const char *path); -char *absolute_pathdup(const char *path); const char *remove_leading_path(const char *in, const char *prefix); const char *relative_path(const char *in, const char *prefix, struct strbuf *sb); int normalize_path_copy_len(char *dst, const char *src, int *prefix_len); diff --git a/chdir-notify.c b/chdir-notify.c index 5f7f2c2ac2..929ec01b3a 100644 --- a/chdir-notify.c +++ b/chdir-notify.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "abspath.h" #include "chdir-notify.h" #include "list.h" #include "strbuf.h" diff --git a/compat/disk.h b/compat/disk.h index a04a8d294a..6c979c27d8 100644 --- a/compat/disk.h +++ b/compat/disk.h @@ -2,6 +2,7 @@ #define COMPAT_DISK_H #include "git-compat-util.h" +#include "abspath.h" #include "gettext.h" static int get_disk_info(struct strbuf *out) diff --git a/compat/mingw.c b/compat/mingw.c index a9e5570288..cbcd03aea9 100644 --- a/compat/mingw.c +++ b/compat/mingw.c @@ -7,6 +7,7 @@ #include "../strbuf.h" #include "../run-command.h" #include "../cache.h" +#include "../abspath.h" #include "../alloc.h" #include "win32/lazyload.h" #include "../config.h" diff --git a/compat/simple-ipc/ipc-win32.c b/compat/simple-ipc/ipc-win32.c index f011e5cead..997f614434 100644 --- a/compat/simple-ipc/ipc-win32.c +++ b/compat/simple-ipc/ipc-win32.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "abspath.h" #include "gettext.h" #include "simple-ipc.h" #include "strbuf.h" diff --git a/config.c b/config.c index f30a6d8e68..6815919ec3 100644 --- a/config.c +++ b/config.c @@ -6,6 +6,7 @@ * */ #include "cache.h" +#include "abspath.h" #include "alloc.h" #include "date.h" #include "branch.h" diff --git a/credential.c b/credential.c index 5244f3c12c..e6417bf880 100644 --- a/credential.c +++ b/credential.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "abspath.h" #include "config.h" #include "credential.h" #include "gettext.h" diff --git a/daemon.c b/daemon.c index 8908e7f8d2..bb795ca3ca 100644 --- a/daemon.c +++ b/daemon.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "abspath.h" #include "alloc.h" #include "config.h" #include "pkt-line.h" diff --git a/diff-no-index.c b/diff-no-index.c index 287a113bad..934a24bee5 100644 --- a/diff-no-index.c +++ b/diff-no-index.c @@ -5,6 +5,7 @@ */ #include "cache.h" +#include "abspath.h" #include "color.h" #include "commit.h" #include "blob.h" diff --git a/diff.c b/diff.c index 00746f2f86..1b0be99c06 100644 --- a/diff.c +++ b/diff.c @@ -2,6 +2,7 @@ * Copyright (C) 2005 Junio C Hamano */ #include "cache.h" +#include "abspath.h" #include "alloc.h" #include "config.h" #include "gettext.h" diff --git a/dir.c b/dir.c index 46f1bb6e5b..c72481c60e 100644 --- a/dir.c +++ b/dir.c @@ -6,6 +6,7 @@ * Junio Hamano, 2005-2006 */ #include "git-compat-util.h" +#include "abspath.h" #include "alloc.h" #include "config.h" #include "dir.h" diff --git a/editor.c b/editor.c index 58e790548d..2d3e6be64e 100644 --- a/editor.c +++ b/editor.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "abspath.h" #include "config.h" #include "gettext.h" #include "strbuf.h" diff --git a/environment.c b/environment.c index 82a1fc17d0..c69571f0b2 100644 --- a/environment.c +++ b/environment.c @@ -8,6 +8,7 @@ * are. */ #include "cache.h" +#include "abspath.h" #include "branch.h" #include "environment.h" #include "gettext.h" diff --git a/exec-cmd.c b/exec-cmd.c index 282d95af08..042d9247a5 100644 --- a/exec-cmd.c +++ b/exec-cmd.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "abspath.h" #include "exec-cmd.h" #include "gettext.h" #include "quote.h" diff --git a/gettext.c b/gettext.c index f139008d0a..3e7b3baabc 100644 --- a/gettext.c +++ b/gettext.c @@ -3,6 +3,7 @@ */ #include "cache.h" +#include "abspath.h" #include "exec-cmd.h" #include "gettext.h" #include "strbuf.h" diff --git a/lockfile.c b/lockfile.c index ab6490a391..673c21d17a 100644 --- a/lockfile.c +++ b/lockfile.c @@ -3,6 +3,7 @@ */ #include "cache.h" +#include "abspath.h" #include "gettext.h" #include "lockfile.h" diff --git a/midx.c b/midx.c index e132ef250e..b111665dca 100644 --- a/midx.c +++ b/midx.c @@ -1,4 +1,5 @@ #include "git-compat-util.h" +#include "abspath.h" #include "alloc.h" #include "config.h" #include "csum-file.h" diff --git a/object-file.c b/object-file.c index 39660d49db..bee41b3047 100644 --- a/object-file.c +++ b/object-file.c @@ -7,6 +7,7 @@ * creation etc. */ #include "git-compat-util.h" +#include "abspath.h" #include "alloc.h" #include "config.h" #include "gettext.h" diff --git a/parse-options.c b/parse-options.c index 084b4f1062..a577cc85f6 100644 --- a/parse-options.c +++ b/parse-options.c @@ -1,5 +1,6 @@ #include "git-compat-util.h" #include "parse-options.h" +#include "abspath.h" #include "cache.h" #include "config.h" #include "commit.h" diff --git a/path.c b/path.c index 3f2702cbe4..3976c0d7ac 100644 --- a/path.c +++ b/path.c @@ -2,6 +2,7 @@ * Utilities for paths and pathnames */ #include "cache.h" +#include "abspath.h" #include "gettext.h" #include "hex.h" #include "repository.h" diff --git a/pathspec.c b/pathspec.c index 868b4d280c..53763e272f 100644 --- a/pathspec.c +++ b/pathspec.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "abspath.h" #include "config.h" #include "dir.h" #include "gettext.h" diff --git a/remote.c b/remote.c index edb1e07497..2bae247a0a 100644 --- a/remote.c +++ b/remote.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "abspath.h" #include "alloc.h" #include "config.h" #include "gettext.h" diff --git a/repository.c b/repository.c index 937fa974b3..4412f63322 100644 --- a/repository.c +++ b/repository.c @@ -4,6 +4,7 @@ */ #define USE_THE_INDEX_VARIABLE #include "cache.h" +#include "abspath.h" #include "repository.h" #include "object-store.h" #include "config.h" diff --git a/rerere.c b/rerere.c index 9428cbca7b..c3258e1390 100644 --- a/rerere.c +++ b/rerere.c @@ -1,4 +1,5 @@ #include "git-compat-util.h" +#include "abspath.h" #include "alloc.h" #include "config.h" #include "gettext.h" diff --git a/scalar.c b/scalar.c index ca19b95ce4..fe61a3ebdd 100644 --- a/scalar.c +++ b/scalar.c @@ -3,6 +3,7 @@ */ #include "cache.h" +#include "abspath.h" #include "gettext.h" #include "parse-options.h" #include "config.h" diff --git a/sequencer.c b/sequencer.c index 7fa776b061..c61c1fc4d8 100644 --- a/sequencer.c +++ b/sequencer.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "abspath.h" #include "alloc.h" #include "config.h" #include "environment.h" diff --git a/setup.c b/setup.c index 8a4ccee4c2..8f385d9f29 100644 --- a/setup.c +++ b/setup.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "abspath.h" #include "gettext.h" #include "repository.h" #include "config.h" diff --git a/strbuf.c b/strbuf.c index b9cd593b14..9633e37b62 100644 --- a/strbuf.c +++ b/strbuf.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "abspath.h" #include "alloc.h" #include "environment.h" #include "gettext.h" diff --git a/submodule.c b/submodule.c index 8b551e5327..13ff333f68 100644 --- a/submodule.c +++ b/submodule.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "abspath.h" #include "alloc.h" #include "repository.h" #include "config.h" diff --git a/t/helper/test-path-utils.c b/t/helper/test-path-utils.c index f69709d674..d3d00dc34f 100644 --- a/t/helper/test-path-utils.c +++ b/t/helper/test-path-utils.c @@ -1,5 +1,6 @@ #include "test-tool.h" #include "cache.h" +#include "abspath.h" #include "string-list.h" #include "utf8.h" diff --git a/tmp-objdir.c b/tmp-objdir.c index 2a2012eb6d..fff15cb6b5 100644 --- a/tmp-objdir.c +++ b/tmp-objdir.c @@ -1,5 +1,6 @@ #include "cache.h" #include "tmp-objdir.h" +#include "abspath.h" #include "chdir-notify.h" #include "dir.h" #include "sigchain.h" diff --git a/trace.c b/trace.c index efa4e2d8e0..2b41c683fc 100644 --- a/trace.c +++ b/trace.c @@ -22,6 +22,7 @@ */ #include "cache.h" +#include "abspath.h" #include "quote.h" struct trace_key trace_default_key = { "GIT_TRACE", 0, 0, 0 }; diff --git a/trace2/tr2_dst.c b/trace2/tr2_dst.c index 8a21dd2972..273260e1f1 100644 --- a/trace2/tr2_dst.c +++ b/trace2/tr2_dst.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "abspath.h" #include "sigchain.h" #include "trace2/tr2_dst.h" #include "trace2/tr2_sid.h" diff --git a/worktree.c b/worktree.c index 09eb522e5a..b7bc4c7bb7 100644 --- a/worktree.c +++ b/worktree.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "abspath.h" #include "alloc.h" #include "gettext.h" #include "repository.h" diff --git a/wrapper.c b/wrapper.c index 0d4ceba6fc..df1fa6286d 100644 --- a/wrapper.c +++ b/wrapper.c @@ -2,6 +2,7 @@ * Various trivial helper wrappers around standard functions */ #include "cache.h" +#include "abspath.h" #include "config.h" #include "gettext.h"