home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 2 / DATAFILE_PDCD2.iso / utilities2 / unixlib36d / UnixLib36d / src / c / memcmp < prev    next >
Encoding:
Text File  |  1994-03-08  |  1.4 KB  |  79 lines

  1. #ifdef __STDC__
  2. static char sccs_id[] = "@(#) memcmp.c 1.0 " __DATE__ " HJR";
  3. #else
  4. static char sccs_id[] = "@(#) memcmp.c 1.0 26/9/90 HJR";
  5. #endif
  6.  
  7. /* memcmp.c (c) Copyright 1990 H.Rogers */
  8.  
  9. #include <string.h>
  10.  
  11. #ifdef __STDC__
  12. int
  13. memcmp (const void *s1, const void *s2, register size_t n)
  14. #else
  15. int
  16. memcmp (s1, s2, n)
  17.      const void *s1;
  18.      const void *s2;
  19.      register size_t n;
  20. #endif
  21. {
  22.   register unsigned char *_s1 = (unsigned char *) s1, *_s2 = (unsigned char *) s2;
  23.  
  24.   while (n & 0x07)
  25.     {
  26.       if (*_s1 != *_s2)
  27.     goto differs;
  28.       _s1++, _s2++;
  29.       n--;
  30.     }
  31.   n >>= 3;
  32.   while (n)
  33.     {
  34.       if (*_s1 != *_s2)
  35.     goto differs;
  36.       _s1++, _s2++;
  37.       if (*_s1 != *_s2)
  38.     goto differs;
  39.       _s1++, _s2++;
  40.       if (*_s1 != *_s2)
  41.     goto differs;
  42.       _s1++, _s2++;
  43.       if (*_s1 != *_s2)
  44.     goto differs;
  45.       _s1++, _s2++;
  46.       if (*_s1 != *_s2)
  47.     goto differs;
  48.       _s1++, _s2++;
  49.       if (*_s1 != *_s2)
  50.     goto differs;
  51.       _s1++, _s2++;
  52.       if (*_s1 != *_s2)
  53.     goto differs;
  54.       _s1++, _s2++;
  55.       if (*_s1 != *_s2)
  56.     goto differs;
  57.       _s1++, _s2++;
  58.       n--;
  59.     }
  60.  
  61.   if (n == 0)
  62.     return 0;
  63.  
  64. differs:
  65.   return (*_s1 - *_s2);
  66. }
  67.  
  68. #ifdef __STDC__
  69. int (bcmp) (register const void *s1, register const void *s2, register size_t n)
  70. #else
  71. int (bcmp) (s1, s2, n)
  72.      register const void *s1;
  73.      register const void *s2;
  74.      register size_t n;
  75. #endif
  76. {
  77.   return (bcmp (s1, s2, n));
  78. }
  79.