Appears to have some bugs.
smiGetFirstImport/smiGetNextImport are being used in fprintImports
instead of the importList that was built.
The attached patch (which can probably be done better) just leaves a
couple of:
170d169
< status current;
diff errors in "make check"
--
There's no point in being grown up if you can't be childish sometimes.
-- Dr. Who
Index: tools/dump-sming.c
===================================================================
--- tools/dump-sming.c (revision 8107)
+++ tools/dump-sming.c (working copy)
@@ -696,30 +696,30 @@
static void fprintImports(FILE *f, SmiModule *smiModule)
{
- SmiImport *import;
+ Import **import;
char *lastModuleName = NULL;
int pos = 0, len, maxlen = 0;
createImportList(smiModule);
- for (import = smiGetFirstImport(smiModule); import; import = smiGetNextImport(import)) {
- len = strlen(import->module);
+ for (import = &importList; *import; import = &(*import)->nextPtr) {
+ len = strlen((*import)->module);
maxlen = (len > maxlen) ? len : maxlen;
}
- for (import = smiGetFirstImport(smiModule); import; import = smiGetNextImport(import)) {
- int yaba = !lastModuleName || strcmp(import->module, lastModuleName);
+ for (import = &importList; *import; import = &(*import)->nextPtr) {
+ int yaba = !lastModuleName || strcmp((*import)->module, lastModuleName);
if (yaba) {
if (lastModuleName) {
fprint(f, ");\n");
}
fprintSegment(f, INDENT, "", 0);
- fprint(f, "import %-*s (", maxlen, import->module);
+ fprint(f, "import %-*s (", maxlen, (*import)->module);
pos = INDENT + 12 + maxlen;
} else {
fprint(f, ", ");
}
- len = strlen(import->name);
+ len = strlen((*import)->name);
if (len + pos > INDENTMAX) {
fprint(f, "\n");
fprintSegment(f, INDENT, "", 0);
@@ -727,9 +727,9 @@
fprint(f, " %-*s ", maxlen, "");
pos = INDENT + 12 + maxlen;
}
- fprint(f, "%s", import->name);
+ fprint(f, "%s", (*import)->name);
pos += len;
- lastModuleName = import->module;
+ lastModuleName = (*import)->module;
}
if (lastModuleName) {