* PATCH 1/2] abspath: add absolute_pathdup()
@ 2017-01-26 17:47 René Scharfe
2017-01-26 17:54 ` [PATCH 2/2] use absolute_pathdup() René Scharfe
2017-01-26 18:32 ` PATCH 1/2] abspath: add absolute_pathdup() Brandon Williams
0 siblings, 2 replies; 6+ messages in thread
From: René Scharfe @ 2017-01-26 17:47 UTC (permalink / raw)
To: Git List; +Cc: Junio C Hamano
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>
---
abspath.c | 7 +++++++
cache.h | 1 +
contrib/coccinelle/xstrdup_or_null.cocci | 6 ++++++
3 files changed, 14 insertions(+)
diff --git a/abspath.c b/abspath.c
index fce40fddcc..2f0c26e0e2 100644
--- a/abspath.c
+++ b/abspath.c
@@ -239,6 +239,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
diff --git a/cache.h b/cache.h
index 00a029af36..d7b7a8cd7a 100644
--- a/cache.h
+++ b/cache.h
@@ -1069,6 +1069,7 @@ const char *real_path(const char *path);
const char *real_path_if_valid(const char *path);
char *real_pathdup(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)
--
2.11.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/2] use absolute_pathdup()
2017-01-26 17:47 PATCH 1/2] abspath: add absolute_pathdup() René Scharfe
@ 2017-01-26 17:54 ` René Scharfe
2017-01-27 10:21 ` Johannes Schindelin
2017-01-26 18:32 ` PATCH 1/2] abspath: add absolute_pathdup() Brandon Williams
1 sibling, 1 reply; 6+ messages in thread
From: René Scharfe @ 2017-01-26 17:54 UTC (permalink / raw)
To: Git List; +Cc: Junio C Hamano
Apply the symantic patch for converting callers that duplicate the
result of absolute_path() to call absolute_pathdup() instead, which
avoids an extra string copy to a static buffer.
Signed-off-by: Rene Scharfe <l.s.r@web.de>
---
builtin/clone.c | 4 ++--
builtin/submodule--helper.c | 2 +-
worktree.c | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/builtin/clone.c b/builtin/clone.c
index 5ef81927a6..3f63edbbf9 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -170,7 +170,7 @@ static char *get_repo_path(const char *repo, int *is_bundle)
strbuf_addstr(&path, repo);
raw = get_repo_path_1(&path, is_bundle);
- canon = raw ? xstrdup(absolute_path(raw)) : NULL;
+ canon = raw ? absolute_pathdup(raw) : NULL;
strbuf_release(&path);
return canon;
}
@@ -894,7 +894,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
path = get_repo_path(repo_name, &is_bundle);
if (path)
- repo = xstrdup(absolute_path(repo_name));
+ repo = absolute_pathdup(repo_name);
else if (!strchr(repo_name, ':'))
die(_("repository '%s' does not exist"), repo_name);
else
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index 74614a951e..899dc334e3 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -626,7 +626,7 @@ static int module_clone(int argc, const char **argv, const char *prefix)
module_clone_options);
strbuf_addf(&sb, "%s/modules/%s", get_git_dir(), name);
- sm_gitdir = xstrdup(absolute_path(sb.buf));
+ sm_gitdir = absolute_pathdup(sb.buf);
strbuf_reset(&sb);
if (!is_absolute_path(path)) {
diff --git a/worktree.c b/worktree.c
index 53b4771c04..d633761575 100644
--- a/worktree.c
+++ b/worktree.c
@@ -145,7 +145,7 @@ static struct worktree *get_linked_worktree(const char *id)
static void mark_current_worktree(struct worktree **worktrees)
{
- char *git_dir = xstrdup(absolute_path(get_git_dir()));
+ char *git_dir = absolute_pathdup(get_git_dir());
int i;
for (i = 0; worktrees[i]; i++) {
--
2.11.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: PATCH 1/2] abspath: add absolute_pathdup()
2017-01-26 17:47 PATCH 1/2] abspath: add absolute_pathdup() René Scharfe
2017-01-26 17:54 ` [PATCH 2/2] use absolute_pathdup() René Scharfe
@ 2017-01-26 18:32 ` Brandon Williams
1 sibling, 0 replies; 6+ messages in thread
From: Brandon Williams @ 2017-01-26 18:32 UTC (permalink / raw)
To: René Scharfe; +Cc: Git List, Junio C Hamano
On 01/26, René Scharfe wrote:
> 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>
> ---
> abspath.c | 7 +++++++
> cache.h | 1 +
> contrib/coccinelle/xstrdup_or_null.cocci | 6 ++++++
> 3 files changed, 14 insertions(+)
>
> diff --git a/abspath.c b/abspath.c
> index fce40fddcc..2f0c26e0e2 100644
> --- a/abspath.c
> +++ b/abspath.c
> @@ -239,6 +239,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
> diff --git a/cache.h b/cache.h
> index 00a029af36..d7b7a8cd7a 100644
> --- a/cache.h
> +++ b/cache.h
> @@ -1069,6 +1069,7 @@ const char *real_path(const char *path);
> const char *real_path_if_valid(const char *path);
> char *real_pathdup(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)
> --
> 2.11.0
>
These two patches look good to me.
--
Brandon Williams
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] use absolute_pathdup()
2017-01-26 17:54 ` [PATCH 2/2] use absolute_pathdup() René Scharfe
@ 2017-01-27 10:21 ` Johannes Schindelin
2017-01-27 15:39 ` René Scharfe
0 siblings, 1 reply; 6+ messages in thread
From: Johannes Schindelin @ 2017-01-27 10:21 UTC (permalink / raw)
To: René Scharfe; +Cc: Git List, Junio C Hamano
[-- Attachment #1: Type: text/plain, Size: 166 bytes --]
Hi René,
On Thu, 26 Jan 2017, René Scharfe wrote:
> Apply the symantic patch for converting callers that duplicate the
s/symantic/semantic/
Ciao,
Dscho
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] use absolute_pathdup()
2017-01-27 10:21 ` Johannes Schindelin
@ 2017-01-27 15:39 ` René Scharfe
2017-01-27 18:18 ` Junio C Hamano
0 siblings, 1 reply; 6+ messages in thread
From: René Scharfe @ 2017-01-27 15:39 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: Git List, Junio C Hamano
Hi Dscho,
Am 27.01.2017 um 11:21 schrieb Johannes Schindelin:
> On Thu, 26 Jan 2017, René Scharfe wrote:
>> Apply the symantic patch for converting callers that duplicate the
>
> s/symantic/semantic/
thank you! I wonder where this came from. And where my spellchecker
went without as much as a farewell. Reinstalled it now..
René
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] use absolute_pathdup()
2017-01-27 15:39 ` René Scharfe
@ 2017-01-27 18:18 ` Junio C Hamano
0 siblings, 0 replies; 6+ messages in thread
From: Junio C Hamano @ 2017-01-27 18:18 UTC (permalink / raw)
To: René Scharfe; +Cc: Johannes Schindelin, Git List
René Scharfe <l.s.r@web.de> writes:
> Hi Dscho,
>
> Am 27.01.2017 um 11:21 schrieb Johannes Schindelin:
>> On Thu, 26 Jan 2017, René Scharfe wrote:
>>> Apply the symantic patch for converting callers that duplicate the
>>
>> s/symantic/semantic/
>
> thank you! I wonder where this came from. And where my spellchecker
> went without as much as a farewell. Reinstalled it now..
>
> René
Thanks. I've already locally amended this.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-01-27 18:20 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-26 17:47 PATCH 1/2] abspath: add absolute_pathdup() René Scharfe
2017-01-26 17:54 ` [PATCH 2/2] use absolute_pathdup() René Scharfe
2017-01-27 10:21 ` Johannes Schindelin
2017-01-27 15:39 ` René Scharfe
2017-01-27 18:18 ` Junio C Hamano
2017-01-26 18:32 ` PATCH 1/2] abspath: add absolute_pathdup() Brandon Williams
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.