]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev: move util_path_encode() and rename it to escape_path()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 14 Dec 2020 07:17:19 +0000 (16:17 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 15 Dec 2020 17:14:47 +0000 (02:14 +0900)
src/libudev/libudev-util.c
src/libudev/libudev-util.h
src/udev/udev-node.c

index 45977339ac3a00628ea5419d606a4b4769601517..f4f686fc88a7bfbfe59e41875be945038fe9eadd 100644 (file)
@@ -75,40 +75,6 @@ int util_resolve_subsys_kernel(const char *string, char *result, size_t maxsize,
         return 0;
 }
 
-size_t util_path_encode(const char *src, char *dest, size_t size) {
-        size_t i, j;
-
-        assert(src);
-        assert(dest);
-
-        for (i = 0, j = 0; src[i] != '\0'; i++) {
-                if (src[i] == '/') {
-                        if (j+4 >= size) {
-                                j = 0;
-                                break;
-                        }
-                        memcpy(&dest[j], "\\x2f", 4);
-                        j += 4;
-                } else if (src[i] == '\\') {
-                        if (j+4 >= size) {
-                                j = 0;
-                                break;
-                        }
-                        memcpy(&dest[j], "\\x5c", 4);
-                        j += 4;
-                } else {
-                        if (j+1 >= size) {
-                                j = 0;
-                                break;
-                        }
-                        dest[j] = src[i];
-                        j++;
-                }
-        }
-        dest[j] = '\0';
-        return j;
-}
-
 /* allow chars in allow list, plain ascii, hex-escaping and valid utf8 */
 size_t util_replace_chars(char *str, const char *allow) {
         size_t i = 0, replaced = 0;
index d2b22f99745ff77a64c3aee71b6a8826016a312a..dd0561d90e97a52ab2a43e6ae10019a4944b3dcd 100644 (file)
@@ -10,7 +10,6 @@
 #define UTIL_NAME_SIZE                       512
 #define UTIL_LINE_SIZE                     16384
 #define UDEV_ALLOWED_CHARS_INPUT        "/ $%?,"
-size_t util_path_encode(const char *src, char *dest, size_t size);
 size_t util_replace_chars(char *str, const char *white);
 int util_resolve_subsys_kernel(const char *string, char *result, size_t maxsize, bool read_value);
 
index 2cc78c9e2f4294d0d1b91c1364671d55182f182c..9cb78ae8371595a54c01c97cc72f6739c57a7a8d 100644 (file)
@@ -192,6 +192,40 @@ static int link_find_prioritized(sd_device *dev, bool add, const char *stackdir,
         return 0;
 }
 
+static size_t escape_path(const char *src, char *dest, size_t size) {
+        size_t i, j;
+
+        assert(src);
+        assert(dest);
+
+        for (i = 0, j = 0; src[i] != '\0'; i++) {
+                if (src[i] == '/') {
+                        if (j+4 >= size) {
+                                j = 0;
+                                break;
+                        }
+                        memcpy(&dest[j], "\\x2f", 4);
+                        j += 4;
+                } else if (src[i] == '\\') {
+                        if (j+4 >= size) {
+                                j = 0;
+                                break;
+                        }
+                        memcpy(&dest[j], "\\x5c", 4);
+                        j += 4;
+                } else {
+                        if (j+1 >= size) {
+                                j = 0;
+                                break;
+                        }
+                        dest[j] = src[i];
+                        j++;
+                }
+        }
+        dest[j] = '\0';
+        return j;
+}
+
 /* manage "stack of names" with possibly specified device priorities */
 static int link_update(sd_device *dev, const char *slink, bool add) {
         _cleanup_free_ char *target = NULL, *filename = NULL, *dirname = NULL;
@@ -206,7 +240,7 @@ static int link_update(sd_device *dev, const char *slink, bool add) {
         if (r < 0)
                 return log_device_debug_errno(dev, r, "Failed to get id_filename: %m");
 
-        util_path_encode(slink + STRLEN("/dev"), name_enc, sizeof(name_enc));
+        escape_path(slink + STRLEN("/dev"), name_enc, sizeof(name_enc));
         dirname = path_join("/run/udev/links/", name_enc);
         if (!dirname)
                 return log_oom();