tree-wide: print error if table_print() fails
We generally want to print an error message if table_print() fails. Add a helper function for this and use it consistently. This does one of the three things depending on the call site: - a no-change reformatting of the code - change from a custom message to the generic one - addition of the error message where previously none was printed In the third case, the actual use impact is very small, since the table formatting is very unlikely to fail. But if it did, we would often return an error without any message whatsoever, which we never want to do.
This commit is contained in:
@@ -37,7 +37,9 @@ static int help(void) {
|
||||
program_invocation_short_name,
|
||||
ansi_highlight(),
|
||||
ansi_normal());
|
||||
table_print(options);
|
||||
r = table_print_or_warn(options);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
printf("\nSee the %s for details.\n", link);
|
||||
return 0;
|
||||
|
||||
@@ -119,7 +119,7 @@ static int test_calendar_one(usec_t n, const char *p) {
|
||||
n = next;
|
||||
}
|
||||
|
||||
return table_print(table);
|
||||
return table_print_or_warn(table);
|
||||
}
|
||||
|
||||
int verb_calendar(int argc, char *argv[], uintptr_t _data, void *userdata) {
|
||||
|
||||
@@ -157,7 +157,7 @@ int verb_image_policy(int argc, char *argv[], uintptr_t _data, void *userdata) {
|
||||
|
||||
putc('\n', stdout);
|
||||
|
||||
r = table_print(table);
|
||||
r = table_print_or_warn(table);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
@@ -118,9 +118,9 @@ static int analyze_elf(char **filenames, sd_json_format_flags_t json_flags) {
|
||||
if (sd_json_format_enabled(json_flags))
|
||||
sd_json_variant_dump(package_metadata, json_flags, stdout, NULL);
|
||||
else {
|
||||
r = table_print(t);
|
||||
r = table_print_or_warn(t);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ int verb_timespan(int argc, char *argv[], uintptr_t _data, void *userdata) {
|
||||
if (r < 0)
|
||||
return table_log_add_error(r);
|
||||
|
||||
r = table_print(table);
|
||||
r = table_print_or_warn(table);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ static int test_timestamp_one(const char *p) {
|
||||
if (r < 0)
|
||||
return table_log_add_error(r);
|
||||
|
||||
return table_print(table);
|
||||
return table_print_or_warn(table);
|
||||
}
|
||||
|
||||
int verb_timestamp(int argc, char *argv[], uintptr_t _data, void *userdata) {
|
||||
|
||||
@@ -57,7 +57,9 @@ static int help(void) {
|
||||
program_invocation_short_name,
|
||||
ansi_highlight(),
|
||||
ansi_normal());
|
||||
table_print(options);
|
||||
r = table_print_or_warn(options);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
printf("\nSee the %s for details.\n", link);
|
||||
return 0;
|
||||
|
||||
+3
-1
@@ -126,7 +126,9 @@ static int help(void) {
|
||||
program_invocation_short_name,
|
||||
ansi_highlight(),
|
||||
ansi_normal());
|
||||
table_print(options);
|
||||
r = table_print_or_warn(options);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
printf("\nSee the %s for details.\n", link);
|
||||
return 0;
|
||||
|
||||
@@ -58,10 +58,14 @@ static int help(void) {
|
||||
program_invocation_short_name,
|
||||
ansi_highlight(),
|
||||
ansi_normal());
|
||||
table_print(verbs);
|
||||
r = table_print_or_warn(verbs);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
printf("\nOptions:\n");
|
||||
table_print(options);
|
||||
r = table_print_or_warn(options);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
printf("\nSee the %s for details.\n", link);
|
||||
return 0;
|
||||
|
||||
@@ -125,9 +125,5 @@ int list_enrolled(struct crypt_device *cd) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
r = table_print(t);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to show slot table: %m");
|
||||
|
||||
return 0;
|
||||
return table_print_or_warn(t);
|
||||
}
|
||||
|
||||
@@ -41,7 +41,9 @@ static int help(void) {
|
||||
program_invocation_short_name,
|
||||
ansi_highlight(),
|
||||
ansi_normal());
|
||||
table_print(options);
|
||||
r = table_print_or_warn(options);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
printf("\nSee the %s for details.\n", link);
|
||||
return 0;
|
||||
|
||||
@@ -165,11 +165,15 @@ static int help(void) {
|
||||
ansi_underline(),
|
||||
ansi_normal());
|
||||
|
||||
table_print(options);
|
||||
r = table_print_or_warn(options);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
printf("\n%sCommands:%s\n", ansi_underline(), ansi_normal());
|
||||
|
||||
table_print(commands);
|
||||
r = table_print_or_warn(commands);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
printf("\nSee the %s for details.\n", link);
|
||||
return 0;
|
||||
@@ -1082,9 +1086,9 @@ static int action_dissect(
|
||||
if (!sd_json_format_enabled(arg_json_format_flags)) {
|
||||
table_set_header(t, arg_legend);
|
||||
|
||||
r = table_print(t);
|
||||
r = table_print_or_warn(t);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
return r;
|
||||
} else {
|
||||
_cleanup_(sd_json_variant_unrefp) sd_json_variant *jt = NULL;
|
||||
|
||||
|
||||
@@ -51,10 +51,14 @@ static int help(void) {
|
||||
program_invocation_short_name,
|
||||
ansi_highlight(),
|
||||
ansi_normal());
|
||||
table_print(verbs);
|
||||
r = table_print_or_warn(verbs);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
printf("\nOptions:\n");
|
||||
table_print(options);
|
||||
r = table_print_or_warn(options);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
printf("\nSee the %s for details.\n", link);
|
||||
return 0;
|
||||
|
||||
@@ -375,11 +375,7 @@ static int print_status_info(StatusInfo *i) {
|
||||
}
|
||||
}
|
||||
|
||||
r = table_print(table);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
|
||||
return 0;
|
||||
return table_print_or_warn(table);
|
||||
}
|
||||
|
||||
static int get_one_name(sd_bus *bus, const char* attr, char **ret) {
|
||||
@@ -748,10 +744,14 @@ static int help(void) {
|
||||
program_invocation_short_name,
|
||||
ansi_highlight(),
|
||||
ansi_normal());
|
||||
table_print(verbs);
|
||||
r = table_print_or_warn(verbs);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
printf("\nOptions:\n");
|
||||
table_print(options);
|
||||
r = table_print_or_warn(options);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
printf("\nSee the %s for details.\n", link);
|
||||
return 0;
|
||||
|
||||
+6
-2
@@ -216,10 +216,14 @@ static int help(void) {
|
||||
program_invocation_short_name,
|
||||
ansi_highlight(),
|
||||
ansi_normal());
|
||||
table_print(verbs);
|
||||
r = table_print_or_warn(verbs);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
printf("\nOptions:\n");
|
||||
table_print(options);
|
||||
r = table_print_or_warn(options);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
printf("\nSee the %s for details.\n", link);
|
||||
return 0;
|
||||
|
||||
@@ -381,14 +381,10 @@ static int action_summary(sd_varlink *link) {
|
||||
if (table_isempty(table))
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP), "No well-known IMDS data available.");
|
||||
|
||||
r = table_print(table);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
|
||||
return 0;
|
||||
return table_print_or_warn(table);
|
||||
}
|
||||
|
||||
static const char *detect_json_object(const char *text) {
|
||||
static const char* detect_json_object(const char *text) {
|
||||
assert(text);
|
||||
|
||||
/* Checks if the provided text looks like a JSON object. It checks if the first non-whitespace
|
||||
|
||||
@@ -144,11 +144,7 @@ static int print_status_info(StatusInfo *i) {
|
||||
return table_log_add_error(r);
|
||||
}
|
||||
|
||||
r = table_print(table);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
|
||||
return 0;
|
||||
return table_print_or_warn(table);
|
||||
}
|
||||
|
||||
static int verb_show_status(int argc, char *argv[], uintptr_t _data, void *userdata) {
|
||||
|
||||
@@ -716,9 +716,9 @@ static int print_session_status_info(sd_bus *bus, const char *path) {
|
||||
/* We don't use the table to show the header, in order to make the width of the column stable. */
|
||||
printf("%s%s - %s (" UID_FMT ")%s\n", ansi_highlight(), i.id, i.name, i.uid, ansi_normal());
|
||||
|
||||
r = table_print(table);
|
||||
r = table_print_or_warn(table);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
return r;
|
||||
|
||||
if (i.scope) {
|
||||
show_unit_cgroup(bus, i.scope, i.leader, /* prefix= */ strrepa(" ", STRLEN("Display: ")));
|
||||
@@ -821,9 +821,9 @@ static int print_user_status_info(sd_bus *bus, const char *path) {
|
||||
|
||||
printf("%s%s (" UID_FMT ")%s\n", ansi_highlight(), i.name, i.uid, ansi_normal());
|
||||
|
||||
r = table_print(table);
|
||||
r = table_print_or_warn(table);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
return r;
|
||||
|
||||
if (i.slice) {
|
||||
show_unit_cgroup(bus, i.slice, /* leader= */ 0, /* prefix= */ strrepa(" ", STRLEN("Sessions: ")));
|
||||
@@ -896,9 +896,9 @@ static int print_seat_status_info(sd_bus *bus, const char *path) {
|
||||
|
||||
printf("%s%s%s\n", ansi_highlight(), i.id, ansi_normal());
|
||||
|
||||
r = table_print(table);
|
||||
r = table_print_or_warn(table);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
return r;
|
||||
|
||||
if (arg_transport == BUS_TRANSPORT_LOCAL) {
|
||||
unsigned c = MAX(LESS_BY(columns(), 21U), 10U);
|
||||
|
||||
@@ -82,11 +82,7 @@ static int dump_address_labels(sd_netlink *rtnl) {
|
||||
return table_log_add_error(r);
|
||||
}
|
||||
|
||||
r = table_print(table);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
|
||||
return 0;
|
||||
return table_print_or_warn(table);
|
||||
}
|
||||
|
||||
int verb_list_address_labels(int argc, char *argv[], uintptr_t _data, void *userdata) {
|
||||
|
||||
@@ -79,9 +79,9 @@ int verb_list_links(int argc, char *argv[], uintptr_t _data, void *userdata) {
|
||||
return table_log_add_error(r);
|
||||
}
|
||||
|
||||
r = table_print(table);
|
||||
r = table_print_or_warn(table);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
return r;
|
||||
|
||||
if (arg_legend)
|
||||
printf("\n%i links listed.\n", c);
|
||||
|
||||
@@ -303,9 +303,9 @@ int verb_link_lldp_status(int argc, char *argv[], uintptr_t _data, void *userdat
|
||||
}
|
||||
}
|
||||
|
||||
r = table_print(table);
|
||||
r = table_print_or_warn(table);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
return r;
|
||||
|
||||
if (arg_legend) {
|
||||
lldp_capabilities_legend(all);
|
||||
|
||||
@@ -900,9 +900,9 @@ static int link_status_one(
|
||||
on_color_operational, glyph(GLYPH_BLACK_CIRCLE), off_color_operational,
|
||||
info->ifindex, info->name);
|
||||
|
||||
r = table_print(table);
|
||||
r = table_print_or_warn(table);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
return r;
|
||||
|
||||
return show_logs(info->ifindex, info->name);
|
||||
}
|
||||
|
||||
@@ -126,9 +126,9 @@ int system_status(sd_netlink *rtnl, sd_hwdb *hwdb) {
|
||||
on_color_operational, glyph(GLYPH_BLACK_CIRCLE), off_color_operational,
|
||||
strna(netifs_joined));
|
||||
|
||||
r = table_print(table);
|
||||
r = table_print_or_warn(table);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
return r;
|
||||
|
||||
return show_logs(0, NULL);
|
||||
}
|
||||
|
||||
+3
-1
@@ -77,7 +77,9 @@ static int help(void) {
|
||||
ansi_highlight(),
|
||||
ansi_normal());
|
||||
|
||||
table_print(options);
|
||||
r = table_print_or_warn(options);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
printf("\nSee the %s for details.\n", link);
|
||||
return 0;
|
||||
|
||||
@@ -1075,9 +1075,9 @@ static int verb_list_images(int argc, char *argv[], uintptr_t _data, void *userd
|
||||
|
||||
table_set_header(table, arg_legend);
|
||||
|
||||
r = table_print(table);
|
||||
r = table_print_or_warn(table);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
return r;
|
||||
}
|
||||
|
||||
if (arg_legend) {
|
||||
|
||||
@@ -47,9 +47,8 @@ static int help(void) {
|
||||
ansi_normal(),
|
||||
ansi_underline(),
|
||||
ansi_normal());
|
||||
table_print(options);
|
||||
|
||||
return 0;
|
||||
return table_print_or_warn(options);
|
||||
}
|
||||
|
||||
static int parse_argv(int argc, char *argv[]) {
|
||||
|
||||
@@ -1321,11 +1321,7 @@ static int verb_show_statistics(int argc, char *argv[], uintptr_t _data, void *u
|
||||
if (r < 0)
|
||||
return table_log_add_error(r);
|
||||
|
||||
r = table_print(table);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
|
||||
return 0;
|
||||
return table_print_or_warn(table);
|
||||
}
|
||||
|
||||
static int verb_reset_statistics(int argc, char *argv[], uintptr_t _data, void *userdata) {
|
||||
@@ -1890,9 +1886,9 @@ static int print_configuration(DNSConfiguration *configuration, StatusMode mode,
|
||||
return table_log_add_error(r);
|
||||
}
|
||||
|
||||
r = table_print(table);
|
||||
r = table_print_or_warn(table);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
return r;
|
||||
|
||||
if (empty_line)
|
||||
*empty_line = true;
|
||||
@@ -3097,11 +3093,7 @@ static int dump_server_state(sd_json_variant *server) {
|
||||
if (r < 0)
|
||||
return table_log_add_error(r);
|
||||
|
||||
r = table_print(table);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
|
||||
return 0;
|
||||
return table_print_or_warn(table);
|
||||
}
|
||||
|
||||
static int verb_show_server_state(int argc, char *argv[], uintptr_t _data, void *userdata) {
|
||||
|
||||
@@ -2643,6 +2643,15 @@ int table_print_full(Table *t, FILE *f, bool flush) {
|
||||
return fflush_and_check(f);
|
||||
}
|
||||
|
||||
int table_print_or_warn(Table *t) {
|
||||
int r;
|
||||
|
||||
r = table_print(t);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int table_format(Table *t, char **ret) {
|
||||
_cleanup_(memstream_done) MemStream m = {};
|
||||
FILE *f;
|
||||
|
||||
@@ -151,6 +151,7 @@ int table_print_full(Table *t, FILE *f, bool flush);
|
||||
static inline int table_print(Table *t) {
|
||||
return table_print_full(t, /* f= */ NULL, /* flush= */ false);
|
||||
}
|
||||
int table_print_or_warn(Table *t);
|
||||
|
||||
int table_format(Table *t, char **ret);
|
||||
|
||||
|
||||
@@ -1241,11 +1241,9 @@ int fido2_list_devices(void) {
|
||||
}
|
||||
}
|
||||
|
||||
r = table_print(t);
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "Failed to show device table: %m");
|
||||
r = table_print_or_warn(t);
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
}
|
||||
|
||||
if (!table_isempty(t))
|
||||
printf("\n"
|
||||
|
||||
@@ -128,11 +128,7 @@ int parse_signal_argument(const char *s, int *ret) {
|
||||
return table_log_add_error(r);
|
||||
}
|
||||
|
||||
r = table_print(table);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
|
||||
return 0;
|
||||
return table_print_or_warn(table);
|
||||
}
|
||||
|
||||
r = signal_from_string(s);
|
||||
|
||||
@@ -1816,11 +1816,7 @@ int pkcs11_list_tokens(void) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
r = table_print(t);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to show device table: %m");
|
||||
|
||||
return 0;
|
||||
return table_print_or_warn(t);
|
||||
#else
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP),
|
||||
"PKCS#11 tokens not supported on this build.");
|
||||
|
||||
@@ -6584,11 +6584,7 @@ int tpm2_list_devices(bool legend, bool quiet) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
r = table_print(t);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to show device table: %m");
|
||||
|
||||
return 0;
|
||||
return table_print_or_warn(t);
|
||||
#else
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP),
|
||||
"TPM2 not supported on this build.");
|
||||
|
||||
@@ -115,9 +115,9 @@ static int output_jobs_list(sd_bus *bus, const struct job_info* jobs, unsigned n
|
||||
output_waiting_jobs(bus, table, j->id, "GetJobBefore", "\twaiting for job");
|
||||
}
|
||||
|
||||
r = table_print(table);
|
||||
r = table_print_or_warn(table);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to print the table: %m");
|
||||
return r;
|
||||
|
||||
if (arg_legend != 0) {
|
||||
on = ansi_highlight();
|
||||
|
||||
@@ -163,9 +163,9 @@ static int print_status_info(const StatusInfo *i) {
|
||||
if (r < 0)
|
||||
return table_log_add_error(r);
|
||||
|
||||
r = table_print(table);
|
||||
r = table_print_or_warn(table);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
return r;
|
||||
|
||||
if (i->rtc_local) {
|
||||
fflush(stdout);
|
||||
@@ -443,20 +443,12 @@ static int print_ntp_status_info(NTPStatusInfo *i) {
|
||||
if (r < 0)
|
||||
return table_log_add_error(r);
|
||||
|
||||
r = table_print(table);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
|
||||
return 0;
|
||||
return table_print_or_warn(table);
|
||||
}
|
||||
|
||||
if (i->dest < i->origin || i->trans < i->recv || i->dest - i->origin < i->trans - i->recv) {
|
||||
log_error("Invalid NTP response");
|
||||
r = table_print(table);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
|
||||
return 0;
|
||||
return table_print_or_warn(table);
|
||||
}
|
||||
|
||||
delay = (i->dest - i->origin) - (i->trans - i->recv);
|
||||
@@ -536,11 +528,7 @@ static int print_ntp_status_info(NTPStatusInfo *i) {
|
||||
return table_log_add_error(r);
|
||||
}
|
||||
|
||||
r = table_print(table);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
|
||||
return 0;
|
||||
return table_print_or_warn(table);
|
||||
}
|
||||
|
||||
static int map_server_address(sd_bus *bus, const char *member, sd_bus_message *m, sd_bus_error *error, void *userdata) {
|
||||
|
||||
@@ -82,7 +82,9 @@ static int help(void) {
|
||||
ansi_normal(),
|
||||
ansi_underline(),
|
||||
ansi_normal());
|
||||
table_print(options);
|
||||
r = table_print_or_warn(options);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
printf("\nSee the %s for details.\n", link);
|
||||
return 0;
|
||||
|
||||
@@ -50,7 +50,9 @@ static int help(void) {
|
||||
program_invocation_short_name,
|
||||
ansi_highlight(),
|
||||
ansi_normal());
|
||||
table_print(options);
|
||||
r = table_print_or_warn(options);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
printf("\nSee the %s for details.\n", link);
|
||||
return 0;
|
||||
|
||||
@@ -416,6 +416,8 @@ static int verb_info(int argc, char *argv[], uintptr_t _data, void *userdata) {
|
||||
if (streq_ptr(argv[0], "list-interfaces")) {
|
||||
STRV_FOREACH(i, data.interfaces)
|
||||
puts(*i);
|
||||
|
||||
return 0;
|
||||
} else {
|
||||
_cleanup_(table_unrefp) Table *t = NULL;
|
||||
|
||||
@@ -439,20 +441,14 @@ static int verb_info(int argc, char *argv[], uintptr_t _data, void *userdata) {
|
||||
if (r < 0)
|
||||
return table_log_add_error(r);
|
||||
|
||||
r = table_print(t);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
return table_print_or_warn(t);
|
||||
}
|
||||
} else {
|
||||
sd_json_variant *v;
|
||||
|
||||
v = streq_ptr(argv[0], "list-interfaces") ?
|
||||
sd_json_variant *v = streq_ptr(argv[0], "list-interfaces") ?
|
||||
sd_json_variant_by_key(reply, "interfaces") : reply;
|
||||
|
||||
sd_json_variant_dump(v, arg_json_format_flags, stdout, NULL);
|
||||
return sd_json_variant_dump(v, arg_json_format_flags, stdout, NULL);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static size_t break_columns(void) {
|
||||
|
||||
@@ -337,9 +337,9 @@ static int run(int argc, char *argv[]) {
|
||||
return table_log_add_error(r);
|
||||
}
|
||||
|
||||
r = table_print(t);
|
||||
r = table_print_or_warn(t);
|
||||
if (r < 0)
|
||||
return table_log_print_error(r);
|
||||
return r;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user