home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / usr.bin / groff / grot / groff.sh next >
Encoding:
Linux/UNIX/POSIX Shell Script  |  1991-04-30  |  5.5 KB  |  334 lines

  1. #!/bin/sh
  2. #Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
  3. #     Written by James Clark (jjc@jclark.uucp)
  4. #
  5. #This file is part of groff.
  6. #
  7. #groff is free software; you can redistribute it and/or modify it under
  8. #the terms of the GNU General Public License as published by the Free
  9. #Software Foundation; either version 1, or (at your option) any later
  10. #version.
  11. #
  12. #groff is distributed in the hope that it will be useful, but WITHOUT ANY
  13. #WARRANTY; without even the implied warranty of MERCHANTABILITY or
  14. #FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  15. #for more details.
  16. #
  17. #You should have received a copy of the GNU General Public License along
  18. #with groff; see the file LICENSE.  If not, write to the Free Software
  19. #Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  20.  
  21. # Add new devices below, where it says `Add local devices here.'
  22.  
  23. prog=`basename $0`
  24. optF=
  25. optP=
  26. optL=
  27. trflags=
  28. tflag=
  29. pflag=
  30. eflag=
  31. sflag=
  32. lflag=
  33. zflag=
  34. vflag=
  35. iflag=
  36. Cflag=
  37. Nflag=
  38. Vflag=
  39. dev=${GROFF_TYPESETTER:-@DEVICE@}
  40.  
  41. synopsis="\
  42. usage: $prog [-abehilpstvzCENVZ] [-Hfile] [-Fdir] [-mname] [-Tdev] [-ffam]
  43.        [-wname] [-Wname] [ -Mdir] [-dcs] [-rcn] [-nnum] [-olist] [-Parg]
  44.        [-Larg] [files...]"
  45.  
  46. devices="Available devices are:
  47. X100    X11 previewer at 100dpi
  48. X75    X11 previewer at 75dpi
  49. X100-12    X11 previewer at 100dpi (optimized for 12 point text)
  50. X75-12    X11 previewer at 75dpi (optimized for 12 point text)
  51. ps    PostScript
  52. dvi    TeX dvi format
  53. latin1    ISO Latin-1
  54. ascii    ASCII"
  55.  
  56. help="$synopsis
  57. -h    print this message
  58. -t    preprocess with tbl
  59. -p    preprocess with pic
  60. -e    preprocess with eqn
  61. -s    preprocess with soelim
  62. -Tdev    use device dev
  63. -mname    read macros tmac.name
  64. -dcs    define a string c as s
  65. -rcn    define a number register c as n
  66. -nnum    number first page n
  67. -olist    output only pages in list
  68. -ffam    use fam as the default font family
  69. -Fdir    search directory dir for device directories
  70. -Mdir    search dir for macro files
  71. -Hfile    read hyphenation patterns from file
  72. -v    print version number
  73. -z    suppress formatted output
  74. -Z    don't postprocess
  75. -a    produce ASCII description of output
  76. -i    read standard input after named input files
  77. -wname    enable warning name
  78. -Wname    inhibit warning name
  79. -E    inhibit all errors
  80. -b    print backtraces with errors or warnings
  81. -l    spool the output (@PSPRINT@ or @DVIPRINT@)
  82. -C    enable compatibility mode
  83. -V    print the pipeline on stdout instead of executing it
  84. -Parg    pass arg to the postprocessor    
  85. -Larg    pass arg to the spooler    
  86. -N    don't allow newlines within eqn delimiters
  87.  
  88. $devices"
  89.  
  90. usage="$synopsis
  91. $prog -h gives more help"
  92.  
  93. while test $# -gt 0
  94. do
  95.     case $1 in
  96.     -h*)
  97.         echo "$help" >&2
  98.         exit 0
  99.         ;;
  100.     -[az])
  101.         trflags="$trflags $1"
  102.         zflag=1
  103.         ;;
  104.     -Z)
  105.         zflag=1
  106.         ;;
  107.     -i)
  108.         iflag=1
  109.         ;;
  110.     -V)
  111.         Vflag=1
  112.         ;;
  113.     -t)
  114.         tflag=1
  115.         ;;
  116.     -p)
  117.         pflag=1
  118.         ;;
  119.     -e)
  120.         eflag=1
  121.         ;;
  122.     -s)
  123.         sflag=1
  124.         ;;
  125.     -l)
  126.         lflag=1
  127.         ;;
  128.     -v)
  129.         vflag=-v
  130.         ;;
  131.     -C)
  132.         Cflag=-C
  133.         ;;
  134.     -N)
  135.         Nflag=-N
  136.         ;;
  137.     -[bE])
  138.         trflags="$trflags $1"
  139.         ;;
  140.     -[aiztpeslvbECNVZ]*)
  141.         first=`expr "$1" : '\(-.\)'`
  142.         rest=`expr "$1" : '-.\(.*\)$'`
  143.         shift
  144.         set "" "$first" "-$rest" "$@"
  145.         ;;
  146.     -F)
  147.         if test $# -lt 2
  148.         then
  149.             echo "$prog: option -F requires an argument" >&2
  150.             exit 1
  151.         else
  152.             optF="$optF -F$2"
  153.             shift
  154.         fi
  155.         ;;
  156.     -F*)
  157.         optF="$optF $1"
  158.         ;;
  159.     -T)
  160.         if test $# -lt 2
  161.         then
  162.             echo "$prog: option -T requires an argument" >&2
  163.             exit 1
  164.         else
  165.             dev="$2"
  166.             shift
  167.         fi
  168.         ;;
  169.  
  170.     -T*)
  171.         dev=`expr "$1" : '-T\(.*\)$'`
  172.         ;;
  173.     -[fomrMHdnwW])
  174.         if test $# -lt 2
  175.         then
  176.             echo "$prog: option $1 requires an argument" >&2
  177.             exit 1
  178.         else
  179.             trflags="$trflags $1$2"
  180.             shift
  181.         fi
  182.         ;;
  183.     -[fomrMHdnwW]*)
  184.         trflags="$trflags $1"
  185.         ;;
  186.     -P)
  187.         if test $# -lt 2
  188.         then
  189.             echo "$prog: option -P requires an argument" >&2
  190.             exit 1
  191.         else
  192.             optP="$optP $2"
  193.             shift
  194.         fi
  195.         ;;
  196.     -P*)
  197.         optP="$optP `expr "$1" : '-.\(.*\)$'`"
  198.         ;;
  199.     -L)
  200.         if test $# -lt 2
  201.         then
  202.             echo "$prog: option -L requires an argument" >&2
  203.             exit 1
  204.         else
  205.             optL="$optL $2"
  206.             shift
  207.         fi
  208.         ;;
  209.     -L*)
  210.         optL="$optL `expr "$1" : '-.\(.*\)$'`"
  211.         ;;
  212.     --)
  213.         shift
  214.         break
  215.         ;;
  216.     -)
  217.         break
  218.         ;;
  219.     -*)
  220.         echo "$prog: unrecognized option $1" >&2
  221.         echo "$usage" >&2
  222.         exit 1
  223.         ;;
  224.     *)
  225.         break
  226.         ;;
  227.     esac
  228.     shift
  229. done
  230.  
  231. if test $# -gt 0
  232. then
  233.     files="$@"
  234.     if test "$iflag"
  235.     then
  236.         files="$files -"
  237.     fi
  238. else
  239.     files=-
  240. fi
  241.  
  242. eqnchar=
  243. eqnflag=
  244. picflag=
  245. postpro=
  246.  
  247. case $dev in
  248. ps)
  249.     trflags="$trflags -mps"
  250.     eqnchar=@FONTDIR@/devps/eqnchar
  251.     postpro="| grops $vflag $optF $optP"
  252.     picflag="-x -p"
  253.     eqnflag=-D
  254.     if test "$lflag"
  255.     then
  256.         postpro="$postpro | @PSPRINT@ $optL"
  257.     fi
  258.     ;;
  259.  
  260. X100|X75|X100-12|X75-12)
  261.     trflags="$trflags -mX"
  262.     picflag=-x
  263.     eqnflag=-D
  264.     postpro="| gxditview $optP -"
  265.     eqnchar=@FONTDIR@/dev$dev/eqnchar
  266.     ;;
  267.  
  268. ascii|latin1)
  269.     trflags="$trflags -mtty"
  270.     postpro="| grotty $vflag $optF $optP"
  271.     ;;
  272.  
  273. dvi)
  274.     trflags="$trflags -mdvi"
  275.     eqnchar=@FONTDIR@/devdvi/eqnchar
  276.     picflag=-x
  277.     postpro="| grodvi $vflag $optF $optP"
  278.     if test "$lflag"
  279.     then
  280.         postpro="$postpro | @DVIPRINT@ $optL"
  281.     fi
  282.     ;;
  283.     
  284.  
  285. # Add local devices here.
  286.  
  287. *)
  288.     echo "$prog: unknown device \`$dev'" >&2
  289.     echo "$devices" >&2
  290.     exit 1
  291.     ;;
  292. esac
  293.  
  294. prepro=
  295.  
  296. if test "$sflag"
  297. then
  298.     prepro="$prepro gsoelim $vflag $Cflag $files |"
  299.     files=-
  300. fi
  301.  
  302. if test "$pflag"
  303. then
  304.     prepro="$prepro gpic $vflag $Cflag $picflag $files |"
  305.     files=-
  306. fi
  307.  
  308. if test "$tflag"
  309. then
  310.     prepro="$prepro gtbl $vflag $Cflag $files |"
  311.     files=-
  312. fi
  313.  
  314. if test "$eflag"
  315. then
  316.     prepro="$prepro geqn $eqnflag $vflag $Cflag $Nflag -T$dev -- $eqnchar $files |"
  317.     files=-
  318. fi
  319.  
  320. if test "$zflag"
  321. then
  322.     postpro=
  323. fi
  324.  
  325. pipe="$prepro gtroff -T$dev $vflag $Cflag $trflags $optF -- $files $postpro"
  326.  
  327. if test "$Vflag"
  328. then
  329.     echo $pipe
  330. else
  331.     eval $pipe
  332. fi
  333. exit 0
  334.