source:
rtems/c/src/exec/libcsupport/src/read.c
@
9c3fa30
Last change on this file since 9c3fa30 was 9c3fa30, checked in by Joel Sherrill <joel.sherrill@…>, on 09/28/00 at 20:19:23 | |
---|---|
|
|
File size: 1.2 KB |
Line | |
---|---|
1 | /* |
2 | * read() - POSIX 1003.1b 6.4.1 - Read From a File |
3 | * |
4 | * COPYRIGHT (c) 1989-1999. |
5 | * On-Line Applications Research Corporation (OAR). |
6 | * |
7 | * The license and distribution terms for this file may be |
8 | * found in the file LICENSE in this distribution or at |
9 | * http://www.OARcorp.com/rtems/license.html. |
10 | * |
11 | * $Id$ |
12 | */ |
13 | |
14 | #include "libio_.h" |
15 | |
16 | ssize_t read( |
17 | int fd, |
18 | void *buffer, |
19 | size_t count |
20 | ) |
21 | { |
22 | int rc; /* XXX change to a size_t when prototype is fixed */ |
23 | rtems_libio_t *iop; |
24 | |
25 | rtems_libio_check_fd( fd ); |
26 | iop = rtems_libio_iop( fd ); |
27 | rtems_libio_check_is_open(iop); |
28 | rtems_libio_check_buffer( buffer ); |
29 | rtems_libio_check_count( count ); |
30 | rtems_libio_check_permissions( iop, LIBIO_FLAGS_READ ); |
31 | |
32 | /* |
33 | * Now process the read(). |
34 | */ |
35 | |
36 | if ( !iop->handlers->read_h ) |
37 | set_errno_and_return_minus_one( ENOTSUP ); |
38 | |
39 | rc = (*iop->handlers->read_h)( iop, buffer, count ); |
40 | |
41 | if ( rc > 0 ) |
42 | iop->offset += rc; |
43 | |
44 | return rc; |
45 | } |
46 | |
47 | /* |
48 | * _read_r |
49 | * |
50 | * This is the Newlib dependent reentrant version of read(). |
51 | */ |
52 | |
53 | #if defined(RTEMS_NEWLIB) |
54 | |
55 | #include <reent.h> |
56 | |
57 | _ssize_t _read_r( |
58 | struct _reent *ptr, |
59 | int fd, |
60 | void *buf, |
61 | size_t nbytes |
62 | ) |
63 | { |
64 | return read( fd, buf, nbytes ); |
65 | } |
66 | #endif |
Note: See TracBrowser
for help on using the repository browser.