[Libreoffice-commits] core.git: 2 commits - tools/inc tools/source

Michael Meeks michael.meeks at suse.com
Wed Feb 27 01:11:02 PST 2013


 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 <michael.meeks at suse.com>
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 <michael.meeks at suse.com>
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


More information about the Libreoffice-commits mailing list