diff options
-rw-r--r-- | plugins/utils.c | 39 | ||||
-rw-r--r-- | plugins/utils.h | 12 |
2 files changed, 51 insertions, 0 deletions
diff --git a/plugins/utils.c b/plugins/utils.c index ec254739..77e2e279 100644 --- a/plugins/utils.c +++ b/plugins/utils.c @@ -544,3 +544,42 @@ char *perfdata (const char *label, return data; } + + +char *fperfdata (const char *label, + double val, + const char *uom, + int warnp, + double warn, + int critp, + double crit, + int minp, + double minv, + int maxp, + double maxv) +{ + char *data = NULL; + + if (strpbrk (label, "'= ")) + asprintf (&data, "'%s'=%ld%s;", label, val, uom); + else + asprintf (&data, "%s=%ld%s;", label, val, uom); + + if (warnp) + asprintf (&data, "%s%ld;", data, warn); + else + asprintf (&data, "%s;", data); + + if (critp) + asprintf (&data, "%s%ld;", data, crit); + else + asprintf (&data, "%s;", data); + + if (minp) + asprintf (&data, "%s%ld", data, minv); + + if (maxp) + asprintf (&data, "%s;%ld", data, maxv); + + return data; +} diff --git a/plugins/utils.h b/plugins/utils.h index c2b06415..35e62ab4 100644 --- a/plugins/utils.h +++ b/plugins/utils.h @@ -92,6 +92,18 @@ char *perfdata (const char *label, int maxp, long int maxv); +char *fperfdata (const char *label, + double val, + const char *uom, + int warnp, + double warn, + int critp, + double crit, + int minp, + double minv, + int maxp, + double maxv); + /* The idea here is that, although not every plugin will use all of these, most will or should. Therefore, for consistency, these very common options should have only these meanings throughout the overall suite */ |