Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/* $Source: /u/mark/src/pax/RCS/mem.c,v $
* * $Revision: 1.2 $ * * mem.c - memory allocation and manipulation functions * * DESCRIPTION * * These routines are provided for higher level handling of the UNIX * memory allocation functions. * * AUTHOR * * Mark H. Colburn, NAPS International (mark@jhereg.mn.org) * * * Sponsored by The USENIX Association for public distribution. * * Copyright (c) 1989 Mark H. Colburn. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice is duplicated in all such * forms and that any documentation, advertising materials, and other * materials related to such distribution and use acknowledge that the * software was developed * by Mark H. Colburn and sponsored by The * USENIX Association. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log: mem.c,v $ * Revision 1.2 89/02/12 10:04:53 mark * 1.2 release fixes * * Revision 1.1 88/12/23 18:02:17 mark * Initial revision * */
#ifndef lint
static char *ident = "$Id: mem.c,v 1.2 89/02/12 10:04:53 mark Exp $"; static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n"; #endif /* ! lint */
/* Headers */
#include "pax.h"
/* mem_get - allocate memory
* * DESCRIPTION * * Mem_get attempts to allocate a block of memory using the malloc * function call. In the event that the memory is not available, * mem_get will display an "Out of memory" message for the user * the first time it encounters the an out of memory situation. * Subsequent calls to mem_get may fail, but no message will be * printed. * * PARAMETERS * * uint len - The amount of memory to allocate * * RETURNS * * Normally returns the pointer to the newly allocated memory. If * an error occurs, NULL is returned, and an error message is * printed. * * ERRORS * * ENOMEM No memory is available */
#ifdef __STDC__
char *mem_get(uint len)
#else
char *mem_get(len) uint len; /* amount of memory to get */
#endif
{ char *mem; static short outofmem = 0;
#ifdef DF_TRACE_DEBUG
printf("DF_TRACE_DEBUG: char *mem_get() in mem.c\n"); #endif
if ((mem = (char *)malloc(len)) == (char *)NULL && !outofmem) { outofmem++; warn("mem_get()", "Out of memory"); } return (mem); }
/* mem_str - duplicate a string into dynamic memory
* * DESCRIPTION * * Mem_str attempts to make a copy of string. It allocates space for * the string, and if the allocation was successfull, copies the old * string into the newly allocated space. * * PARAMETERS * * char *str - string to make a copy of * * RETURNS * * Normally returns a pointer to a new string at least as large * as strlen(str) + 1, which contains a copy of the the data * passed in str, plus a null terminator. Returns (char *)NULL * if enough memory to make a copy of str is not available. */
#ifdef __STDC__
char *mem_str(char *str)
#else
char *mem_str(str) char *str; /* string to make a copy of */
#endif
{ char *mem;
#ifdef DF_TRACE_DEBUG
printf("DF_TRACE_DEBUG: char *mem_str() in mem.c\n"); #endif
if (mem = mem_get((uint) strlen(str) + 1)) { strcpy(mem, str); } return (mem); }
|