X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Furi.c;h=3550af9755d22c5c0449cc2f11c8cb2657a4d6df;hp=e686f7c5d788b2676a49c9b4746c846a63fc5aba;hb=32dd26fbc3c69fe677a7917535e10ace066e674c;hpb=13083fa6d2130b0e2c4f5bb03c90b99d44564408 diff --git a/src/common/uri.c b/src/common/uri.c index e686f7c5d..3550af975 100644 --- a/src/common/uri.c +++ b/src/common/uri.c @@ -56,7 +56,7 @@ static const struct uri_proto proto_uri[] = { * Return pointer to the character in s matching one of the characters in * accept. If nothing is found, return pointer to the end of string (eos). */ -const inline char *strpbrk_or_eos(const char *s, const char *accept) +static const inline char *strpbrk_or_eos(const char *s, const char *accept) { char *p = strpbrk(s, accept); if (p == NULL) { @@ -137,11 +137,47 @@ error: return -1; } +/* + * Build a string URL from a lttng_uri object. + */ +__attribute__((visibility("hidden"))) +int uri_to_str_url(struct lttng_uri *uri, char *dst, size_t size) +{ + int ipver, ret; + const char *addr; + char proto[4], port[7]; + + assert(uri); + assert(dst); + + if (uri->dtype == LTTNG_DST_PATH) { + ipver = 0; + addr = uri->dst.path; + (void) snprintf(proto, sizeof(proto), "file"); + (void) snprintf(port, sizeof(port), "%s", ""); + } else { + ipver = (uri->dtype == LTTNG_DST_IPV4) ? 4 : 6; + addr = (ipver == 4) ? uri->dst.ipv4 : uri->dst.ipv6; + (void) snprintf(proto, sizeof(proto), "net%d", ipver); + (void) snprintf(port, sizeof(port), ":%d", uri->port); + } + + ret = snprintf(dst, size, "%s://%s%s%s%s/%s", proto, + (ipver == 6) ? "[" : "", addr, (ipver == 6) ? "]" : "", + port, uri->subdir); + if (ret < 0) { + PERROR("snprintf uri to url"); + } + + return ret; +} + /* * Compare two URIs. * * Return 0 if equal else 1. */ +__attribute__((visibility("hidden"))) int uri_compare(struct lttng_uri *uri1, struct lttng_uri *uri2) { return memcmp(uri1, uri2, sizeof(struct lttng_uri)); @@ -150,6 +186,7 @@ int uri_compare(struct lttng_uri *uri1, struct lttng_uri *uri2) /* * Free URI memory. */ +__attribute__((visibility("hidden"))) void uri_free(struct lttng_uri *uri) { /* Safety check */ @@ -161,6 +198,7 @@ void uri_free(struct lttng_uri *uri) /* * Return an allocated URI. */ +__attribute__((visibility("hidden"))) struct lttng_uri *uri_create(void) { struct lttng_uri *uri; @@ -189,6 +227,7 @@ struct lttng_uri *uri_create(void) * This code was originally licensed GPLv2 so we acknolwedge the Free Software * Foundation here for the work and to make sure we are compliant with it. */ +__attribute__((visibility("hidden"))) ssize_t uri_parse(const char *str_uri, struct lttng_uri **uris) { int ret, i = 0;