source:
rtems/c/src/lib/libc/ftruncate.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.1 KB |
Line | |
---|---|
1 | /* |
2 | * ftruncate() - Truncate a File to the Specified Length |
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 <unistd.h> |
15 | #include <errno.h> |
16 | |
17 | #include "libio_.h" |
18 | |
19 | int ftruncate( |
20 | int fd, |
21 | off_t length |
22 | ) |
23 | { |
24 | rtems_libio_t *iop; |
25 | rtems_filesystem_location_info_t loc; |
26 | |
27 | rtems_libio_check_fd( fd ); |
28 | iop = rtems_libio_iop( fd ); |
29 | rtems_libio_check_is_open(iop); |
30 | |
31 | /* |
32 | * Now process the ftruncate() request. |
33 | */ |
34 | |
35 | /* |
36 | * Make sure we are not working on a directory |
37 | */ |
38 | |
39 | loc = iop->pathinfo; |
40 | if ( !loc.ops->node_type_h ) |
41 | set_errno_and_return_minus_one( ENOTSUP ); |
42 | |
43 | if ( (*loc.ops->node_type_h)( &loc ) == RTEMS_FILESYSTEM_DIRECTORY ) |
44 | set_errno_and_return_minus_one( EISDIR ); |
45 | |
46 | rtems_libio_check_permissions( iop, LIBIO_FLAGS_WRITE ); |
47 | |
48 | if ( !iop->handlers->ftruncate_h ) |
49 | set_errno_and_return_minus_one( ENOTSUP ); |
50 | |
51 | return (*iop->handlers->ftruncate_h)( iop, length ); |
52 | } |
53 |
Note: See TracBrowser
for help on using the repository browser.