Category : C Source Code
Archive   : ASYNC130.ZIP
Filename : WAITFOR.C

 
Output of file : WAITFOR.C contained in archive : ASYNC130.ZIP

/* A module of ASYNCx.LIB version 1.02 */

#include
#include
#include "asyncdef.h"

/*************************************************************
Wait for the string pointed to by s to be received on the
specified port. Wait for up to between t and t+1 18ths of a
second for the string to arrive. If mode is 0, the string
must match exactly. If the mode is 1, the case of the
received string may vary from that of the string s points to.
*************************************************************/
int a_waitfor(ASYNC *p,char *s,int t,int mode)
{unsigned long t0,far *t1;
char c,*cp;
if (p)
{cp=s;
t1=(unsigned long far *)MK_FP(0x40,0x6c);
t0=*t1;
while(*cp && (*t1)-t0<=(unsigned long)t)
if (a_icount(p)) /* a character is available from the port */
{c=a_getc(p); /* read the character */
if (mode) /* the case of the character does not matter */
if (toupper(*cp)==toupper(c)) /* this is the right character */
cp++; /* point cp to the next character to look for */
else /* this is not the right character */
cp=s; /* start cp back at the beginning of the string */
else /* the case of the character does matter */
if (*cp==c) /* this is the character I was looking for */
cp++; /* point cp to the next character to look for */
else /* this is not the right character */
cp=s; /* start cp back at the beginning of the string */
}
return (int)(*cp); /* return 0 if the string was found */
}
return -1;
} /* end of a_waitfor(p,s,t,mode) */