libosip  4.0.0
How-To parse URI.
The GNU oSIP stack

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:

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

Basic URI operations

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"); }

Note: dest is allocated dynamically and must be released at the end of the call sequence to avoid memory leaks.

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);