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--