aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/java/ChangeLog5
-rw-r--r--gcc/java/gjavah.c14
2 files changed, 16 insertions, 3 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 3e644ce..f0a4eee 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,8 @@
+2002-01-15 Tom Tromey <tromey@redhat.com>
+
+ Fix for PR java/5365:
+ * gjavah.c (process_file): Turn class name into a file name.
+
2002-01-14 Matthias Klose <doko@debian.org>
* gcj.texi: Fix whitespace and formatting errors in the
diff --git a/gcc/java/gjavah.c b/gcc/java/gjavah.c
index db3e16a..d5de1eb 100644
--- a/gcc/java/gjavah.c
+++ b/gcc/java/gjavah.c
@@ -1,7 +1,7 @@
/* Program to write C++-suitable header files from a Java(TM) .class
file. This is similar to SUN's javah.
-Copyright (C) 1996, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+Copyright (C) 1996, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -1969,10 +1969,18 @@ DEFUN(process_file, (jcf, out),
{
/* Strip off the ".class" portion of the name when printing
the include file name. */
- int len = strlen (jcf->classname);
+ char *name;
+ int i, len = strlen (jcf->classname);
if (len > 6 && ! strcmp (&jcf->classname[len - 6], ".class"))
len -= 6;
- print_include (out, jcf->classname, len);
+ /* Turn the class name into a file name. */
+ name = xmalloc (len + 1);
+ for (i = 0; i < len; ++i)
+ name[i] = jcf->classname[i] == '.' ? '/' : jcf->classname[i];
+ name[i] = '\0';
+ print_include (out, name, len);
+ free (name);
+
if (! flag_jni)
print_include (out, "gcj/cni", -1);
}