From 9921b31fc64b555cb5b2301f55ed36d2c9cab572 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Sat, 2 Oct 2004 10:52:59 +0000 Subject: [PATCH] Introduced relative counterparts of url_canon_split() and url_auto_canonicalize(). Also added parameter names to all prototypes. --- lib/url.c | 8 ++++---- lib/url.h | 24 +++++++++++++++--------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/lib/url.c b/lib/url.c index 8475a85f..0f574d1b 100644 --- a/lib/url.c +++ b/lib/url.c @@ -537,7 +537,7 @@ url_error(uns err) /* Standard cookbook recipes */ int -url_canon_split(byte *u, byte *buf1, byte *buf2, struct url *url) +url_canon_split_rel(byte *u, byte *buf1, byte *buf2, struct url *url, struct url *base) { int err; @@ -545,19 +545,19 @@ url_canon_split(byte *u, byte *buf1, byte *buf2, struct url *url) return err; if (err = url_split(buf1, url, buf2)) return err; - if (err = url_normalize(url, NULL)) + if (err = url_normalize(url, base)) return err; return url_canonicalize(url); } int -url_auto_canonicalize(byte *src, byte *dst) +url_auto_canonicalize_rel(byte *src, byte *dst, struct url *base) { byte buf1[MAX_URL_SIZE], buf2[MAX_URL_SIZE], buf3[MAX_URL_SIZE]; int err; struct url ur; - (void)((err = url_canon_split(src, buf1, buf2, &ur)) || + (void)((err = url_canon_split_rel(src, buf1, buf2, &ur, base)) || (err = url_pack(&ur, buf3)) || (err = url_enescape(buf3, dst))); return err; diff --git a/lib/url.h b/lib/url.h index a9c44498..45bc867e 100644 --- a/lib/url.h +++ b/lib/url.h @@ -29,8 +29,8 @@ /* Remove/Introduce '%' escapes */ -int url_deescape(byte *, byte *); -int url_enescape(byte *, byte *); +int url_deescape(byte *s, byte *d); +int url_enescape(byte *s, byte *d); /* URL splitting and normalization */ @@ -45,15 +45,21 @@ struct url { 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 *); -int url_auto_canonicalize(byte *, byte *); -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(byte *url, byte *buf1, byte *buf2, struct url *u, struct url *base); +int url_auto_canonicalize_rel(byte *src, byte *dst, struct url *base); +uns identify_protocol(byte *p); int url_has_repeated_component(byte *url); +static inline int url_canon_split(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(byte *src, byte *dst) +{ return url_auto_canonicalize_rel(src, dst, NULL); } + /* Error codes */ char *url_error(uns); -- 2.39.2