logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

nng_url_parse - create URL structure from a string

Description

       The nng_url_parse() function parses the string str containing an RFC 3986
       <https://tools.ietf.org/html/rfc3986> 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().

   URLCanonicalization
       The nng_url_parse() function also canonicalizes the results, as follows:

        1. The URL is parsed into the various components.

        2. The u_scheme, u_hostname, u_host, and u_port members are converted to lower case.

        3. Percent-encoded values for unreserved characters <https://tools.ietf.org/html/rfc3986#section-2.3>
           converted to their unencoded forms.

        4. Additionally URL percent-encoded values for characters in the path and with numeric values larger
           than 127 (i.e. not ASCII) are decoded.

        5. 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.

        6. Path segments consisting of . and .. are resolved as per RFC 3986 6.2.2.3
           <https://tools.ietf.org/html/rfc3986#section-6.2.2.3>.

        7. Further, empty path segments are removed, meaning that duplicate slash (/) separators are removed
           from the path.

        8. 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.

           Tip

           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.

Errors

       NNG_ENOMEM
           Insufficient free memory exists to allocate a message.

       NNG_EINVAL
           An invalid URL was supplied.

Name

       nng_url_parse - create URL structure from a string

Return Values

       This function returns 0 on success, and non-zero otherwise.

See Also

nng_url_clone(3), nng_url_free(3), nng_strerror(3), nng_url(5), nng(7)

                                                   2025-04-20                                   NNG_URL_PARSE(3)

Synopsis

           #include <nng/nng.h>

           int nng_url_parse(nng_url **urlp, const char *str);

See Also