home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / text / golded / data / tools / gedscan / define.c < prev    next >
C/C++ Source or Header  |  1995-02-27  |  2KB  |  67 lines

  1. /* -----------------------------------------------------------------------------
  2.  
  3.   Example: scan handler looking for #defines. Scan handlers are plain functions 
  4.   (LoadSeg'ed by GED): no standard C startup code, no library calls. 
  5.   
  6.   Exemple: gestionnaire de scan recherchant des #defines. Les gestionnaires de
  7.   scan sont des fonctions plain (LoadSeg'ées par GED): pas de code de départ
  8.   C standard, pas d'appel bibliothèque. DICE-C:
  9.  
  10.   DICE-C:
  11.   
  12.   dcc define.c -// -l0 -md -mRR -o ram:Defines
  13.  
  14.   ------------------------------------------------------------------------------
  15. */
  16.  
  17. #include <exec/types.h>
  18.  
  19. #define UPPER(a) ((a) & 95)
  20.  
  21. ULONG
  22. ScanHandlerGuide(__D0 ULONG len, __A0 char **text)
  23. {
  24.     const char *version = "$VER: Define 1.0 (24.3.94)";
  25.  
  26.     if (**text == '#') {
  27.  
  28.         if (len > 8) {
  29.  
  30.             UBYTE *next = *text + 1;
  31.  
  32.             if (UPPER(*next++) == 'D') {
  33.  
  34.                 if (UPPER(*next++) == 'E') {
  35.  
  36.                     if (UPPER(*next++) == 'F') {
  37.  
  38.                         if (UPPER(*next++) == 'I') {
  39.  
  40.                             if (UPPER(*next++) == 'N') {
  41.  
  42.                                 if (UPPER(*next++) == 'E') {
  43.  
  44.                                     if (*next++ == ' ') {
  45.  
  46.                                         UWORD letters = 0;
  47.  
  48.                                         for (len -= 8; (*next == 32) && len; --len)
  49.                                             ++next;
  50.  
  51.                                         for (*text = next; len && (*next++ != ' '); --len)
  52.                                             ++letters;
  53.  
  54.                                         return(letters);
  55.                                     }
  56.                                 }
  57.                             }
  58.                         }
  59.                     }
  60.                 }
  61.             }
  62.         }
  63.     }
  64.  
  65.     return(NULL);
  66. }
  67.