uriparser 0.9.8
Loading...
Searching...
No Matches
Data Structures | Typedefs | Functions
Uri.h File Reference

Data Structures

struct  UriTextRangeStructA
 
struct  UriPathSegmentStructA
 
struct  UriHostDataStructA
 
struct  UriUriStructA
 
struct  UriParserStateStructA
 
struct  UriQueryListStructA
 

Typedefs

typedef struct UriTextRangeStructA UriTextRangeA
 
typedef struct UriPathSegmentStructA UriPathSegmentA
 
typedef struct UriHostDataStructA UriHostDataA
 
typedef struct UriUriStructA UriUriA
 
typedef struct UriParserStateStructA UriParserStateA
 
typedef struct UriQueryListStructA UriQueryListA
 

Functions

URI_PUBLIC int uriParseUriExA (UriParserStateA *state, const char *first, const char *afterLast)
 
URI_PUBLIC int uriParseUriA (UriParserStateA *state, const char *text)
 
URI_PUBLIC int uriParseSingleUriA (UriUriA *uri, const char *text, const char **errorPos)
 
URI_PUBLIC int uriParseSingleUriExA (UriUriA *uri, const char *first, const char *afterLast, const char **errorPos)
 
URI_PUBLIC int uriParseSingleUriExMmA (UriUriA *uri, const char *first, const char *afterLast, const char **errorPos, UriMemoryManager *memory)
 
URI_PUBLIC void uriFreeUriMembersA (UriUriA *uri)
 
URI_PUBLIC int uriFreeUriMembersMmA (UriUriA *uri, UriMemoryManager *memory)
 
URI_PUBLIC char * uriEscapeExA (const char *inFirst, const char *inAfterLast, char *out, UriBool spaceToPlus, UriBool normalizeBreaks)
 
URI_PUBLIC char * uriEscapeA (const char *in, char *out, UriBool spaceToPlus, UriBool normalizeBreaks)
 
URI_PUBLIC const char * uriUnescapeInPlaceExA (char *inout, UriBool plusToSpace, UriBreakConversion breakConversion)
 
URI_PUBLIC const char * uriUnescapeInPlaceA (char *inout)
 
URI_PUBLIC int uriAddBaseUriA (UriUriA *absoluteDest, const UriUriA *relativeSource, const UriUriA *absoluteBase)
 
URI_PUBLIC int uriAddBaseUriExA (UriUriA *absoluteDest, const UriUriA *relativeSource, const UriUriA *absoluteBase, UriResolutionOptions options)
 
URI_PUBLIC int uriAddBaseUriExMmA (UriUriA *absoluteDest, const UriUriA *relativeSource, const UriUriA *absoluteBase, UriResolutionOptions options, UriMemoryManager *memory)
 
URI_PUBLIC int uriRemoveBaseUriA (UriUriA *dest, const UriUriA *absoluteSource, const UriUriA *absoluteBase, UriBool domainRootMode)
 
URI_PUBLIC int uriRemoveBaseUriMmA (UriUriA *dest, const UriUriA *absoluteSource, const UriUriA *absoluteBase, UriBool domainRootMode, UriMemoryManager *memory)
 
URI_PUBLIC UriBool uriEqualsUriA (const UriUriA *a, const UriUriA *b)
 
URI_PUBLIC int uriToStringCharsRequiredA (const UriUriA *uri, int *charsRequired)
 
URI_PUBLIC int uriToStringA (char *dest, const UriUriA *uri, int maxChars, int *charsWritten)
 
URI_PUBLIC unsigned int uriNormalizeSyntaxMaskRequiredA (const UriUriA *uri)
 
URI_PUBLIC int uriNormalizeSyntaxMaskRequiredExA (const UriUriA *uri, unsigned int *outMask)
 
URI_PUBLIC int uriNormalizeSyntaxExA (UriUriA *uri, unsigned int mask)
 
URI_PUBLIC int uriNormalizeSyntaxExMmA (UriUriA *uri, unsigned int mask, UriMemoryManager *memory)
 
URI_PUBLIC int uriNormalizeSyntaxA (UriUriA *uri)
 
URI_PUBLIC int uriUnixFilenameToUriStringA (const char *filename, char *uriString)
 
URI_PUBLIC int uriWindowsFilenameToUriStringA (const char *filename, char *uriString)
 
URI_PUBLIC int uriUriStringToUnixFilenameA (const char *uriString, char *filename)
 
URI_PUBLIC int uriUriStringToWindowsFilenameA (const char *uriString, char *filename)
 
URI_PUBLIC int uriComposeQueryCharsRequiredA (const UriQueryListA *queryList, int *charsRequired)
 
URI_PUBLIC int uriComposeQueryCharsRequiredExA (const UriQueryListA *queryList, int *charsRequired, UriBool spaceToPlus, UriBool normalizeBreaks)
 
