diff options
Diffstat (limited to 'src/sp_config.c')
| -rw-r--r-- | src/sp_config.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/sp_config.c b/src/sp_config.c index ed41a6a..46742c4 100644 --- a/src/sp_config.c +++ b/src/sp_config.c | |||
| @@ -213,6 +213,21 @@ SP_PARSEKW_FN(parse_uint) { | |||
| 213 | return ret; | 213 | return ret; |
| 214 | } | 214 | } |
| 215 | 215 | ||
| 216 | SP_PARSEKW_FN(parse_ulong) { | ||
| 217 | int ret = SP_PARSER_SUCCESS; | ||
| 218 | SP_PARSE_ARG(value); | ||
| 219 | |||
| 220 | char *endptr; | ||
| 221 | errno = 0; | ||
| 222 | *(u_long*)retval = (u_long)strtoul(ZSTR_VAL(value), &endptr, 10); | ||
| 223 | if (errno != 0 || !endptr || endptr == ZSTR_VAL(value)) { | ||
| 224 | sp_log_err("config", "Failed to parse arg '%s' of `%s` on line %zu", ZSTR_VAL(value), token, kw->lineno); | ||
| 225 | ret = SP_PARSER_ERROR; | ||
| 226 | } | ||
| 227 | zend_string_release(value); | ||
| 228 | return ret; | ||
| 229 | } | ||
| 230 | |||
| 216 | SP_PARSEKW_FN(parse_cidr) { | 231 | SP_PARSEKW_FN(parse_cidr) { |
| 217 | CHECK_DUPLICATE_KEYWORD(retval); | 232 | CHECK_DUPLICATE_KEYWORD(retval); |
| 218 | SP_PARSE_ARG(value); | 233 | SP_PARSE_ARG(value); |
