From: Yu Watanabe Date: Wed, 23 Jun 2021 06:58:31 +0000 (+0900) Subject: udev-util: introduce udev_replace_ifname() X-Git-Tag: v249-rc2~11^2~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e1ecfef16f74dac23803c45f145939027e18eda9;p=thirdparty%2Fsystemd.git udev-util: introduce udev_replace_ifname() --- diff --git a/src/shared/udev-util.c b/src/shared/udev-util.c index 06aede9d364..f934fc157eb 100644 --- a/src/shared/udev-util.c +++ b/src/shared/udev-util.c @@ -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; diff --git a/src/shared/udev-util.h b/src/shared/udev-util.h index d1c33b86a74..276686da808 100644 --- a/src/shared/udev-util.h +++ b/src/shared/udev-util.h @@ -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);