home *** CD-ROM | disk | FTP | other *** search
/ YPA: Your Privacy Assured / YPA.ISO / other_goodies / utilities / amigaguid.lha / AmigaGuide / AG_V39 / Source / HyperBrowser / library.c < prev    next >
C/C++ Source or Header  |  1993-01-08  |  4KB  |  117 lines

  1. /* library.c
  2.  *
  3.  * (c) Copyright 1992 Commodore-Amiga, Inc.  All rights reserved.
  4.  *
  5.  * This software is provided as-is and is subject to change; no warranties
  6.  * are made.  All use is at your own risk.  No liability or responsibility
  7.  * is assumed.
  8.  *
  9.  */
  10.  
  11. #include "hyperbrowser.h"
  12.  
  13. /*****************************************************************************/
  14.  
  15. STRPTR ShowLibFlags (struct GlobalData * gd, struct Library * lib)
  16. {
  17.     UBYTE flags = lib->lib_Flags;
  18.  
  19.     memset (gd->gd_FBuffer, 0, sizeof (gd->gd_FBuffer));
  20.     if (flags & LIBF_SUMMING)
  21.     strcat (gd->gd_FBuffer, "summing ");
  22.     if (flags & LIBF_CHANGED)
  23.     strcat (gd->gd_FBuffer, "changed ");
  24.     if (flags & LIBF_SUMUSED)
  25.     strcat (gd->gd_FBuffer, "sumused ");
  26.     if (flags & LIBF_DELEXP)
  27.     strcat (gd->gd_FBuffer, "delexp ");
  28.     return gd->gd_FBuffer;
  29. }
  30.  
  31. /*****************************************************************************/
  32.  
  33. void showlibrarylist (struct GlobalData * gd)
  34. {
  35.     struct ExecBase *SysBase = (*((struct ExecBase **) 4));
  36.     struct List *list = &SysBase->LibList;
  37.     struct Library *lib;
  38.     struct Node *node;
  39.  
  40.     /* Build the title */
  41.     strcpy (gd->gd_Node, "@{b}Library Name                     Address   Vers  Rev  Opens@{ub}\n");
  42.  
  43.     /* Build the library list */
  44.     Forbid ();
  45.     for (node = list->lh_Head; node->ln_Succ; node = node->ln_Succ)
  46.     {
  47.     lib = (struct Library *) node;
  48.     bprintf (gd, "@{\"%-30s\" link HYPERNOZY.LIBRARY.(%08lx)} @{\"%08lx\" link HYPERNOZY.MEMORY.(%08lx)} %4ld %5ld %5ld\n",
  49.          lib->lib_Node.ln_Name, lib,
  50.          lib, lib, (void *) lib->lib_Version, (void *) lib->lib_Revision, (void *) lib->lib_OpenCnt);
  51.     }
  52.     Permit ();
  53. }
  54.  
  55. /*****************************************************************************/
  56.  
  57. void showlibrarybase (struct GlobalData * gd, struct Library * lib)
  58. {
  59.     struct Node *node = (struct Node *) lib;
  60.     UBYTE id[128];
  61.     ULONG i, j;
  62.  
  63.     /* Prepare the id string */
  64.     if (lib->lib_IdString)
  65.     {
  66.     strcpy (id, lib->lib_IdString);
  67.     j = strlen (id);
  68.     for (i = j - 1; i > 0; i--)
  69.     {
  70.         if ((id[i] == 0) || (id[i] == '\n') || (id[i] == '\r'))
  71.         id[i] = 0;
  72.         else
  73.         break;
  74.     }
  75.     }
  76.     else
  77.     id[0] = 0;
  78.  
  79.     /* Build the library base information */
  80.     bprintf (gd, "        Address: @{\"%08lx\" link HYPERNOZY.MEMORY.(%08lx)}\n", lib, lib);
  81.     bprintf (gd, "           Type: %ld\n", (void *) node->ln_Type);
  82.     bprintf (gd, "       Priority: %ld\n", (void *) node->ln_Pri);
  83.     bprintf (gd, "           Name: %s\n", node->ln_Name);
  84.     bprintf (gd, "          Flags: %s\n", (void *) ShowLibFlags (gd, lib));
  85.     bprintf (gd, "          LVO's: %ld\n", (void *) UDivMod32 ((ULONG) lib->lib_NegSize, 6L));
  86.     bprintf (gd, "           Size: %ld\n", (void *) ((ULONG) (lib->lib_NegSize + lib->lib_PosSize)));
  87.     bprintf (gd, "        Version: %ld.%ld\n", (void *) lib->lib_Version, (void *) lib->lib_Revision);
  88.     bprintf (gd, "      ID String: %s\n", id);
  89.     bprintf (gd, "       Checksum: %ld\n", (void *) ((ULONG) lib->lib_Sum));
  90.     bprintf (gd, "     Open Count: %ld\n", (void *) lib->lib_OpenCnt);
  91. }
  92.  
  93. /*****************************************************************************/
  94.  
  95. void showlibrary (struct GlobalData * gd, ULONG address)
  96. {
  97.     struct ExecBase *SysBase = (*((struct ExecBase **) 4));
  98.     struct List *list = &SysBase->LibList;
  99.     struct Node *node;
  100.  
  101.     /* Just in case we don't find the library */
  102.     strcpy (gd->gd_Node, "@{b}library gone@{ub}\n");
  103.  
  104.     /* Build the library list */
  105.     Forbid ();
  106.     for (node = list->lh_Head; node->ln_Succ; node = node->ln_Succ)
  107.     {
  108.     if (node == (struct Node *) address)
  109.     {
  110.         strcpy (gd->gd_Node, "@{b}Library Base@{ub}\n\n");
  111.         showlibrarybase (gd, (struct Library *) node);
  112.         break;
  113.     }
  114.     }
  115.     Permit ();
  116. }
  117.