diff options
author | René Scharfe <l.s.r@web.de> | 2017-01-26 18:47:45 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-01-26 14:51:06 -0800 |
commit | b1edb40f255a900154a9e7d34dcb9e0219427bd9 (patch) | |
tree | c2a0fc97658e64122f11eb12e9d2bc740457e27b | |
parent | preparing for 2.10.3 (diff) | |
download | tgif-b1edb40f255a900154a9e7d34dcb9e0219427bd9.tar.xz |
abspath: add absolute_pathdup()
Add a function that returns a buffer containing the absolute path of its
argument and a semantic patch for its intended use. It avoids an extra
string copy to a static buffer.
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | abspath.c | 7 | ||||
-rw-r--r-- | cache.h | 1 | ||||
-rw-r--r-- | contrib/coccinelle/xstrdup_or_null.cocci | 6 |
3 files changed, 14 insertions, 0 deletions
@@ -152,6 +152,13 @@ const char *absolute_path(const char *path) return sb.buf; } +char *absolute_pathdup(const char *path) +{ + struct strbuf sb = STRBUF_INIT; + strbuf_add_absolute_path(&sb, 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 @@ -1033,6 +1033,7 @@ int is_directory(const char *); const char *real_path(const char *path); const char *real_path_if_valid(const char *path); 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/contrib/coccinelle/xstrdup_or_null.cocci b/contrib/coccinelle/xstrdup_or_null.cocci index 3fceef132b..8e05d1ca4b 100644 --- a/contrib/coccinelle/xstrdup_or_null.cocci +++ b/contrib/coccinelle/xstrdup_or_null.cocci @@ -5,3 +5,9 @@ expression V; - if (E) - V = xstrdup(E); + V = xstrdup_or_null(E); + +@@ +expression E; +@@ +- xstrdup(absolute_path(E)) ++ absolute_pathdup(E) |