allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc) (08/06/89)
Posting-number: Volume 7, Issue 114 Submitted-by: davidsen@crdos1.crd.ge.com (Wm E Davidsen Jr) Archive-name: lj.lp I mentioned that I had a good LJ interface on my system and I got over 30 requests for a copy. Here it is in all its trivial glory. Contained here are the interface program, the driver program, and the initializer file for fonts allowed as options. Since the init files contain escape sequences and line which don't end in newline, I uuencoded them. Note: SunOS users will have to make a directory world writable before unsharing, due to a bug in the Sun uudecode which makes all files it creates owned by uucp. I put my personal uudecode in my PATH before the system version. No man page, no read me... if you don't understand SysV spooling you need more than I can write. #!/bin/sh # shar: Shell Archiver (v1.24) # # Run the following text with /bin/sh to create: # ljet # lj.c # LJ.102x66 # LJ.102x66m # LJ.102x68m # LJ.132x100 # LJ.132x100m # LJ.132x90m # LJ.land16 # LJ.land8 # LJ.reset # echo "x - extracting ljet (Text)" sed 's/^X//' << 'SHAR_EOF' > ljet && X: X# X X# ---------------- start custom area ---------------- X X# define the directory for the font starter files X# note that these are not downloadable fonts, they just X# select the fonts which must be in the printer already XFONTS=/u/local/etc X X# set default display program Xdispprog=/u/local/bin/lj X X# nice value for the display program X# if you have a parallel port and a large LJ memory you can X# get a lot of system load, set this higher as needed. XNICE=6 # parallel port, 1MB memory X X# ---------------- you shouldn't have to go any farther ---------------- X X# set things from the original arguments Xprinter=`basename $0` Xrequest=$1 Xname=$2 Xtitle=$3 Xcopies=$4 Xoptions=$5 Xshift; shift; shift; shift; shift X X# If it is necessary to change the baud rate or other stty settings for X# your serial printer insert a line similar to the following here: X# stty option ... 0<&1 X X# reset the printer Xecho "\033E\c" X X# border around the banner Xx="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" X X# the fifth field of the /etc/passwd file is assigned to the variable user Xuser=`sed -n "s/^$name:.*:.*:.*:\(.*\):.*:.*$/\1/p" /etc/passwd` X X# nhead gets the value of BANNERS or 1 by default Xnhead=`sed -n 's/^BANNERS=//p' /etc/default/lpd` X[ "$nhead" -ge 0 -a "$nhead" -le 5 ] || nhead=1 X X# print the banner $nhead times Xwhile [ "$nhead" -gt 0 ] Xdo X echo "$x\n" X banner "$name" X echo "$x\n" X [ "$user" ] && echo "User: $user\n" X echo "Request id: $request\n" X echo "Printer: $printer\n" X date X echo X [ "$title" ] && banner $title X echo "\f\c" X nhead=`expr $nhead - 1` Xdone | /u/local/bin/lj X X# process option(s) Xfor opt in $options Xdo case $opt in X 16) # 16 pitch X cat ${FONTS}/LJ.132x100;; X 16m) # 16 pitch with 3/4" margin X cat ${FONTS}/LJ.132x100m;; X 16m8) # 16 pitch with margin, 8.5 point X cat ${FONTS}/LJ.132x90m;; X 12) # 12 point/pitch X cat ${FONTS}/LJ.102x66;; X m|12m) # 12 pitch with 3/4" margin X cat ${FONTS}/LJ.102x66m;; X r) #raw mode X dispprog=cat;; X l) # landscape print mode X cat ${FONTS}/LJ.land16;; X esac Xdone X X# send the file(s) to the standard out $copies times Xwhile [ "$copies" -gt 0 ] Xdo filenum=1 X for file X do X nice -${NICE} $dispprog <$file 2>&1 X if [ $filenum -lt $# ] X then echo "\f\c" X filenum=`expr $filenum + 1` X fi X done X copies=`expr $copies - 1` X # form feed if more to come X if [ "$copies" -gt 0 ]; then echo "\f\c"; fi Xdone X X# reset the printer - force the last page out Xecho "\033E\c" X Xexit 0 SHAR_EOF chmod 0755 ljet || echo "restore of ljet fails" echo "x - extracting lj.c (Text)" sed 's/^X//' << 'SHAR_EOF' > lj.c && X/***************************************************************** X | lj - HP Laserjet output filter X |---------------------------------------------------------------- X | Author: Bill Davidsen 10-5-86 X | X | Adds returns before newlines and expands tabs X ****************************************************************/ X X#include <stdio.h> X X#define TRUE 1 X#define FALSE 0 X Xmain () X{ X register int ch, /* input character */ X column = 0, /* for tab expansion */ X wasret = FALSE; /* flag if last char was RETURN */ X X while ((ch = getchar ()) != EOF) X { /* check for newline, add return */ X switch (ch) { X case '\n': /* newline */ X if (!wasret) X putchar ('\r'); X case '\r': /* return */ X column = 0; X wasret = TRUE; X break; X case '\t': /* tab */ X while ((column++ & 7) != 7) X { /* tab via spaces */ X putchar (' '); X } X wasret = FALSE; X ch = ' '; /* output as blank */ X break; X default: /* anything else */ X column++; X wasret = FALSE; X } X X putchar (ch); X } X} SHAR_EOF chmod 0644 lj.c || echo "restore of lj.c fails" echo "x - extracting LJ.102x66 (Binary)" sed 's/^X//' << 'SHAR_EOF' > s2_temp_.tmp && Xbegin 600 LJ.102x66 X8&T4;*',Q,'8Q,D@;)FPT93<N-#5C-C9& X` Xend SHAR_EOF echo "uudecoding file LJ.102x66" uudecode < s2_temp_.tmp && rm -f s2_temp_.tmp && chmod 0644 LJ.102x66 || echo "restore of LJ.102x66 fails" echo "x - extracting LJ.102x66m (Binary)" sed 's/^X//' << 'SHAR_EOF' > s2_temp_.tmp && Xbegin 600 LJ.102x66m X=&T4;*',Q,'8Q,D@;)FPT93<N,#5C-C9&&R9A.4P` X` Xend SHAR_EOF echo "uudecoding file LJ.102x66m" uudecode < s2_temp_.tmp && rm -f s2_temp_.tmp && chmod 0644 LJ.102x66m || echo "restore of LJ.102x66m fails" echo "x - extracting LJ.102x68m (Binary)" sed 's/^X//' << 'SHAR_EOF' > s2_temp_.tmp && Xbegin 600 LJ.102x68m X=&T4;*',Q,'8Q,D@;)FPT93<N,#5C-CA&&R9A.4P` X` Xend SHAR_EOF echo "uudecoding file LJ.102x68m" uudecode < s2_temp_.tmp && rm -f s2_temp_.tmp && chmod 0644 LJ.102x68m || echo "restore of LJ.102x68m fails" echo "x - extracting LJ.132x100 (Binary)" sed 's/^X//' << 'SHAR_EOF' > s2_temp_.tmp && Xbegin 600 LJ.132x100 X9&T4;*',W=C$V+C5(&R9L,F4T+CAC,3(P1@`` X` Xend SHAR_EOF echo "uudecoding file LJ.132x100" uudecode < s2_temp_.tmp && rm -f s2_temp_.tmp && chmod 0644 LJ.132x100 || echo "restore of LJ.132x100 fails" echo "x - extracting LJ.132x100m (Binary)" sed 's/^X//' << 'SHAR_EOF' > s2_temp_.tmp && Xbegin 600 LJ.132x100m X?&T4;*',W=C$V+C5(&R9L,F4T+CAC,3(P1ALF83$R3``+ X` Xend SHAR_EOF echo "uudecoding file LJ.132x100m" uudecode < s2_temp_.tmp && rm -f s2_temp_.tmp && chmod 0644 LJ.132x100m || echo "restore of LJ.132x100m fails" echo "x - extracting LJ.132x90m (Binary)" sed 's/^X//' << 'SHAR_EOF' > s2_temp_.tmp && Xbegin 600 LJ.132x90m XB&T4;*',X+C5V,38N-4@;)FPR934N,S-C,3(P1ALF83$R3``` X` Xend SHAR_EOF echo "uudecoding file LJ.132x90m" uudecode < s2_temp_.tmp && rm -f s2_temp_.tmp && chmod 0644 LJ.132x90m || echo "restore of LJ.132x90m fails" echo "x - extracting LJ.land16 (Binary)" sed 's/^X//' << 'SHAR_EOF' > s2_temp_.tmp && Xbegin 600 LJ.land16 XD&T4;)FPQ;S@N,T0;*#A5&RAS,'`Q-BXV:#@N-78P<S!B,%0* X` Xend SHAR_EOF echo "uudecoding file LJ.land16" uudecode < s2_temp_.tmp && rm -f s2_temp_.tmp && chmod 0644 LJ.land16 || echo "restore of LJ.land16 fails" echo "x - extracting LJ.land8 (Binary)" sed 's/^X//' << 'SHAR_EOF' > s2_temp_.tmp && Xbegin 600 LJ.land8 X=&T4;)FPQ3QLH.%4;*',P<#$P:#$R=C!S,&(S5`H` X` Xend SHAR_EOF echo "uudecoding file LJ.land8" uudecode < s2_temp_.tmp && rm -f s2_temp_.tmp && chmod 0644 LJ.land8 || echo "restore of LJ.land8 fails" echo "x - extracting LJ.reset (Binary)" sed 's/^X//' << 'SHAR_EOF' > s2_temp_.tmp && Xbegin 600 LJ.reset X"&T6N X` Xend SHAR_EOF echo "uudecoding file LJ.reset" uudecode < s2_temp_.tmp && rm -f s2_temp_.tmp && chmod 0644 LJ.reset || echo "restore of LJ.reset fails" exit 0 -- bill davidsen (davidsen@crdos1.crd.GE.COM -or- davidsen@crdos1.uucp) {uunet | philabs}!crdgw1!crdos1!davidsen "The world is filled with fools. They blindly follow their so-called 'reason' in the face of the church and common sense. Any fool can see that the world is flat!" - anon