aboutsummaryrefslogtreecommitdiffstats
path: root/examples/functions/coproc.bash
diff options
context:
space:
mode:
Diffstat (limited to 'examples/functions/coproc.bash')
-rw-r--r--examples/functions/coproc.bash108
1 files changed, 0 insertions, 108 deletions
diff --git a/examples/functions/coproc.bash b/examples/functions/coproc.bash
deleted file mode 100644
index 61dc8d7..0000000
--- a/examples/functions/coproc.bash
+++ /dev/null
@@ -1,108 +0,0 @@
-# coprocess.bash
-#
-# vi:set sts=2 sw=2 ai:
-#
-
-coprocess_pid=
-
-#
-# coprocess - Start, control, and end coprocesses.
-#
-function coprocess ()
-{
- while (( $# > 0 )) ; do
- case "$1" in
- #
- # coprocess close
- #
- c|cl|clo|clos|close)
- shift
- exec 61>&- 62<&-
- coprocess_pid=
- if [ "$1" = "-SIGPIPE" ] ; then
- # Only print message in an interactive shell
- case "$-" in
- *i*)
- echo 'SIGPIPE' >&2
- ;;
- esac
- return 1
- fi
- return 0
- ;;
-
- #
- # coprocess open
- #
- o|op|ope|open)
- shift
- local fifo="/var/tmp/coprocess.$$.$RANDOM"
-
- local cmd="/bin/bash"
- if (( $# > 0 )) ; then
- cmd="$@"
- fi
-
- mkfifo "$fifo.in" || return $?
- mkfifo "$fifo.out" || {
- ret=$?
- rm -f "$fifo.in"
- return $?
- }
-
- ( "$@" <$fifo.in >$fifo.out ; rm -f "$fifo.in" "$fifo.out" ) &
- coprocess_pid=$!
- exec 61>$fifo.in 62<$fifo.out
- return 0
- ;;
-
- #
- # coprocess print - write to the coprocess
- #
- p|pr|pri|prin|print)
- shift
- local old_trap=$(trap -p SIGPIPE)
- trap 'coprocess close -SIGPIPE' SIGPIPE
- if [ $# -eq 1 ] && [ "$1" = "--stdin" ] ; then
- cat >&61
- else
- echo "$@" >&61
- fi
- local ret=$?
- eval "$old_trap"
- return $ret
- ;;
-
- #
- # coprocess read - read from the coprocess
- #
- r|re|rea|read)
- shift
- local old_trap=$(trap -p SIGPIPE)
- trap '_coprocess_close -SIGPIPE' SIGPIPE
- builtin read "$@" <&62
- local ret=$?
- eval "$old_trap"
- return $ret
- ;;
-
- s|st|sta|stat|statu|status)
- if [ -z "$coprocess_pid" ] ; then
- echo 'no active coprocess'
- return 1
- else
- echo " coprocess is active [$coprocess_pid]"
- return 0
- fi
- ;;
-
- *)
- coprocess print "$@"
- return $?
- ;;
- esac
- shift
- done
- coprocess status
- return $?
-}