diff --git a/bin/ssam b/bin/ssam new file mode 100755 index 0000000..501cf9e --- /dev/null +++ b/bin/ssam @@ -0,0 +1,56 @@ +#!/bin/rc +# ssam - stream interface to sam +rfork e + +fn enosam { echo ssam: sam not found >[1=2] } +for(i in `{whatis sam}){ + if(test -x $i) + j=1 +} +if(~ $#j 0){ + enosam + exit enosam +} + +flagfmt='n,e script,f sfile' +args='[ file ... ]' +argv0=$0 +fn usage { echo usage: $argv0 '[ -n ] [ -e script ] [ -f sfile ] [ file ... ]' >[1=2] } +if(! ifs=() eval `{aux/getflags $*}){ + usage + exit usage +} + +if(~ $#flage 0 && ~ $#flagf 0) { + if(~ $#* 0) { + usage + exit usage + } + flage=$1 + shift +} + +if(~ $#TMPDIR 0) + TMPDIR=/tmp +if(~ $#user 0) + user=$USER +tmp=$TMPDIR/ssam.tmp.$user.$pid +cat $* >$tmp + +{ + # select entire file + echo ',{' + echo k + echo '}' + echo 0k + + # run scripts, print + if(! ~ $#flagf 0) + cat $flagf + if(! ~ $#flage 0) + echo $flage + if(~ $#flagn 0) + echo , +} | sam -d $tmp >[2]/dev/null + +rm -f $tmp