aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/rfsv16.cc3
-rw-r--r--lib/rfsv32.cc3
2 files changed, 4 insertions, 2 deletions
diff --git a/lib/rfsv16.cc b/lib/rfsv16.cc
index 9420b57..eb5b91f 100644
--- a/lib/rfsv16.cc
+++ b/lib/rfsv16.cc
@@ -279,7 +279,8 @@ opMode(long mode)
ret |= (mode & PSI_O_TRUNC) ? P_FREPLACE : 0;
ret |= (mode & PSI_O_CREAT) ? P_FCREATE : 0;
ret |= (mode & PSI_O_APPEND) ? P_FAPPEND : 0;
- ret |= (mode & PSI_O_EXCL) ? 0 : P_FSHARE;
+ if (mode & 03) == PSI_O_RDONLY)
+ ret |= (mode & PSI_O_EXCL) ? 0 : P_FSHARE;
return ret;
}
diff --git a/lib/rfsv32.cc b/lib/rfsv32.cc
index d4df37f..69136a3 100644
--- a/lib/rfsv32.cc
+++ b/lib/rfsv32.cc
@@ -300,7 +300,8 @@ opMode(long mode)
long ret = 0;
ret |= (((mode & 03) == PSI_O_RDONLY) ? 0 : EPOC_OMODE_READ_WRITE);
- ret |= (mode & PSI_O_EXCL) ? 0 : EPOC_OMODE_SHARE_READERS;
+ if (!ret)
+ ret |= (mode & PSI_O_EXCL) ? 0 : EPOC_OMODE_SHARE_READERS;
return ret;
}