From fdf9e36fa2ed39f0da0dfa5dfdbd8e2452c6cb45 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Wed, 5 Apr 2017 19:21:35 +0100 Subject: [PATCH] -Wwrite-strings: MI -info-os -Wwrite-strings flags this attempt to convert a string literal to "char *": info_osdata_command ("", 0); info_osdata_command is a command function. We could address this by simply passing NULL instead of "". However, I went a little bit further and added a new function that is called by both the CLI and MI. gdb/ChangeLog: 2017-04-05 Pedro Alves * mi/mi-cmd-info.c (mi_cmd_info_os): Call info_osdata instead of info_osdata_command. * osdata.c (info_osdata_command): Rename to ... (info_osdata): ... this. Constify 'type' parameter, and remove the 'from_tty' parameter. Accept NULL TYPE. (info_osdata_command): New function. * osdata.h (info_osdata_command): Remove declaration. (info_osdata): New declaration. --- gdb/ChangeLog | 11 +++++++++++ gdb/mi/mi-cmd-info.c | 4 ++-- gdb/osdata.c | 13 +++++++++++-- gdb/osdata.h | 6 +++++- 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 821aeafa8f..fe1243be8c 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,14 @@ +2017-04-05 Pedro Alves + + * mi/mi-cmd-info.c (mi_cmd_info_os): Call info_osdata instead of + info_osdata_command. + * osdata.c (info_osdata_command): Rename to ... + (info_osdata): ... this. Constify 'type' parameter, and remove + the 'from_tty' parameter. Accept NULL TYPE. + (info_osdata_command): New function. + * osdata.h (info_osdata_command): Remove declaration. + (info_osdata): New declaration. + 2017-04-05 Pedro Alves * mi/mi-cmd-break.c (mi_cmd_break_insert_1, mi_cmd_break_insert) diff --git a/gdb/mi/mi-cmd-info.c b/gdb/mi/mi-cmd-info.c index eba1ca283b..1a96d6feed 100644 --- a/gdb/mi/mi-cmd-info.c +++ b/gdb/mi/mi-cmd-info.c @@ -106,10 +106,10 @@ mi_cmd_info_os (const char *command, char **argv, int argc) switch (argc) { case 0: - info_osdata_command ("", 0); + info_osdata (NULL); break; case 1: - info_osdata_command (argv[0], 0); + info_osdata (argv[0]); break; default: error (_("Usage: -info-os [INFOTYPE]")); diff --git a/gdb/osdata.c b/gdb/osdata.c index d63ff5aac9..4b33ccbdf6 100644 --- a/gdb/osdata.c +++ b/gdb/osdata.c @@ -287,7 +287,7 @@ get_osdata_column (struct osdata_item *item, const char *name) } void -info_osdata_command (char *type, int from_tty) +info_osdata (const char *type) { struct ui_out *uiout = current_uiout; struct osdata *osdata = NULL; @@ -297,12 +297,15 @@ info_osdata_command (char *type, int from_tty) int nrows; int col_to_skip = -1; + if (type == NULL) + type = ""; + osdata = get_osdata (type); old_chain = make_cleanup_osdata_free (osdata); nrows = VEC_length (osdata_item_s, osdata->items); - if (!type && nrows == 0) + if (*type == '\0' && nrows == 0) error (_("Available types of OS data not reported.")); if (!VEC_empty (osdata_item_s, osdata->items)) @@ -407,6 +410,12 @@ info_osdata_command (char *type, int from_tty) do_cleanups (old_chain); } +static void +info_osdata_command (char *arg, int from_tty) +{ + info_osdata (arg); +} + extern initialize_file_ftype _initialize_osdata; /* -Wmissing-prototypes */ void diff --git a/gdb/osdata.h b/gdb/osdata.h index bda0112cd8..5921384527 100644 --- a/gdb/osdata.h +++ b/gdb/osdata.h @@ -49,6 +49,10 @@ void osdata_free (struct osdata *); struct cleanup *make_cleanup_osdata_free (struct osdata *data); struct osdata *get_osdata (const char *type); const char *get_osdata_column (struct osdata_item *item, const char *name); -void info_osdata_command (char *type, int from_tty); + +/* Dump TYPE info to the current uiout builder. If TYPE is either + NULL or empty, then dump the top level table that lists the + available types of OS data. */ +void info_osdata (const char *type); #endif /* OSDATA_H */