URI_PUBLIC int uriComposeQueryA (char *dest, const UriQueryListA *queryList, int maxChars, int *charsWritten)
 
URI_PUBLIC int uriComposeQueryExA (char *dest, const UriQueryListA *queryList, int maxChars, int *charsWritten, UriBool spaceToPlus, UriBool normalizeBreaks)
 
URI_PUBLIC int uriComposeQueryMallocA (char **dest, const UriQueryListA *queryList)
 
URI_PUBLIC int uriComposeQueryMallocExA (char **dest, const UriQueryListA *queryList, UriBool spaceToPlus, UriBool normalizeBreaks)
 
URI_PUBLIC int uriComposeQueryMallocExMmA (char **dest, const UriQueryListA *queryList, UriBool spaceToPlus, UriBool normalizeBreaks, UriMemoryManager *memory)
 
URI_PUBLIC int uriDissectQueryMallocA (UriQueryListA **dest, int *itemCount, const char *first, const char *afterLast)
 
URI_PUBLIC int uriDissectQueryMallocExA (UriQueryListA **dest, int *itemCount, const char *first, const char *afterLast, UriBool plusToSpace, UriBreakConversion breakConversion)
 
URI_PUBLIC int uriDissectQueryMallocExMmA (UriQueryListA **dest, int *itemCount, const char *first, const char *afterLast, UriBool plusToSpace, UriBreakConversion breakConversion, UriMemoryManager *memory)
 
URI_PUBLIC void uriFreeQueryListA (UriQueryListA *queryList)
 
URI_PUBLIC int uriFreeQueryListMmA (UriQueryListA *queryList, UriMemoryManager *memory)
 
URI_PUBLIC int uriMakeOwnerA (UriUriA *uri)
 
URI_PUBLIC int uriMakeOwnerMmA (UriUriA *uri, UriMemoryManager *memory)
 

Detailed Description

Holds the RFC 3986 URI parser interface. NOTE: This header includes itself twice.

Typedef Documentation

◆ UriHostDataA

Holds structured host information. This is either a IPv4, IPv6, plain text for IPvFuture or all zero for a registered name.

See also
UriUriA
Since
0.3.0

"

Holds structured host information. This is either a IPv4, IPv6, plain text for IPvFuture or all zero for a registered name.

See also
UriUriA
Since
0.3.0 "

◆ UriParserStateA

Represents a state of the URI parser. Missing components can be NULL to reflect a components absence.

See also
uriFreeUriMembersA
uriFreeUriMembersMmA
Since
0.3.0

"

Represents a state of the URI parser. Missing components can be NULL to reflect a components absence.

See also
uriFreeUriMembersA
uriFreeUriMembersMmA
Since
0.3.0 "

◆ UriPathSegmentA

Represents a path segment within a URI path. More precisely it is a node in a linked list of path segments.

See also
UriUriA
Since
0.3.0

"

Represents a path segment within a URI path. More precisely it is a node in a linked list of path segments.

See also
UriUriA
Since
0.3.0 "

◆ UriQueryListA

Represents a query element. More precisely it is a node in a linked list of query elements.

Since
0.7.0

"

Represents a query element. More precisely it is a node in a linked list of query elements.

Since
0.7.0 "

◆ UriTextRangeA

Specifies a range of characters within a string. The range includes all characters from first to one before afterLast. So if both are non-NULL the difference is the length of the text range.

See also
UriUriA
UriPathSegmentA
UriHostDataA
Since
0.3.0

"

Specifies a range of characters within a string. The range includes all characters from first to one before afterLast. So if both are non-NULL the difference is the length of the text range.

See also
UriUriA
UriPathSegmentA
UriHostDataA
Since
0.3.0 "

◆ UriUriA

typedef struct UriUriStructA UriUriA

Represents an RFC 3986 URI. Missing components can be {NULL, NULL} ranges.

See also
uriFreeUriMembersA
uriFreeUriMembersMmA
UriParserStateA
Since
0.3.0

"

Represents an RFC 3986 URI. Missing components can be {NULL, NULL} ranges.

See also
uriFreeUriMembersA
uriFreeUriMembersMmA
UriParserStateA
Since
0.3.0 "

Function Documentation

◆ uriAddBaseUriA()

URI_PUBLIC int uriAddBaseUriA ( UriUriA * absoluteDest,
const UriUriA * relativeSource,
const UriUriA * absoluteBase )

Performs reference resolution as described in section 5.2.2 of RFC 3986. Uses default libc-based memory manager. NOTE: On success you have to call uriFreeUriMembersA on absoluteDest manually later.

Parameters
absoluteDestOUT: Result URI
relativeSourceIN: Reference to resolve
absoluteBaseIN: Base URI to apply
Returns
Error code or 0 on success
See also
uriRemoveBaseUriA
uriRemoveBaseUriMmA
uriAddBaseUriExA
uriAddBaseUriExMmA
Since
0.4.0

