
#include "PianoMeter.h"
#include "PianoMeter_protos.h"


/* Library bases */

struct ExecBase			*SysBase;
struct DosLibrary		*DOSBase;
struct GfxBase			*GfxBase;
struct IntuitionBase	*IntuitionBase;
struct Library 			*GadToolsBase;
struct Library			*UtilityBase;
struct Library			*AslBase;
struct Library			*WorkbenchBase;
struct Library			*CamdBase;



/*----------------*/
/* Open Libraries */
/*----------------*/

BOOL OpenLibs(void)
{
	BOOL Success=FALSE;
	
	SysBase = *((struct ExecBase**)(0x4));
	
	if (DOSBase=(struct DosLibrary*)OpenLibrary("dos.library",39L))
	{
		if (GfxBase=(struct GfxBase*)OpenLibrary("graphics.library",39L))
		{
			if (IntuitionBase=(struct IntuitionBase*)OpenLibrary("intuition.library",39L))
			{
				if (GadToolsBase=OpenLibrary("gadtools.library", 39L))
				{
					if (UtilityBase=OpenLibrary("utility.library",39L))
					{
						if (!(AslBase=OpenLibrary("asl.library",39L)))
						{
							Message("This program requires asl.library!",NULL);
						}
						else
						{
							if (!(WorkbenchBase=OpenLibrary("workbench.library",39L)))
							{
								Message("This program requires workbench.library!",NULL);
							}
							else
							{
								if (!(CamdBase=OpenLibrary("camd.library",0L)))
								{
									Message("This program requires camd.library!",NULL);
								}
								else
								{
									Success=TRUE;
								}
							}
						}
					}
				}
			}
		}
	}
	if (!Success) CloseLibs();
	
	return(Success);
}


/*-----------------*/
/* Close Libraries */
/*-----------------*/

void CloseLibs(void)
{
	if (CamdBase)
	{
		CloseLibrary(CamdBase);
		CamdBase=NULL;
	}
	
	if (WorkbenchBase)
	{
		CloseLibrary(WorkbenchBase);
		WorkbenchBase=NULL;
	}
	
	if (AslBase)
	{
		CloseLibrary(AslBase);
		AslBase=NULL;
	}
	
	if (UtilityBase)
	{
		CloseLibrary(UtilityBase);
		UtilityBase=NULL;
	}
	
	if (GadToolsBase)
	{
		CloseLibrary(GadToolsBase);
		GadToolsBase=NULL;
	}
	
	if (IntuitionBase)
	{
		CloseLibrary((struct Library*)IntuitionBase);
		IntuitionBase=NULL;
	}
	
	if (GfxBase)
	{
		CloseLibrary((struct Library*)GfxBase);
		GfxBase=NULL;
	}
	
	if (DOSBase)
	{
		CloseLibrary((struct Library*)DOSBase);
		DOSBase=NULL;
	}
}
