/** * @ingroup libosip2 The GNU oSIP stack * @defgroup howto_uri How-To parse URI. * @section howto_uri1 URI Parser APIs To demonstrate how to use the libosip2 parser, the simplest way is to start playing with URI. (Uniform Resource Identifier) For each parser (headers, SIP message or URI), you'll always find something close to this minimal subset of methods: ~~~~~~~{.c} // allocation/release of memory. xxxx_init(osip_xxx_t **el); xxxx_free(osip_xxx_t *el); xxxx_parse(osip_xxx_t *el, char *source); xxxx_to_str(osip_xxx_t *el, char **dest); ~~~~~~~ For the URI parser, the API is documented in osip_uri.h * @section howto_uri2 Basic URI operations + Here is the sequence needed to parse a given buffer containing a sip URI: ~~~~~~~{.c} osip_uri_t *uri; int i; i=osip_uri_init(&uri); if (i!=0) { fprintf(stderr, "cannot allocate\n"); return -1; } i=osip_uri_parse(uri, buffer); if (i!=0) { fprintf(stderr, "cannot parse uri\n"); } osip_uri_free(uri); ~~~~~~~ + Here is the sequence needed to convert the URI into a printable string. **Note**: dest is allocated dynamically and must be released at the end of the call sequence to avoid memory leaks. ~~~~~~~{.c} char *dest; i = osip_uri_to_str(uri, &dest); if (i!=0) { fprintf(stderr, "cannot get printable URI\n"); return -1; } fprintf(stdout, "URI: %s\n", dest); osip_free(dest); ~~~~~~~ */