httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dgau...@hyperreal.org
Subject cvs commit: apache-1.3/src/modules/standard mod_autoindex.c
Date Tue, 07 Jul 1998 04:54:05 GMT
dgaudet     98/07/06 21:54:05

  Modified:    src/modules/standard mod_autoindex.c
  Log:
  - fix a gcc -Wall warning in dsortf()  (Ken you should be using -Wall)
  - remove unnecessary complexity and verbiage (backport dsortf from apache-nspr)
  
  Revision  Changes    Path
  1.85      +21 -74    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.84
  retrieving revision 1.85
  diff -u -r1.84 -r1.85
  --- mod_autoindex.c	1998/06/20 11:20:39	1.84
  +++ mod_autoindex.c	1998/07/07 04:54:04	1.85
  @@ -1017,12 +1017,9 @@
   
   static int dsortf(struct ent **e1, struct ent **e2)
   {
  -    char *s1;
  -    char *s2;
       struct ent *c1;
       struct ent *c2;
       int result = 0;
  -    int compare_by_string = 1;
   
       /*
        * First, see if either of the entries is for the parent directory.
  @@ -1040,87 +1037,37 @@
        */
       if ((*e1)->ascending) {
           c1 = *e1;
  -	c2 = *e2;
  +        c2 = *e2;
       }
       else {
           c1 = *e2;
           c2 = *e1;
       }
  -    /*
  -     * Choose the right values for the sort keys.
  -     */
       switch (c1->key) {
       case K_LAST_MOD:
  -        /*
  -	 * Since the last-modified time is a monotonically increasing integer,
  -	 * we can short-circuit this process with a simple comparison.
  -	 */
  -        result = c1->lm - c2->lm;
  -	if (result != 0) {
  -	    result = (result > 0) ? 1 : -1;
  -	}
  -	compare_by_string = 0;
  -	break;
  +	if (c1->lm > c2->lm) {
  +            return 1;
  +        }
  +        else if (c1->lm < c2->lm) {
  +            return -1;
  +        }
  +        break;
       case K_SIZE:
  -        /*
  -	 * We can pull the same trick with the size as with the mtime.
  -	 */
  -        result = c1->size - c2->size;
  -	if (result != 0) {
  -	    result = (result > 0) ? 1 : -1;
  -	}
  -	compare_by_string = 0;
  -	break;
  +        if (c1->size > c2->size) {
  +            return 1;
  +        }
  +        else if (c1->size < c2->size) {
  +            return -1;
  +        }
  +        break;
       case K_DESC:
  -	s1 = c1->desc;
  -	s2 = c2->desc;
  -	break;
  -    case K_NAME:
  -    default:
  -	s1 = c1->name;
  -	s2 = c2->name;
  -	break;
  -    }
  -
  -    if (compare_by_string) {
  -        /*
  -	 * Take some care, here, in case one string or the other (or both) is
  -	 * NULL.
  -	 */
  -
  -        /*
  -	 * Two valid strings, compare normally.
  -	 */
  -        if ((s1 != NULL) && (s2 != NULL)) {
  -	    result = strcmp(s1, s2);
  -	}
  -	/*
  -	 * Two NULL strings - primary keys are equal (fake it).
  -	 */
  -	else if ((s1 == NULL) && (s2 == NULL)) {
  -	    result = 0;
  -	}
  -	/*
  -	 * s1 is NULL, but s2 is a string - so s2 wins.
  -	 */
  -	else if (s1 == NULL) {
  -	    result = -1;
  -	}
  -	/*
  -	 * Last case: s1 is a string and s2 is NULL, so s1 wins.
  -	 */
  -	else {
  -	    result = 1;
  -	}
  -    }
  -    /*
  -     * If the keys were equal, the file name is *always* the secondary key -
  -     * in ascending order.
  -     */
  -    if (!result) {
  -	result = strcmp((*e1)->name, (*e2)->name);
  +        result = strcmp(c1->desc ? c1->desc : "", c2->desc ? c2->desc : "");
  +        if (result) {
  +            return result;
  +        }
  +        break;
       }
  -    return result;
  +    return strcmp(c1->name, c2->name);
   }
   
   
  
  
  

Mime
View raw message