]> git.pld-linux.org Git - packages/libreoffice.git/commitdiff
- use fork, make it work with 2.5/2.6 kernels
authorspeedy <speedy@pld-linux.org>
Sun, 30 Nov 2003 17:38:45 +0000 (17:38 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    openoffice-use-fork.patch -> 1.1

openoffice-use-fork.patch [new file with mode: 0644]

diff --git a/openoffice-use-fork.patch b/openoffice-use-fork.patch
new file mode 100644 (file)
index 0000000..a940b7a
--- /dev/null
@@ -0,0 +1,159 @@
+--- tools/source/solar/solar.c 15 Apr 2003 17:55:43 -0000      1.2
++++ tools/source/solar/solar.c 22 Oct 2003 13:08:21 -0000
+@@ -58,17 +58,22 @@
+  *
+  *
+  ************************************************************************/
+-#include <stdio.h>
+-#ifdef UNX
++/* POSIX defines that a program is undefined after a SIG_SEGV.  The
++ * code stopped working on Linux Kernel 2.6 so I have moved this back to
++ * use FORK.
++ * If at a later time the signals work correctly with the Linux Kernel 2.6
++ * then this change may be reverted although not strictly posix safe. */
++#define USE_FORK_TO_CHECK 1
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <errno.h>
++#include <string.h>
+ #include <unistd.h>
+ #include <sys/types.h>
+-#ifdef HPUX
+-#include <stdlib.h>
+-#endif
+-
+ #define I_STDARG
+ #ifdef I_STDARG
+ #include <stdarg.h>
+@@ -84,9 +89,6 @@
+ #include <setjmp.h>
+ #endif
+-#else
+-#endif
+-
+ #define printTypeSize(Type,Name)      printf( "sizeof(%s)\t= %d\n", Name, sizeof (Type) )
+ #define isSignedType(Type)    (((Type)-1) < 0)
+@@ -133,7 +135,7 @@
+ /*************************************************************************
+ |*
+-|*    IsStackGrowingDown()
++|*    GetStackAlignment()
+ |*
+ |*    Beschreibung            Alignment von char Parametern, die (hoffentlich)
+ |*                                            ueber den Stack uebergeben werden
+@@ -176,8 +178,6 @@
+ typedef int (*TestFunc)( Type, void* );
+-#ifdef UNX
+-
+ /*************************************************************************
+ |*
+ |*    PrintArgs()
+@@ -230,11 +230,11 @@
+ void SignalHdl( int sig )
+ {
+   bSignal = 1;
+-  /*
++  
+   fprintf( stderr, "Signal %d caught\n", sig );
+-  signal( sig,        SignalHdl );
+-  /**/
+-  longjmp( check_env, sig );
++  signal( SIGSEGV,    SIG_DFL );
++  signal( SIGBUS,     SIG_DFL );
++  siglongjmp( check_env, sig );
+ }
+ #endif
+@@ -270,7 +270,7 @@
+   bSignal = 0;
+-  if ( !setjmp( check_env ) )
++  if ( !sigsetjmp( check_env, 0 ) )
+   {
+       signal( SIGSEGV,        SignalHdl );
+       signal( SIGBUS,         SignalHdl );
+@@ -286,9 +286,6 @@
+ #endif
+ }
+-#endif
+-
+-
+ /*************************************************************************
+ |*
+ |*    GetAtAddress()
+@@ -373,6 +370,7 @@
+ int CheckSetAccess( Type eT, void* p )
+ {
+   int b;
++
+   b = -1 != check( (TestFunc)SetAtAddress, eT, p );
+ #if OSL_DEBUG_LEVEL > 1
+   fprintf( stderr,
+@@ -437,7 +435,7 @@
+ |*    Letzte Aenderung
+ |*
+ *************************************************************************/
+-Description_Ctor( struct Description* pThis )
++void Description_Ctor( struct Description* pThis )
+ {
+   pThis->bBigEndian                   = IsBigEndian();
+   pThis->bStackGrowsDown      = IsStackGrowingDown();
+@@ -468,16 +466,21 @@
+ |*    Letzte Aenderung
+ |*
+ *************************************************************************/
+-Description_Print( struct Description* pThis, char* name )
++void Description_Print( struct Description* pThis, char* name )
+ {
+   int i;
+   FILE* f = fopen( name, "w" );
++  if( ! f ) {
++        fprintf( stderr, "Unable to open file %s: %s\n", name, strerror( errno ) );
++        exit( 99 );
++  }
+   fprintf( f, "#define __%s\n",
+                  pThis->bBigEndian ? "BIGENDIAN" : "LITTLEENDIAN" );
+   for ( i = 0; i < 3; i++ )
+       fprintf( f, "#define __ALIGNMENT%d\t%d\n",
+-                       1 << i+1, pThis->nAlignment[i] );
+-  fprintf( f, "#define __STACKALIGNMENT wird nicht benutzt\t%d\n", pThis->nStackAlignment );
++                       1 << (i+1), pThis->nAlignment[i] );
++  fprintf( f, "/* Stack alignment is not used... */\n" );
++  fprintf( f, "#define __STACKALIGNMENT\t%d\n", pThis->nStackAlignment );
+   fprintf( f, "#define __STACKDIRECTION\t%d\n",
+                  pThis->bStackGrowsDown ? -1 : 1 );
+   fprintf( f, "#define __SIZEOFCHAR\t%d\n", sizeof( char ) );
+@@ -538,8 +541,12 @@
+       printf( ( CheckGetAccess( eT, (long*)&a[i] ) ? "OK\n" : "ERROR\n" ) );
+   }
+ }
+-
+-main( int argc, char* argv[] )
++/************************************************************************
++ *
++ *    Use C code to determine the characteristics of the building platform.
++ *
++ ************************************************************************/
++int main( int argc, char* argv[] )
+ {
+   printTypeSign( char, "char" );
+   printTypeSign( short, "short" );
+@@ -574,7 +581,6 @@
+       Description_Ctor( &description );
+       Description_Print( &description, argv[1] );
+   }
+-
+   {
+       char* p = NULL;
+       InfoMemoryAccess( p );
This page took 0.21541 seconds and 4 git commands to generate.