Remove unused normalize_absolute_path()
This function is now superseded by normalize_path_copy(). Signed-off-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
f42302b493
commit
f2a782b8ba
1
cache.h
1
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_absolute_path(const char *path);
|
||||||
const char *make_nonrelative_path(const char *path);
|
const char *make_nonrelative_path(const char *path);
|
||||||
const char *make_relative_path(const char *abs, const char *base);
|
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 normalize_path_copy(char *dst, const char *src);
|
||||||
int longest_ancestor_length(const char *path, const char *prefix_list);
|
int longest_ancestor_length(const char *path, const char *prefix_list);
|
||||||
|
|
||||||
|
|
51
path.c
51
path.c
|
@ -363,58 +363,19 @@ const char *make_relative_path(const char *abs, const char *base)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* path = absolute path
|
* It is okay if dst == src, but they should not overlap otherwise.
|
||||||
* buf = buffer of at least max(2, strlen(path)+1) bytes
|
|
||||||
* It is okay if buf == path, but they should not overlap otherwise.
|
|
||||||
*
|
*
|
||||||
* Performs the following normalizations on path, storing the result in buf:
|
* Performs the following normalizations on src, storing the result in dst:
|
||||||
* - Removes trailing slashes.
|
* - Ensures that components are separated by '/' (Windows only)
|
||||||
* - Removes empty components.
|
* - Squashes sequences of '/'.
|
||||||
* - Removes "." components.
|
* - Removes "." components.
|
||||||
* - Removes ".." components, and the components the precede them.
|
* - Removes ".." components, and the components the precede them.
|
||||||
* "" and paths that contain only slashes are normalized to "/".
|
* Returns failure (non-zero) if a ".." component appears as first path
|
||||||
* Returns the length of the output.
|
* component anytime during the normalization. Otherwise, returns success (0).
|
||||||
*
|
*
|
||||||
* Note that this function is purely textual. It does not follow symlinks,
|
* Note that this function is purely textual. It does not follow symlinks,
|
||||||
* verify the existence of the path, or make any system calls.
|
* 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)
|
int normalize_path_copy(char *dst, const char *src)
|
||||||
{
|
{
|
||||||
char *dst0;
|
char *dst0;
|
||||||
|
|
Loading…
Reference in New Issue