diff options
author | Junio C Hamano <gitster@pobox.com> | 2012-07-11 12:48:44 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-07-11 12:48:44 -0700 |
commit | 36c5109e4a4d455a9aa9e0f8d20c957aa6a9bef8 (patch) | |
tree | 2d746180b910cc20d7129482ca391bbe239ff980 /setup.c | |
parent | 4ac01b0cbc27b314333362e77323850e78a7448c (diff) | |
parent | 304970dd5d9e542e70eca98932c1e9f26770678e (diff) | |
download | git-36c5109e4a4d455a9aa9e0f8d20c957aa6a9bef8.tar.gz |
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
Diffstat (limited to 'setup.c')
-rw-r--r-- | setup.c | 24 |
1 files changed, 22 insertions, 2 deletions
@@ -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; |