home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume10 / pcmail2 / part01 / main / myalloc.c < prev    next >
C/C++ Source or Header  |  1990-01-24  |  999b  |  59 lines

  1. #include <stdio.h>
  2. #include <varargs.h>
  3.  
  4. extern char *progname;
  5.  
  6. #include "defs.h"
  7.  
  8. /* fatal - another way to terminate */
  9.  
  10. /* VARARGS */
  11.  
  12. public  fatal(va_alist) 
  13. va_dcl
  14. {
  15.     va_list ap;
  16.     char   *fmt;
  17.  
  18.     if (progname && *progname)
  19.     (void) fprintf(stderr, "%s: ", progname);
  20.     va_start(ap);
  21.     fmt = va_arg(ap, char *);
  22.     (void) vfprintf(stderr, fmt, ap);
  23.     va_end(ap);
  24.     (void) abort();
  25.     exit(1);
  26. }
  27.  
  28. /* myalloc - allocate memory or terminate */
  29.  
  30. public char *myalloc(size)
  31. unsigned size;
  32. {
  33.     register char *p;
  34.     char   *malloc();
  35.  
  36.     if ((p = malloc(size)) == 0)
  37.     fatal("memory allocation error");
  38.     return (p);
  39. }
  40.  
  41. /* myrealloc - extend memory or terminate (allows NULL pointer) */
  42.  
  43. public char *myrealloc(ptr, size)
  44. char   *ptr;
  45. unsigned size;
  46. {
  47.     register char *p;
  48.     char   *realloc();
  49.  
  50.     if (ptr == 0) {
  51.     return (myalloc(size));
  52.     } else if ((p = realloc(ptr, size)) == 0) {
  53.     fatal("memory allocation error");
  54.     /* NOTREACHED */
  55.     } else {
  56.     return (p);
  57.     }
  58. }
  59.