pod(4)

pod - Printer Object Database (POD) file formats

As shipped in IRIX 6.5.7. Unchanged since IRIX 6.5.

NAME
     pod - Printer Object Database (POD) file formats

DESCRIPTION
     This manual page details the formats for the Printer Object Database
     (POD) files. The POD contains information on the current configuration,
     status and job history of a single printer. Each printer physically
     installed on a system maintains its own POD. An initial set of POD files
     is created by the printer driver developer and installed on the system.
     This initial set of POD files must include a config file representing the
     capabilities of the printer, a status file indicating a typical printing
     state and an empty log file. All subsequent interaction with the POD is
     done through the libpod(3) API. The API provides network transparent,
     mediated access to the POD files.

     A Printer Object Database consists of three separate ASCII text files.
     There is one set of these files for each printer physically installed on
     a system.  The name of each POD file is formed from the printer name and
     the suffix .config, .status and .log, respectively. All POD files are
     located in the directory /var/spool/lp/pod. The information contained in
     each file is summarized below and explained in detail in subsequent
     sections.

     <printer name>.config
                    This file contains detailed information on the printer's
                    capabilities.  The file is created by the driver developer
                    to characterize the printer's capabilities. For example,
                    the possible paper sizes, printer location and available
                    fonts are all specified in this file.  Typically the
                    information in the config file does not change over time.
                    Printer filters and drivers treat the config file as
                    read-only.  The printer install tools may modify the
                    config file at printer installation time to enter site
                    specific information (e.g. printer location) or note the
                    presence of optional equipment (e.g. duplex option or
                    envelope feeder).

     <printer name>.status
                    This file contains information about the current
                    operational status of the printer. The information in the
                    file indicates whether the printer is busy, what type of
                    printing media is installed, and so on. The contents of
                    this file change during every print job. While the driver
                    developer provides an initial copy of the status file, it
                    is the job of the driver to update the file. Typically,
                    printer filter programs treat the status file as read-
                    only.

     <printer name>.log
                    This file contains the print job history for the printer.
                    Information for old jobs as well as the current print job
                    is maintained. Typically, printer filters and drivers
                    append information to the log file while general
                    applications treat the file as read-only.

GENERAL SYNTAX
   Character Set
     <space>:       0x09, 0x20 (<sp>, <ht>)
     <null>:        0x00-0x08, 0x0B, 0x0C, 0x0E-0x1F, 0x7F-0xFF
     <endline>:     0x0A, 0x0D (<nl>, <cr>)
     <separator>:   0x7C ('|')
     <plainchar>:   0x21-0x7B, 0x7D, 0x7E
     <ddigit>:      0x30-0x39 ('0'-'9')
     <hdigit>:      <ddigit>, 0x41-0x46, 0x61-0x66
                    ('0'-'9', 'A'-'F', 'a'-'f')
     <sign>:        0x2B, 0x2D ('+', '-')
     <point>:       0x2E ('.')

   Field Format
     <white>:      <space> [<space>...]
     <word>:       <plainchar> [<plainchar>...]
     <keyword>:    <word> with a specific sequence of <plainchar>
     <keyfield>:   [<white>] <keyword> [[<white> <keyword>]...] [<white>]
     <string>:     [<white>] <word> [[<white> <word>]...] [<white>]
     <int>:        <ddigit> [<ddigit>...]
     <hbyte>:      ["0x" | "0X"] [<hdigit>] <hdigit>
     <float>:      [<sign>] <int> [<point> [<int>]]
                   or
                   [<sign>] <point> <int>
     <array>:      <string> [[<separator> <string>]...]

