Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /*
  2. FUNCTION
  3.         <<strcasecmp>>---case-insensitive character string compare
  4.        
  5. INDEX
  6.         strcasecmp
  7.  
  8. ANSI_SYNOPSIS
  9.         #include <string.h>
  10.         int strcasecmp(const char *<[a]>, const char *<[b]>);
  11.  
  12. TRAD_SYNOPSIS
  13.         #include <string.h>
  14.         int strcasecmp(<[a]>, <[b]>)
  15.         char *<[a]>;
  16.         char *<[b]>;
  17.  
  18. DESCRIPTION
  19.         <<strcasecmp>> compares the string at <[a]> to
  20.         the string at <[b]> in a case-insensitive manner.
  21.  
  22. RETURNS
  23.  
  24.         If <<*<[a]>>> sorts lexicographically after <<*<[b]>>> (after
  25.         both are converted to lowercase), <<strcasecmp>> returns a
  26.         number greater than zero.  If the two strings match,
  27.         <<strcasecmp>> returns zero.  If <<*<[a]>>> sorts
  28.         lexicographically before <<*<[b]>>>, <<strcasecmp>> returns a
  29.         number less than zero.
  30.  
  31. PORTABILITY
  32. <<strcasecmp>> is in the Berkeley Software Distribution.
  33.  
  34. <<strcasecmp>> requires no supporting OS subroutines. It uses
  35. tolower() from elsewhere in this library.
  36.  
  37. QUICKREF
  38.         strcasecmp
  39. */
  40.  
  41. #include <string.h>
  42. #include <ctype.h>
  43.  
  44. int
  45. _DEFUN (strcasecmp, (s1, s2),
  46.         _CONST char *s1 _AND
  47.         _CONST char *s2)
  48. {
  49.   _CONST unsigned char *ucs1 = (_CONST unsigned char *) s1;
  50.   _CONST unsigned char *ucs2 = (_CONST unsigned char *) s2;
  51.   int d = 0;
  52.   for ( ; ; )
  53.     {
  54.       _CONST int c1 = tolower(*ucs1++);
  55.       _CONST int c2 = tolower(*ucs2++);
  56.       if (((d = c1 - c2) != 0) || (c2 == '\0'))
  57.         break;
  58.     }
  59.   return d;
  60. }
  61.