[Libreoffice-commits] .: doc/splash.txt patches/dev300

Michael Meeks mmeeks at kemper.freedesktop.org
Tue Oct 12 07:37:36 PDT 2010


 doc/splash.txt                                  |    4 
 patches/dev300/apply                            |   33 
 patches/dev300/hack-readd-GetStringParam.diff   |   40 
 patches/dev300/unxsplash-3layer.diff            |   33 
 patches/dev300/unxsplash-bmp-alias.diff         |   79 
 patches/dev300/unxsplash-finish-on-hangup.diff  |   22 
 patches/dev300/unxsplash-install-bmp-intro.diff |   19 
 patches/dev300/unxsplash-new-osl-pipe-slot.diff |   21 
 patches/dev300/unxsplash-new-osl-pipe.diff      |  182 -
 patches/dev300/unxsplash-rework.diff            | 2378 ------------------------
 patches/dev300/unxsplash-rpath.diff             |   19 
 patches/dev300/unxsplash-secondstart.diff       |   62 
 12 files changed, 4 insertions(+), 2888 deletions(-)

New commits:
commit f98eb1a1519307aa4456009ee4c3bd08194c8e60
Author: Michael Meeks <michael.meeks at novell.com>
Date:   Tue Oct 12 15:36:36 2010 +0100

    Remove quickstarter pieces - merged up-stream

diff --git a/doc/splash.txt b/doc/splash.txt
index 81a7828..9f740b9 100644
--- a/doc/splash.txt
+++ b/doc/splash.txt
@@ -9,3 +9,7 @@ Changes / complexity in splash branding
 * The new 'shell' code is simple too
 	+ it looks in program/shell for it's artwork
 	+ I added a README.txt to default_images to explain the code locations
+
+* The new unx quick-starter needs work:
+	+ needs to load .png files ...
+	+ ergo has to be enabled per distro, not in generic builds
diff --git a/patches/dev300/apply b/patches/dev300/apply
index 64f3da3..320cda5 100644
--- a/patches/dev300/apply
+++ b/patches/dev300/apply
@@ -438,34 +438,6 @@ gnome-vfs-locking-config_office.diff, i#91151, jholesov
 # (up-stream does not like it, because it adds dependency to VCL in URE)
 # FIXME dev300-m77 gnome-vfs-late-init.diff, i#84137, jholesov # FIXME careful, double check that we haven't lost anything
 
-[ QuickStarter ]
-# FIXME: unxsplash-rework needs this function which was removed in m13
-# due to being unused. fix properly.
-hack-readd-GetStringParam.diff
-
-unxsplash-rework.diff, i#60696, michael/jholesov
-
-# handling of osl pipe has changed, see i#84045
-unxsplash-new-osl-pipe.diff, i#60696, jholesov
-
-# fix the slot: handling again :-(
-unxsplash-new-osl-pipe-slot.diff, i#60696, n#375529, jholesov
-
-# when OOo fails during startup, don't loop endlessly
-unxsplash-finish-on-hangup.diff, i#60696, n#357659, jholesov
-
-# the 'three layer OOo' needs rpath
-unxsplash-rpath.diff, i#60696, jholesov
-
-# the OSL_PIPE protocol has changed thanks to 3-layer OOo again :-(
-unxsplash-3layer.diff, i#60696, jholesov
-
-# fix bitmap reading; the lines are aliased to 4 bytes
-unxsplash-bmp-alias.diff, i#60696, jholesov
-
-# FIXME: we need to install also the intro.bmp because the splash supports only the bmp file format
-unxsplash-install-bmp-intro.diff, pmladek
-
 [ CalcFixes ]
 
 # fix incorrect export of combo boxes, by adding two empty bytes to make Excel
@@ -875,10 +847,6 @@ system-python-ure-bootstrap.diff, deb#501028, i#90701
 pyuno-ooodir.diff, i#90701
 system-python-uno-path.diff, i#97629
 
-[ QuickStarter ]
-# Don't run pagein / javaldx the second time - it's a madness ...
-unxsplash-secondstart.diff
-
 [ LiberationFontsOnWindows ]
 
 # Use Liberation fonts on Windows, too
@@ -898,7 +866,6 @@ about-build-ver-readability.diff, i#68590, tml
 
 
 [ AddressBooks ]
-
 # Evolution should also be default database(n#66217).
 default-evolution-database.diff, michael
 # Mailmerge column mapping by default (n#73627)
