|
|
|
@ -83,9 +83,9 @@ INLINE int str_str(const str *s, const char *sub); |
|
|
|
/* swaps the contents of two str objects */ |
|
|
|
INLINE void str_swap(str *a, str *b); |
|
|
|
/* parses a string into an int, returns default if conversion fails */ |
|
|
|
INLINE int str_to_i(str *s, int def); |
|
|
|
/* parses a string uinto an int, returns default if conversion fails */ |
|
|
|
INLINE uint str_to_ui(str *s, int def); |
|
|
|
INLINE long long str_to_i(str *s, long long def); |
|
|
|
/* parses a string into an uint, returns default if conversion fails */ |
|
|
|
INLINE unsigned long long str_to_ui(str *s, unsigned long long def); |
|
|
|
/* extracts the first/next token into "new_token" and modifies "ori_and_remaidner" in place */ |
|
|
|
INLINE int str_token(str *new_token, str *ori_and_remainder, int sep); |
|
|
|
/* same as str_token but allows for a trailing non-empty token (e.g. "foo,bar" -> "foo", "bar" ) */ |
|
|
|
@ -341,14 +341,14 @@ INLINE void str_swap(str *a, str *b) { |
|
|
|
*b = t; |
|
|
|
} |
|
|
|
|
|
|
|
INLINE int str_to_i(str *s, int def) { |
|
|
|
INLINE long long str_to_i(str *s, long long def) { |
|
|
|
char c, *ep; |
|
|
|
long ret; |
|
|
|
long long ret; |
|
|
|
if (s->len <= 0) |
|
|
|
return def; |
|
|
|
c = s->s[s->len]; |
|
|
|
s->s[s->len] = '\0'; |
|
|
|
ret = strtol(s->s, &ep, 10); |
|
|
|
ret = strtoll(s->s, &ep, 10); |
|
|
|
s->s[s->len] = c; |
|
|
|
if (ep == s->s) |
|
|
|
return def; |
|
|
|
@ -359,14 +359,14 @@ INLINE int str_to_i(str *s, int def) { |
|
|
|
return ret; |
|
|
|
} |
|
|
|
|
|
|
|
INLINE unsigned int str_to_ui(str *s, int def) { |
|
|
|
INLINE unsigned long long str_to_ui(str *s, unsigned long long def) { |
|
|
|
char c, *ep; |
|
|
|
long ret; |
|
|
|
unsigned long long ret; |
|
|
|
if (s->len <= 0) |
|
|
|
return def; |
|
|
|
c = s->s[s->len]; |
|
|
|
s->s[s->len] = '\0'; |
|
|
|
ret = strtol(s->s, &ep, 10); |
|
|
|
ret = strtoull(s->s, &ep, 10); |
|
|
|
s->s[s->len] = c; |
|
|
|
if (ep == s->s) |
|
|
|
return def; |
|
|
|
|