[kaffe] kaffeh and inner classes

Kurt Miller truk at optonline.net
Sat Jul 16 09:59:51 PDT 2005


From: "Guilhem Lavaux" <guilhem at kaffe.org>
> Thank you very much for your patch ! We are sometimes a bit low to
> answer and sorry for that. I will try it and if it looks ok it will go
> into CVS.

No worries. :-)

Here's a new version that also adds -bootclasspath for better
compatiblity with Suns javah.

I've got some other patches I'm working on for kaffeh/support.c
that fixes some issues there. I'll send that in a few days when
I've verified some more things.

--- kaffe/kaffeh/main.c.orig	Mon May  3 01:53:27 2004
+++ kaffe/kaffeh/main.c	Sat Jul 16 09:20:23 2005
@@ -60,7 +60,7 @@ int
 main(int argc, char* argv[])
 {
 	char* nm;
-	int i, first = 1;
+	int i, j, first = 1;
 	int farg;
 
 	/* Process arguments */
@@ -88,28 +88,37 @@ main(int argc, char* argv[])
 	for (nm = argv[farg]; nm != 0; nm = argv[++farg]) {
 
 		/* Derive various names from class name */
-		for (i = 0; nm[i] != 0; i++) {
-			if (i >= BUFSZ - 100) {
+		for (i = j = 0; nm[i] != 0; i++, j++) {
+			if (i >= BUFSZ - 100 || j >= BUFSZ - 105) {
 				dprintf(
 				    "kaffeh: class name too long\n");
 				exit(1);
 			}
 			switch (nm[i]) {
 			case '/':
-			case '$':
 			case '.':
-				className[i] = '_';
+				className[j] = '_';
 				pathName[i] = '/';
 				includeName[i] = '_';
 				break;
+			case '$':
+				className[j++] = '_';
+				className[j++] = '0';
+				className[j++] = '0';
+				className[j++] = '0';
+				className[j++] = '2';
+				className[j] = '4';
+				pathName[i] = nm[i];
+				includeName[i] = '_';
+				break;
 			default:
-				className[i] = nm[i];
+				className[j] = nm[i];
 				pathName[i] = nm[i];
 				includeName[i] = nm[i];
 				break;
 			}
 		}
-		className[i] = 0;
+		className[j] = 0;
 		pathName[i] = 0;
 		includeName[i] = 0;
 
@@ -234,6 +243,10 @@ options(int argc, char** argv)
 			i++;
 			strcpy(realClassPath, argv[i]);
 		}
+		else if (strcmp(argv[i], "-bootclasspath") == 0) {
+			i++;
+			strcpy(realClassPath, argv[i]);
+		}
 		else if (strcmp(argv[i], "-o") == 0) {
 			i++;
 			outputName = argv[i];
@@ -263,6 +276,7 @@ usage(void)
 	dprintf("	-help			Print this message\n");
 	dprintf("	-version		Print version number\n");
 	dprintf("	-classpath <path>	Set classpath\n");
+	dprintf("	-bootclasspath <path>	Set classpath\n");
 	dprintf("	-jni			Generate JNI interface\n");
 #ifdef KAFFE_VMDEBUG
 	dprintf("	-Xdebug <opts>		Kaffe debug options.\n");



More information about the kaffe mailing list