#ifndef COSMOPOLITAN_NET_HTTP_URL_H_ #define COSMOPOLITAN_NET_HTTP_URL_H_ #define kUrlPlus 1 #define kUrlLatin1 2 #define kUrlOpaque 4 COSMOPOLITAN_C_START_ struct UrlView { size_t n; char *p; }; struct UrlParams { size_t n; struct UrlParam { struct UrlView key; struct UrlView val; } *p; }; struct Url { struct UrlView scheme; /* must be [A-Za-z][-+.0-9A-Za-z]* or empty */ struct UrlView user; /* depends on host non-absence */ struct UrlView pass; /* depends on user non-absence */ struct UrlView host; /* or reg_name */ struct UrlView port; /* depends on host non-absence */ struct UrlView path; /* or opaque_part */ struct UrlParams params; struct UrlView fragment; }; char *EncodeUrl(struct Url *, size_t *) libcesque; char *ParseUrl(const char *, size_t, struct Url *, int) libcesque; char *ParseParams(const char *, size_t, struct UrlParams *) libcesque; char *ParseHost(const char *, size_t, struct Url *) libcesque; char *EscapeUrlView(char *, struct UrlView *, const char[256]) libcesque; COSMOPOLITAN_C_END_ #endif /* COSMOPOLITAN_NET_HTTP_URL_H_ */