# HG changeset patch # User wenzelm # Date 883427962 -3600 # Node ID 5f629ee2502bab7cdcb98743635bcd5d3935365b # Parent db49bac6256a0c7d1dd1e7c1645c0c7d073cc25e feed isabelle session; diff -r db49bac6256a -r 5f629ee2502b lib/scripts/feeder --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/scripts/feeder Mon Dec 29 21:39:22 1997 +0100 @@ -0,0 +1,87 @@ +#!/bin/bash +# +# $Id$ +# +# feeder - feed isabelle session + + +## diagnostics + +PRG=$(basename $0) +DIR=$(dirname $0) + +function usage() +{ + echo + echo "Usage: $PRG [OPTIONS]" + echo + echo " Options are:" + echo " -h TEXT head text" + echo " -i ignore INT signal" + echo " -p emit my pid" + echo " -q do not pipe stdin" + echo " -s filter symbols" + echo " -t TEXT tail text" + echo + echo " Output texts (pid, head, stdin, tail), then wait to be terminated." + echo + exit 1 +} + +function fail() +{ + echo "$1" >&2 + exit 2 +} + + +## process command line + +# options + +HEAD="" +NOINT="" +EMITPID="" +QUIT="" +SYMBOLS="" +TAIL="" + +while getopts "h:ipqst:" OPT +do + case "$OPT" in + h) + HEAD="$OPTARG" + ;; + i) + NOINT=true + ;; + p) + EMITPID=true + ;; + q) + QUIT=true + ;; + s) + SYMBOLS=true + ;; + t) + TAIL="$OPTARG" + ;; + \?) + usage + ;; + esac +done + +shift $(($OPTIND - 1)) + + +# args + +[ $# -ne 0 ] && { echo "Bad args: $*"; usage; } + + + +## main + +exec perl -w $DIR/feeder.pl "$HEAD" "$NOINT" "$EMITPID" "$QUIT" "$SYMBOLS" "$TAIL" diff -r db49bac6256a -r 5f629ee2502b lib/scripts/feeder.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/scripts/feeder.pl Mon Dec 29 21:39:22 1997 +0100 @@ -0,0 +1,151 @@ +# +# $Id$ +# +# feeder.pl - feed isabelle session +# + +# args + +($head, $noint, $emitpid, $quit, $symbols, $tail) = @ARGV; + + +# symbols translation table + +%tab = ( +#GENERATED TEXT FOLLOWS - Do not edit! + "\xa0", "\\", + "\xa1", "\\", + "\xa2", "\\", + "\xa3", "\\", + "\xa4", "\\", + "\xa5", "\\", + "\xa6", "\\", + "\xa7", "\\", + "\xa8", "\\", + "\xa9", "\\", + "\xaa", "\\", + "\xab", "\\", + "\xac", "\\", + "\xad", "\\", + "\xae", "\\", + "\xaf", "\\", + "\xb0", "\\", + "\xb1", "\\", + "\xb2", "\\", + "\xb3", "\\", + "\xb4", "\\", + "\xb5", "\\", + "\xb6", "\\", + "\xb7", "\\", + "\xb8", "\\", + "\xb9", "\\", + "\xba", "\\", + "\xbb", "\\", + "\xbc", "\\", + "\xbd", "\\", + "\xbe", "\\", + "\xbf", "\\", + "\xc0", "\\", + "\xc1", "\\", + "\xc2", "\\", + "\xc3", "\\", + "\xc4", "\\", + "\xc5", "\\", + "\xc6", "\\", + "\xc7", "\\", + "\xc8", "\\", + "\xc9", "\\", + "\xca", "\\", + "\xcb", "\\", + "\xcc", "\\", + "\xcd", "\\", + "\xce", "\\", + "\xcf", "\\", + "\xd0", "\\", + "\xd1", "\\", + "\xd2", "\\", + "\xd3", "\\", + "\xd4", "\\", + "\xd5", "\\", + "\xd6", "\\", + "\xd7", "\\", + "\xd8", "\\", + "\xd9", "\\", + "\xda", "\\", + "\xdb", "\\", + "\xdc", "\\", + "\xdd", "\\", + "\xde", "\\", + "\xdf", "\\", + "\xe0", "\\", + "\xe1", "\\", + "\xe2", "\\", + "\xe3", "\\", + "\xe4", "\\", + "\xe5", "\\", + "\xe6", "\\", + "\xe7", "\\", + "\xe8", "\\", + "\xe9", "\\", + "\xea", "\\", + "\xeb", "\\", + "\xec", "\\", + "\xed", "\\", + "\xee", "\\", + "\xef", "\\", + "\xf0", "\\", + "\xf1", "\\", + "\xf2", "\\", + "\xf3", "\\", + "\xf4", "\\", + "\xf5", "\\", + "\xf6", "\\", + "\xf7", "\\", + "\xf8", "\\", + "\xf9", "\\", + "\xfa", "\\", + "\xfb", "\\", + "\xfc", "\\", + "\xfd", "\\", + "\xfe", "\\", + "\xff", "\\" +#END OF GENERATED TEXT +); + + +# setup hangup handler + +sub hangup { + exit(0); +} + +$SIG{'HUP'} = "hangup"; + + +# main + +#bulletproof session +$noint && ($SIG{INT} = "IGNORE"); + +#buffer lines +$| = 1; + + +$emitpid && (print $$, "\n"); + +$head && (print "$head", "\n"); + +if (!$quit) { + while () { + $symbols && (s/([\xa1-\xff])/\\$tab{$1}/g); + print; + } +} + +$tail && (print "$tail", "\n"); + + +# wait forever, expecting to be terminated by HUP + +close STDOUT; +sleep;