Openwall GNU/*/Linux - a small security-enhanced Linux distro for servers
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Sun, 27 May 2012 13:19:00 +0200
From: magnum <john.magnum@...hmail.com>
To: john-dev@...ts.openwall.com
Subject: Re: Fwd: bash auto-completion for john

committed now

magnum

On 05/25/2012 03:55 PM, Frank Dittrich wrote:
> On 05/24/2012 10:16 PM, magnum wrote:
>> Thanks, committed now.
> 
> Thanks. To keep you busy, I changed the script once more.
> Those --options= with useful completion values can now be specified in
> an abbreviated form, as long as you use = (and not :) as a sepatator
> between option name and value.
> 
> So, instead of
> 
> $ ./john -ru[tab]=s[tab]
> to get
> $ ./john --rules=single
> 
> You can now use
> $ ./john -ru=s[tab]
> to get
> $ ./john -ru=single
> 
> This means, type any option (either with just one leading - or with
> leading --) in an abbreviated form (which is unambiguous), followed by
> =, optionally followed by more characters, to get a list of all possible
> completions:
> 
> $ ./john -i=[tab][tab]
> all      alnum    alpha    digits   digits8  lanman
> 
> $ ./john -inc=a[tab]
> completes to
> $ ./john -inc=al
> 
> $ ./john -inc=al[tab][tab]
> lists these possible completions:
> all    alnum  alpha
> 
> 
> Currently, this is hard coded, as you can see from the diff.
> This means, if john gets a new option named --i<something>, I have to
> adjust the script to require --in= or -in= to complete incremental mode
> names.
> And if I do that, the script will require -in= even for older john
> versions where -i= would be unambiguous.
> So, a generic implementation instead of a hard coded one would be
> preferable.
> 
> Another change I made:
> If I provide completions for --external=, --incremental=, --rules= or
> --session= using the --list option instead of a hard coded list, I
> convert the user input to lower case before completion.
> 
> $ ./john -i=D[tab]
> results in
> $ ./john -i=digits
> 
> The idea is to help users who used completion for an older john version
> and remember that the section names start with an upper case letter.
> Otherwise something that worked for older john versions will stop
> working once they switch to a newer one.
> 
> $ ./john -i=X[tab][tab]
> doesn't change anything, because there is no possible completion
> starting with x or X.
> 
> For an older john version (without --list),
> 
> $ john -i=D[tab]
> becomes
> $ john -i=Digits
> 
> To translate to lower case, I used tr.But I think it can be assumed tr
> exists on every system with bash.
> (I preferred tr over requiring a certain new bash version.)
> 
> 
> Frank


Powered by blists - more mailing lists

Your e-mail address:

Powered by Openwall GNU/*/Linux - Powered by OpenVZ