X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=rc%2Fbin%2Ftap;h=ee40f0b9591afff4e6c41c63dc8f76e5495662db;hb=af95aa431d6e511355a6eb953ab7845f94c0e2d7;hp=277902bf719c3ff35e0d12faa425babb3b2e637e;hpb=7b368832344d8e7c68065f10323aa239eb0f3a8d;p=plan9front.git diff --git a/rc/bin/tap b/rc/bin/tap index 277902bf7..ee40f0b95 100755 --- a/rc/bin/tap +++ b/rc/bin/tap @@ -1,6 +1,12 @@ #!/bin/rc +rfork e -v=() +if(~ $#* 0){ + echo 'usage:' $0 '[ pid ... ]' >[1=2] + exit usage +} + +f=/proc/*/fd fn otherqid { x=`{echo $1 | sed 's/[12]$//'} @@ -14,9 +20,10 @@ fn otherqid { fn traceqid { while(! ~ $#* 0){ - echo '['$2']' $3 $1 - tracepid `{grep -n `{otherqid $1} /proc/*/fd | sed 's!^/proc/([^/]+)/.*!\1!g'} \ - | sed 's/^/ /g' + echo $t '['$2']' $3 $1 + t=(' ' $t) + tracepid `{grep -n `{otherqid $1} $f >[2]/dev/null | sed 's!^/proc/([^/]+)/.*!\1!g'} + t=$t(2-) shift shift shift @@ -25,22 +32,25 @@ fn traceqid { fn tracepid { while(! ~ $#* 0){ - echo $1 `{cat /proc/$1/args >[2]/dev/null} - switch($1){ - case $v - echo ' ...' - case * - v=($1 $v) - traceqid `{awk '/\|/{q=substr($5,2);print q" "$1" "$10}' /proc/$1/fd} \ - | sed 's/^/ /g' + a=ap$1 + v=av$1 + if(~ $$v $1){ + echo $t $1 $$a ' ...' + } + if not { + $v=$1 + $a=`{cat /proc/$1/args >[2]/dev/null} + if(~ $$a ''){ + s=`{cat /proc/$1/status >[2]/dev/null} + $a=$s(1) + } + echo $t $1 $$a + t=(' ' $t) + traceqid `{awk '/\|/{q=substr($5,2);print q" "$1" "$10}' /proc/$1/fd >[2]/dev/null} + t=$t(2-) } shift } } -if(~ $#* 0){ - echo 'Usage: ' $0 '[ pid ... ]' >[1=2] - exit usage -} - tracepid $*