[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