home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume26 / mytinfo / part01 / compar.c < prev    next >
C/C++ Source or Header  |  1992-12-26  |  735b  |  41 lines

  1. /*
  2.  * compar.c
  3.  *
  4.  * By Ross Ridge
  5.  * Public Domain
  6.  * 92/06/04 11:36:24
  7.  *
  8.  */
  9.  
  10. #include "defs.h"
  11.  
  12. #ifdef USE_SCCS_IDS
  13. static const char SCCSid[] = "@(#) mytinfo compar.c 3.3 92/06/04 public domain, By Ross Ridge";
  14. #endif
  15.  
  16. /* compare two elements a sorted list of pointers to strings */
  17. int
  18. _compar(a, b)
  19. #ifdef USE_ANSIC
  20. void const *a;
  21. void const *b; {
  22. #else
  23. anyptr a, b; {
  24. #endif
  25.     register char *aa = **(char ***)a;
  26.     register char *bb = **(char ***)b;
  27.  
  28.     /* An optimization trick from C News, compare the first
  29.      * two chars of the string here to avoid a the overhead of a
  30.      * call to strcmp.
  31.      */
  32.  
  33. #ifdef __GNUC__
  34.     return ((*aa - *bb) ? : strcmp(aa, bb));
  35. #else
  36.     if (*aa != *bb)
  37.         return *aa - *bb;
  38.     return strcmp(aa, bb);
  39. #endif
  40. }
  41.