diff options
author | larryh%netscape.com <devnull@localhost> | 1999-11-05 00:21:39 +0000 |
---|---|---|
committer | larryh%netscape.com <devnull@localhost> | 1999-11-05 00:21:39 +0000 |
commit | bc2534e9bcaf35fafc1cc48b0d84157b4f3a5c27 (patch) | |
tree | e90f4de1aaa848d68961618faef7544f806f9b57 | |
parent | c56f4e0c10dad8b0b1fb87cd535477c602294092 (diff) | |
download | nspr-hg-bc2534e9bcaf35fafc1cc48b0d84157b4f3a5c27.tar.gz |
BugZilla 17558. PR_Open() gets PR_EXCL flag
-rw-r--r-- | pr/src/md/mac/macio.c | 18 |
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; |