/* * Copyright (C) 1995-1997 Christopher D. Granz * * This header may not be removed. * * Refer to the file "License" included in this package for further * information and before using any of the following. */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include "emi.h" /* * Functions */ /* * Allocates some memory and checks for failure. */ void *alloc_mem( register size_t rsMem ) { register void *pMem; if ( ( pMem = calloc( 1, rsMem ) ) == NULL ) { fprintf( stderr, "Fatal error: Cannot allocate %ld bytes of memory.\n", (long) rsMem ); #ifdef DEBUG abort( ); #else exit( 1 ); #endif } return ( pMem ); } /* * Reallocates some memory and checks for failure. */ void *realloc_mem( register void *pMem, register size_t rsMem ) { if ( ( pMem = realloc( pMem, rsMem ) ) == NULL ) { fprintf( stderr, "Fatal error: Cannot reallocate %ld bytes of memory.\n", (long) rsMem ); #ifdef DEBUG abort( ); #else exit( 1 ); #endif } return ( pMem ); } /* * Free some memory and set the pointer to NULL. */ void free_mem( register void **ppMem ) { if ( ppMem != NULL && *ppMem != NULL ) { free( *ppMem ); *ppMem = NULL; } } /* * Initialize some memory. */ void zero_out( register void *pMem, register size_t rsMem ) { register byte *pBMem = pMem; register size_t rs = 0; while ( rs < rsMem ) pBMem[rs++] = 0; } /* * Duplicates a string in memory. */ char *str_dup( register char *pStr ) { register int riLen; if ( pStr == NULL || pStr[0] == '\0' ) return ( EMPTY_STRING ); riLen = strlen( pStr ); if ( riLen >= MAX_STRING ) riLen = ( MAX_STRING - 1 ); return ( strncpy( alloc_mem( riLen + 1 ), pStr, riLen ) ); } /* * End of memory.c */