Hi,

It seems like OTempFileService, defined and implemented in
libs-gui/unotools/source/ucbhelper is unused.

There's no mention of this name elsewhere in the tree, and LibreOffice
builds and run fine without the files removed by the attached patch.
One of the methods of this class is already in the list of unused functions.

Howewer, since it involves UNO, this code may be loaded at runtime by an
obscure corner of the gui I'm not aware of.
Could someone confirm if it can be safely removed (or not) ?

-- 
Francois Tigeot
diff --git a/unotools/Library_utl.mk b/unotools/Library_utl.mk
index b77a8eb..d762a5b 100644
--- a/unotools/Library_utl.mk
+++ b/unotools/Library_utl.mk
@@ -138,7 +138,6 @@ $(eval $(call gb_Library_add_exception_objects,utl,\
     unotools/source/ucbhelper/ucbhelper \
     unotools/source/ucbhelper/ucblockbytes \
     unotools/source/ucbhelper/ucbstreamhelper \
-    unotools/source/ucbhelper/xtempfile \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/unotools/source/ucbhelper/XTempFile.hxx 
b/unotools/source/ucbhelper/XTempFile.hxx
deleted file mode 100644
index fcadd28..0000000
--- a/unotools/source/ucbhelper/XTempFile.hxx
+++ /dev/null
@@ -1,154 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org.  If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#ifndef _XTEMPFILE_HXX_
-#define _XTEMPFILE_HXX_
-
-#include <com/sun/star/io/XInputStream.hpp>
-#include <com/sun/star/io/XOutputStream.hpp>
-#include <com/sun/star/io/XSeekable.hpp>
-#include <com/sun/star/io/XStream.hpp>
-#include <com/sun/star/io/XTempFile.hpp>
-#include <com/sun/star/io/XTruncate.hpp>
-#include <com/sun/star/lang/XSingleComponentFactory.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <cppuhelper/implbase5.hxx>
-#include <cppuhelper/propertysetmixin.hxx>
-#include <osl/mutex.hxx>
-
-class SvStream;
-namespace utl { class TempFile; }
-
-typedef         ::cppu::WeakImplHelper5<       ::com::sun::star::io::XTempFile
-                                    ,  ::com::sun::star::io::XInputStream
-                                                  ,    
::com::sun::star::io::XOutputStream
-                                                  ,    
::com::sun::star::io::XTruncate
-                                                  ,    
::com::sun::star::lang::XServiceInfo
-                                                  >
-                                    OTempFileBase;
-
-class OTempFileService : 
-    public OTempFileBase,
-    public ::cppu::PropertySetMixin< ::com::sun::star::io::XTempFile >
-{
-protected:
-    ::utl::TempFile*   mpTempFile;
-    ::osl::Mutex               maMutex;
-    SvStream*                  mpStream;
-    sal_Bool                   mbRemoveFile;
-    sal_Bool                   mbInClosed;
-    sal_Bool                   mbOutClosed;
-
-    sal_Int64                  mnCachedPos;
-    sal_Bool                   mbHasCachedPos;
-
-    void checkError () const;
-    void checkConnected ();
-
-public:
-    OTempFileService (::com::sun::star::uno::Reference< 
::com::sun::star::uno::XComponentContext > const & context);
-
-    //Methods
-    // XInterface
-    virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const 
::com::sun::star::uno::Type& aType )
-        throw (::com::sun::star::uno::RuntimeException);
-    virtual void SAL_CALL acquire(  )
-        throw ();
-    virtual void SAL_CALL release(  )
-        throw ();
-    // XTypeProvider
-    virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > 
SAL_CALL getTypes(  )
-        throw (::com::sun::star::uno::RuntimeException);
-    virtual ::com::sun::star::uno::Sequence< ::sal_Int8 > SAL_CALL 
getImplementationId(  )
-        throw (::com::sun::star::uno::RuntimeException);
-
-    // XTempFile
-    virtual ::sal_Bool SAL_CALL getRemoveFile()
-        throw (::com::sun::star::uno::RuntimeException);
-    virtual void SAL_CALL setRemoveFile( ::sal_Bool _removefile )
-        throw (::com::sun::star::uno::RuntimeException);
-    virtual ::rtl::OUString SAL_CALL getUri()
-        throw (::com::sun::star::uno::RuntimeException);
-    virtual ::rtl::OUString SAL_CALL getResourceName()
-        throw (::com::sun::star::uno::RuntimeException);
-
-    // XInputStream
-    virtual ::sal_Int32 SAL_CALL readBytes( ::com::sun::star::uno::Sequence< 
::sal_Int8 >& aData, ::sal_Int32 nBytesToRead )
-        throw (::com::sun::star::io::NotConnectedException, 
::com::sun::star::io::BufferSizeExceededException, 
::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
-    virtual ::sal_Int32 SAL_CALL readSomeBytes( 
::com::sun::star::uno::Sequence< ::sal_Int8 >& aData, ::sal_Int32 
nMaxBytesToRead )
-        throw (::com::sun::star::io::NotConnectedException, 
::com::sun::star::io::BufferSizeExceededException, 
::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
-    virtual void SAL_CALL skipBytes( ::sal_Int32 nBytesToSkip )
-        throw (::com::sun::star::io::NotConnectedException, 
::com::sun::star::io::BufferSizeExceededException, 
::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
-    virtual ::sal_Int32 SAL_CALL available(  )
-        throw (::com::sun::star::io::NotConnectedException, 
::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
-    virtual void SAL_CALL closeInput(  )
-        throw (::com::sun::star::io::NotConnectedException, 
::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
-    // XOutputStream
-    virtual void SAL_CALL writeBytes( const ::com::sun::star::uno::Sequence< 
::sal_Int8 >& aData )
-        throw (::com::sun::star::io::NotConnectedException, 
::com::sun::star::io::BufferSizeExceededException, 
::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
-    virtual void SAL_CALL flush(  )
-        throw (::com::sun::star::io::NotConnectedException, 
::com::sun::star::io::BufferSizeExceededException, 
::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
-    virtual void SAL_CALL closeOutput(  )
-        throw (::com::sun::star::io::NotConnectedException, 
::com::sun::star::io::BufferSizeExceededException, 
::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
-    // XSeekable
-    virtual void SAL_CALL seek( sal_Int64 location )
-        throw (::com::sun::star::lang::IllegalArgumentException, 
::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
-    virtual sal_Int64 SAL_CALL getPosition(  )
-        throw (::com::sun::star::io::IOException, 
::com::sun::star::uno::RuntimeException);
-    virtual sal_Int64 SAL_CALL getLength(  )
-        throw (::com::sun::star::io::IOException, 
::com::sun::star::uno::RuntimeException);
-    // XStream
-    virtual ::com::sun::star::uno::Reference< 
::com::sun::star::io::XInputStream > SAL_CALL getInputStream(  )
-        throw (::com::sun::star::uno::RuntimeException);
-    virtual ::com::sun::star::uno::Reference< 
::com::sun::star::io::XOutputStream > SAL_CALL getOutputStream(  )
-        throw (::com::sun::star::uno::RuntimeException);
-    // XTruncate
-    virtual void SAL_CALL truncate()
-        throw (::com::sun::star::io::IOException, 
::com::sun::star::uno::RuntimeException);
-    // XServiceInfo
-    virtual ::rtl::OUString SAL_CALL getImplementationName()
-        throw (::com::sun::star::uno::RuntimeException);
-    virtual ::sal_Bool SAL_CALL supportsService( const ::rtl::OUString& 
ServiceName )
-        throw (::com::sun::star::uno::RuntimeException);
-    virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL 
getSupportedServiceNames()
-        throw (::com::sun::star::uno::RuntimeException);
-
-    //::com::sun::star::uno::Reference < ::com::sun::star::uno::XInterface > 
SAL_CALL XTempFile_createInstance( ::com::sun::star::uno::Reference< 
::com::sun::star::uno::XComponentContext > const & context);
-    static ::rtl::OUString getImplementationName_Static ();
-    static ::com::sun::star::uno::Sequence < ::rtl::OUString > 
getSupportedServiceNames_Static();
-
-    static ::com::sun::star::uno::Reference < 
com::sun::star::lang::XSingleComponentFactory > createServiceFactory_Static( 
com::sun::star::uno::Reference < com::sun::star::lang::XMultiServiceFactory > 
const & rServiceFactory );
-
-private:
-    OTempFileService( OTempFileService & );
-    virtual ~OTempFileService ();
-
-};
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/unotools/source/ucbhelper/xtempfile.cxx 
b/unotools/source/ucbhelper/xtempfile.cxx
deleted file mode 100644
index 94f78f4..0000000
--- a/unotools/source/ucbhelper/xtempfile.cxx
+++ /dev/null
@@ -1,513 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org.  If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#include "precompiled_unotools.hxx"
-#include <XTempFile.hxx>
-#include <cppuhelper/factory.hxx>
-#include <cppuhelper/typeprovider.hxx>
-#include <unotools/tempfile.hxx>
-#include <osl/file.hxx>
-#include <unotools/configmgr.hxx>
-#include <tools/urlobj.hxx>
-#include <tools/debug.hxx>
-
-namespace css = com::sun::star;
-
-// copy define from desktop\source\app\appinit.cxx
-
-#define DESKTOP_TEMPNAMEBASE_DIR       "/temp/soffice.tmp"
-
-OTempFileService::OTempFileService(::css::uno::Reference< 
::css::uno::XComponentContext > const & context)
-: ::cppu::PropertySetMixin< ::css::io::XTempFile >(
-    context
-    , static_cast< Implements >( IMPLEMENTS_PROPERTY_SET | 
IMPLEMENTS_FAST_PROPERTY_SET | IMPLEMENTS_PROPERTY_ACCESS )
-    , com::sun::star::uno::Sequence< rtl::OUString >() )
-, mpStream( NULL )
-, mbRemoveFile( sal_True )
-, mbInClosed( sal_False )
-, mbOutClosed( sal_False )
-, mnCachedPos( 0 )
-, mbHasCachedPos( sal_False )
-
-{
-    mpTempFile = new ::utl::TempFile;
-    mpTempFile->EnableKillingFile ( sal_True );
-}
-
-OTempFileService::~OTempFileService ()
-{
-    if ( mpTempFile )
-        delete mpTempFile;
-}
-
-
-// XInterface
-
-::css::uno::Any SAL_CALL OTempFileService::queryInterface( ::css::uno::Type 
const & aType )
-throw ( ::css::uno::RuntimeException )
-{
-    ::css::uno::Any aResult( OTempFileBase::queryInterface( aType ) );
-    if (!aResult.hasValue())
-        aResult = cppu::PropertySetMixin< ::css::io::XTempFile 
>::queryInterface( aType ) ;
-    return aResult;
-};
-void SAL_CALL OTempFileService::acquire(  )
-throw ()
-{
-    OTempFileBase::acquire();
-}
-void SAL_CALL OTempFileService::release(  )
-throw ()
-{
-    OTempFileBase::release();
-}
-
-//     XTypeProvider
-
-::css::uno::Sequence< ::css::uno::Type > SAL_CALL OTempFileService::getTypes(  
)
-throw ( ::css::uno::RuntimeException )
-{
-    static ::cppu::OTypeCollection* pTypeCollection = NULL;
-    if ( pTypeCollection == NULL )
-    {
-        ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ) ;
-
-        if ( pTypeCollection == NULL )
-        {
-            static ::cppu::OTypeCollection aTypeCollection(
-                ::getCppuType( ( const ::css::uno::Reference< 
::css::beans::XPropertySet >*)NULL )
-                ,OTempFileBase::getTypes() );
-            pTypeCollection = &aTypeCollection;
-        }
-    }
-    return pTypeCollection->getTypes();
-};
-::css::uno::Sequence< sal_Int8 > SAL_CALL 
OTempFileService::getImplementationId(  )
-throw ( ::css::uno::RuntimeException )
-{
-    return OTempFileBase::getImplementationId();
-}
-
-//     XTempFile
-
-sal_Bool SAL_CALL OTempFileService::getRemoveFile()
-throw ( ::css::uno::RuntimeException )
-{
-    ::osl::MutexGuard aGuard( maMutex );
-
-    if ( !mpTempFile )
-    {
-        // the stream is already disconnected
-        throw ::css::uno::RuntimeException();
-        }
-
-    return mbRemoveFile;
-};
-void SAL_CALL OTempFileService::setRemoveFile( sal_Bool _removefile )
-throw ( ::css::uno::RuntimeException )
-{
-    ::osl::MutexGuard aGuard( maMutex );
-
-    if ( !mpTempFile )
-    {
-        // the stream is already disconnected
-        throw ::css::uno::RuntimeException();
-    }
-
-    mbRemoveFile = _removefile;
-    mpTempFile->EnableKillingFile( mbRemoveFile );
-};
-::rtl::OUString SAL_CALL OTempFileService::getUri()
-throw ( ::css::uno::RuntimeException )
-{
-    ::osl::MutexGuard aGuard( maMutex );
-
-    if ( !mpTempFile )
-    {
-        throw ::css::uno::RuntimeException();
-    }
-
-    return ::rtl::OUString( mpTempFile->GetURL() );
-
-};
-::rtl::OUString SAL_CALL OTempFileService::getResourceName()
-throw ( ::css::uno::RuntimeException )
-{
-    ::osl::MutexGuard aGuard( maMutex );
-
-    if ( !mpTempFile )
-    {
-        throw ::css::uno::RuntimeException();
-}
-
-    return ::rtl::OUString( mpTempFile->GetFileName() );
-};
-
-
-
-// XInputStream
-
-sal_Int32 SAL_CALL OTempFileService::readBytes( ::css::uno::Sequence< sal_Int8 
>& aData, sal_Int32 nBytesToRead )
-throw (::css::io::NotConnectedException, 
::css::io::BufferSizeExceededException, ::css::io::IOException, 
::css::uno::RuntimeException )
-{
-    ::osl::MutexGuard aGuard( maMutex );
-    if ( mbInClosed )
-        throw ::css::io::NotConnectedException ( ::rtl::OUString(), const_cast 
< ::css::uno::XWeak * > ( static_cast < const ::css::uno::XWeak * > (this ) ) );
-
-    checkConnected();
-    if (nBytesToRead < 0)
-        throw ::css::io::BufferSizeExceededException( ::rtl::OUString(), 
static_cast< ::css::uno::XWeak * >(this));
-
-    aData.realloc(nBytesToRead);
-
-    sal_uInt32 nRead = mpStream->Read(static_cast < void* > ( aData.getArray() 
), nBytesToRead);
-    checkError();
-
-    if (nRead < static_cast < sal_uInt32 > ( nBytesToRead ) )
-        aData.realloc( nRead );
-
-    if ( sal::static_int_cast<sal_uInt32>(nBytesToRead) > nRead )
-    {
-        // usually that means that the stream was read till the end
-        // TODO/LATER: it is better to get rid of this optimization by 
avoiding using of multiple temporary files ( there should be only one temporary 
file? )
-        mnCachedPos = mpStream->Tell();
-        mbHasCachedPos = sal_True;
-
-        mpStream = NULL;
-        if ( mpTempFile )
-            mpTempFile->CloseStream();
-    }
-
-    return nRead;
-}
-sal_Int32 SAL_CALL OTempFileService::readSomeBytes( ::css::uno::Sequence< 
sal_Int8 >& aData, sal_Int32 nMaxBytesToRead )
-throw ( ::css::io::NotConnectedException, 
::css::io::BufferSizeExceededException, ::css::io::IOException, 
::css::uno::RuntimeException )
-{
-    ::osl::MutexGuard aGuard( maMutex );
-    if ( mbInClosed )
-        throw ::css::io::NotConnectedException ( ::rtl::OUString(), const_cast 
< ::css::uno::XWeak * > ( static_cast < const ::css::uno::XWeak * > (this ) ) );
-
-    checkConnected();
-    checkError();
-
-    if (nMaxBytesToRead < 0)
-        throw ::css::io::BufferSizeExceededException( ::rtl::OUString(), 
static_cast < ::css::uno::XWeak * >( this ) );
-
-    if (mpStream->IsEof())
-    {
-        aData.realloc(0);
-        return 0;
-    }
-    else
-        return readBytes(aData, nMaxBytesToRead);
-}
-void SAL_CALL OTempFileService::skipBytes( sal_Int32 nBytesToSkip )
-throw ( ::css::io::NotConnectedException, 
::css::io::BufferSizeExceededException, ::css::io::IOException, 
::css::uno::RuntimeException )
-{
-    ::osl::MutexGuard aGuard( maMutex );
-    if ( mbInClosed )
-        throw ::css::io::NotConnectedException ( ::rtl::OUString(), const_cast 
< ::css::uno::XWeak * > ( static_cast < const ::css::uno::XWeak * > (this ) ) );
-
-    checkConnected();
-    checkError();
-    mpStream->SeekRel(nBytesToSkip);
-    checkError();
-}
-sal_Int32 SAL_CALL OTempFileService::available(  )
-throw ( ::css::io::NotConnectedException, ::css::io::IOException, 
::css::uno::RuntimeException )
-{
-    ::osl::MutexGuard aGuard( maMutex );
-    if ( mbInClosed )
-        throw ::css::io::NotConnectedException ( ::rtl::OUString(), const_cast 
< ::css::uno::XWeak * > ( static_cast < const ::css::uno::XWeak * > (this ) ) );
-
-    checkConnected();
-
-    sal_uInt32 nPos = mpStream->Tell();
-    checkError();
-
-    mpStream->Seek(STREAM_SEEK_TO_END);
-    checkError();
-
-    sal_Int32 nAvailable = (sal_Int32)mpStream->Tell() - nPos;
-    mpStream->Seek(nPos);
-    checkError();
-
-    return nAvailable;
-}
-void SAL_CALL OTempFileService::closeInput(  )
-throw ( ::css::io::NotConnectedException, ::css::io::IOException, 
::css::uno::RuntimeException )
-{
-    ::osl::MutexGuard aGuard( maMutex );
-    if ( mbInClosed )
-        throw ::css::io::NotConnectedException ( ::rtl::OUString(), const_cast 
< ::css::uno::XWeak  * > ( static_cast < const ::css::uno::XWeak * > (this ) ) 
);
-
-    mbInClosed = sal_True;
-
-    if ( mbOutClosed )
-    {
-        // stream will be deleted by TempFile implementation
-        mpStream = NULL;
-
-        if ( mpTempFile )
-        {
-            delete mpTempFile;
-            mpTempFile = NULL;
-        }
-    }
-}
-
-// XOutputStream
-
-void SAL_CALL OTempFileService::writeBytes( const ::css::uno::Sequence< 
sal_Int8 >& aData )
-throw ( ::css::io::NotConnectedException, 
::css::io::BufferSizeExceededException, ::css::io::IOException, 
::css::uno::RuntimeException )
-{
-    ::osl::MutexGuard aGuard( maMutex );
-    if ( mbOutClosed )
-        throw ::css::io::NotConnectedException ( ::rtl::OUString(), const_cast 
< ::css::uno::XWeak * > ( static_cast < const ::css::uno::XWeak * > (this ) ) );
-
-    checkConnected();
-    sal_uInt32 nWritten = 
mpStream->Write(aData.getConstArray(),aData.getLength());
-    checkError();
-    if ( nWritten != (sal_uInt32)aData.getLength())
-        throw ::css::io::BufferSizeExceededException( 
::rtl::OUString(),static_cast < ::css::uno::XWeak * > ( this ) );
-}
-void SAL_CALL OTempFileService::flush(  )
-throw ( ::css::io::NotConnectedException, 
::css::io::BufferSizeExceededException, ::css::io::IOException, 
::css::uno::RuntimeException )
-{
-    ::osl::MutexGuard aGuard( maMutex );
-    if ( mbOutClosed )
-        throw ::css::io::NotConnectedException ( ::rtl::OUString(), const_cast 
< ::css::uno::XWeak * > ( static_cast < const ::css::uno::XWeak * > (this ) ) );
-
-    checkConnected();
-    mpStream->Flush();
-    checkError();
-}
-void SAL_CALL OTempFileService::closeOutput(  )
-throw ( ::css::io::NotConnectedException, 
::css::io::BufferSizeExceededException, ::css::io::IOException, 
::css::uno::RuntimeException )
-{
-    ::osl::MutexGuard aGuard( maMutex );
-    if ( mbOutClosed )
-        throw ::css::io::NotConnectedException ( ::rtl::OUString(), const_cast 
< ::css::uno::XWeak * > ( static_cast < const ::css::uno::XWeak * > (this ) ) );
-
-    mbOutClosed = sal_True;
-
-    // TODO/LATER: it is better to get rid of this optimization by avoiding 
using of multiple temporary files ( there should be only one temporary file? )
-    if ( mpStream )
-    {
-        mnCachedPos = mpStream->Tell();
-        mbHasCachedPos = sal_True;
-
-        mpStream = NULL;
-        if ( mpTempFile )
-            mpTempFile->CloseStream();
-    }
-
-    if ( mbInClosed )
-    {
-        // stream will be deleted by TempFile implementation
-        mpStream = NULL;
-
-        if ( mpTempFile )
-        {
-            delete mpTempFile;
-            mpTempFile = NULL;
-        }
-    }
-}
-
-
-void OTempFileService::checkError () const
-{
-    if (!mpStream || mpStream->SvStream::GetError () != ERRCODE_NONE )
-        throw ::css::io::NotConnectedException ( ::rtl::OUString(), const_cast 
< ::css::uno::XWeak * > ( static_cast < const ::css::uno::XWeak * > (this ) ) );
-}
-void OTempFileService::checkConnected ()
-{
-    if (!mpStream && mpTempFile)
-    {
-        mpStream = mpTempFile->GetStream( STREAM_STD_READWRITE );
-        if ( mpStream && mbHasCachedPos )
-        {
-            mpStream->Seek( sal::static_int_cast<sal_Size>(mnCachedPos) );
-            if ( mpStream->SvStream::GetError () == ERRCODE_NONE )
-            {
-                mbHasCachedPos = sal_False;
-                mnCachedPos = 0;
-            }
-            else
-            {
-                mpStream = NULL;
-                mpTempFile->CloseStream();
-            }
-        }
-    }
-
-    if (!mpStream)
-        throw ::css::io::NotConnectedException ( ::rtl::OUString(), const_cast 
< ::css::uno::XWeak * > ( static_cast < const ::css::uno::XWeak * > (this ) ) );
-}
-
-// XSeekable
-
-void SAL_CALL OTempFileService::seek( sal_Int64 nLocation )
-throw ( ::css::lang::IllegalArgumentException, ::css::io::IOException, 
::css::uno::RuntimeException )
-{
-    ::osl::MutexGuard aGuard( maMutex );
-    checkConnected();
-    if ( nLocation < 0 || nLocation > getLength() )
-        throw ::css::lang::IllegalArgumentException();
-
-    mpStream->Seek((sal_uInt32) nLocation );
-    checkError();
-}
-sal_Int64 SAL_CALL OTempFileService::getPosition(  )
-throw ( ::css::io::IOException, ::css::uno::RuntimeException )
-{
-    ::osl::MutexGuard aGuard( maMutex );
-    checkConnected();
-
-    sal_uInt32 nPos = mpStream->Tell();
-    checkError();
-    return (sal_Int64)nPos;
-}
-sal_Int64 SAL_CALL OTempFileService::getLength(  )
-throw ( ::css::io::IOException, ::css::uno::RuntimeException )
-{
-    ::osl::MutexGuard aGuard( maMutex );
-    checkConnected();
-
-    sal_uInt32 nCurrentPos = mpStream->Tell();
-    checkError();
-
-    mpStream->Seek(STREAM_SEEK_TO_END);
-    sal_uInt32 nEndPos = mpStream->Tell();
-    mpStream->Seek(nCurrentPos);
-
-    checkError();
-
-    return (sal_Int64)nEndPos;
-}
-
-
-// XStream
-
-::css::uno::Reference< ::css::io::XInputStream > SAL_CALL 
OTempFileService::getInputStream()
-throw ( ::css::uno::RuntimeException )
-    {
-    return ::css::uno::Reference< ::css::io::XInputStream >( *this, 
::css::uno::UNO_QUERY );
-}
-
-::css::uno::Reference< ::css::io::XOutputStream > SAL_CALL 
OTempFileService::getOutputStream()
-throw ( ::css::uno::RuntimeException )
-    {
-    return ::css::uno::Reference< ::css::io::XOutputStream >( *this, 
::css::uno::UNO_QUERY );
-    }
-
-// XTruncate
-
-void SAL_CALL OTempFileService::truncate()
-throw ( ::css::io::IOException, ::css::uno::RuntimeException )
-{
-    ::osl::MutexGuard aGuard( maMutex );
-    checkConnected();
-    // SetStreamSize() call does not change the position
-    mpStream->Seek( 0 );
-    mpStream->SetStreamSize( 0 );
-    checkError();
-}
-
-// XServiceInfo
-
-::rtl::OUString SAL_CALL OTempFileService::getImplementationName()
-throw ( ::css::uno::RuntimeException )
-{
-    return getImplementationName_Static();
-}
-
-sal_Bool SAL_CALL OTempFileService::supportsService( ::rtl::OUString const & 
rServiceName )
-throw ( ::css::uno::RuntimeException )
-{
-    ::css::uno::Sequence< ::rtl::OUString > 
aServices(getSupportedServiceNames_Static());
-    return rServiceName == aServices[0];
-}
-
-::css::uno::Sequence < ::rtl::OUString > SAL_CALL 
OTempFileService::getSupportedServiceNames()
-throw ( ::css::uno::RuntimeException )
-{
-    return getSupportedServiceNames_Static();
-}
-
-
-
-::rtl::OUString OTempFileService::getImplementationName_Static ()
-{
-    return ::rtl::OUString ( RTL_CONSTASCII_USTRINGPARAM ( 
"com.sun.star.io.comp.TempFile" ) );
-}
-::css::uno::Sequence < ::rtl::OUString > 
OTempFileService::getSupportedServiceNames_Static()
-{
-    ::css::uno::Sequence < ::rtl::OUString > aNames ( 1 );
-    aNames[0] = ::rtl::OUString ( RTL_CONSTASCII_USTRINGPARAM ( 
"com.sun.star.io.TempFile" ) );
-    return aNames;
-}
-::css::uno::Reference < ::css::uno::XInterface >SAL_CALL 
XTempFile_createInstance(
-    css::uno::Reference< ::css::uno::XComponentContext > const & context)
-    SAL_THROW( ( css::uno::Exception ) )
-{
-    return static_cast< ::cppu::OWeakObject * >( new OTempFileService(context) 
);
-}
-
-::css::uno::Reference < ::css::lang::XSingleComponentFactory > 
OTempFileService::createServiceFactory_Static( ::css::uno::Reference < 
::css::lang::XMultiServiceFactory > const & )
-{
-    return ::cppu::createSingleComponentFactory( XTempFile_createInstance, 
getImplementationName_Static(), getSupportedServiceNames_Static() );
-}
-
-/**
- * This function is called to get service factories for an implementation.
- * @param pImplName name of implementation
- * @param pServiceManager generic uno interface providing a service manager to 
instantiate components
- * @param pRegistryKey registry data key to read and write component 
persistent data
- * @return a component factory (generic uno interface)
- */
-extern "C" SAL_DLLPUBLIC_EXPORT void * SAL_CALL utl_component_getFactory(
-    const sal_Char * pImplName, void * pServiceManager, void * 
/*pRegistryKey*/ )
-{
-    void * pRet = 0;
-    ::css::uno::Reference< ::css::lang::XMultiServiceFactory > xSMgr(
-        reinterpret_cast< ::css::lang::XMultiServiceFactory * >( 
pServiceManager ) );
-    ::css::uno::Reference< ::css::lang::XSingleComponentFactory > xFactory;
-
-    if (OTempFileService::getImplementationName_Static().compareToAscii( 
pImplName ) == 0)
-        xFactory = OTempFileService::createServiceFactory_Static ( xSMgr );
-
-    if ( xFactory.is() )
-    {
-        xFactory->acquire();
-        pRet = xFactory.get();
-    }
-    return pRet;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to