summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--c/src/exec/libcsupport/src/fcntl.c5
-rw-r--r--c/src/lib/libc/fcntl.c5
-rw-r--r--cpukit/libcsupport/src/fcntl.c5
3 files changed, 9 insertions, 6 deletions
diff --git a/c/src/exec/libcsupport/src/fcntl.c b/c/src/exec/libcsupport/src/fcntl.c
index 9359575e51..381df45f26 100644
--- a/c/src/exec/libcsupport/src/fcntl.c
+++ b/c/src/exec/libcsupport/src/fcntl.c
@@ -95,13 +95,14 @@ int fcntl(
* XXX man page, only these flags can be added.
*/
- flags &= ~(O_APPEND | O_NONBLOCK);
+ flags = (iop->flags & ~(O_APPEND|O_NONBLOCK)) |
+ (flags & (O_APPEND|O_NONBLOCK));
/*
* XXX If we are turning on append, should we seek to the end?
*/
- iop->flags |= flags;
+ iop->flags = flags;
return 0;
case F_GETLK:
diff --git a/c/src/lib/libc/fcntl.c b/c/src/lib/libc/fcntl.c
index 9359575e51..381df45f26 100644
--- a/c/src/lib/libc/fcntl.c
+++ b/c/src/lib/libc/fcntl.c
@@ -95,13 +95,14 @@ int fcntl(
* XXX man page, only these flags can be added.
*/
- flags &= ~(O_APPEND | O_NONBLOCK);
+ flags = (iop->flags & ~(O_APPEND|O_NONBLOCK)) |
+ (flags & (O_APPEND|O_NONBLOCK));
/*
* XXX If we are turning on append, should we seek to the end?
*/
- iop->flags |= flags;
+ iop->flags = flags;
return 0;
case F_GETLK:
diff --git a/cpukit/libcsupport/src/fcntl.c b/cpukit/libcsupport/src/fcntl.c
index 9359575e51..381df45f26 100644
--- a/cpukit/libcsupport/src/fcntl.c
+++ b/cpukit/libcsupport/src/fcntl.c
@@ -95,13 +95,14 @@ int fcntl(
* XXX man page, only these flags can be added.
*/
- flags &= ~(O_APPEND | O_NONBLOCK);
+ flags = (iop->flags & ~(O_APPEND|O_NONBLOCK)) |
+ (flags & (O_APPEND|O_NONBLOCK));
/*
* XXX If we are turning on append, should we seek to the end?
*/
- iop->flags |= flags;
+ iop->flags = flags;
return 0;
case F_GETLK: