From c3ccf5e3e6737f81863b085289fd830e732b41f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Mon, 20 Oct 2014 18:43:38 +0200 Subject: Imported Upstream version 0.8.1 --- include/uriparser/Uri.h | 25 +++++++++++++++++++++++-- include/uriparser/UriBase.h | 17 +++++++++++++---- 2 files changed, 36 insertions(+), 6 deletions(-) (limited to 'include') diff --git a/include/uriparser/Uri.h b/include/uriparser/Uri.h index bb5b684..4a18580 100644 --- a/include/uriparser/Uri.h +++ b/include/uriparser/Uri.h @@ -347,7 +347,7 @@ const URI_CHAR * URI_FUNC(UnescapeInPlace)(URI_CHAR * inout); * @param absoluteBase IN: Base %URI to apply * @return Error code or 0 on success * - * @see uriRemoveBaseUriA + * @see uriRemoveBaseUriA, uriAddBaseUriExA * @since 0.4.0 */ int URI_FUNC(AddBaseUri)(URI_TYPE(Uri) * absoluteDest, @@ -356,6 +356,27 @@ int URI_FUNC(AddBaseUri)(URI_TYPE(Uri) * absoluteDest, +/** + * Performs reference resolution as described in + * section 5.2.2 of RFC 3986. + * NOTE: On success you have to call uriFreeUriMembersA on \p absoluteDest manually later. + * + * @param absoluteDest OUT: Result %URI + * @param relativeSource IN: Reference to resolve + * @param absoluteBase IN: Base %URI to apply + * @param options IN: Configuration to apply + * @return Error code or 0 on success + * + * @see uriRemoveBaseUriA, uriAddBaseUriA + * @since 0.8.1 + */ +int URI_FUNC(AddBaseUriEx)(URI_TYPE(Uri) * absoluteDest, + const URI_TYPE(Uri) * relativeSource, + const URI_TYPE(Uri) * absoluteBase, + UriResolutionOptions options); + + + /** * Tries to make a relative %URI (a reference) from an * absolute %URI and a given base %URI. This can only work if @@ -371,7 +392,7 @@ int URI_FUNC(AddBaseUri)(URI_TYPE(Uri) * absoluteDest, * @param domainRootMode IN: Create %URI with path relative to domain root * @return Error code or 0 on success * - * @see uriAddBaseUriA + * @see uriAddBaseUriA, uriAddBaseUriExA * @since 0.5.2 */ int URI_FUNC(RemoveBaseUri)(URI_TYPE(Uri) * dest, diff --git a/include/uriparser/UriBase.h b/include/uriparser/UriBase.h index e93a3a8..3c6615f 100644 --- a/include/uriparser/UriBase.h +++ b/include/uriparser/UriBase.h @@ -54,8 +54,8 @@ /* Version */ #define URI_VER_MAJOR 0 -#define URI_VER_MINOR 7 -#define URI_VER_RELEASE 6 +#define URI_VER_MINOR 8 +#define URI_VER_RELEASE 1 #define URI_VER_SUFFIX_ANSI "" #define URI_VER_SUFFIX_UNICODE URI_ANSI_TO_UNICODE(URI_VER_SUFFIX_ANSI) @@ -155,7 +155,7 @@ typedef struct UriIp6Struct { /** - * Specifies a line break conversion mode + * Specifies a line break conversion mode. */ typedef enum UriBreakConversionEnum { URI_BR_TO_LF, /**< Convert to Unix line breaks ("\\x0a") */ @@ -184,5 +184,14 @@ typedef enum UriNormalizationMaskEnum { -#endif /* URI_BASE_H */ +/** + * Specifies how to resolve %URI references. + */ +typedef enum UriResolutionOptionsEnum { + URI_RESOLVE_STRICTLY = 0, /**< Full RFC conformance */ + URI_RESOLVE_IDENTICAL_SCHEME_COMPAT = 1 << 0 /**< Treat %URI to resolve with identical scheme as having no scheme */ +} UriResolutionOptions; /**< @copydoc UriResolutionOptionsEnum */ + + +#endif /* URI_BASE_H */ -- cgit v1.2.3