[fedora-java] Re: [JPackage-discuss] extension directories
Anthony Green
green at redhat.com
Sun Jan 15 23:55:51 UTC 2006
On Sun, 2006-01-15 at 18:07 -0500, David Walluck wrote:
> > If we also want it to look
> > in /usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre/lib/ext then we should
> > probably do this has a java-gcj-compat hack.
>
> It seems we have to add this to be consistent.
Ok, here's my proposed patch. Tom - what do you think?
--- java.c~ 2006-01-15 15:51:43.000000000 -0800
+++ java.c 2006-01-15 15:51:49.000000000 -0800
@@ -1,5 +1,5 @@
-/* java.c -- set LD_LIBRARY_PATH, LD_PRELOAD and exec gij
- Copyright (C) 2005 Red Hat
+/* java.c -- set LD_LIBRARY_PATH, LD_PRELOAD, java.ext.dirs and exec gij
+ Copyright (C) 2005, 2006 Red Hat
This file is part of java-gcj-compat.
@@ -40,6 +40,31 @@
#include <string.h>
#include <unistd.h>
+/* Return argv with -Djava.ext.dirs set properly, however, don't
+ change argv if -Djava.ext.dirs is already on the command line. */
+char **
+set_java_ext_dir (int argc, char *argv[])
+{
+ char **nargv;
+ int i = 1;
+
+ while (i < argc && *argv[i] == '-')
+ {
+ if (strncmp ("-Djava.ext.dirs=", argv[i], 16) == 0)
+ return argv;
+ else
+ i++;
+ }
+
+ nargv = (char **) malloc ((argc + 2) * sizeof(char *));
+ nargv[0] = argv[0];
+ nargv[1] = "-Djava.ext.dirs=" JAVA_HOME "/jre/lib/ext:/usr/share/java-ext";
+ for (i = 2; i <= argc; i++)
+ nargv[i] = argv[i-1];
+ nargv[i] = 0;
+ return nargv;
+}
+
int
main (int argc, char* argv[])
{
@@ -111,7 +136,7 @@
free (newpath);
- error_code = execv (GCJ_BIN_DIR "/gij", argv);
+ error_code = execv (GCJ_BIN_DIR "/gij", set_java_ext_dir (argc, argv));
fprintf (stderr, "error spawning gij\n");
More information about the fedora-devel-java-list
mailing list