From 1f62cd6fa301fccb3486bdc8da615e293bc4f36b Mon Sep 17 00:00:00 2001 From: "larryh%netscape.com" Date: Fri, 5 Nov 1999 00:21:39 +0000 Subject: [PATCH] BugZilla 17558. PR_Open() gets PR_EXCL flag git-svn-id: svn://10.0.0.236/trunk@52824 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/nsprpub/pr/src/md/mac/macio.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/mozilla/nsprpub/pr/src/md/mac/macio.c b/mozilla/nsprpub/pr/src/md/mac/macio.c index 94ff4e81add..0f7b7fabc64 100644 --- a/mozilla/nsprpub/pr/src/md/mac/macio.c +++ b/mozilla/nsprpub/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;