conf: add safe_strtoll_base() like safe_strtol_base()

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
Jaroslav Kysela 2021-11-29 15:01:32 +01:00
parent 7ffe3d4162
commit 32d332b786
2 changed files with 9 additions and 6 deletions

View file

@ -232,6 +232,8 @@ size_t page_align(size_t size);
size_t page_size(void); size_t page_size(void);
size_t page_ptr(size_t object_offset, size_t object_size, size_t *offset, size_t *mmap_offset); size_t page_ptr(size_t object_offset, size_t object_size, size_t *offset, size_t *mmap_offset);
int safe_strtoll_base(const char *str, long long *val, int base);
static inline int safe_strtoll(const char *str, long long *val) { return safe_strtoll_base(str, val, 0); }
int safe_strtol_base(const char *str, long *val, int base); int safe_strtol_base(const char *str, long *val, int base);
static inline int safe_strtol(const char *str, long *val) { return safe_strtol_base(str, val, 0); } static inline int safe_strtol(const char *str, long *val) { return safe_strtol_base(str, val, 0); }

View file

@ -653,16 +653,17 @@ static int input_stdio_open(snd_input_t **inputp, const char *file,
return err; return err;
} }
static int safe_strtoll(const char *str, long long *val) int safe_strtoll_base(const char *str, long long *val, int base)
{ {
long long v; char *end;
int endidx; long v;
if (!*str) if (!*str)
return -EINVAL; return -EINVAL;
errno = 0; errno = 0;
if (sscanf(str, "%lli%n", &v, &endidx) < 1) v = strtoll(str, &end, base);
return -EINVAL; if (errno)
if (str[endidx]) return -errno;
if (*end)
return -EINVAL; return -EINVAL;
*val = v; *val = v;
return 0; return 0;