Merge branch 'th/diff-no-index-fixes' into maint
"git diff --no-index" did not correctly handle relative paths and did not correctly give exit codes when run under "--quiet" option. * th/diff-no-index-fixes: diff-no-index: exit(1) if 'diff --quiet <repo file> <external file>' finds changes diff: handle relative paths in no-index
This commit is contained in:
24
setup.c
24
setup.c
@ -4,7 +4,7 @@
|
||||
static int inside_git_dir = -1;
|
||||
static int inside_work_tree = -1;
|
||||
|
||||
char *prefix_path(const char *prefix, int len, const char *path)
|
||||
static char *prefix_path_gently(const char *prefix, int len, const char *path)
|
||||
{
|
||||
const char *orig = path;
|
||||
char *sanitized;
|
||||
@ -31,7 +31,8 @@ char *prefix_path(const char *prefix, int len, const char *path)
|
||||
if (strncmp(sanitized, work_tree, len) ||
|
||||
(len > root_len && sanitized[len] != '\0' && sanitized[len] != '/')) {
|
||||
error_out:
|
||||
die("'%s' is outside repository", orig);
|
||||
free(sanitized);
|
||||
return NULL;
|
||||
}
|
||||
if (sanitized[len] == '/')
|
||||
len++;
|
||||
@ -40,6 +41,25 @@ char *prefix_path(const char *prefix, int len, const char *path)
|
||||
return sanitized;
|
||||
}
|
||||
|
||||
char *prefix_path(const char *prefix, int len, const char *path)
|
||||
{
|
||||
char *r = prefix_path_gently(prefix, len, path);
|
||||
if (!r)
|
||||
die("'%s' is outside repository", path);
|
||||
return r;
|
||||
}
|
||||
|
||||
int path_inside_repo(const char *prefix, const char *path)
|
||||
{
|
||||
int len = prefix ? strlen(prefix) : 0;
|
||||
char *r = prefix_path_gently(prefix, len, path);
|
||||
if (r) {
|
||||
free(r);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int check_filename(const char *prefix, const char *arg)
|
||||
{
|
||||
const char *name;
|
||||
|
||||
Reference in New Issue
Block a user