summaryrefslogtreecommitdiff
path: root/os/src/read.c
diff options
context:
space:
mode:
Diffstat (limited to 'os/src/read.c')
-rw-r--r--os/src/read.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/os/src/read.c b/os/src/read.c
index 4850c9c..f848812 100644
--- a/os/src/read.c
+++ b/os/src/read.c
@@ -1,7 +1,22 @@
#include <reent.h>
#include <osdebug.h>
+#include <errno.h>
+#include "fio.h"
-_ssize_t _read_r(struct _reent * reent, int fd, void * ptr, size_t size) {
- DBGOUT("_read_r(%p, %d, %p, %u)\r\n", reent, fd, ptr, size);
- return 0;
+_ssize_t _read_r(struct _reent * reent, int fd, void * buf, size_t size) {
+ _ssize_t r;
+
+ if (!fio_is_open(fd)) {
+ reent->_errno = EBADF;
+ return -1;
+ }
+
+ r = fio_read(fd, buf, size);
+
+ if (r < 0) {
+ reent->_errno = EINVAL;
+ return -1;
+ }
+
+ return r;
}