From: Takashi Sato Date: Thu, 25 Dec 2008 01:47:44 +0000 (+0000) Subject: Remove a dirty hack in find_default_item. X-Git-Tag: 2.3.1~59 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9b8158867c930498bce3618cd6eb50edc093167f;p=thirdparty%2Fapache%2Fhttpd.git Remove a dirty hack in find_default_item. Creating local request_rec breaks Module Magic Number. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@729388 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/generators/mod_autoindex.c b/modules/generators/mod_autoindex.c index 8e5cb133e67..5eec47917b3 100644 --- a/modules/generators/mod_autoindex.c +++ b/modules/generators/mod_autoindex.c @@ -738,12 +738,9 @@ struct ent { int isdir; }; -static char *find_item(request_rec *r, apr_array_header_t *list, int path_only) +static char *find_item(const char *content_type, const char *content_encoding, + char *path, apr_array_header_t *list, int path_only) { - const char *content_type = ap_field_noparam(r->pool, r->content_type); - const char *content_encoding = r->content_encoding; - char *path = r->filename; - struct item *items = (struct item *) list->elts; int i; @@ -784,23 +781,16 @@ static char *find_item(request_rec *r, apr_array_header_t *list, int path_only) return NULL; } -#define find_icon(d,p,t) find_item(p,d->icon_list,t) -#define find_alt(d,p,t) find_item(p,d->alt_list,t) - -static char *find_default_item(char *bogus_name, apr_array_header_t *list) +static char *find_item_by_request(request_rec *r, apr_array_header_t *list, int path_only) { - request_rec r; - /* Bleah. I tried to clean up find_item, and it lead to this bit - * of ugliness. Note that the fields initialized are precisely - * those that find_item looks at... - */ - r.filename = bogus_name; - r.content_type = r.content_encoding = NULL; - return find_item(&r, list, 1); + return find_item(ap_field_noparam(r->pool, r->content_type), + r->content_encoding, r->filename, list, path_only); } -#define find_default_icon(d,n) find_default_item(n, d->icon_list) -#define find_default_alt(d,n) find_default_item(n, d->alt_list) +#define find_icon(d,p,t) find_item_by_request(p,d->icon_list,t) +#define find_alt(d,p,t) find_item_by_request(p,d->alt_list,t) +#define find_default_icon(d,n) find_item(NULL, NULL, n, d->icon_list, 1) +#define find_default_alt(d,n) find_item(NULL, NULL, n, d->alt_list, 1) /* * Look through the list of pattern/description pairs and return the first one