#!/bin/sh

dialog --title "ץ󥿥ݡȤ" --menu \
"ץ󥿤ϤɤΥݡȤ³Ƥޤ" 10 72 4 \
"/dev/lp0" "DOS  LPT1" \
"/dev/lp1" "DOS  LPT2" \
"/dev/lp2" "DOS  LPT3" \
"/dev/lp3" "DOS  LPT4" 2> /tmp/PrnPort

# ꥢ³ξ setserial ɬפǤ褯ʬΤǡ
# "/dev/ttyS0" "DOS  COM1" \
# "/dev/ttyS1" "DOS  COM2" \
# "/dev/ttyS2" "DOS  COM3" \
# "/dev/ttyS3" "DOS  COM4" 2> /tmp/PrnPort

if [ $? = 1 ]; then
	rm -f /tmp/PrnPort
	exit
else 
	if [ ! -s /tmp/PrnPort ]; then
		PRNPORT="/dev/lp1"
	else
		PRNPORT="`cat /tmp/PrnPort`"
	fi
fi

dialog --title "ץ󥿥ɥ饤Ф" --menu \
"ȤΥץ󥿤μϡ " 20 72 10 \
"PS" "PostScript ץ" \
"ESC/P" "ESC/P ޥ" \
"mjc180" "Epson MachJet 180 DPI " \
"mjc360" "Epson MachJet 360 DPI " \
"mjc720" "Epson MachJet 720 DPI " \
"mj500c" "Epson MJC500 " \
"epag"   "EPSON ESC/Page(LP ꡼)" \
"epag300" "EPSON ESC/Page 300 DPI(epag300 ȥեåȤ㤦)" \
"epag600" "EPSON ESC/Page 600 DPI " \
"picty180" "NEC Picty 180" \
"picty180hi" "NEC Picty180 hi-reso" \
"md50Mono" "MD50 Mono mode" \
"md50Eco" "MD50 Eco mode" \
"md1xMono" "MD1x Mono mode" \
"md2k" "MD2000" \
"lp2000" "LP2000" \
"ml600" "ml600" \
"npdl" "NPDL" \
"rpdl" "RPDL" \
"fmpr" "fmpr" \
"bj10v"  "Canon BJ10 " \
"bjc600" "Canon BJC 600 ꡼" \
"bjc800" "Canon BJC 800 ꡼" \
"lbp2030" "Canon LBP 2030 " \
"lips2p"  "Canon LIPS2 " \
"lips3"  "Canon LIPS3 " \
"lips4"  "Canon LIPS4 " \
"lips4v" "Canon LIPS4 Color " \
"deskjet" "HP DeskJet" \
"djet500" "HP DeskJet 500" \
"cdj550" "HP DeskJet 550" \
"cdj670" "HP DeskJet 670" \
"cdj850" "HP DeskJet 850" \
"cdj880" "HP DeskJet 880" \
"cdj890" "HP DeskJet 890" \
"cdj1600" "HP DeskJet 1600" \
"cdjcolor" "HP DeskJet 顼" \
"cdeskjet" "HP Color DeskJet" \
"laserjet" "HP LaserJet" \
"ljetplus" "HP LaserJet Plus" \
"ljet2p" "HP LaserJet 2P" \
"ljet3" "HP LaserJet 3" \
"ljet4" "HP LaserJet 4" \
"lj4dith" "HP LaserJet4 ǥȻ"  \
"lj5mono" "HP LaserJet5 Υ" \
"lj5gray" "HP LaserJet5 졼" \
"ljet4"   "HP LaserJet4" \
2> /tmp/PrnDriver

if [ $? = 1 ]; then
	rm -f /tmp/PrnDriver
	exit
else 
	PRNDRIVER="`cat /tmp/PrnDriver`"
fi

dialog --title "ץ̾" --inputbox \
"lpr Ȥݤˤ 'lpr -P̾' ηǥץ̾ꤷޤ\n\
Υץ󥿤ˤɤ̾դޤ 'lp' Ȥ̾ \n\
С-P ץȤʤƤ⡢Υץ󥿤˥ǡ \n\
뤳ȤǤޤ" 12 70 "lp" 2> /tmp/PrnName

if [ $? = 1 ]; then
	rm -f /tmp/PrnName
	exit
elif [ ! -s /tmp/PrnName ]; then
	PRNNAME="lp"
else 
	PRNNAME="`cat /tmp/PrnName`"
fi

if [ "$PRNNAME" = "lp" ]; then
	TXTNAME="txt"
else
	TXTNAME="$PRNNAME-txt"
fi

dialog --title "ʲǤ" --yesno \
"ץ󥿤³ݡ    : $PRNPORT \n\
PS ѥץ̾     : $PRNNAME \n\
ƥȽѥץ̾: $TXTNAME \n\
ץ gs ɥ饤  : $PRNDRIVER " 8 72
if [ $? = 1 -o $? = 255 ]; then
 exit
fi

if [ -f /etc/printcap ]; then
	cp /etc/printcap /etc/printcap.old
fi

if [ "$PRNDRIVER" = "PS" ]; then
# Printer  PS ξ硣

cat <<EOF >> /usr/bin/psfilter
#!/bin/sh
#
# PS ץѤΥƥѴե륿
#
# lprifϤǤ
#
WIDTH=\$1
LENGTH=\$2
INDENT=\$3
NAMEFLAG=\$4
LOGIN=\$5
HOSTFLAG=\$6
HOST=\$7
ACCT=\$8  