◆ uriAddBaseUriExA()

URI_PUBLIC int uriAddBaseUriExA ( UriUriA * absoluteDest,
const UriUriA * relativeSource,
const UriUriA * absoluteBase,
UriResolutionOptions options )

Performs reference resolution as described in section 5.2.2 of RFC 3986. Uses default libc-based memory manager. NOTE: On success you have to call uriFreeUriMembersA on absoluteDest manually later.

Parameters
absoluteDestOUT: Result URI
relativeSourceIN: Reference to resolve
absoluteBaseIN: Base URI to apply
optionsIN: Configuration to apply
Returns
Error code or 0 on success
See also
uriRemoveBaseUriA
uriAddBaseUriA
uriAddBaseUriExMmA
Since
0.8.1

◆ uriAddBaseUriExMmA()

URI_PUBLIC int uriAddBaseUriExMmA ( UriUriA * absoluteDest,
const UriUriA * relativeSource,
const UriUriA * absoluteBase,
UriResolutionOptions options,
UriMemoryManager * memory )

Performs reference resolution as described in section 5.2.2 of RFC 3986. NOTE: On success you have to call uriFreeUriMembersMmA on absoluteDest manually later.

Parameters
absoluteDestOUT: Result URI
relativeSourceIN: Reference to resolve
absoluteBaseIN: Base URI to apply
optionsIN: Configuration to apply
memoryIN: Memory manager to use, NULL for default libc
Returns
Error code or 0 on success
See also
uriRemoveBaseUriA
uriRemoveBaseUriMmA
uriAddBaseUriA
uriAddBaseUriExA
Since
0.9.0

◆ uriComposeQueryA()

URI_PUBLIC int uriComposeQueryA ( char * dest,
const UriQueryListA * queryList,
int maxChars,
int * charsWritten )

Converts a query list structure back to a query string. The composed string does not start with '?', on the way ' ' is converted to '+' and line breaks are normalized to "%0D%0A".

Parameters
destOUT: Output destination
queryListIN: Query list to convert
maxCharsIN: Maximum number of characters to copy including terminator
charsWrittenOUT: Number of characters written, can be lower than maxChars even if the query list is too long!
Returns
Error code or 0 on success
See also
uriComposeQueryExA
uriComposeQueryMallocA
uriComposeQueryMallocExA
uriComposeQueryMallocExMmA
uriComposeQueryCharsRequiredA
uriDissectQueryMallocA
uriDissectQueryMallocExA
uriDissectQueryMallocExMmA
Since
0.7.0

◆ uriComposeQueryCharsRequiredA()

URI_PUBLIC int uriComposeQueryCharsRequiredA ( const UriQueryListA * queryList,
int * charsRequired )

Calculates the number of characters needed to store the string representation of the given query list excluding the terminator. It is assumed that line breaks are will be normalized to "%0D%0A".

Parameters
queryListIN: Query list to measure
charsRequiredOUT: Length of the string representation in characters excluding terminator
Returns
Error code or 0 on success
See also
uriComposeQueryCharsRequiredExA
uriComposeQueryA
Since
0.7.0

◆ uriComposeQueryCharsRequiredExA()

URI_PUBLIC int uriComposeQueryCharsRequiredExA ( const UriQueryListA * queryList,
int * charsRequired,
UriBool spaceToPlus,
UriBool normalizeBreaks )

Calculates the number of characters needed to store the string representation of the given query list excluding the terminator.

Parameters
queryListIN: Query list to measure
charsRequiredOUT: Length of the string representation in characters excluding terminator
spaceToPlusIN: Whether to convert ' ' to '+' or not
normalizeBreaksIN: Whether to convert CR and LF to CR-LF or not.
Returns
Error code or 0 on success
See also
uriComposeQueryCharsRequiredA
uriComposeQueryExA
Since
0.7.0

◆ uriComposeQueryExA()

URI_PUBLIC int uriComposeQueryExA ( char * dest,
const UriQueryListA * queryList,
int maxChars,
int * charsWritten,
UriBool spaceToPlus,
UriBool normalizeBreaks )

Converts a query list structure back to a query string. The composed string does not start with '?'.

Parameters
destOUT: Output destination
queryListIN: Query list to convert
maxCharsIN: Maximum number of characters to copy including terminator
charsWrittenOUT: Number of characters written, can be lower than maxChars even if the query list is too long!
spaceToPlusIN: Whether to convert ' ' to '+' or not
normalizeBreaksIN: Whether to convert CR and LF to CR-LF or not.
Returns
Error code or 0 on success
See also
uriComposeQueryA
uriComposeQueryMallocA
uriComposeQueryMallocExA
uriComposeQueryMallocExMmA
uriComposeQueryCharsRequiredExA
uriDissectQueryMallocA
uriDissectQueryMallocExA
uriDissectQueryMallocExMmA
Since
0.7.0

