Bug 72129 - OpenANSIFIleDesc on Mac won't create new files.

r=beard@netscape.com, sr=sfraser@netscape.com


git-svn-id: svn://10.0.0.236/trunk@89948 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
ccarlen%netscape.com
2001-03-21 01:13:20 +00:00
parent 261b7b3310
commit c301ab4a03

View File

@@ -1093,19 +1093,35 @@ nsLocalFile::OpenNSPRFileDesc(PRInt32 flags, PRInt32 mode, PRFileDesc **_retval)
NS_IMETHODIMP
nsLocalFile::OpenANSIFileDesc(const char *mode, FILE * *_retval)
{
nsresult rv = ResolveAndStat(PR_TRUE);
if (NS_FAILED(rv) && rv != NS_ERROR_FILE_NOT_FOUND)
return rv;
NS_ENSURE_ARG(mode);
NS_ENSURE_ARG_POINTER(_retval);
nsresult rv;
FSSpec spec;
// Resolve the alias to the original file.
FSSpec spec = mTargetSpec;
Boolean targetIsFolder;
Boolean wasAliased;
OSErr err = ::ResolveAliasFile(&spec, TRUE, &targetIsFolder, &wasAliased);
if (err != noErr)
return MacErrorMapper(err);
if (mode[0] == 'w' || mode[0] == 'a') // Check if the file exists
{
PRBool exists;
rv = Exists(&exists);
if (NS_FAILED(rv))
return rv;
if (!exists) {
mType = (mode[1] == 'b') ? 'BiNA' : 'TEXT';
rv = Create(nsIFile::NORMAL_FILE_TYPE, 0);
if (NS_FAILED(rv))
return rv;
spec = mResolvedSpec;
}
else
spec = mTargetSpec;
}
else
{
rv = ResolveAndStat(PR_TRUE);
if (NS_FAILED(rv) && rv != NS_ERROR_FILE_NOT_FOUND)
return rv;
spec = mTargetSpec;
}
*_retval = FSp_fopen(&spec, mode);