static uns url_ignore_spaces;
static uns url_ignore_underflow;
-static byte *url_component_separators = "/&?";
+static byte *url_component_separators = "";
static uns url_min_repeat_count = 0x7fffffff;
static uns url_max_repeat_length = 0;
return errmsg[err];
}
-/* A "macro" for canonical split */
+/* Standard cookbook recipes */
int
url_canon_split(byte *u, byte *buf1, byte *buf2, struct url *url)
return url_canonicalize(url);
}
+int
+url_auto_canonicalize(byte *src, byte *dst)
+{
+ 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)) ||
+ (err = url_pack(&ur, buf3)) ||
+ (err = url_enescape(buf3, dst)));
+ return err;
+}
+
/* Testing */
#ifdef TEST
if (c)
c++;
}
+ if (comps < url_min_repeat_count)
+ return 0;
comp = alloca(comps * sizeof(struct component));
for (i=0, c=url; c; i++)
{