/************************************************************************ * libraries.c * print the names of resident libraries, along with their vital statistics. * Author: SDB ************************************************************************/ #include #include #include #define MAXLIBS 100 #define MAXSTR 100 IMPORT struct ExecBase *SysBase; struct LibInfo { UWORD li_VecSize; UWORD li_DataSize; UWORD li_Version; UWORD li_Revision; UWORD li_Opens; BYTE li_Name[MAXSTR]; BYTE li_ID[MAXSTR]; }; struct LibInfo li[MAXLIBS]; UWORD lib_count = 0; char *format_string = "%-17s %4ld %4d %4d %4d %4d\n"; main() { struct Library *lib; REGISTER UWORD i; REGISTER struct LibInfo *info = &li[0]; Forbid(); lib = (struct Library *)SysBase->LibList.lh_Head; for ( ; lib->lib_Node.ln_Succ && lib_count < MAXLIBS; lib = (struct Library *)lib->lib_Node.ln_Succ, lib_count++, info++) { strncpy(info->li_Name, lib->lib_Node.ln_Name, MAXSTR); strncpy(info->li_ID, (char *)lib->lib_IdString, MAXSTR); info->li_VecSize = lib->lib_NegSize; info->li_DataSize = lib->lib_PosSize; info->li_Version = lib->lib_Version; info->li_Revision = lib->lib_Revision; info->li_Opens = lib->lib_OpenCnt; } Permit(); printf( "Name #Vectors Data Version Revison Opens\n"); printf( "=====================================================\n"); info = &li[0]; for (i = 0; i < lib_count; i++, info++) printf(format_string, info->li_Name, (info->li_VecSize / LIB_VECTSIZE), info->li_DataSize, info->li_Version, info->li_Revision, info->li_Opens ); printf("\nLibraries with ID strings:\n"); info = &li[0]; for (i = 0; i < lib_count; i++, info++) if (info->li_ID[0]) printf("%-17s ID = %s", info->li_Name, info->li_ID); }