SOURCES: apache1-regex_must_conform_to_posix_for_LFS_to_work.patch...
glen
glen at pld-linux.org
Wed May 31 13:28:54 CEST 2006
Author: glen Date: Wed May 31 11:28:54 2006 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- fixes and improvements from debian (apache_1.3.34-2.diff.gz)
---- Files affected:
SOURCES:
apache1-regex_must_conform_to_posix_for_LFS_to_work.patch (NONE -> 1.1) (NEW), apache1-suexec_of_death.patch (NONE -> 1.1) (NEW), apache1-suexec_reopenlog.patch (NONE -> 1.1) (NEW), apache1-autoindex_studly.patch (NONE -> 1.1) (NEW), apache1-autoindex_indexes.patch (NONE -> 1.1) (NEW), apache1-autoindex_generator.patch (NONE -> 1.1) (NEW), apache1-ab.8_formatting_error.patch (NONE -> 1.1) (NEW), apache1-proxy_content_base.patch (NONE -> 1.1) (NEW), apache1-inetdfix.patch (NONE -> 1.1) (NEW), apache1-configure_hashbang.patch (NONE -> 1.1) (NEW), apache1-log_files_permission.patch (NONE -> 1.1) (NEW), apache1-htpasswd_do_not_trash_extra_fields.patch (NONE -> 1.1) (NEW), apache1-GNU_xargs.patch (NONE -> 1.1) (NEW), apache1-security_htdigest_local_buffer_overflow.patch (NONE -> 1.1) (NEW), apache1-security_htpasswd_user_buffer_overflow.patch (NONE -> 1.1) (NEW), apache1-security_check_forensic_tempfiles.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/apache1-regex_must_conform_to_posix_for_LFS_to_work.patch
diff -u /dev/null SOURCES/apache1-regex_must_conform_to_posix_for_LFS_to_work.patch:1.1
--- /dev/null Wed May 31 13:28:54 2006
+++ SOURCES/apache1-regex_must_conform_to_posix_for_LFS_to_work.patch Wed May 31 13:28:49 2006
@@ -0,0 +1,12 @@
+diff -ruN -x Makefile.in -x configure -x *~ -x apache_1.3.14.orig apache_1.3.14.orig/src/include/hsregex.h apache_1.3.14/src/include/hsregex.h
+--- build-tree/apache_1.3.34/src/include/hsregex.h Mon Sep 25 16:48:24 2000
++++ build-tree/apache_1.3.34/src/include/hsregex.h Wed Dec 6 15:20:03 2000
+@@ -24,7 +24,7 @@
+ #endif
+ #endif
+
+-typedef off_t regoff_t;
++typedef int regoff_t;
+ typedef struct {
+ int re_magic;
+ size_t re_nsub; /* number of parenthesized subexpressions */
================================================================
Index: SOURCES/apache1-suexec_of_death.patch
diff -u /dev/null SOURCES/apache1-suexec_of_death.patch:1.1
--- /dev/null Wed May 31 13:28:54 2006
+++ SOURCES/apache1-suexec_of_death.patch Wed May 31 13:28:49 2006
@@ -0,0 +1,24 @@
+--- build-tree/apache_1.3.34/src/main/http_core.c
++++ build-tree/apache_1.3.34/src/main/http_core.c
+@@ -1892,8 +1892,9 @@
+ else {
+ cmd->server->server_uid = ap_user_id;
+ fprintf(stderr,
+- "Warning: User directive in <VirtualHost> "
++ "ERROR: User directive in <VirtualHost> "
+ "requires SUEXEC wrapper.\n");
++ exit (1);
+ }
+ }
+ #if !defined (BIG_SECURITY_HOLE) && !defined (OS2)
+@@ -1933,8 +1934,9 @@
+ else {
+ cmd->server->server_gid = ap_group_id;
+ fprintf(stderr,
+- "Warning: Group directive in <VirtualHost> requires "
++ "ERROR: Group directive in <VirtualHost> requires "
+ "SUEXEC wrapper.\n");
++ exit (1);
+ }
+ }
+
================================================================
Index: SOURCES/apache1-suexec_reopenlog.patch
diff -u /dev/null SOURCES/apache1-suexec_reopenlog.patch:1.1
--- /dev/null Wed May 31 13:28:54 2006
+++ SOURCES/apache1-suexec_reopenlog.patch Wed May 31 13:28:49 2006
@@ -0,0 +1,44 @@
+diff -Naurd build-tree.orig/apache_1.3.34/src/support/suexec.c build-tree/apache_1.3.34/src/support/suexec.c
+--- build-tree.orig/apache_1.3.34/src/support/suexec.c 2004-08-23 23:36:55.000000000 +0200
++++ build-tree/apache_1.3.34/src/support/suexec.c 2004-08-23 23:40:35.000000000 +0200
+@@ -49,6 +49,10 @@
+ #include <stdarg.h>
+ #include <strings.h>
+
++/* for fcntl(fileno(log), F_SETFD, FD_CLOEXEC); */
++#include <unistd.h>
++#include <fcntl.h>
++
+ #include "suexec.h"
+
+ /*
+@@ -151,6 +155,8 @@
+ perror("fopen");
+ exit(1);
+ }
++ /* Set the close-on-exec flag -- Liyang HU <liyang at nerv.cx> */
++ fcntl(fileno(log), F_SETFD, FD_CLOEXEC);
+ }
+
+ time(&timevar);
+@@ -823,20 +829,6 @@
+ umask(SUEXEC_UMASK);
+ #endif /* SUEXEC_UMASK */
+
+- /*
+- * Be sure to close the log file so the CGI can't
+- * mess with it. If the exec fails, it will be reopened
+- * automatically when log_err is called. Note that the log
+- * might not actually be open if LOG_EXEC isn't defined.
+- * However, the "log" cell isn't ifdef'd so let's be defensive
+- * and assume someone might have done something with it
+- * outside an ifdef'd LOG_EXEC block.
+- */
+- if (log != NULL) {
+- fclose(log);
+- log = NULL;
+- }
+-
+ /*
+ * Execute the command, replacing our image with its own.
+ */
================================================================
Index: SOURCES/apache1-autoindex_studly.patch
diff -u /dev/null SOURCES/apache1-autoindex_studly.patch:1.1
--- /dev/null Wed May 31 13:28:54 2006
+++ SOURCES/apache1-autoindex_studly.patch Wed May 31 13:28:49 2006
@@ -0,0 +1,511 @@
+--- build-tree-apache/apache_1.3.34/src/modules/standard/mod_autoindex.c 2003-12-09 14:47:37.000000000 -0500
++++ build-tree-apache/apache_1.3.34/src/modules/standard/mod_autoindex.c 2004-02-19 13:16:31.000000000 -0500
+@@ -63,6 +63,7 @@
+ * 3/23/93
+ *
+ * Adapted to Apache by rst.
++ * StudlyIndexing by Johnie Ingram <johnie at netgod.net>
+ */
+
+ #include "httpd.h"
+@@ -99,6 +100,7 @@ module MODULE_VAR_EXPORT autoindex_modul
+ #define FOLDERS_FIRST 512
+ #define TRACK_MODIFIED 1024
+ #define SORT_NOCASE 2048
++#define STUDLY_INDEXING 4096
+
+ #define K_PAD 1
+ #define K_NOPAD 0
+@@ -163,6 +165,17 @@ typedef struct autoindex_config_struct {
+ array_header *ign_list;
+ array_header *hdr_list;
+ array_header *rdme_list;
++ array_header *side_list;
++ array_header *main_list;
++ array_header *ftr_list;
++
++ char *body_col;
++ char *text_col;
++ char *hdr_col;
++ char *rdme_col;
++ char *side_col;
++ char *main_col;
++ char *ftr_col;
+
+ } autoindex_config_rec;
+
+@@ -196,11 +209,19 @@ static ap_inline int is_parent(const cha
+ * We include the DOCTYPE because we may be using features therefrom (i.e.,
+ * HEIGHT and WIDTH attributes on the icons if we're FancyIndexing).
+ */
+-static void emit_preamble(request_rec *r, char *title)
++static void emit_preamble(request_rec *r, char *title,
++ autoindex_config_rec *autoindex_conf)
+ {
+- ap_rvputs(r, DOCTYPE_HTML_3_2,
++ ap_rvputs(r, DOCTYPE_HTML_4_0T,
+ "<HTML>\n <HEAD>\n <TITLE>Index of ", title,
+- "</TITLE>\n </HEAD>\n <BODY>\n", NULL);
++ "</TITLE>\n </HEAD>\n <BODY bgcolor=\"",
++ autoindex_conf->body_col ?: "#ffffff", "\" text=\"",
++ autoindex_conf->text_col ?: "#000000", "\"", NULL);
++ if (autoindex_conf->opts & STUDLY_INDEXING) {
++ ap_rvputs(r, " leftmargin=\"0\" topmargin=\"0\" \n "
++ "marginwidth=\"0\" marginheight=\"0\"", NULL);
++ }
++ ap_rputs(">\n\n", r);
+ }
+
+ static void push_item(array_header *arr, char *type, char *to, char *path,
+@@ -340,6 +361,27 @@ static const char *add_readme(cmd_parms
+ return NULL;
+ }
+
++static const char *add_sidebar(cmd_parms *cmd, void *d, char *name)
++{
++ push_item(((autoindex_config_rec *) d)->side_list, 0, NULL, cmd->path,
++ name);
++ return NULL;
++}
++
++static const char *add_body(cmd_parms *cmd, void *d, char *name)
++{
++ push_item(((autoindex_config_rec *) d)->main_list, 0, NULL, cmd->path,
++ name);
++ return NULL;
++}
++
++static const char *add_footer(cmd_parms *cmd, void *d, char *name)
++{
++ push_item(((autoindex_config_rec *) d)->ftr_list, 0, NULL, cmd->path,
++ name);
++ return NULL;
++}
++
+ /* A legacy directive, FancyIndexing is superseded by the IndexOptions
+ * keyword. But for compatibility..
+ */
+@@ -385,6 +427,12 @@ static const char *add_opts(cmd_parms *c
+ if (!strcasecmp(w, "FancyIndexing")) {
+ option = FANCY_INDEXING;
+ }
++ else if (!strcasecmp(w, "StudlyIndexing")) {
++ /* automatic FancyIndexing on, NameWidth=*, etc. */
++ option = STUDLY_INDEXING + FANCY_INDEXING
++ + ICONS_ARE_LINKS + SUPPRESS_DESC;
++ d_cfg->name_adjust = K_ADJUST;
++ }
+ else if (!strcasecmp(w, "IconsAreLinks")) {
+ option = ICONS_ARE_LINKS;
+ }
+@@ -406,16 +454,16 @@ static const char *add_opts(cmd_parms *c
+ else if (!strcasecmp(w, "SuppressColumnSorting")) {
+ option = SUPPRESS_COLSORT;
+ }
+- else if (!strcasecmp(w, "FoldersFirst")) {
+- option = FOLDERS_FIRST;
++ else if (!strcasecmp(w, "FoldersFirst")) {
++ option = FOLDERS_FIRST;
+ }
+ else if (!strcasecmp(w, "TrackModified")) {
+- option = TRACK_MODIFIED;
++ option = TRACK_MODIFIED;
+ }
+ else if (!strcasecmp(w, "IgnoreCase")) {
+- option = SORT_NOCASE;
++ option = SORT_NOCASE;
+ }
+- else if (!strcasecmp(w, "None")) {
++ else if (!strcasecmp(w, "None")) {
+ if (action != '\0') {
+ return "Cannot combine '+' or '-' with 'None' keyword";
+ }
+@@ -501,7 +549,49 @@ static const char *add_opts(cmd_parms *c
+ d_cfg->desc_adjust = K_NOADJUST;
+ }
+ }
+- else {
++ else if (!strncasecmp(w, "BodyColor=", 10)) {
++ if (action == '-') {
++ return "Cannot combine '-' with BodyColor=#xxxxxx";
++ }
++ d_cfg->body_col = ap_pstrdup(d_cfg->desc_list->pool, &w[10]);
++ }
++ else if (!strncasecmp(w, "TextColor=", 10)) {
++ if (action == '-') {
++ return "Cannot combine '-' with TextColor=#xxxxxx";
++ }
++ d_cfg->text_col = ap_pstrdup(d_cfg->desc_list->pool, &w[10]);
++ }
++ else if (!strncasecmp(w, "HeaderColor=", 12)) {
++ if (action == '-') {
++ return "Cannot combine '-' with HeaderColor=#xxxxxx";
++ }
++ d_cfg->hdr_col = ap_pstrdup(d_cfg->desc_list->pool, &w[12]);
++ }
++ else if (!strncasecmp(w, "ReadmeColor=", 12)) {
++ if (action == '-') {
++ return "Cannot combine '-' with ReadmeColor=#xxxxxx";
++ }
++ d_cfg->rdme_col = ap_pstrdup(d_cfg->desc_list->pool, &w[12]);
++ }
++ else if (!strncasecmp(w, "SidebarColor=", 13)) {
++ if (action == '-') {
++ return "Cannot combine '-' with SidebarColor=#xxxxxx";
++ }
++ d_cfg->side_col = ap_pstrdup(d_cfg->desc_list->pool, &w[13]);
++ }
++ else if (!strncasecmp(w, "MainColor=", 10)) {
++ if (action == '-') {
++ return "Cannot combine '-' with MainColor=#xxxxxx";
++ }
++ d_cfg->main_col = ap_pstrdup(d_cfg->desc_list->pool, &w[10]);
++ }
++ else if (!strncasecmp(w, "FooterColor=", 12)) {
++ if (action == '-') {
++ return "Cannot combine '-' with FooterColor=#xxxxxx";
++ }
++ d_cfg->ftr_col = ap_pstrdup(d_cfg->desc_list->pool, &w[12]);
++ }
++ else {
+ return "Invalid directory indexing option";
+ }
+ if (action == '\0') {
+@@ -595,6 +685,9 @@ static const command_rec autoindex_cmds[
+ "Descriptive text followed by one or more filenames"},
+ {"HeaderName", add_header, NULL, DIR_CMD_PERMS, TAKE1, "a filename"},
+ {"ReadmeName", add_readme, NULL, DIR_CMD_PERMS, TAKE1, "a filename"},
++ {"SidebarName", add_sidebar, NULL, DIR_CMD_PERMS, TAKE1, "a filename"},
++ {"BodyName", add_body, NULL, DIR_CMD_PERMS, TAKE1, "a filename"},
++ {"FooterName", add_footer, NULL, DIR_CMD_PERMS, TAKE1, "a filename"},
+ {"FancyIndexing", fancy_indexing, NULL, DIR_CMD_PERMS, FLAG,
+ "Limited to 'on' or 'off' (superseded by IndexOptions FancyIndexing)"},
+ {"DefaultIcon", ap_set_string_slot,
+@@ -620,6 +713,9 @@ static void *create_autoindex_config(poo
+ 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->side_list = ap_make_array(p, 4, sizeof(struct item));
++ new->main_list = ap_make_array(p, 4, sizeof(struct item));
++ new->ftr_list = ap_make_array(p, 4, sizeof(struct item));
+ new->opts = 0;
+ new->incremented_opts = 0;
+ new->decremented_opts = 0;
+@@ -646,6 +742,9 @@ static void *merge_autoindex_configs(poo
+ 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->side_list = ap_append_arrays(p, add->side_list, base->side_list);
++ new->main_list = ap_append_arrays(p, add->main_list, base->main_list);
++ new->ftr_list = ap_append_arrays(p, add->ftr_list, base->ftr_list);
+ if (add->opts & NO_OPTIONS) {
+ /*
+ * If the current directory says 'no options' then we also
+@@ -715,6 +814,22 @@ static void *merge_autoindex_configs(poo
+
+ new->default_order = (add->default_order != NULL)
+ ? add->default_order : base->default_order;
++
++ new->body_col = (add->body_col != NULL)
++ ? add->body_col : base->body_col;
++ new->text_col = (add->text_col != NULL)
++ ? add->text_col : base->text_col;
++ new->hdr_col = (add->hdr_col != NULL)
++ ? add->hdr_col : base->hdr_col;
++ new->rdme_col = (add->rdme_col != NULL)
++ ? add->rdme_col : base->rdme_col;
++ new->side_col = (add->side_col != NULL)
++ ? add->side_col : base->side_col;
++ new->main_col = (add->main_col != NULL)
++ ? add->main_col : base->main_col;
++ new->ftr_col = (add->ftr_col != NULL)
++ ? add->ftr_col : base->ftr_col;
++
+ return new;
+ }
+
+@@ -789,7 +904,10 @@ static char *find_item(request_rec *r, a
+ #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)
+ #define find_header(d,p) find_item(p,d->hdr_list,0)
++#define find_sidebar(d,p) find_item(p,d->side_list,0)
+ #define find_readme(d,p) find_item(p,d->rdme_list,0)
++#define find_main(d,p) find_item(p,d->main_list,0)
++#define find_footer(d,p) find_item(p,d->ftr_list,0)
+
+ static char *find_default_icon(autoindex_config_rec *d, char *bogus_name)
+ {
+@@ -940,12 +1058,13 @@ static int ignore_entry(autoindex_config
+ /*
+ * emit a plain text file
+ */
+-static void do_emit_plain(request_rec *r, FILE *f)
++static void do_emit_plain(request_rec *r, FILE *f, int autoindex_opts)
+ {
+ char buf[IOBUFSIZE + 1];
+ int i, n, c, ch;
+
+- ap_rputs("<PRE>\n", r);
++ if (! (autoindex_opts & STUDLY_INDEXING))
++ ap_rputs("<PRE>\n", r);
+ while (!feof(f)) {
+ do {
+ n = fread(buf, sizeof(char), IOBUFSIZE, f);
+@@ -977,7 +1096,50 @@ static void do_emit_plain(request_rec *r
+ c = i + 1;
+ }
+ }
+- ap_rputs("</PRE>\n", r);
++ if (! (autoindex_opts & STUDLY_INDEXING))
++ ap_rputs("</PRE>\n", r);
++}
++
++/*
++ * If there's a file, send a subrequest to look for it. If it's
++ * found and a text file, handle it and return 0, otherwise return -1.
++ */
++static int do_emit_fancy(request_rec *r, const char *fname, int autoindex_opts)
++{
++ FILE *f;
++ request_rec *rr = NULL;
++
++ if ((fname != NULL)
++ && (rr = ap_sub_req_lookup_uri(fname, r))
++ && (rr->status == HTTP_OK)
++ && (rr->filename != NULL)
++ && S_ISREG(rr->finfo.st_mode)) {
++ /*
++ * Check for the two specific cases we allow: text/html and
++ * text/anything-else. The former is allowed to be processed for
++ * SSIs.
++ */
++ if (rr->content_type != NULL) {
++ if (!strcasecmp(ap_field_noparam(r->pool, rr->content_type),
++ "text/html")) {
++ if (ap_run_sub_req(rr) == OK) {
++ /* worked... */
++ return 0;
++ }
++ }
++ else if (!strncasecmp("text/", rr->content_type, 5)) {
++ if ((f = ap_pfopen(r->pool, rr->filename, "r")) != 0) {
++ do_emit_plain(r, f, autoindex_opts);
++ ap_pfclose(r->pool, f);
++ return 0;
++ }
++ }
++ }
++ }
++ if (rr != NULL) {
++ ap_destroy_sub_req(rr);
++ }
++ return -1;
+ }
+
+ /* See mod_include */
+@@ -993,8 +1155,9 @@ static void do_emit_plain(request_rec *r
+ * instead of a text document, meaning nothing will be displayed, but
+ * oh well.
+ */
+-static void emit_head(request_rec *r, char *header_fname, int suppress_amble,
+- char *title)
++static void emit_head(request_rec *r, char *header_fname,
++ autoindex_config_rec *autoindex_conf,
++ int autoindex_opts, char *title)
+ {
+ FILE *f;
+ request_rec *rr = NULL;
+@@ -1035,8 +1198,8 @@ static void emit_head(request_rec *r, ch
+ emit_amble = 0;
+ emit_H1 = 0;
+
+- if (! suppress_amble) {
+- emit_preamble(r, title);
++ if (! (autoindex_opts & SUPPRESS_PREAMBLE)) {
++ emit_preamble(r, title, autoindex_conf);
+ }
+
+ /* See mod_include */
+@@ -1050,7 +1213,7 @@ static void emit_head(request_rec *r, ch
+ */
+ if (ap_run_sub_req(rr) != OK) {
+ /* It didn't work */
+- emit_amble = suppress_amble;
++ emit_amble = autoindex_opts & SUPPRESS_PREAMBLE;
+ emit_H1 = 1;
+ }
+ ap_table_unset(r->notes, PARENT_STRING); /* cleanup */
+@@ -1063,9 +1226,9 @@ static void emit_head(request_rec *r, ch
+ * where it belongs.
+ */
+ if ((f = ap_pfopen(r->pool, rr->filename, "r")) != 0) {
+- emit_preamble(r, title);
++ emit_preamble(r, title, autoindex_conf);
+ emit_amble = 0;
+- do_emit_plain(r, f);
++ do_emit_plain(r, f, autoindex_opts);
+ ap_pfclose(r->pool, f);
+ emit_H1 = 0;
+ }
+@@ -1085,10 +1248,28 @@ static void emit_head(request_rec *r, ch
+ }
+
+ if (emit_amble) {
+- emit_preamble(r, title);
++ emit_preamble(r, title, autoindex_conf);
+ }
++
++ if (autoindex_opts & STUDLY_INDEXING) {
++ ap_rvputs(r, "<TABLE cellpadding=\"5\" cellspacing=\"5\" "
++ "width=\"100%\">\n<tbody>\n", NULL);
++ }
++
+ if (emit_H1) {
+- ap_rvputs(r, "<H1>Index of ", title, "</H1>\n", NULL);
++ if (autoindex_opts & STUDLY_INDEXING)
++ ap_rvputs(r, "\n<TR valign=\"top\">\n"
++ "<TD class=\"header\" bgcolor=\"",
++ autoindex_conf->hdr_col ?: "#ffffff",
++ "\" colspan=\"2\">\n", NULL);
++ ap_rputs("<TABLE><TR><TD bgcolor=\"#ffffff\" "
++ "class=\"title\">\n", r);
++ ap_rvputs(r, "<FONT size=\"+3\" "
++ "face=\"Helvetica,Arial,sans-serif\">\n<B>Index of ",
++ title, "</B></FONT>\n", NULL);
++ ap_rputs("\n</TD></TR></TABLE>", r);
++ if (autoindex_opts & STUDLY_INDEXING)
++ ap_rvputs(r, "</TD>\n</TR>\n", NULL);
+ }
+ if (rr != NULL) {
+ ap_destroy_sub_req(rr);
+@@ -1105,7 +1286,8 @@ static void emit_head(request_rec *r, ch
+ * instead of a text document, meaning nothing will be displayed, but
+ * oh well.
+ */
+-static void emit_tail(request_rec *r, char *readme_fname, int suppress_amble)
++static void emit_tail(request_rec *r, char *readme_fname,
++ autoindex_config_rec *autoindex_conf, int autoindex_opts)
+ {
+ FILE *f;
+ request_rec *rr = NULL;
+@@ -1150,7 +1332,7 @@ static void emit_tail(request_rec *r, ch
+ if (ap_run_sub_req(rr) == OK) {
+ /* worked... */
+ suppress_sig = 1;
+- suppress_post = suppress_amble;
++ suppress_post = autoindex_opts & SUPPRESS_PREAMBLE;
+ }
+ ap_table_unset(r->notes, PARENT_STRING); /* cleanup */
+ }
+@@ -1159,7 +1341,7 @@ static void emit_tail(request_rec *r, ch
+ * If we can open the file, suppress the signature.
+ */
+ if ((f = ap_pfopen(r->pool, rr->filename, "r")) != 0) {
+- do_emit_plain(r, f);
++ do_emit_plain(r, f, autoindex_opts & STUDLY_INDEXING);
+ ap_pfclose(r->pool, f);
+ suppress_sig = 1;
+ }
+@@ -1178,7 +1360,21 @@ static void emit_tail(request_rec *r, ch
+ ap_table_setn(hdrs, "Accept-Encoding", r_accept_enc);
+ }
+
++ if (autoindex_opts & STUDLY_INDEXING && !suppress_post) {
++ ap_rvputs(r, "\n<TR valign=\"top\">\n<TD class=\"footer\" "
++ "colspan=\"2\" bgcolor=\"",
++ autoindex_conf->ftr_col ?: "#ffffff", "\">\n", NULL);
++ if (do_emit_fancy (r, find_footer(autoindex_conf, r),
++ autoindex_opts) == 0) {
++ suppress_sig = 1;
++ }
++ ap_rputs("</TD>\n</TR>\n\n</TBODY></TABLE>\n<P>\n", r);
++ }
+ if (!suppress_sig) {
++ if (autoindex_opts & STUDLY_INDEXING)
++ ap_rputs ("<BR><IMG src=\"/icons/linux-pengo-small.gif\"\n"
++ "width=\"110\" height=\"44\" align=\"right\""
++ "alt=\"\">", r);
+ ap_rputs(ap_psignature("", r), r);
+ }
+ if (!suppress_post) {
+@@ -1411,6 +1607,11 @@ static void output_directories(struct en
+ char *name_scratch;
+ char *pad_scratch;
+
++ if (autoindex_opts & STUDLY_INDEXING) {
++ if (do_emit_fancy (r, find_main(d, r), autoindex_opts) == 0)
++ return;
++ }
++
+ if (name[0] == '\0') {
+ name = "/";
+ }
+@@ -1443,7 +1644,8 @@ static void output_directories(struct en
+ if (autoindex_opts & FANCY_INDEXING) {
+ ap_rputs("<PRE>", r);
+ if ((tp = find_default_icon(d, "^^BLANKICON^^"))) {
+- ap_rvputs(r, "<IMG SRC=\"", ap_escape_html(scratch, tp),
++ ap_rvputs(r, "<IMG border=\"0\" src=\"",
++ ap_escape_html(scratch, tp),
+ "\" ALT=\" \"", NULL);
+ if (d->icon_width && d->icon_height) {
+ ap_rprintf
+@@ -1475,7 +1677,7 @@ static void output_directories(struct en
+ emit_link(r, "Description", K_DESC, keyid, direction,
+ static_columns);
+ }
+- ap_rputs("\n<HR>\n", r);
++ ap_rputs("\n<HR noshade align=\"left\" width=\"80%\">\n", r);
+ }
+ else {
+ ap_rputs("<UL>", r);
+@@ -1507,7 +1709,7 @@ static void output_directories(struct en
+ ap_rvputs(r, "<A HREF=\"", anchor, "\">", NULL);
+ }
+ if ((ar[x]->icon) || d->default_icon) {
+- ap_rvputs(r, "<IMG SRC=\"",
++ ap_rvputs(r, "<IMG border=\"0\" src=\"",
+ ap_escape_html(scratch,
+ ar[x]->icon ? ar[x]->icon
+ : d->default_icon),
+@@ -1717,7 +1919,7 @@ static int index_directory(request_rec *
+ *title_endp-- = '\0';
+ }
+
+- emit_head(r, find_header(autoindex_conf, r),
++ emit_head(r, find_header(autoindex_conf, r), autoindex_conf,
+ autoindex_opts & SUPPRESS_PREAMBLE, title_name);
+
+ /*
+@@ -1779,15 +1981,27 @@ static int index_directory(request_rec *
+ qsort((void *) ar, num_ent, sizeof(struct ent *),
+ (int (*)(const void *, const void *)) dsortf);
+ }
++ if (autoindex_opts & STUDLY_INDEXING) {
++ ap_rputs("\n<TR valign=\"top\">\n", r);
++ ap_rvputs(r, "\n<TD class=\"sidebar\" bgcolor=\"",
++ autoindex_conf->side_col ?: "#ffffff",
++ "\" width=\"5%\">\n", NULL);
++ do_emit_fancy (r, find_sidebar(autoindex_conf, r), autoindex_opts);
++ ap_rputs("</TD>\n", r);
++ ap_rvputs(r, "\n<TD class=\"body\" bgcolor=\"",
++ autoindex_conf->main_col ?: "#ffffff", "\">\n", NULL);
++ }
<<Diff was trimmed, longer than 597 lines>>
More information about the pld-cvs-commit
mailing list