source:
rtems/cpukit/libcsupport/src/unlink.c
@
c17d0b3
Last change on this file since c17d0b3 was c17d0b3, checked in by Sebastian Huber <sebastian.huber@…>, on 10/02/12 at 13:44:59 | |
---|---|
|
|
File size: 1.5 KB |
Rev | Line | |
---|---|---|
[07a3253d] | 1 | /* |
2 | * unlink() - POSIX 1003.1b - 5.5.1 - Remove an existing link | |
3 | * | |
[08311cc3] | 4 | * COPYRIGHT (c) 1989-1999. |
[07a3253d] | 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 | |
[0eae36c7] | 9 | * http://www.rtems.com/license/LICENSE. |
[07a3253d] | 10 | */ |
11 | ||
[9c49db4] | 12 | #if HAVE_CONFIG_H |
[3b7c123] | 13 | #include "config.h" |
[9c49db4] | 14 | #endif |
15 | ||
[3b7c123] | 16 | #include <unistd.h> |
[07a3253d] | 17 | |
[3ba74c73] | 18 | #include <rtems/libio_.h> |
[07a3253d] | 19 | |
[3b7c123] | 20 | int unlink( const char *path ) |
[07a3253d] | 21 | { |
[3b7c123] | 22 | int rv = 0; |
23 | rtems_filesystem_eval_path_context_t ctx; | |
[2563410] | 24 | int eval_flags = RTEMS_FS_REJECT_TERMINAL_DOT; |
[3b7c123] | 25 | rtems_filesystem_location_info_t parentloc; |
[2563410] | 26 | int parent_eval_flags = RTEMS_FS_PERMS_WRITE |
27 | | RTEMS_FS_PERMS_EXEC | |
28 | | RTEMS_FS_FOLLOW_LINK; | |
[3b7c123] | 29 | const rtems_filesystem_location_info_t *currentloc = |
30 | rtems_filesystem_eval_path_start_with_parent( | |
31 | &ctx, | |
32 | path, | |
33 | eval_flags, | |
34 | &parentloc, | |
35 | parent_eval_flags | |
36 | ); | |
37 | ||
[c17d0b3] | 38 | if ( !rtems_filesystem_location_is_root( currentloc ) ) { |
39 | const rtems_filesystem_operations_table *ops = currentloc->mt_entry->ops; | |
40 | ||
41 | rv = (*ops->rmnod_h)( &parentloc, currentloc ); | |
42 | } else { | |
43 | rtems_filesystem_eval_path_error( &ctx, EBUSY ); | |
44 | rv = -1; | |
45 | } | |
[3b7c123] | 46 | |
47 | rtems_filesystem_eval_path_cleanup_with_parent( &ctx, &parentloc ); | |
48 | ||
49 | return rv; | |
[07a3253d] | 50 | } |
[d006519b] | 51 | |
52 | /* | |
53 | * _unlink_r | |
54 | * | |
55 | * This is the Newlib dependent reentrant version of unlink(). | |
56 | */ | |
57 | ||
58 | #if defined(RTEMS_NEWLIB) | |
59 | ||
60 | #include <reent.h> | |
61 | ||
62 | int _unlink_r( | |
[2e8737a] | 63 | struct _reent *ptr __attribute__((unused)), |
[d006519b] | 64 | const char *path |
65 | ) | |
66 | { | |
67 | return unlink( path ); | |
68 | } | |
69 | #endif |
Note: See TracBrowser
for help on using the repository browser.