Пример #1
0
char *HTTPQuote(char *RetBuff, char *Str)
{
char *RetStr=NULL, *Token=NULL, *ptr;
int olen=0, ilen;

RetStr=CopyStr(RetStr,"");
ilen=StrLen(Str);

for (ptr=Str; ptr < (Str+ilen); ptr++)
{
switch (*ptr)
{
		case ' ':
			RetStr=AddCharToStr(RetStr,'+');
		break;

		case '(':
		case ')':
		case '[':
		case ']':
		case '{':
		case '}':
		case '\t':
		case '?':
		case '&':
		case '!':
		case ',':
		case '+':
		case '\'':
		case ':':
		case ';':
		case '/':
		case '\r':
		case '\n':
		Token=FormatStr(Token,"%%%02X",*ptr); 
		RetStr=CatStr(RetStr,Token);
		olen+=StrLen(Token);
		break;

		default:
	//	 RetStr=AddCharToBuffer(RetStr,olen,*ptr); 
		 RetStr=AddCharToStr(RetStr,*ptr); 
		 olen++;
		break;
}

}

DestroyString(Token);
return(RetStr);
}
Пример #2
0
char *HTMLQuote(char *RetBuff, char *Str)
{
char *RetStr=NULL, *Token=NULL, *ptr;
int len;

RetStr=CopyStr(RetStr,"");
len=StrLen(Str);

for (ptr=Str; ptr < (Str+len); ptr++)
{

switch (*ptr)
{
case '&': RetStr=CatStr(RetStr,"&amp;"); break;
case '<': RetStr=CatStr(RetStr,"&lt;"); break;
case '>': RetStr=CatStr(RetStr,"&gt;"); break;

default:
		 RetStr=AddCharToStr(RetStr,*ptr); 
break; 
}

}

DestroyString(Token);
return(RetStr);
}
Пример #3
0
char *SlashTerminateDirectoryPath(char *DirPath)
{
char *ptr, *RetStr=NULL;

if (! DirPath) return(CopyStr(DirPath,"/"));
RetStr=DirPath;
ptr=RetStr+StrLen(RetStr)-1;
if (*ptr != '/') RetStr=AddCharToStr(RetStr,'/');

return(RetStr);
}
Пример #4
0
char *ParseVar(char *Buff, const char **Line, ListNode *LocalVars, int Flags)
{
char *VarName=NULL, *OutStr=NULL, *Tempstr=NULL;
const char *ptr, *vptr;

OutStr=Buff;
ptr=*Line;

if (*ptr=='(') ptr++;

	while ((*ptr !=')') && (*ptr !='\0'))
	{
		if (*ptr=='$') 
		{
			ptr++;
			Tempstr=ParseVar(Tempstr,&ptr,LocalVars,Flags);
			VarName=CatStr(VarName,Tempstr);
		}
		 else VarName=AddCharToStr(VarName,*ptr);
	 ptr++;
	}

*Line=ptr; //very important! Otherwise the calling process will not 
	   //know we have consumed some of the text!

	//Now lookup var/format/append to output
	if (! (Flags & SUBS_CASE_VARNAMES)) strlwr(VarName);

	vptr=GetVar(LocalVars,VarName);

	if (Flags & SUBS_QUOTE_VARS) OutStr=CatStr(OutStr,"'");

	if (Flags & SUBS_STRIP_VARS_WHITESPACE) 
	{
		Tempstr=CopyStr(Tempstr,vptr);
		StripTrailingWhitespace(Tempstr);
		StripLeadingWhitespace(Tempstr);
   	OutStr=CatStr(OutStr,Tempstr);
	}
  else OutStr=CatStr(OutStr, vptr);

	if (Flags & SUBS_QUOTE_VARS) OutStr=CatStr(OutStr,"'");

DestroyString(VarName);
DestroyString(Tempstr);

return(OutStr);
}
Пример #5
0
//This parses those actions that take a string
static const char *ParseStringAction(const char *Line, int Type, TCrayon *Crayon)
{
	TCrayon *Action;
	char *Token=NULL;
	const char *ptr, *sptr;

		ptr=GetToken(Line," ",&Token,GETTOKEN_QUOTES);

		Action=NewCrayonAction(Crayon,Type);
		
		for (sptr=Token; *sptr != '\0'; sptr++)
		{
			if (*sptr=='\\')
			{
				sptr++;
				switch (*sptr)
				{
					case 'a': Action->String=AddCharToStr(Action->String,0x07); break;
					case 'b': Action->String=AddCharToStr(Action->String,0x08); break;
					case 'c': 
						sptr++;
						if ((*sptr > 64) && (*sptr < 91)) Action->String=AddCharToStr(Action->String,*sptr-64);
						if ((*sptr > 96) && (*sptr < 123)) Action->String=AddCharToStr(Action->String,*sptr-96);
					break;
					case 'n': Action->String=AddCharToStr(Action->String,'\n'); break;
					case 'r': Action->String=AddCharToStr(Action->String,'\r'); break;
					case 't': Action->String=AddCharToStr(Action->String,'	'); break;
					default: Action->String=AddCharToStr(Action->String, *sptr); break;
				}
			}
			else Action->String=AddCharToStr(Action->String, *sptr);
		}


		Destroy(Token);

return(ptr);
}
Пример #6
0
char *SubstituteVarsInString(char *Buffer, const char *Fmt, ListNode *Vars, int Flags)
{
char *ReturnStr=NULL, *VarName=NULL, *Tempstr=NULL;
const char *FmtPtr;
int count, VarIsPointer=FALSE;
ListNode *Curr;
int len=0, i;

ReturnStr=CopyStr(Buffer,"");

if (! Fmt) return(ReturnStr);


FmtPtr=Fmt;
while (*FmtPtr !=0)
{
	switch (*FmtPtr)
	{

		case '\\':
			FmtPtr++;
			switch (*FmtPtr)
			{
			   case 't':
				ReturnStr=AddCharToStr(ReturnStr,' ');
				len=StrLen(ReturnStr);
				while ((len % 4) !=0)
				{
				ReturnStr=AddCharToStr(ReturnStr,' ');
				len++;
				}
			   break;

			   case 'r':
				ReturnStr=AddCharToStr(ReturnStr,'\r');
				len++;
			   break;

			   case 'n':
				ReturnStr=AddCharToStr(ReturnStr,'\n');
				len++;
			   break;

			   default:
				ReturnStr=AddCharToStr(ReturnStr,*FmtPtr);
				len++;
			}
		break;

		case '$':
		FmtPtr++;
		/*
			if (*FmtPtr=='$')
			{
				 VarIsPointer=TRUE;
				 FmtPtr++;
			}
			if (*FmtPtr=='(') FmtPtr++;
			*/

		ReturnStr=ParseVar(ReturnStr, &FmtPtr, Vars, Flags);
 		break;

		case '"':
			FmtPtr++;
			while (*FmtPtr && (*FmtPtr !='"')) 
			{
			 	ReturnStr=AddCharToStr(ReturnStr,*FmtPtr);
				len++;
				FmtPtr++;
			}
			break;
 
		default:
			 ReturnStr=AddCharToStr(ReturnStr,*FmtPtr);
			 len++;
	}

FmtPtr++;
}


DestroyString(Tempstr);
DestroyString(VarName);
return(ReturnStr);
}