◆ uriComposeQueryMallocA()

URI_PUBLIC int uriComposeQueryMallocA ( char ** dest,
const UriQueryListA * queryList )

Converts a query list structure back to a query string. Memory for this string is allocated internally. The composed string does not start with '?', on the way ' ' is converted to '+' and line breaks are normalized to "%0D%0A". Uses default libc-based memory manager.

Parameters
destOUT: Output destination
queryListIN: Query list to convert
Returns
Error code or 0 on success
See also
uriComposeQueryMallocExA
uriComposeQueryMallocExMmA
uriComposeQueryA
uriDissectQueryMallocA
uriDissectQueryMallocExA
uriDissectQueryMallocExMmA
Since
0.7.0

◆ uriComposeQueryMallocExA()

URI_PUBLIC int uriComposeQueryMallocExA ( char ** dest,
const UriQueryListA * queryList,
UriBool spaceToPlus,
UriBool normalizeBreaks )

Converts a query list structure back to a query string. Memory for this string is allocated internally. The composed string does not start with '?'. Uses default libc-based memory manager.

Parameters
destOUT: Output destination
queryListIN: Query list to convert
spaceToPlusIN: Whether to convert ' ' to '+' or not
normalizeBreaksIN: Whether to convert CR and LF to CR-LF or not.
Returns
Error code or 0 on success
See also
uriComposeQueryMallocA
uriComposeQueryMallocExMmA
uriComposeQueryExA
uriDissectQueryMallocA
uriDissectQueryMallocExA
uriDissectQueryMallocExMmA
Since
0.7.0

◆ uriComposeQueryMallocExMmA()

URI_PUBLIC int uriComposeQueryMallocExMmA ( char ** dest,
const UriQueryListA * queryList,
UriBool spaceToPlus,
UriBool normalizeBreaks,
UriMemoryManager * memory )

Converts a query list structure back to a query string. Memory for this string is allocated internally. The composed string does not start with '?'.

Parameters
destOUT: Output destination
queryListIN: Query list to convert
spaceToPlusIN: Whether to convert ' ' to '+' or not
normalizeBreaksIN: Whether to convert CR and LF to CR-LF or not.
memoryIN: Memory manager to use, NULL for default libc
Returns
Error code or 0 on success
See also
uriComposeQueryMallocA
uriComposeQueryMallocExA
uriComposeQueryExA
uriDissectQueryMallocA
uriDissectQueryMallocExA
uriDissectQueryMallocExMmA
Since
0.9.0

◆ uriDissectQueryMallocA()

URI_PUBLIC int uriDissectQueryMallocA ( UriQueryListA ** dest,
int * itemCount,
const char * first,
const char * afterLast )

Constructs a query list from the raw query string of a given URI. On the way '+' is converted back to ' ', line breaks are not modified. Uses default libc-based memory manager.

Parameters
destOUT: Output destination
itemCountOUT: Number of items found, can be NULL
firstIN: Pointer to first character after '?'
afterLastIN: Pointer to character after the last one still in
Returns
Error code or 0 on success
See also
uriDissectQueryMallocExA
uriDissectQueryMallocExMmA
uriComposeQueryA
uriFreeQueryListA
uriFreeQueryListMmA
Since
0.7.0

◆ uriDissectQueryMallocExA()

URI_PUBLIC int uriDissectQueryMallocExA ( UriQueryListA ** dest,
int * itemCount,
const char * first,
const char * afterLast,
UriBool plusToSpace,
UriBreakConversion breakConversion )

Constructs a query list from the raw query string of a given URI. Uses default libc-based memory manager.

Parameters
destOUT: Output destination
itemCountOUT: Number of items found, can be NULL
firstIN: Pointer to first character after '?'
afterLastIN: Pointer to character after the last one still in
plusToSpaceIN: Whether to convert '+' to ' ' or not
breakConversionIN: Line break conversion mode
Returns
Error code or 0 on success
See also
uriDissectQueryMallocA
uriDissectQueryMallocExMmA
uriComposeQueryExA
uriFreeQueryListA
Since
0.7.0

◆ uriDissectQueryMallocExMmA()

URI_PUBLIC int uriDissectQueryMallocExMmA ( UriQueryListA ** dest,
int * itemCount,
const char * first,
const char * afterLast,
UriBool plusToSpace,
UriBreakConversion breakConversion,
UriMemoryManager * memory )

Constructs a query list from the raw query string of a given URI.

Parameters
destOUT: Output destination
itemCountOUT: Number of items found, can be NULL
firstIN: Pointer to first character after '?'
afterLastIN: Pointer to character after the last one still in
plusToSpaceIN: Whether to convert '+' to ' ' or not
breakConversionIN: Line break conversion mode
memoryIN: Memory manager to use, NULL for default libc
Returns
Error code or 0 on success
See also
uriDissectQueryMallocA
uriDissectQueryMallocExA
uriComposeQueryExA
uriFreeQueryListA
uriFreeQueryListMmA
Since
0.9.0

