There's a simple bug in kaffeh. The '-base' option is trashing anything that the '-d' (output directory) option does. Attached is a simple patch to fix this. Tim, I sent you a separate message with more patchiness in it. Apply this in the kaffe/kaffeh subdirectory. -Pat Index: main.c =================================================================== RCS file: /n/fast/usr/lsrc/mach/CVS/kaffe/kaffe/kaffeh/main.c,v retrieving revision 1.1.1.1.2.1 diff -u -b -r1.1.1.1.2.1 main.c --- main.c 1997-05-15 13:55:49-06 1.1.1.1.2.1 +++ main.c 1997-05-28 22:26:43-06 @@ -18,6 +18,8 @@ #define BUFSZ 100 #define PATHSZ 1024 +#define PATH_SEP_CHAR '/' + FILE* include; FILE* stub = 0; char className[BUFSZ]; @@ -25,6 +27,7 @@ char includeName[BUFSZ]; char stubName[BUFSZ]; char realClassPath[PATHSZ]; +char tmpName[BUFSZ]; int flag_shrt = 0; int flag_stub = 0; @@ -74,18 +77,7 @@ } for (nm = argv[farg]; nm != 0; nm = argv[++farg]) { - /* Prepend a directory name if given */ - if (directoryName != 0) { - strcpy(stubName, directoryName); - strcpy(includeName, directoryName); - j = strlen(directoryName); - stubName[j] = '/'; - includeName[j] = '/'; - j++; - } - else { j = 0; - } for (i = 0; nm[i] != 0; i++) { switch (nm[i]) { case '/': @@ -124,6 +116,27 @@ break; } } + } + + /* Prepend a directory name if given */ + if (directoryName != 0) { + int dirLen; + + dirLen = strlen(directoryName); + + assert(dirLen + strlen(stubName) < BUFSZ); + assert(dirLen + strlen(includeName) < BUFSZ); + + strcpy(tmpName, stubName); + strcpy(stubName, directoryName); + stubName[dirLen] = PATH_SEP_CHAR; + strcat(stubName, tmpName); + + strcpy(tmpName, includeName); + strcpy(includeName, directoryName); + includeName[dirLen] = PATH_SEP_CHAR; + strcat(includeName, tmpName); + } strcat(includeName, postfix);