/* $Header: /home/cvs/mod_log_sql/functions.h,v 1.1 2004/01/20 19:38:08 urkle Exp $ */ /* Begin the individual functions that, given a request r, * extract the needed information from it and return the * value to the calling entity. */ static const char *extract_remote_host(request_rec *r, char *a) { return (char *) ap_get_remote_host(r->connection, r->per_dir_config, REMOTE_NAME, NULL); } static const char *extract_remote_logname(request_rec *r, char *a) { return (char *) ap_get_remote_logname(r); } static const char *extract_remote_user(request_rec *r, char *a) { #ifdef WITH_APACHE13 char *rvalue = r->connection->user; #else char *rvalue = r->user; #endif if (rvalue == NULL) { rvalue = "-"; } else if (strlen(rvalue) == 0) { rvalue = "\"\""; } return rvalue; } static const char *extract_request_method(request_rec *r, char *a) { return r->method; } static const char *extract_request_protocol(request_rec *r, char *a) { return r->protocol; } static const char *extract_request_line(request_rec *r, char *a) { return r->the_request; } static const char *extract_request_file(request_rec *r, char *a) { return r->filename; } static const char *extract_request_uri(request_rec *r, char *a) { return r->uri; } static const char *extract_request_args(request_rec *r, char *a) { return r->args; } static const char *extract_status(request_rec *r, char *a) { if (r->status <= 0) { return "-"; } else { return apr_psprintf(r->pool, "%d", r->status); } } static const char *extract_bytes_sent(request_rec *r, char *a) { if (!r->sent_bodyct || !r->bytes_sent) { return "-"; } else { return apr_psprintf(r->pool, "%" APR_OFF_T_FMT, r->bytes_sent); } } /* static const char *extract_header_in(request_rec *r, char *a) { return table_get(r->headers_in, a); } static const char *extract_header_out(request_rec *r, char *a) { const char *cp = table_get(r->headers_out, a); if (!strcasecmp(a, "Content-type") && r->content_type) { cp = r->content_type; } if (cp) { return cp; } return table_get(r->err_headers_out, a); } */ static const char *extract_virtual_host(request_rec *r, char *a) { return apr_pstrdup(r->pool, r->server->server_hostname); } static const char *extract_machine_id(request_rec *r, char *a) { if (!global_config.machid) return "-"; else return global_config.machid; } static const char *extract_server_port(request_rec *r, char *a) { return apr_psprintf(r->pool, "%u", r->server->port ? r->server->port : ap_default_port(r)); } static const char *extract_child_pid(request_rec *r, char *a) { if (*a == '\0' || !strcmp(a, "pid")) { return apr_psprintf(r->pool, "%" APR_PID_T_FMT, getpid()); } else if (!strcmp(a, "tid")) { #if APR_HAS_THREADS apr_os_thread_t tid = apr_os_thread_current(); #else int tid = 0; /* APR will format "0" anyway but an arg is needed */ #endif return apr_psprintf(r->pool, "%pT", &tid); } /* bogus format */ return a; } static const char *extract_referer(request_rec *r, char *a) { const char *tempref; tempref = apr_table_get(r->headers_in, "Referer"); if (!tempref