static uns url_min_repeat_count = 0x7fffffff;
static uns url_max_repeat_length = 0;
-static struct cfitem url_config[] = {
- { "URL", CT_SECTION, NULL },
- { "IgnoreSpaces", CT_INT, &url_ignore_spaces },
- { "IgnoreUnderflow", CT_INT, &url_ignore_underflow },
- { "ComponentSeparators", CT_STRING, &url_component_separators },
- { "MinRepeatCount", CT_INT, &url_min_repeat_count },
- { "MaxRepeatLength", CT_INT, &url_max_repeat_length },
- { NULL, CT_STOP, NULL }
+static struct cf_section url_config = {
+ CF_ITEMS {
+ CF_UNS("IgnoreSpaces", &url_ignore_spaces),
+ CF_UNS("IgnoreUnderflow", &url_ignore_underflow),
+ CF_STRING("ComponentSeparators", &url_component_separators),
+ CF_UNS("MinRepeatCount", &url_min_repeat_count),
+ CF_UNS("MaxRepeatLength", &url_max_repeat_length),
+ CF_END
+ }
};
static void CONSTRUCTOR url_init_config(void)
{
- cf_register(url_config);
+ cf_declare_section("URL", &url_config, 0);
}
/* Escaping and de-escaping */
}
int
-url_deescape(byte *s, byte *d)
+url_deescape(const byte *s, byte *d)
{
byte *dstart = d;
byte *end = d + MAX_URL_SIZE - 10;
*d++ = *s++;
else if (Cspace(*s))
{
- byte *s0 = s;
+ const byte *s0 = s;
while (Cspace(*s))
s++;
if (!url_ignore_spaces || !(!*s || d == dstart))
}
int
-url_enescape(byte *s, byte *d)
+url_enescape(const byte *s, byte *d)
{
byte *end = d + MAX_URL_SIZE - 10;
unsigned int c;
}
int
-url_enescape_friendly(byte *src, byte *dest)
+url_enescape_friendly(const byte *src, byte *dest)
{
byte *end = dest + MAX_URL_SIZE - 10;
while (*src)
static int url_proto_path_flags[URL_PROTO_MAX] = URL_PATH_FLAGS;
uns
-identify_protocol(byte *p)
+identify_protocol(const byte *p)
{
uns i;
/* Pack a broken-down URL */
static byte *
-append(byte *d, byte *s, byte *e)
+append(byte *d, const byte *s, byte *e)
{
if (d)
while (*s)
/* Standard cookbook recipes */
int
-url_canon_split_rel(byte *u, byte *buf1, byte *buf2, struct url *url, struct url *base)
+url_canon_split_rel(const byte *u, byte *buf1, byte *buf2, struct url *url, struct url *base)
{
int err;
}
int
-url_auto_canonicalize_rel(byte *src, byte *dst, struct url *base)
+url_auto_canonicalize_rel(const byte *src, byte *dst, struct url *base)
{
byte buf1[MAX_URL_SIZE], buf2[MAX_URL_SIZE], buf3[MAX_URL_SIZE];
int err;
#endif
struct component {
- byte *start;
+ const byte *start;
int length;
u32 hash;
};
static inline u32
-hashf(byte *start, int length)
+hashf(const byte *start, int length)
{
u32 hf = length;
while (length-- > 0)
}
int
-url_has_repeated_component(byte *url)
+url_has_repeated_component(const byte *url)
{
struct component *comp;
uns comps, comp_len, rep_prefix;
- byte *c;
+ const byte *c;
uns i;
for (comps=0, c=url; c; comps++)