titan: accept either one or two positional arguments

titan: usage and exit on unknown flags

titan: clean up IRI/URI/URL mess; it's a IRI what we parse

titan: error if the URI is not titan://

titan: better logging for unexpected EOFs upon an unexpected EOF, tls_error() returns NULL, so log the real reason iomux returned -1.

titan: rename parse_err to errstr

titan: iomux: return -1 on EOF without receving anything otherwise it enters an infinite loop where it tries to read, return zero, and tries again...

titan: fix appending of path parameters the parameters need to be added at the end of the path, not at the end of the URL.

titan: parse the response code and exit accordingly Exit with 0 if the response code was in the 2x or 3x range, or with 2 for other codes. It already exits with 1 upon any other error (including parsing errors.) Print the redirect code on 3x to stdout and the meta to stderr for the 1x, 4x, 5x and 6x ranges.

run tls_connect_socket() after dropping the "inet dns" pledge promises

read from stdin if no file is given

titan: add compat shims to compile on !OpenBSD

add titan(1) -- a draft titan client