home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / monitors / rsys / rsyssrc.lha / RSysSpecialList.c < prev    next >
C/C++ Source or Header  |  1993-09-19  |  5KB  |  269 lines

  1. /*
  2. ***************************************************************************
  3. *
  4. * Datei:
  5. *      RSysSpecialList.c
  6. *
  7. * Inhalt:
  8. *
  9. *      --- Globale Routinen ---
  10. *
  11. *    void RSysAmigaGuideRefList ( void );
  12. *    void SysAvailFontsList ( void );
  13. *    void SysBrokerList ( void );
  14. *
  15. *      --- Lokale  Routinen ---
  16. *
  17. *
  18. * Bemerkungen:
  19. *      Spezielle Listen, die unter keine der anderen Kategorien fallen.
  20. *
  21. * Erstellungsdatum:
  22. *      07-Jul-93     Rolf Böhme
  23. *
  24. * Änderungen:
  25. *      07-Jul-93     Rolf Böhme      Erstellung
  26. *
  27. ***************************************************************************
  28. */
  29.  
  30. #include "RSys.h"
  31.  
  32.  
  33. void
  34. RSysAmigaGuideRefList(void)
  35. {
  36.     struct List listbuff, *list = &listbuff;
  37.     struct Node *node;
  38.     struct XRef *xrefnode;
  39.     LONG key;
  40.     register int i;
  41.     UBYTE *fpart, filename[16];
  42.     char *XRefTypes[] = {
  43.         "LINK", "FUNC", "COMM", "INCL", "MACR",
  44.         "STRU", "FIEL", "TYPD", "DEFI"
  45.     };
  46.  
  47.    DPOS;
  48.  
  49.    HandleHelp(MN_RSysAmigaGuideRefList);
  50.  
  51.     PrintHeader(AGUIDEXREF, NULL);
  52.  
  53.     EmptyListView();
  54.  
  55.     countentries = 0;
  56.  
  57.     if (AmigaGuideBase = (struct AmigaGuideBase *)OpenLibrary ((STRPTR)"amigaguide.library", 33))
  58.     {
  59.         key = LockAmigaGuideBase(NULL);
  60.  
  61.         if (GetAmigaGuideAttr(AGA_XRefList, NULL, (ULONG *)&list))
  62.         {
  63.             countentries = CountNodes(list);
  64.  
  65.             if (!NoEntries())
  66.             {
  67.                 Entries = AllocScrollEntries(countentries);
  68.  
  69.                 for(node = list->lh_Head, i = 0; node->ln_Succ && (i < countentries); node = node->ln_Succ, i++)
  70.                 {
  71.                     xrefnode = (struct XRef *)node;
  72.  
  73.                     fpart = FilePart(xrefnode->xr_File);
  74.  
  75.                     if(fpart != xrefnode->xr_File) sprintf((char *)filename,"+%-14s.14s",fpart);
  76.                     else
  77.                         strncpy((char *)filename, (char *)xrefnode->xr_File, 15);
  78.  
  79.                Entries[i].se_obj_id.address = xrefnode;
  80.  
  81.                     sprintf(Entries[i].se_Entry, EntryAttr[AGUIDEXREF].ea_dataformat,
  82.                        xrefnode,
  83.                               xrefnode->xr_Name, XRefTypes[node->ln_Type],
  84.                               filename, xrefnode->xr_Line);
  85.                 }
  86.  
  87.                 CreateEntryList(SORT, 9);
  88.             }
  89.         }
  90.  
  91.         UnlockAmigaGuideBase(key);
  92.  
  93.         CloseLibrary((struct Library *)AmigaGuideBase);
  94.     }
  95.     else ErrorHandle("amigaguide.library", LIBRARY_ERR, OPEN_FAIL, KILL);
  96.  
  97.     PrintStatistics();
  98.  
  99.     return;
  100. }
  101.  
  102. void
  103. SysBrokerList(void)
  104. {
  105.     struct Node *node,
  106.           *nodes[MAX_BROKER_ENTRIES],
  107.           *StartNode,
  108.           *foundBroker = NULL;
  109.    APTR adr[MAX_BROKER_ENTRIES];
  110.     char    name[MAX_BROKER_ENTRIES][22];
  111.     int    pri[MAX_BROKER_ENTRIES],
  112.             i,
  113.             cnt;
  114.     extern CxObj *broker;
  115.  
  116.    DPOS;
  117.  
  118.    HandleHelp(MN_SysBrokerList);
  119.  
  120.     PrintHeader(COMMODITIES, NULL);
  121.  
  122.     EmptyListView();
  123.  
  124.         /*
  125.          * Analog zu FindName() oder FindPort() kann auch hier ein
  126.          * Schutzprotokoll nötig sein. Da Commodities auch mit Interrupts
  127.          * arbeiten müssen (InputHandler!), sollte gleich mit
  128.          * Disable()/Enable() hingelangt werden!
  129.          */
  130.     Disable();
  131.  
  132.     foundBroker = (struct Node *)broker;
  133.  
  134.     for (node = foundBroker; node->ln_Pred; node = node->ln_Pred) StartNode = node;
  135.  
  136.     for (node = StartNode, cnt = 0;
  137.           node->ln_Succ && (cnt < MAX_BROKER_ENTRIES);
  138.           node = node->ln_Succ)
  139.     {
  140.             /*
  141.              * Vitale Daten kopieren; der Type ist unbekannt! Damit
  142.              * dennoch die Namen ausgegeben werden können, übergebe ich
  143.              * einfach den Node-Typen.
  144.              */
  145.         savestrcpy(name[cnt], node, 22, (int)node->ln_Type);
  146.       adr[cnt]       = node;
  147.         pri[cnt]         = node->ln_Pri;
  148.         nodes[cnt++]    = node;
  149.     }
  150.  
  151.     Enable();
  152.  
  153.     countentries = cnt;
  154.  
  155.     if(NoEntries()) return;
  156.  
  157.     Entries = AllocScrollEntries(countentries);
  158.  
  159.     for (i = 0; i < cnt; i++)
  160.     {
  161.       Entries[i].se_obj_id.address = adr[i];
  162.  
  163.         sprintf(Entries[i].se_Entry,
  164.                   EntryAttr[COMMODITIES].ea_dataformat,
  165.               adr[i], name[i], pri[i]);
  166.  
  167.         AddNodeToList(i, SORT, 9);
  168.     }
  169.  
  170.     PrintStatistics();
  171.  
  172.     return;
  173. }
  174.  
  175.     /*
  176.      * SysAvailFontsList() listet alle Fonts im Verzeichnis
  177.      * FONTS: auf
  178.      */
  179. void
  180. SysAvailFontsList(void)
  181. {
  182.     char    Style[MAXSHOW];
  183.     char *Type[5] =
  184.     {
  185.         "-", "ROM", "DISK", "-", "SCAL"
  186.     };
  187.     struct AvailFontsHeader *afh;
  188.     struct AvailFonts *AF;
  189.     int    extrabytes,
  190.             initialsize = sizeof(struct AvailFontsHeader),
  191.             i;
  192.  
  193.     DPOS;
  194.  
  195.    HandleHelp(MN_SysAvailFontsList);
  196.  
  197.     PrintHeader(ALLFONTS, NULL);
  198.  
  199.     EmptyListView();
  200.  
  201.     PrintInfo("Read all Fonts", NO_SPEAK, 0);
  202.  
  203.     do
  204.     {
  205.         afh = (struct AvailFontsHeader *) MyAllocVec(initialsize, MEMF_CLEAR | MEMF_ANY, KILL);
  206.  
  207.         if (afh)
  208.         {
  209.             extrabytes = AvailFonts((STRPTR) afh, initialsize, AFF_DISK);
  210.             if (extrabytes)
  211.             {
  212.                 MyFreeVec(afh);
  213.                 initialsize += extrabytes;
  214.             }
  215.         }
  216.     } while (extrabytes);
  217.  
  218.     countentries = afh->afh_NumEntries;
  219.  
  220.     if (NoEntries()) return;
  221.  
  222.     Entries = AllocScrollEntries(countentries);
  223.  
  224.     AF = (struct AvailFonts *) & (afh[1]);
  225.  
  226.     for (i = 0; i < countentries; i++)
  227.     {
  228.         strcpy(Style, "       ");
  229.  
  230.         if (!(AF[i].af_Attr.ta_Style & FS_NORMAL))
  231.             Style[0] = 'N';
  232.  
  233.         if (AF[i].af_Attr.ta_Style & FSF_UNDERLINED)
  234.             Style[1] = 'U';
  235.  
  236.         if (AF[i].af_Attr.ta_Style & FSF_BOLD)
  237.             Style[2] = 'B';
  238.  
  239.         if (AF[i].af_Attr.ta_Style & FSF_ITALIC)
  240.             Style[3] = 'I';
  241.  
  242.         if (AF[i].af_Attr.ta_Style & FSF_EXTENDED)
  243.             Style[4] = 'E';
  244.  
  245.         if (AF[i].af_Attr.ta_Style & FSF_COLORFONT)
  246.             Style[5] = 'C';
  247.  
  248.         if (AF[i].af_Attr.ta_Style & FSF_TAGGED)
  249.             Style[6] = 'T';
  250.  
  251.         Style[7] = STRINGEND;
  252.  
  253.       Entries[i].se_obj_id.address = &AF[i];
  254.         sprintf(Entries[i].se_Entry, EntryAttr[ALLFONTS].ea_dataformat,
  255.                   AF[i].af_Attr.ta_Name,
  256.                   Type[AF[i].af_Type],
  257.                   AF[i].af_Attr.ta_YSize,
  258.                   Style);
  259.  
  260.         AddNodeToList(i, SORT, 0);
  261.     }
  262.  
  263.     MyFreeVec(afh);
  264.  
  265.     PrintStatistics();
  266.  
  267.     return;
  268. }
  269.