From f2a782b8ba189b5ed51d18aa3eb93a670c220018 Mon Sep 17 00:00:00 2001 From: Johannes Sixt Date: Sat, 7 Feb 2009 16:08:31 +0100 Subject: [PATCH] Remove unused normalize_absolute_path() This function is now superseded by normalize_path_copy(). Signed-off-by: Johannes Sixt Signed-off-by: Junio C Hamano --- cache.h | 1 - path.c | 51 ++++++--------------------------------------------- 2 files changed, 6 insertions(+), 46 deletions(-) diff --git a/cache.h b/cache.h index 65897e7b2c..39f0d6fea4 100644 --- a/cache.h +++ b/cache.h @@ -547,7 +547,6 @@ static inline int is_absolute_path(const char *path) const char *make_absolute_path(const char *path); const char *make_nonrelative_path(const char *path); const char *make_relative_path(const char *abs, const char *base); -int normalize_absolute_path(char *buf, const char *path); int normalize_path_copy(char *dst, const char *src); int longest_ancestor_length(const char *path, const char *prefix_list); diff --git a/path.c b/path.c index 6b7be5b869..4b9107fed1 100644 --- a/path.c +++ b/path.c @@ -363,58 +363,19 @@ const char *make_relative_path(const char *abs, const char *base) } /* - * path = absolute path - * buf = buffer of at least max(2, strlen(path)+1) bytes - * It is okay if buf == path, but they should not overlap otherwise. + * It is okay if dst == src, but they should not overlap otherwise. * - * Performs the following normalizations on path, storing the result in buf: - * - Removes trailing slashes. - * - Removes empty components. + * Performs the following normalizations on src, storing the result in dst: + * - Ensures that components are separated by '/' (Windows only) + * - Squashes sequences of '/'. * - Removes "." components. * - Removes ".." components, and the components the precede them. - * "" and paths that contain only slashes are normalized to "/". - * Returns the length of the output. + * Returns failure (non-zero) if a ".." component appears as first path + * component anytime during the normalization. Otherwise, returns success (0). * * Note that this function is purely textual. It does not follow symlinks, * verify the existence of the path, or make any system calls. */ -int normalize_absolute_path(char *buf, const char *path) -{ - const char *comp_start = path, *comp_end = path; - char *dst = buf; - int comp_len; - assert(buf); - assert(path); - - while (*comp_start) { - assert(*comp_start == '/'); - while (*++comp_end && *comp_end != '/') - ; /* nothing */ - comp_len = comp_end - comp_start; - - if (!strncmp("/", comp_start, comp_len) || - !strncmp("/.", comp_start, comp_len)) - goto next; - - if (!strncmp("/..", comp_start, comp_len)) { - while (dst > buf && *--dst != '/') - ; /* nothing */ - goto next; - } - - memmove(dst, comp_start, comp_len); - dst += comp_len; - next: - comp_start = comp_end; - } - - if (dst == buf) - *dst++ = '/'; - - *dst = '\0'; - return dst - buf; -} - int normalize_path_copy(char *dst, const char *src) { char *dst0;