tcodebase cleanup - gtomb - tomb gtk frontend in zenity
 (HTM) git clone git://parazyd.org/gtomb.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 531752cb9389f1d21ed3c2c72b6faca49e9a191a
 (DIR) parent 6bb3cad2d7594ad04a6ccd8f1dd38fa416e2025b
 (HTM) Author: parazyd <parazyd@dyne.org>
       Date:   Thu, 16 Jun 2016 21:19:11 +0200
       
       codebase cleanup
       
       Diffstat:
         M gtomb                               |     713 ++++++++++++-------------------
       
       1 file changed, 278 insertions(+), 435 deletions(-)
       ---
 (DIR) diff --git a/gtomb b/gtomb
       t@@ -1,42 +1,32 @@
        #!/usr/bin/env zsh
        #
       -# gtomb - a GUI wrapper for Tomb 
       +# Copyright (c) 2015-2016 parazyd
       +# gtomb is written and maintained by parazyd <parazyd@dyne.org>
        #
       -# Maintained and written by parazyd <parazyd@dyne.org>
       -# https://github.com/parazyd/gtomb
       -# https://github.com/dyne/Tomb
       +# This file is part of gtomb
        #
       -# gtomb is experimental software.
       -#
       -# {{{ License
       -# gtomb - A GUI wrapper for Tomb, the crypto undertaker
       -# Copyright (C) 2015-2016 Parazyd <parazyd@dyne.org>
       -#
       -# This program is free software: you can redistribute it and/or modify
       +# This source code is free software: you can redistribute it and/or modify
        # it under the terms of the GNU General Public License as published by
        # the Free Software Foundation, either version 3 of the License, or
        # (at your option) any later version.
        #
       -# This program is distributed in the hope that it will be useful,
       +# This software is distributed in the hope that it will be useful,
        # but WITHOUT ANY WARRANTY; without even the implied warranty of
       -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
       +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        # GNU General Public License for more details.
        #
        # You should have received a copy of the GNU General Public License
       -# along with this program. If not, see http://www.gnu.org/licenses/
       -#
       -# }}}
       +# along with this source code. If not, see <http://www.gnu.org/licenses/>.
        
       -ver="0.7.1"
       -TOMBPATH="/usr/bin/tomb" # Set this to your tomb executable's path
       -KDFPATH="/usr/bin/" # Set this to the path of your KDF binaries (if you're using them)
       +ver="0.8"
       +TOMBPATH="/usr/local/bin/tomb" # Set this to your tomb executable's path
       +KDFPATH="/usr/local/bin/" # Set this to the path of your KDF binaries (if you're using them)
        # The ones below should not need changing
        HEXENC="$KDFPATH/tomb-kdb-hexencode"
        GENSALT="$KDFPATH/tomb-kdb-pbkdf2-gensalt"
        GETITER="$KDFPATH/tomb-kdb-pbkdf2-getiter"
        PBKDF="$KDFPATH/tomb-kdb-pbkdf2"
       -_DD=dcfldd
       -which dcfldd > /dev/null || _DD=dd
       +_DD=/bin/dd
        
        # {{{ monmort icon
        MONMORT="/tmp/monmort.png"
       t@@ -51,19 +41,19 @@ b2RpZnkAMjAxMS0wMS0xMlQwOTozNDoyNCswMTowMNKiZVMAAAAASUVORK5CYII="
        echo -e "$ICONB64" | base64 --decode > $MONMORT
        # }}}
        
       -
        # {{{ sudo functions
        function _sudo {
            sudoassword=$(ask_password "Insert sudo password for user $USER")
            echo -e "$sudoassword\n" | sudo -S -v
            _sudowrong
        }
       +
        function _sudowrong {
       -    if [[ $? == 1 ]]; then
       +    [[ $? = 0 ]] || {
                sudoassword=$(ask_password "Wrong password. Insert sudo password for user $USER")
                echo -e "$sudoassword\n" | sudo -S -v
                _sudowrong
       -    fi
       +    }
        }
        # }}}
        
       t@@ -321,7 +311,7 @@ function _clean {
                rr+="$RANDOM"
            done
        
       -    command="$rr";      unset command
       +    cmnd="$rr";         unset cmnd
            tombname="$rr";     unset tombname
            tombsize="$rr";     unset tombsize
            keyfile="$rr";      unset keyfile
       t@@ -340,7 +330,7 @@ function _clean {
        # {{{ _main - Main window
        function _main {
            _clean
       -    command=`zenity \
       +    cmnd=`zenity \
                --window-icon="$MONMORT" \
                --title="gtomb" \
                --width=640 \
       t@@ -366,7 +356,7 @@ function _main {
                "engrave" "Generates a QR code of a key to be saved on paper" \
                "bury" "Hide a key inside a JPEG image" \
                "exhume" "Extract a key from a JPEG image"`
       -    eval "_$command"
       +    eval "_$cmnd"
        }
        # }}}
        
       t@@ -383,54 +373,41 @@ function _dig {
                exec _main
            fi
        
       -    case $res in
       -        0)
       -            tombsize=`_zenentry "Tomb digging" "Enter the size of your tomb in MiB (min. 10 MiB)" "10"`
       -            res=$?
       +        [[ $res = 0 ]] || exec _main
        
       -            re='^[0-9]+$'
       -            if ! [[ $tombsize =~ $re ]]; then
       -                _zenerr "Error" "Please choose a valid number."
       -                exec _main
       -            elif [[ -z $tombsize ]]; then
       -                _info "gtomb" "Cancelled"
       -                exec _main
       -            fi
       +        tombsize=`_zenentry "Tomb digging" "Enter the size of your tomb in MiB (min. 10 MiB)" "10"`
       +        res=$?
        
       -            case $res in
       -                0)
       -                    "$TOMBPATH" dig -s "$tombsize" "$tombname" | \
       -                        _zenprog "Digging new tomb" "Please wait while your tomb is being dug..." &
       -
       -                    PID_ZEN=$(ps -C zenity h -o pid,command | awk '/Digging new tomb/{print $1}')
       -                    while [ -n "$PID_ZEN" ]; do
       -                        PID_ZEN=$(ps h -o pid -p ${PID_ZEN})
       -                        PID_DD=$(ps -C $_DD h -o pid,command | awk -v tombtmp="$tombname" '$0~tombtmp{print $1}')
       -                        sleep 1
       -                    done
       -                    if [[ -n "$PID_DD" && -z "$PID_ZEN" ]]; then
       -                        kill -9 $PID_DD
       -                        _zenwarn "Warning" "Tomb digging cancelled."
       -                        rm -f "$tombname"
       -                        exec _main
       -                    fi
       -
       -                    _info "Success" "Your tomb has been dug in $tombname"
       -                    exec _main
       -                    ;;
       -                1)
       -                    _zenwarn "Warning" "Tomb digging cancelled."
       -                    exec _main
       -                    ;;
       -            1)
       -                exec _main
       -                ;;
       -            esac
       -            ;;
       -        1)
       -            exec _main
       -            ;;
       -    esac
       +        re='^[0-9]+$'
       +        if ! [[ $tombsize =~ $re ]]; then
       +                _zenerr "Error" "Please choose a valid number."
       +                exec _main
       +        elif [[ -z $tombsize ]]; then
       +                _info "gtomb" "Cancelled"
       +                exec _main
       +        fi
       +
       +        [[ $res = 0 ]] || { _zenwarn "Warning" "Tomb digging canceled." ; exec _main }
       +
       +        "$TOMBPATH" dig -s "$tombsize" "$tombname" | \
       +                _zenprog "Digging new tomb" "Please wait while your tomb is being dug..." &
       +
       +        PID_ZEN=$(ps -C zenity h -o pid,command | awk '/Digging new tomb/ {print $1}')
       +        while [ -n "$PID_ZEN" ]; do
       +                PID_ZEN=$(ps h -o pid -p ${PID_ZEN})
       +                PID_DD=$(ps -C $_DD h -o pid,command | awk -v tombtmp="$tombname" '$0~tombtmp{print $1}')
       +                sleep 1
       +        done
       +
       +        [[ -n "$PID_DD" && -z "$PID_ZEN" ]] && {
       +                kill -9 $PID_DD
       +                _zenwarn "Warning" "Tomb digging cancelled."
       +                rm -f "$tombname"
       +                exec _main
       +        }
       +
       +        _info "Success" "Your tomb has been dug in $tombname"
       +        exec _main
        }
        # }}}
        
       t@@ -443,124 +420,86 @@ function _forge {
                _zenerr "Error" "This key already exists. I am not overwriting."
                exec _main
            elif [[ -z $keyfile ]]; then
       -        _info "gtomb" "Cancelled"
       +        _info "gtomb" "Canceled"
                exec _main
            fi
        
            kdf=""
            kdfiter=""
            if [[ -x $HEXENC ]] && [[ -x $GENSALT ]] && [[ -x $GETITER ]] && [[ -x $PBKDF ]]; then
       -        _zenques "Do you want to use KDF? (Generates passwords armored against dictionary attacks)" 
       -        if [[ $? == "0" ]]; then
       +        _zenques "Do you want to use KDF? (Generates passwords armored against dictionary attacks)"
       +        [[ $? == "0" ]] && {
                    kdf="--kdf"
                    kdfiter=`_zenentry "Iterations" "Enter the delay (itertime) in seconds for each time \n\
        this key is used:" "2"`
       +
                    re='^[0-9]+$'
                    if ! [[ $kdfiter =~ $re ]]; then
                        _zenerr "Error" "Please choose a valid number."
                        exec _main
                    elif [[ -z $kdfiter ]]; then
       -                _info "gtomb" "Cancelled"
       +                _info "gtomb" "Canceled"
                        exec _main
                    fi
       -        fi
       +        }
            else
                _zenotif "gtomb" "KDF binaries not found."
            fi
        
       -    case $res in
       -        0)
       -            "$TOMBPATH" forge "$keyfile" "$kdf" "$kdfiter" | \
       -                _zenprog "Forging key" "Please wait while your key is being forged...\n\
       -You can move your mouse around and use your computer to speed up the process." &
       +        [[ $? = 0 ]] || exec _main
        
       -            PID_ZEN=$(ps -C zenity h -o pid,command | awk '/Forging key/{print $1}')
       -            while [ -n "$PID_ZEN" ]; do
       -                PID_ZEN=$(ps h -o pid -p ${PID_ZEN})
       -                PID_DD=$(ps -C $_DD h -o pid,command | awk '/ if/{print $1}')
       -                sleep 1
       -            done
       -            if [[ -n "$PID_DD"  && -z "$PID_ZEN" ]]; then
       -                kill -9 $PID_DD
       -                _zenwarn "Warning" "Forging cancelled."
       -                rm -f $keyfile
       -                exec _main
       -            fi
       +        "$TOMBPATH" forge "$keyfile" "$kdf" "$kdfiter" | \
       +                _zenprog "Forging key" "Please wait while your key is being forged...\n\
       +You can move your mouse around and use your computer to speed up the process." &
        
       -            _info "Success" "Your key is now forged in $keyfile"
       -            exec _main
       -            ;;
       -        1)
       -            exec _main
       -            ;;
       -    esac
       +        PID_ZEN=$(ps -C zenity h -o pid,command | awk '/Forging key/ {print $1}')
       +        while [ -n "$PID_ZEN" ]; do
       +                PID_ZEN=$(ps h -o pid -p ${PID_ZEN})
       +                PID_DD=$(ps -C $_DD h -o pid,command | awk '/ if/ {print $1}')
       +                sleep 1
       +        done
       +        [[ -n "$PID_DD"  && -z "$PID_ZEN" ]] && {
       +                kill -9 $PID_DD
       +                _zenwarn "Warning" "Forging cancelled."
       +                rm -f $keyfile
       +                exec _main
       +        }
       +
       +        _info "Success" "Your key is now forged in $keyfile"
       +        exec _main
        }
        # }}}
        
        # {{{ lock - Lock a non-locked tomb
        function _lock {
            tombname=`_fsel "Select a tomb to lock"`
       -    res=$?
       -    
       -    if [[ -z $tombname ]]; then
       -        _zenotif "gtomb" "Cancelled"
       -        exec _main
       -    fi
       -    
       -    case $res in
       -        0)
       -            keyfile=`_fsel "Choose the key for your tomb"`
       -            res=$?
       -
       -            if [[ -z $keyfile ]]; then
       -                _zenotif "gtomb" "Cancelled"
       -                exec _main
       -            fi
       +    [[ -n $tombname ]] || { _zenotif "gtomb" "Cancelled" ; exec _main }
       +        [[ $? = 0 ]] || exec _main
        
       -            case $res in
       -                0)  
       -                    _sudo
       -                    "$TOMBPATH" lock "$tombname" -k "$keyfile" | \
       -                        _zenprognc "Locking your tomb" "Please wait while your tomb is being locked..."
       -                    _info "Success" "Your tomb is now locked."
       -                    exec _main
       -                    ;;
       -                1)
       -                    exec _main
       -                    ;;
       -            esac
       -            ;;
       -        1)
       -            exec _main
       -            ;;
       -    esac
       +        keyfile=`_fsel "Choose the key for your tomb"`
       +        [[ -n $keyfile ]] || { _zenotif "gtomb" "Cancelled" ; exec _main }
       +        [[ $? = 0 ]] || exec _main
       +
       +        _sudo
       +        "$TOMBPATH" lock "$tombname" -k "$keyfile" | \
       +                _zenprognc "Locking your tomb" "Please wait while your tomb is being locked..."
       +        _info "Success" "Your tomb is now locked."
       +        exec _main
        }
        # }}}
        
        # {{{ open - Open an existing tomb
        function _open {
            tombname=`_fsel "Choose a tomb to open"`
       -    res=$?
       -    case $res in
       -        0)
       -            keyfile=`_fsel "Choose the key for your tomb"`
       -            res=$?
       -            case $res in
       -                0)
       -                    _sudo
       -                    "$TOMBPATH" open "$tombname" -k "$keyfile"
       -                    _info "Success" "Your tomb is now open."
       -                    exec _main
       -                    ;;
       -                1)
       -                    exec _main
       -                    ;;
       -            esac
       -            ;;
       -        1)
       -            exec _main
       -            ;;
       -    esac
       +        [[ $? = 0 ]] || exec _main
       +
       +        keyfile=`_fsel "Choose the key for your tomb"`
       +        [[ $? = 0 ]] || exec _main
       +
       +        _sudo
       +        "$TOMBPATH" open "$tombname" -k "$keyfile"
       +        _info "Success" "Your tomb is now open."
       +        exec _main
        }
        # }}}
        
       t@@ -579,85 +518,78 @@ function _list {
                    --column=Tomb \
                    --column=Path `
        
       -    res=$?
            tombname=`echo "$tombname" | cut -c1-16`
       -    case $res in
       -        0)
       -            listchoice=`zenity \
       -                --title="Choose action" \
       -                --window-icon="$MONMORT" \
       -                --width=640 --height=400 --list \
       -                --separator=" & " \
       -                --text="What do you want to do with this tomb?" \
       -                --column=Command \
       -                --column=Description \
       -                "disindex" "Disable indexing of this tomb." \
       -                "enindex" "Enable indexing of this tomb."   \
       -                "close" "Close the selected tomb." \
       -                "slam" "Slam the selected tomb." \
       -                "binds" "Edit current bind-hooks." \
       -                "posts" "Edit current post-hooks."`
       -
       -            if [[ $? == 1 ]]; then
       -                exec _main
       -            fi
        
       -            case $listchoice in
       -                close)
       -                    _sudo
       -                    "$TOMBPATH" close "$tombname"
       -                    _zeninfo "Success" "Tomb closed successfully!"
       -                    exec _main
       -                    ;;
       -                slam)
       -                    _sudo
       -                    "$TOMBPATH" slam "$tombname"
       -                    _info "Success" "$tombname slammed successfully!"
       -                    exec _main
       -                    ;;
       -                disindex)
       -                    tombloc=`"$TOMBPATH" list "$tombname" --get-mountpoint`
       -                    touch "$tombloc/.noindex"
       -                    _info "Success" "Indexing disabled for this tomb."
       -                    exec _main
       -                    ;;
       -                enindex)
       -                    tombloc=`"$TOMBPATH" list "$tombname" --get-mountpoint`
       -                    rm -f "$tombloc/.noindex"
       -                    _info "Success" "Indexing of this tomb is now enabled."
       -                    exec _main
       -                    ;;
       -                binds)
       -                    tombloc=`"$TOMBPATH" list "$tombname" --get-mountpoint` 
       -                    bindhooks=`zenity \
       -                        --text-info \
       -                        --filename="$tombloc/bind-hooks" \
       -                        --editable`
       -                    if [[ $? == "0" ]]; then
       -                        echo "$bindhooks" > "$tombloc/bind-hooks"
       -                        _info "gtomb" "bind-hooks saved"
       -                    fi
       -                    exec _main
       -                    ;;
       -                posts)
       -                    tombloc=`"$TOMBPATH" list "$tombname" --get-mountpoint`
       -                    posthooks=`zenity \
       -                        --text-info \
       -                        --filename="$tombloc/post-hooks" \
       -                        --editable`
       -                    if [[ $? == "0" ]]; then
       -                        echo "$posthooks" > "$tombloc/post-hooks"
       -                        chmod +x "$tombloc/post-hooks"
       -                        _info "gtomb" "post-hooks saved"
       -                    fi
       -                    exec _main
       -                    ;;
       -            esac
       -            ;;
       -        1)
       -            exec _main
       -            ;;
       -    esac
       +        [[ $? = 0 ]] || exec _main
       +
       +        listchoice=`zenity \
       +                --title="Choose action" \
       +                --window-icon="$MONMORT" \
       +                --width=640 --height=400 --list \
       +                --separator=" & " \
       +                --text="What do you want to do with this tomb?" \
       +                --column=Command \
       +                --column=Description \
       +                "disindex" "Disable indexing of this tomb." \
       +                "enindex" "Enable indexing of this tomb."   \
       +                "close" "Close the selected tomb." \
       +                "slam" "Slam the selected tomb." \
       +                "binds" "Edit current bind-hooks." \
       +                "posts" "Edit current post-hooks."`
       +
       +        [[ $? = 0 ]] || exec _main
       +
       +        case $listchoice in
       +                close)
       +                        _sudo
       +                        "$TOMBPATH" close "$tombname"
       +                        _zeninfo "Success" "Tomb closed successfully!"
       +                        exec _main
       +                        ;;
       +                slam)
       +                        _sudo
       +                        "$TOMBPATH" slam "$tombname"
       +                        _info "Success" "$tombname slammed successfully!"
       +                        exec _main
       +                        ;;
       +                disindex)
       +                        tombloc=`"$TOMBPATH" list "$tombname" --get-mountpoint`
       +                        touch "$tombloc/.noindex"
       +                        _info "Success" "Indexing disabled for this tomb."
       +                        exec _main
       +                        ;;
       +                enindex)
       +                        tombloc=`"$TOMBPATH" list "$tombname" --get-mountpoint`
       +                        rm -f "$tombloc/.noindex"
       +                        _info "Success" "Indexing of this tomb is now enabled."
       +                        exec _main
       +                        ;;
       +                binds)
       +                        tombloc=`"$TOMBPATH" list "$tombname" --get-mountpoint`
       +                        bindhooks=`zenity \
       +                                --text-info \
       +                                --filename="$tombloc/bind-hooks" \
       +                                --editable`
       +                        [[ $? = 0 ]] && {
       +                                echo "$bindhooks" > "$tombloc/bind-hooks"
       +                                _info "gtomb" "bind-hooks saved"
       +                        }
       +                        exec _main
       +                        ;;
       +                posts)
       +                        tombloc=`"$TOMBPATH" list "$tombname" --get-mountpoint`
       +                        posthooks=`zenity \
       +                                --text-info \
       +                                --filename="$tombloc/post-hooks" \
       +                                --editable`
       +                        [[ $? = 0 ]] && {
       +                                echo "$posthooks" > "$tombloc/post-hooks"
       +                                chmod +x "$tombloc/post-hooks"
       +                                _info "gtomb" "post-hooks saved"
       +                        }
       +                        exec _main
       +                        ;;
       +        esac
        }
        # }}}
        
       t@@ -676,19 +608,13 @@ function _close {
                    --column=Tomb \
                    --column=Path `
        
       -        res=$?
       -        case $res in
       -            0)
       -                _sudo
       -                tombname=`echo "$tombname" | cut -c1-16`
       -                "$TOMBPATH" close "$tombname"
       -                _info "Success" "Closed successfully!"
       -                exec _main
       -                ;;
       -            1)
       -                exec _main
       -                ;;
       -        esac
       +        [[ $? = 0 ]] || exec _main
       +
       +        _sudo
       +        tombname=`echo "$tombname" | cut -c1-16`
       +        "$TOMBPATH" close "$tombname"
       +        _info "Success" "Closed successfully!"
       +        exec _main
        }
        # }}}
        
       t@@ -706,20 +632,14 @@ function _slam {
                    --separator=" & " \
                    --column=Tomb \
                    --column=Path `
       -            
       -    res=$?
       -    case $res in
       -        0)
       -            _sudo
       -            tombname=`echo "$tombname" | cut -c1-16`
       -            "$TOMBPATH" slam "$tombname"
       -            _info "Success" "Slammed successfully!"
       -            exec _main
       -            ;;
       -        1)
       -            exec _main
       -            ;;
       -    esac
       +
       +        [[ $? = 0 ]] || exec _main
       +
       +        _sudo
       +        tombname=`echo "$tombname" | cut -c1-16`
       +        "$TOMBPATH" slam "$tombname"
       +        _info "Success" "Slammed successfully!"
       +        exec _main
        }
        # }}}
        
       t@@ -728,111 +648,66 @@ function _resize {
            tombname=`_fsel "Choose a tomb to resize"`
            res=$?
            _zenques "Is your tomb closed?"
       -    case $? in
       -        1)
       -            _zenwarn "gtomb" "Please close the tomb before resizing."
       -            exec _main
       -            ;;
       -    esac
       -    case $res in
       -        0)
       -            tombsize=`_zenentry "New tomb size" "Enter the new size of your tomb in MiB. Must be higher than the current size." "100"`
       -
       -            if [[ -z tombsize ]]; then
       -                _zenotif "gtomb" "Cancelled"
       -            fi
        
       -            re='^[0-9]+$'
       -            if ! [[ $tombsize =~ $re ]]; then
       -                _zenerr "Error" "Please choose a valid number."
       -                exec _main
       -            elif [[ -z $tombsize ]]; then
       -                _info "gtomb" "Cancelled"
       -                exec _main
       -            fi
       +        [[ $? = 0 ]] || { _zenwarn "gtomb" "Please close the tomb before resizing." ; exec _main }
       +
       +        [[ $res = 0 ]] || exec _main
       +
       +        tombsize=`_zenentry "New tomb size" "Enter the new size of your tomb in MiB. Must be higher than the current size." "100"`
       +        [[ -n $tombsize ]] || _zenotif "gtomb" "Cancelled"
        
       -            res=$?
       -            case $res in
       -                0)
       -                    keyfile=`_fsel "Choose according keyfile"`
       -                    res=$?
       -                    case $res in
       -                        0)
       -                            _sudo
       -                            "$TOMBPATH" resize "$tombname" -s "$tombsize" -k "$keyfile" | \
       -                                _zenprognc "Resizing tomb." "Please wait while your tomb is being resized..."
       -                            _info "Success" "Tomb resized successfully!"
       -                            exec _main
       -                            ;;
       -                        1)
       -                            exec _main
       -                            ;;
       -                    esac
       -                    ;;
       -                1)
       -                    exec _main
       -                    ;;
       -            esac
       -            ;;
       -        1)
       -            exec _main
       -            ;;
       -    esac
       +        re='^[0-9]+$'
       +        if ! [[ $tombsize =~ $re ]]; then
       +                _zenerr "Error" "Please choose a valid number."
       +                exec _main
       +        elif [[ -z $tombsize ]]; then
       +                _info "gtomb" "Cancelled"
       +                exec _main
       +        fi
       +
       +        [[ $? = 0 ]] || exec _main
       +
       +        keyfile=`_fsel "Choose according keyfile"`
       +        [[ $? = 0 ]] || exec _main
       +
       +        _sudo
       +        "$TOMBPATH" resize "$tombname" -s "$tombsize" -k "$keyfile" | \
       +                _zenprognc "Resizing tomb." "Please wait while your tomb is being resized..."
       +        _info "Success" "Tomb resized successfully!"
       +        exec _main
        }
        # }}}
        
        # {{{ passwd - Change existing key's passphrase
        function _passwd {
            keyfile=`_fsel "Choose a keyfile"`
       -    res=$?
       -    case $res in
       -        0)
       -            "$TOMBPATH" passwd -k "$keyfile" | \
       -                _zenprognc "Changing passphrase" "Please wait while your key's passphrase is being changed..."
       -            _info "Success" "$keyfile passphrase changed successfully!"
       -            exec _main
       -            ;;
       -        1)
       -            exec _main
       -            ;;
       -    esac
       +        [[ $? = 0 ]] || exec _main
       +
       +        "$TOMBPATH" passwd -k "$keyfile" | \
       +                _zenprognc "Changing passphrase" "Please wait while your key's passphrase is being changed..."
       +
       +        _info "Success" "$keyfile passphrase changed successfully!"
       +        exec _main
        }
        # }}}
        
        # {{{ setkey - Change a tomb's keyfile
        function _setkey {
            tombname=`_fsel "Choose a tomb to change its keyfile"`
       -    res=$?
       -    case $res in
       -        0)
       -            keyfile=`_fsel "Chosse your tomb's old keyfile"`
       -            res=$?
       -            case $res in
       -                0)
       -                    newkey=`_fsel "Choose your tomb's new keyfile"`
       -                    res=$?
       -                    case $res in
       -                        0)
       -                            _sudo
       -                            "$TOMBPATH" setkey -k "$newkey" "$keyfile" "$tombname" | \
       -                                _zenprognc "Changing key" "Please wait while your tomb's key is being changed..."
       -                            _info "Success" "$tombname keyfile successfully changed! Now using $newkey"
       -                            exec _main
       -                            ;;
       -                        1)
       -                            exec _main
       -                            ;;
       -                    esac
       -                    ;;
       -                1)
       -                    exec _main
       -                    ;;
       -            esac
       -            ;;
       -        1)
       -            exec _main
       -            ;;
       -    esac
       +        [[ $? = 0 ]] || exec _main
       +
       +        keyfile=`_fsel "Chosse your tomb's old keyfile"`
       +         [[ $? = 0 ]] || exec _main
       +
       +        newkey=`_fsel "Choose your tomb's new keyfile"`
       +        [[ $? = 0 ]] || exec _main
       +
       +        _sudo
       +    "$TOMBPATH" setkey -k "$newkey" "$keyfile" "$tombname" | \
       +                _zenprognc "Changing key" "Please wait while your tomb's key is being changed..."
       +
       +        _info "Success" "$tombname keyfile successfully changed! Now using $newkey"
       +    exec _main
        }
        # }}}
        
       t@@ -840,27 +715,16 @@ function _setkey {
        function _engrave {
            which qrencode || _zenwarn "Warning" "qrencode is not installed. Install it and try again"
            keyfile=`_fsel "Choose a keyfile to engrave"`
       -    res=$?
       -    case $res in
       -        0)
       -            jpegfile=`_fsave "Choose where to save your keyfile (PNG format)"`
       -            res=$?
       -            case $res in
       -                0)
       -                    awk '/^-----/ {next}; /^Version/ {next}; {print $0}' $keyfile \
       -                        | qrencode --size 4 --level H --casesensitive -o $jpegfile
       -                    _info "Success" "QR code generated in $jpegfile"
       -                    exec _main
       -                    ;;
       -                1)
       -                    exec _main
       -                    ;;
       -            esac
       -            ;;
       -        1)
       -            exec _main
       -            ;;
       -    esac
       +        [[ $? = 0 ]] || exec _main
       +
       +        jpegfile=`_fsave "Choose where to save your keyfile (PNG format)"`
       +        [[ $? = 0 ]] || exec _main
       +
       +        awk '/^-----/ {next}; /^Version/ {next}; {print $0}' $keyfile \
       +                | qrencode --size 4 --level H --casesensitive -o $jpegfile
       +
       +        _info "Success" "QR code generated in $jpegfile"
       +        exec _main
        }
        # }}}
        
       t@@ -868,26 +732,14 @@ function _engrave {
        function _bury {
            which steghide || _zenwarn "Warning" "steghide is not installed. Install it and try again"
            keyfile=`_fsel "Choose keyfile"`
       -    res=$?
       -    case $res in
       -        0)
       -            jpegfile=`_fsel "Choose JPEG file"`
       -            res=$?
       -            case $res in
       -                0)
       -                    "$TOMBPATH" bury -k "$keyfile" "$jpegfile"
       -                    _info "Success" "Your key is now hidden in $jpegfile"
       -                    exec _main
       -                    ;;
       -                1)
       -                    exec _main
       -                    ;;
       -            esac
       -            ;;
       -        1)
       -            exec _main
       -            ;;
       -    esac
       +        [[ $? = 0 ]] || exec _main
       +
       +        jpegfile=`_fsel "Choose JPEG file"`
       +        [[ $? = 0 ]] || exec _main
       +
       +        "$TOMBPATH" bury -k "$keyfile" "$jpegfile"
       +        _info "Success" "Your key is now hidden in $jpegfile"
       +        exec _main
        }
        # }}}
        
       t@@ -895,32 +747,20 @@ function _bury {
        function _exhume {
            which steghide || _zenwarn "Warning" "steghide is not installed. Install it and try again"
            jpegfile=`_fsel "Choose JPEG file"`
       -    res=$?
       -    case $res in
       -        0)
       -            keyfile=`_fsave "Choose where to extract your key"`
       -            res=$?
       -            case $res in
       -                0)
       -                    "$TOMBPATH" exhume -k "$keyfile" "$jpegfile"
       -                    _info "Success" "Your keyfile is extracted to $keyfile"
       -                    exec _main
       -                    ;;
       -                1)
       -                    exec _main
       -                    ;;
       -            esac
       -            ;;
       -        1)
       -            exec _main
       -            ;;
       -    esac
       +        [[ $? = 0 ]] || exec _main
       +
       +        keyfile=`_fsave "Choose where to extract your key"`
       +        [[ $? = 0 ]] || exec _main
       +
       +        "$TOMBPATH" exhume -k "$keyfile" "$jpegfile"
       +        _info "Success" "Your keyfile is extracted to $keyfile"
       +        exec _main
        }
        # }}}
        
        # {{{ index - index the contents of open tombs
        function _index {
       -    which locate || _zenwarn "Warning" "mlocate is not installed. Install it and try again" 
       +    which locate || _zenwarn "Warning" "mlocate is not installed. Install it and try again"
            "$TOMBPATH" index | _zenprognc "Indexing" "Please wait while the open tombs are being indexed..."
            _info "Success" "Tombs indexed!"
            exec _main
       t@@ -930,33 +770,36 @@ function _index {
        # {{{ search - searches the contents of indexed tombs
        function _search {
            strings=""
       -    function _searchstring {
       -        srchstring=`_zenentry "Search" "Enter an argument to search. Cancel to finish."`
       -        res=$?
       -        strings="$strings $srchstring"
       -        
       -        if [[ $res == "1" ]]; then
       -            tombtmp="/tmp/tombtmp"
       -            _info "Success" "Search complete!"
       -            "$TOMBPATH" search "$strings" > $tombtmp
       -                zenity \
       -                    --text-info \
       -                    --width=800 --height=640 \
       -                    --title="Search results" \
       -                    --filename=$tombtmp
       -        else
       -            _searchstring
       -        fi
       -    }
            _searchstring
            exec _main
        }
       +
       +function _searchstring {
       +        srchstring=`_zenentry "Search" "Enter an argument to search. Cancel to finish."`
       +        res=$?
       +        strings="$strings $srchstring"
       +
       +        if [[ $res = 1 ]]; then
       +                tombtmp="/tmp/tombtmp"
       +                _info "Success" "Search complete!"
       +                "$TOMBPATH" search "$strings" > $tombtmp
       +                        zenity \
       +                                --text-info \
       +                                --width=800 --height=640 \
       +                                --title="Search results" \
       +                                --filename=$tombtmp
       +        else
       +                _searchstring
       +        fi
       +}
       +
       +
        # }}}
        
        function _ { _clean } # I like cleaning :)
        
       -if [ ! -x $TOMBPATH ]; then
       +[[ -x $TOMBPATH ]] || {
            _zenwarn "Warning" "Tomb binary is not executable or doesn't exist in the current path. Install it or edit the script to point to the correct path."
       -else
       -    _main
       -fi
       +        exit 1 }
       +
       +_main