common.[ch]: Provide a function `format_name' to turn a value-list into its string...
authorFlorian Forster <octo@leeloo.lan.home.verplant.org>
Tue, 27 Mar 2007 15:23:51 +0000 (17:23 +0200)
committerFlorian Forster <octo@leeloo.lan.home.verplant.org>
Tue, 27 Mar 2007 15:23:51 +0000 (17:23 +0200)
src/common.c
src/common.h

index 967a82a..6521a58 100644 (file)
@@ -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 */
index 310aa8a..6c097f6 100644 (file)
@@ -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 */