From fbb12ddc6a53ad97ff6bcc7ed9b253c09001ad2f Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Mon, 22 Jun 2009 00:47:18 +0200 Subject: post 1.14.1 fixes; bump version to 1.14.2 Signed-off-by: Denys Vlasenko --- libbb/simplify_path.c | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) (limited to 'libbb') diff --git a/libbb/simplify_path.c b/libbb/simplify_path.c index 367f1f0..f80e3e8 100644 --- a/libbb/simplify_path.c +++ b/libbb/simplify_path.c @@ -6,22 +6,13 @@ * * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. */ - #include "libbb.h" -char* FAST_FUNC bb_simplify_path(const char *path) +char* FAST_FUNC bb_simplify_abs_path_inplace(char *start) { - char *s, *start, *p; + char *s, *p; - if (path[0] == '/') - start = xstrdup(path); - else { - s = xrealloc_getcwd_or_warn(NULL); - start = concat_path_file(s, path); - free(s); - } p = s = start; - do { if (*p == '/') { if (*s == '/') { /* skip duplicate (or initial) slash */ @@ -47,7 +38,22 @@ char* FAST_FUNC bb_simplify_path(const char *path) if ((p == start) || (*p != '/')) { /* not a trailing slash */ ++p; /* so keep last character */ } - *p = 0; + *p = '\0'; + return p; +} + +char* FAST_FUNC bb_simplify_path(const char *path) +{ + char *s, *p; + + if (path[0] == '/') + s = xstrdup(path); + else { + p = xrealloc_getcwd_or_warn(NULL); + s = concat_path_file(p, path); + free(p); + } - return start; + bb_simplify_abs_path_inplace(s); + return s; } -- cgit v1.1