← Back to team overview

widelands-dev team mailing list archive

Re: [Merge] lp:~widelands-dev/widelands/fix_setup_searchpaths into lp:widelands

 

Review: Resubmit



Diff comments:

> === modified file 'src/wlapplication.cc'
> --- src/wlapplication.cc	2014-09-20 09:37:47 +0000
> +++ src/wlapplication.cc	2014-09-29 19:43:04 +0000
> @@ -109,97 +109,6 @@
>  
>  }  // namespace
>  
> -
> -/**
> - * Sets the filelocators default searchpaths (partly OS specific)
> - */
> -// TODO(unknown): Handle exception FileTypeError
> -// TODO(unknown): Handle case when \e no data can be found
> -void WLApplication::setup_searchpaths(std::string argv0)
> -{
> -	try {
> -#if defined (__APPLE__) || defined(_WIN32)
> -		// on mac and windows, the default data dir is relative to the executable directory
> -		std::string s = get_executable_path();
> -		log("Adding executable directory to search path\n");
> -		g_fs->add_file_system(&FileSystem::create(s));
> -#else
> -		log ("Adding directory:%s\n", INSTALL_PREFIX "/" INSTALL_DATADIR);
> -		g_fs->add_file_system //  see config.h
> -			(&FileSystem::create
> -			 	(std::string(INSTALL_PREFIX) + '/' + INSTALL_DATADIR));
> -#endif
> -	}
> -	catch (FileNotFoundError &) {}
> -	catch (FileAccessDeniedError & e) {
> -		log("Access denied on %s. Continuing.\n", e.m_filename.c_str());
> -	}
> -	catch (FileTypeError &) {
> -		//TODO(unknown): handle me
> -	}
> -
> -	try {
> -#ifdef __linux__
> -		// if that fails, search in FHS standard location (obviously UNIX-only)
> -		log ("Adding directory:/usr/share/games/widelands\n");
> -		g_fs->add_file_system(&FileSystem::create("/usr/share/games/widelands"));
> -#endif
> -	}
> -	catch (FileNotFoundError &) {}
> -	catch (FileAccessDeniedError & e) {
> -		log("Access denied on %s. Continuing.\n", e.m_filename.c_str());
> -	}
> -	catch (FileTypeError &) {
> -		//TODO(unknown): handle me
> -	}
> -
> -	try {
> -#ifndef __APPLE__
> -		/*
> -		 * Why? Please do NOT attempt do read from random places.
> -		 * absolute fallback directory is the CWD
> -		 */
> -		log ("Adding directory:.\n");
> -		g_fs->add_file_system(&FileSystem::create("."));
> -#endif
> -	}
> -	catch (FileNotFoundError &) {}
> -	catch (FileAccessDeniedError & e) {
> -		log("Access denied on %s. Continuing.\n", e.m_filename.c_str());
> -	}
> -	catch (FileTypeError &) {
> -		//TODO(unknown): handle me
> -	}
> -
> -	//TODO(unknown): what if all the searching failed? Bail out!
> -
> -	// the directory the executable is in is the default game data directory
> -	std::string::size_type slash = argv0.rfind('/');
> -	std::string::size_type backslash = argv0.rfind('\\');
> -
> -	if
> -		(backslash != std::string::npos &&
> -		 (slash == std::string::npos || backslash > slash))
> -		slash = backslash;
> -
> -	if (slash != std::string::npos) {
> -		argv0.erase(slash);
> -		if (argv0 != ".") {
> -			try {
> -				log ("Adding directory: %s\n", argv0.c_str());
> -				g_fs->add_file_system(&FileSystem::create(argv0));
> -			}
> -			catch (FileNotFoundError &) {}
> -			catch (FileAccessDeniedError & e) {
> -				log ("Access denied on %s. Continuing.\n", e.m_filename.c_str());
> -			}
> -			catch (FileTypeError &) {
> -				//TODO(unknown): handle me
> -			}
> -		}
> -	}
> -}
> -
>  void WLApplication::setup_homedir() {
>  	//If we don't have a home directory don't do anything
>  	if (m_homedir.size()) {
> @@ -263,7 +172,7 @@
>  m_mouse_locked         (0),
>  m_mouse_compensate_warp(0, 0),
>  m_should_die           (false),
> -m_default_datadirs     (true),
> +m_use_default_datadir     (true),
>  #ifdef _WIN32
>  m_homedir(FileSystem::get_homedir() + "\\.widelands"),
>  #else
> @@ -288,8 +197,13 @@
>  
>  	setup_homedir();
>  	init_settings();
> -	if (m_default_datadirs)
> -		setup_searchpaths(m_commandline["EXENAME"]);
> +
> +	if (m_use_default_datadir) {
> +		const std::string default_datadir =
> +		   std::string(INSTALL_PREFIX) + "/" + std::string(INSTALL_DATADIR);
> +		log("Adding directory: %s\n", default_datadir.c_str());
> +		g_fs->AddFileSystem(&FileSystem::Create(default_datadir));

done.

> +	}
>  	init_language(); // search paths must already be set up
>  	cleanup_replays();
>  
> @@ -1069,8 +983,8 @@
>  
>  	if (m_commandline.count("datadir")) {
>  		log ("Adding directory: %s\n", m_commandline["datadir"].c_str());
> +		m_use_default_datadir = false;
>  		g_fs->add_file_system(&FileSystem::create(m_commandline["datadir"]));
> -		m_default_datadirs = false;
>  		m_commandline.erase("datadir");
>  	}
>  
> 
> === modified file 'src/wlapplication.h'
> --- src/wlapplication.h	2014-09-18 18:46:22 +0000
> +++ src/wlapplication.h	2014-09-29 19:43:04 +0000
> @@ -202,7 +202,6 @@
>  	void parse_commandline(int argc, char const * const * argv);
>  	void handle_commandline_parameters();
>  
> -	void setup_searchpaths(std::string argv0);
>  	void setup_homedir();
>  
>  	void cleanup_replays();
> @@ -210,9 +209,7 @@
>  	bool redirect_output(std::string path = "");
>  
>  	/**
> -	 * The commandline, conveniently repackaged
> -	 * This is usually not empty, it contains at least the tuple
> -	 * {"EXENAME", argv0}
> +	 * The commandline, conveniently repackaged.
>  	 */
>  	std::map<std::string, std::string> m_commandline;
>  
> @@ -249,7 +246,7 @@
>  	bool   m_should_die;
>  
>  	//do we want to search the default places for widelands installs
> -	bool   m_default_datadirs;
> +	bool   m_use_default_datadir;
>  	std::string m_homedir;
>  
>  	/// flag indicating if stdout and stderr have been redirected
> 


-- 
https://code.launchpad.net/~widelands-dev/widelands/fix_setup_searchpaths/+merge/236410
Your team Widelands Developers is subscribed to branch lp:~widelands-dev/widelands/fix_setup_searchpaths.


References