You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Rob Hartill <ro...@imdb.com> on 1996/11/04 20:22:30 UTC
Re: apache 1.1.1 directory handling fix: SuppressHTMLPreamble addition
hi,
your patch is being forwarded to the developers list for consideration.
regards,
rob
>
>Situation:
>It is impossible to suppress initial HTML preamble for directories, i.e.
><HEAD><TITLE>Index of dir</TITLE></HEAD><BODY>
>It means that it is impossible to change <TITLE> or add any
><META HTTP-EQUIV...> tags to <HEAD> section or change <BODY>
>attributes without HTML syntax violation (.asis, cern_meta, etc.
>not helps here too).
>
>Fix:
>I add "SuppressHTMLPreamble" option to "IndexOptions". When this option
>is set _and_ HEADER.html (or what you set as it) is present and readable,
>standard <HEAD><TITLE>Index of dir</TITLE></HEAD><BODY> preamble
>will be suppressed assuming you have right HTML preamble in your
>HEADER.html. It solves all problems mentioned above.
>
>*** src/mod_dir.c.orig Sat Jun 22 00:12:07 1996
>--- src/mod_dir.c Sun Nov 3 08:33:16 1996
>***************
>*** 83,88 ****
>--- 83,89 ----
> #define SUPPRESS_LAST_MOD 8
> #define SUPPRESS_SIZE 16
> #define SUPPRESS_DESC 32
>+ #define SUPPRESS_HTML_PREAMBLE 64
>
> struct item {
> char *type;
>***************
>*** 205,210 ****
>--- 206,213 ----
> opts |= SUPPRESS_SIZE;
> else if(!strcasecmp(w,"SuppressDescription"))
> opts |= SUPPRESS_DESC;
>+ else if(!strcasecmp(w,"SuppressHTMLPreamble"))
>+ opts |= SUPPRESS_HTML_PREAMBLE;
> else if(!strcasecmp(w,"None"))
> opts = 0;
> else
>***************
>*** 404,411 ****
> * Actually generating output
> */
>
>
>! int insert_readme(char *name, char *readme_fname, int rule, request_rec *r) {
> char *fn;
> FILE *f;
> struct stat finfo;
>--- 407,421 ----
> * Actually generating output
> */
>
>+ void put_html_preamble(char *title_name, request_rec *r)
>+ {
>+ rvputs(r, "<HEAD><TITLE>Index of ", title_name,
>+ "</TITLE></HEAD><BODY>\n", NULL);
>+ }
>
>! int insert_readme(char *name, char *readme_fname, int rule,
>! char *title_name, request_rec *r)
>! {
> char *fn;
> FILE *f;
> struct stat finfo;
>***************
>*** 419,430 ****
> if(stat(fn,&finfo) == -1)
> return 0;
> plaintext=1;
>- if(rule) rputs("<HR>\n", r);
>- rputs("<PRE>\n", r);
> }
>- else if (rule) rputs("<HR>\n", r);
> if(!(f = pfopen(r->pool,fn,"r")))
> return 0;
> if (!plaintext)
> send_fd(f, r);
> else
>--- 429,442 ----
> if(stat(fn,&finfo) == -1)
> return 0;
> plaintext=1;
> }
> if(!(f = pfopen(r->pool,fn,"r")))
> return 0;
>+ if(!rule && plaintext && title_name != NULL)
>+ put_html_preamble(title_name, r);
>+ if(rule) rputs("<HR>\n", r);
>+ if(plaintext) rputs("<PRE>\n", r);
>+
> if (!plaintext)
> send_fd(f, r);
> else
>***************
>*** 714,724 ****
> while (title_endp > title_name && *title_endp == '/')
> *title_endp-- = '\0';
>
>! rvputs(r, "<HEAD><TITLE>Index of ", title_name, "</TITLE></HEAD><BODY>\n",
>! NULL);
>
>! if((!(tmp = find_header(dir_conf,r))) || (!(insert_readme(name,tmp,0,r))))
> rvputs(r, "<H1>Index of ", title_name, "</H1>\n", NULL);
>
> /*
> * Since we don't know how many dir. entries there are, put them into a
>--- 726,743 ----
> while (title_endp > title_name && *title_endp == '/')
> *title_endp-- = '\0';
>
>! if(!(dir_opts & SUPPRESS_HTML_PREAMBLE))
>! put_html_preamble(title_name, r);
>
>! if((!(tmp = find_header(dir_conf,r))) ||
>! (!(insert_readme(name, tmp, 0,
>! ((dir_opts & SUPPRESS_HTML_PREAMBLE) ?
>! title_name : NULL), r))))
>! {
>! if(dir_opts & SUPPRESS_HTML_PREAMBLE)
>! put_html_preamble(title_name, r);
> rvputs(r, "<H1>Index of ", title_name, "</H1>\n", NULL);
>+ }
>
> /*
> * Since we don't know how many dir. entries there are, put them into a
>***************
>*** 751,757 ****
>
> if (dir_opts & FANCY_INDEXING)
> if((tmp = find_readme(dir_conf, r)))
>! insert_readme(name,tmp,1,r);
> else {
> rputs("</UL>", r);
> }
>--- 770,776 ----
>
> if (dir_opts & FANCY_INDEXING)
> if((tmp = find_readme(dir_conf, r)))
>! insert_readme(name,tmp,1,NULL,r);
> else {
> rputs("</UL>", r);
> }
>
>
>--
>Andrey A. Chernov
><ac...@nagual.ru>
>http://www.nagual.ru/~ache/
>
--
Rob Hartill. Internet Movie Database Ltd. http://www.imdb.com/