Changed: Create new client.cfg

This commit is contained in:
kervala 2016-03-11 09:44:21 +01:00
parent 56bbcfacd3
commit ef4ce1d0b0
2 changed files with 54 additions and 9 deletions

View file

@ -17,6 +17,10 @@
#include "stdpch.h" #include "stdpch.h"
#include "config.h" #include "config.h"
#include "nel/misc/common.h"
#include "nel/misc/i18n.h"
#include "nel/misc/path.h"
CConfig::CConfig() CConfig::CConfig()
{ {
} }
@ -25,17 +29,50 @@ CConfig::~CConfig()
{ {
} }
bool CConfig::load( const char *fileName ) bool CConfig::create(const std::string &configFileName, const std::string &defaultFileName)
{
NLMISC::CFile::createDirectoryTree(NLMISC::CFile::getPath(configFileName));
// create the basic .cfg
FILE *fp = NLMISC::nlfopen(configFileName, "w");
if (fp == NULL) return false;
// store full path to default config file
fprintf(fp, "RootConfigFilename = \"%s\";\n", defaultFileName.c_str());
// get current locale
std::string lang = NLMISC::CI18N::getSystemLanguageCode();
const std::vector<std::string> &languages = NLMISC::CI18N::getLanguageCodes();
// search if current locale is defined in language codes
for(uint i = 0; i < languages.size(); ++i)
{
if (lang == languages[i])
{
// store the language code in the config file
fprintf(fp, "LanguageCode = \"%s\";\n", lang.c_str());
break;
}
}
fclose(fp);
return true;
}
bool CConfig::load(const std::string &fileName)
{ {
try try
{ {
cf.load(fileName); cf.load(fileName);
std::string def = getString("RootConfigFilename"); std::string def = getString("RootConfigFilename");
if( def.compare( "" ) != 0 ) if (!def.empty())
dcf.load(def); dcf.load(def);
} }
catch( NLMISC::Exception &e ) catch (const NLMISC::Exception &e)
{ {
nlwarning( "%s", e.what() ); nlwarning( "%s", e.what() );
return false; return false;
@ -51,7 +88,7 @@ bool CConfig::reload()
cf.clear(); cf.clear();
cf.reparse(); cf.reparse();
} }
catch( NLMISC::Exception &e ) catch (const NLMISC::Exception &e)
{ {
nlwarning( "%s", e.what() ); nlwarning( "%s", e.what() );
return false; return false;
@ -112,7 +149,7 @@ bool CConfig::save()
{ {
cf.save(); cf.save();
} }
catch( NLMISC::Exception &e ) catch (const NLMISC::Exception &e)
{ {
nlwarning( "%s", e.what() ); nlwarning( "%s", e.what() );
return false; return false;

View file

@ -28,12 +28,20 @@ public:
CConfig(); CConfig();
~CConfig(); ~CConfig();
/**
@brief Create a config file.
@param fileName - The config file to create
@param defaultFileName - The default config file to use
@return Returns true on success, returns false on failure.
*/
bool create(const std::string &fileName, const std::string &defaultFileName);
/** /**
@brief Loads a config file. @brief Loads a config file.
@param fileName - The file to load @param fileName - The file to load
@return Returns true on success, returns false on failure. @return Returns true on success, returns false on failure.
*/ */
bool load( const char *fileName ); bool load(const std::string &fileName);
/** /**
@brief Reloads the contents of the config file @brief Reloads the contents of the config file