generic 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. --------/sys/lib/lp/process/generic--------
  2. #!/bin/rc
  3. # Tries to determine what type of file you are printing and do the correct
  4. # thing with it.
  5. # It currently knows about images, troff intermediate, and ascii files.
  6. TMPFILE=/tmp/lp$pid
  7. fn sigexit { rm -f $TMPFILE; }
  8. if (! ~ $DEBUG '') flag x +
  9. if (~ $LPCLASS *nohead*) NOHEAD=1
  10. if (~ $LPCLASS *duplex*) DUPLEX=1
  11. cat >$TMPFILE
  12. FILETYPE=`{file $TMPFILE}
  13. switch ($FILETYPE(2)) {
  14. case troff;
  15. switch ($LPCLASS) {
  16. case *Latin1* *post* *opost*; switch ($FILETYPE(5)) {
  17. # Latin1 is for compatibility with old research UNIX systems, doesn't work on Plan 9
  18. case Latin1 post; tcs -s -f utf -t latin1 < $TMPFILE |$LPLIB/process/dpost
  19. case UTF; $LPLIB/process/tr2post < $TMPFILE
  20. }
  21. case *gs!* *gsijs!*; switch ($FILETYPE(5)) {
  22. # Latin1 is for compatibility with old research UNIX systems, doesn't work on Plan 9
  23. case Latin1 post; tcs -s -f utf -t latin1 < $TMPFILE |$LPLIB/process/dpost |$LPLIB/process/gspipe
  24. case UTF; $LPLIB/process/tr2post < $TMPFILE |$LPLIB/process/gspipe
  25. }
  26. case *; echo $FILETYPE(2) -T$FILETYPE(5) output is improper for $LPDEST >[1=2]
  27. }
  28. case special;
  29. switch ($FILETYPE(4)) {
  30. case '#b'; switch ($LPCLASS) {
  31. case *post*; $LPLIB/process/p9bitpost < $TMPFILE
  32. case *gs!*; $LPLIB/process/p9bitpost < $TMPFILE |$LPLIB/process/gspipe
  33. case *gsijs!*; $LPLIB/process/p9bitpost < $TMPFILE |$LPLIB/process/gspipeijs
  34. }
  35. case *; echo $FILETYPE file is improper for $LPDEST >[1=2]
  36. }
  37. case Compressed plan old; # type is really 'Compressed image' or 'plan 9 image'
  38. # or 'old plan 9 image'
  39. switch ($LPCLASS) {
  40. case *post*; $LPLIB/process/p9bitpost < $TMPFILE
  41. case *gs!*; $LPLIB/process/p9bitpost < $TMPFILE |$LPLIB/process/gspipe
  42. case *gsijs!*; $LPLIB/process/p9bitpost < $TMPFILE |$LPLIB/process/gspipeijs
  43. }
  44. case jpeg;
  45. switch ($LPCLASS) {
  46. case *post*; $LPLIB/process/jpgpost < $TMPFILE
  47. case *gs!*; $LPLIB/process/jpgpost < $TMPFILE |$LPLIB/process/gspipe
  48. case *gsijs!*; $LPLIB/process/jpgpost < $TMPFILE |$LPLIB/process/gspipeijs
  49. }
  50. case GIF;
  51. switch ($LPCLASS) {
  52. case *post*; $LPLIB/process/gifpost < $TMPFILE
  53. case *gs!*; $LPLIB/process/gifpost < $TMPFILE |$LPLIB/process/gspipe
  54. case *gsijs!*; $LPLIB/process/gifpost < $TMPFILE |$LPLIB/process/gspipeijs
  55. }
  56. case ccitt-g31;
  57. switch ($LPCLASS) {
  58. case *post*; $LPLIB/process/g3post < $TMPFILE
  59. case *gs!*; $LPLIB/process/g3post < $TMPFILE |$LPLIB/process/gspipe
  60. case *gsijs!*; $LPLIB/process/g3post < $TMPFILE |$LPLIB/process/gspipeijs
  61. }
  62. # bitmap for research UNIX compatibility, does not work on Plan 9.
  63. case bitmap;
  64. switch ($LPCLASS) {
  65. case *post*; $LPLIB/process/bpost < $TMPFILE
  66. case *mhcc*; $LPLIB/process/bpost < $TMPFILE | $LPLIB/process/mhcc
  67. case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2]
  68. }
  69. case tex;
  70. mv $TMPFILE $TMPFILE.dvi
  71. TMPFILE=$TMPFILE.dvi
  72. switch ($LPCLASS) {
  73. case *post*; $LPLIB/process/dvipost $TMPFILE
  74. case *gs!*; $LPLIB/process/dvipost $TMPFILE |$LPLIB/process/gspipe
  75. case *gsijs!*; $LPLIB/process/dvipost $TMPFILE |$LPLIB/process/gspipeijs
  76. case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2]
  77. }
  78. case postscript;
  79. switch ($LPCLASS) {
  80. case *post*; $LPLIB/process/post < $TMPFILE
  81. case *gs!*; $LPLIB/process/post < $TMPFILE |$LPLIB/process/gspipe
  82. case *gsijs!*; $LPLIB/process/post < $TMPFILE |$LPLIB/process/gspipeijs
  83. case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2]
  84. }
  85. case HPJCL;
  86. switch ($LPCLASS) {
  87. case *HPJCL*; $LPLIB/process/noproc < $TMPFILE
  88. case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2]
  89. }
  90. case daisy;
  91. switch ($LPDEST) {
  92. case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2]
  93. }
  94. case English short extended alef limbo [Aa]scii assembler c latin rc sh as mail email message/rfc822;
  95. switch ($LPCLASS) {
  96. case *post*; $LPLIB/process/ppost < $TMPFILE
  97. case *gs!*; $LPLIB/process/ppost < $TMPFILE |$LPLIB/process/gspipe
  98. case *gsijs!*; $LPLIB/process/ppost < $TMPFILE |$LPLIB/process/gspipeijs
  99. case *canon*; $LPLIB/process/can $* < $TMPFILE
  100. case *; echo Unrecognized class of line printer for $LPDEST >[1=2]
  101. }
  102. case tiff;
  103. switch ($LPCLASS) {
  104. case *post*; $LPLIB/process/tiffpost $TMPFILE
  105. case *gs!*; $LPLIB/process/tiffpost $TMPFILE |$LPLIB/process/gspipe
  106. case *gsijs!*; $LPLIB/process/tiffpost $TMPFILE |$LPLIB/process/gspipeijs
  107. case *; echo Unrecognized class of line printer for $LPDEST >[1=2]
  108. }
  109. case PDF;
  110. switch ($LPCLASS) {
  111. case *post*; $LPLIB/process/pdfpost $TMPFILE
  112. case *gs!*; $LPLIB/process/pdfgs $TMPFILE
  113. case *gsijs!*; $LPLIB/process/pdfgsijs $TMPFILE
  114. case *; echo Unrecognized class of line printer for $LPDEST >[1=2]
  115. }
  116. case empty;
  117. echo file is empty >[1=2]
  118. case cannot;
  119. echo cannot open file >[1=2]
  120. case *;
  121. echo $FILETYPE(2) file is improper for $LPDEST >[1=2]
  122. }
  123. wait
  124. rv=$status
  125. rm -f $TMPFILE
  126. #exit $status
  127. exit