示例#1
0
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;
}
示例#2
0
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;
}
示例#3
0
文件: light.c 项目: oleavitt/gem
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;
}
示例#5
0
//-----------------------------------------------------------------------------
// 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"]);
}
示例#6
0
文件: triangle.c 项目: oleavitt/gem
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	;}
示例#8
0
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	;}
示例#10
0
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;
}
示例#11
0
文件: implicit.c 项目: oleavitt/gem
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);
}
示例#15
0
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;
    }
}
示例#16
0
文件: light.c 项目: oleavitt/gem
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;
}
示例#17
0
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");
	}
}
示例#18
0
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	;}
示例#20
0
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	;}
示例#22
0
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;
}
示例#23
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;
		}
		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;
	}
}
示例#24
0
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;
}
示例#25
0
void CHTTPSock::ParseURI() {
	ParseParams(m_sURI.Token(1, true, "?"), m_msvsGETParams);
	m_sURI = m_sURI.Token(0, false, "?");
}
示例#26
0
文件: brotli.c 项目: chipsec/chipsec
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;
}
示例#27
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);
}
示例#28
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;
}
示例#29
0
文件: jack.c 项目: ronaldo1018/JACK
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);
}
示例#30
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;
}