We already have a nice helper called get_option() which can be used to validate the input format. Simplify isrange() by using it. Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> --- drivers/gpio/gpio-aggregator.c | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/drivers/gpio/gpio-aggregator.c b/drivers/gpio/gpio-aggregator.c index 5be166e73381..de9ae622ca23 100644 --- a/drivers/gpio/gpio-aggregator.c +++ b/drivers/gpio/gpio-aggregator.c @@ -64,30 +64,17 @@ static char *get_arg(char **args) static bool isrange(const char *s) { - size_t n; + char **args = (char **)&s; + int dummy; + int res; - if (IS_ERR_OR_NULL(s)) + if (IS_ERR_OR_NULL(s) || *s == '\0') return false; - while (1) { - n = strspn(s, "0123456789"); - if (!n) - return false; - - s += n; - - switch (*s++) { - case '\0': - return true; - - case '-': - case ',': - break; - - default: - return false; - } - } + do { + res = get_option(args, &dummy); + } while (res); + return **args == '\0'; } static int aggr_add_gpio(struct gpio_aggregator *aggr, const char *key, -- 2.27.0