brian 97/09/18 11:41:00
Modified: src INDENT
src/modules/standard mod_dir.c mod_env.c mod_expires.c
mod_headers.c mod_imap.c mod_log_agent.c
mod_log_referer.c
Log:
Indenting all these... joy!
Revision Changes Path
1.32 +11 -11 apachen/src/INDENT
Index: INDENT
===================================================================
RCS file: /export/home/cvs/apachen/src/INDENT,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- INDENT 1997/09/18 18:06:48 1.31
+++ INDENT 1997/09/18 18:40:45 1.32
@@ -69,19 +69,19 @@
mod_cern_meta.c DONE by Dean
mod_cgi.c DONE by Dean
mod_digest.c DONE by Dean
- mod_dir.c RESERVED by Brian
- mod_dld.c
- mod_env.c RESERVED by Brian
- mod_expires.c RESERVED by Brian
- mod_headers.c RESERVED by Brian
- mod_imap.c RESERVED by Brian
- mod_include.c
+ mod_dir.c DONE by Brian
+ mod_dld.c RESERVED by Brian
+ mod_env.c DONE by Brian
+ mod_expires.c DONE by Brian
+ mod_headers.c DONE by Brian
+ mod_imap.c DONE by Brian
+ mod_include.c RESERVED by Brian
mod_info.c DONE by Ken
- mod_log_agent.c RESERVED by Brian
+ mod_log_agent.c DONE by Brian
mod_log_config.c DONE by Ken
- mod_log_referer.c RESERVED by Brian
- mod_mime.c
- mod_mime.h
+ mod_log_referer.c DONE by Brian
+ mod_mime.c RESERVED by Brian
+ mod_mime.h RESERVED by Brian
mod_mime_magic.c DONE by Brian
mod_negotiation.c DONE by Ken
mod_rewrite.c
1.41 +106 -102 apachen/src/modules/standard/mod_dir.c
Index: mod_dir.c
===================================================================
RCS file: /export/home/cvs/apachen/src/modules/standard/mod_dir.c,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -r1.40 -r1.41
--- mod_dir.c 1997/08/18 13:12:11 1.40
+++ mod_dir.c 1997/09/18 18:40:51 1.41
@@ -71,53 +71,54 @@
#define DIR_CMD_PERMS OR_INDEXES
-static command_rec dir_cmds[] = {
-{ "DirectoryIndex", set_string_slot,
- (void*)XtOffsetOf(dir_config_rec, index_names),
- DIR_CMD_PERMS, RAW_ARGS,
- "a list of file names" },
-{ NULL }
+static command_rec dir_cmds[] =
+{
+ {"DirectoryIndex", set_string_slot,
+ (void *) XtOffsetOf(dir_config_rec, index_names),
+ DIR_CMD_PERMS, RAW_ARGS,
+ "a list of file names"},
+ {NULL}
};
-static void *create_dir_config (pool *p, char *dummy)
+static void *create_dir_config(pool *p, char *dummy)
{
dir_config_rec *new =
- (dir_config_rec *) pcalloc (p, sizeof(dir_config_rec));
+ (dir_config_rec *) pcalloc(p, sizeof(dir_config_rec));
new->index_names = NULL;
- return (void *)new;
+ return (void *) new;
}
-static void *merge_dir_configs (pool *p, void *basev, void *addv)
+static void *merge_dir_configs(pool *p, void *basev, void *addv)
{
- dir_config_rec *new=(dir_config_rec*)pcalloc (p, sizeof(dir_config_rec));
- dir_config_rec *base = (dir_config_rec *)basev;
- dir_config_rec *add = (dir_config_rec *)addv;
+ dir_config_rec *new = (dir_config_rec *) pcalloc(p,
sizeof(dir_config_rec));
+ dir_config_rec *base = (dir_config_rec *) basev;
+ dir_config_rec *add = (dir_config_rec *) addv;
- new->index_names = add->index_names? add->index_names: base->index_names;
+ new->index_names = add->index_names ? add->index_names :
base->index_names;
return new;
}
-static int handle_dir (request_rec *r)
+static int handle_dir(request_rec *r)
{
dir_config_rec *d =
- (dir_config_rec *)get_module_config (r->per_dir_config,
- &dir_module);
+ (dir_config_rec *) get_module_config(r->per_dir_config,
+ &dir_module);
const char *names_ptr = d->index_names ? d->index_names : DEFAULT_INDEX;
int error_notfound = 0;
- if (r->uri[0] == '\0' || r->uri[strlen(r->uri)-1] != '/') {
- char* ifile;
- if (r->args != NULL)
- ifile = pstrcat (r->pool, escape_uri(r->pool, r->uri),
- "/", "?", r->args, NULL);
- else
- ifile = pstrcat (r->pool, escape_uri(r->pool, r->uri),
- "/", NULL);
-
- table_set (r->headers_out, "Location",
- construct_url(r->pool, ifile, r->server));
- return HTTP_MOVED_PERMANENTLY;
+ if (r->uri[0] == '\0' || r->uri[strlen(r->uri) - 1] != '/') {
+ char *ifile;
+ if (r->args != NULL)
+ ifile = pstrcat(r->pool, escape_uri(r->pool, r->uri),
+ "/", "?", r->args, NULL);
+ else
+ ifile = pstrcat(r->pool, escape_uri(r->pool, r->uri),
+ "/", NULL);
+
+ table_set(r->headers_out, "Location",
+ construct_url(r->pool, ifile, r->server));
+ return HTTP_MOVED_PERMANENTLY;
}
/* KLUDGE --- make the sub_req lookups happen in the right directory.
@@ -125,92 +126,95 @@
* and would probably break virtual includes...
*/
- if (r->filename[strlen (r->filename) - 1] != '/') {
- r->filename = pstrcat (r->pool, r->filename, "/", NULL);
+ if (r->filename[strlen(r->filename) - 1] != '/') {
+ r->filename = pstrcat(r->pool, r->filename, "/", NULL);
}
-
+
while (*names_ptr) {
-
- char *name_ptr = getword_conf (r->pool, &names_ptr);
- request_rec *rr = sub_req_lookup_uri (name_ptr, r);
-
- if (rr->status == HTTP_OK && rr->finfo.st_mode != 0) {
- char* new_uri = escape_uri(r->pool, rr->uri);
-
- if (rr->args != NULL)
- new_uri = pstrcat(r->pool, new_uri, "?", rr->args, NULL);
- else if (r->args != NULL)
- new_uri = pstrcat(r->pool, new_uri, "?", r->args, NULL);
-
- destroy_sub_req (rr);
- internal_redirect (new_uri, r);
- return OK;
- }
-
- /* If the request returned a redirect, propagate it to the client */
-
- if (is_HTTP_REDIRECT(rr->status) ||
- (rr->status == HTTP_NOT_ACCEPTABLE && *names_ptr == '\0')) {
-
- error_notfound = rr->status;
- r->notes = overlay_tables(r->pool, r->notes, rr->notes);
- r->headers_out = overlay_tables(r->pool, r->headers_out,
- rr->headers_out);
- r->err_headers_out = overlay_tables(r->pool, r->err_headers_out,
- rr->err_headers_out);
- destroy_sub_req(rr);
- return error_notfound;
- }
-
- /* If the request returned something other than 404 (or 200),
- * it means the module encountered some sort of problem. To be
- * secure, we should return the error, rather than create
- * along a (possibly unsafe) directory index.
- *
- * So we store the error, and if none of the listed files
- * exist, we return the last error response we got, instead
- * of a directory listing.
- */
- if (rr->status && rr->status != HTTP_NOT_FOUND && rr->status != HTTP_OK)
- error_notfound = rr->status;
- destroy_sub_req (rr);
+ char *name_ptr = getword_conf(r->pool, &names_ptr);
+ request_rec *rr = sub_req_lookup_uri(name_ptr, r);
+
+ if (rr->status == HTTP_OK && rr->finfo.st_mode != 0) {
+ char *new_uri = escape_uri(r->pool, rr->uri);
+
+ if (rr->args != NULL)
+ new_uri = pstrcat(r->pool, new_uri, "?", rr->args, NULL);
+ else if (r->args != NULL)
+ new_uri = pstrcat(r->pool, new_uri, "?", r->args, NULL);
+
+ destroy_sub_req(rr);
+ internal_redirect(new_uri, r);
+ return OK;
+ }
+
+ /* If the request returned a redirect, propagate it to the client */
+
+ if (is_HTTP_REDIRECT(rr->status) ||
+ (rr->status == HTTP_NOT_ACCEPTABLE && *names_ptr == '\0')) {
+
+ error_notfound = rr->status;
+ r->notes = overlay_tables(r->pool, r->notes, rr->notes);
+ r->headers_out = overlay_tables(r->pool, r->headers_out,
+ rr->headers_out);
+ r->err_headers_out = overlay_tables(r->pool, r->err_headers_out,
+ rr->err_headers_out);
+ destroy_sub_req(rr);
+ return error_notfound;
+ }
+
+ /* If the request returned something other than 404 (or 200),
+ * it means the module encountered some sort of problem. To be
+ * secure, we should return the error, rather than create
+ * along a (possibly unsafe) directory index.
+ *
+ * So we store the error, and if none of the listed files
+ * exist, we return the last error response we got, instead
+ * of a directory listing.
+ */
+ if (rr->status && rr->status != HTTP_NOT_FOUND && rr->status !=
HTTP_OK)
+ error_notfound = rr->status;
+
+ destroy_sub_req(rr);
}
if (error_notfound)
- return error_notfound;
+ return error_notfound;
+
+ if (r->method_number != M_GET)
+ return NOT_IMPLEMENTED;
- if (r->method_number != M_GET) return NOT_IMPLEMENTED;
-
/* nothing for us to do, pass on through */
return DECLINED;
}
-static handler_rec dir_handlers[] = {
-{ DIR_MAGIC_TYPE, handle_dir },
-{ NULL }
+static handler_rec dir_handlers[] =
+{
+ {DIR_MAGIC_TYPE, handle_dir},
+ {NULL}
};
-module MODULE_VAR_EXPORT dir_module = {
- STANDARD_MODULE_STUFF,
- NULL, /* initializer */
- create_dir_config, /* dir config creater */
- merge_dir_configs, /* dir merger --- default is to
override */
- NULL, /* server config */
- NULL, /* merge server config */
- dir_cmds, /* command table */
- dir_handlers, /* handlers */
- NULL, /* filename translation */
- NULL, /* check_user_id */
- NULL, /* check auth */
- NULL, /* check access */
- NULL, /* type_checker */
- NULL, /* fixups */
- NULL, /* logger */
- NULL, /* header parser */
- NULL, /* child_init */
- NULL, /* child_exit */
- NULL /* post read-request */
+module MODULE_VAR_EXPORT dir_module =
+{
+ STANDARD_MODULE_STUFF,
+ NULL, /* initializer */
+ create_dir_config, /* dir config creater */
+ merge_dir_configs, /* dir merger --- default is to override */
+ NULL, /* server config */
+ NULL, /* merge server config */
+ dir_cmds, /* command table */
+ dir_handlers, /* handlers */
+ NULL, /* filename translation */
+ NULL, /* check_user_id */
+ NULL, /* check auth */
+ NULL, /* check access */
+ NULL, /* type_checker */
+ NULL, /* fixups */
+ NULL, /* logger */
+ NULL, /* header parser */
+ NULL, /* child_init */
+ NULL, /* child_exit */
+ NULL /* post read-request */
};
1.16 +93 -90 apachen/src/modules/standard/mod_env.c
Index: mod_env.c
===================================================================
RCS file: /export/home/cvs/apachen/src/modules/standard/mod_env.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- mod_env.c 1997/08/18 13:12:12 1.15
+++ mod_env.c 1997/09/18 18:40:52 1.16
@@ -70,27 +70,27 @@
* 2) PassEnv FOO present, but $FOO not present in environment
* 3) no PassEnv directive present
* 23.Dec.95 Now allows SetEnv directive with same semantics as 'sh' setenv:
- * SetEnv Var sets Var to the empty string
- * SetEnv Var Val sets Var to the value Val
- * Values containing whitespace should be quoted, eg:
- * SetEnv Var "this is some text"
- * Environment variables take their value from the last instance
- * of PassEnv / SetEnv to be reached in the configuration file.
- * For example, the sequence:
- * PassEnv FOO
- * SetEnv FOO override
- * Causes FOO to take the value 'override'.
+ * SetEnv Var sets Var to the empty string
+ * SetEnv Var Val sets Var to the value Val
+ * Values containing whitespace should be quoted, eg:
+ * SetEnv Var "this is some text"
+ * Environment variables take their value from the last instance
+ * of PassEnv / SetEnv to be reached in the configuration file.
+ * For example, the sequence:
+ * PassEnv FOO
+ * SetEnv FOO override
+ * Causes FOO to take the value 'override'.
* 23.Feb.96 Added UnsetEnv directive to allow environment variables
* to be removed.
* Virtual hosts now 'inherit' parent server environment which
- * they're able to overwrite with their own directives or
- * selectively ignore with UnsetEnv.
+ * they're able to overwrite with their own directives or
+ * selectively ignore with UnsetEnv.
* *** IMPORTANT - the way that virtual hosts inherit their ***
* *** environment variables from the default server's ***
- * *** configuration has changed. You should test your ***
+ * *** configuration has changed. You should test your ***
* *** configuration carefully before accepting this ***
* *** version of the module in a live webserver which used ***
- * *** older versions of the module. ***
+ * *** older versions of the module. ***
*/
#include "httpd.h"
@@ -104,22 +104,22 @@
module MODULE_VAR_EXPORT env_module;
-static void *create_env_server_config (pool *p, server_rec *dummy)
+static void *create_env_server_config(pool *p, server_rec *dummy)
{
env_server_config_rec *new =
- (env_server_config_rec *) palloc (p, sizeof(env_server_config_rec));
- new->vars = make_table (p, 50);
+ (env_server_config_rec *) palloc(p, sizeof(env_server_config_rec));
+ new->vars = make_table(p, 50);
new->unsetenv = "";
new->vars_present = 0;
return (void *) new;
}
-static void *merge_env_server_configs (pool *p, void *basev, void *addv)
+static void *merge_env_server_configs(pool *p, void *basev, void *addv)
{
- env_server_config_rec *base = (env_server_config_rec *)basev;
- env_server_config_rec *add = (env_server_config_rec *)addv;
+ env_server_config_rec *base = (env_server_config_rec *) basev;
+ env_server_config_rec *add = (env_server_config_rec *) addv;
env_server_config_rec *new =
- (env_server_config_rec *)palloc (p, sizeof(env_server_config_rec));
+ (env_server_config_rec *) palloc(p, sizeof(env_server_config_rec));
table *new_table;
table_entry *elts;
@@ -127,29 +127,29 @@
int i;
const char *uenv, *unset;
- /*
- * new_table = copy_table( p, base->vars );
- * foreach $element ( @add->vars ) {
- * table_set( new_table, $element.key, $element.val );
- * };
- * foreach $unsetenv ( @UNSETENV ) {
- * table_unset( new_table, $unsetenv );
- * }
- */
+ /*
+ * new_table = copy_table( p, base->vars );
+ * foreach $element ( @add->vars ) {
+ * table_set( new_table, $element.key, $element.val );
+ * };
+ * foreach $unsetenv ( @UNSETENV ) {
+ * table_unset( new_table, $unsetenv );
+ * }
+ */
- new_table = copy_table( p, base->vars );
+ new_table = copy_table(p, base->vars);
elts = (table_entry *) add->vars->elts;
- for ( i = 0; i < add->vars->nelts; ++i ) {
- table_set( new_table, elts[i].key, elts[i].val );
+ for (i = 0; i < add->vars->nelts; ++i) {
+ table_set(new_table, elts[i].key, elts[i].val);
}
unset = add->unsetenv;
- uenv = getword_conf( p, &unset );
- while ( uenv[0] != '\0' ) {
- table_unset( new_table, uenv );
- uenv = getword_conf( p, &unset );
+ uenv = getword_conf(p, &unset);
+ while (uenv[0] != '\0') {
+ table_unset(new_table, uenv);
+ uenv = getword_conf(p, &unset);
}
new->vars = new_table;
@@ -159,106 +159,109 @@
return new;
}
-static const char *add_env_module_vars_passed (cmd_parms *cmd, char
*struct_ptr,
- const char *arg)
+static const char *add_env_module_vars_passed(cmd_parms *cmd, char
*struct_ptr,
+ const char *arg)
{
env_server_config_rec *sconf =
- get_module_config (cmd->server->module_config, &env_module);
+ get_module_config(cmd->server->module_config, &env_module);
table *vars = sconf->vars;
char *env_var;
char *name_ptr;
while (*arg) {
- name_ptr = getword_conf (cmd->pool, &arg);
+ name_ptr = getword_conf(cmd->pool, &arg);
env_var = getenv(name_ptr);
- if ( env_var != NULL ) {
+ if (env_var != NULL) {
sconf->vars_present = 1;
- table_set (vars, name_ptr, env_var);
+ table_set(vars, name_ptr, env_var);
}
}
return NULL;
}
-static const char *add_env_module_vars_set (cmd_parms *cmd, char *struct_ptr,
- const char *arg)
+static const char *add_env_module_vars_set(cmd_parms *cmd, char *struct_ptr,
+ const char *arg)
{
env_server_config_rec *sconf =
- get_module_config (cmd->server->module_config, &env_module);
+ get_module_config(cmd->server->module_config, &env_module);
table *vars = sconf->vars;
char *name, *value;
- name = getword_conf( cmd->pool, &arg );
- value = getword_conf( cmd->pool, &arg );
+ name = getword_conf(cmd->pool, &arg);
+ value = getword_conf(cmd->pool, &arg);
/* name is mandatory, value is optional. no value means
* set the variable to an empty string
*/
- if ( (*name == '\0') || (*arg != '\0')) {
- return "SetEnv takes one or two arguments. An environment variable
name and an optional value to pass to CGI." ;
+ if ((*name == '\0') || (*arg != '\0')) {
+ return "SetEnv takes one or two arguments. An environment variable
name and an optional value to pass to CGI.";
}
sconf->vars_present = 1;
- table_set (vars, name, value);
+ table_set(vars, name, value);
return NULL;
}
-static const char *add_env_module_vars_unset (cmd_parms *cmd, char
*struct_ptr,
- char *arg)
+static const char *add_env_module_vars_unset(cmd_parms *cmd, char
*struct_ptr,
+ char *arg)
{
env_server_config_rec *sconf =
- get_module_config (cmd->server->module_config, &env_module);
- sconf->unsetenv = sconf->unsetenv ?
- pstrcat( cmd->pool, sconf->unsetenv, " ", arg, NULL ) :
- pstrdup( cmd->pool, arg );
+ get_module_config(cmd->server->module_config, &env_module);
+ sconf->unsetenv = sconf->unsetenv ?
+ pstrcat(cmd->pool, sconf->unsetenv, " ", arg, NULL) :
+ pstrdup(cmd->pool, arg);
return NULL;
}
-static command_rec env_module_cmds[] = {
-{ "PassEnv", add_env_module_vars_passed, NULL,
- RSRC_CONF, RAW_ARGS, "a list of environment variables to pass to CGI." },
-{ "SetEnv", add_env_module_vars_set, NULL,
- RSRC_CONF, RAW_ARGS, "an environment variable name and a value to pass
to CGI." },
-{ "UnsetEnv", add_env_module_vars_unset, NULL,
- RSRC_CONF, RAW_ARGS, "a list of variables to remove from the CGI
environment." },
-{ NULL },
+static command_rec env_module_cmds[] =
+{
+ {"PassEnv", add_env_module_vars_passed, NULL,
+ RSRC_CONF, RAW_ARGS, "a list of environment variables to pass to CGI."},
+ {"SetEnv", add_env_module_vars_set, NULL,
+ RSRC_CONF, RAW_ARGS, "an environment variable name and a value to pass
to CGI."},
+ {"UnsetEnv", add_env_module_vars_unset, NULL,
+ RSRC_CONF, RAW_ARGS, "a list of variables to remove from the CGI
environment."},
+ {NULL},
};
static int fixup_env_module(request_rec *r)
{
table *e = r->subprocess_env;
server_rec *s = r->server;
- env_server_config_rec *sconf = get_module_config (s->module_config,
- &env_module);
+ env_server_config_rec *sconf = get_module_config(s->module_config,
+ &env_module);
table *vars = sconf->vars;
- if ( !sconf->vars_present ) return DECLINED;
+ if (!sconf->vars_present)
+ return DECLINED;
- r->subprocess_env = overlay_tables( r->pool, e, vars );
+ r->subprocess_env = overlay_tables(r->pool, e, vars);
- return OK;
+ return OK;
}
-module MODULE_VAR_EXPORT env_module = {
- STANDARD_MODULE_STUFF,
- NULL, /* initializer */
- NULL, /* dir config creater */
- NULL, /* dir merger --- default is to override */
- create_env_server_config, /* server config */
- merge_env_server_configs, /* merge server configs */
- env_module_cmds, /* command table */
- NULL, /* handlers */
- NULL, /* filename translation */
- NULL, /* check_user_id */
- NULL, /* check auth */
- NULL, /* check access */
- NULL, /* type_checker */
- fixup_env_module, /* fixups */
- NULL, /* logger */
- NULL, /* header parser */
- NULL, /* child_init */
- NULL, /* child_exit */
- NULL /* post read-request */
+module MODULE_VAR_EXPORT env_module =
+{
+ STANDARD_MODULE_STUFF,
+ NULL, /* initializer */
+ NULL, /* dir config creater */
+ NULL, /* dir merger --- default is to override */
+ create_env_server_config, /* server config */
+ merge_env_server_configs, /* merge server configs */
+ env_module_cmds, /* command table */
+ NULL, /* handlers */
+ NULL, /* filename translation */
+ NULL, /* check_user_id */
+ NULL, /* check auth */
+ NULL, /* check access */
+ NULL, /* type_checker */
+ fixup_env_module, /* fixups */
+ NULL, /* logger */
+ NULL, /* header parser */
+ NULL, /* child_init */
+ NULL, /* child_exit */
+ NULL /* post read-request */
};
1.18 +225 -211 apachen/src/modules/standard/mod_expires.c
Index: mod_expires.c
===================================================================
RCS file: /export/home/cvs/apachen/src/modules/standard/mod_expires.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- mod_expires.c 1997/08/31 23:11:27 1.17
+++ mod_expires.c 1997/09/18 18:40:52 1.18
@@ -72,12 +72,12 @@
*
* Valid values for <code> are:
*
- * 'M' expires header shows file modification date + <seconds>
- * 'A' expires header shows access time + <seconds>
+ * 'M' expires header shows file modification date + <seconds>
+ * 'A' expires header shows access time + <seconds>
*
* [I'm not sure which of these is best under different
* circumstances, I guess it's for other people to explore.
- * The effects may be indistinguishable for a number of cases]
+ * The effects may be indistinguishable for a number of cases]
*
* <seconds> should be an integer value [acceptable to atoi()]
*
@@ -121,55 +121,55 @@
* ExpiresByType type/encoding "<base> [plus] {<num> <type>}*"
*
* where <base> is one of:
- * access
- * now equivalent to 'access'
- * modification
+ * access
+ * now equivalent to 'access'
+ * modification
*
* where the 'plus' keyword is optional
*
* where <num> should be an integer value [acceptable to atoi()]
*
* where <type> is one of:
- * years
- * months
- * weeks
- * days
- * hours
- * minutes
- * seconds
+ * years
+ * months
+ * weeks
+ * days
+ * hours
+ * minutes
+ * seconds
*
* For example, any of the following directives can be used to make
* documents expire 1 month after being accessed, by default:
*
- * ExpiresDefault "access plus 1 month"
- * ExpiresDefault "access plus 4 weeks"
- * ExpiresDefault "access plus 30 days"
+ * ExpiresDefault "access plus 1 month"
+ * ExpiresDefault "access plus 4 weeks"
+ * ExpiresDefault "access plus 30 days"
*
* The expiry time can be fine-tuned by adding several '<num> <type>'
* clauses:
*
- * ExpiresByType text/html "access plus 1 month 15 days 2 hours"
- * ExpiresByType image/gif "modification plus 5 hours 3 minutes"
+ * ExpiresByType text/html "access plus 1 month 15 days 2 hours"
+ * ExpiresByType image/gif "modification plus 5 hours 3 minutes"
*
* ---
*
* Change-log:
- * 29.Jan.96 Hardened the add_* functions. Server will now bail out
- * if bad directives are given in the conf files.
- * 02.Feb.96 Returns DECLINED if not 'ExpiresActive on', giving other
- * expires-aware modules a chance to play with the same
- * directives. [Michael Rutman]
- * 03.Feb.96 Call tzset() before localtime(). Trying to get the module
- * to work properly in non GMT timezones.
- * 12.Feb.96 Modified directive syntax to allow more readable commands:
- * ExpiresDefault "now plus 10 days 20 seconds"
- * ExpiresDefault "access plus 30 days"
- * ExpiresDefault "modification plus 1 year 10 months 30 days"
- * 13.Feb.96 Fix call to table_get() with NULL 2nd parameter [Rob Hartill]
- * 19.Feb.96 Call gm_timestr_822() to get time formatted correctly, can't
- * rely on presence of HTTP_TIME_FORMAT in Apache 1.1+.
- * 21.Feb.96 This version (0.0.9) reverses assumptions made in 0.0.8
- * about star/star handlers. Reverting to 0.0.7 behaviour.
+ * 29.Jan.96 Hardened the add_* functions. Server will now bail out
+ * if bad directives are given in the conf files.
+ * 02.Feb.96 Returns DECLINED if not 'ExpiresActive on', giving other
+ * expires-aware modules a chance to play with the same
+ * directives. [Michael Rutman]
+ * 03.Feb.96 Call tzset() before localtime(). Trying to get the module
+ * to work properly in non GMT timezones.
+ * 12.Feb.96 Modified directive syntax to allow more readable commands:
+ * ExpiresDefault "now plus 10 days 20 seconds"
+ * ExpiresDefault "access plus 30 days"
+ * ExpiresDefault "modification plus 1 year 10 months 30 days"
+ * 13.Feb.96 Fix call to table_get() with NULL 2nd parameter [Rob Hartill]
+ * 19.Feb.96 Call gm_timestr_822() to get time formatted correctly, can't
+ * rely on presence of HTTP_TIME_FORMAT in Apache 1.1+.
+ * 21.Feb.96 This version (0.0.9) reverses assumptions made in 0.0.8
+ * about star/star handlers. Reverting to 0.0.7 behaviour.
* 08.Jun.96 allows ExpiresDefault to be used with responses that use
* the DefaultType by not DECLINING, but instead skipping
* the table_get check and then looking for an ExpiresDefault.
@@ -181,7 +181,7 @@
* proposal (in this case, a ttl of 20 seconds) [ask roy]
* add per-file expiry and explicit expiry times - duplicates some
* of the mod_cern_meta.c functionality. eg:
- * ExpiresExplicit index.html "modification plus 30 days"
+ * ExpiresExplicit index.html "modification plus 30 days"
*
* BUGS
* Hi, welcome to the internet.
@@ -202,39 +202,39 @@
*/
#define DIR_CMD_PERMS OR_INDEXES
-#define ACTIVE_ON 1
-#define ACTIVE_OFF 0
+#define ACTIVE_ON 1
+#define ACTIVE_OFF 0
#define ACTIVE_DONTCARE 2
module MODULE_VAR_EXPORT expires_module;
-static void *create_dir_expires_config (pool *p, char *dummy)
-{
+static void *create_dir_expires_config(pool *p, char *dummy)
+{
expires_dir_config *new =
- (expires_dir_config *) pcalloc (p, sizeof(expires_dir_config));
+ (expires_dir_config *) pcalloc(p, sizeof(expires_dir_config));
new->active = ACTIVE_DONTCARE;
new->expiresdefault = "";
new->expiresbytype = make_table(p, 4);
- return (void *)new;
-}
+ return (void *) new;
+}
-static const char *set_expiresactive (cmd_parms *cmd, expires_dir_config
*dir_config, int arg)
+static const char *set_expiresactive(cmd_parms *cmd, expires_dir_config *
dir_config, int arg)
{
/* if we're here at all it's because someone explicitly
* set the active flag
*/
dir_config->active = ACTIVE_ON;
- if ( arg == 0 ) {
+ if (arg == 0) {
dir_config->active = ACTIVE_OFF;
};
return NULL;
-}
+}
/* check_code() parse 'code' and return NULL or an error response
* string. If we return NULL then real_code contains code converted
* to the cnnnn format.
*/
-static char *check_code( pool *p, const char *code, char **real_code )
+static char *check_code(pool *p, const char *code, char **real_code)
{
char *word;
char base = 'X';
@@ -245,9 +245,9 @@
/* 0.0.4 compatibility?
*/
- if ( (code[0] == 'A') || (code[0] == 'M') ) {
- *real_code = pstrdup( p, code );
- return NULL;
+ if ((code[0] == 'A') || (code[0] == 'M')) {
+ *real_code = pstrdup(p, code);
+ return NULL;
};
/* <base> [plus] {<num> <type>}*
@@ -255,159 +255,172 @@
/* <base>
*/
- word = getword_conf( p, &code );
- if ( !strncasecmp( word, "now", 1 ) ||
- !strncasecmp( word, "access", 1 ) ) {
- base = 'A';
- } else if ( !strncasecmp( word, "modification", 1 ) ) {
- base = 'M';
- } else {
- return pstrcat( p, "bad expires code, unrecognised <base> '",
- word, "'", NULL);
+ word = getword_conf(p, &code);
+ if (!strncasecmp(word, "now", 1) ||
+ !strncasecmp(word, "access", 1)) {
+ base = 'A';
+ }
+ else if (!strncasecmp(word, "modification", 1)) {
+ base = 'M';
+ }
+ else {
+ return pstrcat(p, "bad expires code, unrecognised <base> '",
+ word, "'", NULL);
};
/* [plus]
*/
- word = getword_conf( p, &code );
- if ( !strncasecmp( word, "plus", 1 ) ) {
- word = getword_conf( p, &code );
+ word = getword_conf(p, &code);
+ if (!strncasecmp(word, "plus", 1)) {
+ word = getword_conf(p, &code);
};
/* {<num> <type>}*
*/
- while ( word[0] ) {
- /* <num>
- */
- if (isdigit(word[0])) {
- num = atoi( word );
- } else {
- return pstrcat( p, "bad expires code, numeric value expected
<num> '",
- word, "'", NULL);
- };
-
- /* <type>
- */
- word = getword_conf( p, &code );
- if ( word[0] ) {
- /* do nothing */
- } else {
- return pstrcat( p, "bad expires code, missing <type>", NULL);
- };
-
- factor = 0;
- if ( !strncasecmp( word, "years", 1 ) ) {
- factor = 60*60*24*365;
- } else if ( !strncasecmp( word, "months", 2 ) ) {
- factor = 60*60*24*30;
- } else if ( !strncasecmp( word, "weeks", 1 ) ) {
- factor = 60*60*24*7;
- } else if ( !strncasecmp( word, "days", 1 ) ) {
- factor = 60*60*24;
- } else if ( !strncasecmp( word, "hours", 1 ) ) {
- factor = 60*60;
- } else if ( !strncasecmp( word, "minutes", 2 ) ) {
- factor = 60;
- } else if ( !strncasecmp( word, "seconds", 1 ) ) {
- factor = 1;
- } else {
- return pstrcat( p, "bad expires code, unrecognised <type>",
- "'", word, "'", NULL);
- };
-
- modifier = modifier + factor * num;
-
- /* next <num>
- */
- word = getword_conf( p, &code );
+ while (word[0]) {
+ /* <num>
+ */
+ if (isdigit(word[0])) {
+ num = atoi(word);
+ }
+ else {
+ return pstrcat(p, "bad expires code, numeric value expected
<num> '",
+ word, "'", NULL);
+ };
+
+ /* <type>
+ */
+ word = getword_conf(p, &code);
+ if (word[0]) {
+ /* do nothing */
+ }
+ else {
+ return pstrcat(p, "bad expires code, missing <type>", NULL);
+ };
+
+ factor = 0;
+ if (!strncasecmp(word, "years", 1)) {
+ factor = 60 * 60 * 24 * 365;
+ }
+ else if (!strncasecmp(word, "months", 2)) {
+ factor = 60 * 60 * 24 * 30;
+ }
+ else if (!strncasecmp(word, "weeks", 1)) {
+ factor = 60 * 60 * 24 * 7;
+ }
+ else if (!strncasecmp(word, "days", 1)) {
+ factor = 60 * 60 * 24;
+ }
+ else if (!strncasecmp(word, "hours", 1)) {
+ factor = 60 * 60;
+ }
+ else if (!strncasecmp(word, "minutes", 2)) {
+ factor = 60;
+ }
+ else if (!strncasecmp(word, "seconds", 1)) {
+ factor = 1;
+ }
+ else {
+ return pstrcat(p, "bad expires code, unrecognised <type>",
+ "'", word, "'", NULL);
+ };
+
+ modifier = modifier + factor * num;
+
+ /* next <num>
+ */
+ word = getword_conf(p, &code);
};
- ap_snprintf(foo, sizeof(foo), "%c%d", base, modifier );
- *real_code = pstrdup( p, foo );
+ ap_snprintf(foo, sizeof(foo), "%c%d", base, modifier);
+ *real_code = pstrdup(p, foo);
return NULL;
}
-static const char *set_expiresbytype(cmd_parms *cmd, expires_dir_config
*dir_config, char *mime, char *code)
+static const char *set_expiresbytype(cmd_parms *cmd, expires_dir_config *
dir_config, char *mime, char *code)
{
char *response, *real_code;
- if ( (response = check_code( cmd->pool, code, &real_code )) == NULL ) {
- table_set (dir_config->expiresbytype, mime, real_code);
- return NULL;
- };
- return pstrcat( cmd->pool,
- "'ExpiresByType ", mime, " ", code, "': ", response, NULL );
-}
+ if ((response = check_code(cmd->pool, code, &real_code)) == NULL) {
+ table_set(dir_config->expiresbytype, mime, real_code);
+ return NULL;
+ };
+ return pstrcat(cmd->pool,
+ "'ExpiresByType ", mime, " ", code, "': ", response, NULL);
+}
-static const char *set_expiresdefault (cmd_parms *cmd, expires_dir_config
*dir_config, char *code)
+static const char *set_expiresdefault(cmd_parms *cmd, expires_dir_config *
dir_config, char *code)
{
char *response, *real_code;
- if ( (response = check_code( cmd->pool, code, &real_code )) == NULL ) {
- dir_config->expiresdefault = pstrdup( cmd->pool, real_code );
- return NULL;
- };
- return pstrcat( cmd->pool,
- "'ExpiresDefault ", code, "': ", response, NULL );
-}
-
-static command_rec expires_cmds[] = {
-{ "ExpiresActive", set_expiresactive, NULL, DIR_CMD_PERMS, FLAG,
- "Limited to 'on' or 'off'"},
-{ "ExpiresBytype", set_expiresbytype, NULL, DIR_CMD_PERMS, TAKE2,
- "a MIME type followed by an expiry date code"},
-{ "ExpiresDefault", set_expiresdefault, NULL, DIR_CMD_PERMS, TAKE1,
- "an expiry date code"},
-{ NULL }
-};
+ if ((response = check_code(cmd->pool, code, &real_code)) == NULL) {
+ dir_config->expiresdefault = pstrdup(cmd->pool, real_code);
+ return NULL;
+ };
+ return pstrcat(cmd->pool,
+ "'ExpiresDefault ", code, "': ", response, NULL);
+}
-static void *merge_expires_dir_configs (pool *p, void *basev, void *addv)
+static command_rec expires_cmds[] =
{
- expires_dir_config *new= (expires_dir_config*)pcalloc (p,
sizeof(expires_dir_config));
- expires_dir_config *base = (expires_dir_config *)basev;
- expires_dir_config *add = (expires_dir_config *)addv;
+ {"ExpiresActive", set_expiresactive, NULL, DIR_CMD_PERMS, FLAG,
+ "Limited to 'on' or 'off'"},
+ {"ExpiresBytype", set_expiresbytype, NULL, DIR_CMD_PERMS, TAKE2,
+ "a MIME type followed by an expiry date code"},
+ {"ExpiresDefault", set_expiresdefault, NULL, DIR_CMD_PERMS, TAKE1,
+ "an expiry date code"},
+ {NULL}
+};
- if ( add->active == ACTIVE_DONTCARE ) {
- new->active = base->active;
- } else {
- new->active = add->active;
+static void *merge_expires_dir_configs(pool *p, void *basev, void *addv)
+{
+ expires_dir_config *new = (expires_dir_config *) pcalloc(p,
sizeof(expires_dir_config));
+ expires_dir_config *base = (expires_dir_config *) basev;
+ expires_dir_config *add = (expires_dir_config *) addv;
+
+ if (add->active == ACTIVE_DONTCARE) {
+ new->active = base->active;
+ }
+ else {
+ new->active = add->active;
};
- if ( add->expiresdefault != '\0' ) {
+ if (add->expiresdefault != '\0') {
new->expiresdefault = add->expiresdefault;
};
- new->expiresbytype = overlay_tables (p, add->expiresbytype,
- base->expiresbytype);
+ new->expiresbytype = overlay_tables(p, add->expiresbytype,
+ base->expiresbytype);
return new;
-}
+}
static int add_expires(request_rec *r)
{
expires_dir_config *conf;
char *code;
- time_t base;
- time_t additional;
- time_t expires;
+ time_t base;
+ time_t additional;
+ time_t expires;
char age[20];
- if (is_HTTP_ERROR(r->status)) /* Don't add Expires headers to errors */
- return DECLINED;
+ if (is_HTTP_ERROR(r->status)) /* Don't add Expires headers to
errors */
+ return DECLINED;
- if (r->main != NULL) /* Say no to subrequests */
- return DECLINED;
+ if (r->main != NULL) /* Say no to subrequests */
+ return DECLINED;
- if ( r->finfo.st_mode == 0 ) /* no file ? shame. */
- return DECLINED;
+ if (r->finfo.st_mode == 0) /* no file ? shame. */
+ return DECLINED;
- conf = (expires_dir_config *)get_module_config(r->per_dir_config,
&expires_module);
- if ( conf == NULL ) {
+ conf = (expires_dir_config *) get_module_config(r->per_dir_config,
&expires_module);
+ if (conf == NULL) {
aplog_error(APLOG_MARK, APLOG_ERR, r->server,
- "internal error: %s", r->filename);
- return SERVER_ERROR;
+ "internal error: %s", r->filename);
+ return SERVER_ERROR;
};
- if ( conf->active != ACTIVE_ON )
+ if (conf->active != ACTIVE_ON)
return DECLINED;
/* we perhaps could use the default_type(r) in its place but that
@@ -421,70 +434,71 @@
*
* Changed as of 08.Jun.96 don't DECLINE, look for an ExpiresDefault.
*/
- if ( r->content_type == NULL )
- code = NULL;
+ if (r->content_type == NULL)
+ code = NULL;
else
- code = (char *) table_get( conf->expiresbytype, r->content_type );
+ code = (char *) table_get(conf->expiresbytype, r->content_type);
- if ( code == NULL ) {
- /* no expires defined for that type, is there a default? */
- code = conf->expiresdefault;
+ if (code == NULL) {
+ /* no expires defined for that type, is there a default? */
+ code = conf->expiresdefault;
- if ( code[0] == '\0' )
- return OK;
+ if (code[0] == '\0')
+ return OK;
};
/* we have our code */
switch (code[0]) {
- case 'M':
- base = r->finfo.st_mtime;
- additional = atoi( &code[1] );
- break;
- case 'A':
- /* there's been some discussion and it's possible that
- * 'access time' will be stored in request structure
- */
- base = r->request_time;
- additional = atoi( &code[1] );
- break;
- default:
- /* expecting the add_* routines to be case-hardened this
- * is just a reminder that module is beta
- */
- aplog_error(APLOG_MARK, APLOG_ERR, r->server,
- "internal error: bad expires code: %s", r->filename);
- return SERVER_ERROR;
+ case 'M':
+ base = r->finfo.st_mtime;
+ additional = atoi(&code[1]);
+ break;
+ case 'A':
+ /* there's been some discussion and it's possible that
+ * 'access time' will be stored in request structure
+ */
+ base = r->request_time;
+ additional = atoi(&code[1]);
+ break;
+ default:
+ /* expecting the add_* routines to be case-hardened this
+ * is just a reminder that module is beta
+ */
+ aplog_error(APLOG_MARK, APLOG_ERR, r->server,
+ "internal error: bad expires code: %s", r->filename);
+ return SERVER_ERROR;
};
expires = base + additional;
- ap_snprintf(age, sizeof(age), "max-age=%d", (int)expires -
(int)r->request_time);
- table_set( r->headers_out, "Cache-Control", age);
- tzset(); /* redundant? called implicitly by localtime, at least
- * under FreeBSD
- */
- table_set( r->headers_out, "Expires", gm_timestr_822( r->pool, expires
));
+ ap_snprintf(age, sizeof(age), "max-age=%d", (int) expires - (int)
r->request_time);
+ table_set(r->headers_out, "Cache-Control", age);
+ tzset(); /* redundant? called implicitly by
localtime, at least
+ * under FreeBSD
+ */
+ table_set(r->headers_out, "Expires", gm_timestr_822(r->pool, expires));
return OK;
}
-module MODULE_VAR_EXPORT expires_module = {
- STANDARD_MODULE_STUFF,
- NULL, /* initializer */
- create_dir_expires_config, /* dir config creater */
- merge_expires_dir_configs, /* dir merger --- default is to
override */
- NULL, /* server config */
- NULL, /* merge server configs */
- expires_cmds, /* command table */
- NULL, /* handlers */
- NULL, /* filename translation */
- NULL, /* check_user_id */
- NULL, /* check auth */
- NULL, /* check access */
- NULL, /* type_checker */
- add_expires, /* fixups */
- NULL, /* logger */
- NULL, /* header parser */
- NULL, /* child_init */
- NULL, /* child_exit */
- NULL /* post read-request */
+module MODULE_VAR_EXPORT expires_module =
+{
+ STANDARD_MODULE_STUFF,
+ NULL, /* initializer */
+ create_dir_expires_config, /* dir config creater */
+ merge_expires_dir_configs, /* dir merger --- default is to override */
+ NULL, /* server config */
+ NULL, /* merge server configs */
+ expires_cmds, /* command table */
+ NULL, /* handlers */
+ NULL, /* filename translation */
+ NULL, /* check_user_id */
+ NULL, /* check auth */
+ NULL, /* check access */
+ NULL, /* type_checker */
+ add_expires, /* fixups */
+ NULL, /* logger */
+ NULL, /* header parser */
+ NULL, /* child_init */
+ NULL, /* child_exit */
+ NULL /* post read-request */
};
1.10 +74 -70 apachen/src/modules/standard/mod_headers.c
Index: mod_headers.c
===================================================================
RCS file: /export/home/cvs/apachen/src/modules/standard/mod_headers.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- mod_headers.c 1997/08/18 13:12:12 1.9
+++ mod_headers.c 1997/09/18 18:40:53 1.10
@@ -100,10 +100,10 @@
#include "http_config.h"
typedef enum {
- hdr_add = 'a', /* add header (could mean multiple hdrs) */
- hdr_set = 's', /* set (replace old value) */
- hdr_append = 'm', /* append (merge into any old value) */
- hdr_unset = 'u' /* unset header */
+ hdr_add = 'a', /* add header (could mean multiple hdrs) */
+ hdr_set = 's', /* set (replace old value) */
+ hdr_append = 'm', /* append (merge into any old value) */
+ hdr_unset = 'u' /* unset header */
} hdr_actions;
typedef struct {
@@ -122,26 +122,25 @@
module MODULE_VAR_EXPORT headers_module;
-static void *create_headers_config (pool *p, server_rec *s)
+static void *create_headers_config(pool *p, server_rec *s)
{
headers_conf *a =
- (headers_conf *)pcalloc (p, sizeof(headers_conf));
+ (headers_conf *) pcalloc(p, sizeof(headers_conf));
- a->headers = make_array (p, 2, sizeof(header_entry));
+ a->headers = make_array(p, 2, sizeof(header_entry));
return a;
}
-static void *create_headers_dir_config (pool *p, char *d)
+static void *create_headers_dir_config(pool *p, char *d)
{
- return (headers_conf*)create_headers_config(p, NULL);
+ return (headers_conf *) create_headers_config(p, NULL);
}
-static void *merge_headers_config (pool *p, void *basev, void *overridesv)
+static void *merge_headers_config(pool *p, void *basev, void *overridesv)
{
headers_conf *a =
- (headers_conf *)pcalloc (p, sizeof(headers_conf));
- headers_conf *base = (headers_conf *)basev,
- *overrides = (headers_conf *)overridesv;
+ (headers_conf *) pcalloc(p, sizeof(headers_conf));
+ headers_conf *base = (headers_conf *) basev, *overrides = (headers_conf
*) overridesv;
a->headers = append_arrays(p, base->headers, overrides->headers);
@@ -149,35 +148,38 @@
}
-static const char *header_cmd(cmd_parms *cmd, headers_conf *dirconf, char
*action, char *hdr, char *value)
+static const char *header_cmd(cmd_parms *cmd, headers_conf * dirconf, char
*action, char *hdr, char *value)
{
header_entry *new;
server_rec *s = cmd->server;
headers_conf *serverconf =
- (headers_conf *)get_module_config(s->module_config,&headers_module);
+ (headers_conf *) get_module_config(s->module_config, &headers_module);
char *colon;
- if ( cmd->path )
- {
- new = (header_entry*)push_array(dirconf->headers);
+ if (cmd->path) {
+ new = (header_entry *) push_array(dirconf->headers);
}
- else
- {
- new = (header_entry*)push_array(serverconf->headers);
+ else {
+ new = (header_entry *) push_array(serverconf->headers);
}
- if (!strcasecmp(action, "set")) new->action = hdr_set;
- else if (!strcasecmp(action, "add")) new->action = hdr_add;
- else if (!strcasecmp(action, "append")) new->action = hdr_append;
- else if (!strcasecmp(action, "unset")) new->action = hdr_unset;
- else
- return "first argument must be add, set, append or unset.";
+ if (!strcasecmp(action, "set"))
+ new->action = hdr_set;
+ else if (!strcasecmp(action, "add"))
+ new->action = hdr_add;
+ else if (!strcasecmp(action, "append"))
+ new->action = hdr_append;
+ else if (!strcasecmp(action, "unset"))
+ new->action = hdr_unset;
+ else
+ return "first argument must be add, set, append or unset.";
if (new->action == hdr_unset) {
- if (value) return "Header unset takes two arguments";
+ if (value)
+ return "Header unset takes two arguments";
}
else if (!value)
- return "Header requires three arguments";
+ return "Header requires three arguments";
if ((colon = strchr(hdr, ':')))
*colon = '\0';
@@ -188,10 +190,11 @@
return NULL;
}
-static command_rec headers_cmds[] = {
-{ "Header", header_cmd, NULL, OR_FILEINFO, TAKE23,
- "an action, header and value"},
-{ NULL }
+static command_rec headers_cmds[] =
+{
+ {"Header", header_cmd, NULL, OR_FILEINFO, TAKE23,
+ "an action, header and value"},
+ {NULL}
};
static void do_headers_fixup(request_rec *r, array_header *headers)
@@ -199,21 +202,21 @@
int i;
for (i = 0; i < headers->nelts; ++i) {
- header_entry *hdr = &((header_entry*)(headers->elts))[i];
- switch (hdr->action) {
- case hdr_add:
- table_add(r->headers_out, hdr->header, hdr->value);
- break;
- case hdr_append:
- table_merge(r->headers_out, hdr->header, hdr->value);
- break;
- case hdr_set:
- table_set(r->headers_out, hdr->header, hdr->value);
- break;
- case hdr_unset:
- table_unset(r->headers_out, hdr->header);
- break;
- }
+ header_entry *hdr = &((header_entry *) (headers->elts))[i];
+ switch (hdr->action) {
+ case hdr_add:
+ table_add(r->headers_out, hdr->header, hdr->value);
+ break;
+ case hdr_append:
+ table_merge(r->headers_out, hdr->header, hdr->value);
+ break;
+ case hdr_set:
+ table_set(r->headers_out, hdr->header, hdr->value);
+ break;
+ case hdr_unset:
+ table_unset(r->headers_out, hdr->header);
+ break;
+ }
}
}
@@ -222,10 +225,10 @@
{
void *sconf = r->server->module_config;
headers_conf *serverconf =
- (headers_conf *)get_module_config(sconf, &headers_module);
+ (headers_conf *) get_module_config(sconf, &headers_module);
void *dconf = r->per_dir_config;
headers_conf *dirconf =
- (headers_conf *)get_module_config(dconf, &headers_module);
+ (headers_conf *) get_module_config(dconf, &headers_module);
do_headers_fixup(r, serverconf->headers);
do_headers_fixup(r, dirconf->headers);
@@ -233,24 +236,25 @@
return DECLINED;
}
-module MODULE_VAR_EXPORT headers_module = {
- STANDARD_MODULE_STUFF,
- NULL, /* initializer */
- create_headers_dir_config, /* dir config creater */
- merge_headers_config, /* dir merger --- default is to override */
- create_headers_config, /* server config */
- merge_headers_config, /* merge server configs */
- headers_cmds, /* command table */
- NULL, /* handlers */
- NULL, /* filename translation */
- NULL, /* check_user_id */
- NULL, /* check auth */
- NULL, /* check access */
- NULL, /* type_checker */
- fixup_headers, /* fixups */
- NULL, /* logger */
- NULL, /* header parser */
- NULL, /* child_init */
- NULL, /* child_exit */
- NULL /* post read-request */
+module MODULE_VAR_EXPORT headers_module =
+{
+ STANDARD_MODULE_STUFF,
+ NULL, /* initializer */
+ create_headers_dir_config, /* dir config creater */
+ merge_headers_config, /* dir merger --- default is to override */
+ create_headers_config, /* server config */
+ merge_headers_config, /* merge server configs */
+ headers_cmds, /* command table */
+ NULL, /* handlers */
+ NULL, /* filename translation */
+ NULL, /* check_user_id */
+ NULL, /* check auth */
+ NULL, /* check access */
+ NULL, /* type_checker */
+ fixup_headers, /* fixups */
+ NULL, /* logger */
+ NULL, /* header parser */
+ NULL, /* child_init */
+ NULL, /* child_exit */
+ NULL /* post read-request */
};
1.31 +597 -579 apachen/src/modules/standard/mod_imap.c
Index: mod_imap.c
===================================================================
RCS file: /export/home/cvs/apachen/src/modules/standard/mod_imap.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- mod_imap.c 1997/08/31 23:15:52 1.30
+++ mod_imap.c 1997/09/18 18:40:54 1.31
@@ -107,53 +107,55 @@
#define IMAP_BASE_DEFAULT "map"
#ifdef SUNOS4
-double strtod(); /* SunOS needed this */
+double strtod(); /* SunOS needed this */
#endif
module MODULE_VAR_EXPORT imap_module;
-typedef struct {
- char *imap_menu;
- char *imap_default;
- char *imap_base;
+typedef struct {
+ char *imap_menu;
+ char *imap_default;
+ char *imap_base;
} imap_conf_rec;
-static void *create_imap_dir_config (pool *p, char *dummy) {
- imap_conf_rec *icr =
- (imap_conf_rec *)palloc(p, sizeof(imap_conf_rec));
-
- icr->imap_menu = NULL;
- icr->imap_default = NULL;
- icr->imap_base = NULL;
-
- return icr;
-}
-
-static void *merge_imap_dir_configs (pool *p, void *basev, void *addv)
-{
- imap_conf_rec *new=(imap_conf_rec *)pcalloc (p, sizeof(imap_conf_rec));
- imap_conf_rec *base = (imap_conf_rec *)basev;
- imap_conf_rec *add = (imap_conf_rec *)addv;
-
- new->imap_menu = add->imap_menu ? add->imap_menu : base->imap_menu;
- new->imap_default=add->imap_default ? add->imap_default :
base->imap_default;
- new->imap_base =add-> imap_base ? add->imap_base : base->imap_base;
-
- return new;
+static void *create_imap_dir_config(pool *p, char *dummy)
+{
+ imap_conf_rec *icr =
+ (imap_conf_rec *) palloc(p, sizeof(imap_conf_rec));
+
+ icr->imap_menu = NULL;
+ icr->imap_default = NULL;
+ icr->imap_base = NULL;
+
+ return icr;
+}
+
+static void *merge_imap_dir_configs(pool *p, void *basev, void *addv)
+{
+ imap_conf_rec *new = (imap_conf_rec *) pcalloc(p, sizeof(imap_conf_rec));
+ imap_conf_rec *base = (imap_conf_rec *) basev;
+ imap_conf_rec *add = (imap_conf_rec *) addv;
+
+ new->imap_menu = add->imap_menu ? add->imap_menu : base->imap_menu;
+ new->imap_default = add->imap_default ? add->imap_default :
base->imap_default;
+ new->imap_base = add->imap_base ? add->imap_base : base->imap_base;
+
+ return new;
}
-static command_rec imap_cmds[] = {
-{ "ImapMenu", set_string_slot,
- (void*)XtOffsetOf(imap_conf_rec, imap_menu), OR_INDEXES, TAKE1,
- "the type of menu generated: none, formatted, semiformatted,
unformatted"},
-{ "ImapDefault", set_string_slot,
- (void*)XtOffsetOf(imap_conf_rec, imap_default), OR_INDEXES, TAKE1,
- "the action taken if no match: error, nocontent, referer, menu, URL" },
-{ "ImapBase", set_string_slot,
- (void*)XtOffsetOf(imap_conf_rec, imap_base), OR_INDEXES, TAKE1,
- "the base for all URL's: map, referer, URL (or start of)" },
-{ NULL }
+static command_rec imap_cmds[] =
+{
+ {"ImapMenu", set_string_slot,
+ (void *) XtOffsetOf(imap_conf_rec, imap_menu), OR_INDEXES, TAKE1,
+ "the type of menu generated: none, formatted, semiformatted, unformatted"},
+ {"ImapDefault", set_string_slot,
+ (void *) XtOffsetOf(imap_conf_rec, imap_default), OR_INDEXES, TAKE1,
+ "the action taken if no match: error, nocontent, referer, menu, URL"},
+ {"ImapBase", set_string_slot,
+ (void *) XtOffsetOf(imap_conf_rec, imap_base), OR_INDEXES, TAKE1,
+ "the base for all URL's: map, referer, URL (or start of)"},
+ {NULL}
};
static int pointinrect(double point[2], double coords[MAXVERTS][2])
@@ -162,7 +164,8 @@
if (coords[0][X] > coords[1][X]) {
max[0] = coords[0][X];
min[0] = coords[1][X];
- } else {
+ }
+ else {
max[0] = coords[1][X];
min[0] = coords[0][X];
}
@@ -170,13 +173,14 @@
if (coords[0][Y] > coords[1][Y]) {
max[1] = coords[0][Y];
min[1] = coords[1][Y];
- } else {
+ }
+ else {
max[1] = coords[1][Y];
min[1] = coords[0][Y];
}
return ((point[X] >= min[0] && point[X] <= max[0]) &&
- (point[Y] >= min[1] && point[Y] <= max[1]));
+ (point[Y] >= min[1] && point[Y] <= max[1]));
}
static int pointincircle(double point[2], double coords[MAXVERTS][2])
@@ -184,10 +188,10 @@
double radius1, radius2;
radius1 = ((coords[0][Y] - coords[1][Y]) * (coords[0][Y] - coords[1][Y]))
- + ((coords[0][X] - coords[1][X]) * (coords[0][X] - coords[1][X]));
-
+ + ((coords[0][X] - coords[1][X]) * (coords[0][X] - coords[1][X]));
+
radius2 = ((coords[0][Y] - point[Y]) * (coords[0][Y] - point[Y]))
- + ((coords[0][X] - point[X]) * (coords[0][X] - point[X]));
+ + ((coords[0][X] - point[X]) * (coords[0][X] - point[X]));
return (radius2 <= radius1);
}
@@ -211,54 +215,54 @@
p = (double *) pgon + 1;
if ((y >= ty) != (*p >= ty)) {
- if ((xflag0 = (pgon[numverts - 1][X] >= tx)) == (*(double *) pgon >=
tx)) {
- if (xflag0)
- crossings++;
- }
- else {
- crossings += (pgon[numverts - 1][X] - (y - ty) *
- (*(double *) pgon - pgon[numverts - 1][X]) /
- (*p - y)) >= tx;
- }
+ if ((xflag0 = (pgon[numverts - 1][X] >= tx)) == (*(double *) pgon >=
tx)) {
+ if (xflag0)
+ crossings++;
+ }
+ else {
+ crossings += (pgon[numverts - 1][X] - (y - ty) *
+ (*(double *) pgon - pgon[numverts - 1][X]) /
+ (*p - y)) >= tx;
+ }
}
stop = pgon[numverts];
for (y = *p, p += 2; p < stop; y = *p, p += 2) {
-
- if (y >= ty) {
-
- while ((p < stop) && (*p >= ty))
- p += 2;
-
- if (p >= stop)
- break;
- if ((xflag0 = (*(p - 3) >= tx)) == (*(p - 1) >= tx)) {
-
- if (xflag0)
- crossings++;
- }
- else {
- crossings += (*(p - 3) - (*(p - 2) - ty) *
- (*(p - 1) - *(p - 3)) / (*p - *(p - 2))) >= tx;
- }
- }
- else {
- while ((p < stop) && (*p < ty))
- p += 2;
-
- if (p >= stop)
- break;
-
- if ((xflag0 = (*(p - 3) >= tx)) == (*(p - 1) >= tx)) {
- if (xflag0)
- crossings++;
- }
- else {
- crossings += (*(p - 3) - (*(p - 2) - ty) *
- (*(p - 1) - *(p - 3)) / (*p - *(p - 2))) >= tx;
- }
- }
+
+ if (y >= ty) {
+
+ while ((p < stop) && (*p >= ty))
+ p += 2;
+
+ if (p >= stop)
+ break;
+ if ((xflag0 = (*(p - 3) >= tx)) == (*(p - 1) >= tx)) {
+
+ if (xflag0)
+ crossings++;
+ }
+ else {
+ crossings += (*(p - 3) - (*(p - 2) - ty) *
+ (*(p - 1) - *(p - 3)) / (*p - *(p - 2))) >= tx;
+ }
+ }
+ else {
+ while ((p < stop) && (*p < ty))
+ p += 2;
+
+ if (p >= stop)
+ break;
+
+ if ((xflag0 = (*(p - 3) >= tx)) == (*(p - 1) >= tx)) {
+ if (xflag0)
+ crossings++;
+ }
+ else {
+ crossings += (*(p - 3) - (*(p - 2) - ty) *
+ (*(p - 1) - *(p - 3)) / (*p - *(p - 2))) >= tx;
+ }
+ }
}
inside_flag = crossings & 0x01;
@@ -268,580 +272,594 @@
static int is_closer(double point[2], double coords[MAXVERTS][2], double
*closest)
{
- double dist_squared =((point[X] - coords[0][X]) * (point[X] -
coords[0][X]))
- + ((point[Y] - coords[0][Y]) * (point[Y] - coords[0][Y]));
+ double dist_squared = ((point[X] - coords[0][X]) * (point[X] -
coords[0][X]))
+ + ((point[Y] - coords[0][Y]) * (point[Y] - coords[0][Y]));
- if (point[X] < 0 || point[Y] < 0 )
- return(0); /* don't mess around with negative coordinates */
+ if (point[X] < 0 || point[Y] < 0)
+ return (0); /* don't mess around with negative
coordinates */
+
+ if (*closest < 0 || dist_squared < *closest) {
+ *closest = dist_squared;
+ return (1); /* if this is the first point or is the
closest yet
+ set 'closest' equal to this distance^2 */
+ }
- if ( *closest < 0 || dist_squared < *closest ) {
- *closest = dist_squared;
- return(1); /* if this is the first point or is the closest yet
- set 'closest' equal to this distance^2 */
- }
-
- return(0); /* if it's not the first or closest */
+ return (0); /* if it's not the first or closest */
}
-static double get_x_coord(char *args)
+static double get_x_coord(char *args)
{
- char *endptr; /* we want it non-null */
- double x_coord = -1; /* -1 is returned if no coordinate is given */
+ char *endptr; /* we want it non-null */
+ double x_coord = -1; /* -1 is returned if no coordinate is given
*/
- if (args == NULL)
- return(-1); /* in case we aren't passed anything */
+ if (args == NULL)
+ return (-1); /* in case we aren't passed anything */
- while( *args && !isdigit(*args) && *args != ',')
- args++; /* jump to the first digit, but not past a comma or end */
+ while (*args && !isdigit(*args) && *args != ',')
+ args++; /* jump to the first digit, but not past a
comma or end */
- x_coord = strtod(args, &endptr);
+ x_coord = strtod(args, &endptr);
- if (endptr > args) /* if a conversion was made */
- return(x_coord);
+ if (endptr > args) /* if a conversion was made */
+ return (x_coord);
- return(-1); /* else if no conversion was made, or if no args was given */
+ return (-1); /* else if no conversion was made, or if no
args was given */
}
-static double get_y_coord(char *args)
+static double get_y_coord(char *args)
{
- char *endptr; /* we want it non-null */
- char *start_of_y = NULL;
- double y_coord = -1; /* -1 is returned on error */
+ char *endptr; /* we want it non-null */
+ char *start_of_y = NULL;
+ double y_coord = -1; /* -1 is returned on error */
- if (args == NULL)
- return(-1); /* in case we aren't passed anything */
+ if (args == NULL)
+ return (-1); /* in case we aren't passed anything */
- start_of_y = strchr(args, ','); /* the comma */
+ start_of_y = strchr(args, ','); /* the comma */
- if (start_of_y) {
-
- start_of_y++; /* start looking at the character after the comma */
+ if (start_of_y) {
- while( *start_of_y && !isdigit(*start_of_y))
- start_of_y++; /* jump to the first digit, but not past the end */
+ start_of_y++; /* start looking at the character after the
comma */
- y_coord = strtod(start_of_y, &endptr);
+ while (*start_of_y && !isdigit(*start_of_y))
+ start_of_y++; /* jump to the first digit, but not past the
end */
- if (endptr > start_of_y)
- return(y_coord);
- }
-
- return(-1); /* if no conversion was made, or no comma was found in args
*/
+ y_coord = strtod(start_of_y, &endptr);
+
+ if (endptr > start_of_y)
+ return (y_coord);
+ }
+
+ return (-1); /* if no conversion was made, or no comma
was found in args */
}
-
+
static int read_quoted(char *string, char *quoted_part)
-{
- char *starting_pos = string;
-
- while ( isspace(*string) )
- string++; /* go along string until non-whitespace */
+{
+ char *starting_pos = string;
- if ( *string == '"' ) { /* if that character is a double quote */
+ while (isspace(*string))
+ string++; /* go along string until non-whitespace */
- string++; /* step over it */
+ if (*string == '"') { /* if that character is a double quote */
- while ( *string && *string != '"' ) {
- *quoted_part++ = *string++; /* copy the quoted portion */
- }
+ string++; /* step over it */
+
+ while (*string && *string != '"') {
+ *quoted_part++ = *string++; /* copy the quoted portion */
+ }
- *quoted_part = '\0'; /* end the string with a SNUL */
-
- string++; /* step over the last double quote */
- }
+ *quoted_part = '\0'; /* end the string with a SNUL */
+
+ string++; /* step over the last double quote */
+ }
- return(string - starting_pos); /* return the total characters read */
+ return (string - starting_pos); /* return the total characters read
*/
}
/*
* url needs to point to a string with at least SMALLBUF memory allocated
*/
-static void imap_url(request_rec *r, char *base, char *value, char *url)
+static void imap_url(request_rec *r, char *base, char *value, char *url)
{
/* translates a value into a URL. */
- int slen, clen;
- char *string_pos = NULL;
- char *directory = NULL;
- char *referer = NULL;
- char my_base[SMALLBUF] = {'\0'};
-
- if ( ! strcasecmp(value, "map" ) || ! strcasecmp(value, "menu") ) {
- if (r->server->port == DEFAULT_PORT ) {
- ap_snprintf(url, SMALLBUF,
- "http://%s%s", r->server->server_hostname, r->uri);
- }
- else {
- ap_snprintf(url, SMALLBUF, "http://%s:%d%s",
r->server->server_hostname,
- r->server->port, r->uri);
- }
- return;
- }
+ int slen, clen;
+ char *string_pos = NULL;
+ char *directory = NULL;
+ char *referer = NULL;
+ char my_base[SMALLBUF] =
+ {'\0'};
+
+ if (!strcasecmp(value, "map") || !strcasecmp(value, "menu")) {
+ if (r->server->port == DEFAULT_PORT) {
+ ap_snprintf(url, SMALLBUF,
+ "http://%s%s", r->server->server_hostname, r->uri);
+ }
+ else {
+ ap_snprintf(url, SMALLBUF, "http://%s:%d%s",
r->server->server_hostname,
+ r->server->port, r->uri);
+ }
+ return;
+ }
+
+ if (!strcasecmp(value, "nocontent") || !strcasecmp(value, "error")) {
+ strncpy(url, value, SMALLBUF - 1);
+ url[SMALLBUF - 1] = '\0';
+ return; /* these are handled elsewhere, so just copy
them */
+ }
+
+ if (!strcasecmp(value, "referer")) {
+ referer = table_get(r->headers_in, "Referer");
+ if (referer && *referer) {
+ strncpy(url, referer, SMALLBUF - 1);
+ url[SMALLBUF - 1] = '\0';
+ return;
+ }
+ else {
+ *value = '\0'; /* if 'referer' but no referring page, null
the value */
+ }
+ }
+
+ string_pos = value;
+ while (isalpha(*string_pos))
+ string_pos++; /* go along the URL from the map until a
non-letter */
+ if (*string_pos == ':') {
+ strncpy(url, value, SMALLBUF - 1); /* if letters and then a
colon (like http:) */
+ url[SMALLBUF - 1] = '\0';
+ return; /* it's an absolute URL, so use it! */
+ }
+
+ if (!base || !*base) {
+ if (value && *value) {
+ strncpy(url, value, SMALLBUF - 1); /* no base: use what is
given */
+ url[SMALLBUF - 1] = '\0';
+ }
+ else {
+ if (r->server->port == DEFAULT_PORT) {
+ ap_snprintf(url, SMALLBUF, "http://%s/",
r->server->server_hostname);
+ }
+ if (r->server->port != DEFAULT_PORT) {
+ ap_snprintf(url, SMALLBUF, "http://%s:%d/",
+ r->server->server_hostname, r->server->port);
+ } /* no base, no value: pick a simple default
*/
+ }
+ return;
+ }
+
+ /* must be a relative URL to be combined with base */
+ strncpy(my_base, base, sizeof(my_base) - 1);
+ my_base[sizeof(my_base) - 1] = '\0';
+ if (strchr(my_base, '/') == NULL && (!strncmp(value, "../", 3) ||
!strcmp(value, ".."))) {
+ url[0] = '\0';
+ aplog_error(APLOG_MARK, APLOG_ERR, r->server,
+ "invalid base directive in map file: %s", r->uri);
+ return;
+ }
+ string_pos = my_base;
+ while (*string_pos) {
+ if (*string_pos == '/' && *(string_pos + 1) == '/') {
+ string_pos += 2; /* if there are two slashes, jump over them
*/
+ continue;
+ }
+ if (*string_pos == '/') { /* the first single slash */
+ if (value[0] == '/') {
+ *string_pos = '\0';
+ } /* if the URL from the map starts from root,
end the
+ base URL string at the first single slash
*/
+ else {
+ directory = string_pos; /* save the start of the
directory portion */
+
+ string_pos = strrchr(string_pos, '/'); /* now reuse
string_pos */
+ string_pos++; /* step over that last slash */
+ *string_pos = '\0';
+ } /* but if the map url is relative, leave the
+ slash on the base (if there is one) */
+ break;
+ }
+ string_pos++; /* until we get to the end of my_base
without finding
+ a slash by itself */
+ }
+
+ while (!strncmp(value, "../", 3) || !strcmp(value, "..")) {
+
+ if (directory && (slen = strlen(directory))) {
+
+ /* for each '..', knock a directory off the end
+ by ending the string right at the last slash.
+ But only consider the directory portion: don't eat
+ into the server name. And only try if a directory
+ portion was found */
+
+ clen = slen - 1;
+
+ while ((slen - clen) == 1) {
+
+ if ((string_pos = strrchr(directory, '/')))
+ *string_pos = '\0';
+ clen = strlen(directory);
+ if (clen == 0)
+ break;
+ }
+
+ value += 2; /* jump over the '..' that we found in the
value */
+ }
+ else if (directory) {
+ url[0] = '\0';
+ aplog_error(APLOG_MARK, APLOG_ERR, r->server,
+ "invalid directory name in map file: %s", r->uri);
+ return;
+ }
+
+ if (!strncmp(value, "/../", 4) || !strcmp(value, "/.."))
+ value++; /* step over the '/' if there are more '..'
to do.
+ this way, we leave the starting '/' on
value after
+ the last '..', but get rid of it
otherwise */
- if ( ! strcasecmp(value, "nocontent") || ! strcasecmp(value, "error") ) {
- strncpy(url, value, SMALLBUF-1);
- url[SMALLBUF-1] = '\0';
- return; /* these are handled elsewhere, so just copy them */
- }
-
- if ( ! strcasecmp(value, "referer" ) ) {
- referer = table_get(r->headers_in, "Referer");
- if ( referer && *referer ) {
- strncpy(url, referer, SMALLBUF-1);
- url[SMALLBUF-1] = '\0';
- return;
+ } /* by this point, value does not start with
'..' */
+
+ if (value && *value) {
+ ap_snprintf(url, SMALLBUF, "%s%s", my_base, value);
}
else {
- *value = '\0'; /* if 'referer' but no referring page, null the value
*/
- }
- }
-
- string_pos = value;
- while ( isalpha(*string_pos) )
- string_pos++; /* go along the URL from the map until a non-letter */
- if ( *string_pos == ':' ) {
- strncpy(url, value, SMALLBUF-1); /* if letters and then a colon
(like http:) */
- url[SMALLBUF-1] = '\0';
- return; /* it's an absolute URL, so use it! */
- }
-
- if ( ! base || ! *base ) {
- if ( value && *value ) {
- strncpy(url, value, SMALLBUF-1); /* no base: use what is given */
- url[SMALLBUF-1] = '\0';
- }
- else {
- if (r->server->port == DEFAULT_PORT ) {
- ap_snprintf(url, SMALLBUF, "http://%s/", r->server->server_hostname);
- }
- if (r->server->port != DEFAULT_PORT ) {
- ap_snprintf(url, SMALLBUF, "http://%s:%d/",
- r->server->server_hostname, r->server->port);
- } /* no base, no value: pick a simple default */
- }
- return;
- }
-
- /* must be a relative URL to be combined with base */
- strncpy(my_base, base, sizeof(my_base)-1);
- my_base[sizeof(my_base)-1] = '\0';
- if (strchr(my_base, '/') == NULL && (!strncmp(value, "../", 3) ||
!strcmp(value, "..")) ) {
- url[0] = '\0';
- aplog_error(APLOG_MARK, APLOG_ERR, r->server,
- "invalid base directive in map file: %s", r->uri);
+ ap_snprintf(url, SMALLBUF, "%s", my_base);
+ }
return;
- }
- string_pos = my_base;
- while (*string_pos) {
- if (*string_pos == '/' && *(string_pos+1) == '/') {
- string_pos += 2; /* if there are two slashes, jump over them */
- continue;
- }
- if (*string_pos == '/') { /* the first single slash */
- if ( value[0] == '/' ) {
- *string_pos = '\0';
- } /* if the URL from the map starts from root, end the
- base URL string at the first single slash */
- else {
- directory = string_pos; /* save the start of the directory portion */
-
- string_pos = strrchr(string_pos, '/'); /* now reuse string_pos */
- string_pos++; /* step over that last slash */
- *string_pos = '\0';
- } /* but if the map url is relative, leave the
- slash on the base (if there is one) */
- break;
- }
- string_pos++; /* until we get to the end of my_base without finding
- a slash by itself */
- }
-
- while ( ! strncmp(value, "../", 3) || ! strcmp(value, "..") ) {
-
- if (directory && (slen = strlen (directory))) {
-
- /* for each '..', knock a directory off the end
- by ending the string right at the last slash.
- But only consider the directory portion: don't eat
- into the server name. And only try if a directory
- portion was found */
-
- clen = slen - 1;
-
- while ((slen - clen) == 1) {
-
- if ((string_pos = strrchr(directory, '/')))
- *string_pos = '\0';
- clen = strlen (directory);
- if (clen == 0) break;
- }
-
- value += 2; /* jump over the '..' that we found in the value */
- } else if (directory) {
- url[0] = '\0';
- aplog_error(APLOG_MARK, APLOG_ERR, r->server,
- "invalid directory name in map file: %s", r->uri);
- return;
- }
-
- if (! strncmp(value, "/../", 4) || ! strcmp(value, "/..") )
-
- value++; /* step over the '/' if there are more '..' to do.
- this way, we leave the starting '/' on value after
- the last '..', but get rid of it otherwise */
-
- } /* by this point, value does not start with '..' */
-
- if ( value && *value ) {
- ap_snprintf(url, SMALLBUF, "%s%s", my_base, value);
- }
- else {
- ap_snprintf(url, SMALLBUF, "%s", my_base);
- }
- return;
}
static int imap_reply(request_rec *r, char *redirect)
-{
- if ( ! strcasecmp(redirect, "error") ) {
- return SERVER_ERROR; /* they actually requested an error! */
- }
- if ( ! strcasecmp(redirect, "nocontent") ) {
- return HTTP_NO_CONTENT; /* tell the client to keep the page it has */
- }
- if (redirect && *redirect ) {
- table_set(r->headers_out, "Location", redirect);
- return REDIRECT; /* must be a URL, so redirect to it */
- }
- return SERVER_ERROR;
+{
+ if (!strcasecmp(redirect, "error")) {
+ return SERVER_ERROR; /* they actually requested an error! */
+ }
+ if (!strcasecmp(redirect, "nocontent")) {
+ return HTTP_NO_CONTENT; /* tell the client to keep the page it has */
+ }
+ if (redirect && *redirect) {
+ table_set(r->headers_out, "Location", redirect);
+ return REDIRECT; /* must be a URL, so redirect to it */
+ }
+ return SERVER_ERROR;
}
static void menu_header(request_rec *r, char *menu)
{
- r->content_type = "text/html";
- send_http_header(r);
- hard_timeout("send menu", r); /* killed in menu_footer */
-
- rvputs(r, "<html><head>\n<title>Menu for ", r->uri,
- "</title>\n</head><body>\n", NULL);
-
- if (!strcasecmp(menu, "formatted")) {
- rvputs(r, "<h1>Menu for ", r->uri, "</h1>\n<hr>\n\n", NULL);
- }
+ r->content_type = "text/html";
+ send_http_header(r);
+ hard_timeout("send menu", r); /* killed in menu_footer */
- return;
+ rvputs(r, "<html><head>\n<title>Menu for ", r->uri,
+ "</title>\n</head><body>\n", NULL);
+
+ if (!strcasecmp(menu, "formatted")) {
+ rvputs(r, "<h1>Menu for ", r->uri, "</h1>\n<hr>\n\n", NULL);
+ }
+
+ return;
}
static void menu_blank(request_rec *r, char *menu)
{
- if (! strcasecmp(menu, "formatted") ) {
- rputs("\n", r);
- }
- if (! strcasecmp(menu, "semiformatted") ) {
- rputs("<br>\n", r);
- }
- if (! strcasecmp(menu, "unformatted") ) {
- rputs("\n", r);
- }
- return;
+ if (!strcasecmp(menu, "formatted")) {
+ rputs("\n", r);
+ }
+ if (!strcasecmp(menu, "semiformatted")) {
+ rputs("<br>\n", r);
+ }
+ if (!strcasecmp(menu, "unformatted")) {
+ rputs("\n", r);
+ }
+ return;
}
static void menu_comment(request_rec *r, char *menu, char *comment)
{
- if (! strcasecmp(menu, "formatted") ) {
- rputs("\n", r); /* print just a newline if 'formatted' */
- }
- if (! strcasecmp(menu, "semiformatted") && *comment ) {
- rvputs(r, comment, "\n", NULL);
- }
- if (! strcasecmp(menu, "unformatted") && *comment ) {
- rvputs(r, comment, "\n", NULL);
- }
- return; /* comments are ignored in the 'formatted' form */
+ if (!strcasecmp(menu, "formatted")) {
+ rputs("\n", r); /* print just a newline if 'formatted' */
+ }
+ if (!strcasecmp(menu, "semiformatted") && *comment) {
+ rvputs(r, comment, "\n", NULL);
+ }
+ if (!strcasecmp(menu, "unformatted") && *comment) {
+ rvputs(r, comment, "\n", NULL);
+ }
+ return; /* comments are ignored in the 'formatted'
form */
}
static void menu_default(request_rec *r, char *menu, char *href, char *text)
{
- if ( ! strcasecmp(href, "error") || ! strcasecmp(href, "nocontent") ) {
- return; /* don't print such lines, these aren'te really href's */
- }
- if ( ! strcasecmp(menu, "formatted" ) ) {
- rvputs(r, "<pre>(Default) <a href=\"", href, "\">", text, "</a></pre>\n",
- NULL);
- }
- if ( ! strcasecmp(menu, "semiformatted" ) ) {
- rvputs(r, "<pre>(Default) <a href=\"", href, "\">", text, "</a></pre>\n",
- NULL);
- }
- if ( ! strcasecmp(menu, "unformatted" ) ) {
- rvputs(r, "<a href=\"", href, "\">", text, "</a>", NULL);
- }
- return;
+ if (!strcasecmp(href, "error") || !strcasecmp(href, "nocontent")) {
+ return; /* don't print such lines, these aren'te
really href's */
+ }
+ if (!strcasecmp(menu, "formatted")) {
+ rvputs(r, "<pre>(Default) <a href=\"", href, "\">", text,
"</a></pre>\n",
+ NULL);
+ }
+ if (!strcasecmp(menu, "semiformatted")) {
+ rvputs(r, "<pre>(Default) <a href=\"", href, "\">", text,
"</a></pre>\n",
+ NULL);
+ }
+ if (!strcasecmp(menu, "unformatted")) {
+ rvputs(r, "<a href=\"", href, "\">", text, "</a>", NULL);
+ }
+ return;
}
static void menu_directive(request_rec *r, char *menu, char *href, char
*text)
{
- if ( ! strcasecmp(href, "error") || ! strcasecmp(href, "nocontent") ) {
- return; /* don't print such lines, as this isn't really an href */
- }
- if ( ! strcasecmp(menu, "formatted" ) ) {
- rvputs(r, "<pre> <a href=\"", href, "\">", text, "</a></pre>\n",
- NULL);
- }
- if ( ! strcasecmp(menu, "semiformatted" ) ) {
- rvputs(r, "<pre> <a href=\"", href, "\">", text, "</a></pre>\n",
- NULL);
- }
- if ( ! strcasecmp(menu, "unformatted" ) ) {
- rvputs(r, "<a href=\"", href, "\">", text, "</a>", NULL);
- }
- return;
+ if (!strcasecmp(href, "error") || !strcasecmp(href, "nocontent")) {
+ return; /* don't print such lines, as this isn't
really an href */
+ }
+ if (!strcasecmp(menu, "formatted")) {
+ rvputs(r, "<pre> <a href=\"", href, "\">", text,
"</a></pre>\n",
+ NULL);
+ }
+ if (!strcasecmp(menu, "semiformatted")) {
+ rvputs(r, "<pre> <a href=\"", href, "\">", text,
"</a></pre>\n",
+ NULL);
+ }
+ if (!strcasecmp(menu, "unformatted")) {
+ rvputs(r, "<a href=\"", href, "\">", text, "</a>", NULL);
+ }
+ return;
}
static void menu_footer(request_rec *r)
{
- rputs("\n\n</body>\n</html>\n", r); /* finish the menu */
- kill_timeout(r);
+ rputs("\n\n</body>\n</html>\n", r); /* finish the menu */
+ kill_timeout(r);
}
static int imap_handler(request_rec *r)
{
- char input[LARGEBUF] = {'\0'};
- /* size of input can not be lowered without changing hard-coded
- * checks
- */
- char href_text[SMALLBUF] = {'\0'};
- char base[SMALLBUF] = {'\0'};
- char redirect[SMALLBUF] = {'\0'};
- char directive[SMALLBUF] = {'\0'};
- char value[SMALLBUF] = {'\0'};
- char mapdflt[SMALLBUF] = {'\0'};
- char closest[SMALLBUF] = {'\0'};
- double closest_yet = -1;
-
- double testpoint[2] = { -1,-1 };
- double pointarray[MAXVERTS + 1][2] = { {-1,-1} };
- int vertex = 0;
-
- char *string_pos = NULL;
- int chars_read = 0;
- int showmenu = 0;
+ char input[LARGEBUF] =
+ {'\0'};
+ /* size of input can not be lowered without changing hard-coded
+ * checks
+ */
+ char href_text[SMALLBUF] =
+ {'\0'};
+ char base[SMALLBUF] =
+ {'\0'};
+ char redirect[SMALLBUF] =
+ {'\0'};
+ char directive[SMALLBUF] =
+ {'\0'};
+ char value[SMALLBUF] =
+ {'\0'};
+ char mapdflt[SMALLBUF] =
+ {'\0'};
+ char closest[SMALLBUF] =
+ {'\0'};
+ double closest_yet = -1;
+
+ double testpoint[2] =
+ {-1, -1};
+ double pointarray[MAXVERTS + 1][2] =
+ {
+ {-1, -1}};
+ int vertex = 0;
+
+ char *string_pos = NULL;
+ int chars_read = 0;
+ int showmenu = 0;
- imap_conf_rec *icr = get_module_config(r->per_dir_config, &imap_module);
+ imap_conf_rec *icr = get_module_config(r->per_dir_config, &imap_module);
- char *imap_menu = icr->imap_menu ?
+ char *imap_menu = icr->imap_menu ?
icr->imap_menu : IMAP_MENU_DEFAULT;
- char *imap_default = icr->imap_default ?
+ char *imap_default = icr->imap_default ?
icr->imap_default : IMAP_DEFAULT_DEFAULT;
- char *imap_base = icr->imap_base ?
+ char *imap_base = icr->imap_base ?
icr->imap_base : IMAP_BASE_DEFAULT;
- FILE *imap = pfopen(r->pool, r->filename, "r");
+ FILE *imap = pfopen(r->pool, r->filename, "r");
- if ( ! imap )
- return NOT_FOUND;
+ if (!imap)
+ return NOT_FOUND;
- imap_url(r, NULL, imap_base, base); /* set base according to default
*/
- imap_url(r, NULL, imap_default, mapdflt); /* and default to global default
*/
+ imap_url(r, NULL, imap_base, base); /* set base according to
default */
+ imap_url(r, NULL, imap_default, mapdflt); /* and default to global
default */
- testpoint[X] = get_x_coord(r->args);
- testpoint[Y] = get_y_coord(r->args);
-
- if ((testpoint[X] == -1 || testpoint[Y] == -1) ||
- (testpoint[X] == 0 && testpoint[Y] == 0) ) {
- /* if either is -1 or if both are zero (new Lynx) */
- /* we don't have valid coordinates */
- testpoint[X] = -1;
- testpoint[Y] = -1;
- if ( strncasecmp(imap_menu, "none", 2) )
- showmenu = 1; /* show the menu _unless_ ImapMenu is 'none' or 'no'
*/
- }
-
- if (showmenu) { /* send start of imagemap menu if we're going to */
- menu_header(r, imap_menu);
- }
-
- while (!cfg_getline(input, LARGEBUF, imap)) {
- string_pos = input; /* always start at the beginning of line */
-
- directive[0] = '\0';
- value[0] = '\0';
- href_text[0] = '\0';
- redirect[0] = '\0';
- chars_read = 0; /* clear these before using */
-
- if ( ! input[0] ) {
- if (showmenu) {
- menu_blank(r, imap_menu);
- }
- continue;
- }
-
- if ( input[0] == '#' ) {
- if (showmenu) {
- menu_comment(r, imap_menu, input + 1);
- }
- continue;
- } /* blank lines and comments are ignored if we aren't printing a menu */
-
-
- if (sscanf(input, "%255s %255s", directive, value) != 2) {
- continue; /* make sure we read two fields */
- }
- /* Now skip what we just read... we can't use ANSIism %n */
- while (!(isspace(*string_pos))) /* past directive */
- string_pos++;
- while (isspace(*string_pos)) /* and whitespace */
- string_pos++;
- while (!(isspace(*string_pos))) /* and value... have to watch it */
- string_pos++; /* can have punctuation and stuff */
-
- if ( ! strncasecmp(directive, "base", 4 ) ) { /* base, base_uri */
- imap_url(r, NULL, value, base);
- continue; /* base is never printed to a menu */
- }
-
- chars_read = read_quoted(string_pos, href_text);
- string_pos += chars_read; /* read the quoted href text if present */
-
- if ( ! strcasecmp(directive, "default" ) ) { /* default */
- imap_url(r, NULL, value, mapdflt);
- if (showmenu) { /* print the default if there's a menu */
- if (! *href_text) { /* if we didn't find a "href text" */
- strncpy(href_text, mapdflt, sizeof(href_text)-1); /* use the href
itself as text */
- href_text[sizeof(href_text)-1] = '\0';
- }
- imap_url(r, base, mapdflt, redirect);
- menu_default(r, imap_menu, redirect, href_text);
- }
- continue;
- }
-
- vertex = 0;
- while ( vertex < MAXVERTS &&
- sscanf(string_pos, "%lf%*[, ]%lf",
- &pointarray[vertex][X], &pointarray[vertex][Y]) == 2)
- {
- /* Now skip what we just read... we can't use ANSIism %n */
- while(isspace(*string_pos)) /* past whitespace */
- string_pos++;
- while(isdigit(*string_pos)) /* and the 1st number */
- string_pos++;
- string_pos++; /* skip the ',' */
- while(isspace(*string_pos)) /* past any more whitespace */
- string_pos++;
- while(isdigit(*string_pos)) /* 2nd number */
- string_pos++;
- vertex++;
- } /* so long as there are more vertices to read, and
- we have room, read them in. We start where we left
- off of the last sscanf, not at the beginning.*/
-
- pointarray[vertex][X] = -1; /* signals the end of vertices */
+ testpoint[X] = get_x_coord(r->args);
+ testpoint[Y] = get_y_coord(r->args);
+
+ if ((testpoint[X] == -1 || testpoint[Y] == -1) ||
+ (testpoint[X] == 0 && testpoint[Y] == 0)) {
+ /* if either is -1 or if both are zero (new Lynx) */
+ /* we don't have valid coordinates */
+ testpoint[X] = -1;
+ testpoint[Y] = -1;
+ if (strncasecmp(imap_menu, "none", 2))
+ showmenu = 1; /* show the menu _unless_ ImapMenu is 'none'
or 'no' */
+ }
+
+ if (showmenu) { /* send start of imagemap menu if we're
going to */
+ menu_header(r, imap_menu);
+ }
+
+ while (!cfg_getline(input, LARGEBUF, imap)) {
+ string_pos = input; /* always start at the beginning of line */
+
+ directive[0] = '\0';
+ value[0] = '\0';
+ href_text[0] = '\0';
+ redirect[0] = '\0';
+ chars_read = 0; /* clear these before using */
+
+ if (!input[0]) {
+ if (showmenu) {
+ menu_blank(r, imap_menu);
+ }
+ continue;
+ }
+
+ if (input[0] == '#') {
+ if (showmenu) {
+ menu_comment(r, imap_menu, input + 1);
+ }
+ continue;
+ } /* blank lines and comments are ignored if
we aren't printing a menu */
+
+
+ if (sscanf(input, "%255s %255s", directive, value) != 2) {
+ continue; /* make sure we read two fields */
+ }
+ /* Now skip what we just read... we can't use ANSIism %n */
+ while (!(isspace(*string_pos))) /* past directive */
+ string_pos++;
+ while (isspace(*string_pos)) /* and whitespace */
+ string_pos++;
+ while (!(isspace(*string_pos))) /* and value... have to
watch it */
+ string_pos++; /* can have punctuation and stuff */
+
+ if (!strncasecmp(directive, "base", 4)) { /* base, base_uri */
+ imap_url(r, NULL, value, base);
+ continue; /* base is never printed to a menu */
+ }
+
+ chars_read = read_quoted(string_pos, href_text);
+ string_pos += chars_read; /* read the quoted href text if
present */
+
+ if (!strcasecmp(directive, "default")) { /* default */
+ imap_url(r, NULL, value, mapdflt);
+ if (showmenu) { /* print the default if there's a menu */
+ if (!*href_text) { /* if we didn't find a "href text" */
+ strncpy(href_text, mapdflt, sizeof(href_text) - 1);
/* use the href itself as text */
+ href_text[sizeof(href_text) - 1] = '\0';
+ }
+ imap_url(r, base, mapdflt, redirect);
+ menu_default(r, imap_menu, redirect, href_text);
+ }
+ continue;
+ }
+
+ vertex = 0;
+ while (vertex < MAXVERTS &&
+ sscanf(string_pos, "%lf%*[, ]%lf",
+ &pointarray[vertex][X], &pointarray[vertex][Y]) == 2) {
+ /* Now skip what we just read... we can't use ANSIism %n */
+ while (isspace(*string_pos)) /* past whitespace */
+ string_pos++;
+ while (isdigit(*string_pos)) /* and the 1st number */
+ string_pos++;
+ string_pos++; /* skip the ',' */
+ while (isspace(*string_pos)) /* past any more whitespace
*/
+ string_pos++;
+ while (isdigit(*string_pos)) /* 2nd number */
+ string_pos++;
+ vertex++;
+ } /* so long as there are more vertices to
read, and
+ we have room, read them in. We start
where we left
+ off of the last sscanf, not at the
beginning. */
+
+ pointarray[vertex][X] = -1; /* signals the end of vertices */
+
+ if (showmenu) {
+ read_quoted(string_pos, href_text); /* href text could
be here instead */
+ if (!*href_text) { /* if we didn't find a "href text" */
+ strncpy(href_text, value, sizeof(href_text) - 1); /*
use the href itself in the menu */
+ href_text[sizeof(href_text) - 1] = '\0';
+ }
+ imap_url(r, base, value, redirect);
+ menu_directive(r, imap_menu, redirect, href_text);
+ continue;
+ }
+ /* note that we don't make it past here if we are making a menu */
+
+ if (testpoint[X] == -1 || pointarray[0][X] == -1)
+ continue; /* don't try the following tests if
testpoints
+ are invalid, or if there are no
coordinates */
+
+ if (!strcasecmp(directive, "poly")) { /* poly */
+
+ if (pointinpoly(testpoint, pointarray)) {
+ pfclose(r->pool, imap);
+ imap_url(r, base, value, redirect);
+ return (imap_reply(r, redirect));
+ }
+ continue;
+ }
+
+ if (!strcasecmp(directive, "circle")) { /* circle */
+
+ if (pointincircle(testpoint, pointarray)) {
+ pfclose(r->pool, imap);
+ imap_url(r, base, value, redirect);
+ return (imap_reply(r, redirect));
+ }
+ continue;
+ }
+
+ if (!strcasecmp(directive, "rect")) { /* rect */
+
+ if (pointinrect(testpoint, pointarray)) {
+ pfclose(r->pool, imap);
+ imap_url(r, base, value, redirect);
+ return (imap_reply(r, redirect));
+ }
+ continue;
+ }
+
+ if (!strcasecmp(directive, "point")) { /* point */
+
+ if (is_closer(testpoint, pointarray, &closest_yet)) {
+ strncpy(closest, value, sizeof(closest) - 1); /* if the
closest point yet save it */
+ closest[sizeof(closest) - 1] = '\0';
+ }
+
+ continue;
+ } /* move on to next line whether it's closest
or not */
+
+ } /* nothing matched, so we get another line!
*/
+
+ pfclose(r->pool, imap); /* we are done with the map file, so close
it */
if (showmenu) {
- read_quoted(string_pos, href_text); /* href text could be here instead
*/
- if (! *href_text) { /* if we didn't find a "href text" */
- strncpy(href_text, value, sizeof(href_text)-1); /* use the href itself
in the menu */
- href_text[sizeof(href_text)-1] = '\0';
- }
- imap_url(r, base, value, redirect);
- menu_directive(r, imap_menu, redirect, href_text);
- continue;
- }
- /* note that we don't make it past here if we are making a menu */
-
- if (testpoint[X] == -1 || pointarray[0][X] == -1 )
- continue; /* don't try the following tests if testpoints
- are invalid, or if there are no coordinates */
-
- if ( ! strcasecmp(directive, "poly" ) ) { /* poly */
-
- if (pointinpoly (testpoint, pointarray) ) {
- pfclose(r->pool, imap);
- imap_url(r, base, value, redirect);
- return (imap_reply(r, redirect));
- }
- continue;
- }
-
- if ( ! strcasecmp(directive, "circle" ) ) { /* circle */
-
- if (pointincircle (testpoint, pointarray) ) {
- pfclose(r->pool, imap);
- imap_url(r, base, value, redirect);
- return (imap_reply(r, redirect));
- }
- continue;
- }
-
- if ( ! strcasecmp(directive, "rect" ) ) { /* rect */
-
- if (pointinrect (testpoint, pointarray) ) {
- pfclose(r->pool, imap);
- imap_url(r, base, value, redirect);
- return (imap_reply(r, redirect));
- }
- continue;
- }
-
- if ( ! strcasecmp(directive, "point" ) ) { /* point */
-
- if (is_closer(testpoint, pointarray, &closest_yet) ) {
- strncpy(closest, value, sizeof(closest)-1); /* if the closest point
yet save it */
- closest[sizeof(closest)-1] = '\0';
- }
-
- continue;
- } /* move on to next line whether it's closest or not */
-
- } /* nothing matched, so we get another line! */
-
- pfclose(r->pool, imap); /* we are done with the map file, so close it */
-
- if (showmenu) {
- menu_footer(r); /* finish the menu and we are done */
- return OK;
- }
-
- if (*closest) { /* if a 'point' directive has been seen */
- imap_url(r, base, closest, redirect);
- return (imap_reply(r, redirect));
- }
-
- if (*mapdflt ) { /* a default should be defined, even if only
'nocontent'*/
- imap_url(r, base, mapdflt, redirect);
- return(imap_reply(r, redirect));
- }
-
- return SERVER_ERROR; /* If we make it this far, we failed. They lose! */
-}
-
-
-static handler_rec imap_handlers[] = {
-{ IMAP_MAGIC_TYPE, imap_handler },
-{ "imap-file", imap_handler },
-{ NULL }
+ menu_footer(r); /* finish the menu and we are done */
+ return OK;
+ }
+
+ if (*closest) { /* if a 'point' directive has been seen */
+ imap_url(r, base, closest, redirect);
+ return (imap_reply(r, redirect));
+ }
+
+ if (*mapdflt) { /* a default should be defined, even if only
'nocontent' */
+ imap_url(r, base, mapdflt, redirect);
+ return (imap_reply(r, redirect));
+ }
+
+ return SERVER_ERROR; /* If we make it this far, we failed. They
lose! */
+}
+
+
+static handler_rec imap_handlers[] =
+{
+ {IMAP_MAGIC_TYPE, imap_handler},
+ {"imap-file", imap_handler},
+ {NULL}
};
-module MODULE_VAR_EXPORT imap_module = {
- STANDARD_MODULE_STUFF,
- NULL, /* initializer */
- create_imap_dir_config, /* dir config creater */
- merge_imap_dir_configs, /* dir merger --- default is to override */
- NULL, /* server config */
- NULL, /* merge server config */
- imap_cmds, /* command table */
- imap_handlers, /* handlers */
- NULL, /* filename translation */
- NULL, /* check_user_id */
- NULL, /* check auth */
- NULL, /* check access */
- NULL, /* type_checker */
- NULL, /* fixups */
- NULL, /* logger */
- NULL, /* header parser */
- NULL, /* child_init */
- NULL, /* child_exit */
- NULL /* post read-request */
+module MODULE_VAR_EXPORT imap_module =
+{
+ STANDARD_MODULE_STUFF,
+ NULL, /* initializer */
+ create_imap_dir_config, /* dir config creater */
+ merge_imap_dir_configs, /* dir merger --- default is to override */
+ NULL, /* server config */
+ NULL, /* merge server config */
+ imap_cmds, /* command table */
+ imap_handlers, /* handlers */
+ NULL, /* filename translation */
+ NULL, /* check_user_id */
+ NULL, /* check auth */
+ NULL, /* check access */
+ NULL, /* type_checker */
+ NULL, /* fixups */
+ NULL, /* logger */
+ NULL, /* header parser */
+ NULL, /* child_init */
+ NULL, /* child_exit */
+ NULL /* post read-request */
};
1.17 +90 -87 apachen/src/modules/standard/mod_log_agent.c
Index: mod_log_agent.c
===================================================================
RCS file: /export/home/cvs/apachen/src/modules/standard/mod_log_agent.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- mod_log_agent.c 1997/08/18 13:12:14 1.16
+++ mod_log_agent.c 1997/09/18 18:40:55 1.17
@@ -56,12 +56,12 @@
module agent_log_module;
-static int xfer_flags = ( O_WRONLY | O_APPEND | O_CREAT );
+static int xfer_flags = (O_WRONLY | O_APPEND | O_CREAT);
#ifdef __EMX__
/* OS/2 dosen't support users and groups */
-static mode_t xfer_mode = ( S_IREAD | S_IWRITE );
+static mode_t xfer_mode = (S_IREAD | S_IWRITE);
#else
-static mode_t xfer_mode = ( S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH );
+static mode_t xfer_mode = (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
#endif
typedef struct {
@@ -69,34 +69,35 @@
int agent_fd;
} agent_log_state;
-void *make_agent_log_state (pool *p, server_rec *s)
+void *make_agent_log_state(pool *p, server_rec *s)
{
agent_log_state *cls =
- (agent_log_state *)palloc (p, sizeof (agent_log_state));
+ (agent_log_state *) palloc(p, sizeof(agent_log_state));
cls->fname = "";
cls->agent_fd = -1;
- return (void *)cls;
+ return (void *) cls;
}
-const char *set_agent_log (cmd_parms *parms, void *dummy, char *arg)
+const char *set_agent_log(cmd_parms *parms, void *dummy, char *arg)
{
- agent_log_state *cls = get_module_config (parms->server->module_config,
- &agent_log_module);
-
+ agent_log_state *cls = get_module_config(parms->server->module_config,
+ &agent_log_module);
+
cls->fname = arg;
return NULL;
}
-command_rec agent_log_cmds[] = {
-{ "AgentLog", set_agent_log, NULL, RSRC_CONF, TAKE1,
- "the filename of the agent log" },
-{ NULL }
+command_rec agent_log_cmds[] =
+{
+ {"AgentLog", set_agent_log, NULL, RSRC_CONF, TAKE1,
+ "the filename of the agent log"},
+ {NULL}
};
-static int agent_log_child (void *cmd)
+static int agent_log_child(void *cmd)
{
/* Child process code for 'AgentLog "|..."';
* may want a common framework for this, since I expect it will
@@ -105,101 +106,103 @@
int child_pid = 1;
cleanup_for_exec();
- signal (SIGHUP, SIG_IGN);
+ signal(SIGHUP, SIG_IGN);
#if defined(WIN32)
- child_pid = spawnl (SHELL_PATH, SHELL_PATH, "/c", (char *)cmd, NULL);
- return(child_pid);
-#elif defined(__EMX__)
+ child_pid = spawnl(SHELL_PATH, SHELL_PATH, "/c", (char *) cmd, NULL);
+ return (child_pid);
+#elif defined(__EMX__)
/* For OS/2 we need to use a '/' */
- execl (SHELL_PATH, SHELL_PATH, "/c", (char *)cmd, NULL);
-#else
- execl (SHELL_PATH, SHELL_PATH, "-c", (char *)cmd, NULL);
-#endif
- perror ("exec");
- fprintf (stderr, "Exec of shell for logging failed!!!\n");
- return(child_pid);
-}
-
-void open_agent_log (server_rec *s, pool *p)
-{
- agent_log_state *cls = get_module_config (s->module_config,
- &agent_log_module);
-
- char *fname = server_root_relative (p, cls->fname);
-
- if (cls->agent_fd > 0) return; /* virtual log shared w/main server */
-
+ execl(SHELL_PATH, SHELL_PATH, "/c", (char *) cmd, NULL);
+#else
+ execl(SHELL_PATH, SHELL_PATH, "-c", (char *) cmd, NULL);
+#endif
+ perror("exec");
+ fprintf(stderr, "Exec of shell for logging failed!!!\n");
+ return (child_pid);
+}
+
+void open_agent_log(server_rec *s, pool *p)
+{
+ agent_log_state *cls = get_module_config(s->module_config,
+ &agent_log_module);
+
+ char *fname = server_root_relative(p, cls->fname);
+
+ if (cls->agent_fd > 0)
+ return; /* virtual log shared w/main server */
+
if (*cls->fname == '|') {
- FILE *dummy;
-
- if (!spawn_child (p, agent_log_child, (void *)(cls->fname+1),
- kill_after_timeout, &dummy, NULL)) {
- perror ("spawn_child");
- fprintf (stderr, "Couldn't fork child for AgentLog process\n");
- exit (1);
- }
+ FILE *dummy;
- cls->agent_fd = fileno (dummy);
+ if (!spawn_child(p, agent_log_child, (void *) (cls->fname + 1),
+ kill_after_timeout, &dummy, NULL)) {
+ perror("spawn_child");
+ fprintf(stderr, "Couldn't fork child for AgentLog process\n");
+ exit(1);
+ }
+
+ cls->agent_fd = fileno(dummy);
}
- else if(*cls->fname != '\0') {
- if((cls->agent_fd = popenf(p, fname, xfer_flags, xfer_mode)) < 0) {
- perror("open");
- fprintf(stderr,"httpd: could not open agent log file %s.\n", fname);
- exit(1);
- }
+ else if (*cls->fname != '\0') {
+ if ((cls->agent_fd = popenf(p, fname, xfer_flags, xfer_mode)) < 0) {
+ perror("open");
+ fprintf(stderr, "httpd: could not open agent log file %s.\n",
fname);
+ exit(1);
+ }
}
}
-void init_agent_log (server_rec *s, pool *p)
+void init_agent_log(server_rec *s, pool *p)
{
- for (; s; s = s->next) open_agent_log (s, p);
+ for (; s; s = s->next)
+ open_agent_log(s, p);
}
int agent_log_transaction(request_rec *orig)
{
- agent_log_state *cls = get_module_config (orig->server->module_config,
- &agent_log_module);
-
+ agent_log_state *cls = get_module_config(orig->server->module_config,
+ &agent_log_module);
+
char str[HUGE_STRING_LEN];
char *agent;
request_rec *r;
- if(cls->agent_fd <0)
- return OK;
+ if (cls->agent_fd < 0)
+ return OK;
for (r = orig; r->next; r = r->next)
continue;
- if (*cls->fname == '\0') /* Don't log agent */
- return DECLINED;
+ if (*cls->fname == '\0') /* Don't log agent */
+ return DECLINED;
agent = table_get(orig->headers_in, "User-Agent");
- if(agent != NULL)
- {
- ap_snprintf(str, sizeof(str), "%s\n", agent);
- write(cls->agent_fd, str, strlen(str));
- }
-
+ if (agent != NULL) {
+ ap_snprintf(str, sizeof(str), "%s\n", agent);
+ write(cls->agent_fd, str, strlen(str));
+ }
+
return OK;
}
-module agent_log_module = {
- STANDARD_MODULE_STUFF,
- init_agent_log, /* initializer */
- NULL, /* create per-dir config */
- NULL, /* merge per-dir config */
- make_agent_log_state, /* server config */
- NULL, /* merge server config */
- agent_log_cmds, /* command table */
- NULL, /* handlers */
- NULL, /* filename translation */
- NULL, /* check_user_id */
- NULL, /* check auth */
- NULL, /* check access */
- NULL, /* type_checker */
- NULL, /* fixups */
- agent_log_transaction, /* logger */
- NULL, /* header parser */
- NULL, /* child_init */
- NULL, /* child_exit */
- NULL /* post read-request */
+module agent_log_module =
+{
+ STANDARD_MODULE_STUFF,
+ init_agent_log, /* initializer */
+ NULL, /* create per-dir config */
+ NULL, /* merge per-dir config */
+ make_agent_log_state, /* server config */
+ NULL, /* merge server config */
+ agent_log_cmds, /* command table */
+ NULL, /* handlers */
+ NULL, /* filename translation */
+ NULL, /* check_user_id */
+ NULL, /* check auth */
+ NULL, /* check access */
+ NULL, /* type_checker */
+ NULL, /* fixups */
+ agent_log_transaction, /* logger */
+ NULL, /* header parser */
+ NULL, /* child_init */
+ NULL, /* child_exit */
+ NULL /* post read-request */
};
1.17 +116 -114 apachen/src/modules/standard/mod_log_referer.c
Index: mod_log_referer.c
===================================================================
RCS file: /export/home/cvs/apachen/src/modules/standard/mod_log_referer.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- mod_log_referer.c 1997/08/18 13:12:14 1.16
+++ mod_log_referer.c 1997/09/18 18:40:55 1.17
@@ -56,13 +56,13 @@
module referer_log_module;
-static int xfer_flags = ( O_WRONLY | O_APPEND | O_CREAT );
+static int xfer_flags = (O_WRONLY | O_APPEND | O_CREAT);
#ifdef __EMX__
/* OS/2 lacks support for users and groups */
-static mode_t xfer_mode = ( S_IREAD | S_IWRITE );
+static mode_t xfer_mode = (S_IREAD | S_IWRITE);
#else
-static mode_t xfer_mode = ( S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH );
+static mode_t xfer_mode = (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
#endif
typedef struct {
@@ -71,46 +71,47 @@
array_header *referer_ignore_list;
} referer_log_state;
-void *make_referer_log_state (pool *p, server_rec *s)
+void *make_referer_log_state(pool *p, server_rec *s)
{
referer_log_state *cls =
- (referer_log_state *)palloc (p, sizeof (referer_log_state));
+ (referer_log_state *) palloc(p, sizeof(referer_log_state));
cls->fname = "";
cls->referer_fd = -1;
cls->referer_ignore_list = make_array(p, 1, sizeof(char *));
- return (void *)cls;
+ return (void *) cls;
}
-const char *set_referer_log (cmd_parms *parms, void *dummy, char *arg)
+const char *set_referer_log(cmd_parms *parms, void *dummy, char *arg)
{
- referer_log_state *cls = get_module_config (parms->server->module_config,
- &referer_log_module);
-
+ referer_log_state *cls = get_module_config(parms->server->module_config,
+ &referer_log_module);
+
cls->fname = arg;
return NULL;
}
-const char *add_referer_ignore (cmd_parms *parms, void *dummy, char *arg)
+const char *add_referer_ignore(cmd_parms *parms, void *dummy, char *arg)
+{
+ char **addme;
+ referer_log_state *cls = get_module_config(parms->server->module_config,
+ &referer_log_module);
+
+ addme = push_array(cls->referer_ignore_list);
+ *addme = pstrdup(cls->referer_ignore_list->pool, arg);
+ return NULL;
+}
+
+command_rec referer_log_cmds[] =
{
- char **addme;
- referer_log_state *cls = get_module_config (parms->server->module_config,
- &referer_log_module);
-
- addme = push_array(cls->referer_ignore_list);
- *addme = pstrdup(cls->referer_ignore_list->pool, arg);
- return NULL;
-}
-
-command_rec referer_log_cmds[] = {
-{ "RefererLog", set_referer_log, NULL, RSRC_CONF, TAKE1,
- "the filename of the referer log" },
-{ "RefererIgnore", add_referer_ignore, NULL, RSRC_CONF, ITERATE,
- "referer hostnames to ignore" },
-{ NULL }
+ {"RefererLog", set_referer_log, NULL, RSRC_CONF, TAKE1,
+ "the filename of the referer log"},
+ {"RefererIgnore", add_referer_ignore, NULL, RSRC_CONF, ITERATE,
+ "referer hostnames to ignore"},
+ {NULL}
};
-static int referer_log_child (void *cmd)
+static int referer_log_child(void *cmd)
{
/* Child process code for 'RefererLog "|..."';
* may want a common framework for this, since I expect it will
@@ -119,125 +120,126 @@
int child_pid = 1;
cleanup_for_exec();
- signal (SIGHUP, SIG_IGN);
+ signal(SIGHUP, SIG_IGN);
#if defined(WIN32)
/* For OS/2 we need to use a '/' */
- child_pid = spawnl (SHELL_PATH, SHELL_PATH, "/c", (char *)cmd, NULL);
- return(child_pid);
+ child_pid = spawnl(SHELL_PATH, SHELL_PATH, "/c", (char *) cmd, NULL);
+ return (child_pid);
#elif defined(__EMX__)
/* For OS/2 we need to use a '/' */
- execl (SHELL_PATH, SHELL_PATH, "/c", (char *)cmd, NULL);
+ execl(SHELL_PATH, SHELL_PATH, "/c", (char *) cmd, NULL);
#else
- execl (SHELL_PATH, SHELL_PATH, "-c", (char *)cmd, NULL);
+ execl(SHELL_PATH, SHELL_PATH, "-c", (char *) cmd, NULL);
#endif
- perror ("execl");
- fprintf (stderr, "Exec of shell for logging failed!!!\n");
- return(child_pid);
+ perror("execl");
+ fprintf(stderr, "Exec of shell for logging failed!!!\n");
+ return (child_pid);
}
-void open_referer_log (server_rec *s, pool *p)
-{
- referer_log_state *cls = get_module_config (s->module_config,
- &referer_log_module);
-
- char *fname = server_root_relative (p, cls->fname);
-
- if (cls->referer_fd > 0) return; /* virtual log shared w/main server */
-
+void open_referer_log(server_rec *s, pool *p)
+{
+ referer_log_state *cls = get_module_config(s->module_config,
+ &referer_log_module);
+
+ char *fname = server_root_relative(p, cls->fname);
+
+ if (cls->referer_fd > 0)
+ return; /* virtual log shared w/main server */
+
if (*cls->fname == '|') {
- FILE *dummy;
-
- if (!spawn_child (p, referer_log_child, (void *)(cls->fname+1),
- kill_after_timeout, &dummy, NULL)) {
- perror ("spawn_child");
- fprintf (stderr, "Couldn't fork child for RefererLog process\n");
- exit (1);
- }
+ FILE *dummy;
- cls->referer_fd = fileno (dummy);
+ if (!spawn_child(p, referer_log_child, (void *) (cls->fname + 1),
+ kill_after_timeout, &dummy, NULL)) {
+ perror("spawn_child");
+ fprintf(stderr, "Couldn't fork child for RefererLog process\n");
+ exit(1);
+ }
+
+ cls->referer_fd = fileno(dummy);
}
- else if(*cls->fname != '\0') {
- if((cls->referer_fd = popenf(p, fname, xfer_flags, xfer_mode)) < 0) {
- perror("open");
- fprintf(stderr,"httpd: could not open referer log file %s.\n",
fname);
- exit(1);
- }
+ else if (*cls->fname != '\0') {
+ if ((cls->referer_fd = popenf(p, fname, xfer_flags, xfer_mode)) < 0)
{
+ perror("open");
+ fprintf(stderr, "httpd: could not open referer log file %s.\n",
fname);
+ exit(1);
+ }
}
}
-void init_referer_log (server_rec *s, pool *p)
+void init_referer_log(server_rec *s, pool *p)
{
- for (; s; s = s->next) open_referer_log (s, p);
+ for (; s; s = s->next)
+ open_referer_log(s, p);
}
int referer_log_transaction(request_rec *orig)
{
char **ptrptr, **ptrptr2;
- referer_log_state *cls = get_module_config (orig->server->module_config,
- &referer_log_module);
-
+ referer_log_state *cls = get_module_config(orig->server->module_config,
+ &referer_log_module);
+
char *str;
char *referer;
request_rec *r;
- if(cls->referer_fd <0)
- return OK;
+ if (cls->referer_fd < 0)
+ return OK;
for (r = orig; r->next; r = r->next)
continue;
- if (*cls->fname == '\0') /* Don't log referer */
- return DECLINED;
-
+ if (*cls->fname == '\0') /* Don't log referer */
+ return DECLINED;
+
referer = table_get(orig->headers_in, "Referer");
- if(referer != NULL)
- {
+ if (referer != NULL) {
+
+
+ /* The following is an upsetting mess of pointers, I'm sorry
+ Anyone with the motiviation and/or the time should feel free
+ to make this cleaner... */
+ ptrptr2 = (char **) (cls->referer_ignore_list->elts +
+ (cls->referer_ignore_list->nelts *
+ cls->referer_ignore_list->elt_size));
- /* The following is an upsetting mess of pointers, I'm sorry
- Anyone with the motiviation and/or the time should feel free
- to make this cleaner... */
-
- ptrptr2 = (char **) (cls->referer_ignore_list->elts +
- (cls->referer_ignore_list->nelts *
- cls->referer_ignore_list->elt_size));
-
- /* Go through each element of the ignore list and compare it to the
- referer_host. If we get a match, return without logging */
-
- for(ptrptr = (char **) cls->referer_ignore_list->elts;
- ptrptr < ptrptr2;
- ptrptr = (char **)((char *)ptrptr +
cls->referer_ignore_list->elt_size))
- {
- if(strstr(referer, *ptrptr))
- return OK;
- }
-
-
- str = pstrcat(orig->pool, referer, " -> ", r->uri, "\n", NULL);
- write(cls->referer_fd, str, strlen(str));
- }
+ /* Go through each element of the ignore list and compare it to the
+ referer_host. If we get a match, return without logging */
+
+ for (ptrptr = (char **) cls->referer_ignore_list->elts;
+ ptrptr < ptrptr2;
+ ptrptr = (char **) ((char *) ptrptr +
cls->referer_ignore_list->elt_size)) {
+ if (strstr(referer, *ptrptr))
+ return OK;
+ }
+
+
+ str = pstrcat(orig->pool, referer, " -> ", r->uri, "\n", NULL);
+ write(cls->referer_fd, str, strlen(str));
+ }
return OK;
}
-module referer_log_module = {
- STANDARD_MODULE_STUFF,
- init_referer_log, /* initializer */
- NULL, /* create per-dir config */
- NULL, /* merge per-dir config */
- make_referer_log_state, /* server config */
- NULL, /* merge server config */
- referer_log_cmds, /* command table */
- NULL, /* handlers */
- NULL, /* filename translation */
- NULL, /* check_user_id */
- NULL, /* check auth */
- NULL, /* check access */
- NULL, /* type_checker */
- NULL, /* fixups */
- referer_log_transaction, /* logger */
- NULL, /* header parser */
- NULL, /* child_init */
- NULL, /* child_exit */
- NULL /* post read-request */
+module referer_log_module =
+{
+ STANDARD_MODULE_STUFF,
+ init_referer_log, /* initializer */
+ NULL, /* create per-dir config */
+ NULL, /* merge per-dir config */
+ make_referer_log_state, /* server config */
+ NULL, /* merge server config */
+ referer_log_cmds, /* command table */
+ NULL, /* handlers */
+ NULL, /* filename translation */
+ NULL, /* check_user_id */
+ NULL, /* check auth */
+ NULL, /* check access */
+ NULL, /* type_checker */
+ NULL, /* fixups */
+ referer_log_transaction, /* logger */
+ NULL, /* header parser */
+ NULL, /* child_init */
+ NULL, /* child_exit */
+ NULL /* post read-request */
};