Add underscores() helper to replace - with _
diff --git a/libkmod/libkmod-util.c b/libkmod/libkmod-util.c
index a1f5fa1..1e58b99 100644
--- a/libkmod/libkmod-util.c
+++ b/libkmod/libkmod-util.c
@@ -83,3 +83,35 @@
}
}
}
+
+/*
+ * Replace dashes with underscores.
+ * Dashes inside character range patterns (e.g. [0-9]) are left unchanged.
+ */
+char *underscores(struct kmod_ctx *ctx, char *s)
+{
+ unsigned int i;
+
+ if (!s)
+ return NULL;
+
+ for (i = 0; s[i]; i++) {
+ switch (s[i]) {
+ case '-':
+ s[i] = '_';
+ break;
+
+ case ']':
+ INFO(ctx, "Unmatched bracket in %s\n", s);
+ break;
+
+ case '[':
+ i += strcspn(&s[i], "]");
+ if (!s[i])
+ INFO(ctx, "Unmatched bracket in %s\n", s);
+ break;
+ }
+ }
+ return s;
+}
+