OpenSolaris

You are not signed in. Sign in or register.

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/
psutils p17 support for handling reasonably behaved PostScript files.
ImageMagick http://sourceforge.net/projects/imagemagick/
ImageMagick 5.4.7 support for image format conversion
Foomatic
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.html Foomatic 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