return strbuf_detach(&sb, NULL);
}
-const char *prefix_filename(const char *pfx, int pfx_len, const char *arg)
+const char *prefix_filename(const char *pfx, const char *arg)
{
static struct strbuf path = STRBUF_INIT;
+ size_t pfx_len = pfx ? strlen(pfx) : 0;
+
#ifndef GIT_WINDOWS_NATIVE
if (!pfx_len || is_absolute_path(arg))
return arg;
char *old_name = *name;
if (!old_name)
return;
- *name = xstrdup(prefix_filename(state->prefix, state->prefix_length, *name));
+ *name = xstrdup(prefix_filename(state->prefix, *name));
free(old_name);
}
read_stdin = 0;
continue;
} else if (0 < state->prefix_length)
- arg = prefix_filename(state->prefix,
- state->prefix_length,
- arg);
+ arg = prefix_filename(state->prefix, arg);
fd = open(arg, O_RDONLY);
if (fd < 0) {
if (!is_absolute_path(given_config_source.file) && prefix)
given_config_source.file =
xstrdup(prefix_filename(prefix,
- strlen(prefix),
given_config_source.file));
}
OPT_END()
};
int i;
- int prefix_length = -1;
const char *errstr = NULL;
argc = parse_options(argc, argv, NULL, hash_object_options,
else
prefix = setup_git_directory_gently(&nongit);
- prefix_length = prefix ? strlen(prefix) : 0;
if (vpath && prefix)
- vpath = xstrdup(prefix_filename(prefix, prefix_length, vpath));
+ vpath = xstrdup(prefix_filename(prefix, vpath));
git_config(git_default_config, NULL);
const char *arg = argv[i];
char *to_free = NULL;
- if (0 <= prefix_length)
- arg = to_free =
- xstrdup(prefix_filename(prefix, prefix_length, arg));
+ if (prefix)
+ arg = to_free = xstrdup(prefix_filename(prefix, arg));
hash_object(arg, type, no_filters ? NULL : vpath ? vpath : arg,
flags, literally);
free(to_free);
if (!output_directory)
return prefix;
- return xstrdup(prefix_filename(prefix, outdir_offset,
- output_directory));
+ return xstrdup(prefix_filename(prefix, output_directory));
}
static const char * const builtin_format_patch_usage[] = {
{
if (!prefix || is_absolute_path(filename))
return xstrdup(filename);
- return xstrdup(prefix_filename(prefix, strlen(prefix), filename));
+ return xstrdup(prefix_filename(prefix, filename));
}
int cmd_mailinfo(int argc, const char **argv, const char *prefix)
xmparam_t xmp = {{0}};
int ret = 0, i = 0, to_stdout = 0;
int quiet = 0;
- int prefixlen = 0;
struct option options[] = {
OPT_BOOL('p', "stdout", &to_stdout, N_("send results to standard output")),
OPT_SET_INT(0, "diff3", &xmp.style, N_("use a diff3 based merge"), XDL_MERGE_DIFF3),
return error_errno("failed to redirect stderr to /dev/null");
}
- if (prefix)
- prefixlen = strlen(prefix);
-
for (i = 0; i < 3; i++) {
- const char *fname = prefix_filename(prefix, prefixlen, argv[i]);
+ const char *fname = prefix_filename(prefix, argv[i]);
if (!names[i])
names[i] = argv[i];
if (read_mmfile(mmfs + i, fname))
if (ret >= 0) {
const char *filename = argv[0];
- const char *fpath = prefix_filename(prefix, prefixlen, argv[0]);
+ const char *fpath = prefix_filename(prefix, argv[0]);
FILE *f = to_stdout ? stdout : fopen(fpath, "wb");
if (!f)
if ((filter & (DO_NONFLAGS|DO_NOREV)) == (DO_NONFLAGS|DO_NOREV)) {
if (output_prefix) {
const char *prefix = startup_info->prefix;
- show(prefix_filename(prefix,
- prefix ? strlen(prefix) : 0,
- arg));
+ show(prefix_filename(prefix, arg));
} else
show(arg);
return 1;
if (ac < 1 || ac > 2)
usage_with_options(worktree_usage, options);
- path = prefix_filename(prefix, strlen(prefix), av[0]);
+ path = prefix_filename(prefix, av[0]);
branch = ac < 2 ? "HEAD" : av[1];
if (!strcmp(branch, "-"))
* The return value may point to static storage which will be overwritten by
* further calls.
*/
-extern const char *prefix_filename(const char *prefix, int len, const char *path);
+extern const char *prefix_filename(const char *prefix, const char *path);
extern int check_filename(const char *prefix, const char *name);
extern void verify_filename(const char *prefix,
void diff_no_index(struct rev_info *revs,
int argc, const char **argv)
{
- int i, prefixlen;
+ int i;
const char *paths[2];
struct strbuf replacement = STRBUF_INIT;
const char *prefix = revs->prefix;
}
}
- prefixlen = prefix ? strlen(prefix) : 0;
for (i = 0; i < 2; i++) {
const char *p = argv[argc - 2 + i];
if (!strcmp(p, "-"))
* path that is "-", spell it as "./-".
*/
p = file_from_standard_input;
- else if (prefixlen)
- p = xstrdup(prefix_filename(prefix, prefixlen, p));
+ else if (prefix)
+ p = xstrdup(prefix_filename(prefix, p));
paths[i] = p;
}
else if (!strcmp(arg, "--pickaxe-regex"))
options->pickaxe_opts |= DIFF_PICKAXE_REGEX;
else if ((argcount = short_opt('O', av, &optarg))) {
- const char *path = prefix_filename(prefix, strlen(prefix), optarg);
+ const char *path = prefix_filename(prefix, optarg);
options->orderfile = xstrdup(path);
return argcount;
}
else if (!strcmp(arg, "--no-function-context"))
DIFF_OPT_CLR(options, FUNCCONTEXT);
else if ((argcount = parse_long_opt("output", av, &optarg))) {
- const char *path = prefix_filename(prefix, strlen(prefix), optarg);
+ const char *path = prefix_filename(prefix, optarg);
options->file = fopen(path, "w");
if (!options->file)
die_errno("Could not open '%s'", path);
if (!file || !*file || !prefix || is_absolute_path(*file)
|| !strcmp("-", *file))
return;
- *file = xstrdup(prefix_filename(prefix, strlen(prefix), *file));
+ *file = xstrdup(prefix_filename(prefix, *file));
}
static int opt_command_mode_error(const struct option *opt,
return 1;
name = arg + 2;
} else if (prefix)
- name = prefix_filename(prefix, strlen(prefix), arg);
+ name = prefix_filename(prefix, arg);
else
name = arg;
if (!lstat(name, &st))
if ((wt = find_worktree_by_suffix(list, arg)))
return wt;
- arg = prefix_filename(prefix, strlen(prefix), arg);
+ arg = prefix_filename(prefix, arg);
path = real_pathdup(arg, 1);
for (; *list; list++)
if (!fspathcmp(path, real_path((*list)->path)))