X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Furl.h;h=9390ae9322fba939be4d45bcd479c8a566baf897;hb=3ff0c1878796f707ba889f1875190a578aea512e;hp=07363f2e67d47e30cd0a2a79264072bf1abbb25e;hpb=bf285ff821b06bf89d0301bc2f1623ce4ee44869;p=libucw.git diff --git a/lib/url.h b/lib/url.h index 07363f2e..9390ae93 100644 --- a/lib/url.h +++ b/lib/url.h @@ -1,9 +1,16 @@ /* - * Sherlock Library -- URL Functions + * UCW Library -- URL Functions * - * (c) 1997 Martin Mares, + * (c) 1997--2004 Martin Mares + * (c) 2001 Robert Spalek + * + * This software may be freely distributed and used according to the terms + * of the GNU Lesser General Public License. */ +#ifndef _UCW_URL_H +#define _UCW_URL_H + #define MAX_URL_SIZE 1024 /* Non-control meanings of control characters */ @@ -22,8 +29,9 @@ /* Remove/Introduce '%' escapes */ -int url_deescape(byte *, byte *); -int url_enescape(byte *, byte *); +int url_deescape(const byte *s, byte *d); +int url_enescape(const byte *s, byte *d); +int url_enescape_friendly(const byte *src, byte *dest); // for cards.c only /* URL splitting and normalization */ @@ -31,18 +39,27 @@ struct url { byte *protocol; uns protoid; byte *user; + byte *pass; byte *host; uns port; /* ~0 if unspec */ byte *rest; byte *buf, *bufend; }; -int url_split(byte *, struct url *, byte *); -int url_normalize(struct url *, struct url *); -int url_canonicalize(struct url *); -int url_pack(struct url *, byte *); -int url_canon_split(byte *, byte *, byte *, struct url *); -uns identify_protocol(byte *); +int url_split(byte *s, struct url *u, byte *d); +int url_normalize(struct url *u, struct url *b); +int url_canonicalize(struct url *u); +int url_pack(struct url *u, byte *d); +int url_canon_split_rel(const byte *url, byte *buf1, byte *buf2, struct url *u, struct url *base); +int url_auto_canonicalize_rel(const byte *src, byte *dst, struct url *base); +uns identify_protocol(const byte *p); +int url_has_repeated_component(const byte *url); + +static inline int url_canon_split(const byte *url, byte *buf1, byte *buf2, struct url *u) +{ return url_canon_split_rel(url, buf1, buf2, u, NULL); } + +static inline int url_auto_canonicalize(const byte *src, byte *dst) +{ return url_auto_canonicalize_rel(src, dst, NULL); } /* Error codes */ @@ -69,3 +86,5 @@ char *url_error(uns); #define URL_PATH_FLAGS { 0, 1, 1, 1 } extern byte *url_proto_names[]; + +#endif