cli: print_fields(): don't segfault when a value is not set

This commit is contained in:
Jiří Klimeš
2010-03-24 12:47:53 +01:00
parent 21638ff470
commit 8846bd83ad

View File

@@ -124,6 +124,7 @@ print_fields (const NmcPrintFields fields, const NmcOutputField field_values[])
char *line = NULL; char *line = NULL;
char *indent_str; char *indent_str;
const char *value; const char *value;
const char *not_set_str = _("not set");
int i, idx; int i, idx;
gboolean multiline = fields.flags & NMC_PF_FLAG_MULTILINE; gboolean multiline = fields.flags & NMC_PF_FLAG_MULTILINE;
gboolean terse = fields.flags & NMC_PF_FLAG_TERSE; gboolean terse = fields.flags & NMC_PF_FLAG_TERSE;
@@ -161,7 +162,7 @@ print_fields (const NmcPrintFields fields, const NmcOutputField field_values[])
char *tmp; char *tmp;
idx = g_array_index (fields.indices, int, i); idx = g_array_index (fields.indices, int, i);
tmp = g_strdup_printf ("%s:", _(field_values[idx].name_l10n)); tmp = g_strdup_printf ("%s:", _(field_values[idx].name_l10n));
printf ("%-*s%s\n", terse ? 0 : 20, tmp, field_values[idx].value); printf ("%-*s%s\n", terse ? 0 : 20, tmp, field_values[idx].value ? field_values[idx].value : not_set_str);
g_free (tmp); g_free (tmp);
} }
if (pretty) { if (pretty) {
@@ -181,7 +182,7 @@ print_fields (const NmcPrintFields fields, const NmcOutputField field_values[])
if (field_names) if (field_names)
value = _(field_values[idx].name_l10n); value = _(field_values[idx].name_l10n);
else else
value = field_values[idx].value; value = field_values[idx].value ? field_values[idx].value : not_set_str;
if (terse) { if (terse) {
if (escape) { if (escape) {
const char *p = value; const char *p = value;