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) { void *result = my_memcpy (d, s, n); TEST_ABORT; return result; } void bcopy (const void *s, void *d, size_t n) { my_bcopy (s, d, n); TEST_ABORT; } void * memset (void *d, int c, size_t n) { void *result = my_memset (d, c, n); TEST_ABORT; return result; } void bzero (void *d, size_t n) { my_bzero (d, n); TEST_ABORT; } |