string CUIApp::CTFStatsExec::getExecString() { string retval("\""); retval+=addSlash(TFStatsdirectory); retval+="TFStatsRT.exe\" \"" ; retval+=fullpath; retval+="\" outputDir=\""; retval+=addSlash(outputdirectory); retval+=removeSlash(outputsubdir); retval+="\" "; retval+="ruleDir=\""; retval+=removeSlash(ruledirectory); retval+="\" "; retval+=" useSupportDir="; retval+=useSupportDir?"yes":"no"; if (useSupportDir) { retval+=" supportDir=\""; retval+=removeSlash(supportdirectory); retval+="\" supportHTTPPath=\""; retval+=removeSlash(supporthttp); retval+="\""; } retval+=" persistPlayerStats="; retval+=persistPlayerStats?"yes":"no"; if (persistPlayerStats) { retval+=" playerDir=\""; retval+=removeSlash(playerdirectory); retval+="\" "; retval+=" playerHTTPPath=\""; retval+=removeSlash(playerhttp); retval+="\""; } retval+=" eliminateOldPlayers="; retval+=elimOldPlayers?"yes":"no"; if (elimOldPlayers) { retval+=" oldPlayerCutoff="; char buf[100]; itoa(elimDays,buf,10); retval+=buf; retval+=" "; } retval+=" displayMM2="; retval+=displayMM2?"yes":"no"; retval+=" displayStartUpInfo="; retval+=displayStartupInfo?"yes":"no"; return retval; }
void init() { isInterfaceExtended = impl::getValueFromConfig("interface", "basic") == "extended"; workDir = impl::getValueFromConfig("workingPath", "."); imagesDir = impl::getValueFromConfig("designedObjectImagesPath", impl::getValueFromConfig("imagesPath")); soundsDir = impl::getValueFromConfig("soundsPath", addSlash(imagesDir) + "..\\sounds\\"); musicDir = impl::getValueFromConfig("musicPath", addSlash(imagesDir) + "..\\music\\"); isBackupEnabled = impl::getValueFromConfig("isBackupEnabled", "true") == "true"; isComplexBoxMode = impl::getValueFromConfig("isComplexBoxMode", "false") == "true"; setComplexLayerMode(impl::getValueFromConfig("isComplexLayerMode", "false") == "true"); setComplexAnimationMode(impl::getValueFromConfig("isComplexAnimationMode", "false") == "true"); mainConf = impl::configAsString(); formDesignedObjConfig(); }
bool compress(char *param, void *conf) { clientConfig *c=(clientConfig*)conf; int i=0; char buffer[MSGSIZE]; char archive[MSGSIZE]; /* direxists -> makesubdir*/ for(i=0;i<MSGSIZE;i++) buffer[i]=0; sendCommand(CMD_COMPRESS, NULL, &(c->sock)); if (recvCommand(buffer, &(c->sock)) != CMD_SEND) { printf("* compress \"%s\" failed. no file sent or server error\n",param); return false; } sendCommand(CMD_ACK, NULL, &(c->sock)); printf("* downloading remote archive \"%s\"\n",buffer); pullfile(buffer, &(c->sock)); strcpy(archive,param); addSlash(archive); strcat(archive,buffer); printf("* moving file \"%s\" to %s\n",buffer,archive); if (rename(buffer,archive)<0) perrorf("rename()"); return true; }
bool senddir(const char *dir, unsigned int *sock) { struct dirent *pdir; struct stat st; DIR *d=opendir(dir); char *path=(char *)my_malloc(sizeof(char)*256); char *buffer=(char *)my_malloc(sizeof(char)*256); if (!path) return false; while((pdir=readdir(d))!=NULL) { if (strcmp(pdir->d_name,".") == 0) continue; if (strcmp(pdir->d_name,"..") == 0) continue; strcpy(path, dir); addSlash(path); strcat(path, pdir->d_name); if (!(lstat(path, &st)>=0)) continue; if (st.st_mode&S_IFREG) { sendCommand(CMD_SEND,(char *)path, sock); pushfile(path, sock); } else if (st.st_mode&S_IFDIR) senddir(path, sock); } free(buffer); free(path); return true; }
void _toString(Json* jsn,String& str,String& tab,bool readStyle){ if(jsn->_type==json_null){ str = L"null"; }else if(jsn->_type==json_boolean){ str = jsn->_boolValue?L"true":L"false"; }else if(jsn->_type==json_integer){ str.FromInt64(jsn->_intValue,10); }else if(jsn->_type==json_double){ str.Format(L"%#.16g",jsn->_doubleValue); }else if(jsn->_type==json_string){ addSlash(jsn->_strValue->Handle(),jsn->_strValue->Length(),str,readStyle); str.Insert('"',0); str.Insert('"'); }else if(jsn->_type==json_array){ if(readStyle) str = L"[\r\n"; else str = L"["; String sub; ObjectLink<Json>& a = *jsn->_arrayValue; a.First(); Json* sjsn = a.Element(); if(sjsn){ if(readStyle) tab += L"\t"; _toString(sjsn,sub,tab,readStyle); str += tab; str += sub; while(true){ a.Move(1); sjsn = a.Element(); if(!sjsn) break; _toString(sjsn,sub,tab,readStyle); if(readStyle) str += L",\r\n"; else str += L","; str += tab; str += sub; } tab.Head(-1); if(readStyle) str += L"\r\n"; } str += tab; str += L"]"; }else if(jsn->_type==json_object){ if(readStyle) str = L"{\r\n"; else str = L"{"; String sub; ObjectLink<Json::DICTION>& obj = *jsn->_objectValue; obj.First(); Json::DICTION* dic = obj.Element(); if(dic){ if(readStyle){ tab += L"\t"; str += tab; } str += L"\""; addSlash(dic->key,dic->key.Length(),sub,readStyle); str += sub; if(readStyle){ str += L"\" : "; }else{ str += L"\":"; } _toString(dic->val,sub,tab,readStyle); str += sub; while(true){ obj.Move(1); dic = obj.Element(); if(!dic) break; if(readStyle){ str += L",\r\n"; str += tab; }else{ str += L","; } str += L"\""; addSlash(dic->key,dic->key.Length(),sub,readStyle); str += sub; if(readStyle){ str += L"\" : "; }else{ str += L"\":"; } _toString(dic->val,sub,tab,readStyle); str += sub; } tab.Head(-1); if(readStyle) str += L"\r\n"; } str += tab; str += L"}"; }else if(jsn->_type==json_binary){ Memory<char> code; int len = Base64::Encode(code,jsn->_binaryValue->Handle(),jsn->_binaryValue->Length()); str.FromMultiByte((LPCSTR)code.Handle(),len); str.Insert('\'',0); str.Insert('\''); } }
void CUIApp::execTFStats() { std::list<CUIApp::CTFStatsExec>::iterator it; AllocConsole(); for (it=m_pLogs->begin();it!=m_pLogs->end();++it) { CUIApp::CTFStatsExec& c=*it; it->TFStatsdirectory=m_TFStatsDir; it->outputdirectory=m_OutDir; it->ruledirectory=m_RuleDir; it->supportdirectory=m_SupportDir; it->playerdirectory=m_PlayerDir; it->displayMM2=displayMM2; it->persistPlayerStats=persistPlayerStats; it->useSupportDir=useSupportDir; it->supporthttp=m_SupportHTTPPath; it->playerhttp=m_PlayerHTTPPath; it->displayStartupInfo=displayStartupInfo; it->elimOldPlayers=elimOldPlayers; it->elimDays=elimDays; string exec=it->getExecString(); //create process takes a non-const char buffer? char createProcBuf[4000]; memset(createProcBuf,0,4000); exec.copy(createProcBuf,4000); PROCESS_INFORMATION pi; STARTUPINFO si; memset(&si,0,sizeof(si)); si.cb=sizeof(si); char buffer[500]; sprintf(buffer,"TFStats is creating a Match report for %s",it->inputfile.c_str()); si.lpTitle=buffer; SetConsoleTitle(buffer); BOOL result=CreateProcess(NULL,createProcBuf,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi); if (pi.hProcess && result) { //wait for this one to finish before running next one! DWORD exitCode=STILL_ACTIVE; do { GetExitCodeProcess(pi.hProcess,&exitCode); //check every 10th of a second if (exitCode==STILL_ACTIVE) Sleep(100); if (pause) Sleep(pauseSecs*1000); } while (exitCode==STILL_ACTIVE); } else { string badmojo("***ERROR: Could not run \""); badmojo+=addSlash(it->TFStatsdirectory); badmojo+="TFStatsRT.exe\"\n\n"; HANDLE hConsOutput=GetStdHandle(STD_OUTPUT_HANDLE); WriteConsole(hConsOutput,badmojo.c_str(),badmojo.length(),NULL,0); Sleep(4000); } } FreeConsole(); }