#include <sofia-sip/su_alloc.h>
Include dependency graph for url.h:

Go to the source code of this file.
Data Structures | |
| struct | url_t |
| URL structure. More... | |
| union | url_string_t |
| Type to present either a parsed URL or string. More... | |
Defines | |
| #define | URL_INIT_AS(type) |
| Initializer for an url_t structure. | |
| #define | URL_PORT(u) |
| Return the URL port string, using default port if none present. | |
| #define | URL_STRING_P(u) |
| Test if a pointer to url_string_t is a string (not a pointer to a url_t structure). | |
| #define | URL_IS_STRING(u) |
| Test if a pointer to url_string_t is a string (not a pointer to a url_t structure). | |
| #define | URL_STRING_MAKE(s) |
| Cast a string to a url_string_t. | |
| #define | URL_PRINT_FORMAT |
| Format string used when printing url with printf(). | |
| #define | URL_PRINT_ARGS(u) |
| Argument list used when printing url with printf(). | |
| #define | URL_E(buf, end, url) |
| Encode a URL: use buf up to end. | |
| #define | URL_DUP(buf, end, dst, src) |
| Duplicate the url: use buf up to end. | |
Enumerations | |
| enum | url_type_e { url_invalid, url_unknown, url_any, url_sip, url_sips, url_tel, url_fax, url_modem, url_http, url_https, url_ftp, url_file, url_rtsp, url_rtspu, url_mailto, url_im, url_pres, url_cid, url_msrp, url_msrps, url_wv } |
| Recognized URL schemes (value of url_t.url_type). More... | |
| enum | { URL_MAXLEN } |
Functions | |
| url_t * | url_make (su_home_t *h, char const *str) |
| Convert a string to a url struct. | |
| url_t * | url_format (su_home_t *h, char const *fmt,...) |
| Convert a string formatting result to a url struct. | |
| char * | url_as_string (su_home_t *home, url_t const *url) |
| Convert url_t to a string allocated from home. | |
| url_t * | url_hdup (su_home_t *h, url_t const *src) |
| Duplicate the url to memory allocated via home. | |
| int | url_sanitize (url_t *u) |
| Sanitize a URL. | |
| char const * | url_scheme (enum url_type_e type) |
| Get URL scheme by type. | |
| int | url_cmp (url_t const *a, url_t const *b) |
| Compare two URLs lazily. | |
| int | url_cmp_all (url_t const *a, url_t const *b) |
| Compare two URLs conservatively. | |
| isize_t | url_param (char const *params, char const *tag, char value[], isize_t vlen) |
| Search for a parameter. | |
| int | url_has_param (url_t const *url, char const *name) |
| Check for a parameter. | |
| isize_t | url_have_param (char const *params, char const *tag) |
| Check for a presence of a parameter in string. | |
| int | url_param_add (su_home_t *h, url_t *url, char const *param) |
| Add a parameter. | |
| int | url_strip_transport (url_t *u) |
| Strip transport-specific stuff away from URI. | |
| char * | url_strip_param_string (char *params, char const *name) |
| Strip parameter away from URI. | |
| int | url_have_transport (url_t const *u) |
| Test if url has any transport-specific stuff. | |
| char * | url_query_as_header_string (su_home_t *home, char const *query) |
| Convert a URL query to a header string. | |
| int | url_reserved_p (char const *s) |
| Test if string contains url-reserved characters. | |
| char * | url_escape (char *d, char const *s, char const reserved[]) |
| Escape a string. | |
| isize_t | url_esclen (char const *s, char const reserved[]) |
| Calculate length of string when escaped. | |
| size_t | url_unescape_to (char *d, char const *s, size_t n) |
| Unescape characters from string. | |
| char * | url_unescape (char *d, char const *s) |
| Unescape a string. | |
| void | url_init (url_t *url, enum url_type_e type) |
| Init a url structure as given type. | |
| char const * | url_port_default (enum url_type_e url_type) |
| Return default port number corresponding to the url type. | |
| char const * | url_tport_default (enum url_type_e url_type) |
| Return default transport name corresponding to the url type. | |
| char const * | url_port (url_t const *u) |
| Return the URL port string, using default port if not present. | |
| int | url_string_p (url_string_t const *url) |
| Test if a pointer to url_string_t is a string (not a pointer to a url_t structure). | |
| int | url_is_string (url_string_t const *url) |
| Test if a pointer to url_string_t is a string (not a pointer to a url_t structure). | |
| void | url_update (struct su_md5_t *md5, url_t const *url) |
| Update MD5 sum with URL contents. | |
| void | url_digest (void *hash, int hsize, url_t const *, char const *key) |
| Calculate a digest from URL contents. | |
| int | url_d (url_t *url, char *s) |
| Decode a URL. | |
| isize_t | url_len (url_t const *url) |
| Calculate the encoding length of URL. | |
| issize_t | url_e (char buffer[], isize_t n, url_t const *url) |
| Encode a URL. | |
| isize_t | url_xtra (url_t const *url) |
| Calculate the size of srings attached to the url. | |
| issize_t | url_dup (char *, isize_t, url_t *dst, url_t const *src) |
| Duplicate the url in the provided memory area. | |
|
|
Duplicate the url: use buf up to end. The macro URL_DUP() duplicates the url. The non-constant strings in src are copied to buf. However, no strings are copied past end. In other words, the size of buffer is end - buf. The macro updates the buffer pointer buf, so that it points to the first unused byte in the buffer. The buffer pointer buf is updated, even if the buffer is too small for the duplicated strings.
|
|
|
Initializer for an url_t structure. The macro URL_INIT_AS() is used to initialize a url_t structure with a known url type: url_t urls[2] = { URL_INIT_AS(sip), URL_INIT_AS(http) }; |
|
|
Argument list used when printing url with printf(). The macro URL_PRINT_ARGS() is used to create a stdarg list for printf() or similar printing functions. Using it, a URL can be printed like this:
printf("%s received URL " URL_PRINT_FORMAT "\n", my_name, URL_PRINT_ARGS(url)); |
|
|
Format string used when printing url with printf(). The macro URL_PRINT_FORMAT is used in format string of printf() or similar printing functions. A URL can be printed like this: printf("%s received URL " URL_PRINT_FORMAT "\n", my_name, URL_PRINT_ARGS(url)); |
|
|
|
|
|
Recognized URL schemes (value of url_t.url_type).
|
|
||||||||||||
|
Convert url_t to a string allocated from home.
|
|
||||||||||||
|
Compare two URLs lazily. Compare essential parts of URLs: schema, host, port, and username. any_url compares 0 with any other URL. pres: and im: URIs compares 0 with SIP URIs.
|
|
||||||||||||
|
Compare two URLs conservatively. Compare all parts of URLs.
|
|
||||||||||||
|
Decode a URL. This function decodes a URL string to a url_t structure.
|
|
||||||||||||||||||||
|
Duplicate the url in the provided memory area. The function url_dup() copies the url structure src and the strings attached to it to url. The non-constant strings in src are copied to buf. If the size of duplicated strings exceed bufsize, the corresponding string fields in url are set to NULL. The calling function can calculate the size of buffer required by calling url_dup() with zero as bufsize and NULL as dst.
|
|
||||||||||||||||
|
Encode a URL. The function url_e() combines a URL from substrings in url_t structure according the URL syntax presented above. The encoded url is stored in a buffer of n bytes.
|
|
||||||||||||||||
|
Escape a string.
The function url_escape() copies the string pointed by s to the array pointed by d, excluding the terminating \0 character. All reserved characters in s are copied in hexadecimal format, for instance,
|
|
||||||||||||
|
Calculate length of string when escaped. Calculate the length of string s when the excluded or reserved characters in it have been escaped.
if (url_reserved_p(s)) { n = malloc(url_esclen(s, NULL) + 1); if (n) url_escape(n, s); } else { n = malloc(strlen(s) + 1); if (n) strcpy(n, s); } |
|
||||||||||||
|
Check for a presence of a parameter in string.
|
|
|
Test if url has any transport-specific stuff. The function url_have_transport() tests if there are transport-specific parameters in a SIP or SIPS URI. These parameters include:
|
|
||||||||||||
|
Duplicate the url to memory allocated via home. The function url_hdup() duplicates (deep copies) an url_t structure. Alternatively, it can be passed a string; string is then copied and parsed to the url_t structure. The function url_hdup() allocates the destination structure from home as a single memory block. It is possible to free the copied url structure and all the associated strings using a single call to su_free().
|
|
||||||||||||||||||||
|
Search for a parameter. This function searches for a parameter from a parameter list. If you want to test if there is parameter user=phone, call this function like if (url_param(url->url_param, "user=phone", NULL, 0))
|
|
||||||||||||
|
Convert a URL query to a header string. URL query is converted by replacing each "=" in header name "=" value pair with semicolon (":"), and the "&" separating header-name-value pairs with line feed ("\n"). The "body" pseudoheader is moved last in the string. The -escaping is removed. Note that if the query contains 00, the resulting string will be truncated.
|
|
|
Test if string contains url-reserved characters.
|
|
|
Sanitize a URL. The function url_sanitize() adds a scheme to an incomplete URL. It modifies its parameter structure url. Currently, the function follows simple heuristics:
|
|
||||||||||||
|
Strip parameter away from URI. Remove a named parameter and its possible value from the URL parameter string (url_s#url_param).
|
|
|
Strip transport-specific stuff away from URI. The function url_strip_transport() removes transport-specific parameters from a SIP or SIPS URI. These parameters include:
|
|
||||||||||||
|
Unescape a string.
Unescape string s to the buffer d, including the terminating \0 character. All -escaped triplets in s are unescaped, for instance,
|
|
||||||||||||||||
|
Unescape characters from string.
Unescape n characters from string s to the buffer d, including the terminating \0 character. All -escaped triplets in s are unescaped, for instance,
|
|
|
Calculate the size of srings attached to the url.
|