diff --git a/patches/dev300/hack-readd-GetStringParam.diff b/patches/dev300/hack-readd-GetStringParam.diff
deleted file mode 100644
index 36405ea..0000000
--- a/patches/dev300/hack-readd-GetStringParam.diff
+++ /dev/null
@@ -1,40 +0,0 @@
----
- desktop/source/app/cmdlineargs.cxx |    8 ++++++++
- desktop/source/app/cmdlineargs.hxx |    2 ++
- 2 files changed, 10 insertions(+), 0 deletions(-)
-
-diff --git desktop/source/app/cmdlineargs.cxx desktop/source/app/cmdlineargs.cxx
-index c142c5f..b4c17d8 100644
---- desktop/source/app/cmdlineargs.cxx
-+++ desktop/source/app/cmdlineargs.cxx
-@@ -621,6 +621,14 @@ void CommandLineArgs::SetBoolParam( BoolParam eParam, sal_Bool bNewValue )
-     m_aBoolParams[eParam] = bNewValue;
- }
- 
-+const rtl::OUString& CommandLineArgs::GetStringParam( StringParam eParam ) const
-+{
-+       osl::MutexGuard  aMutexGuard( m_aMutex );
-+
-+       OSL_ASSERT( ( eParam >= 0 && eParam < CMD_STRINGPARAM_COUNT ) );
-+       return m_aStrParams[eParam];
-+}
-+
- sal_Bool CommandLineArgs::IsMinimized() const
- {
-     osl::MutexGuard  aMutexGuard( m_aMutex );
-diff --git desktop/source/app/cmdlineargs.hxx desktop/source/app/cmdlineargs.hxx
-index 569dd5c..22fe212 100644
---- desktop/source/app/cmdlineargs.hxx
-+++ desktop/source/app/cmdlineargs.hxx
-@@ -124,6 +124,8 @@ class CommandLineArgs
-         // generic methods to access parameter
-         void					SetBoolParam( BoolParam eParam, sal_Bool bNewValue );
- 
-+        const rtl::OUString&    GetStringParam( StringParam eParam ) const;
-+
-         // Access to bool parameters
-         sal_Bool				IsMinimized() const;
-         sal_Bool				IsInvisible() const;
--- 
-1.7.0.1
-
diff --git a/patches/dev300/unxsplash-3layer.diff b/patches/dev300/unxsplash-3layer.diff
deleted file mode 100644
index 73e912f..0000000
--- a/patches/dev300/unxsplash-3layer.diff
+++ /dev/null
@@ -1,33 +0,0 @@
----
- desktop/unx/source/start.c |   15 +++++++++++++++
- 1 files changed, 15 insertions(+), 0 deletions(-)
-
-diff --git desktop/unx/source/start.c desktop/unx/source/start.c
-index f7b762e..b3a6ccb 100644
---- desktop/unx/source/start.c
-+++ desktop/unx/source/start.c
-@@ -315,6 +315,21 @@ send_args( int fd, rtl_uString *pCwdPath )
-             rtl_uString_getLength( pBuffer ),
-             RTL_CONSTASCII_STRINGPARAM( "InternalIPC::Arguments" ) );
- 
-+    if ( rtl_uString_getLength( pEscapedCwdPath ) )
-+    {
-+    rtl_uStringbuffer_insert_ascii( &pBuffer, &nCapacity,
-+        rtl_uString_getLength( pBuffer ),
-+        RTL_CONSTASCII_STRINGPARAM( "1" ) );
-+    rtl_uStringbuffer_insert( &pBuffer, &nCapacity,
-+                rtl_uString_getLength( pBuffer ),
-+                rtl_uString_getStr( pEscapedCwdPath ),
-+                rtl_uString_getLength( pEscapedCwdPath ) );
-+    }
-+    else
-+    rtl_uStringbuffer_insert_ascii( &pBuffer, &nCapacity,
-+        rtl_uString_getLength( pBuffer ),
-+        RTL_CONSTASCII_STRINGPARAM( "0" ) );
-+
-     sal_Bool bDontConvertNext = sal_False;
-     sal_uInt32 nArg;
-     sal_uInt32 nArgCount = osl_getCommandArgCount();
--- 
-1.7.0.1
-
diff --git a/patches/dev300/unxsplash-bmp-alias.diff b/patches/dev300/unxsplash-bmp-alias.diff
deleted file mode 100644
index 9875332..0000000
--- a/patches/dev300/unxsplash-bmp-alias.diff
+++ /dev/null
@@ -1,79 +0,0 @@
----
- desktop/unx/source/splashx.c |   12 +++++++-----
- 1 files changed, 7 insertions(+), 5 deletions(-)
-
-diff --git desktop/unx/source/splashx.c desktop/unx/source/splashx.c
-index b3b6da0..c792cc0 100644
---- desktop/unx/source/splashx.c
-+++ desktop/unx/source/splashx.c
-@@ -65,6 +65,7 @@ static Visual *visual = NULL;
- 
- static int width = WINDOW_WIDTH;
- static int height = WINDOW_HEIGHT;
-+static int alias = 0;
- 
- static Colormap color_map;
- static Window win;
-@@ -83,7 +84,7 @@ static color_t framecol = { 0xD3, 0xD3, 0xD3 };
- static XColor barcolor;
- static XColor framecolor;
- 
--static color_t *bitmap = NULL;
-+static char *bitmap = NULL;
- 
- #define BMP_HEADER_LEN 14
- #define WIN_INFO_LEN 40
-@@ -120,7 +121,7 @@ int splash_load_bmp( char *filename )
-     if ( read( fd, file_header, BMP_HEADER_LEN ) != BMP_HEADER_LEN || file_header[0] != 'B' || file_header[1] != 'M' )
-         LOAD_FAILURE( "Not a bitmap.\n" );
- 
--    int file_size = UINT32( file_header + 2 );
-+    //int file_size = UINT32( file_header + 2 );
- 
-     char info_header[ WIN_INFO_LEN ];
-     if ( read( fd, info_header, 4 ) != 4 )
-@@ -135,6 +136,7 @@ int splash_load_bmp( char *filename )
- 
-     width = UINT32( info_header + 4 );
-     height = UINT32( info_header + 8 );
-+    alias = width % 4;
- 
-     int bits = UINT16( info_header + 14 );
-     int compression = UINT16( info_header + 16 );
-@@ -145,7 +147,7 @@ int splash_load_bmp( char *filename )
-     if ( compression != 0 )
-         LOAD_FAILURE( "Just uncompressed bitmaps are supported.\n" );
- 
--    size_t bitmap_size = width * height * 3;
-+    ssize_t bitmap_size = width * height * 3 + alias * height;
-     bitmap = malloc( bitmap_size );
-     if ( bitmap == NULL )
-         LOAD_FAILURE( "Cannot allocate memory for the data.\n" );
-@@ -280,6 +282,7 @@ static void create_pixmap()
-             for ( y = 0; y < height; ++y ) \
-             { \
-                 unsigned long red_delta = 0, green_delta = 0, blue_delta = 0; \
-+                color_t *in = (color_t *)( bitmap + y * ( width * 3 + alias ) ); \
-                 for ( x = 0; x < width; ++x, ++in  ) \
-                 { \
-                     unsigned long red   = in->r + red_delta; \
-@@ -304,7 +307,6 @@ static void create_pixmap()
-             } \
-         }
- 
--        color_t *in = bitmap;
-         char *out = data;
- 
-         if ( bpp == 32 )
-@@ -371,7 +373,7 @@ static void create_pixmap()
-         int x, y;
-         for ( y = 0; y < height; ++y )
-         {
--            color_t *color = bitmap + y * width;
-+            color_t *color = (color_t *)( bitmap + y * ( width * 3 + alias ) );
- 
-             int delta = 0;
-             for ( x = 0; x < width; ++x, ++color )
--- 
-1.7.0.1
-
diff --git a/patches/dev300/unxsplash-finish-on-hangup.diff b/patches/dev300/unxsplash-finish-on-hangup.diff
deleted file mode 100644
index 1d1244b..0000000
--- a/patches/dev300/unxsplash-finish-on-hangup.diff
+++ /dev/null
@@ -1,22 +0,0 @@
----
- desktop/unx/source/start.c |    4 +++-
- 1 files changed, 3 insertions(+), 1 deletions(-)
-
-diff --git desktop/unx/source/start.c desktop/unx/source/start.c
-index 42c7bc3..f7b762e 100644
---- desktop/unx/source/start.c
-+++ desktop/unx/source/start.c
-@@ -569,7 +569,9 @@ show_splash( int status_fd )
- 
-         /* read from pipe if data available */
-         nRetval = poll( &aPfd, 1, 50 );
--        if ( nRetval > 0 )
-+        if ( aPfd.revents & ( POLLERR | POLLHUP | POLLNVAL ) )
-+            bFinish = sal_True;
-+        else if ( nRetval > 0 )
-             bFinish = !read_percent( status_fd, &nPercent );
-         else if ( nRetval < 0 )
-             bFinish = sal_True;
--- 
-1.7.0.1
-
diff --git a/patches/dev300/unxsplash-install-bmp-intro.diff b/patches/dev300/unxsplash-install-bmp-intro.diff
deleted file mode 100644
index f062b08..0000000
--- a/patches/dev300/unxsplash-install-bmp-intro.diff
+++ /dev/null
@@ -1,19 +0,0 @@
----
- desktop/zipintro/makefile.mk |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git desktop/zipintro/makefile.mk desktop/zipintro/makefile.mk
-index fef106d..488e956 100644
---- desktop/zipintro/makefile.mk
-+++ desktop/zipintro/makefile.mk
-@@ -45,6 +45,7 @@ ZIP3LIST= \
-     $(null,$(INTRO_BITMAPS) $(MISC)$/ooo_custom_images$/nologo$/introabout$/intro.png $(INTRO_BITMAPS)) \
-     $(null,$(ABOUT_BITMAPS) $(MISC)$/$(RSCDEFIMG)$/introabout$/about.png $(ABOUT_BITMAPS))
- ZIP4LIST= \
-+    $(null,$(INTRO_BITMAPS) $(MISC)$/$(RSCDEFIMG)$/introabout$/intro.bmp $(INTRO_BITMAPS)) \
-     $(null,$(INTRO_BITMAPS) $(MISC)$/$(RSCDEFIMG)$/introabout$/intro.png $(INTRO_BITMAPS)) \
-     $(null,$(ABOUT_BITMAPS) $(MISC)$/$(RSCDEFIMG)$/introabout$/about.png $(ABOUT_BITMAPS))
- ZIP5LIST= \
--- 
-1.7.0.1
-
diff --git a/patches/dev300/unxsplash-new-osl-pipe-slot.diff b/patches/dev300/unxsplash-new-osl-pipe-slot.diff
deleted file mode 100644
index 6c44722..0000000
--- a/patches/dev300/unxsplash-new-osl-pipe-slot.diff
+++ /dev/null
@@ -1,21 +0,0 @@
----
- desktop/unx/source/start.c |    3 ++-
- 1 files changed, 2 insertions(+), 1 deletions(-)
-
-diff --git desktop/unx/source/start.c desktop/unx/source/start.c
-index c48cfff..42c7bc3 100644
---- desktop/unx/source/start.c
-+++ desktop/unx/source/start.c
-@@ -331,7 +331,8 @@ send_args( int fd, rtl_uString *pCwdPath )
- 
-         // this is not a param, we have to prepend filenames with file://
-         // FIXME: improve the check
--        if ( pTmp->buffer[0] != (sal_Unicode)'-' )
-+        if ( ( pTmp->buffer[0] != (sal_Unicode)'-' ) &&
-+             ( rtl_ustr_indexOfAscii_WithLength( pTmp->buffer, pTmp->length, "slot:", 5 /* length */ ) ) )
-         {
-             sal_Int32 nFirstColon = rtl_ustr_indexOfChar_WithLength( pTmp->buffer, pTmp->length, ':' );
-             sal_Int32 nFirstSlash = rtl_ustr_indexOfChar_WithLength( pTmp->buffer, pTmp->length, '/' );
--- 
-1.7.0.1
-
diff --git a/patches/dev300/unxsplash-new-osl-pipe.diff b/patches/dev300/unxsplash-new-osl-pipe.diff
deleted file mode 100644
index 9a8fc64..0000000
--- a/patches/dev300/unxsplash-new-osl-pipe.diff
+++ /dev/null
@@ -1,182 +0,0 @@
----
- desktop/unx/source/start.c |  105 +++++++++++++++++++++++++++++++++++++++-----
- 1 files changed, 94 insertions(+), 11 deletions(-)
-
-diff --git desktop/unx/source/start.c desktop/unx/source/start.c
-index a42a286..c48cfff 100644
---- desktop/unx/source/start.c
-+++ desktop/unx/source/start.c
-@@ -49,8 +49,10 @@
- 
- #include <osl/nlsupport.h>
- #include <osl/process.h>
-+#include <osl/thread.h>
- #include <rtl/bootstrap.h>
- #include <rtl/digest.h>
-+#include <rtl/ustrbuf.h>
- #include <sal/main.h>
- 
- #include "splashx.h"
-@@ -131,7 +133,7 @@ get_md5hash( rtl_uString *pText )
-         return NULL;
- 
-     rtlDigest digest = rtl_digest_create( rtl_Digest_AlgorithmMD5 );
--    if ( digest <= 0 )
-+    if ( digest == 0 )
-         return NULL;
- 
-     sal_uInt32 md5_key_len = rtl_digest_queryLength( digest );
-@@ -254,33 +256,108 @@ connect_pipe( rtl_uString *pPipePath )
-     return fd;
- }
- 
-+/* Escape: "," -> "\\,", "\0" -> "\\0", "\\" -> "\\\\" */
-+static rtl_uString *
-+escape_path( rtl_uString *pToEscape )
-+{
-+    rtl_uString *pBuffer = NULL;
-+    sal_Int32 nCapacity = 1000;
-+
-+    rtl_uString_new_WithLength( &pBuffer, nCapacity );
-+
-+    sal_Int32 i = 0;
-+    sal_Int32 nEscapeLength = rtl_uString_getLength( pToEscape );
-+    for ( ; i < nEscapeLength; ++i )
-+    {
-+        sal_Unicode c = pToEscape->buffer[i];
-+        switch ( c )
-+        {
-+            case (sal_Unicode)'\0':
-+                rtl_uStringbuffer_insert_ascii( &pBuffer, &nCapacity,
-+                        rtl_uString_getLength( pBuffer ),
-+                        RTL_CONSTASCII_STRINGPARAM( "\\0" ) );
-+                break;
-+            case (sal_Unicode)',':
-+                rtl_uStringbuffer_insert_ascii( &pBuffer, &nCapacity,
-+                        rtl_uString_getLength( pBuffer ),
-+                        RTL_CONSTASCII_STRINGPARAM( "\\," ) );
-+                break;
-+            case (sal_Unicode)'\\':
-+                rtl_uStringbuffer_insert_ascii( &pBuffer, &nCapacity,
-+                        rtl_uString_getLength( pBuffer ),
-+                        RTL_CONSTASCII_STRINGPARAM( "\\\\" ) );
-+                break;
-+            default:
-+                rtl_uStringbuffer_insert( &pBuffer, &nCapacity,
-+                        rtl_uString_getLength( pBuffer ),
-+                        &c, 1 );
-+        }
-+    }
-+
-+    return pBuffer;
-+}
-+
- /* Send args to the OOo instance (using the 'fd' file descriptor) */
- static sal_Bool
--send_args( int fd )
-+send_args( int fd, rtl_uString *pCwdPath )
- {
-     rtl_uString *pBuffer = NULL, *pTmp = NULL;
--    sal_Int32 nCapacity = 100;
-+    sal_Int32 nCapacity = 1000;
-     rtl_String *pOut = NULL;
-     sal_Bool bResult;
-     size_t nLen;
-+    rtl_uString *pEscapedCwdPath = escape_path( pCwdPath );
- 
-     rtl_uString_new_WithLength( &pBuffer, nCapacity );
-     rtl_uString_new( &pTmp );
- 
-+    rtl_uStringbuffer_insert_ascii( &pBuffer, &nCapacity,
-+            rtl_uString_getLength( pBuffer ),
-+            RTL_CONSTASCII_STRINGPARAM( "InternalIPC::Arguments" ) );
-+
-+    sal_Bool bDontConvertNext = sal_False;
-     sal_uInt32 nArg;
-     sal_uInt32 nArgCount = osl_getCommandArgCount();
-     for ( nArg = 0; nArg < nArgCount; ++nArg )
-     {
-+        rtl_uStringbuffer_insert_ascii( &pBuffer, &nCapacity,
-+                rtl_uString_getLength( pBuffer ),
-+                ",", 1 );
-+
-         osl_getCommandArg( nArg, &pTmp );
- 
-+        if ( rtl_uString_getLength( pTmp ) == 0 )
-+            continue;
-+
-+        // this is not a param, we have to prepend filenames with file://
-+        // FIXME: improve the check
-+        if ( pTmp->buffer[0] != (sal_Unicode)'-' )
-+        {
-+            sal_Int32 nFirstColon = rtl_ustr_indexOfChar_WithLength( pTmp->buffer, pTmp->length, ':' );
-+            sal_Int32 nFirstSlash = rtl_ustr_indexOfChar_WithLength( pTmp->buffer, pTmp->length, '/' );
-+
-+            // check that pTmp is not an URI yet
-+            if ( nFirstColon < 1 || ( nFirstSlash != nFirstColon + 1 ) )
-+            {
-+                // some of the switches (currently just -pt) don't want to
-+                // have the filenames as URIs
-+                if ( !bDontConvertNext )
-+                    osl_getAbsoluteFileURL( pCwdPath, pTmp, &pTmp );
-+            }
-+        }
-+
-+        // don't convert filenames with some of the switches
-+        // (currently just -pt)
-+        bDontConvertNext = !rtl_ustr_ascii_compareIgnoreAsciiCase( pTmp->buffer, "-pt" );
-+
-+        rtl_uString *pEscapedTmp = escape_path( pTmp );
-+
-         rtl_uStringbuffer_insert( &pBuffer, &nCapacity,
-                 rtl_uString_getLength( pBuffer ),
--                rtl_uString_getStr( pTmp ),
--                rtl_uString_getLength( pTmp ) );
-+                rtl_uString_getStr( pEscapedTmp ),
-+                rtl_uString_getLength( pEscapedTmp ) );
- 
--        rtl_uStringbuffer_insert_ascii( &pBuffer, &nCapacity,
--                rtl_uString_getLength( pBuffer ),
--                "|", 1 );
-+        rtl_uString_release( pEscapedTmp );
-     }
- 
-     ustr_debug( "Pass args", pBuffer );
-@@ -288,9 +365,10 @@ send_args( int fd )
-     pOut = ustr_to_str( pBuffer );
- 
-     nLen = rtl_string_getLength( pOut ) + 1;
--    bResult = ( write( fd, rtl_string_getStr( pOut ), nLen ) == nLen );
-+    bResult = ( write( fd, rtl_string_getStr( pOut ), nLen ) == (ssize_t) nLen );
- 
-     /* cleanup */
-+    rtl_uString_release( pEscapedCwdPath );
-     rtl_uString_release( pBuffer );
-     rtl_uString_release( pTmp );
-     rtl_string_release( pOut );
-@@ -424,7 +502,7 @@ read_percent( int status_fd, int *pPercent )
- {
-     static char pBuffer[BUFFER_LEN + 1];
-     static char *pNext = pBuffer;
--    static size_t nRead = 0;
-+    static ssize_t nRead = 0;
- 
-     char *pBegin;
-     char *pIter;
-@@ -683,7 +761,12 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS( argc, argv )
-     pPipePath = get_pipe_path( pAppPath );
- 
-     if ( ( fd = connect_pipe( pPipePath ) ) >= 0 )
--        bSentArgs = send_args( fd );
-+    {
-+        rtl_uString *pCwdPath = NULL;
-+        osl_getProcessWorkingDir( &pCwdPath );
-+
-+        bSentArgs = send_args( fd, pCwdPath );
-+    }
- #if OSL_DEBUG_LEVEL > 0
-     else
-         ustr_debug( "Failed to connect to pipe", pPipePath );
--- 
-1.7.0.1
-
diff --git a/patches/dev300/unxsplash-rework.diff b/patches/dev300/unxsplash-rework.diff
deleted file mode 100644
index e72dce7..0000000
--- a/patches/dev300/unxsplash-rework.diff
+++ /dev/null
@@ -1,2378 +0,0 @@
----
- desktop/inc/app.hxx                       |    1 +
- desktop/prj/build.lst                     |    4 +-
- desktop/prj/d.lst                         |    1 +
- desktop/scripts/soffice.sh                |   10 +
- desktop/source/app/app.cxx                |   36 +-
- desktop/source/app/cmdlineargs.cxx        |    8 +-
- desktop/source/app/cmdlineargs.hxx        |    1 +
- desktop/unx/source/makefile.mk            |   38 ++
- desktop/unx/source/splashx.c              |  570 +++++++++++++++++++++++
- desktop/unx/source/splashx.h              |   71 +++
- desktop/unx/source/start.c                |  719 +++++++++++++++++++++++++++++
- desktop/unx/splash/exports.map            |   10 +
- desktop/unx/splash/makefile.mk            |   72 +++
- desktop/unx/splash/services_unxsplash.cxx |  177 +++++++
- desktop/unx/splash/unxsplash.cxx          |  192 ++++++++
- desktop/unx/splash/unxsplash.hxx          |  117 +++++
- scp2/source/ooo/common_brand.scp          |    9 +
- scp2/source/ooo/file_library_ooo.scp      |    3 +
- vcl/inc/vcl/svapp.hxx                     |    1 +
- vcl/source/app/svapp.cxx                  |    5 +
- vcl/source/window/window.cxx              |   13 +-
- 21 files changed, 2042 insertions(+), 16 deletions(-)
- create mode 100644 desktop/unx/source/makefile.mk
- create mode 100644 desktop/unx/source/splashx.c
- create mode 100644 desktop/unx/source/splashx.h
- create mode 100644 desktop/unx/source/start.c
- create mode 100644 desktop/unx/splash/exports.map
- create mode 100644 desktop/unx/splash/makefile.mk
- create mode 100644 desktop/unx/splash/services_unxsplash.cxx
- create mode 100644 desktop/unx/splash/unxsplash.cxx
- create mode 100644 desktop/unx/splash/unxsplash.hxx
-
-diff --git desktop/inc/app.hxx desktop/inc/app.hxx
-index 2eef01f..8b31b93 100644
---- desktop/inc/app.hxx
-+++ desktop/inc/app.hxx
-@@ -87,6 +87,7 @@ class Desktop : public Application
-                                 ~Desktop();
-         virtual void			Main( );
-         virtual void			Init();
-+        virtual void			InitFinished();
-         virtual void			DeInit();
-         virtual BOOL			QueryExit();
-         virtual USHORT			Exception(USHORT nError);
-diff --git desktop/prj/build.lst desktop/prj/build.lst
-index 6f61192..f13bc5f 100644
---- desktop/prj/build.lst
-+++ desktop/prj/build.lst
-@@ -19,6 +19,8 @@ dt	desktop\win32\source\applauncher\ooo	nmake	-	w	dt_applauncher_ooo dt_applaunc
- dt	desktop\win32\source\rebase				nmake	-	w	dt_rebase dt_inc NULL
- dt	desktop\os2\source\applauncher			nmake	-	p	dt_applauncher dt_inc NULL
- dt	desktop\unx\source\officeloader		nmake	-	u	dt_officeloader_unx dt_inc NULL
-+dt     desktop\unx\source                      nmake   -       u       dt_uwrapper     dt_inc NULL
-+dt     desktop\unx\splash                      nmake   -       u       dt_usplash      dt_inc NULL
- dt	desktop\source\pagein					nmake	-	u	dt_pagein dt_inc NULL
- dt	desktop\source\pkgchk\unopkg			nmake	-	all	dt_unopkg dt_dp_misc dt_app dt_inc dt_guiloader.w NULL
- dt	desktop\source\deployment				nmake	-	all	dt_deployment dt_dp_manager dt_dp_registry dt_dp_registry_package dt_dp_registry_executable dt_dp_registry_help dt_dp_registry_script dt_dp_registry_sfwk dt_dp_registry_component dt_dp_registry_configuration dt_dp_unopkg dt_inc dt_dp_misc NULL
-@@ -36,7 +38,7 @@ dt	desktop\source\deployment\registry\configuration	nmake	-	all	dt_dp_registry_c
- dt	desktop\source\deployment\registry\help			nmake	-	all	dt_dp_registry_help dt_inc NULL
- dt	desktop\source\deployment\registry\executable		nmake	-	all	dt_dp_registry_executable dt_inc NULL
- dt	desktop\scripts 						nmake	-	u	dt_scripts dt_inc NULL
--dt	desktop\util							nmake	-	all	dt_util dt_app dt_pagein.u dt_so_comp dt_spl dt_wrapper.w dt_officeloader.w dt_officeloader_unx.u dt_migr dt_rebase.w NULL
-+dt	desktop\util							nmake	-	all	dt_util dt_app dt_pagein.u dt_so_comp dt_spl dt_uwrapper.u dt_usplash.u dt_wrapper.w dt_officeloader.w dt_officeloader_unx.u dt_migr dt_rebase.w NULL
- dt	desktop\zipintro							nmake	-	all	dt_zipintro NULL
- dt  desktop\registry\data\org\openoffice\Office                     nmake   -  all sn_regconfig NULL
- dt  desktop\source\registration\com\sun\star\servicetag\resources   get     -  all sn_svctagres NULL
-diff --git desktop/prj/d.lst desktop/prj/d.lst
-index 92a4853..d934a04 100644
---- desktop/prj/d.lst
-+++ desktop/prj/d.lst
-@@ -10,6 +10,7 @@ mkdir: %_DEST%\bin%_EXT%\odf4ms
- ..\%__SRC%\bin\officeloader.exe %_DEST%\bin%_EXT%\soffice.exe
- ..\%__SRC%\bin\soffice %_DEST%\bin%_EXT%\soffice.bin
- ..\%__SRC%\bin\soffice_mac %_DEST%\bin%_EXT%\soffice
-+..\%__SRC%\bin\oosplash %_DEST%\bin%_EXT%\oosplash.bin
- ..\%__SRC%\bin\so\soffice.bin %_DEST%\bin%_EXT%\so\soffice.bin
- ..\%__SRC%\bin\so\officeloader.exe %_DEST%\bin%_EXT%\so\soffice.exe
- ..\%__SRC%\bin\so\soffice %_DEST%\bin%_EXT%\so\soffice.bin
-diff --git desktop/scripts/soffice.sh desktop/scripts/soffice.sh
-index af6a9df..dca65e0 100644
---- desktop/scripts/soffice.sh
-+++ desktop/scripts/soffice.sh
-@@ -114,6 +114,16 @@ if [ -f /etc/adabasrc ]; then
-   . /etc/adabasrc
- fi
- 
-+# test for availability of the fast external splash
-+for arg in $@; do
-+    if [ "$arg" = "-nologo" -o "$arg" = "-no-oosplash" ]; then
-+        no_oosplash=y
-+    fi
-+done
-+if [ "$sd_binary" = "soffice.bin" -a -x "$sd_prog/oosplash.bin" ] && [ "$no_oosplash" != "y" ] ; then
-+    sd_binary="oosplash.bin"
-+fi
-+
- # execute soffice binary
- "$sd_prog/$sd_binary" "$@" &
- trap 'kill -9 $!' TERM
-diff --git desktop/source/app/app.cxx desktop/source/app/app.cxx
-index 1cbb890..4be2222 100644
---- desktop/source/app/app.cxx
-+++ desktop/source/app/app.cxx
-@@ -523,6 +523,13 @@ void Desktop::Init()
-     }
- }
- 
-+void Desktop::InitFinished()
-+{
-+    RTL_LOGFILE_CONTEXT( aLog, "desktop (cd100003) ::Desktop::InitFinished" );
-+
-+    CloseSplashScreen();
-+}
-+
- void Desktop::DeInit()
- {
-     RTL_LOGFILE_CONTEXT( aLog, "desktop (cd100003) ::Desktop::DeInit" );
-@@ -1251,6 +1258,7 @@ void Desktop::Main()
-     OpenSplashScreen();
-     RTL_LOGFILE_CONTEXT_TRACE( aLog, "desktop (lo119109) Desktop::Main } OpenSplashScreen" );
- 
-+    SetSplashScreenProgress(10);
-     {
-         UserInstall::UserInstallError instErr_fin = UserInstall::finalize();
-         if ( instErr_fin != UserInstall::E_None)
-@@ -1266,7 +1274,7 @@ void Desktop::Main()
-         }
-         // refresh path information
-         utl::Bootstrap::reloadData();
--        SetSplashScreenProgress(25);
-+        SetSplashScreenProgress(20);
-     }
- 
-     Reference< XMultiServiceFactory > xSMgr =
-@@ -1280,7 +1288,7 @@ void Desktop::Main()
-     {
-         RegisterServices( xSMgr );
- 
--        //SetSplashScreenProgress(15);
-+        SetSplashScreenProgress(25);
- 
- #ifndef UNX
-         if ( pCmdLineArgs->IsHelp() ) {
-@@ -1318,7 +1326,7 @@ void Desktop::Main()
-         //  Read the common configuration items for optimization purpose
-         if ( !InitializeConfiguration() ) return;
- 
--        //SetSplashScreenProgress(20);
-+        SetSplashScreenProgress(30);
- 
-         // set static variable to enabled/disable crash reporter
-         retrieveCrashReporterState();
-@@ -1379,10 +1387,10 @@ void Desktop::Main()
- #endif
- 
-         SetDisplayName( aTitle );
--//        SetSplashScreenProgress(30);
-+        SetSplashScreenProgress(35);
-         RTL_LOGFILE_CONTEXT_TRACE( aLog, "{ create SvtPathOptions and SvtLanguageOptions" );
-         pPathOptions.reset( new SvtPathOptions);
--//        SetSplashScreenProgress(40);
-+        SetSplashScreenProgress(40);
- //        pLanguageOptions = new SvtLanguageOptions(sal_True);
- //        SetSplashScreenProgress(45);
-         RTL_LOGFILE_CONTEXT_TRACE( aLog, "} create SvtPathOptions and SvtLanguageOptions" );
-@@ -1479,7 +1487,7 @@ void Desktop::Main()
-                     OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.Desktop" ))), UNO_QUERY );
-                 if (xDesktopFrame.is())
-                 {
--    //                SetSplashScreenProgress(60);
-+                    SetSplashScreenProgress(60);
-                     Reference< XFrame > xBackingFrame;
-                     Reference< ::com::sun::star::awt::XWindow > xContainerWindow;
-     
-@@ -1502,7 +1510,7 @@ void Desktop::Main()
-                         Reference< XController > xBackingComp(
-                             xSMgr->createInstanceWithArguments(OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.StartModule") ), lArgs),
-                             UNO_QUERY);
--    //                    SetSplashScreenProgress(80);
-+                        SetSplashScreenProgress(80);
-                         if (xBackingComp.is())
-                         {
-                             Reference< ::com::sun::star::awt::XWindow > xBackingWin(xBackingComp, UNO_QUERY);
-@@ -1541,7 +1549,7 @@ void Desktop::Main()
-         return;
-     }
-     */
--//    SetSplashScreenProgress(55);
-+    SetSplashScreenProgress(55);
- 
-     SvtFontSubstConfig().Apply();
- 
-@@ -1550,7 +1558,7 @@ void Desktop::Main()
-     aAppearanceCfg.SetApplicationDefaults( this );
-     SvtAccessibilityOptions aOptions;
-     aOptions.SetVCLSettings();
--//    SetSplashScreenProgress(60);
-+    SetSplashScreenProgress(60);
- 
-     if ( !bRestartRequested )
-     {
-@@ -1573,7 +1581,7 @@ void Desktop::Main()
-         // use system window dialogs
-         Application::SetSystemWindowMode( SYSTEMWINDOW_MODE_DIALOG );
-     
--    //    SetSplashScreenProgress(80);
-+        SetSplashScreenProgress(80);
-     
-         if ( !bTerminateRequested && !pCmdLineArgs->IsInvisible() &&
-              !pCmdLineArgs->IsNoQuickstart() )
-@@ -2910,14 +2918,18 @@ void Desktop::OpenSplashScreen()
-         else if ( pCmdLine->IsWeb() )
-             aAppName = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "web" ));
- 
-+        // Which splash to use
-+        OUString aSplashService( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.office.SplashScreen" ));
-+        if ( pCmdLine->GetStringParam( CommandLineArgs::CMD_STRINGPARAM_SPLASHPIPE ).getLength() )
-+            aSplashService = OUString::createFromAscii("com.sun.star.office.PipeSplashScreen");
-+
-         bVisible = sal_True;
-         Sequence< Any > aSeq( 2 );
-         aSeq[0] <<= bVisible;
-         aSeq[1] <<= aAppName;
-         m_rSplashScreen = Reference<XStatusIndicator>(
-             comphelper::getProcessServiceFactory()->createInstanceWithArguments(
--            OUString::createFromAscii("com.sun.star.office.SplashScreen"),
--            aSeq), UNO_QUERY);
-+            aSplashService, aSeq), UNO_QUERY);
- 
-         if(m_rSplashScreen.is())
-                 m_rSplashScreen->start(OUString::createFromAscii("SplashScreen"), 100);
-diff --git desktop/source/app/cmdlineargs.cxx desktop/source/app/cmdlineargs.cxx
-index b4c17d8..427df9b 100644
---- desktop/source/app/cmdlineargs.cxx
-+++ desktop/source/app/cmdlineargs.cxx
-@@ -473,6 +473,11 @@ sal_Bool CommandLineArgs::InterpretCommandLineParameter( const ::rtl::OUString&
-         SetBoolParam_Impl( CMD_BOOLPARAM_HELPMATH, sal_True );
-         return sal_True;
-     }
-+    else if ( aArgStr.Copy(0, 13).EqualsIgnoreCaseAscii( "-splash-pipe=" ))
-+    {
-+        AddStringListParam_Impl( CMD_STRINGPARAM_SPLASHPIPE, aArgStr.Copy( 13 ) );
-+        return sal_True;
-+    }
-     #ifdef MACOSX
-     /* #i84053# ignore -psn on Mac
-        Platform dependent #ifdef here is ugly, however this is currently
-@@ -900,7 +905,8 @@ sal_Bool CommandLineArgs::IsEmptyOrAcceptOnly() const
- {
-     osl::MutexGuard  aMutexGuard( m_aMutex );
- 
--    return m_eArgumentCount == NONE || 
-+    return m_eArgumentCount == NONE ||
-+           ( ( m_eArgumentCount == ONE ) && ( m_aStrParams[ CMD_STRINGPARAM_SPLASHPIPE ].getLength() )) ||
-            ( ( m_eArgumentCount == ONE ) && ( m_aStrParams[ CMD_STRINGPARAM_ACCEPT ].getLength() )) ||
-            ( ( m_eArgumentCount == ONE ) && m_aBoolParams[ CMD_BOOLPARAM_PSN ] );
- }
-diff --git desktop/source/app/cmdlineargs.hxx desktop/source/app/cmdlineargs.hxx
-index 22fe212..d1db805 100644
---- desktop/source/app/cmdlineargs.hxx
-+++ desktop/source/app/cmdlineargs.hxx
-@@ -77,6 +77,7 @@ class CommandLineArgs
-         enum StringParam // must be zero based!
-         {
-             CMD_STRINGPARAM_PORTAL,
-+            CMD_STRINGPARAM_SPLASHPIPE,
-             CMD_STRINGPARAM_ACCEPT,
-             CMD_STRINGPARAM_UNACCEPT,
-             CMD_STRINGPARAM_USERDIR,
-diff --git desktop/unx/source/makefile.mk desktop/unx/source/makefile.mk
-new file mode 100644
-index 0000000..f10ad70
---- /dev/null
-+++ desktop/unx/source/makefile.mk
-@@ -0,0 +1,38 @@
-+PRJ=..$/..
-+PRJNAME=desktop
-+TARGET=oosplash
-+
-+NO_DEFAULT_STL=TRUE
-+
-+.INCLUDE :  settings.mk
-+
-+STDLIB=
-+
-+OBJFILES= \
-+    $(OBJ)$/splashx.obj \
-+    $(OBJ)$/start.obj
-+
-+APP1TARGET = $(TARGET)
-+APP1OBJS   = $(OBJFILES)
-+APP1LIBSALCPPRT=
-+APP1CODETYPE = C
-+APP1STDLIBS = $(SALLIB) -lX11
-+.IF "$(OS)"=="SOLARIS"
-+APP1STDLIBS+= -lsocket
-+.ENDIF
-+
-+# --- Targets ------------------------------------------------------
-+
-+.INCLUDE :	target.mk
-+
-+$(OBJ)$/start.obj : $(INCCOM)$/introbmpnames.hxx
-+
-+.INCLUDE .IGNORE : $(MISC)$/intro_bmp_names.mk
-+
-+.IF "$(INTRO_BITMAPS:f)"!="$(LASTTIME_INTRO_BITMAPS)"
-+DO_PHONY=.PHONY
-+.ENDIF			# "$(INTRO_BITMAPS:f)"!="$(LASTTIME_INTRO_BITMAPS)"
-+
-+$(INCCOM)$/introbmpnames.hxx $(DO_PHONY):
-+    echo const char INTRO_BITMAP_STRINGLIST[]=$(EMQ)"$(INTRO_BITMAPS:f:t",")$(EMQ)"$(EMQ); > $@
-+    echo LASTTIME_INTRO_BITMAPS=$(INTRO_BITMAPS:f) > $(MISC)$/intro_bmp_names.mk
-diff --git desktop/unx/source/splashx.c desktop/unx/source/splashx.c
-new file mode 100644
-index 0000000..b3b6da0
---- /dev/null
-+++ desktop/unx/source/splashx.c
-@@ -0,0 +1,570 @@
-+/*************************************************************************
-+ *
-+ *  OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ *  $RCSfile$
-+ *
-+ *  $Revision: 9695 $
-+ *
-+ *  last change: $Author: jholesovsky $ $Date: 2007-07-03 16:36:09 +0200 (Út, 03 čec 2007) $
-+ *
-+ *  The Contents of this file are made available subject to
-+ *  the terms of GNU Lesser General Public License Version 2.1.
-+ *
-+ *
-+ *    GNU Lesser General Public License Version 2.1
-+ *    =============================================
-+ *    Copyright 2005 by Sun Microsystems, Inc.
-+ *    901 San Antonio Road, Palo Alto, CA 94303, USA
-+ *
-+ *    This library is free software; you can redistribute it and/or
-+ *    modify it under the terms of the GNU Lesser General Public
-+ *    License version 2.1, as published by the Free Software Foundation.
-+ *
-+ *    This library 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 for more details.
-+ *
-+ *    You should have received a copy of the GNU Lesser General Public
-+ *    License along with this library; if not, write to the Free Software
-+ *    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ *    MA  02111-1307  USA
-+ *
-+ ************************************************************************/
-+
-+#include <X11/Xlib.h>
-+#include <X11/Xatom.h>
-+#include <X11/Xutil.h>
-+
-+#include "osl/endian.h"
-+#include <fcntl.h>
-+#include <stdint.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <unistd.h>
-+
-+#include "splashx.h"
-+
-+typedef struct {
-+    unsigned char b, g, r;
-+} color_t;
-+
-+#define WINDOW_WIDTH  440
-+#define WINDOW_HEIGHT 299
-+
-+#define PROGRESS_XOFFSET 12
-+#define PROGRESS_YOFFSET 18
-+#define PROGRESS_BARSPACE 2
-+
-+static Display *display = NULL;
-+static int screen;
-+static int depth;
-+static Visual *visual = NULL;
-+
-+static int width = WINDOW_WIDTH;
-+static int height = WINDOW_HEIGHT;
-+
-+static Colormap color_map;
-+static Window win;
-+static GC gc;
-+
-+// Progress bar values
-+// taken from desktop/source/splash/splash.cxx
-+static int tlx = 212;
-+static int tly = 216;
-+static int barwidth = 263;
-+static int barheight = 8;
-+static int barspace = PROGRESS_BARSPACE;
-+static color_t barcol = { 18, 202, 157 };
-+static color_t framecol = { 0xD3, 0xD3, 0xD3 };
-+
-+static XColor barcolor;
-+static XColor framecolor;
-+
-+static color_t *bitmap = NULL;
-+
-+#define BMP_HEADER_LEN 14
-+#define WIN_INFO_LEN 40
-+
-+#define UINT8( x )      ( (unsigned int)( ( (uint8_t *)( x ) )[0] ) )
-+
-+#define UINT16( x ) (   ( (unsigned int)( ( (uint8_t *)( x ) )[0] ) ) + \
-+                      ( ( (unsigned int)( ( (uint8_t *)( x ) )[1] ) ) << 8 ) )
-+
-+#define UINT32( x ) (   ( (unsigned int)( ( (uint8_t *)( x ) )[0] ) ) + \
-+                      ( ( (unsigned int)( ( (uint8_t *)( x ) )[1] ) ) << 8  ) + \
-+                      ( ( (unsigned int)( ( (uint8_t *)( x ) )[2] ) ) << 16 ) + \
-+                      ( ( (unsigned int)( ( (uint8_t *)( x ) )[3] ) ) << 24 ) )
-+
-+#define MAX( x, y ) ( ( (x) > (y) )? (x): (y) )
-+
-+#define LOAD_FAILURE( msg ) \
-+    { \
-+        fprintf( stderr, "%s: " msg, filename ); \
-+        close( fd ); \
-+        return 0; \
-+    }
-+
-+// Load the specified Windows 24bit BMP to 'bitmap'
-+// Return: 1 - success, 0 - failure
-+int splash_load_bmp( char *filename )
-+{
-+    int fd = open( filename, O_RDONLY );
-+    if ( fd < 0 )
-+        return 0;
-+
-+    char file_header[ BMP_HEADER_LEN ];
-+
-+    if ( read( fd, file_header, BMP_HEADER_LEN ) != BMP_HEADER_LEN || file_header[0] != 'B' || file_header[1] != 'M' )
-+        LOAD_FAILURE( "Not a bitmap.\n" );
-+
-+    int file_size = UINT32( file_header + 2 );
-+
-+    char info_header[ WIN_INFO_LEN ];
-+    if ( read( fd, info_header, 4 ) != 4 )
-+        LOAD_FAILURE( "Unable to read the header.\n" );
-+
-+    int header_size = UINT32( info_header );
-+    if ( header_size != WIN_INFO_LEN )
-+        LOAD_FAILURE( "Not a Windows bitmap.\n" );
-+
-+    if ( read( fd, info_header + 4, WIN_INFO_LEN - 4 ) != WIN_INFO_LEN - 4 )
-+        LOAD_FAILURE( "The header ended too early.\n" );
-+
-+    width = UINT32( info_header + 4 );
-+    height = UINT32( info_header + 8 );
-+
-+    int bits = UINT16( info_header + 14 );
-+    int compression = UINT16( info_header + 16 );
-+
-+    if ( bits != 24 )
-+        LOAD_FAILURE( "Just 24 bpp bitmaps are supported.\n" );
-+
-+    if ( compression != 0 )
-+        LOAD_FAILURE( "Just uncompressed bitmaps are supported.\n" );
-+
-+    size_t bitmap_size = width * height * 3;
-+    bitmap = malloc( bitmap_size );
-+    if ( bitmap == NULL )
-+        LOAD_FAILURE( "Cannot allocate memory for the data.\n" );
-+
-+    if ( read( fd, bitmap, bitmap_size ) != bitmap_size )
-+        LOAD_FAILURE( "Cannot read the bitmap data.\n" );
-+
-+    close( fd );
-+    return 1;
-+}
-+
-+static void setup_color( int val[3], color_t *col )
-+{
-+    if ( val[0] < 0 || val[1] < 0 || val[2] < 0 )
-+        return;
-+
-+#define CONVERT_COLOR( from,to ) if ( from < 0 ) to = 0; else if ( from > 255 ) to = 255; else to = from;
-+    CONVERT_COLOR( val[0], col->r );
-+    CONVERT_COLOR( val[1], col->g );
-+    CONVERT_COLOR( val[2], col->b );
-+#undef CONVERT_COLOR
-+}
-+
-+// setup
-+void splash_setup( int barc[3], int framec[3], int posx, int posy, int w, int h )
-+{
-+    if ( width <= 500 )
-+    {
-+        barwidth  = width - ( 2 * PROGRESS_XOFFSET );
-+        barheight = 6;
-+        tlx = PROGRESS_XOFFSET;
-+        tly = height - PROGRESS_YOFFSET;
-+
-+        barcol.r = 0;
-+        barcol.g = 0;
-+        barcol.b = 128;
-+    }
-+
-+    if ( posx >= 0 )
-+        tlx = posx;
-+    if ( posy >= 0 )
-+        tly = posy;
-+    if ( w >= 0 )
-+        barwidth = w;
-+    if ( h >= 0 )
-+        barheight = h;
-+
-+    setup_color( barc, &barcol );
-+    setup_color( framec, &framecol );
-+}
-+
-+// Universal shift: bits >= 0 - left, otherwise right
-+#define SHIFT( x, bits ) ( ( (bits) >= 0 )? ( (x) << (bits) ): ( (x) >> -(bits) ) )
-+
-+// Position of the highest bit (more or less integer log2)
-+inline int HIGHEST_BIT( unsigned long x )
-+{
-+    int i = 0;
-+    for ( ; x; ++i )
-+        x >>= 1;
-+
-+    return i;
-+}
-+
-+// Number of bits set to 1
-+inline int BITS( unsigned long x )
-+{
-+    int i = 0;
-+    for ( ; x; x >>= 1 )
-+        if ( x & 1UL )
-+            ++i;
-+
-+    return i;
-+}
-+
-+// Set 'bitmap' as the background of our 'win' window
-+static void create_pixmap()
-+{
-+    if ( !bitmap )
-+        return;
-+
-+    Pixmap pixmap = XCreatePixmap( display, win, width, height, depth );
-+
-+    unsigned long value_mask = 0;
-+    XGCValues values;
-+    GC pixmap_gc = XCreateGC( display, pixmap, value_mask, &values );
-+
-+    if ( visual->class == TrueColor )
-+    {
-+        unsigned long red_mask   = visual->red_mask;
-+        unsigned long green_mask = visual->green_mask;
-+        unsigned long blue_mask  = visual->blue_mask;
-+
-+        unsigned long red_delta_mask   = ( 1UL << ( 8 - BITS( red_mask ) ) ) - 1;
-+        unsigned long green_delta_mask = ( 1UL << ( 8 - BITS( green_mask ) ) ) - 1;
-+        unsigned long blue_delta_mask  = ( 1UL << ( 8 - BITS( blue_mask ) ) ) - 1;
-+
-+        int red_shift   = HIGHEST_BIT( red_mask ) - 8;
-+        int green_shift = HIGHEST_BIT( green_mask ) - 8;
-+        int blue_shift  = HIGHEST_BIT( blue_mask ) - 8;
-+
-+        XImage *image = XCreateImage( display, visual, depth, ZPixmap,
-+                0, NULL, width, height, 32, 0 );
-+
-+        int bytes_per_line = image->bytes_per_line;
-+        int bpp = image->bits_per_pixel;
-+        int byte_order = image->byte_order;
-+        int machine_byte_order;
-+#if defined( _LITTLE_ENDIAN )
-+        machine_byte_order = LSBFirst;
-+#elif defined( _BIG_ENDIAN )
-+        machine_byte_order = MSBFirst;
-+#else
-+        {
-+            fprintf( stderr, "Unsupported machine endianity.\n" );
-+            XFreeGC( display, pixmap_gc );
-+            XFreePixmap( display, pixmap );
-+            XDestroyImage( image );
-+            return;
-+        }
-+#endif
-+
-+        char *data = malloc( height * bytes_per_line );
-+        image->data = data;
-+
-+        // The following dithers & converts the color_t color to one
-+        // acceptable for the visual
-+#define COPY_IN_OUT( pix_size, code ) \
-+        { \
-+            out += pix_size * width * ( height - 1 ); \
-+            int x, y; \
-+            for ( y = 0; y < height; ++y ) \
-+            { \
-+                unsigned long red_delta = 0, green_delta = 0, blue_delta = 0; \
-+                for ( x = 0; x < width; ++x, ++in  ) \
-+                { \
-+                    unsigned long red   = in->r + red_delta; \
-+                    unsigned long green = in->g + green_delta; \
-+                    unsigned long blue  = in->b + blue_delta; \
-+                    red_delta = red & red_delta_mask; \
-+                    green_delta = green & green_delta_mask; \
-+                    blue_delta = blue & blue_delta_mask; \
-+                    if ( red > 255 ) \
-+                        red = 255; \
-+                    if ( green > 255 ) \
-+                        green = 255; \
-+                    if ( blue > 255 ) \
-+                        blue = 255; \
-+                    unsigned long pixel = \
-+                        ( SHIFT( red, red_shift ) & red_mask ) | \
-+                        ( SHIFT( green, green_shift ) & green_mask ) | \
-+                        ( SHIFT( blue, blue_shift ) & blue_mask ); \
-+                    code \
-+                } \
-+                out -= 2 * pix_size * width; \
-+            } \
-+        }
-+
-+        color_t *in = bitmap;
-+        char *out = data;
-+
-+        if ( bpp == 32 )
-+        {
-+            if ( machine_byte_order == byte_order )
-+                COPY_IN_OUT( 4, *( (uint32_t *)out ) = (uint32_t)pixel; out += 4; )
-+            else
-+                COPY_IN_OUT( 4, uint32_t tmp = pixel;
-+                             *( (uint8_t *)out     ) = *( (uint8_t *)(&tmp) + 3 );
-+                             *( (uint8_t *)out + 1 ) = *( (uint8_t *)(&tmp) + 2 );
-+                             *( (uint8_t *)out + 2 ) = *( (uint8_t *)(&tmp) + 1 );
-+                             *( (uint8_t *)out + 3 ) = *( (uint8_t *)(&tmp)     );
-+                             out += 4; )
-+        }
-+        else if ( bpp == 24 )
-+        {
-+            if ( machine_byte_order == byte_order && byte_order == LSBFirst )
-+                COPY_IN_OUT( 3, *( (color_t *)out ) = *( (color_t *)( &pixel ) ); out += 3; )
-+            if ( machine_byte_order == byte_order && byte_order == MSBFirst )
-+                COPY_IN_OUT( 3, uint32_t tmp = pixel;
-+                             *( (uint8_t *)out     ) = *( (uint8_t *)(&tmp) + 1 );
-+                             *( (uint8_t *)out + 1 ) = *( (uint8_t *)(&tmp) + 2 );
-+                             *( (uint8_t *)out + 2 ) = *( (uint8_t *)(&tmp) + 3 );
-+                             out += 3; )
-+            else
-+                COPY_IN_OUT( 3, uint32_t tmp = pixel;
-+                             *( (uint8_t *)out     ) = *( (uint8_t *)(&tmp) + 3 );
-+                             *( (uint8_t *)out + 1 ) = *( (uint8_t *)(&tmp) + 2 );
-+                             *( (uint8_t *)out + 2 ) = *( (uint8_t *)(&tmp) + 1 );
-+                             out += 3; )
-+        }
-+        else if ( bpp == 16 )
-+        {
-+            if ( machine_byte_order == byte_order )
-+                COPY_IN_OUT( 2, *( (uint16_t *)out ) = (uint16_t)pixel; out += 2; )
-+            else
-+                COPY_IN_OUT( 2, uint16_t tmp = pixel;
-+                             *( (uint8_t *)out     ) = *( (uint8_t *)(&tmp) + 1 );
-+                             *( (uint8_t *)out + 1 ) = *( (uint8_t *)(&tmp)     );
-+                             out += 2; );
-+        }
-+        else if ( bpp == 8 )
-+        {
-+            COPY_IN_OUT( 1, *( (uint8_t *)out ) = (uint8_t)pixel; ++out; )
-+        }
-+        else
-+        {
-+            fprintf( stderr, "Unsupported depth: %d bits per pixel.\n", bpp );
-+            XFreeGC( display, pixmap_gc );
-+            XFreePixmap( display, pixmap );
-+            XDestroyImage( image );
-+            return;
-+        }
-+
-+#undef COPY_IN_OUT
-+
-+        XPutImage( display, pixmap, pixmap_gc, image, 0, 0, 0, 0, width, height );
-+        XDestroyImage( image );
-+    }
-+    else //if ( depth == 1 || visual->class == DirectColor )
-+    {
-+        // FIXME Something like the following, but faster ;-) - XDrawPoint is not
-+        // a good idea...
-+        int x, y;
-+        for ( y = 0; y < height; ++y )
-+        {
-+            color_t *color = bitmap + y * width;
-+
-+            int delta = 0;
-+            for ( x = 0; x < width; ++x, ++color )
-+            {
-+                int rnd = (int)( ( (long)( random() - RAND_MAX/2 ) * 32000 )/RAND_MAX );
-+                int luminance = delta + rnd + 299 * (int)color->r + 587 * (int)color->g + 114 * (int)color->b;
-+
-+                if ( luminance < 128000 )
-+                {
-+                    XSetForeground( display, pixmap_gc, BlackPixel( display, screen ) );
-+                    delta = luminance;
-+                }
-+                else
-+                {
-+                    XSetForeground( display, pixmap_gc, WhitePixel( display, screen ) );
-+                    delta = luminance - 255000;
-+                }
-+
-+                XDrawPoint( display, pixmap, pixmap_gc, x, y );
-+            }
-+        }
-+    }
-+
-+    XSetWindowBackgroundPixmap( display, win, pixmap );
-+
-+    XFreeGC( display, pixmap_gc );
-+    XFreePixmap( display, pixmap );
-+}
-+
-+// The old method of hiding the window decorations
-+static void suppress_decorations_motif()
-+{
-+    struct {
-+        unsigned long flags, functions, decorations;
-+        long input_mode;
-+        unsigned long status;
-+    } mwmhints;
-+
-+    Atom a = XInternAtom( display, "_MOTIF_WM_HINTS", False );
-+
-+    mwmhints.flags = 15; // functions, decorations, input_mode, status
-+    mwmhints.functions = 2; // ?
-+    mwmhints.decorations = 0;
-+    mwmhints.input_mode = 0;
-+
-+    XChangeProperty( display, win, a, a, 32,
-+            PropModeReplace, (unsigned char*)&mwmhints, 5 );
-+}
-+
-+// This is a splash, set it as such.
-+// If it fails, just hide the decorations...
-+static void suppress_decorations()
-+{
-+    Atom atom_type = XInternAtom( display, "_NET_WM_WINDOW_TYPE", True );
-+    Atom atom_splash = XInternAtom( display, "_NET_WM_WINDOW_TYPE_SPLASH", True );
-+
-+    if ( atom_type != None && atom_splash != None )
-+        XChangeProperty( display, win, atom_type, XA_ATOM, 32,
-+                PropModeReplace, (unsigned char*)&atom_splash, 1 );
-+    //else
-+        suppress_decorations_motif(); // FIXME: Unconditional until Metacity/compiz's SPLASH handling is fixed
-+}
-+
-+// Create the window
-+// Return: 1 - success, 0 - failure
-+int splash_create_window( int argc, char** argv )
-+{
-+    char *display_name = NULL;
-+    int i;
-+    for ( i = 0; i < argc; i++ )
-+    {
-+        if ( !strcmp( argv[i], "-display" )  || !strcmp( argv[i], "--display" ) )
-+            display_name = ( i + 1 < argc )? argv[i+1]: NULL;
-+    }
-+
-+    if ( !display_name )
-+        display_name = getenv( "DISPLAY" );
-+
-+    // init display
-+    display = XOpenDisplay( display_name );
-+    if ( !display )
-+    {
-+        fprintf( stderr, "Failed to open display\n" );
-+        return 0;
-+    }
-+
-+    // create the window
-+    screen = DefaultScreen( display );
-+    depth = DefaultDepth( display, screen );
-+    color_map = DefaultColormap( display, screen );
-+    visual = DefaultVisual( display, screen );
-+
-+    Window root_win = RootWindow( display, screen );
-+    int display_width = DisplayWidth( display, screen );
-+    int display_height = DisplayHeight( display, screen );
-+
-+    win = XCreateSimpleWindow( display, root_win,
-+            ( display_width - width ) / 2, ( display_height - height ) / 2,
-+            width, height, 0,
-+            BlackPixel( display, screen ), BlackPixel( display, screen ) );
-+
-+    XSetWindowColormap( display, win, color_map );
-+
-+    // setup colors
-+#define FILL_COLOR( xcol,col ) xcol.red = 256*col.r; xcol.green = 256*col.g; xcol.blue = 256*col.b;
-+    FILL_COLOR( barcolor, barcol );
-+    FILL_COLOR( framecolor, framecol );
-+#undef FILL_COLOR
-+
-+    XAllocColor( display, color_map, &barcolor );
-+    XAllocColor( display, color_map, &framecolor );
-+
-+    // not resizable, no decorations, etc.
-+    unsigned long value_mask = 0;
-+    XGCValues values;
-+    gc = XCreateGC( display, win, value_mask, &values );
-+
-+    XSizeHints size_hints;
-+    size_hints.flags = PPosition | PSize | PMinSize | PMaxSize;
-+    size_hints.min_width = width;
-+    size_hints.max_width = width;
-+    size_hints.min_height = height;
-+    size_hints.max_height = height;
-+
-+    char *name = "OpenOffice.org";
-+    char *icon = "icon"; // FIXME
-+
-+    XSetStandardProperties( display, win, name, icon, None,
-+            0, 0, &size_hints );
-+
-+    // the actual work
-+    suppress_decorations();
-+    create_pixmap();
-+
-+    // show it
-+    XSelectInput( display, win, 0 );
-+    XMapWindow( display, win );
-+
-+    return 1;
-+}
-+
-+// Re-draw & process the events
-+// Just throwing them away - we do not need anything more...
-+static void process_events()
-+{
-+    XEvent xev;
-+    int num_events;
-+
-+    XFlush( display );
-+    num_events = XPending( display );
-+    while ( num_events > 0 )
-+    {
-+        num_events--;
-+        XNextEvent( display, &xev );
-+        //process_event(xev);
-+    }
-+}
-+
-+// Draw the progress
-+void splash_draw_progress( int progress )
-+{
-+    // sanity
-+    if ( progress < 0 )
-+        progress = 0;
-+    if ( progress > 100 )
-+        progress = 100;
-+
-+    // draw progress...
-+    int length = ( progress * barwidth / 100 ) - ( 2 * barspace );
-+    if ( length < 0 )
-+        length = 0;
-+
-+    // border
-+    XSetForeground( display, gc, framecolor.pixel );
-+    XDrawRectangle( display, win, gc,
-+            tlx, tly,
-+            barwidth, barheight );
-+
-+    // progress bar
-+    XSetForeground( display, gc, barcolor.pixel );
-+    XFillRectangle( display, win, gc,
-+            tlx + barspace, tly + barspace,
-+            length + 1, barheight - 2*barspace + 1 );
-+
-+    // pending events
-+    process_events();
-+}
-+
-+// Close the window & cleanup
-+void splash_close_window()
-+{
-+    XCloseDisplay( display );
-+
-+    free( bitmap );
-+    bitmap = NULL;
-+}
-diff --git desktop/unx/source/splashx.h desktop/unx/source/splashx.h
-new file mode 100644
-index 0000000..6d84d4b
---- /dev/null
-+++ desktop/unx/source/splashx.h
-@@ -0,0 +1,71 @@
-+/*************************************************************************
-+ *
-+ *  OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ *  $RCSfile$
-+ *
-+ *  $Revision: 9695 $
-+ *
-+ *  last change: $Author: jholesovsky $ $Date: 2007-07-03 16:36:09 +0200 (Út, 03 čec 2007) $
-+ *
-+ *  The Contents of this file are made available subject to
-+ *  the terms of GNU Lesser General Public License Version 2.1.
-+ *
-+ *
-+ *    GNU Lesser General Public License Version 2.1
-+ *    =============================================
-+ *    Copyright 2005 by Sun Microsystems, Inc.
-+ *    901 San Antonio Road, Palo Alto, CA 94303, USA
-+ *
-+ *    This library is free software; you can redistribute it and/or
-+ *    modify it under the terms of the GNU Lesser General Public
-+ *    License version 2.1, as published by the Free Software Foundation.
-+ *
-+ *    This library 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 for more details.
-+ *
-+ *    You should have received a copy of the GNU Lesser General Public
-+ *    License along with this library; if not, write to the Free Software
-+ *    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ *    MA  02111-1307  USA
-+ *
-+ ************************************************************************/
-+
-+#ifndef _SPLASHX_H
-+#define _SPLASHX_H
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+// Load the specified Windows 24bit BMP we can have as a background of the
-+// splash.
-+//
-+// Note: Must be called before the create_window(), otherwise there will be no
-+// image in the splash, just black rectangle.
-+//
-+// Return: 1 - success, 0 - failure (non-existing, etc.)
-+int splash_load_bmp( char *filename );
-+
-+// Init some of the values
-+// If not called, the defaults are used
-+// barc, framec - colors, posx, posy - position, w, h - size
-+void splash_setup( int barc[3], int framec[3], int posx, int posy, int w, int h );
-+
-+// Create the splash window
-+// Return: 1 - success, 0 - failure
-+int splash_create_window( int argc, char** argv );
-+
-+// Destroy the splash window
-+void splash_close_window();
-+
-+// Update the progress bar
-+void splash_draw_progress( int progress );
-+
-+#ifdef __cplusplus
-+} // extern "C"
-+#endif
-+
-+#endif // _SPLASHX_H
-diff --git desktop/unx/source/start.c desktop/unx/source/start.c
-new file mode 100644
-index 0000000..a42a286
---- /dev/null
-+++ desktop/unx/source/start.c
-@@ -0,0 +1,719 @@
-+/*************************************************************************
-+ *
-+ *  OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ *  $RCSfile$
-+ *
-+ *  $Revision: 9695 $
-+ *
-+ *  last change: $Author: jholesovsky $ $Date: 2007-07-03 16:36:09 +0200 (Út, 03 čec 2007) $
-+ *
-+ *  The Contents of this file are made available subject to
-+ *  the terms of GNU Lesser General Public License Version 2.1.
-+ *
-+ *
-+ *    GNU Lesser General Public License Version 2.1
-+ *    =============================================
-+ *    Copyright 2005 by Sun Microsystems, Inc.
-+ *    901 San Antonio Road, Palo Alto, CA 94303, USA
-+ *
-+ *    This library is free software; you can redistribute it and/or
-+ *    modify it under the terms of the GNU Lesser General Public
-+ *    License version 2.1, as published by the Free Software Foundation.
-+ *
-+ *    This library 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 for more details.
-+ *
-+ *    You should have received a copy of the GNU Lesser General Public
-+ *    License along with this library; if not, write to the Free Software
-+ *    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ *    MA  02111-1307  USA
-+ *
-+ ************************************************************************/
-+
-+#include <signal.h>
-+#include <unistd.h>
-+#include <limits.h>
-+#include <stdlib.h>
-+#include <sys/types.h>
-+#include <sys/stat.h>
-+#include <sys/socket.h>
-+#include <arpa/inet.h>
-+#include <sys/un.h>
-+#include <sys/poll.h>
-+#include <fcntl.h>
-+#include <stdio.h>
-+#include <libgen.h>
-+
-+#include <osl/nlsupport.h>
-+#include <osl/process.h>
-+#include <rtl/bootstrap.h>
-+#include <rtl/digest.h>
-+#include <sal/main.h>
-+
-+#include "splashx.h"
-+#include <introbmpnames.hxx>
-+
-+#define PIPEDEFAULTPATH      "/tmp"
-+#define PIPEALTERNATEPATH    "/var/tmp"
-+
-+/* Easier conversions: rtl_uString to rtl_String */
-+static rtl_String *
-+ustr_to_str( rtl_uString *pStr )
-+{
-+    rtl_String *pOut = NULL;
-+
-+    rtl_uString2String( &pOut, rtl_uString_getStr( pStr ),
-+            rtl_uString_getLength( pStr ), osl_getThreadTextEncoding(), OUSTRING_TO_OSTRING_CVTFLAGS );
-+
-+    return pOut;
-+}
-+
-+/* Easier conversions: char * to rtl_uString */
-+static rtl_uString *
-+charp_to_ustr( const char *pStr )
-+{
-+    rtl_uString *pOut = NULL;
-+
-+    rtl_string2UString( &pOut, pStr, strlen( pStr ), osl_getThreadTextEncoding(), OSTRING_TO_OUSTRING_CVTFLAGS );
-+
-+    return pOut;
-+}
-+
-+/* Easier debugging of rtl_uString values. */
-+#if OSL_DEBUG_LEVEL > 0
-+static void
-+ustr_debug( const char *pMessage, rtl_uString *pStr )
-+{
-+    rtl_String *pOut = ustr_to_str( pStr );
-+
-+    fprintf( stderr, "%s: %s\n", pMessage, rtl_string_getStr( pOut ) );
-+
-+    rtl_string_release( pOut );
-+    return;
-+}
-+#else
-+#define ustr_debug( a, b ) {}
-+#endif
-+
-+/* Path of the application. */
-+static rtl_uString *
-+get_app_path( const char *pAppExec )
-+{
-+    char pRealPath[PATH_MAX];
-+    rtl_uString *pResult;
-+
-+    char *pPath = strdup( pAppExec );
-+    pPath = dirname( pPath );
-+
-+    realpath( pPath, pRealPath );
-+    pResult = charp_to_ustr( pRealPath );
-+    free( pPath );
-+
-+    return pResult;
-+}
-+
-+/* Compute the OOo md5 hash from 'pText' */
-+static rtl_uString *
-+get_md5hash( rtl_uString *pText )
-+{
-+    rtl_uString *pResult = NULL;
-+    sal_Int32 nCapacity = 100;
-+
-+    if ( !pText )
-+        return NULL;
-+
-+    unsigned char *pData = (unsigned char *)rtl_uString_getStr( pText );
-+    sal_uInt32   nSize = rtl_uString_getLength( pText ) * sizeof( sal_Unicode );
-+    if ( !pData )
-+        return NULL;
-+
-+    rtlDigest digest = rtl_digest_create( rtl_Digest_AlgorithmMD5 );
-+    if ( digest <= 0 )
-+        return NULL;
-+
-+    sal_uInt32 md5_key_len = rtl_digest_queryLength( digest );
-+    sal_uInt8 *md5_buf = (sal_uInt8 *)calloc( md5_key_len, sizeof( sal_uInt8 ) );
-+
-+    rtl_digest_init( digest, pData , nSize );
-+    rtl_digest_update( digest, pData, nSize );
-+    rtl_digest_get( digest, md5_buf, md5_key_len );
-+    rtl_digest_destroy( digest );
-+
-+    /* create hex-value string from the MD5 value to keep
-+       the string size minimal */
-+    rtl_uString_new_WithLength( &pResult, nCapacity );
-+    sal_uInt32 i = 0;
-+    for ( ; i < md5_key_len; ++i )
-+    {
-+        char val[3];
-+        snprintf( val, 3, "%x", md5_buf[i] ); /* sic! we ignore some of the 0's */
-+
-+        rtl_uStringbuffer_insert_ascii( &pResult, &nCapacity, rtl_uString_getLength( pResult ),
-+                val, strlen( val ) );
-+    }
-+
-+    /* cleanup */
-+    free( md5_buf );
-+
-+    return pResult;
-+}
-+
-+/* Construct the pipe name */
-+static rtl_uString *
-+get_pipe_path( rtl_uString *pAppPath )
-+{
-+    rtl_uString *pPath = NULL, *pTmp = NULL, *pUserInstallation = NULL;
-+    rtl_uString *pResult = NULL;
-+
-+    /* setup bootstrap filename */
-+    rtl_uString_newFromAscii( &pPath, "file://" );
-+    rtl_uString_newConcat( &pPath, pPath, pAppPath );
-+    rtl_uString_newFromAscii( &pTmp, "/" );
-+    rtl_uString_newConcat( &pPath, pPath, pTmp );
-+    rtl_uString_newFromAscii( &pTmp, SAL_CONFIGFILE( "bootstrap" ) );
-+    rtl_uString_newConcat( &pPath, pPath, pTmp );
-+
-+    ustr_debug( "bootstap", pPath );
-+
-+    /* read userinstallation value */
-+    rtlBootstrapHandle handle = rtl_bootstrap_args_open( pPath );
-+
-+    rtl_uString_newFromAscii( &pTmp, "UserInstallation" );
-+    rtl_bootstrap_get_from_handle( handle, pTmp, &pUserInstallation, NULL );
-+
-+    rtl_bootstrap_args_close( handle );
-+
-+    /* create the pipe name */
-+    ustr_debug( "user installation", pUserInstallation );
-+    rtl_uString *pMd5hash = get_md5hash( pUserInstallation );
-+    if ( !pMd5hash )
-+        rtl_uString_new( &pMd5hash );
-+
-+    if ( access( PIPEDEFAULTPATH, R_OK|W_OK ) == 0 )
-+        rtl_uString_newFromAscii( &pResult, PIPEDEFAULTPATH );
-+    else
-+        rtl_uString_newFromAscii( &pResult, PIPEALTERNATEPATH );
-+
-+    rtl_uString_newFromAscii( &pTmp, "/OSL_PIPE_" );
-+    rtl_uString_newConcat( &pResult, pResult, pTmp );
-+
-+    sal_Unicode pUnicode[RTL_USTR_MAX_VALUEOFINT32];
-+    rtl_ustr_valueOfInt32( pUnicode, (int)getuid(), 10 );
-+    rtl_uString_newFromStr( &pTmp, pUnicode );
-+    rtl_uString_newConcat( &pResult, pResult, pTmp );
-+
-+    rtl_uString_newFromAscii( &pTmp, "_SingleOfficeIPC_" );
-+    rtl_uString_newConcat( &pResult, pResult, pTmp );
-+
-+    rtl_uString_newConcat( &pResult, pResult, pMd5hash );
-+
-+    ustr_debug( "result", pResult );
-+
-+    /* cleanup */
-+    rtl_uString_release( pPath );
-+    rtl_uString_release( pTmp );
-+    rtl_uString_release( pUserInstallation );
-+
-+    return pResult;
-+}
-+
-+/* Get fd of the pipe of the already running OOo. */
-+static int
-+connect_pipe( rtl_uString *pPipePath )
-+{
-+    int fd;
-+    size_t len;
-+    struct sockaddr_un addr;
-+
-+    rtl_String *pPipeStr = ustr_to_str( pPipePath );
-+
-+    memset( &addr, 0, sizeof( addr ) );
-+
-+    if ( ( fd = socket( AF_UNIX, SOCK_STREAM, 0 ) ) < 0 )
-+        return fd;
-+
-+    fcntl( fd, F_SETFD, FD_CLOEXEC );
-+
-+    addr.sun_family = AF_UNIX;
-+    strncpy( addr.sun_path, rtl_string_getStr( pPipeStr ), sizeof( addr.sun_path ) );
-+    rtl_string_release( pPipeStr );
-+
-+/* cut / paste from osl's pipe.c */
-+#if defined(FREEBSD)
-+    len = SUN_LEN( &addr );
-+#else
-+    len = sizeof( addr );
-+#endif
-+
-+    if ( connect( fd, (struct sockaddr *)&addr, len ) < 0 )
-+        return -1;
-+
-+    return fd;
-+}
-+
-+/* Send args to the OOo instance (using the 'fd' file descriptor) */
-+static sal_Bool
-+send_args( int fd )
-+{
-+    rtl_uString *pBuffer = NULL, *pTmp = NULL;
-+    sal_Int32 nCapacity = 100;
-+    rtl_String *pOut = NULL;
-+    sal_Bool bResult;
-+    size_t nLen;
-+
-+    rtl_uString_new_WithLength( &pBuffer, nCapacity );
-+    rtl_uString_new( &pTmp );
-+
-+    sal_uInt32 nArg;
-+    sal_uInt32 nArgCount = osl_getCommandArgCount();
-+    for ( nArg = 0; nArg < nArgCount; ++nArg )
-+    {
-+        osl_getCommandArg( nArg, &pTmp );
-+
-+        rtl_uStringbuffer_insert( &pBuffer, &nCapacity,
-+                rtl_uString_getLength( pBuffer ),
-+                rtl_uString_getStr( pTmp ),
-+                rtl_uString_getLength( pTmp ) );
-+
-+        rtl_uStringbuffer_insert_ascii( &pBuffer, &nCapacity,
-+                rtl_uString_getLength( pBuffer ),
-+                "|", 1 );
-+    }
-+
-+    ustr_debug( "Pass args", pBuffer );
-+
-+    pOut = ustr_to_str( pBuffer );
-+
-+    nLen = rtl_string_getLength( pOut ) + 1;
-+    bResult = ( write( fd, rtl_string_getStr( pOut ), nLen ) == nLen );
-+
-+    /* cleanup */
-+    rtl_uString_release( pBuffer );
-+    rtl_uString_release( pTmp );
-+    rtl_string_release( pOut );
-+
-+    return bResult;
-+}
-+
-+/* Load the splash bitmap. */
-+static void
-+load_splash_image( rtl_uString *pImagePath )
-+{
-+    rtl_uString *pPath = NULL, *pBitmaps = NULL, *pTmp = NULL;
-+    rtl_uString *pToken = NULL, *pFilename = NULL;
-+
-+    sal_Int32 nIndex = 0;
-+
-+    /* setup values */
-+    rtl_uString_newFromString( &pPath, pImagePath );
-+    rtl_uString_newFromAscii( &pTmp, "/" );
-+    rtl_uString_newConcat( &pPath, pPath, pTmp );
-+
-+    rtl_uString_newFromAscii( &pBitmaps, INTRO_BITMAP_STRINGLIST );
-+    rtl_uString_newFromAscii( &pTmp, ",intro.bmp" );
-+    rtl_uString_newConcat( &pBitmaps, pBitmaps, pTmp );
-+
-+    /* try all the bitmaps from INTRO_BITMAP_STRINGLIST
-+       (and the intro.bmp fallback) */
-+    while ( nIndex >= 0 )
-+    {
-+        nIndex = rtl_uString_getToken( &pToken, pBitmaps, 0, ',', nIndex );
-+        rtl_uString_newConcat( &pFilename, pPath, pToken );
-+
-+        if ( rtl_uString_getLength( pToken ) > 0 )
-+        {
-+            rtl_String *pFilenameStr = ustr_to_str( pFilename );
-+            sal_Bool bLoaded = splash_load_bmp( rtl_string_getStr( pFilenameStr ) );
-+            rtl_string_release( pFilenameStr );
-+
-+            if ( bLoaded )
-+                break;
-+        }
-+    }
-+
-+    /* cleanup */
-+    rtl_uString_release( pPath );
-+    rtl_uString_release( pBitmaps );
-+    rtl_uString_release( pTmp );
-+    rtl_uString_release( pToken );
-+    rtl_uString_release( pFilename );
-+}
-+
-+/* Fill 'array' with values of the key 'name'.
-+   Its value is a comma delimited list of integers */
-+static void
-+get_bootstrap_value( int *array, int size, rtlBootstrapHandle handle, const char *name )
-+{
-+    rtl_uString *pKey = NULL, *pValue = NULL;
-+    sal_Int32 nIndex = 0;
-+    int i = 0;
-+
-+    /* get the value from the ini file */
-+    rtl_uString_newFromAscii( &pKey, name );
-+    rtl_bootstrap_get_from_handle( handle, pKey, &pValue, NULL );
-+
-+    /* the value is several numbers delimited by ',' - parse it */
-+    if ( rtl_uString_getLength( pValue ) > 0 )
-+    {
-+        rtl_uString *pToken = NULL;
-+
-+        for ( ; ( nIndex >= 0 ) && ( i < size ); ++i )
-+        {
-+            nIndex = rtl_uString_getToken( &pToken, pValue, 0, ',', nIndex );
-+            array[i] = rtl_ustr_toInt32( rtl_uString_getStr( pToken ), 10 );
-+        }
-+
-+        rtl_uString_release( pToken );
-+    }
-+
-+    /* cleanup */
-+    rtl_uString_release( pKey );
-+    rtl_uString_release( pValue );
-+}
-+
-+/* Load the colors and size of the splash. */
-+static void
-+load_splash_defaults( rtl_uString *pAppPath, sal_Bool *pInhibitSplash )
-+{
-+    rtl_uString *pSettings = NULL, *pTmp = NULL;
-+    rtlBootstrapHandle handle;
-+
-+    /* costruct the sofficerc file location */
-+    rtl_uString_newFromAscii( &pSettings, "file://" );
-+    rtl_uString_newConcat( &pSettings, pSettings, pAppPath );
-+    rtl_uString_newFromAscii( &pTmp, "/" );
-+    rtl_uString_newConcat( &pSettings, pSettings, pTmp );
-+    rtl_uString_newFromAscii( &pTmp, SAL_CONFIGFILE( "soffice" ) );
-+    rtl_uString_newConcat( &pSettings, pSettings, pTmp );
-+
-+    /* use it as the bootstrap file */
-+    handle = rtl_bootstrap_args_open( pSettings );
-+
-+    int logo[1] =  { -1 },
-+        bar[3] =   { -1, -1, -1 },
-+        frame[3] = { -1, -1, -1 },
-+        pos[2] =   { -1, -1 },
-+        size[2] =  { -1, -1 };
-+
-+    /* get the values */
-+    get_bootstrap_value( logo,  1, handle, "Logo" );
-+    get_bootstrap_value( bar,   3, handle, "ProgressBarColor" );
-+    get_bootstrap_value( frame, 3, handle, "ProgressFrameColor" );
-+    get_bootstrap_value( pos,   2, handle, "ProgressPosition" );
-+    get_bootstrap_value( size,  2, handle, "ProgressSize" );
-+
-+    if ( logo[0] == 0 )
-+        *pInhibitSplash = sal_True;
-+
-+    splash_setup( bar, frame, pos[0], pos[1], size[0], size[1] );
-+
-+    /* cleanup */
-+    rtl_bootstrap_args_close( handle );
-+    rtl_uString_release( pSettings );
-+    rtl_uString_release( pTmp );
-+}
-+
-+#define BUFFER_LEN 255
-+
-+/* Read the percent to show in splash. */
-+static sal_Bool
-+read_percent( int status_fd, int *pPercent )
-+{
-+    static char pBuffer[BUFFER_LEN + 1];
-+    static char *pNext = pBuffer;
-+    static size_t nRead = 0;
-+
-+    char *pBegin;
-+    char *pIter;
-+
-+    /* from the last call */
-+    int nNotProcessed = nRead - ( pNext - pBuffer );
-+    if ( nNotProcessed >= BUFFER_LEN )
-+        return sal_False;
-+
-+    memmove( pBuffer, pNext, nNotProcessed );
-+
-+    /* read data */
-+    nRead = read( status_fd, pBuffer + nNotProcessed, BUFFER_LEN - nNotProcessed );
-+    if ( nRead < 0 )
-+        return sal_False;
-+
-+    nRead += nNotProcessed;
-+    pBuffer[nRead] = '\0';
-+
-+    /* skip old data */
-+    pBegin = pBuffer;
-+    pNext = pBuffer;
-+    for ( pIter = pBuffer; *pIter; ++pIter )
-+        if ( *pIter == '\n' )
-+        {
-+            pBegin = pNext;
-+            pNext = pIter + 1;
-+        }
-+
-+#if OSL_DEBUG_LEVEL > 0
-+    fprintf( stderr, "Got status: %s\n", pBegin );
-+#endif
-+    if ( !strncasecmp( pBegin, "end", 3 ) )
-+        return sal_False;
-+    else if ( sscanf( pBegin, "%d%%", pPercent ) )
-+        return sal_True;
-+
-+    return sal_False;
-+}
-+
-+/* Periodically update the splash & the percent acconding to what
-+   status_fd says */
-+static void
-+show_splash( int status_fd )
-+{
-+    int nRetval;
-+    struct pollfd aPfd;
-+
-+    int nPercent = 0;
-+    sal_Bool bFinish = sal_False;
-+
-+    /* we want to watch status_fd */
-+    aPfd.fd = status_fd;
-+    aPfd.events = POLLIN;
-+
-+#if OSL_DEBUG_LEVEL > 0
-+    fprintf( stderr, "Starting main loop, status fd: %d\n", status_fd );
-+#endif
-+
-+    /* main loop */
-+    do {
-+        splash_draw_progress( nPercent );
-+
-+        /* read from pipe if data available */
-+        nRetval = poll( &aPfd, 1, 50 );
-+        if ( nRetval > 0 )
-+            bFinish = !read_percent( status_fd, &nPercent );
-+        else if ( nRetval < 0 )
-+            bFinish = sal_True;
-+    } while ( !bFinish );
-+}
-+
-+/* Simple system check. */
-+static void
-+system_checks( void )
-+{
-+#ifdef LINUX
-+    struct stat buf;
-+
-+    /* check proc is mounted - lots of things fail otherwise */
-+    if ( stat( "/proc/version", &buf ) != 0 )
-+    {
-+        fprintf( stderr, "ERROR: /proc not mounted - OO.o is unlikely to work well if at all" );
-+        exit( 1 );
-+    }
-+#endif
-+}
-+
-+/* Start the OOo application */
-+static sal_Bool
-+fork_app( rtl_uString *pAppPath, int *status_fd )
-+{
-+    rtl_uString *pApp = NULL, *pTmp = NULL, *pArg = NULL;
-+    rtl_uString **ppArgs;
-+    sal_uInt32 nArgs, i;
-+
-+    oslProcess aProcess;
-+    oslProcessError nError;
-+    int status_pipe[2];
-+
-+    system_checks();
-+
-+    /* application name */
-+    rtl_uString_newFromAscii( &pApp, "file://" );
-+    rtl_uString_newConcat( &pApp, pApp, pAppPath );
-+    rtl_uString_newFromAscii( &pTmp, "/soffice.bin" );
-+    rtl_uString_newConcat( &pApp, pApp, pTmp );
-+
-+    rtl_uString_new( &pTmp );
-+
-+    /* copy args */
-+    nArgs = osl_getCommandArgCount();
-+    ppArgs = (rtl_uString **)calloc( nArgs + 1, sizeof( rtl_uString* ) );
-+    for ( i = 0; i < nArgs; ++i )
-+    {
-+        ppArgs[i] = NULL;
-+        osl_getCommandArg( i, &pTmp );
-+
-+        rtl_uString_newFromString( &(ppArgs[i]), pTmp );
-+    }
-+
-+    /* create pipe */
-+    if ( pipe( status_pipe ) < 0 )
-+    {
-+        fprintf( stderr, "ERROR: no file handles\n");
-+        exit( 1 );
-+    }
-+
-+    /* add the pipe arg */
-+    sal_Unicode pUnicode[RTL_USTR_MAX_VALUEOFINT32];
-+    rtl_ustr_valueOfInt32( pUnicode, status_pipe[1], 10 );
-+
-+    rtl_uString_newFromAscii( &pArg, "-splash-pipe=" );
-+    rtl_uString_newFromStr( &pTmp, pUnicode );
-+    rtl_uString_newConcat( &pArg, pArg, pTmp );
-+
-+    ppArgs[nArgs] = NULL;
-+    rtl_uString_newFromString( &(ppArgs[nArgs]), pArg );
-+    ++nArgs;
-+
-+    /* start the OOo process */
-+    nError = osl_executeProcess( pApp, ppArgs, nArgs,
-+            osl_Process_DETACHED | osl_Process_NORMAL,
-+            NULL,
-+            NULL,
-+            NULL, 0,
-+            &aProcess );
-+
-+    *status_fd = status_pipe[0];
-+    close( status_pipe[1] );
-+
-+    if ( nError != osl_Process_E_None )
-+    {
-+        fprintf( stderr, "ERROR %d forking process", nError );
-+        ustr_debug( "", pApp );
-+        return sal_False;
-+    }
-+
-+    return sal_True;
-+}
-+
-+/* Check if 'pArg' is -pCmpWith or --pCmpWith */
-+static sal_Bool
-+arg_check( rtl_uString *pArg, const char *pCmpWith )
-+{
-+    sal_Unicode *pUnicode = rtl_uString_getStr( pArg );
-+
-+    if ( pUnicode[0] == (sal_Unicode)'-' )
-+        pUnicode++;
-+    else
-+        return sal_False;
-+
-+    /* tolerate -- prefixes etc. */
-+    if ( pUnicode[0] == (sal_Unicode)'-' )
-+        pUnicode++;
-+
-+    return !rtl_ustr_ascii_compare( pUnicode, pCmpWith );
-+}
-+
-+static const char *ppInhibit[] = {
-+    "nologo", "headless", "invisible", "help", "h", "?", "minimized",
-+    NULL };
-+static const char *ppTwoArgs[] = {
-+    "pt", "display",
-+    NULL };
-+
-+/* Read command line parameters and return whether we display the splash. */
-+static sal_Bool
-+get_inhibit_splash()
-+{
-+    rtl_uString *pTmp = NULL;
-+    sal_Bool bSkipNextArg = sal_False;
-+    const char **ppIter;
-+
-+    rtl_uString_new( &pTmp );
-+
-+    sal_uInt32 nArg;
-+    sal_uInt32 nArgCount = osl_getCommandArgCount();
-+    for ( nArg = 0; nArg < nArgCount; ++nArg )
-+    {
-+        if ( bSkipNextArg )
-+        {
-+            bSkipNextArg = sal_False;
-+            continue;
-+        }
-+
-+        osl_getCommandArg( nArg, &pTmp );
-+
-+        /* check for inhibit splash params */
-+        for ( ppIter = ppInhibit; *ppIter; ++ppIter )
-+        {
-+            if ( arg_check( pTmp, *ppIter ) )
-+            {
-+                rtl_uString_release( pTmp );
-+                return sal_True;
-+            }
-+        }
-+        /* check for 2 arguments params */
-+        for ( ppIter = ppTwoArgs; *ppIter; ++ppIter )
-+        {
-+            if ( arg_check( pTmp, *ppIter ) )
-+            {
-+                bSkipNextArg = sal_True;
-+                break;
-+            }
-+        }
-+    }
-+
-+    /* cleanup */
-+    rtl_uString_release( pTmp );
-+
-+    return sal_False;
-+}
-+
-+SAL_IMPLEMENT_MAIN_WITH_ARGS( argc, argv )
-+{
-+    int fd = 0, status_fd = 0;
-+    sal_Bool bInhibitSplash;
-+    sal_Bool bSentArgs = sal_False;
-+    rtl_uString *pAppPath = NULL;
-+    rtl_uString *pPipePath = NULL;
-+
-+    /* turn SIGPIPE into an error */
-+    signal( SIGPIPE, SIG_IGN );
-+
-+    bInhibitSplash = get_inhibit_splash();
-+
-+    pAppPath = get_app_path( argv[0] );
-+    if ( !pAppPath )
-+    {
-+        fprintf( stderr, "ERROR: Can't read app link\n" );
-+        exit( 1 );
-+    }
-+    ustr_debug( "App path", pAppPath );
-+
-+    pPipePath = get_pipe_path( pAppPath );
-+
-+    if ( ( fd = connect_pipe( pPipePath ) ) >= 0 )
-+        bSentArgs = send_args( fd );
-+#if OSL_DEBUG_LEVEL > 0
-+    else
-+        ustr_debug( "Failed to connect to pipe", pPipePath );
-+#endif
-+
-+    if ( !bSentArgs )
-+    {
-+        if ( !fork_app( pAppPath, &status_fd ) )
-+            return 1;
-+
-+        if ( !bInhibitSplash )
-+        {
-+            load_splash_image( pAppPath );
-+            load_splash_defaults( pAppPath, &bInhibitSplash );
-+        }
-+
-+        if ( !bInhibitSplash && splash_create_window( argc, argv ) )
-+        {
-+            splash_draw_progress( 0 );
-+            show_splash( status_fd );
-+            splash_close_window();
-+        }
-+    }
-+
-+    /* cleanup */
-+    rtl_uString_release( pAppPath );
-+    rtl_uString_release( pPipePath );
-+
-+    close( fd );
-+    close( status_fd );
-+
-+    return 0;
-+}
-diff --git desktop/unx/splash/exports.map desktop/unx/splash/exports.map
-new file mode 100644
-index 0000000..ba501f9
---- /dev/null
-+++ desktop/unx/splash/exports.map
-@@ -0,0 +1,10 @@
-+UDK_3_0_0 {
-+    global:
-+        GetVersionInfo;
-+        component_getImplementationEnvironment;
-+        component_getFactory;
-+        component_writeInfo;
-+
-+    local:
-+        *;
-+};
-diff --git desktop/unx/splash/makefile.mk desktop/unx/splash/makefile.mk
-new file mode 100644
-index 0000000..66a3189
---- /dev/null
-+++ desktop/unx/splash/makefile.mk
-@@ -0,0 +1,72 @@
-+#*************************************************************************
-+#
-+#   OpenOffice.org - a multi-platform office productivity suite
-+#
-+#   $RCSfile$
-+#
-+#   $Revision: 7305 $
-+#
-+#   last change: $Author: jholesovsky $ $Date: 2006-08-04 16:35:41 +0200 (Pá, 04 srp 2006) $
-+#
-+#   The Contents of this file are made available subject to
-+#   the terms of GNU Lesser General Public License Version 2.1.
-+#
-+#
-+#     GNU Lesser General Public License Version 2.1
-+#     =============================================
-+#     Copyright 2005 by Sun Microsystems, Inc.
-+#     901 San Antonio Road, Palo Alto, CA 94303, USA
-+#
-+#     This library is free software; you can redistribute it and/or
-+#     modify it under the terms of the GNU Lesser General Public
-+#     License version 2.1, as published by the Free Software Foundation.
-+#
-+#     This library 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 for more details.
-+#
-+#     You should have received a copy of the GNU Lesser General Public
-+#     License along with this library; if not, write to the Free Software
-+#     Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+#     MA  02111-1307  USA
-+#
-+#*************************************************************************
-+
-+PRJ=..$/..
-+
-+PRJNAME=desktop
-+TARGET=spl_unx
-+LIBTARGET=NO
-+
-+ENABLE_EXCEPTIONS=TRUE
-+
-+# --- Settings -----------------------------------------------------
-+
-+.INCLUDE :  settings.mk
-+
-+# --- Files --------------------------------------------------------
-+
-+SLOFILES =  $(SLO)$/unxsplash.obj \
-+            $(SLO)$/services_unxsplash.obj
-+
-+SHL1DEPN=   makefile.mk
-+SHL1OBJS=   $(SLOFILES)
-+
-+
-+SHL1TARGET=$(TARGET)$(DLLPOSTFIX)
-+SHL1IMPLIB=i$(TARGET)
-+
-+SHL1VERSIONMAP=exports.map
-+SHL1DEF=$(MISC)$/$(SHL1TARGET).def
-+DEF1NAME=$(SHL1TARGET)
-+
-+SHL1STDLIBS= \
-+    $(VOSLIB)			\
-+    $(CPPUHELPERLIB)	\
-+    $(CPPULIB)			\
-+    $(SALLIB)
-+
-+# --- Targets ------------------------------------------------------
-+
-+.INCLUDE :  target.mk
-diff --git desktop/unx/splash/services_unxsplash.cxx desktop/unx/splash/services_unxsplash.cxx
-new file mode 100644
-index 0000000..b762fa5
---- /dev/null
-+++ desktop/unx/splash/services_unxsplash.cxx
-@@ -0,0 +1,177 @@
-+/*************************************************************************
-+ *
-+ *  OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ *  $RCSfile$
-+ *
-+ *  $Revision: 7305 $
-+ *
-+ *  last change: $Author: jholesovsky $ $Date: 2006-08-04 16:35:41 +0200 (Pá, 04 srp 2006) $
-+ *
-+ *  The Contents of this file are made available subject to
-+ *  the terms of GNU Lesser General Public License Version 2.1.
-+ *
-+ *
-+ *    GNU Lesser General Public License Version 2.1
-+ *    =============================================
-+ *    Copyright 2005 by Sun Microsystems, Inc.
-+ *    901 San Antonio Road, Palo Alto, CA 94303, USA
-+ *
-+ *    This library is free software; you can redistribute it and/or
-+ *    modify it under the terms of the GNU Lesser General Public
-+ *    License version 2.1, as published by the Free Software Foundation.
-+ *
-+ *    This library 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 for more details.
-+ *
-+ *    You should have received a copy of the GNU Lesser General Public
-+ *    License along with this library; if not, write to the Free Software
-+ *    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ *    MA  02111-1307  USA
-+ *
-+ ************************************************************************/
-+
-+#ifndef _COM_SUN_STAR_BEANS_NAMEDVALUE_HPP_
-+#include <com/sun/star/beans/NamedValue.hpp>
-+#endif
-+#ifndef _COM_SUN_STAR_REGISTRY_XREGISTRYKEY_HPP_
-+#include <com/sun/star/registry/XRegistryKey.hpp>
-+#endif
-+#ifndef _COM_SUN_STAR_UTIL_DATE_HPP_
-+#include <com/sun/star/util/Date.hpp>
-+#endif
-+
-+#ifndef _UNO_ENVIRONMENT_H_
-+#include <uno/environment.h>
-+#endif
-+#ifndef _CPPUHELPER_FACTORY_HXX_
-+#include <cppuhelper/factory.hxx>
-+#endif
-+#ifndef _UTL_CONFIGMGR_HXX_
-+#include <unotools/configmgr.hxx>
-+#endif
-+
-+#include <string.h>
-+
-+#include "unxsplash.hxx"
-+
-+using namespace rtl;
-+using namespace ::com::sun::star::uno;
-+using namespace ::com::sun::star::lang;
-+using namespace ::com::sun::star::beans;
-+using namespace ::com::sun::star::registry;
-+using namespace ::desktop;
-+
-+static const char* pServices[] =
-+{
-+    UnxSplashScreen::serviceName,
-+    NULL
-+};
-+
-+static const char* pImplementations[] =
-+{
-+    UnxSplashScreen::implementationName,
-+    NULL
-+};
-+
-+typedef Reference<XInterface>(* fProvider)( const Reference<XMultiServiceFactory>& );
-+
-+static const fProvider pInstanceProviders[] =
-+{
-+    UnxSplashScreen::getInstance,
-+    NULL
-+};
-+
-+
-+static const char** pSupportedServices[] =
-+{
-+    UnxSplashScreen::interfaces,
-+    NULL
-+};
-+
-+static Sequence<OUString>
-+getSupportedServiceNames( int p ) {
-+    const char **names = pSupportedServices[p];
-+    Sequence<OUString> aSeq;
-+    for ( int i = 0; names[i] != NULL; i++ )
-+    {
-+        aSeq.realloc( i+1 );
-+        aSeq[i] = OUString::createFromAscii( names[i] );
-+    }
-+    return aSeq;
-+}
-+
-+extern "C"
-+{
-+void SAL_CALL
-+component_getImplementationEnvironment(
-+    const sal_Char** ppEnvironmentTypeName,
-+    uno_Environment** ppEnvironment )
-+{
-+    *ppEnvironmentTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME ;
-+}
-+
-+sal_Bool SAL_CALL
-+component_writeInfo(
-+    void* pServiceManager,
-+    void* pRegistryKey )
-+{
-+    Reference<XMultiServiceFactory> xMan(
-+        reinterpret_cast< XMultiServiceFactory* >( pServiceManager ) ) ;
-+    Reference<XRegistryKey> xKey(
-+        reinterpret_cast< XRegistryKey* >( pRegistryKey ) ) ;
-+
-+    // iterate over service names and register them...
-+    OUString aImpl;
-+    const char* pServiceName = NULL;
-+    const char* pImplName = NULL;
-+    for ( int i = 0; ( pServices[i] != NULL ) && ( pImplementations[i] != NULL ); i++ )
-+    {
-+        pServiceName= pServices[i];
-+        pImplName = pImplementations[i];
-+        aImpl = OUString::createFromAscii( "/" )
-+              + OUString::createFromAscii( pImplName )
-+              + OUString::createFromAscii( "/UNO/SERVICES" );
-+        Reference<XRegistryKey> xNewKey = xKey->createKey( aImpl );
-+        xNewKey->createKey( OUString::createFromAscii( pServiceName ) );
-+    }
-+    return sal_True;
-+}
-+
-+void* SAL_CALL
-+component_getFactory(
-+    const sal_Char* pImplementationName,
-+    void* pServiceManager,
-+    void* pRegistryKey )
-+{
-+    // Set default return value for this operation - if it failed.
-+    if ( pImplementationName && pServiceManager )
-+    {
-+        Reference< XSingleServiceFactory > xFactory;
-+        Reference< XMultiServiceFactory > xServiceManager(
-+            reinterpret_cast< XMultiServiceFactory* >( pServiceManager ) ) ;
-+
-+        // search implementation
-+        for ( int i = 0; ( pImplementations[i] != NULL ); i++ )
-+        {
-+            if ( strcmp( pImplementations[i], pImplementationName ) == 0 )
-+            {
-+                // found implementation
-+                xFactory = Reference<XSingleServiceFactory>( cppu::createSingleFactory(
-+                    xServiceManager, OUString::createFromAscii( pImplementationName ),
-+                    pInstanceProviders[i], getSupportedServiceNames( i ) ) );
-+                if ( xFactory.is() )
-+                {
-+                    // Factory is valid - service was found.
-+                    xFactory->acquire();
-+                    return xFactory.get();
-+                }
-+            }
-+        }
-+    }
-+
-+    return NULL;
-+}
-+} // extern "C"
-diff --git desktop/unx/splash/unxsplash.cxx desktop/unx/splash/unxsplash.cxx
-new file mode 100644
-index 0000000..ca20334
---- /dev/null
-+++ desktop/unx/splash/unxsplash.cxx
-@@ -0,0 +1,192 @@
-+/*************************************************************************
-+ *
-+ *  OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ *  $RCSfile$
-+ *
-+ *  $Revision: 7305 $
-+ *
-+ *  last change: $Author: jholesovsky $ $Date: 2006-08-04 16:35:41 +0200 (Pá, 04 srp 2006) $
-+ *
-+ *  The Contents of this file are made available subject to
-+ *  the terms of GNU Lesser General Public License Version 2.1.
-+ *
-+ *
-+ *    GNU Lesser General Public License Version 2.1
-+ *    =============================================
-+ *    Copyright 2005 by Sun Microsystems, Inc.
-+ *    901 San Antonio Road, Palo Alto, CA 94303, USA
-+ *
-+ *    This library is free software; you can redistribute it and/or
-+ *    modify it under the terms of the GNU Lesser General Public
-+ *    License version 2.1, as published by the Free Software Foundation.
-+ *
-+ *    This library 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 for more details.
-+ *
-+ *    You should have received a copy of the GNU Lesser General Public
-+ *    License along with this library; if not, write to the Free Software
-+ *    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ *    MA  02111-1307  USA
-+ *
-+ ************************************************************************/
-+
-+#include "unxsplash.hxx"
-+#include <stdio.h>
-+#ifndef _UTL_BOOTSTRAP_HXX
-+#include <unotools/bootstrap.hxx>
-+#endif
-+#ifndef _VOS_PROCESS_HXX_
-+#include <vos/process.hxx>
-+#endif
-+#ifndef _URLOBJ_HXX
-+#include <tools/urlobj.hxx>
-+#endif
-+#ifndef _STREAM_HXX
-+#include <tools/stream.hxx>
-+#endif
-+#ifndef _SFX_HRC
-+#include <sfx2/sfx.hrc>
-+#endif
-+
-+#include <com/sun/star/registry/XRegistryKey.hpp>
-+#include <rtl/logfile.hxx>
-+#include <rtl/ustrbuf.hxx>
-+#include <rtl/math.hxx>
-+
-+#define PIPE_ARG "-splash-pipe="
-+
-+using namespace ::rtl;
-+using namespace ::com::sun::star::registry;
-+
-+namespace desktop
-+{
-+
-+UnxSplashScreen::UnxSplashScreen( const Reference< XMultiServiceFactory >& rSMgr )
-+    : m_rFactory( rSMgr ),
-+      m_pOutFd( NULL )
-+{
-+}
-+
-+UnxSplashScreen::~UnxSplashScreen()
-+{
-+#if OSL_DEBUG_LEVEL > 1
-+    fprintf( stderr, "UnxSplashScreen::~UnxSplashScreen()\n" );
-+#endif
-+
-+    if ( m_pOutFd )
-+    {
-+        fclose( m_pOutFd );
-+        m_pOutFd = NULL;
-+    }
-+}
-+
-+void SAL_CALL UnxSplashScreen::start( const OUString& /*aText*/, sal_Int32 /*nRange*/ )
-+    throw ( RuntimeException )
-+{
-+}
-+
-+void SAL_CALL UnxSplashScreen::end()
-+    throw ( RuntimeException )
-+{
-+#if OSL_DEBUG_LEVEL > 1
-+    fprintf( stderr, "UnxSplashScreen::end()\n" );
-+#endif
-+
-+    fprintf( m_pOutFd, "end\n" );
-+    fflush( m_pOutFd );
-+}
-+
-+void SAL_CALL UnxSplashScreen::reset()
-+    throw ( RuntimeException )
-+{
-+    // TODO?
-+}
-+
-+void SAL_CALL UnxSplashScreen::setText( const OUString& /*aText*/ )
-+    throw ( RuntimeException )
-+{
-+    // TODO?
-+}
-+
-+void SAL_CALL UnxSplashScreen::setValue( sal_Int32 nValue )
-+    throw ( RuntimeException )
-+{
-+    if ( m_pOutFd )
-+    {
-+        fprintf( m_pOutFd, "%d%%\n", nValue );
-+        fflush( m_pOutFd );
-+    }
-+}
-+
-+// XInitialize
-+void SAL_CALL
-+UnxSplashScreen::initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any>& aArguments )
-+    throw ( RuntimeException )
-+{
-+    ::vos::OStartupInfo aInfo;
-+    for ( sal_uInt32 i = 0; i < aInfo.getCommandArgCount(); i++ )
-+    {
-+        rtl::OUString aArg;
-+        if ( aInfo.getCommandArg( i, aArg ) )
-+            break;
-+        if ( aArg.matchIgnoreAsciiCaseAsciiL( PIPE_ARG, sizeof( PIPE_ARG ) - 1, 0 ) )
-+        {
-+            OUString aNum = aArg.copy( sizeof( PIPE_ARG ) - 1 );
-+            int fd = aNum.toInt32();
-+            m_pOutFd = fdopen( fd, "w" );
-+#if OSL_DEBUG_LEVEL > 1
-+            fprintf( stderr, "Got argument '-splash-pipe=%d ('%s') (%p)\n",
-+                     fd, (const sal_Char *)rtl::OUStringToOString( aNum, RTL_TEXTENCODING_UTF8 ),
-+                     m_pOutFd );
-+#endif
-+        }
-+    }
-+}
-+
-+// get service instance...
-+UnxSplashScreen *UnxSplashScreen::m_pINSTANCE = NULL;
-+osl::Mutex UnxSplashScreen::m_aMutex;
-+
-+Reference< XInterface > UnxSplashScreen::getInstance( const Reference< XMultiServiceFactory >& rSMgr )
-+{
-+    if ( m_pINSTANCE == NULL )
-+    {
-+        osl::MutexGuard guard( m_aMutex );
-+        if ( m_pINSTANCE == NULL )
-+            return (XComponent*) new UnxSplashScreen( rSMgr );
-+    }
-+
-+    return (XComponent*)NULL;
-+}
-+
-+// static service info...
-+const char* UnxSplashScreen::interfaces[] =
-+{
-+    "com.sun.star.task.XStartusIndicator",
-+    "com.sun.star.lang.XInitialization",
-+    NULL,
-+};
-+const sal_Char *UnxSplashScreen::serviceName = "com.sun.star.office.PipeSplashScreen";
-+const sal_Char *UnxSplashScreen::implementationName = "com.sun.star.office.comp.PipeSplashScreen";
-+const sal_Char *UnxSplashScreen::supportedServiceNames[] = { "com.sun.star.office.PipeSplashScreen", NULL };
-+
-+OUString UnxSplashScreen::impl_getImplementationName()
-+{
-+    return OUString::createFromAscii( implementationName );
-+}
-+
-+Sequence<OUString> UnxSplashScreen::impl_getSupportedServiceNames()
-+{
-+    Sequence<OUString> aSequence;
-+    for ( int i = 0; supportedServiceNames[i] != NULL; i++ )
-+    {
-+        aSequence.realloc( i+1 );
-+        aSequence[i] = OUString::createFromAscii( supportedServiceNames[i] );
-+    }
-+    return aSequence;
-+}
-+
-+}
-diff --git desktop/unx/splash/unxsplash.hxx desktop/unx/splash/unxsplash.hxx
-new file mode 100644
-index 0000000..5419324
---- /dev/null
-+++ desktop/unx/splash/unxsplash.hxx
-@@ -0,0 +1,117 @@
-+/*************************************************************************
-+ *
-+ *  OpenOffice.org - a multi-platform office productivity suite
-+ *
-+ *  $RCSfile$
-+ *
-+ *  $Revision: 7305 $
-+ *
-+ *  last change: $Author: jholesovsky $ $Date: 2006-08-04 16:35:41 +0200 (Pá, 04 srp 2006) $
-+ *
-+ *  The Contents of this file are made available subject to
-+ *  the terms of GNU Lesser General Public License Version 2.1.
-+ *
-+ *
-+ *    GNU Lesser General Public License Version 2.1
-+ *    =============================================
-+ *    Copyright 2005 by Sun Microsystems, Inc.
-+ *    901 San Antonio Road, Palo Alto, CA 94303, USA
-+ *
-+ *    This library is free software; you can redistribute it and/or
-+ *    modify it under the terms of the GNU Lesser General Public
-+ *    License version 2.1, as published by the Free Software Foundation.
-+ *
-+ *    This library 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 for more details.
-+ *
-+ *    You should have received a copy of the GNU Lesser General Public
-+ *    License along with this library; if not, write to the Free Software
-+ *    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ *    MA  02111-1307  USA
-+ *
-+ ************************************************************************/
-+
-+#include <stdio.h>
-+
-+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
-+#include <com/sun/star/lang/XServiceInfo.hpp>
-+#endif
-+#ifndef _COM_SUN_STAR_UNO_EXCEPTION_HPP_
-+#include <com/sun/star/uno/Exception.hpp>
-+#endif
-+#ifndef _COM_SUN_STAR_UNO_REFERENCE_H_
-+#include <com/sun/star/uno/Reference.h>
-+#endif
-+#ifndef _COM_SUN_STAR_LANG_XCOMPONENT_HPP_
-+#include <com/sun/star/lang/XComponent.hpp>
-+#endif
-+#ifndef _COM_SUN_STAR_TASK_XSTATUSINDICATOR_HPP_
-+#include <com/sun/star/task/XStatusIndicator.hpp>
-+#endif
-+#ifndef _COM_SUN_STAR_LANG_XINITIALIZATION_HPP_
-+#include <com/sun/star/lang/XInitialization.hpp>
-+#endif
-+#ifndef _CPPUHELPER_IMPLBASE2_HXX_
-+#include <cppuhelper/implbase2.hxx>
-+#endif
-+#ifndef _CPPUHELPER_INTERFACECONTAINER_H_
-+#include <cppuhelper/interfacecontainer.h>
-+#endif
-+#include <com/sun/star/lang/XSingleServiceFactory.hpp>
-+#include <osl/mutex.hxx>
-+#ifndef _RTL_BOOTSTRAP_HXX_
-+#include <rtl/bootstrap.hxx>
-+#endif
-+
-+using namespace ::rtl;
-+using namespace ::com::sun::star::uno;
-+using namespace ::com::sun::star::lang;
-+using namespace ::com::sun::star::task;
-+
-+namespace desktop {
-+
-+class  UnxSplashScreen : public ::cppu::WeakImplHelper2< XStatusIndicator, XInitialization >
-+{
-+private:
-+    // don't allow anybody but ourselves to create instances of this class
-+    UnxSplashScreen( const UnxSplashScreen& );
-+    UnxSplashScreen( void );
-+    UnxSplashScreen operator =( const UnxSplashScreen& );
-+
-+    UnxSplashScreen( const Reference< XMultiServiceFactory >& xFactory );
-+
-+    virtual ~UnxSplashScreen();
-+
-+    static  UnxSplashScreen *m_pINSTANCE;
-+
-+    static osl::Mutex m_aMutex;
-+    Reference< XMultiServiceFactory > m_rFactory;
-+
-+    FILE *m_pOutFd;
-+
-+public:
-+    static const char* interfaces[];
-+    static const sal_Char *serviceName;
-+    static const sal_Char *implementationName;
-+    static const sal_Char *supportedServiceNames[];
-+
-+    static Reference< XInterface > getInstance( const Reference < XMultiServiceFactory >& xFactory );
-+
-+    // static service info
-+    static OUString  impl_getImplementationName();
-+    static Sequence<OUString> impl_getSupportedServiceNames();
-+
-+    // XStatusIndicator
-+    virtual void SAL_CALL start( const OUString& aText, sal_Int32 nRange ) throw ( RuntimeException );
-+    virtual void SAL_CALL end() throw ( RuntimeException );
-+    virtual void SAL_CALL reset() throw ( RuntimeException );
-+    virtual void SAL_CALL setText( const OUString& aText ) throw ( RuntimeException );
-+    virtual void SAL_CALL setValue( sal_Int32 nValue ) throw ( RuntimeException );
-+
-+    // XInitialize
-+    virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any>& aArguments ) throw ( RuntimeException );
-+};
-+
-+}
-diff --git scp2/source/ooo/common_brand.scp scp2/source/ooo/common_brand.scp
-index 6558dd1..7bbf873 100644
---- scp2/source/ooo/common_brand.scp
-+++ scp2/source/ooo/common_brand.scp
-@@ -331,6 +331,15 @@ File gid_Brand_File_Bin_Soffice_Bin
-     Name = "soffice.bin";
- End
- 
-+#if defined(UNX)
-+File gid_File_Bin_QStart_Bin
-+    BIN_FILE_BODY;
-+    Dir = gid_Brand_Dir_Program;
-+    Styles = (PACKED, PATCH);
-+    Name = "oosplash.bin";
-+End
-+#endif
-+
- // use this for high detail file open dialog >= 5.1 windows
- #ifdef WNT
- File gid_Brand_File_Bin_Soffice_Bin_Manifest
-diff --git scp2/source/ooo/file_library_ooo.scp scp2/source/ooo/file_library_ooo.scp
-index 190598f..a2a91dd 100644
---- scp2/source/ooo/file_library_ooo.scp
-+++ scp2/source/ooo/file_library_ooo.scp
-@@ -1377,6 +1377,9 @@ File gid_File_Lib_Spell
- End
- 
- STD_UNO_LIB_FILE( gid_File_Lib_Spl, spl)
-+#ifdef UNX
-+STD_UNO_LIB_FILE( gid_File_Lib_Spl_Unx, spl_unx)
-+#endif
- 
- SPECIAL_UNO_LIB_FILE(gid_File_Lib_Srtrs1,srtrs1)
- 
-diff --git vcl/inc/vcl/svapp.hxx vcl/inc/vcl/svapp.hxx
-index dd87b6c..6ce272b 100644
---- vcl/inc/vcl/svapp.hxx
-+++ vcl/inc/vcl/svapp.hxx
-@@ -264,6 +264,7 @@ public:
-     virtual void                DataChanged( const DataChangedEvent& rDCEvt );
- 
-     virtual void                Init();
-+    virtual void                InitFinished();
-     virtual void                DeInit();
- 
-     static void                 InitAppRes( const ResId& rResId );
-diff --git vcl/source/app/svapp.cxx vcl/source/app/svapp.cxx
-index 1ba14b1..b5cce4a 100644
---- vcl/source/app/svapp.cxx
-+++ vcl/source/app/svapp.cxx
-@@ -313,6 +313,11 @@ void Application::Init()
- }
- 
- // -----------------------------------------------------------------------
-+void Application::InitFinished()
-+{
-+}
-+
-+// -----------------------------------------------------------------------
- 
- void Application::DeInit()
- {
-diff --git vcl/source/window/window.cxx vcl/source/window/window.cxx
-index cf2a83f..fcad734 100644
---- vcl/source/window/window.cxx
-+++ vcl/source/window/window.cxx
-@@ -6589,10 +6589,19 @@ void Window::Show( BOOL bVisible, USHORT nFlags )
-             mpWindowImpl->mpBorderWindow->Show( true, nFlags );
-         else if ( mpWindowImpl->mbFrame )
-         {
--            ImplSVData* pSVData = ImplGetSVData();
-             // #106431#, hide SplashScreen
--            if( pSVData->mpIntroWindow && !ImplIsWindowOrChild( pSVData->mpIntroWindow ) )
-+            ImplSVData* pSVData = ImplGetSVData();
-+            if ( !pSVData->mpIntroWindow )
-+            {
-+                // The right way would be just to call this (not even in the 'if')
-+                GetpApp()->InitFinished();
-+            }
-+            else if ( !ImplIsWindowOrChild( pSVData->mpIntroWindow ) )
-+            {
-+                // ... but the VCL splash is broken, and it needs this
-+                // (for ./soffice slot:5500)
-                 pSVData->mpIntroWindow->Hide();
-+	    }
- 
-             //DBG_ASSERT( !mpWindowImpl->mbSuppressAccessibilityEvents, "Window::Show() - Frame reactivated");
-             mpWindowImpl->mbSuppressAccessibilityEvents = FALSE;
diff --git a/patches/dev300/unxsplash-rpath.diff b/patches/dev300/unxsplash-rpath.diff
deleted file mode 100644
index 01609c0..0000000
--- a/patches/dev300/unxsplash-rpath.diff
+++ /dev/null
@@ -1,19 +0,0 @@
----
- desktop/unx/source/makefile.mk |    1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diff --git desktop/unx/source/makefile.mk desktop/unx/source/makefile.mk
-index f10ad70..66d1bac 100644
---- desktop/unx/source/makefile.mk
-+++ desktop/unx/source/makefile.mk
-@@ -13,6 +13,7 @@ OBJFILES= \
-     $(OBJ)$/start.obj
- 
- APP1TARGET = $(TARGET)
-+APP1RPATH  = BRAND
- APP1OBJS   = $(OBJFILES)
- APP1LIBSALCPPRT=
- APP1CODETYPE = C
--- 
-1.7.0.1
-
diff --git a/patches/dev300/unxsplash-secondstart.diff b/patches/dev300/unxsplash-secondstart.diff
deleted file mode 100644
index 44af462..0000000
--- a/patches/dev300/unxsplash-secondstart.diff
+++ /dev/null
@@ -1,62 +0,0 @@
---- desktop/scripts/soffice.sh
-+++ desktop/scripts/soffice.sh
-@@ -74,6 +75,26 @@
-   esac
- done
- 
-+# test for availability of the fast external splash
-+for arg in $@; do
-+	if [ "$arg" = "-nologo" -o "$arg" = "-no-oosplash" ]; then
-+		no_oosplash=y
-+	fi
-+done
-+
-+# Setup our app as oosplash, but try to avoid executing pagein,
-+# and other expensive environment setup pieces wherever possible
-+# for a second started office
-+if [ "$sd_binary" = "soffice.bin" -a -x "$sd_prog/oosplash.bin" ] && [ "$no_oosplash" != "y" ] ; then
-+    sd_binary="oosplash.bin"
-+    
-+    export QSTART_CHECK_ONLY=1
-+    if "$sd_prog/$sd_binary" $*; then
-+	exit 0
-+    fi
-+    unset QSTART_CHECK_ONLY
-+fi
-+
- # pagein
- sd_pagein_args=@pagein-common
- for sd_arg in "$@"; do
-@@ -129,16 +151,6 @@
- PYTHONPATH=$sd_prog/../basis-link/program${PYTHONPATH+:$PYTHONPATH}
- export PYTHONPATH
- 
--# test for availability of the fast external splash
--for arg in $@; do
--	if [ "$arg" = "-nologo" -o "$arg" = "-no-oosplash" ]; then
--		no_oosplash=y
--	fi
--done
--if [ "$sd_binary" = "soffice.bin" -a -x "$sd_prog/oosplash.bin" ] && [ "$no_oosplash" != "y" ] ; then
--    sd_binary="oosplash.bin"
--fi
--
- # execute soffice binary
- "$sd_prog/$sd_binary" "$@" &
- trap 'kill -9 $!' TERM
-
-

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list