summaryrefslogtreecommitdiff
path: root/urlmatch.h
diff options
context:
space:
mode:
Diffstat (limited to 'urlmatch.h')
-rw-r--r--urlmatch.h20
1 files changed, 18 insertions, 2 deletions
diff --git a/urlmatch.h b/urlmatch.h
index 37ee5da85e..6ff42f81b0 100644
--- a/urlmatch.h
+++ b/urlmatch.h
@@ -1,4 +1,6 @@
#ifndef URL_MATCH_H
+#define URL_MATCH_H
+
#include "string-list.h"
struct url_info {
@@ -31,7 +33,7 @@ struct url_info {
* '?...' and '#...' portion; will always be >= 1 */
};
-extern char *url_normalize(const char *, struct url_info *);
+char *url_normalize(const char *, struct url_info *);
struct urlmatch_item {
size_t hostmatch_len;
@@ -48,8 +50,22 @@ struct urlmatch_config {
void *cb;
int (*collect_fn)(const char *var, const char *value, void *cb);
int (*cascade_fn)(const char *var, const char *value, void *cb);
+ /*
+ * Compare the two matches, the one just discovered and the existing
+ * best match and return a negative value if the found item is to be
+ * rejected or a non-negative value if it is to be accepted. If this
+ * field is set to NULL, use the default comparison technique, which
+ * checks to ses if found is better (according to the urlmatch
+ * specificity rules) than existing.
+ */
+ int (*select_fn)(const struct urlmatch_item *found, const struct urlmatch_item *existing);
+ /*
+ * An optional callback to allow e.g. for partial URLs; it shall
+ * return 1 or 0 depending whether `url` matches or not.
+ */
+ int (*fallback_match_fn)(const char *url, void *cb);
};
-extern int urlmatch_config_entry(const char *var, const char *value, void *cb);
+int urlmatch_config_entry(const char *var, const char *value, void *cb);
#endif /* URL_MATCH_H */