home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d1xx / d110 / pdc.lha / Pdc / lib / memccpy.c < prev    next >
C/C++ Source or Header  |  1987-10-28  |  840b  |  39 lines

  1. /*
  2.  * memccpy - copy bytes up to a certain char
  3.  *
  4.  * CHARBITS should be defined only if the compiler lacks "unsigned char".
  5.  * It should be a mask, e.g. 0377 for an 8-bit machine.
  6.  */
  7.  
  8. #define  NULL      0
  9.  
  10. #ifndef CHARBITS
  11. #        define    UNSCHAR(c)          ((unsigned char)(c))
  12. #else
  13. #        define    UNSCHAR(c)          ((c)&CHARBITS)
  14. #endif
  15.  
  16. VOIDSTAR
  17. memccpy(dst, src, ucharstop, size)
  18. VOIDSTAR dst;
  19. CONST VOIDSTAR src;
  20. SIZET size;
  21. {
  22.          register char *d;
  23.          register CONST char *s;
  24.          register SIZET n;
  25.          register int uc;
  26.  
  27.          if (size <= 0)
  28.                    return(NULL);
  29.  
  30.          s = src;
  31.          d = dst;
  32.          uc = UNSCHAR(ucharstop);
  33.          for (n = size; n > 0; n--)
  34.                    if (UNSCHAR(*d++ = *s++) == uc)
  35.                              return(d);
  36.  
  37.          return(NULL);
  38. }
  39.