diff options
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libc/link.c | 27 |
1 files changed, 7 insertions, 20 deletions
diff --git a/c/src/lib/libc/link.c b/c/src/lib/libc/link.c index 38ce78d87a..c12398746d 100644 --- a/c/src/lib/libc/link.c +++ b/c/src/lib/libc/link.c @@ -44,8 +44,7 @@ int link( rtems_filesystem_get_start_loc( new, &i, &parent_loc ); result = (*parent_loc.ops->evalformake)( &new[i], &parent_loc, &name_start ); if ( result != 0 ) { - if ( existing_loc.ops->freenod ) - (*existing_loc.ops->freenod)( &parent_loc ); + rtems_filesystem_freenode( &parent_loc ); set_errno_and_return_minus_one( result ); } @@ -55,33 +54,21 @@ int link( */ if ( parent_loc.mt_entry != existing_loc.mt_entry ) { - if ( existing_loc.ops->freenod ) - (*existing_loc.ops->freenod)( &existing_loc ); - - if ( parent_loc.ops->freenod ) - (*parent_loc.ops->freenod)( &parent_loc ); - + rtems_filesystem_freenode( &existing_loc ); + rtems_filesystem_freenode( &parent_loc ); set_errno_and_return_minus_one( EXDEV ); } if ( !parent_loc.ops->link ) { - - if ( existing_loc.ops->freenod ) - (*existing_loc.ops->freenod)( &existing_loc ); - - if ( parent_loc.ops->freenod ) - (*parent_loc.ops->freenod)( &parent_loc ); - + rtems_filesystem_freenode( &existing_loc ); + rtems_filesystem_freenode( &parent_loc ); set_errno_and_return_minus_one( ENOTSUP ); } result = (*parent_loc.ops->link)( &existing_loc, &parent_loc, name_start ); - if ( existing_loc.ops->freenod ) - (*existing_loc.ops->freenod)( &existing_loc ); - - if ( parent_loc.ops->freenod ) - (*parent_loc.ops->freenod)( &parent_loc ); + rtems_filesystem_freenode( &existing_loc ); + rtems_filesystem_freenode( &parent_loc ); return result; } |