added nsSaveViaTempStream

git-svn-id: svn://10.0.0.236/branches/XPCOM20_BRANCH@32328 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
mcmullen%netscape.com
1999-05-19 18:50:18 +00:00
parent 7166b42698
commit 398f403243

View File

@@ -308,6 +308,64 @@ void nsOutputFileStream::flush()
mFileOutputStream->Flush();
}
//----------------------------------------------------------------------------------------
void nsOutputFileStream::abort()
//----------------------------------------------------------------------------------------
{
mResult = NS_FILE_FAILURE;
close();
}
//========================================================================================
// nsSaveViaTempStream
//========================================================================================
//----------------------------------------------------------------------------------------
nsSaveViaTempStream::nsSaveViaTempStream(const nsFileSpec& inFileToSave)
//----------------------------------------------------------------------------------------
: mFileToSave(inFileToSave)
, mTempFileSpec(new nsFileSpec(inFileToSave))
{
// Make sure the temp file's unique (in particular, different from the target file)
mTempFileSpec->MakeUnique();
open(
*mTempFileSpec,
(PR_WRONLY | PR_CREATE_FILE | PR_TRUNCATE),
0700 /*(octal)*/);
} // nsSaveViaTempStream::nsSaveViaTempStream
//----------------------------------------------------------------------------------------
void nsSaveViaTempStream::close()
//----------------------------------------------------------------------------------------
{
if (!mTempFileSpec)
return;
nsresult currentResult = mResult;
Inherited::close();
mResult = currentResult;
if (error())
{
mTempFileSpec->Delete(PR_FALSE);
}
else
{
nsFileSpec thirdSpec(mFileToSave);
thirdSpec.MakeUnique();
nsSimpleCharString originalName(mFileToSave.GetLeafName());
mFileToSave.Rename(nsSimpleCharString(thirdSpec.GetLeafName()));
if (NS_SUCCEEDED(mTempFileSpec->Rename(originalName)) && mTempFileSpec->Valid())
mFileToSave.Delete(PR_FALSE);
}
delete mTempFileSpec;
} // nsSaveViaTempStream::~nsSaveViaTempStream
//----------------------------------------------------------------------------------------
nsSaveViaTempStream::~nsSaveViaTempStream()
//----------------------------------------------------------------------------------------
{
delete mTempFileSpec;
} // nsSaveViaTempStream::~nsSaveViaTempStream
//========================================================================================
// Manipulators
//========================================================================================