int main (int argc, char **argv) { ipmi_oem_prog_data_t prog_data; struct ipmi_oem_arguments cmd_args; int hosts_count; int rv; ipmi_disable_coredump (); memset (&prog_data, '\0', sizeof (ipmi_oem_prog_data_t)); prog_data.progname = argv[0]; ipmi_oem_argp_parse (argc, argv, &cmd_args); prog_data.args = &cmd_args; /* Special case, just output list, don't do anything else */ /* offer "help" as well as list, for those used to ipmitool */ if (!cmd_args.oem_id || !strcasecmp (cmd_args.oem_id, "list") || !strcasecmp (cmd_args.oem_id, "help") || cmd_args.list) { if (_list () < 0) return (EXIT_FAILURE); return (EXIT_SUCCESS); } if ((hosts_count = pstdout_setup (&(prog_data.args->common_args.hostname), &(prog_data.args->common_args))) < 0) return (EXIT_FAILURE); if (!hosts_count) return (EXIT_SUCCESS); /* We don't want caching info to output when are doing ranged output */ if (hosts_count > 1) prog_data.args->common_args.quiet_cache = 1; if ((rv = pstdout_launch (prog_data.args->common_args.hostname, _ipmi_oem, &prog_data)) < 0) { fprintf (stderr, "pstdout_launch: %s\n", pstdout_strerror (pstdout_errnum)); return (EXIT_FAILURE); } return (rv); }
int main (int argc, char **argv) { ipmi_sensors_config_prog_data_t prog_data; struct ipmi_sensors_config_arguments cmd_args; int hosts_count; int rv; ipmi_disable_coredump (); memset (&prog_data, '\0', sizeof (ipmi_sensors_config_prog_data_t)); prog_data.progname = argv[0]; ipmi_sensors_config_argp_parse (argc, argv, &cmd_args); prog_data.args = &cmd_args; if ((hosts_count = pstdout_setup (&(prog_data.args->config_args.common_args.hostname), &(prog_data.args->config_args.common_args))) < 0) return (EXIT_FAILURE); if (!hosts_count) return (EXIT_SUCCESS); /* We don't want caching info to output when are doing ranged output */ if (hosts_count > 1) prog_data.args->config_args.common_args.quiet_cache = 1; prog_data.hosts_count = hosts_count; if ((rv = pstdout_launch (prog_data.args->config_args.common_args.hostname, _ipmi_sensors_config, &prog_data)) < 0) { fprintf (stderr, "pstdout_launch: %s\n", pstdout_strerror (pstdout_errnum)); return (EXIT_FAILURE); } return (rv); }
int pstdout_setup (char **hosts, struct common_cmd_args *common_args) { unsigned int output_flags = 0; int hosts_count = 0; assert (hosts); assert (common_args); if (pstdout_init () < 0) { fprintf (stderr, "pstdout_init: %s\n", pstdout_strerror (pstdout_errnum)); goto cleanup; } if (*hosts) { if ((hosts_count = pstdout_hostnames_count (*hosts)) < 0) { fprintf (stderr, "pstdout_hostnames_count: %s\n", pstdout_strerror (pstdout_errnum)); goto cleanup; } if (!hosts_count) { fprintf (stderr, "invalid number of hosts specified\n"); goto cleanup; } } else /* inband communication, hosts_count = 1 */ { hosts_count = 1; /* if always prefix - turn hostname into "localhost" for prefixing */ if (common_args->always_prefix) { if (!(*hosts = strdup ("localhost"))) { fprintf (stderr, "strdup: %s\n", strerror (errno)); goto cleanup; } } } /* if hosts_count > 1 it is always prefixed, so ignore always_prefixed flag */ if (hosts_count > 1) { if (common_args->buffer_output) output_flags = PSTDOUT_OUTPUT_STDOUT_DEFAULT | PSTDOUT_OUTPUT_BUFFER_STDOUT | PSTDOUT_OUTPUT_STDERR_PREPEND_HOSTNAME; else if (common_args->consolidate_output) output_flags = PSTDOUT_OUTPUT_STDOUT_DEFAULT | PSTDOUT_OUTPUT_STDOUT_CONSOLIDATE | PSTDOUT_OUTPUT_STDERR_PREPEND_HOSTNAME; else output_flags = PSTDOUT_OUTPUT_STDOUT_PREPEND_HOSTNAME | PSTDOUT_OUTPUT_STDERR_PREPEND_HOSTNAME; if (common_args->fanout) { if (pstdout_set_fanout (common_args->fanout) < 0) { fprintf (stderr, "pstdout_set_fanout: %s\n", pstdout_strerror (pstdout_errnum)); goto cleanup; } } } else if (hosts_count == 1 && common_args->always_prefix) output_flags = PSTDOUT_OUTPUT_STDOUT_PREPEND_HOSTNAME | PSTDOUT_OUTPUT_STDERR_PREPEND_HOSTNAME; if (output_flags) { if (pstdout_set_output_flags (output_flags) < 0) { fprintf (stderr, "pstdout_set_output_flags: %s\n", pstdout_strerror (pstdout_errnum)); goto cleanup; } } if (*hosts && common_args->eliminate) { int hosts_count_new; if ((hosts_count_new = eliminate_nodes (hosts)) < 0) goto cleanup; hosts_count = hosts_count_new; } return (hosts_count); cleanup: return (-1); }