summaryrefslogtreecommitdiffstats
path: root/cpukit/libcsupport/src/fcntl.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1999-03-06 18:09:15 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1999-03-06 18:09:15 +0000
commit3ef87981ebac62a3df5af981e8f62f151d973074 (patch)
tree9216b95a01e1df2725be70a70b339fba1c6eb4a8 /cpukit/libcsupport/src/fcntl.c
parentWrong constant name was used for the DEBUG exception. (diff)
downloadrtems-3ef87981ebac62a3df5af981e8f62f151d973074.tar.bz2
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 <janovetz@tempest.ece.uiuc.edu>.
Diffstat (limited to 'cpukit/libcsupport/src/fcntl.c')
-rw-r--r--cpukit/libcsupport/src/fcntl.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/cpukit/libcsupport/src/fcntl.c b/cpukit/libcsupport/src/fcntl.c
index 7673049a58..9359575e51 100644
--- a/cpukit/libcsupport/src/fcntl.c
+++ b/cpukit/libcsupport/src/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;