You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by be...@locus.apache.org on 2000/06/17 13:13:05 UTC
cvs commit: apache-2.0/src/main http_config.c http_core.c http_vhost.c util.c
ben 00/06/17 04:13:05
Modified: src CHANGES configure.in
src/include http_config.h http_core.h http_vhost.h httpd.h
src/main http_config.c http_core.c http_vhost.c util.c
Log:
Command handler revamp. Note that this makes the code produce a LOT of
warnings!
Revision Changes Path
1.156 +5 -0 apache-2.0/src/CHANGES
Index: CHANGES
===================================================================
RCS file: /home/cvs/apache-2.0/src/CHANGES,v
retrieving revision 1.155
retrieving revision 1.156
diff -u -r1.155 -r1.156
--- CHANGES 2000/06/16 16:40:30 1.155
+++ CHANGES 2000/06/17 11:13:03 1.156
@@ -1,4 +1,9 @@
Changes with Apache 2.0a5
+
+ *) Change configuration command setup to be properly typesafe when in
+ maintainer mode. Note that this requires a compiler that can initialise
+ unions. [Ben Laurie]
+
*) Turn on buffering for config file reads. Part of this was to
repair buffered I/O support in Unix and implement buffered
ap_fgets() for all platforms. [Brian Havard, Jeff Trawick]
1.60 +1 -1 apache-2.0/src/configure.in
Index: configure.in
===================================================================
RCS file: /home/cvs/apache-2.0/src/configure.in,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -r1.59 -r1.60
--- configure.in 2000/06/12 23:34:23 1.59
+++ configure.in 2000/06/17 11:13:03 1.60
@@ -124,7 +124,7 @@
[if test "$GCC" = "yes"; then CFLAGS="$CFLAGS -g -Wall"; else CFLAGS="$CFLAGS -g"; fi])
AC_ARG_WITH(maintainer-mode,[ --with-maintainer-mode Turn on debugging and compile time warnings],
- [if test "$GCC" = "yes"; then CFLAGS="$CFLAGS -g -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations"; else CFLAGS="$CFLAGS -g"; fi])
+ [if test "$GCC" = "yes"; then CFLAGS="$CFLAGS -g -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -DAP_DEBUG"; else CFLAGS="$CFLAGS -g"; fi])
APACHE_ENABLE_LAYOUT
APACHE_ENABLE_MODULES
1.32 +53 -4 apache-2.0/src/include/http_config.h
Index: http_config.h
===================================================================
RCS file: /home/cvs/apache-2.0/src/include/http_config.h,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- http_config.h 2000/06/11 22:06:56 1.31
+++ http_config.h 2000/06/17 11:13:03 1.32
@@ -96,9 +96,55 @@
TAKE13 /* one or three arguments */
};
+typedef struct cmd_parms_struct cmd_parms;
+
+#ifdef AP_DEBUG
+
+typedef union {
+ const char *(*no_args) (cmd_parms *parms, void *mconfig);
+ const char *(*raw_args) (cmd_parms *parms, void *mconfig,
+ const char *args);
+ const char *(*take1) (cmd_parms *parms, void *mconfig, const char *w);
+ const char *(*take2) (cmd_parms *parms, void *mconfig, const char *w,
+ const char *w2);
+ const char *(*take3) (cmd_parms *parms, void *mconfig, const char *w,
+ const char *w2, const char *w3);
+ const char *(*flag) (cmd_parms *parms, void *mconfig, int on);
+} cmd_func;
+
+# define AP_NO_ARGS func.no_args
+# define AP_RAW_ARGS func.raw_args
+# define AP_TAKE1 func.take1
+# define AP_TAKE2 func.take2
+# define AP_TAKE3 func.take3
+# define AP_FLAG func.flag
+
+# define AP_INIT_NO_ARGS(directive, func, mconfig, where, help) \
+ { directive, { .no_args=func }, mconfig, where, RAW_ARGS, help }
+# define AP_INIT_RAW_ARGS(directive, func, mconfig, where, help) \
+ { directive, { .raw_args=func }, mconfig, where, RAW_ARGS, help }
+# define AP_INIT_TAKE1(directive, func, mconfig, where, help) \
+ { directive, { .take1=func }, mconfig, where, TAKE1, help }
+# define AP_INIT_ITERATE(directive, func, mconfig, where, help) \
+ { directive, { .take1=func }, mconfig, where, ITERATE, help }
+# define AP_INIT_TAKE2(directive, func, mconfig, where, help) \
+ { directive, { .take2=func }, mconfig, where, TAKE2, help }
+# define AP_INIT_TAKE12(directive, func, mconfig, where, help) \
+ { directive, { .take2=func }, mconfig, where, TAKE12, help }
+# define AP_INIT_FLAG(directive, func, mconfig, where, help) \
+ { directive, { .flag=func }, mconfig, where, FLAG, help }
+
+#else
+
+typedef const char *(*cmd_func) ();
+
+# define AP_RAW_ARGS func
+
+#endif
+
typedef struct command_struct {
const char *name; /* Name of this command */
- const char *(*func) (); /* Function invoked */
+ cmd_func func;
void *cmd_data; /* Extra data, for functions which
* implement multiple commands...
*/
@@ -161,7 +207,8 @@
* use to *somebody*...
*/
-typedef struct {
+struct cmd_parms_struct
+ {
void *info; /* Argument to command from cmd_table */
int override; /* Which allow-override bits are set */
int limited; /* Which methods are <Limit>ed */
@@ -189,7 +236,8 @@
void *context; /* per_dir_config vector passed
* to handle_command */
const ap_directive_t *err_directive; /* directive with syntax error */
-} cmd_parms;
+
+};
/* This structure records the existence of handlers in a module... */
@@ -294,7 +342,8 @@
/* Generic command handling function... */
-API_EXPORT_NONSTD(const char *) ap_set_string_slot(cmd_parms *, char *, char *);
+API_EXPORT_NONSTD(const char *) ap_set_string_slot(cmd_parms *, void *,
+ const char *);
API_EXPORT_NONSTD(const char *) ap_set_string_slot_lower(cmd_parms *, char *, char *);
API_EXPORT_NONSTD(const char *) ap_set_flag_slot(cmd_parms *, char *, int);
API_EXPORT_NONSTD(const char *) ap_set_file_slot(cmd_parms *, char *, char *);
1.15 +3 -3 apache-2.0/src/include/http_core.h
Index: http_core.h
===================================================================
RCS file: /home/cvs/apache-2.0/src/include/http_core.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- http_core.h 2000/06/06 21:45:09 1.14
+++ http_core.h 2000/06/17 11:13:04 1.15
@@ -136,7 +136,7 @@
API_EXPORT(unsigned) ap_get_server_port(const request_rec *r);
API_EXPORT(unsigned long) ap_get_limit_req_body(const request_rec *r);
API_EXPORT(void) ap_custom_response(request_rec *r, int status, char *string);
-API_EXPORT(int) ap_exists_config_define(char *name);
+API_EXPORT(int) ap_exists_config_define(const char *name);
API_EXPORT_NONSTD(int) ap_core_translate(request_rec *r);
/* Authentication stuff. This is one of the places where compatibility
@@ -254,7 +254,7 @@
#define ADD_DEFAULT_CHARSET_ON (1)
#define ADD_DEFAULT_CHARSET_UNSET (2)
unsigned add_default_charset : 2;
- char *add_default_charset_name;
+ const char *add_default_charset_name;
/* System Resource Control */
#ifdef RLIMIT_CPU
@@ -296,7 +296,7 @@
* so it's at least a minimally functional web server on its own (and
* can be tested that way). But let's keep it to the bare minimum:
*/
- char *ap_document_root;
+ const char *ap_document_root;
/* Access control */
1.6 +2 -1 apache-2.0/src/include/http_vhost.h
Index: http_vhost.h
===================================================================
RCS file: /home/cvs/apache-2.0/src/include/http_vhost.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- http_vhost.h 2000/04/14 15:58:17 1.5
+++ http_vhost.h 2000/06/17 11:13:04 1.6
@@ -69,7 +69,8 @@
const char *ap_parse_vhost_addrs(ap_pool_t *p, const char *hostname, server_rec *s);
/* handle NameVirtualHost directive */
-const char *ap_set_name_virtual_host (cmd_parms *cmd, void *dummy, char *arg);
+const char *ap_set_name_virtual_host (cmd_parms *cmd, void *dummy,
+ const char *arg);
/* given an ip address only, give our best guess as to what vhost it is */
void ap_update_vhost_given_ip(conn_rec *conn);
1.57 +21 -3 apache-2.0/src/include/httpd.h
Index: httpd.h
===================================================================
RCS file: /home/cvs/apache-2.0/src/include/httpd.h,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -r1.56 -r1.57
--- httpd.h 2000/06/09 21:19:47 1.56
+++ httpd.h 2000/06/17 11:13:04 1.57
@@ -558,7 +558,7 @@
* each request.
*/
struct htaccess_result {
- char *dir; /* the directory to which this applies */
+ const char *dir; /* the directory to which this applies */
int override; /* the overrides allowed for the .htaccess file */
void *htaccess; /* the configuration directives */
/* the next one, or NULL if no more; N.B. never change this */
@@ -854,7 +854,7 @@
int keep_alive_max; /* Maximum requests per connection */
int keep_alive; /* Use persistent connections? */
- char *path; /* Pathname for ServerPath */
+ const char *path; /* Pathname for ServerPath */
int pathlen; /* Length of path */
ap_array_header_t *names; /* Normal names for ServerAlias servers */
@@ -1042,7 +1042,25 @@
#endif
#define strtoul strtoul_is_not_a_portable_function_use_strtol_instead
-#define ap_is_aborted(abort) (abort->aborted ==1)
+#define ap_is_aborted(abort) (abort->aborted == 1)
+
+ /* The C library has functions that allow const to be silently dropped ...
+ these macros detect the drop in maintainer mode, but use the native
+ methods far narmal builds
+ */
+#ifdef AP_DEBUG
+
+# define strrchr(s, c) ap_strrchr(s,c)
+
+char *ap_strrchr(char *s, int c);
+const char *ap_strrchr_c(const char *s, int c);
+
+#else
+
+# define ap_strrchr(s, c) strrchr(s, c)
+# define ap_strrchr_c(s, c) strrchr(s, c)
+
+#endif
#ifdef __cplusplus
}
1.63 +26 -41 apache-2.0/src/main/http_config.c
Index: http_config.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/main/http_config.c,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -r1.62 -r1.63
--- http_config.c 2000/06/16 12:00:58 1.62
+++ http_config.c 2000/06/17 11:13:04 1.63
@@ -425,10 +425,10 @@
* components (Unix and DOS), and remove them.
*/
- if (strrchr(m->name, '/'))
- m->name = 1 + strrchr(m->name, '/');
- if (strrchr(m->name, '\\'))
- m->name = 1 + strrchr(m->name, '\\');
+ if (ap_strrchr_c(m->name, '/'))
+ m->name = 1 + ap_strrchr_c(m->name, '/');
+ if (ap_strrchr_c(m->name, '\\'))
+ m->name = 1 + ap_strrchr_c(m->name, '\\');
#ifdef _OSD_POSIX /* __FILE__="*POSIX(/home/martin/apache/src/modules/standard/mod_info.c)" */
/* We cannot fix the string in-place, because it's const */
@@ -635,7 +635,7 @@
*/
static const char *invoke_cmd(const command_rec *cmd, cmd_parms *parms,
- void *mconfig, const char *args)
+ void *mconfig, const char *args)
{
char *w, *w2, *w3;
const char *errmsg;
@@ -651,16 +651,14 @@
#ifdef RESOLVE_ENV_PER_TOKEN
args = ap_resolve_env(parms->pool,args);
#endif
- return ((const char *(*)(cmd_parms *, void *, const char *))
- (cmd->func)) (parms, mconfig, args);
+ return cmd->AP_RAW_ARGS(parms, mconfig, args);
case NO_ARGS:
if (*args != 0)
return ap_pstrcat(parms->pool, cmd->name, " takes no arguments",
NULL);
- return ((const char *(*)(cmd_parms *, void *))
- (cmd->func)) (parms, mconfig);
+ return cmd->AP_NO_ARGS(parms, mconfig);
case TAKE1:
w = ap_getword_conf(parms->pool, &args);
@@ -669,11 +667,9 @@
return ap_pstrcat(parms->pool, cmd->name, " takes one argument",
cmd->errmsg ? ", " : NULL, cmd->errmsg, NULL);
- return ((const char *(*)(cmd_parms *, void *, const char *))
- (cmd->func)) (parms, mconfig, w);
+ return cmd->AP_TAKE1(parms, mconfig, w);
case TAKE2:
-
w = ap_getword_conf(parms->pool, &args);
w2 = ap_getword_conf(parms->pool, &args);
@@ -681,8 +677,7 @@
return ap_pstrcat(parms->pool, cmd->name, " takes two arguments",
cmd->errmsg ? ", " : NULL, cmd->errmsg, NULL);
- return ((const char *(*)(cmd_parms *, void *, const char *,
- const char *)) (cmd->func)) (parms, mconfig, w, w2);
+ return cmd->AP_TAKE2(parms, mconfig, w, w2);
case TAKE12:
@@ -693,9 +688,7 @@
return ap_pstrcat(parms->pool, cmd->name, " takes 1-2 arguments",
cmd->errmsg ? ", " : NULL, cmd->errmsg, NULL);
- return ((const char *(*)(cmd_parms *, void *, const char *,
- const char *)) (cmd->func)) (parms, mconfig, w,
- *w2 ? w2 : NULL);
+ return cmd->AP_TAKE2(parms, mconfig, w, *w2 ? w2 : NULL);
case TAKE3:
@@ -707,9 +700,7 @@
return ap_pstrcat(parms->pool, cmd->name, " takes three arguments",
cmd->errmsg ? ", " : NULL, cmd->errmsg, NULL);
- return ((const char *(*)(cmd_parms *, void *, const char *,
- const char *, const char *)) (cmd->func)) (parms,
- mconfig, w, w2, w3);
+ return cmd->AP_TAKE3(parms, mconfig, w, w2, w3);
case TAKE23:
@@ -722,9 +713,7 @@
" takes two or three arguments",
cmd->errmsg ? ", " : NULL, cmd->errmsg, NULL);
- return ((const char *(*)(cmd_parms *, void *, const char *,
- const char *, const char *)) (cmd->func)) (parms,
- mconfig, w, w2, w3);
+ return cmd->AP_TAKE3(parms, mconfig, w, w2, w3);
case TAKE123:
@@ -737,9 +726,7 @@
" takes one, two or three arguments",
cmd->errmsg ? ", " : NULL, cmd->errmsg, NULL);
- return ((const char *(*)(cmd_parms *, void *, const char *,
- const char *, const char *)) (cmd->func)) (parms,
- mconfig, w, w2, w3);
+ return cmd->AP_TAKE3(parms, mconfig, w, w2, w3);
case TAKE13:
@@ -752,16 +739,15 @@
" takes one or three arguments",
cmd->errmsg ? ", " : NULL, cmd->errmsg, NULL);
- return ((const char *(*)(cmd_parms *, void *, const char *,
- const char *, const char *)) (cmd->func)) (parms,
- mconfig, w, w2, w3);
+ return cmd->AP_TAKE3(parms, mconfig, w, w2, w3);
case ITERATE:
while (*(w = ap_getword_conf(parms->pool, &args)) != '\0')
- if ((errmsg = ((const char *(*)(cmd_parms *, void *,
- const char *)) (cmd->func)) (parms, mconfig, w)))
- return errmsg;
+ {
+ if ((errmsg = cmd->AP_TAKE1(parms, mconfig, w)))
+ return errmsg;
+ }
return NULL;
@@ -774,12 +760,11 @@
" requires at least two arguments",
cmd->errmsg ? ", " : NULL, cmd->errmsg, NULL);
-
while (*(w2 = ap_getword_conf(parms->pool, &args)) != '\0')
- if ((errmsg = ((const char *(*)(cmd_parms *, void *,
- const char *, const char *)) (cmd->func)) (parms,
- mconfig, w, w2)))
- return errmsg;
+ {
+ if ((errmsg = cmd->AP_TAKE2(parms, mconfig, w, w2)))
+ return errmsg;
+ }
return NULL;
@@ -791,8 +776,7 @@
return ap_pstrcat(parms->pool, cmd->name, " must be On or Off",
NULL);
- return ((const char *(*)(cmd_parms *, void *, int))
- (cmd->func)) (parms, mconfig, strcasecmp(w, "off") != 0);
+ return cmd->AP_FLAG(parms, mconfig, strcasecmp(w, "off") != 0);
default:
@@ -1101,12 +1085,13 @@
*/
API_EXPORT_NONSTD(const char *) ap_set_string_slot(cmd_parms *cmd,
- char *struct_ptr, char *arg)
+ void *struct_ptr,
+ const char *arg)
{
/* This one's pretty generic... */
int offset = (int) (long) cmd->info;
- *(char **) (struct_ptr + offset) = arg;
+ *(const char **) ((char *)struct_ptr + offset) = arg;
return NULL;
}
1.75 +221 -180 apache-2.0/src/main/http_core.c
Index: http_core.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/main/http_core.c,v
retrieving revision 1.74
retrieving revision 1.75
diff -u -r1.74 -r1.75
--- http_core.c 2000/06/15 13:42:01 1.74
+++ http_core.c 2000/06/17 11:13:04 1.75
@@ -1021,7 +1021,8 @@
return NULL;
}
-static const char *set_access_name(cmd_parms *cmd, void *dummy, char *arg)
+static const char *set_access_name(cmd_parms *cmd, void *dummy,
+ const char *arg)
{
void *sconf = cmd->server->module_config;
core_server_config *conf = ap_get_module_config(sconf, &core_module);
@@ -1054,8 +1055,10 @@
#endif /*GPROF*/
static const char *set_add_default_charset(cmd_parms *cmd,
- core_dir_config *d, char *arg)
+ void *d_, const char *arg)
{
+ core_dir_config *d=d_;
+
const char *err = ap_check_cmd_context(cmd, NOT_IN_LIMIT);
if (err != NULL) {
return err;
@@ -1074,7 +1077,8 @@
return NULL;
}
-static const char *set_document_root(cmd_parms *cmd, void *dummy, char *arg)
+static const char *set_document_root(cmd_parms *cmd, void *dummy,
+ const char *arg)
{
void *sconf = cmd->server->module_config;
core_server_config *conf = ap_get_module_config(sconf, &core_module);
@@ -1121,9 +1125,10 @@
ap_pstrdup(r->pool, string) : ap_pstrcat(r->pool, "\"", string, NULL);
}
-static const char *set_error_document(cmd_parms *cmd, core_dir_config *conf,
- char *errno_str, char *msg)
+static const char *set_error_document(cmd_parms *cmd, void *conf_,
+ const char *errno_str, const char *msg)
{
+ core_dir_config *conf=conf_;
int error_number, index_number, idx500;
enum { MSG, LOCAL_PATH, REMOTE_PATH } what = MSG;
@@ -1181,9 +1186,9 @@
return NULL;
}
-static const char *set_override(cmd_parms *cmd, core_dir_config *d,
- const char *l)
+static const char *set_override(cmd_parms *cmd, void *d_, const char *l)
{
+ core_dir_config *d=d_;
char *w;
const char *err = ap_check_cmd_context(cmd, NOT_IN_LIMIT);
@@ -1224,9 +1229,9 @@
return NULL;
}
-static const char *set_options(cmd_parms *cmd, core_dir_config *d,
- const char *l)
+static const char *set_options(cmd_parms *cmd, void *d_, const char *l)
{
+ core_dir_config *d=d_;
allow_options_t opt;
int first = 1;
char action;
@@ -1296,8 +1301,10 @@
return NULL;
}
-static const char *satisfy(cmd_parms *cmd, core_dir_config *c, char *arg)
+static const char *satisfy(cmd_parms *cmd, void *c_, const char *arg)
{
+ core_dir_config *c=c_;
+
if (!strcasecmp(arg, "all")) {
c->satisfy = SATISFY_ALL;
}
@@ -1310,10 +1317,11 @@
return NULL;
}
-static const char *require(cmd_parms *cmd, core_dir_config *c, char *arg)
+static const char *require(cmd_parms *cmd, void *c_, const char *arg)
{
require_line *r;
-
+ core_dir_config *c=c_;
+
if (!c->ap_requires) {
c->ap_requires = ap_make_array(cmd->pool, 2, sizeof(require_line));
}
@@ -1383,10 +1391,10 @@
"> directive missing closing '>'", NULL);
}
-static const char *dirsection(cmd_parms *cmd, void *dummy, const char *arg)
+static const char *dirsection(cmd_parms *cmd, void *mconfig, const char *arg)
{
const char *errmsg;
- char *endp = strrchr(arg, '>');
+ const char *endp = ap_strrchr_c(arg, '>');
int old_overrides = cmd->override;
char *old_path = cmd->path;
core_dir_config *conf;
@@ -1444,10 +1452,10 @@
return NULL;
}
-static const char *urlsection(cmd_parms *cmd, void *dummy, const char *arg)
+static const char *urlsection(cmd_parms *cmd, void *mconfig, const char *arg)
{
const char *errmsg;
- char *endp = strrchr(arg, '>');
+ const char *endp = ap_strrchr_c(arg, '>');
int old_overrides = cmd->override;
char *old_path = cmd->path;
core_dir_config *conf;
@@ -1504,16 +1512,16 @@
return NULL;
}
-static const char *filesection(cmd_parms *cmd, core_dir_config *c,
- const char *arg)
+static const char *filesection(cmd_parms *cmd, void *mconfig, const char *arg)
{
const char *errmsg;
- char *endp = strrchr(arg, '>');
+ const char *endp = ap_strrchr_c(arg, '>');
int old_overrides = cmd->override;
char *old_path = cmd->path;
core_dir_config *conf;
regex_t *r = NULL;
const command_rec *thiscmd = cmd->cmd;
+ core_dir_config *c=mconfig;
void *new_file_conf = ap_create_per_dir_config(cmd->pool);
@@ -1571,9 +1579,9 @@
return NULL;
}
-static const char *start_ifmod(cmd_parms *cmd, void *dummy, char *arg)
+static const char *start_ifmod(cmd_parms *cmd, void *mconfig, const char *arg)
{
- char *endp = strrchr(arg, '>');
+ const char *endp = ap_strrchr_c(arg, '>');
int not = (arg[0] == '!');
module *found;
@@ -1596,16 +1604,16 @@
retval = ap_build_cont_config(cmd->pool, cmd->temp_pool, cmd,
¤t, &parent, "<IfModule");
- *(ap_directive_t **)dummy = current;
+ *(ap_directive_t **)mconfig = current;
return retval;
}
else {
- *(ap_directive_t **)dummy = NULL;
+ *(ap_directive_t **)mconfig = NULL;
return ap_soak_end_container(cmd, "<IfModule");
}
}
-API_EXPORT(int) ap_exists_config_define(char *name)
+API_EXPORT(int) ap_exists_config_define(const char *name)
{
char **defines;
int i;
@@ -1619,13 +1627,13 @@
return 0;
}
-static const char *start_ifdefine(cmd_parms *cmd, void *dummy, char *arg)
+static const char *start_ifdefine(cmd_parms *cmd, void *dummy, const char *arg)
{
- char *endp;
+ const char *endp;
int defined;
int not = 0;
- endp = strrchr(arg, '>');
+ endp = ap_strrchr_c(arg, '>');
if (endp == NULL) {
return unclosed_directive(cmd);
}
@@ -1656,11 +1664,12 @@
/* httpd.conf commands... beginning with the <VirtualHost> business */
-static const char *virtualhost_section(cmd_parms *cmd, void *dummy, char *arg)
+static const char *virtualhost_section(cmd_parms *cmd, void *dummy,
+ const char *arg)
{
server_rec *main_server = cmd->server, *s;
const char *errmsg;
- char *endp = strrchr(arg, '>');
+ const char *endp = ap_strrchr_c(arg, '>');
ap_pool_t *p = cmd->pool;
const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY);
@@ -1723,7 +1732,8 @@
return NULL;
}
-static const char *add_module_command(cmd_parms *cmd, void *dummy, char *arg)
+static const char *add_module_command(cmd_parms *cmd, void *dummy,
+ const char *arg)
{
const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY);
if (err != NULL) {
@@ -1751,7 +1761,7 @@
}
static const char *set_server_string_slot(cmd_parms *cmd, void *dummy,
- char *arg)
+ const char *arg)
{
/* This one's pretty generic... */
@@ -1764,11 +1774,11 @@
return err;
}
- *(char **)(struct_ptr + offset) = arg;
+ *(const char **)(struct_ptr + offset) = arg;
return NULL;
}
-static const char *server_port(cmd_parms *cmd, void *dummy, char *arg)
+static const char *server_port(cmd_parms *cmd, void *dummy, const char *arg)
{
const char *err = ap_check_cmd_context(cmd, NOT_IN_DIR_LOC_FILE|NOT_IN_LIMIT);
int port;
@@ -1786,9 +1796,11 @@
return NULL;
}
-static const char *set_signature_flag(cmd_parms *cmd, core_dir_config *d,
- char *arg)
+static const char *set_signature_flag(cmd_parms *cmd, void *d_,
+ const char *arg)
{
+ core_dir_config *d=d_;
+
const char *err = ap_check_cmd_context(cmd, NOT_IN_LIMIT);
if (err != NULL) {
return err;
@@ -1809,7 +1821,8 @@
return NULL;
}
-static const char *set_server_root(cmd_parms *cmd, void *dummy, char *arg)
+static const char *set_server_root(cmd_parms *cmd, void *dummy,
+ const char *arg)
{
const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY);
@@ -1826,7 +1839,7 @@
return NULL;
}
-static const char *set_timeout(cmd_parms *cmd, void *dummy, char *arg)
+static const char *set_timeout(cmd_parms *cmd, void *dummy, const char *arg)
{
const char *err = ap_check_cmd_context(cmd, NOT_IN_DIR_LOC_FILE|NOT_IN_LIMIT);
if (err != NULL) {
@@ -1838,7 +1851,7 @@
}
static const char *set_keep_alive_timeout(cmd_parms *cmd, void *dummy,
- char *arg)
+ const char *arg)
{
const char *err = ap_check_cmd_context(cmd, NOT_IN_DIR_LOC_FILE|NOT_IN_LIMIT);
if (err != NULL) {
@@ -1849,7 +1862,8 @@
return NULL;
}
-static const char *set_keep_alive(cmd_parms *cmd, void *dummy, char *arg)
+static const char *set_keep_alive(cmd_parms *cmd, void *dummy,
+ const char *arg)
{
const char *err = ap_check_cmd_context(cmd, NOT_IN_DIR_LOC_FILE|NOT_IN_LIMIT);
if (err != NULL) {
@@ -1868,7 +1882,8 @@
return NULL;
}
-static const char *set_keep_alive_max(cmd_parms *cmd, void *dummy, char *arg)
+static const char *set_keep_alive_max(cmd_parms *cmd, void *dummy,
+ const char *arg)
{
const char *err = ap_check_cmd_context(cmd, NOT_IN_DIR_LOC_FILE|NOT_IN_LIMIT);
if (err != NULL) {
@@ -1879,8 +1894,9 @@
return NULL;
}
-static const char *set_idcheck(cmd_parms *cmd, core_dir_config *d, int arg)
+static const char *set_idcheck(cmd_parms *cmd, void *d_, int arg)
{
+ core_dir_config *d=d_;
const char *err = ap_check_cmd_context(cmd, NOT_IN_LIMIT);
if (err != NULL) {
return err;
@@ -1890,9 +1906,11 @@
return NULL;
}
-static const char *set_hostname_lookups(cmd_parms *cmd, core_dir_config *d,
- char *arg)
+static const char *set_hostname_lookups(cmd_parms *cmd, void *d_,
+ const char *arg)
{
+ core_dir_config *d=d_;
+
const char *err = ap_check_cmd_context(cmd, NOT_IN_LIMIT);
if (err != NULL) {
return err;
@@ -1913,7 +1931,8 @@
return NULL;
}
-static const char *set_serverpath(cmd_parms *cmd, void *dummy, char *arg)
+static const char *set_serverpath(cmd_parms *cmd, void *dummy,
+ const char *arg)
{
const char *err = ap_check_cmd_context(cmd, NOT_IN_DIR_LOC_FILE|NOT_IN_LIMIT);
if (err != NULL) {
@@ -1925,8 +1944,9 @@
return NULL;
}
-static const char *set_content_md5(cmd_parms *cmd, core_dir_config *d, int arg)
+static const char *set_content_md5(cmd_parms *cmd, void *d_, int arg)
{
+ core_dir_config *d=d_;
const char *err = ap_check_cmd_context(cmd, NOT_IN_LIMIT);
if (err != NULL) {
return err;
@@ -1936,9 +1956,10 @@
return NULL;
}
-static const char *set_use_canonical_name(cmd_parms *cmd, core_dir_config *d,
- char *arg)
+static const char *set_use_canonical_name(cmd_parms *cmd, void *d_,
+ const char *arg)
{
+ core_dir_config *d=d_;
const char *err = ap_check_cmd_context(cmd, NOT_IN_LIMIT);
if (err != NULL) {
return err;
@@ -1960,7 +1981,8 @@
}
-static const char *include_config (cmd_parms *cmd, void **dummy, char *name)
+static const char *include_config (cmd_parms *cmd, void *dummy,
+ const char *name)
{
ap_directive_t *conftree = NULL;
@@ -2048,7 +2070,8 @@
* Load an authorisation realm into our location configuration, applying the
* usual rules that apply to realms.
*/
-static const char *set_authname(cmd_parms *cmd, void *mconfig, char *word1)
+static const char *set_authname(cmd_parms *cmd, void *mconfig,
+ const char *word1)
{
core_dir_config *aconfig = (core_dir_config *)mconfig;
@@ -2141,7 +2164,8 @@
}
}
-static const char *set_serv_tokens(cmd_parms *cmd, void *dummy, char *arg)
+static const char *set_serv_tokens(cmd_parms *cmd, void *dummy,
+ const char *arg)
{
const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY);
if (err != NULL) {
@@ -2163,7 +2187,8 @@
return NULL;
}
-static const char *set_limit_req_line(cmd_parms *cmd, void *dummy, char *arg)
+static const char *set_limit_req_line(cmd_parms *cmd, void *dummy,
+ const char *arg)
{
const char *err = ap_check_cmd_context(cmd,
NOT_IN_DIR_LOC_FILE|NOT_IN_LIMIT);
@@ -2187,7 +2212,7 @@
}
static const char *set_limit_req_fieldsize(cmd_parms *cmd, void *dummy,
- char *arg)
+ const char *arg)
{
const char *err = ap_check_cmd_context(cmd,
NOT_IN_DIR_LOC_FILE|NOT_IN_LIMIT);
@@ -2211,7 +2236,8 @@
return NULL;
}
-static const char *set_limit_req_fields(cmd_parms *cmd, void *dummy, char *arg)
+static const char *set_limit_req_fields(cmd_parms *cmd, void *dummy,
+ const char *arg)
{
const char *err = ap_check_cmd_context(cmd,
NOT_IN_DIR_LOC_FILE|NOT_IN_LIMIT);
@@ -2230,9 +2256,10 @@
return NULL;
}
-static const char *set_limit_req_body(cmd_parms *cmd, core_dir_config *conf,
- char *arg)
+static const char *set_limit_req_body(cmd_parms *cmd, void *conf_,
+ const char *arg)
{
+ core_dir_config *conf=conf_;
const char *err = ap_check_cmd_context(cmd, NOT_IN_LIMIT);
if (err != NULL) {
return err;
@@ -2272,18 +2299,22 @@
#endif
#ifdef RLIMIT_CPU
-static const char *set_limit_cpu(cmd_parms *cmd, core_dir_config *conf,
- char *arg, char *arg2)
+static const char *set_limit_cpu(cmd_parms *cmd, void *conf_,
+ const char *arg, const char *arg2)
{
+ core_dir_config *conf=conf_;
+
unixd_set_rlimit(cmd, &conf->limit_cpu, arg, arg2, RLIMIT_CPU);
return NULL;
}
#endif
#if defined (RLIMIT_DATA) || defined (RLIMIT_VMEM) || defined(RLIMIT_AS)
-static const char *set_limit_mem(cmd_parms *cmd, core_dir_config *conf,
- char *arg, char * arg2)
+static const char *set_limit_mem(cmd_parms *cmd, void *conf_,
+ const char *arg, const char * arg2)
{
+ core_dir_config *conf=conf_;
+
#if defined(RLIMIT_AS)
unixd_set_rlimit(cmd, &conf->limit_mem, arg, arg2 ,RLIMIT_AS);
#elif defined(RLIMIT_DATA)
@@ -2296,9 +2327,11 @@
#endif
#ifdef RLIMIT_NPROC
-static const char *set_limit_nproc(cmd_parms *cmd, core_dir_config *conf,
- char *arg, char * arg2)
+static const char *set_limit_nproc(cmd_parms *cmd, void *conf_,
+ const char *arg, const char * arg2)
{
+ core_dir_config *conf=conf_;
+
unixd_set_rlimit(cmd, &conf->limit_nproc, arg, arg2, RLIMIT_NPROC);
return NULL;
}
@@ -2312,158 +2345,166 @@
/* Old access config file commands */
-{ "<Directory", dirsection, NULL, RSRC_CONF, RAW_ARGS,
+AP_INIT_RAW_ARGS("<Directory", dirsection, NULL, RSRC_CONF,
"Container for directives affecting resources located in the specified "
- "directories" },
-{ "<Location", urlsection, NULL, RSRC_CONF, RAW_ARGS,
+ "directories"),
+AP_INIT_RAW_ARGS("<Location", urlsection, NULL, RSRC_CONF,
"Container for directives affecting resources accessed through the "
- "specified URL paths" },
-{ "<VirtualHost", virtualhost_section, NULL, RSRC_CONF, RAW_ARGS,
+ "specified URL paths"),
+AP_INIT_RAW_ARGS("<VirtualHost", virtualhost_section, NULL, RSRC_CONF,
"Container to map directives to a particular virtual host, takes one or "
- "more host addresses" },
-{ "<Files", filesection, NULL, OR_ALL, RAW_ARGS, "Container for directives "
- "affecting files matching specified patterns" },
-{ "<Limit", ap_limit_section, NULL, OR_ALL, RAW_ARGS, "Container for "
- "authentication directives when accessed using specified HTTP methods" },
-{ "<LimitExcept", ap_limit_section, (void*)1, OR_ALL, RAW_ARGS,
+ "more host addresses"),
+AP_INIT_RAW_ARGS("<Files", filesection, NULL, OR_ALL,
+ "Container for directives affecting files matching specified patterns"),
+AP_INIT_RAW_ARGS("<Limit", ap_limit_section, NULL, OR_ALL,
+ "Container for authentication directives when accessed using specified HTTP "
+ "methods"),
+AP_INIT_RAW_ARGS("<LimitExcept", ap_limit_section, (void*)1, OR_ALL,
"Container for authentication directives to be applied when any HTTP "
- "method other than those specified is used to access the resource" },
-{ "<IfModule", start_ifmod, NULL, EXEC_ON_READ | OR_ALL, TAKE1,
- "Container for directives based on existance of specified modules" },
-{ "<IfDefine", start_ifdefine, NULL, EXEC_ON_READ | OR_ALL, TAKE1,
- "Container for directives based on existance of command line defines" },
-{ "<DirectoryMatch", dirsection, (void*)1, RSRC_CONF, RAW_ARGS,
+ "method other than those specified is used to access the resource"),
+AP_INIT_TAKE1("<IfModule", start_ifmod, NULL, EXEC_ON_READ | OR_ALL,
+ "Container for directives based on existance of specified modules"),
+AP_INIT_TAKE1("<IfDefine", start_ifdefine, NULL, EXEC_ON_READ | OR_ALL,
+ "Container for directives based on existance of command line defines"),
+AP_INIT_RAW_ARGS("<DirectoryMatch", dirsection, (void*)1, RSRC_CONF,
"Container for directives affecting resources located in the "
- "specified directories" },
-{ "<LocationMatch", urlsection, (void*)1, RSRC_CONF, RAW_ARGS,
+ "specified directories"),
+AP_INIT_RAW_ARGS("<LocationMatch", urlsection, (void*)1, RSRC_CONF,
"Container for directives affecting resources accessed through the "
- "specified URL paths" },
-{ "<FilesMatch", filesection, (void*)1, OR_ALL, RAW_ARGS,
- "Container for directives affecting files matching specified patterns" },
-{ "AuthType", ap_set_string_slot,
- (void*)XtOffsetOf(core_dir_config, ap_auth_type), OR_AUTHCFG, TAKE1,
- "An HTTP authorization type (e.g., \"Basic\")" },
-{ "AuthName", set_authname, NULL, OR_AUTHCFG, TAKE1,
- "The authentication realm (e.g. \"Members Only\")" },
-{ "Require", require, NULL, OR_AUTHCFG, RAW_ARGS,
- "Selects which authenticated users or groups may access a protected space" },
-{ "Satisfy", satisfy, NULL, OR_AUTHCFG, TAKE1,
- "access policy if both allow and require used ('all' or 'any')" },
+ "specified URL paths"),
+AP_INIT_RAW_ARGS("<FilesMatch", filesection, (void*)1, OR_ALL,
+ "Container for directives affecting files matching specified patterns"),
+AP_INIT_TAKE1("AuthType", ap_set_string_slot,
+ (void*)XtOffsetOf(core_dir_config, ap_auth_type), OR_AUTHCFG,
+ "An HTTP authorization type (e.g., \"Basic\")"),
+AP_INIT_TAKE1("AuthName", set_authname, NULL, OR_AUTHCFG,
+ "The authentication realm (e.g. \"Members Only\")"),
+AP_INIT_RAW_ARGS("Require", require, NULL, OR_AUTHCFG,
+ "Selects which authenticated users or groups may access a protected space"),
+AP_INIT_TAKE1("Satisfy", satisfy, NULL, OR_AUTHCFG,
+ "access policy if both allow and require used ('all' or 'any')"),
#ifdef GPROF
-{ "GprofDir", set_gprof_dir, NULL, RSRC_CONF, TAKE1,
- "Directory to plop gmon.out files" },
+AP_INIT_TAKE1("GprofDir", set_gprof_dir, NULL, RSRC_CONF,
+ "Directory to plop gmon.out files"),
#endif
-{ "AddDefaultCharset", set_add_default_charset, NULL, OR_FILEINFO,
- TAKE1, "The name of the default charset to add to any Content-Type without one or 'Off' to disable" },
+AP_INIT_TAKE1("AddDefaultCharset", set_add_default_charset, NULL, OR_FILEINFO,
+ "The name of the default charset to add to any Content-Type without one or 'Off' to disable"),
/* Old resource config file commands */
-{ "AccessFileName", set_access_name, NULL, RSRC_CONF, RAW_ARGS,
- "Name(s) of per-directory config files (default: .htaccess)" },
-{ "DocumentRoot", set_document_root, NULL, RSRC_CONF, TAKE1,
- "Root directory of the document tree" },
-{ "ErrorDocument", set_error_document, NULL, OR_FILEINFO, TAKE2,
- "Change responses for HTTP errors" },
-{ "AllowOverride", set_override, NULL, ACCESS_CONF, RAW_ARGS,
+AP_INIT_RAW_ARGS("AccessFileName", set_access_name, NULL, RSRC_CONF,
+ "Name(s) of per-directory config files (default: .htaccess)"),
+AP_INIT_TAKE1("DocumentRoot", set_document_root, NULL, RSRC_CONF,
+ "Root directory of the document tree"),
+AP_INIT_TAKE2("ErrorDocument", set_error_document, NULL, OR_FILEINFO,
+ "Change responses for HTTP errors"),
+AP_INIT_RAW_ARGS("AllowOverride", set_override, NULL, ACCESS_CONF,
"Controls what groups of directives can be configured by per-directory "
- "config files" },
-{ "Options", set_options, NULL, OR_OPTIONS, RAW_ARGS,
- "Set a number of attributes for a given directory" },
-{ "DefaultType", ap_set_string_slot,
+ "config files"),
+AP_INIT_RAW_ARGS("Options", set_options, NULL, OR_OPTIONS,
+ "Set a number of attributes for a given directory"),
+AP_INIT_TAKE1("DefaultType", ap_set_string_slot,
(void*)XtOffsetOf (core_dir_config, ap_default_type),
- OR_FILEINFO, TAKE1, "the default MIME type for untypable files" },
+ OR_FILEINFO, "the default MIME type for untypable files"),
/* Old server config file commands */
-{ "Port", server_port, NULL, RSRC_CONF, TAKE1, "A TCP port number"},
-{ "HostnameLookups", set_hostname_lookups, NULL, ACCESS_CONF|RSRC_CONF, TAKE1,
+AP_INIT_TAKE1("Port", server_port, NULL, RSRC_CONF, "A TCP port number"),
+AP_INIT_TAKE1("HostnameLookups", set_hostname_lookups, NULL,
+ ACCESS_CONF|RSRC_CONF,
"\"on\" to enable, \"off\" to disable reverse DNS lookups, or \"double\" to "
- "enable double-reverse DNS lookups" },
-{ "ServerAdmin", set_server_string_slot,
- (void *)XtOffsetOf (server_rec, server_admin), RSRC_CONF, TAKE1,
- "The email address of the server administrator" },
-{ "ServerName", set_server_string_slot,
- (void *)XtOffsetOf (server_rec, server_hostname), RSRC_CONF, TAKE1,
- "The hostname of the server" },
-{ "ServerSignature", set_signature_flag, NULL, OR_ALL, TAKE1,
- "En-/disable server signature (on|off|email)" },
-{ "ServerRoot", set_server_root, NULL, RSRC_CONF, TAKE1,
- "Common directory of server-related files (logs, confs, etc.)" },
-{ "ErrorLog", set_server_string_slot,
- (void *)XtOffsetOf (server_rec, error_fname), RSRC_CONF, TAKE1,
- "The filename of the error log" },
-{ "ServerAlias", set_server_alias, NULL, RSRC_CONF, RAW_ARGS,
- "A name or names alternately used to access the server" },
-{ "ServerPath", set_serverpath, NULL, RSRC_CONF, TAKE1,
- "The pathname the server can be reached at" },
-{ "Timeout", set_timeout, NULL, RSRC_CONF, TAKE1, "Timeout duration (sec)" },
-{ "KeepAliveTimeout", set_keep_alive_timeout, NULL, RSRC_CONF, TAKE1,
- "Keep-Alive timeout duration (sec)"},
-{ "MaxKeepAliveRequests", set_keep_alive_max, NULL, RSRC_CONF, TAKE1,
- "Maximum number of Keep-Alive requests per connection, or 0 for infinite" },
-{ "KeepAlive", set_keep_alive, NULL, RSRC_CONF, TAKE1,
- "Whether persistent connections should be On or Off" },
-{ "IdentityCheck", set_idcheck, NULL, RSRC_CONF|ACCESS_CONF, FLAG,
- "Enable identd (RFC 1413) user lookups - SLOW" },
-{ "ContentDigest", set_content_md5, NULL, OR_OPTIONS,
- FLAG, "whether or not to send a Content-MD5 header with each request" },
-{ "UseCanonicalName", set_use_canonical_name, NULL,
- RSRC_CONF|ACCESS_CONF, TAKE1,
- "How to work out the ServerName : Port when constructing URLs" },
+ "enable double-reverse DNS lookups"),
+AP_INIT_TAKE1("ServerAdmin", set_server_string_slot,
+ (void *)XtOffsetOf (server_rec, server_admin), RSRC_CONF,
+ "The email address of the server administrator"),
+AP_INIT_TAKE1("ServerName", set_server_string_slot,
+ (void *)XtOffsetOf (server_rec, server_hostname), RSRC_CONF,
+ "The hostname of the server"),
+AP_INIT_TAKE1("ServerSignature", set_signature_flag, NULL, OR_ALL,
+ "En-/disable server signature (on|off|email)"),
+AP_INIT_TAKE1("ServerRoot", set_server_root, NULL, RSRC_CONF,
+ "Common directory of server-related files (logs, confs, etc.)"),
+AP_INIT_TAKE1("ErrorLog", set_server_string_slot,
+ (void *)XtOffsetOf (server_rec, error_fname), RSRC_CONF,
+ "The filename of the error log"),
+AP_INIT_RAW_ARGS("ServerAlias", set_server_alias, NULL, RSRC_CONF,
+ "A name or names alternately used to access the server"),
+AP_INIT_TAKE1("ServerPath", set_serverpath, NULL, RSRC_CONF,
+ "The pathname the server can be reached at"),
+AP_INIT_TAKE1("Timeout", set_timeout, NULL, RSRC_CONF,
+ "Timeout duration (sec)"),
+AP_INIT_TAKE1("KeepAliveTimeout", set_keep_alive_timeout, NULL, RSRC_CONF,
+ "Keep-Alive timeout duration (sec)"),
+AP_INIT_TAKE1("MaxKeepAliveRequests", set_keep_alive_max, NULL, RSRC_CONF,
+ "Maximum number of Keep-Alive requests per connection, or 0 for infinite"),
+AP_INIT_TAKE1("KeepAlive", set_keep_alive, NULL, RSRC_CONF,
+ "Whether persistent connections should be On or Off"),
+AP_INIT_FLAG("IdentityCheck", set_idcheck, NULL, RSRC_CONF|ACCESS_CONF,
+ "Enable identd (RFC 1413) user lookups - SLOW"),
+AP_INIT_FLAG("ContentDigest", set_content_md5, NULL, OR_OPTIONS,
+ "whether or not to send a Content-MD5 header with each request"),
+AP_INIT_TAKE1("UseCanonicalName", set_use_canonical_name, NULL,
+ RSRC_CONF|ACCESS_CONF,
+ "How to work out the ServerName : Port when constructing URLs"),
/* TODO: RlimitFoo should all be part of mod_cgi, not in the core */
-{ "AddModule", add_module_command, NULL, RSRC_CONF | EXEC_ON_READ, ITERATE,
- "The name of a module" },
-{ "ClearModuleList", clear_module_list_command, NULL, RSRC_CONF | EXEC_ON_READ,
- NO_ARGS, NULL },
+AP_INIT_ITERATE("AddModule", add_module_command, NULL,
+ RSRC_CONF | EXEC_ON_READ, "The name of a module"),
+AP_INIT_NO_ARGS("ClearModuleList", clear_module_list_command, NULL,
+ RSRC_CONF | EXEC_ON_READ, NULL),
/* TODO: ListenBacklog in MPM */
-{ "Include", include_config, NULL, (RSRC_CONF | ACCESS_CONF | EXEC_ON_READ), TAKE1,
- "Name of the config file to be included" },
-{ "LogLevel", set_loglevel, NULL, RSRC_CONF, TAKE1,
- "Level of verbosity in error logging" },
-{ "NameVirtualHost", ap_set_name_virtual_host, NULL, RSRC_CONF, TAKE1,
- "A numeric IP address:port, or the name of a host" },
+AP_INIT_TAKE1("Include", include_config, NULL,
+ (RSRC_CONF | ACCESS_CONF | EXEC_ON_READ),
+ "Name of the config file to be included"),
+AP_INIT_TAKE1("LogLevel", set_loglevel, NULL, RSRC_CONF,
+ "Level of verbosity in error logging"),
+AP_INIT_TAKE1("NameVirtualHost", ap_set_name_virtual_host, NULL, RSRC_CONF,
+ "A numeric IP address:port, or the name of a host"),
#ifdef _OSD_POSIX
-{ "BS2000Account", set_bs2000_account, NULL, RSRC_CONF, TAKE1,
- "Name of server User's bs2000 logon account name" },
+AP_INIT_TAKE1("BS2000Account", set_bs2000_account, NULL, RSRC_CONF,
+ "Name of server User's bs2000 logon account name"),
#endif
#ifdef WIN32
-{ "ScriptInterpreterSource", set_interpreter_source, NULL, OR_FILEINFO, TAKE1,
- "Where to find interpreter to run Win32 scripts (Registry or script shebang line)" },
+AP_INIT_TAKE1("ScriptInterpreterSource", set_interpreter_source, NULL,
+ OR_FILEINFO,
+ "Where to find interpreter to run Win32 scripts (Registry or script shebang line)"),
#endif
-{ "ServerTokens", set_serv_tokens, NULL, RSRC_CONF, TAKE1,
- "Determine tokens displayed in the Server: header - Min(imal), OS or Full" },
-{ "LimitRequestLine", set_limit_req_line, NULL, RSRC_CONF, TAKE1,
- "Limit on maximum size of an HTTP request line"},
-{ "LimitRequestFieldsize", set_limit_req_fieldsize, NULL, RSRC_CONF, TAKE1,
- "Limit on maximum size of an HTTP request header field"},
-{ "LimitRequestFields", set_limit_req_fields, NULL, RSRC_CONF, TAKE1,
- "Limit (0 = unlimited) on max number of header fields in a request message"},
-{ "LimitRequestBody", set_limit_req_body,
- (void*)XtOffsetOf(core_dir_config, limit_req_body),
- OR_ALL, TAKE1,
- "Limit (in bytes) on maximum size of request message body" },
+AP_INIT_TAKE1("ServerTokens", set_serv_tokens, NULL, RSRC_CONF,
+ "Determine tokens displayed in the Server: header - Min(imal), OS or Full"),
+AP_INIT_TAKE1("LimitRequestLine", set_limit_req_line, NULL, RSRC_CONF,
+ "Limit on maximum size of an HTTP request line"),
+AP_INIT_TAKE1("LimitRequestFieldsize", set_limit_req_fieldsize, NULL,
+ RSRC_CONF,
+ "Limit on maximum size of an HTTP request header field"),
+AP_INIT_TAKE1("LimitRequestFields", set_limit_req_fields, NULL, RSRC_CONF,
+ "Limit (0 = unlimited) on max number of header fields in a request message"),
+AP_INIT_TAKE1("LimitRequestBody", set_limit_req_body,
+ (void*)XtOffsetOf(core_dir_config, limit_req_body), OR_ALL,
+ "Limit (in bytes) on maximum size of request message body"),
/* System Resource Controls */
-{ "RLimitCPU",
#ifdef RLIMIT_CPU
- set_limit_cpu, (void*)XtOffsetOf(core_dir_config, limit_cpu),
+AP_INIT_TAKE12("RLimitCPU", set_limit_cpu,
+ (void*)XtOffsetOf(core_dir_config, limit_cpu),
+ OR_ALL, "Soft/hard limits for max CPU usage in seconds"),
#else
- no_set_limit, NULL,
+AP_INIT_TAKE12("RLimitCPU", no_set_limit, NULL,
+ OR_ALL, "Soft/hard limits for max CPU usage in seconds"),
#endif
- OR_ALL, TAKE12, "Soft/hard limits for max CPU usage in seconds" },
-{ "RLimitMEM",
#if defined (RLIMIT_DATA) || defined (RLIMIT_VMEM) || defined (RLIMIT_AS)
- set_limit_mem, (void*)XtOffsetOf(core_dir_config, limit_mem),
+AP_INIT_TAKE12("RLimitMEM", set_limit_mem,
+ (void*)XtOffsetOf(core_dir_config, limit_mem),
+ OR_ALL, "Soft/hard limits for max memory usage per process"),
#else
- no_set_limit, NULL,
+AP_INIT_TAKE12("RLimitMEM", no_set_limit, NULL,
+ OR_ALL, "Soft/hard limits for max memory usage per process"),
#endif
- OR_ALL, TAKE12, "Soft/hard limits for max memory usage per process" },
-{ "RLimitNPROC",
#ifdef RLIMIT_NPROC
- set_limit_nproc, (void*)XtOffsetOf(core_dir_config, limit_nproc),
+AP_INIT_TAKE12("RLimitNPROC", set_limit_nproc,
+ (void*)XtOffsetOf(core_dir_config, limit_nproc),
+ OR_ALL, "soft/hard limits for max number of processes per uid"),
#else
- no_set_limit, NULL,
+AP_INIT_TAKE12("RLimitNPROC", no_set_limit, NULL,
+ OR_ALL, "soft/hard limits for max number of processes per uid"),
#endif
- OR_ALL, TAKE12, "soft/hard limits for max number of processes per uid" },
{ NULL }
};
1.21 +4 -3 apache-2.0/src/main/http_vhost.c
Index: http_vhost.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/main/http_vhost.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- http_vhost.c 2000/06/13 21:36:17 1.20
+++ http_vhost.c 2000/06/17 11:13:05 1.21
@@ -179,8 +179,8 @@
* *paddr is the variable used to keep track of **paddr between calls
* port is the default port to assume
*/
-static const char *get_addresses(ap_pool_t *p, char *w, server_addr_rec ***paddr,
- unsigned port)
+static const char *get_addresses(ap_pool_t *p, const char *w,
+ server_addr_rec ***paddr, unsigned port)
{
struct hostent *hep;
unsigned long my_addr;
@@ -282,7 +282,8 @@
}
-const char *ap_set_name_virtual_host (cmd_parms *cmd, void *dummy, char *arg)
+const char *ap_set_name_virtual_host (cmd_parms *cmd, void *dummy,
+ const char *arg)
{
/* use whatever port the main server has at this point */
return get_addresses(cmd->pool, arg, &name_vhost_list_tail,
1.55 +11 -0 apache-2.0/src/main/util.c
Index: util.c
===================================================================
RCS file: /home/cvs/apache-2.0/src/main/util.c,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -r1.54 -r1.55
--- util.c 2000/06/16 16:41:21 1.54
+++ util.c 2000/06/17 11:13:05 1.55
@@ -2016,3 +2016,14 @@
*outchr = '\0';
return outstring;
}
+
+#ifdef AP_DEBUG
+# undef strrchr
+
+char *ap_strrchr(char *s, int c)
+{ return strrchr(s,c); }
+
+const char *ap_strrchr_c(const char *s, int c)
+{ return strrchr(s,c); }
+
+#endif