diff options
author | Laurent Bercot <ska-skaware@skarnet.org> | 2019-07-19 12:34:44 +0000 |
---|---|---|
committer | Laurent Bercot <ska-skaware@skarnet.org> | 2019-07-19 12:34:44 +0000 |
commit | 34f0e76ca0135b2b302e2b079482a4038149b079 (patch) | |
tree | 7a91cd9bb866d06b9273212cf5136ccb158e2e29 /src/libstddjb/uint640_scan_base_max.c | |
parent | fd7dc9d1d7311b05e92464de1fc4eab6f2407b51 (diff) | |
download | skalibs-34f0e76ca0135b2b302e2b079482a4038149b079.tar.xz |
bits-fmtscan refactor, part two
Diffstat (limited to 'src/libstddjb/uint640_scan_base_max.c')
-rw-r--r-- | src/libstddjb/uint640_scan_base_max.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/libstddjb/uint640_scan_base_max.c b/src/libstddjb/uint640_scan_base_max.c new file mode 100644 index 0000000..5487f98 --- /dev/null +++ b/src/libstddjb/uint640_scan_base_max.c @@ -0,0 +1,15 @@ +/* ISC license. */ + +#include <errno.h> + +#include <skalibs/uint64.h> +#include <skalibs/fmtscan.h> + +size_t uint640_scan_base_max (char const *s, uint64_t *u, uint8_t base, uint64_t max) +{ + size_t pos = uint640_scan_base_max(s, u, base, max) ; + if (!pos) return (errno = EINVAL, 0) ; + if (!s[pos]) return pos ; + errno = fmtscan_num(s[pos], base) < base ? ERANGE : EINVAL ; + return 0 ; +} |