1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
hurl
----
Relatively simple HTTP, HTTPS, Gopher and Gemini client/file grabber.
Why?
----
Sometimes (or most of the time?) you just want to fetch a file via the HTTP,
HTTPS, Gopher or Gemini protocol.
The focus of this tool is only this.
Dependencies
------------
- C compiler (C99).
- libc + some BSD functions like err() and strlcat().
- LibreSSL(-portable)
- libtls (part of LibreSSL).
Optional dependencies
---------------------
- POSIX make(1) (for Makefile).
- mandoc for documentation: https://mdocml.bsd.lv/
Features
--------
- Uses OpenBSD pledge(2) and unveil(2). Allow no filesystem access (writes to
stdout).
- Impose time-out and maximum size limits.
- Use well-defined exitcodes for reliable scripting (curl sucks at this).
- Send as little information as possible (no User-Agent etc by default).
Anti-features
-------------
- No HTTP byte range support.
- No HTTP User-Agent.
- No HTTP If-Modified-Since/If-* support.
- No HTTP auth support.
- No HTTP/2+ support.
- No HTTP keep-alive.
- No HTTP chunked-encoding support.
- No HTTP redirect support.
- No (GZIP) compression support.
- No cookie-jar or cookie parsing support.
- No Gopher text handling (".\r\n").
- No Gemini certificate verification.
- No Gemini client certificate support.
- No Gemini redirect support.
- ... etc...
|