From 8ab8295384ace533b8f17260b07e74327995658e Mon Sep 17 00:00:00 2001 From: neal Date: Wed, 8 Oct 2008 16:07:58 +0000 Subject: viengoos/ 2008-10-08 Neal H. Walfield * rm.h (enum rm_method_id): Add RM_read. (rm_method_id_string): Handle it. (read): New RPC. * server.c (server_loop): Implement the read RPC. newlib/ 2008-10-08 Neal H. Walfield * addon/newlib/libc/sys/hurd/readr.c: Include . (read): Implement. --- newlib/addon/newlib/libc/sys/hurd/readr.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'newlib/addon') diff --git a/newlib/addon/newlib/libc/sys/hurd/readr.c b/newlib/addon/newlib/libc/sys/hurd/readr.c index bc1d6a0..1177a41 100644 --- a/newlib/addon/newlib/libc/sys/hurd/readr.c +++ b/newlib/addon/newlib/libc/sys/hurd/readr.c @@ -4,11 +4,25 @@ #include #include +#include + _ssize_t read (int fd, void *buf, size_t cnt) { - errno = EOPNOTSUPP; - return -1; + if (fd != 0) + { + errno = EBADF; + return -1; + } + + if (cnt == 0) + return 0; + + struct io_buffer buffer; + rm_read (cnt, &buffer); + + memcpy (buf, buffer.data, buffer.len); + return buffer.len; } _ssize_t -- cgit v1.2.3