Hi, On Sun, 2006-01-15 at 15:55 -0800, Anthony Green wrote: > 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"; Should we still include /usr/share/java-ext? That seems incompatible since no proprietary JVM would include that directory. > + 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"); > > > Do we need a similar change in javac? Tom