tshow current directory - plan9port - [fork] Plan 9 from user space (HTM) git clone git://src.adamsgaard.dk/plan9port (DIR) Log (DIR) Files (DIR) Refs (DIR) README (DIR) LICENSE --- (DIR) commit 32a580f43cdd51e6b9bbeda91d905cecf3bd68ec (DIR) parent 604b5fcda415436a4a8e42fcf764c24ae2ca9ed5 (HTM) Author: rsc <devnull@localhost> Date: Sun, 23 Jul 2006 14:36:05 +0000 show current directory Diffstat: M INSTALL | 2 +- M dist/isum.awk | 51 +++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) --- (DIR) diff --git a/INSTALL b/INSTALL t@@ -116,5 +116,5 @@ if $doinstall; then echo " PLAN9=$PLAN9 export PLAN9" echo ' PATH=$PATH:$PLAN9/bin export PATH' fi -) 2>&1 | tee install.log | awk -f $PLAN9/dist/isum.awk | tee install.sum +) 2>&1 | tee install.log | awk -f $PLAN9/dist/isum.awk -v'copy='install.sum (DIR) diff --git a/dist/isum.awk b/dist/isum.awk t@@ -5,7 +5,29 @@ BEGIN { # print verbose cd = "" out = "/dev/stdout" + statuslen = 0 debug = 0 + updates = "/dev/stderr" +} + +function clearstatus( i) +{ + if(!updates) + return + for(i=0; i<statuslen; i++) + printf("\b \b") >updates + statuslen = 0 + fflush(updates) +} + +function status(s) +{ + if(!updates) + return + clearstatus() + printf(" %s ", s) >updates + statuslen = length(s)+5 + fflush(updates) } debug!=0 { print "# " $0 } t@@ -16,9 +38,14 @@ debug!=0 { print "# " $0 } /^\+\+ pwd/ { next } /^\* /{ + clearstatus() if(debug) print "% mark" print >out fflush(out) + if(copy){ + print >copy + fflush(copy) + } cmd = "" printtabs = 1 # print indented lines immediately following errors = 0 t@@ -26,8 +53,13 @@ debug!=0 { print "# " $0 } } /^ / && printtabs!=0 { + clearstatus() print >out fflush(out) + if(copy){ + print >copy + fflush(copy) + } next } t@@ -49,6 +81,15 @@ debug!=0 { print "# " $0 } if(verbose){ print >out fflush(out) + if(copy){ + print >copy + fflush(copy) + } + } + else{ + dir = $2 + sub(/;$/, "", dir) + status(dir) } cd = $0 "\n" cmd = "" t@@ -60,9 +101,14 @@ debug!=0 { print "# " $0 } } errors != 0 { + clearstatus() if(debug) print "% errors" printf "%s", cmd >out fflush(out) + if(copy){ + printf "%s", cmd >copy + fflush(copy) + } cmd = "" next } t@@ -87,10 +133,15 @@ errors != 0 { { # unexpected line + clearstatus() if(debug) print "% errors1" errors = 1 printf ">>> %s", cmd >out fflush(out) + if(copy){ + printf ">>> %s", cmd >copy + fflush(copy) + } cmd = "" }