--- toast-linux	2004/04/20 03:38:08	1.33
+++ toast-linux	2004/04/20 22:35:28	1.34
@@ -988,76 +988,80 @@
 --- FILE root/sbin/task ---
 #!/bin/sh
 
-cost="$1"
+start="`date +'%s'`"
+
+if [ "$1" = "init" ]; then
+  [ -n "$TASK_INIT" ] && exit 0
+  shift
+  TASK_INIT=1 exec "$@"
+fi
+
+estimate="$1"
 name="$2"
 shift 2
 
-dir="/var/run/tasks"
-tfile="$dir/total"
-cfile="$dir/current"
-lfile="$dir/list"
-log="$dir/log"
-ndir="$dir/names"
-ddir="$dir/done"
+dir="/var/run/task"
+list="$dir/LIST"
+file="$dir/$name"
 
-total=0
-[ -r "$tfile" ] && read total < "$tfile"
-
 if [ -n "$TASK_INIT" ]; then
-  nfile="$ndir/$name"
-  [ -r "$nfile" ] && exit 0
-  mkdir -p "$dir" "$ndir" "$ddir"
-  : > "$nfile"
-  let total="$total+$cost"
-  echo "$total" > "$tfile"
-  echo "$name" >> "$lfile"
-  echo "0" > "$cfile"
+  [ -r "$file" ] && exit 0
+  mkdir -p "$dir"
+  echo "$name $estimate" >> $list
+  : > "$file"
   exit 0
 fi
 
-dfile="$ddir/$name"
-[ -r "$dfile" ] && exit 0
+[ -s "$file" ] && exit 0
 
 out=""
 p() { out="$out$*"; }
-firstline=3
-lastline=25
-p '\33[H'
+firstline=4
+p '\33[s\33[H'
 line=""
-while read i; do
-  line="$line $i"
+etotal=0
+atotal=0
+esofar=0
+asofar=0
+while read n e; do
+  line="$line $n"
   if echo "$line" | egrep -q '.{79}'; then
     let firstline="1+$firstline"
     p '\33[K\12'
-    line=" $i"
+    line=" $n"
   fi
   p '\33[0;44m '
-  [ "$name" = "$i" ] && p '\33[0;1m'
-  p "$i"
+  if [ "$name" = "$n" ]; then
+    p '\33[0;1m'
+    esofar="$etotal"
+    asofar="$atotal"
+  fi
+  let etotal="$etotal+$e"
+  [ -s "$dir/$n" ] && read a < "$dir/$n" && let atotal="$atotal+$a"
+  p "$n"
   p '\33[0;44m'
-done < "$lfile"
-p '\33[K\12\16\33[1;33;43m'
-read current < "$cfile"
-let bar="$current*80/$total"
+done < "$list"
+p '\33[K\12\33[m'
+remain="???"
+if [ "$esofar" -gt 0 && "$asofar" -gt 0 ]; then
+  let remain="($etotal-$esofar)*$asofar/$esofar"
+  p "$remain seconds"
+let bar="$esofar*80/$etotal"
+p '\33[K\16\33[1;33;43m'
 while [ "$bar" -gt 0 ]; do
   p '0'
   let bar="$bar-1"
 done
-p '\17\33[K\33[m\33['"$firstline;$lastline"'r\33['"$lastline"'H'
+p '\17\33[K\33[m\33['"$firstline"'r\33[u'
 echo -ne "$out"
 
-start="`date +'%s'`"
 if ! "$@"; then
   echo -ne '\33[s\33[r\33[u'
   exit 1
 fi
 let elapsed="`date +'%s'`-$start"
-echo "$name $elapsed" >> $log
+echo "$elapsed" > $file
 
-: > "$dfile"
-let current="$current+$cost"
-echo "$current" > $cfile
-
 --- FILE root/sbin/setup ---
 #!/bin/sh -e
 
@@ -1717,7 +1721,7 @@
 export http_proxy=http://cli-03:3128/
 export ftp_proxy=http://cli-03:3128/
 
-[ -z "$TASK_INIT" ] && TASK_INIT=1 $0
+task init "$0"
 
 # preliminary figures:
 # network: 0 sec