home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 4 / DATAFILE_PDCD4.iso / unix / unixlib36d / src / c / memchr < prev    next >
Text File  |  1994-03-08  |  898b  |  56 lines

  1. #ifdef __STDC__
  2. static char sccs_id[] = "@(#) memchr.c 1.0 " __DATE__ " HJR";
  3. #else
  4. static char sccs_id[] = "@(#) memchr.c 1.0 26/9/90 HJR";
  5. #endif
  6.  
  7. /* memchr.c (c) Copyright 1990 H.Rogers */
  8.  
  9. #include <string.h>
  10.  
  11. #ifdef __STDC__
  12. void *
  13. memchr (register const void *s, register int c, register size_t n)
  14. #else
  15. void *
  16. memchr (s, c, n)
  17.      register const void *s;
  18.      register int c;
  19.      register size_t n;
  20. #endif
  21. {
  22.   register unsigned char *_s = (unsigned char *) s;
  23.  
  24.   while (n & 0x07)
  25.     {
  26.       n--;
  27.       if (*_s++ == c)
  28.     {
  29.     ret:return ((void *) (--_s));
  30.     }
  31.     }
  32.   n >>= 3;
  33.   while (n)
  34.     {
  35.       n--;
  36.       if (*_s++ == c)
  37.     goto ret;
  38.       if (*_s++ == c)
  39.     goto ret;
  40.       if (*_s++ == c)
  41.     goto ret;
  42.       if (*_s++ == c)
  43.     goto ret;
  44.       if (*_s++ == c)
  45.     goto ret;
  46.       if (*_s++ == c)
  47.     goto ret;
  48.       if (*_s++ == c)
  49.     goto ret;
  50.       if (*_s++ == c)
  51.     goto ret;
  52.     }
  53.  
  54.   return (0);
  55. }
  56.