main() { strcpy(status.nomefile,"base.idl"); inizializza(); setmenuP(0," Files ",1,hh); setmenuP(0," Compile ",1,menuto2); setmenuP(0," Quit! ",1,esci); setmenuS(0,1," Ciao ",1,hh); setmenuS(0,1," Addio ",1,gg); gwindow(60,60,300,200," Main Win ",12,1,14,3); num=status.active_window; perc_init(); for(x=0;x<=37;x++) { percent(x,37); } perc_end(); mouse(1); while(kd!=27) { while((kd=ikey())==0) {} controlla(kd); x=contr_drives(); if(x!=-1) {setdisk(x);dato=x;} } mouse(2); nogwin(); finisci(); return(0); }
PRInt32 nsInstallPatch::Complete() { PRBool flagEquals; if ((mInstall == nsnull) || (mVersionInfo == nsnull) || (mPatchedFile == nsnull) || (mTargetFile == nsnull)) { return nsInstall::INVALID_ARGUMENTS; } PRInt32 err = nsInstall::SUCCESS; nsCOMPtr<nsIFile> fileName = nsnull; //nsVoidKey ikey( HashFilePath( nsFilePath(*mTargetFile) ) );//nsIFileXXX: nsFilePath? nsVoidKey ikey( HashFilePath( mTargetFile )); mInstall->GetPatch(&ikey, getter_AddRefs(fileName)); if (fileName == nsnull) { err = nsInstall::UNEXPECTED_ERROR; } else { fileName->Equals(mPatchedFile, &flagEquals); if (flagEquals) { // the patch has not been superceded--do final replacement err = ReplaceFileNowOrSchedule( mPatchedFile, mTargetFile, 0); if ( 0 == err || nsInstall::REBOOT_NEEDED == err ) { nsString tempVersionString; mVersionInfo->ToString(tempVersionString); nsCAutoString tempPath; mTargetFile->GetNativePath(tempPath); // DO NOT propogate version registry errors, it will abort // FinalizeInstall() leaving things hosed. These piddly errors // aren't worth that. VR_Install( NS_CONST_CAST(char *, NS_ConvertUCS2toUTF8(*mRegistryName).get()), NS_CONST_CAST(char *, tempPath.get()), NS_CONST_CAST(char *, NS_ConvertUCS2toUTF8(tempVersionString).get()), PR_FALSE ); } else { err = nsInstall::UNEXPECTED_ERROR; } }
std::map<string, char*> Util::loadKV (FILE* file) { std::map<string, char*> ret; if (file == NULL) { return ret; } rewind(file); char line[FILENAME_MAX + 1]; int lineno = 0; char* p; char* key; char* val; while (!feof(file)) { if ( NULL == fgets(line, sizeof(line), file)) { break; } ++lineno; int left = strcspn(line, "#\r\n"); if (left == 0) { continue; } else { line[left] = 0; p = line; } int pos = -1; pos = Util::index(p, '=', -1); if (pos == -1) { continue; } else { line[pos] = '\0'; key = p; val = p + pos + 1; } Util::trim(key); Util::trim(val); Util::tolower(key); Util::tolower(val); string ikey(key); char* ival = new char[FILENAME_MAX + 1]; strcpy(ival, val); ret.insert(std::pair<string, char*>(ikey, ival)); } return ret; }
inline void stop_time(metrics_entry me, std::string key, int iternum, bool show=false) { me.timer_stop(); mlock.lock(); double t = me.lasttime; if (entries.count(key) == 0) { entries[key] = metrics_entry(TIME); } entries[key].add(t); // not thread safe if (show) std::cout << key << ": " << me.lasttime << " secs." << std::endl; char s[256]; sprintf(s, "%s.%d", key.c_str(), iternum); std::string ikey(s); if (entries.count(ikey) == 0) { entries[ikey] = metrics_entry(TIME); } entries[ikey].add(t); mlock.unlock(); }
PRInt32 nsInstallPatch::Prepare() { PRInt32 err; PRBool deleteOldSrc, flagExists, flagIsFile; if (mTargetFile == nsnull) return nsInstall::INVALID_ARGUMENTS; mTargetFile->Exists(&flagExists); if (flagExists) { mTargetFile->IsFile(&flagIsFile); if (flagIsFile) { err = nsInstall::SUCCESS; } else { err = nsInstall::IS_DIRECTORY; } } else { err = nsInstall::DOES_NOT_EXIST; } if (err != nsInstall::SUCCESS) { return err; } err = mInstall->ExtractFileFromJar(*mJarLocation, mTargetFile, getter_AddRefs(mPatchFile)); nsCOMPtr<nsIFile> fileName = nsnull; //nsVoidKey ikey( HashFilePath( nsFilePath(*mTargetFile) ) );//nsIFileXXX: nsFilePath? nsVoidKey ikey( HashFilePath( mTargetFile )); mInstall->GetPatch(&ikey, getter_AddRefs(fileName)); if (fileName != nsnull) { deleteOldSrc = PR_TRUE; } else { fileName = mTargetFile; deleteOldSrc = PR_FALSE; } err = NativePatch( fileName, // the file to patch mPatchFile, // the patch that was extracted from the jarfile getter_AddRefs(mPatchedFile)); // the new patched file // clean up extracted diff data file mPatchFile->Exists(&flagExists); if ( (mPatchFile != nsnull) && (flagExists) ) { mPatchFile->Remove(PR_FALSE); } if (err != nsInstall::SUCCESS) { // clean up tmp patched file since patching failed mPatchFile->Exists(&flagExists); if ((mPatchedFile != nsnull) && (flagExists)) { mPatchedFile->Remove(PR_FALSE); } return err; } PR_ASSERT(mPatchedFile != nsnull); mInstall->AddPatch(&ikey, mPatchedFile ); if ( deleteOldSrc ) { DeleteFileNowOrSchedule(fileName ); } return err; }
void IOCPPool::svc_worker() { struct epoll_event evts[20]; if(!hIOCPhandler.ok()) return; while (!test_canceled()) { int nfds=epoll_wait(hIOCPhandler,evts,1,1000); if(nfds<0) { logger.LogError("ERROR:%s",strerror(errno)); continue; } else if(nfds==0) { continue; } for(int i=0; i<nfds; i++) { int nevt=evts[i].events; Session* pkey=(Session*)evts[i].data.ptr; if(!pkey) { logger.LogError("ERROR: NO Hander"); continue; } Session& ikey(*pkey); if((nevt&(EPOLLERR|EPOLLHUP))!=0) { ikey.Disconnect(); continue; } if(ikey.IsError()) { continue; } ikey.tpLast=accounter.tTimeStamp; if(nevt&EPOLLIN) { HandleRecv(ikey); } else if(nevt&EPOLLOUT) { HandleSend(ikey); } if(ikey.IsError()) { continue; } else { ikey.m_nEpCtl.exchange(0); } } } }
inline void IOCPPool::ccc_handle_iocp(Session* pkey,MyOverLapped* pdat) { Session& ikey(*pkey); MyOverLapped& idat(*pdat); switch(idat.type) { case MyOverLapped::ACTION_UDP_SEND: { TempPtrT<MyOverLappedEx> q(static_cast<MyOverLappedEx*>(&idat)); if(idat.size<=0) { ikey.Disconnect(); } else if(!ikey.IsError()) { accounter.nSendBytes.fetch_add(idat.size); accounter.nSendCount++; ikey.OnSendCompleted(q); static_cast<SessionUDP&>(ikey).DoAsyncSend(); } --ikey.m_nPendingSend; } break; case MyOverLapped::ACTION_TCP_SEND: { TempPtrT<MyOverLappedEx> q(static_cast<MyOverLappedEx*>(&idat)); if(idat.size<=0) { ikey.Disconnect(); } else if(!ikey.IsError()) { accounter.nSendBytes.fetch_add(idat.size); accounter.nSendCount++; ikey.OnSendCompleted(q); static_cast<SessionTCP&>(ikey).DoAsyncSend(); } --ikey.m_nPendingSend; } break; case MyOverLapped::ACTION_UDP_RECV: { ikey.tpLast=accounter.tTimeStamp; TempPtrT<MyOverLappedEx> q(static_cast<MyOverLappedEx*>(&idat)); if(idat.size<=0) { ikey.Disconnect(); } else if(!ikey.IsError()) { accounter.nRecvBytes.fetch_add(idat.size); accounter.nRecvCount++; ikey.OnRecvCompleted(q); static_cast<SessionUDP&>(ikey).DoAsyncRecv(); } --ikey.m_nPendingRecv; } break; case MyOverLapped::ACTION_TCP_RECV: { ikey.tpLast=accounter.tTimeStamp; TempPtrT<MyOverLappedEx> q(static_cast<MyOverLappedEx*>(&idat)); if(idat.size<=0) { ikey.Disconnect(); } else if(!ikey.IsError()) { accounter.nRecvBytes.fetch_add(idat.size); accounter.nRecvCount++; ikey.OnRecvCompleted(q); static_cast<SessionTCP&>(ikey).DoAsyncRecv(); } --ikey.m_nPendingRecv; } break; case MyOverLapped::ACTION_ACCEPT: case MyOverLapped::ACTION_WAIT_RECV: { ikey.tpLast=accounter.tTimeStamp; if(idat.size<0) { ikey.Disconnect(); } else if(!ikey.IsError()) { accounter.nRecvCount++; ikey.OnRecvReady(); static_cast<SessionTCP&>(ikey).DoAsyncRecv(); } --ikey.m_nPendingRecv; } break; case MyOverLapped::ACTION_WAIT_SEND: { if(idat.size<0) { ikey.Disconnect(); } else if(!ikey.IsError()) { accounter.nSendCount++; ikey.OnSendReady(); static_cast<SessionTCP&>(ikey).DoAsyncSend(); } --ikey.m_nPendingSend; } break; default: System::LogTrace("Invalid pdat_type %d",idat.type); ikey.Disconnect(); break; } }