From f42361ad9da5c895a63d4b517380d4c47ffc9f0a Mon Sep 17 00:00:00 2001 From: tromey Date: Wed, 10 Nov 1999 01:38:24 +0000 Subject: [PATCH] * jcf-path.c: Include . (jcf_path_init): Search for libjava.zip. Fixes PR gcj/84. (DIR_UP): New macro. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30465 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/java/ChangeLog | 6 ++++++ gcc/java/jcf-path.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index d15c7bd..14f65aa 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,9 @@ +1999-11-09 Tom Tromey + + * jcf-path.c: Include . + (jcf_path_init): Search for libjava.zip. Fixes PR gcj/84. + (DIR_UP): New macro. + Tue Nov 9 12:12:38 1999 Alexandre Petit-Bianco * parse.y (source_end_java_method): Resume permanent allocation, diff --git a/gcc/java/jcf-path.c b/gcc/java/jcf-path.c index 056be31..c0cd3a7 100644 --- a/gcc/java/jcf-path.c +++ b/gcc/java/jcf-path.c @@ -43,6 +43,10 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */ #define DIR_SEPARATOR '/' #endif +#ifndef DIR_UP +#define DIR_UP ".." +#endif + /* Possible flag values. */ @@ -223,9 +227,58 @@ void jcf_path_init () { char *cp; + char *try, sep[2]; + struct stat stat_b; + int found = 0, len; add_entry (&sys_dirs, ".", 0); - add_entry (&sys_dirs, LIBGCJ_ZIP_FILE, 1); + + sep[0] = DIR_SEPARATOR; + sep[1] = '\0'; + + GET_ENV_PATH_LIST (cp, "GCC_EXEC_PREFIX"); + if (cp) + { + try = alloca (strlen (cp) + 50); + /* The exec prefix can be something like + /usr/local/bin/../lib/gcc-lib/. We want to change this + into a pointer to the share directory. We support two + configurations: one where prefix and exec-prefix are the + same, and one where exec-prefix is `prefix/SOMETHING'. */ + strcpy (try, cp); + strcat (try, DIR_UP); + strcat (try, sep); + strcat (try, DIR_UP); + strcat (try, sep); + len = strlen (try); + + strcpy (try + len, "share"); + strcat (try, sep); + strcat (try, "libgcj.zip"); + if (! stat (try, &stat_b)) + { + add_entry (&sys_dirs, try, 1); + found = 1; + } + else + { + strcpy (try + len, DIR_UP); + strcat (try, sep); + strcat (try, "share"); + strcat (try, sep); + strcat (try, "libgcj.zip"); + if (! stat (try, &stat_b)) + { + add_entry (&sys_dirs, try, 1); + found = 1; + } + } + } + if (! found) + { + /* Desperation: use the installed one. */ + add_entry (&sys_dirs, LIBGCJ_ZIP_FILE, 1); + } GET_ENV_PATH_LIST (cp, "CLASSPATH"); add_path (&classpath_env, cp, 0); -- 2.7.4