connectivity/source/drivers/firebird/Connection.cxx | 2 +- connectivity/source/drivers/firebird/Driver.cxx | 18 +++++++++++------- connectivity/source/drivers/firebird/Driver.hxx | 4 ++++ 3 files changed, 16 insertions(+), 8 deletions(-)
New commits: commit 508d1bf7dfa1be99e3fc8d57eb780150af53290e Author: Andrzej J.R. Hunt <andr...@ahunt.org> Date: Wed Sep 4 19:58:39 2013 +0100 Use the user specific tmp directory for firebird. osl::FileBase::getTempDirURL uses the general tmp directory which can be the system wide directory (i.e. /tmp). This can lead to conflicts e.g. if we have multiple instances each trying to create /tmp/firebird. Instead we use ::utl::TempFile which uses a user-specific directory (as a subdirectory of what osl::FileBase::getTempDirURL provides), in which we can have the FIREBIRD_TMP and FIREBIRD_LOCK directories. Change-Id: Ic868f12b0a56900eac75f2418986193dd5fe0f10 Reviewed-on: https://gerrit.libreoffice.org/5797 Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/connectivity/source/drivers/firebird/Connection.cxx b/connectivity/source/drivers/firebird/Connection.cxx index 0d53123..d719b85 100644 --- a/connectivity/source/drivers/firebird/Connection.cxx +++ b/connectivity/source/drivers/firebird/Connection.cxx @@ -149,7 +149,7 @@ void OConnection::construct(const ::rtl::OUString& url, const Sequence< Property bIsNewDatabase = !m_xEmbeddedStorage->hasElements(); - m_sURL = utl::TempFile::CreateTempName() + ".fdb"; + m_sURL = utl::TempFile::CreateTempName(); SAL_INFO("connectivity.firebird", "Temporary .fdb location: " << OUStringToOString(m_sURL,RTL_TEXTENCODING_UTF8 ).getStr()); diff --git a/connectivity/source/drivers/firebird/Driver.cxx b/connectivity/source/drivers/firebird/Driver.cxx index 5e9f04b..4480bb9 100644 --- a/connectivity/source/drivers/firebird/Driver.cxx +++ b/connectivity/source/drivers/firebird/Driver.cxx @@ -27,7 +27,6 @@ #include <comphelper/processfactory.hxx> #include <osl/process.h> -#include <osl/file.hxx> using namespace com::sun::star; using namespace com::sun::star::uno; @@ -60,16 +59,21 @@ const OUString FirebirdDriver::our_sFirebirdLockVar("FIREBIRD_LOCK"); FirebirdDriver::FirebirdDriver() : ODriver_BASE(m_aMutex) + , m_firebirdTMPDirectory(NULL, true) + , m_firebirdLockDirectory(NULL, true) { - OUString sTmpDirURL, sTmpDirPath; - ::osl::FileBase::getTempDirURL(sTmpDirURL); - ::osl::FileBase::getSystemPathFromFileURL(sTmpDirURL, sTmpDirPath); + m_firebirdTMPDirectory.EnableKillingFile(); + m_firebirdLockDirectory.EnableKillingFile(); + + // ::utl::TempFile uses a unique temporary directory (subdirectory of + // /tmp or other user specific tmp directory) per instance in which + // we can create directories for firebird at will. // Overrides firebird's default of /tmp or c:\temp - osl_setEnvironment(our_sFirebirdTmpVar.pData, sTmpDirPath.pData); + osl_setEnvironment(our_sFirebirdTmpVar.pData, m_firebirdTMPDirectory.GetFileName().pData); + // Overrides firebird's default of /tmp/firebird or c:\temp\firebird - sTmpDirPath += "/firebird"; - osl_setEnvironment(our_sFirebirdLockVar.pData, sTmpDirPath.pData); + osl_setEnvironment(our_sFirebirdLockVar.pData, m_firebirdLockDirectory.GetFileName().pData); } void FirebirdDriver::disposing() diff --git a/connectivity/source/drivers/firebird/Driver.hxx b/connectivity/source/drivers/firebird/Driver.hxx index 0963468..31c93c6 100644 --- a/connectivity/source/drivers/firebird/Driver.hxx +++ b/connectivity/source/drivers/firebird/Driver.hxx @@ -26,6 +26,7 @@ #include <com/sun/star/sdbc/XDriver.hpp> #include <com/sun/star/sdbcx/XDataDefinitionSupplier.hpp> #include <cppuhelper/compbase3.hxx> +#include <unotools/tempfile.hxx> namespace connectivity { @@ -48,6 +49,9 @@ namespace connectivity static const ::rtl::OUString our_sFirebirdTmpVar; static const ::rtl::OUString our_sFirebirdLockVar; + ::utl::TempFile m_firebirdTMPDirectory; + ::utl::TempFile m_firebirdLockDirectory; + protected: ::osl::Mutex m_aMutex; // mutex is need to control member access OWeakRefArray m_xConnections; // vector containing a list
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits