[kaffe] kaffeh and inner classes

Kurt Miller truk at optonline.net
Fri Jul 15 14:07:35 PDT 2005


From: "Kurt Miller" <truk at optonline.net>
> can kaffeh be used on inner classes? 
> 
> It seems like it doesn't deal with the $ character correctly
> and interprets it as a path separator.

Here's a patch that deals with the $ for inner classes.
The "class name too long" check looks arbitrary to me.
Not really sure where 100 comes from.

--- kaffe/kaffeh/main.c.orig	Mon May  3 01:53:27 2004
+++ kaffe/kaffeh/main.c	Fri Jul 15 17:40:44 2005
@@ -60,7 +60,7 @@
 main(int argc, char* argv[])
 {
 	char* nm;
-	int i, first = 1;
+	int i, j, first = 1;
 	int farg;
 
 	/* Process arguments */
@@ -88,28 +88,37 @@
 	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;
 



More information about the kaffe mailing list