INPUT PARSING RULES
     The following rules apply when a POD file is parsed by the libpod API.

     o  All <null> characters are ignored; their use is not recommended. This
        provision is intended to avoid errors caused by non-printing
        characters appearing in the POD files.

     o  All input lines are truncated to PD_STR_MAX-1, not counting <null>
        characters and <endline>, which are removed on input. The value of
        PD_STR_MAX is defined in the header file /usr/include/pod.h.

     o  All occurrences of <white> sequences are reduced to a single <sp>
        character.  In addition, <white> appearing at the beginning or end of
        a field is removed.

     o  There are no quoted strings. Quotation marks are treated like any
        other character, and cannot be used to force additional <white> into a
        field.

     o  All fields are checked for correct syntax based on entry type. Failure
        to provide information in the correct format will result in improper
        parsing.

     o  When scanning for <int> or <float> numbers within a field, all
        characters that are not valid within an <int> or <float> are treated
        as <white> (in the case of an <int>, <sign> and <point> are treated as
        <white>). This allows characters to be inserted to improve
        readability. For example, the following are equivalent if two <int>
        items are expected:

        300 300
        300 x 300
        300 by 300
        300,300


     o  Entries containing no characters other than <white> prior to the first
        <separator> or <endline> are treated as null entries and discarded
        without error. These lines may be used as comments simply by placing a
        <separator> prior to any other information.

     o  Blank lines are ignored and may be inserted to improve readability.

     o  <keyfield> matching is done in a case independent manner.

     o  Fields designed to be human readable are not modified, except to
        remove <null> and excess <white>. Case and all <plainchar> sequences
        are preserved.

     o  A <keyfield> may require a long list of items (e.g. Available Fonts).
        To improve readability and avoid the risk of input line buffer
        overflow, these <keyfield> may be repeated. For example, a list of
        fifty Available Fonts items may be broken into two Available Fonts
        entries with 25 items each.  The overall number of items that can be
        specified in a list is limited only by available system memory
        resources.

     o  There is no required entry order. The <keyfield> entries may appear in
        any order within a POD file.

     o  Default values are assumed for certain fields if values have not been
        specified. The values of these defaults should not be relied upon and
        may change in future releases.

