| Index: gdb/osdata.c
|
| diff --git a/gdb/osdata.c b/gdb/osdata.c
|
| index 62ce412ca6853b6f216509c0e29477558bfb33d5..8776022843b74328bf435225150df1aad3140c86 100644
|
| --- a/gdb/osdata.c
|
| +++ b/gdb/osdata.c
|
| @@ -288,7 +288,7 @@ get_osdata_column (struct osdata_item *item, const char *name)
|
| return NULL;
|
| }
|
|
|
| -static void
|
| +void
|
| info_osdata_command (char *type, int from_tty)
|
| {
|
| struct ui_out *uiout = current_uiout;
|
| @@ -297,6 +297,7 @@ info_osdata_command (char *type, int from_tty)
|
| struct cleanup *old_chain;
|
| int ncols = 0;
|
| int nrows;
|
| + int col_to_skip = -1;
|
|
|
| osdata = get_osdata (type);
|
| old_chain = make_cleanup_osdata_free (osdata);
|
| @@ -311,6 +312,28 @@ info_osdata_command (char *type, int from_tty)
|
| last = VEC_last (osdata_item_s, osdata->items);
|
| if (last->columns)
|
| ncols = VEC_length (osdata_column_s, last->columns);
|
| +
|
| + /* As a special case, scan the listing of available data types
|
| + for a column named "Title", and only include it with MI
|
| + output; this column's normal use is for titles for interface
|
| + elements like menus, and it clutters up CLI output. */
|
| + if (!type && !ui_out_is_mi_like_p (uiout))
|
| + {
|
| + struct osdata_column *col;
|
| + int ix;
|
| +
|
| + for (ix = 0;
|
| + VEC_iterate (osdata_column_s, last->columns, ix, col);
|
| + ix++)
|
| + {
|
| + if (strcmp (col->name, "Title") == 0)
|
| + col_to_skip = ix;
|
| + }
|
| + /* Be sure to reduce the total column count, otherwise
|
| + internal errors ensue. */
|
| + if (col_to_skip >= 0)
|
| + --ncols;
|
| + }
|
| }
|
|
|
| make_cleanup_ui_out_table_begin_end (uiout, ncols, nrows,
|
| @@ -335,7 +358,10 @@ info_osdata_command (char *type, int from_tty)
|
| ix++)
|
| {
|
| char col_name[32];
|
| -
|
| +
|
| + if (ix == col_to_skip)
|
| + continue;
|
| +
|
| snprintf (col_name, 32, "col%d", ix);
|
| ui_out_table_header (uiout, 10, ui_left,
|
| col_name, col->name);
|
| @@ -355,13 +381,10 @@ info_osdata_command (char *type, int from_tty)
|
| ix_items++)
|
| {
|
| struct cleanup *old_chain;
|
| - struct ui_stream *stb;
|
| int ix_cols;
|
| struct osdata_column *col;
|
|
|
| - stb = ui_out_stream_new (uiout);
|
| - old_chain = make_cleanup_ui_out_stream_delete (stb);
|
| - make_cleanup_ui_out_tuple_begin_end (uiout, "item");
|
| + old_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "item");
|
|
|
| for (ix_cols = 0;
|
| VEC_iterate (osdata_column_s, item->columns,
|
| @@ -369,7 +392,10 @@ info_osdata_command (char *type, int from_tty)
|
| ix_cols++)
|
| {
|
| char col_name[32];
|
| -
|
| +
|
| + if (ix_cols == col_to_skip)
|
| + continue;
|
| +
|
| snprintf (col_name, 32, "col%d", ix_cols);
|
| ui_out_field_string (uiout, col_name, col->value);
|
| }
|
|
|