Ejemplo n.º 1
0
char *TerminalReadText(char *RetStr, int Flags, STREAM *S)
{
int inchar, len=0;
char outchar;

inchar=STREAMReadChar(S);
while (inchar != EOF)
{
	if (Flags & TERM_SHOWTEXT) outchar=inchar & 0xFF;
	if (Flags & TERM_SHOWSTARS) 
	{
		if ((outchar & 0xFF) =='\n') outchar=inchar & 0xFF;
		else if ((outchar & 0xFF) =='\b') outchar=inchar & 0xFF;
		else outchar='*';
	}


	if (Flags & TERM_SHOWTEXTSTARS) 
	{
		switch (inchar)
		{

		case '\n':
		case '\r':
		case 0x08:
		break;

		default:
		if (len > 0) STREAMWriteString("\x08*",S);
		break;
		}

		outchar=inchar & 0xFF;
	}


	STREAMWriteBytes(S, &outchar,1);
	STREAMFlush(S);
	if (inchar == '\n') break;
	if (inchar == '\r') break;

	RetStr=AddCharToBuffer(RetStr,len++, inchar & 0xFF);
	inchar=STREAMReadChar(S);
}

return(RetStr);
}
Ejemplo n.º 2
0
char *STREAMReadToMultiTerminator(char *Buffer, STREAM *S, char *Terms)
{
int inchar, len=0;
char *Tempptr;

Tempptr=CopyStr(Buffer,"");

inchar=STREAMReadChar(S);


//All error conditions are negative, but '0' can just mean
//no more data to read
while (inchar > -1)
{
	//if ((len % 100)== 0) Tempptr=realloc(Tempptr,(len/100 +1) *100 +2);
	//*(Tempptr+len)=inchar;

		if (inchar > 0)
		{
    	Tempptr=AddCharToBuffer(Tempptr,len,(char) inchar);
			len++;

    	if (strchr(Terms,inchar)) break;
		}
    inchar=STREAMReadChar(S);
}


*(Tempptr+len)='\0';

//if ((inchar==EOF) && (errno==ECONNREFUSED)) return(Tempptr);
if (
	((inchar==EOF) || (inchar==STREAM_DATA_ERROR))
	&& 
	(StrLen(Tempptr)==0)
   )
{
  free(Tempptr);
  return(NULL);
}

return(Tempptr);
}
Ejemplo n.º 3
0
int  ProcessIncommingBytes(DownloadContext *CTX)
{
    int inchar, FoundTerm=FALSE, err;

    inchar=STREAMReadChar(CTX->Input);

    if (inchar==EOF) return(TRUE);

    FoundTerm=CheckForTerm(CTX,(char) inchar);
    while ((inchar !=EOF) && (! FoundTerm))
    {
        if (CTX->TermPos==0) STREAMWriteChar(CTX->Output, (char) inchar);
        inchar=STREAMReadChar(CTX->Input);
        err=errno;
        FoundTerm=CheckForTerm(CTX, (char) inchar);
    }
    if (inchar==EOF) return(TRUE);
    if (FoundTerm) return(TRUE);
    return(FALSE);
}
Ejemplo n.º 4
0
int STREAMReadBytesToTerm(STREAM *S, char *Buffer, int BuffSize,unsigned char Term)
{
int inchar, pos=0;

inchar=STREAMReadChar(S);
while (inchar != EOF) 
{
if (inchar > -1)
{
Buffer[pos]=inchar;
pos++;
if (inchar==Term) break;
if (pos==BuffSize) break;
}
inchar=STREAMReadChar(S);
}

if ((pos==0) && (inchar==EOF)) return(EOF);
return(pos);
}
Ejemplo n.º 5
0
char *STREAMReadToTerminator(char *Buffer, STREAM *S,unsigned char Term)
{
int inchar, len=0;
char *Tempptr;

Tempptr=CopyStr(Buffer,"");

inchar=STREAMReadChar(S);
while (inchar != EOF)
{
	//if ((len % 100)== 0) Tempptr=realloc(Tempptr,(len/100 +1) *100 +2);
	//*(Tempptr+len)=inchar;

		if (inchar >= 0)
		{
    	Tempptr=AddCharToBuffer(Tempptr,len,(char) inchar);
			len++;
		}
		else if (inchar !=STREAM_NODATA) break;
    if (inchar==Term) break;
    inchar=STREAMReadChar(S);
}


*(Tempptr+len)='\0';
//if ((inchar==EOF) && (errno==ECONNREFUSED)) return(Tempptr);
if (
	((inchar==EOF) || (inchar==STREAM_DATA_ERROR))
	&& 
	(StrLen(Tempptr)==0)
   )
{
  free(Tempptr);
  return(NULL);
}

return(Tempptr);
}