source:
rtems/cpukit/libcsupport/src/fstat.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.3 KB |
Line | |
---|---|
1 | /* |
2 | * fstat() - POSIX 1003.1b 5.6.2 - Get File Status |
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 <sys/stat.h> |
15 | #include <unistd.h> |
16 | #include <string.h> |
17 | |
18 | #include "libio_.h" |
19 | |
20 | int fstat( |
21 | int fd, |
22 | struct stat *sbuf |
23 | ) |
24 | { |
25 | rtems_libio_t *iop; |
26 | |
27 | /* |
28 | * Check to see if we were passed a valid pointer. |
29 | */ |
30 | |
31 | if ( !sbuf ) |
32 | set_errno_and_return_minus_one( EFAULT ); |
33 | |
34 | /* |
35 | * Now process the stat() request. |
36 | */ |
37 | |
38 | iop = rtems_libio_iop( fd ); |
39 | rtems_libio_check_fd( fd ); |
40 | rtems_libio_check_is_open(iop); |
41 | |
42 | if ( !iop->handlers ) |
43 | set_errno_and_return_minus_one( EBADF ); |
44 | |
45 | if ( !iop->handlers->fstat_h ) |
46 | set_errno_and_return_minus_one( ENOTSUP ); |
47 | |
48 | /* |
49 | * Zero out the stat structure so the various support |
50 | * versions of stat don't have to. |
51 | */ |
52 | memset( sbuf, 0, sizeof(struct stat) ); |
53 | |
54 | return (*iop->handlers->fstat_h)( &iop->pathinfo, sbuf ); |
55 | } |
56 | |
57 | /* |
58 | * _fstat_r |
59 | * |
60 | * This is the Newlib dependent reentrant version of fstat(). |
61 | */ |
62 | |
63 | #if defined(RTEMS_NEWLIB) |
64 | |
65 | #include <reent.h> |
66 | |
67 | int _fstat_r( |
68 | struct _reent *ptr, |
69 | int fd, |
70 | struct stat *buf |
71 | ) |
72 | { |
73 | return fstat( fd, buf ); |
74 | } |
75 | #endif |
Note: See TracBrowser
for help on using the repository browser.