diff options
Diffstat (limited to 'plugins/utils.c')
-rw-r--r-- | plugins/utils.c | 291 |
1 files changed, 147 insertions, 144 deletions
diff --git a/plugins/utils.c b/plugins/utils.c index 6d366e3d..34335c89 100644 --- a/plugins/utils.c +++ b/plugins/utils.c | |||
@@ -42,54 +42,6 @@ extern const char *progname; | |||
42 | 42 | ||
43 | time_t start_time, end_time; | 43 | time_t start_time, end_time; |
44 | 44 | ||
45 | /* ************************************************************************** | ||
46 | * max_state(STATE_x, STATE_y) | ||
47 | * compares STATE_x to STATE_y and returns result based on the following | ||
48 | * STATE_UNKNOWN < STATE_OK < STATE_WARNING < STATE_CRITICAL | ||
49 | * | ||
50 | * Note that numerically the above does not hold | ||
51 | ****************************************************************************/ | ||
52 | |||
53 | int max_state(int a, int b) { | ||
54 | if (a == STATE_CRITICAL || b == STATE_CRITICAL) | ||
55 | return STATE_CRITICAL; | ||
56 | else if (a == STATE_WARNING || b == STATE_WARNING) | ||
57 | return STATE_WARNING; | ||
58 | else if (a == STATE_OK || b == STATE_OK) | ||
59 | return STATE_OK; | ||
60 | else if (a == STATE_UNKNOWN || b == STATE_UNKNOWN) | ||
61 | return STATE_UNKNOWN; | ||
62 | else if (a == STATE_DEPENDENT || b == STATE_DEPENDENT) | ||
63 | return STATE_DEPENDENT; | ||
64 | else | ||
65 | return max(a, b); | ||
66 | } | ||
67 | |||
68 | /* ************************************************************************** | ||
69 | * max_state_alt(STATE_x, STATE_y) | ||
70 | * compares STATE_x to STATE_y and returns result based on the following | ||
71 | * STATE_OK < STATE_DEPENDENT < STATE_UNKNOWN < STATE_WARNING < STATE_CRITICAL | ||
72 | * | ||
73 | * The main difference between max_state_alt and max_state it that it doesn't | ||
74 | * allow setting a default to UNKNOWN. It will instead prioritixe any valid | ||
75 | * non-OK state. | ||
76 | ****************************************************************************/ | ||
77 | |||
78 | int max_state_alt(int a, int b) { | ||
79 | if (a == STATE_CRITICAL || b == STATE_CRITICAL) | ||
80 | return STATE_CRITICAL; | ||
81 | else if (a == STATE_WARNING || b == STATE_WARNING) | ||
82 | return STATE_WARNING; | ||
83 | else if (a == STATE_UNKNOWN || b == STATE_UNKNOWN) | ||
84 | return STATE_UNKNOWN; | ||
85 | else if (a == STATE_DEPENDENT || b == STATE_DEPENDENT) | ||
86 | return STATE_DEPENDENT; | ||
87 | else if (a == STATE_OK || b == STATE_OK) | ||
88 | return STATE_OK; | ||
89 | else | ||
90 | return max(a, b); | ||
91 | } | ||
92 | |||
93 | void usage(const char *msg) { | 45 | void usage(const char *msg) { |
94 | printf("%s\n", msg); | 46 | printf("%s\n", msg); |
95 | print_usage(); | 47 | print_usage(); |
@@ -137,41 +89,46 @@ bool is_numeric(char *number) { | |||
137 | char tmp[1]; | 89 | char tmp[1]; |
138 | float x; | 90 | float x; |
139 | 91 | ||
140 | if (!number) | 92 | if (!number) { |
141 | return false; | 93 | return false; |
142 | else if (sscanf(number, "%f%c", &x, tmp) == 1) | 94 | } else if (sscanf(number, "%f%c", &x, tmp) == 1) { |
143 | return true; | 95 | return true; |
144 | else | 96 | } else { |
145 | return false; | 97 | return false; |
98 | } | ||
146 | } | 99 | } |
147 | 100 | ||
148 | bool is_positive(char *number) { | 101 | bool is_positive(char *number) { |
149 | if (is_numeric(number) && atof(number) > 0.0) | 102 | if (is_numeric(number) && atof(number) > 0.0) { |
150 | return true; | 103 | return true; |
151 | else | 104 | } else { |
152 | return false; | 105 | return false; |
106 | } | ||
153 | } | 107 | } |
154 | 108 | ||
155 | bool is_negative(char *number) { | 109 | bool is_negative(char *number) { |
156 | if (is_numeric(number) && atof(number) < 0.0) | 110 | if (is_numeric(number) && atof(number) < 0.0) { |
157 | return true; | 111 | return true; |
158 | else | 112 | } else { |
159 | return false; | 113 | return false; |
114 | } | ||
160 | } | 115 | } |
161 | 116 | ||
162 | bool is_nonnegative(char *number) { | 117 | bool is_nonnegative(char *number) { |
163 | if (is_numeric(number) && atof(number) >= 0.0) | 118 | if (is_numeric(number) && atof(number) >= 0.0) { |
164 | return true; | 119 | return true; |
165 | else | 120 | } else { |
166 | return false; | 121 | return false; |
122 | } | ||
167 | } | 123 | } |
168 | 124 | ||
169 | bool is_percentage(char *number) { | 125 | bool is_percentage(char *number) { |
170 | int x; | 126 | int x; |
171 | if (is_numeric(number) && (x = atof(number)) >= 0 && x <= 100) | 127 | if (is_numeric(number) && (x = atof(number)) >= 0 && x <= 100) { |
172 | return true; | 128 | return true; |
173 | else | 129 | } else { |
174 | return false; | 130 | return false; |
131 | } | ||
175 | } | 132 | } |
176 | 133 | ||
177 | bool is_percentage_expression(const char str[]) { | 134 | bool is_percentage_expression(const char str[]) { |
@@ -204,36 +161,41 @@ bool is_percentage_expression(const char str[]) { | |||
204 | bool is_integer(char *number) { | 161 | bool is_integer(char *number) { |
205 | long int n; | 162 | long int n; |
206 | 163 | ||
207 | if (!number || (strspn(number, "-0123456789 ") != strlen(number))) | 164 | if (!number || (strspn(number, "-0123456789 ") != strlen(number))) { |
208 | return false; | 165 | return false; |
166 | } | ||
209 | 167 | ||
210 | n = strtol(number, NULL, 10); | 168 | n = strtol(number, NULL, 10); |
211 | 169 | ||
212 | if (errno != ERANGE && n >= INT_MIN && n <= INT_MAX) | 170 | if (errno != ERANGE && n >= INT_MIN && n <= INT_MAX) { |
213 | return true; | 171 | return true; |
214 | else | 172 | } else { |
215 | return false; | 173 | return false; |
174 | } | ||
216 | } | 175 | } |
217 | 176 | ||
218 | bool is_intpos(char *number) { | 177 | bool is_intpos(char *number) { |
219 | if (is_integer(number) && atoi(number) > 0) | 178 | if (is_integer(number) && atoi(number) > 0) { |
220 | return true; | 179 | return true; |
221 | else | 180 | } else { |
222 | return false; | 181 | return false; |
182 | } | ||
223 | } | 183 | } |
224 | 184 | ||
225 | bool is_intneg(char *number) { | 185 | bool is_intneg(char *number) { |
226 | if (is_integer(number) && atoi(number) < 0) | 186 | if (is_integer(number) && atoi(number) < 0) { |
227 | return true; | 187 | return true; |
228 | else | 188 | } else { |
229 | return false; | 189 | return false; |
190 | } | ||
230 | } | 191 | } |
231 | 192 | ||
232 | bool is_intnonneg(char *number) { | 193 | bool is_intnonneg(char *number) { |
233 | if (is_integer(number) && atoi(number) >= 0) | 194 | if (is_integer(number) && atoi(number) >= 0) { |
234 | return true; | 195 | return true; |
235 | else | 196 | } else { |
236 | return false; | 197 | return false; |
198 | } | ||
237 | } | 199 | } |
238 | 200 | ||
239 | /* | 201 | /* |
@@ -295,19 +257,21 @@ bool is_uint64(char *number, uint64_t *target) { | |||
295 | 257 | ||
296 | bool is_intpercent(char *number) { | 258 | bool is_intpercent(char *number) { |
297 | int i; | 259 | int i; |
298 | if (is_integer(number) && (i = atoi(number)) >= 0 && i <= 100) | 260 | if (is_integer(number) && (i = atoi(number)) >= 0 && i <= 100) { |
299 | return true; | 261 | return true; |
300 | else | 262 | } else { |
301 | return false; | 263 | return false; |
264 | } | ||
302 | } | 265 | } |
303 | 266 | ||
304 | bool is_option(char *str) { | 267 | bool is_option(char *str) { |
305 | if (!str) | 268 | if (!str) { |
306 | return false; | 269 | return false; |
307 | else if (strspn(str, "-") == 1 || strspn(str, "-") == 2) | 270 | } else if (strspn(str, "-") == 1 || strspn(str, "-") == 2) { |
308 | return true; | 271 | return true; |
309 | else | 272 | } else { |
310 | return false; | 273 | return false; |
274 | } | ||
311 | } | 275 | } |
312 | 276 | ||
313 | #ifdef NEED_GETTIMEOFDAY | 277 | #ifdef NEED_GETTIMEOFDAY |
@@ -336,10 +300,11 @@ void strip(char *buffer) { | |||
336 | 300 | ||
337 | for (x = strlen(buffer); x >= 1; x--) { | 301 | for (x = strlen(buffer); x >= 1; x--) { |
338 | i = x - 1; | 302 | i = x - 1; |
339 | if (buffer[i] == ' ' || buffer[i] == '\r' || buffer[i] == '\n' || buffer[i] == '\t') | 303 | if (buffer[i] == ' ' || buffer[i] == '\r' || buffer[i] == '\n' || buffer[i] == '\t') { |
340 | buffer[i] = '\0'; | 304 | buffer[i] = '\0'; |
341 | else | 305 | } else { |
342 | break; | 306 | break; |
307 | } | ||
343 | } | 308 | } |
344 | return; | 309 | return; |
345 | } | 310 | } |
@@ -357,8 +322,9 @@ void strip(char *buffer) { | |||
357 | *****************************************************************************/ | 322 | *****************************************************************************/ |
358 | 323 | ||
359 | char *strscpy(char *dest, const char *src) { | 324 | char *strscpy(char *dest, const char *src) { |
360 | if (src == NULL) | 325 | if (src == NULL) { |
361 | return NULL; | 326 | return NULL; |
327 | } | ||
362 | 328 | ||
363 | xasprintf(&dest, "%s", src); | 329 | xasprintf(&dest, "%s", src); |
364 | 330 | ||
@@ -417,17 +383,21 @@ char *strscpy(char *dest, const char *src) { | |||
417 | 383 | ||
418 | char *strnl(char *str) { | 384 | char *strnl(char *str) { |
419 | size_t len; | 385 | size_t len; |
420 | if (str == NULL) | 386 | if (str == NULL) { |
421 | return NULL; | 387 | return NULL; |
388 | } | ||
422 | str = strpbrk(str, "\r\n"); | 389 | str = strpbrk(str, "\r\n"); |
423 | if (str == NULL) | 390 | if (str == NULL) { |
424 | return NULL; | 391 | return NULL; |
392 | } | ||
425 | len = strspn(str, "\r\n"); | 393 | len = strspn(str, "\r\n"); |
426 | if (str[len] == '\0') | 394 | if (str[len] == '\0') { |
427 | return NULL; | 395 | return NULL; |
396 | } | ||
428 | str += len; | 397 | str += len; |
429 | if (strlen(str) == 0) | 398 | if (strlen(str) == 0) { |
430 | return NULL; | 399 | return NULL; |
400 | } | ||
431 | return str; | 401 | return str; |
432 | } | 402 | } |
433 | 403 | ||
@@ -450,15 +420,18 @@ char *strnl(char *str) { | |||
450 | char *strpcpy(char *dest, const char *src, const char *str) { | 420 | char *strpcpy(char *dest, const char *src, const char *str) { |
451 | size_t len; | 421 | size_t len; |
452 | 422 | ||
453 | if (src) | 423 | if (src) { |
454 | len = strcspn(src, str); | 424 | len = strcspn(src, str); |
455 | else | 425 | } else { |
456 | return NULL; | 426 | return NULL; |
427 | } | ||
457 | 428 | ||
458 | if (dest == NULL || strlen(dest) < len) | 429 | if (dest == NULL || strlen(dest) < len) { |
459 | dest = realloc(dest, len + 1); | 430 | dest = realloc(dest, len + 1); |
460 | if (dest == NULL) | 431 | } |
432 | if (dest == NULL) { | ||
461 | die(STATE_UNKNOWN, _("failed realloc in strpcpy\n")); | 433 | die(STATE_UNKNOWN, _("failed realloc in strpcpy\n")); |
434 | } | ||
462 | 435 | ||
463 | strncpy(dest, src, len); | 436 | strncpy(dest, src, len); |
464 | dest[len] = '\0'; | 437 | dest[len] = '\0'; |
@@ -482,10 +455,11 @@ char *strpcpy(char *dest, const char *src, const char *str) { | |||
482 | char *strpcat(char *dest, const char *src, const char *str) { | 455 | char *strpcat(char *dest, const char *src, const char *str) { |
483 | size_t len, l2; | 456 | size_t len, l2; |
484 | 457 | ||
485 | if (dest) | 458 | if (dest) { |
486 | len = strlen(dest); | 459 | len = strlen(dest); |
487 | else | 460 | } else { |
488 | len = 0; | 461 | len = 0; |
462 | } | ||
489 | 463 | ||
490 | if (src) { | 464 | if (src) { |
491 | l2 = strcspn(src, str); | 465 | l2 = strcspn(src, str); |
@@ -494,8 +468,9 @@ char *strpcat(char *dest, const char *src, const char *str) { | |||
494 | } | 468 | } |
495 | 469 | ||
496 | dest = realloc(dest, len + l2 + 1); | 470 | dest = realloc(dest, len + l2 + 1); |
497 | if (dest == NULL) | 471 | if (dest == NULL) { |
498 | die(STATE_UNKNOWN, _("failed malloc in strscat\n")); | 472 | die(STATE_UNKNOWN, _("failed malloc in strscat\n")); |
473 | } | ||
499 | 474 | ||
500 | strncpy(dest + len, src, l2); | 475 | strncpy(dest + len, src, l2); |
501 | dest[len + l2] = '\0'; | 476 | dest[len + l2] = '\0'; |
@@ -511,8 +486,9 @@ char *strpcat(char *dest, const char *src, const char *str) { | |||
511 | 486 | ||
512 | int xvasprintf(char **strp, const char *fmt, va_list ap) { | 487 | int xvasprintf(char **strp, const char *fmt, va_list ap) { |
513 | int result = vasprintf(strp, fmt, ap); | 488 | int result = vasprintf(strp, fmt, ap); |
514 | if (result == -1 || *strp == NULL) | 489 | if (result == -1 || *strp == NULL) { |
515 | die(STATE_UNKNOWN, _("failed malloc in xvasprintf\n")); | 490 | die(STATE_UNKNOWN, _("failed malloc in xvasprintf\n")); |
491 | } | ||
516 | return result; | 492 | return result; |
517 | } | 493 | } |
518 | 494 | ||
@@ -531,126 +507,145 @@ int xasprintf(char **strp, const char *fmt, ...) { | |||
531 | * | 507 | * |
532 | ******************************************************************************/ | 508 | ******************************************************************************/ |
533 | 509 | ||
534 | char *perfdata(const char *label, long int val, const char *uom, int warnp, long int warn, int critp, long int crit, int minp, | 510 | char *perfdata(const char *label, long int val, const char *uom, bool warnp, long int warn, bool critp, long int crit, bool minp, |
535 | long int minv, int maxp, long int maxv) { | 511 | long int minv, bool maxp, long int maxv) { |
536 | char *data = NULL; | 512 | char *data = NULL; |
537 | 513 | ||
538 | if (strpbrk(label, "'= ")) | 514 | if (strpbrk(label, "'= ")) { |
539 | xasprintf(&data, "'%s'=%ld%s;", label, val, uom); | 515 | xasprintf(&data, "'%s'=%ld%s;", label, val, uom); |
540 | else | 516 | } else { |
541 | xasprintf(&data, "%s=%ld%s;", label, val, uom); | 517 | xasprintf(&data, "%s=%ld%s;", label, val, uom); |
518 | } | ||
542 | 519 | ||
543 | if (warnp) | 520 | if (warnp) { |
544 | xasprintf(&data, "%s%ld;", data, warn); | 521 | xasprintf(&data, "%s%ld;", data, warn); |
545 | else | 522 | } else { |
546 | xasprintf(&data, "%s;", data); | 523 | xasprintf(&data, "%s;", data); |
524 | } | ||
547 | 525 | ||
548 | if (critp) | 526 | if (critp) { |
549 | xasprintf(&data, "%s%ld;", data, crit); | 527 | xasprintf(&data, "%s%ld;", data, crit); |
550 | else | 528 | } else { |
551 | xasprintf(&data, "%s;", data); | 529 | xasprintf(&data, "%s;", data); |
530 | } | ||
552 | 531 | ||
553 | if (minp) | 532 | if (minp) { |
554 | xasprintf(&data, "%s%ld;", data, minv); | 533 | xasprintf(&data, "%s%ld;", data, minv); |
555 | else | 534 | } else { |
556 | xasprintf(&data, "%s;", data); | 535 | xasprintf(&data, "%s;", data); |
536 | } | ||
557 | 537 | ||
558 | if (maxp) | 538 | if (maxp) { |
559 | xasprintf(&data, "%s%ld", data, maxv); | 539 | xasprintf(&data, "%s%ld", data, maxv); |
540 | } | ||
560 | 541 | ||
561 | return data; | 542 | return data; |
562 | } | 543 | } |
563 | 544 | ||
564 | char *perfdata_uint64(const char *label, uint64_t val, const char *uom, int warnp, /* Warning present */ | 545 | char *perfdata_uint64(const char *label, uint64_t val, const char *uom, bool warnp, /* Warning present */ |
565 | uint64_t warn, int critp, /* Critical present */ | 546 | uint64_t warn, bool critp, /* Critical present */ |
566 | uint64_t crit, int minp, /* Minimum present */ | 547 | uint64_t crit, bool minp, /* Minimum present */ |
567 | uint64_t minv, int maxp, /* Maximum present */ | 548 | uint64_t minv, bool maxp, /* Maximum present */ |
568 | uint64_t maxv) { | 549 | uint64_t maxv) { |
569 | char *data = NULL; | 550 | char *data = NULL; |
570 | 551 | ||
571 | if (strpbrk(label, "'= ")) | 552 | if (strpbrk(label, "'= ")) { |
572 | xasprintf(&data, "'%s'=%" PRIu64 "%s;", label, val, uom); | 553 | xasprintf(&data, "'%s'=%" PRIu64 "%s;", label, val, uom); |
573 | else | 554 | } else { |
574 | xasprintf(&data, "%s=%" PRIu64 "%s;", label, val, uom); | 555 | xasprintf(&data, "%s=%" PRIu64 "%s;", label, val, uom); |
556 | } | ||
575 | 557 | ||
576 | if (warnp) | 558 | if (warnp) { |
577 | xasprintf(&data, "%s%" PRIu64 ";", data, warn); | 559 | xasprintf(&data, "%s%" PRIu64 ";", data, warn); |
578 | else | 560 | } else { |
579 | xasprintf(&data, "%s;", data); | 561 | xasprintf(&data, "%s;", data); |
562 | } | ||
580 | 563 | ||
581 | if (critp) | 564 | if (critp) { |
582 | xasprintf(&data, "%s%" PRIu64 ";", data, crit); | 565 | xasprintf(&data, "%s%" PRIu64 ";", data, crit); |
583 | else | 566 | } else { |
584 | xasprintf(&data, "%s;", data); | 567 | xasprintf(&data, "%s;", data); |
568 | } | ||
585 | 569 | ||
586 | if (minp) | 570 | if (minp) { |
587 | xasprintf(&data, "%s%" PRIu64 ";", data, minv); | 571 | xasprintf(&data, "%s%" PRIu64 ";", data, minv); |
588 | else | 572 | } else { |
589 | xasprintf(&data, "%s;", data); | 573 | xasprintf(&data, "%s;", data); |
574 | } | ||
590 | 575 | ||
591 | if (maxp) | 576 | if (maxp) { |
592 | xasprintf(&data, "%s%" PRIu64, data, maxv); | 577 | xasprintf(&data, "%s%" PRIu64, data, maxv); |
578 | } | ||
593 | 579 | ||
594 | return data; | 580 | return data; |
595 | } | 581 | } |
596 | 582 | ||
597 | char *perfdata_int64(const char *label, int64_t val, const char *uom, int warnp, /* Warning present */ | 583 | char *perfdata_int64(const char *label, int64_t val, const char *uom, bool warnp, /* Warning present */ |
598 | int64_t warn, int critp, /* Critical present */ | 584 | int64_t warn, bool critp, /* Critical present */ |
599 | int64_t crit, int minp, /* Minimum present */ | 585 | int64_t crit, bool minp, /* Minimum present */ |
600 | int64_t minv, int maxp, /* Maximum present */ | 586 | int64_t minv, bool maxp, /* Maximum present */ |
601 | int64_t maxv) { | 587 | int64_t maxv) { |
602 | char *data = NULL; | 588 | char *data = NULL; |
603 | 589 | ||
604 | if (strpbrk(label, "'= ")) | 590 | if (strpbrk(label, "'= ")) { |
605 | xasprintf(&data, "'%s'=%" PRId64 "%s;", label, val, uom); | 591 | xasprintf(&data, "'%s'=%" PRId64 "%s;", label, val, uom); |
606 | else | 592 | } else { |
607 | xasprintf(&data, "%s=%" PRId64 "%s;", label, val, uom); | 593 | xasprintf(&data, "%s=%" PRId64 "%s;", label, val, uom); |
594 | } | ||
608 | 595 | ||
609 | if (warnp) | 596 | if (warnp) { |
610 | xasprintf(&data, "%s%" PRId64 ";", data, warn); | 597 | xasprintf(&data, "%s%" PRId64 ";", data, warn); |
611 | else | 598 | } else { |
612 | xasprintf(&data, "%s;", data); | 599 | xasprintf(&data, "%s;", data); |
600 | } | ||
613 | 601 | ||
614 | if (critp) | 602 | if (critp) { |
615 | xasprintf(&data, "%s%" PRId64 ";", data, crit); | 603 | xasprintf(&data, "%s%" PRId64 ";", data, crit); |
616 | else | 604 | } else { |
617 | xasprintf(&data, "%s;", data); | 605 | xasprintf(&data, "%s;", data); |
606 | } | ||
618 | 607 | ||
619 | if (minp) | 608 | if (minp) { |
620 | xasprintf(&data, "%s%" PRId64 ";", data, minv); | 609 | xasprintf(&data, "%s%" PRId64 ";", data, minv); |
621 | else | 610 | } else { |
622 | xasprintf(&data, "%s;", data); | 611 | xasprintf(&data, "%s;", data); |
612 | } | ||
623 | 613 | ||
624 | if (maxp) | 614 | if (maxp) { |
625 | xasprintf(&data, "%s%" PRId64, data, maxv); | 615 | xasprintf(&data, "%s%" PRId64, data, maxv); |
616 | } | ||
626 | 617 | ||
627 | return data; | 618 | return data; |
628 | } | 619 | } |
629 | 620 | ||
630 | char *fperfdata(const char *label, double val, const char *uom, int warnp, double warn, int critp, double crit, int minp, double minv, | 621 | char *fperfdata(const char *label, double val, const char *uom, bool warnp, double warn, bool critp, double crit, bool minp, double minv, |
631 | int maxp, double maxv) { | 622 | bool maxp, double maxv) { |
632 | char *data = NULL; | 623 | char *data = NULL; |
633 | 624 | ||
634 | if (strpbrk(label, "'= ")) | 625 | if (strpbrk(label, "'= ")) { |
635 | xasprintf(&data, "'%s'=", label); | 626 | xasprintf(&data, "'%s'=", label); |
636 | else | 627 | } else { |
637 | xasprintf(&data, "%s=", label); | 628 | xasprintf(&data, "%s=", label); |
629 | } | ||
638 | 630 | ||
639 | xasprintf(&data, "%s%f", data, val); | 631 | xasprintf(&data, "%s%f", data, val); |
640 | xasprintf(&data, "%s%s;", data, uom); | 632 | xasprintf(&data, "%s%s;", data, uom); |
641 | 633 | ||
642 | if (warnp) | 634 | if (warnp) { |
643 | xasprintf(&data, "%s%f", data, warn); | 635 | xasprintf(&data, "%s%f", data, warn); |
636 | } | ||
644 | 637 | ||
645 | xasprintf(&data, "%s;", data); | 638 | xasprintf(&data, "%s;", data); |
646 | 639 | ||
647 | if (critp) | 640 | if (critp) { |
648 | xasprintf(&data, "%s%f", data, crit); | 641 | xasprintf(&data, "%s%f", data, crit); |
642 | } | ||
649 | 643 | ||
650 | xasprintf(&data, "%s;", data); | 644 | xasprintf(&data, "%s;", data); |
651 | 645 | ||
652 | if (minp) | 646 | if (minp) { |
653 | xasprintf(&data, "%s%f", data, minv); | 647 | xasprintf(&data, "%s%f", data, minv); |
648 | } | ||
654 | 649 | ||
655 | if (maxp) { | 650 | if (maxp) { |
656 | xasprintf(&data, "%s;", data); | 651 | xasprintf(&data, "%s;", data); |
@@ -660,28 +655,32 @@ char *fperfdata(const char *label, double val, const char *uom, int warnp, doubl | |||
660 | return data; | 655 | return data; |
661 | } | 656 | } |
662 | 657 | ||
663 | char *sperfdata(const char *label, double val, const char *uom, char *warn, char *crit, int minp, double minv, int maxp, double maxv) { | 658 | char *sperfdata(const char *label, double val, const char *uom, char *warn, char *crit, bool minp, double minv, bool maxp, double maxv) { |
664 | char *data = NULL; | 659 | char *data = NULL; |
665 | if (strpbrk(label, "'= ")) | 660 | if (strpbrk(label, "'= ")) { |
666 | xasprintf(&data, "'%s'=", label); | 661 | xasprintf(&data, "'%s'=", label); |
667 | else | 662 | } else { |
668 | xasprintf(&data, "%s=", label); | 663 | xasprintf(&data, "%s=", label); |
664 | } | ||
669 | 665 | ||
670 | xasprintf(&data, "%s%f", data, val); | 666 | xasprintf(&data, "%s%f", data, val); |
671 | xasprintf(&data, "%s%s;", data, uom); | 667 | xasprintf(&data, "%s%s;", data, uom); |
672 | 668 | ||
673 | if (warn != NULL) | 669 | if (warn != NULL) { |
674 | xasprintf(&data, "%s%s", data, warn); | 670 | xasprintf(&data, "%s%s", data, warn); |
671 | } | ||
675 | 672 | ||
676 | xasprintf(&data, "%s;", data); | 673 | xasprintf(&data, "%s;", data); |
677 | 674 | ||
678 | if (crit != NULL) | 675 | if (crit != NULL) { |
679 | xasprintf(&data, "%s%s", data, crit); | 676 | xasprintf(&data, "%s%s", data, crit); |
677 | } | ||
680 | 678 | ||
681 | xasprintf(&data, "%s;", data); | 679 | xasprintf(&data, "%s;", data); |
682 | 680 | ||
683 | if (minp) | 681 | if (minp) { |
684 | xasprintf(&data, "%s%f", data, minv); | 682 | xasprintf(&data, "%s%f", data, minv); |
683 | } | ||
685 | 684 | ||
686 | if (maxp) { | 685 | if (maxp) { |
687 | xasprintf(&data, "%s;", data); | 686 | xasprintf(&data, "%s;", data); |
@@ -691,28 +690,32 @@ char *sperfdata(const char *label, double val, const char *uom, char *warn, char | |||
691 | return data; | 690 | return data; |
692 | } | 691 | } |
693 | 692 | ||
694 | char *sperfdata_int(const char *label, int val, const char *uom, char *warn, char *crit, int minp, int minv, int maxp, int maxv) { | 693 | char *sperfdata_int(const char *label, int val, const char *uom, char *warn, char *crit, bool minp, int minv, bool maxp, int maxv) { |
695 | char *data = NULL; | 694 | char *data = NULL; |
696 | if (strpbrk(label, "'= ")) | 695 | if (strpbrk(label, "'= ")) { |
697 | xasprintf(&data, "'%s'=", label); | 696 | xasprintf(&data, "'%s'=", label); |
698 | else | 697 | } else { |
699 | xasprintf(&data, "%s=", label); | 698 | xasprintf(&data, "%s=", label); |
699 | } | ||
700 | 700 | ||
701 | xasprintf(&data, "%s%d", data, val); | 701 | xasprintf(&data, "%s%d", data, val); |
702 | xasprintf(&data, "%s%s;", data, uom); | 702 | xasprintf(&data, "%s%s;", data, uom); |
703 | 703 | ||
704 | if (warn != NULL) | 704 | if (warn != NULL) { |
705 | xasprintf(&data, "%s%s", data, warn); | 705 | xasprintf(&data, "%s%s", data, warn); |
706 | } | ||
706 | 707 | ||
707 | xasprintf(&data, "%s;", data); | 708 | xasprintf(&data, "%s;", data); |
708 | 709 | ||
709 | if (crit != NULL) | 710 | if (crit != NULL) { |
710 | xasprintf(&data, "%s%s", data, crit); | 711 | xasprintf(&data, "%s%s", data, crit); |
712 | } | ||
711 | 713 | ||
712 | xasprintf(&data, "%s;", data); | 714 | xasprintf(&data, "%s;", data); |
713 | 715 | ||
714 | if (minp) | 716 | if (minp) { |
715 | xasprintf(&data, "%s%d", data, minv); | 717 | xasprintf(&data, "%s%d", data, minv); |
718 | } | ||
716 | 719 | ||
717 | if (maxp) { | 720 | if (maxp) { |
718 | xasprintf(&data, "%s;", data); | 721 | xasprintf(&data, "%s;", data); |