static int do_check (lcc_connection_t *connection) { gauge_t *values; char **values_names; size_t values_num; char ident_str[1024]; lcc_identifier_t ident; size_t i; int status; snprintf (ident_str, sizeof (ident_str), "%s/%s", hostname_g, value_string_g); ident_str[sizeof (ident_str) - 1] = 0; memset (&ident, 0, sizeof (ident)); status = lcc_string_to_identifier (connection, &ident, ident_str); if (status != 0) { printf ("ERROR: Creating an identifier failed: %s.\n", lcc_strerror (connection)); LCC_DESTROY (connection); return (RET_CRITICAL); } status = lcc_getval (connection, &ident, &values_num, &values, &values_names); if (status != 0) { printf ("ERROR: Retrieving values from the daemon failed: %s.\n", lcc_strerror (connection)); LCC_DESTROY (connection); return (RET_CRITICAL); } LCC_DESTROY (connection); status = filter_ds (&values_num, &values, &values_names); if (status != RET_OKAY) return (status); status = RET_UNKNOWN; if (consolitation_g == CON_NONE) status = do_check_con_none (values_num, values, values_names); else if (consolitation_g == CON_AVERAGE) status = do_check_con_average (values_num, values, values_names); else if (consolitation_g == CON_SUM) status = do_check_con_sum (values_num, values, values_names); else if (consolitation_g == CON_PERCENTAGE) status = do_check_con_percentage (values_num, values, values_names); free (values); if (values_names != NULL) for (i = 0; i < values_num; i++) free (values_names[i]); free (values_names); return (status); } /* int do_check */
static int getval (lcc_connection_t *c, int argc, char **argv) { lcc_identifier_t ident; size_t ret_values_num = 0; gauge_t *ret_values = NULL; char **ret_values_names = NULL; int status; size_t i; assert (strcasecmp (argv[0], "getval") == 0); if (argc != 2) { fprintf (stderr, "ERROR: getval: Missing identifier.\n"); return (-1); } memset (&ident, 0, sizeof (ident)); status = parse_identifier (c, argv[1], &ident); if (status != 0) return (status); #define BAIL_OUT(s) \ do { \ if (ret_values != NULL) \ free (ret_values); \ if (ret_values_names != NULL) { \ for (i = 0; i < ret_values_num; ++i) \ free (ret_values_names[i]); \ free (ret_values_names); \ } \ ret_values_num = 0; \ return (s); \ } while (0) status = lcc_getval (c, &ident, &ret_values_num, &ret_values, &ret_values_names); if (status != 0) { fprintf (stderr, "ERROR: %s\n", lcc_strerror (c)); BAIL_OUT (-1); } for (i = 0; i < ret_values_num; ++i) printf ("%s=%e\n", ret_values_names[i], ret_values[i]); BAIL_OUT (0); #undef BAIL_OUT } /* getval */