generic 4.7 KB

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