You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by nd...@apache.org on 2004/01/12 16:54:36 UTC

cvs commit: httpd-2.0/modules/generators mod_autoindex.c

nd          2004/01/12 07:54:36

  Modified:    .        Tag: APACHE_2_0_BRANCH CHANGES STATUS
               include  Tag: APACHE_2_0_BRANCH ap_mmn.h httpd.h
               modules/generators Tag: APACHE_2_0_BRANCH mod_autoindex.c
  Log:
  allow switching between xhtml and html
  
  PR: 23747
  Reviewed by: Justin Erenkrantz, Jeff Trawick
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.988.2.217 +6 -0      httpd-2.0/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/CHANGES,v
  retrieving revision 1.988.2.216
  retrieving revision 1.988.2.217
  diff -u -u -r1.988.2.216 -r1.988.2.217
  --- CHANGES	12 Jan 2004 15:02:23 -0000	1.988.2.216
  +++ CHANGES	12 Jan 2004 15:54:35 -0000	1.988.2.217
  @@ -1,5 +1,11 @@
   Changes with Apache 2.0.49
   
  +  *) mod_autoindex: Add 'XHTML' option in order to allow switching between
  +     HTML 3.2 and XHTML 1.0 output. PR 23747.  [Andr� Malo]
  +
  +  *) Add XHTML Document Type Definitions to httpd.h (minor MMN bump).
  +     [Andr� Malo]
  +
     *) mod_ssl: Advertise SSL library version as determined at run-time rather
        than at compile-time.  PR 23956.  [Eric Seidel <seidel apple.com>]
   
  
  
  
  1.751.2.629 +1 -11     httpd-2.0/STATUS
  
  Index: STATUS
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/STATUS,v
  retrieving revision 1.751.2.628
  retrieving revision 1.751.2.629
  diff -u -u -r1.751.2.628 -r1.751.2.629
  --- STATUS	12 Jan 2004 14:59:16 -0000	1.751.2.628
  +++ STATUS	12 Jan 2004 15:54:35 -0000	1.751.2.629
  @@ -282,16 +282,6 @@
           modules/metadata/mod_setenvif.c: r1.44
         +1: nd, jerenkrantz
   
  -    * mod_autoindex: Allow switching between XHTML and HTML output.
  -      PR 23747. (minor MMN bump).
  -        modules/generators/mod_autoindex.c: r1.124
  -        include/httpd.h: r1.201
  -        include/ap_mmn.h: r1.60
  -      jerenkrantz suggests: Why don't we just always output XHTML instead?
  -      nd replies: backwards compat; it would break those sites who have html
  -      READMEs or HEADERs (or don't want to use xhtml)
  -      +1: nd, jerenkrantz, trawick
  -
       * LDAP cache fixes from Matthieu Estrade; see PR 18756
           include/util_ldap.h r1.12
           modules/experimental/util_ldap.c r1.15, r1.16
  
  
  
  No                   revision
  No                   revision
  1.52.2.8  +2 -1      httpd-2.0/include/ap_mmn.h
  
  Index: ap_mmn.h
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/include/ap_mmn.h,v
  retrieving revision 1.52.2.7
  retrieving revision 1.52.2.8
  diff -u -u -r1.52.2.7 -r1.52.2.8
  --- ap_mmn.h	7 Jan 2004 02:49:46 -0000	1.52.2.7
  +++ ap_mmn.h	12 Jan 2004 15:54:36 -0000	1.52.2.8
  @@ -116,6 +116,7 @@
    * 20020903.4 (2.0.47-dev) add ap_is_recursion_limit_exceeded()
    * 20020903.5 (2.0.49-dev) add ap_escape_errorlog_item()
    * 20020903.6 (2.0.49-dev) add insert_error_filter hook
  + * 20020903.7 (2.0.49-dev) added XHTML Doctypes
    */
   
   #define MODULE_MAGIC_COOKIE 0x41503230UL /* "AP20" */
  @@ -123,7 +124,7 @@
   #ifndef MODULE_MAGIC_NUMBER_MAJOR
   #define MODULE_MAGIC_NUMBER_MAJOR 20020903
   #endif
  -#define MODULE_MAGIC_NUMBER_MINOR 6                     /* 0...n */
  +#define MODULE_MAGIC_NUMBER_MINOR 7                     /* 0...n */
   
   /**
    * Determine if the server's current MODULE_MAGIC_NUMBER is at least a
  
  
  
  1.191.2.10 +15 -0     httpd-2.0/include/httpd.h
  
  Index: httpd.h
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/include/httpd.h,v
  retrieving revision 1.191.2.9
  retrieving revision 1.191.2.10
  diff -u -u -r1.191.2.9 -r1.191.2.10
  --- httpd.h	1 Jan 2004 13:30:37 -0000	1.191.2.9
  +++ httpd.h	12 Jan 2004 15:54:36 -0000	1.191.2.10
  @@ -280,6 +280,21 @@
   #define DOCTYPE_HTML_4_0F "<!DOCTYPE HTML PUBLIC \"-//W3C//" \
                             "DTD HTML 4.0 Frameset//EN\"\n" \
                             "\"http://www.w3.org/TR/REC-html40/frameset.dtd\">\n"
  +/** XHTML 1.0 Strict Doctype */
  +#define DOCTYPE_XHTML_1_0S "<!DOCTYPE html PUBLIC \"-//W3C//" \
  +                           "DTD XHTML 1.0 Strict//EN\"\n" \
  +                           "\"http://www.w3.org/TR/xhtml1/DTD/" \
  +                           "xhtml1-strict.dtd\">\n"
  +/** XHTML 1.0 Transitional Doctype */
  +#define DOCTYPE_XHTML_1_0T "<!DOCTYPE html PUBLIC \"-//W3C//" \
  +                           "DTD XHTML 1.0 Transitional//EN\"\n" \
  +                           "\"http://www.w3.org/TR/xhtml1/DTD/" \
  +                           "xhtml1-transitional.dtd\">\n"
  +/** XHTML 1.0 Frameset Doctype */
  +#define DOCTYPE_XHTML_1_0F "<!DOCTYPE html PUBLIC \"-//W3C//" \
  +                           "DTD XHTML 1.0 Frameset//EN\"\n" \
  +                           "\"http://www.w3.org/TR/xhtml1/DTD/" \
  +                           "xhtml1-frameset.dtd\">"
   
   /** Internal representation for a HTTP protocol number, e.g., HTTP/1.1 */
   
  
  
  
  No                   revision
  No                   revision
  1.112.2.13 +44 -14    httpd-2.0/modules/generators/mod_autoindex.c
  
  Index: mod_autoindex.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/generators/mod_autoindex.c,v
  retrieving revision 1.112.2.12
  retrieving revision 1.112.2.13
  diff -u -u -r1.112.2.12 -r1.112.2.13
  --- mod_autoindex.c	8 Jan 2004 20:56:18 -0000	1.112.2.12
  +++ mod_autoindex.c	12 Jan 2004 15:54:36 -0000	1.112.2.13
  @@ -111,6 +111,7 @@
   #define TABLE_INDEXING      (1 << 14)
   #define IGNORE_CLIENT       (1 << 15)
   #define IGNORE_CASE         (1 << 16)
  +#define EMIT_XHTML          (1 << 17)
   
   #define K_NOADJUST 0
   #define K_ADJUST 1
  @@ -190,9 +191,9 @@
    * 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, int xhtml, const char *title)
   {
  -    ap_rvputs(r, DOCTYPE_HTML_3_2,
  +    ap_rvputs(r, xhtml ? DOCTYPE_XHTML_1_0T : DOCTYPE_HTML_3_2,
                 "<html>\n <head>\n  <title>Index of ", title,
                 "</title>\n </head>\n <body>\n", NULL);
   }
  @@ -411,6 +412,9 @@
           else if (!strcasecmp(w, "VersionSort")) {
               option = VERSION_SORT;
           }
  +        else if (!strcasecmp(w, "XHTML")) {
  +            option = EMIT_XHTML;
  +        }
           else if (!strcasecmp(w, "None")) {
               if (action != '\0') {
                   return "Cannot combine '+' or '-' with 'None' keyword";
  @@ -989,7 +993,7 @@
    * oh well.
    */
   static void emit_head(request_rec *r, char *header_fname, int suppress_amble,
  -                      char *title)
  +                      int emit_xhtml, char *title)
   {
       apr_table_t *hdrs = r->headers_in;
       apr_file_t *f = NULL;
  @@ -1032,7 +1036,7 @@
                   emit_H1 = 0;
   
                   if (! suppress_amble) {
  -                    emit_preamble(r, title);
  +                    emit_preamble(r, emit_xhtml, title);
                   }
                   /* This is a hack, but I can't find any better way to do this.
                    * The problem is that we have already created the sub-request,
  @@ -1070,7 +1074,7 @@
                    */
                   if (apr_file_open(&f, rr->filename, APR_READ,
                                     APR_OS_DEFAULT, r->pool) == APR_SUCCESS) {
  -                    emit_preamble(r, title);
  +                    emit_preamble(r, emit_xhtml, title);
                       emit_amble = 0;
                       do_emit_plain(r, f);
                       apr_file_close(f);
  @@ -1092,7 +1096,7 @@
       }
   
       if (emit_amble) {
  -        emit_preamble(r, title);
  +        emit_preamble(r, emit_xhtml, title);
       }
       if (emit_H1) {
           ap_rvputs(r, "<h1>Index of ", title, "</h1>\n", NULL);
  @@ -1543,7 +1547,11 @@
                   if (d->icon_height) {
                       ap_rprintf(r, " height=\"%d\"", d->icon_height);
                   }
  -                ap_rputs(" /></th>", r);
  +
  +                if (autoindex_opts & EMIT_XHTML) {
  +                    ap_rputs(" /", r);
  +                }
  +                ap_rputs("></th>", r);
               }
               else {
                   ap_rputs("&nbsp;</th>", r);
  @@ -1575,7 +1583,8 @@
           if (!(autoindex_opts & SUPPRESS_RULES)) {
               breakrow = apr_psprintf(r->pool,
                                       "<tr><th colspan=\"%d\">"
  -                                    "<hr /></th></tr>\n", cols);
  +                                    "<hr%s></th></tr>\n", cols,
  +                                    (autoindex_opts & EMIT_XHTML) ? " /" : "");
           }
           ap_rvputs(r, "</th></tr>", breakrow, NULL);
       }
  @@ -1591,7 +1600,11 @@
                   if (d->icon_height) {
                       ap_rprintf(r, " height=\"%d\"", d->icon_height);
                   }
  -                ap_rputs(" /> ", r);
  +
  +                if (autoindex_opts & EMIT_XHTML) {
  +                    ap_rputs(" /", r);
  +                }
  +                ap_rputs("> ", r);
               }
               else {
                   ap_rputs("      ", r);
  @@ -1619,7 +1632,11 @@
                         colargs, static_columns);
           }
           if (!(autoindex_opts & SUPPRESS_RULES)) {
  -            ap_rputs("<hr />", r);
  +            ap_rputs("<hr", r);
  +            if (autoindex_opts & EMIT_XHTML) {
  +                ap_rputs(" /", r);
  +            }
  +            ap_rputs(">", r);
           }
           else {
               ap_rputc('\n', r);
  @@ -1665,7 +1682,11 @@
                       if (d->icon_height) {
                           ap_rprintf(r, " height=\"%d\"", d->icon_height);
                       }
  -                    ap_rputs(" />", r);
  +
  +                    if (autoindex_opts & EMIT_XHTML) {
  +                        ap_rputs(" /", r);
  +                    }
  +                    ap_rputs(">", r);
                   }
                   else {
                       ap_rputs("&nbsp;", r);
  @@ -1751,7 +1772,11 @@
                       if (d->icon_height) {
                           ap_rprintf(r, " height=\"%d\"", d->icon_height);
                       }
  -                    ap_rputs(" />", r);
  +
  +                    if (autoindex_opts & EMIT_XHTML) {
  +                        ap_rputs(" /", r);
  +                    }
  +                    ap_rputs(">", r);
                   }
                   else {
                       ap_rputs("     ", r);
  @@ -1818,7 +1843,11 @@
       }
       else if (autoindex_opts & FANCY_INDEXING) {
           if (!(autoindex_opts & SUPPRESS_RULES)) {
  -            ap_rputs("<hr /></pre>\n", r);
  +            ap_rputs("<hr", r);
  +            if (autoindex_opts & EMIT_XHTML) {
  +                ap_rputs(" /", r);
  +            }
  +            ap_rputs("></pre>\n", r);
           }
           else {
               ap_rputs("</pre>\n", r);
  @@ -2095,7 +2124,8 @@
       }
   
       emit_head(r, find_header(autoindex_conf, r),
  -              autoindex_opts & SUPPRESS_PREAMBLE, title_name);
  +              autoindex_opts & SUPPRESS_PREAMBLE,
  +              autoindex_opts & EMIT_XHTML, title_name);
   
       /*
        * Since we don't know how many dir. entries there are, put them into a