martin 99/10/23 14:20:17
Modified: src CHANGES src/modules/standard mod_speling.c Log: mod_speling runs in 2.0-dev now: a bug in (linux?) readdir_r handling and interface adaption to APR functions did it. [Martin Kraemer] Revision Changes Path 1.12 +3 -0 apache-2.0/src/CHANGES Index: CHANGES =================================================================== RCS file: /export/home/cvs/apache-2.0/src/CHANGES,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- CHANGES 1999/10/13 02:41:06 1.11 +++ CHANGES 1999/10/23 21:20:15 1.12 @@ -1,5 +1,8 @@ Changes with Apache 2.0-dev + *) mod_speling runs in 2.0-dev now: a bug in readdir_r handling and + interface adaption to APR functions did it. [Martin Kraemer] + *) Support DSOs properly on 32-bit HP-UX 11.0 [Dilip Khandekar <[EMAIL PROTECTED]>] 1.6 +10 -15 apache-2.0/src/modules/standard/mod_speling.c Index: mod_speling.c =================================================================== RCS file: /export/home/cvs/apache-2.0/src/modules/standard/mod_speling.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- mod_speling.c 1999/10/22 15:50:12 1.5 +++ mod_speling.c 1999/10/23 21:20:16 1.6 @@ -61,7 +61,6 @@ #include "http_config.h" #include "http_log.h" #include "apr_file_io.h" -#include "../../lib/apr/misc/unix/misc.h" /* mod_speling.c - by Alexei Kosut <[EMAIL PROTECTED]> June, 1996 * @@ -229,7 +228,7 @@ static int check_speling(request_rec *r) { spconfig *cfg; - char *good, *bad, *postgood, *url; + char *good, *bad, *postgood, *url, *fname; int filoc, dotloc, urlen, pglen; ap_array_header_t *candidates = NULL; ap_dir_t *dir; @@ -302,17 +301,14 @@ dotloc = strlen(bad); } - while (ap_readdir(dir) == APR_SUCCESS) { + /* NOTE: ap_get_dir_filename() fills fname with a ap_palloc()ed copy + * of the found directory name already. We don't need to copy it. + * @@@: Copying *ALL* found file names is wasted energy (and memory)! + */ + while (ap_readdir(dir) == APR_SUCCESS && + ap_get_dir_filename(&fname, dir) == APR_SUCCESS) { sp_reason q; - char *fname; - ap_status_t ok; - - ok = ap_get_dir_filename(&fname, dir); -/*@@*/ - ap_log_rerror(APLOG_MARK, APLOG_NOERRNO | APLOG_INFO, APR_SUCCESS, - r, __FILE__": Check_Speling `%s' in `%s'", r->filename, good, ok==APR_SUCCESS ? fname : "ERROR"); -/*@@*/ /* * If we end up with a "fixed" URL which is identical to the * requested one, we must have found a broken symlink or some such. @@ -331,7 +327,7 @@ misspelled_file *sp_new; sp_new = (misspelled_file *) ap_push_array(candidates); - sp_new->name = ap_pstrdup(r->pool, fname); + sp_new->name = fname; sp_new->quality = SP_MISCAPITALIZED; } @@ -343,7 +339,7 @@ misspelled_file *sp_new; sp_new = (misspelled_file *) ap_push_array(candidates); - sp_new->name = ap_pstrdup(r->pool, fname); + sp_new->name = fname; sp_new->quality = q; } @@ -389,13 +385,12 @@ misspelled_file *sp_new; sp_new = (misspelled_file *) ap_push_array(candidates); - sp_new->name = ap_pstrdup(r->pool, fname); + sp_new->name = fname; sp_new->quality = SP_VERYDIFFERENT; } #endif } } - ap_closedir(dir); if (candidates->nelts != 0) {