◆ uriEqualsUriA()

URI_PUBLIC UriBool uriEqualsUriA ( const UriUriA * a,
const UriUriA * b )

Checks two URIs for equivalence. Comparison is done the naive way, without prior normalization. NOTE: Two NULL URIs are equal as well.

Parameters
aIN: First URI
bIN: Second URI
Returns
URI_TRUE when equal, URI_FAlSE else
Since
0.4.0

◆ uriEscapeA()

URI_PUBLIC char * uriEscapeA ( const char * in,
char * out,
UriBool spaceToPlus,
UriBool normalizeBreaks )

Percent-encodes all unreserved characters from the input string and writes the encoded version to the output string.

NOTE: Be sure to allocate 3 times the space of the input buffer for the output buffer for normalizeBreaks == URI_FALSE and 6 times the space for normalizeBreaks == URI_TRUE (since e.g. "\x0d" becomes "%0D%0A" in that case).

NOTE: The implementation treats (both char and) wchar_t units as code point integers, which works well for code points U+0001 to U+00ff in host-native endianness but nothing more; in particular, using uriEscapeW with arbitrary Unicode input will not produce healthy results. Passing UTF-8 input to uriEscapeA may be useful in some scenarios. Keep in mind that uriparser is about URI (RFC 3986) not IRI (RFC 3987).

Parameters
inIN: Text source
outOUT: Encoded text destination
spaceToPlusIN: Whether to convert ' ' to '+' or not
normalizeBreaksIN: Whether to convert CR and LF to CR-LF or not.
Returns
Position of terminator in output string
See also
uriEscapeExA
uriUnescapeInPlaceA
Since
0.5.0

◆ uriEscapeExA()

URI_PUBLIC char * uriEscapeExA ( const char * inFirst,
const char * inAfterLast,
char * out,
UriBool spaceToPlus,
UriBool normalizeBreaks )

Percent-encodes all unreserved characters from the input string and writes the encoded version to the output string.

NOTE: Be sure to allocate 3 times the space of the input buffer for the output buffer for normalizeBreaks == URI_FALSE and 6 times the space for normalizeBreaks == URI_TRUE (since e.g. "\x0d" becomes "%0D%0A" in that case).

NOTE: The implementation treats (both char and) wchar_t units as code point integers, which works well for code points U+0001 to U+00ff in host-native endianness but nothing more; in particular, using uriEscapeExW with arbitrary Unicode input will not produce healthy results. Passing UTF-8 input to uriEscapeExA may be useful in some scenarios. Keep in mind that uriparser is about URI (RFC 3986) not IRI (RFC 3987).

Parameters
inFirstIN: Pointer to first character of the input text
inAfterLastIN: Pointer after the last character of the input text
outOUT: Encoded text destination
spaceToPlusIN: Whether to convert ' ' to '+' or not
normalizeBreaksIN: Whether to convert CR and LF to CR-LF or not.
Returns
Position of terminator in output string
See also
uriEscapeA
uriUnescapeInPlaceExA
Since
0.5.2

◆ uriFreeQueryListA()

URI_PUBLIC void uriFreeQueryListA ( UriQueryListA * queryList)

Frees all memory associated with the given query list. The structure itself is freed as well.

Parameters
queryListINOUT: Query list to free
See also
uriFreeQueryListMmA
Since
0.7.0

◆ uriFreeQueryListMmA()

URI_PUBLIC int uriFreeQueryListMmA ( UriQueryListA * queryList,
UriMemoryManager * memory )

Frees all memory associated with the given query list. The structure itself is freed as well.

Parameters
queryListINOUT: Query list to free
memoryIN: Memory manager to use, NULL for default libc
Returns
Error code or 0 on success
See also
uriFreeQueryListA
Since
0.9.0

◆ uriFreeUriMembersA()

URI_PUBLIC void uriFreeUriMembersA ( UriUriA * uri)

Frees all memory associated with the members of the URI structure. Note that the structure itself is not freed, only its members. Uses default libc-based memory manager.

Parameters
uriINOUT: URI structure whose members should be freed
See also
uriFreeUriMembersMmA
Since
0.3.0

◆ uriFreeUriMembersMmA()

URI_PUBLIC int uriFreeUriMembersMmA ( UriUriA * uri,
UriMemoryManager * memory )

Frees all memory associated with the members of the URI structure. Note that the structure itself is not freed, only its members.

Parameters
uriINOUT: URI structure whose members should be freed
memoryIN: Memory manager to use, NULL for default libc
Returns
0 on success, error code otherwise
See also
uriFreeUriMembersA
Since
0.9.0

◆ uriMakeOwnerA()

