218 lines · 4.8 KB · Text
RawDownload
#!/bin/rc# Tries to determine what type of file you are printing and do the correct# thing with it.# It currently knows about images, troff intermediate, and ascii files.rfork etemp=/tmp/lp$pidfn sigexit { rm -f $temp }proc=$LPLIB/process if (! ~ $DEBUG '')	flag x +cat >$temp type=`{file $temp}switch ($type(2)) {case troff	switch ($LPCLASS) {	case *Latin1* *post* *opost*		switch ($type(5)) {		# Latin1 is for compatibility with old research UNIX systems,		# doesn't work on Plan 9		case Latin1 post			tcs -s -f utf -t latin1 <$temp | $proc/dpost		case UTF			$proc/tr2post <$temp		}	case *gs!* *gsijs!*		switch ($type(5)) {		# Latin1 is for compatibility with old research UNIX systems,		# doesn't work on Plan 9		case Latin1 post			tcs -s -f utf -t latin1 <$temp | $proc/dpost |				$proc/gspipe		case UTF			$proc/tr2post <$temp | $proc/gspipe		}	case *		echo $type(2) -T$type(5) output is improper for $LPDEST >[1=2]	}case special	switch ($type(4)) {	case '#b'		switch ($LPCLASS) {		case *post*			$proc/p9bitpost <$temp		case *gs!*			$proc/p9bitpost <$temp | $proc/gspipe		case *gsijs!*			$proc/p9bitpost <$temp | $proc/gspipeijs		}	case *		echo $type file is improper for $LPDEST >[1=2]	}case Compressed plan old subfont	# type is really 'Compressed image' or 'plan 9 image' or	# 'old plan 9 image'	# 'subfont' is to cope with a bug in png (writing wrong length),	# 6 may 2008	switch ($LPCLASS) {	case *post*		$proc/p9bitpost <$temp	case *gs!*		$proc/p9bitpost <$temp | $proc/gspipe	case *gsijs!*		$proc/p9bitpost <$temp | $proc/gspipeijs	}case jpeg	switch ($LPCLASS) {	case *post*		$proc/jpgpost <$temp	case *gs!*		$proc/jpgpost <$temp | $proc/gspipe	case *gsijs!*		$proc/jpgpost <$temp | $proc/gspipeijs	}case GIF	switch ($LPCLASS) {	case *post*		$proc/gifpost <$temp	case *gs!*		$proc/gifpost <$temp | $proc/gspipe	case *gsijs!*		$proc/gifpost <$temp | $proc/gspipeijs	}case PNG	switch ($LPCLASS) {	case *post*		$proc/pngpost <$temp	case *gs!*		$proc/pngpost <$temp | $proc/gspipe	case *gsijs!*		$proc/pngpost <$temp | $proc/gspipeijs	}case ccitt-g31	switch ($LPCLASS) {	case *post*		$proc/g3post <$temp	case *gs!*		$proc/g3post <$temp | $proc/gspipe	case *gsijs!*		$proc/g3post <$temp | $proc/gspipeijs	}case bitmap	# bitmap for research UNIX compatibility, does not work on Plan 9.	switch ($LPCLASS) {	case *post*		$proc/bpost <$temp	case *mhcc*		$proc/bpost <$temp | $proc/mhcc	case *		echo $type(2) file is improper for $LPDEST >[1=2]	}case tex	mv $temp $temp.dvi	temp=$temp.dvi	switch ($LPCLASS) {	case *post*		$proc/dvipost $temp	case *gs!*		$proc/dvipost $temp | $proc/gspipe	case *gsijs!*		$proc/dvipost $temp | $proc/gspipeijs	case *		echo $type(2) file is improper for $LPDEST >[1=2]	}case postscript	switch ($LPCLASS) {	case *post*		$proc/post <$temp	case *gs!*		$proc/post <$temp | $proc/gspipe	case *gsijs!*		$proc/post <$temp | $proc/gspipeijs	case *		echo $type(2) file is improper for $LPDEST >[1=2]	}case HPJCL HP	switch ($LPCLASS) {	case *HPJCL*		$proc/noproc <$temp	case *		echo $type(2) file is improper for $LPDEST >[1=2]	}case daisy	switch ($LPDEST) {	case *		echo $type(2) file is improper for $LPDEST >[1=2]	}case tiff	switch ($LPCLASS) {	case *post*		$proc/tiffpost $temp	case *gs!*		$proc/tiffpost $temp | $proc/gspipe	case *gsijs!*		$proc/tiffpost $temp | $proc/gspipeijs	case *		echo Unrecognized class of line printer for $LPDEST >[1=2]	}case PDF	switch ($LPCLASS) {	case *pdf*#		if (~ $LPCLASS *duplex* && ~ $LPCLASS *HPJCL*)#			echo -n '&l1S'		# HP JCL: duplex on		if (~ $LPCLASS *duplex* && ~ $LPCLASS *HPJCL*) {			echo '%-12345X@PJL DEFAULT DUPLEX=ON'	# HP PJL			echo '%-12345X'			echo '%-12345X@PJL DEFAULT PS:MBT=ON'	# `memory boost'			echo '%-12345X'		}		cat $temp		# pass pdf unaltered to pdf printer	case *post*		$proc/pdfpost $temp	case *gs!*		$proc/pdfgs $temp	case *gsijs!*		$proc/pdfgsijs $temp	case *		echo Unrecognized class of line printer for $LPDEST >[1=2]	}case microsoft				# office document	switch ($LPCLASS) {	case *post*		doc2ps $temp | $proc/post	case *gs!*		doc2ps $temp | $proc/post  | $proc/gspipe	case *gsijs!*		doc2ps $temp | $proc/post | $proc/gspipeijs	case *		echo $type(2) file is improper for $LPDEST >[1=2]	}case empty	echo file is empty >[1=2]case cannot	echo cannot open file >[1=2]case English Cyrillic short extended alef limbo [Aa]scii assembler c latin rc sh \    as mail email message/rfc822 manual HTML	switch ($LPCLASS) {	case *post*		$proc/ppost <$temp	case *gs!*		$proc/ppost <$temp | $proc/gspipe	case *gsijs!*		$proc/ppost <$temp | $proc/gspipeijs	case *canon*		$proc/can $* <$temp	case *		echo Unrecognized class of line printer for $LPDEST >[1=2]	}case *	echo $type(2) file is improper for $LPDEST >[1=2]} waitrv=$statusrm -f $temp# exit $rvexit