######################################################################## # # # This software is part of the ast package # # Copyright (c) 1994-2011 AT&T Intellectual Property # # and is licensed under the # # Eclipse Public License, Version 1.0 # # by AT&T Intellectual Property # # # # A copy of the License is available at # # http://www.eclipse.org/org/documents/epl-v10.html # # (with md5 checksum b35adb5213ca9657e911e9befb180842) # # # # Information and Software Systems Research # # AT&T Research # # Florham Park NJ # # # # Glenn Fowler # # # ######################################################################## : convert command that operates on file args to pipeline filter command=filter tmp=/tmp/$command$$ suf= case `(getopts '[-][123:xyz]' opt --xyz; echo 0$opt) 2>/dev/null` in 0123) ARGV0="-a $command" USAGE=$' [-? @(#)$Id: filter (AT&T Labs Research) 2001-05-31 $ ] '$USAGE_LICENSE$' [+NAME?filter - run a command in stdin/stdout mode] [+DESCRIPTION?\bfilter\b runs \acommand\a in a mode that takes input from the \afile\a operands, or from the standard input if no \afile\a operands are specified, and writes the results to the standard output. It can be used to run commands like \bsplit\b(1), that normally modify \afile\a operands in-place, in pipelines. The \afile\a operands are not modified; \acommand\a is run on copies in \b/tmp\b.] command [ option ... ] [ file ... ] [+SEE ALSO?\bstrip\b(1)] ' ;; *) ARGV0="" USAGE="command [ option ... ] [ file ... ]" ;; esac usage() { OPTIND=0 getopts $ARGV0 "$USAGE" OPT '-?' exit 2 } while getopts $ARGV0 "$USAGE" OPT do case $OPT in *) usage ;; esac done shift `expr $OPTIND - 1` case $# in 0) usage ;; esac cmd=$1 while : do shift case $# in 0) break ;; esac case $1 in -*) cmd="$cmd $1" ;; *) break ;; esac done trap 'rm -f $tmp$suf' 0 1 2 3 15 case $# in 0) cat > $tmp $cmd $tmp ;; *) for file do suf=${file##*/} case $suf in *.*) suf=.${suf#*.} ;; *) suf= ;; esac cp $file $tmp$suf || exit 1 chmod u+rwx $tmp$suf || exit 1 $cmd $tmp$suf || exit 1 cat $tmp$suf rm -f $tmp$suf done ;; esac