summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlarryh%netscape.com <devnull@localhost>1999-11-05 00:21:39 +0000
committerlarryh%netscape.com <devnull@localhost>1999-11-05 00:21:39 +0000
commitbc2534e9bcaf35fafc1cc48b0d84157b4f3a5c27 (patch)
treee90f4de1aaa848d68961618faef7544f806f9b57
parentc56f4e0c10dad8b0b1fb87cd535477c602294092 (diff)
downloadnspr-hg-bc2534e9bcaf35fafc1cc48b0d84157b4f3a5c27.tar.gz
BugZilla 17558. PR_Open() gets PR_EXCL flag
-rw-r--r--pr/src/md/mac/macio.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/pr/src/md/mac/macio.c b/pr/src/md/mac/macio.c
index 94ff4e81..0f7b7fab 100644
--- a/pr/src/md/mac/macio.c
+++ b/pr/src/md/mac/macio.c
@@ -401,13 +401,21 @@ PRInt32 _MD_Open(const char *path, PRIntn flags, int mode)
hpb.ioParam.ioPermssn = perm;
-open:
- err = PBHOpenDFSync(&hpb);
- if ((err == fnfErr) && (flags & PR_CREATE_FILE)) {
+ if (flags & PR_CREATE_FILE) {
err = PBHCreateSync(&hpb);
- if (err == noErr)
- goto open;
+
+ /* If opening with the PR_EXCL flag the existence of the file prior to opening is an error */
+ if ((flags & PR_EXCL) && (err == dupFNErr)) {
+ err = PR_FILE_EXISTS_ERROR;
+ goto ErrorExit;
+ }
+ if (err != noErr)
+ goto ErrorExit;
}
+
+open:
+ err = PBHOpenDFSync(&hpb);
+
if (err != noErr)
goto ErrorExit;