CONFIG FILE FORMAT
     This section describes the printer configuration file format. The
     configuration file is installed in /var/spool/lp/pod with the name
     <printer name>.config.

     The general format for config file entries is:

     <keyfield> <separator> [<infofield>] <endline>

     where <infofield> is specified in the table below. The Size Table Entry
     <infofield> has the format <sizeentry> defined as:
     <sizeentry>:   <keyword> <int> <int> <float> <float> <float> <float>
                                           [<hbyte> [<hbyte>]]


     All entries in the config file are optional. Entries that are not
     provided or that have no <infofield> specified will be assigned default
     values. However, since printer capabilities differ, it is recommended
     that entries be omitted and defaults be used only for entries that are
     truly inapplicable (e.g. manual feed or quality modes).

          Key Field            <infofield>              Default
          _______________________________________________________________
          Printer Class        <keyword>                Dumb
          Printer Model        <string>                 Unknown
          Printer Options      <string>                 (empty string)
          Technology           <string>                 Unknown
          Location Code        <keyword>                NONE
          Physical Location    <string>                 Unknown
          Driver Path          <word>                   (see description)
          Port Path            <word>                   /dev/null
          Active Status Path   <word>                   (see description)
          Error Retry Wait     <int>                    10
          Status Update Wait   <int>                    300
          Media Wait           <int>                    300
          Resolution           <int> <int>              300 300
          Minimum Print Area   <float> <float>          (see description)
          Maximum Print Area   <float> <float>          (see description)
          Minimum Addr         <int> <int>              (see description)
          Maximum Addr         <int> <int>              (see description)
          Cost per Page        <float>                  0.0
          Time per Page        <int> [<int>]            0 0
          Number of Colors     <int> [<int>]            1 1
          Quality Modes        <array>                  (0 elements)
          Default QM           <int>                    0
          Manual Capable       <keyword>                No
          Black Substitute     <keyword>                No
          Media Standard       <keyword>                American
          Available Fonts      <array>                  (0 elements)
          Input Source         <array>                  (0 elements)
          Default IS           <int> [,gamma=<float>]   0, gamma=-1.0
          Color Adjustment     <array>                  (0 elements)
          Default CA           <int>                    0
          Media Type           <array>                  (0 elements)
          Default MT           <int>                    0
          Size Table Entry     <sizeentry>              (see description)

     Printer Class       Keyword specifying the class of printer. Available
                         values are:

                         Dumb
                         Raster
                         ColorRaster
                         ColorPostScript
                         MonoPostScript
                         Plotter

                         Obsolete values are:

                         DumbColor
                         Color
                         PostScript


     Printer Model       Manufacturer's description of the printer. For
                         example, Tektronix Phaser II SX or Apple LaserWriter
                         II NTX.

     Printer Options     Installed printer options. For example, 8 Mbytes RAM.

     Technology          Printing technology. For example, ink jet, wax
                         transfer, dye sublimation, color laser.

     Location Code       Site specific keyword identifying the printers
                         physical location. For example, 3U-924.

     Physical Location   Human-readable description of printer's physical
                         location. For example, Bldg. 3 Upper, Room 924.

     Driver Path         Full pathname of printer driver. The default value
                         for this entry is the full pathname of the POD config
                         file with the suffix .config removed.

     Port Path           Full pathname of the I/O port to which the printer is
                         physically connected.  For example, /dev/plp for a
                         parallel printer, /dev/ttyd2 for a serial printer and
                         /dev/scsi/sc0d6l0 for a SCSI printer.

     Active Status Path  Full pathname of the POD status file. The value of
                         this entry is not used by the libpod API. The value
                         of this entry is always set by the API to
                         PDpod_path/<printer name>.status. Refer to the
                         libpod(3) man page for additional information.

     Error Retry Wait    Number of seconds to wait after an before attempting
                         to resume printing after an error has occurred.

     Status Update Wait  Number of seconds to between updates of the POD
                         status file when no error has occurred.

     Media Wait          Number of seconds to wait for manual feed or print
                         media changes before default media source is used.

     Resolution          Maximum horizontal and vertical printer resolution in
                         dots per inch (dpi).  For printers that allow
                         multiple resolutions, the status file Printer Options
                         entry should be parsed for the CurrentRes keyword.
                         This keyword indicates the current printer
                         resolution. If the keyword is not found, the config
                         file Resolution entry should be used.

     Minimum Print Area, Maximum Print Area
                         Minimum and maximum printable area dimensions
                         expressed in inches. The default values for these
                         entries assume an A size page (8.5 by 11.0 inches) in
                         portrait orientation with 0.5 inch margins. This
                         gives a printable area of 7.5 by 10.0 inches (i.e.
                         7.5 10.0). The minimum and maximum values are
                         identical in the default case. If a Page Size Table
                         has been specified, the values for this entry are
                         derived from it.

     Minimum Addr, Maximum Addr
                         Minimum and maximum printable area dimensions
                         expressed in dots. The default values for these
                         entries assume an A size page (8.5 by 11.0 inches) in
                         portrait orientation with 0.5 inch margins. At 300
                         dpi this gives a printable area of 2250 by 3000 dots.
                         The minimum and maximum values are identical in the
                         default case. If a Page Size Table has been
                         specified, the values for this entry are derived from
                         it.

     Cost per Page       Cost per printed page in local currency. For example,
                         0.50 for 50 cents per page.

     Time per Page       The average and, optionally, maximum time to print a
                         page, in seconds.  If the maximum time is not
                         provided, it is assumed to be the same as the average
                         time.

     Number of Colors    The minimum and, optionally, maximum number of colors
                         that are available on the printer. If the maximum
                         number of colors is not provided, it is assumed to be
                         the same as the minimum. A monochrome printer or
                         printer ribbon would provide one color. A CMY printer
                         or ribbon would provide three colors. Note that this
                         field should contain only the number of colors
                         available on the printer. The colorspace, depth and
                         data format are provided in the Number of Colors
                         entry in the status file.

     Quality Modes       A list of output quality modes available on the
                         printer. For example, draft, and letter.

     Default QM          The index into the Quality Modes list indicating the
                         default quality mode. This index is based at one
                         rather than zero. Thus, the first quality mode in the
                         list is at position 1, the second at 2, and so on. If
                         there are no quality modes specified, this entry
                         should either be left empty or set to 0.

     Manual Capable      Keyword yes indicating that the printer is capable of
                         being manually fed or no indicating that it is not.
                         Note that for a printer to be considered manual
                         capable its driver must support manual feeding (the
                         -m driver option in the Impressario Filter/Driver
                         Specification) in addition to the printer hardware
                         allowing manual feed.

     Black Substitute    Keyword yes indicating that the printer should
                         substitute true black for composite black or no
                         indicating that it should not.

     Media Standard      Keyword indicating the paper measurement standard.
                         Keywords are American or Metric.

     Available Fonts     This entry contains a list of font names representing
                         the fonts available on the printer.

                         For printers with built-in PostScript interpreters
                         this list should include only those fonts built into
                         the printer (typically a set of 35 standard fonts).

                         For raster printers the PostScript interpretation is
                         performed on the printer host machine. Thus, the
                         fonts listed for these printers should correspond to
                         the names of the font outline files installed on the
                         printer host. There are two methods for specifying
                         the font names. The names can be listed individually
                         or a full path to the directory where the outline
                         fonts are stored can be specified. The two methods
                         can be mixed.  When a directory is specified, the
                         names of the files in that directory are assumed to
                         be the names of the fonts. To exclude filenames from
                         the directory, specify the name of the file to be
                         excluded with a leading '!'. The filenames to exclude
                         must appear on the same line as the directory
                         containing the filename to be excluded. The following
                         is a valid Available Fonts list:

                         NewYearRoman | /usr/fonts | !fonts.dir

                         This entry indicates that the fonts available on the
                         printer are NewYearRoman and all filenames in the
                         directory /usr/fonts with the exception of fonts.dir.
                         Note that font names must not contain any whitespace.
                         To logically AND a list of font names, specify the
                         name of the file or directory (to AND with) using a
                         leading '&'.  This is useful when supporting a
                         printer with built-in PostScript.  In this case, you
                         would list the fonts supported by the printer and
                         then logically AND that list against the fonts
                         installed on the system.  The result is a list of
                         valid fonts that can be used with utilities like
                         text2ps(1) which are also supported by the printer
                         (text2ps(1) requires the font metric be installed on
                         the system so it can generate page and line breaks
                         correctly).  The following is a valid Available Fonts
                         list:

                         NewYearRoman | &/usr/lib/DPS/AFM

                         This simple example indicates that the font available
                         on the printer is NewYearRoman and it should be used
                         if the corresponding font is found in
                         /usr/lib/DPS/AFM.

     Input Source        A list of printer input sources. The primary use of
                         this entry is to list the image source devices that
                         have been characterized for printer color correction.
                         A common input device would be the monitor. An
                         Example entry is Sony 16" Monitor.

     Default IS          The index into the Input Source list indicating the
                         default input source. This index is based at one
                         rather than zero. Thus, the first source in the list
                         is at position 1, the second at 2, and so on. If
                         there are no input sources specified, this entry
                         should either be left empty or set to 0. When used
                         for printer color correction, this entry can also be
                         used to specify the default device's gamma correction
                         value. The gamma value is specified after the default
                         input source index as in the following example:

                         1, gamma = 1.000

     Color Adjustment    A list of color adjustment methods available for the
                         printer. The color adjustment methods perform color
                         correction between the current input source and the
                         printer.  An example entry is:

                         None | Fix Blue | Gamma Correct

     Default CA          The index into the Color Adjustment list indicating
                         the default adjustment method. This index is based at
                         one rather than zero. Thus, the first method in the
                         list is at position 1, the second at 2, and so on. If
                         there are no adjustment methods specified, this entry
                         should either be left empty or set to 0.

     Media Type          A list of the output media types supported by the
                         printer. Typical items would be Bond Paper and
                         Transparency Film.

     Default MT          The index into the Media Type list indicating the
                         default media.  This index is based at one rather
                         than zero. Thus, the first media in the list is at
                         position 1, the second at 2, and so on. If there are
                         no media types listed, this entry should either be
                         left empty or set to 0.

     Size Table Entry    This entry describes a particular media size that is
                         supported by the printer.  Typically these is one
                         Size Table Entry per supported media size (e.g.  an
                         entry for A size and B size). The media size entry
                         has seven required fields and two optional fields.
                         All fields are separated by whitespace.

                         The first field contains the media size name keyword
                         (e.g. A). The list of possible media sizes can be
                         found in the file /usr/include/pod.h. The media size
                         keyword is simply the media size name listed in pod.h
                         with the PD_SIZE_ prefix removed. The size names
                         listed in pod.h with the suffix _LAND indicate
                         landscape orientation and should not not be used as a
                         media size keyword. Media with landscape orientation
                         is indicated by the width and height fields of the
                         size table entry.

                         The next two fields are the media imageable width and
                         height expressed in dots.  Typically the imageable
                         dimensions are derived by subtracting the margins
                         from the total media size and converting the result
                         to dots.

                         The next two fields are the overall media width and
                         height expressed in inches.

                         The last two required fields are the left and top
                         margins expressed in inches.

                         The first optional field specifies the printing
                         raster direction. Refer to pod.h for the values that
                         may be specified in this field.

                         The second optional field is the media validation
                         mask. This mask can be used to differentiate among
                         media entries that have the same media name but
                         differ in other respects (e.g. resolution). The field
                         is a bit mask and so to fully differentiate among
                         similar entries the values must be powers of two.
                         Refer to the PDReadInfo(3) man page for more
                         information on the use of this field.

                         A default Size Table Entry is always add to the end
                         of the table when it is read by libpod. This default
                         entry is:


                         A 2250 3000  8.500 11.000 0.500 0.500 0x00 0xFF

