URI: 
       tnew tomb list command - tomb - the crypto undertaker
  HTML git clone git://parazyd.org/tomb.git
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 3ef639801915204ed8eb2f03bec63160464ac9cc
   DIR parent 25333c5bb09f126aca807903c35407c1b9dbcb3b
  HTML Author: Jaromil <jaromil@dyne.org>
       Date:   Mon,  9 May 2011 09:11:18 +0200
       
       new tomb list command
       
       Diffstat:
         M src/tomb                            |      63 +++++++++++++++++++++++++++++--
       
       1 file changed, 60 insertions(+), 3 deletions(-)
       ---
   DIR diff --git a/src/tomb b/src/tomb
       t@@ -441,7 +441,6 @@ mount_tomb() {
        
            # save date of mount in minutes since 1970
            mapdate=`date +%s`
       -    mapdate="`expr $mapdate / 60`"
        
            mapper="tomb.${tombname}.${mapdate}.`basename $nstloop`"
            keyname=`basename $tombkey | cut -d. -f1`
       t@@ -729,7 +728,7 @@ umount_tomb() {
                notice "Closing tomb $tombname mounted on $tombmount"
            fi
            # check if there are binded dirs and close them first
       -    tombmount_esc="`echo ${tombmount} | sed 's:\/:\\\/:g'`"
       +    tombmount_esc=`sed 's:\/:\\\/:g' <<< $tombmount `
            unbind=`mount | awk "/^$tombmount_esc.*bind/"' { print $3 }'`
            for b in ${(f)unbind}; do
                hook="`basename $b`"
       t@@ -791,6 +790,64 @@ umount_tomb() {
            return 0
        }
        
       +# list all tombs mounted in a readable format
       +list_tombs() {
       +    if [ $1 ]; then
       +        # list a specific tomb
       +        mounted_tombs=`mount -l |
       +    awk -vtomb="[$1]" '/^\/dev\/mapper\/tomb/ { if($7==tomb) print $1 ";" $3 ";" $5 ";" $6 ";" $7 }'`
       +    else
       +        # list all open tombs
       +        mounted_tombs=`mount -l |
       +    awk '/^\/dev\/mapper\/tomb/ { print $1 ";" $3 ";" $5 ";" $6 ";" $7 }'`
       +    fi
       +    # 1 = full mapper path
       +    # 2 = mountpont
       +    # 3 = filesystem
       +    # 4 = mount options
       +    # 5 = name
       +
       +    if ! [ $mounted_tombs ]; then
       +        if [ $1 ]; then
       +            notice "There seems to be no open tomb engraved as [${1}]"
       +        else
       +            notice "I can't see any open tomb, may they all rest in peace."
       +        fi
       +        return
       +    fi
       +
       +    
       +    for t in ${(f)mounted_tombs}; do
       +        mapper=`basename ${t[(ws:;:)1]}`
       +
       +        tombname=${t[(ws:;:)5]}
       +        tombmount=${t[(ws:;:)2]}
       +        tombfs=${t[(ws:;:)3]}
       +        tombfsopts=${t[(ws:;:)4]}
       +
       +        tombsince=`date --date=@${mapper[(ws:.:)3]} +%c`
       +        # breaking up such strings is good for translation
       +        echo -n $tombname
       +        echo -n " open on "
       +        echo -n $tombmount
       +        echo -n " using "
       +        echo -n "$tombfs $tombfsopts"
       +        echo -n " since "
       +        echo $tombsince
       +        
       +        # now check hooks
       +        mtomb=`sed 's:\/:\\\/:g' <<< $tombmount`
       +        mounted_hooks=`mount | awk "/^$mtomb/"' {print $1 ";" $3}'`
       +        for h in ${(f)mounted_hooks}; do
       +            echo -n $tombname
       +            echo -n " hooks "
       +            echo -n `basename ${h[(ws:;:)1]}`
       +            echo -n " on "
       +            echo ${h[(ws:;:)2]}
       +        done
       +    done
       +}
       +
        # install mime-types, bells and whistles for the desktop
        # see http://developers.sun.com/solaris/articles/integrating_gnome.html
        # and freedesktop specs
       t@@ -930,9 +987,9 @@ main () {
                  mount) check_priv ; mount_tomb  ;;
                   open) check_priv ; mount_tomb  ;;
                 umount) check_priv ; umount_tomb ${CMD2} ;;
       -        unmount) check_priv ; umount_tomb ${CMD2} ;;
                  close) check_priv ; umount_tomb ${CMD2} ;;
                   slam) check_priv ; SLAM=1; umount_tomb ${CMD2} ;;
       +           list) list_tombs ${CMD2} ;;
                   bury) if [ "$STEGHIDE" = 0 ]; then
                            error "steghide not installed. Cannot bury your key"
                            return 1