magicfilter(8)                                                  magicfilter(8)

changecom( )dnl

       magicfilter - automatic configurable printer filter

       magicfilter  ifdef(`HAVE_XGETOPT', config-file [-c] [-n user] [-h host]
       [-iindent] [--debug] [other-options], config-file [-c]  [-n  user]  [-h
       host] [-iindent] [other.options])

       magicfilter is an extensible and customizable automatic printer filter.
       It selects an appropriate conversion technique for the  input  data  by
       seeking  for  magic numbers, and then utilizing the appropriate conver-
       sion utility.

       magicfilter is primarily intended for use as the  ``input  filter''  by
       the lpd print spooler.  The options accepted by magicfilter are exactly
       the ones passed to the input filter by lpd.

       Typically magicfilter will be invoked by lpd  and  hence  provided  the
       right options automatically.  This list is included for reference only.

       -c     Copy the input to the output without any  conversion  whatsoever
              (used  by  lpd  whenever the -l option is passed to the lpr pro-

       -nuser The login name of the user who submitted the job.  Available  to
              subfilters  as  $LPUSER.   If  the  user has an associated GECOS
              entry it will be available as $LPUSERNAME.

       -hhost The host on which the job was submitted.  Available  to  subfil-
              ters as $LPHOST.

              A numeric option passed by lpd; can be set by the user by the -i
              option to lpr.  Although nominally used for the amount of inden-
              tation  requested,  magicfilter makes it available to subfilters
              for any useful purpose as $LPINDENT.

              LPRng  class  (priority)  name.   Available  to  subfilters   as

              Format letter (passed by LPRng only).  When used as input filter
              (if) this will be f, when used as other filter types it will  be
              the option character corresponding to this filter.  Available to
              subfilters as $LPFORMAT.

              The name of the printer job (passed by LPRng  only).   Available
              to subfilters as $LPJOB.

              Copy  count  (passed by LPRng only).  Available to subfilters as

              User name from the banner page (passed by LPRng  only).   Avail-
              able to subfilters as $BANNERNAME.

              Printer name (passed by LPRng only).  Available to subfilters as

              Spool queue name (passed by LPRng only).  Available  to  subfil-
              ters as $LPQUEUE.

              Accounting  information  (passed  by  LPRng only).  Available to
              subfilters as $LPACCT.

              LPRng ``Z-options''.   The  LPRng  lpr  program  supports  a  -Z
              option,  which  can be used to pass arbitrary information to the
              printer   filters.    Available   to   subfilters   as    $ZOPT.

              Write  debugging  output to stdout.  Every --debug increases the
              quantity of debugging output.   ifelse(magicfilter,`magicfilter-

       --dump Write the default magicfilter configuration to stdout.  This can
              be customised and put in @confdir@/ if you wish to
              modify which filetypes magicfilter knows about.)

       --help Prints out a synopsis of the command-line switches supported.,)

       other options
              Any  other options, such as the -w, -l, -x, and -y options typi-
              cally passed by lpd are ignored.

       To run magicfilter from lpd it should be entered as one of the  filters
       in  the  /etc/printcap  file.   Typically,  it will be the input filter
       (if).  Since most version of lpd do not  accept  arguments  entered  as
       part  of  the  filter  name, typically the filter name entered into the
       /etc/printcap file will simply be the name of the  configuration  file,
       which is set executable and starts with the line:

       #! @exedir@/magicfilter

       Most  UNIX  kernels  will  then be able to treat the configuration file
       itself as if it was the actual program.

       For systems which do not support the ``#!-hack'', the filter set in the
       if  entry should point to magicfilter directly, and the accounting file
       (af) entry should point to the configuration file.  This, however, is a
       less general, and hence less desirable solution.

       This version of magicfilter supports the enhanced lpd included with the
       LPRng package from

       Magicfilter has been extensively modified for the 2.0 release, and  has
       very  little  in  common with the old 1.2 magicfilter.  The config-file
       format has changed pretty drastically, and old config  files  will  not
       work anymore.

       Currently,  there is no protection against the pipe or fpipe facilities
       going into an infinite loop.

       H. Peter Anvin <>, David Parsons <>

       printcap(5), magicfilter(5), ifelse(magicfilter,magicfilter-t,.BR  mag-
       icfilter  (5)`,'  ,)dnl  lpr(8),  dvips(1),  grog(1),  gs(1),  gzip(1),

February 2000                    Version 2.0.0                  magicfilter(8)