aboutsummaryrefslogtreecommitdiff
path: root/gdb/osdata.c
diff options
context:
space:
mode:
authorStan Shebs <shebs@codesourcery.com>2012-06-28 23:44:26 +0000
committerStan Shebs <shebs@codesourcery.com>2012-06-28 23:44:26 +0000
commit71caed8383ce5ad0277bf0c1feaec40911fc040c (patch)
treebf5f59fd18c8feb9ecba020d7941445e6577c43f /gdb/osdata.c
parent37ce89ebb295e6ed0fc0bf5a4eb2e718ed0fb2ee (diff)
downloadgdb-71caed8383ce5ad0277bf0c1feaec40911fc040c.zip
gdb-71caed8383ce5ad0277bf0c1feaec40911fc040c.tar.gz
gdb-71caed8383ce5ad0277bf0c1feaec40911fc040c.tar.bz2
* osdata.c (info_osdata_command): Filter out "Title" columns
from non-MI uses. * common/linux-osdata.c (struct osdata_type): Add title field. (osdata_table): Add titles to each entry. (linux_command_xfer_osdata): Add a column for title data. * gdb.texinfo (Miscellaneous GDB/MI Commands): Update -info-os example, add note about title column.
Diffstat (limited to 'gdb/osdata.c')
-rw-r--r--gdb/osdata.c33
1 files changed, 31 insertions, 2 deletions
diff --git a/gdb/osdata.c b/gdb/osdata.c
index 066d47f..8776022 100644
--- a/gdb/osdata.c
+++ b/gdb/osdata.c
@@ -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);
@@ -366,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);
}