diff --git a/.gitignore b/.gitignore index 38c2c24..de971ab 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,5 @@ reference.out reference.exe parse.out parse.exe +decode_field.out +decode_field.exe diff --git a/build.bat b/build.bat index debe651..4a821d0 100644 --- a/build.bat +++ b/build.bat @@ -1,2 +1,3 @@ -gcc url.c examples/reference.c -o reference.exe -Wall -Wextra -ggdb -gcc url.c examples/parse.c -o parse.exe -Wall -Wextra -ggdb +gcc url.c examples/reference.c -o reference.exe -Wall -Wextra -ggdb +gcc url.c examples/parse.c -o parse.exe -Wall -Wextra -ggdb +gcc url.c examples/decode_field.c -o decode_field.exe -Wall -Wextra -ggdb diff --git a/build.sh b/build.sh index 1a4ab96..7f7ac67 100644 --- a/build.sh +++ b/build.sh @@ -1,2 +1,3 @@ -gcc url.c examples/reference.c -o reference.out -Wall -Wextra -ggdb -gcc url.c examples/parse.c -o parse.out -Wall -Wextra -ggdb +gcc url.c examples/reference.c -o reference.out -Wall -Wextra -ggdb +gcc url.c examples/parse.c -o parse.out -Wall -Wextra -ggdb +gcc url.c examples/decode_field.c -o decode_field.out -Wall -Wextra -ggdb diff --git a/examples/decode_field.c b/examples/decode_field.c new file mode 100644 index 0000000..2066aed --- /dev/null +++ b/examples/decode_field.c @@ -0,0 +1,29 @@ +#include +#include +#include "../url.h" + +int main(void) +{ + char src[] = "http://web%73ite.com"; + + URL parsed; + int ret = url_parse(src, strlen(src), NULL, 1, &parsed); + if (ret < 0) { + printf("Couldn't parse base URL\n"); + return -1; + } + + printf("%.*s\n", + parsed.host_text.len, + parsed.host_text.ptr); + + char buf[100]; + ret = url_decode_field(parsed.host_text, buf, (int) sizeof(buf)-1); + if (ret < 0 || ret >= (int) sizeof(buf)) { + printf("Couldn't decode field\n"); + return -1; + } + + printf("%.*s\n", ret, buf); + return 0; +}