40 lines
646 B
C
40 lines
646 B
C
/* $Id: yyread.c,v 1.2 1991/11/03 21:53:20 piet Rel $ */
|
|
/* sozobon version */
|
|
|
|
#include <memory.h>
|
|
#include <string.h>
|
|
|
|
/*
|
|
* read, ignoring CR's
|
|
*
|
|
* ++jrb
|
|
*/
|
|
int _yyread(fd, buf, size)
|
|
int fd; char *buf; int size;
|
|
{
|
|
int count = read(fd, buf, size);
|
|
int done = 0, i;
|
|
|
|
if(count <= 0)
|
|
return count;
|
|
|
|
do{
|
|
for(i = done; i < (done+count); i++)
|
|
{
|
|
if(buf[i] == '\r')
|
|
{
|
|
if(i < done + count - 1)
|
|
bcopy(&buf[i+1], &buf[i], (count -1 - (i - done)));
|
|
count -= 1;
|
|
}
|
|
}
|
|
done += count;
|
|
if(done == size)
|
|
return done;
|
|
count = read(fd, &buf[done], (size - done));
|
|
} while(count > 0);
|
|
|
|
return done;
|
|
}
|
|
|