URI_PUBLIC int uriMakeOwnerA ( UriUriA * uri)

Makes the URI hold copies of strings so that it no longer depends on the original URI string. If the URI is already owner of copies, this function returns URI_TRUE and does not modify the URI further.

Uses default libc-based memory manager.

Parameters
uriINOUT: URI to make independent
Returns
Error code or 0 on success
See also
uriMakeOwnerMmA
Since
0.9.4

◆ uriMakeOwnerMmA()

URI_PUBLIC int uriMakeOwnerMmA ( UriUriA * uri,
UriMemoryManager * memory )

Makes the URI hold copies of strings so that it no longer depends on the original URI string. If the URI is already owner of copies, this function returns URI_TRUE and does not modify the URI further.

Parameters
uriINOUT: URI to make independent
memoryIN: Memory manager to use, NULL for default libc
Returns
Error code or 0 on success
See also
uriMakeOwnerA
Since
0.9.4

◆ uriNormalizeSyntaxA()

URI_PUBLIC int uriNormalizeSyntaxA ( UriUriA * uri)

Normalizes all components of a URI.

NOTE: If necessary the URI becomes owner of all memory behind the text pointed to. Text is duplicated in that case. Uses default libc-based memory manager.

Parameters
uriINOUT: URI to normalize
Returns
Error code or 0 on success
See also
uriNormalizeSyntaxExA
uriNormalizeSyntaxExMmA
uriNormalizeSyntaxMaskRequiredA
Since
0.5.0

◆ uriNormalizeSyntaxExA()

URI_PUBLIC int uriNormalizeSyntaxExA ( UriUriA * uri,
unsigned int mask )

Normalizes a URI using a normalization mask. The normalization mask decides what components are normalized.

NOTE: If necessary the URI becomes owner of all memory behind the text pointed to. Text is duplicated in that case. Uses default libc-based memory manager.

Parameters
uriINOUT: URI to normalize
maskIN: Normalization mask
Returns
Error code or 0 on success
See also
uriNormalizeSyntaxA
uriNormalizeSyntaxExMmA
uriNormalizeSyntaxMaskRequiredA
Since
0.5.0

◆ uriNormalizeSyntaxExMmA()

URI_PUBLIC int uriNormalizeSyntaxExMmA ( UriUriA * uri,
unsigned int mask,
UriMemoryManager * memory )

Normalizes a URI using a normalization mask. The normalization mask decides what components are normalized.

NOTE: If necessary the URI becomes owner of all memory behind the text pointed to. Text is duplicated in that case.

Parameters
uriINOUT: URI to normalize
maskIN: Normalization mask
memoryIN: Memory manager to use, NULL for default libc
Returns
Error code or 0 on success
See also
uriNormalizeSyntaxA
uriNormalizeSyntaxExA
uriNormalizeSyntaxMaskRequiredA
Since
0.9.0

◆ uriNormalizeSyntaxMaskRequiredA()

URI_PUBLIC unsigned int uriNormalizeSyntaxMaskRequiredA ( const UriUriA * uri)

Determines the components of a URI that are not normalized.

Parameters
uriIN: URI to check
Returns
Normalization job mask
See also
uriNormalizeSyntaxA
uriNormalizeSyntaxExA
uriNormalizeSyntaxExMmA
uriNormalizeSyntaxMaskRequiredExA
Since
0.5.0
Deprecated
Deprecated since 0.9.0, please migrate to uriNormalizeSyntaxMaskRequiredExA (with "Ex").

◆ uriNormalizeSyntaxMaskRequiredExA()

URI_PUBLIC int uriNormalizeSyntaxMaskRequiredExA ( const UriUriA * uri,
unsigned int * outMask )

Determines the components of a URI that are not normalized.

Parameters
uriIN: URI to check
outMaskOUT: Normalization job mask
Returns
Error code or 0 on success
See also
uriNormalizeSyntaxA
uriNormalizeSyntaxExA
uriNormalizeSyntaxExMmA
uriNormalizeSyntaxMaskRequiredA
Since
0.9.0

◆ uriParseSingleUriA()

URI_PUBLIC int uriParseSingleUriA ( UriUriA * uri,
const char * text,
const char ** errorPos )

Parses a single RFC 3986 URI. Uses default libc-based memory manager.

Parameters
uriOUT: Output URI, must not be NULL
textIN: Pointer to the first character to parse, must not be NULL
errorPosOUT: Pointer to a pointer to the first character causing a syntax error, can be NULL; only set when URI_ERROR_SYNTAX was returned
Returns
0 on success, error code otherwise
See also
uriParseSingleUriExA
uriParseSingleUriExMmA
uriToStringA
Since
0.9.0

◆ uriParseSingleUriExA()

URI_PUBLIC int uriParseSingleUriExA ( UriUriA * uri,
const char * first,
const char * afterLast,
const char ** errorPos )

