Browse Source

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>
maint
René Scharfe 8 years ago committed by Junio C Hamano
parent
commit
b1edb40f25
  1. 7
      abspath.c
  2. 1
      cache.h
  3. 6
      contrib/coccinelle/xstrdup_or_null.cocci

7
abspath.c

@ -152,6 +152,13 @@ const char *absolute_path(const char *path) @@ -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

1
cache.h

@ -1033,6 +1033,7 @@ int is_directory(const char *); @@ -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);

6
contrib/coccinelle/xstrdup_or_null.cocci

@ -5,3 +5,9 @@ expression V; @@ -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)

Loading…
Cancel
Save