home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 3 / Meeting_Pearls_III.iso / Pearls / texmf / source / driver / util / amiga / little_globals.c < prev    next >
C/C++ Source or Header  |  1991-06-28  |  2KB  |  79 lines

  1. /************************************************************************/
  2. /*    little_globals.c (for testing purposes)                */
  3. /************************************************************************/
  4.  
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <stdarg.h>
  8. #include "globals.h"
  9. #include "globals.i"
  10.  
  11.  
  12. #define MAXLINE        530    /* Beware of overflows! */
  13.  
  14. static char maxline[MAXLINE];
  15.  
  16.  
  17. static void DoOut(char *fmt, va_list);
  18.  
  19. void *xmalloc(unsigned size)
  20. {
  21.   void *poi;
  22.  
  23.   if ((poi = malloc(size)) == NULL) {
  24.     Fatal(10,"no memory");
  25.   }
  26.   if (poi != NULL)
  27.     (void)memset(poi, 0, size);        /* clear the mem */
  28.   return poi;
  29. }
  30.  
  31. void __stdargs Fatal(int ex, char *fmt, ...)
  32. {
  33.   va_list argptr;
  34.   printf("FATAL --");
  35.   va_start(argptr, fmt);
  36.   DoOut(fmt,argptr);
  37.   va_end(argptr);
  38.   AbortRun(ex);
  39. }
  40.  
  41. void __stdargs Warning(char *fmt, ...)
  42. {
  43.   va_list argptr;
  44.   va_start(argptr, fmt);
  45.   DoOut(fmt,argptr);
  46.   va_end(argptr);
  47. }
  48.  
  49. void __stdargs Message(char *fmt, ...)
  50. {
  51.   va_list argptr;
  52.   va_start(argptr, fmt);
  53.   DoOut(fmt,argptr);
  54.   va_end(argptr);
  55. }
  56.  
  57. static void DoOut(char *fmt, va_list args)
  58. {
  59.   if (NULL == fmt) {
  60.     puts("little_globals Test");
  61.   }
  62.   else {
  63.     int length;
  64.     if (MAXLINE <= (length = vsprintf(maxline, fmt, args))) {
  65.       /* GURU kam bestimmt schon... (Wert ermitteln)    */
  66.       printf("GURU: maxline buffer overflow(%d)\n",length);
  67.       AbortRun(20);
  68.     }
  69.     if (length>80) printf("Überlange Zeile folgt (%d):\n",length);
  70.     puts(maxline);
  71.   }
  72. }
  73.  
  74. void AbortRun(int ex)
  75. {
  76.   exit(ex);
  77. }
  78.  
  79.