#!/bin/sh

#
# mdatools v0.3
# (w) 1996 by Michael 'Bytewurm' Weber, bytewurm@rising-systems.de
#
# created for Patrick Caulfields' mda-module, makes it easy to redirect 
# any output to a secondary MDA
#
# the way I coded things is not efficient, but transparent
# I don't think this neat tool should be FAST, it should be READABLE
#

#
# checkups first
#
if [ ! -c /dev/mono ]
then
  echo "/dev/mono does not exist"
  exit 1
fi

#
# define some stuff
# in version 0.2 this function was not declared posixly correct
#
assign()
{ LINES=$1
  COLUMNS=$2
}

assign `stty size`

MDALINES=25
MDACOLUMNS=80

STDOUT=">/dev/mono"
STDERR="2>/dev/mono"
USAGE="$0 is a frontend, please invoke as:

         mclear - clear MDA
         mecho  - echo text to MDA
         mcat   - cat file to MDA
         mout   - redirect stdout to MDA
         merr   - redirect stderr to MDA
         mall   - redirect stdout AND stderr to MDA
         mbg    - execute job in background and redirect all output to MDA
-------------------------------------------------------------------------------
mdatools v0.3 (w) 1996/97 by Michael Weber, bytewurm@rising-systems.de"

REDIRECT="$STDOUT"
CMD="$*"
CALL=`basename $0`

#
# analyze call
#
case "$CALL" in
  mout) ;;  # default, just blast stdout to MDA
  merr) REDIRECT="$STDERR";;
  mall) REDIRECT="$STDOUT $STDERR";;
  mcat) CMD="cat $CMD";;
  mecho) CMD="echo $CMD";;
  mclear) CMD="clear";;
  mbg) REDIRECT="$STDOUT $STDERR &";;
  *) echo "$USAGE" >&2;exit 64;;
esac

#
# mout, merr and mbg may run screen dependent stuff and so the tty 
# has to be adjusted ...
#
case "$CALL" in
  mout|merr|mbg) stty rows $MDALINES columns $MDACOLUMNS
                 eval "$CMD $REDIRECT"
                 STATUS=$?
                 stty rows $LINES columns $COLUMNS
                 ;;
              *) eval "$CMD $REDIRECT"
                 STATUS=$?
                 ;;
esac

exit $STATUS
