2 * Sherlock Library -- URL Functions
4 * (c) 1997 Martin Mares, <mj@atrey.karlin.mff.cuni.cz>
7 #define MAX_URL_SIZE 1024
9 /* Non-control meanings of control characters */
11 #define NCC_SEMICOLON 1
20 /* Remove/Introduce '%' escapes */
22 int url_deescape(byte *, byte *);
23 int url_enescape(byte *, byte *);
25 /* URL splitting and normalization */
32 uns port; /* ~0 if unspec */
37 int url_split(byte *, struct url *, byte *);
38 int url_normalize(struct url *, struct url *);
39 int url_canonicalize(struct url *);
40 int url_pack(struct url *, byte *);
41 int url_canon_split(byte *, byte *, byte *, struct url *);
42 uns identify_protocol(byte *);
48 #define URL_ERR_TOO_LONG 1
49 #define URL_ERR_INVALID_CHAR 2
50 #define URL_ERR_INVALID_ESCAPE 3
51 #define URL_ERR_INVALID_ESCAPED_CHAR 4
52 #define URL_ERR_INVALID_PORT 5
53 #define URL_ERR_REL_NOTHING 6
54 #define URL_ERR_UNKNOWN_PROTOCOL 7
55 #define URL_SYNTAX_ERROR 8
56 #define URL_PATH_UNDERFLOW 9
58 #define URL_PROTO_UNKNOWN 0
59 #define URL_PROTO_HTTP 1
60 #define URL_PROTO_FTP 2
61 #define URL_PROTO_MAX 3
63 #define URL_PNAMES { "unknown", "http", "ftp" }