www.pudn.com > MP3CORD.rar > bootstrap.cpp


/*____________________________________________________________________________ 
	 
	FreeAmp - The Free MP3 Player 
 
	Portions Copyright (C) 1999 EMusic.com  
 
	This program is free software; you can redistribute it and/or modify 
	it under the terms of the GNU General Public License as published by 
	the Free Software Foundation; either version 2 of the License, or 
	(at your option) any later version. 
 
	This program is distributed in the hope that it will be useful, 
	but WITHOUT ANY WARRANTY; without even the implied warranty of 
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
	GNU General Public License for more details. 
 
	You should have received a copy of the GNU General Public License 
	along with this program; if not, write to the Free Software 
	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 
	 
	$Id: bootstrap.cpp,v 1.7 1999/12/10 04:25:35 elrod Exp $ 
____________________________________________________________________________*/ 
 
#include  
#include  
#include  
 
#include  
 
#include  
 
#include "config.h" 
#include "player.h" 
#include "event.h" 
#include "ui.h" 
#include "list.h" 
#include "hashtable.h" 
#include "semaphore.h" 
#include "registrar.h" 
#include "log.h" 
#include "facontext.h" 
#include "beosprefs.h" 
 
int main(int argc, char **argv) { 
 
	// *** BeOS specific section begin *** 
 
	// Add the current directory to the ADDON_PATH environment var. 
	char*	old_addon_path = getenv( "ADDON_PATH" ); 
	char*	new_addon_path = new char[ strlen( old_addon_path ) + 20 ]; 
	sprintf( new_addon_path, "ADDON_PATH=%s:.", old_addon_path ); 
	if ( putenv( new_addon_path ) != 0 ) 
	{ 
		cerr << "couldn't add . to the environment variable ADDON_PATH" << endl; 
	} 
 
	// BSoundPlayer needs BApplication. 
	BApplication*	app = new BApplication( "application/x-vnd.freeamp-freeamp" ); 
 
	// *** BeOS specific section end *** 
 
    FAContext *context = new FAContext; 
    context->prefs = new BeOSPrefs(); 
    context->log = new LogFile("freeamp.log"); 
    Registrar *registrar= new Registrar(); 
    Registry *lmc; 
    Registry *pmi; 
    Registry *pmo; 
    Registry* ui; 
     
    lmc = new Registry(); 
 
//    registrar->SetSubDir("lmc"); 
    registrar->SetSubDir(""); 
    registrar->SetSearchString("*.lmc"); 
    registrar->InitializeRegistry(lmc,context->prefs); 
 
//    registrar->SetSubDir("io"); 
    registrar->SetSubDir(""); 
    registrar->SetSearchString("*.pmi"); 
    pmi = new Registry; 
    registrar->InitializeRegistry(pmi,context->prefs); 
 
    registrar->SetSearchString("*.pmo"); 
    pmo = new Registry; 
    registrar->InitializeRegistry(pmo,context->prefs); 
 
 
//    registrar->SetSubDir("ui"); 
    registrar->SetSubDir(""); 
    registrar->SetSearchString("*.ui"); 
    ui = new Registry; 
    registrar->InitializeRegistry(ui,context->prefs); 
 
    delete registrar; 
 
    Semaphore *termSemaphore; 
    termSemaphore = new Semaphore(); 
    Player *pP = Player::GetPlayer(context); 
 
    pP->RegisterLMCs(lmc); 
    pP->RegisterPMIs(pmi); 
    pP->RegisterPMOs(pmo); 
    pP->RegisterUIs(ui); 
 
    if (pP->SetArgs(argc,argv)) { 
		pP->SetTerminationSemaphore(termSemaphore); 
		pP->Run(); 
	 
		termSemaphore->Wait(); 
    } 
     
    delete pP; 
    delete context; 
    delete app; 
    return 0; 
}