]> mj.ucw.cz Git - libucw.git/blobdiff - lib/url.c
One more round of changes to the assert code -- I didn't realize that CONFIG_DEBUG
[libucw.git] / lib / url.c
index cb577cb1625f7ad07e4adcf19fd32a406034bd08..0f574d1b7e2895d8512a3a1e1f339d8d6342885d 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -368,8 +368,7 @@ url_normalize(struct url *u, struct url *b)
   int err;
 
   /* Basic checks */
   int err;
 
   /* Basic checks */
-  if (url_proto_path_flags[u->protoid] && !u->host ||
-      u->host && !*u->host ||
+  if (url_proto_path_flags[u->protoid] && (!u->host || !*u->host) ||
       !u->host && u->user ||
       !u->user && u->pass ||
       !u->rest)
       !u->host && u->user ||
       !u->user && u->pass ||
       !u->rest)
@@ -538,7 +537,7 @@ url_error(uns err)
 /* Standard cookbook recipes */
 
 int
 /* 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;
 
 {
   int err;
 
@@ -546,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;
     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
     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;
 
 {
   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;
    (err = url_pack(&ur, buf3)) ||
    (err = url_enescape(buf3, dst)));
   return err;