From: Lucas De Marchi Date: Wed, 30 Nov 2011 04:14:33 +0000 (-0200) Subject: Add underscores() helper to replace - with _ X-Git-Tag: v1~176 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8185fc91e28ed0c6a9dec2455df76aa1a16407b3;p=thirdparty%2Fkmod.git Add underscores() helper to replace - with _ --- diff --git a/libkmod/libkmod-private.h b/libkmod/libkmod-private.h index ae9a95a3..256f6ec6 100644 --- a/libkmod/libkmod-private.h +++ b/libkmod/libkmod-private.h @@ -63,5 +63,6 @@ int kmod_parse_config(struct kmod_ctx *ctx, struct kmod_config *config); void kmod_free_config(struct kmod_ctx *ctx, struct kmod_config *config); char *getline_wrapped(FILE *fp, unsigned int *linenum); +char *underscores(struct kmod_ctx *ctx, char *s); #endif diff --git a/libkmod/libkmod-util.c b/libkmod/libkmod-util.c index a1f5fa10..1e58b995 100644 --- a/libkmod/libkmod-util.c +++ b/libkmod/libkmod-util.c @@ -83,3 +83,35 @@ char *getline_wrapped(FILE *fp, unsigned int *linenum) } } } + +/* + * 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; +} +