Commit | Line | Data |
---|---|---|
60f79275 L |
1 | extern void abort (void); |
2 | extern int inside_main; | |
3 | typedef __SIZE_TYPE__ size_t; | |
4 | ||
5 | #define TEST_ABORT if (inside_main) abort() | |
6 | ||
7 | void * | |
8 | my_memcpy (void *d, const void *s, size_t n) | |
9 | { | |
10 | char *dst = (char *) d; | |
11 | const char *src = (const char *) s; | |
12 | while (n--) | |
13 | *dst++ = *src++; | |
14 | return (char *) d; | |
15 | } | |
16 | ||
17 | void | |
18 | my_bcopy (const void *s, void *d, size_t n) | |
19 | { | |
20 | char *dst = (char *) d; | |
21 | const char *src = (const char *) s; | |
22 | if (src >= dst) | |
23 | while (n--) | |
24 | *dst++ = *src++; | |
25 | else | |
26 | { | |
27 | dst += n; | |
28 | src += n; | |
29 | while (n--) | |
30 | *--dst = *--src; | |
31 | } | |
32 | } | |
33 | ||
34 | void * | |
35 | my_memset (void *d, int c, size_t n) | |
36 | { | |
37 | char *dst = (char *) d; | |
38 | while (n--) | |
39 | *dst++ = c; | |
40 | return (char *) d; | |
41 | } | |
42 | ||
43 | void | |
44 | my_bzero (void *d, size_t n) | |
45 | { | |
46 | char *dst = (char *) d; | |
47 | while (n--) | |
48 | *dst++ = '\0'; | |
49 | } | |
50 | ||
51 | void * | |
52 | memcpy (void *d, const void *s, size_t n) | |
53 | { | |
54 | void *result = my_memcpy (d, s, n); | |
55 | TEST_ABORT; | |
56 | return result; | |
57 | } | |
58 | ||
59 | void | |
60 | bcopy (const void *s, void *d, size_t n) | |
61 | { | |
62 | my_bcopy (s, d, n); | |
63 | TEST_ABORT; | |
64 | } | |
65 | ||
66 | void * | |
67 | memset (void *d, int c, size_t n) | |
68 | { | |
69 | void *result = my_memset (d, c, n); | |
70 | TEST_ABORT; | |
71 | return result; | |
72 | } | |
73 | ||
74 | void | |
75 | bzero (void *d, size_t n) | |
76 | { | |
77 | my_bzero (d, n); | |
78 | TEST_ABORT; | |
79 | } |