[REPOST] patch: command deprecator
Elena Zannoni
ezannoni@cygnus.com
Sat Apr 1 00:00:00 GMT 2000
Fernando Nasser writes:
> David,
>
> I have not looked in the details, but this is looks like a model
> submission, with testcase, documentation fixes etc. Thank you very
> much.
Yes, true, thanks for redoing the patch.
>
> The maintainers are both Elena and I. I am leaving for one week, so I
> wonder if Elena could do me a favor of dealing with your patch. Will
> you Elena? Please...
>
Yes, sure.
> Cheers,
> Fernando
>
Elena
> David Whedon wrote:
> >
> > I cleaned up my patch, deleted worthless lines, etc. thanks for the
> > suggestions Elena. I may not have found all missing gnu-isms, but I gave
> > it a shot. I do wonder what the thinking is as far as keeping things
> > looking the same within one file, i.e K & R style functions for most, but
> > new ones standard.
> >
> > I want to make a few quick notes about why I chose to do this the way that
> > I did, so things make a bit of sense, and also so that someone can find a
> > better way if they want, and it also will help those looking at the logic
> > of what I did.
> >
> > I decided that I wanted the warning to print out the full command name,
> > for example:
> > (gdb) set end b
> > Warning: command 'set endian big' is deprecated.
> > Use 'bigendian'.
> > (gdb)
> >
> > At the time the command 'big' is called, we only have that command name
> > "big". I thought that a warning message:
> > Warning: command 'big' is deprecated.
> >
> > would be confusing. Also:
> > Warning: command 'set end b' is deprecated.
> >
> > looks somewhat dumb.
> >
> > I found that I needed therefore to decode the command
> > line in order to figure out what the actual command name was. This is
> > because postfix commands (don't know of a better name, I mean the ones
> > that come after prefix commands) don't retain any knowledge of their
> > prefix command. If they did, then we could simply lookup the prefixname on
> > the prefix command, and we would be set. I don't see an easy way of
> > adding that info since when a command is added it is added to a list, and
> > that list doesn't have any knowledge of the commands that are using it
> > (the list) as a prefixlist (I'd call it a postfixlist).
> >
> > This led me to write lookup_cmd_composition which is admittedly an
> > iterative version of lookup_cmd_1. The recursive version can't work (as
> > far as I can tell) with what I am trying to do because we need to know
> > both the command that is going to be executed _and_ its prefix command.
> >
> > In addition, I wanted to be able to deprecate aliases alone. That is,
> > deprecate the alias and not the command.
> >
> > Tests were done on i686-pc-linux-gnu.
> >
> > Test results before:
> >
> > === gdb Summary ===
> >
> > # of expected passes 6356
> > # of unexpected failures 13
> > # of expected failures 200
> > # of unresolved testcases 3
> >
> > Test results after, I added about 10 new tests that test the deprecator:
> >
> > === gdb Summary ===
> >
> > # of expected passes 6368
> > # of unexpected failures 13
> > # of expected failures 200
> > # of unresolved testcases 3
> >
> > And now, here comes the patch:
> >
> > 1999-02-22 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.
> >
> > * gdbint.texinfo : added paragraph about command deprecation.
> >
> > * commands.exp : added command deprecator tests.
> >
> >
>
> --
> Fernando Nasser
> Red Hat, Inc. - Toronto E-Mail: fnasser@redhat.com
> 2323 Yonge Street, Suite #300 Tel: 416-482-2661 ext. 311
> Toronto, Ontario M4P 2C9 Fax: 416-482-6299
More information about the Gdb-patches
mailing list