extern void abort (void);
|
extern void abort (void);
|
extern int inside_main;
|
extern int inside_main;
|
typedef __SIZE_TYPE__ size_t;
|
typedef __SIZE_TYPE__ size_t;
|
|
|
#define TEST_ABORT if (inside_main) abort()
|
#define TEST_ABORT if (inside_main) abort()
|
|
|
void *
|
void *
|
my_memcpy (void *d, const void *s, size_t n)
|
my_memcpy (void *d, const void *s, size_t n)
|
{
|
{
|
char *dst = (char *) d;
|
char *dst = (char *) d;
|
const char *src = (const char *) s;
|
const char *src = (const char *) s;
|
while (n--)
|
while (n--)
|
*dst++ = *src++;
|
*dst++ = *src++;
|
return (char *) d;
|
return (char *) d;
|
}
|
}
|
|
|
void
|
void
|
my_bcopy (const void *s, void *d, size_t n)
|
my_bcopy (const void *s, void *d, size_t n)
|
{
|
{
|
char *dst = (char *) d;
|
char *dst = (char *) d;
|
const char *src = (const char *) s;
|
const char *src = (const char *) s;
|
if (src >= dst)
|
if (src >= dst)
|
while (n--)
|
while (n--)
|
*dst++ = *src++;
|
*dst++ = *src++;
|
else
|
else
|
{
|
{
|
dst += n;
|
dst += n;
|
src += n;
|
src += n;
|
while (n--)
|
while (n--)
|
*--dst = *--src;
|
*--dst = *--src;
|
}
|
}
|
}
|
}
|
|
|
void *
|
void *
|
my_memset (void *d, int c, size_t n)
|
my_memset (void *d, int c, size_t n)
|
{
|
{
|
char *dst = (char *) d;
|
char *dst = (char *) d;
|
while (n--)
|
while (n--)
|
*dst++ = c;
|
*dst++ = c;
|
return (char *) d;
|
return (char *) d;
|
}
|
}
|
|
|
void
|
void
|
my_bzero (void *d, size_t n)
|
my_bzero (void *d, size_t n)
|
{
|
{
|
char *dst = (char *) d;
|
char *dst = (char *) d;
|
while (n--)
|
while (n--)
|
*dst++ = '\0';
|
*dst++ = '\0';
|
}
|
}
|
|
|
void *
|
void *
|
memcpy (void *d, const void *s, size_t n)
|
memcpy (void *d, const void *s, size_t n)
|
{
|
{
|
void *result = my_memcpy (d, s, n);
|
void *result = my_memcpy (d, s, n);
|
TEST_ABORT;
|
TEST_ABORT;
|
return result;
|
return result;
|
}
|
}
|
|
|
void
|
void
|
bcopy (const void *s, void *d, size_t n)
|
bcopy (const void *s, void *d, size_t n)
|
{
|
{
|
my_bcopy (s, d, n);
|
my_bcopy (s, d, n);
|
TEST_ABORT;
|
TEST_ABORT;
|
}
|
}
|
|
|
void *
|
void *
|
memset (void *d, int c, size_t n)
|
memset (void *d, int c, size_t n)
|
{
|
{
|
void *result = my_memset (d, c, n);
|
void *result = my_memset (d, c, n);
|
TEST_ABORT;
|
TEST_ABORT;
|
return result;
|
return result;
|
}
|
}
|
|
|
void
|
void
|
bzero (void *d, size_t n)
|
bzero (void *d, size_t n)
|
{
|
{
|
my_bzero (d, n);
|
my_bzero (d, n);
|
TEST_ABORT;
|
TEST_ABORT;
|
}
|
}
|
|
|
#ifdef __vxworks
|
#ifdef __vxworks
|
/* The RTP C library uses bfill, which is defined in the same file as
|
/* The RTP C library uses bfill, which is defined in the same file as
|
bzero and bcopy. */
|
bzero and bcopy. */
|
#include "lib/bfill.c"
|
#include "lib/bfill.c"
|
#endif
|
#endif
|
|
|