summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--basctl/source/basicide/basidesh.src2
-rw-r--r--basctl/source/basicide/basobj2.cxx25
-rw-r--r--basctl/source/basicide/bastype3.hxx18
-rw-r--r--basctl/source/basicide/bastypes.cxx57
-rw-r--r--basctl/source/basicide/moduldl2.cxx31
-rw-r--r--basctl/source/basicide/moduldlg.hxx4
-rw-r--r--basctl/source/dlged/dlgedobj.cxx27
-rw-r--r--basctl/source/inc/basobj.hxx1
-rw-r--r--basctl/source/inc/bastypes.hxx12
-rw-r--r--basctl/source/inc/dlgedobj.hxx4
-rwxr-xr-xcrashrep/source/unx/main.cxx4
-rwxr-xr-xcrashrep/source/win32/soreport.cpp54
-rw-r--r--extensions/source/update/check/updatecheckjob.cxx62
-rw-r--r--package/inc/Inflater.hxx4
-rw-r--r--package/source/xstor/owriteablestream.cxx59
-rw-r--r--package/source/xstor/owriteablestream.hxx2
-rw-r--r--package/source/zipapi/Inflater.cxx27
-rw-r--r--package/source/zipapi/XUnbufferedStream.cxx6
-rw-r--r--setup_native/prj/build.lst1
-rw-r--r--setup_native/source/java/javaversion2.dat26
-rw-r--r--setup_native/source/packinfo/package_names_ext.txt4
-rwxr-xr-xsetup_native/source/packinfo/packinfo_office.txt16
-rwxr-xr-xsetup_native/source/packinfo/packinfo_office_lang.txt12
-rwxr-xr-xsetup_native/source/packinfo/packinfo_ure.txt2
-rwxr-xr-xsetup_native/source/packinfo/shellscripts_extensions.txt24
-rw-r--r--setup_native/source/win32/customactions/rebase/makefile.mk94
-rw-r--r--setup_native/source/win32/customactions/rebase/rebase.cxx168
-rw-r--r--setup_native/source/win32/customactions/rebase/rebase.dxp1
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? Möchten Sie das Makro XX löschen ? : M÷chten Sie das Makro XX l÷schen ? */
- 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 c00037cf8cab..3b64b11b9abc 100644
--- a/basctl/source/basicide/bastypes.cxx
+++ b/basctl/source/basicide/bastypes.cxx
@@ -484,24 +484,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 )
{
@@ -534,34 +516,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;
@@ -803,11 +757,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 )
@@ -839,12 +788,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 ba1ac9c57068..0c542ac405ad 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
{
@@ -264,7 +254,6 @@ private:
String m_aLibName;
public:
- LibInfoKey();
LibInfoKey( const ScriptDocument& rDocument, const String& rLibName );
~LibInfoKey();
@@ -287,7 +276,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