home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / FBL / Arctel / UNIX / LPRINT next >
Text File  |  1997-06-04  |  3KB  |  153 lines

  1. #! /bin/sh
  2. #
  3. #  lprint
  4. #
  5. # Script pro tisk na lokalni tiskarnu terminalovym emulatorem ArcTel
  6. # verze 3.40, rev 960819
  7. #
  8. # (C) FBL Systems, 1992 - 1996
  9. # Firma FBL Vam dava plne opravneni tento program menit, volne sirit
  10. # nebo pouzit jako soucast jineho programu za techto predpokladu:
  11. #   - zustane zachovano oznaceni autorskych prav (copyright)
  12. #   - zustane zachovan tento text
  13. #   - tento ci odvozeny program nebude komercne siren
  14. #     (t.j. prodavan za ucelem dosazeni zisku)
  15. #
  16. usage() {
  17.   echo "Pouziti: $0 [-n] [-a] [-b] [-m mode] [-p] [-v] soubor [soubor...]"
  18.   echo "  n....cislo kanalu"
  19.   echo "  -a...tisk s konverzi NL na CR LF"
  20.   echo "  -b...binarni tisk"
  21.   echo "  -m mode...rezim tisku (condens ...)"
  22.   echo "  -p...prechod na novou stranku za souborem"
  23.   echo "  -v...viditelne, tisk jde zaroven na terminal"
  24.   echo "Tisk standardniho vstupu uvedete parametrem - misto jmena souboru."
  25. }
  26.  
  27. if [ -z "$1" ]; then
  28.   usage
  29.   exit 1
  30. fi
  31.  
  32. # definice prikazu echo
  33.  
  34. # priklad 1.
  35. # echo potrebuje \c na konci pro potlaceni noveho radku
  36. echo="echo"
  37. nnl="\c"
  38.  
  39. # priklad 2. (linux)
  40. # echo potlaci novy radek po parametru -n, interpretuje \ znaky po -e
  41. #echo="echo -en"
  42. #nnl=""
  43.  
  44. # priklad 3. (SCO)
  45. # echo potlaci novy radek po parametru -n, interpretuje \ znaky po -e
  46. #echo="echo -n"
  47. #nnl=""
  48.  
  49. # definice ridicich sekvenci tiskarny
  50.  
  51. esc="\033"
  52. ff="\014"
  53.  
  54. standard="\022${nnl}"
  55. condens="\017${nnl}"
  56.  
  57.  
  58. chan=
  59. vis="5"
  60. autoprn=
  61. page=
  62. ttyst=
  63. endsq=
  64. outdev="/dev/tty"
  65. mode=
  66. parmode=
  67.  
  68. startprint () {
  69.   if [ -z "$endsq" ]; then
  70.     $echo "${esc}[${autoprn}${vis}${chan}i${nnl}" >> $outdev
  71.     endsq="${esc}[${autoprn}4i${nnl}"
  72.   fi
  73.   
  74.   if [ -n "$mode" ]; then
  75.     eval $echo '$'$mode >> $outdev
  76.   fi
  77. }
  78.  
  79. endprint() {
  80.   if [ -n "$mode" ]; then
  81.     $echo "$standard" >> $outdev
  82.   fi
  83.   if [ -n "$endsq" ]; then
  84.     $echo "$endsq" >> $outdev
  85.   fi
  86.   if [ -n "$ttyst" ]; then
  87.     # sem vlozte pripadne obnoveni mapovani kanalu prikazem mapchan
  88.     stty "$ttyst" < /dev/tty 2>&-
  89.   fi
  90. }
  91.  
  92. trap endprint 1
  93. trap endprint 2
  94. trap endprint 15
  95.  
  96. for par
  97. do
  98.   if [ -n "$parmode" ]; then
  99.  
  100.     parmode=
  101.     mode="$par"
  102.  
  103.   else
  104.   
  105.     case "$par" in
  106.       -[?] ) endprint; usage; exit 1;;
  107.       -1 ) chan=";1";;
  108.       -2 ) chan=";2";;
  109.       -3 ) chan=";3";;
  110.  
  111.       -a ) if [ -z "$ttyst" ]; then
  112.              ttyst=`stty -g < /dev/tty`
  113.            fi
  114.            stty opost -olcuc onlcr -ocrnl -onocr -onlret -ofill < /dev/tty;;
  115.  
  116.       -b ) if [ -z "$ttyst" ]; then
  117.              ttyst=`stty -g < /dev/tty`
  118.            fi
  119.            # sem vlozte pripadne zruseni mapovani kanalu prikazem mapchan
  120.            stty -opost < /dev/tty;;
  121.  
  122.       -m ) parmode="$par";;
  123.       -p ) page="${ff}${nnl}"; page_only=1;;
  124.       -v ) if [ "$TERM" = ansi ]; then
  125.              vis="6"
  126.            else
  127.              autoprn='?'
  128.            fi;;
  129.  
  130.       * )  if [ "$par" = "-" -o -r "$par" ]; then
  131.              startprint
  132.              cat "$par" >> $outdev
  133.              if [ -n "$page" ]; then
  134.                $echo "$page" >> $outdev
  135.                page_only=
  136.              fi
  137.            else
  138.              endprint
  139.              echo "Nemohu cist soubor $par!" >&2
  140.              exit 2
  141.            fi;;
  142.  
  143.     esac
  144.   fi
  145. done
  146.  
  147. if [ -n "$page_only" ]; then
  148.   startprint
  149.   $echo "$page" >> $outdev
  150. fi
  151.  
  152. endprint
  153.