[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