]> mj.ucw.cz Git - libucw.git/commitdiff
Introduced relative counterparts of url_canon_split() and url_auto_canonicalize().
authorMartin Mares <mj@ucw.cz>
Sat, 2 Oct 2004 10:52:59 +0000 (10:52 +0000)
committerMartin Mares <mj@ucw.cz>
Sat, 2 Oct 2004 10:52:59 +0000 (10:52 +0000)
Also added parameter names to all prototypes.

lib/url.c
lib/url.h

index 8475a85f378498835509117b51c5b35362f208eb..0f574d1b7e2895d8512a3a1e1f339d8d6342885d 100644 (file)
--- 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;
index a9c4449876646fccff0dfc8766e54505d53ecb74..45bc867e61d5e9ef494f62d0c2b002aa4a178730 100644 (file)
--- 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);