]> mj.ucw.cz Git - libucw.git/blobdiff - lib/url.h
IP parsing code moved to lib/conf.c, closes Bug #2375.
[libucw.git] / lib / url.h
index e36b46a65b35bebdafc646cb769343db5010b57f..8e92d7c57f3365f93304a3ff17c65cc5f4e4c411 100644 (file)
--- a/lib/url.h
+++ b/lib/url.h
@@ -1,9 +1,16 @@
 /*
 /*
- *     Sherlock Library -- URL Functions
+ *     UCW Library -- URL Functions
  *
  *
- *     (c) 1997 Martin Mares <mj@ucw.cz>
+ *     (c) 1997--2004 Martin Mares <mj@ucw.cz>
+ *     (c) 2001 Robert Spalek <robert@ucw.cz>
+ *
+ *     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 */
 #define MAX_URL_SIZE 1024
 
 /* Non-control meanings of control characters */
@@ -22,8 +29,9 @@
 
 /* Remove/Introduce '%' escapes */
 
 
 /* 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);
+int url_enescape_friendly(byte *src, byte *dest);      // for cards.c only
 
 /* URL splitting and normalization */
 
 
 /* URL splitting and normalization */
 
@@ -31,18 +39,27 @@ struct url {
   byte *protocol;
   uns protoid;
   byte *user;
   byte *protocol;
   uns protoid;
   byte *user;
+  byte *pass;
   byte *host;
   uns port;                            /* ~0 if unspec */
   byte *rest;
   byte *buf, *bufend;
 };
 
   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(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 */
 
 
 /* Error codes */
 
@@ -69,3 +86,5 @@ char *url_error(uns);
 #define URL_PATH_FLAGS { 0, 1, 1, 1 }
 
 extern byte *url_proto_names[];
 #define URL_PATH_FLAGS { 0, 1, 1, 1 }
 
 extern byte *url_proto_names[];
+
+#endif