diff --git a/libjava/ChangeLog b/libjava/ChangeLog index faa6c68c322..4db95b01eea 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,14 @@ +2002-10-24 Tom Tromey + + * java/lang/natRuntime.cc (_Jv_SetDLLSearchPath): New function. + (_Jv_FindSymbolInExecutable): Removed argument name. + (insertSystemProperties): Call _Jv_SetDLLSearchPath if + java.library.path is set. + + * gij.cc (help): Document --showversion. + (version): Don't exit. + (main): Handle --showversion. Exit if --version given. + 2002-10-23 Tom Tromey * jni.cc (_Jv_JNI_AllocObject): Removed old FIXME comment. diff --git a/libjava/gij.cc b/libjava/gij.cc index 47b2d6028de..293f3c30fd8 100644 --- a/libjava/gij.cc +++ b/libjava/gij.cc @@ -34,6 +34,7 @@ help () printf (" --help print this help, then exit\n"); printf (" --ms=NUMBER set initial heap size\n"); printf (" --mx=NUMBER set maximum heap size\n"); + printf (" --showversion print version number, then keep going\n"); printf (" --version print version number, then exit\n"); printf ("\nOptions can be specified with `-' or `--'.\n"); printf ("\nSee http://gcc.gnu.org/java/ for information on reporting bugs\n"); @@ -47,7 +48,6 @@ version () printf ("Copyright (C) 2002 Free Software Foundation, Inc.\n"); printf ("This is free software; see the source for copying conditions. There is NO\n"); printf ("warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"); - exit (0); } int @@ -93,6 +93,11 @@ main (int argc, const char **argv) if (! strcmp (arg, "-help")) help (); else if (! strcmp (arg, "-version")) + { + version (); + exit (0); + } + else if (! strcmp (arg, "-showversion")) version (); /* FIXME: use getopt and avoid the ugliness here. We at least need to handle the argument in a better way. */ diff --git a/libjava/java/lang/natRuntime.cc b/libjava/java/lang/natRuntime.cc index d0a64e7bb1d..0dcf5786d2f 100644 --- a/libjava/java/lang/natRuntime.cc +++ b/libjava/java/lang/natRuntime.cc @@ -102,14 +102,26 @@ _Jv_FindSymbolInExecutable (const char *symname) return NULL; } +void +_Jv_SetDLLSearchPath (const char *path) +{ + lt_dlsetsearchpath (path); +} + #else void * -_Jv_FindSymbolInExecutable (const char *symname) +_Jv_FindSymbolInExecutable (const char *) { return NULL; } +void +_Jv_SetDLLSearchPath (const char *) +{ + // Nothing. +} + #endif /* USE_LTDL */ @@ -538,6 +550,25 @@ java::lang::Runtime::insertSystemProperties (java::util::Properties *newprops) // Allow platform specific settings and overrides. _Jv_platform_initProperties (newprops); + + // If java.library.path is set, tell libltdl so we search the new + // directories as well. FIXME: does this work properly on Windows? + String *path = newprops->getProperty(JvNewStringLatin1("java.library.path")); + if (path) + { + char *val = (char *) _Jv_Malloc (JvGetStringUTFLength (path) + 1); + jsize total = JvGetStringUTFRegion (path, 0, path->length(), val); + val[total] = '\0'; + _Jv_SetDLLSearchPath (val); + _Jv_Free (val); + } + else + { + // Set a value for user code to see. + // FIXME: JDK sets this to the actual path used, including + // LD_LIBRARY_PATH, etc. + SET ("java.library.path", ""); + } } java::lang::Process *