From cd7883893c7ca99e22a3a114d8796117435f7d2c Mon Sep 17 00:00:00 2001 From: Doug MacEachern Date: Fri, 20 Apr 2001 16:43:39 +0000 Subject: [PATCH] Add ap_set_int_slot() function PR: Obtained from: Submitted by: John K. Sterling Reviewed by: dougm git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@88902 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 3 +++ include/http_config.h | 12 ++++++++++++ server/config.c | 19 +++++++++++++++++++ support/httpd.exp | 1 + 4 files changed, 35 insertions(+) diff --git a/CHANGES b/CHANGES index ec7454f555..ba886eaf9f 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,8 @@ Changes with Apache 2.0.18-dev + *) Add ap_set_int_slot() function + [John K. Sterling ] + *) Under certain circumstances, Apache did not supply the right response headers when requiring authentication. [Gertjan van Wingerde ] PR#7114 diff --git a/include/http_config.h b/include/http_config.h index 997a680ce1..4b7c5b2de5 100644 --- a/include/http_config.h +++ b/include/http_config.h @@ -482,6 +482,18 @@ AP_DECLARE(void) ap_set_module_config(ap_conf_vector_t *cv, const module *m, AP_DECLARE_NONSTD(const char *) ap_set_string_slot(cmd_parms *cmd, void *struct_ptr, const char *arg); +/** + * Generic command handling function for integers + * @param cmd The command parameters for this directive + * @param struct_ptr pointer into a given type + * @param arg The argument to the directive + * @return An error string or NULL on success + * @deffunc const char *ap_set_int_slot(cmd_parms *cmd, void *struct_ptr, const char *arg) + */ +AP_DECLARE_NONSTD(const char *) ap_set_int_slot(cmd_parms *cmd, + void *struct_ptr, + const char *arg); + /** * Return true if the specified method is limited by being listed in * a container, or by *not* being listed in a diff --git a/server/config.c b/server/config.c index 8391140f21..52fe13ede1 100644 --- a/server/config.c +++ b/server/config.c @@ -1061,6 +1061,25 @@ AP_DECLARE_NONSTD(const char *) ap_set_string_slot(cmd_parms *cmd, return NULL; } +AP_DECLARE_NONSTD(const char *) ap_set_int_slot(cmd_parms *cmd, + void *struct_ptr, + const char *arg) +{ + char *endptr; + char *error_str = NULL; + int offset = (int) (long) cmd->info; + + *(int *) (struct_ptr + offset) = strtol(arg, &endptr, 10); + + if ((*arg == '\0') || (*endptr != '\0')) { + error_str = apr_psprintf(cmd->pool, + "Invalid value for directive %s, expected integer", + cmd->directive->directive); + } + + return error_str; +} + AP_DECLARE_NONSTD(const char *) ap_set_string_slot_lower(cmd_parms *cmd, void *struct_ptr, const char *arg_) diff --git a/support/httpd.exp b/support/httpd.exp index 1bc4b8ae48..49fa9c7a41 100644 --- a/support/httpd.exp +++ b/support/httpd.exp @@ -319,6 +319,7 @@ ap_set_content_length ap_set_etag ap_set_file_slot ap_set_flag_slot +ap_set_int_slot ap_set_keepalive ap_set_last_modified ap_set_listenbacklog -- 2.50.1