void Ide::PackageBuild() { InitBlitz(); BeginBuilding(true, true); const Workspace& wspc = IdeWorkspace(); int pi = GetPackageIndex(); if(pi >= 0 && pi <= wspc.GetCount()) { Vector<String> linkfile, immfile; String linkopt; bool ok = BuildPackage(wspc, pi, 0, 1, mainconfigparam, Null, linkfile, immfile, linkopt); EndBuilding(ok); } }
void Ide::FileCompile() { if(editfile.IsEmpty()) return; ClearErrorEditor(editfile); SwitchHeader(); BeginBuilding(true, true); const Workspace& wspc = IdeWorkspace(); bool ok = true; onefile = editfile; if(wspc.GetCount()) { Vector<String> linkfile, immfile; String linkopt; for(int i = 0; i < wspc.GetCount(); i++) BuildPackage(wspc, i, 1, wspc.GetCount(), mainconfigparam, Null, linkfile, immfile, linkopt, false); } onefile.Clear(); EndBuilding(ok); SetErrorEditor(); }
int main( int argc, char* argv[] ) { namespace po = boost::program_options; // Declare the supported options. po::options_description desc( "Allowed options" ); std::string to_compress_dir; std::string to_uncompress_file; desc.add_options() ( "help", "produce help message" ) ( "-c", po::value<std::string>( &to_compress_dir ), "folder to compress" ) ( "-x", po::value<std::string>( &to_uncompress_file ), "file to extract" ) ( "-o", po::value<std::string>(), "destination" ) ; po::variables_map vm; po::store( po::parse_command_line( argc, argv, desc ), vm ); po::notify( vm ); if ( vm.count( "help" ) ) { std::cout << desc << "\n"; return 1; } if ( vm.count( "-c" ) ) { std::cout << "Compressing " << vm["-c"].as<std::string>() << ".\n"; BuildPackage( vm["-c"].as<std::string>(), vm.count( "-o" ) ? vm["-o"].as<std::string>() : std::string() ); } else if ( vm.count( "-x" ) ) { std::cout << "Extracting from " << vm["-x"].as<std::string>() << ".\n"; ExtractPackage( vm["-x"].as<std::string>(), vm.count( "-o" ) ? vm["-o"].as<std::string>() : std::string() ); } else { std::cout << desc << "\n"; } return 0; }
int CPayment::SendPaymentData(LPCTSTR sfxm,LONG Money,LPCTSTR bz) { bool bIsStand = true; szPayState = "3";//请求正在处理 //组包 CIso8583Package *package = new CIso8583Package(); if (package == NULL) { szPayState = "E7"; return -1; //不成功,返回错误码 } char c48Field[255]; memset(c48Field,0,sizeof(c48Field)); if( strcmp(sfxm,"3001") == 0) { bIsStand = false; const char *split = "|"; char *pTemp = new char[128]; strcpy(pTemp,bz); char *pToken = strtok (pTemp,split); if( pToken == NULL ) return -1; int nOffset = strlen(pToken); memcpy(c48Field,pToken,strlen(pToken)); pToken = strtok(NULL,"|"); if( pToken == NULL ) return -1; memcpy(c48Field + nOffset,pToken,strlen(pToken)); nOffset += strlen(pToken); pToken = strtok(NULL,"|"); if( pToken == NULL ) return -1; memcpy(c48Field + nOffset,pToken,strlen(pToken)); nOffset += strlen(pToken); pToken = strtok(NULL,"|"); if( pToken == NULL ) return -1; memcpy(c48Field + nOffset,pToken,strlen(pToken)); nOffset += strlen(pToken); package->SetFieldData(48,nOffset,(BYTE *)c48Field);//48域,目前随便填写,银联无法处理该业务 } else {//处理其他收费项目 int nOffset = 0; nOffset = strlen(sfxm); memcpy(c48Field,sfxm,nOffset); memcpy(c48Field + nOffset,bz,strlen(bz)); nOffset += strlen(bz); package->SetFieldData(48,nOffset,(BYTE *)c48Field);//48域,目前随便填写,银联无法处理该业务 } int iRes = BuildPackage(package,Money); if (iRes != 0) { szPayState = "E7"; return iRes; //组包不成功,返回错误码 } BYTE cHeader[30]; int nOffset = 0; AscToBcd(cHeader + nOffset,(unsigned char *)szTPDU.GetBuffer(),szTPDU.GetLength()); nOffset += szTPDU.GetLength() / 2; AscToBcd(cHeader + nOffset,(unsigned char *)szHeader.GetBuffer(),szHeader.GetLength()); nOffset += szHeader.GetLength() / 2; cHeader[nOffset] = 0x02; nOffset += 1; cHeader[nOffset] = 0x00; nOffset += 1; BYTE cData[512]; memset(cData,0,512); unsigned int nLen = package->GetData(cData,512,cHeader,nOffset,false); delete package; char cLen[5] = {'\0'}; itoa_hex(nLen,cLen,2); unsigned char cDataLen[3] = {'\0'}; AscToBcd(cDataLen,(unsigned char *)cLen,4); BYTE cPackageData[512]; memset(cPackageData,0,sizeof(cPackageData)); memcpy(cPackageData,cDataLen,2); memcpy(cPackageData + 2,cData,nLen); TCHAR szCurPath[MAX_PATH]; GetCurrentDirectory(sizeof(szCurPath),szCurPath); _tcscat(szCurPath,TEXT("\\Reversal.ini")); CSocket client; if( client.InitSocket() == FALSE) { szPayState = "E7"; return -1; } if( client.Connect(szServerIP,atoi(szPort)) == false) { szPayState = "E7"; return -1; } gLog.Log(cPackageData,nLen + 2); client.Send(cPackageData,nLen + 2); BYTE RecvData[1024]; memset(RecvData,0,1024); nLen = client.Receive(RecvData,1024); if(nLen != 0) { gLog.Log(RecvData,nLen); CIso8583Parse *receivePackage = new CIso8583Parse(); char cResult[128]; memset(cResult,0,128); Read8583Package(receivePackage,RecvData,39,2,(BYTE *)cResult); delete receivePackage; LONG lProCode = atol(szTraceCode.GetBuffer()) + 1; unsigned char cAsciiBuff[12]; memset(cAsciiBuff,0,sizeof(cAsciiBuff)); BinToAsc(cAsciiBuff,lProCode,6); WritePrivateProfileString(TEXT("TraceCode"),TEXT("TraceCode"),(char *)cAsciiBuff,szCurPath); if(strcmp(cResult,"A0") == 0) //根据银联网络的说法,MAC错误也需要冲正 { WritePrivateProfileString(TEXT("Reversal"),TEXT("Ack"),"A0",szCurPath); WritePrivateProfileString(TEXT("Reversal"),TEXT("Flag"),"0",szCurPath);//0 -- 未处理 CReversalTransaction transaction; transaction.SendReversalTransactionData();//冲正处理 } else if( strcmp(cResult,"05") == 0) {//认证失败 szPayState = "E2"; return -1; } else if( strcmp(cResult,"51") == 0) { szPayState = "E5"; return -1; } else if( strcmp(cResult, "55") == 0) { szPayState = "E2"; return -1; } else if( strcmp(cResult, "75") == 0) { szPayState = "E1"; return -1; } szPayState = "1";//交易成功 } else {//网络原因,消费冲正 szPayState = "E6"; WritePrivateProfileString(TEXT("Reversal"),TEXT("Ack"),"98",szCurPath);//POS终端在时限内未能收到POS中心的应答消息而引发 WritePrivateProfileString(TEXT("Reversal"),TEXT("Flag"),"0",szCurPath);//0 -- 未处理 CReversalTransaction transaction; transaction.SendReversalTransactionData();//冲正处理 } return 1;//交易成功 }
bool MakeBuild::Build(const Workspace& wspc, String mainparam, String outfile, bool clear_console) { String hfile = outfile + ".xxx"; SaveFile(hfile, ""); FileTime start_time = GetFileTime(hfile); // Defensive way to get correct filetime of start DeleteFile(hfile); ClearErrorEditor(); BeginBuilding(true, clear_console); bool ok = true; if(wspc.GetCount()) { for(int i = 0; i < wspc.GetCount(); i++) { const Package& pk = wspc.package[i]; for(int j = 0; j < pk.GetCount(); j++) if(pk[j] == "main.conf") { String pn = wspc[i]; String p = SourcePath(pn, "main.conf"); main_conf << "// " << pn << "\r\n" << LoadFile(p) << "\r\n"; PutConsole("Found " + p); } } if(main_conf.GetCount()) { VectorMap<String, String> bm = GetMethodVars(method); One<Host> host = CreateHost(false); One<Builder> b = CreateBuilder(~host); if(b) { Index<String> mcfg = PackageConfig(wspc, 0, bm, mainparam, *host, *b, NULL); String outdir = OutDir(mcfg, wspc[0], bm, false); String path = AppendFileName(outdir, "main.conf.h"); RealizePath(path); SaveChangedFile(path, main_conf); PutConsole("Saving " + path); add_includes << outdir << ';'; } } Vector<int> build_order; if(GetTargetMode().linkmode != 2) { for(int i = 1; i < wspc.GetCount(); i++) build_order.Add(i); } else { Index<int> remaining; for(int i = 1; i < wspc.GetCount(); i++) remaining.Add(i); while(!remaining.IsEmpty()) { int t; for(t = 0; t < remaining.GetCount(); t++) { const Package& pk = wspc.package[remaining[t]]; bool delay = false; for(int u = 0; u < pk.uses.GetCount(); u++) if(remaining.Find(wspc.package.Find(pk.uses[u].text)) >= 0) { delay = true; break; } if(!delay) break; } if(t >= remaining.GetCount()) t = 0; build_order.Add(remaining[t]); remaining.Remove(t); } } String mainpackage = wspc[0]; Vector<String> linkfile; String linkopt = GetMethodVars(method).Get(targetmode ? "RELEASE_LINK" : "DEBUG_LINK", Null); if(linkopt.GetCount()) linkopt << ' '; ok = true; int ms = msecs(); for(int i = 0; i < build_order.GetCount() && (ok || !stoponerrors); i++) { int px = build_order[i]; ok = BuildPackage(wspc, px, i, build_order.GetCount() + 1, mainparam, Null, linkfile, linkopt) && ok; if(msecs() - ms >= 200) { DoProcessEvents(); ms = msecs(); } } if(ok || !stoponerrors) { ok = BuildPackage(wspc, 0, build_order.GetCount(), build_order.GetCount() + 1, mainparam, outfile, linkfile, linkopt, ok) && ok; // Set the time of target to start-time, so that if any file changes during // compilation, it is recompiled during next build SetFileTime(target, start_time); } } EndBuilding(ok); ReQualifyCodeBase(); SetErrorEditor(); return ok; }
void main(int argc, const char* argv[]) { if (argc == 1) { ShowHelp(); return; } // parse arguments int i; for (i = 1; i < argc - 1; ++i) { if (argv[i][0] != '-' || strlen(argv[i]) != 2) { ShowHelp(); return; } switch (argv[i][1]) { case 'e': i++; ParseFilters(argv[i]); break; case 'd': i++; AddDirectory(argv[i]); break; case 'r': recursive = true; break; case 'c': cache = true; break; case 'C': recache = true; break; } } if (filters.size() == 0) { printf("fex: no file extensions specified\n"); return; } if (folders.size() == 0) { printf("fex: no directories specified\n"); return; } if (i == argc) { printf("fex: no search pattern specified\n"); return; } //LARGE_INTEGER start1, stop1, start2, stop2; //QueryPerformanceCounter(&start1); // build our data BuildPackage(); //QueryPerformanceCounter(&stop1); if (megaBuffer) { //QueryPerformanceCounter(&start2); RE2 mainSearch(argv[argc - 1]); RE2 newLineSearch("\n"); re2::StringPiece newLineString; re2::StringPiece megaString(megaBuffer, megaBufferSize); int num = 0; int lastFound = 0; const char* lastNewLine = NULL; int lastNumNewLines = 0; while (RE2::FindAndConsume(&megaString, mainSearch)) { // identify which file the search hit was in for (unsigned int i = lastFound; i < numBufferFiles; ++i) { if (megaString.data() <= megaBuffer + bufferFiles[i].ptrOffset) { // do a regexp search to find all newlines for this file up to the point of the hit // if previous search had a hit on the same file, use the cached numNewLines and ptr so // we don't have to search through entire file again const char* beg = NULL; int numNewLines = 0; if (i == lastFound && lastNewLine != NULL) { beg = lastNewLine; numNewLines += lastNumNewLines; } else { beg = i == 0 ? megaBuffer : megaBuffer + bufferFiles[i - 1].ptrOffset; } const char* end = megaString.data(); newLineString.set(beg, end - beg); int lastConsumed = 0; int consumed = 0; while (consumed = RE2::FindAndConsume(&newLineString, newLineSearch)) { lastConsumed = consumed; numNewLines++; } lastNumNewLines = numNewLines; lastNewLine = newLineString.data(); // copy DISPLAY_LINE_LENGTH characters to a separate buffer so we can use it as a marker for the match // break on newline for (int c = 0; c < DISPLAY_LINE_LENGTH; ++c) { if (lastNewLine[c] != '\n') { displayLine[c] = lastNewLine[c]; } else { displayLine[c] = '\0'; break; } } printf("%s:%d:%s\n", bufferFiles[i].name, numNewLines + 1, displayLine); lastFound = i; break; } } num++; } //QueryPerformanceCounter(&stop2); //printf("fex: data accumulation done in: %.2f seconds, %d files searched\n", (stop1.QuadPart - start1.QuadPart) / 1000000.f, numBufferFiles); //printf("fex: regexp match done in: %.2f seconds, found %d instances\n", (stop2.QuadPart - start2.QuadPart) / 1000000.f, num); } CleanUp(); }
int CReversalTransaction::SendReversalTransactionData(char *pAccount,LONG Money,char *cTraceCode,char *cAck) { //组包 CIso8583Package *package = new CIso8583Package(); int iRes = BuildPackage(package,pAccount,Money,cTraceCode,cAck); if (iRes != 0) return iRes; //组包不成功,返回错误码 BYTE cHeader[30]; int nOffset = 0; AscToBcd(cHeader + nOffset,(unsigned char *)szTPDU.GetBuffer(),szTPDU.GetLength()); nOffset += szTPDU.GetLength() / 2; AscToBcd(cHeader + nOffset,(unsigned char *)szHeader.GetBuffer(),szHeader.GetLength()); nOffset += szHeader.GetLength() / 2; cHeader[nOffset] = 0x04; nOffset += 1; cHeader[nOffset] = 0x00; nOffset += 1; BYTE cData[512]; memset(cData,0,512); unsigned int nLen = package->GetData(cData,512,cHeader,nOffset,false); delete package; char cLen[5] = {'\0'}; itoa_hex(nLen,cLen,2); unsigned char cDataLen[3] = {'\0'}; AscToBcd(cDataLen,(unsigned char *)cLen,4); BYTE cPackageData[512]; memset(cPackageData,0,sizeof(cPackageData)); memcpy(cPackageData,cDataLen,2); memcpy(cPackageData + 2,cData,nLen); CSocket client; if( client.InitSocket() == FALSE) return -1; if( client.Connect(szServerIP,atoi(szPort)) == false) return -1; gLog.Log(cData,nLen); client.Send(cData,nLen); BYTE RecvData[1024]; memset(RecvData,0,1024); nLen = client.Receive(RecvData,1024); if(nLen != 0) { gLog.Log(RecvData,nLen); CIso8583Parse *receivePackage = new CIso8583Parse(); char cResult[128]; memset(cResult,0,128); Read8583Package(receivePackage,RecvData,39,2,(BYTE *)cResult); delete receivePackage; if(strcmp(cResult,"00") == 0) { TCHAR szCurPath[MAX_PATH]; GetCurrentDirectory(sizeof(szCurPath),szCurPath); _tcscat(szCurPath,TEXT("\\Reversal.ini")); WritePrivateProfileString(TEXT("Reversal"),TEXT("Account"),"",szCurPath); WritePrivateProfileString(TEXT("Reversal"),TEXT("TraceCode"),"",szCurPath); WritePrivateProfileString(TEXT("Reversal"),TEXT("Money"),"",szCurPath); WritePrivateProfileString(TEXT("Reversal"),TEXT("Ack"),"",szCurPath); WritePrivateProfileString(TEXT("Reversal"),TEXT("Flag"),"1",szCurPath);//1 -- 已处理 } } return 1; }