diff options
author | Michael Stahl <mstahl@redhat.com> | 2015-09-29 14:06:01 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2015-09-29 14:57:42 +0200 |
commit | e77981764a4b21e57ee8d2302715c8c1269c860c (patch) | |
tree | afc3a44b1877792c01ffab1af7efe985f3d8f660 /filter | |
parent | vcl: replace alloca() with std::unique_ptr (diff) | |
download | core-e77981764a4b21e57ee8d2302715c8c1269c860c.tar.gz core-e77981764a4b21e57ee8d2302715c8c1269c860c.zip |
filter: the placeware filter is not entitled to its own createTempFile
Change-Id: Id4f4c23eab4aaf4d0f42827a89ecf90364605d97
Diffstat (limited to 'filter')
-rw-r--r-- | filter/source/placeware/tempfile.cxx | 120 |
1 files changed, 3 insertions, 117 deletions
diff --git a/filter/source/placeware/tempfile.cxx b/filter/source/placeware/tempfile.cxx index f573badaed37..6352418a1e42 100644 --- a/filter/source/placeware/tempfile.cxx +++ b/filter/source/placeware/tempfile.cxx @@ -17,95 +17,9 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ -#include <osl/file.h> +#include <osl/file.hxx> #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" PlaceWareTempFile::PlaceWareTempFile( const OUString& rTempFileURL ) @@ -125,38 +39,10 @@ OUString PlaceWareTempFile::createTempFileURL() { OUString aTempFileURL; - const sal_uInt32 nRadix = 26; - - 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; - } - } + ::osl::File::createTempFile(nullptr, nullptr, &aTempFileURL); + // TODO: there does not appear to be any way to report an error here? return aTempFileURL; } - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |