2011-11-21 Kwok Cheung Yeung <kcy@codesourcery.com>

* osdata.c (info_osdata_command): Rename nprocs to nrows.  Handle
        the case where osdata->items is empty.  Rename column names to a
        canonical form to avoid problems with unusual column names.
This commit is contained in:
Kwok Yeung
2011-11-21 16:54:28 +00:00
parent bd59d91639
commit 8443c2073b
2 changed files with 42 additions and 17 deletions

View File

@ -1,3 +1,9 @@
2011-11-21 Kwok Cheung Yeung <kcy@codesourcery.com>
* osdata.c (info_osdata_command): Rename nprocs to nrows. Handle
the case where osdata->items is empty. Rename column names to a
canonical form to avoid problems with unusual column names.
2011-11-21 Yao Qi <yao@codesourcery.com> 2011-11-21 Yao Qi <yao@codesourcery.com>
* MAINTAINERS (Write After Approval): Keep list in alphabetical order. * MAINTAINERS (Write After Approval): Keep list in alphabetical order.

View File

@ -293,28 +293,37 @@ info_osdata_command (char *type, int from_tty)
{ {
struct ui_out *uiout = current_uiout; struct ui_out *uiout = current_uiout;
struct osdata *osdata = NULL; struct osdata *osdata = NULL;
struct osdata_item *last; struct osdata_item *last = NULL;
struct cleanup *old_chain; struct cleanup *old_chain;
int ncols; int ncols = 0;
int nprocs; int nrows;
osdata = get_osdata (type); osdata = get_osdata (type);
old_chain = make_cleanup_osdata_free (osdata); old_chain = make_cleanup_osdata_free (osdata);
nprocs = VEC_length (osdata_item_s, osdata->items); nrows = VEC_length (osdata_item_s, osdata->items);
if (!type && nprocs == 0) if (!type && nrows == 0)
error (_("Available types of OS data not reported.")); error (_("Available types of OS data not reported."));
if (!VEC_empty (osdata_item_s, osdata->items))
{
last = VEC_last (osdata_item_s, osdata->items);
if (last->columns)
ncols = VEC_length (osdata_column_s, last->columns);
}
last = VEC_last (osdata_item_s, osdata->items); make_cleanup_ui_out_table_begin_end (uiout, ncols, nrows,
if (last && last->columns)
ncols = VEC_length (osdata_column_s, last->columns);
else
ncols = 0;
make_cleanup_ui_out_table_begin_end (uiout, ncols, nprocs,
"OSDataTable"); "OSDataTable");
/* With no columns/items, we just output an empty table, but we
still output the table. This matters for MI. */
if (ncols == 0)
{
do_cleanups (old_chain);
return;
}
if (last && last->columns) if (last && last->columns)
{ {
struct osdata_column *col; struct osdata_column *col;
@ -324,13 +333,18 @@ info_osdata_command (char *type, int from_tty)
VEC_iterate (osdata_column_s, last->columns, VEC_iterate (osdata_column_s, last->columns,
ix, col); ix, col);
ix++) ix++)
ui_out_table_header (uiout, 10, ui_left, {
col->name, col->name); char col_name[32];
snprintf (col_name, 32, "col%d", ix);
ui_out_table_header (uiout, 10, ui_left,
col_name, col->name);
}
} }
ui_out_table_body (uiout); ui_out_table_body (uiout);
if (nprocs != 0) if (nrows != 0)
{ {
struct osdata_item *item; struct osdata_item *item;
int ix_items; int ix_items;
@ -353,8 +367,13 @@ info_osdata_command (char *type, int from_tty)
VEC_iterate (osdata_column_s, item->columns, VEC_iterate (osdata_column_s, item->columns,
ix_cols, col); ix_cols, col);
ix_cols++) ix_cols++)
ui_out_field_string (uiout, col->name, col->value); {
char col_name[32];
snprintf (col_name, 32, "col%d", ix_cols);
ui_out_field_string (uiout, col_name, col->value);
}
do_cleanups (old_chain); do_cleanups (old_chain);
ui_out_text (uiout, "\n"); ui_out_text (uiout, "\n");