3b42c8080b54ad87a6c37efbb3a78a0781b7e8ac
angie
Fri Jan 11 10:35:21 2019 -0800
Fixing unencoded HTML characters caught by Daniel's testing. Also, when we quit, there might be thousands of errors left in the file, so say 'At least N errors...'. refs #22638
diff --git src/hg/lib/cart.c src/hg/lib/cart.c
index 1779f82..c1910f3 100644
--- src/hg/lib/cart.c
+++ src/hg/lib/cart.c
@@ -788,55 +788,57 @@
errorSum > CART_LOAD_TOO_MANY_ERRORS &&
stats->validCount < CART_LOAD_ENOUGH_VALID) ||
errorSum > CART_LOAD_WAY_TOO_MANY_ERRORS);
}
return FALSE;
}
#define CART_VAR_MAX_LENGTH 1024
#define CART_VAL_MAX_LENGTH (64 * 1024)
static void vsReport(struct validityStats *stats, struct dyString *dyMessage)
/* Append summary/explanation to dyMessage. */
{
if (stats && dyMessage)
{
+ boolean quitting = vsTooManyErrors(stats);
+ char *atLeast = (quitting ? "At least " : "");
dyStringPrintf(dyMessage, "
%d valid settings found. ", stats->validCount);
if (stats->binaryCount || stats->weirdCharsCount || stats->dataCount ||
stats->varTooLongCount || stats->valTooLongCount)
dyStringPrintf(dyMessage, "Note: invalid settings were found and omitted. ");
if (stats->binaryCount)
- dyStringPrintf(dyMessage, "%d setting names contained binary data. ",
- stats->binaryCount);
+ dyStringPrintf(dyMessage, "%s%d setting names contained binary data. ",
+ atLeast, stats->binaryCount);
if (stats->weirdCharsCount)
dyStringPrintf(dyMessage,
- "%d setting names contained unexpected characters, for example '%s'. ",
- stats->weirdCharsCount, stats->weirdCharsExample);
+ "%s%d setting names contained unexpected characters, for example '%s'. ",
+ atLeast, stats->weirdCharsCount, htmlEncode(stats->weirdCharsExample));
if (stats->dataCount)
- dyStringPrintf(dyMessage, "%d lines appeared to be custom track data, for example "
+ dyStringPrintf(dyMessage, "%s%d lines appeared to be custom track data, for example "
"a line begins with '%s'. ",
- stats->dataCount, stats->dataExample);
+ atLeast, stats->dataCount, stats->dataExample);
if (stats->varTooLongCount)
- dyStringPrintf(dyMessage, "%d setting names were too long (up to %d). ",
- stats->varTooLongCount, stats->varTooLongLength);
+ dyStringPrintf(dyMessage, "%s%d setting names were too long (up to %d). ",
+ atLeast, stats->varTooLongCount, stats->varTooLongLength);
if (stats->valTooLongCount)
- dyStringPrintf(dyMessage, "%d setting values were too long (up to %d). ",
- stats->valTooLongCount, stats->valTooLongLength);
- }
-if (vsTooManyErrors(stats))
+ dyStringPrintf(dyMessage, "%s%d setting values were too long (up to %d). ",
+ atLeast, stats->valTooLongCount, stats->valTooLongLength);
+ if (quitting)
dyStringPrintf(dyMessage, "Encountered too many errors -- quitting. ");
}
+}
// Our timestamp vars (_, hgt_) are an exception to the usual cart var naming patterns:
#define CART_VAR_TIMESTAMP "^([a-z]+)?_$"
// Legitimate cart vars look like this (but so do some not-vars, so we filter further below):
#define CART_VAR_VALID_CHARACTERS "^[A-Za-z]([A-Za-z0-9._:-]*[A-Za-z0-9]+)?$"
// These are "cart variables" that are actually custom track data:
static char *cartVarBlackList[] = { "X",
"Y",
"MT",
"fixedStep",
"variableStep",
};
// Prefixes of "cart variables" from data files that have caused trouble in the past: