]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
utils: add lxc_deslashify
authorTycho Andersen <tycho.andersen@canonical.com>
Wed, 14 Sep 2016 14:46:47 +0000 (14:46 +0000)
committerTycho Andersen <tycho.andersen@canonical.com>
Fri, 16 Sep 2016 21:17:03 +0000 (15:17 -0600)
Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
src/lxc/utils.c
src/lxc/utils.h

index 27362daa31c682d6c610b02c0047fa3b3d81ee92..9a6ef4b37528f1cb9460164db8d380b4decff15a 100644 (file)
@@ -716,6 +716,24 @@ char **lxc_normalize_path(const char *path)
        return components;
 }
 
+bool lxc_deslashify(char *path)
+{
+       char **parts = NULL, *path2;
+
+       parts = lxc_normalize_path(path);
+       if (!parts)
+               return false;
+
+       path2 = lxc_string_join("/", (const char **) parts, *path == '/');
+       lxc_free_array((void **) parts, free);
+       if (!path2)
+               return false;
+
+       strncpy(path, path2, strlen(path));
+       free(path2);
+       return true;
+}
+
 char *lxc_append_paths(const char *first, const char *second)
 {
        size_t len = strlen(first) + strlen(second) + 1;
index 98b4e1374f877d7b4d9dff2f8a34a598e4ecc7b6..c2eef507b53f7be51a24b32d2d991822ee4694e8 100644 (file)
@@ -248,6 +248,8 @@ extern char *lxc_string_join(const char *sep, const char **parts, bool use_as_pr
  *     foo//bar     ->   { foo, bar, NULL }
  */
 extern char **lxc_normalize_path(const char *path);
+/* remove multiple slashes from the path, e.g. ///foo//bar -> /foo/bar */
+extern bool lxc_deslashify(char *path);
 extern char *lxc_append_paths(const char *first, const char *second);
 /* Note: the following two functions use strtok(), so they will never
  *       consider an empty element, even if two delimiters are next to