commit a752005271e1989d4c15133d0ba7136fdf2c3e11
parent ec43b959df9793963f595f3de8aee9e08944d904
Author: Jaromil <jaromil@dyne.org>
Date:   Sun,  4 Sep 2011 09:36:40 +0200
tomb-status launcher in a command 'status'
Diffstat:
| M | src/tomb |  |  | 54 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++ | 
1 file changed, 54 insertions(+), 0 deletions(-)
diff --git a/src/tomb b/src/tomb
@@ -1107,6 +1107,58 @@ list_tombs() {
     done
 }
 
+launch_status() {
+    # calculates the correct arguments to launch tomb-status tray
+    # applet; it takes the tomb name as an argument and can be
+    # launched after a successful tomb mount.
+
+    which tomb-status > /dev/null
+    if [ $? != 0 ]; then
+	error "Cannot find tomb-status binary, operation aborted."
+	return 1
+    fi
+
+    if ! [ $DISPLAY ]; then
+	error "No active X display found, operation aborted."
+	error "Status launches a graphical tray applet, you need X running."
+	return 1
+    fi
+
+    # check argument. use single tomb mounted if no argument
+    # abort if more than one tomb is mounted.
+    if ! [ $1 ]; then
+	tombs=`find /dev/mapper -name 'tomb.*'`
+	how_many_tombs=`wc -w <<< "$tombs"`
+	if [[ "$how_many_tombs" == "0" ]]; then
+	    error "There is no open tomb, status cannot be launched"
+	    return 1
+	elif [[ "$how_many_tombs" == "1" ]]; then
+	        #mapper=`find /dev/mapper -name 'tomb.*'`
+	    tombname=`find /dev/mapper -name "tomb.*"`
+	    tombname=`basename $tombname | cut -d. -f2`
+	    notice "launching status for tomb $tombname"
+	else
+	    error "Too many tombs mounted, please specify which one"
+	    list_tombs
+	    return 0
+	fi
+    else
+	# name was specified on command line
+	tombname=$1
+	ls /dev/mapper | grep "^tomb.${tombname}.*" > /dev/null
+	if [ $? != 0 ]; then
+	    error "Cannot find any tomb named $tombname being open, operation aborted."
+	    return 1
+	fi
+    fi
+
+    # finally we launch
+    tombmap=`mount -l | awk "/\[${tombname}\]$/"' { print $1 } '`
+    tombmount=`mount -l | awk "/\[${tombname}\]$/"' { print $3 } '`
+    tomb-status $tombmap $tombname $tombmount &!
+    return 0
+}
+
 # install mime-types, bells and whistles for the desktop
 # see http://developers.sun.com/solaris/articles/integrating_gnome.html
 # and freedesktop specs
@@ -1248,6 +1300,7 @@ main() {
     subcommands_opts[askpass]=""
     subcommands_opts[mktemp]=""
     subcommands_opts[source]=""
+    subcommands_opts[status]=""
     ### Detect subcommand
     local -aU every_opts #every_opts behave like a set; that is, an array with unique elements
     for optspec in $subcommands_opts$main_opts; do
@@ -1325,6 +1378,7 @@ main() {
 	  close) check_priv ; umount_tomb ${CMD2} ;;
 	   slam) check_priv ; SLAM=1; umount_tomb ${CMD2} ;;
 	   list) list_tombs ${CMD2} ;;
+	 status) launch_status ${CMD2} ;;
 	   help) usage ;;
 	   bury) if [ "$STEGHIDE" = 0 ]; then
 		    error "steghide not installed. Cannot bury your key"