From 9e5592bb02e060bd416a0e82c9e4781594308199 Mon Sep 17 00:00:00 2001 From: Michael Janczyk Date: Fri, 21 Apr 2006 17:06:48 +0000 Subject: new Xdialog, rightcheck disabled because 'test' sux git-svn-id: http://svn.openslx.org/svn/openslx/ld4@194 95ad53e4-c205-0410-b2fa-d234c58c8868 --- vmware/runvmware | 96 ++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 66 insertions(+), 30 deletions(-) (limited to 'vmware/runvmware') diff --git a/vmware/runvmware b/vmware/runvmware index d8fe7e6e..33a15976 100755 --- a/vmware/runvmware +++ b/vmware/runvmware @@ -4,10 +4,10 @@ # X Stations (v4) # # Author(s): Dirk von Suchodoletz , 18-03-2006 -# Michael Janczyk , 13-04-2006 +# Michael Janczyk , 21-04-2006 # Copyright: (c) 2003, 2006 - RZ Universitaet Freiburg # -version=pre0.14; last_changes=13-04-06 +version=0.14a; last_changes=21-04-06 ################################################################################ @@ -180,6 +180,10 @@ vmdir="/var/lib/vmware" vmtempl="${vmdir}/templ" # .desktop files directory vmsessions="${vmdir}/vmsessions" +desktops= +desktopsnr= +execute=() +menu= # special Variables confver=8 hver=4 @@ -214,7 +218,6 @@ include= debug=0 inter= comdef= -args= @@ -314,30 +317,52 @@ checkalias () { x_dialog () { - desktops=( `ls ${vmsessions} 2>/dev/null | sed -e "s,.desktop,,"` ) - desktopsnr=$(echo "${#vmsessions[*]}") + desktops=( `ls ${vmsessions} | grep -x ".*desktop" 2>/dev/null` ) + desktopsnr=$(echo "${#desktops[*]}") (( args=0 )) + declare -i i=0 + while [ "${desktopsnr}" -gt "${args}" ]; do - execute=$(grep -m 1 -i "exec" ${vmsessions[${args}]} \ + # exec in .desktop + execute[${i}]=$(grep -m 1 -i "exec" ${vmsessions}/${desktops[${args}]} \ | awk -F "=" '{print $2}') - executenam=$(grep -m 1 -i "name" ${vmsessions[${args}]} \ + menu="$menu \"\${execute[${i}]}\"" + i=${i}+1 + + # name in .desktop + execute[${i}]=$(grep -m 1 -i "name" ${vmsessions}/${desktops[${args}]} \ | awk -F "=" '{print $2}') - executecom=$(grep -m 1 -i "comment" ${vmsessions[${args}]} \ + execute[${i}]=${execute[${i}]:-`echo ${execute[${i}-1]} | sed -e "s,-, ,g"`} + menu="$menu \"\${execute[${i}]}\"" + i=${i}+1 + + # comment in .desktop + execute[${i}]=$(grep -m 1 -i "comment" ${vmsessions}/${desktops[${args}]} \ | awk -F "=" '{print $2}') - menu="${menu} ${execute} ${executenam:-${execute}} \ - ${executecom:-${executenam:-${execute}}}" + execute[${i}]=${execute[${i}]:-"No comment"} + menu="$menu \"\${execute[${i}]}\"" + i=${i}+1 + (( args=${args}+1 )) done # --stderr because of 1>/dev/null - Xdialog --title "VMware Image Menu" \ + # echoing to file because Xdialog sux when used w/ quotes + echo -e "Xdialog --title \"VMware Image Menu\" \ + --screen-center \ + --fill \ + --no-wrap \ --stderr \ --no-tags \ - --ok-label "Run Image" \ - --cancel-label "Abort Runvmware" \ + --ok-label \"START\" \ --item-help \ - --menubox "Please choose the image you would like to run:" 24 51 6 \ - ${menu} 1>/dev/null + --menubox \"Please choose the image you would like to run:\" 35 80 0 \ + $menu 1>/dev/null" \ + > ${tmpdir}/Xdialog + +. ${tmpdir}/Xdialog +rm -f ${tmpdir}/Xdialog + } @@ -349,12 +374,9 @@ filecheck () { # check if link if [ -L "${diskfile}" ]; then - writelog "Vmware Image Problem:\c" 0 1 - writelog "\tThe image you've specified is a link.\n" 0 1 - writelog "\tContinuing to start VMware, but it may cause problems!\n" 0 0 - # take link target - rightsfile=$(ls -lh ${diskfile} 2>&1 | awk -F "->" '{print $2}') + rightsfile=$(ls -lh ${diskfile} 2>&1 | awk -F "-> *" '{print $2}') + rightsfile=${vmdir}/${rightsfile} filecheck=$(LANG=us ls -lh ${rightsfile} 2>&1) fi @@ -370,14 +392,28 @@ filecheck () { fi # readable? - if ! [ -r "${diskfile}" ]; then # ${rightsfile} see above - writelog "Vmware Image Problem:\c" 0 1 - writelog "\tThe image you've specified has wrong rights." 0 1 - writelog "Filecheck says:\t\t`echo ${filecheck} \ - | awk '{print $1" "$3" "$4}'` ${rightsfile}" 0 1 - writelog "Hint:\t\t\tChange rights with: chmod a+r ${rightsfile}\n" 0 0 - exit 1 - fi +# if [ `/bin/test -r "${diskfile}" >/dev/null 2>&1 \ +# || /usr/bin/test -r "${diskfile}" >/dev/null 2>&1` ]; then +# writelog "Vmware Image Problem:\c" 0 1 +# writelog "\tThe image you've specified has wrong rights." 0 1 +# writelog "Filecheck says:\t\t`echo ${filecheck} \ +# | awk '{print $1" "$3" "$4}'` ${rightsfile}" 0 1 +# writelog "Hint:\t\t\tChange rights with: chmod a+r ${rightsfile}\n" 0 0 +# exit 1 +# fi +# + # writable (for persistent-mode)? +# if [ `/bin/test -w "${diskfile}" >/dev/null 2>&1 \ +# || /usr/bin/test -w "${diskfile}" >/dev/null 2>&1` ] \ +# && [ "${np}" = "independent-persistent" ]; then +# writelog "Vmware Image Problem:\c" 0 1 +# writelog "\tThe image you've specified has wrong rights." 0 1 +# writelog "Filecheck says:\t\t`echo ${filecheck} \ +# | awk '{print $1" "$3" "$4}'` ${rightsfile}" 0 1 +# writelog "Hint:\t\t\tUse nonpersistent-mode or change rights to rw" 0 0 +# exit 1 +# fi + } @@ -598,7 +634,7 @@ writelog "\tCD-ROM_1=${cdr_1}\n\tCD-ROM_2=${cdr_2}\n" 0 1 if [ -n "${inter}" ]; then writelog "Starting interactive mode...\c" 0 0 - menutest=$(ls ${vmsessions} 2>/dev/null | wc -l) + menutest=$(ls ${vmsessions} | grep -x ".*desktop" 2>/dev/null | wc -l) # check for session files if [ "${menutest}" = "0" ]; then @@ -609,7 +645,7 @@ if [ -n "${inter}" ]; then # check for Xdialog if ! [ `which Xdialog 2>/dev/null` ]; then - writelog "\rXdialog not found!\t\t" 0 99 + writelog "\rXdialog not found! " 0 99 writelog "Please install Xdialog for interactive mode, \c" 0 0 writelog "or use options -o/-s.\n" 0 0 exit 1 -- cgit v1.2.3-55-g7522