diff options
author | Ralf Corsepius <ralf.corsepius@rtems.org> | 2002-07-22 09:46:48 +0000 |
---|---|---|
committer | Ralf Corsepius <ralf.corsepius@rtems.org> | 2002-07-22 09:46:48 +0000 |
commit | 2b3e9d9b244e279ef5693a7cf5dacc7903164af5 (patch) | |
tree | 955e5242d4d08a8ec747c8350f55003bb9d4b519 /c/src/exec/libcsupport/src/fcntl.c | |
parent | Remove everything. (diff) | |
download | rtems-2b3e9d9b244e279ef5693a7cf5dacc7903164af5.tar.bz2 |
Remove, moved to cpukit.
Diffstat (limited to '')
-rw-r--r-- | c/src/exec/libcsupport/src/fcntl.c | 155 |
1 files changed, 0 insertions, 155 deletions
diff --git a/c/src/exec/libcsupport/src/fcntl.c b/c/src/exec/libcsupport/src/fcntl.c deleted file mode 100644 index 6c2aa1da11..0000000000 --- a/c/src/exec/libcsupport/src/fcntl.c +++ /dev/null @@ -1,155 +0,0 @@ -/* - * fcntl() - POSIX 1003.1b 6.5.2 - File Control - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#if HAVE_CONFIG_H -#include "config.h" -#endif - -#include <stdarg.h> -#include <unistd.h> -#include <fcntl.h> -#include <errno.h> - -#include <rtems.h> -#include <rtems/libio_.h> - -int fcntl( - int fd, - int cmd, - ... -) -{ - va_list ap; - rtems_libio_t *iop; - rtems_libio_t *diop; - int fd2; - int flags; - int mask; - int ret = 0; - - va_start( ap, cmd ); - - rtems_libio_check_fd( fd ); - iop = rtems_libio_iop( fd ); - rtems_libio_check_is_open(iop); - - /* - * Now process the fcntl(). - */ - - /* - * This switch should contain all the cases from POSIX. - */ - - switch ( cmd ) { - case F_DUPFD: /* dup */ - fd2 = va_arg( ap, int ); - if ( fd2 ) - diop = rtems_libio_iop( fd2 ); - else { - /* allocate a file control block */ - diop = rtems_libio_allocate(); - if ( diop == 0 ) { - ret = -1; - break; - } - } - - diop->handlers = iop->handlers; - diop->file_info = iop->file_info; - diop->flags = iop->flags; - diop->pathinfo = iop->pathinfo; - ret = (int) (diop - rtems_libio_iops); - break; - - case F_GETFD: /* get f_flags */ - ret = ((iop->flags & LIBIO_FLAGS_CLOSE_ON_EXEC) != 0); - break; - - case F_SETFD: /* set f_flags */ - /* - * Interpret the third argument as the "close on exec()" flag. - * If this argument is 1, then the file descriptor is to be closed - * if a new process is exec()'ed. Since RTEMS does not support - * processes, then we can ignore this one except to make - * F_GETFD work. - */ - - if ( va_arg( ap, int ) ) - iop->flags |= LIBIO_FLAGS_CLOSE_ON_EXEC; - else - iop->flags &= ~LIBIO_FLAGS_CLOSE_ON_EXEC; - break; - - case F_GETFL: /* more flags (cloexec) */ - ret = rtems_libio_to_fcntl_flags( iop->flags ); - break; - - case F_SETFL: - flags = rtems_libio_fcntl_flags( va_arg( ap, int ) ); - mask = LIBIO_FLAGS_NO_DELAY | LIBIO_FLAGS_APPEND; - - /* - * XXX If we are turning on append, should we seek to the end? - */ - - iop->flags = (iop->flags & ~mask) | (flags & mask); - break; - - case F_GETLK: - errno = ENOTSUP; - ret = -1; - break; - - case F_SETLK: - errno = ENOTSUP; - ret = -1; - break; - - case F_SETLKW: - errno = ENOTSUP; - ret = -1; - break; - - case F_SETOWN: /* for sockets. */ - errno = ENOTSUP; - ret = -1; - break; - - case F_GETOWN: /* for sockets. */ - errno = ENOTSUP; - ret = -1; - break; - - default: - errno = EINVAL; - ret = -1; - break; - } - - /* - * If we got this far successfully, then we give the optional - * filesystem specific handler a chance to process this. - */ - - if (ret >= 0) { - if (iop->handlers->fcntl_h) { - int err = (*iop->handlers->fcntl_h)( cmd, iop ); - if (err) { - errno = err; - ret = -1; - } - } - } - return ret; -} |