Parses a single RFC 3986 URI. Uses default libc-based memory manager.

Parameters
uriOUT: Output URI, must not be NULL
firstIN: Pointer to the first character to parse, must not be NULL
afterLastIN: Pointer to the character after the last to parse, can be NULL (to use first + strlen(first))
errorPosOUT: Pointer to a pointer to the first character causing a syntax error, can be NULL; only set when URI_ERROR_SYNTAX was returned
Returns
0 on success, error code otherwise
See also
uriParseSingleUriA
uriParseSingleUriExMmA
uriToStringA
Since
0.9.0

◆ uriParseSingleUriExMmA()

URI_PUBLIC int uriParseSingleUriExMmA ( UriUriA * uri,
const char * first,
const char * afterLast,
const char ** errorPos,
UriMemoryManager * memory )

Parses a single RFC 3986 URI.

Parameters
uriOUT: Output URI, must not be NULL
firstIN: Pointer to the first character to parse, must not be NULL
afterLastIN: Pointer to the character after the last to parse, can be NULL (to use first + strlen(first))
errorPosOUT: Pointer to a pointer to the first character causing a syntax error, can be NULL; only set when URI_ERROR_SYNTAX was returned
memoryIN: Memory manager to use, NULL for default libc
Returns
0 on success, error code otherwise
See also
uriParseSingleUriA
uriParseSingleUriExA
uriToStringA
Since
0.9.0

◆ uriParseUriA()

URI_PUBLIC int uriParseUriA ( UriParserStateA * state,
const char * text )

Parses a RFC 3986 URI. Uses default libc-based memory manager.

Parameters
stateINOUT: Parser state with set output URI, must not be NULL
textIN: Text to parse, must not be NULL
Returns
0 on success, error code otherwise
See also
uriParseUriExA
uriParseSingleUriA
uriParseSingleUriExA
uriToStringA
Since
0.3.0
Deprecated
Deprecated since 0.9.0, please migrate to uriParseSingleUriA (with "Single").

◆ uriParseUriExA()

URI_PUBLIC int uriParseUriExA ( UriParserStateA * state,
const char * first,
const char * afterLast )

Parses a RFC 3986 URI. Uses default libc-based memory manager.

Parameters
stateINOUT: Parser state with set output URI, must not be NULL
firstIN: Pointer to the first character to parse, must not be NULL
afterLastIN: Pointer to the character after the last to parse, must not be NULL
Returns
0 on success, error code otherwise
See also
uriParseUriA
uriParseSingleUriA
uriParseSingleUriExA
uriToStringA
Since
0.3.0
Deprecated
Deprecated since 0.9.0, please migrate to uriParseSingleUriExA (with "Single").

◆ uriRemoveBaseUriA()

URI_PUBLIC int uriRemoveBaseUriA ( UriUriA * dest,
const UriUriA * absoluteSource,
const UriUriA * absoluteBase,
UriBool domainRootMode )

Tries to make a relative URI (a reference) from an absolute URI and a given base URI. The resulting URI is going to be relative if the absolute URI and base UI share both scheme and authority. If that is not the case, the result will still be an absolute URI (with scheme part if necessary). Uses default libc-based memory manager. NOTE: On success you have to call uriFreeUriMembersA on dest manually later.

Parameters
destOUT: Result URI
absoluteSourceIN: Absolute URI to make relative
absoluteBaseIN: Base URI
domainRootModeIN: Create URI with path relative to domain root
Returns
Error code or 0 on success
See also
uriRemoveBaseUriMmA
uriAddBaseUriA
uriAddBaseUriExA
uriAddBaseUriExMmA
Since
0.5.2

◆ uriRemoveBaseUriMmA()

URI_PUBLIC int uriRemoveBaseUriMmA ( UriUriA * dest,
const UriUriA * absoluteSource,
const UriUriA * absoluteBase,
UriBool domainRootMode,
UriMemoryManager * memory )

Tries to make a relative URI (a reference) from an absolute URI and a given base URI. The resulting URI is going to be relative if the absolute URI and base UI share both scheme and authority. If that is not the case, the result will still be an absolute URI (with scheme part if necessary). NOTE: On success you have to call uriFreeUriMembersMmA on dest manually later.

Parameters
destOUT: Result URI
absoluteSourceIN: Absolute URI to make relative
absoluteBaseIN: Base URI
domainRootModeIN: Create URI with path relative to domain root
memoryIN: Memory manager to use, NULL for default libc
Returns
Error code or 0 on success
See also
uriRemoveBaseUriA
uriAddBaseUriA
uriAddBaseUriExA
uriAddBaseUriExMmA
Since
0.9.0

◆ uriToStringA()

URI_PUBLIC int uriToStringA ( char * dest,
const UriUriA * uri,
int maxChars,
int * charsWritten )

Converts a URI structure back to text as described in section 5.3 of RFC 3986.

