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

  1. /* -----------------------------------------------------------------------------
  2.  
  3.   Example: scan handler looking for  AutoDoc  nodes.  Scan  handlers  are  plain
  4.   functions  (LoadSeg'ed  by GED): no standard C startup code, no library calls.
  5.   This handler is faster than GoldED's built in AutoDoc handler since it  simply
  6.   looks  for formfeeds. Won't work with all AutoDocs though Commodore's AutoDocs
  7.   are handled properly.
  8.  
  9.   Exemple: gestionnaire de scan recherchant des nodes AutoDoc. Les gestion-
  10.   naires de scan sont des fonctions plain (LoadSeg'ées par GED): pas de code
  11.   de départ C standard, pas d'appel bibliothèque. Ce gestionnaire est plus
  12.   rapide que le gestionnaire autodoc intégré à GoldED car il recherche sim-
  13.   plement des sauts de page (formfeeds). Ne fonctionne pas avec toutes les
  14.   Autodocs, seules les autodocs de Commodore sont gérées. 
  15.   
  16.   DICE C:
  17.  
  18.   dcc ADoc.c -// -l0 -md -mRR -o ram:ADoc
  19.  
  20.   ------------------------------------------------------------------------------
  21. */
  22.  
  23. #include <exec/types.h>
  24.  
  25. #define FORMFEED 12
  26.  
  27. ULONG
  28. ScanHandlerGuide(__D0 ULONG len, __A0 char **text)
  29. {
  30.     // look for node header
  31.  
  32.     const char *version = "$VER: ADoc 1.0 (24.3.94)";
  33.  
  34.     if (**text == FORMFEED) {
  35.  
  36.         // look for beginning of header string (e.g. "Dos.Library/Open")
  37.  
  38.         while (len && (**text <= ' ')) {
  39.  
  40.             ++*text;
  41.             --len;
  42.         }
  43.  
  44.         // ignore first part of header string
  45.  
  46.         while (len && (**text != '/')) {
  47.  
  48.             ++*text;
  49.             len--;
  50.         }
  51.  
  52.         // extract node name
  53.  
  54.         if (len) {
  55.  
  56.             UWORD letters;
  57.  
  58.             ++*text;
  59.             --len;
  60.  
  61.             for (letters = 0; len && ((*text)[letters] != 32); --len)
  62.                 ++letters;
  63.  
  64.             return(letters);
  65.         }
  66.     }
  67.  
  68.     return(NULL);
  69. }
  70.