magicfilter man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

MAGICFILTER(5)							MAGICFILTER(5)

NAME
       magicfilter - format of printer description files.

DESCRIPTION
       The printer description files are simple m4 macro files that are merged
       with a template-file inside magicfilter to produce a list of rules  for
       printing out files of various types.

   PRINTER DESCRIPTION FILES
       A  printer  description file provides macro definitions for magicfilter
       to merge with its built-in configuration file.  The macros that	magic‐
       filter needs are as follows

       define(Vendor,`Vendor')dnl
	      This  is	the  company  that  makes the printer in question (not
	      needed for generic filters, like the postscript filters.)

       define(Printer, `Printer')dnl
	      This is a short description of  the  printer.   For  a  specific
	      printer,	it  is the name of the printer (eg: 600 DPI LaserJet 4
	      series with Postscript ) and  for	 a  generic  printer,  it's  a
	      description  of what the printer is (eg: 600 DPI PostScript-only
	      printer )

       define(DPI,`DPI')dnl
	      This is the dots per inch that the printer is capable of	print‐
	      ing.

       define(POSTSCRIPT,`true')dnl
	      This  is	set  to	 true if the printer handles PostScript, false
	      otherwise.

       define(PCL,`true')dnl
	      This is set to true if the printer handles H-P PCL.

       define(PJL,`true')dnl
	      This is set to true if the printer handles H-P Printer Job  Lan‐
	      guage.

       define(PCL5E,`true')dnl
	      This is set to true if the printer supports PCL5E.

       define(DEVICE,`device')dnl
	      This  is	the  device  name to use when filtering through Ghost‐
	      Script.  This (or PS_OPTIONS, if you're using some  sort	of  gs
	      script) is needed to print most formats on non-postscript print‐
	      ers.

       define(TEXT,`false')dnl
	      Set this to false if your printer cannot handle text,  but  must
	      have it formatted in some way.  PostScript-only printers require
	      this, and use pstext or enscript to format plain text for print‐
	      ing.

       define(PRINTER,`command')dnl
	      This option makes magicfilter send all printer-ready output (see
	      HANDLE_TEXT, below, for the exception to this rule)  to  command
	      for printing instead of just dumping the printer-ready output to
	      stdout.  This is useful when you wish to use a networked printer
	      but your printer server software doesn't allow you to put a fil‐
	      ter on a remote printer.

       define(HANDLE_TEXT,`action command')dnl
	      If the printer needs any special processing to do text, it  will
	      be set here.  This is used on H-P printers, for example, to spit
	      out PCL reset codes before printing out plain text.   NOTE  that
	      HANDLE_TEXT  overrides  PRINTER  --  this is so you can redirect
	      output to different printer devices for output that  needs  pro‐
	      cessing  and  output  that  is  plain text.  Also note that HAN‐
	      DLE_TEXT does not use the same sort  of  argument	 that  PRINTER
	      does;  PRINTER  expects  a command (like lpr -Pfoolp) while HAN‐
	      DLE_TEXT expects an action followed by a	command	 (like	filter
	      'printer reset' 'page flush'),  and  that the action must be one
	      of filter, ffilter, cat, or pipe.	  Any  other  action  is  very
	      likely to result in a printer filter that takes a lot of time to
	      reject your printer jobs.

   THE CONFIGURATION FILE
       The configuration file is used by magicfilter to redirect various types
       of data to the various conversion utilities.  The configuration file is
       fed to m4 along with the printer description file mentioned in the sec‐
       tion  above,  and  is  parsed  by magicfilter to figure out what can be
       printed	to  a  file.   The  unformatted	  printer   description	  file
       (/usr/local/etc/magicfilter.cf),	 or  a internal default template is an
       m4 sourcefile that contains a sequence of lines of the form:

       /pattern/ action/hint/	arguments

       where the /pattern/ is compared against what file (1)  reports  as  the
       filetype,  action  is  what should be done with it, /hint/ (optionally)
       tells magicfilter what format the processed file is, and arguments  are
       passed to the action.

       Blank  lines and lines with a hash mark (#) as the first nonblank char‐
       acter are ignored.  A line may be continued onto the next line by  end‐
       ing the line in a backslash (\).

       For  ambiguous  matches, the first match is used.  Hence, the most spe‐
       cific match should always be placed first in the	 file.	 There	is  no
       default	pattern	 --  if the file type is not matched, magicfilter will
       reject the print request.  If you wish a default pattern, you  can  use
       an empty pattern to do something like:

       //   pipe /usr/local/libexec/magicfilter/textonly

       To  use	Ed Lim's textonly program to print the file out after a little
       paranoia to make sure that it's not a binary.

   FACILITIES
       magicfilter provides the following options for the  facility  field  in
       the configuration file:

       cat [prefix [suffix]]
	      Copy  the	 input	to the output without any conversion, like the
	      cat command.  If the optional  prefix  and  suffix  strings  are
	      specified,  they	are  transmitted  to  the  printer immediately
	      before and after the data itself.	 The prefix and suffix strings
	      can  include escape sequences like \e (escape) To specify a suf‐
	      fix without a prefix, specify an empty prefix string enclosed in
	      double quotes (i.e. "").

       text [prefix [suffix]]
	      Copy the input to the output, but add carriage return characters
	      before every line feed and form feed character in the file,  and
	      a	 line  feed-form feed sequence at end of file.	The prefix and
	      suffix arguments are treated the same way as for the cat	facil‐
	      ity; the suffix, if present, is added after the final line feed-
	      form feed sequence.

       postscript
	      Same as the text facility, except	 add  an  ASCII	 EOT  (Ctrl-D)
	      character	 to  the  end  of  the	data.	This lets a PostScript
	      printer know that the end of the job has been reached.  This  is
	      functionally equivalent to the command

	      text "" \004

       ignore Ignore the job; do not provide any output whatsoever.

       reject message
	      Same  as	the ignore facility, but attempt to send an email mes‐
	      sage to the user who submitted the job to inform that a job  has
	      been rejected and why.

       filter command
	      Run  the	given  command, feeding it the input data, and sending
	      the output data  to  the	printer.   The	environment  variables
	      LPUSER,  LPHOST, and LPINDENT are set to the values of the user,
	      host and indent options passed to magicfilter.   To  get	around
	      the way some filters ( ghostscript) promiscuously mix output and
	      error messages when they direct their output to stdout,  setting
	      the  magic cookie ${FIFO} in the argument list of a filter ( for
	      postscript, -sOutputFile=${FIFO}) will cause magicfilter to gen‐
	      erate  a fifo and copy from that fifo to stdout, redirecting the
	      stdout from the filter to stderr instead.	 Since the command  is
	      fed  to /bin/sh it may contain shell special characters, and the
	      sequences $LPUSER, $LPHOST, and $LPINDENT can be used to	access
	      the values of the passed environment variables.  If the lpd dae‐
	      mon on the system is LPRng, the following environment  variables
	      are  also	 available,  see  the  OPTIONS	section	 for  details:
	      LPCLASS,	LPFORMAT,  LPJOB,   LPCOPIES,	BANNERNAME,   PRINTER,
	      LPQUEUE, LPACCT, and ZOPT.

       pipe command
	      Same  as the filter facility, except that the output data is fed
	      back into magicfilter for reprocessing.  This is used for exter‐
	      nal  filter  programs  which  themselves do not produce a format
	      that the printer can accept, but which can be  futher  processed
	      to obtain such a format.

       ffilter command

       fpipe command
	      Same  as	the  filter  and pipe facilities, respectively, except
	      that the input is written to a temporary file before  being  fed
	      to the filter program given by command.  This is useful for pro‐
	      grams which require seekable input, such as dvips, or which need
	      to  do  multiple	passes	over an input file, such as grog.  The
	      environment variable FILE is set to the name  of	the  temporary
	      file  (and,  like the other ones, it can be accessed on the com‐
	      mand line as $FILE).

HINTS
       Using the pipe facility together with zcat or gunzip lets you transpar‐
       ently print compressed files.

       The pbmplus or netpbm collections of image conversion utilities contain
       a large number of very useful external filter programs.

       You will probably  want	to  examine  the  sample  configuration	 files
       included with the magicfilter distribution before creating your own.

       Note  that the .def files are processed by m4 so you need to pay atten‐
       tion to what they contain if you write your own.	  In  particular,  you
       should  carefully  avoid	 using constructs that look like m4 macros and
       you need to use the escapes \{ for (, \} for ), \- for ', and \+ for `.
       Failing	to  do	that may result in unexpected things happening to your
       printer (most likely nothing printing with no error  messages  at  all,
       but  it's  equally  possible  that the printer will print something you
       don't particularly want it to print.)

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

       Magicfilter  is developed with some fairly ancient and creaky printers,
       so many of the fancier features supported here  are  less  well	tested
       than I would like.

       The  documentation  for	the  reject  action  lies when it says that it
       attempts to send mail to the person who sent the rejected job.

AUTHOR
       H. Peter Anvin <hpa@zytor.com>, David Parsons <orc@pell.chi.il.us>

SEE ALSO
       printcap(5), lpr(8), dvips(1), grog(1), gs(1), gzip(1), troff(1).

2002/12/14			 Version 2.3.h			MAGICFILTER(5)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net