NOTE: Scheme-based normalization (section 6.2.3 of RFC 3986) is not applied and is considered a responsibility of the application using uriparser.

Parameters
destOUT: Output destination
uriIN: URI to convert
maxCharsIN: Maximum number of characters to copy including terminator
charsWrittenOUT: Number of characters written, can be lower than maxChars even if the URI is too long!
Returns
Error code or 0 on success
See also
uriToStringCharsRequiredA
Since
0.4.0

◆ uriToStringCharsRequiredA()

URI_PUBLIC int uriToStringCharsRequiredA ( const UriUriA * uri,
int * charsRequired )

Calculates the number of characters needed to store the string representation of the given URI excluding the terminator.

Parameters
uriIN: URI to measure
charsRequiredOUT: Length of the string representation in characters excluding terminator
Returns
Error code or 0 on success
See also
uriToStringA
Since
0.5.0

◆ uriUnescapeInPlaceA()

URI_PUBLIC const char * uriUnescapeInPlaceA ( char * inout)

Unescapes percent-encoded groups in a given string. E.g. "%20" will become " ". Unescaping is done in place. The return value will be point to the new position of the terminating zero. Use this value to get the new length of the string. NULL is only returned if inout is NULL.

NOTE: '+' is not decoded to ' ' and line breaks are not converted. Use the more advanced UnescapeInPlaceEx for that features instead.

Parameters
inoutINOUT: Text to unescape/decode
Returns
Pointer to new position of the terminating zero
See also
uriUnescapeInPlaceExA
uriEscapeA
Since
0.3.0

◆ uriUnescapeInPlaceExA()

URI_PUBLIC const char * uriUnescapeInPlaceExA ( char * inout,
UriBool plusToSpace,
UriBreakConversion breakConversion )

Unescapes percent-encoded groups in a given string. E.g. "%20" will become " ". Unescaping is done in place. The return value will be point to the new position of the terminating zero. Use this value to get the new length of the string. NULL is only returned if inout is NULL.

Parameters
inoutINOUT: Text to unescape/decode
plusToSpaceIN: Whether to convert '+' to ' ' or not
breakConversionIN: Line break conversion mode
Returns
Pointer to new position of the terminating zero
See also
uriUnescapeInPlaceA
uriEscapeExA
Since
0.5.0

◆ uriUnixFilenameToUriStringA()

URI_PUBLIC int uriUnixFilenameToUriStringA ( const char * filename,
char * uriString )

Converts a Unix filename to a URI string. The destination buffer must be large enough to hold 7 + 3 * len(filename) + 1 characters in case of an absolute filename or 3 * len(filename) + 1 in case of a relative filename.

EXAMPLE Input: "/bin/bash" Output: "file:///bin/bash"

Parameters
filenameIN: Unix filename to convert
uriStringOUT: Destination to write URI string to
Returns
Error code or 0 on success
See also
uriUriStringToUnixFilenameA
uriWindowsFilenameToUriStringA
Since
0.5.2

◆ uriUriStringToUnixFilenameA()

URI_PUBLIC int uriUriStringToUnixFilenameA ( const char * uriString,
char * filename )

Extracts a Unix filename from a URI string. The destination buffer must be large enough to hold len(uriString) + 1 - 5 characters in case of an absolute URI or len(uriString) + 1 in case of a relative URI.

Parameters
uriStringIN: URI string to convert
filenameOUT: Destination to write filename to
Returns
Error code or 0 on success
See also
uriUnixFilenameToUriStringA
uriUriStringToWindowsFilenameA
Since
0.5.2

◆ uriUriStringToWindowsFilenameA()

URI_PUBLIC int uriUriStringToWindowsFilenameA ( const char * uriString,
char * filename )

Extracts a Windows filename from a URI string. The destination buffer must be large enough to hold len(uriString) + 1 - 5 characters in case of an absolute URI or len(uriString) + 1 in case of a relative URI.

Parameters
uriStringIN: URI string to convert
filenameOUT: Destination to write filename to
Returns
Error code or 0 on success
See also
uriWindowsFilenameToUriStringA
uriUriStringToUnixFilenameA
Since
0.5.2

◆ uriWindowsFilenameToUriStringA()

URI_PUBLIC int uriWindowsFilenameToUriStringA ( const char * filename,
char * uriString )

Converts a Windows filename to a URI string. The destination buffer must be large enough to hold 8 + 3 * len(filename) + 1 characters in case of an absolute filename or 3 * len(filename) + 1 in case of a relative filename.

EXAMPLE Input: "E:\\Documents and Settings" Output: "file:///E:/Documents%20and%20Settings"

Parameters
filenameIN: Windows filename to convert
uriStringOUT: Destination to write URI string to
Returns
Error code or 0 on success
See also
uriUriStringToWindowsFilenameA
uriUnixFilenameToUriStringA
Since
0.5.2