system_path: move RUNTIME_PREFIX to a sub-function

The system_path() function has an #ifdef in the middle of
it. Let's move the conditional logic into a sub-function.
This isolates it more, which will make it easier to change
and add to.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King 2017-09-06 08:30:28 -04:00 committed by Junio C Hamano
parent 3d9c5b5c44
commit 39b2f6af6e

View File

@ -7,19 +7,12 @@
static const char *argv_exec_path;
static const char *argv0_path;
char *system_path(const char *path)
#ifdef RUNTIME_PREFIX
static const char *system_prefix(void)
{
#ifdef RUNTIME_PREFIX
static const char *prefix;
#else
static const char *prefix = PREFIX;
#endif
struct strbuf d = STRBUF_INIT;
if (is_absolute_path(path))
return xstrdup(path);
#ifdef RUNTIME_PREFIX
assert(argv0_path);
assert(is_absolute_path(argv0_path));
@ -32,9 +25,25 @@ char *system_path(const char *path)
"but prefix computation failed. "
"Using static fallback '%s'.\n", prefix);
}
#endif
return prefix;
}
#else
strbuf_addf(&d, "%s/%s", prefix, path);
static const char *system_prefix(void)
{
return PREFIX;
}
#endif /* RUNTIME_PREFIX */
char *system_path(const char *path)
{
struct strbuf d = STRBUF_INIT;
if (is_absolute_path(path))
return xstrdup(path);
strbuf_addf(&d, "%s/%s", system_prefix(), path);
return strbuf_detach(&d, NULL);
}