summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libc/close.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1999-03-01 22:40:08 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1999-03-01 22:40:08 +0000
commit73f6236bc09b3cadf0aa030e16396154421f3e30 (patch)
tree30c344abe6e8091d860d583e0a1342af575ae791 /c/src/lib/libc/close.c
parentPart of the automake VI patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>: (diff)
downloadrtems-73f6236bc09b3cadf0aa030e16396154421f3e30.tar.bz2
Patch from Eric Norum <eric@skatter.usask.ca> to eliminate external
IO handlers scheme that was implemented originally just to support sockets. The file system IO switch is more general and works fine.
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;
}