home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C / Utilities / ENV Server / server src / envserver.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-05-31  |  1.9 KB  |  97 lines  |  [TEXT/ALFA]

  1. /*
  2. ** envserver.c
  3. **
  4. ** main source file for the environment server.
  5. **
  6. */
  7.  
  8.  
  9. #include "es_headers"
  10.  
  11. #include "aevent.h"
  12. #include "envserver.h"
  13. #include "utils.h"
  14. #include "logging.h"
  15.  
  16. static void Check4Sys7(void);
  17. static void DoEvent(EventRecord *);
  18. void Cleanup(void);
  19.  
  20. Boolean gDone = FALSE;      /* are we done yet? */
  21.  
  22. void main()
  23. {
  24.     int                haveEvent;                    /* do we have an event */
  25.     EventRecord        theEvent;                    /* the current event   */
  26.     long            sleepTime = 20000;            /* time to sleep/WNE   */
  27.     int                eventMask = everyEvent;        /* current event mask  */
  28.  
  29. #if LOGGING
  30.     LogInit("Server.log");
  31. #endif
  32.     Check4Sys7();    /* this exits if Sys 7 isn't running */
  33.     InitAEs();        /* initialize my Apple Event handlers */
  34.     
  35.     while ( !gDone) {
  36.         haveEvent = WaitNextEvent( eventMask, &theEvent, sleepTime, NULL);
  37.         if (haveEvent)
  38.             DoEvent(&theEvent);
  39.     } /* while */
  40.     Cleanup();
  41. } /* main */
  42.  
  43.  
  44. static void Check4Sys7(void)
  45. {
  46. #define _Gestalt 0xa1ad   /* Gestalt trap number (from IM) */
  47.     if (TrapAvailable(_Gestalt)) {
  48.         long result, mask=0x0700; /* mask = system 7.x */
  49.  
  50.         if ( (Gestalt( gestaltSystemVersion, &result) == noErr) &&
  51.             ( mask == (result & mask)) )
  52.             return;
  53.     }
  54.     /* Let user know we need sys 7. */
  55.     /* if Gestalt isn't on the system, don't even check the others */
  56.     /* Since this is a background-only application, beep 3 times. ;-) */
  57.  
  58.     SysBeep(1);  SysBeep(1);  SysBeep(1);
  59.     Cleanup();
  60.  
  61. } /* Check4Sys7 */
  62.  
  63.  
  64. /********************
  65. ** Cleanup
  66. **
  67. ** This routine is for removing any allocated structures, closing drivers,
  68. ** etc.  Anything that *can* be cleaned up or shut down, do it here.
  69. ** Then, ExitToShell().
  70. *********************/
  71. void Cleanup(void)
  72. {
  73. #if LOGGING
  74.     LogClose();
  75. #endif
  76.     ExitToShell();
  77. } /* Cleanup */
  78.  
  79.  
  80. static void DoEvent(EventRecord *theEvent)
  81. {
  82.     switch (theEvent->what)
  83.     {
  84.         case kHighLevelEvent:            /* ignore all other events */
  85.             DoAppleEvent(theEvent);
  86.             break;
  87.  
  88.         case nullEvent:                 /* perhaps handle null events */
  89.             break;
  90.     }
  91. } /* DoEvent */
  92.  
  93.  
  94.  
  95.  
  96.  
  97.