Where are the Bits?

 The Solaris print system source code is is comprised of components from various sources. At the core of the print system is a Unix System V (r4) based spooler. Along with the spooler are client applications to make requests of and manage the spooler, filters to perform document translation, back-end processing software to perform final document transformation and device (printer) communication. To obtain a complete set of functionality, all sources are required.

Where to find the packages.

 The OpenSolaris code base can be found at http://cvs.opensolaris.org/source/xref/usr/src/
 and contains the following Solaris Printing components:

 |Solaris LP code

usr/src/cmd/lp

Original Solaris LP code base.  Contains spooler, postscript filters, terminfo files, PAPI interface code, and more
Solaris PostScript filters
usr/src/cmd/lp/postscript
Base postscript filters
Solaris LP spooler
usr/src/cmd/lp/cmd/lpsched
Base Solaris LP spooler
PAPI Solaris LP interface code
usr/src/cmd/lp/lib/papi
Support for applications using the PAPI to interact with the Solaris LP spooler
Legacy RFC-1179 to lpsched translator
usr/src/cmd/lp/cmd/bsd-adaptor
Support for translating legacy protocol listener requests to lpsched messages.
Legacy backend processing scripts
usr/src/cmd/lp/model/[net]standard
standard/netstandard interface scripts use for several years to perform final job processing and send job data to local and network attached printers
Modified backend processing scripts
usr/src/cmd/lp/model/*_foomatic
modified versions of the *standard interface scripts that use foomatic for final job data transformation to a printer ready format.
New backend processing script
usr/src/cmd/lp/model/uri
New backend processing script that optionally uses foomatic for final job data transformation to a printer ready format and uses helper modules (like smbspool) to send job data to a local or network attached printer.
Local Printer I/O handler
usr/src/cmd/lp/model/lp.cat.c
incredibly simplistic local printer I/O handler
Local PostScript Printer I/O handler
usr/src/cmd/lp/filter/postscript/postio
more sophisticated local printer I/O handler
Network Printer I/O handler
usr/src/cmd/lp/model/netpr
network printer I/O handler for printers that support raw sockets or "lpd" protocol
Solaris Client code
usr/src/cmd/print
Client comands (lp/lpr/lpstat/lpq/cancel/lprm/...), in.lpd rfc-1179 protocol listener, print manager, and more.  The client commands will be replaced with PAPI based implementations in short order.
Legacy RFC-1179 listener
usr/src/cmd/print/gateway
Legacy RFC-1179 protocol listening service that will ultimately be replaced with a PAPI based version.
Solaris PrintMgr code
usr/src/cmd/print/printmgr
JAVA based configuration management GUI that eases queue creation/modification.
Printer probe
usr/src/cmd/print/printer-info
A program to probe USB and ECPP connected printers for Make/Model information used by the printmgr.
Various scripts
usr/src/cmd/print/scripts
Various scripts including retreival of information from the PPD cache file used by the printmgr.
Solaris common client library
usr/src/lib/print
Common code for client commands and client side management commands.  As PAPI based client commands integrate, much of this code will dissappear.
Name Service Switch support
usr/src/lib/nsswitch/*/common/getprinter.c
Name Service Switch support for client commands to get configuration data from a variety of sources including network repositories

 The Free Standard Group OpenPrinting API (PAPI) code base can be found at
http://cvs.sf.net/viewcvs.py/openprinting/papi and contains the following components:

 |PAPI Shared routines

papi/source/libpapi-common/

Common routines used by most, if not all, of the PAPI support.  This includes an implementation of the attributes interface and several helper functions
PAPI Dynamic library
papi/source/libpapi-dynamic/
PAPI library that provides names service lookup support and redirection to alternate PAPI implementations.
PAPI RFC-1179/LPD support
papi/source/libpapi-lpd/
PAPI support for interacting with RFC-1179/LPD protocol servers.
PAPI CUPS support
papi/source/libpapi-cups/
PAPI support for interacting with CUPS spooler using libcups interfaces.
PAPI IPP support
papi/source/libpapi-ipp/
PAPI support for interacting with IPP based protocol servers.  This includes servers like Solaris LP, CUPS, WinXP, and more.
Core IPP protocol library
papi/source/libipp-core/
IPP encoding/decoding and on the wire support
IPP listening service operations library
papi/source/libipp-listener/
Server side IPP operations support
Apache IPP listener module
papi/source/mod_ipp
Apache glue module for passing IPP requests to the IPP listener library and ultimately the print service.  (supports both Apache 1.X and 2.X)
BSD & SYSV commands
papi/source/bsd-sysv-commands
Replacement implementations of common BSD & SYSV print commands using the PAPI for print service interaction.
 (lpr/lpq/lprm/lpc)
 (lp/lpstat/cancel/accept/reject/enable/disable)
Example code using the PAPI
papi/source/examples/
Sample code that shows how to use the PAPI
PAPI specification and documentation
papi/docs
PAPI specification and documentation about code in the source base.

 The balance of the components can be found in various Open Source repositories throughout the internet.

 |GhostScript

http://www.cups.org/espgs/index.php

ESP Ghostscript 7.07.1 converts PostScript job data to a variety of printer ready formats.
a2ps
http://www.gnu.org/software/a2ps/
a2ps 4.13 converts from various formats to PostScript
gimp-print (aka gutenprint)
http://gimp-print.sourceforge.net/
http://sourceforge.net/projects/gutenprint/
gimp-print 4.2.6 support for a variety of different printers used with GhostScript
HPIJS
http://hpinkjet.sourceforge.net/
hpijs 1.6 support for HP printers used with GhostScript
psutils
http://freshmeat.net/projects/psutils/
http://linuxprinting.org/foomatic.html
psutils p17 support for handling reasonably behaved PostScript files.
ImageMagick http://sourceforge.net/projects/imagemagick/
http://linuxprinting.org/foomatic.html
ImageMagick 5.4.7 support for image format conversion
Foomatic
http://linuxprinting.org/foomatic.html
http://linuxprinting.org/foomatic.html
Foomatic 3.0.2 is the document format converter from hell that makes use of all of these components, as well as annotated PPD files, to convert print job data to a printer ready format and folds in capability information on the way out to the printer.
Foomatic ppd http://linuxprinting.org/foomatic.htmlFoomatic annotated PPD files with instructions on how to convert to a printer ready format and fold in printer capability information.
 from  2004-03-04
SAMBA
http://samba.org/
Samba 3.0.4 provides support for Windows clients to access printers on a Solaris host and Solaris a means of sending print job data to printers  connected to Windows hosts using native windows protocols.
GNOME (libgnomeprint)
http://cvs.gnome.org/.../libgnomeprint/.../PAPI/
GNOME Application support to print via the PAPI.
Apache
http://www.apache.org/
Apache Web server used for IPP support
last modified by admin on 2009/10/26 12:10
Collectives
Project


© Sun Microsystems Inc. 2009
XWiki Enterprise 1.8.2.19075 - Documentation
Terms Of Use | Privacy | Trademarks | Copyright Policy | Site Guidelines | Site map | Help
Your use of this web site or any of its content or software indicates your agreement to be bound by these Terms of Use.