57 lines
803 B
Bash
Executable File
57 lines
803 B
Bash
Executable File
#!/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
|