void CALLBACK ExportCallBack(LONG lPlayHandle, DWORD dwTotalSize, DWORD dwDownLoadSize, DWORD dwUser) { CConfigFile* dlg = (CConfigFile*)dwUser; if(NULL == dlg) { return; } if (-1 != dwDownLoadSize) //Exporting data { if (dwDownLoadSize > 0) { dlg->m_progressExport.SetPos(dwTotalSize*100/dwDownLoadSize); } } else //Export process completed { CLIENT_StopExportCfgFile(dlg->m_lExport); dlg->m_progressExport.SetPos(0); ((CButton*)dlg->GetDlgItem(IDC_BUTTON_IMPORT))->EnableWindow(TRUE); ((CButton*)dlg->GetDlgItem(IDC_BUTTON_STOP_IMPORT))->EnableWindow(FALSE); ((CButton*)dlg->GetDlgItem(IDC_BUTTON_EXPORT))->EnableWindow(TRUE); ((CButton*)dlg->GetDlgItem(IDC_BUTTON_STOP_EXPORT))->EnableWindow(FALSE); } // dlg->m_dwExportTotalSize = dwTotalSize; // dlg->m_dwExportDownloadSize = dwDownLoadSize; }
/* Read config file. */ int CControlLogic::ReadConfigFile(void) { CConfigFile ConfigFile; if(ConfigFile.GetLoadConfigFile((char *)"downFile.txt")) return (ConfigFile.PerformParse((char *)"ambtconfig.txt")); else return 0; }
//------------------------------------------------------------------------- // y-func : get_header_data //------------------------------------------------------------------------- std::string CyParser::func_set_language(CyhookHandler *, std::string para) { if (para != "") { CConfigFile *Config = new CConfigFile(','); Config->loadConfig(HTTPD_CONFIGFILE); Config->setString("Language.selected", para); Config->saveConfig(HTTPD_CONFIGFILE); yhttpd_reload_config(); } return ""; }
bool CProject::Open(const char* filename) { Destroy(); // set the game directory m_Directory = filename; if (m_Directory.rfind('\\') != std::string::npos) m_Directory[m_Directory.rfind('\\')] = 0; // set the game filename m_Filename = filename; if (1) { char directory[MAX_PATH]; GetCurrentDirectory(MAX_PATH, directory); if (SetCurrentDirectory(m_Directory.c_str()) == 0) return false; FILE* file = fopen(m_Filename.c_str(), "a"); if (!file) return false; fclose(file); SetCurrentDirectory(directory); } // load the game.sgm CConfigFile config; if (!config.Load(m_Filename.c_str())) return false; m_GameTitle = config.ReadString("", "name", "Untitled"); m_Author = config.ReadString("", "author", "Unknown"); m_Description = config.ReadString("", "description", ""); m_GameScript = config.ReadString("", "script", ""); // screen dimensions m_ScreenWidth = config.ReadInt("", "screen_width", 320); m_ScreenHeight = config.ReadInt("", "screen_height", 240); RefreshItems(); return true; }
void CTimerManager::saveEventsToConfig() { CConfigFile *config = new CConfigFile(','); config->clear(); CTimerEventMap::iterator pos = events.begin(); for(;pos != events.end();pos++) { CTimerEvent *event = pos->second; event->saveToConfig(config); } config->saveConfig(CONFIGFILE); delete config; }
// ----------------------------------------------------------------------- bool load (const string &sFilename) { FILE * f = fopen (sFilename.c_str(), "rt"); if (f == NULL) return false; else fclose (f); try { CConfigFile cf; cf.load (sFilename); // Out CConfigFile::CVar &cvOutputIGDir = cf.getVar("OutputIGDir"); OutputIGDir = cvOutputIGDir.asString(); // In CConfigFile::CVar &cvInputIGDir = cf.getVar("InputIGDir"); InputIGDir = cvInputIGDir.asString(); CConfigFile::CVar &cvCellSize = cf.getVar("CellSize"); CellSize = cvCellSize.asFloat(); CConfigFile::CVar &cvHeightMapFile1 = cf.getVar("HeightMapFile1"); HeightMapFile1 = cvHeightMapFile1.asString(); CConfigFile::CVar &cvZFactor1 = cf.getVar("ZFactor1"); ZFactor1 = cvZFactor1.asFloat(); CConfigFile::CVar &cvHeightMapFile2 = cf.getVar("HeightMapFile2"); HeightMapFile2 = cvHeightMapFile2.asString(); CConfigFile::CVar &cvZFactor2 = cf.getVar("ZFactor2"); ZFactor2 = cvZFactor2.asFloat(); CConfigFile::CVar &cvLandFile = cf.getVar("LandFile"); LandFile = cvLandFile.asString(); } catch (const EConfigFile &e) { string sTmp = string("ERROR : Error in config file : ") + e.what() + "\n"; outString (sTmp); return false; } return true; }
// String version bool getVarFromConfigFile(CConfigFile &cf, const string &name, string &variable, const string &defaultValue = string("")) { CConfigFile::CVar *ptr = cf.getVarPtr(name); bool success; variable = ((success = (ptr != NULL)) ? ptr->asString() : defaultValue); return success; }
// Float version bool getVarFromConfigFile(CConfigFile &cf, const string &name, float &variable, float defaultValue = 0.0f) { CConfigFile::CVar *ptr = cf.getVarPtr(name); bool success; variable = ((success = (ptr != NULL)) ? ptr->asFloat() : defaultValue); return success; }
// Bool version bool getVarFromConfigFile(CConfigFile &cf, const string &name, bool &variable, bool defaultValue = false) { CConfigFile::CVar *ptr = cf.getVarPtr(name); bool success; variable = ((success = (ptr != NULL)) ? (ptr->asInt() != 0) : defaultValue); return success; }
void LoadKeyCfg () { // Path of the dll HMODULE hModule = hInstance; if (hModule) { char sModulePath[256]; int res=GetModuleFileName(hModule, sModulePath, 256); if (res) { // split path char drive[256]; char dir[256]; _splitpath (sModulePath, drive, dir, NULL, NULL); // Make a new path char cgfPath[256]; _makepath (cgfPath, drive, dir, "keys", ".cfg"); CConfigFile cf; // Load and parse "test.txt" file cf.load (cgfPath); // For each keys for (uint key=0; key<KeyCounter; key++) { // go try { // Get the foo variable (suppose it's a string variable) CConfigFile::CVar &value= cf.getVar (PainterKeysName[key]); // Get value PainterKeys[key]=value.asInt (); } catch (EConfigFile &e) { // Something goes wrong... catch that const char* what=e.what(); } } } } }
bool CBuildInfo::HasData() { v_info.clear(); #ifdef USED_COMPILER build_info_t compiler = {BI_TYPE_ID_USED_COMPILER, LOCALE_BUILDINFO_COMPILED_WITH, USED_COMPILER}; v_info.push_back(compiler); #endif #ifdef USED_CXXFLAGS string cxxflags = USED_CXXFLAGS; cxxflags = trim(cxxflags); // Remove double spaces size_t pos = cxxflags.find(" "); while (pos != string::npos) { cxxflags.erase(pos, 1); pos = cxxflags.find(" ", pos); } build_info_t flags = {BI_TYPE_ID_USED_CXXFLAGS, LOCALE_BUILDINFO_COMPILER_FLAGS, cxxflags}; v_info.push_back(flags); #endif #ifdef USED_BUILD build_info_t build = {BI_TYPE_ID_USED_BUILD , LOCALE_BUILDINFO_COMPILED_ON, USED_BUILD}; v_info.push_back(build); #endif CComponentsText utext; build_info_t kernel = {BI_TYPE_ID_USED_KERNEL, LOCALE_BUILDINFO_KERNEL, utext.getTextFromFile("/proc/version")}; v_info.push_back(kernel); #if 0 CConfigFile data ('\t'); data.loadConfig("/.version"); build_info_t creator = {BI_TYPE_ID_CREATOR, LOCALE_BUILDINFO_CREATOR, data.getString("creator", "n/a")}; v_info.push_back(creator); #endif if (v_info.empty()){ DisplayInfoMessage("No Informations available. Please report!"); return false; } return true; }
void loadConfigFile () { FILE *fp = fopen ("client.cfg", "rt"); if (fp == NULL) { createConfigFile(); } else { fclose (fp); } ConfigFile.load ("client.cfg"); // set internet simulation values CUdpSimSock::setSimValues (ConfigFile); ServerAddr = ConfigFile.getVar("ServerAddress").asString(); ConnectionName = ConfigFile.getVar("ConnectionName").asString(); if (ConnectionName.empty()) { InfoLog->displayRawNL ("Please, enter a connection name"); InfoLog->displayRawNL ("(only alphanumeric character limited to 30 character, no space)"); InfoLog->displayRawNL ("For example enter your name and/or your location (ie: \"AceHome\"),"); InfoLog->displayRawNL ("It'll be use to find your stat file easier:"); char cn[128]; if (fgets (cn, 127, stdin) == NULL) { exit ("Error during the keyboard scanning"); } ConnectionName = cn; checkConnectionName (); ConfigFile.getVar ("ConnectionName").setAsString(ConnectionName); ConfigFile.save (); } else { checkConnectionName (); } }
bool CProject::Save() const { SetCurrentDirectory(m_Directory.c_str()); CConfigFile config; config.Load(m_Filename.c_str()); config.WriteString("", "name", m_GameTitle.c_str()); config.WriteString("", "author", m_Author.c_str()); config.WriteString("", "description", m_Description.c_str()); config.WriteString("", "script", m_GameScript.c_str()); // screen dimensions config.WriteInt("", "screen_width", m_ScreenWidth); config.WriteInt("", "screen_height", m_ScreenHeight); config.Save(m_Filename.c_str()); return true; }
//============================================================================= // y-func : Functions for Neutrino //============================================================================= //------------------------------------------------------------------------- // y-func : mount_get_list //------------------------------------------------------------------------- std::string CNeutrinoYParser::func_mount_get_list(CyhookHandler *, std::string) { CConfigFile *Config = new CConfigFile(','); std::string ysel, ytype, yip, ylocal_dir, ydir, ynr, yresult; int yitype; Config->loadConfig(NEUTRINO_CONFIGFILE); for(unsigned int i=0; i <= 7; i++) { ynr=itoa(i); ysel = ((i==0) ? "checked=\"checked\"" : ""); yitype = Config->getInt32("network_nfs_type_"+ynr,0); ytype = ( (yitype==0) ? "NFS" :((yitype==1) ? "CIFS" : "FTPFS") ); yip = Config->getString("network_nfs_ip_"+ynr,""); ydir = Config->getString("network_nfs_dir_"+ynr,""); ylocal_dir = Config->getString("network_nfs_local_dir_"+ynr,""); if(ydir != "") ydir="("+ydir+")"; yresult += string_printf("<input type='radio' name='R1' value='%d' %s />%d %s - %s %s %s<br/>", i,ysel.c_str(),i,ytype.c_str(),yip.c_str(),ylocal_dir.c_str(), ydir.c_str()); } delete Config; return yresult; }
void LoadConfiguration(std::string sphere_dir) { CConfigFile file; file.Load((sphere_dir + "/system/video/sdl32.cfg").c_str()); Config.fullscreen = file.ReadBool("sdl32", "Fullscreen", false); Config.vsync = file.ReadBool("sdl32", "VSync", false); Config.scale = file.ReadBool("sdl32", "Scale", false); Config.filter = file.ReadInt ("sdl32", "Filter", 0); int vexpand = file.ReadInt ("sdl32", "VExpand", 0); int hexpand = file.ReadInt ("sdl32", "HExpand", 0); if (vexpand < 0 || vexpand > 1024) vexpand = 0; if (hexpand < 0 || hexpand > 1024) hexpand = 0; Config.border.top = (int)(vexpand / 2); Config.border.bottom = (int)(vexpand / 2) + (vexpand % 2); Config.border.left = (int)(hexpand / 2); Config.border.right = (int)(hexpand / 2) + (hexpand % 2); }
void init() { registerSerial3d(); try { #ifdef NL_OS_UNIX std::string homeDir = getenv("HOME"); NLMISC::CPath::addSearchPath( homeDir + "/.nel"); #endif // NL_OS_UNIX NLMISC::CPath::addSearchPath(NL_BIB_CFG); CConfigFile cf; uint i; cf.load("build_ig_boxes.cfg"); Output = getString(cf, "Output"); // nlinfo("Output=%s", Output.c_str()); CConfigFile::CVar &cvIGs = cf.getVar("IGs"); for (i=0; i<cvIGs.size(); i++) { IGs.push_back(cvIGs.asString(i)); } CConfigFile::CVar &cvPathes = cf.getVar("Pathes"); for (i=0; i<cvPathes.size(); ++i) { nlinfo("Using search path %s", cvPathes.asString(i).c_str()); CPath::addSearchPath(cvPathes.asString(i)); } } catch (EConfigFile &e) { printf ("Problem in config file : %s\n", e.what ()); } }
int main(int argc, char* argv[]) { //_CrtSetBreakAlloc(157); try { CConfigFile configXMLFile; CSimionApp* pApp = 0; //initialisation required for all apps: create the comm pipe and load the xml configuration file, .... if (argc > 2) CLogger::createOutputPipe(argv[2]); if (argc <= 1) CLogger::logMessage(MessageType::Error, "Too few parameters: no config file provided"); CConfigNode* pParameters= configXMLFile.loadFile(argv[1]); if (!pParameters) throw std::exception("Wrong experiment configuration file"); if (!strcmp("RLSimion", pParameters->getName())) pApp = new RLSimionApp(pParameters); if (pApp) { pApp->setOutputDirectory(argv[1]); pApp->run(); delete pApp; } else throw std::exception("Wrong experiment configuration file"); } catch (std::exception& e) { CLogger::logMessage(MessageType::Error, e.what()); } //_CrtDumpMemoryLeaks(); return 0; }
sint32 getInt (const string &var) { sint32 ret = 0; try { CConfigFile::CVar &cvString = cf.getVar (var); ret = cvString.asInt (); } catch (EConfigFile &/*e*/) { outString (string("WARNING : variable not found : ") + var + " in " + FileName + "\n"); } return ret; }
void CBouquetManager::makeRemainingChannelsBouquet(void) { ZapitChannelList unusedChannels; set<t_channel_id> chans_processed; bool tomake = config.getBool("makeRemainingChannelsBouquet", true); for (tallchans::iterator it = allchans.begin(); it != allchans.end(); it++) it->second.number = 0; int i = 1, j = 1; for (vector<CZapitBouquet*>::const_iterator it = Bouquets.begin(); it != Bouquets.end(); it++) { for (vector<CZapitChannel*>::iterator jt = (*it)->tvChannels.begin(); jt != (*it)->tvChannels.end(); jt++) { if(tomake) chans_processed.insert((*jt)->getChannelID()); if(!(*jt)->number) (*jt)->number = i++; if(!(*jt)->pname && !(*it)->bUser) (*jt)->pname = (char *) (*it)->Name.c_str(); } for (vector<CZapitChannel*>::iterator jt = (*it) ->radioChannels.begin(); jt != (*it)->radioChannels.end(); jt++) { if(tomake) chans_processed.insert((*jt)->getChannelID()); if(!(*jt)->number) (*jt)->number = j++; if(!(*jt)->pname && !(*it)->bUser) (*jt)->pname = (char *) (*it)->Name.c_str(); } } if(!tomake) return; // TODO: use locales remainChannels = addBouquet((Bouquets.size() == 0) ? "All Channels" : "Other", false); // UTF-8 encoded for (tallchans::iterator it = allchans.begin(); it != allchans.end(); it++) if (chans_processed.find(it->first) == chans_processed.end()) unusedChannels.push_back(&(it->second)); sort(unusedChannels.begin(), unusedChannels.end(), CmpChannelByChName()); for (ZapitChannelList::const_iterator it = unusedChannels.begin(); it != unusedChannels.end(); it++) { remainChannels->addService(findChannelByChannelID((*it)->getChannelID())); } if ((remainChannels->tvChannels.empty()) && (remainChannels->radioChannels.empty())) { deleteBouquet(remainChannels); remainChannels = NULL; return; } for (vector<CZapitChannel*>::iterator jt = remainChannels->tvChannels.begin(); jt != remainChannels->tvChannels.end(); jt++) if(!(*jt)->number) (*jt)->number = i++; for (vector<CZapitChannel*>::iterator jt = remainChannels->radioChannels.begin(); jt != remainChannels->radioChannels.end(); jt++) if(!(*jt)->number) (*jt)->number = j++; }
/** Generate list of spell */ static void generateSpellList(CConfigFile &cf, const std::string &sheetName) { CConfigFile::CVar *spellList = cf.getVarPtr("spell_list"); if (!spellList) { nlwarning("Can't read spell list"); return; } COFile f; if (!f.open(sheetName, false, true)) { nlwarning("Can't write %s", sheetName.c_str()); return; } try { COXml xmlStreamOut; xmlStreamOut.init(&f); xmlStreamOut.xmlPush("FORM"); IStream &xmlStream = xmlStreamOut; xmlStream.xmlPush("STRUCT"); xmlStream.xmlPushBegin("ARRAY"); xmlStream.xmlSetAttrib("Name"); std::string name = "List"; xmlStream.serial(name); xmlStream.xmlPushEnd(); for(uint k = 0; k < (uint) spellList->size(); ++k) { std::vector<std::string> result; NLMISC::splitString(spellList->asString(k), "|", result); if (result.size() < 2) { nlwarning("Should provide at list spell name and id"); } xmlStream.xmlPush("STRUCT"); writeAtom(xmlStream, "ID", result[1]); writeAtom(xmlStream, "SheetBaseName", result[0]); xmlStream.xmlPop(); } xmlStream.xmlPop(); // STRUCT xmlStream.xmlPop(); // FORM } catch(const EStream &) { nlwarning("Cant write %s", sheetName.c_str()); } }
bool loadFromCfg (const string &filename) { FileName = filename; FILE * f = fopen (filename.c_str(), "rt"); if (f == NULL) return false; else fclose (f); try { cf.load (filename); this->OutZoneDir = getStr ("OutZoneDir"); this->OutIGDir = getStr ("OutIGDir"); this->RefZoneDir = getStr ("RefZoneDir"); this->RefIGDir = getStr ("RefIGDir"); this->LigoBankDir = getStr ("LigoBankDir"); this->TileBankFile = getStr ("TileBankFile"); this->ColorMapFile = getStr ("ColorMapFile"); this->HeightMapFile = getStr ("HeightMapFile1"); this->ZFactor = getFloat ("ZFactor1"); this->HeightMapFile2 = getStr ("HeightMapFile2"); this->ZFactor2 = getFloat ("ZFactor2"); this->Light = (uint8)getInt ("ZoneLight"); this->CellSize = getFloat ("CellSize"); this->Threshold = getFloat ("Threshold"); this->ZoneRegionFile = getStr ("ZoneRegionFile"); this->ContinentFile = getStr("ContinentFile"); this->RefCMBDir = getStr("RefCMBDir"); this->OutCMBDir = getStr("OutCMBDir"); this->AdditionnalIGInDir = getStr("AdditionnalIGInDir"); this->AdditionnalIGOutDir = getStr("AdditionnalIGOutDir"); this->ExportCollisions = getInt("ExportCollisions") != 0; this->ExportAdditionnalIGs = getInt("ExportAdditionnalIGs") != 0; this->DFNDir = getStr("DFNDir"); this->ContinentsDir = getStr("ContinentsDir"); } catch (EConfigFile &e) { string sTmp = string("ERROR : Error in config file : ") + e.what() + "\n"; outString (sTmp); return false; } return true; }
void CBouquetManager::saveBouquets(bool includeBouquetOthers) { FILE * bouq_fd; bool write_names = config.getBool("writeChannelsNames", true); unsigned int string_number = (strcmp(getFrontendName(), "sat") == 0) ? 1 : 0; const char * channel_printf_string = write_names ? printf_string_with_names[string_number] : printf_string_without_names[string_number]; if (includeBouquetOthers) makeRemainingChannelsBouquet(); bouq_fd = fopen(BOUQUETS_XML, "w"); fprintf(bouq_fd, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<zapit>\n"); for (BouquetList::const_iterator it = Bouquets.begin(); it != Bouquets.end(); ++it) { // TODO: use locales if (includeBouquetOthers || (((*it) != remainChannels) && (strncmp((*it)->Name.c_str(),"Neue Sender",11) != 0))) { //fprintf(bouq_fd, "\t<Bouquet name=\"%s\" hidden=\"%d\" locked=\"%d\">\n", fprintf(bouq_fd, "\t<Bouquet type=\"%01x\" bouquet_id=\"%04x\" name=\"%s\" hidden=\"%01x\" locked=\"%01x\">\n", (*it)->type, (*it)->bouquet_id, convert_UTF8_To_UTF8_XML((*it)->Name.c_str()).c_str(), (*it)->bHidden ? 1 : 0, (*it)->bLocked ? 1 : 0); writeChannelList(bouq_fd, (*it)->tvChannels , write_names, channel_printf_string); writeChannelList(bouq_fd, (*it)->radioChannels, write_names, channel_printf_string); fprintf(bouq_fd, "\t</Bouquet>\n"); } } fprintf(bouq_fd, "</zapit>\n"); fclose(bouq_fd); chmod(BOUQUETS_XML, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); }
/* * main */ void main (int argc, char **argv) { string result; CConfigFile ConfigFile; ConfigFile.load ("client.cfg"); string LSHost(ConfigFile.getVar("LSHost").asString()); char buf[256]; printf("Login: "******"Password: "******"Login").asString(); } if (Password.empty ()) { Password = ConfigFile.getVar("Password").asString(); } /* Try to connect to the login service and check the login, password and version of the client. * return an empty string if all go well */ result = CLoginClient::authenticate(LSHost+":49999", Login, Password, "sample"); if(!result.empty()) nlerror ("*** Authenticate failed '%s' ***", result.c_str()); // CLoginClient::ShardList contains all available shards for (uint i = 0; i < CLoginClient::ShardList.size (); i++) { nlinfo("*** shard %d is: %s (%d) ***", i, CLoginClient::ShardList[i].Name.c_str (), CLoginClient::ShardList[i].Id); } /* Try to connect to the last shard number in the list. * return an empty string if all go well */ string fs_ip, login_cookie; result = CLoginClient::wantToConnectToShard(CLoginClient::ShardList[CLoginClient::ShardList.size() - 1].Id, fs_ip, login_cookie); if (!result.empty()) nlerror("*** Select shard failed '%s' ***", result.c_str()); CLoginCookie cookie; cookie.setFromString(login_cookie); // who's idea was it to send the cookie as a string... CCallbackClient *cnx = new CCallbackClient(); result = CLoginClient::connectToShard(cookie, fs_ip, *cnx); if (!result.empty()) nlerror("*** Connection to the shard failed '%s' ***", result.c_str()); nlinfo ("*** Connection granted! You are connected on the frond end ***"); while (cnx->connected ()) { cnx->update (); nlSleep(10); } if( cnx->connected ()) cnx->disconnect (); delete cnx; }
///////////////////////////////////////////////////////////////////////////// // CConfigFile dialog void CALLBACK ImportCallBack(LONG lPlayHandle, DWORD dwTotalSize, DWORD dwDownLoadSize, DWORD dwUser) { CConfigFile* dlg = (CConfigFile*)dwUser; if(NULL == dlg) { return; } if (dwTotalSize != 0 && dwDownLoadSize > 0) //Sending out data { dlg->m_progressImport.SetPos(dwTotalSize*100/dwDownLoadSize); } else if (dwTotalSize != 0 && -1 == dwDownLoadSize) //Send out process completed { dlg->m_progressImport.SetPos(0); } else if (dwTotalSize == 0 && -1 == dwDownLoadSize) //Import configuration file successfully { dlg->SetDlgItemText(IDC_STATIC_STATUS, ConvertString("Import config file successfully!")); ((CButton*)dlg->GetDlgItem(IDC_BUTTON_IMPORT))->EnableWindow(TRUE); ((CButton*)dlg->GetDlgItem(IDC_BUTTON_STOP_IMPORT))->EnableWindow(FALSE); ((CButton*)dlg->GetDlgItem(IDC_BUTTON_EXPORT))->EnableWindow(TRUE); ((CButton*)dlg->GetDlgItem(IDC_BUTTON_STOP_EXPORT))->EnableWindow(FALSE); CLIENT_StopImportCfgFile(dlg->m_lImport); } else if (dwTotalSize == 0 && -2 == dwDownLoadSize) //Import configuration file failed { dlg->SetDlgItemText(IDC_STATIC_STATUS, ConvertString("Failed to import config file!")); ((CButton*)dlg->GetDlgItem(IDC_BUTTON_IMPORT))->EnableWindow(TRUE); ((CButton*)dlg->GetDlgItem(IDC_BUTTON_STOP_IMPORT))->EnableWindow(FALSE); ((CButton*)dlg->GetDlgItem(IDC_BUTTON_EXPORT))->EnableWindow(TRUE); ((CButton*)dlg->GetDlgItem(IDC_BUTTON_STOP_EXPORT))->EnableWindow(FALSE); CLIENT_StopImportCfgFile(dlg->m_lImport); } else if (dwTotalSize == 0 && -3 == dwDownLoadSize) //Error occurred when importing configuration file { dlg->SetDlgItemText(IDC_STATIC_STATUS, ConvertString("Import config file error!")); ((CButton*)dlg->GetDlgItem(IDC_BUTTON_IMPORT))->EnableWindow(TRUE); ((CButton*)dlg->GetDlgItem(IDC_BUTTON_STOP_IMPORT))->EnableWindow(FALSE); ((CButton*)dlg->GetDlgItem(IDC_BUTTON_EXPORT))->EnableWindow(TRUE); ((CButton*)dlg->GetDlgItem(IDC_BUTTON_STOP_EXPORT))->EnableWindow(FALSE); CLIENT_StopImportCfgFile(dlg->m_lImport); } // dlg->m_dwImportTotalSize = dwTotalSize; // dlg->m_dwImportDownloadSize = dwDownLoadSize; }
int main(int argc, char *argv[]) { uint i; // Avoid warnings. NLMISC::createDebug(); DebugLog->addNegativeFilter("Exception will be launched"); WarningLog->addNegativeFilter("Exception will be launched"); InfoLog->addNegativeFilter("FEHTIMER>"); InfoLog->addNegativeFilter("adding the path"); // Init serial registerSerial3d(); if(argc<4) { puts("Usage: build_clod_bank path_file.cfg config_file.cfg destfile.clodbank [bakeFrameRate=20] "); return 0; } try { // The bank to fill CLodCharacterShapeBank lodShapeBank; // Read the frameRate to process bake of anims float bakeFrameRate= 20; if(argc>=5) { bakeFrameRate= (float)atof(argv[4]); if(bakeFrameRate<=1) { nlwarning("bad bakeFrameRate value, use a default of 20"); bakeFrameRate= 20; } } // parse the path file. //================== // try to load the config file. CConfigFile pathConfig; pathConfig.load (argv[1]); // Get the search pathes CConfigFile::CVar &search_pathes = pathConfig.getVar ("search_pathes"); for (i = 0; i < (uint)search_pathes.size(); i++) { // Add to search path CPath::addSearchPath (search_pathes.asString(i)); } // parse the config file. //================== // try to load the config file. CConfigFile config; config.load (argv[2]); // For all .clod to process //================== CConfigFile::CVar &clod_list = config.getVar ("clod_list"); uint lodId; for (lodId = 0; lodId < (uint)clod_list.size(); lodId++) { string lodName= clod_list.asString(lodId); printf("Process LOD: %s\n", lodName.c_str()); // Search the variable with this name. try { CIFile iFile; // get the anim list. CConfigFile::CVar &clod_anim_list = config.getVar (lodName); // Correct format? if(clod_anim_list.size()<3) { nlwarning("%s skipped. Must have at least the skeleton file name, the lod file name, and one animation", lodName.c_str()); // go to next. continue; } // Init lod shape process //=========================== // The first variable is the name of the skeleton. string skeletonName= clod_anim_list.asString(0); CSmartPtr<CSkeletonShape> skeletonShape; // Load it. iFile.open(CPath::lookup(skeletonName)); CShapeStream strShape; strShape.serial(iFile); iFile.close(); // Get the pointer, check it's a skeleton if(dynamic_cast<CSkeletonShape*>(strShape.getShapePointer()) == NULL) throw Exception("%s is not a Skeleton", skeletonName.c_str()); skeletonShape= (CSkeletonShape*)strShape.getShapePointer(); // The second var is the filename of the lod. string lodFileName= clod_anim_list.asString(1); // Load the shape. CLodCharacterShapeBuild lodShapeBuild; iFile.open( CPath::lookup(lodFileName) ); iFile.serial(lodShapeBuild); iFile.close(); // Prepare to build the lod. CLodCharacterBuilder lodBuilder; lodBuilder.setShape(lodName, skeletonShape, &lodShapeBuild); // Traverse all anim in the list. //=========================== uint animId; for (animId = 2; animId < (uint)clod_anim_list.size(); animId++) { string animFileName= clod_anim_list.asString(animId); // display. printf("Process Anim: %d/%d\r", animId-1, clod_anim_list.size()-2); // Try to load the animation CAnimation *anim= new CAnimation; // NB: continue, to list all ANIM if anim not found try { iFile.open( CPath::lookup(animFileName) ); iFile.serial(*anim); iFile.close(); // Add to the builder. NB: animation will be delete in this method. // NB: the key name here is the entire file, with the .anim, for easier georges editing. lodBuilder.addAnim(animFileName.c_str(), anim, bakeFrameRate); } catch(EPathNotFound &) { printf("ERROR anim not found %s\n", animFileName.c_str()); delete anim; } } printf("\n"); // Add to the bank. //=========================== uint32 shapeId= lodShapeBank.addShape(); *lodShapeBank.getShapeFullAcces(shapeId)= lodBuilder.getLodShape(); } catch(EUnknownVar &evar) { nlwarning(evar.what()); // Any other exception will make the program quit. } } // Save bank. //=========================== // compile lodShapeBank.compile(); // Save COFile oFile(argv[3]); oFile.serial(lodShapeBank); oFile.close(); } catch (Exception& except) { // Error message printf ("ERROR %s.\n Aborting.\n", except.what()); } return 0; }
// para ::= <type=new|modify> [timerid] std::string CNeutrinoYParser::func_set_timer_form(CyhookHandler *hh, std::string para) { unsigned timerId=0; std::string cmd, stimerid; CTimerd::responseGetTimer timer; // Timer time_t now_t = time(NULL); ySplitString(para, " ", cmd, stimerid); if(cmd != "new") { // init timerid if(stimerid != "") timerId = (unsigned)atoi(stimerid.c_str()); NeutrinoAPI->Timerd->getTimer(timer, timerId); std::string zType = NeutrinoAPI->timerEventType2Str(timer.eventType); hh->ParamList["timerId"] = itoa(timerId); hh->ParamList["zType"] = zType; } // Alarm/StopTime struct tm *alarmTime = (cmd == "new") ? localtime(&now_t) : localtime(&(timer.alarmTime)); hh->ParamList["alarm_mday"] = string_printf("%02d", alarmTime->tm_mday); hh->ParamList["alarm_mon"] = string_printf("%02d", alarmTime->tm_mon +1); hh->ParamList["alarm_year"] = string_printf("%04d", alarmTime->tm_year + 1900); hh->ParamList["alarm_hour"] = string_printf("%02d", alarmTime->tm_hour); hh->ParamList["alarm_min"] = string_printf("%02d", alarmTime->tm_min); struct tm *stopTime = (cmd == "new") ? alarmTime : ( (timer.stopTime > 0) ? localtime(&(timer.stopTime)) : NULL ); if(stopTime != NULL) { hh->ParamList["stop_mday"] = string_printf("%02d", stopTime->tm_mday); hh->ParamList["stop_mon"] = string_printf("%02d", stopTime->tm_mon +1); hh->ParamList["stop_year"] = string_printf("%04d", stopTime->tm_year + 1900); hh->ParamList["stop_hour"] = string_printf("%02d", stopTime->tm_hour); hh->ParamList["stop_min"] = string_printf("%02d", stopTime->tm_min); // APid settings for Record if(timer.apids == TIMERD_APIDS_CONF) hh->ParamList["TIMERD_APIDS_CONF"] = "y"; if(timer.apids & TIMERD_APIDS_STD) hh->ParamList["TIMERD_APIDS_STD"] = "y"; if(timer.apids & TIMERD_APIDS_ALT) hh->ParamList["TIMERD_APIDS_ALT"] = "y"; if(timer.apids & TIMERD_APIDS_AC3) hh->ParamList["TIMERD_APIDS_AC3"] = "y"; } else hh->ParamList["stop_mday"] = "0"; // event type std::string sel; for(int i=1; i<=8;i++) { if (i != (int)CTimerd::__TIMER_NEXTPROGRAM) { std::string zType = NeutrinoAPI->timerEventType2Str((CTimerd::CTimerEventTypes) i); if(cmd != "new") sel = (i==(int)timer.eventType) ? "selected=\"selected\"" : ""; else sel = (i==(int)CTimerd::TIMER_RECORD) ? "selected=\"selected\"" : ""; hh->ParamList["timertype"] += string_printf("<option value=\"%d\" %s>%s\n",i,sel.c_str(),zType.c_str()); } } // Repeat types std::string zRep; sel = ""; for(int i=0; i<=6;i++) { if(i!=(int)CTimerd::TIMERREPEAT_BYEVENTDESCRIPTION) { zRep = NeutrinoAPI->timerEventRepeat2Str((CTimerd::CTimerEventRepeat) i); if(cmd != "new") sel = (((int)timer.eventRepeat) == i) ? "selected=\"selected\"" : ""; hh->ParamList["repeat"] += string_printf("<option value=\"%d\" %s>%s</option>\n",i,sel.c_str(),zRep.c_str()); } } // Repeat Weekdays zRep = NeutrinoAPI->timerEventRepeat2Str(CTimerd::TIMERREPEAT_WEEKDAYS); if(timer.eventRepeat >= CTimerd::TIMERREPEAT_WEEKDAYS && cmd != "new") sel = "selected=\"selected\""; else sel = ""; hh->ParamList["repeat"] += string_printf("<option value=\"%d\" %s>%s</option>\n",(int)CTimerd::TIMERREPEAT_WEEKDAYS, sel.c_str(), zRep.c_str()); // Weekdays std::string weekdays; NeutrinoAPI->Timerd->setWeekdaysToStr(timer.eventRepeat, weekdays); hh->ParamList["weekdays"]= weekdays; // timer repeats if (timer.eventRepeat == CTimerd::TIMERREPEAT_ONCE) hh->ParamList["TIMERREPEAT_ONCE"] = "y"; hh->ParamList["timer_repeatCount"] = itoa(timer.repeatCount); // program row t_channel_id current_channel = (cmd == "new") ? CZapit::getInstance()->GetCurrentChannelID() : timer.channel_id; CBouquetManager::ChannelIterator cit = g_bouquetManager->tvChannelsBegin(); for (; !(cit.EndOfChannels()); cit++) { if (((*cit)->flags & CZapitChannel::REMOVED) || (*cit)->flags & CZapitChannel::NOT_FOUND) continue; sel = ((*cit)->channel_id == current_channel) ? "selected=\"selected\"" : ""; hh->ParamList["program_row"] += string_printf("<option value=\"" PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS "\" %s>%s</option>\n", (*cit)->channel_id, sel.c_str(), (*cit)->getName().c_str()); } cit = g_bouquetManager->radioChannelsBegin(); for (; !(cit.EndOfChannels()); cit++) { if (((*cit)->flags & CZapitChannel::REMOVED) || (*cit)->flags & CZapitChannel::NOT_FOUND) continue; sel = ((*cit)->channel_id == current_channel) ? "selected=\"selected\"" : ""; hh->ParamList["program_row"] += string_printf("<option value=\"" PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS "\" %s>%s</option>\n", (*cit)->channel_id, sel.c_str(), (*cit)->getName().c_str()); } // recordingDir hh->ParamList["RECORD_DIR_MAXLEN"] = itoa(RECORD_DIR_MAXLEN-1); if(cmd != "new") { if(timer.eventType == CTimerd::TIMER_RECORD) hh->ParamList["timer_recordingDir"] = timer.recordingDir; } else { // get Default Recordingdir CConfigFile *Config = new CConfigFile(','); Config->loadConfig(NEUTRINO_CONFIGFILE); hh->ParamList["timer_recordingDir"] = Config->getString("network_nfs_recordingdir", "/mnt/filme"); delete Config; } hh->ParamList["standby"] = (cmd == "new")? "0" : ((timer.standby_on)?"1":"0"); hh->ParamList["message"] = (cmd == "new")? "" : timer.message; hh->ParamList["pluginname"] = (cmd == "new")? "" : timer.pluginName; return ""; }
//------------------------------------------------------------------------- // y-func : mount_set_values //------------------------------------------------------------------------- std::string CNeutrinoYParser::func_mount_set_values(CyhookHandler *hh, std::string) { CConfigFile *Config = new CConfigFile(','); std::string ynr, yresult; Config->loadConfig(NEUTRINO_CONFIGFILE); ynr = hh->ParamList["nr"]; Config->setString("network_nfs_type_"+ynr,hh->ParamList["type"]); Config->setString("network_nfs_ip_"+ynr,hh->ParamList["ip"]); Config->setString("network_nfs_dir_"+ynr,hh->ParamList["dir"]); Config->setString("network_nfs_local_dir_"+ynr,hh->ParamList["localdir"]); Config->setString("network_nfs_mac_"+ynr,hh->ParamList["mac"]); Config->setString("network_nfs_mount_options1_"+ynr,hh->ParamList["opt1"]); Config->setString("network_nfs_mount_options2_"+ynr,hh->ParamList["opt2"]); Config->setString("network_nfs_automount_"+ynr,hh->ParamList["automount"]); Config->setString("network_nfs_username_"+ynr,hh->ParamList["username"]); Config->setString("network_nfs_password_"+ynr,hh->ParamList["password"]); Config->saveConfig(NEUTRINO_CONFIGFILE); delete Config; return yresult; }
// *************************************************************************** int main(int argc, char* argv[]) { // Filter addSearchPath NLMISC::createDebug(); InfoLog->addNegativeFilter ("adding the path"); // Register 3d registerSerial3d (); // Good number of args ? if (argc<4) { // Help message printf ("ig_lighter [directoryIn] [pathOut] [parameter_file] \n"); } else { try { string directoryIn= argv[1]; string pathOut= argv[2]; string paramFile= argv[3]; CInstanceLighter::CLightDesc lighterDesc; string grFile, rbankFile; // Verify directoryIn. directoryIn= CPath::standardizePath(directoryIn); if( !CFile::isDirectory(directoryIn) ) { printf("DirectoryIn %s is not a directory", directoryIn.c_str()); return -1; } // Verify pathOut. pathOut= CPath::standardizePath(pathOut); if( !CFile::isDirectory(pathOut) ) { printf("PathOut %s is not a directory", pathOut.c_str()); return -1; } // Load and setup configFile. //================= CConfigFile parameter; // Load and parse the param file parameter.load (paramFile); // Get the search pathes CConfigFile::CVar &search_pathes = parameter.getVar ("search_pathes"); uint path; for (path = 0; path < (uint)search_pathes.size(); path++) { // Add to search path CPath::addSearchPath (search_pathes.asString(path)); } // Light direction CConfigFile::CVar &sun_direction = parameter.getVar ("sun_direction"); lighterDesc.LightDirection.x=sun_direction.asFloat(0); lighterDesc.LightDirection.y=sun_direction.asFloat(1); lighterDesc.LightDirection.z=sun_direction.asFloat(2); lighterDesc.LightDirection.normalize (); // Grid size CConfigFile::CVar &quad_grid_size = parameter.getVar ("quad_grid_size"); lighterDesc.GridSize=quad_grid_size.asInt(); // Grid size CConfigFile::CVar &quad_grid_cell_size = parameter.getVar ("quad_grid_cell_size"); lighterDesc.GridCellSize=quad_grid_cell_size.asFloat(); // Shadows enabled ? CConfigFile::CVar &shadow = parameter.getVar ("shadow"); lighterDesc.Shadow=shadow.asInt ()!=0; // OverSampling CConfigFile::CVar &ig_oversampling = parameter.getVar ("ig_oversampling"); lighterDesc.OverSampling= ig_oversampling.asInt (); // validate value: 0, 2, 4, 8, 16 lighterDesc.OverSampling= raiseToNextPowerOf2(lighterDesc.OverSampling); clamp(lighterDesc.OverSampling, 0U, 16U); if(lighterDesc.OverSampling<2) lighterDesc.OverSampling= 0; // gr CConfigFile::CVar &grbank = parameter.getVar ("grbank"); grFile= grbank.asString (); // rbank CConfigFile::CVar &rbank = parameter.getVar ("rbank"); rbankFile= rbank.asString (); // CellSurfaceLightSize; CConfigFile::CVar &cell_surface_light_size = parameter.getVar ("cell_surface_light_size"); float cellSurfaceLightSize= cell_surface_light_size.asFloat (); if(cellSurfaceLightSize<=0) throw Exception("cell_surface_light_size must be > 0"); // CellRaytraceDeltaZ CConfigFile::CVar &cell_raytrace_delta_z = parameter.getVar ("cell_raytrace_delta_z"); float cellRaytraceDeltaZ= cell_raytrace_delta_z.asFloat (); // colIdentifierPrefix CConfigFile::CVar &col_identifier_prefix = parameter.getVar ("col_identifier_prefix"); string colIdentifierPrefix= col_identifier_prefix.asString (); // colIdentifierSuffix CConfigFile::CVar &col_identifier_suffix = parameter.getVar ("col_identifier_suffix"); string colIdentifierSuffix= col_identifier_suffix.asString (); // colIdentifierSuffix CConfigFile::CVar &build_debug_surface_shape = parameter.getVar ("build_debug_surface_shape"); bool buildDebugSurfaceShape= build_debug_surface_shape.asInt()!=0; // try to open gr and rbank CRetrieverBank *retrieverBank= NULL; CGlobalRetriever *globalRetriever= NULL; uint32 grFileDate= 0; uint32 rbankFileDate= 0; if( grFile!="" && rbankFile!="" ) { CIFile fin; // serial the retrieverBank. Exception if not found. fin.open(CPath::lookup(rbankFile)); retrieverBank= new CRetrieverBank; retrieverBank->setNamePrefix(CFile::getFilenameWithoutExtension(rbankFile).c_str ()); // Add the search path for LR files CPath::addSearchPath (CFile::getPath(rbankFile)); fin.serial(*retrieverBank); fin.close(); // serial the globalRetriever. Exception if not found. fin.open(CPath::lookup(grFile)); globalRetriever= new CGlobalRetriever; // set the RetrieverBank before loading globalRetriever->setRetrieverBank(retrieverBank); fin.serial(*globalRetriever); fin.close(); // Get File Dates rbankFileDate= CFile::getFileModificationDate(CPath::lookup(rbankFile)); grFileDate= CFile::getFileModificationDate(CPath::lookup(grFile)); // And init them. globalRetriever->initAll(); } // Scan and load all files .ig in directories //================= vector<string> listFile; vector<CInstanceGroup*> listIg; vector<string> listIgFileName; vector<string> listIgPathName; CPath::getPathContent(directoryIn, false, false, true, listFile); for(uint iFile=0; iFile<listFile.size(); iFile++) { string &igFile= listFile[iFile]; // verify it is a .ig. if( CFile::getExtension(igFile) == "ig" ) { // Read the InstanceGroup. CInstanceGroup *ig= new CInstanceGroup; CIFile fin; fin.open(CPath::lookup(igFile)); fin.serial(*ig); // add to list. listIg.push_back(ig); listIgPathName.push_back(igFile); listIgFileName.push_back(CFile::getFilename(igFile)); } } // For all ig, light them, and save. //================= for(uint iIg= 0; iIg<listIg.size(); iIg++) { string fileNameIn= listIgFileName[iIg]; string fileNameOut= pathOut + fileNameIn; // If File Out exist if(CFile::fileExists(fileNameOut)) { // If newer than file In (and also newer than retrieverInfos), skip uint32 fileOutDate= CFile::getFileModificationDate(fileNameOut); if( fileOutDate > CFile::getFileModificationDate(listIgPathName[iIg]) && fileOutDate > rbankFileDate && fileOutDate > grFileDate ) { printf("Skiping %s\n", fileNameIn.c_str()); continue; } } // progress printf("Processing %s\n", fileNameIn.c_str()); CInstanceGroup igOut; // Export a debugSun Name. string debugSunName; debugSunName= pathOut + "/" + CFile::getFilenameWithoutExtension(fileNameIn) + "_debug_sun_.shape"; string debugPLName; debugPLName= pathOut + "/" + CFile::getFilenameWithoutExtension(fileNameIn) + "_debug_pl_.shape"; // light the ig. CIgLighterLib::CSurfaceLightingInfo slInfo; slInfo.CellSurfaceLightSize= cellSurfaceLightSize; slInfo.CellRaytraceDeltaZ= cellRaytraceDeltaZ; slInfo.RetrieverBank= retrieverBank; slInfo.GlobalRetriever= globalRetriever; slInfo.IgFileName= CFile::getFilenameWithoutExtension(fileNameIn); slInfo.ColIdentifierPrefix= colIdentifierPrefix; slInfo.ColIdentifierSuffix= colIdentifierSuffix; slInfo.BuildDebugSurfaceShape= buildDebugSurfaceShape; slInfo.DebugSunName= debugSunName; slInfo.DebugPLName= debugPLName; lightIg(*listIg[iIg], igOut, lighterDesc, slInfo, fileNameIn.c_str ()); // Save this ig. COFile fout; fout.open(fileNameOut); fout.serial(igOut); fout.close(); // skip a line printf("\n"); } } catch (Exception& except) { // Error message nlwarning ("ERROR %s\n", except.what()); } } // Landscape is not deleted, nor the instanceGroups, for faster quit. // Must disalbe BlockMemory checks (for pointLights). NL3D_BlockMemoryAssertOnPurge= false; // exit. return 0; }
void LoadVarCfg () { // Path of the dll HMODULE hModule = hInstance; if (hModule) { char sModulePath[256]; int res=GetModuleFileName(hModule, sModulePath, 256); if (res) { // split path char drive[256]; char dir[256]; _splitpath (sModulePath, drive, dir, NULL, NULL); // Make a new path char cgfPath[256]; _makepath (cgfPath, drive, dir, "keys", ".cfg"); CConfigFile cf; // Load and parse "test.txt" file cf.load (cgfPath); // go try { // Get the light direction variable CConfigFile::CVar &light_direction= cf.getVar ("LightDirection"); if (light_direction.size () == 3) { // Copy the light direction LightDirection.x = light_direction.asFloat (0); LightDirection.y = light_direction.asFloat (1); LightDirection.z = light_direction.asFloat (2); } } catch (EConfigFile &) { } try { // Get the light diffuse part CConfigFile::CVar &light_diffuse= cf.getVar ("LightDiffuse"); if (light_diffuse.size () == 3) { LightDiffuse.R = light_diffuse.asInt (0); LightDiffuse.G = light_diffuse.asInt (1); LightDiffuse.B = light_diffuse.asInt (2); } } catch (EConfigFile &) { } try { // Get the light ambiant part CConfigFile::CVar &light_ambiant= cf.getVar ("LightAmbiant"); if (light_ambiant.size () == 3) { LightAmbiant.R = light_ambiant.asInt (0); LightAmbiant.G = light_ambiant.asInt (1); LightAmbiant.B = light_ambiant.asInt (2); } } catch (EConfigFile &) { } try { // Get the light mulitply part CConfigFile::CVar &light_multiply= cf.getVar ("LightMultiply"); LightMultiply = light_multiply.asFloat (); } catch (EConfigFile &) { } try { // Get the zoom speed CConfigFile::CVar &zoom_speed= cf.getVar ("ZoomSpeed"); ZoomSpeed = zoom_speed.asFloat (); } catch (EConfigFile &) { } } } }
void regsiterOVPath () { // must test it first, because NL_DEBUG_FAST and NL_DEBUG are declared at same time. //#ifdef NL_DEBUG_FAST // HMODULE hModule = GetModuleHandle("object_viewer_dll_df.dll"); #if defined (NL_DEBUG) HMODULE hModule = GetModuleHandle("object_viewer_dll_d.dll"); //#elif defined (NL_RELEASE_DEBUG) // HMODULE hModule = GetModuleHandle("object_viewer_dll_rd.dll"); #else HMODULE hModule = GetModuleHandle("object_viewer_dll_r.dll"); #endif if (!hModule) { ::MessageBox(NULL, "'hModule' failed at '" __FUNCTION__ "' in file '" __FILE__ " on line " NL_MACRO_TO_STR(__LINE__), "NeL Export", MB_OK | MB_ICONERROR); return; } char sModulePath[256]; int res = GetModuleFileName(hModule, sModulePath, 256); if (!res) { ::MessageBox(NULL, "'res' failed at '" __FUNCTION__ "' in file '" __FILE__ " on line " NL_MACRO_TO_STR(__LINE__), "NeL Export", MB_OK | MB_ICONERROR); return; } char SDrive[512]; char SDir[512]; _splitpath (sModulePath, SDrive, SDir, NULL, NULL); _makepath (sModulePath, SDrive, SDir, "object_viewer", ".cfg"); // Load the config file CConfigFile cf; cf.load (sModulePath); try { // Add search pathes CConfigFile::CVar &search_pathes = cf.getVar ("search_pathes"); for (uint i=0; i<(uint)search_pathes.size(); i++) CPath::addSearchPath (search_pathes.asString(i)); } catch(EUnknownVar &) {} try { // Add recusrive search pathes CConfigFile::CVar &recursive_search_pathes = cf.getVar ("recursive_search_pathes"); for (uint i=0; i<(uint)recursive_search_pathes.size(); i++) CPath::addSearchPath (recursive_search_pathes.asString(i), true, false); } catch(EUnknownVar &) {} // Add extension remapping try { CConfigFile::CVar &extensions_remapping = cf.getVar ("extensions_remapping"); if (extensions_remapping.size()%2 != 0) { nlwarning ("extensions_remapping must have a multiple of 2 entries (ex: extensions_remapping={\"dds\",\"tga\"};)"); } else { for (uint i=0; i<(uint)extensions_remapping.size(); i+=2) CPath::remapExtension(extensions_remapping.asString(i), extensions_remapping.asString(i+1), true); } } catch (EUnknownVar &) { } }