summaryrefslogtreecommitdiff
path: root/gdb/command.h
diff options
context:
space:
mode:
authorFernando Nasser <fnasser@redhat.com>2000-03-23 23:43:19 +0000
committerFernando Nasser <fnasser@redhat.com>2000-03-23 23:43:19 +0000
commit2dc8fb4756062c56aaff9a6f0faf06451ebdd49c (patch)
tree275e4c47383e6c2a899f472adc89d7b5e9684e5f /gdb/command.h
parent29f870bdbe7ab33868b34297abd219b0386fea8b (diff)
downloadgdb-2dc8fb4756062c56aaff9a6f0faf06451ebdd49c.tar.gz
2000-03-23 Fernando Nasser <fnasser@cygnus.com>
From David Whedon <dwhedon@gordian.com> * top.c (execute_command): Checks all commands beore executing to see if the user needs to be warned that the command is deprecated, warns user if appropriate. (add_info), (add_info_alias), (add_com) , (add_com_alias): Changed return values from void to struct cmd_list_element *. * command.c (lookup_cmd_1): Check aliases before following link in case user needs to be warned about a deprecated alias. (deprecate_cmd): new exported function for command deprecation, sets flags and posibly a replacement string. (deprecated_cmd_warning): New exported funciton to warn user about a deprecated command. (lookup_cmd_composition): New exported function that determines alias, prefix_command, and cmd based on a string. This is useful is we want to full name of a command. * command.h : Added prototypes for deprecate_cmd, deprecated_warn_user and lookup_cmd_composition, added flags to the cmd_list_element structure, changed return values for add_com_* and add_info_* from void to cmd_list_element. * maint.c : (maintenance_deprecate): New function to deprecate a command. This exists only so that the testsuite can deprecate commands at runtime and check the warning behavior. (maintenance_undeprecate) : New function, drops deprecated flags. (maintenance_do_deprecate): Actually does the (un)deprecation. (initialize_maint_cmds): Added the above new deprecate commands.
Diffstat (limited to 'gdb/command.h')
-rw-r--r--gdb/command.h60
1 files changed, 53 insertions, 7 deletions
diff --git a/gdb/command.h b/gdb/command.h
index fcff84533fa..200a48703e4 100644
--- a/gdb/command.h
+++ b/gdb/command.h
@@ -82,6 +82,15 @@ var_types;
/* This structure records one command'd definition. */
+
+/* This flag is used by the code executing commands to warn the user
+ the first time a deprecated command is used, see the 'flags' field in
+ the following struct.
+*/
+#define CMD_DEPRECATED 0x1
+#define DEPRECATED_WARN_USER 0x2
+#define MALLOCED_REPLACEMENT 0x4
+
struct cmd_list_element
{
/* Points to next command in this list. */
@@ -115,6 +124,31 @@ struct cmd_list_element
Entire string should also end with a period, not a newline. */
char *doc;
+ /* flags : a bitfield
+
+ bit 0: (LSB) CMD_DEPRECATED, when 1 indicated that this command
+ is deprecated. It may be removed from gdb's command set in the
+ future.
+
+ bit 1: DEPRECATED_WARN_USER, the user needs to be warned that
+ this is a deprecated command. The user should only be warned
+ the first time a command is used.
+
+ bit 2: MALLOCED_REPLACEMENT, when functions are deprecated at
+ compile time (this is the way it should, in general, be done)
+ the memory comtaining the replacement string is statically
+ allocated. In some cases it makes sense to deprecate commands
+ at runtime (the testsuite is one example). In this case the
+ memory for replacement is malloc'ed. When a command is
+ undeprecated or re-deprecated at runtime we don't want to risk
+ calling free on statically allocated memory, so we check this
+ flag.
+ */
+ int flags;
+
+ /* if this command is deprecated, this is the replacement name */
+ char *replacement;
+
/* Hook for another command to be executed before this command. */
struct cmd_list_element *hook;
@@ -208,18 +242,30 @@ extern struct cmd_list_element *
lookup_cmd_1 PARAMS ((char **, struct cmd_list_element *,
struct cmd_list_element **, int));
+extern struct cmd_list_element *
+ deprecate_cmd (struct cmd_list_element *, char * );
+
extern void
-add_com PARAMS ((char *, enum command_class, void (*fun) (char *, int),
+ deprecated_cmd_warning (char **);
+
+extern int
+ lookup_cmd_composition (char *text,
+ struct cmd_list_element **alias,
+ struct cmd_list_element **prefix_cmd,
+ struct cmd_list_element **cmd);
+
+extern struct cmd_list_element *
+ add_com PARAMS ((char *, enum command_class, void (*fun) (char *, int),
char *));
-extern void
-add_com_alias PARAMS ((char *, char *, enum command_class, int));
+extern struct cmd_list_element *
+ add_com_alias PARAMS ((char *, char *, enum command_class, int));
-extern void
-add_info PARAMS ((char *, void (*fun) (char *, int), char *));
+extern struct cmd_list_element *
+ add_info PARAMS ((char *, void (*fun) (char *, int), char *));
-extern void
-add_info_alias PARAMS ((char *, char *, int));
+extern struct cmd_list_element *
+ add_info_alias PARAMS ((char *, char *, int));
extern char **
complete_on_cmdlist PARAMS ((struct cmd_list_element *, char *, char *));