67 __STATIC_INLINE
bool verify_num(
const char *arg,
long *v)
72 *v = strtol(arg, &check_ptr, 0);
74 if (errno == ERANGE) {
78 return (*arg !=
'\0' && *check_ptr ==
'\0');
89 __STATIC_INLINE
bool verify_non_neg_num(
const char *arg,
unsigned long long *v)
102 *v = strtoull(arg, &check_ptr, 0);
104 if (errno == ERANGE) {
108 return (*arg !=
'\0' && *check_ptr ==
'\0');
119 __STATIC_INLINE
bool parse_u64(
const char *arg, uint64_t *val)
121 unsigned long long buf;
123 if (!verify_non_neg_num(arg, &buf)) {
127 *val = (uint64_t)buf;
139 __STATIC_INLINE
bool parse_u32(
const char *arg, uint32_t *val)
141 unsigned long long buf;
143 if (!verify_non_neg_num(arg, &buf)) {
147 if (buf > ULONG_MAX) {
151 *val = (uint32_t)buf;
163 __STATIC_INLINE
bool parse_u16(
const char *arg, uint16_t *val)
165 unsigned long long buf;
167 if (!verify_non_neg_num(arg, &buf)) {
171 if (buf > USHRT_MAX) {
175 *val = (uint16_t)buf;
187 __STATIC_INLINE
bool parse_u8(
const char *arg, uint8_t *val)
189 unsigned long long buf;
191 if (!verify_non_neg_num(arg, &buf)) {
195 if (buf > UCHAR_MAX) {
211 __STATIC_INLINE
bool parse_16(
const char *arg, int16_t *val)
215 if (!verify_num(arg, &buf)) {
219 if (buf > SHRT_MAX) {
235 __STATIC_INLINE
bool parse_bool(
const char *arg,
bool *val)
237 unsigned long long buf;
239 if (!verify_non_neg_num(arg, &buf)) {
260 __STATIC_INLINE
bool parse_size_t(
const char *arg,
size_t *val)
262 unsigned long long buf;
264 if (!verify_non_neg_num(arg, &buf)) {
268 if (
sizeof(
size_t) == 4 && buf > ULONG_MAX) {