#include "unistd.h"
#include "sys/types.h"
#include "sys/stat.h"
#include "errno.h"
#include "fcntl.h"
#include "stdlib.h"
#include "string.h"
#if !defined(TRACE_MALLOC)
#if defined(__STDC__)
void (*lp_alloc_fail_handler)( void ) = 0;
#else
void (*lp_alloc_fail_handler)() = 0;
#endif
#if defined(__STDC__)
typedef void *alloc_type;
#else
typedef char *alloc_type;
#endif
alloc_type
#if defined(__STDC__)
_Malloc (
size_t size,
const char * file,
int line
)
#else
_Malloc (size, file, line)
size_t size;
char * file;
int line;
#endif
{
alloc_type ret = malloc(size);
if (!ret) {
if (lp_alloc_fail_handler)
(*lp_alloc_fail_handler)();
errno = ENOMEM;
}
return (ret);
}
alloc_type
#if defined(__STDC__)
_Realloc (
void * ptr,
size_t size,
const char * file,
int line
)
#else
_Realloc (ptr, size, file, line)
char * ptr;
size_t size;
char * file;
int line;
#endif
{
alloc_type ret = realloc(ptr, size);
if (!ret) {
if (lp_alloc_fail_handler)
(*lp_alloc_fail_handler)();
errno = ENOMEM;
}
return (ret);
}
alloc_type
#if defined(__STDC__)
_Calloc (
size_t nelem,
size_t elsize,
const char * file,
int line
)
#else
_Calloc (nelem, elsize, file, line)
size_t nelem;
size_t elsize;
char * file;
int line;
#endif
{
alloc_type ret = calloc(nelem, elsize);
if (!ret) {
if (lp_alloc_fail_handler)
(*lp_alloc_fail_handler)();
errno = ENOMEM;
}
return (ret);
}
char *
#if defined(__STDC__)
_Strdup (
const char * s,
const char * file,
int line
)
#else
_Strdup (s, file, line)
char * s;
char * file;
int line;
#endif
{
char * ret;
if (!s)
return( (char *) 0);
ret = strdup(s);
if (!ret) {
if (lp_alloc_fail_handler)
(*lp_alloc_fail_handler)();
errno = ENOMEM;
}
return (ret);
}
void
#if defined(__STDC__)
_Free (
void * ptr,
const char * file,
int line
)
#else
_Free (ptr, file, line)
char * ptr;
char * file;
int line;
#endif
{
free (ptr);
return;
}
#else
# include "mdl.c"
#endif