tMerge pull request #22 from boyska/fix_nosubcmd - tomb - the crypto undertaker
 (HTM) git clone git://parazyd.org/tomb.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 4d4d69cd4d7ca4e0b915c935f5cfc452f97644af
 (DIR) parent 21be9e204e7eead1f67ce6cf454e71591b311954
 (HTM) Author: BoySka <boyska@gmail.com>
       Date:   Thu, 18 Aug 2011 04:30:40 -0700
       
       Merge pull request #22 from boyska/fix_nosubcmd
       
       
       ttomb -h and tomb -v work as expected, without altering any other command
       (it uses a __default subcommand if none is given)
       
       Diffstat:
         M src/tomb                            |      18 +++++++++++++++---
       
       1 file changed, 15 insertions(+), 3 deletions(-)
       ---
 (DIR) diff --git a/src/tomb b/src/tomb
       t@@ -1108,7 +1108,8 @@ main() {
            #       I. usability; user expect that "-s" is "size
            #       II. Option parsing WILL EXPLODE if you do this kind of bad things
            #               (it will say "option defined more than once, and he's right)
       -    main_opts=(q -quiet=q D -debug=D h -help=h v -verbose=v)
       +    main_opts=(q -quiet=q D -debug=D h -help=h v -version=v)
       +    subcommands_opts[__default]=""
            subcommands_opts[open]="n -nohook=n k: -key=k o: -mount-options=o"
            subcommands_opts[mount]=${subcommands_opts[open]}
            subcommands_opts[create]="s: -size=s"
       t@@ -1136,6 +1137,9 @@ main() {
            zparseopts -M -E -D -Adiscardme ${every_opts}
            unset discardme
            subcommand=$1
       +    if [[ -z $subcommand ]]; then
       +        subcommand="__default"
       +    fi
            if [[ -z ${(k)subcommands_opts[$subcommand]} ]]; then #there's no such subcommand
                error "Subcommand '$subcommand' doesn't exist"
                exit 127
       t@@ -1169,8 +1173,10 @@ main() {
                PARAM+=$arg
          done
          #first parameter actually is the subcommand: delete it and shift
       -  PARAM[1]=()
       -  shift
       +  if [[ $subcommand != '__default' ]]; then
       +      PARAM[1]=()
       +      shift
       +  fi
          ### End parsing command-specific options
        
          ### Set global options (useless, but for code retro-compatibility)
       t@@ -1213,6 +1219,12 @@ main() {
                askpass) ask_password $CMD2 ;;
                 mktemp) safe_dir ${CMD2} ;;
              translate) generate_translatable_strings ;;
       +      __default)
       +          if option_is_set -v; then
       +            echo Tomb - $VERSION
       +        else
       +          usage
       +      fi;;
                      *) error "command \"$CMD\" not recognized"
                         act "try -h for help"
                         return 1