#include #include #include #include int decode_uri(char *uri, char *resbuf) { int i = 0, j = 0; char c, code[3] = {NULL, NULL, NULL}; while ((c = uri[i++]) != NULL) { if (c == '%') if (isxdigit(uri[i]) && (uri[i+1] != NULL) && isxdigit(uri[i+1])) { strncpy(code, &uri[i], 2); resbuf[j++] = (char) strtol(code, NULL, 16); i += 2; } else return -1; else resbuf[j++] = c; } return 0; }