24 static void test(
const char *
base,
const char *rel)
26 char buf[200], buf2[200];
28 printf(
"%50s %-20s => %s\n", base, rel, buf);
31 snprintf(buf2,
sizeof(buf2),
"%s", base);
33 if (strcmp(buf, buf2)) {
34 printf(
"In-place handling of %s + %s failed\n", base, rel);
40 static void test2(
const char *url)
48 av_url_split(proto,
sizeof(proto), auth,
sizeof(auth), host,
sizeof(host), &port, path,
sizeof(path), url);
49 printf(
"%-60s => %-15s %-15s %-15s %5d %s\n", url, proto, auth, host, port, path);
54 printf(
"Testing ff_make_absolute_url:\n");
56 test(
"/foo/bar",
"baz");
57 test(
"/foo/bar",
"../baz");
58 test(
"/foo/bar",
"/baz");
59 test(
"/foo/bar",
"../../../baz");
60 test(
"http://server/foo/",
"baz");
61 test(
"http://server/foo/bar",
"baz");
62 test(
"http://server/foo/",
"../baz");
63 test(
"http://server/foo/bar/123",
"../../baz");
64 test(
"http://server/foo/bar/123",
"/baz");
65 test(
"http://server/foo/bar/123",
"https://other/url");
66 test(
"http://server/foo/bar?param=value/with/slashes",
"/baz");
67 test(
"http://server/foo/bar?param&otherparam",
"?someparam");
68 test(
"http://server/foo/bar",
"//other/url");
69 test(
"http://server/foo/bar",
"../../../../../other/url");
70 test(
"http://server/foo/bar",
"/../../../../../other/url");
71 test(
"http://server/foo/bar",
"/test/../../../../../other/url");
72 test(
"http://server/foo/bar",
"/test/../../test/../../../other/url");
74 printf(
"\nTesting av_url_split:\n");
76 test2(
"http://server/foo/");
77 test2(
"http://example.com/foo/bar");
78 test2(
"http://user:pass@localhost:8080/foo/bar/123");
79 test2(
"http://server/foo/bar?param=value/with/slashes");
80 test2(
"https://1l-lh.a.net/i/1LIVE_HDS@179577/master.m3u8");
81 test2(
"ftp://u:p%2B%2F2@ftp.pbt.com/ExportHD.mpg");
82 test2(
"https://key.dns.com?key_id=2&model_id=12345&&access_key=");
83 test2(
"http://example.com#tag");
void av_url_split(char *proto, int proto_size, char *authorization, int authorization_size, char *hostname, int hostname_size, int *port_ptr, char *path, int path_size, const char *url)
Split a URL string into components.
void ff_make_absolute_url(char *buf, int size, const char *base, const char *rel)
Convert a relative url into an absolute url, given a base url.
static void test2(const char *url)
unbuffered private I/O API
static void test(const char *base, const char *rel)