coar 98/08/30 18:18:55
Modified: htdocs/manual new_features_1_3.html upgrading_to_1_3.html htdocs/manual/mod mod_autoindex.html src CHANGES src/modules/standard mod_autoindex.c Log: Clean up mod_autoindex's storage of the IndexOptions settings. They are per-directory, not per-filename, so keeping them in an array is confusing and pointless. They're now stored in an int in the module config record. Also (finally!) fix the FancyIndexing directive so it gets merged into any IndexOptions settings for the current directory, rather than replacing them. Revision Changes Path 1.68 +6 -0 apache-1.3/htdocs/manual/new_features_1_3.html Index: new_features_1_3.html =================================================================== RCS file: /export/home/cvs/apache-1.3/htdocs/manual/new_features_1_3.html,v retrieving revision 1.67 retrieving revision 1.68 diff -u -r1.67 -r1.68 --- new_features_1_3.html 1998/07/20 00:18:18 1.67 +++ new_features_1_3.html 1998/08/31 01:18:45 1.68 @@ -268,6 +268,12 @@ height and width attributes to the <CODE><IMG></CODE> tag in directory listings. + <LI>The <A HREF="mod/mod_autoindex.html#fancyindexing" + ><SAMP>FancyIndexing</SAMP></A> directive now correctly has + the same impact as <SAMP>IndexOptions FancyIndexing</SAMP> + without replacing the effect of any existing <SAMP>IndexOptions</SAMP> + directive. + </UL> <DT><STRONG>Less Buffering of CGI Script Output</STRONG> 1.28 +4 -0 apache-1.3/htdocs/manual/upgrading_to_1_3.html Index: upgrading_to_1_3.html =================================================================== RCS file: /export/home/cvs/apache-1.3/htdocs/manual/upgrading_to_1_3.html,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- upgrading_to_1_3.html 1998/07/04 15:10:50 1.27 +++ upgrading_to_1_3.html 1998/08/31 01:18:45 1.28 @@ -72,6 +72,10 @@ <H3>Run-Time Configuration Changes</H3> <UL> + <LI>Standalone <STRONG><SAMP>FancyIndexing</SAMP></STRONG> directives + are now combined with the settings of any <SAMP>IndexOptions</SAMP> + directive already in effect, rather than replacing them. + </LI> <LI><STRONG><SAMP>AuthName</SAMP> strings will need to be quoted</STRONG> in <SAMP>.htaccess</SAMP> or server configuration files if they contain blank characters (like spaces). For example, if you use 1.20 +6 -2 apache-1.3/htdocs/manual/mod/mod_autoindex.html Index: mod_autoindex.html =================================================================== RCS file: /export/home/cvs/apache-1.3/htdocs/manual/mod/mod_autoindex.html,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- mod_autoindex.html 1998/05/20 14:12:54 1.19 +++ mod_autoindex.html 1998/08/31 01:18:48 1.20 @@ -373,10 +373,14 @@ preference. </P> <BLOCKQUOTE> - <STRONG>Note that the <SAMP>FancyIndexing</SAMP> and + <STRONG>Note that in versions of Apache prior to 1.3.2, the + <SAMP>FancyIndexing</SAMP> and <SAMP>IndexOptions</SAMP> directives will override each other. You should use <SAMP>IndexOptions FancyIndexing</SAMP> in preference - to the standalone <SAMP>FancyIndexing</SAMP> directive.</STRONG> + to the standalone <SAMP>FancyIndexing</SAMP> directive. + As of Apache 1.3.2, a standalone <SAMP>FancyIndexing</SAMP> directive + is combined with any <SAMP>IndexOptions</SAMP> directive already + specified for the current scope.</STRONG> </BLOCKQUOTE> <HR> 1.1040 +5 -0 apache-1.3/src/CHANGES Index: CHANGES =================================================================== RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.1039 retrieving revision 1.1040 diff -u -r1.1039 -r1.1040 --- CHANGES 1998/08/28 11:27:19 1.1039 +++ CHANGES 1998/08/31 01:18:51 1.1040 @@ -1,5 +1,10 @@ Changes with Apache 1.3.2 + *) Simplify handling of IndexOptions in mod_autoindex -- and BTW + cause the standalone FancyIndexing directive to logically OR + into any existing IndexOptions settings rather than wiping + them out. [Ken Coar] + *) Changes in ftp proxy: make URL parsing simpler by using the parsed_uri stuff. + Add display of the "current directory" in cases where it's 1.90 +28 -39 apache-1.3/src/modules/standard/mod_autoindex.c Index: mod_autoindex.c =================================================================== RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_autoindex.c,v retrieving revision 1.89 retrieving revision 1.90 diff -u -r1.89 -r1.90 --- mod_autoindex.c 1998/08/29 18:27:10 1.89 +++ mod_autoindex.c 1998/08/31 01:18:53 1.90 @@ -121,11 +121,12 @@ typedef struct autoindex_config_struct { char *default_icon; + int opts; int icon_width; int icon_height; array_header *icon_list, *alt_list, *desc_list, *ign_list; - array_header *hdr_list, *rdme_list, *opts_list; + array_header *hdr_list, *rdme_list; } autoindex_config_rec; @@ -271,17 +272,20 @@ return NULL; } - -static const char *add_opts_int(cmd_parms *cmd, void *d, int opts) -{ - push_item(((autoindex_config_rec *) d)->opts_list, (char *) (long) opts, - NULL, cmd->path, NULL); - return NULL; -} - +/* A legacy directive, FancyIndexing is superseded by the IndexOptions + * keyword. But for compatibility.. + */ static const char *fancy_indexing(cmd_parms *cmd, void *d, int arg) { - return add_opts_int(cmd, d, arg ? FANCY_INDEXING : 0); + int curopts; + int newopts; + autoindex_config_rec *cfg; + + cfg = (autoindex_config_rec *) d; + curopts = cfg->opts; + newopts = (arg ? (curopts | FANCY_INDEXING) : (curopts & !FANCY_INDEXING)); + cfg->opts = newopts; + return NULL; } static const char *add_opts(cmd_parms *cmd, void *d, const char *optstr) @@ -335,7 +339,8 @@ return "Invalid directory indexing option"; } } - return add_opts_int(cmd, d, opts); + d_cfg->opts = opts; + return NULL; } #define DIR_CMD_PERMS OR_INDEXES @@ -383,7 +388,7 @@ new->ign_list = ap_make_array(p, 4, sizeof(struct item)); new->hdr_list = ap_make_array(p, 4, sizeof(struct item)); new->rdme_list = ap_make_array(p, 4, sizeof(struct item)); - new->opts_list = ap_make_array(p, 4, sizeof(struct item)); + new->opts = 0; return (void *) new; } @@ -406,7 +411,7 @@ new->desc_list = ap_append_arrays(p, add->desc_list, base->desc_list); new->icon_list = ap_append_arrays(p, add->icon_list, base->icon_list); new->rdme_list = ap_append_arrays(p, add->rdme_list, base->rdme_list); - new->opts_list = ap_append_arrays(p, add->opts_list, base->opts_list); + new->opts = add->opts; return new; } @@ -482,7 +487,7 @@ #define find_header(d,p) find_item(p,d->hdr_list,0) #define find_readme(d,p) find_item(p,d->rdme_list,0) -static char *find_default_icon(autoindex_config_rec * d, char *bogus_name) +static char *find_default_icon(autoindex_config_rec *d, char *bogus_name) { request_rec r; @@ -497,7 +502,7 @@ return find_item(&r, d->icon_list, 1); } -static int ignore_entry(autoindex_config_rec * d, char *path) +static int ignore_entry(autoindex_config_rec *d, char *path) { array_header *list = d->ign_list; struct item *items = (struct item *) list->elts; @@ -542,23 +547,6 @@ return 0; } -static int find_opts(autoindex_config_rec * d, request_rec *r) -{ - char *path = r->filename; - array_header *list = d->opts_list; - struct item *items = (struct item *) list->elts; - int i; - - for (i = 0; i < list->nelts; ++i) { - struct item *p = &items[i]; - - if (!ap_strcmp_match(path, p->apply_path)) { - return (int) (long) p->type; - } - } - return 0; -} - /***************************************************************** * * Actually generating output @@ -581,7 +569,7 @@ cfg = (autoindex_config_rec *) ap_get_module_config(r->per_dir_config, &autoindex_module); - autoindex_opts = find_opts(cfg, r); + autoindex_opts = cfg->opts; /* XXX: this is a load of crap, it needs to do a full sub_req_lookup_uri */ fn = ap_make_full_path(r->pool, name, readme_fname); fn = ap_pstrcat(r->pool, fn, ".html", NULL); @@ -714,7 +702,7 @@ } static struct ent *make_autoindex_entry(char *name, int autoindex_opts, - autoindex_config_rec * d, + autoindex_config_rec *d, request_rec *r, char keyid, char direction) { @@ -780,7 +768,7 @@ return (p); } -static char *terminate_description(autoindex_config_rec * d, char *desc, +static char *terminate_description(autoindex_config_rec *d, char *desc, int autoindex_opts) { int maxsize = 23; @@ -850,8 +838,8 @@ } static void output_directories(struct ent **ar, int n, - autoindex_config_rec * d, request_rec *r, - int autoindex_opts, char keyid, char direction) + autoindex_config_rec *d, request_rec *r, + int autoindex_opts, char keyid, char direction) { int x; char *name = r->uri; @@ -1055,7 +1043,8 @@ } -static int index_directory(request_rec *r, autoindex_config_rec * autoindex_conf) +static int index_directory(request_rec *r, + autoindex_config_rec *autoindex_conf) { char *title_name = ap_escape_html(r->pool, r->uri); char *title_endp; @@ -1068,7 +1057,7 @@ struct ent **ar = NULL; char *tmp; const char *qstring; - int autoindex_opts = find_opts(autoindex_conf, r); + int autoindex_opts = autoindex_conf->opts; char keyid; char direction;