ref: 37c579604589f48468c585a2f7ca6e3aa7839da6
parent: 56e57d5db5b92a82dbba0469ba483ac668d34b2e
author: cinap_lenrek <cinap_lenrek@flatbox.9hal>
date: Fri Mar 9 18:10:17 EST 2012
tap: trace all pipes
--- /dev/null
+++ b/rc/bin/tap
@@ -1,0 +1,45 @@
+#!/bin/rc
+
+v=()
+
+fn otherqid {+ x=`{echo $1 | sed 's/[12]$//'}+ switch($1){+ case $x^1
+ echo $x^2
+ case $x^2
+ echo $x^1
+ }
+}
+
+fn traceqid {+ while(! ~ $#* 0){+ echo '['$2']' $1
+ tracepid `{grep -n `{otherqid $1} /proc/*/fd | sed 's!^/proc/([^/]+)/.*!\1!g'} \+ | sed 's/^/ /g'
+ shift
+ shift
+ }
+}
+
+fn tracepid {+ while(! ~ $#* 0){+ echo $1 `{cat /proc/$1/args >[2]/dev/null}+ switch($1){+ case $v
+ echo ' ...'
+ case *
+ v=($1 $v)
+ traceqid `{awk '/\#\|\/data1?$/{q=substr($5,2);print q" "$1}' /proc/$1/fd} \+ | sed 's/^/ /g'
+ }
+ shift
+ }
+}
+
+if(~ $#* 0){+ echo 'Usage: ' $0 '[ pid ... ]' >[1=2]
+ exit usage
+}
+
+tracepid $*
--
⑨