]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev-util: introduce udev_replace_ifname()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 23 Jun 2021 06:58:31 +0000 (15:58 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 23 Jun 2021 07:02:05 +0000 (16:02 +0900)
src/shared/udev-util.c
src/shared/udev-util.h

index 06aede9d364697058630066f5ec107d232f4fa33..f934fc157eb527d493293ba5e5e6e1cab6855992 100644 (file)
@@ -18,6 +18,7 @@
 #include "parse-util.h"
 #include "path-util.h"
 #include "signal-util.h"
+#include "socket-util.h"
 #include "string-table.h"
 #include "string-util.h"
 #include "strxcpyx.h"
@@ -436,6 +437,22 @@ size_t udev_replace_whitespace(const char *str, char *to, size_t len) {
         return j;
 }
 
+size_t udev_replace_ifname(char *str) {
+        size_t replaced = 0;
+
+        assert(str);
+
+        /* See ifname_valid_full(). */
+
+        for (char *p = str; *p != '\0'; p++)
+                if (!ifname_valid_char(*p)) {
+                        *p = '_';
+                        replaced++;
+                }
+
+        return replaced;
+}
+
 size_t udev_replace_chars(char *str, const char *allow) {
         size_t i = 0, replaced = 0;
 
index d1c33b86a74d3666b2409ef4289d23f24761b6ca..276686da80864bb3c8d373baf7d1f7a09883e44e 100644 (file)
@@ -46,6 +46,7 @@ void log_device_uevent(sd_device *device, const char *str);
 
 int udev_rule_parse_value(char *str, char **ret_value, char **ret_endpos);
 size_t udev_replace_whitespace(const char *str, char *to, size_t len);
+size_t udev_replace_ifname(char *str);
 size_t udev_replace_chars(char *str, const char *allow);
 int udev_resolve_subsys_kernel(const char *string, char *result, size_t maxsize, bool read_value);