b3834f9b6ec64e8b6018eca2c0c737cbd394484c kent Sat Dec 19 11:24:16 2020 -0800 Handling some syntax errors with meaningful error messages rather than program crashes. diff --git src/tabFile/tabToTabDir/tabToTabDir.c src/tabFile/tabToTabDir/tabToTabDir.c index 6e3f3f8..3f10336 100644 --- src/tabFile/tabToTabDir/tabToTabDir.c +++ src/tabFile/tabToTabDir/tabToTabDir.c @@ -211,41 +211,45 @@ if (isEmpty(val)) errAbort("Nothing following %c line %d of %s", c, fileLineNumber, fileName); fv->type = fvLink; ++gLinkFields; } else { if (c == '$') { char *command = skipLeadingSpaces(s+1); s = skipToSpaces(command); fv->combineHash = hashNew(0); if (startsWithWord("count", command)) { if (!isEmpty(s)) - errAbort("Something following $count line %d of %s", fileLineNumber, fileName);; + errAbort("Something following $count line %d of %s", fileLineNumber, fileName); fv->combineType = ctCount; fv->type = fvCount; } else if (startsWithWord("list", command)) { fv->combineType = ctUniq; + if (isEmpty(skipLeadingSpaces(s))) + errAbort("Missing parameters to $list line %d of %s", fileLineNumber, fileName); } else if (startsWithWord("stats", command)) { fv->combineType = ctStats; + if (isEmpty(skipLeadingSpaces(s))) + errAbort("Missing parameters to $stats line %d of %s", fileLineNumber, fileName); } else { errAbort("Unrecognized command $%s line %d of %s", command, fileLineNumber, fileName); } } if (fv->combineHash == NULL || fv->combineType != ctCount) { if (isTotallySimple(s) && hashLookup(symbols->varHash, s) == NULL) { fv->val = cloneString(skipLeadingSpaces(s)); eraseTrailingSpaces(fv->val); fv->type = fvVar; } else