summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/common/pathfuncs.c23
-rw-r--r--firmware/export/pathfuncs.h1
2 files changed, 4 insertions, 20 deletions
diff --git a/firmware/common/pathfuncs.c b/firmware/common/pathfuncs.c
index e9218ea2c7..db3abe6940 100644
--- a/firmware/common/pathfuncs.c
+++ b/firmware/common/pathfuncs.c
@@ -339,23 +339,6 @@ size_t path_dirname(const char *name, const char **nameptr)
339 return q - name; 339 return q - name;
340} 340}
341 341
342/* Removes leading separators from a path
343 * "" *nameptr->NUL, count=0: ""
344 * "/" *nameptr->/, count=1: "/"
345 * "//" *nameptr->2nd /, count=2: "/"
346 * "a/" *nameptr->a/, count=0: "a/"
347 * "//b//" *nameptr->2nd /, count=2: "/b//"
348 * "/c/" *nameptr->/, count=1: "/c/"
349 */
350size_t path_strip_leading_separators(const char *name, const char **nameptr)
351{
352 const char *p = name;
353 *nameptr = p;
354 while (*(p) == PATH_SEPCH && *(++p) == PATH_SEPCH)
355 *nameptr = p;
356 return p - name;
357}
358
359/* Removes trailing separators from a path 342/* Removes trailing separators from a path
360 * "" *nameptr->NUL, len=0: "" 343 * "" *nameptr->NUL, len=0: ""
361 * "/" *nameptr->/, len=1: "/" 344 * "/" *nameptr->/, len=1: "/"
@@ -503,9 +486,11 @@ size_t path_append_ex(char *buf, const char *basepath, size_t basepath_max,
503 len = strlen(buf); 486 len = strlen(buf);
504 else if (basepath) 487 else if (basepath)
505 { 488 {
506 path_strip_leading_separators(basepath, &basepath); 489 /* strip extra leading separators */
490 while (*basepath == PATH_SEPCH && *(basepath + 1) == PATH_SEPCH)
491 basepath++;
507 len = strlcpy(buf, basepath, bufsize); 492 len = strlcpy(buf, basepath, bufsize);
508 if (basepath_max < len) 493 if (basepath_max < len) /*if needed truncate basepath to basepath_max */
509 { 494 {
510 len = basepath_max; 495 len = basepath_max;
511 buf[basepath_max] = '\0'; 496 buf[basepath_max] = '\0';
diff --git a/firmware/export/pathfuncs.h b/firmware/export/pathfuncs.h
index 03495e5ab2..1b18f22d06 100644
--- a/firmware/export/pathfuncs.h
+++ b/firmware/export/pathfuncs.h
@@ -87,7 +87,6 @@ int make_volume_root(int volume, char *dst);
87int path_strip_drive(const char *name, const char **nameptr, bool greedy); 87int path_strip_drive(const char *name, const char **nameptr, bool greedy);
88size_t path_basename(const char *name, const char **nameptr); 88size_t path_basename(const char *name, const char **nameptr);
89size_t path_dirname(const char *name, const char **nameptr); 89size_t path_dirname(const char *name, const char **nameptr);
90size_t path_strip_leading_separators(const char *name, const char **nameptr);
91size_t path_strip_trailing_separators(const char *name, const char **nameptr); 90size_t path_strip_trailing_separators(const char *name, const char **nameptr);
92void path_correct_separators(char *dstpath, const char *path); 91void path_correct_separators(char *dstpath, const char *path);
93void path_remove_dot_segments(char *dstpath, const char *path); 92void path_remove_dot_segments(char *dstpath, const char *path);