add: } else if (UCHAR(*p) == '+') { *q++ = ' '; ++p;
context: Ns_DecodeUrl(Ns_DString *dsPtr, char *string){    register int i, j, n;    register char *p, *q;    /*     * Expand the dstring to the length of the input     * string which will be the largest size required.     */    i = dsPtr->length;    Ns_DStringSetLength(dsPtr, i + strlen(string));    /*     * Copy the decoded characters directly to the dstring.     */    q = dsPtr->string + i;    p = string;    n = 0;    while (UCHAR(*p) != '\0') {	if (UCHAR(p[0]) == '%' &&	    (i = enc[UCHAR(p[1])].hex) >= 0 &&	    (j = enc[UCHAR(p[2])].hex) >= 0) {	    *q++ = (unsigned char) ((i << 4) + j);	    p += 3;	} else {	    *q++ = *p++;	}	++n;    }        /*     * Set the dstring length to the actual size required.     */    Ns_DStringSetLength(dsPtr, n);    return dsPtr->string;}