summaryrefslogtreecommitdiff
path: root/abspath.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2017-03-27 10:59:26 -0700
committerJunio C Hamano <gitster@pobox.com>2017-03-27 10:59:26 -0700
commita026bde1ac84f90f0b82faa18890b2023c5198d5 (patch)
tree8e976b861d4b23904c09bb1fbdd8004f37cb6e6f /abspath.c
parent09fb53568e3e00e30891b118045aa07ede524103 (diff)
parent3b754eedd58636926d07b14a34799a3aa7b8ebc2 (diff)
downloadgit-a026bde1ac84f90f0b82faa18890b2023c5198d5.tar.gz
Merge branch 'jk/prefix-filename'
Code clean-up with minor bugfixes. * jk/prefix-filename: bundle: use prefix_filename with bundle path prefix_filename: simplify windows #ifdef prefix_filename: return newly allocated string prefix_filename: drop length parameter prefix_filename: move docstring to header file hash-object: fix buffer reuse with --path in a subdirectory
Diffstat (limited to 'abspath.c')
-rw-r--r--abspath.c30
1 files changed, 11 insertions, 19 deletions
diff --git a/abspath.c b/abspath.c
index b02e068aa3..7f1cfe9792 100644
--- a/abspath.c
+++ b/abspath.c
@@ -246,29 +246,21 @@ char *absolute_pathdup(const char *path)
return strbuf_detach(&sb, NULL);
}
-/*
- * 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.
- */
-const char *prefix_filename(const char *pfx, int pfx_len, const char *arg)
+char *prefix_filename(const char *pfx, const char *arg)
{
- static struct strbuf path = STRBUF_INIT;
-#ifndef GIT_WINDOWS_NATIVE
- if (!pfx_len || is_absolute_path(arg))
- return arg;
- strbuf_reset(&path);
- strbuf_add(&path, pfx, pfx_len);
- strbuf_addstr(&path, arg);
-#else
- /* don't add prefix to absolute paths, but still replace '\' by '/' */
- strbuf_reset(&path);
- if (is_absolute_path(arg))
+ struct strbuf path = STRBUF_INIT;
+ size_t pfx_len = pfx ? strlen(pfx) : 0;
+
+ if (!pfx_len)
+ ; /* nothing to prefix */
+ else if (is_absolute_path(arg))
pfx_len = 0;
- else if (pfx_len)
+ else
strbuf_add(&path, pfx, pfx_len);
+
strbuf_addstr(&path, arg);
+#ifdef GIT_WINDOWS_NATIVE
convert_slashes(path.buf + pfx_len);
#endif
- return path.buf;
+ return strbuf_detach(&path, NULL);
}