/* libraries.c */ /* * Open all needed libraries, manages OS_2.0 and * all that stuff * */ /* * $Author: Espie $ * $Date: 91/05/09 17:36:43 $ * $Revision: 1.3 $ * $Log: libraries.c,v $ * Revision 1.3 91/05/09 17:36:43 Espie * Opens workbench.library. * * Revision 1.2 91/05/07 12:12:06 Espie * Opens icon.library. * * Revision 1.1 91/05/06 23:32:48 Espie * Initial revision * * */ #include #include #include #include #include #include #include "proto.h" struct IntuitionBase *IntuitionBase; struct GfxBase *GfxBase; struct Library *AslBase, *ArpBase, *IconBase, *WorkbenchBase; #define MIN_REV 33 #ifdef SIZE_GADGET struct Library *LayersBase; #endif LOCAL BOOL asl_avail, arp_avail, icon_avail, intuition_20, workbench_avail; LOCAL struct Library *auto_open(char *lib_name, int version) { struct Library *base; base = OpenLibrary(lib_name, version); if (base) ToClean(CloseLibrary, base); return base; } struct Library *panic_open(char *lib_name, int version) { static char buffer[100]; struct Library *base; base = auto_open(lib_name, version); if (!base) { sprintf(buffer, "Can't open %s (v %d)", lib_name, version); mayPanic(buffer); } return base; } void open_libraries(void) { /* open 'em for system version 1.2 */ IntuitionBase = panic_open("intuition.library", MIN_REV); /* need to use TextLength */ GfxBase = panic_open("graphics.library", MIN_REV); #ifdef SIZE_GADGET LayersBase = panic_open("layers.library", MIN_REV); #endif intuition_20 = IntuitionBase->LibNode.lib_Version >= 36; /* for the file requester */ ArpBase = auto_open("arp.library", 39); if (ArpBase) arp_avail = TRUE; else { arp_avail = FALSE; AslBase = auto_open("asl.library", 0); if (AslBase) asl_avail = TRUE; else asl_avail = FALSE; } IconBase = auto_open("icon.library", MIN_REV); if (IconBase) icon_avail = TRUE; else icon_avail = FALSE; WorkbenchBase = auto_open("workbench.library", 0); if (WorkbenchBase) workbench_avail = TRUE; else workbench_avail = FALSE; } BOOL running_20(void) { return intuition_20; } int requester_type(void) { if (arp_avail) return ARP; if (asl_avail) return OS_20; else return NO_REQ; } BOOL icon_around(void) { return icon_avail; } BOOL wb_around(void) { return workbench_avail; }