add: { char buf[2];  if( GetVar( "AHINoBetaRequester", buf, sizeof( buf ), 0 ) == -1 ) { Req( "This is a beta release of AHI. The latest supported \n" "version is 4.180, which can be found at\n" "<URL:http: "\n" "Detailed bug reports and patches are welcome.\n" "Sound kernel in use: %s.\n" "\n" "/Martin Blom <martin@blom.org>\n", PPCObject == NULL ? CPU : ( PPCLibBase == NULL ? "WarpUp" : "PowerUp" ) );  } }
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;  }  timeval = (struct timeval *) AllocVec( sizeof(struct timeval),                                         MEMF_PUBLIC | MEMF_CLEAR);  if( timeval == NULL)  {    Req( "Out of memory." );    return FALSE;  }  if( OpenDevice( "timer.device",                  UNIT_MICROHZ,                  (struct IORequest *)                  TimerIO,                  0) != 0 )  {    Req( "Unable to open 'timer.device'." );    return FALSE;  }  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;  }#ifndef VERSION68K  /* PPC/PowerPC library loading     Strategy:      1) If WarpUp is running, use it.      2) If WarpUp is is not running, but PowerUp is, use it      3) If neither of them are running, try WarpUp.      4) Finally, try PowerUp.     Result:      If both kernels are running, WarpUp will be used, since the PowerUp      kernel is the ppc.library emulation. (This is going to work until      somebody writes a WarpUp emulation for ppc.library....)      If only one kernel is already running, it will be used.      WarpUp will be used if no kernel is loaded, and WarpUp exists, since      WarpUp was selected for OS 3.5.  If WarpUp was not found, PowerUp      will be used.  */  // Check if WarpUp or PowerUp are already installed...  Forbid();  PowerPCBase = (struct Library *) FindName( &SysBase->LibList,                                             "powerpc.library" );  PPCLibBase  = (struct Library *) FindName( &SysBase->LibList,                                             "ppc.library" );  Permit();  if( PowerPCBase != NULL       || ( PowerPCBase == NULL && PPCLibBase == NULL ) )  {    // Open WarpUp    PowerPCBase = OpenLibrary( "powerpc.library", 14 );    PPCLibBase  = NULL;  }  if( PPCLibBase != NULL       || ( PPCLibBase == NULL && PowerPCBase == NULL ) )  {    // Open PoweUp    PPCLibBase  = OpenLibrary( "ppc.library", 46 );    PowerPCBase = NULL;  }  if( PPCLibBase != NULL       && PPCLibBase->lib_Version == 46       && PPCLibBase->lib_Revision < 26 )  {    Req( "Need at least version 46.26 of 'ppc.library'." );    return FALSE;  }  if( PPCLibBase != NULL || PowerPCBase != NULL )  {    ULONG* version = NULL;    ULONG* revision = NULL;    /* Load our code to PPC..  */    PPCObject = AHILoadObject( "DEVS:ahi.elf" );    if( PPCObject != NULL )    {      AHIGetELFSymbol( "__LIB_Version", (void*) &version );      AHIGetELFSymbol( "__LIB_Revision", (void*) &revision );          if( version == NULL || revision == NULL )      {        Req( "Unable to fetch version information from 'ahi.elf'." );      }      if( *version != Version || *revision != Revision )      {        Req( "'ahi.elf' version %ld.%ld doesn't match 'ahi.device' %ld.%ld.",             *version, *revision, Version, Revision );        return FALSE;      }    }    else    {      // PPC kernel found, but no ELF object. m68k mixing will be used.    }  }#endif  OpenahiCatalog(NULL, NULL);  return TRUE;}