home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 5
/
FreshFish_July-August1994.bin
/
bbs
/
text
/
amigaguide-34.6.lha
/
AmigaGuide-34.6
/
AmigaGuide.lha
/
AG_V39
/
Src
/
HyperBrowser
/
library.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-07-29
|
4KB
|
117 lines
/* library.c
*
* (c) Copyright 1992 Commodore-Amiga, Inc. All rights reserved.
*
* This software is provided as-is and is subject to change; no warranties
* are made. All use is at your own risk. No liability or responsibility
* is assumed.
*
*/
#include "hyperbrowser.h"
/*****************************************************************************/
STRPTR ShowLibFlags (struct GlobalData * gd, struct Library * lib)
{
UBYTE flags = lib->lib_Flags;
memset (gd->gd_FBuffer, 0, sizeof (gd->gd_FBuffer));
if (flags & LIBF_SUMMING)
strcat (gd->gd_FBuffer, "summing ");
if (flags & LIBF_CHANGED)
strcat (gd->gd_FBuffer, "changed ");
if (flags & LIBF_SUMUSED)
strcat (gd->gd_FBuffer, "sumused ");
if (flags & LIBF_DELEXP)
strcat (gd->gd_FBuffer, "delexp ");
return gd->gd_FBuffer;
}
/*****************************************************************************/
void showlibrarylist (struct GlobalData * gd)
{
struct ExecBase *SysBase = (*((struct ExecBase **) 4));
struct List *list = &SysBase->LibList;
struct Library *lib;
struct Node *node;
/* Build the title */
strcpy (gd->gd_Node, "@{b}Library Name Address Vers Rev Opens@{ub}\n");
/* Build the library list */
Forbid ();
for (node = list->lh_Head; node->ln_Succ; node = node->ln_Succ)
{
lib = (struct Library *) node;
bprintf (gd, "@{\"%-30s\" link HYPERNOZY.LIBRARY.(%08lx)} @{\"%08lx\" link HYPERNOZY.MEMORY.(%08lx)} %4ld %5ld %5ld\n",
lib->lib_Node.ln_Name, lib,
lib, lib, (void *) lib->lib_Version, (void *) lib->lib_Revision, (void *) lib->lib_OpenCnt);
}
Permit ();
}
/*****************************************************************************/
void showlibrarybase (struct GlobalData * gd, struct Library * lib)
{
struct Node *node = (struct Node *) lib;
UBYTE id[128];
ULONG i, j;
/* Prepare the id string */
if (lib->lib_IdString)
{
strcpy (id, lib->lib_IdString);
j = strlen (id);
for (i = j - 1; i > 0; i--)
{
if ((id[i] == 0) || (id[i] == '\n') || (id[i] == '\r'))
id[i] = 0;
else
break;
}
}
else
id[0] = 0;
/* Build the library base information */
bprintf (gd, " Address: @{\"%08lx\" link HYPERNOZY.MEMORY.(%08lx)}\n", lib, lib);
bprintf (gd, " Type: %ld\n", (void *) node->ln_Type);
bprintf (gd, " Priority: %ld\n", (void *) node->ln_Pri);
bprintf (gd, " Name: %s\n", node->ln_Name);
bprintf (gd, " Flags: %s\n", (void *) ShowLibFlags (gd, lib));
bprintf (gd, " LVO's: %ld\n", (void *) UDivMod32 ((ULONG) lib->lib_NegSize, 6L));
bprintf (gd, " Size: %ld\n", (void *) ((ULONG) (lib->lib_NegSize + lib->lib_PosSize)));
bprintf (gd, " Version: %ld.%ld\n", (void *) lib->lib_Version, (void *) lib->lib_Revision);
bprintf (gd, " ID String: %s\n", id);
bprintf (gd, " Checksum: %ld\n", (void *) ((ULONG) lib->lib_Sum));
bprintf (gd, " Open Count: %ld\n", (void *) lib->lib_OpenCnt);
}
/*****************************************************************************/
void showlibrary (struct GlobalData * gd, ULONG address)
{
struct ExecBase *SysBase = (*((struct ExecBase **) 4));
struct List *list = &SysBase->LibList;
struct Node *node;
/* Just in case we don't find the library */
strcpy (gd->gd_Node, "@{b}library gone@{ub}\n");
/* Build the library list */
Forbid ();
for (node = list->lh_Head; node->ln_Succ; node = node->ln_Succ)
{
if (node == (struct Node *) address)
{
strcpy (gd->gd_Node, "@{b}Library Base@{ub}\n\n");
showlibrarybase (gd, (struct Library *) node);
break;
}
}
Permit ();
}