From: Junio C Hamano Date: Wed, 19 Jan 2011 16:25:31 +0000 (-0800) Subject: Merge branch 'nd/maint-relative' into maint X-Git-Tag: v1.7.4-rc3~5^2~11 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/0bc6180bcbe6bd821ac8cf2178cb13ff628b4f69?ds=inline;hp=-c Merge branch 'nd/maint-relative' into maint * nd/maint-relative: get_cwd_relative(): do not misinterpret root path --- 0bc6180bcbe6bd821ac8cf2178cb13ff628b4f69 diff --combined dir.c index b2dfb69eb5,ee9299db05..b68750450c --- a/dir.c +++ b/dir.c @@@ -232,7 -232,7 +232,7 @@@ int add_excludes_from_file_to_list(cons { struct stat st; int fd, i; - size_t size; + size_t size = 0; char *buf, *entry; fd = open(fname, O_RDONLY); @@@ -360,8 -360,7 +360,8 @@@ int excluded_from_list(const char *path if (x->flags & EXC_FLAG_MUSTBEDIR) { if (!dtype) { - if (!prefixcmp(pathname, exclude)) + if (!prefixcmp(pathname, exclude) && + pathname[x->patternlen] == '/') return to_exclude; else continue; @@@ -454,7 -453,7 +454,7 @@@ static struct dir_entry *dir_add_name(s return dir->entries[dir->nr++] = dir_entry_new(pathname, len); } -static struct dir_entry *dir_add_ignored(struct dir_struct *dir, const char *pathname, int len) +struct dir_entry *dir_add_ignored(struct dir_struct *dir, const char *pathname, int len) { if (!cache_name_is_other(pathname, len)) return NULL; @@@ -466,7 -465,7 +466,7 @@@ enum exist_status { index_nonexistent = 0, index_directory, - index_gitdir, + index_gitdir }; /* @@@ -534,7 -533,7 +534,7 @@@ static enum exist_status directory_exis enum directory_treatment { show_directory, ignore_directory, - recurse_into_directory, + recurse_into_directory }; static enum directory_treatment treat_directory(struct dir_struct *dir, @@@ -685,7 -684,7 +685,7 @@@ static int get_dtype(struct dirent *de enum path_treatment { path_ignored, path_handled, - path_recurse, + path_recurse }; static enum path_treatment treat_one_path(struct dir_struct *dir, @@@ -965,6 -964,12 +965,12 @@@ char *get_relative_cwd(char *buffer, in case '/': return cwd + 1; default: + /* + * dir can end with a path separator when it's root + * directory. Return proper prefix in that case. + */ + if (dir[-1] == '/') + return cwd; return NULL; } }