diff options
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 ; +} |
