diff options
author | hg <hg@oosvn01.> | 2009-10-08 16:03:52 +0000 |
---|---|---|
committer | hg <hg@oosvn01.> | 2009-10-08 16:03:52 +0000 |
commit | af31f0979b781b748b0d9a639081155546b38457 (patch) | |
tree | 3966261288deac87ebe92f1c1e8bdd8565b2acaf | |
parent | 8648ff32e63ccf89650d895d392e12480072041d (diff) | |
parent | 154d73921d6eb192ca03b19c7e4395633cba4d06 (diff) |
merge with m55
28 files changed, 463 insertions, 284 deletions
diff --git a/basctl/source/basicide/basidesh.src b/basctl/source/basicide/basidesh.src index 5d5f4b6fe9fb..130dda34d9e4 100644 --- a/basctl/source/basicide/basidesh.src +++ b/basctl/source/basicide/basidesh.src @@ -195,7 +195,7 @@ String RID_STR_APPENDLIBS String RID_STR_QUERYDELMACRO { /* ### ACHTUNG: Neuer Text in Resource? Mchten Sie das Makro XX lschen ? : Mchten Sie das Makro XX lschen ? */ - Text [ en-US ] = "Do you want to delete the macro XX ?" ; + Text [ en-US ] = "Do you want to delete the macro XX?" ; }; String RID_STR_QUERYDELDIALOG { diff --git a/basctl/source/basicide/basobj2.cxx b/basctl/source/basicide/basobj2.cxx index 4d0ccca05581..e4abb3fad92e 100644 --- a/basctl/source/basicide/basobj2.cxx +++ b/basctl/source/basicide/basobj2.cxx @@ -80,31 +80,6 @@ namespace BasicIDE { //---------------------------------------------------------------------------- -SfxMacro* CreateMacro() -{ - DBG_ERROR( "BasicIDE::CreateMacro() - war eigentlich nur fuer Macro-Recording!" ); - IDE_DLL()->GetExtraData()->ChoosingMacro() = TRUE; - SFX_APP()->EnterBasicCall(); - Window* pParent = Application::GetDefDialogParent(); - SfxMacro* pMacro = 0; - MacroChooser* pChooser = new MacroChooser( pParent, TRUE ); - Window* pOldModalDialogParent = Application::GetDefDialogParent(); - Application::SetDefDialogParent( pChooser ); - //pChooser->SetMode( MACROCHOOSER_RECORDING ); - short nRetValue = pChooser->Execute(); - (void)nRetValue; - - Application::SetDefDialogParent( pOldModalDialogParent ); - delete pChooser; - - SFX_APP()->LeaveBasicCall(); - IDE_DLL()->GetExtraData()->ChoosingMacro() = FALSE; - - return pMacro; -} - -//---------------------------------------------------------------------------- - void Organize( INT16 tabId ) { BasicIDEDLL::Init(); diff --git a/basctl/source/basicide/bastype3.hxx b/basctl/source/basicide/bastype3.hxx index 35607b43f307..02dbb9cd95dd 100644 --- a/basctl/source/basicide/bastype3.hxx +++ b/basctl/source/basicide/bastype3.hxx @@ -62,24 +62,6 @@ public: Accelerator& GetAccelerator() { return aAcc; } }; -class ExtendedMultiLineEdit : public MultiLineEdit -{ -private: - Accelerator aAcc; - Link aAccHdl; - -protected: - DECL_LINK( EditAccHdl, Accelerator * ); - DECL_LINK( ImplGetFocusHdl, Control* ); - DECL_LINK( ImplLoseFocusHdl, Control* ); - -public: - ExtendedMultiLineEdit( Window* pParent, IDEResId nRes ); - - void SetAccHdl( const Link& rLink ) { aAccHdl = rLink; } - Accelerator& GetAccelerator() { return aAcc; } -}; - #endif //NO_SPECIALEDIT #endif // _BASTYPE3_HXX diff --git a/basctl/source/basicide/bastypes.cxx b/basctl/source/basicide/bastypes.cxx index 88ce05ccc4b3..c44d3d00fdf0 100644 --- a/basctl/source/basicide/bastypes.cxx +++ b/basctl/source/basicide/bastypes.cxx @@ -477,24 +477,6 @@ void __EXPORT BasicDockingWindow::StartDocking() - -BasicToolBox::BasicToolBox( Window* pParent, IDEResId nRes ) : - ToolBox( pParent, nRes ) -{ -} - - - -void __EXPORT BasicToolBox::MouseButtonDown( const MouseEvent &rEvt ) -{ - ToolBox::MouseButtonDown( rEvt ); - if ( !GetCurItemId() ) - ((BasicDockingWindow*)GetParent())->MouseButtonDown( rEvt ); -} - - - - ExtendedEdit::ExtendedEdit( Window* pParent, IDEResId nRes ) : Edit( pParent, nRes ) { @@ -527,34 +509,6 @@ IMPL_LINK_INLINE_END( ExtendedEdit, EditAccHdl, Accelerator *, pAcc ) -ExtendedMultiLineEdit::ExtendedMultiLineEdit( Window* pParent, IDEResId nRes ) : - MultiLineEdit( pParent, nRes ) -{ - aAcc.SetSelectHdl( LINK( this, ExtendedMultiLineEdit, EditAccHdl ) ); - Control::SetGetFocusHdl( LINK( this, ExtendedMultiLineEdit, ImplGetFocusHdl ) ); - Control::SetLoseFocusHdl( LINK( this, ExtendedMultiLineEdit, ImplLoseFocusHdl ) ); -} - -IMPL_LINK( ExtendedMultiLineEdit, ImplGetFocusHdl, Control*, EMPTYARG ) -{ - Application::InsertAccel( &aAcc ); - return 0; -} - - -IMPL_LINK( ExtendedMultiLineEdit, ImplLoseFocusHdl, Control*, EMPTYARG ) -{ - Application::RemoveAccel( &aAcc ); - return 0; -} - -IMPL_LINK_INLINE_START( ExtendedMultiLineEdit, EditAccHdl, Accelerator *, pAcc ) -{ - aAccHdl.Call( pAcc ); - return 0; -} -IMPL_LINK_INLINE_END( ExtendedMultiLineEdit, EditAccHdl, Accelerator *, pAcc ) - struct TabBarDDInfo { ULONG npTabBar; @@ -796,11 +750,6 @@ ULONG CalcLineCount( SvStream& rStream ) return nCRs; } -LibInfoKey::LibInfoKey() - :m_aDocument( ScriptDocument::getApplicationScriptDocument() ) -{ -} - LibInfoKey::LibInfoKey( const ScriptDocument& rDocument, const String& rLibName ) :m_aDocument( rDocument ) ,m_aLibName( rLibName ) @@ -832,12 +781,6 @@ bool LibInfoKey::operator==( const LibInfoKey& rKey ) const return bRet; } -LibInfoItem::LibInfoItem() - :m_aDocument( ScriptDocument::getApplicationScriptDocument() ) - ,m_nCurrentType( 0 ) -{ -} - LibInfoItem::LibInfoItem( const ScriptDocument& rDocument, const String& rLibName, const String& rCurrentName, USHORT nCurrentType ) :m_aDocument( rDocument ) ,m_aLibName( rLibName ) diff --git a/basctl/source/basicide/moduldl2.cxx b/basctl/source/basicide/moduldl2.cxx index abf25722eab2..f0143cc8517b 100644 --- a/basctl/source/basicide/moduldl2.cxx +++ b/basctl/source/basicide/moduldl2.cxx @@ -232,14 +232,6 @@ SvLBoxEntry* BasicCheckBox::DoInsertEntry( const String& rStr, ULONG nPos ) //---------------------------------------------------------------------------- -void BasicCheckBox::RemoveEntry( ULONG nPos ) -{ - if ( nPos < GetEntryCount() ) - SvTreeListBox::GetModel()->Remove( GetEntry( nPos ) ); -} - -//---------------------------------------------------------------------------- - SvLBoxEntry* BasicCheckBox::FindEntry( const String& rName ) { ULONG nCount = GetEntryCount(); @@ -255,29 +247,6 @@ SvLBoxEntry* BasicCheckBox::FindEntry( const String& rName ) //---------------------------------------------------------------------------- -ULONG BasicCheckBox::GetSelectEntryPos() const -{ - return GetModel()->GetAbsPos( FirstSelected() ); -} - -//---------------------------------------------------------------------------- - -ULONG BasicCheckBox::GetCheckedEntryCount() const -{ - ULONG nCheckCount = 0; - ULONG nCount = GetEntryCount(); - - for (ULONG i=0; i<nCount; i++ ) - { - if ( IsChecked( i ) ) - nCheckCount++; - } - - return nCheckCount; -} - -//---------------------------------------------------------------------------- - void BasicCheckBox::CheckEntryPos( ULONG nPos, BOOL bCheck ) { if ( nPos < GetEntryCount() ) diff --git a/basctl/source/basicide/moduldlg.hxx b/basctl/source/basicide/moduldlg.hxx index 6d9a468fd498..b5066463ec51 100644 --- a/basctl/source/basicide/moduldlg.hxx +++ b/basctl/source/basicide/moduldlg.hxx @@ -131,12 +131,8 @@ public: ~BasicCheckBox(); SvLBoxEntry* DoInsertEntry( const String& rStr, ULONG nPos = LISTBOX_APPEND ); - void RemoveEntry( ULONG nPos ); SvLBoxEntry* FindEntry( const String& rName ); - ULONG GetSelectEntryPos() const; - - ULONG GetCheckedEntryCount() const; void CheckEntryPos( ULONG nPos, BOOL bCheck = TRUE ); BOOL IsChecked( ULONG nPos ) const; diff --git a/basctl/source/dlged/dlgedobj.cxx b/basctl/source/dlged/dlgedobj.cxx index ff0cafc80177..6211b8552bc3 100644 --- a/basctl/source/dlged/dlgedobj.cxx +++ b/basctl/source/dlged/dlgedobj.cxx @@ -88,16 +88,6 @@ DlgEdObj::DlgEdObj() //---------------------------------------------------------------------------- -DlgEdObj::DlgEdObj(const ::rtl::OUString& rModelName) - :SdrUnoObj(rModelName, sal_False) - ,bIsListening(sal_False) - ,pDlgEdForm( NULL ) -{ - DBG_CTOR(DlgEdObj, NULL); -} - -//---------------------------------------------------------------------------- - DlgEdObj::DlgEdObj(const ::rtl::OUString& rModelName, const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >& rxSFac) :SdrUnoObj(rModelName, rxSFac, sal_False) @@ -1382,23 +1372,6 @@ DBG_NAME(DlgEdForm); //---------------------------------------------------------------------------- -DlgEdForm::DlgEdForm(const ::rtl::OUString& rModelName) - :DlgEdObj(rModelName) -{ - DBG_CTOR(DlgEdForm, NULL); -} - -//---------------------------------------------------------------------------- - -DlgEdForm::DlgEdForm(const ::rtl::OUString& rModelName, - const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >& rxSFac) - :DlgEdObj(rModelName, rxSFac) -{ - DBG_CTOR(DlgEdForm, NULL); -} - -//---------------------------------------------------------------------------- - DlgEdForm::DlgEdForm() :DlgEdObj() { diff --git a/basctl/source/inc/basobj.hxx b/basctl/source/inc/basobj.hxx index a243d64af39a..c917de5a6dee 100644 --- a/basctl/source/inc/basobj.hxx +++ b/basctl/source/inc/basobj.hxx @@ -54,7 +54,6 @@ struct BasicIDE_Impl; namespace BasicIDE { - SfxMacro* CreateMacro(); void Organize( INT16 tabId ); diff --git a/basctl/source/inc/bastypes.hxx b/basctl/source/inc/bastypes.hxx index 6d6580776471..a9540762172d 100644 --- a/basctl/source/inc/bastypes.hxx +++ b/basctl/source/inc/bastypes.hxx @@ -98,8 +98,6 @@ struct BreakPoint class BasicDockingWindow : public DockingWindow { - friend class BasicToolBox; - Rectangle aFloatingPosAndSize; protected: @@ -113,14 +111,6 @@ public: BasicDockingWindow( Window* pParent ); }; -class BasicToolBox : public ToolBox -{ -public: - BasicToolBox( Window* pParent, IDEResId nRes ); - - virtual void MouseButtonDown( const MouseEvent& rMEvt ); -}; - DECLARE_LIST( BreakPL, BreakPoint* ) class BreakPointList : public BreakPL { @@ -268,7 +258,6 @@ private: String m_aLibName; public: - LibInfoKey(); LibInfoKey( const ScriptDocument& rDocument, const String& rLibName ); ~LibInfoKey(); @@ -291,7 +280,6 @@ private: USHORT m_nCurrentType; public: - LibInfoItem(); LibInfoItem( const ScriptDocument& rDocument, const String& rLibName, const String& rCurrentName, USHORT nCurrentType ); ~LibInfoItem(); diff --git a/basctl/source/inc/dlgedobj.hxx b/basctl/source/inc/dlgedobj.hxx index 8d0f46b089f0..e352ad738da4 100644 --- a/basctl/source/inc/dlgedobj.hxx +++ b/basctl/source/inc/dlgedobj.hxx @@ -66,7 +66,6 @@ private: protected: DlgEdObj(); - DlgEdObj(const ::rtl::OUString& rModelName); DlgEdObj(const ::rtl::OUString& rModelName, const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >& rxSFac); @@ -160,9 +159,6 @@ private: protected: - DlgEdForm(const ::rtl::OUString& rModelName); - DlgEdForm(const ::rtl::OUString& rModelName, - const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >& rxSFac); DlgEdForm(); virtual void NbcMove( const Size& rSize ); diff --git a/crashrep/source/unx/main.cxx b/crashrep/source/unx/main.cxx index 4c043419f9d6..ca24d508ae07 100755 --- a/crashrep/source/unx/main.cxx +++ b/crashrep/source/unx/main.cxx @@ -357,7 +357,7 @@ bool SendHTTPRequest( "SOAPAction: \"\"\r\n\r\n", pszServer, uPort, - (int)length + static_cast<int>(length) ); else sprintf( buffer, @@ -365,7 +365,7 @@ bool SendHTTPRequest( "Content-Type: text/xml; charset=\"utf-8\"\r\n" "Content-Length: %d\r\n" "SOAPAction: \"\"\r\n\r\n", - (int)length + static_cast<int>(length) ); if ( g_bDebugMode ) diff --git a/crashrep/source/win32/soreport.cpp b/crashrep/source/win32/soreport.cpp index 4c897f76e0b5..043ad62b0051 100755 --- a/crashrep/source/win32/soreport.cpp +++ b/crashrep/source/win32/soreport.cpp @@ -1564,8 +1564,60 @@ static void repatch_soffice_exe( void *pBuffer, size_t nBufSize ) } while ( !bPatched && nBufSize ); } +// Normalize executable/library images to prevent different MD5 checksums due +// to a different PE header date/checksum (this doesn't affect the code/data +// sections of a executable/library. Please see tools/source/bootstrp/md5.cxx +// where the same method is also used. The tool so_checksum creates the MD5 +// checksums during build time. You have to make sure that both methods use the +// same algorithm otherwise there could be problems with stack reports. +static void normalize_pe_image(sal_uInt8* buffer, size_t nBufferSize) +{ + const int OFFSET_PE_OFFSET = 0x3c; + const int OFFSET_COFF_TIMEDATESTAMP = 4; + const int PE_SIGNATURE_SIZE = 4; + const int COFFHEADER_SIZE = 20; + const int OFFSET_PE_OPTIONALHEADER_CHECKSUM = 64; + + // Check the header part of the file buffer + if (buffer[0] == 'M' && buffer[1] == 'Z') + { + unsigned long PEHeaderOffset = (long)buffer[OFFSET_PE_OFFSET]; + if (PEHeaderOffset < nBufferSize-4) + { + if ( buffer[PEHeaderOffset] == 'P' && + buffer[PEHeaderOffset+1] == 'E' && + buffer[PEHeaderOffset+2] == 0 && + buffer[PEHeaderOffset+3] == 0 ) + { + PEHeaderOffset += PE_SIGNATURE_SIZE; + if (PEHeaderOffset+OFFSET_COFF_TIMEDATESTAMP < nBufferSize-4) + { + // Set timedatestamp and checksum fields to a normalized + // value to enforce the same MD5 checksum for identical + // Windows executables/libraries. + buffer[PEHeaderOffset+OFFSET_COFF_TIMEDATESTAMP] = 0; + buffer[PEHeaderOffset+OFFSET_COFF_TIMEDATESTAMP+1] = 0; + buffer[PEHeaderOffset+OFFSET_COFF_TIMEDATESTAMP+2] = 0; + buffer[PEHeaderOffset+OFFSET_COFF_TIMEDATESTAMP+3] = 0; + } + + if (PEHeaderOffset+COFFHEADER_SIZE+OFFSET_PE_OPTIONALHEADER_CHECKSUM < nBufferSize-4) + { + // Set checksum to a normalized value + buffer[PEHeaderOffset+COFFHEADER_SIZE+OFFSET_PE_OPTIONALHEADER_CHECKSUM] = 0; + buffer[PEHeaderOffset+COFFHEADER_SIZE+OFFSET_PE_OPTIONALHEADER_CHECKSUM+1] = 0; + buffer[PEHeaderOffset+COFFHEADER_SIZE+OFFSET_PE_OPTIONALHEADER_CHECKSUM+2] = 0; + buffer[PEHeaderOffset+COFFHEADER_SIZE+OFFSET_PE_OPTIONALHEADER_CHECKSUM+3] = 0; + } + } + } + } +} + static sal_uInt32 calc_md5_checksum( const char *filename, sal_uInt8 *pChecksum, sal_uInt32 nChecksumLen ) { + const int MINIMAL_FILESIZE = 512; + sal_uInt32 nBytesProcessed = 0; FILE *fp = fopen( filename, "rb" ); @@ -1585,6 +1637,8 @@ static sal_uInt32 calc_md5_checksum( const char *filename, sal_uInt8 *pChecksum { if ( 0 == stricmp( GetFileName(filename).c_str(), "soffice.bin" ) ) repatch_soffice_exe( pBuffer, nBytesRead ); + else if ( nFileSize > MINIMAL_FILESIZE ) + normalize_pe_image( pBuffer, nBytesRead ); rtlDigestError error = rtl_digest_MD5 ( pBuffer, nBytesRead, diff --git a/extensions/source/update/check/updatecheckjob.cxx b/extensions/source/update/check/updatecheckjob.cxx index 3bc292e4c8ef..f64ba851e679 100644 --- a/extensions/source/update/check/updatecheckjob.cxx +++ b/extensions/source/update/check/updatecheckjob.cxx @@ -36,12 +36,15 @@ #include "updatehdl.hxx" #include "updateprotocol.hxx" -#include <cppuhelper/implbase2.hxx> +#include <cppuhelper/implbase3.hxx> #include <cppuhelper/implementationentry.hxx> +#include "com/sun/star/frame/XDesktop.hpp" +#include "com/sun/star/frame/XTerminateListener.hpp" #include <com/sun/star/task/XJob.hpp> namespace beans = com::sun::star::beans ; +namespace frame = com::sun::star::frame ; namespace lang = com::sun::star::lang ; namespace task = com::sun::star::task ; namespace uno = com::sun::star::uno ; @@ -61,6 +64,7 @@ public: virtual void SAL_CALL onTerminated(); void showDialog(); + void setTerminating() { m_bTerminating = true; } protected: ~InitUpdateCheckJobThread(); @@ -70,10 +74,11 @@ private: uno::Reference<uno::XComponentContext> m_xContext; uno::Sequence<beans::NamedValue> m_xParameters; bool m_bShowDialog; + bool m_bTerminating; }; class UpdateCheckJob : - public ::cppu::WeakImplHelper2< task::XJob, lang::XServiceInfo > + public ::cppu::WeakImplHelper3< task::XJob, lang::XServiceInfo, frame::XTerminateListener > { virtual ~UpdateCheckJob(); @@ -100,8 +105,19 @@ public: virtual uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames() throw (uno::RuntimeException); + // XEventListener + virtual void SAL_CALL disposing( ::com::sun::star::lang::EventObject const & evt ) + throw (::com::sun::star::uno::RuntimeException); + + // XTerminateListener + virtual void SAL_CALL queryTermination( lang::EventObject const & evt ) + throw ( frame::TerminationVetoException, uno::RuntimeException ); + virtual void SAL_CALL notifyTermination( lang::EventObject const & evt ) + throw ( uno::RuntimeException ); + private: uno::Reference<uno::XComponentContext> m_xContext; + uno::Reference< frame::XDesktop > m_xDesktop; InitUpdateCheckJobThread *m_pInitThread; void handleExtensionUpdates( const uno::Sequence< beans::NamedValue > &rListProp ); @@ -115,7 +131,8 @@ InitUpdateCheckJobThread::InitUpdateCheckJobThread( const uno::Sequence< beans::NamedValue > &xParameters ) : m_xContext( xContext ), m_xParameters( xParameters ), - m_bShowDialog( false ) + m_bShowDialog( false ), + m_bTerminating( false ) { create(); } @@ -132,6 +149,9 @@ void SAL_CALL InitUpdateCheckJobThread::run() m_aCondition.wait( &tv ); + if ( m_bTerminating ) + return; + rtl::Reference< UpdateCheck > aController( UpdateCheck::get() ); aController->initialize( m_xParameters, m_xContext ); @@ -156,10 +176,13 @@ void InitUpdateCheckJobThread::showDialog() //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ -UpdateCheckJob::UpdateCheckJob(const uno::Reference<uno::XComponentContext>& xContext) : +UpdateCheckJob::UpdateCheckJob( const uno::Reference<uno::XComponentContext>& xContext ) : m_xContext(xContext), m_pInitThread( NULL ) { + m_xDesktop.set( xContext->getServiceManager()->createInstanceWithContext( UNISTRING("com.sun.star.frame.Desktop"), xContext ), uno::UNO_QUERY ); + if ( m_xDesktop.is() ) + m_xDesktop->addTerminateListener( this ); } //------------------------------------------------------------------------------ @@ -301,6 +324,37 @@ UpdateCheckJob::supportsService( rtl::OUString const & serviceName ) throw (uno: return sal_False; } +//------------------------------------------------------------------------------ +// XEventListener +void SAL_CALL UpdateCheckJob::disposing( lang::EventObject const & rEvt ) + throw ( uno::RuntimeException ) +{ + bool shutDown = ( rEvt.Source == m_xDesktop ); + + if ( shutDown && m_xDesktop.is() ) + { + m_xDesktop->removeTerminateListener( this ); + m_xDesktop.clear(); + } +} + +//------------------------------------------------------------------------------ +// XTerminateListener +void SAL_CALL UpdateCheckJob::queryTermination( lang::EventObject const & ) + throw ( frame::TerminationVetoException, uno::RuntimeException ) +{ +} + +//------------------------------------------------------------------------------ +void SAL_CALL UpdateCheckJob::notifyTermination( lang::EventObject const & rEvt ) + throw ( uno::RuntimeException ) +{ + if ( m_pInitThread ) + m_pInitThread->setTerminating(); + + disposing( rEvt ); +} + } // anonymous namespace //------------------------------------------------------------------------------ diff --git a/package/inc/Inflater.hxx b/package/inc/Inflater.hxx index 7520ba672058..7805a9cc84bb 100644 --- a/package/inc/Inflater.hxx +++ b/package/inc/Inflater.hxx @@ -40,7 +40,7 @@ class Inflater { protected: sal_Bool bFinish, bFinished, bSetParams, bNeedDict; - sal_Int32 nOffset, nLength; + sal_Int32 nOffset, nLength, nLastInflateError; z_stream* pStream; com::sun::star::uno::Sequence < sal_Int8 > sInBuffer; sal_Int32 doInflateBytes (com::sun::star::uno::Sequence < sal_Int8 > &rBuffer, sal_Int32 nNewOffset, sal_Int32 nNewLength); @@ -53,6 +53,8 @@ public: sal_Bool SAL_CALL finished( ); sal_Int32 SAL_CALL doInflateSegment( ::com::sun::star::uno::Sequence< sal_Int8 >& rBuffer, sal_Int32 nNewOffset, sal_Int32 nNewLength ); void SAL_CALL end( ); + + sal_Int32 getLastInflateError() { return nLastInflateError; } }; #endif diff --git a/package/source/xstor/owriteablestream.cxx b/package/source/xstor/owriteablestream.cxx index 8b02a6114227..2946c14f98ff 100644 --- a/package/source/xstor/owriteablestream.cxx +++ b/package/source/xstor/owriteablestream.cxx @@ -743,65 +743,6 @@ uno::Reference< io::XInputStream > OWriteStream_Impl::GetTempFileAsInputStream() return xInputStream; } -//----------------------------------------------- -void OWriteStream_Impl::CopyTempFileToOutput( uno::Reference< io::XOutputStream > xOutStream ) -{ - OSL_ENSURE( xOutStream.is(), "The stream must be specified!\n" ); - OSL_ENSURE( m_aTempURL.getLength() || m_xCacheStream.is(), "The temporary must exist!\n" ); - - uno::Reference< io::XInputStream > xTempInStream; - - if ( m_xCacheStream.is() ) - { - if ( !m_xCacheSeek.is() ) - throw uno::RuntimeException(); - sal_Int64 nPos = m_xCacheSeek->getPosition(); - - try - { - m_xCacheSeek->seek( 0 ); - uno::Reference< io::XInputStream > xTempInp = m_xCacheStream->getInputStream(); - if ( xTempInp.is() ) - ::comphelper::OStorageHelper::CopyInputToOutput( xTempInStream, xOutStream ); - } - catch( uno::Exception& aException ) - { - AddLog( aException.Message ); - AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Quiet exception" ) ) ); - - m_xCacheSeek->seek( nPos ); - throw io::IOException(); //TODO: - } - - m_xCacheSeek->seek( nPos ); - } - else if ( m_aTempURL.getLength() ) - { - uno::Reference < ucb::XSimpleFileAccess > xTempAccess( - GetServiceFactory()->createInstance ( - ::rtl::OUString::createFromAscii( "com.sun.star.ucb.SimpleFileAccess" ) ), - uno::UNO_QUERY ); - - if ( !xTempAccess.is() ) - throw uno::RuntimeException(); // TODO: - - try - { - xTempInStream = xTempAccess->openFileRead( m_aTempURL ); - } - catch( uno::Exception& aException ) - { - AddLog( aException.Message ); - AddLog( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX "Quiet exception" ) ) ); - } - - if ( !xTempInStream.is() ) - throw io::IOException(); //TODO: - - ::comphelper::OStorageHelper::CopyInputToOutput( xTempInStream, xOutStream ); - } -} - // ================================================================================================= //----------------------------------------------- diff --git a/package/source/xstor/owriteablestream.hxx b/package/source/xstor/owriteablestream.hxx index 107ffd8f0ba8..9e4c00d5a45d 100644 --- a/package/source/xstor/owriteablestream.hxx +++ b/package/source/xstor/owriteablestream.hxx @@ -161,8 +161,6 @@ private: ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > GetTempFileAsStream(); ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > GetTempFileAsInputStream(); - void CopyTempFileToOutput( ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream > xOutStream ); - ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > GetStream_Impl( sal_Int32 nStreamMode, sal_Bool bHierarchyAccess ); diff --git a/package/source/zipapi/Inflater.cxx b/package/source/zipapi/Inflater.cxx index 178767b06cdc..62228bf22c8e 100644 --- a/package/source/zipapi/Inflater.cxx +++ b/package/source/zipapi/Inflater.cxx @@ -45,12 +45,12 @@ using namespace com::sun::star::uno; /** Provides general purpose decompression using the ZLIB library */ Inflater::Inflater(sal_Bool bNoWrap) -: bFinish(sal_False), - bFinished(sal_False), +: bFinished(sal_False), bSetParams(sal_False), bNeedDict(sal_False), nOffset(0), nLength(0), + nLastInflateError(0), pStream(NULL) { pStream = new z_stream; @@ -120,16 +120,23 @@ void SAL_CALL Inflater::end( ) sal_Int32 Inflater::doInflateBytes (Sequence < sal_Int8 > &rBuffer, sal_Int32 nNewOffset, sal_Int32 nNewLength) { - sal_Int32 nResult; + if ( !pStream ) + { + nLastInflateError = Z_STREAM_ERROR; + return 0; + } + + nLastInflateError = 0; + pStream->next_in = ( unsigned char* ) ( sInBuffer.getConstArray() + nOffset ); pStream->avail_in = nLength; pStream->next_out = reinterpret_cast < unsigned char* > ( rBuffer.getArray() + nNewOffset ); pStream->avail_out = nNewLength; #ifdef SYSTEM_ZLIB - nResult = ::inflate(pStream, bFinish ? Z_SYNC_FLUSH : Z_PARTIAL_FLUSH); + sal_Int32 nResult = ::inflate(pStream, Z_PARTIAL_FLUSH); #else - nResult = ::z_inflate(pStream, bFinish ? Z_SYNC_FLUSH : Z_PARTIAL_FLUSH); + sal_Int32 nResult = ::z_inflate(pStream, Z_PARTIAL_FLUSH); #endif switch (nResult) @@ -140,15 +147,19 @@ sal_Int32 Inflater::doInflateBytes (Sequence < sal_Int8 > &rBuffer, sal_Int32 n nOffset += nLength - pStream->avail_in; nLength = pStream->avail_in; return nNewLength - pStream->avail_out; + case Z_NEED_DICT: bNeedDict = sal_True; nOffset += nLength - pStream->avail_in; nLength = pStream->avail_in; - case Z_BUF_ERROR: - return 0; - case Z_DATA_ERROR: return 0; + + default: + // it is no error, if there is no input or no output + if ( nLength && nNewLength ) + nLastInflateError = nResult; } + return 0; } diff --git a/package/source/zipapi/XUnbufferedStream.cxx b/package/source/zipapi/XUnbufferedStream.cxx index cb99c085bc28..1eba064a2165 100644 --- a/package/source/zipapi/XUnbufferedStream.cxx +++ b/package/source/zipapi/XUnbufferedStream.cxx @@ -230,7 +230,7 @@ sal_Int32 SAL_CALL XUnbufferedStream::readBytes( Sequence< sal_Int8 >& aData, sa OUString( RTL_CONSTASCII_USTRINGPARAM( "Should not be possible to read more then requested!" ) ), Reference< XInterface >() ); - if ( maInflater.finished() ) + if ( maInflater.finished() || maInflater.getLastInflateError() ) throw ZipIOException( OUString( RTL_CONSTASCII_USTRINGPARAM( "The stream seems to be broken!" ) ), Reference< XInterface >() ); @@ -244,6 +244,10 @@ sal_Int32 SAL_CALL XUnbufferedStream::readBytes( Sequence< sal_Int8 >& aData, sa mxZipSeek->seek ( mnZipCurrent ); sal_Int32 nToRead = std::min ( nDiff, std::max ( nRequestedBytes, static_cast< sal_Int32 >( 8192 ) ) ); sal_Int32 nZipRead = mxZipStream->readBytes ( maCompBuffer, nToRead ); + if ( nZipRead < nToRead ) + throw ZipIOException( OUString( RTL_CONSTASCII_USTRINGPARAM( "No expected data!" ) ), + Reference< XInterface >() ); + mnZipCurrent += nZipRead; // maCompBuffer now has the data, check if we need to decrypt // before passing to the Inflater diff --git a/setup_native/prj/build.lst b/setup_native/prj/build.lst index 7966d21533fc..fcb276075a09 100644 --- a/setup_native/prj/build.lst +++ b/setup_native/prj/build.lst @@ -4,6 +4,7 @@ pk setup_native\scripts\source nmake - u sn_sour pk setup_native\scripts nmake - u sn_scripts sn_source.u NULL pk setup_native\source\win32\customactions\tools nmake - w sn_tools NULL pk setup_native\source\win32\customactions\relnotes nmake - w sn_relnotes NULL +pk setup_native\source\win32\customactions\rebase nmake - w sn_rebase NULL pk setup_native\source\win32\customactions\regactivex nmake - w sn_regactivex NULL pk setup_native\source\win32\customactions\regpatchactivex nmake - w sn_regpatchactivex NULL pk setup_native\source\win32\customactions\reg4allmsdoc nmake - w sn_reg4allmsdoc NULL diff --git a/setup_native/source/java/javaversion2.dat b/setup_native/source/java/javaversion2.dat index 34e9257bb9ff..e997838421b6 100644 --- a/setup_native/source/java/javaversion2.dat +++ b/setup_native/source/java/javaversion2.dat @@ -30,30 +30,30 @@ #************************************************************************* # GUI String in the installer ("Java Runtime Environment (${JAVAVERSION})") -JAVAVERSION=Java 6 Update 14 -WINDOWSJAVAVERSION=Java 6 Update 14 +JAVAVERSION=Java 6 Update 15 +WINDOWSJAVAVERSION=Java 6 Update 15 # Windows (scp2 and downloadtemplate.nsi) -WINDOWSJAVAFILENAME=jre-6u14-windows-i586.exe -WINDOWSJAVAREGISTRYENTRY=1.6.0_14 +WINDOWSJAVAFILENAME=jre-6u15-windows-i586.exe +WINDOWSJAVAREGISTRYENTRY=1.6.0_15 # Linux (scp2) -LINUXJAVAFILENAME=jre-6u14-linux-i586.rpm +LINUXJAVAFILENAME=jre-6u15-linux-i586.rpm # Linux (rpmUnit.xml, rpm -qp <filename> ) -LINUXJAVANAME=jre-1.6.0_14-fcs +LINUXJAVANAME=jre-1.6.0_15-fcs # Linux-x64 (scp2) -LINUXX64JAVAFILENAME=jre-6u14-linux-amd64.rpm +LINUXX64JAVAFILENAME=jre-6u15-linux-amd64.rpm # Solaris Sparc (scp2) -SOLSJAVARTPACKED=SUNWj6rt_1_6_0_14_sparc.tar.gz -SOLSJAVACFGPACKED=SUNWj6cfg_1_6_0_14_sparc.tar.gz -SOLSJAVAMANPACKED=SUNWj6man_1_6_0_14_sparc.tar.gz +SOLSJAVARTPACKED=SUNWj6rt_1_6_0_15_sparc.tar.gz +SOLSJAVACFGPACKED=SUNWj6cfg_1_6_0_15_sparc.tar.gz +SOLSJAVAMANPACKED=SUNWj6man_1_6_0_15_sparc.tar.gz # Solaris x86 (scp2) -SOLIJAVARTPACKED=SUNWj6rt_1_6_0_14_x86.tar.gz -SOLIJAVACFGPACKED=SUNWj6cfg_1_6_0_14_x86.tar.gz -SOLIJAVAMANPACKED=SUNWj6man_1_6_0_14_x86.tar.gz +SOLIJAVARTPACKED=SUNWj6rt_1_6_0_15_x86.tar.gz +SOLIJAVACFGPACKED=SUNWj6cfg_1_6_0_15_x86.tar.gz +SOLIJAVAMANPACKED=SUNWj6man_1_6_0_15_x86.tar.gz # Solaris (pkgUnit.xml, needs only to be changed in major changes) SOLARISJAVART=SUNWj6rt diff --git a/setup_native/source/packinfo/package_names_ext.txt b/setup_native/source/packinfo/package_names_ext.txt index b10c2cb85448..18e167948cb2 100644 --- a/setup_native/source/packinfo/package_names_ext.txt +++ b/setup_native/source/packinfo/package_names_ext.txt @@ -8,10 +8,14 @@ SUNWfreetype2 FreeType2 font library SUNWgnome-base-libs GNOME base GUI libraries - platform dependent files, /usr filesystem SUNWgnome-config GNOME configuration framework - platform dependent files, /usr filesystem SUNWgnome-vfs GNOME Virtual File System Framework and application/MIME type registry - platform dependent files, /usr filesystem +SUNWgzip The GNU Zip (gzip) compression utility +SUNWmfrun Motif RunTime Kit SUNWkvm Core Architecture, (Kvm) SUNWlibC Sun Workshop Compilers Bundled libC +SUNWPython The Python interpreter, libraries and utilities SUNWxwplt X Window System platform software SUNWxwrtl X Window System & Graphics Runtime Library Links in /usr/lib +SUNWzlibr The Zip compression library (Root) SUNWbtool CCS tools bundled with SunOS SUNWxcu4 XCU4 Utilities diff --git a/setup_native/source/packinfo/packinfo_office.txt b/setup_native/source/packinfo/packinfo_office.txt index 0bea0106c6b8..cd0885b2184f 100755 --- a/setup_native/source/packinfo/packinfo_office.txt +++ b/setup_native/source/packinfo/packinfo_office.txt @@ -162,7 +162,7 @@ End Start module = "gid_Module_Optional_Binfilter" solarispackagename = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-binfilter" -solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01" +solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01,%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core04,%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core05" packagename = "%BASISPACKAGEPREFIX%OOOBASEVERSION-binfilter" freebsdrequires = "%BASISPACKAGEPREFIX%OOOBASEVERSION-core01" requires = "%BASISPACKAGEPREFIX%OOOBASEVERSION-core01" @@ -177,7 +177,7 @@ End Start module = "gid_Module_Optional_Grfflt" solarispackagename = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-graphicfilter" -solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01" +solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01,%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core04,%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core05" packagename = "%BASISPACKAGEPREFIX%OOOBASEVERSION-graphicfilter" freebsdrequires = "%BASISPACKAGEPREFIX%OOOBASEVERSION-core01" requires = "%BASISPACKAGEPREFIX%OOOBASEVERSION-core01" @@ -192,7 +192,7 @@ End Start module = "gid_Module_Oooimprovement" solarispackagename = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-oooimprovement" -solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01" +solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01,%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core04,%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core05,SUNWmfrun" packagename = "%BASISPACKAGEPREFIX%OOOBASEVERSION-oooimprovement" freebsdrequires = "%BASISPACKAGEPREFIX%OOOBASEVERSION-core01" requires = "%BASISPACKAGEPREFIX%OOOBASEVERSION-core01" @@ -207,7 +207,7 @@ End Start module = "gid_Module_Optional_Testtool" solarispackagename = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-testtool" -solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01" +solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01,%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core04,%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core05,SUNWmfrun" packagename = "%BASISPACKAGEPREFIX%OOOBASEVERSION-testtool" freebsdrequires = "%BASISPACKAGEPREFIX%OOOBASEVERSION-core01" requires = "%BASISPACKAGEPREFIX%OOOBASEVERSION-core01" @@ -282,7 +282,7 @@ End Start module = "gid_Module_Optional_Onlineupdate" solarispackagename = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-onlineupdate" -solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01, SUNWlibC" +solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01, %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core05, SUNWlibC, SUNWgzip" packagename = "%BASISPACKAGEPREFIX%OOOBASEVERSION-onlineupdate" requires = "%BASISPACKAGEPREFIX%OOOBASEVERSION-core01" copyright = "1999-2005 by Sun Microsystems" @@ -296,7 +296,7 @@ End Start module = "gid_Module_Optional_Pyuno" solarispackagename = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-pyuno" -solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01" +solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01, SUNWPython" packagename = "%BASISPACKAGEPREFIX%OOOBASEVERSION-pyuno" freebsdrequires = "%BASISPACKAGEPREFIX%OOOBASEVERSION-core01" requires = "%BASISPACKAGEPREFIX%OOOBASEVERSION-core01" @@ -371,7 +371,7 @@ End Start module = "gid_Module_Oo_Linguistic" solarispackagename = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-ooolinguistic" -solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01" +solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01, %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core04, %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core05" packagename = "%BASISPACKAGEPREFIX%OOOBASEVERSION-ooolinguistic" freebsdrequires = "%BASISPACKAGEPREFIX%OOOBASEVERSION-core01" requires = "%BASISPACKAGEPREFIX%OOOBASEVERSION-core01" @@ -387,7 +387,7 @@ Start module = "gid_Module_Root_Files_2" script = "shellscripts_module.txt" solarispackagename = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core02" -solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01, %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core04, %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core05, SUNWlibC" +solarisrequires = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01, %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core04, %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core05, SUNWlibC, SUNWmfrun" packagename = "%BASISPACKAGEPREFIX%OOOBASEVERSION-core02" requires = "%BASISPACKAGEPREFIX%OOOBASEVERSION-core01" freebsdrequires = "" diff --git a/setup_native/source/packinfo/packinfo_office_lang.txt b/setup_native/source/packinfo/packinfo_office_lang.txt index b3e193265280..8f3f6dddefbd 100755 --- a/setup_native/source/packinfo/packinfo_office_lang.txt +++ b/setup_native/source/packinfo/packinfo_office_lang.txt @@ -29,6 +29,7 @@ vendor = "OpenOffice.org" description = "Language module for OpenOffice.org %OOOBASEVERSION, language %LANGUAGESTRING" destpath = "/opt" packageversion = "%OOOPACKAGEVERSION" +pkg_list_entry = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01" End Start @@ -44,6 +45,7 @@ vendor = "OpenOffice.org" description = "Language fonts module for OpenOffice.org %OOOBASEVERSION, language %LANGUAGESTRING" destpath = "/opt" packageversion = "%OOOPACKAGEVERSION" +pkg_list_entry = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01" End Start @@ -59,6 +61,7 @@ vendor = "OpenOffice.org" description = "Language resource module for OpenOffice.org %OOOBASEVERSION, language %LANGUAGESTRING" destpath = "/opt" packageversion = "%OOOPACKAGEVERSION" +pkg_list_entry = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01" End Start @@ -74,6 +77,7 @@ vendor = "OpenOffice.org" description = "Language help module for OpenOffice.org %OOOBASEVERSION, language %LANGUAGESTRING" destpath = "/opt" packageversion = "%OOOPACKAGEVERSION" +pkg_list_entry = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01" End Start @@ -89,6 +93,7 @@ vendor = "OpenOffice.org" description = "Writer language module for OpenOffice.org %OOOBASEVERSION, language %LANGUAGESTRING" destpath = "/opt" packageversion = "%OOOPACKAGEVERSION" +pkg_list_entry = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-writer" End Start @@ -104,6 +109,7 @@ vendor = "OpenOffice.org" description = "Calc language module for OpenOffice.org %OOOBASEVERSION, language %LANGUAGESTRING" destpath = "/opt" packageversion = "%OOOPACKAGEVERSION" +pkg_list_entry = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-calc" End Start @@ -119,6 +125,7 @@ vendor = "OpenOffice.org" description = "Impress language module for OpenOffice.org %OOOBASEVERSION, language %LANGUAGESTRING" destpath = "/opt" packageversion = "%OOOPACKAGEVERSION" +pkg_list_entry = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-impress" End Start @@ -134,6 +141,7 @@ vendor = "OpenOffice.org" description = "Draw language module for OpenOffice.org %OOOBASEVERSION, language %LANGUAGESTRING" destpath = "/opt" packageversion = "%OOOPACKAGEVERSION" +pkg_list_entry = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-draw" End Start @@ -149,6 +157,7 @@ vendor = "OpenOffice.org" description = "Math language module for OpenOffice.org %OOOBASEVERSION, language %LANGUAGESTRING" destpath = "/opt" packageversion = "%OOOPACKAGEVERSION" +pkg_list_entry = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-math" End Start @@ -164,6 +173,7 @@ vendor = "OpenOffice.org" description = "Base language module for OpenOffice.org %OOOBASEVERSION, language %LANGUAGESTRING" destpath = "/opt" packageversion = "%OOOPACKAGEVERSION" +pkg_list_entry = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-base" End Start @@ -179,6 +189,7 @@ vendor = "OpenOffice.org" description = "Legacy filters (e.g. StarOffice 5.2) for OpenOffice.org %OOOBASEVERSION, language %LANGUAGESTRING" destpath = "/opt" packageversion = "%OOOPACKAGEVERSION" +pkg_list_entry = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-binfilter" End Start @@ -194,4 +205,5 @@ vendor = "OpenOffice.org" description = "Online update language module for OpenOffice.org %OOOBASEVERSION, language %LANGUAGESTRING" destpath = "/opt" packageversion = "%OOOPACKAGEVERSION" +pkg_list_entry = "%BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-onlineupdate" End diff --git a/setup_native/source/packinfo/packinfo_ure.txt b/setup_native/source/packinfo/packinfo_ure.txt index 5f5801742ae1..425243e9bfd7 100755 --- a/setup_native/source/packinfo/packinfo_ure.txt +++ b/setup_native/source/packinfo/packinfo_ure.txt @@ -32,6 +32,7 @@ Start module = "gid_Module_Root" solarispackagename = "%SOLSUREPACKAGEPREFIX-ure" +solarisrequires = "SUNWzlibr" packagename = "%UREPACKAGEPREFIX-ure" copyright = "2005-2009 by OpenOffice.org" solariscopyright = "solariscopyrightfile" @@ -44,6 +45,7 @@ End Start module = "gid_Module_Root_Ure_Hidden" solarispackagename = "%SOLSUREPACKAGEPREFIX-ure" +solarisrequires = "SUNWzlibr" packagename = "%UREPACKAGEPREFIX-ure" copyright = "2005-2009 by OpenOffice.org" solariscopyright = "solariscopyrightfile" diff --git a/setup_native/source/packinfo/shellscripts_extensions.txt b/setup_native/source/packinfo/shellscripts_extensions.txt index f756869510fe..2d9056b6b153 100755 --- a/setup_native/source/packinfo/shellscripts_extensions.txt +++ b/setup_native/source/packinfo/shellscripts_extensions.txt @@ -22,20 +22,32 @@ else mkdir "$$INSTDIR" fi +# +# Need to check diskless service install and make sure use the correct unpkg +# +DISKLESS_SRVC=`echo $$BASEDIR | /usr/bin/grep export/Solaris_[1-9][0-9]/usr_$${ARCH}.all` +if [ "$$DISKLESS_SRVC" ]; then + UNOPKG=/export/Solaris_11/usr_`uname -p`.all/opt/staroffice9/program/unopkg + POSTRUN=$$PKG_INSTALL_ROOT/usr_`uname -p`.all/usr/lib/postrun + CLIENT_BASEDIR=$$PKG_INSTALL_ROOT/usr_$${ARCH}.all +else + UNOPKG=$$BASEDIR/PRODUCTDIRECTORYNAME/program/unopkg + POSTRUN=$$PKG_INSTALL_ROOT/usr/lib/postrun +fi # Use postrun command on Solaris where available (OpenSolaris) -if [ -x $$PKG_INSTALL_ROOT/usr/lib/postrun ]; then +if [ -x $$POSTRUN ]; then ( echo "test -x \"$$CLIENT_BASEDIR/PRODUCTDIRECTORYNAME/program/unopkg\" || exit 0" echo "umask 022" echo "\"$$CLIENT_BASEDIR/PRODUCTDIRECTORYNAME/program/unopkg\" add --shared --bundled \"$$CLIENT_BASEDIR/PRODUCTDIRECTORYNAME/share/extension/install/${OXTFILENAME}\" \"-env:UserInstallation=file:////$$INSTDIR\" '-env:UNO_JAVA_JFW_INSTALL_DATA=\$$OOO_BASE_DIR/share/config/javasettingsunopkginstall.xml' '-env:JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY=1'" -) | $$PKG_INSTALL_ROOT/usr/lib/postrun -b -c UNOPKG +) | $$POSTRUN -b -c UNOPKG if [ "$$?" != "0" ]; then echo "\nERROR: Installation of UNO extension ${OXTFILENAME}" - echo " through $$PKG_INSTALL_ROOT/usr/lib/postrun failed." + echo " through $$POSTRUN failed." exit 1 fi else # No postrun available, try running unopkg directly - "$$BASEDIR/PRODUCTDIRECTORYNAME/program/unopkg" add --shared --bundled "$$BASEDIR/PRODUCTDIRECTORYNAME/share/extension/install/${OXTFILENAME}" "-env:UserInstallation=file:////$$INSTDIR" '-env:UNO_JAVA_JFW_INSTALL_DATA=$$OOO_BASE_DIR/share/config/javasettingsunopkginstall.xml' '-env:JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY=1' + "$$UNOPKG" add --shared --bundled "$$BASEDIR/PRODUCTDIRECTORYNAME/share/extension/install/${OXTFILENAME}" "-env:UserInstallation=file:////$$INSTDIR" '-env:UNO_JAVA_JFW_INSTALL_DATA=$$OOO_BASE_DIR/share/config/javasettingsunopkginstall.xml' '-env:JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY=1' if [ "$$?" != "0" ]; then echo "\nERROR: Installation of UNO extension ${OXTFILENAME} failed." test "$$BASEDIR" = "$$CLIENT_BASEDIR" || echo "ERROR: alternate root install requires SUNWpostrun package to be installed" @@ -48,7 +60,7 @@ if [ -n "$$INSTDIR" ]; then rm -rf "$$INSTDIR" fi -exit 0 +exit 0 END %preremove << END @@ -79,7 +91,7 @@ if [ -x $$PKG_INSTALL_ROOT/usr/lib/postrun ]; then echo "umask 022" echo "\"$$CLIENT_BASEDIR/PRODUCTDIRECTORYNAME/program/unopkg\" remove --shared --bundled \"${OXTFILENAME}\" \"-env:UserInstallation=file:////$$INSTDIR\" '-env:UNO_JAVA_JFW_INSTALL_DATA=\$$OOO_BASE_DIR/share/config/javasettingsunopkginstall.xml' '-env:JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY=1'" echo "rm -rf \"$$INSTDIR\"" -) | $$PKG_INSTALL_ROOT/usr/lib/postrun -b -c UNOPKG +) | $$PKG_INSTALL_ROOT/usr/lib/postrun -c UNOPKG else # No postrun available, try running unopkg directly test -x $$BASEDIR/PRODUCTDIRECTORYNAME/program/unopkg || exit 0 diff --git a/setup_native/source/win32/customactions/rebase/makefile.mk b/setup_native/source/win32/customactions/rebase/makefile.mk new file mode 100644 index 000000000000..6694c8cde6cc --- /dev/null +++ b/setup_native/source/win32/customactions/rebase/makefile.mk @@ -0,0 +1,94 @@ +#************************************************************************* +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# Copyright 2008 by Sun Microsystems, Inc. +# +# OpenOffice.org - a multi-platform office productivity suite +# +# $RCSfile: makefile.mk,v $ +# +# $Revision: 1.7 $ +# +# 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. +# +#************************************************************************* + +PRJ=..$/..$/..$/.. +PRJNAME=setup_native +TARGET=rebase + +# --- Settings ----------------------------------------------------- + +LIBTARGET=NO +ENABLE_EXCEPTIONS=TRUE +NO_DEFAULT_STL=TRUE +DYNAMIC_CRT= +USE_DEFFILE=TRUE +MINGW_NODLL=YES + +.INCLUDE : settings.mk + +.IF "$(USE_SYSTEM_STL)" != "YES" +CFLAGS+=-D_STLP_USE_STATIC_LIB +.ENDIF + +UWINAPILIB= + +# --- Files -------------------------------------------------------- + +.IF "$(GUI)"=="WNT" + +STDSHL += \ + $(ADVAPI32LIB)\ + $(SHELL32LIB)\ + $(MSILIB) + +.IF "$(USE_SYSTEM_STL)" != "YES" +STDSHL += $(LIBSTLPORTST) +.ENDIF + +.IF "$(COM)"=="GCC" +STDSHL+= \ + $(KERNEL32LIB)\ + -lmsvcrt \ + $(PSDK_HOME)$/lib$/imagehlp.lib +.ELSE +STDSHL+= \ + Imagehlp.lib +.ENDIF + +SHL1OBJS = \ + $(SLO)$/rebase.obj + +SHL1TARGET = $(TARGET) +SHL1IMPLIB = i$(TARGET) + +SHL1DEF = $(MISC)$/$(SHL1TARGET).def +SHL1BASE = 0x1c000000 +DEF1NAME=$(SHL1TARGET) +SHL1DEPN=$(SHL1OBJS) +DEF1EXPORTFILE=$(TARGET).dxp + +.ENDIF + +# --- Targets -------------------------------------------------------------- + +.INCLUDE : target.mk + +# ------------------------------------------------------------------------- diff --git a/setup_native/source/win32/customactions/rebase/rebase.cxx b/setup_native/source/win32/customactions/rebase/rebase.cxx new file mode 100644 index 000000000000..4d031bee908a --- /dev/null +++ b/setup_native/source/win32/customactions/rebase/rebase.cxx @@ -0,0 +1,168 @@ +#undef UNICODE +#undef _UNICODE + +#pragma once + +#ifdef _MSC_VER +#pragma warning(push, 1) /* disable warnings within system headers */ +#endif +#define WIN32_LEAN_AND_MEAN +#include <windows.h> +#include <msiquery.h> +#include <imagehlp.h> +#include <tchar.h> +#include <strsafe.h> +#ifdef _MSC_VER +#pragma warning(pop) +#endif + +#include <malloc.h> +#include <time.h> +#include <string> + +const DWORD PE_Signature = 0x00004550; + +#ifdef DEBUG +inline void OutputDebugStringFormat( LPCSTR pFormat, ... ) +{ + CHAR buffer[1024]; + va_list args; + + va_start( args, pFormat ); + StringCchVPrintfA( buffer, sizeof(buffer), pFormat, args ); + OutputDebugStringA( buffer ); +} +#else +static inline void OutputDebugStringFormat( LPCSTR, ... ) +{ +} +#endif + +static bool IsValidHandle( HANDLE handle ) +{ + return NULL != handle && INVALID_HANDLE_VALUE != handle; +} + +static std::string GetMsiProperty(MSIHANDLE handle, const std::string& sProperty) +{ + std::string result; + TCHAR szDummy[1] = TEXT(""); + DWORD nChars = 0; + + if (MsiGetProperty(handle, sProperty.c_str(), szDummy, &nChars) == ERROR_MORE_DATA) + { + DWORD nBytes = ++nChars * sizeof(TCHAR); + LPTSTR buffer = reinterpret_cast<LPTSTR>(_alloca(nBytes)); + ZeroMemory( buffer, nBytes ); + MsiGetProperty(handle, sProperty.c_str(), buffer, &nChars); + result = buffer; + } + return result; +} + +static BOOL rebaseImage( const std::string& filePath, LPVOID address ) +{ + ULONG ulOldImageSize; + ULONG_PTR lpOldImageBase; + ULONG ulNewImageSize; + ULONG_PTR lpNewImageBase = reinterpret_cast<ULONG_PTR>(address); + + BOOL bResult = ReBaseImage( + filePath.c_str(), + "", + TRUE, + FALSE, + FALSE, + 0, + &ulOldImageSize, + &lpOldImageBase, + &ulNewImageSize, + &lpNewImageBase, + (ULONG)time(NULL) ); + + return bResult; +} + +static BOOL rebaseImage( MSIHANDLE /*handle*/, const std::string& sFilePath, LPVOID address ) +{ + std::string mystr; + mystr = "Full file: " + sFilePath; + + BOOL bResult = rebaseImage( sFilePath, address ); + + if ( !bResult ) + { + OutputDebugStringFormat( "Rebasing library %s failed", mystr.c_str() ); + } + + return bResult; +} + +static BOOL rebaseImagesInFolder( MSIHANDLE handle, const std::string& sPath, LPVOID address ) +{ + std::string sDir = sPath; + std::string sPattern = sPath + TEXT("*.dll"); + + WIN32_FIND_DATA aFindFileData; + HANDLE hFind = FindFirstFile( sPattern.c_str(), &aFindFileData ); + + if ( IsValidHandle(hFind) ) + { + BOOL fSuccess = false; + + do + { + std::string sLibFile = sDir + aFindFileData.cFileName; + rebaseImage( handle, sLibFile, address ); + fSuccess = FindNextFile( hFind, &aFindFileData ); + } + while ( fSuccess ); + + FindClose( hFind ); + } + + return ERROR_SUCCESS; +} + +static BOOL rebaseImages( MSIHANDLE handle, LPVOID pAddress ) +{ + std::string sOfficeInstallPath = GetMsiProperty(handle, TEXT("OFFICEINSTALLLOCATION")); + std::string sBasisInstallPath = GetMsiProperty(handle, TEXT("BASISINSTALLLOCATION")); + std::string sUreInstallPath = GetMsiProperty(handle, TEXT("UREINSTALLLOCATION")); + + std::string sBasisDir = sBasisInstallPath + TEXT("program\\"); + std::string sOfficeDir = sOfficeInstallPath + TEXT("program\\"); + std::string sUreDir = sUreInstallPath + TEXT("bin\\"); + + BOOL bResult = rebaseImagesInFolder( handle, sBasisDir, pAddress ); + bResult &= rebaseImagesInFolder( handle, sOfficeDir, pAddress ); + bResult &= rebaseImagesInFolder( handle, sUreDir, pAddress ); + + return bResult; +} + +static BOOL IsServerSystem( MSIHANDLE /*handle*/ ) +{ + OSVERSIONINFOEX osVersionInfoEx; + osVersionInfoEx.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); + GetVersionEx(reinterpret_cast<LPOSVERSIONINFO>(&osVersionInfoEx)); + + if ( osVersionInfoEx.wProductType != VER_NT_WORKSTATION ) + return TRUE; + else + return FALSE; +} + +extern "C" BOOL __stdcall RebaseLibrariesOnProperties( MSIHANDLE handle ) +{ + static LPVOID pDefault = reinterpret_cast<LPVOID>(0x10000000); + + std::string sDontOptimizeLibs = GetMsiProperty(handle, TEXT("DONTOPTIMIZELIBS")); + if ( sDontOptimizeLibs.length() > 0 && sDontOptimizeLibs == "1" ) + return TRUE; + + if ( !IsServerSystem( handle )) + return rebaseImages( handle, pDefault ); + + return TRUE; +} diff --git a/setup_native/source/win32/customactions/rebase/rebase.dxp b/setup_native/source/win32/customactions/rebase/rebase.dxp new file mode 100644 index 000000000000..47ea23951f04 --- /dev/null +++ b/setup_native/source/win32/customactions/rebase/rebase.dxp @@ -0,0 +1 @@ +RebaseLibrariesOnProperties
|