summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libc/close.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libc/close.c')
-rw-r--r--c/src/lib/libc/close.c24
1 files changed, 3 insertions, 21 deletions
diff --git a/c/src/lib/libc/close.c b/c/src/lib/libc/close.c
index 04c269664b..ba69847533 100644
--- a/c/src/lib/libc/close.c
+++ b/c/src/lib/libc/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;
}