#include #include char asciHexToChar(char *hex) { char retval = 0; char tmp; if ((tmp = hex[0]) >= 'A' && tmp <= 'F') retval |= 10 + tmp - 'A'; else if (tmp >= 'a' && tmp <= 'f') retval |= 10 + tmp - 'a'; else if (tmp >= '0' && tmp <= '9') retval |= tmp - '0'; retval = retval << 4; if ((tmp = hex[1]) >= 'A' && tmp <= 'F') retval |= 10 + tmp - 'A'; else if (tmp >= 'a' && tmp <= 'f') retval |= 10 + tmp - 'a'; else if (tmp >= '0' && tmp <= '9') retval |= tmp - '0'; return retval; } char *unescapeString(char *queryString) { char *dst = queryString, *src = queryString; while (*src != 0) { // convert '+' to a space if (*src == '+') *dst = ' '; // covert something with % to their real value else if (*src == '%' && *(++src) != 0 && *(src+1) != 0) { *dst = asciHexToChar(src); src++; // anders kopieer } else *dst = *src; src++; dst++; } // sluit af *dst = 0; return queryString; } int main(int argc, char **argv) { int i; if (argc < 2) { fprintf(stderr, "%s: Wrong number of paramters...\n", argv[0]); exit(1); } printf("%s", unescapeString(argv[1])); for (i = 2; i < argc; i++) { printf(" %s", unescapeString(argv[i])); } exit(0); }