1.1 --- a/librazor/razor.h.in Mon Jul 04 13:04:19 2016 +0100
1.2 +++ b/librazor/razor.h.in Tue Jul 05 09:40:01 2016 +0100
1.3 @@ -696,6 +696,10 @@
1.4 char *razor_path_relative_to_uri(const char *uri, const char *path,
1.5 struct razor_error **error) RAZOR_MALLOC;
1.6
1.7 +/* According to RFC 3986 ยง 5.2 */
1.8 +char *razor_resolve_relative_uri(const char *base_uri, const char *relative_uri,
1.9 + struct razor_error **error);
1.10 +
1.11 const char *razor_system_arch(void);
1.12
1.13 int razor_dump_database(FILE *fp, const char *root_uri, const char *filename,
2.1 --- a/librazor/util.c Mon Jul 04 13:04:19 2016 +0100
2.2 +++ b/librazor/util.c Tue Jul 05 09:40:01 2016 +0100
2.3 @@ -269,6 +269,33 @@
2.4 return concat;
2.5 }
2.6
2.7 +RAZOR_EXPORT char *
2.8 +razor_resolve_relative_uri(const char *base_uri, const char *relative_uri,
2.9 + struct razor_error **error)
2.10 +{
2.11 + char *result;
2.12 + struct razor_uri ru, base, ref;
2.13 +
2.14 + if (razor_uri_parse_uri(&base, base_uri, 1, error))
2.15 + return NULL;
2.16 +
2.17 + if (razor_uri_parse_relative_ref(&ref, relative_uri, error)) {
2.18 + razor_uri_destroy(&base);
2.19 + return NULL;
2.20 + }
2.21 +
2.22 + razor_uri_resolve(&ru, &base, &ref);
2.23 +
2.24 + razor_uri_destroy(&base);
2.25 + razor_uri_destroy(&ref);
2.26 +
2.27 + result = razor_uri_recompose(&ru);
2.28 +
2.29 + razor_uri_destroy(&ru);
2.30 +
2.31 + return result;
2.32 +}
2.33 +
2.34 RAZOR_EXPORT const char *razor_system_arch(void)
2.35 {
2.36 #ifdef MSWIN_API