home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / emacs-19.28-src.tgz / tar.out / fsf / emacs / unixlib / src / message.c < prev    next >
C/C++ Source or Header  |  1996-09-28  |  2KB  |  79 lines

  1. #include "amiga.h"
  2. #include <intuition/intuition.h>
  3. #include <stdarg.h>
  4.  
  5. static struct EasyStruct msg = {
  6.     sizeof (struct EasyStruct),
  7.     0,
  8.     NULL,
  9.     NULL,
  10.     "Ok",
  11. };
  12.  
  13. static void message(char *format, long *args)
  14. /* Display a message which is as visible as possible (either to the console
  15.    or to as a requester).
  16.    Assume very little about library state */
  17. {
  18.   LONG msg_EasyRequestArgs(struct Window *window, struct EasyStruct *easyStruct,
  19.                ULONG *idcmpPtr, APTR args );
  20. #pragma libcall msg_IntuitionBase msg_EasyRequestArgs 24C BA9804
  21.   BPTR fh;
  22.   int close = FALSE;
  23.   extern char *_ProgramName;
  24.   extern struct WBStartup *_WBenchMsg;
  25.  
  26.   fh = _us->pr_CES;
  27.   if (!fh)
  28.     if (!_WBenchMsg && (fh = Open("console:", MODE_OLDFILE))) close = TRUE;
  29.  
  30.   if (fh)
  31.     {
  32.       VFPrintf(fh, "%s: ", &_ProgramName);
  33.       VFPrintf(fh, format, (long *)args);
  34.       FPutC(fh, '\n');
  35.       if (close) Close(fh);
  36.     }
  37.   else
  38.     {
  39.       struct Window *win = (struct Window *)_us->pr_WindowPtr;
  40.       if (win != (struct Window *)-1)
  41.     {
  42.       struct Library *msg_IntuitionBase = OpenLibrary("intuition.library", 37);
  43.  
  44.       if (msg_IntuitionBase)
  45.         {
  46.           msg.es_Title = _ProgramName;
  47.           msg.es_TextFormat = format;
  48.           msg_EasyRequestArgs(win, &msg, 0, args);
  49.           CloseLibrary(msg_IntuitionBase);
  50.         }
  51.     }
  52.     }
  53. }
  54.  
  55. void _message(char *format, ...)
  56. /* Display a message which is as visible as possible (either to the console
  57.    or to as a requester).
  58.    Assume very little about library state */
  59. {
  60.   va_list args;
  61.  
  62.   va_start(args, format);
  63.   message(format, (long *)args);
  64. }
  65.  
  66. void _fail(char *format, ...)
  67. /* Display a message which is as visible as possible (either to the console
  68.    or to as a requester).
  69.    Assume very little about library state.
  70.    Exit with error code RETURN_FAIL after that. */
  71. {
  72.   va_list args;
  73.  
  74.   va_start(args, format);
  75.   message(format, (long *)args);
  76.  
  77.   exit(RETURN_FAIL);        /* The library should always be cleanup-able */
  78. }
  79.