KHTTP_URLDECODE(3) Library Functions Manual KHTTP_URLDECODE(3)

khttp_urldecode, khttp_urldecode_inplace
URL decoding for kcgi

library “libkcgi”

#include <sys/types.h>
#include <stdarg.h>
#include <stdint.h>
#include <kcgi.h>

enum kcgi_err
khttp_urldecode(const char *src, char **dst);

enum kcgi_err
khttp_urldecode_inplace(char *src);

Decode the percent-encoded string src. In khttp_urldecode(), the result is placed in dst. In khttp_urldecode_inplace(), the input string src is overwritten with the result, which will be the same or shorter in length.

These accept uppercase and lowercase percent encoding, for example. “%A0” or “%a0”, respectively.

The deprecated form of these functions, kutil_urldecode() and kutil_urldecode_inplace(), should no longer be used.

khttp_urldecode() and khttp_urldecode_inplace() return an error code:
Success (not an error).
Memory failure (only khttp_urldecode()).
Malformed input or NULL src or dst arguments.

If khttp_urldecode() returns an error, it always sets dst to NULL. khttp_urldecode_inplace(), however, may leave a partially-decoded string in src.

Written by Kristaps Dzonsons <>.
April 10, 2020 OpenBSD 6.5