diff options
Diffstat (limited to '')
-rw-r--r-- | c/src/exec/libcsupport/src/close.c | 24 |
1 files changed, 3 insertions, 21 deletions
diff --git a/c/src/exec/libcsupport/src/close.c b/c/src/exec/libcsupport/src/close.c index 04c269664b..ba69847533 100644 --- a/c/src/exec/libcsupport/src/close.c +++ b/c/src/exec/libcsupport/src/close.c @@ -20,35 +20,17 @@ int close( { rtems_libio_t *iop; rtems_status_code rc; - int status; rtems_libio_check_fd(fd); iop = rtems_libio_iop(fd); rtems_libio_check_is_open(iop); - if ( iop->flags & LIBIO_FLAGS_HANDLER_MASK ) { - int (*fp)(int fd); - fp = rtems_libio_handlers[ - (iop->flags >> LIBIO_FLAGS_HANDLER_SHIFT) - 1].close; - if ( fp == NULL ) - set_errno_and_return_minus_one( EBADF ); - status = (*fp)( fd ); - return status; - } - - if ( !iop->handlers ) - set_errno_and_return_minus_one( EBADF ); - - if ( !iop->handlers->close ) - set_errno_and_return_minus_one( ENOTSUP ); - - rc = (*iop->handlers->close)( iop ); + rc = RTEMS_SUCCESSFUL; + if ( iop->handlers->close ) + rc = (*iop->handlers->close)( iop ); rtems_libio_free( iop ); - if (rc != RTEMS_SUCCESSFUL) - set_errno_and_return_minus_one( rc ); - return rc; } |