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/inc/textOut.h src/inc/textOut.h index 2775f66..de8224b 100644 --- src/inc/textOut.h +++ src/inc/textOut.h @@ -1,48 +1,53 @@ /* textOut - set up stdout to be HTTP text, file or compressed file. */ #ifndef TEXTOUT_H #define TEXTOUT_H #include "pipeline.h" /* Supported compression types: */ #define textOutCompressNone "none" #define textOutCompressBzip2 "bzip2" #define textOutCompressCompress "compress" #define textOutCompressGzip "gzip" #define textOutCompressZip "zip" /* Menu and values for passing to cgiMakeDropListFull: */ /* (not declaring the static char *[]'s here because those can lead to * "variable defined but not used" warnings -- declare locally.) */ #define textOutCompressMenuContents { "plain text",\ "gzip compressed (.gz)",\ "bzip2 compressed (.bz2)",\ "LZW compressed (.Z)",\ "zip compressed (.zip)",\ NULL\ } #define textOutCompressValuesContents { textOutCompressNone,\ textOutCompressGzip,\ textOutCompressBzip2,\ textOutCompressCompress,\ textOutCompressZip,\ NULL\ } char *getCompressSuffix(char *compressType); /* Return the file dot-suffix (including the dot) for compressType. */ struct pipeline *textOutInit(char *fileName, char *compressType, int *saveStdout); /* Set up stdout to be HTTP text, file (if fileName is specified), or * compressed file (if both fileName and a supported compressType are * specified). * Return NULL if no compression, otherwise a pipeline handle on which * textOutClose should be called when we're done writing stdout. */ void textOutClose(struct pipeline **pCompressPipeline, int *saveStdout); /* Flush and close stdout, wait for the pipeline to finish, and then free * the pipeline object. */ +char *textOutSanitizeHttpFileName(char *fileName); +/* Replace troublesome characters in a fileName for HTTP download entered by the user, + * such as '/' which textOutInit interprets as implying a local file and ',' which + * messes up the HTTP response header syntax. */ + #endif /* TEXTOUT_H */