Add helper alias_normalize()
diff --git a/libkmod/libkmod-util.c b/libkmod/libkmod-util.c
index c5550b9..177b51a 100644
--- a/libkmod/libkmod-util.c
+++ b/libkmod/libkmod-util.c
@@ -118,6 +118,45 @@
return s;
}
+inline int alias_normalize(const char *alias, char buf[NAME_MAX], size_t *len)
+{
+ size_t s;
+
+ for (s = 0; s < NAME_MAX - 1; s++) {
+ const char c = alias[s];
+ switch (c) {
+ case '-':
+ buf[s] = '_';
+ break;
+ case ']':
+ return -EINVAL;
+ case '[':
+ while (alias[s] != ']' &&
+ alias[s] != '.' && alias[s] != '\0')
+ s++;
+
+ if (alias[s] != ']')
+ return -EINVAL;
+
+ s++;
+ break;
+ case '\0':
+ case '.':
+ goto finish;
+ default:
+ buf[s] = c;
+ }
+ }
+
+finish:
+ buf[s] = '\0';
+
+ if (len)
+ *len = s;
+
+ return 0;
+}
+
bool startswith(const char *s, const char *prefix) {
size_t sl, pl;