aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/jvgenmain.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/java/jvgenmain.c')
-rw-r--r--gcc/java/jvgenmain.c27
1 files changed, 10 insertions, 17 deletions
diff --git a/gcc/java/jvgenmain.c b/gcc/java/jvgenmain.c
index 8f59192..414ccde 100644
--- a/gcc/java/jvgenmain.c
+++ b/gcc/java/jvgenmain.c
@@ -34,7 +34,8 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
static char * do_mangle_classname PARAMS ((const char *string));
-struct obstack name_obstack;
+struct obstack name_obstack;
+struct obstack *mangle_obstack = &name_obstack;
void
gcc_obstack_init (obstack)
@@ -92,7 +93,7 @@ main (int argc, const char **argv)
classname = argv[i];
- gcc_obstack_init (&name_obstack);
+ gcc_obstack_init (mangle_obstack);
mangled_classname = do_mangle_classname (classname);
if (i < argc - 1 && strcmp (argv[i + 1], "-") != 0)
@@ -150,30 +151,22 @@ static char *
do_mangle_classname (string)
const char *string;
{
- char *ptr;
+ const char *ptr;
int count = 0;
-#define MANGLE_NAME() \
- { \
- char buffer [128]; \
- sprintf (buffer, "%d", count); \
- obstack_grow (&name_obstack, buffer, strlen (buffer)); \
- obstack_grow (&name_obstack, & ptr [-count], count); \
- count = 0; \
- }
-
obstack_grow (&name_obstack, "_ZN", 3);
- for (ptr = (char *)string; *ptr; ptr++ )
+ for (ptr = string; *ptr; ptr++ )
{
if (ptr[0] == '.')
{
- MANGLE_NAME ();
+ append_gpp_mangled_name (&ptr [-count], count);
+ count = 0;
}
else
count++;
}
- MANGLE_NAME ();
- obstack_grow0 (&name_obstack, "6class$E", 8);
- return obstack_finish (&name_obstack);
+ append_gpp_mangled_name (&ptr [-count], count);
+ obstack_grow (mangle_obstack, "6class$E", 8);
+ return obstack_finish (mangle_obstack);
}