tools/inc/tools-internal.hxx | 86 +++++++++++++++++++++++++++++++++++++++++ tools/inc/tools/fsys.hxx | 74 ++--------------------------------- tools/source/fsys/comdep.hxx | 2 tools/source/fsys/dirent.cxx | 10 +++- tools/source/fsys/filecopy.cxx | 1 tools/source/fsys/tempfile.cxx | 34 ++++++---------- tools/source/fsys/unx.cxx | 22 ---------- tools/source/fsys/unx.hxx | 2 tools/source/fsys/wntmsc.cxx | 11 ----- tools/source/fsys/wntmsc.hxx | 2 10 files changed, 114 insertions(+), 130 deletions(-)
New commits: commit 3e1dea5948cd05fb593fc35cc8659c99c7cef169 Author: Michael Meeks <[email protected]> Date: Tue Feb 26 15:52:16 2013 +0000 tools: move FileCopier out of public headers, and remove unused bits. Change-Id: Iccd052ae2587bb4448ecb5bc94aeba5dd2a2291e diff --git a/tools/inc/tools-internal.hxx b/tools/inc/tools-internal.hxx new file mode 100644 index 0000000..ab409e4 --- /dev/null +++ b/tools/inc/tools-internal.hxx @@ -0,0 +1,86 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +#ifndef _TOOLS_INTERNAL_HXX +#define _TOOLS_INTERNAL_HXX + +// This header contains classes we're trying to kill and use only +// internally inside tools + +#include <tools/fsys.hxx> + +struct FileCopier_Impl; + +// FSysExact +enum FSysExact +{ + FSYS_NOTEXACT, + FSYS_EXACT +}; + +// FileCopier (a private impl. detail of tools/) + +class FileCopier +{ + DirEntry aSource; + DirEntry aTarget; + sal_uIntPtr nBytesTotal; + sal_uIntPtr nBytesCopied; + Link aProgressLink; + sal_uInt16 nBlockSize; + FileCopier_Impl* pImp; + +private: + TOOLS_DLLPRIVATE FSysError DoCopy_Impl( + const DirEntry &rSource, const DirEntry &rTarget ); + +protected: + virtual sal_Bool Progress(); + virtual ErrCode Error( ErrCode eErr, + const DirEntry *pSource, const DirEntry *pTarget ); + +public: + FileCopier( const DirEntry &rSource, + const DirEntry &rTarget ); + FileCopier( const FileCopier &rCopier ); + virtual ~FileCopier(); + + FileCopier& operator =( const FileCopier &rCopier ); + + void SetBlockSize( sal_uInt16 nBytes ) { nBlockSize = nBytes; } + sal_uInt16 GetBlockSize() const { return nBlockSize; } + + sal_uIntPtr GetBytesTotal() const { return nBytesTotal; } + sal_uIntPtr GetBytesCopied() const { return nBytesCopied; } + + void SetSource( const DirEntry &rSource ) { aSource = rSource; } + void SetTarget( const DirEntry &rTarget ) { aTarget = rTarget; } + const DirEntry& GetSource() const { return aSource; } + const DirEntry& GetTarget() const { return aTarget; } + + FSysError Execute( FSysAction nActions = FSYS_ACTION_STANDARD ); + FSysError ExecuteExact( FSysAction nActions = FSYS_ACTION_STANDARD, + FSysExact eExact = FSYS_NOTEXACT); + + void SetProgressHdl( const Link& rLink ) { aProgressLink = rLink; } + const Link& GetProgressHdl() const { return aProgressLink; } +}; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/tools/inc/tools/fsys.hxx b/tools/inc/tools/fsys.hxx index 42231ed..293fea9 100644 --- a/tools/inc/tools/fsys.hxx +++ b/tools/inc/tools/fsys.hxx @@ -35,21 +35,12 @@ // FSys-Types class DirEntry; class FileStat; -struct FileCopier_Impl; class SvFileStream; class BigInt; typedef ::std::vector< DirEntry* > DirEntryList; typedef ::std::vector< FileStat* > FileStatList; -#define FSYS_SHORTNAME_DELIMITER '@' - -// FSysAccess -typedef int FSysAccess; -#define FSYS_ACCESS_FORCED 1 -#define FSYS_ACCESS_FLOPPY FSYS_ACCESS_FORCED -#define FSYS_ACCESS_CACHED 2 - // DirEntryKind typedef int DirEntryKind; #define FSYS_KIND_NONE ((DirEntryKind) 0) @@ -107,6 +98,12 @@ enum FSysPathStyle FSYS_STYLE_DETECT, }; +// FSysAccess +typedef int FSysAccess; +#define FSYS_ACCESS_CACHED 2 +#define FSYS_ACCESS_FORCED 1 +#define FSYS_ACCESS_FLOPPY FSYS_ACCESS_FORCED + // FSysAction typedef int FSysAction; #define FSYS_ACTION_COPYFILE 0x01 // not only create hardlink @@ -124,13 +121,6 @@ typedef int FSysAction; typedef sal_uIntPtr FSysError; -// FSysExact -enum FSysExact -{ - FSYS_NOTEXACT, - FSYS_EXACT -}; - // FileStat struct dirent; @@ -249,10 +239,6 @@ public: void SetExtension( const String& rExt, char cSep = '.' ); String GetExtension( char cSep = '.' ) const; void SetName( const String& rName, FSysPathStyle eFormatter = FSYS_STYLE_HOST ); - const String GetNameDirect() const - { - return rtl::OStringToOUString(aName, osl_getThreadTextEncoding()); - } String GetName( FSysPathStyle eFormatter = FSYS_STYLE_HOST ) const; String CutName( FSysPathStyle eFormatter = FSYS_STYLE_HOST ); String GetBase(char cSep = '.' ) const; @@ -309,54 +295,6 @@ public: static String GetSearchDelimiter( FSysPathStyle eFormatter = FSYS_STYLE_HOST ); }; -// FileCopier (a private impl. detail of tools/) - -class FileCopier -{ - DirEntry aSource; - DirEntry aTarget; - sal_uIntPtr nBytesTotal; - sal_uIntPtr nBytesCopied; - Link aProgressLink; - sal_uInt16 nBlockSize; - FileCopier_Impl* pImp; - -private: - TOOLS_DLLPRIVATE FSysError DoCopy_Impl( - const DirEntry &rSource, const DirEntry &rTarget ); - -protected: - virtual sal_Bool Progress(); - virtual ErrCode Error( ErrCode eErr, - const DirEntry *pSource, const DirEntry *pTarget ); - -public: - FileCopier( const DirEntry &rSource, - const DirEntry &rTarget ); - FileCopier( const FileCopier &rCopier ); - virtual ~FileCopier(); - - FileCopier& operator =( const FileCopier &rCopier ); - - void SetBlockSize( sal_uInt16 nBytes ) { nBlockSize = nBytes; } - sal_uInt16 GetBlockSize() const { return nBlockSize; } - - sal_uIntPtr GetBytesTotal() const { return nBytesTotal; } - sal_uIntPtr GetBytesCopied() const { return nBytesCopied; } - - void SetSource( const DirEntry &rSource ) { aSource = rSource; } - void SetTarget( const DirEntry &rTarget ) { aTarget = rTarget; } - const DirEntry& GetSource() const { return aSource; } - const DirEntry& GetTarget() const { return aTarget; } - - FSysError Execute( FSysAction nActions = FSYS_ACTION_STANDARD ); - FSysError ExecuteExact( FSysAction nActions = FSYS_ACTION_STANDARD, - FSysExact eExact = FSYS_NOTEXACT); - - void SetProgressHdl( const Link& rLink ) { aProgressLink = rLink; } - const Link& GetProgressHdl() const { return aProgressLink; } -}; - // Dir struct DirReader_Impl; diff --git a/tools/source/fsys/comdep.hxx b/tools/source/fsys/comdep.hxx index 1b0a04b..7d244a8 100644 --- a/tools/source/fsys/comdep.hxx +++ b/tools/source/fsys/comdep.hxx @@ -19,7 +19,7 @@ #ifndef _COMDEP_HXX #define _COMDEP_HXX -#include <tools/fsys.hxx> +#include "tools-internal.hxx" #define ACCESSDELIM(e) ( ( e == FSYS_STYLE_NTFS ) ? "\\" : "/" ) #define ACCESSDELIM_C(e)(char)\ diff --git a/tools/source/fsys/filecopy.cxx b/tools/source/fsys/filecopy.cxx index 84b0833..e0a0c71 100644 --- a/tools/source/fsys/filecopy.cxx +++ b/tools/source/fsys/filecopy.cxx @@ -33,7 +33,6 @@ #include <stdio.h> #include "comdep.hxx" -#include <tools/fsys.hxx> #include <tools/stream.hxx> #include <osl/file.hxx> commit a82f7b20539e60f1cf599afcceaf865bef297a66 Author: Michael Meeks <[email protected]> Date: Tue Feb 26 15:25:22 2013 +0000 port horrible tools temp directory abstraction to sal. Change-Id: I3688c8babf7719091404317b13014283a8ce9492 diff --git a/tools/source/fsys/dirent.cxx b/tools/source/fsys/dirent.cxx index 1e9000b..c4ae7a9 100644 --- a/tools/source/fsys/dirent.cxx +++ b/tools/source/fsys/dirent.cxx @@ -57,7 +57,7 @@ using namespace osl; using ::rtl::OUString; -int ApiRet2ToSolarError_Impl( int nApiRet ); +extern rtl::OUString GetSystemTempDirPath_Impl(); int Sys2SolarError_Impl( int nSysErr ) { @@ -1304,9 +1304,13 @@ DirEntry DirEntry::TempName( DirEntryKind eKind ) const } dir = aDirName.getStr(); - char sBuf[_MAX_PATH]; + OString sTempRoot; if ( eFlag == FSYS_FLAG_CURRENT || ( !pParent && pWild ) ) - dir = TempDirImpl(sBuf); + { + rtl::OUString aPath = GetSystemTempDirPath_Impl(); + sTempRoot = OUStringToOString( aPath, osl_getThreadTextEncoding() ); + dir = sTempRoot.getStr(); + } DirEntry aRet(FSYS_FLAG_INVALID); i = strlen(dir); diff --git a/tools/source/fsys/tempfile.cxx b/tools/source/fsys/tempfile.cxx index ae4db96..1a1da1e 100644 --- a/tools/source/fsys/tempfile.cxx +++ b/tools/source/fsys/tempfile.cxx @@ -43,26 +43,21 @@ struct TempFile_Impl sal_Bool bIsDirectory; }; -String GetSystemTempDir_Impl() +extern rtl::OUString GetSystemTempDirPath_Impl(); + +rtl::OUString GetSystemTempDirPath_Impl() { - char sBuf[_MAX_PATH]; - const char *pDir = TempDirImpl(sBuf); - - ::rtl::OString aTmpA( pDir ); - ::rtl::OUString aTmp = ::rtl::OStringToOUString( aTmpA, osl_getThreadTextEncoding() ); - rtl::OUString aRet; - FileBase::getFileURLFromSystemPath( aTmp, aRet ); - String aName = aRet; - if( aName.GetChar(aName.Len()-1) != '/' ) - aName += '/'; - return aName; + rtl::OUString aTmpURL, aPath; + osl::FileBase::getTempDirURL( aTmpURL ); + osl::FileBase::getSystemPathFromFileURL( aTmpURL, aPath ); + return aPath; } #define TMPNAME_SIZE ( 1 + 5 + 5 + 4 + 1 ) -String ConstructTempDir_Impl( const String* pParent ) +OUString ConstructTempDir_Impl( const String* pParent ) { - String aName; + OUString aName; if ( pParent && pParent->Len() ) { rtl::OUString aRet; @@ -79,19 +74,18 @@ String ConstructTempDir_Impl( const String* pParent ) } } - if ( !aName.Len() ) + if ( aName.isEmpty() ) { // if no parent or invalid parent : use system directory - ::rtl::OUString& rTempNameBase_Impl = TempNameBase_Impl::get(); + ::rtl::OUString& rTempNameBase_Impl = TempNameBase_Impl::get(); if ( rTempNameBase_Impl.isEmpty() ) - rTempNameBase_Impl = GetSystemTempDir_Impl(); + rTempNameBase_Impl = GetSystemTempDirPath_Impl(); aName = rTempNameBase_Impl; } // Make sure that directory ends with a separator - xub_StrLen i = aName.Len(); - if( i>0 && aName.GetChar(i-1) != '/' ) - aName += '/'; + if( !aName.endsWith( "/" ) ) + aName += "/"; return aName; } diff --git a/tools/source/fsys/unx.cxx b/tools/source/fsys/unx.cxx index 59ca419..f26882c 100644 --- a/tools/source/fsys/unx.cxx +++ b/tools/source/fsys/unx.cxx @@ -363,26 +363,4 @@ sal_Bool FileStat::Update( const DirEntry& rDirEntry, SAL_UNUSED_PARAMETER sal_B return sal_True; } -const char *TempDirImpl( char *pBuf ) -{ -#ifdef MACOSX - // P_tmpdir is /var/tmp on Mac OS X, and it is not cleaned up on system - // startup - strcpy( pBuf, "/tmp" ); -#else - const char *pValue = getenv( "TEMP" ); - if ( !pValue ) - pValue = getenv( "TMP" ); - if ( pValue ) - strcpy( pBuf, pValue ); - else - // P_tempdir exists in Solaris and Linux - strcpy( pBuf, P_tmpdir ); - // don't use "/tmp" as hard coded directory - //strcpy( pBuf, "/tmp" ); -#endif /* MACOSX */ - - return pBuf; -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/tools/source/fsys/unx.hxx b/tools/source/fsys/unx.hxx index cf399cc..9728d71 100644 --- a/tools/source/fsys/unx.hxx +++ b/tools/source/fsys/unx.hxx @@ -71,8 +71,6 @@ inline void Unx2DateAndTime( time_t nDate, Time& rTime, Date& rDate ) rDate = Date( pTime->tm_mday, pTime->tm_mon + 1, pTime->tm_year + 1900 ); } -const char* TempDirImpl( char *pBuf ); - #define FSysFailOnErrorImpl() #endif diff --git a/tools/source/fsys/wntmsc.cxx b/tools/source/fsys/wntmsc.cxx index 8a82ae8..7c74ed4 100644 --- a/tools/source/fsys/wntmsc.cxx +++ b/tools/source/fsys/wntmsc.cxx @@ -776,15 +776,4 @@ sal_Bool IsRedirectable_Impl( const rtl::OString& rPath ) return sal_False; } -/// get name of the directory for temporary files -const char* TempDirImpl( char *pBuf ) -{ - if ( !GetTempPath( MAX_PATH, pBuf ) && - !GetWindowsDirectory( pBuf, MAX_PATH ) && - !GetEnvironmentVariable( "HOMEPATH", pBuf, MAX_PATH ) ) - return 0; - - return pBuf; -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/tools/source/fsys/wntmsc.hxx b/tools/source/fsys/wntmsc.hxx index acbb808..bb1dbac 100644 --- a/tools/source/fsys/wntmsc.hxx +++ b/tools/source/fsys/wntmsc.hxx @@ -63,8 +63,6 @@ inline sal_Bool DRIVE_EXISTS(char c) return GetDriveType( aDriveRoot.getStr() ) > 1; } -const char* TempDirImpl( char *pBuf ); - #define FSysFailOnErrorImpl() #endif _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
