source:
rtems/c/src/lib/libc/lseek.c
@
946178d
Last change on this file since 946178d was 9c3fa30, checked in by Joel Sherrill <joel.sherrill@…>, on 09/28/00 at 20:19:23 | |
---|---|
|
|
File size: 1.3 KB |
Line | |
---|---|
1 | /* |
2 | * lseek() - POSIX 1003.1b 6.5.3 - Reposition Read/Write File Offset |
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 <stdio.h> |
15 | |
16 | #include "libio_.h" |
17 | |
18 | off_t lseek( |
19 | int fd, |
20 | off_t offset, |
21 | int whence |
22 | ) |
23 | { |
24 | rtems_libio_t *iop; |
25 | |
26 | rtems_libio_check_fd( fd ); |
27 | iop = rtems_libio_iop( fd ); |
28 | rtems_libio_check_is_open(iop); |
29 | |
30 | /* |
31 | * Now process the lseek(). |
32 | */ |
33 | |
34 | switch ( whence ) { |
35 | case SEEK_SET: |
36 | iop->offset = offset; |
37 | break; |
38 | |
39 | case SEEK_CUR: |
40 | iop->offset += offset; |
41 | break; |
42 | |
43 | case SEEK_END: |
44 | iop->offset = iop->size - offset; |
45 | break; |
46 | |
47 | default: |
48 | errno = EINVAL; |
49 | return -1; |
50 | } |
51 | |
52 | if ( !iop->handlers->lseek_h ) |
53 | set_errno_and_return_minus_one( ENOTSUP ); |
54 | |
55 | return (*iop->handlers->lseek_h)( iop, offset, whence ); |
56 | } |
57 | |
58 | /* |
59 | * _lseek_r |
60 | * |
61 | * This is the Newlib dependent reentrant version of lseek(). |
62 | */ |
63 | |
64 | #if defined(RTEMS_NEWLIB) |
65 | |
66 | #include <reent.h> |
67 | |
68 | off_t _lseek_r( |
69 | struct _reent *ptr, |
70 | int fd, |
71 | off_t offset, |
72 | int whence |
73 | ) |
74 | { |
75 | return lseek( fd, offset, whence ); |
76 | } |
77 | #endif |
78 |
Note: See TracBrowser
for help on using the repository browser.