Xinu7/src/sys/sys/lfread.c
/* lfread.c - lfread */
#include <conf.h>
#include <kernel.h>
#include <disk.h>
#include <lfile.h>
#include <dir.h>
/*------------------------------------------------------------------------
* lfread -- read from a previously opened disk file
*------------------------------------------------------------------------
*/
lfread(devptr, buff, count)
struct devsw *devptr;
char *buff;
int count;
{
int done;
int ichar;
if (count < 0)
return(SYSERR);
for (done=0 ; done < count ; done++)
if ( (ichar=lfgetc(devptr)) == SYSERR)
return(SYSERR);
else if (ichar == EOF ) { /* EOF before finished */
if (done == 0)
return(EOF);
else
return(done);
} else
*buff++ = (char) ichar;
return(done);
}