diff options
Diffstat (limited to 'plugins/utils.c')
-rw-r--r-- | plugins/utils.c | 67 |
1 files changed, 47 insertions, 20 deletions
diff --git a/plugins/utils.c b/plugins/utils.c index 45373909..8827e31a 100644 --- a/plugins/utils.c +++ b/plugins/utils.c | |||
@@ -358,7 +358,7 @@ strscpy (char *dest, const char *src) | |||
358 | if (src == NULL) | 358 | if (src == NULL) |
359 | return NULL; | 359 | return NULL; |
360 | 360 | ||
361 | asprintf (&dest, "%s", src); | 361 | xasprintf (&dest, "%s", src); |
362 | 362 | ||
363 | return dest; | 363 | return dest; |
364 | } | 364 | } |
@@ -513,6 +513,33 @@ strpcat (char *dest, const char *src, const char *str) | |||
513 | return dest; | 513 | return dest; |
514 | } | 514 | } |
515 | 515 | ||
516 | |||
517 | /****************************************************************************** | ||
518 | * | ||
519 | * asprintf, but die on failure | ||
520 | * | ||
521 | ******************************************************************************/ | ||
522 | |||
523 | int | ||
524 | xvasprintf (char **strp, const char *fmt, va_list ap) | ||
525 | { | ||
526 | int result = vasprintf (strp, fmt, ap); | ||
527 | if (result == -1 || *strp == NULL) | ||
528 | die (STATE_UNKNOWN, _("failed malloc in xvasprintf\n")); | ||
529 | return result; | ||
530 | } | ||
531 | |||
532 | int | ||
533 | xasprintf (char **strp, const char *fmt, ...) | ||
534 | { | ||
535 | va_list ap; | ||
536 | int result; | ||
537 | va_start (ap, fmt); | ||
538 | result = xvasprintf (strp, fmt, ap); | ||
539 | va_end (ap); | ||
540 | return result; | ||
541 | } | ||
542 | |||
516 | /****************************************************************************** | 543 | /****************************************************************************** |
517 | * | 544 | * |
518 | * Print perfdata in a standard format | 545 | * Print perfdata in a standard format |
@@ -534,25 +561,25 @@ char *perfdata (const char *label, | |||
534 | char *data = NULL; | 561 | char *data = NULL; |
535 | 562 | ||
536 | if (strpbrk (label, "'= ")) | 563 | if (strpbrk (label, "'= ")) |
537 | asprintf (&data, "'%s'=%ld%s;", label, val, uom); | 564 | xasprintf (&data, "'%s'=%ld%s;", label, val, uom); |
538 | else | 565 | else |
539 | asprintf (&data, "%s=%ld%s;", label, val, uom); | 566 | xasprintf (&data, "%s=%ld%s;", label, val, uom); |
540 | 567 | ||
541 | if (warnp) | 568 | if (warnp) |
542 | asprintf (&data, "%s%ld;", data, warn); | 569 | xasprintf (&data, "%s%ld;", data, warn); |
543 | else | 570 | else |
544 | asprintf (&data, "%s;", data); | 571 | xasprintf (&data, "%s;", data); |
545 | 572 | ||
546 | if (critp) | 573 | if (critp) |
547 | asprintf (&data, "%s%ld;", data, crit); | 574 | xasprintf (&data, "%s%ld;", data, crit); |
548 | else | 575 | else |
549 | asprintf (&data, "%s;", data); | 576 | xasprintf (&data, "%s;", data); |
550 | 577 | ||
551 | if (minp) | 578 | if (minp) |
552 | asprintf (&data, "%s%ld", data, minv); | 579 | xasprintf (&data, "%s%ld", data, minv); |
553 | 580 | ||
554 | if (maxp) | 581 | if (maxp) |
555 | asprintf (&data, "%s;%ld", data, maxv); | 582 | xasprintf (&data, "%s;%ld", data, maxv); |
556 | 583 | ||
557 | return data; | 584 | return data; |
558 | } | 585 | } |
@@ -573,29 +600,29 @@ char *fperfdata (const char *label, | |||
573 | char *data = NULL; | 600 | char *data = NULL; |
574 | 601 | ||
575 | if (strpbrk (label, "'= ")) | 602 | if (strpbrk (label, "'= ")) |
576 | asprintf (&data, "'%s'=", label); | 603 | xasprintf (&data, "'%s'=", label); |
577 | else | 604 | else |
578 | asprintf (&data, "%s=", label); | 605 | xasprintf (&data, "%s=", label); |
579 | 606 | ||
580 | asprintf (&data, "%s%f", data, val); | 607 | xasprintf (&data, "%s%f", data, val); |
581 | asprintf (&data, "%s%s;", data, uom); | 608 | xasprintf (&data, "%s%s;", data, uom); |
582 | 609 | ||
583 | if (warnp) | 610 | if (warnp) |
584 | asprintf (&data, "%s%f", data, warn); | 611 | xasprintf (&data, "%s%f", data, warn); |
585 | 612 | ||
586 | asprintf (&data, "%s;", data); | 613 | xasprintf (&data, "%s;", data); |
587 | 614 | ||
588 | if (critp) | 615 | if (critp) |
589 | asprintf (&data, "%s%f", data, crit); | 616 | xasprintf (&data, "%s%f", data, crit); |
590 | 617 | ||
591 | asprintf (&data, "%s;", data); | 618 | xasprintf (&data, "%s;", data); |
592 | 619 | ||
593 | if (minp) | 620 | if (minp) |
594 | asprintf (&data, "%s%f", data, minv); | 621 | xasprintf (&data, "%s%f", data, minv); |
595 | 622 | ||
596 | if (maxp) { | 623 | if (maxp) { |
597 | asprintf (&data, "%s;", data); | 624 | xasprintf (&data, "%s;", data); |
598 | asprintf (&data, "%s%f", data, maxv); | 625 | xasprintf (&data, "%s%f", data, maxv); |
599 | } | 626 | } |
600 | 627 | ||
601 | return data; | 628 | return data; |