89cacc8b69a80a7e2787aaf9082782a83352d789 galt Tue Oct 4 14:34:03 2016 -0700 refs #18175. more elegant code for the hex decoder for attr css js url. Thanks Angie. diff --git src/lib/tests/testDecodedString.c src/lib/tests/testDecodedString.c index 5c9fa5d..19293dd 100644 --- src/lib/tests/testDecodedString.c +++ src/lib/tests/testDecodedString.c @@ -1,77 +1,82 @@ /* testQuotedString - test the parseQuotedString function */ /* Copyright (C) 2008 The Regents of the University of California * See README in this or parent directory for licensing information. */ #include "common.h" #include "options.h" #include "obscure.h" #include "dystring.h" #include "htmshell.h" void usage() /* Explain usage and exit */ { errAbort( "testDecodedString - test the htmshell decode functions\n" "usage:\n" " testDecodedString type <some quote char>[any characters]<some quote char>\n" " whatever is given on the command line: [any characters] will be parsed\n" " the first character encountered will be the quote character\n" " the string must end with that quote character\n" " beware of your shell consuming your quote characters if you want\n" " to use \" or \'\n" " type can be any of these: attr css js url\n" " -verbose=2 to mirror [any characters]\n" +" HH stands for 2 hex digits 0-9 A-F a-f\n" +"attr \"&#xHH;\"\n" +"css \"\\HH \" (trailing space critical)\n" +"js \"\\xHH\"\n" +"url \"%%HH\"\n" ); } static struct optionSpec options[] = { {NULL, 0}, }; int main(int argc, char *argv[]) /* Process command line. */ { optionInit(&argc, argv, options); if (argc < 3) usage(); int i; char *type = argv[1]; struct dyString *cmdArgs = newDyString(0); for (i = 2; i < argc; ++i) { if (i > 2) dyStringPrintf(cmdArgs, " %s", argv[i]); else dyStringPrintf(cmdArgs, "%s", argv[i]); } char *dupe = cloneString(cmdArgs->string); verbose(2, "command line: '%s'\n", cmdArgs->string); if (sameString(type,"attr")) { verbose(1,"============ attributeDecode\n"); attributeDecode(dupe); verbose(1, "attr decoded to: '%s'\n", dupe); } else if (sameString(type,"css")) { verbose(1,"============ cssDecode\n"); cssDecode(dupe); verbose(1, "css decoded to: '%s'\n", dupe); } else if (sameString(type,"js")) { verbose(1,"============ jsDecode\n"); jsDecode(dupe); verbose(1, "js decoded to: '%s'\n", dupe); } else if (sameString(type,"url")) { verbose(1,"============ urlDecode\n"); urlDecode(dupe); verbose(1, "url decoded to: '%s'\n", dupe); } freeDyString(&cmdArgs); return 0; }