You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by yd...@apache.org on 2013/10/28 12:07:02 UTC

svn commit: r1536313 - in /openoffice/trunk/main/sal: inc/sal/main.h osl/os2/salinit.cxx osl/os2/thread.c

Author: ydario
Date: Mon Oct 28 11:07:01 2013
New Revision: 1536313

URL: http://svn.apache.org/r1536313
Log:
i118923 - OS/2 port: make use of system ExceptQ exception handler.

Modified:
    openoffice/trunk/main/sal/inc/sal/main.h
    openoffice/trunk/main/sal/osl/os2/salinit.cxx
    openoffice/trunk/main/sal/osl/os2/thread.c

Modified: openoffice/trunk/main/sal/inc/sal/main.h
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sal/inc/sal/main.h?rev=1536313&r1=1536312&r2=1536313&view=diff
==============================================================================
--- openoffice/trunk/main/sal/inc/sal/main.h (original)
+++ openoffice/trunk/main/sal/inc/sal/main.h Mon Oct 28 11:07:01 2013
@@ -33,6 +33,24 @@ extern "C" {
 void SAL_CALL sal_detail_initialize(int argc, char ** argv);
 void SAL_CALL sal_detail_deinitialize();
 
+#ifdef SAL_OS2
+#include <string.h>
+
+#define INCL_DOSPROCESS
+#define INCL_DOSEXCEPTIONS
+#define INCL_DOSMODULEMGR
+#include <os2.h>
+#define INCL_LOADEXCEPTQ
+#include <exceptq.h>
+
+#define sal_detail_initialize(a,b) \
+	EXCEPTIONREGISTRATIONRECORD exRegRec = {0}; \
+	LoadExceptq(&exRegRec, NULL, NULL); \
+	osl_setCommandArgs(argc, argv);
+#define sal_detail_deinitialize() \
+	UninstallExceptq(&exRegRec);
+#endif // SAL_OS2
+
 #define SAL_MAIN_WITH_ARGS_IMPL \
 int SAL_CALL main(int argc, char ** argv) \
 { \

Modified: openoffice/trunk/main/sal/osl/os2/salinit.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sal/osl/os2/salinit.cxx?rev=1536313&r1=1536312&r2=1536313&view=diff
==============================================================================
--- openoffice/trunk/main/sal/osl/os2/salinit.cxx (original)
+++ openoffice/trunk/main/sal/osl/os2/salinit.cxx Mon Oct 28 11:07:01 2013
@@ -19,99 +19,29 @@
  * 
  *************************************************************/
 
+#include <stdio.h>
 
-
-#define INCL_DOS
-#include <os2.h>
-
-#include "precompiled_sal.hxx"
-#include "sal/config.h"
-
-#include "osl/process.h"
-#include "sal/main.h"
 #include "sal/types.h"
 
-// for exception logging
-#include <stdio.h>
-#include <string.h>
-#include <setjmp.h>
-
+#ifdef __cplusplus
 extern "C" {
+#endif
 
 /*----------------------------------------------------------------------------*/
 
-static CHAR        szOOoExe[CCHMAXPATH];
-
-static FILE* APIENTRY _oslExceptOpenLogFile(VOID)
-{
-   FILE        *file;
-   DATETIME    DT;
-   PPIB        pib;
-   PSZ         slash;
-
-   // get executable fullpath
-   DosGetInfoBlocks(NULL, &pib);
-   DosQueryModuleName(pib->pib_hmte, sizeof(szOOoExe), szOOoExe);
-   // truncate to exe name
-   slash = (PSZ)strrchr( szOOoExe, '.');
-   *slash = '\0';
-   // make log path
-   strcat( szOOoExe, ".log");
-
-   file = fopen( szOOoExe, "a");
-   if (!file) { // e.g. readonly drive
-      // try again, usually C exist and is writable
-      file = fopen( "c:\\OOo.log", "a"); 
-   }
-   if (file) {
-        DosGetDateTime(&DT);
-        fprintf(file, "\nTrap message -- Date: %04d-%02d-%02d, Time: %02d:%02d:%02d\n",
-            DT.year, DT.month, DT.day,
-            DT.hours, DT.minutes, DT.seconds);
-        fprintf(file, "-------------------------------------------------------\n"
-                      "\nAn internal error occurred (Built " __DATE__ "-" __TIME__ ").\n");
-
-   }
-
-   // ok, return handle
-   return (file);
-}
-
-/*----------------------------------------------------------------------------*/
-
-#if 0 // until exceptions restored OSL_DEBUG_LEVEL == 0
-static EXCEPTSTRUCT 	g_excptstruct = {0};
-#endif
-
+// replaced by macros in sal/main.h
 void SAL_CALL sal_detail_initialize(int argc, char ** argv) 
 {
-	APIRET rc = -1;
-
-#if 0 // until exceptions restored OSL_DEBUG_LEVEL == 0
-	excRegisterHooks(_oslExceptOpenLogFile, NULL, NULL, FALSE); 
-
-	g_excptstruct.RegRec2.pfnHandler = (PFN)excHandlerLoud;
-	g_excptstruct.arc = DosSetExceptionHandler( 
-	   		(PEXCEPTIONREGISTRATIONRECORD)&(g_excptstruct.RegRec2));
-
-	if (g_excptstruct.arc) 
-		if (G_pfnExcHookError)
-			G_pfnExcHookError(__FILE__, __LINE__, __FUNCTION__, g_excptstruct.arc);
-		else
-			DosBeep(1000, 1000);
-	g_excptstruct.ulExcpt = setjmp(g_excptstruct.RegRec2.jmpThread);
-#endif
-
-	osl_setCommandArgs(argc, argv);
+	printf("Dead code\n");
+	exit(1);
 }
 
 void SAL_CALL sal_detail_deinitialize()
 {
-	APIRET rc = -1;
-
-#if 0 // until exceptions restored OSL_DEBUG_LEVEL == 0
-	rc = DosUnsetExceptionHandler((PEXCEPTIONREGISTRATIONRECORD)&(g_excptstruct.RegRec2));
-#endif
+	printf("Dead code\n");
+	exit(1);
 }
 
-}
+#ifdef __cplusplus
+}	// extern "C"
+#endif

Modified: openoffice/trunk/main/sal/osl/os2/thread.c
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sal/osl/os2/thread.c?rev=1536313&r1=1536312&r2=1536313&view=diff
==============================================================================
--- openoffice/trunk/main/sal/osl/os2/thread.c (original)
+++ openoffice/trunk/main/sal/osl/os2/thread.c Mon Oct 28 11:07:01 2013
@@ -30,6 +30,13 @@
 #include <rtl/alloc.h>
 #include <rtl/tencinfo.h>
 
+#define INCL_DOSPROCESS
+#define INCL_DOSEXCEPTIONS
+#define INCL_DOSMODULEMGR
+#include <os2.h>
+#define INCL_LOADEXCEPTQ
+#include <exceptq.h>
+
 /*
     Thread-data structure hidden behind oslThread:
 */
@@ -93,6 +100,8 @@ static void oslWorkerWrapperFunction(voi
 {
     BOOL rc;
     osl_TThreadImpl* pThreadImpl= (osl_TThreadImpl*)pData;
+    EXCEPTIONREGISTRATIONRECORD exRegRec = {0};
+    LoadExceptq(&exRegRec, NULL, NULL);
 
 #if OSL_DEBUG_LEVEL>0
 printf("oslWorkerWrapperFunction pThreadImpl %x, pThreadImpl->m_ThreadId %d\n", pThreadImpl, pThreadImpl->m_ThreadId);
@@ -122,6 +131,9 @@ printf("pThreadImpl->m_ThreadId %d, abou
     rc = WinTerminate( pThreadImpl->m_hab );
 #if OSL_DEBUG_LEVEL>0
 printf("pThreadImpl->m_ThreadId %d, WinTerminate rc=%d (should be 1)\n", pThreadImpl->m_ThreadId, rc);
+
+    UninstallExceptq(&exRegRec);
+
 #endif
 }