XINU
lflread.c
Go to the documentation of this file.
1 /* lflread.c - lflread */
2 
3 #include <xinu.h>
4 
5 /*------------------------------------------------------------------------
6  * lflread - Read from a previously opened local file
7  *------------------------------------------------------------------------
8  */
10  struct dentry *devptr, /* Entry in device switch table */
11  char *buff, /* Buffer to hold bytes */
12  int32 count /* Max bytes to read */
13  )
14 {
15  uint32 numread; /* Number of bytes read */
16  int32 nxtbyte; /* Character or SYSERR/EOF */
17 
18  if (count < 0) {
19  return SYSERR;
20  }
21 
22  /* Iterate and use lflgetc to read individual bytes */
23 
24  for (numread=0 ; numread < count ; numread++) {
25  nxtbyte = lflgetc(devptr);
26  if (nxtbyte == SYSERR) {
27  return SYSERR;
28  } else if (nxtbyte == EOF) { /* EOF before finished */
29  if (numread == 0) {
30  return EOF;
31  } else {
32  return numread;
33  }
34  } else {
35  *buff++ = (char) (0xff & nxtbyte);
36  }
37  }
38  return numread;
39 }
全てのシステムヘッダファイルをインクルードする。
#define SYSERR
処理が失敗した場合
Definition: kernel.h:79
#define EOF
ファイルの終端(End of File)に達した場合(読み込み処理に用いる)
Definition: kernel.h:81
devcall lflgetc(struct dentry *)
Definition: lflgetc.c:9
Definition: conf.h:6
devcall lflread(struct dentry *devptr, char *buff, int32 count)
Definition: lflread.c:9
int int32
符号あり32ビット整数(int)
Definition: kernel.h:11
unsigned int uint32
符号なし32ビット整数(unsigned int)
Definition: kernel.h:15
int32 devcall
デバイスコール関数 返り値の型
Definition: kernel.h:49