fielding 97/09/18 15:54:08
Modified: src INDENT src/modules/standard mod_rewrite.c mod_rewrite.h Log: Partial manual indent to remove line wraps (ugh!). Exhausted after 2000 lines. Revision Changes Path 1.35 +2 -2 apachen/src/INDENT Index: INDENT =================================================================== RCS file: /export/home/cvs/apachen/src/INDENT,v retrieving revision 1.34 retrieving revision 1.35 diff -u -r1.34 -r1.35 --- INDENT 1997/09/18 20:31:53 1.34 +++ INDENT 1997/09/18 22:53:59 1.35 @@ -84,8 +84,8 @@ mod_mime.h DONE by Brian mod_mime_magic.c DONE by Brian mod_negotiation.c DONE by Ken - mod_rewrite.c RESERVED by Roy - mod_rewrite.h RESERVED by Roy + mod_rewrite.c PART done by Roy (gave up at line 2000) + mod_rewrite.h DONE by Roy mod_setenvif.c DONE by Ken mod_speling.c DONE by Brian mod_status.c DONE by Dean 1.52 +363 -229 apachen/src/modules/standard/mod_rewrite.c Index: mod_rewrite.c =================================================================== RCS file: /export/home/cvs/apachen/src/modules/standard/mod_rewrite.c,v retrieving revision 1.51 retrieving revision 1.52 diff -u -r1.51 -r1.52 --- mod_rewrite.c 1997/09/09 11:06:58 1.51 +++ mod_rewrite.c 1997/09/18 22:54:05 1.52 @@ -203,14 +203,20 @@ config_server_merge, /* merge per-server config structures */ command_table, /* table of config file commands */ - handler_table, /* [#8] table of MIME-typed-dispatched request action handlers */ - + handler_table, /* [#8] table of MIME-typed-dispatched request + * action handlers + */ hook_uri2file, /* [#1] URI to filename translation */ - NULL, /* [#4] check_user_id: get and validate user id from the HTTP request */ - NULL, /* [#5] check_auth: check if the user is ok _here_ */ - NULL, /* [#2] check_access: check access by host address, etc. */ - + NULL, /* [#4] check_user_id: get and validate + * user id from the HTTP request + */ + NULL, /* [#5] check_auth: check if the user is + * ok _here_ + */ + NULL, /* [#2] check_access: check access by + * host address, etc. + */ hook_mimetype, /* [#6] determine MIME type */ hook_fixup, /* [#7] pre-run fixups */ @@ -218,7 +224,7 @@ NULL, /* [#3] header parser */ NULL, /* child_init */ NULL, /* child_exit */ - NULL /* post read-request */ + NULL /* post read-request */ }; /* the cache */ @@ -234,8 +240,6 @@ static regmatch_t lookup_map_txtfile_regmatch[10]; - - /* ** +-------------------------------------------------------+ ** | | @@ -244,7 +248,6 @@ ** +-------------------------------------------------------+ */ - /* ** ** per-server configuration structure handling @@ -279,14 +282,19 @@ a->state = overrides->state; a->options = overrides->options; - a->rewritelogfile = base->rewritelogfile != NULL ? base->rewritelogfile : overrides->rewritelogfile; - a->rewritelogfp = base->rewritelogfp != -1 ? base->rewritelogfp : overrides->rewritelogfp; + a->rewritelogfile = base->rewritelogfile != NULL ? + base->rewritelogfile : overrides->rewritelogfile; + a->rewritelogfp = base->rewritelogfp != -1 ? + base->rewritelogfp : overrides->rewritelogfp; a->rewriteloglevel = overrides->rewriteloglevel; if (a->options & OPTION_INHERIT) { - a->rewritemaps = append_arrays(p, overrides->rewritemaps, base->rewritemaps); - a->rewriteconds = append_arrays(p, overrides->rewriteconds, base->rewriteconds); - a->rewriterules = append_arrays(p, overrides->rewriterules, base->rewriterules); + a->rewritemaps = append_arrays(p, overrides->rewritemaps, + base->rewritemaps); + a->rewriteconds = append_arrays(p, overrides->rewriteconds, + base->rewriteconds); + a->rewriterules = append_arrays(p, overrides->rewriterules, + base->rewriterules); } else { a->rewritemaps = overrides->rewritemaps; @@ -337,14 +345,16 @@ base = (rewrite_perdir_conf *)basev; overrides = (rewrite_perdir_conf *)overridesv; - a->state = overrides->state; - a->options = overrides->options; - a->directory = overrides->directory; - a->baseurl = overrides->baseurl; + a->state = overrides->state; + a->options = overrides->options; + a->directory = overrides->directory; + a->baseurl = overrides->baseurl; if (a->options & OPTION_INHERIT) { - a->rewriteconds = append_arrays(p, overrides->rewriteconds, base->rewriteconds); - a->rewriterules = append_arrays(p, overrides->rewriterules, base->rewriterules); + a->rewriteconds = append_arrays(p, overrides->rewriteconds, + base->rewriteconds); + a->rewriterules = append_arrays(p, overrides->rewriterules, + base->rewriterules); } else { a->rewriteconds = overrides->rewriteconds; @@ -365,7 +375,9 @@ { rewrite_server_conf *sconf; - sconf = (rewrite_server_conf *)get_module_config(cmd->server->module_config, &rewrite_module); + sconf = (rewrite_server_conf *) + get_module_config(cmd->server->module_config, &rewrite_module); + if (cmd->path == NULL) /* is server command */ sconf->state = (flag ? ENGINE_ENABLED : ENGINE_DISABLED); else /* is per-directory command */ @@ -374,26 +386,31 @@ return NULL; } -static const char *cmd_rewriteoptions(cmd_parms *cmd, rewrite_perdir_conf *dconf, char *option) +static const char *cmd_rewriteoptions(cmd_parms *cmd, + rewrite_perdir_conf *dconf, char *option) { rewrite_server_conf *sconf; const char *err; - sconf = (rewrite_server_conf *)get_module_config(cmd->server->module_config, &rewrite_module); + sconf = (rewrite_server_conf *) + get_module_config(cmd->server->module_config, &rewrite_module); + if (cmd->path == NULL) /* is server command */ - err = cmd_rewriteoptions_setoption(cmd->pool, &(sconf->options), option); + err = cmd_rewriteoptions_setoption(cmd->pool, &(sconf->options), option); else /* is per-directory command */ - err = cmd_rewriteoptions_setoption(cmd->pool, &(dconf->options), option); + err = cmd_rewriteoptions_setoption(cmd->pool, &(dconf->options), option); return err; } -static const char *cmd_rewriteoptions_setoption(pool *p, int *options, char *name) +static const char *cmd_rewriteoptions_setoption(pool *p, int *options, + char *name) { if (strcasecmp(name, "inherit") == 0) *options |= OPTION_INHERIT; else - return pstrcat(p, "RewriteOptions: unknown option '", name, "'\n", NULL); + return pstrcat(p,"RewriteOptions: unknown option '", name, "'\n", NULL); + return NULL; } @@ -401,7 +418,9 @@ { rewrite_server_conf *sconf; - sconf = (rewrite_server_conf *)get_module_config(cmd->server->module_config, &rewrite_module); + sconf = (rewrite_server_conf *) + get_module_config(cmd->server->module_config, &rewrite_module); + sconf->rewritelogfile = a1; return NULL; @@ -411,19 +430,24 @@ { rewrite_server_conf *sconf; - sconf = (rewrite_server_conf *)get_module_config(cmd->server->module_config, &rewrite_module); + sconf = (rewrite_server_conf *) + get_module_config(cmd->server->module_config, &rewrite_module); + sconf->rewriteloglevel = atoi(a1); return NULL; } -static const char *cmd_rewritemap(cmd_parms *cmd, void *dconf, char *a1, char *a2) +static const char *cmd_rewritemap(cmd_parms *cmd, void *dconf, char *a1, + char *a2) { rewrite_server_conf *sconf; rewritemap_entry *new; struct stat st; - sconf = (rewrite_server_conf *)get_module_config(cmd->server->module_config, &rewrite_module); + sconf = (rewrite_server_conf *) + get_module_config(cmd->server->module_config, &rewrite_module); + new = push_array(sconf->rewritemaps); new->name = a1; @@ -438,7 +462,8 @@ new->datafile = a2+4; new->checkfile = pstrcat(cmd->pool, a2+4, NDBM_FILE_SUFFIX, NULL); #else - return pstrdup(cmd->pool, "RewriteMap: cannot use NDBM mapfile, because no NDBM support compiled in"); + return pstrdup(cmd->pool, "RewriteMap: cannot use NDBM mapfile, " + "because no NDBM support is compiled in"); #endif } else if (strncmp(a2, "prg:", 4) == 0) { @@ -455,13 +480,15 @@ new->fpout = 0; if (new->checkfile && (sconf->state == ENGINE_ENABLED) - && (stat(new->checkfile, &st) == -1)) - return pstrcat(cmd->pool, "RewriteMap: map file or program not found:", new->checkfile, NULL); + && (stat(new->checkfile, &st) == -1)) + return pstrcat(cmd->pool, "RewriteMap: map file or program not found:", + new->checkfile, NULL); return NULL; } -static const char *cmd_rewritebase(cmd_parms *cmd, rewrite_perdir_conf *dconf, char *a1) +static const char *cmd_rewritebase(cmd_parms *cmd, rewrite_perdir_conf *dconf, + char *a1) { if (cmd->path == NULL || dconf == NULL) return "RewriteBase: only valid in per-directory config files"; @@ -475,7 +502,8 @@ return NULL; } -static const char *cmd_rewritecond(cmd_parms *cmd, rewrite_perdir_conf *dconf, char *str) +static const char *cmd_rewritecond(cmd_parms *cmd, rewrite_perdir_conf *dconf, + char *str) { rewrite_server_conf *sconf; rewritecond_entry *new; @@ -487,7 +515,8 @@ const char *err; int rc; - sconf = (rewrite_server_conf *)get_module_config(cmd->server->module_config, &rewrite_module); + sconf = (rewrite_server_conf *) + get_module_config(cmd->server->module_config, &rewrite_module); /* make a new entry in the internal temporary rewrite rule list */ if (cmd->path == NULL) /* is server command */ @@ -497,7 +526,8 @@ /* parse the argument line ourself */ if (parseargline(str, &a1, &a2, &a3)) - return pstrcat(cmd->pool, "RewriteCond: bad argument line '", str, "'\n", NULL); + return pstrcat(cmd->pool, "RewriteCond: bad argument line '", str, + "'\n", NULL); /* arg1: the input string */ new->input = pstrdup(cmd->pool, a1); @@ -523,18 +553,24 @@ we can compile the pattern for case-insensitive matching, under the old V8 library we have to do it self via a hack */ if (new->flags & CONDFLAG_NOCASE) - rc = ((regexp = pregcomp(cmd->pool, cp, REG_EXTENDED|REG_ICASE)) == NULL); + rc = ((regexp = pregcomp(cmd->pool, cp, REG_EXTENDED|REG_ICASE)) + == NULL); else rc = ((regexp = pregcomp(cmd->pool, cp, REG_EXTENDED)) == NULL); if (rc) - return pstrcat(cmd->pool, "RewriteCond: cannot compile regular expression '", a2, "'\n", NULL); + return pstrcat(cmd->pool, + "RewriteCond: cannot compile regular expression '", a2, + "'\n", NULL); + new->pattern = pstrdup(cmd->pool, cp); new->regexp = regexp; return NULL; } -static const char *cmd_rewritecond_parseflagfield(pool *p, rewritecond_entry *cfg, char *str) +static const char *cmd_rewritecond_parseflagfield(pool *p, + rewritecond_entry *cfg, + char *str) { char *cp; char *cp1; @@ -580,7 +616,8 @@ return NULL; } -static const char *cmd_rewritecond_setflag(pool *p, rewritecond_entry *cfg, char *key, char *val) +static const char *cmd_rewritecond_setflag(pool *p, rewritecond_entry *cfg, + char *key, char *val) { if ( strcasecmp(key, "nocase") == 0 || strcasecmp(key, "NC") == 0 ) { @@ -597,7 +634,8 @@ } /* NON static */ -const char *cmd_rewriterule(cmd_parms *cmd, rewrite_perdir_conf *dconf, char *str) +const char *cmd_rewriterule(cmd_parms *cmd, rewrite_perdir_conf *dconf, + char *str) { rewrite_server_conf *sconf; rewriterule_entry *new; @@ -608,7 +646,8 @@ char *cp; const char *err; - sconf = (rewrite_server_conf *)get_module_config(cmd->server->module_config, &rewrite_module); + sconf = (rewrite_server_conf *) + get_module_config(cmd->server->module_config, &rewrite_module); /* make a new entry in the internal rewrite rule list */ if (cmd->path == NULL) /* is server command */ @@ -618,10 +657,12 @@ /* parse the argument line ourself */ if (parseargline(str, &a1, &a2, &a3)) - return pstrcat(cmd->pool, "RewriteRule: bad argument line '", str, "'\n", NULL); + return pstrcat(cmd->pool, "RewriteRule: bad argument line '", str, + "'\n", NULL); /* arg1: the pattern - try to compile the regexp to test if is ok */ + * try to compile the regexp to test if is ok + */ new->flags = RULEFLAG_NONE; cp = a1; if (cp[0] == '!') { @@ -629,13 +670,16 @@ cp++; } if ((regexp = pregcomp(cmd->pool, cp, REG_EXTENDED)) == NULL) - return pstrcat(cmd->pool, "RewriteRule: cannot compile regular expression '", a1, "'\n", NULL); + return pstrcat(cmd->pool, + "RewriteRule: cannot compile regular expression '", a1, + "'\n", NULL); new->pattern = pstrdup(cmd->pool, cp); new->regexp = regexp; /* arg2: the output string - replace the $<N> by \<n> which is needed by the currently - used Regular Expression library */ + * replace the $<N> by \<n> which is needed by the currently + * used Regular Expression library + */ new->output = pstrdup(cmd->pool, a2); /* arg3: optional flags field */ @@ -649,21 +693,24 @@ } /* now, if the server or per-dir config holds an - array of RewriteCond entries, we take it for us - and clear the array */ + * array of RewriteCond entries, we take it for us + * and clear the array + */ if (cmd->path == NULL) { /* is server command */ new->rewriteconds = sconf->rewriteconds; - sconf->rewriteconds = make_array(cmd->pool, 2, sizeof(rewritecond_entry)); + sconf->rewriteconds = make_array(cmd->pool,2,sizeof(rewritecond_entry)); } else { /* is per-directory command */ new->rewriteconds = dconf->rewriteconds; - dconf->rewriteconds = make_array(cmd->pool, 2, sizeof(rewritecond_entry)); + dconf->rewriteconds = make_array(cmd->pool,2,sizeof(rewritecond_entry)); } return NULL; } -static const char *cmd_rewriterule_parseflagfield(pool *p, rewriterule_entry *cfg, char *str) +static const char *cmd_rewriterule_parseflagfield(pool *p, + rewriterule_entry *cfg, + char *str) { char *cp; char *cp1; @@ -709,7 +756,8 @@ return NULL; } -static const char *cmd_rewriterule_setflag(pool *p, rewriterule_entry *cfg, char *key, char *val) +static const char *cmd_rewriterule_setflag(pool *p, rewriterule_entry *cfg, + char *key, char *val) { int status = 0; int i; @@ -727,7 +775,8 @@ else if (isdigit(*val)) status = atoi(val); if (!is_HTTP_REDIRECT(status)) - return pstrdup(p, "RewriteRule: invalid HTTP response code for flag 'R'"); + return pstrdup(p, "RewriteRule: invalid HTTP response code " + "for flag 'R'"); cfg->forced_responsecode = status; } } @@ -756,7 +805,7 @@ cfg->env[i+1] = NULL; } else - return pstrdup(p, "RewriteRule: to much environment flags 'E'"); + return pstrdup(p, "RewriteRule: to many environment flags 'E'"); } else if ( strcasecmp(key, "nosubreq") == 0 || strcasecmp(key, "NS") == 0 ) { @@ -804,8 +853,9 @@ static void init_module(server_rec *s, pool *p) { /* step through the servers and - - open eachs rewriting logfile - - open the RewriteMap prg:xxx programs */ + * - open each rewriting logfile + * - open the RewriteMap prg:xxx programs + */ for (; s; s = s->next) { open_rewritelog(s, p); run_rewritemap_programs(s, p); @@ -823,8 +873,6 @@ } - - /* ** +-------------------------------------------------------+ ** | | @@ -833,7 +881,6 @@ ** +-------------------------------------------------------+ */ - /* ** ** URI-to-filename hook @@ -878,9 +925,11 @@ var = pstrcat(r->pool, "REDIRECT_", ENVVAR_SCRIPT_URL, NULL); var = table_get(r->subprocess_env, var); if (var == NULL) - table_set(r->subprocess_env, ENVVAR_SCRIPT_URL, pstrdup(r->pool, r->uri)); + table_set(r->subprocess_env, ENVVAR_SCRIPT_URL, + pstrdup(r->pool, r->uri)); else - table_set(r->subprocess_env, ENVVAR_SCRIPT_URL, pstrdup(r->pool, var)); + table_set(r->subprocess_env, ENVVAR_SCRIPT_URL, + pstrdup(r->pool, var)); } else { var = table_get(r->main->subprocess_env, ENVVAR_SCRIPT_URL); @@ -908,7 +957,8 @@ /* set the variable */ #ifdef APACHE_SSL - var = pstrcat(r->pool, http_method(r), "://", thisserver, thisport, thisurl, NULL); + var = pstrcat(r->pool, http_method(r), "://", thisserver, thisport, + thisurl, NULL); #else var = pstrcat(r->pool, "http://", thisserver, thisport, thisurl, NULL); #endif @@ -916,10 +966,12 @@ /* if filename was not initially set, - we start with the requested URI */ + * we start with the requested URI + */ if (r->filename == NULL) { r->filename = pstrdup(r->pool, r->uri); - rewritelog(r, 2, "init rewrite engine with requested uri %s", r->filename); + rewritelog(r, 2, "init rewrite engine with requested uri %s", + r->filename); } /* @@ -932,27 +984,29 @@ /* it should be go on as an internal proxy request */ /* check if the proxy module is enabled, so - we can actually use it! */ + * we can actually use it! + */ if (!proxy_available) { - aplog_error(APLOG_MARK, APLOG_ERR, r->server, - "attempt to make remote request from mod_rewrite " - "without proxy enabled", r->filename); + aplog_error(APLOG_MARK, APLOG_ERR, r->server, + "attempt to make remote request from mod_rewrite " + "without proxy enabled", r->filename); return FORBIDDEN; - } + } /* make sure the QUERY_STRING and - PATH_INFO parts get incorporated */ + * PATH_INFO parts get incorporated + */ r->filename = pstrcat(r->pool, r->filename, r->path_info ? r->path_info : "", r->args ? "?" : NULL, r->args, NULL); - /* now make sure the request gets handled by the - proxy handler */ + /* now make sure the request gets handled by the proxy handler */ r->proxyreq = 1; r->handler = "proxy-server"; - rewritelog(r, 1, "go-ahead with proxy request %s [OK]", r->filename); + rewritelog(r, 1, "go-ahead with proxy request %s [OK]", + r->filename); return OK; } else if ( (strlen(r->filename) > 7 && @@ -1010,11 +1064,12 @@ else if (strlen(r->filename) > 12 && strncmp(r->filename, "passthrough:", 12) == 0) { /* Hack because of underpowered API: passing the current - rewritten filename through to other URL-to-filename handlers - just as it were the requested URL. This is to enable - post-processing by mod_alias, etc. which always act on - r->uri! The difference here is: We do not try to - add the document root */ + * rewritten filename through to other URL-to-filename handlers + * just as it were the requested URL. This is to enable + * post-processing by mod_alias, etc. which always act on + * r->uri! The difference here is: We do not try to + * add the document root + */ r->uri = pstrdup(r->pool, r->filename+12); return DECLINED; } @@ -1031,24 +1086,24 @@ return BAD_REQUEST; /* if there is no valid prefix, we have - to emulate the translator from the core and - prefix the filename with document_root - - NOTICE: - We cannot leave out the prefix_stat because - - when we always prefix with document_root - then no absolute path can be created, e.g. via - emulating a ScriptAlias directive, etc. - - when we always NOT prefix with document_root - then the files under document_root have to - be references directly and document_root - gets never used and will be a dummy parameter - - this is also bad - - BUT: - Under real Unix systems this is no problem, - because we only do stat() on the first directory - and this gets cached by the kernel for along time! + * to emulate the translator from the core and + * prefix the filename with document_root + * + * NOTICE: + * We cannot leave out the prefix_stat because + * - when we always prefix with document_root + * then no absolute path can be created, e.g. via + * emulating a ScriptAlias directive, etc. + * - when we always NOT prefix with document_root + * then the files under document_root have to + * be references directly and document_root + * gets never used and will be a dummy parameter - + * this is also bad + * + * BUT: + * Under real Unix systems this is no problem, + * because we only do stat() on the first directory + * and this gets cached by the kernel for along time! */ n = prefix_stat(r->filename, &finfo); if (n == 0) { @@ -1061,11 +1116,16 @@ if (docroot[l-1] == '/') { docroot[l-1] = '\0'; } - if (r->server->path && !strncmp(r->filename, r->server->path, r->server->pathlen)) - r->filename = pstrcat(r->pool, docroot, (r->filename + r->server->pathlen), NULL); + if (r->server->path + && !strncmp(r->filename, r->server->path, + r->server->pathlen)) + r->filename = pstrcat(r->pool, docroot, + (r->filename + r->server->pathlen), NULL); else - r->filename = pstrcat(r->pool, docroot, r->filename, NULL); - rewritelog(r, 2, "prefixed with document_root to %s", r->filename); + r->filename = pstrcat(r->pool, docroot, r->filename, + NULL); + rewritelog(r, 2, "prefixed with document_root to %s", + r->filename); } } @@ -1097,7 +1157,8 @@ if (t == NULL) return DECLINED; else { - rewritelog(r, 1, "force filename %s to have MIME-type '%s'", r->filename, t); + rewritelog(r, 1, "force filename %s to have MIME-type '%s'", + r->filename, t); r->content_type = t; return OK; } @@ -1123,7 +1184,8 @@ int n; char *ofilename; - dconf = (rewrite_perdir_conf *)get_module_config(r->per_dir_config, &rewrite_module); + dconf = (rewrite_perdir_conf *) + get_module_config(r->per_dir_config, &rewrite_module); /* if there is no per-dir config we return immediately */ if (dconf == NULL) @@ -1145,14 +1207,15 @@ if (!(allow_options(r) & (OPT_SYM_LINKS | OPT_SYM_OWNER))) { /* FollowSymLinks is mandatory! */ aplog_error(APLOG_MARK, APLOG_ERR, r->server, - "Options FollowSymLinks or SymLinksIfOwnerMatch is off " - "which implies that RewriteRule directive is forbidden: %s", - r->filename); + "Options FollowSymLinks or SymLinksIfOwnerMatch is off " + "which implies that RewriteRule directive is forbidden: %s", + r->filename); return FORBIDDEN; } else { /* FollowSymLinks is given, but the user can - still turn off the rewriting engine */ + * still turn off the rewriting engine + */ if (dconf->state == ENGINE_DISABLED) return DECLINED; } @@ -1174,20 +1237,21 @@ /* it should go on as an internal proxy request */ /* make sure the QUERY_STRING and - PATH_INFO parts get incorporated */ + * PATH_INFO parts get incorporated + */ r->filename = pstrcat(r->pool, r->filename, /* r->path_info was already - appended by the rewriting engine - because of the per-dir context! */ - r->args ? "?" : NULL, r->args, - NULL); + * appended by the rewriting engine + * because of the per-dir context! + */ + r->args ? "?" : NULL, r->args, NULL); - /* now make sure the request gets handled by the - proxy handler */ + /* now make sure the request gets handled by the proxy handler */ r->proxyreq = 1; r->handler = "proxy-server"; - rewritelog(r, 1, "[per-dir %s] go-ahead with proxy request %s [OK]", dconf->directory, r->filename); + rewritelog(r, 1, "[per-dir %s] go-ahead with proxy request %s [OK]", + dconf->directory, r->filename); return OK; } else if ( (strlen(r->filename) > 7 && @@ -1201,8 +1265,9 @@ /* it was finally rewritten to a remote URL */ /* because we are in a per-dir context - first try to replace the directory with its base-URL - if there is a base-URL available */ + * first try to replace the directory with its base-URL + * if there is a base-URL available + */ if (dconf->baseurl != NULL) { /* skip 'scheme:' */ for (cp = r->filename; *cp != ':' && *cp != '\0'; cp++) @@ -1210,8 +1275,11 @@ /* skip '://' */ cp += 3; if ((cp = strchr(cp, '/')) != NULL) { - rewritelog(r, 2, "[per-dir %s] trying to replace prefix %s with %s", dconf->directory, dconf->directory, dconf->baseurl); - cp2 = subst_prefix_path(r, cp, dconf->directory, dconf->baseurl); + rewritelog(r, 2, + "[per-dir %s] trying to replace prefix %s with %s", + dconf->directory, dconf->directory, dconf->baseurl); + cp2 = subst_prefix_path(r, cp, dconf->directory, + dconf->baseurl); if (strcmp(cp2, cp) != 0) { *cp = '\0'; r->filename = pstrcat(r->pool, r->filename, cp2, NULL); @@ -1230,7 +1298,8 @@ for ( ; *cp != '/' && *cp != '\0'; cp++) ; if (*cp != '\0') { - rewritelog(r, 1, "[per-dir %s] escaping %s for redirect", dconf->directory, r->filename); + rewritelog(r, 1, "[per-dir %s] escaping %s for redirect", + dconf->directory, r->filename); cp2 = escape_uri(r->pool, cp); *cp = '\0'; r->filename = pstrcat(r->pool, r->filename, cp2, NULL); @@ -1250,7 +1319,8 @@ /* now do the redirection */ table_set(r->headers_out, "Location", r->filename); - rewritelog(r, 1, "[per-dir %s] redirect to %s [REDIRECT/%d]", dconf->directory, r->filename, n); + rewritelog(r, 1, "[per-dir %s] redirect to %s [REDIRECT/%d]", + dconf->directory, r->filename, n); return n; } else if (strlen(r->filename) > 10 && @@ -1267,8 +1337,9 @@ /* it was finally rewritten to a local path */ /* if someone used the PASSTHROUGH flag in per-dir - context we just ignore it. It is only useful - in per-server context */ + * context we just ignore it. It is only useful + * in per-server context + */ if (strlen(r->filename) > 12 && strncmp(r->filename, "passthrough:", 12) == 0) { r->filename = pstrdup(r->pool, r->filename+12); @@ -1286,25 +1357,32 @@ * this would lead to a deadloop. */ if (strcmp(r->filename, ofilename) == 0) { - rewritelog(r, 1, "[per-dir %s] initial URL equal rewritten URL: %s [IGNORING REWRITE]", dconf->directory, r->filename); + rewritelog(r, 1, + "[per-dir %s] initial URL equal rewritten URL: %s [IGNORING REWRITE]", + dconf->directory, r->filename); return OK; } /* if there is a valid base-URL then substitute - the per-dir prefix with this base-URL if the - current filename still is inside this per-dir - context. If not then treat the result as a - plain URL */ + * the per-dir prefix with this base-URL if the + * current filename still is inside this per-dir + * context. If not then treat the result as a + * plain URL + */ if (dconf->baseurl != NULL) { - rewritelog(r, 2, "[per-dir %s] trying to replace prefix %s with %s", dconf->directory, dconf->directory, dconf->baseurl); - r->filename = subst_prefix_path(r, r->filename, dconf->directory, dconf->baseurl); + rewritelog(r, 2, + "[per-dir %s] trying to replace prefix %s with %s", + dconf->directory, dconf->directory, dconf->baseurl); + r->filename = subst_prefix_path(r, r->filename, + dconf->directory, + dconf->baseurl); } else { /* if no explicit base-URL exists we assume - that the directory prefix is also a valid URL - for this webserver and only try to remove the - document_root if it is prefix */ - + * that the directory prefix is also a valid URL + * for this webserver and only try to remove the + * document_root if it is prefix + */ if ((cp = document_root(r)) != NULL) { prefix = pstrdup(r->pool, cp); /* always NOT have a trailing slash */ @@ -1314,21 +1392,26 @@ l--; } if (strncmp(r->filename, prefix, l) == 0) { - rewritelog(r, 2, "[per-dir %s] strip document_root prefix: %s -> %s", dconf->directory, r->filename, r->filename+l); + rewritelog(r, 2, + "[per-dir %s] strip document_root prefix: %s -> %s", + dconf->directory, r->filename, r->filename+l); r->filename = pstrdup(r->pool, r->filename+l); } } } /* now initiate the internal redirect */ - rewritelog(r, 1, "[per-dir %s] internal redirect with %s [INTERNAL REDIRECT]", dconf->directory, r->filename); + rewritelog(r, 1, + "[per-dir %s] internal redirect with %s [INTERNAL REDIRECT]", + dconf->directory, r->filename); r->filename = pstrcat(r->pool, "redirect:", r->filename, NULL); r->handler = "redirect-handler"; return OK; } } else { - rewritelog(r, 1, "[per-dir %s] pass through %s", dconf->directory, r->filename); + rewritelog(r, 1, "[per-dir %s] pass through %s", dconf->directory, + r->filename); return DECLINED; } } @@ -1357,8 +1440,6 @@ } - - /* ** +-------------------------------------------------------+ ** | | @@ -1367,8 +1448,8 @@ ** +-------------------------------------------------------+ */ - -static int apply_rewrite_list(request_rec *r, array_header *rewriterules, char *perdir) +static int apply_rewrite_list(request_rec *r, array_header *rewriterules, + char *perdir) { rewriterule_entry *entries; rewriterule_entry *p; @@ -1384,7 +1465,8 @@ p = &entries[i]; /* ignore this rule on subrequests if we are explicitly asked to do so - or this is a proxy throughput or a forced redirect rule */ + * or this is a proxy throughput or a forced redirect rule + */ if (r->main != NULL && (p->flags & RULEFLAG_IGNOREONSUBREQ || p->flags & RULEFLAG_PROXY || @@ -1397,8 +1479,11 @@ if (rc != 2) /* not a match-only rule */ changed = 1; if (p->flags & RULEFLAG_PASSTHROUGH) { - rewritelog(r, 2, "forcing '%s' to get passed through to next URI-to-filename handler", r->filename); - r->filename = pstrcat(r->pool, "passthrough:", r->filename, NULL); + rewritelog(r, 2, + "forcing '%s' to get passed through to next URI-to-filename handler", + r->filename); + r->filename = pstrcat(r->pool, "passthrough:", r->filename, + NULL); changed = 1; break; } @@ -1434,7 +1519,8 @@ } else { /* if current rule is chained with next rule(s), - skip all this next rule(s) */ + * skip all this next rule(s) + */ while ( i < rewriterules->nelts && p->flags & RULEFLAG_CHAIN) { i++; @@ -1445,7 +1531,8 @@ return changed; } -static int apply_rewrite_rule(request_rec *r, rewriterule_entry *p, char *perdir) +static int apply_rewrite_rule(request_rec *r, rewriterule_entry *p, + char *perdir) { char *uri; char *output; @@ -1471,7 +1558,8 @@ flags = p->flags; if (perdir != NULL && r->path_info != NULL && r->path_info[0] != '\0') { - rewritelog(r, 3, "[per-dir %s] add path-info postfix: %s -> %s%s", perdir, uri, uri, r->path_info); + rewritelog(r, 3, "[per-dir %s] add path-info postfix: %s -> %s%s", + perdir, uri, uri, r->path_info); uri = pstrcat(r->pool, uri, r->path_info, NULL); } @@ -1480,16 +1568,19 @@ /* this is a per-directory match */ if ( strlen(uri) >= strlen(perdir) && strncmp(uri, perdir, strlen(perdir)) == 0) { - rewritelog(r, 3, "[per-dir %s] strip per-dir prefix: %s -> %s", perdir, uri, uri+strlen(perdir)); + rewritelog(r, 3, "[per-dir %s] strip per-dir prefix: %s -> %s", + perdir, uri, uri+strlen(perdir)); uri = uri+strlen(perdir); prefixstrip = 1; } } if (perdir != NULL) - rewritelog(r, 3, "[per-dir %s] applying pattern '%s' to uri '%s'", perdir, p->pattern, uri); + rewritelog(r, 3, "[per-dir %s] applying pattern '%s' to uri '%s'", + perdir, p->pattern, uri); - rc = (regexec(regexp, uri, regexp->re_nsub+1, regmatch, 0) == 0); /* try to match the pattern */ + /* try to match the pattern */ + rc = (regexec(regexp, uri, regexp->re_nsub+1, regmatch, 0) == 0); if (( rc && !(p->flags & RULEFLAG_NOTMATCH)) || (!rc && (p->flags & RULEFLAG_NOTMATCH)) ) { @@ -1502,19 +1593,22 @@ else { briRR->source = pstrdup(r->pool, uri); briRR->nsub = regexp->re_nsub; - memcpy((void *)(briRR->regmatch), (void *)(regmatch), sizeof(regmatch_t)*10); + memcpy((void *)(briRR->regmatch), (void *)(regmatch), + sizeof(regmatch_t)*10); } /* create the RewriteCond backrefinfo, but - initialized as empty backrefinfo, i.e. not subst */ + * initialized as empty backrefinfo, i.e. not subst + */ briRC = (backrefinfo *)pcalloc(r->pool, sizeof(backrefinfo)); briRC->source = ""; briRC->nsub = 0; /* ok, the pattern matched, but we now additionally have to check - for any preconditions which have to be also true. We do this - at this very late stage to avoid unnessesary checks which - slow down the rewriting engine!! */ + * for any preconditions which have to be also true. We do this + * at this very late stage to avoid unnessesary checks which + * slow down the rewriting engine!! + */ rewriteconds = p->rewriteconds; conds = (rewritecond_entry *)rewriteconds->elts; failed = 0; @@ -1529,7 +1623,8 @@ } else { /* one true cond is enough, so skip the other conds - of the "ornext" chained conds */ + * of the "ornext" chained conds + */ while ( i < rewriteconds->nelts && c->flags & CONDFLAG_ORNEXT) { i++; @@ -1567,14 +1662,19 @@ output = pstrcat(r->pool, "proxy:", output, NULL); strncpy(newuri, output, sizeof(newuri)-1); EOS_PARANOIA(newuri); - expand_backref_inbuffer(r->pool, newuri, sizeof(newuri), briRR, '$'); /* expand $N */ - expand_backref_inbuffer(r->pool, newuri, sizeof(newuri), briRC, '%'); /* expand %N */ - expand_variables_inbuffer(r, newuri, sizeof(newuri)); /* expand %{...} */ - expand_map_lookups(r, newuri, sizeof(newuri)); /* expand ${...} */ + /* expand $N */ + expand_backref_inbuffer(r->pool, newuri, sizeof(newuri), briRR,'$'); + /* expand %N */ + expand_backref_inbuffer(r->pool, newuri, sizeof(newuri), briRC,'%'); + /* expand %{...} */ + expand_variables_inbuffer(r, newuri, sizeof(newuri)); + /* expand ${...} */ + expand_map_lookups(r, newuri, sizeof(newuri)); if (perdir == NULL) rewritelog(r, 2, "rewrite %s -> %s", r->filename, newuri); else - rewritelog(r, 2, "[per-dir %s] rewrite %s -> %s", perdir, r->filename, newuri); + rewritelog(r, 2, "[per-dir %s] rewrite %s -> %s", perdir, + r->filename, newuri); r->filename = pstrdup(r->pool, newuri); return 1; } @@ -1588,10 +1688,14 @@ || (i > 6 && strncmp(output, "ftp://", 6) == 0) ) ) { strncpy(newuri, output, sizeof(newuri)-1); EOS_PARANOIA(newuri); - expand_backref_inbuffer(r->pool, newuri, sizeof(newuri), briRR, '$'); /* expand $N */ - expand_backref_inbuffer(r->pool, newuri, sizeof(newuri), briRC, '%'); /* expand %N */ - expand_variables_inbuffer(r, newuri, sizeof(newuri)); /* expand %{...} */ - expand_map_lookups(r, newuri, sizeof(newuri)); /* expand ${...} */ + /* expand $N */ + expand_backref_inbuffer(r->pool, newuri, sizeof(newuri), briRR,'$'); + /* expand %N */ + expand_backref_inbuffer(r->pool, newuri, sizeof(newuri), briRC,'%'); + /* expand %{...} */ + expand_variables_inbuffer(r, newuri, sizeof(newuri)); + /* expand ${...} */ + expand_map_lookups(r, newuri, sizeof(newuri)); for (i = 0; p->env[i] != NULL; i++) { strncpy(env, p->env[i], sizeof(env)-1); EOS_PARANOIA(env); @@ -1599,27 +1703,34 @@ expand_backref_inbuffer(r->pool, env, sizeof(env), briRC, '%'); add_env_variable(r, env); } - rewritelog(r, 2, "[per-dir %s] redirect %s -> %s", perdir, r->filename, newuri); + rewritelog(r, 2, "[per-dir %s] redirect %s -> %s", perdir, + r->filename, newuri); r->filename = pstrdup(r->pool, newuri); r->status = p->forced_responsecode; return 1; } /* add again the previously stripped perdir prefix if the new - URI is not a new one (i.e. prefixed by a slash which means - that it is not for this per-dir context) */ + * URI is not a new one (i.e. prefixed by a slash which means + * that it is not for this per-dir context) + */ if (prefixstrip && output[0] != '/') { - rewritelog(r, 3, "[per-dir %s] add per-dir prefix: %s -> %s%s", perdir, output, perdir, output); + rewritelog(r, 3, "[per-dir %s] add per-dir prefix: %s -> %s%s", + perdir, output, perdir, output); output = pstrcat(r->pool, perdir, output, NULL); } /* standard case: create the substitution string */ strncpy(newuri, output, sizeof(newuri)-1); EOS_PARANOIA(newuri); - expand_backref_inbuffer(r->pool, newuri, sizeof(newuri), briRR, '$'); /* expand $N */ - expand_backref_inbuffer(r->pool, newuri, sizeof(newuri), briRC, '%'); /* expand %N */ - expand_variables_inbuffer(r, newuri, sizeof(newuri)); /* expand %{...} */ - expand_map_lookups(r, newuri, sizeof(newuri)); /* expand ${...} */ + /* expand $N */ + expand_backref_inbuffer(r->pool, newuri, sizeof(newuri), briRR, '$'); + /* expand %N */ + expand_backref_inbuffer(r->pool, newuri, sizeof(newuri), briRC, '%'); + /* expand %{...} */ + expand_variables_inbuffer(r, newuri, sizeof(newuri)); + /* expand ${...} */ + expand_map_lookups(r, newuri, sizeof(newuri)); for (i = 0; p->env[i] != NULL; i++) { strncpy(env, p->env[i], sizeof(env)-1); EOS_PARANOIA(env); @@ -1631,7 +1742,8 @@ if (perdir == NULL) rewritelog(r, 2, "rewrite %s -> %s", uri, newuri); else - rewritelog(r, 2, "[per-dir %s] rewrite %s -> %s", perdir, uri, newuri); + rewritelog(r, 2, "[per-dir %s] rewrite %s -> %s", perdir, uri, + newuri); r->filename = pstrdup(r->pool, newuri); @@ -1641,18 +1753,23 @@ /* split out on-the-fly generated QUERY_STRING '....?xxxxx&xxxx...' */ splitout_queryargs(r, p->flags & RULEFLAG_QSAPPEND); - /* if a MIME-type should be later forced for this URL, then remember this */ + /* remember if a MIME-type should be later forced for this URL */ if (p->forced_mimetype != NULL) { - table_set(r->notes, REWRITE_FORCED_MIMETYPE_NOTEVAR, p->forced_mimetype); + table_set(r->notes, REWRITE_FORCED_MIMETYPE_NOTEVAR, + p->forced_mimetype); if (perdir == NULL) - rewritelog(r, 2, "remember %s to have MIME-type '%s'", r->filename, p->forced_mimetype); + rewritelog(r, 2, "remember %s to have MIME-type '%s'", + r->filename, p->forced_mimetype); else - rewritelog(r, 2, "[per-dir %s] remember %s to have MIME-type '%s'", perdir, r->filename, p->forced_mimetype); + rewritelog(r, 2, + "[per-dir %s] remember %s to have MIME-type '%s'", + perdir, r->filename, p->forced_mimetype); } /* if we are forced to do a explicit redirect by [R] flag - and the current URL still is not a fully qualified one we - finally prefix it with http[s]://<ourname> explicitly */ + * and the current URL still is not a fully qualified one we + * finally prefix it with http[s]://<ourname> explicitly + */ if (flags & RULEFLAG_FORCEREDIRECT) { r->status = p->forced_responsecode; if ( !(strlen(r->filename) > 7 && @@ -1665,7 +1782,8 @@ strncmp(r->filename, "ftp://", 6) == 0) ) { #ifdef APACHE_SSL - if ((!r->connection->client->ssl && r->server->port == DEFAULT_PORT) || + if ((!r->connection->client->ssl + && r->server->port == DEFAULT_PORT) || ( r->connection->client->ssl && r->server->port == 443) ) #else if (r->server->port == DEFAULT_PORT) @@ -1675,20 +1793,30 @@ ap_snprintf(port, sizeof(port), ":%u", r->server->port); if (r->filename[0] == '/') #ifdef APACHE_SSL - ap_snprintf(newuri, sizeof(newuri), "%s://%s%s%s", http_method(r), r->server->server_hostname, port, r->filename); + ap_snprintf(newuri, sizeof(newuri), "%s://%s%s%s", + http_method(r), r->server->server_hostname, + port, r->filename); #else - ap_snprintf(newuri, sizeof(newuri), "http://%s%s%s", r->server->server_hostname, port, r->filename); + ap_snprintf(newuri, sizeof(newuri), "http://%s%s%s", + r->server->server_hostname, port, r->filename); #endif else #ifdef APACHE_SSL - ap_snprintf(newuri, sizeof(newuri), "%s://%s%s/%s", http_method(r), r->server->server_hostname, port, r->filename); + ap_snprintf(newuri, sizeof(newuri), "%s://%s%s/%s", + http_method(r), r->server->server_hostname, + port, r->filename); #else - ap_snprintf(newuri, sizeof(newuri), "http://%s%s/%s", r->server->server_hostname, port, r->filename); + ap_snprintf(newuri, sizeof(newuri), "http://%s%s/%s", + r->server->server_hostname, port, r->filename); #endif if (perdir == NULL) - rewritelog(r, 2, "prepare forced redirect %s -> %s", r->filename, newuri); + rewritelog(r, 2, "prepare forced redirect %s -> %s", + r->filename, newuri); else - rewritelog(r, 2, "[per-dir %s] prepare forced redirect %s -> %s", perdir, r->filename, newuri); + rewritelog(r, 2, + "[per-dir %s] prepare forced redirect %s -> %s", + perdir, r->filename, newuri); + r->filename = pstrdup(r->pool, newuri); return 1; } @@ -1699,7 +1827,9 @@ return 0; } -static int apply_rewrite_cond(request_rec *r, rewritecond_entry *p, char *perdir, backrefinfo *briRR, backrefinfo *briRC) +static int apply_rewrite_cond(request_rec *r, rewritecond_entry *p, + char *perdir, backrefinfo *briRR, + backrefinfo *briRC) { char input[MAX_STRING_LEN]; struct stat sb; @@ -1750,11 +1880,11 @@ } else if (strcmp(p->pattern, "-U") == 0) { /* avoid infinite subrequest recursion */ - if (strlen(input) > 0 /* nonempty path, and */ - && ( r->main == NULL /* - either not in a subrequest */ - || ( r->main->uri != NULL /* - or in a subrequest...*/ - && r->uri != NULL /* ...and then URIs aren't NULL... */ - /* ...and sub and main URIs differ */ + if (strlen(input) > 0 /* nonempty path, and */ + && ( r->main == NULL /* - either not in a subrequest */ + || ( r->main->uri != NULL /* - or in a subrequest... */ + && r->uri != NULL /* ...and URIs aren't NULL... */ + /* ...and sub/main URIs differ */ && strcmp(r->main->uri, r->uri) != 0) ) ) { /* run a URI-based subrequest */ @@ -1765,7 +1895,8 @@ rc = 1; /* log it */ - rewritelog(r, 5, "RewriteCond URI (-U) check: path=%s -> status=%d", input, rsub->status); + rewritelog(r, 5, "RewriteCond URI (-U) check: path=%s -> status=%d", + input, rsub->status); /* cleanup by destroying the subrequest */ destroy_sub_req(rsub); @@ -1773,15 +1904,16 @@ } else if (strcmp(p->pattern, "-F") == 0) { /* avoid infinite subrequest recursion */ - if (strlen(input) > 0 /* nonempty path, and */ - && ( r->main == NULL /* - either not in a subrequest */ - || ( r->main->uri != NULL /* - or in a subrequest...*/ - && r->uri != NULL /* ...and then URIs aren't NULL... */ - /* ...and sub and main URIs differ */ + if (strlen(input) > 0 /* nonempty path, and */ + && ( r->main == NULL /* - either not in a subrequest */ + || ( r->main->uri != NULL /* - or in a subrequest... */ + && r->uri != NULL /* ...and URIs aren't NULL... */ + /* ...and sub/main URIs differ */ && strcmp(r->main->uri, r->uri) != 0) ) ) { /* process a file-based subrequest: - this differs from -U in that no path translation is done. */ + * this differs from -U in that no path translation is done. + */ rsub = sub_req_lookup_file(input, r); /* file exists for any result up to 2xx, no redirects */ @@ -1791,7 +1923,9 @@ rc = 1; /* log it */ - rewritelog(r, 5, "RewriteCond file (-F) check: path=%s -> file=%s status=%d", input, rsub->filename, rsub->status); + rewritelog(r, 5, + "RewriteCond file (-F) check: path=%s -> file=%s status=%d", + input, rsub->filename, rsub->status); /* cleanup by destroying the subrequest */ destroy_sub_req(rsub); @@ -1811,14 +1945,15 @@ } else { /* it is really a regexp pattern, so apply it */ - rc = (regexec(p->regexp, input, p->regexp->re_nsub+1, regmatch, 0) == 0); + rc = (regexec(p->regexp, input, p->regexp->re_nsub+1, regmatch,0) == 0); /* if it isn't a negated pattern and really matched we update the passed-through regex subst info structure */ if (rc && !(p->flags & CONDFLAG_NOTMATCH)) { briRC->source = pstrdup(r->pool, input); briRC->nsub = p->regexp->re_nsub; - memcpy((void *)(briRC->regmatch), (void *)(regmatch), sizeof(regmatch_t)*10); + memcpy((void *)(briRC->regmatch), (void *)(regmatch), + sizeof(regmatch_t)*10); } } @@ -1835,8 +1970,6 @@ } - - /* ** +-------------------------------------------------------+ ** | | @@ -1845,7 +1978,6 @@ ** +-------------------------------------------------------+ */ - /* ** ** split out a QUERY_STRING part from @@ -1868,12 +2000,14 @@ r->args = pstrdup(r->pool, q); if (strlen(r->args) == 0) { r->args = NULL; - rewritelog(r, 3, "split uri=%s -> uri=%s, args=<none>", olduri, r->filename); + rewritelog(r, 3, "split uri=%s -> uri=%s, args=<none>", olduri, + r->filename); } else { if (r->args[strlen(r->args)-1] == '&') r->args[strlen(r->args)-1] = '\0'; - rewritelog(r, 3, "split uri=%s -> uri=%s, args=%s", olduri, r->filename, r->args); + rewritelog(r, 3, "split uri=%s -> uri=%s, args=%s", olduri, + r->filename, r->args); } } return; @@ -2119,7 +2253,7 @@ n = strlen(cpT); if (cpO + n >= newuri + sizeof(newuri)) { aplog_error(APLOG_MARK, APLOG_ERR, r->server, - "insufficient space in expand_map_lookups, aborting"); + "insufficient space in expand_map_lookups, aborting"); return; } memcpy(cpO, cpT, n); @@ -2129,7 +2263,7 @@ n = strlen(defaultvalue); if (cpO + n >= newuri + sizeof(newuri)) { aplog_error(APLOG_MARK, APLOG_ERR, r->server, - "insufficient space in expand_map_lookups, aborting"); + "insufficient space in expand_map_lookups, aborting"); return; } memcpy(cpO, defaultvalue, n); @@ -2143,7 +2277,7 @@ n = cpT-cpI; if (cpO + n >= newuri + sizeof(newuri)) { aplog_error(APLOG_MARK, APLOG_ERR, r->server, - "insufficient space in expand_map_lookups, aborting"); + "insufficient space in expand_map_lookups, aborting"); return; } memcpy(cpO, cpI, n); @@ -2192,13 +2326,13 @@ if (strcmp(s->name, name) == 0) { if (s->type == MAPTYPE_TXT) { if (stat(s->checkfile, &st) == -1) { - aplog_error(APLOG_MARK, APLOG_ERR, r->server, - "mod_rewrite: can't access text RewriteMap file %s: %s", - s->checkfile, strerror(errno)); - rewritelog(r, 1, - "can't open RewriteMap file, see error log"); - return NULL; - } + aplog_error(APLOG_MARK, APLOG_ERR, r->server, + "mod_rewrite: can't access text RewriteMap file %s: %s", + s->checkfile, strerror(errno)); + rewritelog(r, 1, + "can't open RewriteMap file, see error log"); + return NULL; + } value = get_cache_string(cachep, s->name, CACHEMODE_TS, st.st_mtime, key); if (value == NULL) { rewritelog(r, 6, "cache lookup FAILED, forcing new map lookup"); @@ -2220,13 +2354,13 @@ else if (s->type == MAPTYPE_DBM) { #if HAS_NDBM_LIB if (stat(s->checkfile, &st) == -1) { - aplog_error(APLOG_MARK, APLOG_ERROR, r->server, - "mod_rewrite: can't access dbm RewriteMap file %s: %s", - s->checkfile, strerror(errno)); - rewritelog(r, 1, - "can't open RewriteMap file, see error log"); - return NULL; - } + aplog_error(APLOG_MARK, APLOG_ERROR, r->server, + "mod_rewrite: can't access dbm RewriteMap file %s: %s", + s->checkfile, strerror(errno)); + rewritelog(r, 1, + "can't open RewriteMap file, see error log"); + return NULL; + } value = get_cache_string(cachep, s->name, CACHEMODE_TS, st.st_mtime, key); if (value == NULL) { rewritelog(r, 6, "cache lookup FAILED, forcing new map lookup"); @@ -2552,7 +2686,7 @@ * If the engine isn't turned on, don't even try to do anything. */ if (conf->state == ENGINE_DISABLED) { - return; + return; } 1.32 +75 -48 apachen/src/modules/standard/mod_rewrite.h Index: mod_rewrite.h =================================================================== RCS file: /export/home/cvs/apachen/src/modules/standard/mod_rewrite.h,v retrieving revision 1.31 retrieving revision 1.32 diff -u -r1.31 -r1.32 --- mod_rewrite.h 1997/08/31 16:43:16 1.31 +++ mod_rewrite.h 1997/09/18 22:54:06 1.32 @@ -89,12 +89,11 @@ */ - - /* The NDBM support: - We support only NDBM files. - But we have to stat the file for the mtime, - so we also need to know the file extension */ + * We support only NDBM files. + * But we have to stat the file for the mtime, + * so we also need to know the file extension + */ #if HAS_NDBM_LIB #include <ndbm.h> #if (__FreeBSD__) @@ -106,8 +105,9 @@ /* The locking support: - Try to determine whether we should use fcntl() or flock(). - Would be better conf.h could provide this... :-( */ + * Try to determine whether we should use fcntl() or flock(). + * Would be better conf.h could provide this... :-( + */ #if defined(USE_FCNTL_SERIALIZED_ACCEPT) #define USE_FCNTL 1 #include <fcntl.h> @@ -137,17 +137,16 @@ #define USE_LOCKING #endif - /* The locking support for the RewriteMap programs: - Locking a pipe to the child works fine under most - Unix derivates, but braindead SunOS 4.1.x has - problems with this approach... */ + * Locking a pipe to the child works fine under most + * Unix derivates, but braindead SunOS 4.1.x has + * problems with this approach... + */ #define USE_PIPE_LOCKING 1 #ifdef SUNOS4 #undef USE_PIPE_LOCKING #endif - /* ** ** Some defines @@ -221,12 +220,12 @@ */ /* the list structures for holding the mapfile information - and the rewrite rules */ - + * and the rewrite rules + */ typedef struct { char *name; /* the name of the map */ - char *datafile; /* the file which contains the data of the map */ - char *checkfile; /* the file which stays for existence of the map */ + char *datafile; /* filename for map data files */ + char *checkfile; /* filename to check for map existence */ int type; /* the type of the map */ int fpin; /* in filepointer for program maps */ int fpout; /* out filepointer for program maps */ @@ -241,20 +240,20 @@ typedef struct { array_header *rewriteconds; /* the corresponding RewriteCond entries */ - char *pattern; /* the RegExp pattern string */ - regex_t *regexp; /* the RegExp pattern compilation */ - char *output; /* the Substitution string */ - int flags; /* Flags which control the substitution */ - char *forced_mimetype; /* forced MIME type of substitution */ - int forced_responsecode; /* forced HTTP redirect response status */ - char *env[MAX_ENV_FLAGS+1];/* added environment variables */ - int skip; /* number of next rules to skip */ + char *pattern; /* the RegExp pattern string */ + regex_t *regexp; /* the RegExp pattern compilation */ + char *output; /* the Substitution string */ + int flags; /* Flags which control the substitution */ + char *forced_mimetype; /* forced MIME type of substitution */ + int forced_responsecode; /* forced HTTP redirect response status */ + char *env[MAX_ENV_FLAGS+1]; /* added environment variables */ + int skip; /* number of next rules to skip */ } rewriterule_entry; /* the per-server or per-virtual-server configuration - statically generated once on startup for every server */ - + * statically generated once on startup for every server + */ typedef struct { int state; /* the RewriteEngine state */ int options; /* the RewriteOption state */ @@ -268,8 +267,8 @@ /* the per-directory configuration - individually generated on-the-fly by Apache server for current request */ - + * generated on-the-fly by Apache server for current request + */ typedef struct { int state; /* the RewriteEngine state */ int options; /* the RewriteOption state */ @@ -321,22 +320,42 @@ static void *config_perdir_merge (pool *p, void *basev, void *overridesv); /* config directive handling */ -static const char *cmd_rewriteengine (cmd_parms *cmd, rewrite_perdir_conf *dconf, int flag); -static const char *cmd_rewriteoptions (cmd_parms *cmd, rewrite_perdir_conf *dconf, char *option); -static const char *cmd_rewriteoptions_setoption(pool *p, int *options, char *name); +static const char *cmd_rewriteengine(cmd_parms *cmd, + rewrite_perdir_conf *dconf, int flag); + +static const char *cmd_rewriteoptions(cmd_parms *cmd, + rewrite_perdir_conf *dconf, char *option); + +static const char *cmd_rewriteoptions_setoption(pool *p, int *options, + char *name); + static const char *cmd_rewritelog (cmd_parms *cmd, void *dconf, char *a1); static const char *cmd_rewriteloglevel(cmd_parms *cmd, void *dconf, char *a1); -static const char *cmd_rewritemap (cmd_parms *cmd, void *dconf, char *a1, char *a2); +static const char *cmd_rewritemap (cmd_parms *cmd, void *dconf, char *a1, + char *a2); + +static const char *cmd_rewritebase(cmd_parms *cmd, rewrite_perdir_conf *dconf, + char *a1); + +static const char *cmd_rewritecond(cmd_parms *cmd, rewrite_perdir_conf *dconf, + char *str); + +static const char *cmd_rewritecond_parseflagfield(pool *p, + rewritecond_entry *new, + char *str); + +static const char *cmd_rewritecond_setflag(pool *p, rewritecond_entry *cfg, + char *key, char *val); -static const char *cmd_rewritebase(cmd_parms *cmd, rewrite_perdir_conf *dconf, char *a1); +extern const char *cmd_rewriterule(cmd_parms *cmd, rewrite_perdir_conf *dconf, + char *str); -static const char *cmd_rewritecond (cmd_parms *cmd, rewrite_perdir_conf *dconf, char *str); -static const char *cmd_rewritecond_parseflagfield(pool *p, rewritecond_entry *new, char *str); -static const char *cmd_rewritecond_setflag (pool *p, rewritecond_entry *cfg, char *key, char *val); +static const char *cmd_rewriterule_parseflagfield(pool *p, + rewriterule_entry *new, + char *str); -extern const char *cmd_rewriterule (cmd_parms *cmd, rewrite_perdir_conf *dconf, char *str); -static const char *cmd_rewriterule_parseflagfield(pool *p, rewriterule_entry *new, char *str); -static const char *cmd_rewriterule_setflag (pool *p, rewriterule_entry *cfg, char *key, char *val); +static const char *cmd_rewriterule_setflag(pool *p, rewriterule_entry *cfg, + char *key, char *val); /* initialisation */ static void init_module(server_rec *s, pool *p); @@ -348,14 +367,19 @@ static int handler_redirect(request_rec *r); /* rewriting engine */ -static int apply_rewrite_list(request_rec *r, array_header *rewriterules, char *perdir); -static int apply_rewrite_rule(request_rec *r, rewriterule_entry *p, char *perdir); -static int apply_rewrite_cond(request_rec *r, rewritecond_entry *p, char *perdir, backrefinfo *briRR, backrefinfo *briRC); +static int apply_rewrite_list(request_rec *r, array_header *rewriterules, + char *perdir); +static int apply_rewrite_rule(request_rec *r, rewriterule_entry *p, + char *perdir); +static int apply_rewrite_cond(request_rec *r, rewritecond_entry *p, + char *perdir, backrefinfo *briRR, + backrefinfo *briRC); /* URI transformation function */ static void splitout_queryargs(request_rec *r, int qsappend); static void reduce_uri(request_rec *r); -static void expand_backref_inbuffer(pool *p, char *buf, int nbuf, backrefinfo *bri, char c); +static void expand_backref_inbuffer(pool *p, char *buf, int nbuf, + backrefinfo *bri, char c); static char *expand_tildepaths(request_rec *r, char *uri); static void expand_map_lookups(request_rec *r, char *uri, int uri_len); @@ -384,14 +408,17 @@ static char *lookup_header(request_rec *r, const char *name); /* caching functions */ -static cache *init_cache(pool *p); -static char *get_cache_string(cache *c, char *res, int mode, time_t mtime, char *key); -static void set_cache_string(cache *c, char *res, int mode, time_t mtime, char *key, char *value); +static cache *init_cache(pool *p); +static char *get_cache_string(cache *c, char *res, int mode, time_t mtime, + char *key); +static void set_cache_string(cache *c, char *res, int mode, time_t mtime, + char *key, char *value); static cacheentry *retrieve_cache_string(cache *c, char *res, char *key); -static void store_cache_string(cache *c, char *res, cacheentry *ce); +static void store_cache_string(cache *c, char *res, cacheentry *ce); /* misc functions */ -static char *subst_prefix_path(request_rec *r, char *input, char *match, char *subst); +static char *subst_prefix_path(request_rec *r, char *input, char *match, + char *subst); static int parseargline(char *str, char **a1, char **a2, char **a3); static int prefix_stat(const char *path, struct stat *sb); static void add_env_variable(request_rec *r, char *s);