2004/01/20 10:30:45
authorxwt <xwt@xwt.org>
Fri, 30 Jan 2004 08:04:58 +0000 (08:04 +0000)
committerxwt <xwt@xwt.org>
Fri, 30 Jan 2004 08:04:58 +0000 (08:04 +0000)
darcs-hash:20040130080458-3ac31-b01e1c709897fb914bc894a80481f736672e8b87.gz

src/org/xwt/plat/GCJ.cc
src/org/xwt/plat/Linux.cc

index 74589e4..5c355d3 100644 (file)
@@ -23,12 +23,11 @@ extern "C" {
 #include <org/xwt/plat/GCJ.h>
 #include <org/xwt/util/Log.h>
 
-#ifndef TRUE
-#define TRUE 1
+#ifdef TRUE
+#undef TRUE
 #endif
-using org::xwt::util::Log;
-
 #define TRUE 1
+using org::xwt::util::Log;
 
 // builtin.xwar /////////////////////////////////////////////////////////
 
index 39ab5a8..b3a19e6 100644 (file)
@@ -8,9 +8,14 @@ extern const char **_Jv_argv;
 extern int _Jv_argc;
 
 void org::xwt::plat::Linux::fixEnvironment() {
-  // see http://lists.debian.org/debian-glibc/2003/debian-glibc-200311/msg00647.html
-    if (!strcmp("2.4.1", getenv("LD_ASSUME_KERNEL"))) {
-        putenv("LD_ASSUME_KERNEL", "2.4.1");
-        execvp(_Jv_argv[0], _Jv_argv);
+    // see http://lists.debian.org/debian-glibc/2003/debian-glibc-200311/msg00647.html
+    const char* ld_assume_kernel = getenv("LD_ASSUME_KERNEL");
+    if (ld_assume_kernel == NULL || strcmp("2.4.1", ld_assume_kernel)) {
+        int result;
+        printf("respawning self (%s) with LD_ASSUME_KERNEL=2.4.1\n", _Jv_argv[0]);
+        setenv("LD_ASSUME_KERNEL", "2.4.1", 1);
+        result = execvp(_Jv_argv[0], (char* const*)((void*)_Jv_argv));
+        printf("execvp() failed with error code %d\n", result);
+       exit(-1);
     }
 }