diff options
author | Kwok Yeung <kcy@sourceware.org> | 2011-11-21 16:54:28 +0000 |
---|---|---|
committer | Kwok Yeung <kcy@sourceware.org> | 2011-11-21 16:54:28 +0000 |
commit | 8443c2073bfc7ba847265cf87d096b17da64508e (patch) | |
tree | 04f13fcf1619806df5c69da24d954422a28a5963 /gdb | |
parent | bd59d91639999e90bb9f73d679c91a9e7af7579b (diff) | |
download | gdb-8443c2073bfc7ba847265cf87d096b17da64508e.zip gdb-8443c2073bfc7ba847265cf87d096b17da64508e.tar.gz gdb-8443c2073bfc7ba847265cf87d096b17da64508e.tar.bz2 |
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.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/osdata.c | 53 |
2 files changed, 42 insertions, 17 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index aba596f..572fe3d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -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> * MAINTAINERS (Write After Approval): Keep list in alphabetical order. diff --git a/gdb/osdata.c b/gdb/osdata.c index c3da23a..91c5e42 100644 --- a/gdb/osdata.c +++ b/gdb/osdata.c @@ -293,28 +293,37 @@ info_osdata_command (char *type, int from_tty) { struct ui_out *uiout = current_uiout; struct osdata *osdata = NULL; - struct osdata_item *last; + struct osdata_item *last = NULL; struct cleanup *old_chain; - int ncols; - int nprocs; + int ncols = 0; + int nrows; osdata = get_osdata (type); 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.")); + + 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); - 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, + make_cleanup_ui_out_table_begin_end (uiout, ncols, nrows, "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) { struct osdata_column *col; @@ -324,13 +333,18 @@ info_osdata_command (char *type, int from_tty) VEC_iterate (osdata_column_s, last->columns, ix, col); 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); - if (nprocs != 0) + if (nrows != 0) { struct osdata_item *item; int ix_items; @@ -353,8 +367,13 @@ info_osdata_command (char *type, int from_tty) VEC_iterate (osdata_column_s, item->columns, ix_cols, col); 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); ui_out_text (uiout, "\n"); |