author | Sunil Nimmagadda <sunil@nimmagadda.net> |
Tue, 06 Dec 2022 13:51:55 +0000 | |
changeset 0 | 1d0ce1ebbc72 |
permissions | -rw-r--r-- |
0
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
1 |
/* |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
2 |
* Copyright (c) 2020 Sunil Nimmagadda <sunil@openbsd.org> |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
3 |
* |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
4 |
* Permission to use, copy, modify, and distribute this software for any |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
5 |
* purpose with or without fee is hereby granted, provided that the above |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
6 |
* copyright notice and this permission notice appear in all copies. |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
7 |
* |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
8 |
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
9 |
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
10 |
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
11 |
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
12 |
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
13 |
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
14 |
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
15 |
*/ |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
16 |
|
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
17 |
#include <err.h> |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
18 |
#include <signal.h> |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
19 |
#include <stdio.h> |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
20 |
#include <string.h> |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
21 |
|
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
22 |
#include "ftp.h" |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
23 |
|
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
24 |
struct url *ftp_proxy, *http_proxy; |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
25 |
volatile sig_atomic_t interrupted; |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
26 |
const char *useragent; |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
27 |
char *oarg; |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
28 |
int activemode, family, io_debug, verbose, progressmeter; |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
29 |
|
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
30 |
int |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
31 |
fd_request(char *path, int flags, off_t *offset) |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
32 |
{ |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
33 |
/* dummy */ |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
34 |
return 0; |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
35 |
} |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
36 |
|
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
37 |
static struct { |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
38 |
const char *str; |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
39 |
struct url url; |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
40 |
int noparse; |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
41 |
} testcases[] = { |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
42 |
{ "http://google.com/index.html", { |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
43 |
S_HTTP, 0, "google.com", "80", "/index.html" } }, |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
44 |
{ "https://google.com:", { |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
45 |
S_HTTPS, 0, "google.com", "443" } }, |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
46 |
{ "file:.", { |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
47 |
S_FILE, 0, NULL, NULL, "." } }, |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
48 |
{ "http://[::1]:/index.html", { |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
49 |
S_HTTP, 1, "::1", "80", "/index.html" } }, |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
50 |
{ "http://[::1]:1234/", { |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
51 |
S_HTTP, 1, "::1", "1234", "/" } }, |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
52 |
{ "foo.bar", {}, 1 }, |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
53 |
{ "http://[::1:1234", {}, 1 }, |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
54 |
{ "http://[1::2::3]:1234", { |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
55 |
S_HTTP, 0, "1::2::3", "1234" } }, |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
56 |
{ "http://foo.com:bar", { |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
57 |
S_HTTP, 0, "foo.com", "bar" } }, |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
58 |
{ "http:/foo.com", {}, 1 }, |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
59 |
{ "http://foo:bar@baz.com", { |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
60 |
S_HTTP, 0, "baz.com", "80" } }, |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
61 |
{ "http://[::1]abcd/", {}, 1 }, |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
62 |
{ " http://localhost:8080", { |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
63 |
S_HTTP, 0, "localhost", "8080" } }, |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
64 |
{ "ftps://localhost:21", {}, 1 }, |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
65 |
{ "http://marc.info/?l=openbsd-tech&m=151790635206581&q=raw", { |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
66 |
S_HTTP, 0, "marc.info", "80", "/?l=openbsd-tech&m=151790635206581&q=raw" } }, |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
67 |
{ "file://disklabel.template", { |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
68 |
S_FILE, 0, NULL, NULL, "/disklabel.template" } }, |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
69 |
{ "file:/disklabel.template", { |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
70 |
S_FILE, 0, NULL, NULL, "/disklabel.template" } }, |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
71 |
{ "file:///disklabel.template", { |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
72 |
S_FILE, 0, NULL, NULL, "/disklabel.template" } }, |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
73 |
}; |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
74 |
|
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
75 |
static int |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
76 |
ptr_null_cmp(void *a, void *b) |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
77 |
{ |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
78 |
if ((a && b == NULL) || (a == NULL && b)) |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
79 |
return 1; |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
80 |
|
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
81 |
return 0; |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
82 |
} |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
83 |
|
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
84 |
static int |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
85 |
url_cmp(struct url *a, struct url *b) |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
86 |
{ |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
87 |
if (ptr_null_cmp(a, b) || |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
88 |
ptr_null_cmp(a->host, b->host) || |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
89 |
ptr_null_cmp(a->port, b->port) || |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
90 |
ptr_null_cmp(a->path, b->path)) |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
91 |
return 1; |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
92 |
|
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
93 |
if (a->scheme != b->scheme || |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
94 |
(a->host && strcmp(a->host, b->host)) || |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
95 |
(a->port && strcmp(a->port, b->port)) || |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
96 |
(a->path && strcmp(a->path, b->path))) |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
97 |
return 1; |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
98 |
|
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
99 |
return 0; |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
100 |
} |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
101 |
|
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
102 |
int |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
103 |
main(void) |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
104 |
{ |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
105 |
struct url *url, *eurl; |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
106 |
size_t i; |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
107 |
|
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
108 |
if (freopen("/dev/null", "w", stderr) == NULL) |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
109 |
err(1, "freopen"); |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
110 |
|
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
111 |
for (i = 0; i < nitems(testcases); i++) { |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
112 |
url = url_parse(testcases[i].str); |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
113 |
if (testcases[i].noparse) { |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
114 |
if (url != NULL) |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
115 |
goto bad; |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
116 |
|
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
117 |
continue; |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
118 |
} |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
119 |
|
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
120 |
if (url_cmp(url, &testcases[i].url) != 0) |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
121 |
goto bad; |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
122 |
} |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
123 |
|
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
124 |
return 0; |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
125 |
|
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
126 |
bad: |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
127 |
printf("%s\n", testcases[i].str); |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
128 |
eurl = &testcases[i].url; |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
129 |
printf("Expected: scheme = %s, host = %s, port = %s, path = %s\n", |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
130 |
url_scheme_str(eurl->scheme), eurl->host, eurl->port, eurl->path); |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
131 |
printf("Got: scheme = %s, host = %s, port = %s, path = %s\n", |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
132 |
url_scheme_str(url->scheme), url->host, url->port, url->path); |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
133 |
return 1; |
1d0ce1ebbc72
An HTTP(S), FTP client.
Sunil Nimmagadda <sunil@nimmagadda.net>
parents:
diff
changeset
|
134 |
} |