aboutsummaryrefslogtreecommitdiffstats
path: root/src/path.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/path.c')
-rw-r--r--src/path.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/path.c b/src/path.c
index 8c7b61cdf..a99f8bd2c 100644
--- a/src/path.c
+++ b/src/path.c
@@ -225,13 +225,23 @@ void pathcpy_trunc(char *dest, const char *src)
char *parent_path(char *path_max_tmp, const char *path)
{
char *c;
+ static const int handle_trailing_slashes = 0;
pathcpy_trunc(path_max_tmp, path);
+
+ if (handle_trailing_slashes) {
+ size_t last_char = strlen(path_max_tmp) - 1;
+
+ while (last_char > 0 && path_max_tmp[last_char] == '/')
+ path_max_tmp[last_char--] = '\0';
+ }
+
c = strrchr(path_max_tmp,'/');
if (c == NULL)
path_max_tmp[0] = '\0';
else {
+ /* strip redundant slashes: */
while ((path_max_tmp <= c) && *(--c) == '/') /* nothing */
;
c[1] = '\0';