[Crash-utility] implementation of -h and --help [was: documentation of crash flags]linux-2.6.22.1-20.fc7]

Dave Anderson anderson at redhat.com
Tue Jul 17 14:51:14 UTC 2007


D. Hugh Redelmeier wrote:

> In help.c cmd_usage():
> 
> - make sure that cmd_usage does not call gdb if gdb isn't initialized
>   (in trying to give -h help for an unrecognized command)
> 
> - add a flag MUST_HELP to cmd_usage to specify that if help isn't
>   found a diagnostic should be printed.  This used to be the case if
>   the command calling cmd_usage was help but not if -h called it.
> 
> - this command still unconditionally uses less(1) for anything but a
>   synopsis.  This should be changed.
> 
> 
> In main.c, the long_options array:
> 
> - use the name "required_argument" in place of the magic number 1.
> 
> - make --help a synonym of 'h'
> 
> - specify that --help has an optional_argument.
> 
> 
> In main.c main():
> 
> - in the call of getopt_long: add another ':' for -h.  This means
>   that the argument is optional.  This, in turn, means that the switch
>   default no longer handles -h at the end of an argument list.
> 
> - I added code to detect and report an unhandled long option.  It is
>   easy to get the long_option table out of sync with the handlers.
>   Mostly this involves adding "else" a lot of places in case 0.
> 
> - ditch the code to implement --help since it is now handled by the
>   code for -h
> 
> - ditch the code to implement -h in the switch default since it is now
>   handled in case 'h'
> 
> - the case 'h' code now has to handle the fact that the -h / --help
>   argument is optional.
> 
> - removed -H flag which wasn't documented and is now redundant.
> 

OK, this all looks pretty reasonable.  I haven't played with it
yet because the patch doesn't apply in my working tree due to
the other previously-queued changes, but it's just patch-monkey
work.

I thought you might pick up on the damn "less" issue in the help
output...  ;-)

To handle that issue, I've decided to do the same thing that
man(1) does.  The man command does the same thing as crash, i.e,
it uses "/usr/bin/less -isr" by default, but allows its override
with a "MANPAGER" environment variable.  So I'm going to allow users
to hang themselves with CRASHPAGER environment variable.  I hadn't
thought of using it as part of the help output, but it should
work there as well.

Thanks,
   Dave






More information about the Crash-utility mailing list