dgaudet 97/09/15 17:18:06
Modified: src INDENT src/main http_config.c http_config.h Log: indent Revision Changes Path 1.18 +6 -8 apachen/src/INDENT Index: INDENT =================================================================== RCS file: /export/home/cvs/apachen/src/INDENT,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- INDENT 1997/09/15 23:58:10 1.17 +++ INDENT 1997/09/16 00:17:55 1.18 @@ -8,16 +8,16 @@ alloc.h DONE by Dean buff.c DONE by Dean buff.h DONE by Dean - conf.h + conf.h RESERVED by Dean dummy.c explain.c explain.h fnmatch.c fnmatch.h http_bprintf.c - http_conf_globals.h - http_config.c RESERVED by Dean - http_config.h RESERVED by Dean + http_conf_globals.h RESERVED by Dean + http_config.c DONE by Dean + http_config.h DONE by Dean http_core.c RESERVED by Randy http_core.h RESERVED by Randy http_log.c RESERVED by Randy @@ -28,15 +28,13 @@ http_protocol.h DONE by Roy http_request.c DONE by Roy http_request.h DONE by Roy - httpd.h + httpd.h RESERVED by Dean md5.h md5c.c multithread.h - os-inline.c - os.h rfc1413.c rfc1413.h - scoreboard.h + scoreboard.h RESERVED by Dean util.c DONE by Randy util_date.c DONE by Randy util_date.h DONE by Randy 1.80 +540 -503 apachen/src/main/http_config.c Index: http_config.c =================================================================== RCS file: /export/home/cvs/apachen/src/main/http_config.c,v retrieving revision 1.79 retrieving revision 1.80 diff -u -r1.79 -r1.80 --- http_config.c 1997/09/12 22:55:15 1.79 +++ http_config.c 1997/09/16 00:17:59 1.80 @@ -93,10 +93,10 @@ */ static int dynamic_modules = 0; module *top_module = NULL; - -typedef int (*handler_func)(request_rec *); -typedef void *(*dir_maker_func)(pool *, char *); -typedef void *(*merger_func)(pool *, void *, void *); + +typedef int (*handler_func) (request_rec *); +typedef void *(*dir_maker_func) (pool *, char *); +typedef void *(*merger_func) (pool *, void *, void *); /* Dealing with config vectors. These are associated with per-directory, * per-server, and per-request configuration, and have a void* pointer for @@ -109,86 +109,87 @@ * overridden). */ -API_EXPORT(void *) get_module_config (void *conf_vector, module *m) +API_EXPORT(void *) get_module_config(void *conf_vector, module *m) { - void **confv = (void**)conf_vector; - return confv[m->module_index]; + void **confv = (void **) conf_vector; + return confv[m->module_index]; } -API_EXPORT(void) set_module_config (void *conf_vector, module *m, void *val) +API_EXPORT(void) set_module_config(void *conf_vector, module *m, void *val) { - void **confv = (void**)conf_vector; - confv[m->module_index] = val; + void **confv = (void **) conf_vector; + confv[m->module_index] = val; } void * -create_empty_config (pool *p) + create_empty_config(pool *p) { - void **conf_vector = (void **)pcalloc(p, sizeof(void*) * - (total_modules+DYNAMIC_MODULE_LIMIT)); - return (void *)conf_vector; + void **conf_vector = (void **) pcalloc(p, sizeof(void *) * + (total_modules + DYNAMIC_MODULE_LIMIT)); + return (void *) conf_vector; } void * -create_default_per_dir_config (pool *p) + create_default_per_dir_config(pool *p) { - void **conf_vector = (void **)pcalloc(p, sizeof(void*) * (total_modules+DYNAMIC_MODULE_LIMIT)); - module *modp; + void **conf_vector = (void **) pcalloc(p, sizeof(void *) * (total_modules + DYNAMIC_MODULE_LIMIT)); + module *modp; - for (modp = top_module; modp; modp = modp->next) { - dir_maker_func df = modp->create_dir_config; + for (modp = top_module; modp; modp = modp->next) { + dir_maker_func df = modp->create_dir_config; - if (df) conf_vector[modp->module_index] = (*df)(p, NULL); - } + if (df) + conf_vector[modp->module_index] = (*df) (p, NULL); + } - return (void*)conf_vector; + return (void *) conf_vector; } void * -merge_per_dir_configs (pool *p, void *base, void *new) + merge_per_dir_configs(pool *p, void *base, void *new) { - void **conf_vector = (void **)palloc(p, sizeof(void*) * total_modules); - void **base_vector = (void **) base; - void **new_vector = (void **) new; - module *modp; - - for (modp = top_module; modp; modp = modp->next) { - merger_func df = modp->merge_dir_config; - int i = modp->module_index; - - if (df && new_vector[i]) - conf_vector[i] = (*df)(p, base_vector[i], new_vector[i]); - else - conf_vector[i] = new_vector[i]? new_vector[i] : base_vector[i]; - } + void **conf_vector = (void **) palloc(p, sizeof(void *) * total_modules); + void **base_vector = (void **) base; + void **new_vector = (void **) new; + module *modp; - return (void*)conf_vector; + for (modp = top_module; modp; modp = modp->next) { + merger_func df = modp->merge_dir_config; + int i = modp->module_index; + + if (df && new_vector[i]) + conf_vector[i] = (*df) (p, base_vector[i], new_vector[i]); + else + conf_vector[i] = new_vector[i] ? new_vector[i] : base_vector[i]; + } + + return (void *) conf_vector; } void * -create_server_config (pool *p, server_rec *s) + create_server_config(pool *p, server_rec *s) { - void **conf_vector = (void **)pcalloc(p, sizeof(void*) * (total_modules+DYNAMIC_MODULE_LIMIT)); - module *modp; + void **conf_vector = (void **) pcalloc(p, sizeof(void *) * (total_modules + DYNAMIC_MODULE_LIMIT)); + module *modp; - for (modp = top_module; modp; modp = modp->next) { - if (modp->create_server_config) - conf_vector[modp->module_index]=(*modp->create_server_config)(p,s); - } + for (modp = top_module; modp; modp = modp->next) { + if (modp->create_server_config) + conf_vector[modp->module_index] = (*modp->create_server_config) (p, s); + } - return (void*)conf_vector; + return (void *) conf_vector; } -void merge_server_configs (pool *p, void *base, void *virt) +void merge_server_configs(pool *p, void *base, void *virt) { /* Can reuse the 'virt' vector for the spine of it, since we don't * have to deal with the moral equivalent of .htaccess files here... */ - void **base_vector = (void **)base; - void **virt_vector = (void **)virt; + void **base_vector = (void **) base; + void **virt_vector = (void **) virt; module *modp; - + for (modp = top_module; modp; modp = modp->next) { merger_func df = modp->merge_server_config; int i = modp->module_index; @@ -196,30 +197,33 @@ if (!virt_vector[i]) virt_vector[i] = base_vector[i]; else if (df) - virt_vector[i] = (*df)(p, base_vector[i], virt_vector[i]); + virt_vector[i] = (*df) (p, base_vector[i], virt_vector[i]); } } - -void *create_connection_config (pool *p) { - return create_empty_config (p); + +void *create_connection_config(pool *p) +{ + return create_empty_config(p); } -void *create_request_config (pool *p) { - return create_empty_config (p); +void *create_request_config(pool *p) +{ + return create_empty_config(p); } -void *create_per_dir_config (pool *p) { - return create_empty_config (p); +void *create_per_dir_config(pool *p) +{ + return create_empty_config(p); } #ifdef EXPLAIN -struct - { +struct { int offset; char *method; - } aMethods[]= - { +} aMethods[] = + +{ #define m(meth) { XtOffsetOf(module,meth),#meth } m(translate_handler), m(check_user_id), @@ -227,21 +231,21 @@ m(type_checker), m(fixer_upper), m(logger), - { -1,"?" }, + { -1, "?" }, #undef m - }; +}; -char *ShowMethod(module *modp,int offset) - { +char *ShowMethod(module *modp, int offset) +{ int n; static char buf[200]; - for(n=0 ; aMethods[n].offset >= 0 ; ++n) - if(aMethods[n].offset == offset) + for (n = 0; aMethods[n].offset >= 0; ++n) + if (aMethods[n].offset == offset) break; - ap_snprintf(buf, sizeof(buf), "%s:%s",modp->name,aMethods[n].method); + ap_snprintf(buf, sizeof(buf), "%s:%s", modp->name, aMethods[n].method); return buf; - } +} #else #define ShowMethod(modp,offset) #endif @@ -259,16 +263,17 @@ * everything. If you think about it, this is really just like a sparse array * implementation to avoid scanning the zero entries. */ -static const int method_offsets[] = { - XtOffsetOf (module, translate_handler), - XtOffsetOf (module, check_user_id), - XtOffsetOf (module, auth_checker), - XtOffsetOf (module, access_checker), - XtOffsetOf (module, type_checker), - XtOffsetOf (module, fixer_upper), - XtOffsetOf (module, logger), - XtOffsetOf (module, header_parser), - XtOffsetOf (module, post_read_request) +static const int method_offsets[] = +{ + XtOffsetOf(module, translate_handler), + XtOffsetOf(module, check_user_id), + XtOffsetOf(module, auth_checker), + XtOffsetOf(module, access_checker), + XtOffsetOf(module, type_checker), + XtOffsetOf(module, fixer_upper), + XtOffsetOf(module, logger), + XtOffsetOf(module, header_parser), + XtOffsetOf(module, post_read_request) }; #define NMETHODS (sizeof (method_offsets)/sizeof (method_offsets[0])) @@ -296,8 +301,7 @@ * add_module. * XXX: this breaks if modules dink with their methods pointers */ -static void -build_method_shortcuts (void) +static void build_method_shortcuts(void) { module *modp; int how_many_ptrs; @@ -307,27 +311,27 @@ if (method_ptrs) { /* free up any previous set of method_ptrs */ - free (method_ptrs); + free(method_ptrs); } /* first we count how many functions we have */ how_many_ptrs = 0; for (modp = top_module; modp; modp = modp->next) { - for (i = 0; i<NMETHODS; ++i) { - if (*(handler_func *)(method_offsets[i] + (char *)modp)) { + for (i = 0; i < NMETHODS; ++i) { + if (*(handler_func *) (method_offsets[i] + (char *) modp)) { ++how_many_ptrs; } } } - method_ptrs = malloc ((how_many_ptrs+NMETHODS)*sizeof (handler_func)); + method_ptrs = malloc((how_many_ptrs + NMETHODS) * sizeof(handler_func)); next_ptr = 0; - for (i = 0; i<NMETHODS; ++i) { + for (i = 0; i < NMETHODS; ++i) { /* XXX: This is an itsy bit presumptuous about the alignment * constraints on offsets_into_method_ptrs. I can't remember if * ANSI says this has to be true... -djg */ - ((int *)&offsets_into_method_ptrs)[i] = next_ptr; + ((int *) &offsets_into_method_ptrs)[i] = next_ptr; for (modp = top_module; modp; modp = modp->next) { - fp = *(handler_func *)(method_offsets[i] + (char *)modp); + fp = *(handler_func *) (method_offsets[i] + (char *) modp); if (fp) { method_ptrs[next_ptr++] = fp; } @@ -337,53 +341,59 @@ } -static int -run_method (request_rec *r, int offset, int run_all) +static int run_method(request_rec *r, int offset, int run_all) { int i; - for (i = offset; method_ptrs[i]; ++i ) { + for (i = offset; method_ptrs[i]; ++i) { handler_func mod_handler = method_ptrs[i]; if (mod_handler) { - int result; + int result; - result = (*mod_handler)(r); + result = (*mod_handler) (r); - if (result != DECLINED && (!run_all || result != OK)) - return result; - } - } + if (result != DECLINED && (!run_all || result != OK)) + return result; + } + } - return run_all ? OK : DECLINED; + return run_all ? OK : DECLINED; } -int translate_name(request_rec *r) { - return run_method (r, offsets_into_method_ptrs.translate_handler, 0); +int translate_name(request_rec *r) +{ + return run_method(r, offsets_into_method_ptrs.translate_handler, 0); } -int check_access(request_rec *r) { - return run_method (r, offsets_into_method_ptrs.access_checker, 1); +int check_access(request_rec *r) +{ + return run_method(r, offsets_into_method_ptrs.access_checker, 1); } -int find_types (request_rec *r) { - return run_method (r, offsets_into_method_ptrs.type_checker, 0); +int find_types(request_rec *r) +{ + return run_method(r, offsets_into_method_ptrs.type_checker, 0); } -int run_fixups (request_rec *r) { - return run_method (r, offsets_into_method_ptrs.fixer_upper, 1); +int run_fixups(request_rec *r) +{ + return run_method(r, offsets_into_method_ptrs.fixer_upper, 1); } -int log_transaction (request_rec *r) { - return run_method (r, offsets_into_method_ptrs.logger, 1); +int log_transaction(request_rec *r) +{ + return run_method(r, offsets_into_method_ptrs.logger, 1); } -int header_parse (request_rec *r) { - return run_method (r, offsets_into_method_ptrs.header_parser, 1); +int header_parse(request_rec *r) +{ + return run_method(r, offsets_into_method_ptrs.header_parser, 1); } -int run_post_read_request (request_rec *r) { - return run_method (r, offsets_into_method_ptrs.post_read_request, 1); +int run_post_read_request(request_rec *r) +{ + return run_method(r, offsets_into_method_ptrs.post_read_request, 1); } /* Auth stuff --- anything that defines one of these will presumably @@ -391,71 +401,76 @@ * separate from check_access to make catching some config errors easier. */ -int check_user_id (request_rec *r) { - return run_method (r, offsets_into_method_ptrs.check_user_id, 0); +int check_user_id(request_rec *r) +{ + return run_method(r, offsets_into_method_ptrs.check_user_id, 0); } -int check_auth (request_rec *r) { - return run_method (r, offsets_into_method_ptrs.auth_checker, 0); +int check_auth(request_rec *r) +{ + return run_method(r, offsets_into_method_ptrs.auth_checker, 0); } -int invoke_handler (request_rec *r) -{ - module *modp; - handler_rec *handp; - char *content_type = r->content_type ? r->content_type : default_type (r); - char *handler, *p; - - if ((p = strchr(content_type, ';')) != NULL) { /* MIME type arguments */ - while (p > content_type && p[-1] == ' ') --p; /* strip trailing spaces */ - content_type = pstrndup(r->pool, content_type, p - content_type); - } - handler = r->handler ? r->handler : content_type; - - /* Pass one --- direct matches */ - - for (modp = top_module; modp; modp = modp->next) - { - if (!modp->handlers) continue; - - for (handp = modp->handlers; handp->content_type; ++handp) { - if (!strcasecmp (handler, handp->content_type)) { - int result = (*handp->handler)(r); - - if (result != DECLINED) return result; - } - } - } - - /* Pass two --- wildcard matches */ - - for (modp = top_module; modp; modp = modp->next) - { - if (!modp->handlers) continue; - - for (handp = modp->handlers; handp->content_type; ++handp) { - char *starp = strchr (handp->content_type, '*'); - int len; - - if (!starp) continue; - - len = starp - handp->content_type; - - if (!len || !strncasecmp (handler, handp->content_type, len)) - { - int result = (*handp->handler)(r); - - if (result != DECLINED) return result; - } - } - } - - return NOT_IMPLEMENTED; +int invoke_handler(request_rec *r) +{ + module *modp; + handler_rec *handp; + char *content_type = r->content_type ? r->content_type : default_type(r); + char *handler, *p; + + if ((p = strchr(content_type, ';')) != NULL) { /* MIME type arguments */ + while (p > content_type && p[-1] == ' ') + --p; /* strip trailing spaces */ + content_type = pstrndup(r->pool, content_type, p - content_type); + } + handler = r->handler ? r->handler : content_type; + + /* Pass one --- direct matches */ + + for (modp = top_module; modp; modp = modp->next) { + if (!modp->handlers) + continue; + + for (handp = modp->handlers; handp->content_type; ++handp) { + if (!strcasecmp(handler, handp->content_type)) { + int result = (*handp->handler) (r); + + if (result != DECLINED) + return result; + } + } + } + + /* Pass two --- wildcard matches */ + + for (modp = top_module; modp; modp = modp->next) { + if (!modp->handlers) + continue; + + for (handp = modp->handlers; handp->content_type; ++handp) { + char *starp = strchr(handp->content_type, '*'); + int len; + + if (!starp) + continue; + + len = starp - handp->content_type; + + if (!len || !strncasecmp(handler, handp->content_type, len)) { + int result = (*handp->handler) (r); + + if (result != DECLINED) + return result; + } + } + } + + return NOT_IMPLEMENTED; } /* One-time setup for precompiled modules --- NOT to be done on restart */ -API_EXPORT(void) add_module (module *m) +API_EXPORT(void) add_module(module *m) { /* This could be called from an AddModule httpd.conf command, * after the file has been linked and the module structure within it @@ -469,13 +484,13 @@ if (m->version != MODULE_MAGIC_NUMBER) { fprintf(stderr, "httpd: module \"%s\" is not compatible with this " - "version of Apache.\n", m->name); + "version of Apache.\n", m->name); fprintf(stderr, "Please contact the author for the correct version.\n"); exit(1); } if (m->next == NULL) { - m->next = top_module; + m->next = top_module; top_module = m; } if (m->module_index == -1) { @@ -496,55 +511,57 @@ * 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 (strrchr(m->name, '/')) + m->name = 1 + strrchr(m->name, '/'); + if (strrchr(m->name, '\\')) + m->name = 1 + strrchr(m->name, '\\'); - /** XXX: this will be slow if there's lots of add_modules */ - build_method_shortcuts (); +/** XXX: this will be slow if there's lots of add_modules */ + build_method_shortcuts(); } -void setup_prelinked_modules () +void setup_prelinked_modules() { module **m; /* First, set all module indices, and init total_modules. */ total_modules = 0; for (m = preloaded_modules; *m; ++m, ++total_modules) { - (*m)->module_index = total_modules; + (*m)->module_index = total_modules; } for (m = prelinked_modules; *m; ++m) { - add_module (*m); + add_module(*m); } } -API_EXPORT(const char *) find_module_name (module *m) +API_EXPORT(const char *) find_module_name(module *m) { return m->name; } -API_EXPORT(module *) find_linked_module (const char *name) +API_EXPORT(module *) find_linked_module(const char *name) { module *modp; for (modp = top_module; modp; modp = modp->next) { - if (strcmp(modp->name, name) == 0) - return modp; + if (strcmp(modp->name, name) == 0) + return modp; } return NULL; } /* Add a named module. Returns 1 if module found, 0 otherwise. */ -API_EXPORT(int) add_named_module (const char *name) +API_EXPORT(int) add_named_module(const char *name) { module *modp; int i = 0; for (modp = preloaded_modules[i]; modp; modp = preloaded_modules[++i]) { - if (strcmp(modp->name, name) == 0) { + if (strcmp(modp->name, name) == 0) { /* Only add modules that are not already enabled. */ if (modp->next == NULL) { - add_module(modp); + add_module(modp); } return 1; } @@ -554,7 +571,7 @@ } /* Clear the internal list of modules, in preparation for starting over. */ -API_EXPORT(void) clear_module_list () +API_EXPORT(void) clear_module_list() { module **m = &top_module; module **next_m; @@ -566,7 +583,7 @@ } /* This is required; so we add it always. */ - add_named_module ("http_core.c"); + add_named_module("http_core.c"); } /***************************************************************** @@ -579,226 +596,231 @@ */ const char *invoke_cmd(const command_rec *cmd, cmd_parms *parms, void *mconfig, - const char *args) + const char *args) { char *w, *w2, *w3; const char *errmsg; if ((parms->override & cmd->req_override) == 0) - return pstrcat (parms->pool, cmd->name, " not allowed here", NULL); - + return pstrcat(parms->pool, cmd->name, " not allowed here", NULL); + parms->info = cmd->cmd_data; parms->cmd = cmd; - + switch (cmd->args_how) { case RAW_ARGS: - return ((const char * (*)(cmd_parms *, void *, const char *)) + return ((const char *(*)(cmd_parms *, void *, const char *)) (*cmd->func)) (parms, mconfig, args); case NO_ARGS: if (*args != 0) - return pstrcat (parms->pool, cmd->name, " takes no arguments", - NULL); + return pstrcat(parms->pool, cmd->name, " takes no arguments", + NULL); - return ((const char * (*)(cmd_parms *, void *)) + return ((const char *(*)(cmd_parms *, void *)) (*cmd->func)) (parms, mconfig); - + case TAKE1: - w = getword_conf (parms->pool, &args); - - if (*w == '\0' || *args != 0) - return pstrcat (parms->pool, cmd->name, " takes one argument", + w = getword_conf(parms->pool, &args); + + if (*w == '\0' || *args != 0) + return pstrcat(parms->pool, cmd->name, " takes one argument", cmd->errmsg ? ", " : NULL, cmd->errmsg, NULL); - return ((const char * (*)(cmd_parms *, void *, const char *)) + return ((const char *(*)(cmd_parms *, void *, const char *)) (*cmd->func)) (parms, mconfig, w); - + case TAKE2: - w = getword_conf (parms->pool, &args); - w2 = getword_conf (parms->pool, &args); - - if (*w == '\0' || *w2 == '\0' || *args != 0) - return pstrcat (parms->pool, cmd->name, " takes two arguments", + w = getword_conf(parms->pool, &args); + w2 = getword_conf(parms->pool, &args); + + if (*w == '\0' || *w2 == '\0' || *args != 0) + return 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 ((const char *(*)(cmd_parms *, void *, const char *, + const char *)) (*cmd->func)) (parms, mconfig, w, w2); + case TAKE12: - w = getword_conf (parms->pool, &args); - w2 = getword_conf (parms->pool, &args); - - if (*w == '\0' || *args != 0) - return pstrcat (parms->pool, cmd->name, " takes 1-2 arguments", + w = getword_conf(parms->pool, &args); + w2 = getword_conf(parms->pool, &args); + + if (*w == '\0' || *args != 0) + return 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 ((const char *(*)(cmd_parms *, void *, const char *, + const char *)) (*cmd->func)) (parms, mconfig, w, + *w2 ? w2 : NULL); + case TAKE3: - w = getword_conf (parms->pool, &args); - w2 = getword_conf (parms->pool, &args); - w3 = getword_conf (parms->pool, &args); - - if (*w == '\0' || *w2 == '\0' || *w3 == '\0' || *args != 0) - return pstrcat (parms->pool, cmd->name, " takes three arguments", + w = getword_conf(parms->pool, &args); + w2 = getword_conf(parms->pool, &args); + w3 = getword_conf(parms->pool, &args); + + if (*w == '\0' || *w2 == '\0' || *w3 == '\0' || *args != 0) + return 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 ((const char *(*)(cmd_parms *, void *, const char *, + const char *, const char *)) (*cmd->func)) (parms, + mconfig, w, w2, w3); + case TAKE23: - w = getword_conf (parms->pool, &args); - w2 = getword_conf (parms->pool, &args); - w3 = *args ? getword_conf (parms->pool, &args) : NULL; - - if (*w == '\0' || *w2 == '\0' || *args != 0) - return pstrcat (parms->pool, cmd->name, " takes two or three arguments", + w = getword_conf(parms->pool, &args); + w2 = getword_conf(parms->pool, &args); + w3 = *args ? getword_conf(parms->pool, &args) : NULL; + + if (*w == '\0' || *w2 == '\0' || *args != 0) + return pstrcat(parms->pool, cmd->name, + " 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 ((const char *(*)(cmd_parms *, void *, const char *, + const char *, const char *)) (*cmd->func)) (parms, + mconfig, w, w2, w3); + case TAKE123: - w = getword_conf (parms->pool, &args); - w2 = *args ? getword_conf (parms->pool, &args) : NULL; - w3 = *args ? getword_conf (parms->pool, &args) : NULL; - - if (*w == '\0' || *args != 0) - return pstrcat (parms->pool, cmd->name, " takes one, two or three arguments", + w = getword_conf(parms->pool, &args); + w2 = *args ? getword_conf(parms->pool, &args) : NULL; + w3 = *args ? getword_conf(parms->pool, &args) : NULL; + + if (*w == '\0' || *args != 0) + return pstrcat(parms->pool, cmd->name, + " 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 ((const char *(*)(cmd_parms *, void *, const char *, + const char *, const char *)) (*cmd->func)) (parms, + mconfig, w, w2, w3); + case TAKE13: - w = getword_conf (parms->pool, &args); - w2 = *args ? getword_conf (parms->pool, &args) : NULL; - w3 = *args ? getword_conf (parms->pool, &args) : NULL; - - if (*w == '\0' || (*w2 && !w3) || *args != 0) - return pstrcat (parms->pool, cmd->name, " takes one or three arguments", + w = getword_conf(parms->pool, &args); + w2 = *args ? getword_conf(parms->pool, &args) : NULL; + w3 = *args ? getword_conf(parms->pool, &args) : NULL; + + if (*w == '\0' || (*w2 && !w3) || *args != 0) + return pstrcat(parms->pool, cmd->name, + " 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 ((const char *(*)(cmd_parms *, void *, const char *, + const char *, const char *)) (*cmd->func)) (parms, + mconfig, w, w2, w3); + case ITERATE: - while (*(w = getword_conf (parms->pool, &args)) != '\0') - if ((errmsg = ((const char * (*)(cmd_parms *, void *, - const char *))(*cmd->func)) (parms, mconfig, w))) - return errmsg; + while (*(w = getword_conf(parms->pool, &args)) != '\0') + if ((errmsg = ((const char *(*)(cmd_parms *, void *, + const char *)) (*cmd->func)) (parms, mconfig, w))) + return errmsg; return NULL; - + case ITERATE2: - w = getword_conf (parms->pool, &args); - - if (*w == '\0' || *args == 0) + w = getword_conf(parms->pool, &args); + + if (*w == '\0' || *args == 0) return pstrcat(parms->pool, cmd->name, - " requires at least two arguments", - cmd->errmsg ? ", " : NULL, cmd->errmsg, NULL); - - - while (*(w2 = 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; + " requires at least two arguments", + cmd->errmsg ? ", " : NULL, cmd->errmsg, NULL); + + + while (*(w2 = 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; return NULL; - + case FLAG: - w = getword_conf (parms->pool, &args); + w = getword_conf(parms->pool, &args); - if (*w == '\0' || (strcasecmp(w, "on") && strcasecmp (w, "off"))) - return pstrcat (parms->pool, cmd->name, " must be On or Off", + if (*w == '\0' || (strcasecmp(w, "on") && strcasecmp(w, "off"))) + return 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 ((const char *(*)(cmd_parms *, void *, int)) + (*cmd->func)) (parms, mconfig, strcasecmp(w, "off") != 0); default: - return pstrcat (parms->pool, cmd->name, - " is improperly configured internally (server bug)", + return pstrcat(parms->pool, cmd->name, + " is improperly configured internally (server bug)", NULL); } } -const command_rec *find_command (const char *name, const command_rec *cmds) +const command_rec *find_command(const char *name, const command_rec *cmds) { - while (cmds->name) - if (!strcasecmp (name, cmds->name)) + while (cmds->name) + if (!strcasecmp(name, cmds->name)) return cmds; else ++cmds; return NULL; } - -const command_rec *find_command_in_modules (const char *cmd_name, module **mod) + +const command_rec *find_command_in_modules(const char *cmd_name, module **mod) { - const command_rec *cmdp; - module *modp; + const command_rec *cmdp; + module *modp; - for (modp = *mod; modp; modp = modp->next) - if (modp->cmds && (cmdp = find_command (cmd_name, modp->cmds))) { - *mod = modp; - return cmdp; - } + for (modp = *mod; modp; modp = modp->next) + if (modp->cmds && (cmdp = find_command(cmd_name, modp->cmds))) { + *mod = modp; + return cmdp; + } - return NULL; + return NULL; } -const char *handle_command (cmd_parms *parms, void *config, const char *l) +const char *handle_command(cmd_parms *parms, void *config, const char *l) { const char *args, *cmd_name, *retval; const command_rec *cmd; module *mod = top_module; ++parms->config_line; - if((l[0] == '#') || (!l[0])) return NULL; - + if ((l[0] == '#') || (!l[0])) + return NULL; + args = l; - cmd_name = getword_conf (parms->temp_pool, &args); - if (*cmd_name == '\0') return NULL; - + cmd_name = getword_conf(parms->temp_pool, &args); + if (*cmd_name == '\0') + return NULL; + do { - if (!(cmd = find_command_in_modules (cmd_name, &mod))) { - return pstrcat (parms->pool, "Invalid command ", cmd_name, NULL); + if (!(cmd = find_command_in_modules(cmd_name, &mod))) { + return pstrcat(parms->pool, "Invalid command ", cmd_name, NULL); } else { - void *mconfig = get_module_config (config, mod); + void *mconfig = get_module_config(config, mod); void *sconfig = - get_module_config (parms->server->module_config, mod); - + get_module_config(parms->server->module_config, mod); + if (!mconfig && mod->create_dir_config) { mconfig = (*mod->create_dir_config) (parms->pool, parms->path); - set_module_config (config, mod, mconfig); + set_module_config(config, mod, mconfig); } - + if (!sconfig && mod->create_server_config) { sconfig = - (*mod->create_server_config)(parms->pool, parms->server); - set_module_config (parms->server->module_config, mod, sconfig); + (*mod->create_server_config) (parms->pool, parms->server); + set_module_config(parms->server->module_config, mod, sconfig); } - - retval = invoke_cmd (cmd, parms, mconfig, args); + + retval = invoke_cmd(cmd, parms, mconfig, args); mod = mod->next; /* Next time around, skip this one */ } } while (retval && !strcmp(retval, DECLINE_CMD)); @@ -806,13 +828,14 @@ return retval; } -const char *srm_command_loop (cmd_parms *parms, void *config) +const char *srm_command_loop(cmd_parms *parms, void *config) { char l[MAX_STRING_LEN]; - - while (!(cfg_getline (l, MAX_STRING_LEN, parms->infile))) { - const char *errmsg = handle_command (parms, config, l); - if (errmsg) return errmsg; + + while (!(cfg_getline(l, MAX_STRING_LEN, parms->infile))) { + const char *errmsg = handle_command(parms, config, l); + if (errmsg) + return errmsg; } return NULL; @@ -822,38 +845,38 @@ * Generic command functions... */ -API_EXPORT_NONSTD(const char *) set_string_slot (cmd_parms *cmd, - char *struct_ptr, char *arg) +API_EXPORT_NONSTD(const char *) set_string_slot(cmd_parms *cmd, + char *struct_ptr, char *arg) { /* This one's pretty generic... */ - - int offset = (int)(long)cmd->info; - *(char **)(struct_ptr + offset) = pstrdup (cmd->pool, arg); + + int offset = (int) (long) cmd->info; + *(char **) (struct_ptr + offset) = pstrdup(cmd->pool, arg); return NULL; } -API_EXPORT_NONSTD(const char *) set_flag_slot (cmd_parms *cmd, - char *struct_ptr, int arg) +API_EXPORT_NONSTD(const char *) set_flag_slot(cmd_parms *cmd, + char *struct_ptr, int arg) { /* This one's pretty generic too... */ - - int offset = (int)(long)cmd->info; - *(int *)(struct_ptr + offset) = arg ? 1 : 0; + + int offset = (int) (long) cmd->info; + *(int *) (struct_ptr + offset) = arg ? 1 : 0; return NULL; } -const char *set_file_slot (cmd_parms *cmd, char *struct_ptr, char *arg) +const char *set_file_slot(cmd_parms *cmd, char *struct_ptr, char *arg) { /* Prepend server_root to relative arg. This allows .htaccess to be independent of server_root, so the server can be moved or mirrored with less pain. */ char *p; - int offset = (int)cmd->info; + int offset = (int) cmd->info; if (*arg == '/') - p = pstrdup (cmd->pool, arg); + p = pstrdup(cmd->pool, arg); else - p = make_full_path (cmd->pool, server_root, arg); - *(char **)(struct_ptr + offset) = p; + p = make_full_path(cmd->pool, server_root, arg); + *(char **) (struct_ptr + offset) = p; return NULL; } @@ -862,17 +885,20 @@ * Reading whole config files... */ -cmd_parms default_parms = { NULL, 0, -1, NULL, 0, NULL, NULL, NULL, NULL }; +cmd_parms default_parms = +{NULL, 0, -1, NULL, 0, NULL, NULL, NULL, NULL}; -API_EXPORT(char *)server_root_relative (pool *p, char *file) +API_EXPORT(char *) server_root_relative(pool *p, char *file) { #ifdef __EMX__ /* Add support for OS/2 drive names */ - if ((file[0] == '/') || (file[1] == ':')) return file; + if ((file[0] == '/') || (file[1] == ':')) + return file; #else - if (file[0] == '/') return file; -#endif - return make_full_path (p, server_root, file); + if (file[0] == '/') + return file; +#endif + return make_full_path(p, server_root, file); } void process_resource_config(server_rec *s, char *fname, pool *p, pool *ptemp) @@ -881,42 +907,42 @@ const char *errmsg; cmd_parms parms; struct stat finfo; - - fname = server_root_relative (p, fname); + + fname = server_root_relative(p, fname); if (!(strcmp(fname, server_root_relative(p, RESOURCE_CONFIG_FILE))) || !(strcmp(fname, server_root_relative(p, ACCESS_CONFIG_FILE)))) { if (stat(fname, &finfo) == -1) return; } - + /* GCC's initialization extensions are soooo nice here... */ - + parms = default_parms; parms.config_file = fname; parms.pool = p; parms.temp_pool = ptemp; parms.server = s; - parms.override = (RSRC_CONF|OR_ALL)&~(OR_AUTHCFG|OR_LIMIT); - - if(!(cfg = fopen(fname, "r"))) { - perror("fopen"); - fprintf(stderr,"httpd: could not open document config file %s\n", - fname); - exit(1); - } + parms.override = (RSRC_CONF | OR_ALL) & ~(OR_AUTHCFG | OR_LIMIT); + + if (!(cfg = fopen(fname, "r"))) { + perror("fopen"); + fprintf(stderr, "httpd: could not open document config file %s\n", + fname); + exit(1); + } parms.infile = cfg; - - errmsg = srm_command_loop (&parms, s->lookup_defaults); - + + errmsg = srm_command_loop(&parms, s->lookup_defaults); + if (errmsg) { - fprintf (stderr, "Syntax error on line %d of %s:\n", - parms.config_line, fname); - fprintf (stderr, "%s\n", errmsg); + fprintf(stderr, "Syntax error on line %d of %s:\n", + parms.config_line, fname); + fprintf(stderr, "%s\n", errmsg); exit(1); } - + fclose(cfg); } @@ -933,10 +959,10 @@ void *dc; /* firstly, search cache */ - for (cache=r->htaccess; cache != NULL; cache=cache->next) - if (cache->override == override && strcmp(cache->dir, d) == 0) - { - if (cache->htaccess != NULL) *result = cache->htaccess; + for (cache = r->htaccess; cache != NULL; cache = cache->next) + if (cache->override == override && strcmp(cache->dir, d) == 0) { + if (cache->htaccess != NULL) + *result = cache->htaccess; return OK; } @@ -945,7 +971,7 @@ parms.pool = r->pool; parms.temp_pool = r->pool; parms.server = r->server; - parms.path = pstrdup (r->pool, d); + parms.path = pstrdup(r->pool, d); /* loop through the access names and find the first one */ while (!f && access_name[0]) { @@ -954,20 +980,20 @@ f = pfopen(r->pool, filename, "r"); } if (f) { - dc = create_per_dir_config (r->pool); - - parms.infile = f; + dc = create_per_dir_config(r->pool); + + parms.infile = f; parms.config_file = filename; - errmsg = srm_command_loop (&parms, dc); - - pfclose(r->pool, f); + errmsg = srm_command_loop(&parms, dc); + + pfclose(r->pool, f); if (errmsg) { aplog_error(APLOG_MARK, APLOG_ALERT, r->server, "%s: %s", filename, errmsg); return SERVER_ERROR; } - + *result = dc; } else { @@ -1006,7 +1032,7 @@ * *paddr is the variable used to keep track of **paddr between calls * port is the default port to assume */ -static void get_addresses (pool *p, char *w, server_addr_rec ***paddr, unsigned port) +static void get_addresses(pool *p, char *w, server_addr_rec ***paddr, unsigned port) { struct hostent *hep; unsigned long my_addr; @@ -1014,16 +1040,19 @@ char *t; int i, is_an_ip_addr; - if( *w == 0 ) return; + if (*w == 0) + return; t = strchr(w, ':'); if (t) { - if( strcmp(t+1,"*") == 0 ) { + if (strcmp(t + 1, "*") == 0) { port = 0; - } else if( (i = atoi(t+1)) ) { + } + else if ((i = atoi(t + 1))) { port = i; - } else { - fprintf( stderr, "Port must be numeric\n" ); + } + else { + fprintf(stderr, "Port must be numeric\n"); } *t = 0; } @@ -1032,65 +1061,70 @@ if (strcmp(w, "*") == 0) { my_addr = htonl(INADDR_ANY); is_an_ip_addr = 1; - } else if( strcmp(w, "_default_") == 0 - || strcmp(w, "255.255.255.255") == 0 ) { + } + else if (strcmp(w, "_default_") == 0 + || strcmp(w, "255.255.255.255") == 0) { my_addr = DEFAULT_VHOST_ADDR; is_an_ip_addr = 1; - } else if ((my_addr = ap_inet_addr(w)) != INADDR_NONE) { + } + else if ((my_addr = ap_inet_addr(w)) != INADDR_NONE) { is_an_ip_addr = 1; } - if( is_an_ip_addr ) { - sar = pcalloc( p, sizeof( server_addr_rec ) ); + if (is_an_ip_addr) { + sar = pcalloc(p, sizeof(server_addr_rec)); **paddr = sar; *paddr = &sar->next; sar->host_addr.s_addr = my_addr; sar->host_port = port; sar->virthost = pstrdup(p, w); - if (t != NULL) *t = ':'; + if (t != NULL) + *t = ':'; return; } hep = gethostbyname(w); if ((!hep) || (hep->h_addrtype != AF_INET || !hep->h_addr_list[0])) { - fprintf (stderr, "Cannot resolve host name %s --- ignoring!\n", w); - if (t != NULL) *t = ':'; + fprintf(stderr, "Cannot resolve host name %s --- ignoring!\n", w); + if (t != NULL) + *t = ':'; return; } - for( i = 0; hep->h_addr_list[i]; ++i ) { - sar = pcalloc( p, sizeof( server_addr_rec ) ); + for (i = 0; hep->h_addr_list[i]; ++i) { + sar = pcalloc(p, sizeof(server_addr_rec)); **paddr = sar; *paddr = &sar->next; - sar->host_addr = *(struct in_addr *)hep->h_addr_list[i]; + sar->host_addr = *(struct in_addr *) hep->h_addr_list[i]; sar->host_port = port; sar->virthost = pstrdup(p, w); } - if (t != NULL) *t = ':'; + if (t != NULL) + *t = ':'; } -server_rec *init_virtual_host (pool *p, const char *hostname, - server_rec *main_server) +server_rec *init_virtual_host(pool *p, const char *hostname, + server_rec *main_server) { - server_rec *s = (server_rec *)pcalloc (p, sizeof (server_rec)); + server_rec *s = (server_rec *) pcalloc(p, sizeof(server_rec)); server_addr_rec **addrs; #ifdef RLIMIT_NOFILE struct rlimit limits; - getrlimit ( RLIMIT_NOFILE, &limits ); - if ( limits.rlim_cur < limits.rlim_max ) { - limits.rlim_cur += 2; - if ( setrlimit ( RLIMIT_NOFILE, &limits ) < 0 ) { - perror ("setrlimit(RLIMIT_NOFILE)"); - fprintf (stderr, "Cannot exceed hard limit for open files"); - } + getrlimit(RLIMIT_NOFILE, &limits); + if (limits.rlim_cur < limits.rlim_max) { + limits.rlim_cur += 2; + if (setrlimit(RLIMIT_NOFILE, &limits) < 0) { + perror("setrlimit(RLIMIT_NOFILE)"); + fprintf(stderr, "Cannot exceed hard limit for open files"); + } } #endif s->server_admin = NULL; - s->server_hostname = NULL; + s->server_hostname = NULL; s->error_fname = NULL; s->srm_confname = NULL; s->access_confname = NULL; @@ -1100,19 +1134,20 @@ s->keep_alive_max = -1; s->error_log = main_server->error_log; s->loglevel = main_server->loglevel; - + /* start the list of addreses */ addrs = &s->addrs; - while( hostname[0] ) { - get_addresses( p, getword_conf( p, &hostname ), &addrs, - main_server->port ); + while (hostname[0]) { + get_addresses(p, getword_conf(p, &hostname), &addrs, + main_server->port); } /* terminate the list */ *addrs = NULL; - if( s->addrs ) { + if (s->addrs) { if (s->addrs->host_port) { - s->port = s->addrs->host_port; /* set them the same, by default */ - } else { + s->port = s->addrs->host_port; /* set them the same, by default */ + } + else { /* otherwise we get a port of 0 on redirects */ s->port = main_server->port; } @@ -1122,31 +1157,31 @@ s->is_virtual = 1; s->names = NULL; - s->module_config = create_empty_config (p); - s->lookup_defaults = create_per_dir_config (p); - + s->module_config = create_empty_config(p); + s->lookup_defaults = create_per_dir_config(p); + s->server_uid = user_id; s->server_gid = group_id; return s; } -int is_virtual_server (server_rec *s) +int is_virtual_server(server_rec *s) { return s->is_virtual; } -void fixup_virtual_hosts (pool *p, server_rec *main_server) +void fixup_virtual_hosts(pool *p, server_rec *main_server) { server_rec *virt; for (virt = main_server->next; virt; virt = virt->next) { - merge_server_configs (p, main_server->module_config, - virt->module_config); - + merge_server_configs(p, main_server->module_config, + virt->module_config); + virt->lookup_defaults = - merge_per_dir_configs (p, main_server->lookup_defaults, - virt->lookup_defaults); + merge_per_dir_configs(p, main_server->lookup_defaults, + virt->lookup_defaults); if (virt->server_admin == NULL) virt->server_admin = main_server->server_admin; @@ -1170,13 +1205,13 @@ virt->keep_alive_max = main_server->keep_alive_max; if (virt->send_buffer_size == 0) - virt->send_buffer_size = main_server->send_buffer_size; + virt->send_buffer_size = main_server->send_buffer_size; /* XXX: this is really something that should be dealt with by a * post-config api phase */ - core_reorder_directories (p, virt); + core_reorder_directories(p, virt); } - core_reorder_directories (p, main_server); + core_reorder_directories(p, main_server); } /***************************************************************** @@ -1184,10 +1219,10 @@ * Getting *everything* configured... */ -void init_config_globals (pool *p) +void init_config_globals(pool *p) { /* ServerRoot, server_confname set in httpd.c */ - + standalone = 1; user_name = DEFAULT_USER; user_id = uname2id(DEFAULT_USER); @@ -1205,20 +1240,20 @@ listenbacklog = DEFAULT_LISTENBACKLOG; /* Global virtual host hash bucket pointers. Init to null. */ - memset (vhash_table, 0, - (VHASH_TABLE_SIZE + VHASH_EXTRA_SLOP) * sizeof (vhash_table[0])); + memset(vhash_table, 0, + (VHASH_TABLE_SIZE + VHASH_EXTRA_SLOP) * sizeof(vhash_table[0])); - strncpy(coredump_dir, server_root, sizeof(coredump_dir)-1); - coredump_dir[sizeof(coredump_dir)-1] = '\0'; + strncpy(coredump_dir, server_root, sizeof(coredump_dir) - 1); + coredump_dir[sizeof(coredump_dir) - 1] = '\0'; } server_rec *init_server_config(pool *p) { - server_rec *s = (server_rec *)pcalloc (p, sizeof (server_rec)); + server_rec *s = (server_rec *) pcalloc(p, sizeof(server_rec)); s->port = DEFAULT_PORT; s->server_admin = DEFAULT_ADMIN; - s->server_hostname = NULL; + s->server_hostname = NULL; s->error_fname = DEFAULT_ERRORLOG; s->error_log = stderr; s->loglevel = DEFAULT_LOGLEVEL; @@ -1229,15 +1264,13 @@ s->keep_alive_max = DEFAULT_KEEPALIVE; s->keep_alive = 1; s->next = NULL; - s->addrs = pcalloc(p, sizeof (server_addr_rec)); - s->addrs->host_addr.s_addr = htonl (INADDR_ANY); /* NOT virtual host; - * don't match any real network - * interface. - */ - s->addrs->host_port = 0; /* matches any port */ + s->addrs = pcalloc(p, sizeof(server_addr_rec)); + /* NOT virtual host; don't match any real network interface */ + s->addrs->host_addr.s_addr = htonl(INADDR_ANY); + s->addrs->host_port = 0; /* matches any port */ - s->module_config = create_server_config (p, s); - s->lookup_defaults = create_default_per_dir_config (p); + s->module_config = create_server_config(p, s); + s->lookup_defaults = create_default_per_dir_config(p); return s; } @@ -1265,28 +1298,28 @@ server_rec *read_config(pool *p, pool *ptemp, char *confname) { server_rec *s = init_server_config(p); - + init_config_globals(p); - + /* All server-wide config files now have the SAME syntax... */ - - process_resource_config (s, confname, p, ptemp); - process_resource_config (s, s->srm_confname, p, ptemp); - process_resource_config (s, s->access_confname, p, ptemp); - - fixup_virtual_hosts (p, s); - default_listeners (p, s); + + process_resource_config(s, confname, p, ptemp); + process_resource_config(s, s->srm_confname, p, ptemp); + process_resource_config(s, s->access_confname, p, ptemp); + + fixup_virtual_hosts(p, s); + default_listeners(p, s); return s; } - + void init_modules(pool *p, server_rec *s) { module *m; for (m = top_module; m; m = m->next) - if (m->init) + if (m->init) (*m->init) (s, p); } @@ -1295,7 +1328,7 @@ module *m; for (m = top_module; m; m = m->next) - if (m->child_init) + if (m->child_init) (*m->child_init) (s, p); } @@ -1304,14 +1337,14 @@ module *m; #ifdef SIGHUP - signal (SIGHUP, SIG_IGN); -#endif + signal(SIGHUP, SIG_IGN); +#endif #ifdef SIGUSR1 - signal (SIGUSR1, SIG_IGN); -#endif + signal(SIGUSR1, SIG_IGN); +#endif for (m = top_module; m; m = m->next) - if (m->child_exit) + if (m->child_exit) (*m->child_exit) (s, p); } @@ -1335,52 +1368,57 @@ void show_overrides(command_rec *pc, module *pm) { int n = 0; - + printf("\tAllowed in *.conf "); - if ((pc->req_override & (OR_OPTIONS|OR_FILEINFO|OR_INDEXES)) || - ((pc->req_override & RSRC_CONF) && - ((pc->req_override & (ACCESS_CONF|OR_AUTHCFG|OR_LIMIT))))) - printf("anywhere"); + if ((pc->req_override & (OR_OPTIONS | OR_FILEINFO | OR_INDEXES)) || + ((pc->req_override & RSRC_CONF) && + ((pc->req_override & (ACCESS_CONF | OR_AUTHCFG | OR_LIMIT))))) + printf("anywhere"); else if (pc->req_override & RSRC_CONF) - printf("only outside <Directory> or <Location>"); - else - printf("only inside <Directory> or <Location>"); + printf("only outside <Directory> or <Location>"); + else + printf("only inside <Directory> or <Location>"); /* Warn if the directive is allowed inside <Directory> or .htaccess * but module doesn't support per-dir configuration */ - if ((pc->req_override & (OR_ALL|ACCESS_CONF)) && !pm->create_dir_config) - printf(" [no per-dir config]"); + if ((pc->req_override & (OR_ALL | ACCESS_CONF)) && !pm->create_dir_config) + printf(" [no per-dir config]"); if (pc->req_override & OR_ALL) { - printf(" and in .htaccess\n\twhen AllowOverride"); + printf(" and in .htaccess\n\twhen AllowOverride"); + + if ((pc->req_override & OR_ALL) == OR_ALL) + printf(" isn't None"); + else { + printf(" includes "); - if ((pc->req_override & OR_ALL) == OR_ALL) - printf(" isn't None"); - else { - printf(" includes "); - - if (pc->req_override & OR_AUTHCFG) { - if (n++) printf(" or "); - printf("AuthConfig"); - } - if (pc->req_override & OR_LIMIT) { - if (n++) printf(" or "); - printf("Limit"); - } - if (pc->req_override & OR_OPTIONS) { - if (n++) printf(" or "); - printf("Options"); - } - if (pc->req_override & OR_FILEINFO) { - if (n++) printf(" or "); - printf("FileInfo"); - } - if (pc->req_override & OR_INDEXES) { - if (n++) printf(" or "); - printf("Indexes"); - } - } + if (pc->req_override & OR_AUTHCFG) { + if (n++) + printf(" or "); + printf("AuthConfig"); + } + if (pc->req_override & OR_LIMIT) { + if (n++) + printf(" or "); + printf("Limit"); + } + if (pc->req_override & OR_OPTIONS) { + if (n++) + printf(" or "); + printf("Options"); + } + if (pc->req_override & OR_FILEINFO) { + if (n++) + printf(" or "); + printf("FileInfo"); + } + if (pc->req_override & OR_INDEXES) { + if (n++) + printf(" or "); + printf("Indexes"); + } + } } printf("\n"); } @@ -1393,24 +1431,23 @@ { command_rec *pc; int n; - + for (n = 0; preloaded_modules[n]; ++n) - for (pc = preloaded_modules[n]->cmds; pc && pc->name; ++pc) { - printf("%s\n", pc->name); - if (pc->errmsg) - printf("\t%s\n", pc->errmsg); - printf("\t%s\n", preloaded_modules[n]->name); - show_overrides(pc, preloaded_modules[n]); - } + for (pc = preloaded_modules[n]->cmds; pc && pc->name; ++pc) { + printf("%s\n", pc->name); + if (pc->errmsg) + printf("\t%s\n", pc->errmsg); + printf("\t%s\n", preloaded_modules[n]->name); + show_overrides(pc, preloaded_modules[n]); + } } /* Show the preloaded module names. Used for httpd -l. */ void show_modules() { int n; - - printf ("Compiled-in modules:\n"); + + printf("Compiled-in modules:\n"); for (n = 0; preloaded_modules[n]; ++n) - printf (" %s\n", preloaded_modules[n]->name); + printf(" %s\n", preloaded_modules[n]->name); } - 1.51 +79 -79 apachen/src/main/http_config.h Index: http_config.h =================================================================== RCS file: /export/home/cvs/apachen/src/main/http_config.h,v retrieving revision 1.50 retrieving revision 1.51 diff -u -r1.50 -r1.51 --- http_config.h 1997/09/12 19:53:14 1.50 +++ http_config.h 1997/09/16 00:18:03 1.51 @@ -57,36 +57,36 @@ /* Command dispatch structures... */ enum cmd_how { - RAW_ARGS, /* cmd_func parses command line itself */ - TAKE1, /* one argument only */ - TAKE2, /* two arguments only */ - ITERATE, /* one argument, occuring multiple times + RAW_ARGS, /* cmd_func parses command line itself */ + TAKE1, /* one argument only */ + TAKE2, /* two arguments only */ + ITERATE, /* one argument, occuring multiple times * (e.g., IndexIgnore) */ - ITERATE2, /* two arguments, 2nd occurs multiple times + ITERATE2, /* two arguments, 2nd occurs multiple times * (e.g., AddIcon) */ - FLAG, /* One of 'On' or 'Off' */ - NO_ARGS, /* No args at all, e.g. </Directory> */ - TAKE12, /* one or two arguments */ - TAKE3, /* three arguments only */ - TAKE23, /* two or three arguments */ - TAKE123, /* one, two or three arguments */ - TAKE13 /* one or three arguments */ + FLAG, /* One of 'On' or 'Off' */ + NO_ARGS, /* No args at all, e.g. </Directory> */ + TAKE12, /* one or two arguments */ + TAKE3, /* three arguments only */ + TAKE23, /* two or three arguments */ + TAKE123, /* one, two or three arguments */ + TAKE13 /* one or three arguments */ }; typedef struct command_struct { - char *name; /* Name of this command */ - const char *(*func)(); /* Function invoked */ - void *cmd_data; /* Extra data, for functions which + char *name; /* Name of this command */ + const char *(*func) (); /* Function invoked */ + void *cmd_data; /* Extra data, for functions which * implement multiple commands... */ - int req_override; /* What overrides need to be allowed to + int req_override; /* What overrides need to be allowed to * enable this command. */ - enum cmd_how args_how; /* What the command expects as arguments */ - - char *errmsg; /* 'usage' message, in case of syntax errors */ + enum cmd_how args_how; /* What the command expects as arguments */ + + char *errmsg; /* 'usage' message, in case of syntax errors */ } command_rec; /* The allowed locations for a configuration directive are the union of @@ -133,11 +133,11 @@ void *info; /* Argument to command from cmd_table */ int override; /* Which allow-override bits are set */ int limited; /* Which methods are <Limit>ed */ - + char *config_file; /* Filename cmd read from */ int config_line; /* Line cmd read from */ FILE *infile; /* fd for more lines (not currently used) */ - + pool *pool; /* Pool to allocate new storage in */ pool *temp_pool; /* Pool for scratch memory; persists during * configuration, but wiped before the first @@ -177,24 +177,24 @@ struct module_struct *next; #ifdef ULTRIX_BRAIN_DEATH - void (*init)(); - void *(*create_dir_config)(); - void *(*merge_dir_config)(); - void *(*create_server_config)(); - void *(*merge_server_config)(); + void (*init) (); + void *(*create_dir_config) (); + void *(*merge_dir_config) (); + void *(*create_server_config) (); + void *(*merge_server_config) (); #else - void (*init)(server_rec *, pool *); - void *(*create_dir_config)(pool *p, char *dir); - void *(*merge_dir_config)(pool *p, void *base_conf, void *new_conf); - void *(*create_server_config)(pool *p, server_rec *s); - void *(*merge_server_config)(pool *p, void *base_conf, void *new_conf); + void (*init) (server_rec *, pool *); + void *(*create_dir_config) (pool *p, char *dir); + void *(*merge_dir_config) (pool *p, void *base_conf, void *new_conf); + void *(*create_server_config) (pool *p, server_rec *s); + void *(*merge_server_config) (pool *p, void *base_conf, void *new_conf); #endif command_rec *cmds; handler_rec *handlers; /* Hooks for getting into the middle of server ops... - * + * translate_handler --- translate URI to filename * access_checker --- check access by host address, etc. All of these * run; if all decline, that's still OK. @@ -209,15 +209,15 @@ * post_read_request --- run right after read_request or internal_redirect, * and not run during any subrequests. */ - - int (*translate_handler)(request_rec *); - int (*check_user_id)(request_rec *); - int (*auth_checker)(request_rec *); - int (*access_checker)(request_rec *); - int (*type_checker)(request_rec *); - int (*fixer_upper)(request_rec *); - int (*logger)(request_rec *); - int (*header_parser)(request_rec *); + + int (*translate_handler) (request_rec *); + int (*check_user_id) (request_rec *); + int (*auth_checker) (request_rec *); + int (*access_checker) (request_rec *); + int (*type_checker) (request_rec *); + int (*fixer_upper) (request_rec *); + int (*logger) (request_rec *); + int (*header_parser) (request_rec *); /* Regardless of the model the server uses for managing "units of * execution", i.e. multi-process, multi-threaded, hybrids of those, @@ -230,13 +230,13 @@ * init method above. */ #ifdef ULTRIX_BRAIN_DEATH - void (*child_init)(); - void (*child_exit)(); + void (*child_init) (); + void (*child_exit) (); #else - void (*child_init)(server_rec *, pool *); - void (*child_exit)(server_rec *, pool *); + void (*child_init) (server_rec *, pool *); + void (*child_exit) (server_rec *, pool *); #endif - int (*post_read_request)(request_rec *); + int (*post_read_request) (request_rec *); } module; /* Initializer for the first few module slots, which are only @@ -253,29 +253,29 @@ * data */ -API_EXPORT(void *) get_module_config (void *conf_vector, module *m); -API_EXPORT(void) set_module_config (void *conf_vector, module *m, void *val); - +API_EXPORT(void *) get_module_config(void *conf_vector, module *m); +API_EXPORT(void) set_module_config(void *conf_vector, module *m, void *val); + /* Generic command handling function... */ -API_EXPORT_NONSTD(const char *) set_string_slot (cmd_parms *, char *, char *); -API_EXPORT_NONSTD(const char *) set_flag_slot (cmd_parms *, char *, int); -API_EXPORT_NONSTD(const char *) set_file_slot (cmd_parms *, char *, char *); +API_EXPORT_NONSTD(const char *) set_string_slot(cmd_parms *, char *, char *); +API_EXPORT_NONSTD(const char *) set_flag_slot(cmd_parms *, char *, int); +API_EXPORT_NONSTD(const char *) set_file_slot(cmd_parms *, char *, char *); /* For modules which need to read config files, open logs, etc. ... * this returns the fname argument if it begins with '/'; otherwise * it relativizes it wrt server_root. */ -API_EXPORT(char *) server_root_relative (pool *p, char *fname); - +API_EXPORT(char *) server_root_relative(pool *p, char *fname); + /* Finally, the hook for dynamically loading modules in... */ -API_EXPORT(void) add_module (module *m); -API_EXPORT(int) add_named_module (const char *name); -API_EXPORT(void) clear_module_list (void); -API_EXPORT(const char *) find_module_name (module *m); -API_EXPORT(module *) find_linked_module (const char *name); +API_EXPORT(void) add_module(module *m); +API_EXPORT(int) add_named_module(const char *name); +API_EXPORT(void) clear_module_list(void); +API_EXPORT(const char *) find_module_name(module *m); +API_EXPORT(module *) find_linked_module(const char *name); #ifdef CORE_PRIVATE @@ -284,7 +284,7 @@ /* For http_main.c... */ -server_rec *read_config (pool *conf_pool, pool *temp_pool, char *config_name); +server_rec *read_config(pool *conf_pool, pool *temp_pool, char *config_name); void init_modules(pool *p, server_rec *s); void child_init_modules(pool *p, server_rec *s); void child_exit_modules(pool *p, server_rec *s); @@ -294,34 +294,34 @@ /* For http_request.c... */ -void *create_request_config (pool *p); -void *create_per_dir_config (pool *p); -void *merge_per_dir_configs (pool *p, void *base, void *new); +void *create_request_config(pool *p); +void *create_per_dir_config(pool *p); +void *merge_per_dir_configs(pool *p, void *base, void *new); -void core_reorder_directories (pool *, server_rec *); +void core_reorder_directories(pool *, server_rec *); /* For http_core.c... (<Directory> command and virtual hosts) */ int parse_htaccess(void **result, request_rec *r, int override, - const char *path, const char *access_name); -const char *srm_command_loop (cmd_parms *parms, void *config); + const char *path, const char *access_name); +const char *srm_command_loop(cmd_parms *parms, void *config); -server_rec *init_virtual_host (pool *p, const char *hostname, server_rec *main_server); -int is_virtual_server (server_rec *); +server_rec *init_virtual_host(pool *p, const char *hostname, server_rec *main_server); +int is_virtual_server(server_rec *); void process_resource_config(server_rec *s, char *fname, pool *p, pool *ptemp); /* Module-method dispatchers, also for http_request.c */ -int translate_name (request_rec *); -int directory_walk (request_rec *); /* check symlinks, get per-dir config */ -int check_access (request_rec *); /* check access on non-auth basis */ -int check_user_id (request_rec *); /* obtain valid username from client auth */ -int check_auth (request_rec *); /* check (validated) user is authorized here */ -int find_types (request_rec *); /* identify MIME type */ -int run_fixups (request_rec *); /* poke around for other metainfo, etc.... */ -int invoke_handler (request_rec *); -int log_transaction (request_rec *r); -int header_parse (request_rec *); -int run_post_read_request (request_rec *); +int translate_name(request_rec *); +int directory_walk(request_rec *); /* check symlinks, get per-dir config */ +int check_access(request_rec *); /* check access on non-auth basis */ +int check_user_id(request_rec *); /* obtain valid username from client auth */ +int check_auth(request_rec *); /* check (validated) user is authorized here */ +int find_types(request_rec *); /* identify MIME type */ +int run_fixups(request_rec *); /* poke around for other metainfo, etc.... */ +int invoke_handler(request_rec *); +int log_transaction(request_rec *r); +int header_parse(request_rec *); +int run_post_read_request(request_rec *); #endif