home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / pdksh-4.9-src.tgz / tar.out / contrib / pdksh / std / stdc / strcmp.c < prev    next >
C/C++ Source or Header  |  1996-09-28  |  812b  |  42 lines

  1. #include <string.h>
  2. /* $Id: strcmp.c,v 1.3 93/05/05 21:18:35 sjg Exp $ */
  3.  
  4. /* Modified by Eric Gisin */
  5.  
  6. /*
  7.  * strcmp - compare string s1 to s2
  8.  */
  9.  
  10. int                /* <0 for <, 0 for ==, >0 for > */
  11. strcmp(s1, s2)
  12. const char *s1;
  13. const char *s2;
  14. {
  15.     register const char *scan1;
  16.     register const char *scan2;
  17. #if 0                /* some machines prefer int to char */
  18.     register int c1, c2;
  19. #else
  20.     register char c1, c2;
  21. #endif
  22.  
  23.     scan1 = s1;
  24.     scan2 = s2;
  25.     while ((c1 = *scan1++) == (c2 = *scan2++) && c1 != 0)
  26.         ;
  27.  
  28.     /*
  29.      * The following case analysis is necessary so that characters
  30.      * which look negative collate low against normal characters but
  31.      * high against the end-of-string NUL.
  32.      */
  33.     if (c1 == '\0' && c2 == '\0')
  34.         return(0);
  35.     else if (c1 == '\0')
  36.         return(-1);
  37.     else if (c2 == '\0')
  38.         return(1);
  39.     else
  40.         return(c1 - c2);
  41. }
  42.