STATUS FILE FORMAT
     This section describes the printer status file format. The status file is
     installed in /var/spool/lp/pod with the name <printer name>.status.

     The general format for config file entries is:

     <keyfield> <separator> [<infofield>] <endline>

     where <infofield> is specified by the table below. The Number of Colors
     <infofield> has the format <dataentry> defined as:

     <dataentry>:   <int> [<keyword> <int> <keyword>]

     The Error, Warning and Information message <infofield> has the format
     <msgentry> defined as:

     <msgentry>:   <hbyte> [<hbyte> [<hbyte>]] <separator> <string>


     All entries in the status file are optional. Entries that are not
     provided or that have no <infofield> will be assigned default values.
     However, since the status file is the only means to indicate printer
     status to the user, it is strongly suggested that a complete status file
     be provided by the developer and that the printer driver update the
     status file to reflect the printer's current status.

              Key Field            <infofield>        Default
              ______________________________________________________
              Operational Status   <keyword>          Idle
              Media Size           <keyword> [Land]   A
              Media Type           <keyword>          Paper
              Number of Colors     <dataentry>        1 k 1 chunky
              Printer Options      <string>           (empty string)
              Validation Mask      <hbyte>            0
              Error                <msgentry>         (no message)
              Warning              <msgentry>         (no message)
              Information          <msgentry>         (no message)

     Operational Status  Keyword specifying the current operational status of
                         the printer. The possible values are:

                         Idle
                         Busy
                         Faulted
                         Unavailable


                         The status Faulted indicates that there is a problem
                         with the printer or with communication to the
                         printer. The Unavailable designation is similar to
                         the Faulted state and is intended to provide an
                         additional problem description state.

     Media Size          Keyword indicating the currently loaded media size.
                         The media size keywords are listed in the file pod.h.
                         The keyword is the size name listed with the PD_SIZE_
                         prefix removed. The size names listed in pod.h with
                         the suffix _LAND indicate landscape orientation and
                         are specified in the entry by the keyword Land.

     Media Type          This keyword indicates the currently loaded media
                         type. The value is Paper, Transparency, Other or
                         Unknown.

     Number of Colors    This field specifies not only the number of output
                         colors but the colorspace, depth and organization of
                         the output data. There are one required and three
                         optional fields. For proper operation of printing
                         filters it is strongly recommended that the optional
                         fields be specified.

                         The first field is required and specifies the number
                         of output colors that the printer can currently
                         print. If only this field is present the following
                         defaults will apply:


                                   # Colors   Color   Depth   Org.
                                   _________________________________
                                   1          k       1       chunky
                                   3          cmy     1       chunky
                                   4          cmyk    1       chunky

                         The optional (but recommended) three fields
                         explicitly specify the output colorspace, depth and
                         organization of the output data. The colorspace field
                         is one of:

                         k
                         cmy
                         cmyk
                         w
                         rgb
                         ymc
                         ymck
                         kcmy

                         The depth field specifies the number of bits per
                         color component and may be one of 1, 4, 8. The data
                         organization field is one of:

                         chunky
                         planar

                         An example output specification is:

                         3 rgb 4 planar

                         This specifies a three color RGB output with four
                         bits per component (12 bits total) and a planar data
                         organization.  Refer to the libstiff(3) man page for
                         additional information on raster data output formats.

     Printer Options     This field can be used to describe currently
                         installed optional equipment or configurations. This
                         field is also used to indicate the current printer
                         resolution for printers that allow multiple output
                         resolutions. To indicate the current resolution the
                         string:

                         CurrentRes = <int> x <int>

                         is specified. The first integer is the horizontal
                         resolution in dots per inch and the second integer is
                         the vertical resolution in the same units.  The
                         current resolution values are used by printing
                         filters such as the PostScript interpreter psrip(1).

     Validation Mask     The validation mask can be used to select among media
                         size entries in the config file that have the same
                         media name but differ in other respects (e.g.
                         resolution). The field is a bit mask and so to fully
                         differentiate among similar entries the values must
                         be powers of two. The default value, 0, will select
                         the first media entry whose name matches the
                         specified media name. Refer to the PDReadStatus(3)
                         man page for more information on the use of this
                         field.

     Error, Warning, Information
                         These three entries indicate messages written by the
                         printer driver to provide information to the printer
                         user regarding the state of the printer.  The three
                         hex bytes provide a message code. The available
                         message codes are listed in pod.h (PD_ERROR_*). The
                         low order three bytes of the codes listed in pod.h
                         are the codes specified in this field. The high order
                         byte of the code is implied by the first field (i.e.
                         Information = 00, Warning == 01, Error = 02). The
                         last field is a string providing the text for the
                         message. There can be up to PD_MESSAGE_MAX (see
                         pod.h) message entries in a status file.  An example
                         of a complete message entry is:

                         Information | 01 00 00 | version: driver = 00.00


LOG FILE FORMAT
     The log file is not currently implemented. Developer's should supply an
     empty file in /var/spool/lp/pod with the name <printer name>.log.

FILES
     /var/spool/lp/pod/<printer name>.config   Configuration file
     /var/spool/lp/pod/<printer name>.status   Status file
     /var/spool/lp/pod/<printer name>.log      Log file

SEE ALSO
     libpod(3), podd(1M), libstiff(3), psrip(1)