slitaz-tools rev 249

tazdialog: simplify shell parser stuff
author Pascal Bellard <pascal.bellard@slitaz.org>
date Thu Jul 17 22:18:29 2008 +0000 (2008-07-17)
parents 7dd29bc8b4ca
children 507c5860528f
files tinyutils/tazdialog
line diff
     1.1 --- a/tinyutils/tazdialog	Thu Jul 17 14:39:29 2008 +0000
     1.2 +++ b/tinyutils/tazdialog	Thu Jul 17 22:18:29 2008 +0000
     1.3 @@ -11,6 +11,40 @@
     1.4  echo -e $1 | sed -e 's/\\Z.//g' | tr 'àâäçéèêëîïûü' 'aaaceeeeiiuu'
     1.5  }
     1.6  
     1.7 +fake_gauge()
     1.8 +{
     1.9 +[ -n "$percent" ] && echo $percent
    1.10 +while read line; do
    1.11 +	case "$line" in
    1.12 +	[0-9]*) echo $line;;
    1.13 +	*);;
    1.14 +	esac
    1.15 +done
    1.16 +echo 100
    1.17 +}
    1.18 +
    1.19 +fake_dialog()
    1.20 +{
    1.21 +if [ -n "$gauge" ]; then
    1.22 +	fake_gauge | gtkdialog --center --program=BOX
    1.23 +else
    1.24 +	gtkdialog --center --program=BOX
    1.25 +fi 2> /dev/null | while read line; do
    1.26 +	case "$line" in
    1.27 +	*OUTPUT*) eval $line
    1.28 +		echo "$OUTPUT" 1>&2 ;;
    1.29 +	*CHECK*true*) line=${line%=*}; line=${line#CHECK}
    1.30 +		[ $line -eq 0 ] || shift $((3 * $line))
    1.31 +		echo -n "\"$1\" " 1>&2;;
    1.32 +	*LIST=*) eval $line; set -- $LIST
    1.33 +		echo "$1" 1>&2 ;;
    1.34 +	*EXIT*abort*) echo 255;;
    1.35 +	*EXIT*) eval $line
    1.36 +		echo $EXIT ;;
    1.37 +	esac
    1.38 +done
    1.39 +}
    1.40 +
    1.41  if [ -z "$XAUTHORITY" ]; then
    1.42  	[ -n "$TEXTDIALOG" ] || TEXTDIALOG="dialog"
    1.43  	export DIALOG=$TEXTDIALOG
    1.44 @@ -179,28 +213,4 @@
    1.45  </window>
    1.46  "
    1.47  export BOX
    1.48 -status=$(if [ -n "$gauge" ]; then
    1.49 -	([ -n "$percent" ] && echo $percent
    1.50 -	while read line; do
    1.51 -		case "$line" in
    1.52 -		[0-9]*) echo $line;;
    1.53 -		*);;
    1.54 -		esac
    1.55 -	done ; echo 100) | gtkdialog --center --program=BOX
    1.56 -else
    1.57 -	gtkdialog --center --program=BOX
    1.58 -fi 2> /dev/null | while read line; do
    1.59 -	case "$line" in
    1.60 -	*OUTPUT*) eval $line
    1.61 -		echo "$OUTPUT" 1>&2 ;;
    1.62 -	*CHECK*true*) line=${line%=*}; line=${line#CHECK}
    1.63 -		[ $line -eq 0 ] || shift $((3 * $line))
    1.64 -		echo -n "\"$1\" " 1>&2;;
    1.65 -	*LIST=*) eval $line; set -- $LIST
    1.66 -		echo "$1" 1>&2 ;;
    1.67 -	*EXIT*abort*) echo 255;;
    1.68 -	*EXIT*) eval $line
    1.69 -		echo $EXIT ;;
    1.70 -	esac
    1.71 -done)
    1.72 -exit $status
    1.73 +exit $(fake_dialog)