summaryrefslogtreecommitdiffstats
path: root/recipes-core/classpath/classpath-0.98/toolwrapper-exithook.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-core/classpath/classpath-0.98/toolwrapper-exithook.patch')
-rw-r--r--recipes-core/classpath/classpath-0.98/toolwrapper-exithook.patch46
1 files changed, 46 insertions, 0 deletions
diff --git a/recipes-core/classpath/classpath-0.98/toolwrapper-exithook.patch b/recipes-core/classpath/classpath-0.98/toolwrapper-exithook.patch
new file mode 100644
index 0000000..49b6631
--- /dev/null
+++ b/recipes-core/classpath/classpath-0.98/toolwrapper-exithook.patch
@@ -0,0 +1,46 @@
1Index: classpath-0.97.2/tools/toolwrapper.c
2===================================================================
3--- classpath-0.97.2.orig/tools/toolwrapper.c 2006-12-13 18:56:44.000000000 +0100
4+++ classpath-0.97.2/tools/toolwrapper.c 2009-12-24 13:16:44.295000627 +0100
5@@ -59,6 +59,10 @@
6 /* Typedef for JNI_CreateJavaVM dlopen call. */
7 typedef jint createVM (JavaVM **, void **, void *);
8
9+void exit_hook(jint);
10+
11+int return_code = 1;
12+
13 int
14 main (int argc, const char** argv)
15 {
16@@ -143,6 +147,17 @@
17 vm_args.options[vm_args.nOptions++].optionString = "-Xbootclasspath/p:" TOOLS_ZIP;
18 }
19
20+ /* Set the exit hook */
21+ vm_args.options = (JavaVMOption*) realloc (vm_args.options, (vm_args.nOptions + 1) * sizeof (JavaVMOption));
22+
23+ if (vm_args.options == NULL)
24+ {
25+ fprintf (stderr, TOOLNAME ": realloc failed.\n");
26+ goto destroy;
27+ }
28+ vm_args.options[vm_args.nOptions].optionString = "exit";
29+ vm_args.options[vm_args.nOptions++].extraInfo = (void *) exit_hook;
30+
31 /* Terminate vm_args.options with a NULL element. */
32 vm_args.options = (JavaVMOption*) realloc (vm_args.options, (vm_args.nOptions + 1) * sizeof (JavaVMOption));
33 if (vm_args.options == NULL)
34@@ -260,5 +275,11 @@
35 if (lt_dlexit () != 0)
36 fprintf (stderr, TOOLNAME ": lt_dlexit failed.\n");
37
38- return 1;
39+ return return_code;
40+}
41+
42+void exit_hook(jint code)
43+{
44+ return_code = code;
45 }
46+