#! /bin/sh
# Copyright 1985,1988 Massacusetts Institute of Technology.
# $XConsortium: xdpr.script /main/10 1995/12/08 11:10:59 swick $
# origin: William Kucharski, Solbourne Computer, Inc. 3/24/90
#         translated from csh script xdpr.script "paul 4/12/88"

# initialize variables

display="$DISPLAY"
header=
bsdlprv=
lprv=
out=
svlprv=
trailer=
xprv=
xwdv=

usage="Usage: xdpr [filename] [-out filename ] \
[-display host:display] [[-Pprinter] | [-dprinter]] [-device devtype] \
[{-root | -id <id> | -name <name>}] [-nobdrs] [-xy] \
[-scale scale] [-height inches] [-width inches] [-left inches] \
[-top inches] [-split n] [-header string] [-trailer string] \
[-landscape] [-portrait] [-rv] [-compact] [-noff] [-frame] \
[-plane number] [-gray number] [-psfig] [-density dpi] \
[-cutoff level] [-noposition] [-gamma correction] [-render algorithm] \
[-slide] [-add value] [-help]"

# Guess if we are BSD or System V

if [ -x /usr/ucb/lpr -o -x /usr/bin/lpr -o -x /bin/lpr -o -x /usr/bsd/lpr ]
then
    LP=lpr
    BSD=1
elif [ -x /usr/bin/lp -o -x /bin/lp ]
then
    LP=lp
    BSD=0
else
    LP=lpr
    BSD=1
fi

# parse arguments...

while [ $1 ]; do
    case "$1" in

# ...arguments interpreted by xdpr itself...

    -help)
        echo $usage;
        exit 0;;

# ...arguments to xwd...

    -nobdrs|-root|-xy|-frame)
        xwdv="$xwdv $1";;
    -display)
        display=$2
        xwdv="$xwdv $1 $2";
        shift;;
    -id|-name)
        xwdv="$xwdv $1 $2";
        shift;;
    -out|-add)
        out=true
        xwdv="$xwdv $1 $2";
        shift;;

# ...arguments to xpr...

    -scale|-height|-width|-left|-top|-split|-device)
        xprv="$xprv $1 $2";
        shift;;
    -plane|-gray|-density|-cutoff|-gamma|-render)
        xprv="$xprv $1 $2";
        shift;;
    -header)
        shift;
        header="$1";;
    -trailer)
        shift;
        trailer="$1";;
    -landscape|-portrait|-rv|-compact|-noff|-psfig|-noposition|-slide)
        xprv="$xprv $1";;

# ...arguments to lp[r]...

    -P*|-#?*|-C?*|-J?*|-h|-m)
        bsdlprv="$lprv $1";;

    -d*|-H*|-q*|-n*|-o*|-w)
        svlprv="$svlprv $1";;

# ...disallow other arguments; print usage message

    -*)
        echo "xdpr: Unknown option $1";
        echo $usage;
        exit 1;;

# ...input filename...

    *)
        if [ ! "$infile" ]; then
            infile=true
            xprv="$xprv $1"
        else
            echo "xdpr: Invalid argument "$1""
            echo $usage            
            exit 1
        fi
    esac
    shift
done

# quit if there is no DISPLAY specified

if [ ! "$display" ]; then
    echo "xdpr: DISPLAY variable must be set or a display specified."
    exit
fi

# Command lines:

# Set up lp[r] options...

if [ $BSD -eq 0 ]
then
    lprv=$svlprv
else
    lprv=$bsdlprv
fi

# disallow concurrent input and  -out arguments
if [ "$out" -a "$infile" ]; then
    echo "xdpr: -out <filename> cannot be used if an input file is also specified."
    exit 0
fi

# dump only
if [ "$out" ]; then
    if [ "$xprv" -o "$lprv" ]; then
        echo "xdpr: The following arguments will be ignored:"
        echo $xprv $lprv
    fi
    xwd $xwdv
    exit 0
fi

# print only 
if [ "$infile" ]; then
    if [ "$xwdv" ]; then
        echo "xdpr: The following arguments will be ignored:"
        echo $xwdv
    fi
    xpr -header "$header" -trailer "$trailer" $xprv | $LP $lprv
    exit 0
fi

# dump & print (default)
xwd $xwdv | xpr -header "$header" -trailer "$trailer" $xprv | $LP $lprv
exit 0    

# EOF