rem: if( *version == Version && *revision == Revision )
add: if( *version == VERSION && *revision == REVISION )
context: OpenLibs ( void ){  /* Intuition Library */  IntuitionBase = (struct IntuitionBase *) OpenLibrary( "intuition.library", 37 );  if( IntuitionBase == NULL)  {    Alert(AN_Unknown|AG_OpenLib|AO_Intuition);    return FALSE;  }  /* DOS Library */  DOSBase = (struct DosLibrary *) OpenLibrary( "dos.library", 37 );  if( DOSBase == NULL)  {    Req( "Unable to open 'dos.library'." );    return FALSE;  }  /* Graphics Library */  GfxBase = (struct GfxBase *) OpenLibrary( "graphics.library", 37 );  if( GfxBase == NULL)  {    Req( "Unable to open 'graphics.library'." );    return FALSE;  }  /* GadTools Library */  GadToolsBase = OpenLibrary( "gadtools.library", 37 );  if( GadToolsBase == NULL)  {    Req( "Unable to open 'gadtools.library'." );    return FALSE;  }  /* IFFParse Library */  IFFParseBase = OpenLibrary( "iffparse.library", 37 );  if( IFFParseBase == NULL)  {    Req( "Unable to open 'iffparse.library'." );    return FALSE;  }  /* Locale Library */  LocaleBase = (struct LocaleBase*) OpenLibrary( "locale.library", 38 );  /* Timer Device */  TimerIO = (struct timerequest *) AllocVec( sizeof(struct timerequest),                                             MEMF_PUBLIC | MEMF_CLEAR );  if( TimerIO == NULL)  {    Req( "Out of memory." );    return FALSE;  }  if( OpenDevice( "timer.device",                  UNIT_VBLANK,                  (struct IORequest *)                  TimerIO,                  0) != 0 )  {    Req( "Unable to open 'timer.device'." );//    return FALSE;   }  else  {    TimerBase = (struct Device *) TimerIO->tr_node.io_Device;  }  /* Utility Library */  UtilityBase = (struct UtilityBase *) OpenLibrary( "utility.library", 37 );  if( UtilityBase == NULL)  {    Req( "Unable to open 'utility.library'." );    return FALSE;  }#ifdef __AMIGAOS4__  if ((IIntuition = (struct IntuitionIFace *) GetInterface((struct Library *) IntuitionBase, "main", 1, NULL)) == NULL)  {       Req("Couldn't open IIntuition interface!\n");       return FALSE;  }  if ((IDOS = (struct DOSIFace *) GetInterface((struct Library *) DOSBase, "main", 1, NULL)) == NULL)  {       Req("Couldn't open IDOS interface!\n");       return FALSE;  }  if ((IGraphics = (struct GraphicsIFace *) GetInterface((struct Library *) GfxBase, "main", 1, NULL)) == NULL)  {       Req("Couldn't open Graphics interface!\n");       return FALSE;  }    if ((IGadTools = (struct GadToolsIFace *) GetInterface((struct Library *) GadToolsBase, "main", 1, NULL)) == NULL)  {       Req("Couldn't open IGadTools interface!\n");       return FALSE;  }  if ((IIFFParse = (struct IFFParseIFace *) GetInterface((struct Library *) IFFParseBase, "main", 1, NULL)) == NULL)  {       Req("Couldn't open IFFParse interface!\n");       return FALSE;  }    if ((ILocale = (struct LocaleIFace *) GetInterface((struct Library *) LocaleBase, "main", 1, NULL)) == NULL)  {       Req("Couldn't open ILocale interface!\n");       return FALSE;  }  if ((ITimer = (struct TimerIFace *) GetInterface((struct Library *) TimerBase, "main", 1, NULL)) == NULL)  {       Req("Couldn't open Timer interface!\n");       return FALSE;  }    if ((IUtility = (struct UtilityIFace *) GetInterface((struct Library *) UtilityBase, "main", 1, NULL)) == NULL)  {       Req("Couldn't open Utility interface!\n");       return FALSE;  }#endif  // Fill in some defaults...  AddByteMonoPtr         = AddByteMono;  AddByteStereoPtr       = AddByteStereo;  AddByte71Ptr           = AddByte71;  AddBytesMonoPtr        = AddBytesMono;  AddBytesStereoPtr      = AddBytesStereo;  AddBytes71Ptr          = AddBytes71;  AddWordMonoPtr         = AddWordMono;  AddWordStereoPtr       = AddWordStereo;  AddWord71Ptr           = AddWord71;  AddWordsMonoPtr        = AddWordsMono;  AddWordsStereoPtr      = AddWordsStereo;  AddWords71Ptr          = AddWords71;  AddLongMonoPtr         = AddLongMono;  AddLongStereoPtr       = AddLongStereo;  AddLong71Ptr           = AddLong71;  AddLongsMonoPtr        = AddLongsMono;  AddLongsStereoPtr      = AddLongsStereo;  Add71MonoPtr           = Add71Mono;  Add71StereoPtr         = Add71Stereo;  AddLongs71Ptr          = AddLongs71;  Add7171Ptr             = Add7171;   AddByteMonoBPtr        = AddByteMonoB;  AddByteStereoBPtr      = AddByteStereoB;  AddByte71BPtr          = AddByte71B;  AddBytesMonoBPtr       = AddBytesMonoB;  AddBytesStereoBPtr     = AddBytesStereoB;  AddBytes71BPtr         = AddBytes71B;  AddWordMonoBPtr        = AddWordMonoB;  AddWordStereoBPtr      = AddWordStereoB;  AddWord71BPtr          = AddWord71B;  AddWordsMonoBPtr       = AddWordsMonoB;  AddWordsStereoBPtr     = AddWordsStereoB;  AddWords71BPtr         = AddWords71B;  AddLongMonoBPtr        = AddLongMonoB;  AddLongStereoBPtr      = AddLongStereoB;  AddLong71BPtr          = AddLong71B;  AddLongsMonoBPtr       = AddLongsMonoB;  AddLongsStereoBPtr     = AddLongsStereoB;  AddLongs71BPtr         = AddLongs71B;  Add71MonoBPtr          = Add71MonoB;  Add71StereoBPtr        = Add71StereoB;  Add7171BPtr            = Add7171B;  AddLofiByteMonoPtr     = AddLofiByteMono;  AddLofiByteStereoPtr   = AddLofiByteStereo;  AddLofiBytesMonoPtr    = AddLofiBytesMono;  AddLofiBytesStereoPtr  = AddLofiBytesStereo;  AddLofiWordMonoPtr     = AddLofiWordMono;  AddLofiWordStereoPtr   = AddLofiWordStereo;  AddLofiWordsMonoPtr    = AddLofiWordsMono;  AddLofiWordsStereoPtr  = AddLofiWordsStereo;  AddLofiLongMonoPtr     = AddLofiLongMono;  AddLofiLongStereoPtr   = AddLofiLongStereo;  AddLofiLongsMonoPtr    = AddLofiLongsMono;  AddLofiLongsStereoPtr  = AddLofiLongsStereo;  AddLofiByteMonoBPtr    = AddLofiByteMonoB;  AddLofiByteStereoBPtr  = AddLofiByteStereoB;  AddLofiBytesMonoBPtr   = AddLofiBytesMonoB;  AddLofiBytesStereoBPtr = AddLofiBytesStereoB;  AddLofiWordMonoBPtr    = AddLofiWordMonoB;  AddLofiWordStereoBPtr  = AddLofiWordStereoB;  AddLofiWordsMonoBPtr   = AddLofiWordsMonoB;  AddLofiWordsStereoBPtr = AddLofiWordsStereoB;  AddLofiLongMonoBPtr    = AddLofiLongMonoB;  AddLofiLongStereoBPtr  = AddLofiLongStereoB;  AddLofiLongsMonoBPtr   = AddLofiLongsMonoB;  AddLofiLongsStereoBPtr = AddLofiLongsStereoB;  /* MorphOS/PowerUp/WarpOS loading     Strategy:      1) If MorphOS is running, use it.      2) If PowerUp is running, but not WarpUp, use the m68k core      3) If neither of them are running, try WarpUp.  */  // Check if MorpOS/PowerUp/WarpUp is running.  {#if defined( ENABLE_WARPUP )    struct Library* ppclib     = NULL;    struct Library* powerpclib = NULL;#endif    Forbid();    MorphOSRes  = FindResident( "MorphOS" );    #if defined( ENABLE_WARPUP )    powerpclib = (struct Library *) FindName( &SysBase->LibList,                                              "powerpc.library" );    ppclib     = (struct Library *) FindName( &SysBase->LibList,                                              "ppc.library" );#endif    Permit();#if defined( ENABLE_WARPUP )    if( MorphOSRes == NULL && ! ( ppclib != NULL && powerpclib == NULL ) )    {      // Open WarpUp (but not if MorphOS or PowerUp is active)      PowerPCBase = OpenLibrary( "powerpc.library", 15 );    }#endif  }  if( MorphOSRes != NULL )  {    MixBackend  = MB_NATIVE;  }#if defined( ENABLE_WARPUP )  else if( PowerPCBase != NULL )  {    MixBackend = MB_WARPUP;    /* Load our code to PPC..  */    PPCObject = AHILoadObject( "DEVS:ahi.device.elf" );    if( PPCObject != NULL )    {      ULONG* version = NULL;      ULONG* revision = NULL;      int r = ~0;      AHIGetELFSymbol( "__LIB_Version", (void*) &version );      AHIGetELFSymbol( "__LIB_Revision", (void*) &revision );          if( version != NULL && revision != NULL )      {        if( *version == Version && *revision == Revision )        {          r &= GetSymbol( AddByteMono     );          r &= GetSymbol( AddByteStereo   );          r &= GetSymbol( AddBytesMono    );          r &= GetSymbol( AddBytesStereo  );          r &= GetSymbol( AddWordMono     );          r &= GetSymbol( AddWordStereo   );          r &= GetSymbol( AddWordsMono    );          r &= GetSymbol( AddWordsStereo  );          r &= GetSymbol( AddLongMono     );          r &= GetSymbol( AddLongStereo   );          r &= GetSymbol( AddLongsMono    );          r &= GetSymbol( AddLongsStereo  );          r &= GetSymbol( AddByteMonoB    );          r &= GetSymbol( AddByteStereoB  );          r &= GetSymbol( AddBytesMonoB   );          r &= GetSymbol( AddBytesStereoB );          r &= GetSymbol( AddWordMonoB    );          r &= GetSymbol( AddWordStereoB  );          r &= GetSymbol( AddWordsMonoB   );          r &= GetSymbol( AddWordsStereoB );          r &= GetSymbol( AddLongMonoB    );          r &= GetSymbol( AddLongStereoB  );          r &= GetSymbol( AddLongsMonoB   );          r &= GetSymbol( AddLongsStereoB );          r &= GetSymbol( AddLofiByteMono     );          r &= GetSymbol( AddLofiByteStereo   );          r &= GetSymbol( AddLofiBytesMono    );          r &= GetSymbol( AddLofiBytesStereo  );          r &= GetSymbol( AddLofiWordMono     );          r &= GetSymbol( AddLofiWordStereo   );          r &= GetSymbol( AddLofiWordsMono    );          r &= GetSymbol( AddLofiWordsStereo  );          r &= GetSymbol( AddLofiLongMono     );          r &= GetSymbol( AddLofiLongStereo   );          r &= GetSymbol( AddLofiLongsMono    );          r &= GetSymbol( AddLofiLongsStereo  );          r &= GetSymbol( AddLofiByteMonoB    );          r &= GetSymbol( AddLofiByteStereoB  );          r &= GetSymbol( AddLofiBytesMonoB   );          r &= GetSymbol( AddLofiBytesStereoB );          r &= GetSymbol( AddLofiWordMonoB    );          r &= GetSymbol( AddLofiWordStereoB  );          r &= GetSymbol( AddLofiWordsMonoB   );          r &= GetSymbol( AddLofiWordsStereoB );          r &= GetSymbol( AddLofiLongMonoB    );          r &= GetSymbol( AddLofiLongStereoB  );          r &= GetSymbol( AddLofiLongsMonoB   );          r &= GetSymbol( AddLofiLongsStereoB );          if( r != 0 )          {            char buffer[ 2 ] = "0";                    GetVar( "PowerPC/UseDisable", buffer, sizeof buffer, 0 );                    if( buffer[ 0 ] == '1' )            {              // OK, then...            }            else            {              Req( "The WarpUp variable 'PowerPC/UseDisable' must be '1'." );              AHIUnloadObject( PPCObject );              PPCObject  = NULL;              MixBackend = MB_NATIVE;            }          }          else          {            Req( "Unable to fetch all symbols from ELF object." );            AHIUnloadObject( PPCObject );            PPCObject  = NULL;            MixBackend = MB_NATIVE;          }        }        else        {          Req( "'ahi.device.elf' version %ld.%ld doesn't match "               "'ahi.device' version %ld.%ld.",               *version, *revision, Version, Revision );          AHIUnloadObject( PPCObject );          PPCObject  = NULL;          MixBackend = MB_NATIVE;        }      }      else      {        Req( "Unable to fetch version information from 'ahi.device.elf'." );        AHIUnloadObject( PPCObject );        PPCObject  = NULL;        MixBackend = MB_NATIVE;      }    }    else    {      MixBackend = MB_NATIVE;    }  }#endif  else   {    MixBackend = MB_NATIVE;  }  OpenahiCatalog(NULL, NULL);#if defined( __amithlon__ )  Req( "This is a *beta* release of AHI/x86,\n"       "using the generic 'C' mixing routines.\n"       "\n"       "Detailed bug reports and patches are welcome.\n"	 "/Martin Blom <martin@blom.org>\n" );#endif  return TRUE;}