extern void abort (void); extern int inside_main; typedef __SIZE_TYPE__ size_t; #define TEST_ABORT if (inside_main) abort() void * my_memcpy (void *d, const void *s, size_t n) { char *dst = (char *) d; const char *src = (const char *) s; while (n--) *dst++ = *src++; return (char *) d; } void my_bcopy (const void *s, void *d, size_t n) { char *dst = (char *) d; const char *src = (const char *) s; if (src >= dst) while (n--) *dst++ = *src++; else { dst += n; src += n; while (n--) *--dst = *--src; } } void * my_memset (void *d, int c, size_t n) { char *dst = (char *) d; while (n--) *dst++ = c; return (char *) d; } void my_bzero (void *d, size_t n) { char *dst = (char *) d; while (n--) *dst++ = '\0'; } void * memcpy (void *d, const void *s, size_t n) { TEST_ABORT; return my_memcpy (d, s, n); } void bcopy (const void *s, void *d, size_t n) { TEST_ABORT; my_bcopy (s, d, n); } void * memset (void *d, int c, size_t n) { TEST_ABORT; return my_memset (d, c, n); } void bzero (void *d, size_t n) { TEST_ABORT; my_bzero (d, n); }