48272e481ae9768378a88da5019d61706e9feb9c
angie
  Fri Mar 10 11:12:53 2017 -0800
Libify the hgTables fix for problematic characters in download filenames and apply to hgVai, hgIntegrator and hgSession.  Thanks Jairo! refs #18931 note-10

diff --git src/hg/hgVai/hgVai.c src/hg/hgVai/hgVai.c
index 09d7605..8297ffa 100644
--- src/hg/hgVai/hgVai.c
+++ src/hg/hgVai/hgVai.c
@@ -1358,31 +1358,31 @@
 /* Get fileName from a bigData table (for when we don't have a trackDb, just table). */
 {
 struct sqlConnection *conn = hAllocConn(database);
 char query[512];
 sqlSafef(query, sizeof(query), "select fileName from %s", table);
 char *fileName = sqlQuickString(conn, query);
 hFreeConn(&conn);
 char *fileNameRewrite = hReplaceGbdb(fileName);
 freez(&fileName);
 return fileNameRewrite;
 }
 
 void textOpen()
 /* Start serving up plain text, possibly via a pipeline to gzip. */
 {
-char *fileName = cartUsualString(cart, "hgva_outFile", "");
+char *fileName = textOutSanitizeHttpFileName(cartUsualString(cart, "hgva_outFile", ""));
 char *compressType = cartUsualString(cart, "hgva_compressType", textOutCompressGzip);
 compressPipeline = textOutInit(fileName, compressType, NULL);
 }
 
 void setGpVarFuncFilter(struct annoGrator *gpVarGrator)
 /* Use cart variables to configure gpVarGrator's filtering by functional category. */
 {
 struct annoGratorGpVarFuncFilter aggvFuncFilter;
 ZeroVar(&aggvFuncFilter);
 aggvFuncFilter.intergenic = cartUsualBoolean(cart, "hgva_include_intergenic", TRUE);
 aggvFuncFilter.upDownstream = cartUsualBoolean(cart, "hgva_include_upDownstream", TRUE);
 aggvFuncFilter.nmdTranscript = cartUsualBoolean(cart, "hgva_include_nmdTranscript", TRUE);
 aggvFuncFilter.exonLoss = cartUsualBoolean(cart, "hgva_include_exonLoss", TRUE);
 aggvFuncFilter.utr = cartUsualBoolean(cart, "hgva_include_utr", TRUE);
 aggvFuncFilter.cdsSyn = cartUsualBoolean(cart, "hgva_include_cdsSyn", TRUE);