From 3ef87981ebac62a3df5af981e8f62f151d973074 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Sat, 6 Mar 1999 18:09:15 +0000 Subject: Added F_GETFL support so the fdopen() implementation in newlib 1.8.1 would work. At the same time, the initial implementation of F_SETFL was added. A support routine was added to convert internal libio flags back to the POSIX style. Eventually the internal representation should be eliminated in the interest of simplicity and code reduction. This problem was reported by Jake Janovetz . --- c/src/lib/libc/fcntl.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'c/src/lib/libc/fcntl.c') diff --git a/c/src/lib/libc/fcntl.c b/c/src/lib/libc/fcntl.c index 7673049a58..9359575e51 100644 --- a/c/src/lib/libc/fcntl.c +++ b/c/src/lib/libc/fcntl.c @@ -29,6 +29,7 @@ int fcntl( rtems_libio_t *iop; rtems_libio_t *diop; int fd2; + int flags; va_start( ap, cmd ); @@ -84,10 +85,24 @@ int fcntl( return 0; case F_GETFL: /* more flags (cloexec) */ - return -1; + return rtems_libio_to_fcntl_flags( iop->flags ); case F_SETFL: - return -1; + flags = rtems_libio_fcntl_flags( va_arg( ap, int ) ); + + /* + * XXX Double check this in the POSIX spec. According to the Linux + * XXX man page, only these flags can be added. + */ + + flags &= ~(O_APPEND | O_NONBLOCK); + + /* + * XXX If we are turning on append, should we seek to the end? + */ + + iop->flags |= flags; + return 0; case F_GETLK: return -1; -- cgit v1.2.3