WIDTH=\`echo \$1 | awk '{ print substr(\$1,3) }'\`
if [ -z "\$WIDTH" -o "\$WIDTH" = "0" ]; then WIDTH=80; fi

LENGTH=\`echo \$2 | awk '{ print substr(\$1,3) }'\`
if [ -z "\$LENGTH" ]; then LENGTH=66; fi

INDENT=\`echo \$3 | awk '{ print substr(\$1,3) }'\`
if [ -z "\$INDENT" ]; then INDENT=0; fi

#
/usr/bin/nkf -e  | /usr/bin/psconv -V\$WIDTH-\$LENGTH -j 

EOF

chmod 755 /usr/bin/psfilter

cat <<EOF >> /etc/printcap

$TXTNAME|gs-text|txt2ps:\\
	:lp=$PRNPORT:\\
	:sd=/usr/spool/$TXTNAME:\\
	:lf=/usr/spool/$TXTNAME/log:\\
	:af=/usr/spool/$TXTNAME/acct:\\
	:if=/usr/bin/psfilter:\\
	:mx#0:\\
	:sh: 

$PRNNAME|gs|PS native:\\
	:lp=$PRNPORT:\\
	:sd=/usr/spool/$PRNNAME:\\
	:lf=/usr/spool/$PRNNAME/log:\\
	:af=/usr/spool/$PRNNAME/acct:\\
	:mx#0:\\
	:sh:

EOF

else 
# not PS printer

cat <<EOF >> /usr/bin/$TXTNAME-if
#!/bin/sh
#
# ̾ΥƥѤΥե륿(if)
# lprifϤǤ
#
WIDTH=\$1
LENGTH=\$2
INDENT=\$3
NAMEFLAG=\$4
LOGIN=\$5
HOSTFLAG=\$6
HOST=\$7
ACCT=\$8  
#
WIDTH=\`echo \$1 | awk '{ print substr(\$1,3) }'\`
if [ -z "\$WIDTH" -o "\$WIDTH" = "0" ]; then WIDTH=80; fi

LENGTH=\`echo \$2 | awk '{ print substr(\$1,3) }'\`
if [ -z "\$LENGTH" ]; then LENGTH=66; fi

INDENT=\`echo \$3 | awk '{ print substr(\$1,3) }'\`
if [ -z "\$INDENT" ]; then INDENT=0; fi

/usr/bin/nkf -e  | /usr/bin/psconv -V\$WIDTH-\$LENGTH -j | \
/usr/bin/gs -q -dNOPAUSE -sDEVICE=$PRNDRIVER $PRNOPTION -sOutputFile=- -

EOF

chmod 755 /usr/bin/$TXTNAME-if

cat <<EOF >> /usr/bin/$PRNNAME-if
#!/bin/sh
#
# PostScript եѤΥե륿
#
WIDTH=\$1
LENGTH=\$2
INDENT=\$3
NAMEFLAG=\$4
LOGIN=\$5
HOSTFLAG=\$6
HOST=\$7
ACCT=\$8  
#
/usr/bin/gs -q -dNOPAUSE -sDEVICE=$PRNDRIVER $PRNOPTION -sOutputFile=- -

EOF

chmod 755 /usr/bin/$PRNNAME-if

if [ -f /etc/printcap ]; then
	cp /etc/printcap /etc/printcap.old
fi

cat <<EOF >> /etc/printcap

$TXTNAME|text:\\
	:lp=$PRNPORT:\\
	:sd=/usr/spool/$TXTNAME:\\
	:lf=/usr/spool/$TXTNAME/log:\\
	:af=/usr/spool/$TXTNAME/acct:\\
	:if=/usr/bin/$TXTNAME-if:\\
	:mx#0:\\
	:sh: 

$PRNNAME|ps|PostScript:\\
	:lp=$PRNPORT:\\
	:sd=/usr/spool/$PRNNAME:\\
	:lf=/usr/spool/$PRNNAME/log:\\
	:af=/usr/spool/$PRNNAME/acct:\\
	:if=/usr/bin/$PRNNAME-if:\\
	:mx#0:\\
	:sh:

EOF

fi

# Spool directory κ

mkdir /usr/spool/$PRNNAME
chown root.lp /usr/spool/$PRNNAME
chmod 755 /usr/spool/$PRNNAME

touch /usr/spool/$PRNNAME/log
chmod 644 /usr/spool/$PRNNAME/log
chown root.lp /usr/spool/$PRNNAME/log

touch /usr/spool/$PRNNAME/acct
chmod 644 /usr/spool/$PRNNAME/acct
chown root.lp /usr/spool/$PRNNAME/acct

mkdir /usr/spool/$TXTNAME
chown root.lp /usr/spool/$TXTNAME
chmod 755 /usr/spool/$TXTNAME

touch /usr/spool/$TXTNAME/log
chmod 644 /usr/spool/$TXTNAME/log
chown root.lp /usr/spool/$TXTNAME/log

touch /usr/spool/$TXTNAME/acct
chmod 644 /usr/spool/$TXTNAME/acct
chown root.lp /usr/spool/$TXTNAME/acct

dialog --title "ץ󥿤괰λ" --msgbox \
"\n\
  ץ󥿤꤬λޤ\n\
\n\
  dvips  Netscape νϤʤ PS եϤϡ\n\
    lpr -P$PRNNAME \n\
ȻꤷƽϤƤ$PRNNAME Ǥ PS եȤä gs \n\
ȤäƽϤޤ\n\
\n\
  ޤƥȥեϤϡ\n\
    lpr -P$TXTNAME \n\
ǽϤƤ$TXTNAME ǤϼưŪ psconv  gs Ȥäơ\n\
ä PS եѴƥȥե gs ͳǽϤޤ" 17 74 

# end of local printer setting

