You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by dg...@hyperreal.org on 1998/08/22 08:57:18 UTC

cvs commit: apache-1.3/src/modules/standard mod_autoindex.c

dgaudet     98/08/21 23:57:17

  Modified:    src      CHANGES
               src/modules/standard mod_autoindex.c
  Log:
  dynamincally size the filename column
  
  Reviewed by:	Martin Kraemer
  
  Revision  Changes    Path
  1.1031    +3 -0      apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.1030
  retrieving revision 1.1031
  diff -u -r1.1030 -r1.1031
  --- CHANGES	1998/08/20 04:07:43	1.1030
  +++ CHANGES	1998/08/22 06:57:15	1.1031
  @@ -1,5 +1,8 @@
   Changes with Apache 1.3.2
   
  +  *) Dynamically size the filename column of mod_autoindex output.
  +     [Dean Gaudet]
  +
     *) Add the ability to do POST requests to the ab benchmarking tool.
        [Kurt Sussman <kl...@best.com>] PR#2871
   
  
  
  
  1.88      +28 -32    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.87
  retrieving revision 1.88
  diff -u -r1.87 -r1.88
  --- mod_autoindex.c	1998/08/06 17:30:56	1.87
  +++ mod_autoindex.c	1998/08/22 06:57:17	1.88
  @@ -865,15 +865,29 @@
   			       autoindex_config_rec * d, request_rec *r,
   			     int autoindex_opts, char keyid, char direction)
   {
  -    int x, len;
  +    int x;
       char *name = r->uri;
       char *tp;
       int static_columns = (autoindex_opts & SUPPRESS_COLSORT);
       pool *scratch = ap_make_sub_pool(r->pool);
  +    int name_width;
  +    char *name_scratch;
   
       if (name[0] == '\0')
   	name = "/";
   
  +    name_width = 23;
  +    for (x = 0; x < n; x++) {
  +	int t = strlen(ar[x]->name);
  +	if (t > name_width) {
  +	    name_width = t;
  +	}
  +    }
  +    ++name_width;
  +    name_scratch = ap_palloc(r->pool, name_width + 1);
  +    memset(name_scratch, ' ', name_width);
  +    name_scratch[name_width] = 0;
  +
       if (autoindex_opts & FANCY_INDEXING) {
   	ap_rputs("<PRE>", r);
   	if ((tp = find_default_icon(d, "^^BLANKICON^^"))) {
  @@ -891,7 +905,7 @@
   	    ap_rputs("> ", r);
   	}
           emit_link(r, "Name", K_NAME, keyid, direction, static_columns);
  -	ap_rputs("                   ", r);
  +	ap_rputs(name_scratch + 4, r);
   	if (!(autoindex_opts & SUPPRESS_LAST_MOD)) {
               emit_link(r, "Last modified", K_LAST_MOD, keyid, direction,
                         static_columns);
  @@ -912,7 +926,8 @@
       }
   
       for (x = 0; x < n; x++) {
  -	char *anchor = NULL, *t = NULL, *t2 = NULL;
  +	char *anchor, *t, *t2;
  +	char *pad;
   
   	ap_clear_pool(scratch);
   
  @@ -922,40 +937,21 @@
   	    if (t[0] == '\0') {
   		t = "/";
   	    }
  -	    anchor = ap_pstrcat(scratch, "<A HREF=\"",
  -				ap_escape_html(scratch,
  -					       ap_os_escape_path(scratch, t,
  -								 0)),
  -				"\">", NULL);
  -	    t2 = "Parent Directory</A>       ";
  +	       /* 1234567890123456 */
  +	    t2 = "Parent Directory";
  +	    pad = name_scratch + 16;
  +	    anchor = ap_escape_html(scratch, ap_os_escape_path(scratch, t, 0));
   	}
   	else {
   	    t = ar[x]->name;
  -	    len = strlen(t);
  -	    if (len > 23) {
  -		t2 = ap_pstrdup(scratch, t);
  -		t2[21] = '.';
  -		t2[22] = '.';
  -		t2[23] = '\0';
  -		t2 = ap_escape_html(scratch, t2);
  -		t2 = ap_pstrcat(scratch, t2, "</A>", NULL);
  -	    }
  -	    else {
  -		char buff[24] = "                       ";
  -		t2 = ap_escape_html(scratch, t);
  -		buff[23 - len] = '\0';
  -		t2 = ap_pstrcat(scratch, t2, "</A>", buff, NULL);
  -	    }
  -	    anchor = ap_pstrcat(scratch, "<A HREF=\"",
  -				ap_escape_html(scratch,
  -					       ap_os_escape_path(scratch, t,
  -								 0)),
  -				"\">", NULL);
  +	    pad = name_scratch + strlen(t);
  +	    t2 = ap_escape_html(scratch, t);
  +	    anchor = ap_escape_html(scratch, ap_os_escape_path(scratch, t, 0));
   	}
   
   	if (autoindex_opts & FANCY_INDEXING) {
   	    if (autoindex_opts & ICONS_ARE_LINKS) {
  -		ap_rputs(anchor, r);
  +		ap_rvputs(r, "<A HREF=\"", anchor, "\">", NULL);
   	    }
   	    if ((ar[x]->icon) || d->default_icon) {
   		ap_rvputs(r, "<IMG SRC=\"",
  @@ -974,7 +970,7 @@
   		ap_rputs("</A>", r);
   	    }
   
  -	    ap_rvputs(r, " ", anchor, t2, NULL);
  +	    ap_rvputs(r, " <A HREF=\"", anchor, "\">", t2, "</A>", pad, NULL);
   	    if (!(autoindex_opts & SUPPRESS_LAST_MOD)) {
   		if (ar[x]->lm != -1) {
   		    char time_str[MAX_STRING_LEN];
  @@ -998,7 +994,7 @@
   	    }
   	}
   	else {
  -	    ap_rvputs(r, "<LI> ", anchor, " ", t2, NULL);
  +	    ap_rvputs(r, "<LI> <A HREF=\"", anchor, "\"> ", t2, "</A>", pad, NULL);
   	}
   	ap_rputc('\n', r);
       }