static char *add_prefix(const char *prefix, const char *path)
{
- return prefix_path(prefix, prefix ? strlen(prefix) : 0, path);
+ return prefix_path(the_repository, prefix, prefix ? strlen(prefix) : 0, path);
}
static int git_blame_config(const char *var, const char *value,
{
char *full_path =
- prefix_path(prefix, prefix ? strlen(prefix) : 0, file);
+ prefix_path(the_repository, prefix, prefix ? strlen(prefix) : 0, file);
if (collect_all) {
git_all_attrs(the_repository->index, full_path, check);
die("git checkout-index: don't mix '--all' and explicit filenames");
if (read_from_stdin)
die("git checkout-index: don't mix '--stdin' and explicit filenames");
- p = prefix_path(prefix, prefix_length, arg);
+ p = prefix_path(repo, prefix, prefix_length, arg);
err |= checkout_file(repo->index, p, prefix);
free(p);
}
die("line is badly quoted");
strbuf_swap(&buf, &unquoted);
}
- p = prefix_path(prefix, prefix_length, buf.buf);
+ p = prefix_path(repo, prefix, prefix_length, buf.buf);
err |= checkout_file(repo->index, p, prefix);
free(p);
}
trimmed = xmemdupz(pathspec[i], to_copy);
maybe_basename = (flags & DUP_BASENAME) ? basename(trimmed) : trimmed;
- prefixed_path = prefix_path(prefix, prefixlen, maybe_basename);
+ prefixed_path = prefix_path(the_repository, prefix, prefixlen, maybe_basename);
strvec_push(out, prefixed_path);
free(prefixed_path);
for (j = 0; j < last - first; j++) {
const struct cache_entry *ce = the_repository->index->cache[first + j];
const char *path = ce->name;
- char *prefixed_path = prefix_path(dst_with_slash, dst_with_slash_len, path + length + 1);
+ char *prefixed_path = prefix_path(the_repository, dst_with_slash,
+ dst_with_slash_len, path + length + 1);
strvec_push(&sources, path);
strvec_push(&destinations, prefixed_path);
int prefix_len = strlen(prefix);
for (i = 0; i < args->nr; i++) {
- char *prefixed_path = prefix_path(prefix, prefix_len, args->v[i]);
+ char *prefixed_path = prefix_path(the_repository, prefix,
+ prefix_len, args->v[i]);
strvec_replace(args, i, prefixed_path);
free(prefixed_path);
}
for (i = 1; i < ac; i++) {
const char *arg = av[i];
- char *p = prefix_path(prefix, prefix_length, arg);
+ char *p = prefix_path(the_repository, prefix, prefix_length, arg);
err |= unresolve_one(p);
free(p);
}
}
setup_work_tree();
- p = prefix_path(prefix, prefix_length, path);
+ p = prefix_path(the_repository, prefix, prefix_length, path);
update_one(p);
if (set_executable_bit)
chmod_path(set_executable_bit, p);
die("line is badly quoted");
strbuf_swap(&buf, &unquoted);
}
- p = prefix_path(prefix, prefix_length, buf.buf);
+ p = prefix_path(the_repository, prefix, prefix_length, buf.buf);
update_one(p);
if (set_executable_bit)
chmod_path(set_executable_bit, p);
range_part = xstrndup(item->string, name_part - item->string);
name_part++;
- full_name = prefix_path(prefix, prefix ? strlen(prefix) : 0,
+ full_name = prefix_path(r, prefix, prefix ? strlen(prefix) : 0,
name_part);
spec = alloc_filespec(full_name);
die(_("relative path syntax can't be used outside working tree"));
/* die() inside prefix_path() if resolved path is outside worktree */
- return prefix_path(startup_info->prefix,
+ return prefix_path(the_repository, startup_info->prefix,
startup_info->prefix ? strlen(startup_info->prefix) : 0,
rel);
}
match = xstrdup(copyfrom);
prefixlen = 0;
} else {
- match = prefix_path_gently(prefix, prefixlen,
+ match = prefix_path_gently(the_repository, prefix, prefixlen,
&prefixlen, copyfrom);
if (!match) {
const char *hint_path;
* ../../sub1/sub2/foo -> sub1/sub2/foo (but no remaining prefix)
* `pwd`/../bar -> sub1/bar (no remaining prefix)
*/
-char *prefix_path_gently(const char *prefix, int len,
+char *prefix_path_gently(struct repository *repo,
+ const char *prefix, int len,
int *remaining_prefix, const char *path)
{
const char *orig = path;
free(sanitized);
return NULL;
}
- if (abspath_part_inside_repo(the_repository, sanitized)) {
+ if (abspath_part_inside_repo(repo, sanitized)) {
free(sanitized);
return NULL;
}
return sanitized;
}
-char *prefix_path(const char *prefix, int len, const char *path)
+char *prefix_path(struct repository *repo, const char *prefix, int len, const char *path)
{
- char *r = prefix_path_gently(prefix, len, NULL, path);
+ char *r = prefix_path_gently(repo, prefix, len, NULL, path);
if (!r) {
- const char *hint_path = repo_get_work_tree(the_repository);
+ const char *hint_path = repo_get_work_tree(repo);
if (!hint_path)
- hint_path = repo_get_git_dir(the_repository);
+ hint_path = repo_get_git_dir(repo);
die(_("'%s' is outside repository at '%s'"), path,
absolute_path(hint_path));
}
int path_inside_repo(const char *prefix, const char *path)
{
int len = prefix ? strlen(prefix) : 0;
- char *r = prefix_path_gently(prefix, len, NULL, path);
+ char *r = prefix_path_gently(the_repository, prefix, len, NULL, path);
if (r) {
free(r);
return 1;
const char *setup_git_directory_gently(int *);
const char *setup_git_directory(void);
-char *prefix_path(const char *prefix, int len, const char *path);
-char *prefix_path_gently(const char *prefix, int len, int *remaining, const char *path);
+char *prefix_path(struct repository *repo, const char *prefix, int len, const char *path);
+char *prefix_path_gently(struct repository *repo, const char *prefix, int len, int *remaining, const char *path);
int check_filename(const char *prefix, const char *name);
void verify_filename(const char *prefix,
int nongit_ok;
setup_git_directory_gently(&nongit_ok);
while (argc > 3) {
- char *pfx = prefix_path(prefix, prefix_len, argv[3]);
+ char *pfx = prefix_path(the_repository, prefix, prefix_len, argv[3]);
puts(pfx);
free(pfx);