2 * Decode %-encoding in URL style.
9 void percent_decode_bs(BinarySink
*bs
, ptrlen data
)
11 for (const char *p
= data
.ptr
, *e
= ptrlen_end(data
); p
< e
; p
++) {
13 if (c
== '%' && e
-p
>= 3 &&
14 isxdigit((unsigned char)p
[1]) &&
15 isxdigit((unsigned char)p
[2])) {
20 put_byte(bs
, strtoul(hex
, NULL
, 16));
29 void percent_decode_fp(FILE *fp
, ptrlen data
)
32 stdio_sink_init(&ss
, fp
);
33 percent_decode_bs(BinarySink_UPCAST(&ss
), data
);
36 strbuf
*percent_decode_sb(ptrlen data
)
38 strbuf
*sb
= strbuf_new();
39 percent_decode_bs(BinarySink_UPCAST(sb
), data
);