#include <nng/nng.h>
int nng_url_parse(nng_url **urlp, const char *str);
--- version: tip layout: manpage_v2 title: nng_url_parse(3) ---
nng_url_parse - create URL structure from a string
#include <nng/nng.h>
int nng_url_parse(nng_url **urlp, const char *str);
The nng_url_parse() function parses the string str containing an
RFC 3986 compliant URL, and creates
an
nng_url structure containing the results.
A pointer to the resulting structure is stored in urlp.
The structure may disposed of when no longer needed by calling
nng_url_free().
The nng_url_parse() function also canonicalizes the results, as
follows:
The URL is parsed into the various components.
The u_scheme, u_hostname, u_host, and u_port members are
converted to lower case.
Percent-encoded values for unreserved characters converted to their unencoded forms.
Additionally URL percent-encoded values for characters in the path and with numeric values larger than 127 (i.e. not ASCII) are decoded.
The resulting u_path is checked for invalid UTF-8 sequences, consisting
of surrogate pairs, illegal byte sequences, or overlong encodings.
If this check fails, then the entire URL is considered invalid, and
the function returns NNG_EINVAL.
Path segments consisting of . and .. are resolved as per
RFC 3986 6.2.2.3.
Further, empty path segments are removed, meaning that duplicate
slash (/) separators are removed from the path.
If a port was not specified, but the scheme defines a default
port, then u_port will be filled in with the value of the default port.
Only the u_userinfo, u_query, and u_fragment members will ever be
NULL. The other members will be filled in with either default values
or the empty string if they cannot be determined from str.
|
This function returns 0 on success, and non-zero otherwise.
NNG_ENOMEM
|
Insufficient free memory exists to allocate a message. |
NNG_EINVAL
|
An invalid URL was supplied. |