Kaydet (Commit) e7798176 authored tarafından Michael Stahl's avatar Michael Stahl

filter: the placeware filter is not entitled to its own createTempFile

Change-Id: Id4f4c23eab4aaf4d0f42827a89ecf90364605d97
üst 16e3daba
...@@ -17,95 +17,9 @@ ...@@ -17,95 +17,9 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 . * the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/ */
#include <osl/file.h> #include <osl/file.hxx>
#include <sal/macros.h> #include <sal/macros.h>
#if defined( UNX)
#include <stdio.h>
#include <string.h>
#include <osl/thread.h>
oslFileError SAL_CALL my_getTempDirURL( rtl_uString** pustrTempDir )
{
const char *pValue = getenv( "TEMP" );
if ( !pValue )
{
pValue = getenv( "TMP" );
if ( !pValue )
{
#if defined(SOLARIS) || defined (LINUX)
pValue = P_tmpdir;
#else
return osl_File_E_NOENT;
#endif
}
}
oslFileError error;
rtl_uString *ustrTempPath = NULL;
rtl_string2UString( &ustrTempPath, pValue, strlen( pValue ), osl_getThreadTextEncoding(), OSTRING_TO_OUSTRING_CVTFLAGS );
error = osl_getFileURLFromSystemPath( ustrTempPath, pustrTempDir );
rtl_uString_release( ustrTempPath );
return error;
}
#else
#if defined _MSC_VER
#pragma warning(push, 1)
#endif
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <malloc.h>
#if defined _MSC_VER
#pragma warning(pop)
#endif
oslFileError SAL_CALL my_getTempDirURL( rtl_uString** pustrTempDir )
{
WCHAR szBuffer[MAX_PATH];
LPWSTR lpBuffer = szBuffer;
DWORD nBufferLength = SAL_N_ELEMENTS(szBuffer) - 1;
DWORD nLength;
oslFileError error;
do
{
nLength = GetTempPathW( SAL_N_ELEMENTS(szBuffer), lpBuffer );
if ( nLength > nBufferLength )
{
nLength++;
lpBuffer = (LPWSTR)alloca( sizeof(WCHAR) * nLength );
nBufferLength = nLength - 1;
}
} while ( nLength > nBufferLength );
if ( nLength )
{
rtl_uString *ustrTempPath = NULL;
if ( '\\' == lpBuffer[nLength-1] )
lpBuffer[nLength-1] = 0;
rtl_uString_newFromStr( &ustrTempPath, reinterpret_cast<const sal_Unicode*>(lpBuffer) );
error = osl_getFileURLFromSystemPath( ustrTempPath, pustrTempDir );
rtl_uString_release( ustrTempPath );
}
else
error = GetLastError() == ERROR_SUCCESS ? osl_File_E_None : osl_File_E_INVAL;
return error;
}
#endif
#include "tempfile.hxx" #include "tempfile.hxx"
PlaceWareTempFile::PlaceWareTempFile( const OUString& rTempFileURL ) PlaceWareTempFile::PlaceWareTempFile( const OUString& rTempFileURL )
...@@ -125,38 +39,10 @@ OUString PlaceWareTempFile::createTempFileURL() ...@@ -125,38 +39,10 @@ OUString PlaceWareTempFile::createTempFileURL()
{ {
OUString aTempFileURL; OUString aTempFileURL;
const sal_uInt32 nRadix = 26; ::osl::File::createTempFile(nullptr, nullptr, &aTempFileURL);
// TODO: there does not appear to be any way to report an error here?
OUString aTempDirURL;
/* oslFileError nRC = */ my_getTempDirURL( &aTempDirURL.pData );
static sal_uInt32 u = osl_getGlobalTimer();
for ( sal_uInt32 nOld = u; ++u != nOld; )
{
u %= (nRadix*nRadix*nRadix);
OUString aTmp( aTempDirURL );
if( !aTmp.endsWith("/") )
aTmp += "/";
aTmp += OUString::number( (unsigned) u, nRadix );
aTmp += ".tmp";
osl::File aFile( aTmp );
osl::FileBase::RC err = aFile.open(osl_File_OpenFlag_Create);
if ( err == FileBase::E_None )
{
aTempFileURL = aTmp;
aFile.close();
break;
}
else if ( err != FileBase::E_EXIST )
{
// if f.e. name contains invalid chars stop trying to create files
break;
}
}
return aTempFileURL; return aTempFileURL;
} }
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment