Re: [PATCH] - further improved decoding of URL special characters
Morten Nilsen <[email protected]> Sat, 05 Nov 2005 19:26:52 +0100
| Newsgroups | gmane.comp.multimedia.xmms.devel |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format.
--------------070602060405000902090804
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Peter Ganzhorn wrote:
> +int urldecodestr( char *buf )
> +{
> + const char *r = buf;
> + while( *r ) {
> + switch( *r ) {
> + case '%':
> + /* Is this followed by a 2-digit hex string? */
> + if( isxdigit(r[1]) && isxdigit(r[2]) )
> + {
> + char hexstr[2];
> + int i;
> + hexstr[0] = *++r;
> + hexstr[1] = *++r;
> + ++r;
> + sscanf( hexstr, "%x", &i );
> + *buf++ = i;
> + break;
> + }
> + /* No, examine next char. */
> + default:
> + *buf++ = *r++;
> + }
> + }
> + *buf = 0;
> + return 0;
> +}
I must say, I don't quite like that code... so I wrote a replacement -
attached as a .c-file
Cheers,
--
Morten
--------------070602060405000902090804
Content-Type: text/plain;
name="urldecode.c"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="urldecode.c"
aW50IGNoYXIyaW50KCBjaGFyIGNoICkKewoJc2hvcnQgbiA9IGNoICYgMHhmOwoJc3dpdGNo
KGNoID4+IDQpCgl7CgkJY2FzZSA0OiAvLyBVcHBlcmNhc2UgbGV0dGVyCgkJY2FzZSA2OiAv
LyBMb3dlcmNhc2UgbGV0dGVyCgkJCW4gKz0gOTsKCQkJaWYobiA8IDEwIHx8IG4gPiAxNSkK
CQkJCW4gPSAtMTsgCgkJY2FzZSAzOiAvLyBOdW1iZXIKCQkJYnJlYWs7CgkJZGVmYXVsdDoK
CQkJbiA9IC0xOwoJfQoJcmV0dXJuIG47Cn0KCnZvaWQgdXJsZGVjb2Rlc3RyKCBjaGFyICpi
dWYgKQp7Cgljb25zdCBjaGFyICpyID0gYnVmOwoJY2hhciBiLCBjOwoJd2hpbGUoICpyICkg
ewoJCWlmKCpyID09ICclJykgewoJCQliID0gY2hhcjJpbnQoclsxXSk7CgkJCWMgPSBjaGFy
MmludChyWzJdKTsKCQkJaWYoYiA+PSAwICYmIGMgPj0gMCkgewoJCQkJciArPSAzOwoJCQkJ
KmJ1ZisrID0gKGIgPDwgNCkgfCBjOwoJCQkJY29udGludWU7CgkJCX0KCQl9CgkJKmJ1Zisr
ID0gKnIrKzsKCX0KCSpidWYgPSAwOwp9Cg==
--------------070602060405000902090804
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
xmms-devel mailing list
[email protected]
http://lists.xmms.org/mailman/listinfo/xmms-devel
--------------070602060405000902090804--