From 232d518763046ff1b1c3243784caf0c7e821bcef Mon Sep 17 00:00:00 2001 From: Florian Forster Date: Tue, 27 Mar 2007 17:23:51 +0200 Subject: [PATCH] common.[ch]: Provide a function `format_name' to turn a value-list into its string representation. --- src/common.c | 41 +++++++++++++++++++++++++++++++++++++++-- src/common.h | 8 ++++++++ 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/src/common.c b/src/common.c index 967a82af..6521a58b 100644 --- a/src/common.c +++ b/src/common.c @@ -500,7 +500,7 @@ unsigned long long ntohll (unsigned long long n) #else return (((unsigned long long) ntohl (n)) << 32) + ntohl (n >> 32); #endif -} +} /* unsigned long long ntohll */ unsigned long long htonll (unsigned long long n) { @@ -509,4 +509,41 @@ unsigned long long htonll (unsigned long long n) #else return (((unsigned long long) htonl (n)) << 32) + htonl (n >> 32); #endif -} +} /* unsigned long long htonll */ + +int format_name (char *ret, int ret_len, + const char *hostname, + const char *plugin, const char *plugin_instance, + const char *type, const char *type_instance) +{ + int status; + + assert (plugin != NULL); + assert (type != NULL); + + if ((plugin_instance == NULL) || (strlen (plugin_instance) == 0)) + { + if ((type_instance == NULL) || (strlen (type_instance) == 0)) + status = snprintf (ret, ret_len, "%s/%s/%s", + hostname, plugin, type); + else + status = snprintf (ret, ret_len, "%s/%s/%s-%s", + hostname, plugin, type, + type_instance); + } + else + { + if ((type_instance == NULL) || (strlen (type_instance) == 0)) + status = snprintf (ret, ret_len, "%s/%s-%s/%s", + hostname, plugin, plugin_instance, + type); + else + status = snprintf (ret, ret_len, "%s/%s-%s/%s-%s", + hostname, plugin, plugin_instance, + type, type_instance); + } + + if ((status < 1) || (status >= ret_len)) + return (-1); + return (0); +} /* int format_name */ diff --git a/src/common.h b/src/common.h index 310aa8a5..6c097f6c 100644 --- a/src/common.h +++ b/src/common.h @@ -156,4 +156,12 @@ long long get_kstat_value (kstat_t *ksp, char *name); unsigned long long ntohll (unsigned long long n); unsigned long long htonll (unsigned long long n); +int format_name (char *ret, int ret_len, + const char *hostname, + const char *plugin, const char *plugin_instance, + const char *type, const char *type_instance); +#define FORMAT_VL(ret, ret_len, vl, ds) \ + format_name (ret, ret_len, (vl)->host, (vl)->plugin, (vl)->plugin_instance, \ + (ds)->type, (vl)->type_instance) + #endif /* COMMON_H */ -- 2.30.2