httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Randy Terbush <ra...@zyzzyva.com>
Subject Re: SuppressHTMLPreamble fix/feature
Date Sun, 01 Dec 1996 05:31:35 GMT
+1

Isn't the copyright implied on this stuff under recent interpretations?


> Two people have asked for this change this month, and I've wanted it for
> a long time, so I went ahead and coded it for 1.2b0 along the lines
> suggested by Andrey A. Chernov (ache@nagual.ru), but using better code IMHO.
> In his words:
> 
> >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 [with the assumption being that] you have right HTML
> >preamble in your HEADER.html. It solves all problems mentioned above.
> 
> Here is the patch.  I have always considered this a bug, which is why
> I want to commit it even with the feature freeze.  I will also supply the
> documentation when (if) I do the commit.  +1 anybody?
> 
> BTW, I also noticed that we can't add/remove IndexOptions with the +/-
> prefix like we now can with Options.  This seems inconsistent to me.
> Also, we should update all the copyright lines for 1996 before 1.2b1.
> 
> .....Roy
> 
> Index: mod_dir.c
> ===================================================================
> RCS file: /export/home/cvs/apache/src/mod_dir.c,v
> retrieving revision 1.16
> diff -c -r1.16 mod_dir.c
> *** mod_dir.c	1996/11/28 17:26:29	1.16
> --- mod_dir.c	1996/11/30 12:17:24
> ***************
> *** 1,5 ****
>   /* ====================================================================
> !  * Copyright (c) 1995 The Apache Group.  All rights reserved.
>    *
>    * Redistribution and use in source and binary forms, with or without
>    * modification, are permitted provided that the following conditions
> --- 1,5 ----
>   /* ====================================================================
> !  * Copyright (c) 1995, 1996 The Apache Group.  All rights reserved.
>    *
>    * Redistribution and use in source and binary forms, with or without
>    * modification, are permitted provided that the following conditions
> ***************
> *** 56,62 ****
>    * Rob McCool
>    * 3/23/93
>    * 
> !  * Adapted to Apache by rst.
>    */
>   
>   #include "httpd.h"
> --- 56,63 ----
>    * Rob McCool
>    * 3/23/93
>    * 
> !  * Adapted to Apache by Robert S. Thau
> !  * Many changes by the Apache Group
>    */
>   
>   #include "httpd.h"
> ***************
> *** 81,86 ****
> --- 82,88 ----
>   #define SUPPRESS_LAST_MOD 8
>   #define SUPPRESS_SIZE 16
>   #define SUPPRESS_DESC 32
> + #define SUPPRESS_HTML_PREAMBLE 64
>   
>   struct item {
>       char *type;
> ***************
> *** 203,208 ****
> --- 205,212 ----
>               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
> ***************
> *** 403,409 ****
>    */
>   
>   
> ! int insert_readme(char *name, char *readme_fname, int rule, request_rec *r) {
>       char *fn;
>       FILE *f;
>       struct stat finfo;
> --- 407,433 ----
>    */
>   
>   
> ! static void html_preamble(request_rec *r, const int do_heading)
> ! {
> !     char *title_name = escape_html(r->pool, r->uri);
> !     char *title_endp;
> ! 
> !     title_endp = title_name + strlen(title_name) - 1;
> ! 
> !     while (title_endp > title_name && *title_endp == '/')
> ! 	*title_endp-- = '\0';
> !     
> !     rvputs(r, "<HTML><HEAD>\n", "<TITLE>Index of ", title_name, "</TITLE>\n",
> !               "</HEAD><BODY>\n", NULL);
> ! 
> !     if (do_heading)
> !         rvputs(r, "<H1>Index of ", title_name, "</H1>\n", NULL);
> ! }
> ! 
> ! 
> ! int insert_readme(char *name, char *readme_fname, int rule,
> !                   int suppress_preamble, request_rec *r)
> ! {
>       char *fn;
>       FILE *f;
>       struct stat finfo;
> ***************
> *** 417,434 ****
>           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
> !     {
>   	char buf[IOBUFSIZE+1];
>   	int i, n, c, ch;
>   	while (!feof(f))
>   	{
>   	    do n = fread(buf, sizeof(char), IOBUFSIZE, f);
> --- 441,468 ----
>           if(stat(fn,&finfo) == -1)
>               return 0;
>           plaintext=1;
>       }
>       if(!(f = pfopen(r->pool,fn,"r")))
>           return 0;
> !     if (!plaintext) {
> !         if (rule)
> !             rputs("<HR>\n", r);      /* README.html file, send separator */
> !         else if (!suppress_preamble)
> !             html_preamble(r, 0);     /* HEADER.html file, send preamble  */
> ! 
>   	send_fd(f, r);
> !     }
> !     else {
>   	char buf[IOBUFSIZE+1];
>   	int i, n, c, ch;
> + 
> +         if (rule)
> +             rputs("<HR>\n", r);      /* README.txt file, send separator */
> +         else
> +             html_preamble(r, 0);     /* HEADER.txt file, send preamble  */
> + 
> +         rputs("<PRE>\n", r);
> + 
>   	while (!feof(f))
>   	{
>   	    do n = fread(buf, sizeof(char), IOBUFSIZE, f);
> ***************
> *** 449,458 ****
>   		c = i + 1;
>   	    }
>   	}
>       }
>       pfclose(r->pool, f);
> -     if(plaintext)
> -         rputs("</PRE>\n", r);
>       return 1;
>   }
>   
> --- 483,491 ----
>   		c = i + 1;
>   	    }
>   	}
> +         rputs("</PRE>\n", r);
>       }
>       pfclose(r->pool, f);
>       return 1;
>   }
>   
> ***************
> *** 572,578 ****
>       if(name[0] == '\0') name = "/";
>   
>       if(dir_opts & FANCY_INDEXING) {
> !         rputs("<PRE>", r);
>           if((tp = find_default_icon(d,"^^BLANKICON^^")))
>               rvputs(r, "<IMG SRC=\"", escape_html(scratch, tp),
>   		   "\" ALT=\"     \"> ", NULL);
> --- 605,611 ----
>       if(name[0] == '\0') name = "/";
>   
>       if(dir_opts & FANCY_INDEXING) {
> !         rputs("<PRE>\n", r);
>           if((tp = find_default_icon(d,"^^BLANKICON^^")))
>               rvputs(r, "<IMG SRC=\"", escape_html(scratch, tp),
>   		   "\" ALT=\"     \"> ", NULL);
> ***************
> *** 665,674 ****
>           rputc('\n', r);
>       }
>       if(dir_opts & FANCY_INDEXING) {
> !         rputs("</PRE>", r);
>       }
>       else {
> !         rputs("</UL>", r);
>       }
>   }
>   
> --- 698,707 ----
>           rputc('\n', r);
>       }
>       if(dir_opts & FANCY_INDEXING) {
> !         rputs("</PRE>\n", r);
>       }
>       else {
> !         rputs("</UL>\n", r);
>       }
>   }
>   
> ***************
> *** 681,690 ****
>       
>   int index_directory(request_rec *r, dir_config_rec *dir_conf)
>   {
> -     char *title_name = escape_html(r->pool, r->uri);
> -     char *title_endp;
>       char *name = r->filename;
> -     
>       DIR *d;
>       struct DIR_TYPE *dstruct;
>       int num_ent=0,x;
> --- 714,720 ----
> ***************
> *** 705,722 ****
>   	return 0;
>       }
>   
> !     /* Spew HTML preamble */
> !     
> !     title_endp = title_name + strlen(title_name) - 1;
> ! 
> !     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 
> --- 735,745 ----
>   	return 0;
>       }
>   
> !     /* Spew HTML preamble and/or HEADER file */
>       
> !     if (!((tmp = find_header(dir_conf, r)) &&
> !           insert_readme(name,tmp,0,(dir_opts & SUPPRESS_HTML_PREAMBLE),r)))
> !         html_preamble(r, 1);
>   
>       /* 
>        * Since we don't know how many dir. entries there are, put them into a 
> ***************
> *** 751,762 ****
>   
>       if (dir_opts & FANCY_INDEXING)
>           if((tmp = find_readme(dir_conf, r)))
> !             insert_readme(name,tmp,1,r);
>       else {
>           rputs("</UL>", r);
>       }
>   
> !     rputs("</BODY>", r);
>       return 0;
>   }
>   
> --- 774,785 ----
>   
>       if (dir_opts & FANCY_INDEXING)
>           if((tmp = find_readme(dir_conf, r)))
> !             insert_readme(name,tmp,1,1,r);
>       else {
>           rputs("</UL>", r);
>       }
>   
> !     rputs("</BODY></HTML>\n", r);
>       return 0;
>   }
>   




Mime
View raw message