From d1c69255a1014ccaeb9841f2114e20f048556391 Mon Sep 17 00:00:00 2001 From: Theo Niessink Date: Fri, 27 May 2011 18:00:39 +0200 Subject: real_path: do not assume '/' is the path seperator real_path currently assumes it's input had '/' as path seperator. This assumption does not hold true for the code-path from prefix_path (on Windows), where real_path can be called before normalize_path_copy. Fix real_path so it doesn't make this assumption. Create a helper function to reverse-search for the last path-seperator in a string. Signed-off-by: Theo Niessink Signed-off-by: Erik Faye-Lund Signed-off-by: Junio C Hamano --- abspath.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'abspath.c') diff --git a/abspath.c b/abspath.c index ff140689ed..54899008f8 100644 --- a/abspath.c +++ b/abspath.c @@ -33,7 +33,7 @@ const char *make_absolute_path(const char *path) while (depth--) { if (!is_directory(buf)) { - char *last_slash = strrchr(buf, '/'); + char *last_slash = find_last_dir_sep(buf); if (last_slash) { *last_slash = '\0'; last_elem = xstrdup(last_slash + 1); @@ -58,7 +58,7 @@ const char *make_absolute_path(const char *path) if (len + strlen(last_elem) + 2 > PATH_MAX) die ("Too long path name: '%s/%s'", buf, last_elem); - if (len && buf[len-1] != '/') + if (len && !is_dir_sep(buf[len-1])) buf[len++] = '/'; strcpy(buf + len, last_elem); free(last_elem); -- cgit v1.2.3