
#include "xmisc.h"

long GfxBase;
long IntuitionBase;
long ExpansionBase;
long DiskfontBase;
long TranslatorBase;
long IconBase;
long MathBase;
long MathTransBase;
long MathIeeeDoubBasBase;
long MathIeeeSingBasBase;
long LayersBase;
long ClistBase;
long PotgoBase;
long TimerBase;
long xfiller15;
long xfiller16;

struct OLI strvar[] = {
  "graphics",           &GfxBase,
  "intuition",          &IntuitionBase,
  "expansion",          &ExpansionBase,
  "diskfont",           &DiskfontBase,
  "translator",         &TranslatorBase,
  "icon",               &IconBase,
  "mathffp",            &MathBase,
  "mathtrans",          &MathTransBase,
  "mathieeedoubbas",    &MathIeeeDoubBasBase,
  "mathieeesingbas",    &MathIeeeSingBasBase,
  "layers",             &LayersBase,
  "clist",              &ClistBase,
  "potgo",              &PotgoBase,
  "timer",              &TimerBase,
  "x15",                &xfiller15,
  "x16",                &xfiller16,
  0L, 0L       /* end marker for future compatibility */
};


openlibs(mask)
unsigned short mask;
{
    register struct OLI *sv;
    char buf[64];
    long copymask = mask;

    for (sv = &strvar[0]; mask && sv->name; mask >>= 1, ++sv) {
	if (mask & 1) {
	    strcpy(buf, sv->name);
	    strcat(buf, ".library");
	    if (*sv->var == 0 && (*sv->var = OpenLibrary(buf, 0)) == 0)
		goto fail;
	}
    }
    return (1);
fail:
    closelibs(copymask);
    return (0);
}

