diff options
Diffstat (limited to 'contrib/mthr')
-rwxr-xr-x | contrib/mthr | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/contrib/mthr b/contrib/mthr new file mode 100755 index 0000000..8dd01d6 --- /dev/null +++ b/contrib/mthr @@ -0,0 +1,40 @@ +#!/bin/sh +# mthr [-a|-s|-p] MSGS... - select thread/subthread/parent of messages + +mode=1 +case "$1" in + -a) mode=1; shift;; + -s) mode=2; shift;; + -p) mode=3; shift;; +esac + +mseq : | awk -v mode=$mode ' +BEGIN { split("", parents) } +NR != FNR { exit } +{ + match($0, "^ *") + ind = RLENGTH +} +mode==1 && ind==0 { + if (sel) + for (i in thread) + print thread[i] + split("", thread) + sel = 0 +} +mode==1 { thread[length(thread)+1] = $0 } +mode==2 && ind <= dep { sel = 0 } +{ + for (i in ARGV) + if (substr($0, ind+1) == ARGV[i]) { + sel = 1 + dep = ind + } +} +mode==2 && sel { print } +mode==3 && sel { + print parents[ind-1] + sel = 0 +} +mode==3 {parents[ind] = $0 } +' - $(mseq $@) |