// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-FileCopyrightText: 2020 Alyssa Ross #define _GNU_SOURCE #include "num.h" #include #include int getu32(const char *s, uint32_t min, uint32_t max, uint32_t *out) { unsigned long l; if (getul(s, min, max, &l) == -1) return -1; *out = (uint32_t)l; return 0; } int getul(const char *s, unsigned long min, unsigned long max, unsigned long *out) { char *endptr; if (!s || !isdigit(s[0]) || (s[0] == '0' && s[1])) return -1; *out = strtoul(s, &endptr, 10); if (*endptr || *out < min || *out > max) return -1; return 0; }