bool CPlugin::GetFilesFromParams(LPWSTR szCmdLine, LPCWSTR** ppFiles, unsigned* pnFiles, unsigned* pnFolders, auto_sz* pstrCurDir, bool bSkipFirst) { int Size=(int)PanelControl(PANEL_ACTIVE,FCTL_GETPANELDIRECTORY,0,NULL); FarPanelDirectory* dirInfo=(FarPanelDirectory*)new char[Size]; dirInfo->StructSize = sizeof(FarPanelDirectory); PanelControl(PANEL_ACTIVE,FCTL_GETPANELDIRECTORY,Size,dirInfo); *pstrCurDir=auto_sz(dirInfo->Name); delete[](char *)dirInfo; if (pstrCurDir->Len()) { pstrCurDir->Realloc(pstrCurDir->Len()+2); m_fsf.AddEndSlash(*pstrCurDir); } unsigned nCnt=ParseParams(szCmdLine); if (!nCnt) return false; *ppFiles=new LPCWSTR[nCnt]; ParseParams(szCmdLine, *ppFiles); for (unsigned i=bSkipFirst?1:0; i<nCnt; i++) { DWORD dwAttr=GetFileAttributes((*ppFiles)[i]); if (DWORD(-1)!=dwAttr && dwAttr&FILE_ATTRIBUTE_DIRECTORY) (*pnFolders)++; else (*pnFiles)++; } return true; }
void Message::ParseIncomingMessage(string msg) { //messages go in as :NICK!USER@HOST TYPE PARAMETERS //whereby PARAMETERS might be lead by a : to indicate that it's multiple words //and PARAMETERS might be anything like target channel or target name or a command or text or shit //or they can go in as COMMAND PARAMETER //whereby PARAMETER can be fully optional int Offset = 0; //let's get rid of the stupid \r\n stripNewLine(msg); if(msg[0] == ':') { string tempmsg = msg; Offset++; this->HasNickUserHost = true; int MaxOffset = tempmsg.find(' '); Offset = tempmsg.find('!'); if(Offset == string::npos || Offset >= MaxOffset) goto ThingsWentBad; this->Nick = tempmsg.substr(1,Offset-1); tempmsg = tempmsg.substr(Offset+1); Offset = tempmsg.find('@'); if(Offset == string::npos || Offset >= MaxOffset) goto ThingsWentBad; this->User = tempmsg.substr(0,Offset); tempmsg = tempmsg.substr(Offset+1); Offset = tempmsg.find(' '); if(Offset == string::npos) goto ThingsWentBad; this->Host = tempmsg.substr(0,Offset); tempmsg = tempmsg.substr(Offset+1); ParseParams(tempmsg); }else{ //I know this isn't strictly correct, but it does the job goto ThingsWentBad; } if(StringBeginEqual(this->ParameterArray[0],"PRIVMSG") || StringBeginEqual(this->ParameterArray[0],"NOTICE")) this->isNormalMessage = true; else this->isNormalMessage = false; return; ThingsWentBad: //wtf? this->HasNickUserHost = false; //shit is weird so we just toss out unparsed //Offset = msg.find(" ")+1; ParseParams(msg); return; }
Stmt *ParseLightConeStmt(void) { int nparams; Param params[2]; LightConeStmtData *sd; Stmt *stmt = NewStmt(); if(stmt == NULL) { LogMemError("light: cone"); return NULL; } sd = (LightConeStmtData *)calloc(1, sizeof(LightConeStmtData)); if(sd == NULL) { DeleteStmt(stmt); LogMemError("light: cone"); return NULL; } stmt->procs = &light_cone_stmt_procs; stmt->data = (void *)sd; sd->radius1 = NULL; sd->radius2 = NULL; nparams = ParseParams("EOE;", "light: cone", NULL, params); if(nparams > 0) { sd->radius1 = params[0].data.expr; if(nparams > 1) sd->radius2 = params[1].data.expr; } if(!error_count) return stmt; DeleteStmt(stmt); return NULL; }
int main(int argc, char **argv) { programparams Params; image f = NullImage, u = NullImage; int Status = 1; if(!ParseParams(&Params, argc, (const char **)argv)) goto Catch; /* Read the input image */ if(!ReadImageObj(&f, Params.InputFile)) goto Catch; else if(!AllocImageObj(&u, f.Width, f.Height, f.NumChannels)) { fputs("Out of memory.\n", stderr); goto Catch; } if(!TvDeconv(u, f, Params.Kernel, Params.Lambda, Params.Noise)) goto Catch; /* Write the deconvolved image */ if(!WriteImageObj(u, Params.OutputFile, Params.JpegQuality)) fprintf(stderr, "Error writing to \"%s\".\n", Params.OutputFile); Status = 0; Catch: FreeImageObj(u); FreeImageObj(f); FreeImageObj(Params.Kernel); return Status; }
//----------------------------------------------------------------------------- // Analyze URL // Extract Filename, Path, FileExt // form RFC2616 / 3.2.2: // http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]] // query data is splitted and stored in ParameterList //----------------------------------------------------------------------------- void CWebserverRequest::analyzeURL(std::string url) { std::string fullurl = ""; ParameterList.clear(); // URI decode fullurl = decodeString(url); fullurl = trim(fullurl, "\r\n"); // non-HTTP-Standard: allow \r or \n in URL. Delete it. UrlData["fullurl"] = fullurl; // split Params if(ySplitString(url,"?",UrlData["url"],UrlData["paramstring"])) // split pure URL and all Params { UrlData["url"] = decodeString(UrlData["url"]); ParseParams(UrlData["paramstring"]); // split params to ParameterList } else // No Params UrlData["url"] = fullurl; if(!ySplitStringLast(UrlData["url"],"/",UrlData["path"],UrlData["filename"])) { UrlData["path"] = "/"; // Set "/" if not contained } else UrlData["path"] += "/"; if(( UrlData["url"].length() == 1) || (UrlData["url"][UrlData["url"].length()-1] == '/' )) { // if "/" at end use index.html UrlData["path"] = UrlData["url"]; UrlData["filename"] = "index.html"; } ySplitStringLast(UrlData["filename"],".",UrlData["filenamepure"],UrlData["fileext"]); }
Stmt *ParseTriangleStmt(void) { int nparams, prev_object_token, i; Param params[9]; TriangleStmtData *sd; Stmt *stmt = NewStmt(); if (stmt == NULL) { LogMemError("triangle"); return NULL; } sd = (TriangleStmtData *)calloc(1, sizeof(TriangleStmtData)); if (sd == NULL) { DeleteStmt(stmt); LogMemError("triangle"); return NULL; } stmt->procs = &triangle_stmt_procs; stmt->data = (void *)sd; sd->pt1 = sd->pt2 = sd->pt3 = NULL; sd->n1 = sd->n2 = sd->n3 = NULL; sd->u = sd->v = NULL; sd->block = NULL; prev_object_token = cur_object_token; cur_object_token = TK_TRIANGLE; nparams = ParseParams("EEEOEEEOEEB", "triangle", ParseObjectDetails, params); cur_object_token = prev_object_token; for (i = 0; i < nparams; i++) { switch (params[i].type) { case PARAM_EXPR: if (sd->pt1 == NULL) /* First three are the vertices. */ sd->pt1 = params[i].data.expr; else if (sd->pt2 == NULL) sd->pt2 = params[i].data.expr; else if (sd->pt3 == NULL) sd->pt3 = params[i].data.expr; else if (sd->n1 == NULL) /* Next three are the normals. */ sd->n1 = params[i].data.expr; else if (sd->n2 == NULL) sd->n2 = params[i].data.expr; else if (sd->n3 == NULL) sd->n3 = params[i].data.expr; else if (sd->u == NULL) /* Last two are the UV map points. */ sd->u = params[i].data.expr; else sd->v = params[i].data.expr; break; case PARAM_BLOCK: sd->block = params[i].data.block; break; } } if (!error_count) return stmt; DeleteStmt(stmt); return NULL; }
//*************************************************************** uint16_t TUsartGSM::ParseTextSMS(char* str) {uint16_t msgMsg = msgEmpty ; const int cntPrm = 6, lenPrm = 16 ; char Prm[cntPrm][lenPrm] ; char* pPrm = &Prm[0][0] ; int Val[cntPrm] ; char Dlm[] = ",= #*" ; flEventNeed = NeedSendSMS = 0 ; strncpy(SmsInBuf,str,LenBF-1) ; strMsg = SmsInBuf ; ParseParams(str,Dlm,pPrm,Val,cntPrm,lenPrm) ; if(Val[0] == PswGSM){ if(!StrCmp(Prm[1],cmdNewPass)){ PswGSM = Val[2] ; if(FnSetPswGSM ) FnSetPswGSM(PswGSM) ; strMsg = StrDbg ; sprintf(StrDbg,"new Psw = %d", PswGSM) ; flEventNeed = evGetEvent ;} if(!StrCmp(Prm[1],cmdStart )) flEventNeed = evStartP ; if(!StrCmp(Prm[1],cmdStop )) flEventNeed = evStopP ; // if(!StrCmp(Prm[1],cmdTermTrg)){ flEventNeed = evSetTermo ; // flValueNeed = Val[2] ;} if(!StrCmp(Prm[1],cmdMaster)){ SetMasterNmbr(PhoneNmbrSMS) ; flEventNeed = evGetEvent ;} if(flEventNeed && *PhoneNmbrSMS){ NeedSendSMS = 1 ; timGuardSMS = 0 ;}// отправить ответную СМС sprintf(StrDbg," true Psw %d",Val[0]) ; strMsg = StrDbg ; } else{sprintf(StrDbg," wrong Psw %d",Val[0]) ; strMsg = StrDbg ; NeedSendSMS = 0 ; *PhoneNmbrSMS = 0 ; } msgMsg = msgSMS_PARSED ; timTxPause = TIM_TX_PAUSE ;// защитная пауза TX return msgMsg ;}
void CHTTPSock::CheckPost() { if (m_sPostData.size() >= m_uPostLen) { ParseParams(m_sPostData.Left(m_uPostLen), m_msvsPOSTParams); GetPage(); m_sPostData.clear(); m_bDone = true; } }
//*************************************************************** // +CMTI: "SM",1 uint16_t TUsartGSM::ParseCMTI(char* str) // Входящая СМС! {uint16_t msgMsg = msgEmpty ; const int cntPrm = 3 ; int Val[cntPrm] ; char Dlm[] = ",:" ; int result = ParseParams(str,Dlm,0,Val,cntPrm,0) ; if(Val[2]>=0){ FIxInSMS = Val[2] ;}// Будем Читать СМС timTxPause = TIM_TX_PAUSE ;// защитная пауза TX return msgMsg ;}
int XmlResApp::OnRun() { static const wxCmdLineEntryDesc cmdLineDesc[] = { { wxCMD_LINE_SWITCH, "h", "help", "show help message", wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_HELP }, { wxCMD_LINE_SWITCH, "v", "verbose", "be verbose" }, { wxCMD_LINE_SWITCH, "e", "extra-cpp-code", "output C++ header file with XRC derived classes" }, { wxCMD_LINE_SWITCH, "c", "cpp-code", "output C++ source rather than .rsc file" }, { wxCMD_LINE_SWITCH, "p", "python-code", "output wxPython source rather than .rsc file" }, { wxCMD_LINE_SWITCH, "g", "gettext", "output list of translatable strings (to stdout or file if -o used)" }, { wxCMD_LINE_OPTION, "n", "function", "C++/Python function name (with -c or -p) [InitXmlResource]" }, { wxCMD_LINE_OPTION, "o", "output", "output file [resource.xrs/cpp]" }, { wxCMD_LINE_SWITCH, "", "validate", "check XRC correctness (in addition to other processing)" }, { wxCMD_LINE_SWITCH, "", "validate-only", "check XRC correctness and do nothing else" }, { wxCMD_LINE_OPTION, "", "xrc-schema", "RELAX NG schema file to validate against (optional)" }, #if 0 // not yet implemented { wxCMD_LINE_OPTION, "l", "list-of-handlers", "output list of necessary handlers to this file" }, #endif { wxCMD_LINE_PARAM, NULL, NULL, "input file(s)", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_MULTIPLE | wxCMD_LINE_OPTION_MANDATORY }, wxCMD_LINE_DESC_END }; wxCmdLineParser parser(cmdLineDesc, argc, argv); switch (parser.Parse()) { case -1: return 0; case 0: retCode = 0; ParseParams(parser); if (flagValidate) { if ( !Validate() ) return 2; if ( flagValidateOnly ) return 0; } if (flagGettext) OutputGettext(); else CompileRes(); return retCode; } return 1; }
Stmt *ParseImplicitStmt(void) { int nparams, prev_object_token, i; Param params[5]; ImplicitStmtData *sd; Stmt *stmt = NewStmt(); if(stmt == NULL) { LogMemError("implicit"); return NULL; } sd = (ImplicitStmtData *)calloc(1, sizeof(ImplicitStmtData)); if(sd == NULL) { DeleteStmt(stmt); LogMemError("implicit"); return NULL; } stmt->procs = &implicit_stmt_procs; stmt->data = (void *)sd; sd->fn = sd->bmin = sd->bmax = sd->steps = NULL; sd->block = NULL; prev_object_token = cur_object_token; cur_object_token = TK_IMPLICIT; nparams = ParseParams("EEEOEOB", "implicit", ParseObjectDetails, params); cur_object_token = prev_object_token; for(i = 0; i < nparams; i++) { switch(params[i].type) { case PARAM_EXPR: if(sd->fn == NULL) /* First one is the function. */ sd->fn = params[i].data.expr; else if(sd->bmin == NULL) /* Second one is the lo bound. */ sd->bmin = params[i].data.expr; else if(sd->bmax == NULL) /* Third one is the hi bound. */ sd->bmax = params[i].data.expr; else /* Fourth one is the xyz steps. */ sd->steps = params[i].data.expr; break; case PARAM_BLOCK: sd->block = params[i].data.block; break; } } if(!error_count) return stmt; DeleteStmt(stmt); return NULL; }
//*************************************************************** // разберем ответ на запрос "Кол-во СМС" // +CPMS: "SM",7,15,"SM",7,15,"SM",7,15 // OK uint16_t TUsartGSM::ParseCPMS(char* str) {uint16_t msgMsg = msgEmpty ; const int cntPrm = 4 ; int Val[cntPrm] ; char Dlm[] = ", " ; int result = ParseParams(str,Dlm,0,Val,cntPrm,0) ; FCntMemSMS = Val[2] ; FTtlMemSMS = Val[3] ; if(FCntMemSMS > 0 && FTtlMemSMS > 0) FIxMemSMS = 0 ;// В памяти есть СМС else FIxMemSMS = FCntMemSMS = FTtlMemSMS = -1 ; timTxPause = TIM_TX_PAUSE ;// защитная пауза TX return msgMsg ;}
//*************************************************************** // Если пришел вызов, запомнить номер, сбросить, поставить флаг NeedSendSMS // RING // +CLIP: "+79231234567",145,"",,"",0 uint16_t TUsartGSM::ParseCLIP(char* str) {uint16_t msgMsg = msgEmpty ; const int cntPrm = 6, lenPrm = 16 ; char Prm[cntPrm][lenPrm] ; char* pPrm = &Prm[0][0] ; int Val[cntPrm] ; char Dlm[] = ", " ; int result = ParseParams(str,Dlm,pPrm,Val,cntPrm,lenPrm) ; strncpy(PhoneNmbrCall,Prm[1],20) ; if(!StrCmp(PhoneNmbrCall,strValidNmbr)){ NeedSendSMS = 1 ;} timTxPause = TIM_TX_PAUSE ;// защитная пауза TX return msgMsg ;}
void CanvasRenderingContextHelper::ToBlob(JSContext* aCx, nsIGlobalObject* aGlobal, EncodeCompleteCallback* aCallback, const nsAString& aType, JS::Handle<JS::Value> aParams, ErrorResult& aRv) { nsAutoString type; nsContentUtils::ASCIIToLower(aType, type); nsAutoString params; bool usingCustomParseOptions; aRv = ParseParams(aCx, type, aParams, params, &usingCustomParseOptions); if (aRv.Failed()) { return; } if (mCurrentContext) { // We disallow canvases of width or height zero, and set them to 1, so // we will have a discrepancy with the sizes of the canvas and the context. // That discrepancy is OK, the rest are not. nsIntSize elementSize = GetWidthHeight(); if ((elementSize.width != mCurrentContext->GetWidth() && (elementSize.width != 0 || mCurrentContext->GetWidth() != 1)) || (elementSize.height != mCurrentContext->GetHeight() && (elementSize.height != 0 || mCurrentContext->GetHeight() != 1))) { aRv.Throw(NS_ERROR_FAILURE); return; } } UniquePtr<uint8_t[]> imageBuffer; int32_t format = 0; if (mCurrentContext) { imageBuffer = mCurrentContext->GetImageBuffer(&format); } RefPtr<EncodeCompleteCallback> callback = aCallback; aRv = ImageEncoder::ExtractDataAsync(type, params, usingCustomParseOptions, Move(imageBuffer), format, GetWidthHeight(), callback); }
int main(int argc, char* argv[]) { if (!ParseParams(argc, argv)) return 1; if (FILE* f_src = fopen(params.srcFile, "rb")) { FILE* f_dest = stdout; //if (f_dest) { if (params.header) { fprintf(f_dest, "unsigned char %s[] = {", params.hArrName); WriteNewLine(f_dest); } int c = fgetc(f_src); if (!feof(f_src)) { unsigned int n = 0; while (true) { WriteChar(f_dest, c); c = fgetc(f_src); if (feof(f_src)) break; WriteLineTerm(f_dest, n++); } while(params.nul--) { WriteLineTerm(f_dest, n++); WriteChar(f_dest, 0); } } else { fprintf(stderr,"Warning: The input file was empty. Empty file generated.\n"); } if (params.header) { WriteNewLine(f_dest); fputs("};", f_dest); } while(params.line--) { WriteNewLine(f_dest); } //fclose(f_dest); fclose(f_src); return 0; //} else { //fclose(f_src); //fprintf(stderr,"Error: Can't create file '%s'\n",params.dstFile); //return 3; //} } else { fprintf(stderr,"Error: Can't open file '%s'\n",params.srcFile); return 2; } }
Stmt *ParseLightStmt(void) { int nparams, i; Param params[4]; LightStmtData *lsd; Stmt *stmt = NewStmt(); if(stmt == NULL) { LogMemError("light"); return NULL; } lsd = (LightStmtData *)calloc(1, sizeof(LightStmtData)); if(lsd == NULL) { DeleteStmt(stmt); LogMemError("light"); return NULL; } stmt->procs = &light_stmt_procs; stmt->data = (void *)lsd; lsd->from = lsd->color = lsd->falloff = NULL; nparams = ParseParams("OEOEOEOB", "light", ParseLightDetails, params); for(i = 0; i < nparams; i++) { switch(params[i].type) { case PARAM_EXPR: if(lsd->from == NULL) /* First one is the from point. */ lsd->from = params[i].data.expr; else if(lsd->color == NULL) /* Second one is the color. */ lsd->color = params[i].data.expr; else /* Third one is the falloff. */ lsd->falloff = params[i].data.expr; break; case PARAM_BLOCK: lsd->block = params[i].data.block; break; } } if(!error_count) return stmt; DeleteStmt(stmt); return NULL; }
void Message::ParseOutgoingMessage(const string msg) { //messages are either: // /command stuff //or: // msg //in the later case it's a privmsg, in the former it is not if(msg.find("/") == 0) { this->isNormalMessage = false; ParseParams(&msg[1]); // this->Command = charAllocAndSectionCopy(this->ParameterArray[0]); }else{ this->isNormalMessage = true; this->formatedMessage = msg; //CopyTillSymbol(&this->formatedMessage,msg,'\0'); // this->Command = charAllocAndSectionCopy("PRIVMSG"); } }
bool CWebserverRequest::ParseFirstLine(string zeile) // parse first line of request { int ende, anfang, t; anfang = zeile.find(' '); // GET /images/elist.gif HTTP/1.1 ende = zeile.rfind(' '); // nach leerzeichen splitten if (anfang > 0 && ende > 0 && anfang != ende) { string method,url,http; method= zeile.substr(0,anfang); url = zeile.substr(anfang+1,ende - (anfang+1)); http = zeile.substr(ende+1,zeile.length() - ende+1); // dprintf("m: '%s' u: '%s' h:'%s'\n",method.c_str(),url.c_str(),http.c_str()); if(method.compare("POST") == 0) Method = M_POST; else if(method.compare("GET") == 0) Method = M_GET; else if(method.compare("PUT") == 0) Method = M_PUT; else if(method.compare("HEAD") == 0) Method = M_HEAD; else { aprintf("Unknown method or invalid request"); dprintf("Request: '%s'\n",rawbuffer.c_str()); return false; } if((t = url.find('?')) > 0) // eventuellen Parameter inner URL finden { URL = url.substr(0,t); Param_String = url.substr(t+1,url.length() - (t+1)); URLDecode(Param_String); return ParseParams(Param_String); } else URL = url; } return true; }
//*************************************************************** // +CMT: "+79131236578",,"14/03/21,19:16:04+28" uint16_t TUsartGSM::ParseCMT(char* str) // Входящая СМС! , которая не попадает в память {uint16_t msgMsg = msgEmpty ; const int cntPrm = 6, lenPrm = 16 ; char Prm[cntPrm][lenPrm] ; char* pPrm = &Prm[0][0] ; int Val[cntPrm] ; char Dlm[] = ",:" ; int result = ParseParams(str,Dlm,pPrm,Val,cntPrm,lenPrm) ; char* pNmbr = strchr(Prm[1],'\"') ; if(pNmbr){ strncpy(PhoneNmbrSMS,pNmbr,16) ;// Номер отправителя СМС! запомним if(!StrCmp(PhoneNmbrSMS,strValidNmbr)) // Если номер начинается на "+79" то будем распознавать SMS! flWaitSMS = 1 ;// СМС начнется со следующей принятой строки else{ *PhoneNmbrSMS = 0 ;} } flNeedCNMI = 1 ;// необходимо передернуть CNMI!!! timTxPause = TIM_TX_PAUSE ;// защитная пауза TX return msgMsg ;}
int XmlResApp::OnRun() { static const wxCmdLineEntryDesc cmdLineDesc[] = { { wxCMD_LINE_SWITCH, _T("h"), _T("help"), _T("show help message"), wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_HELP }, { wxCMD_LINE_SWITCH, _T("v"), _T("verbose"), _T("be verbose"), (wxCmdLineParamType)0, 0 }, { wxCMD_LINE_SWITCH, _T("e"), _T("extra-cpp-code"), _T("output C++ header file with XRC derived classes"), (wxCmdLineParamType)0, 0 }, { wxCMD_LINE_SWITCH, _T("c"), _T("cpp-code"), _T("output C++ source rather than .rsc file"), (wxCmdLineParamType)0, 0 }, { wxCMD_LINE_SWITCH, _T("p"), _T("python-code"), _T("output wxPython source rather than .rsc file"), (wxCmdLineParamType)0, 0 }, { wxCMD_LINE_SWITCH, _T("g"), _T("gettext"), _T("output list of translatable strings (to stdout or file if -o used)"), (wxCmdLineParamType)0, 0 }, { wxCMD_LINE_OPTION, _T("n"), _T("function"), _T("C++/Python function name (with -c or -p) [InitXmlResource]"), (wxCmdLineParamType)0, 0 }, { wxCMD_LINE_OPTION, _T("o"), _T("output"), _T("output file [resource.xrs/cpp]"), (wxCmdLineParamType)0, 0 }, #if 0 // not yet implemented { wxCMD_LINE_OPTION, _T("l"), _T("list-of-handlers"), _T("output list of necessary handlers to this file"), (wxCmdLineParamType)0, 0 }, #endif { wxCMD_LINE_PARAM, NULL, NULL, _T("input file(s)"), wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_MULTIPLE | wxCMD_LINE_OPTION_MANDATORY }, { wxCMD_LINE_NONE, NULL, NULL, NULL, (wxCmdLineParamType)0, 0 } }; wxCmdLineParser parser(cmdLineDesc, argc, argv); switch (parser.Parse()) { case -1: return 0; case 0: retCode = 0; ParseParams(parser); if (flagGettext) OutputGettext(); else CompileRes(); return retCode; } return 1; }
//*************************************************************** // разберем ответ на запрос "Дай СМС" // sample: // +CMGR: "REC UNREAD","+79231234567","","14/03/21,19:16:04+28" // 45,stop // OK uint16_t TUsartGSM::ParseCMGR(char* str) {uint16_t msgMsg = msgEmpty ; const int cntPrm = 6, lenPrm = 16 ; char Prm[cntPrm][lenPrm] ; char* pPrm = &Prm[0][0] ; int Val[cntPrm] ; char Dlm[] = "," ; int isUnread = 0 ; // flNeedCNMI = 1 ;// необходимо передернуть CNMI!!! int result = ParseParams(str,Dlm,pPrm,Val,cntPrm,lenPrm) ; char* str2 = strchr(Prm[0],'\"') ; if(str2 && !StrCmp(str2+1,"REC UNR")) isUnread = 1 ; strncpy(PhoneNmbrSMS,Prm[1],16) ;// Номер отправителя СМС! запомним if(isUnread && !StrCmp(PhoneNmbrSMS,strValidNmbr)) // Если номер начинается на "+79" то будем распознавать SMS! flWaitSMS = 1 ;// СМС начнется со следующей принятой строки else{ *PhoneNmbrSMS = 0 ;} timTxPause = TIM_TX_PAUSE*5 ;// большаая защитная пауза TX return msgMsg ;}
QByteArray GdbServer::processBreakpointPacket(const QByteArray &data) { QByteArray ans; params_t pars = ParseParams(data); char z = data.at(0); uint8_t type = pars[0].toInt(); uint32_t addr =(pars[1]).toInt(NULL,16); //uint8_t kind = pars[2].toInt(); if (type != 1) { //not supported MakePacket(ans); return ans; } bool ok; //insert breakpoint if (z == 'Z') { ok = stlink->BreakpointWrite(addr); } //delete breakpoint else if (z == 'z') { ok = stlink->BreakpointRemove(addr); } if (ok) ans = "OK"; else ans = "E00"; MakePacket(ans); return ans; }
bool CWebserverRequest::ParseRequest() { int ende; if(rawbuffer_len > 0 ) { if((ende = rawbuffer.find_first_of('\n')) == 0) { aprintf("ParseRequest: End of line not found\n"); Send500Error(); return false; } std::string zeile1 = rawbuffer.substr(0,ende-1); if(ParseFirstLine(zeile1)) { unsigned int i; for(i = 0; ((rawbuffer[i] != '\n') || (rawbuffer[i+2] != '\n')) && (i < rawbuffer.length());i++); int headerende = i; // dprintf("headerende: %d buffer_len: %d\n",headerende,rawbuffer_len); if(headerende == 0) { aprintf("ParseRequest: no headers found\n"); Send500Error(); return false; } std::string header = rawbuffer.substr(ende+1,headerende - ende - 2); ParseHeader(header); Host = HeaderList["Host"]; if(Method == M_POST) // TODO: Und testen ob content = formdata { std::string t = "multipart/form-data; boundary="; if(HeaderList["Content-Type"].compare(0,t.length(),t) == 0) { // SocketWriteLn("Sorry, momentan broken\n"); Boundary = "--" + HeaderList["Content-Type"].substr(t.length(),HeaderList["Content-Type"].length() - t.length()); aprintf("Boundary: '%s'\n",Boundary.c_str()); // if((headerende + 3) < rawbuffer_len) // ParseBoundaries(rawbuffer.substr(headerende + 3,rawbuffer_len - (headerende + 3))); HandleUpload(); } else if(HeaderList["Content-Type"].compare("application/x-www-form-urlencoded") == 0) { // dprintf("Form Daten in Parameter String\n"); if((headerende + 3) < rawbuffer_len) { std::string params = rawbuffer.substr(headerende + 3,rawbuffer_len - (headerende + 3)); if(params[params.length()-1] == '\n') params.substr(0,params.length() -2); ParseParams(params); } } dprintf("Method Post !\n"); } return true; } else { SocketWrite("HTTP/1.0 501 Not implemented\r\n"); SocketWrite("Content-Type: text/plain\r\n\r\n"); SocketWrite("501 : Request-Method not implemented.\n"); HttpStatus = 501; aprintf("501 : Request-Method not implemented.\n"); return false; } } else { aprintf("rawbuffer_len = %ld\n",rawbuffer_len); return false; } }
QByteArray GdbServer::processQueryPacket(const QByteArray &data) { QByteArray ans; if (data.contains( "qSupported:")) { ans.append("PacketSize=3fff"); ans.append(";qXfer:memory-map:read+"); stlink->BreakpointRemoveAll(); MakePacket(ans); } else if (data == ("qC") || data == "qSymbol::") { ans.append("OK"); MakePacket(ans); } else if (data == "qAttached" || data == "qOffsets") { MakePacket(ans); } else if (data == "qTStatus") { MakePacket(ans); } else if (data == ("qXfer:memory-map:read::0,fff")) { ans = stlink->GetMapFile(); ans.prepend('m'); MakePacket(ans); } else if (data.startsWith("qXfer:memory-map:read::27")) { ans = "l"; MakePacket(ans); } else if (data == "qfThreadInfo") { ans = "m1"; MakePacket(ans); } else if (data == "qsThreadInfo") { ans = "l"; MakePacket(ans); } else if (data.startsWith("qThreadExtraInfo")) { params_t pars = ParseParams(data); int id = pars[1].toInt(NULL,16); ans = getHandler().toLocal8Bit(); ans = ans.toHex(); MakePacket(ans); } else if (data.startsWith("qRcmd")) { bool fail = false; params_t pars = ParseParams(data); QByteArray arr = QByteArray::fromHex(pars[1]); if (arr == "reset") { stlink->SysReset(); stlink->BreakpointRemoveAll(); } else if (arr == "Reset") { stlink->SysReset(); } else if (arr == "LOAD") { QFile moje(VeriFile); if (moje.open(QFile::ReadOnly)) stlink->FlashWrite(FLASH_BASE,moje.readAll(),true); } else if (arr.startsWith("verify")) { QFile * file; if (arr == "verify") { file = new QFile(VeriFile); //file.setFileName(VeriFile); } else { arr.remove(0,7); //file.setFileName(arr); file = new QFile(arr); } int temp = 0; if (file->open(QFile::ReadOnly)) { bool ok = stlink->FlashVerify(file->readAll(),0); if (ok) temp = 0; else temp = 1; file->close(); } else { temp = 2; } QString text; switch (temp) { case 0: text = "Verification OK"; break; case 1: text = "Verification failed"; break; case 2: text = "No file found "; break; } qDebug() << text; delete file; } else if (arr == "erase") { stlink->FlashMassClear(); qDebug() << "Erased"; } else if (arr == "PSP") { quint32 psp = stlink->ReadRegister(PSP); QVector<quint32> vec; stlink->UnstackContext(vec,psp); QList<quint32> lst; lst = vec.toList(); qDebug( ) << "PSP: " << QString("0x%1").arg(psp,0,16); while(lst.count()) { qDebug() << QString("0x%1").arg(lst.takeLast(),0,16); } switched = !switched; qDebug() << switched; } else { qDebug() << "unknown remote command" << arr; ans = ""; fail = true; } if (!fail) ans = "OK"; MakePacket(ans); } return ans; }
void CHTTPSock::ParseURI() { ParseParams(m_sURI.Token(1, true, "?"), m_msvsGETParams); m_sURI = m_sURI.Token(0, false, "?"); }
int main(int argc, char** argv) { Command command; Context context; Context context_dec; BROTLI_BOOL is_ok = BROTLI_TRUE; int i; context.quality = 11; context.lgwin = -1; context.gmem = 1; context.force_overwrite = BROTLI_FALSE; context.junk_source = BROTLI_FALSE; context.copy_stat = BROTLI_TRUE; context.test_integrity = BROTLI_FALSE; context.verbose = BROTLI_FALSE; context.write_to_stdout = BROTLI_FALSE; context.decompress = BROTLI_FALSE; context.large_window = BROTLI_FALSE; context.output_path = NULL; context.suffix = DEFAULT_SUFFIX; for (i = 0; i < MAX_OPTIONS; ++i) context.not_input_indices[i] = 0; context.longest_path_len = 1; context.input_count = 0; context.argc = argc; context.argv = argv; context.modified_path = NULL; context.iterator = 0; context.ignore = 0; context.iterator_error = BROTLI_FALSE; context.buffer = NULL; context.current_input_path = NULL; context.current_output_path = NULL; context.fin = NULL; context.fout = NULL; command = ParseParams(&context); if (command == COMMAND_COMPRESS || command == COMMAND_DECOMPRESS || command == COMMAND_TEST_INTEGRITY) { if (is_ok) { size_t modified_path_len = context.longest_path_len + strlen(context.suffix) + 1; context.modified_path = (char*)malloc(modified_path_len); context.buffer = (uint8_t*)malloc(kFileBufferSize * 2); if (!context.modified_path || !context.buffer) { fprintf(stderr, "out of memory\n"); is_ok = BROTLI_FALSE; } else { context.input = context.buffer; context.output = context.buffer + kFileBufferSize; } } } if (!is_ok) command = COMMAND_NOOP; switch (command) { case COMMAND_NOOP: break; case COMMAND_VERSION: PrintVersion(); break; case COMMAND_COMPRESS: memcpy (&context_dec, &context, sizeof (context)); is_ok = CompressFiles(&context); if (!is_ok) { break; } context_dec.decompress = BROTLI_TRUE; context_dec.input_count = 1; context_dec.current_input_path = context_dec.output_path; context_dec.fout = tmpfile (); is_ok = DecompressFiles(&context_dec); if (!is_ok) { break; } // // fill decoder header // context_dec.fout = fopen(context_dec.output_path, "rb+"); /* open output_path file and add in head info */ fwrite(&input_file_length, 1, sizeof(int64_t), context_dec.fout); scratch_buffer_size += context.gmem * GAP_MEM_BLOCK; /* there is a memory gap between IA32 and X64 environment*/ scratch_buffer_size += kFileBufferSize * 2; fwrite(&scratch_buffer_size, 1, sizeof(int64_t), context_dec.fout); if (fclose(context_dec.fout) != 0) { fprintf(stderr, "failed to update ouptut file: %s\n", context_dec.output_path); is_ok = 0; } break; case COMMAND_DECOMPRESS: case COMMAND_TEST_INTEGRITY: is_ok = DecompressFiles(&context); break; case COMMAND_HELP: case COMMAND_INVALID: default: is_ok = (command == COMMAND_HELP); PrintHelp(FileName(argv[0]), is_ok); break; } if (context.iterator_error) is_ok = BROTLI_FALSE; free(context.modified_path); free(context.buffer); if (!is_ok) exit(1); return 0; }
int main(int argc, char* argv[]) { pthread_t termThread; int isTermThreadStarted = 0; int audioTrackIdx = -1; int subtitleTrackIdx = -1; uint32_t linuxDvbBufferSizeMB = 0; char argvBuff[256]; memset(argvBuff, '\0', sizeof(argvBuff)); int commandRetVal = -1; /* inform client that we can handle additional commands */ fprintf(stderr, "{\"EPLAYER3_EXTENDED\":{\"version\":%d}}\n", 51); PlayFiles_t playbackFiles; memset(&playbackFiles, 0x00, sizeof(playbackFiles)); if (0 != ParseParams(argc, argv, &playbackFiles, &audioTrackIdx, &subtitleTrackIdx, &linuxDvbBufferSizeMB)) { printf("Usage: exteplayer3 filePath [-u user-agent] [-c cookies] [-h headers] [-p prio] [-a] [-d] [-w] [-l] [-s] [-i] [-t audioTrackId] [-9 subtitleTrackId] [-x separateAudioUri] plabackUri\n"); printf("[-b size] Linux DVB output buffer size in MB\n"); printf("[-a 0|1|2|3] AAC software decoding - 1 bit - AAC ADTS, 2 - bit AAC LATM\n"); printf("[-e] EAC3 software decoding\n"); printf("[-3] AC3 software decoding\n"); printf("[-d] DTS software decoding\n"); printf("[-m] MP3 software decoding\n"); printf("[-w] WMA1, WMA2, WMA/PRO software decoding\n"); printf("[-l] software decoder use LPCM for injection (otherwise wav PCM will be used)\n"); printf("[-s] software decoding as stereo [downmix]\n"); #ifdef HAVE_FLV2MPEG4_CONVERTER printf("[-4 0|1] - disable/enable flv2mpeg4 converter\n"); #endif printf("[-i] play in infinity loop\n"); printf("[-v] switch to live TS stream mode\n"); printf("[-n 0|1|2] rtmp force protocol implementation auto(0) native/ffmpeg(1) or librtmp(2)\n"); printf("[-o 0|1] set progressive download\n"); printf("[-p value] nice value\n"); printf("[-P value] select Program ID from multi-service stream\n"); printf("[-t id] audio track ID switched on at start\n"); printf("[-9 id] subtitle track ID switched on at start\n"); printf("[-h headers] set custom HTTP headers \"Name: value\\r\\nName: value\\r\\n\"\n"); printf("[-u user-agent] set custom http User-Agent header\n"); printf("[-c cookies] set cookies - not working at now, please use -h instead\n"); printf("[-x separateAudioUri]\n"); printf("[-0 idx] video MPEG-DASH representation index\n"); printf("[-1 idx] audio MPEG-DASH representation index\n"); printf("[-f ffopt=ffval] any other ffmpeg option\n"); printf("[-F path to additional file with moov atom data (used for mp4 playback in progressive download mode)\n"); printf("[-O moov atom offset in the original file (used for mp4 playback in progressive download mode)\n"); printf("[-S remote file size (used for mp4 playback in progressive download mode)\n"); exit(1); } g_player = malloc(sizeof(Context_t)); if(NULL == g_player) { printf("g_player allocate error\n"); exit(1); } pthread_mutex_init(&playbackStartMtx, NULL); do { int flags = 0; if (pipe(g_pfd) == -1) break; /* Make read and write ends of pipe nonblocking */ if ((flags = fcntl(g_pfd[0], F_GETFL)) == -1) break; /* Make read end nonblocking */ flags |= O_NONBLOCK; if (fcntl(g_pfd[0], F_SETFL, flags) == -1) break; if ((flags = fcntl(g_pfd[1], F_GETFL)) == -1) break; /* Make write end nonblocking */ flags |= O_NONBLOCK; if (fcntl(g_pfd[1], F_SETFL, flags) == -1) break; if(0 == pthread_create(&termThread, NULL, TermThreadFun, NULL)) isTermThreadStarted = 1; } while(0); g_player->playback = &PlaybackHandler; g_player->output = &OutputHandler; g_player->container = &ContainerHandler; g_player->manager = &ManagerHandler; // make sure to kill myself when parent dies prctl(PR_SET_PDEATHSIG, SIGKILL); SetBuffering(); //Registrating output devices g_player->output->Command(g_player, OUTPUT_ADD, "audio"); g_player->output->Command(g_player, OUTPUT_ADD, "video"); g_player->output->Command(g_player, OUTPUT_ADD, "subtitle"); //Set LINUX DVB additional write buffer size if (linuxDvbBufferSizeMB) g_player->output->Command(g_player, OUTPUT_SET_BUFFER_SIZE, &linuxDvbBufferSizeMB); g_player->manager->video->Command(g_player, MANAGER_REGISTER_UPDATED_TRACK_INFO, UpdateVideoTrack); if (strncmp(playbackFiles.szFirstFile, "rtmp", 4) && strncmp(playbackFiles.szFirstFile, "ffrtmp", 4)) { g_player->playback->noprobe = 1; } commandRetVal = g_player->playback->Command(g_player, PLAYBACK_OPEN, &playbackFiles); fprintf(stderr, "{\"PLAYBACK_OPEN\":{\"OutputName\":\"%s\", \"file\":\"%s\", \"sts\":%d}}\n", g_player->output->Name, playbackFiles.szFirstFile, commandRetVal); if(commandRetVal < 0) { if(NULL != g_player) { free(g_player); } return 10; } { pthread_mutex_lock(&playbackStartMtx); isPlaybackStarted = 1; pthread_mutex_unlock(&playbackStartMtx); commandRetVal = g_player->output->Command(g_player, OUTPUT_OPEN, NULL); fprintf(stderr, "{\"OUTPUT_OPEN\":{\"sts\":%d}}\n", commandRetVal); commandRetVal = g_player->playback->Command(g_player, PLAYBACK_PLAY, NULL); fprintf(stderr, "{\"PLAYBACK_PLAY\":{\"sts\":%d}}\n", commandRetVal); if (g_player->playback->isPlaying) { PlaybackDieNowRegisterCallback(TerminateWakeUp); HandleTracks(g_player->manager->video, (PlaybackCmd_t)-1, "vc"); HandleTracks(g_player->manager->audio, (PlaybackCmd_t)-1, "al"); if (audioTrackIdx >= 0) { static char cmd[128] = ""; // static to not allocate on stack sprintf(cmd, "ai%d\n", audioTrackIdx); commandRetVal = HandleTracks(g_player->manager->audio, PLAYBACK_SWITCH_AUDIO, cmd); } HandleTracks(g_player->manager->audio, (PlaybackCmd_t)-1, "ac"); HandleTracks(g_player->manager->subtitle, (PlaybackCmd_t)-1, "sl"); if (subtitleTrackIdx >= 0) { static char cmd[128] = ""; // static to not allocate on stack sprintf(cmd, "si%d\n", subtitleTrackIdx); commandRetVal = HandleTracks(g_player->manager->subtitle, PLAYBACK_SWITCH_SUBTITLE, cmd); } HandleTracks(g_player->manager->subtitle, (PlaybackCmd_t)-1, "sc"); } while(g_player->playback->isPlaying && 0 == PlaybackDieNow(0)) { /* we made fgets non blocking */ if( NULL == fgets(argvBuff, sizeof(argvBuff)-1 , stdin) ) { /* wait for data - max 1s */ kbhit(); continue; } if(0 == argvBuff[0]) { continue; } switch(argvBuff[0]) { case 'v': { HandleTracks(g_player->manager->video, (PlaybackCmd_t)-1, argvBuff); break; } case 'a': { HandleTracks(g_player->manager->audio, PLAYBACK_SWITCH_AUDIO, argvBuff); break; } case 's': { HandleTracks(g_player->manager->subtitle, PLAYBACK_SWITCH_SUBTITLE, argvBuff); break; } case 'q': { commandRetVal = g_player->playback->Command(g_player, PLAYBACK_STOP, NULL); fprintf(stderr, "{\"PLAYBACK_STOP\":{\"sts\":%d}}\n", commandRetVal); break; } case 'c': { commandRetVal = g_player->playback->Command(g_player, PLAYBACK_CONTINUE, NULL); fprintf(stderr, "{\"PLAYBACK_CONTINUE\":{\"sts\":%d}}\n", commandRetVal); break; } case 'p': { commandRetVal = g_player->playback->Command(g_player, PLAYBACK_PAUSE, NULL); fprintf(stderr, "{\"PLAYBACK_PAUSE\":{\"sts\":%d}}\n", commandRetVal); break; } case 'm': { int speed = 0; sscanf(argvBuff+1, "%d", &speed); commandRetVal = g_player->playback->Command(g_player, PLAYBACK_SLOWMOTION, &speed); fprintf(stderr, "{\"PLAYBACK_SLOWMOTION\":{\"speed\":%d, \"sts\":%d}}\n", speed, commandRetVal); break; } case 'o': { int flags = 0; if( 1 == sscanf(argvBuff+1, "%d", &flags) ) { progressive_playback_set(flags); fprintf(stderr, "{\"PROGRESSIVE_DOWNLOAD\":{\"flags\":%d, \"sts\":0}}\n", flags); } break; } case 'f': { int speed = 0; sscanf(argvBuff+1, "%d", &speed); commandRetVal = g_player->playback->Command(g_player, PLAYBACK_FASTFORWARD, &speed); fprintf(stderr, "{\"PLAYBACK_FASTFORWARD\":{\"speed\":%d, \"sts\":%d}}\n", speed, commandRetVal); break; } case 'b': { int speed = 0; sscanf(argvBuff+1, "%d", &speed); commandRetVal = g_player->playback->Command(g_player, PLAYBACK_FASTBACKWARD, &speed); fprintf(stderr, "{\"PLAYBACK_FASTBACKWARD\":{\"speed\":%d, \"sts\":%d}}\n", speed, commandRetVal); break; } case 'g': { int32_t gotoPos = 0; int64_t length = 0; int32_t lengthInt = 0; int64_t sec = 0; int8_t force = ('f' == argvBuff[1]) ? 1 : 0; // f - force, c - check sscanf(argvBuff+2, "%d", &gotoPos); if(0 <= gotoPos || force) { commandRetVal = g_player->playback->Command(g_player, PLAYBACK_LENGTH, (void*)&length); fprintf(stderr, "{\"PLAYBACK_LENGTH\":{\"length\":%"PRId64", \"sts\":%d}}\n", length, commandRetVal); lengthInt = (int32_t)length; if(10 <= lengthInt || force) { sec = gotoPos; if(!force && gotoPos >= lengthInt) { sec = lengthInt - 10; } commandRetVal = g_player->playback->Command(g_player, PLAYBACK_SEEK_ABS, (void*)&sec); fprintf(stderr, "{\"PLAYBACK_SEEK_ABS\":{\"sec\":%"PRId64", \"sts\":%d}}\n", sec, commandRetVal); } } break; } case 'k': { int32_t seek = 0; int64_t length = 0; int32_t lengthInt = 0; int64_t sec = 0; int64_t pts = 0; int32_t CurrentSec = 0; int8_t force = ('f' == argvBuff[1]) ? 1 : 0; // f - force, c - check sscanf(argvBuff+2, "%d", &seek); commandRetVal = g_player->playback->Command(g_player, PLAYBACK_PTS, &pts); CurrentSec = (int32_t)(pts / 90000); if (0 == commandRetVal) { fprintf(stderr, "{\"J\":{\"ms\":%"PRId64"}}\n", pts / 90); } if(0 == commandRetVal || force) { commandRetVal = g_player->playback->Command(g_player, PLAYBACK_LENGTH, (void*)&length); fprintf(stderr, "{\"PLAYBACK_LENGTH\":{\"length\":%"PRId64", \"sts\":%d}}\n", length, commandRetVal); lengthInt = (int32_t)length; if(10 <= lengthInt || force ) { int32_t ergSec = CurrentSec + seek; if(!force && 0 > ergSec) { sec = CurrentSec * -1; // jump to start position } else if(!force && ergSec >= lengthInt) { sec = (lengthInt - CurrentSec) - 5; if(0 < sec) { sec = 0; // no jump we are at the end } } else { sec = seek; } } commandRetVal = g_player->playback->Command(g_player, PLAYBACK_SEEK, (void*)&sec); fprintf(stderr, "{\"PLAYBACK_SEEK\":{\"sec\":%"PRId64", \"sts\":%d}}\n", sec, commandRetVal); } break; } case 'l': { int64_t length = 0; commandRetVal = g_player->playback->Command(g_player, PLAYBACK_LENGTH, (void*)&length); fprintf(stderr, "{\"PLAYBACK_LENGTH\":{\"length\":%"PRId64", \"sts\":%d}}\n", length, commandRetVal); break; } case 'j': { int64_t pts = 0; commandRetVal = g_player->playback->Command(g_player, PLAYBACK_PTS, &pts); if (0 == commandRetVal) { int64_t lastPts = 0; commandRetVal = 1; if (g_player->container && g_player->container->selectedContainer) { commandRetVal = g_player->container->selectedContainer->Command(g_player->container, CONTAINER_LAST_PTS, &lastPts); } if (0 == commandRetVal && lastPts != INVALID_PTS_VALUE) { fprintf(stderr, "{\"J\":{\"ms\":%"PRId64",\"lms\":%"PRId64"}}\n", pts / 90, lastPts / 90); } else { fprintf(stderr, "{\"J\":{\"ms\":%"PRId64"}}\n", pts / 90); } } break; } case 'i': { PlaybackHandler_t *ptrP = g_player->playback; if(ptrP) { fprintf(stderr, "{\"PLAYBACK_INFO\":{ \"isPlaying\":%s, \"isPaused\":%s, \"isForwarding\":%s, \"isSeeking\":%s, \"isCreationPhase\":%s,", \ DUMP_BOOL(ptrP->isPlaying), DUMP_BOOL(ptrP->isPaused), DUMP_BOOL(ptrP->isForwarding), DUMP_BOOL(ptrP->isSeeking), DUMP_BOOL(ptrP->isCreationPhase) ); fprintf(stderr, "\"BackWard\":%d, \"SlowMotion\":%d, \"Speed\":%d, \"AVSync\":%d,", ptrP->BackWard, ptrP->SlowMotion, ptrP->Speed, ptrP->AVSync); fprintf(stderr, " \"isVideo\":%s, \"isAudio\":%s, \"isSubtitle\":%s, \"isDvbSubtitle\":%s, \"isTeletext\":%s, \"mayWriteToFramebuffer\":%s, \"abortRequested\":%s }}\n", \ DUMP_BOOL(ptrP->isVideo), DUMP_BOOL(ptrP->isAudio), DUMP_BOOL(0), DUMP_BOOL(0), DUMP_BOOL(0), DUMP_BOOL(0), DUMP_BOOL(ptrP->abortRequested) ); } break; } case 'n': { uint8_t loop = 0; if( '1' == argvBuff[1] || '0' == argvBuff[1] ) { PlaybackHandler_t *ptrP = g_player->playback; if(ptrP) { ptrP->isLoopMode = '1' == argvBuff[1] ? 1 : 0; fprintf(stderr, "{\"N\":{ \"isLoop\":%s }}\n", DUMP_BOOL(ptrP->isLoopMode)); } } break; } default: { break; } } } g_player->output->Command(g_player, OUTPUT_CLOSE, NULL); } if(NULL != g_player) { free(g_player); } if (isTermThreadStarted && 1 == write(g_pfd[1], "x", 1)) { pthread_join(termThread, NULL); } pthread_mutex_destroy(&playbackStartMtx); close(g_pfd[0]); close(g_pfd[1]); exit(0); }
//------------------------------------------------------------------------- bool CWebserverRequest::ParseRequest() { int ende; if(rawbuffer_len > 0 ) { if((ende = rawbuffer.find_first_of('\n')) == 0) { aprintf("ParseRequest: End of line not found\n"); Send500Error(); return false; } string zeile1 = rawbuffer.substr(0,ende-1); if(ParseFirstLine(zeile1)) { unsigned int i; for(i = 0; ((rawbuffer[i] != '\n') || (rawbuffer[i+2] != '\n')) && (i < rawbuffer.length());i++); int headerende = i; // dprintf("headerende: %d buffer_len: %d\n",headerende,rawbuffer_len); if(headerende == 0) { aprintf("ParseRequest: no headers found\n"); Send500Error(); return false; } string header = rawbuffer.substr(ende+1,headerende - ende - 2); ParseHeader(header); Host = HeaderList["Host"]; if(Method == M_POST) // TODO: Und testen ob content = formdata { string t = "multipart/form-data; boundary="; if(HeaderList["Content-Type"].compare(0,t.length(),t) == 0) { SocketWriteLn("Sorry, momentan broken\n"); /*Boundary = "--" + HeaderList["Content-Type"].substr(t.length(),HeaderList["Content-Type"].length() - t.length()); dprintf("Boundary: '%s'\n",Boundary.c_str()); if((headerende + 3) < rawbuffer_len) ParseBoundaries(rawbuffer.substr(headerende + 3,rawbuffer_len - (headerende + 3))); HandleUpload();*/ } else if(HeaderList["Content-Type"].compare("application/x-www-form-urlencoded") == 0) { dprintf("Form Daten in Parameter String\n"); if((headerende + 3) < rawbuffer_len) { string params = rawbuffer.substr(headerende + 3,rawbuffer_len - (headerende + 3)); if(params[params.length()-1] == '\n') params.substr(0,params.length() -2); ParseParams(params); } } dprintf("Method Post !\n"); } /* if(Method == M_POST) // TODO: Und testen ob content = formdata { if( (ende + 3) < rawbuffer + rawbuffer_len) { // Parent->Debug("Post Parameter vorhanden\n"); anfang = ende + 3; Param_String = string(anfang,rawbuffer + rawbuffer_len - anfang); dprintf("Post Param_String: %s\n",Param_String.c_str()); ParseParams(Param_String); } if(HeaderList->GetIndex("Content-Type") != -1) { dprintf("Content-Type: %s\n",HeaderList->GetValue(HeaderList->GetIndex("Content-Type"))); if(strcasecmp("application/x-www-form-urlencoded",HeaderList->GetValue(HeaderList->GetIndex("Content-Type"))) == 0) dprintf("Form Daten in Parameter String\n"); if(strstr(HeaderList->GetValue(HeaderList->GetIndex("Content-Type")),"multipart/form-data") != 0) { char * boundary; boundary = strstr(HeaderList->GetValue(HeaderList->GetIndex("Content-Type")),"boundary="); if(boundary) { boundary += strlen("boundary="); dprintf("boundary : %s\n",boundary); Upload = new TUpload(this); Upload->Boundary = new TString(boundary); Boundary = new TString(boundary); dprintf("Form Daten in Parameter String und Datei upload\nBoundary: %ld\n",Boundary); } } } } */ return true; } else { SocketWrite("HTTP/1.0 501 Not implemented\r\n"); SocketWrite("Content-Type: text/plain\r\n\r\n"); SocketWrite("501 : Request-Method not implemented.\n"); HttpStatus = 501; // dprintf("501 : Request-Method not implemented.\n"); return false; } } return false; }
int main(int argc, char **argv) { //printf("%d %c\n",argc,argv[0][0]); int i, DOPLOT, quiet, tmp; double pixel, thr; void *values[32]; /* opencl options */ int bat_pltsel=0, bat_devsel=0, bat_wgropitems=0, bat_batchitems=0; int script_mode = 0; int g_mem_size = -1, c_mem_size = -1, l_mem_size = -1, c_ProtonWater_Energy_size = -1, g_traceA_size = -1, g_arena_size = -1; /* grab the parameters from the command line */ tmp = 0; values[tmp++] = (void *) &NMC; values[tmp++] = (void *) &EMEAN; values[tmp++] = (void *) &ESTDV; values[tmp++] = (void *) &SIGMA; values[tmp++] = (void *) &TPATH; values[tmp++] = (void *) &MRIFIL; values[tmp++] = (void *) &TRACE; values[tmp++] = (void *) &DOPLOT; values[tmp++] = (void *) &XYANGLE; values[tmp++] = (void *) &AZIMUTH; values[tmp++] = (void *) &TOUTFIL; values[tmp++] = (void *) &BOUTFIL; values[tmp++] = (void *) &LOCFIL; values[tmp++] = (void *) &quiet; values[tmp++] = (void *) &pixel; values[tmp++] = (void *) &thr; values[tmp++] = (void *) &NTHREAD; values[tmp++] = (void *) &bat_pltsel; values[tmp++] = (void *) &bat_devsel; values[tmp++] = (void *) &bat_wgropitems; values[tmp++] = (void *) &bat_batchitems; values[tmp++] = (void *) &nx; if (ParseParams(argc-1, argv+1, _params, values) == -1) { fprintf(stderr, "flags were not parsed correctly!\n"); exit(-1); } #if CMD_MODE if (argc >= 2) { char *intrace = argv[1]; if (intrace[0] == 'c') { NMC = atoi(argv[2]); bat_pltsel = -1; } if (intrace[0] == 'q') { quiet = 1; bat_pltsel = 99; } if (intrace[0] == 'o') { NMC = atoi(argv[2]); bat_pltsel = atoi(argv[3]); bat_devsel = atoi(argv[4]); bat_wgropitems = atoi(argv[5]); bat_batchitems = atoi(argv[6]); } if (intrace[0] == 's' && intrace[1] == 'o') //script opencl { script_mode = 2; quiet = 0; NMC = atoi(argv[2]); NTHREAD = -1; bat_pltsel = atoi(argv[3]); bat_devsel = atoi(argv[4]); bat_wgropitems = atoi(argv[5]); bat_batchitems = atoi(argv[6]); nx = atoi(argv[7]); MAXSTEP = atof(argv[8]); EMEAN = atof(argv[9]); } if (intrace[0] == 's' && intrace[1] == 'c') //script cpu { script_mode = 1; quiet = 0; NMC = atoi(argv[2]); NTHREAD = atoi(argv[3]); bat_pltsel = -1; bat_devsel = -1; bat_wgropitems = -1; bat_batchitems = -1; nx = atoi(argv[4]); MAXSTEP = atof(argv[5]); EMEAN = atof(argv[6]); } } #endif FILE *csv_file = NULL; if (script_mode) { csv_file = fopen("jack_script.csv", "r"); if (csv_file == NULL) { csv_file = fopen("jack_script.csv", "a"); fprintf(csv_file, "NTHREAD, PLATFORM, DEVICE, Items_WG, Items_batch, NMC, dC, dS(mm), E(MeV), Time(sec), Global_MEM(B), Const_MEM(B), Local_MEM(B), Trace Size(B), Arena Size(B), WaterTable Size(B)\n"); } else { csv_file = fopen("jack_script.csv", "a"); } } ny = nz = nx; PIXEL = (REAL) pixel; THR = (REAL) thr; VERBOSE = ! quiet; if (VERBOSE) { printf("Number of Monte-Carlo trials (-nmc): %d\n", NMC); printf("Incident Particle Energy (-mean,-stdv,-sigma): N(%g,%g,%g) direction (-angle,-azimuth) (%g,%g)\n", EMEAN, ESTDV, SIGMA, XYANGLE, AZIMUTH); printf("Tables Read From (-path): %s\n", TPATH); if (MRIFIL) printf("MRI Read From (-mri): %s with pixel size %.2f\n", MRIFIL, PIXEL); if (LOCFIL) printf("Location Read From (-loc): %s\n", LOCFIL); if (BOUTFIL) printf("Output binary dose will be written to (-dump): %s\n", BOUTFIL); if (TOUTFIL) printf("Output text dose will be written to (-dump): %s\n", TOUTFIL); printf("Dump Traces (-trace): %s\n", TRACE ? "yes" : "no"); printf("Make Plot File (-plot): %s\n", DOPLOT ? "yes" : "no"); printf("OpenCL Device: %d Platform: %d WorkGroupItems: %d BatchItems: %d\n", bat_pltsel, bat_devsel, bat_wgropitems, bat_batchitems); } /* initialize */ initialize_queu(NQUEU); /* initialize the particle collection domain */ ARENA = initialize_collect(MRIFIL, LOCFIL); /* any table or physics initializations go here */ initialize_tables(); initialize_fluctuations(); /* create the global collector */ C = allocate_collector(); clock_t looper = clock(); gettimeofday(&gstart, NULL); // printf("bat_pltsel = %d\n", bat_pltsel); /* if opencl device was specified, then run the opencl version */ if (bat_pltsel != -1) { JackCL(NMC, bat_pltsel, bat_devsel, bat_wgropitems, bat_batchitems, EMEAN, ESTDV, SIGMA, XYANGLE, AZIMUTH, C, &g_mem_size, &c_mem_size, &l_mem_size, &c_ProtonWater_Energy_size, &g_traceA_size, &g_arena_size); } else if (NTHREAD < 2) { MonteCarlo(C, NMC, (REAL) EMEAN, (REAL) ESTDV, (REAL) SIGMA, (REAL) XYANGLE, (REAL) AZIMUTH); } else { ITHR = (int *) malloc(NTHREAD*sizeof(int)); CTHR = (collector **) malloc(NTHREAD*sizeof(collector *)); PTHR = (pthread_t *) malloc(NTHREAD*sizeof(pthread_t)); for (i=0; i<NTHREAD; i++) { CTHR[i] = allocate_collector(); } for (i=0; i<NTHREAD; i++) { ITHR[i] = i; pthread_create(&(PTHR[i]), NULL, (void *) &ThreadSimulate, (void *) &(ITHR[i])); } for (i=0; i<NTHREAD; i++) { pthread_join(PTHR[i], NULL); } for (i=0; i<NTHREAD; i++) accumulate_collector(C, CTHR[i]); } if (bat_pltsel == 99) return 0; clock_t end = clock(); gettimeofday(&gend, NULL); float delta = ((gend.tv_sec - gstart.tv_sec) * 1000000u + gend.tv_usec - gstart.tv_usec) / 1.e6; float second_time = (float) (end - looper) / CLOCKS_PER_SEC; /* dump files */ if (TOUTFIL) dump_dose_text_file(C, TOUTFIL); if (BOUTFIL) dump_dose_binary_file(C, BOUTFIL); if (LOCFIL) dump_good_bad_dose(C); /* print the results */ summarize_collect(C, DOPLOT); if (script_mode) { fprintf(csv_file, "%d, %d, %d, %d, %d, %d, %d, %.2f, %f, %f, %d, %d, %d, %d, %d, %d\n", NTHREAD, bat_pltsel, bat_devsel, bat_wgropitems, bat_batchitems, NMC, nx, MAXSTEP, EMEAN, delta, g_mem_size, c_mem_size, l_mem_size, g_traceA_size, g_arena_size, c_ProtonWater_Energy_size); } printf("\nSimulation Loop Time: %f seconds \n", second_time); printf("Simulation Loop Time (gettimeofday): %f seconds \n", delta); return(0); }
//----------------------------------------------------------------------------- // Handle Post (Form and ONE file upload) //----------------------------------------------------------------------------- bool CWebserverRequest::HandlePost() { //read header: line by line std::string raw_header, tmp_line; do { tmp_line = Connection->sock->ReceiveLine(); if(tmp_line == "") // Socket empty { log_level_printf(1,"HandleRequest: (Header) End of line not found: %s\n", strerror(errno)); Connection->Response.SendError(HTTP_INTERNAL_SERVER_ERROR); return false; } raw_header.append(tmp_line); } while(tmp_line != "\r\n"); // header ends with first empty line ParseHeader(raw_header); // read meesage body unsigned int content_len = 0; if(HeaderList["Content-Length"] != "") content_len = atoi( HeaderList["Content-Length"].c_str() ); // Get Rest of Request from Socket log_level_printf(2,"Connection->Method Post !\n"); log_level_printf(9,"Conntent Type:%s\n",(HeaderList["Content-Type"]).c_str()); log_level_printf(8,"Post Content-Length:%d as string:(%s)\n", content_len, HeaderList["Content-Length"].c_str()); static const std::string t = "multipart/form-data; boundary="; if(HeaderList["Content-Type"].compare(0,t.length(),t) == 0) // this a a multpart POST, normallly: file upload { #ifdef Y_CONFIG_FEATURE_UPLOAD std::string boundary = "--" + HeaderList["Content-Type"].substr(t.length(),HeaderList["Content-Type"].length() - t.length()); std::string post_header; do { content_len = HandlePostBoundary(boundary, content_len); } while(content_len > 0); #else Connection->Response.SendError(HTTP_NOT_IMPLEMENTED); return false; #endif } else if(HeaderList["Content-Type"].compare("application/x-www-form-urlencoded") == 0) //this is a normal POST with form-data (no upload) { // handle normal form POST log_level_printf(6,"Handle POST application/x-www-form-urlencoded\n"); std::string post_header; // get message-body post_header = Connection->sock->ReceiveBlock(); while(post_header.length() < content_len) { post_header += Connection->sock->ReceiveBlock(); /* aprintf("POST form less data then expected\n"); Connection->Response.SendError(HTTP_INTERNAL_SERVER_ERROR); return false; */ } // parse the params in post_header (message-body) an add them to ParameterList ParseParams(post_header); } return true; }