Comparar commits
1 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| 8047cace9b |
+22
-387
@@ -1,392 +1,6 @@
|
||||
CHANGES.txt - 08/04/2000
|
||||
CHANGES.txt - 03/13/2000
|
||||
------------------------
|
||||
|
||||
CHANGES IN CUPS v1.1.2
|
||||
|
||||
- Makefile/configure fixes
|
||||
- RPM spec file and EPM list file fixes
|
||||
- The cupsTempFile() function now uses a different
|
||||
algorithm for generating temp files and "reserves"
|
||||
them to avoid possible security exploitation.
|
||||
- Now use /dev/random (if available) to seed the random
|
||||
number generator for certificates.
|
||||
- The /var/spool/cups and /var/spool/cups/tmp directories
|
||||
were incorrectly owned by root; they are now owned by
|
||||
the filter user, typically "lp".
|
||||
- The scheduler now resets the permissions on the spool
|
||||
and temp directories as needed to match the filter
|
||||
user.
|
||||
- Now expose ppdCollect() as an externally callable
|
||||
function.
|
||||
- The image filters now support filtering from the
|
||||
standard input.
|
||||
- The imagetoraster filter now collects all printer
|
||||
options and job patch files and applies them to the
|
||||
page header as needed.
|
||||
- Added format and banner options to LPD backend.
|
||||
- The send-document operation didn't start a job
|
||||
immediately when last-document was true.
|
||||
- The set-job-attributes operation didn't correctly
|
||||
replace the current job-hold-until value.
|
||||
- Removed the option wrapper code from ppdEmit() and
|
||||
friends since it caused problems with Ghostscript
|
||||
and many PS printers.
|
||||
- Was setting TZ environment variable twice for job
|
||||
filters.
|
||||
- Added syslog logging in cups-lpd to aide in
|
||||
debugging problems.
|
||||
- The HP-UX parallel port backend did not list the
|
||||
available parallel ports on some systems (printf
|
||||
calling problem...)
|
||||
- The lp and lpr commands overrode user options if
|
||||
-d/-P were specified after -o.
|
||||
- The scheduler would crash with a */* filter.
|
||||
- Added support for a "default" filter for unknown file
|
||||
types. The example provided in the mime.types and
|
||||
mime.convs file prints unknown files as if "-oraw" was
|
||||
specified for the job. This functionality is disabled
|
||||
by default.
|
||||
- The "compatibility" mode fix for older backends did not
|
||||
work for smbspool. Added a workaround for it.
|
||||
- The HP-GL/2 filter didn't perform the right pen scaling
|
||||
with some files and the "fitplot" option.
|
||||
- New Software Performance Specification document that
|
||||
describes the memory, disk, and CPU usage of all the
|
||||
CUPS software.
|
||||
|
||||
|
||||
CHANGES IN CUPS v1.1.1
|
||||
|
||||
- The pstoraster Makefile still referenced one of the
|
||||
old PDF filter files.
|
||||
- The filter Makefile used INSTALL_DATA instead of
|
||||
INSTALL_LIB to install the CUPS image library.
|
||||
- The administration CGI didn't work properly with
|
||||
network devices.
|
||||
- The BrowseACL variable was not updated after the
|
||||
cupsd.conf file was loaded.
|
||||
- The lpd mini-daemon didn't support printer instances.
|
||||
- Now use a default umask of 077 for child processes.
|
||||
- Now put temp files in /var/spool/cups/tmp for child
|
||||
processes and the root user, unless TMPDIR or TempDir
|
||||
is defined otherwise.
|
||||
- cupsGetPPD() no longer uses easy-to-guess filenames.
|
||||
- The CUPS-Delete-Class and CUPS-Delete-Printer
|
||||
operations now save classes.conf file as needed.
|
||||
- The lppasswd command wouldn't add a user.
|
||||
- The ppdOpen() function could cause a segfault if a
|
||||
0-length PPD file was read.
|
||||
- The image filters were not handling images with
|
||||
different X and Y resolutions properly.
|
||||
- The imagetoraster filter defaulted to RGB output
|
||||
instead of black output like pstoraster.
|
||||
- The pstops filter didn't handle binary data properly.
|
||||
- The pstops filter didn't handle copies properly for
|
||||
PS files lacking DSC comments.
|
||||
- The pstops filter now appends %%EOF to the end of
|
||||
documents if they don't have it.
|
||||
- The cupsGetPPD() function didn't work with remote
|
||||
printers lacking the @server in the name.
|
||||
- The configure script didn't work right when only
|
||||
--prefix was specified.
|
||||
- The ppdEmit() code now wraps all printer commands so
|
||||
that buggy PostScript printers will still print a file
|
||||
after receiving an option that isn't available.
|
||||
- Fixed the DeskJet margin bug, and disabled 600dpi
|
||||
color mode until it can be fixed.
|
||||
- The cupsAddDest() function didn't sort instances
|
||||
correctly in all cases.
|
||||
- The time-at-xyz attributes now expand to the date and
|
||||
time in banner files.
|
||||
|
||||
|
||||
CHANGES IN CUPS v1.1
|
||||
|
||||
- Documentation updates.
|
||||
- Configuration script updates.
|
||||
- Didn't map charset and language value strings to lowercase
|
||||
and _ to - as required by SLP and IPP.
|
||||
- ppdLoadXYZ() didn't add the list of available fonts to the
|
||||
ppd_file_t structure.
|
||||
- The text filter common code was freeing the PPD file data
|
||||
before it was used.
|
||||
- The text filter now embeds missing fonts.
|
||||
- The CGI interface now maps local access to the server to
|
||||
the localhost address.
|
||||
- The HP-GL/2 filter didn't use the specified (or default)
|
||||
color ranges, resulting in strange colors.
|
||||
- The HP-GL/2 filter didn't default to no input window, which
|
||||
caused unnecessary clipping of plots.
|
||||
- Integrated Xpdf's pdftops filter into CUPS, which is a
|
||||
lightweight and reliable replacement for Ghostscript's
|
||||
PDF support.
|
||||
- Removed all PDF support from Ghostscript.
|
||||
- Updated HP driver to set top margin; this seems to fix
|
||||
the offset problem seen on HP DeskJet printers.
|
||||
- Fixed dependencies on the ZLIB and JPEG libraries in
|
||||
pstoraster.
|
||||
- The lpr command wasn't using the lpoptions defined by
|
||||
the user.
|
||||
- The lpr command would segfault if the CUPS server was
|
||||
not running.
|
||||
- The top-level makefile was not installing the CUPS
|
||||
initialization script. It now does so if it sees there
|
||||
is an init.d directory in /sbin, /etc/rc.d, or /etc.
|
||||
- "lpstat -v all" didn't work.
|
||||
- pstoraster would crash on some platforms doing the
|
||||
setpagedevice operator.
|
||||
- The web administration interface now allows you to set
|
||||
the default banner pages.
|
||||
- Images can now be positioned on the page using the new
|
||||
"position" option.
|
||||
- The AccessLog, ErrorLog, and PageLog directives now
|
||||
support "%s" to insert the server name.
|
||||
- Added a new BrowseShortNames directive to allow for
|
||||
short remote printer names ("printer" instead of
|
||||
"printer@server") when possible.
|
||||
- The scheduler could crash if given an invalid PPD file
|
||||
with no PageSize attributes.
|
||||
- Updated the serial, parallel, and usb backends to do
|
||||
multiple writes and ignore ioctl() errors as needed;
|
||||
this should fix problems with serial printing on old
|
||||
serial drivers and with the UltraSPARC parallel port
|
||||
driver under Solaris 2.7.
|
||||
- Now propagate LD_LIBRARY_PATH to child processes from
|
||||
cupsd.
|
||||
- New DataDir directive for installing in alternate
|
||||
locations.
|
||||
- New CUPS_SERVERROOT and CUPS_DATADIR environment
|
||||
variables to specify installation directories as
|
||||
needed.
|
||||
- Queued remote jobs recreate remote printers as needed
|
||||
when the scheduler is started.
|
||||
- Deleting a printer also purges all jobs on that
|
||||
printer.
|
||||
- Old job and control files that don't belong to a
|
||||
printer are automatically deleted.
|
||||
- Wasn't updating time-at-processing and
|
||||
time-at-completed attributes in job.
|
||||
- Didn't send required multiple-operation-time-out
|
||||
attribute in response to a get-printer-attributes
|
||||
request.
|
||||
- cups-lpd now supports options set with lpoptions.
|
||||
- The job-hold-until attribute is now provided with all
|
||||
jobs. For jobs that are not currently held the value
|
||||
is "no-hold".
|
||||
- The scheduler was not sending "unknown" values in IPP
|
||||
responses.
|
||||
- The lpoptions command now accumulates options from
|
||||
previous runs rather than replacing all options for a
|
||||
printer.
|
||||
- The IPP backend now switches to IPP/1.0 if a 1.1
|
||||
request fails.
|
||||
- The lpadmin and admin.cgi programs now validate new
|
||||
printer and class names.
|
||||
- The access_log file now includes the number of IPP bytes
|
||||
received in a POST request.
|
||||
|
||||
|
||||
CHANGES IN CUPS v1.1b5
|
||||
|
||||
- Documentation updates.
|
||||
- The pstoraster filter didn't compile without the JPEG library.
|
||||
- The cupsd server didn't support the HTTP OPTIONS request
|
||||
method.
|
||||
- Dropped the "CLOSE" method supported by the cupsd server.
|
||||
(not defined in HTTP specification)
|
||||
- Makefile/configure script fixes.
|
||||
- Missing the job-restart template.
|
||||
- Added IPP test suite for testing.
|
||||
- Missing IPP documentation from binary distributions.
|
||||
- Fixed multiple-document handling code when last-document
|
||||
not specified.
|
||||
- Added more checks to IPP requests to prevent bad requests
|
||||
from getting through.
|
||||
- Not all of the Ghostscript error output was being sent to
|
||||
stderr.
|
||||
- The PostScript filter now added PJL commands to set the
|
||||
job name and display string, if supported.
|
||||
- The scheduler would crash if the browse socket could not
|
||||
be bound. Now disables browsing if port 631 (reserved for
|
||||
IPP) is being used by a misbehaving daemon.
|
||||
- The USB backend now looks for the older Linux 2.2.x USB
|
||||
printer device filenames as well as the newer ones.
|
||||
- The IPP backend now uses the UTF-8 charset exclusively,
|
||||
since apparently only CUPS handles more than US-ASCII and
|
||||
UTF-8...
|
||||
- Wasn't quoting ( in PostScript banners...
|
||||
- Send-document requests with no document-format attribute
|
||||
could cause cupsd to crash.
|
||||
- Old jobs in the spool directory might cause cupsd to
|
||||
crash.
|
||||
- CUPS now supports all of the recommended job-hold-until
|
||||
keywords as well as name values of the form "HH:MM" and
|
||||
"HH:MM:SS".
|
||||
- Added placeholder pointer for TLS encryption to the HTTP
|
||||
connection structure.
|
||||
- Fixed the "fast poll" bug reported by DISA - the
|
||||
status pipe wasn't being closed for multi-file jobs.
|
||||
- Revamped put_params code in pstoraster to fix bitmap
|
||||
allocation bug with FrameMaker output.
|
||||
- Ripped out filename, etc. code from pstoraster as it
|
||||
is a potential security hole.
|
||||
- Added support for RIP_CACHE environment variable in the
|
||||
new pstoraster.
|
||||
- Fixed USB device filenames for Linux; now support new
|
||||
pre-2.4 devices (/dev/usb/lp#) and 2.2 devices
|
||||
(/dev/usblp#)
|
||||
- Fixed accept-jobs crash with classes.
|
||||
- Didn't include dot-matrix EPSON drivers in previous
|
||||
release.
|
||||
|
||||
|
||||
CHANGES IN CUPS v1.1b4
|
||||
|
||||
- Documentation updates.
|
||||
- Many makefile and configuration script fixes (should
|
||||
now compile better under *BSD.)
|
||||
- The MediaPosition attribute was being mishandled by
|
||||
GhostScript, causing the RIP to fail whenever a paper
|
||||
tray was selected.
|
||||
- The scheduler now logs the final line of log information
|
||||
from a filter, even if it doesn't end with a newline; this
|
||||
primarily affects GhostScript error output.
|
||||
- The scheduler was saving implicit classes, so after a few
|
||||
restarts you'll end up with AnyPrinter, AnyAnyPrinter, etc.
|
||||
- The JPEG autodetection didn't work with some JPEG files that
|
||||
came from digital cameras (JPEG but not JFIF); the new
|
||||
magic types should work with all images that the JPEG library
|
||||
can handle.
|
||||
- Fixed a bug in the new contains() MIME type rule that could
|
||||
cause cupsd to crash.
|
||||
- Switched to using strtol() in the MIME type code so that you
|
||||
can use hex, octal, or decimal constants as desired in the
|
||||
mime.types file.
|
||||
- Banner files are now treated as templates, allowing any type
|
||||
of file to be used as a banner.
|
||||
- Added a 30-second timeout to backend device reports so that a
|
||||
hung backend will not prevent the scheduler from starting.
|
||||
- Backends are once again terminated when jobs are stopped; the
|
||||
CUPS-supplied backends will stay alive until the downstream
|
||||
filters have had a chance to clear out old page data.
|
||||
- The charset lookup in the CUPS localization support was wrong
|
||||
(iso8859-x instead of iso-8859-x)
|
||||
- Changed the "cpNNNN" code page files to "windows-NNNN" to match
|
||||
the IANA registrations.
|
||||
- New PostScript banner pages.
|
||||
- Added Windows BMP and Alias PIX image file support to the image
|
||||
filter.
|
||||
- The PNG reading coded didn't free all of its buffers.
|
||||
- Added Digest authentication support to the client and server
|
||||
code.
|
||||
- Added Solaris options to System V commands.
|
||||
- Now support the output-bin job template attribute.
|
||||
- Now log the job-billing attribute in the page_log file, and
|
||||
keep track of the total number of pages in the
|
||||
job-media-sheets-completed attribute.
|
||||
- The penwidth option is now in micrometers to support more
|
||||
accurate width specification.
|
||||
- The image filters now support interlaced and transparent PNG
|
||||
files.
|
||||
- Didn't handle Keep-Alive for HTTP/1.0 clients.
|
||||
- The BrowsePoll support didn't handle when BrowseInterval
|
||||
was set to 0 (now uses 30 seconds if BrowseInterval is 0)
|
||||
- The DeskJet driver now supports 600 DPI color for printers
|
||||
that support it.
|
||||
- New lpinfo and lpmove commands.
|
||||
- The lpq command now supports the Digital UNIX output format.
|
||||
- The LPD mini-daemon now supports all required LPD operations.
|
||||
- Implemented timeouts for multi-file documents.
|
||||
- New cupsPrintFiles() function in the CUPS API library to
|
||||
print multiple files using create-job and send-document
|
||||
requests (1 job ID for multiple files)
|
||||
- The lp command now sends multiple files as a single job,
|
||||
matching the behavior of the System V command.
|
||||
- The "cancel -a" command now purges job history files.
|
||||
|
||||
|
||||
CHANGES IN CUPS v1.1b3
|
||||
|
||||
- Documentation updates.
|
||||
- The startup script redirected stderr before stdout,
|
||||
which caused problems with some versions of Bourne
|
||||
shell and Bash.
|
||||
- Fixed a bug in the scheduler's PPD language reading
|
||||
code.
|
||||
- Fixed a bug in the scheduler's check for the
|
||||
manufacturer in the PPD.
|
||||
- The pstoraster filter didn't allow some input and
|
||||
output attributes to be set.
|
||||
- Added banner page support.
|
||||
- Added missing PAM configuration file.
|
||||
- Configuration script fixes for Linux and *BSD.
|
||||
- The log file code was using the wrong sign for the
|
||||
timezone offset.
|
||||
- The default printcap file is now empty (no printcap
|
||||
file is generated).
|
||||
- The scheduler did not start jobs destined for remote
|
||||
printers when they became available.
|
||||
- The scheduler now sends jobs to remote printers
|
||||
immediately. (when sending jobs to a class, the remote
|
||||
printer is only used when it becomes available)
|
||||
- The scheduler now supports printing of banner pages
|
||||
via the job-sheets attribute (banner files go in
|
||||
/usr/share/cups/banners)
|
||||
- The cupsd process now forks itself into the background
|
||||
(override with -f)
|
||||
- Added several *BSD enhancements.
|
||||
- Added UNSUPPORTED libtool option to configuration
|
||||
script to allow the use of libtool. Note that this is
|
||||
UNSUPPORTED by us, but added by request of the *BSD
|
||||
folks.
|
||||
- The parallel, serial, and usb backends now retry the
|
||||
opening of their ports. This allows multiple print
|
||||
queues to be associated with a single physical port,
|
||||
and will allow CUPS to support several types of
|
||||
parallel port auto-switches in the near future.
|
||||
- Set-Job-Attributes now supports adding, changing, and
|
||||
deleting job template attributes, and no longer allows
|
||||
job-printer-uri to be set (see CUPS-Move-Job)
|
||||
- Added CUPS-Move-Job operation to support moving of jobs.
|
||||
- The CGI template functionality now supports multiple
|
||||
languages (still only have templates for English)
|
||||
- The CUPS-Get-Printers and CUPS-Get-Classes operations
|
||||
now support filtering as defined in the IDD.
|
||||
- The Get-Jobs, CUPS-Get-Printers, and CUPS-Get-Classes
|
||||
operations no longer limit themselves to 1000 jobs,
|
||||
printers, or classes (believe it or not, this is
|
||||
needed for some sites)
|
||||
- The web interfaces now support language-specific
|
||||
templates.
|
||||
- The web admin interface now supports class management.
|
||||
- The web admin interface now shows a list of
|
||||
manufacturers before selecting the PPD/driver for a
|
||||
specific printer.
|
||||
- The web admin interface now supports configuration of
|
||||
the default printer options in the PPD file.
|
||||
- The web interface now uses printer/class
|
||||
authentication for the test page instead of admin
|
||||
authentication.
|
||||
- Updated the RPM spec file for the current release.
|
||||
- Updated language support for Windows code pages.
|
||||
- 8-bit character set files can now use multiple fonts
|
||||
(needed for Arabic, Greek, Hebrew, etc.)
|
||||
- Added basic right-to-left text support in the text
|
||||
filter.
|
||||
- The POSIX locale now uses ISO-8859-1 instead of
|
||||
US-ASCII.
|
||||
- Fixed PDF printing problems.
|
||||
- Fixed PostScript RIP page device dictionary elements
|
||||
that weren't getting passed in cups_get_params().
|
||||
- Added a new "contains" rule for the magic file typing.
|
||||
- The "printable" rule now accepts characters from 128 to 255
|
||||
(needed for Microsoft character sets)
|
||||
- Added support for ~/.cupsrc as well as /etc/cups/client.conf
|
||||
so that the default server can be configured on a per-user
|
||||
basis without environment variables.
|
||||
- Added LPD mini-daemon to support incoming LPD jobs.
|
||||
|
||||
|
||||
CHANGES IN CUPS v1.1b2
|
||||
|
||||
- Documentation updates.
|
||||
@@ -619,46 +233,67 @@ CHANGES IN CUPS v1.0.2
|
||||
CHANGES IN CUPS v1.0.1
|
||||
|
||||
- Documentation updates.
|
||||
|
||||
- Fixed a bunch of possible buffer-overflow conditions.
|
||||
|
||||
- The scheduler now supports authentication using PAM.
|
||||
|
||||
- Updated the Italian message file.
|
||||
|
||||
- httpEncode64() didn't add an extra "=" if there was
|
||||
only one byte in the last three-byte group.
|
||||
|
||||
- Now drop any trailing character set from the locale
|
||||
string (e.g. "en_US.ISO_8859-1" becomes "en_US")
|
||||
|
||||
- Fixed "timezone" vs "tm_gmtoff" usage for BSD-based
|
||||
operating systems.
|
||||
|
||||
- Updated IPP security so that "get" operations can be
|
||||
done from any resource name; this allows the CGIs to
|
||||
work with printer authentication enabled so long as
|
||||
authentication isn't turned on for the whole "site".
|
||||
|
||||
- The IPP code didn't properly handle the "unsupported"
|
||||
group; this caused problems with the HP JetDirect since
|
||||
it doesn't seem to support the "copies" attribute.
|
||||
|
||||
- The HTTP chunking code was missing a CR LF pair at the
|
||||
end of a 0-length chunk.
|
||||
|
||||
- The httpSeparate() function didn't handle embedded
|
||||
usernames and passwords in the URI properly.
|
||||
|
||||
- Doing "lpadmin -p printer -E" didn't restart printing
|
||||
if there were pending jobs.
|
||||
|
||||
- The cancel-job operation now requires either a
|
||||
requesting-user-name attribute or an authenticated
|
||||
username.
|
||||
|
||||
- The add-printer code did not report errors if the
|
||||
interface script or PPD file could not be renamed.
|
||||
|
||||
- Request files are now created without world read
|
||||
permissions.
|
||||
|
||||
- Added a cupsLastError() function to the CUPS API to
|
||||
retrieve the IPP error code from the last request.
|
||||
|
||||
- Options are now case-insensitive.
|
||||
|
||||
- The lpq command now provides 10 characters for the
|
||||
username instead of the original (Berkeley standard)
|
||||
7.
|
||||
|
||||
- The cancel command needed a local CUPS server to work
|
||||
(or the appropriate ServerName in cupsd.conf)
|
||||
|
||||
- The cancel and lprm commands didn't report the IPP
|
||||
error if the job could not be cancelled.
|
||||
|
||||
- The lp and lpr commands didn't intercept SIGTERM to
|
||||
remove temporary files when printing from stdin.
|
||||
|
||||
- The lp and lpr commands didn't report the IPP error if
|
||||
the job could not be printed.
|
||||
|
||||
+13
-24
@@ -17,19 +17,19 @@ WWW: <A HREF="http://www.cups.org">http://www.cups.org</A>
|
||||
|
||||
<H3>Introduction</H3>
|
||||
|
||||
<P>The Common UNIX Printing System<SUP>TM</SUP>, ("CUPS<SUP>TM</SUP>"),
|
||||
<P>The Common UNIX Printing System<SUP>TM</SUP>, or CUPS<SUP>TM</SUP>,
|
||||
is provided under the GNU General Public License ("GPL") and GNU
|
||||
Library General Public License ("LGPL"), Version 2. A copy of these
|
||||
licenses follow this introduction.
|
||||
|
||||
<P>The GNU LGPL applies to the CUPS API library, located in the "cups"
|
||||
subdirectory of the CUPS source distribution and in the
|
||||
"/usr/include/cups" directory and "libcups.a", "libcups.sl", or
|
||||
"libcups.so" files in the binary distributions.
|
||||
"/usr/include/cups" directory and "/usr/lib/libcups.so" or
|
||||
"/usr/lib32/libcups.so" files in the binary distributions.
|
||||
|
||||
<P>The GNU GPL applies to the remainder of the CUPS distribution,
|
||||
including the "pstoraster" filter which is based upon GNU Ghostscript
|
||||
5.50 and the "pdftops" filter which is based upon Xpdf 0.90.
|
||||
5.50.
|
||||
|
||||
<P>For those not familiar with the GNU GPL, the license basically
|
||||
allows you to:
|
||||
@@ -44,16 +44,15 @@ allows you to:
|
||||
<LI>Sell verbatim copies of the software for a media fee, or
|
||||
sell support for the software.
|
||||
|
||||
<LI>Distribute or sell printer drivers and filters that use
|
||||
CUPS so long as source code is made available under the GPL.
|
||||
<LI>Distribute or sell printer drivers and filters that use the
|
||||
CUPS API so long as source code is made available under the GPL.
|
||||
|
||||
</UL>
|
||||
|
||||
<P>What this license <B>does not</B> allow you to do is make changes or
|
||||
add features to CUPS and then sell a binary distribution without source
|
||||
code. You must provide source for any new drivers, changes, or
|
||||
additions to the software, and all code must be provided under the GPL
|
||||
or LGPL as appropriate.
|
||||
additions to the software, and all code must be provided under the GPL.
|
||||
|
||||
<P>The GNU LGPL relaxes the "link-to" restriction, allowing you to
|
||||
develop applications that use the CUPS API library under other licenses
|
||||
@@ -74,32 +73,22 @@ standards as the original.
|
||||
<P>Easy Software Products also sells rights to the CUPS source code
|
||||
under a binary distribution license for vendors that are unable to
|
||||
release source code for their drivers, additions, and modifications to
|
||||
CUPS under the GNU GPL and LGPL. For information please contact us at
|
||||
CUPS under the GNU GPL. For pricing information please contact us at
|
||||
the address shown above.
|
||||
|
||||
<P>The Common UNIX Printing System provides a "pstoraster" filter that
|
||||
utilizes the GNU GhostScript 5.50 core to convert PostScript files into
|
||||
a stream of raster images. For binary distribution licensing of this
|
||||
software, please contact:
|
||||
utilizes GNU GhostScript 5.50 to convert PostScript files into a stream
|
||||
of raster images. For binary distribution licensing of this software,
|
||||
please contact:
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Miles Jones<BR>
|
||||
<BLOCKQUOTE>Miles Jones<BR>
|
||||
Director of Marketing<BR>
|
||||
Artifex Software Inc.<BR>
|
||||
454 Las Gallinas Ave., Suite 108<BR>
|
||||
San Rafael, CA 94903 USA<BR>
|
||||
Voice: +1.415.492.9861<BR>
|
||||
Fax: +1.415.492.9862<BR>
|
||||
EMail: <A HREF="mailto:info@arsoft.com">info@arsoft.com</A>
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<P>The "pdftops" filter is based on the Xpdf 0.90 software. For binary
|
||||
distribution licensing of this software, please contact:
|
||||
|
||||
<BLOCKQUOTE>
|
||||
Derek B. Noonburg<BR>
|
||||
Email: <A HREF="mailto:derekn@foolabs.com">derekn@foolabs.com</A><BR>
|
||||
WWW: <A HREF="http://www.foolabs.com/xpdf/">http://www.foolabs.com/xpdf/</A>
|
||||
EMail: info@arsoft.com
|
||||
</BLOCKQUOTE>
|
||||
|
||||
<H3>Support</H3>
|
||||
|
||||
+3
-20
@@ -30,9 +30,7 @@ AR = @AR@
|
||||
AWK = @AWK@
|
||||
CC = @LIBTOOL@ @CC@
|
||||
CHMOD = @CHMOD@
|
||||
CHOWN = @CHOWN@
|
||||
CP = @CP@
|
||||
CXX = @LIBTOOL@ @CXX@
|
||||
DSO = @DSO@
|
||||
HTMLDOC = @HTMLDOC@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
@@ -50,6 +48,7 @@ SHELL = /bin/sh
|
||||
#
|
||||
|
||||
INSTALL_BIN = $(LIBTOOL) $(CP)
|
||||
INSTALL_CAT = @INSTALL_CAT@
|
||||
INSTALL_DATA = $(CP)
|
||||
INSTALL_LIB = $(LIBTOOL) $(CP)
|
||||
INSTALL_MAN = $(CP)
|
||||
@@ -77,7 +76,6 @@ LIBZ = @LIBZ@
|
||||
|
||||
ARFLAGS = crvs
|
||||
CFLAGS = @CFLAGS@ $(OPTIM) -I.. $(OPTIONS)
|
||||
CXXFLAGS = @CXXFLAGS@ $(OPTIM) -I.. $(OPTIONS)
|
||||
DSOLIBS = @DSOLIBS@
|
||||
IMGLIBS = @IMGLIBS@ -lm
|
||||
LDFLAGS = @LDFLAGS@ $(OPTIM)
|
||||
@@ -121,8 +119,6 @@ BINDIR = @bindir@
|
||||
DATADIR = @CUPS_DATADIR@
|
||||
DOCDIR = @CUPS_DOCROOT@
|
||||
INCLUDEDIR = $(includedir)
|
||||
INITDIR = @INITDIR@
|
||||
INITDDIR = @INITDDIR@
|
||||
LIBDIR = $(libdir)
|
||||
LOCALEDIR = @CUPS_LOCALEDIR@
|
||||
LOGDIR = @CUPS_LOGDIR@
|
||||
@@ -133,32 +129,19 @@ SBINDIR = @sbindir@
|
||||
SERVERBIN = @CUPS_SERVERBIN@
|
||||
SERVERROOT = @CUPS_SERVERROOT@
|
||||
|
||||
CAT1EXT = @CAT1EXT@
|
||||
CAT5EXT = @CAT5EXT@
|
||||
CAT8EXT = @CAT8EXT@
|
||||
|
||||
#
|
||||
# Rules...
|
||||
#
|
||||
|
||||
.SILENT:
|
||||
.SUFFIXES: .a .c .cxx .h .man .o .0 .1 .5 .8 .z
|
||||
.SUFFIXES: .a .c .h .man .o .1 .5 .8
|
||||
.c.o:
|
||||
echo Compiling $<...
|
||||
$(CC) $(CFLAGS) -c $<
|
||||
.cxx.o:
|
||||
echo Compiling $<...
|
||||
$(CXX) $(CXXFLAGS) -c $<
|
||||
.man.0 .man.1 .man.5 .man.8:
|
||||
.man.1 .man.5 .man.8:
|
||||
echo Formatting $<...
|
||||
$(RM) $@
|
||||
$(NROFF) -man $< >$@
|
||||
.man.z:
|
||||
echo Formatting $<...
|
||||
$(RM) $@ t.z
|
||||
$(NROFF) -man $< >t
|
||||
pack -f t
|
||||
$(MV) t.z $@
|
||||
|
||||
#
|
||||
# End of "$Id$"
|
||||
|
||||
+18
-38
@@ -3,7 +3,7 @@
|
||||
#
|
||||
# Top-level Makefile for the Common UNIX Printing System (CUPS).
|
||||
#
|
||||
# Copyright 1997-2000 by Easy Software Products, all rights reserved.
|
||||
# Copyright 1997-1999 by Easy Software Products, all rights reserved.
|
||||
#
|
||||
# These coded instructions, statements, and computer programs are the
|
||||
# property of Easy Software Products and are protected by Federal
|
||||
@@ -28,7 +28,7 @@ include Makedefs
|
||||
# Directories to make...
|
||||
#
|
||||
|
||||
DIRS = cups backend berkeley cgi-bin filter man pdftops pstoraster \
|
||||
DIRS = cups backend berkeley cgi-bin filter man pstoraster \
|
||||
scheduler systemv
|
||||
|
||||
#
|
||||
@@ -38,7 +38,7 @@ DIRS = cups backend berkeley cgi-bin filter man pdftops pstoraster \
|
||||
all:
|
||||
for dir in $(DIRS); do\
|
||||
echo Making all in $$dir... ;\
|
||||
(cd $$dir ; $(MAKE) $(MFLAGS)) || exit 1;\
|
||||
(cd $$dir; $(MAKE) -$(MAKEFLAGS)) || break;\
|
||||
done
|
||||
|
||||
#
|
||||
@@ -48,7 +48,7 @@ all:
|
||||
clean:
|
||||
for dir in $(DIRS); do\
|
||||
echo Cleaning in $$dir... ;\
|
||||
(cd $$dir; $(MAKE) $(MFLAGS) clean) || exit 1;\
|
||||
(cd $$dir; $(MAKE) -$(MAKEFLAGS) clean) || break;\
|
||||
done
|
||||
|
||||
#
|
||||
@@ -58,58 +58,38 @@ clean:
|
||||
install:
|
||||
for dir in $(DIRS); do\
|
||||
echo Installing in $$dir... ;\
|
||||
(cd $$dir; $(MAKE) $(MFLAGS) install) || exit 1;\
|
||||
(cd $$dir; $(MAKE) -$(MAKEFLAGS) install) || break;\
|
||||
done
|
||||
echo Installing in conf...
|
||||
(cd conf; $(MAKE) $(MFLAGS) install)
|
||||
(cd conf; $(MAKE) -$(MAKEFLAGS) install)
|
||||
echo Installing in data...
|
||||
(cd data; $(MAKE) $(MFLAGS) install)
|
||||
(cd data; $(MAKE) -$(MAKEFLAGS) install)
|
||||
echo Installing in doc...
|
||||
(cd doc; $(MAKE) $(MFLAGS) install)
|
||||
(cd doc; $(MAKE) -$(MAKEFLAGS) install)
|
||||
echo Installing in fonts...
|
||||
(cd fonts; $(MAKE) $(MFLAGS) install)
|
||||
(cd fonts; $(MAKE) -$(MAKEFLAGS) install)
|
||||
(cd fonts; $(MAKE) -$(MAKEFLAGS) install)
|
||||
echo Installing in locale...
|
||||
(cd locale; $(MAKE) $(MFLAGS) install)
|
||||
echo Installing in ppd...
|
||||
(cd ppd; $(MAKE) -$(MAKEFLAGS) install)
|
||||
echo Installing in templates...
|
||||
(cd templates; $(MAKE) $(MFLAGS) install)
|
||||
echo Installing startup script...
|
||||
if test "x$INITDIR" != "x"; then \
|
||||
$(INSTALL_SCRIPT) cups.sh $prefix/$INITDIR/init.d/cups; \
|
||||
$(CHMOD) ugo+rx $prefix/$INITDIR/init.d/cups; \
|
||||
ln -s $INITDDIR/cups $prefix/$INITDIR/rc0.d/K00cups; \
|
||||
ln -s $INITDDIR/cups $prefix/$INITDIR/rc2.d/S99cups; \
|
||||
fi
|
||||
(cd templates; $(MAKE) -$(MAKEFLAGS) install)
|
||||
|
||||
#
|
||||
# Make software distributions using EPM (http://www.easysw.com/epm)...
|
||||
# Make a software distribution...
|
||||
#
|
||||
|
||||
EPMFLAGS = -v \
|
||||
BINDIR=$(BINDIR) DATADIR=$(DATADIR) \
|
||||
DOCDIR=$(DOCDIR) ESP_ROOT=$(ESP_ROOT) \
|
||||
INCLUDEDIR=$(INCLUDEDIR) LIBDIR=$(LIBDIR) \
|
||||
LOCALEDIR=$(LOCALEDIR) LOGDIR=$(LOGDIR) \
|
||||
MANDIR=$(MANDIR) PAMDIR=$(PAMDIR) \
|
||||
REQUESTS=$(REQUESTS) SBINDIR=$(SBINDIR) \
|
||||
SERVERBIN=$(SERVERBIN) SERVERROOT=$(SERVERROOT)
|
||||
|
||||
epm:
|
||||
epm $(EPMFLAGS) cups
|
||||
epm -v cups
|
||||
|
||||
rpm:
|
||||
epm $(EPMFLAGS) -f rpm cups
|
||||
epm -v -f rpm cups
|
||||
|
||||
deb:
|
||||
epm $(EPMFLAGS) -f deb cups
|
||||
|
||||
depot:
|
||||
epm $(EPMFLAGS) -f depot cups
|
||||
|
||||
pkg:
|
||||
epm $(EPMFLAGS) -f pkg cups
|
||||
epm -v -f deb cups
|
||||
|
||||
tardist:
|
||||
epm $(EPMFLAGS) -f tardist cups
|
||||
epm -v -f tardist cups
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
|
||||
+34
-47
@@ -1,6 +1,25 @@
|
||||
README - CUPS v1.1.2 - 08/04/2000
|
||||
README - CUPS v1.1b4 - 05/12/2000
|
||||
---------------------------------
|
||||
|
||||
************************************************************************
|
||||
************************************************************************
|
||||
**** ****
|
||||
**** BETA SOFTWARE BETA SOFTWARE BETA SOFTWARE BETA SOFTWARE ****
|
||||
**** ****
|
||||
************************************************************************
|
||||
************************************************************************
|
||||
|
||||
This is an official public beta release for the Common UNIX Printing
|
||||
System. Since this is a beta release, we do not recommend that you
|
||||
use this software on a production system. Instead, please use the
|
||||
current 1.0.x release for your production systems.
|
||||
|
||||
Please report all problems in the CUPS 1.1 beta releases to
|
||||
"cups-beta@cups.org" or to the CUPS mailing list.
|
||||
|
||||
Thanks for using CUPS!
|
||||
|
||||
|
||||
INTRODUCTION
|
||||
|
||||
CUPS provides a portable printing layer for UNIX(r)-based operating
|
||||
@@ -36,8 +55,8 @@ Binary distributions require a minimum of 10MB of free disk space. We
|
||||
do not recommend using CUPS on a workstation with less than 32MB of RAM
|
||||
or a PC with less than 16MB of RAM.
|
||||
|
||||
If you are installing from source you'll need ANSI-compliant C and C++
|
||||
compilers and optionally one or more image file support libraries.
|
||||
If you are installing from source you'll need an ANSI-compliant C
|
||||
compiler and optionally one or more image file support libraries.
|
||||
Complete source installation instructions can be found in the CUPS
|
||||
System Administrator's Manual in the files "doc/sam.html" or
|
||||
"doc/sam.pdf".
|
||||
@@ -55,11 +74,11 @@ the binary distributions from Easy Software Products:
|
||||
- Solaris 2.5 or higher (SPARC or Intel)
|
||||
|
||||
|
||||
INSTALLING "PORTABLE" CUPS DISTRIBUTIONS
|
||||
INSTALLING CUPS
|
||||
|
||||
We are currently distributing "portable" CUPS binary distributions in
|
||||
TAR format with installation and removal scripts generated by our ESP
|
||||
Package Manager (EPM) software, which is available from:
|
||||
We are currently distributing CUPS binary distributions in TAR format
|
||||
with installation and removal scripts generated by our ESP Package
|
||||
Manager (EPM) software, which is available from:
|
||||
|
||||
http://www.easysw.com/epm
|
||||
|
||||
@@ -80,14 +99,6 @@ After asking you a few yes/no questions the CUPS software will be
|
||||
installed and the scheduler will be started automatically.
|
||||
|
||||
|
||||
INSTALLING HOST-SPECIFIC (RPM, DEBIAN, ETC.) DISTRIBUTIONS
|
||||
|
||||
The host-specific distributions use the operating system software
|
||||
installation tools. To install a host-specific distribution please
|
||||
consult the CUPS Software Administrators Manual or your operating
|
||||
system documentation.
|
||||
|
||||
|
||||
READING THE DOCUMENTATION
|
||||
|
||||
Once you have installed the software you can access the documentation
|
||||
@@ -114,10 +125,6 @@ You will be asked for the administration password (root or any other
|
||||
user in the sys/system/root group on your system) and then shown a
|
||||
menu of available functions.
|
||||
|
||||
DO NOT use the hostname for your machine - it will not work with the
|
||||
default CUPS configuration. To enable administration access on other
|
||||
addresses, consult the CUPS Software Administrators Manual.
|
||||
|
||||
|
||||
SETTING UP PRINTER QUEUES FROM THE COMMAND-LINE
|
||||
|
||||
@@ -184,9 +191,9 @@ driver:
|
||||
lp -omedia=A4 -oresolution=600dpi filename
|
||||
lpr -omedia=A4 -oresolution=600dpi filename
|
||||
|
||||
CUPS recognizes many types of images files as well as PDF, PostScript,
|
||||
HP-GL/2, and text files, so you can print those files directly rather
|
||||
than through an application.
|
||||
CUPS recognizes many types of images files as well as PostScript, HP-GL/2,
|
||||
and text files, so you can print those files directly rather than through
|
||||
an application.
|
||||
|
||||
If you have an application that generates output specifically for your
|
||||
printer then you need to use the "-oraw" or "-l" options:
|
||||
@@ -202,18 +209,10 @@ REPORTING PROBLEMS
|
||||
If you have problems, READ THE DOCUMENTATION FIRST! If the
|
||||
documentation does not solve your problems please send an email to
|
||||
cups-support@cups.org. Include your operating system and version,
|
||||
compiler and version, and any errors or problems you've run into. The
|
||||
/var/log/error_log file should also be sent, as it often helps to
|
||||
determine the cause of your problem.
|
||||
|
||||
If you are running a version of Linux, be sure to provide the Linux
|
||||
compiler and version, and any errors or problems you've run into. If
|
||||
you are running a version of Linux, be sure to provide the Linux
|
||||
distribution you have, too.
|
||||
|
||||
Please note that the "cups-support@cups.org" email address goes to the
|
||||
CUPS developers; they are busy people, so your email may go unanswered
|
||||
for days or weeks. Commercial support (with a guaranteed response
|
||||
time) is available from Easy Software Products.
|
||||
|
||||
|
||||
OTHER RESOURCES
|
||||
|
||||
@@ -231,22 +230,11 @@ CUPS is Copyright 1993-2000 by Easy Software Products. CUPS, the CUPS
|
||||
logo, and the Common UNIX Printing System are the trademark property of
|
||||
Easy Software Products.
|
||||
|
||||
The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
|
||||
|
||||
The PostScript RIP software (pstoraster) is based on the GNU
|
||||
Ghostscript 5.50 core, Copyright 1986-1998 by Aladdin Enterprises.
|
||||
|
||||
The PDF filter (pdftops) is based on the Xpdf 0.90 software, Copyright
|
||||
1996-1999 by Derek B. Noonburg.
|
||||
|
||||
This software is based in part on the work of the Independent JPEG
|
||||
Group.
|
||||
|
||||
CUPS is provided under the terms of the GNU General Public License and
|
||||
GNU Library General Public License. This program is distributed in the
|
||||
hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
|
||||
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
PURPOSE. See the "LICENSE.html", "LICENSE.txt", or "cups.license" files
|
||||
PURPOSE. See the "LICENSE.html", "LICENSE.txt", "cups.license" file
|
||||
for more information.
|
||||
|
||||
For commercial licensing information, please contact:
|
||||
@@ -260,7 +248,6 @@ For commercial licensing information, please contact:
|
||||
Email: cups-info@cups.org
|
||||
WWW: http://www.cups.org
|
||||
|
||||
Note that commercial licensors may also require a license from Artifex
|
||||
Note that commercial licensors may also require license from Artifex
|
||||
Software Inc. which handles commercial licensing of the Ghostscript
|
||||
software, and from Derek B. Noonburg who developed the Xpdf software
|
||||
used to print PDF files.
|
||||
software.
|
||||
|
||||
@@ -50,8 +50,6 @@ clean:
|
||||
|
||||
install:
|
||||
-$(MKDIR) $(SERVERBIN)/backend
|
||||
$(CHMOD) ugo+rx $(SERVERBIN)
|
||||
$(CHMOD) ugo+rx $(SERVERBIN)/backend
|
||||
$(INSTALL_BIN) $(BACKENDS) $(SERVERBIN)/backend
|
||||
$(RM) $(SERVERBIN)/backend/http
|
||||
$(LN) ipp $(SERVERBIN)/backend/http
|
||||
|
||||
+5
-25
@@ -86,7 +86,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
|
||||
struct sigaction action; /* Actions for POSIX signals */
|
||||
#endif /* HAVE_SIGACTION && !HAVE_SIGSET */
|
||||
int version; /* IPP version */
|
||||
|
||||
|
||||
if (argc == 1)
|
||||
@@ -205,7 +204,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
|
||||
language = cupsLangDefault();
|
||||
copies_sup = NULL;
|
||||
version = 1;
|
||||
|
||||
do
|
||||
{
|
||||
@@ -214,16 +212,15 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
*/
|
||||
|
||||
request = ippNew();
|
||||
request->request.op.version[1] = version;
|
||||
request->request.op.operation_id = IPP_GET_PRINTER_ATTRIBUTES;
|
||||
request->request.op.request_id = 1;
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
|
||||
"attributes-charset", NULL, "utf-8");
|
||||
"attributes-charset", NULL, cupsLangEncoding(language));
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
|
||||
"attributes-natural-language", NULL,
|
||||
language != NULL ? language->language : "en");
|
||||
language != NULL ? language->language : "C");
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
|
||||
NULL, uri);
|
||||
@@ -299,20 +296,10 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
fputs("INFO: Printer busy; will retry in 10 seconds...\n", stderr);
|
||||
sleep(10);
|
||||
}
|
||||
else if (ipp_status == IPP_BAD_REQUEST && version == 1)
|
||||
{
|
||||
/*
|
||||
* Switch to IPP/1.0...
|
||||
*/
|
||||
|
||||
fputs("INFO: Printer does not support IPP/1.1, trying IPP/1.0...\n", stderr);
|
||||
version = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "ERROR: Printer will not accept print file (%x)!\n",
|
||||
ipp_status);
|
||||
fprintf(stderr, "ERROR: %s\n", ippErrorString(ipp_status));
|
||||
status = HTTP_ERROR;
|
||||
}
|
||||
}
|
||||
@@ -343,8 +330,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "ERROR: Validate request was not accepted (%d)!\n",
|
||||
status);
|
||||
fprintf(stderr, "ERROR: Validate request was not accepted (%d)!\n", status);
|
||||
ipp_status = IPP_FORBIDDEN;
|
||||
}
|
||||
}
|
||||
@@ -363,8 +349,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
|
||||
return (1);
|
||||
}
|
||||
else if (ipp_status > IPP_OK_CONFLICT)
|
||||
httpReconnect(http);
|
||||
}
|
||||
while (ipp_status > IPP_OK_CONFLICT);
|
||||
|
||||
@@ -406,16 +390,15 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
*/
|
||||
|
||||
request = ippNew();
|
||||
request->request.op.version[1] = version;
|
||||
request->request.op.operation_id = IPP_PRINT_JOB;
|
||||
request->request.op.request_id = 1;
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
|
||||
"attributes-charset", NULL, "utf-8");
|
||||
"attributes-charset", NULL, cupsLangEncoding(language));
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
|
||||
"attributes-natural-language", NULL,
|
||||
language != NULL ? language->language : "en");
|
||||
language != NULL ? language->language : "C");
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
|
||||
NULL, uri);
|
||||
@@ -646,11 +629,8 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
sleep(10);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "ERROR: Print file was not accepted (%04x)!\n",
|
||||
response->request.status.status_code);
|
||||
fprintf(stderr, "ERROR: %s\n", ippErrorString(ipp_status));
|
||||
}
|
||||
}
|
||||
else if ((job_id = ippFindAttribute(response, "job-id", IPP_TAG_INTEGER)) == NULL)
|
||||
fputs("INFO: Print file accepted - job ID unknown.\n", stderr);
|
||||
|
||||
+7
-101
@@ -60,8 +60,7 @@ extern int rresvport(int *port); /* Hello? No prototype for this... */
|
||||
|
||||
static int lpd_command(int lpd_fd, char *format, ...);
|
||||
static int lpd_queue(char *hostname, char *printer, char *filename,
|
||||
char *user, char *title, int copies, int banner,
|
||||
int format);
|
||||
char *user, int copies);
|
||||
|
||||
|
||||
/*
|
||||
@@ -80,15 +79,9 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
hostname[1024], /* Hostname */
|
||||
username[255], /* Username info (not used) */
|
||||
resource[1024], /* Resource info (printer name) */
|
||||
*options, /* Pointer to options */
|
||||
name[255], /* Name of option */
|
||||
value[255], /* Value of option */
|
||||
*ptr, /* Pointer into name or value */
|
||||
filename[1024]; /* File to print */
|
||||
int port; /* Port number (not used) */
|
||||
int status; /* Status of LPD job */
|
||||
int banner; /* Print banner page? */
|
||||
int format; /* Print format */
|
||||
|
||||
|
||||
if (argc == 1)
|
||||
@@ -149,83 +142,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
|
||||
httpSeparate(argv[0], method, username, hostname, &port, resource);
|
||||
|
||||
/*
|
||||
* See if there are any options...
|
||||
*/
|
||||
|
||||
banner = 0;
|
||||
format = 'l';
|
||||
|
||||
if ((options = strchr(resource, '?')) != NULL)
|
||||
{
|
||||
/*
|
||||
* Yup, terminate the device name string and move to the first
|
||||
* character of the options...
|
||||
*/
|
||||
|
||||
*options++ = '\0';
|
||||
|
||||
/*
|
||||
* Parse options...
|
||||
*/
|
||||
|
||||
while (*options)
|
||||
{
|
||||
/*
|
||||
* Get the name...
|
||||
*/
|
||||
|
||||
for (ptr = name; *options && *options != '=';)
|
||||
*ptr++ = *options++;
|
||||
*ptr = '\0';
|
||||
|
||||
if (*options == '=')
|
||||
{
|
||||
/*
|
||||
* Get the value...
|
||||
*/
|
||||
|
||||
options ++;
|
||||
|
||||
for (ptr = value; *options && *options != '+';)
|
||||
*ptr++ = *options++;
|
||||
*ptr = '\0';
|
||||
|
||||
if (*options == '+')
|
||||
options ++;
|
||||
}
|
||||
else
|
||||
value[0] = '\0';
|
||||
|
||||
/*
|
||||
* Process the option...
|
||||
*/
|
||||
|
||||
if (strcasecmp(name, "banner") == 0)
|
||||
{
|
||||
/*
|
||||
* Set the banner...
|
||||
*/
|
||||
|
||||
banner = !value[0] ||
|
||||
strcasecmp(value, "on") == 0 ||
|
||||
strcasecmp(value, "yes") == 0 ||
|
||||
strcasecmp(value, "true") == 0;
|
||||
}
|
||||
else if (strcasecmp(name, "format") == 0 && value[0])
|
||||
{
|
||||
/*
|
||||
* Set output format...
|
||||
*/
|
||||
|
||||
if (strchr("cdfglnoprtv", value[0]) != NULL)
|
||||
format = value[0];
|
||||
else
|
||||
fprintf(stderr, "ERROR: Unknown format character \"%c\"\n", value[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Queue the job...
|
||||
*/
|
||||
@@ -233,16 +149,14 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
if (argc > 6)
|
||||
{
|
||||
status = lpd_queue(hostname, resource + 1, filename,
|
||||
argv[2] /* user */, argv[3] /* title */,
|
||||
atoi(argv[4]) /* copies */, banner, format);
|
||||
argv[2] /* user */, atoi(argv[4]) /* copies */);
|
||||
|
||||
if (!status)
|
||||
fprintf(stderr, "PAGE: 1 %d\n", atoi(argv[4]));
|
||||
}
|
||||
else
|
||||
status = lpd_queue(hostname, resource + 1, filename,
|
||||
argv[2] /* user */, argv[3] /* title */, 1,
|
||||
banner, format);
|
||||
argv[2] /* user */, 1);
|
||||
|
||||
/*
|
||||
* Remove the temporary file if necessary...
|
||||
@@ -317,10 +231,7 @@ lpd_queue(char *hostname, /* I - Host to connect to */
|
||||
char *printer, /* I - Printer/queue name */
|
||||
char *filename, /* I - File to print */
|
||||
char *user, /* I - Requesting user */
|
||||
char *title, /* I - Job title */
|
||||
int copies, /* I - Number of copies */
|
||||
int banner, /* I - Print LPD banner? */
|
||||
int format) /* I - Format specifier */
|
||||
int copies) /* I - Number of copies */
|
||||
{
|
||||
FILE *fp; /* Job file */
|
||||
char localhost[255]; /* Local host name */
|
||||
@@ -443,18 +354,13 @@ lpd_queue(char *hostname, /* I - Host to connect to */
|
||||
gethostname(localhost, sizeof(localhost));
|
||||
localhost[31] = '\0'; /* RFC 1179, Section 7.2 - host name < 32 chars */
|
||||
|
||||
snprintf(control, sizeof(control), "H%s\nP%s\nJ%s\n", localhost, user, title);
|
||||
snprintf(control, sizeof(control), "H%s\nP%s\n", localhost, user);
|
||||
cptr = control + strlen(control);
|
||||
|
||||
if (banner)
|
||||
{
|
||||
snprintf(cptr, sizeof(control) - (cptr - control), "L%s\n", user);
|
||||
cptr += strlen(cptr);
|
||||
}
|
||||
|
||||
while (copies > 0)
|
||||
{
|
||||
snprintf(cptr, sizeof(control) - (cptr - control), "%cdfA%03d%s\n", format,
|
||||
|
||||
snprintf(cptr, sizeof(control) - (cptr - control), "ldfA%03d%s\n",
|
||||
getpid() % 1000, localhost);
|
||||
cptr += strlen(cptr);
|
||||
copies --;
|
||||
|
||||
+8
-22
@@ -86,11 +86,9 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
FILE *fp; /* Print file */
|
||||
int copies; /* Number of copies to print */
|
||||
int fd; /* Parallel device */
|
||||
int wbytes; /* Number of bytes written */
|
||||
size_t nbytes, /* Number of bytes read */
|
||||
size_t nbytes, /* Number of bytes written */
|
||||
tbytes; /* Total number of bytes written */
|
||||
char buffer[8192], /* Output buffer */
|
||||
*bufptr; /* Pointer into buffer */
|
||||
char buffer[8192]; /* Output buffer */
|
||||
struct termios opts; /* Parallel port options */
|
||||
#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
|
||||
struct sigaction action; /* Actions for POSIX signals */
|
||||
@@ -226,24 +224,13 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
* Write the print data to the printer...
|
||||
*/
|
||||
|
||||
tbytes += nbytes;
|
||||
bufptr = buffer;
|
||||
|
||||
while (nbytes > 0)
|
||||
if (write(fd, buffer, nbytes) < nbytes)
|
||||
{
|
||||
if ((wbytes = write(fd, bufptr, nbytes)) < 0)
|
||||
if (errno == ENOTTY)
|
||||
wbytes = write(fd, bufptr, nbytes);
|
||||
|
||||
if (wbytes < 0)
|
||||
{
|
||||
perror("ERROR: Unable to send print file to printer");
|
||||
break;
|
||||
}
|
||||
|
||||
nbytes -= wbytes;
|
||||
bufptr += wbytes;
|
||||
perror("ERROR: Unable to send print file to printer");
|
||||
break;
|
||||
}
|
||||
else
|
||||
tbytes += nbytes;
|
||||
|
||||
if (argc > 6)
|
||||
fprintf(stderr, "INFO: Sending print file, %u bytes...\n", tbytes);
|
||||
@@ -497,8 +484,7 @@ list_devices(void)
|
||||
{
|
||||
sprintf(device, "/dev/c%dt%dd0_lp", i, j);
|
||||
if (access(device, 0) == 0)
|
||||
printf("direct parallel:%s \"Unknown\" \"Parallel Port #%d,%d\"\n",
|
||||
device, i, j);
|
||||
printf("direct parallel:%s \"Unknown\" \"Parallel Port #%d,%d\"\n", i, j);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
+7
-20
@@ -89,11 +89,9 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
FILE *fp; /* Print file */
|
||||
int copies; /* Number of copies to print */
|
||||
int fd; /* Parallel device */
|
||||
int wbytes; /* Number of bytes written */
|
||||
size_t nbytes, /* Number of bytes read */
|
||||
size_t nbytes, /* Number of bytes written */
|
||||
tbytes; /* Total number of bytes written */
|
||||
char buffer[8192], /* Output buffer */
|
||||
*bufptr; /* Pointer into buffer */
|
||||
char buffer[8192]; /* Output buffer */
|
||||
struct termios opts; /* Parallel port options */
|
||||
#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
|
||||
struct sigaction action; /* Actions for POSIX signals */
|
||||
@@ -344,24 +342,13 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
* Write the print data to the printer...
|
||||
*/
|
||||
|
||||
tbytes += nbytes;
|
||||
bufptr = buffer;
|
||||
|
||||
while (nbytes > 0)
|
||||
if (write(fd, buffer, nbytes) < nbytes)
|
||||
{
|
||||
if ((wbytes = write(fd, bufptr, nbytes)) < 0)
|
||||
if (errno == ENOTTY)
|
||||
wbytes = write(fd, bufptr, nbytes);
|
||||
|
||||
if (wbytes < 0)
|
||||
{
|
||||
perror("ERROR: Unable to send print file to printer");
|
||||
break;
|
||||
}
|
||||
|
||||
nbytes -= wbytes;
|
||||
bufptr += wbytes;
|
||||
perror("ERROR: Unable to send print file to printer");
|
||||
break;
|
||||
}
|
||||
else
|
||||
tbytes += nbytes;
|
||||
|
||||
if (argc > 6)
|
||||
fprintf(stderr, "INFO: Sending print file, %u bytes...\n", tbytes);
|
||||
|
||||
+9
-29
@@ -75,11 +75,9 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
FILE *fp; /* Print file */
|
||||
int copies; /* Number of copies to print */
|
||||
int fd; /* Parallel device */
|
||||
int wbytes; /* Number of bytes written */
|
||||
size_t nbytes, /* Number of bytes read */
|
||||
size_t nbytes, /* Number of bytes written */
|
||||
tbytes; /* Total number of bytes written */
|
||||
char buffer[8192], /* Output buffer */
|
||||
*bufptr; /* Pointer into buffer */
|
||||
char buffer[8192]; /* Output buffer */
|
||||
struct termios opts; /* Parallel port options */
|
||||
#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
|
||||
struct sigaction action; /* Actions for POSIX signals */
|
||||
@@ -215,24 +213,13 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
|
||||
* Write the print data to the printer...
|
||||
*/
|
||||
|
||||
tbytes += nbytes;
|
||||
bufptr = buffer;
|
||||
|
||||
while (nbytes > 0)
|
||||
if (write(fd, buffer, nbytes) < nbytes)
|
||||
{
|
||||
if ((wbytes = write(fd, bufptr, nbytes)) < 0)
|
||||
if (errno == ENOTTY)
|
||||
wbytes = write(fd, bufptr, nbytes);
|
||||
|
||||
if (wbytes < 0)
|
||||
{
|
||||
perror("ERROR: Unable to send print file to printer");
|
||||
break;
|
||||
}
|
||||
|
||||
nbytes -= wbytes;
|
||||
bufptr += wbytes;
|
||||
perror("ERROR: Unable to send print file to printer");
|
||||
break;
|
||||
}
|
||||
else
|
||||
tbytes += nbytes;
|
||||
|
||||
if (argc > 6)
|
||||
fprintf(stderr, "INFO: Sending print file, %u bytes...\n", tbytes);
|
||||
@@ -312,7 +299,7 @@ list_devices(void)
|
||||
* We were processing a printer device; send the info out...
|
||||
*/
|
||||
|
||||
printf("direct usb:/dev/usb/lp%d \"%s %s\" \"USB Printer #%d\"\n",
|
||||
printf("direct usb:/dev/usb/usblp%d \"%s %s\" \"USB Printer #%d\"\n",
|
||||
i, make, model, i + 1);
|
||||
|
||||
i ++;
|
||||
@@ -328,14 +315,7 @@ list_devices(void)
|
||||
{
|
||||
for (i = 0; i < 8; i ++)
|
||||
{
|
||||
sprintf(device, "/dev/usb/lp%d", i);
|
||||
if ((fd = open(device, O_WRONLY)) >= 0)
|
||||
{
|
||||
close(fd);
|
||||
printf("direct usb:%s \"Unknown\" \"USB Printer #%d\"\n", device, i + 1);
|
||||
}
|
||||
|
||||
sprintf(device, "/dev/usblp%d", i);
|
||||
sprintf(device, "/dev/usb/usblp%d", i);
|
||||
if ((fd = open(device, O_WRONLY)) >= 0)
|
||||
{
|
||||
close(fd);
|
||||
|
||||
@@ -49,10 +49,8 @@ clean:
|
||||
|
||||
install:
|
||||
-$(MKDIR) $(BINDIR)
|
||||
$(CHMOD) ugo+rx $(BINDIR)
|
||||
$(INSTALL_BIN) lpq lpr lprm $(BINDIR)
|
||||
-$(MKDIR) $(SBINDIR)
|
||||
$(CHMOD) ugo+rx $(SBINDIR)
|
||||
$(INSTALL_BIN) lpc $(SBINDIR)
|
||||
|
||||
|
||||
|
||||
+49
-88
@@ -63,17 +63,12 @@ int
|
||||
main(int argc, /* I - Number of command-line arguments */
|
||||
char *argv[]) /* I - Command-line arguments */
|
||||
{
|
||||
int i, j; /* Looping var */
|
||||
int i; /* Looping var */
|
||||
int job_id; /* Job ID */
|
||||
char *printer, /* Destination printer or class */
|
||||
*instance; /* Instance */
|
||||
const char *dest; /* Destination printer */
|
||||
const char *title; /* Job title */
|
||||
int num_copies; /* Number of copies per file */
|
||||
int num_files; /* Number of files to print */
|
||||
const char *files[1000]; /* Files to print */
|
||||
int num_dests; /* Number of destinations */
|
||||
cups_dest_t *dests, /* Destinations */
|
||||
*dest; /* Selected destination */
|
||||
int num_files; /* Number of files printed */
|
||||
int num_options; /* Number of options */
|
||||
cups_option_t *options; /* Options */
|
||||
int deletefile; /* Delete file after print? */
|
||||
@@ -85,9 +80,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
|
||||
deletefile = 0;
|
||||
printer = NULL;
|
||||
num_dests = 0;
|
||||
dests = NULL;
|
||||
dest = cupsGetDefault();
|
||||
num_options = 0;
|
||||
options = NULL;
|
||||
num_files = 0;
|
||||
@@ -144,26 +137,11 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
case 'P' : /* Destination printer or class */
|
||||
if (argv[i][2] != '\0')
|
||||
printer = argv[i] + 2;
|
||||
dest = argv[i] + 2;
|
||||
else
|
||||
{
|
||||
i ++;
|
||||
printer = argv[i];
|
||||
}
|
||||
|
||||
if ((instance = strrchr(printer, '/')) != NULL)
|
||||
*instance++ = '\0';
|
||||
|
||||
if (num_dests == 0)
|
||||
num_dests = cupsGetDests(&dests);
|
||||
|
||||
if ((dest = cupsGetDest(printer, instance, num_dests, dests)) != NULL)
|
||||
{
|
||||
for (j = 0; j < dest->num_options; j ++)
|
||||
if (cupsGetOption(dest->options[j].name, num_options, options) == NULL)
|
||||
num_options = cupsAddOption(dest->options[j].name,
|
||||
dest->options[j].value,
|
||||
num_options, &options);
|
||||
dest = argv[i];
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -202,71 +180,54 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
fprintf(stderr, "lpr: Unknown option \'%c\'!\n", argv[i][1]);
|
||||
return (1);
|
||||
}
|
||||
else if (num_files < 1000)
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Print a file...
|
||||
*/
|
||||
|
||||
files[num_files] = argv[i];
|
||||
num_files ++;
|
||||
|
||||
if (title == NULL)
|
||||
if (dest == NULL)
|
||||
{
|
||||
if ((title = strrchr(argv[i], '/')) != NULL)
|
||||
title ++;
|
||||
else
|
||||
title = argv[i];
|
||||
fputs("lpr: error - no default destination available.\n", stderr);
|
||||
return (1);
|
||||
}
|
||||
|
||||
num_files ++;
|
||||
if (title)
|
||||
job_id = cupsPrintFile(dest, argv[i], title, num_options, options);
|
||||
else
|
||||
{
|
||||
char *filename;
|
||||
|
||||
if ((filename = strrchr(argv[i], '/')) != NULL)
|
||||
filename ++;
|
||||
else
|
||||
filename = argv[i];
|
||||
|
||||
job_id = cupsPrintFile(dest, argv[i], filename, num_options, options);
|
||||
}
|
||||
|
||||
if (job_id < 1)
|
||||
{
|
||||
fprintf(stderr, "lpr: unable to print file \'%s\' - %s.\n",
|
||||
argv[i], ippErrorString(cupsLastError()));
|
||||
return (1);
|
||||
}
|
||||
else if (deletefile)
|
||||
unlink(argv[i]);
|
||||
}
|
||||
else
|
||||
fprintf(stderr, "lpr: Too many files - \"%s\"\n", argv[i]);
|
||||
|
||||
/*
|
||||
* See if we have any files to print; if not, print from stdin...
|
||||
* See if we printed anything; if not, print from stdin...
|
||||
*/
|
||||
|
||||
if (printer == NULL)
|
||||
if (num_files == 0)
|
||||
{
|
||||
if (num_dests == 0)
|
||||
num_dests = cupsGetDests(&dests);
|
||||
|
||||
for (j = 0, dest = dests; j < num_dests; j ++, dest ++)
|
||||
if (dest->is_default)
|
||||
{
|
||||
printer = dests[j].name;
|
||||
|
||||
for (j = 0; j < dest->num_options; j ++)
|
||||
if (cupsGetOption(dest->options[j].name, num_options, options) == NULL)
|
||||
num_options = cupsAddOption(dest->options[j].name,
|
||||
dest->options[j].value,
|
||||
num_options, &options);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (printer == NULL)
|
||||
{
|
||||
fputs("lpr: error - no default destination available.\n", stderr);
|
||||
return (1);
|
||||
}
|
||||
|
||||
if (num_files > 0)
|
||||
{
|
||||
job_id = cupsPrintFiles(printer, num_files, files, title, num_options, options);
|
||||
|
||||
if (deletefile)
|
||||
if (dest == NULL)
|
||||
{
|
||||
/*
|
||||
* Delete print files after printing...
|
||||
*/
|
||||
|
||||
for (i = 0; i < num_files; i ++)
|
||||
unlink(files[i]);
|
||||
fputs("lpr: error - no default destination available.\n", stderr);
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
num_files = 1;
|
||||
|
||||
#ifndef WIN32
|
||||
# if defined(HAVE_SIGSET)
|
||||
@@ -303,23 +264,23 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
if (i == 0)
|
||||
{
|
||||
fputs("lpr: stdin is empty, so no job has been sent.\n", stderr);
|
||||
fputs("lpr: standard input is empty, so no job has been sent.\n", stderr);
|
||||
return (1);
|
||||
}
|
||||
|
||||
if (title)
|
||||
job_id = cupsPrintFile(printer, tempfile, title, num_options, options);
|
||||
job_id = cupsPrintFile(dest, tempfile, title, num_options, options);
|
||||
else
|
||||
job_id = cupsPrintFile(printer, tempfile, "(stdin)", num_options, options);
|
||||
job_id = cupsPrintFile(dest, tempfile, "(stdin)", num_options, options);
|
||||
|
||||
unlink(tempfile);
|
||||
}
|
||||
|
||||
if (job_id < 1)
|
||||
{
|
||||
fprintf(stderr, "lpr: unable to print file: %s\n",
|
||||
ippErrorString(cupsLastError()));
|
||||
return (1);
|
||||
if (job_id < 1)
|
||||
{
|
||||
fprintf(stderr, "lpr: unable to print standard input - %s.\n",
|
||||
ippErrorString(cupsLastError()));
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
|
||||
return (0);
|
||||
|
||||
@@ -50,8 +50,6 @@ clean:
|
||||
|
||||
install:
|
||||
-$(MKDIR) $(SERVERBIN)/cgi-bin
|
||||
$(CHMOD) ugo+rx $(SERVERBIN)
|
||||
$(CHMOD) ugo+rx $(SERVERBIN)/cgi-bin
|
||||
$(INSTALL_BIN) $(TARGETS) $(SERVERBIN)/cgi-bin
|
||||
|
||||
|
||||
|
||||
+4
-138
@@ -23,15 +23,6 @@
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* main() - Main entry for CGI.
|
||||
* do_am_class() - Add or modify a class.
|
||||
* do_am_printer() - Add or modify a printer.
|
||||
* do_config_printer() - Configure the default options for a printer.
|
||||
* do_delete_class() - Delete a class...
|
||||
* do_delete_printer() - Delete a printer...
|
||||
* do_job_op() - Do a job operation.
|
||||
* do_printer_op() - Do a printer operation.
|
||||
* get_line() - Get a line that is terminated by a LF, CR, or CR LF.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -201,8 +192,6 @@ do_am_class(http_t *http, /* I - HTTP connection */
|
||||
ipp_attribute_t *attr; /* member-uris attribute */
|
||||
ipp_status_t status; /* Request status */
|
||||
char uri[HTTP_MAX_URI]; /* Device or printer URI */
|
||||
const char *name, /* Pointer to class name */
|
||||
*ptr; /* Pointer to CGI variable */
|
||||
|
||||
|
||||
if (cgiGetVariable("PRINTER_LOCATION") == NULL)
|
||||
@@ -258,24 +247,8 @@ do_am_class(http_t *http, /* I - HTTP connection */
|
||||
|
||||
cgiCopyTemplateLang(stdout, TEMPLATES, "add-class.tmpl", getenv("LANG"));
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
name = cgiGetVariable("PRINTER_NAME");
|
||||
for (ptr = name; *ptr; ptr ++)
|
||||
if (!isalnum(*ptr) && *ptr != '_')
|
||||
break;
|
||||
|
||||
if (*ptr || ptr == name)
|
||||
{
|
||||
cgiSetVariable("ERROR", "The class name may only contain letters, "
|
||||
"numbers, and the underscore.");
|
||||
cgiCopyTemplateLang(stdout, TEMPLATES, "error.tmpl", getenv("LANG"));
|
||||
return;
|
||||
}
|
||||
|
||||
if (cgiGetVariable("MEMBER_URIS") == NULL)
|
||||
else if (cgiGetVariable("MEMBER_URIS") == NULL)
|
||||
{
|
||||
/*
|
||||
* Build a CUPS_GET_PRINTERS request, which requires the
|
||||
@@ -490,8 +463,6 @@ do_am_printer(http_t *http, /* I - HTTP connection */
|
||||
*uriptr; /* Pointer into URI */
|
||||
int maxrate; /* Maximum baud rate */
|
||||
char baudrate[255]; /* Baud rate string */
|
||||
const char *name, /* Pointer to class name */
|
||||
*ptr; /* Pointer to CGI variable */
|
||||
static int baudrates[] = /* Baud rates */
|
||||
{
|
||||
1200,
|
||||
@@ -560,24 +531,8 @@ do_am_printer(http_t *http, /* I - HTTP connection */
|
||||
|
||||
cgiCopyTemplateLang(stdout, TEMPLATES, "add-printer.tmpl", getenv("LANG"));
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
name = cgiGetVariable("PRINTER_NAME");
|
||||
for (ptr = name; *ptr; ptr ++)
|
||||
if (!isalnum(*ptr) && *ptr != '_')
|
||||
break;
|
||||
|
||||
if (*ptr || ptr == name)
|
||||
{
|
||||
cgiSetVariable("ERROR", "The printer name may only contain letters, "
|
||||
"numbers, and the underscore.");
|
||||
cgiCopyTemplateLang(stdout, TEMPLATES, "error.tmpl", getenv("LANG"));
|
||||
return;
|
||||
}
|
||||
|
||||
if ((var = cgiGetVariable("DEVICE_URI")) == NULL)
|
||||
else if ((var = cgiGetVariable("DEVICE_URI")) == NULL)
|
||||
{
|
||||
/*
|
||||
* Build a CUPS_GET_DEVICES request, which requires the following
|
||||
@@ -819,7 +774,6 @@ do_config_printer(http_t *http, /* I - HTTP connection */
|
||||
int have_options; /* Have options? */
|
||||
ipp_t *request, /* IPP request */
|
||||
*response; /* IPP response */
|
||||
ipp_attribute_t *attr; /* IPP attribute */
|
||||
char uri[HTTP_MAX_URI]; /* Job URI */
|
||||
const char *var; /* Variable value */
|
||||
const char *printer; /* Printer printer name */
|
||||
@@ -862,14 +816,8 @@ do_config_printer(http_t *http, /* I - HTTP connection */
|
||||
|
||||
ppd = ppdOpenFile(filename);
|
||||
|
||||
if (cgiGetVariable("job_sheets_start") != NULL ||
|
||||
cgiGetVariable("job_sheets_end") != NULL)
|
||||
have_options = 1;
|
||||
else
|
||||
have_options = 0;
|
||||
|
||||
for (i = ppd->num_groups, group = ppd->groups;
|
||||
i > 0 && !have_options;
|
||||
for (have_options = 0, i = ppd->num_groups, group = ppd->groups;
|
||||
i > 0;
|
||||
i --, group ++)
|
||||
for (j = group->num_options, option = group->options;
|
||||
j > 0;
|
||||
@@ -937,80 +885,6 @@ do_config_printer(http_t *http, /* I - HTTP connection */
|
||||
getenv("LANG"));
|
||||
}
|
||||
|
||||
/*
|
||||
* Build an IPP_GET_PRINTER_ATTRIBUTES request, which requires the
|
||||
* following attributes:
|
||||
*
|
||||
* attributes-charset
|
||||
* attributes-natural-language
|
||||
* printer-uri
|
||||
*/
|
||||
|
||||
request = ippNew();
|
||||
|
||||
request->request.op.operation_id = IPP_GET_PRINTER_ATTRIBUTES;
|
||||
request->request.op.request_id = 1;
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
|
||||
"attributes-charset", NULL, cupsLangEncoding(language));
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
|
||||
"attributes-natural-language", NULL, language->language);
|
||||
|
||||
snprintf(uri, sizeof(uri), "ipp://localhost/printers/%s",
|
||||
cgiGetVariable("PRINTER_NAME"));
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
|
||||
NULL, uri);
|
||||
|
||||
/*
|
||||
* Do the request and get back a response...
|
||||
*/
|
||||
|
||||
if ((response = cupsDoRequest(http, request, "/")) != NULL)
|
||||
{
|
||||
if ((attr = ippFindAttribute(response, "job-sheets-supported", IPP_TAG_ZERO)) != NULL)
|
||||
{
|
||||
/*
|
||||
* Add the job sheets options...
|
||||
*/
|
||||
|
||||
cgiSetVariable("GROUP", "Banners");
|
||||
cgiCopyTemplateLang(stdout, TEMPLATES, "option-header.tmpl",
|
||||
getenv("LANG"));
|
||||
|
||||
cgiSetSize("CHOICES", attr->num_values);
|
||||
cgiSetSize("TEXT", attr->num_values);
|
||||
for (k = 0; k < attr->num_values; k ++)
|
||||
{
|
||||
cgiSetArray("CHOICES", k, attr->values[k].string.text);
|
||||
cgiSetArray("TEXT", k, attr->values[k].string.text);
|
||||
}
|
||||
|
||||
attr = ippFindAttribute(response, "job-sheets-default", IPP_TAG_ZERO);
|
||||
|
||||
cgiSetVariable("KEYWORD", "job_sheets_start");
|
||||
cgiSetVariable("KEYTEXT", "Starting Banner");
|
||||
cgiSetVariable("DEFCHOICE", attr == NULL ?
|
||||
"" : attr->values[0].string.text);
|
||||
|
||||
cgiCopyTemplateLang(stdout, TEMPLATES, "option-pickone.tmpl",
|
||||
getenv("LANG"));
|
||||
|
||||
cgiSetVariable("KEYWORD", "job_sheets_end");
|
||||
cgiSetVariable("KEYTEXT", "Ending Banner");
|
||||
cgiSetVariable("DEFCHOICE", attr == NULL && attr->num_values > 1 ?
|
||||
"" : attr->values[1].string.text);
|
||||
|
||||
cgiCopyTemplateLang(stdout, TEMPLATES, "option-pickone.tmpl",
|
||||
getenv("LANG"));
|
||||
|
||||
cgiCopyTemplateLang(stdout, TEMPLATES, "option-trailer.tmpl",
|
||||
getenv("LANG"));
|
||||
}
|
||||
|
||||
ippDelete(response);
|
||||
}
|
||||
|
||||
cgiCopyTemplateLang(stdout, TEMPLATES, "config-printer2.tmpl",
|
||||
getenv("LANG"));
|
||||
}
|
||||
@@ -1065,7 +939,6 @@ do_config_printer(http_t *http, /* I - HTTP connection */
|
||||
* attributes-charset
|
||||
* attributes-natural-language
|
||||
* printer-uri
|
||||
* job-sheets-default
|
||||
* [ppd file]
|
||||
*/
|
||||
|
||||
@@ -1085,11 +958,6 @@ do_config_printer(http_t *http, /* I - HTTP connection */
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
|
||||
NULL, uri);
|
||||
|
||||
attr = ippAddStrings(request, IPP_TAG_PRINTER, IPP_TAG_NAME,
|
||||
"job-sheets-default", 2, NULL, NULL);
|
||||
attr->values[0].string.text = strdup(cgiGetVariable("job_sheets_start"));
|
||||
attr->values[1].string.text = strdup(cgiGetVariable("job_sheets_end"));
|
||||
|
||||
/*
|
||||
* Do the request and get back a response...
|
||||
*/
|
||||
@@ -1356,8 +1224,6 @@ do_job_op(http_t *http, /* I - HTTP connection */
|
||||
cgiCopyTemplateLang(stdout, TEMPLATES, "job-hold.tmpl", getenv("LANG"));
|
||||
else if (op == IPP_RELEASE_JOB)
|
||||
cgiCopyTemplateLang(stdout, TEMPLATES, "job-release.tmpl", getenv("LANG"));
|
||||
else if (op == IPP_RESTART_JOB)
|
||||
cgiCopyTemplateLang(stdout, TEMPLATES, "job-restart.tmpl", getenv("LANG"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
+12
-60
@@ -34,33 +34,6 @@
|
||||
#include "ipp-var.h"
|
||||
|
||||
|
||||
/*
|
||||
* 'ippGetTemplateDir()' - Get the templates directory...
|
||||
*/
|
||||
|
||||
char * /* O - Template directory */
|
||||
ippGetTemplateDir(void)
|
||||
{
|
||||
const char *datadir; /* CUPS_DATADIR env var */
|
||||
static char templates[1024] = ""; /* Template directory */
|
||||
|
||||
|
||||
if (!templates[0])
|
||||
{
|
||||
/*
|
||||
* Build the template directory pathname...
|
||||
*/
|
||||
|
||||
if ((datadir = getenv("CUPS_DATADIR")) == NULL)
|
||||
datadir = CUPS_DATADIR;
|
||||
|
||||
snprintf(templates, sizeof(templates), "%s/templates", datadir);
|
||||
}
|
||||
|
||||
return (templates);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'ippSetServerVersion()' - Set the server name and CUPS version...
|
||||
*/
|
||||
@@ -95,14 +68,11 @@ ippSetCGIVars(ipp_t *response, /* I - Response data to be copied... */
|
||||
hostname[HTTP_MAX_URI],
|
||||
resource[HTTP_MAX_URI],
|
||||
uri[HTTP_MAX_URI];
|
||||
int port; /* URI data */
|
||||
char server[1024]; /* Name of server */
|
||||
int port;
|
||||
|
||||
|
||||
ippSetServerVersion();
|
||||
|
||||
strcpy(server, cupsServer());
|
||||
|
||||
for (attr = response->attrs;
|
||||
attr && attr->group_tag == IPP_TAG_OPERATION;
|
||||
attr = attr->next);
|
||||
@@ -192,38 +162,20 @@ ippSetCGIVars(ipp_t *response, /* I - Response data to be copied... */
|
||||
break;
|
||||
|
||||
case IPP_TAG_URI :
|
||||
if (strchr(attr->values[i].string.text, ':') != NULL)
|
||||
if (strncmp(attr->values[i].string.text, "ipp:", 4) == 0)
|
||||
{
|
||||
httpSeparate(attr->values[i].string.text, method, username,
|
||||
httpSeparate(attr->values[i].string.text, method, username,
|
||||
hostname, &port, resource);
|
||||
if (username[0])
|
||||
snprintf(uri, sizeof(uri), "http://%s@%s:%d%s", username,
|
||||
hostname, port, resource);
|
||||
else
|
||||
snprintf(uri, sizeof(uri), "http://%s:%d%s", hostname, port,
|
||||
resource);
|
||||
|
||||
if (strcmp(method, "ipp") == 0 ||
|
||||
strcmp(method, "http") == 0)
|
||||
{
|
||||
/*
|
||||
* Map localhost access to localhost...
|
||||
*/
|
||||
|
||||
if (strcasecmp(hostname, server) == 0 &&
|
||||
(strcmp(getenv("REMOTE_HOST"), "127.0.0.1") == 0 ||
|
||||
strcmp(getenv("REMOTE_HOST"), "localhost") == 0))
|
||||
strcpy(hostname, "localhost");
|
||||
|
||||
/*
|
||||
* Rewrite URI with HTTP address...
|
||||
*/
|
||||
|
||||
if (username[0])
|
||||
snprintf(uri, sizeof(uri), "http://%s@%s:%d%s", username,
|
||||
hostname, port, resource);
|
||||
else
|
||||
snprintf(uri, sizeof(uri), "http://%s:%d%s", hostname, port,
|
||||
resource);
|
||||
|
||||
strcat(valptr, uri);
|
||||
break;
|
||||
}
|
||||
}
|
||||
strcat(valptr, uri);
|
||||
break;
|
||||
}
|
||||
|
||||
case IPP_TAG_STRING :
|
||||
case IPP_TAG_TEXT :
|
||||
|
||||
+2
-2
@@ -38,14 +38,14 @@
|
||||
* Definitions...
|
||||
*/
|
||||
|
||||
#define TEMPLATES ippGetTemplateDir()
|
||||
/*#define TEMPLATES "/home/mike/c/cups/templates"*/
|
||||
#define TEMPLATES CUPS_DATADIR "/templates"
|
||||
|
||||
|
||||
/*
|
||||
* Prototype...
|
||||
*/
|
||||
|
||||
extern char *ippGetTemplateDir(void);
|
||||
extern void ippSetServerVersion(void);
|
||||
extern void ippSetCGIVars(ipp_t *, const char *, const char *);
|
||||
|
||||
|
||||
@@ -52,7 +52,6 @@ clean:
|
||||
|
||||
install:
|
||||
-$(MKDIR) $(SERVERROOT)
|
||||
$(CHMOD) ugo+rx $(SERVERROOT)
|
||||
for file in $(KEEP); do \
|
||||
if test -r $(SERVERROOT)/$$file ; then \
|
||||
$(INSTALL_DATA) $$file $(SERVERROOT)/$$file.N ; \
|
||||
|
||||
+8
-2
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: classes.conf 1152 2000-06-22 18:25:29Z mike $"
|
||||
# "$Id: classes.conf 969 2000-03-10 16:56:46Z mike $"
|
||||
#
|
||||
# Sample class configuration file for the Common UNIX Printing System
|
||||
# (CUPS) scheduler.
|
||||
@@ -47,6 +47,12 @@
|
||||
|
||||
#Info Acme LaserPrint 1000 Printers
|
||||
|
||||
#
|
||||
# MoreInfo: a URL for more information on the printer.
|
||||
#
|
||||
|
||||
#MoreInfo http://www.acme.com/lp1000.html
|
||||
|
||||
#
|
||||
# Location: the location of the printer.
|
||||
#
|
||||
@@ -85,5 +91,5 @@
|
||||
#</Class>
|
||||
|
||||
#
|
||||
# End of "$Id: classes.conf 1152 2000-06-22 18:25:29Z mike $".
|
||||
# End of "$Id: classes.conf 969 2000-03-10 16:56:46Z mike $".
|
||||
#
|
||||
|
||||
+2
-17
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: cupsd.conf 1171 2000-06-27 21:15:41Z mike $"
|
||||
# "$Id: cupsd.conf 1054 2000-05-08 21:13:37Z mike $"
|
||||
#
|
||||
# Sample configuration file for the Common UNIX Printing System (CUPS)
|
||||
# scheduler.
|
||||
@@ -71,13 +71,6 @@
|
||||
|
||||
#AccessLog /var/log/cups/access_log
|
||||
|
||||
#
|
||||
# DataDir: the root directory for the CUPS data files.
|
||||
# By default /usr/share/cups.
|
||||
#
|
||||
|
||||
#DataDir /usr/share/cups
|
||||
|
||||
#
|
||||
# DefaultCharset: the default character set to use. If not specified,
|
||||
# defaults to utf-8. Note that this can also be overridden in
|
||||
@@ -296,14 +289,6 @@ Port 631
|
||||
|
||||
#Browsing On
|
||||
|
||||
#
|
||||
# BrowseShortNames: whether or not to use "short" names for remote printers
|
||||
# when possible (e.g. "printer" instead of "printer@host".) Enabled by
|
||||
# default.
|
||||
#
|
||||
|
||||
#BrowseShortNames Yes
|
||||
|
||||
#
|
||||
# BrowseAddress: specifies a broadcast address to be used. By
|
||||
# default browsing information is broadcast to all active interfaces.
|
||||
@@ -538,5 +523,5 @@ Allow From 127.0.0.1
|
||||
</Location>
|
||||
|
||||
#
|
||||
# End of "$Id: cupsd.conf 1171 2000-06-27 21:15:41Z mike $".
|
||||
# End of "$Id: cupsd.conf 1054 2000-05-08 21:13:37Z mike $".
|
||||
#
|
||||
|
||||
+2
-13
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: mime.convs 1270 2000-08-03 18:05:22Z mike $"
|
||||
# "$Id: mime.convs 1019 2000-04-18 19:41:12Z mike $"
|
||||
#
|
||||
# MIME converts file for the Common UNIX Printing System (CUPS).
|
||||
#
|
||||
@@ -59,17 +59,6 @@ application/vnd.cups-form application/vnd.cups-postscript 50 formtops
|
||||
image/* application/vnd.cups-raster 50 imagetoraster
|
||||
application/vnd.cups-postscript application/vnd.cups-raster 50 pstoraster
|
||||
|
||||
########################################################################
|
||||
#
|
||||
# Raw filter...
|
||||
#
|
||||
# Uncomment the following filter and the application/octet-stream type
|
||||
# in mime.types to allow printing of arbitrary files without the -oraw
|
||||
# option.
|
||||
#
|
||||
|
||||
#*/* application/vnd.cups-raw 0 -
|
||||
|
||||
#
|
||||
# End of "$Id: mime.convs 1270 2000-08-03 18:05:22Z mike $".
|
||||
# End of "$Id: mime.convs 1019 2000-04-18 19:41:12Z mike $".
|
||||
#
|
||||
|
||||
+3
-14
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: mime.types 1270 2000-08-03 18:05:22Z mike $"
|
||||
# "$Id: mime.types 1042 2000-04-30 22:03:57Z mike $"
|
||||
#
|
||||
# MIME types file for the Common UNIX Printing System (CUPS).
|
||||
#
|
||||
@@ -39,7 +39,7 @@
|
||||
# ascii(offset,length) True if bytes are valid printable ASCII
|
||||
# (CR, NL, TAB, BS, 32-126)
|
||||
# printable(offset,length) True if bytes are printable 8-bit chars
|
||||
# (CR, NL, TAB, BS, 32-126, 128-254)
|
||||
# (CR, NL, TAB, BS, 32-126, 160-254)
|
||||
# string(offset,"string") True if bytes are identical to string
|
||||
# char(offset,value) True if byte is identical
|
||||
# short(offset,value) True if 16-bit integer is identical
|
||||
@@ -122,17 +122,6 @@ application/vnd.cups-postscript string(0,<1B>%-12345X)
|
||||
application/vnd.cups-raster string(0,"RaSt") string(0,"tSaR")
|
||||
application/vnd.cups-raw
|
||||
|
||||
########################################################################
|
||||
#
|
||||
# Raw print file support...
|
||||
#
|
||||
# Uncomment the following type and the application/octet-stream
|
||||
# filter line in mime.convs to allow raw file printing without the
|
||||
# -oraw option.
|
||||
#
|
||||
|
||||
#application/octet-stream
|
||||
|
||||
#
|
||||
# End of "$Id: mime.types 1270 2000-08-03 18:05:22Z mike $".
|
||||
# End of "$Id: mime.types 1042 2000-04-30 22:03:57Z mike $".
|
||||
#
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: printers.conf 1152 2000-06-22 18:25:29Z mike $"
|
||||
# "$Id: printers.conf 969 2000-03-10 16:56:46Z mike $"
|
||||
#
|
||||
# Sample printer configuration file for the Common UNIX Printing System
|
||||
# (CUPS) scheduler.
|
||||
@@ -47,6 +47,12 @@
|
||||
|
||||
#Info Acme LaserPrint 1000
|
||||
|
||||
#
|
||||
# MoreInfo: a URL for more information on the printer.
|
||||
#
|
||||
|
||||
#MoreInfo http://www.acme.com/lp1000.html
|
||||
|
||||
#
|
||||
# Location: the location of the printer.
|
||||
#
|
||||
@@ -92,5 +98,5 @@
|
||||
#</Printer>
|
||||
|
||||
#
|
||||
# End of "$Id: printers.conf 1152 2000-06-22 18:25:29Z mike $".
|
||||
# End of "$Id: printers.conf 969 2000-03-10 16:56:46Z mike $".
|
||||
#
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@
|
||||
* Version of software...
|
||||
*/
|
||||
|
||||
#define CUPS_SVERSION "CUPS v1.1.2"
|
||||
#define CUPS_SVERSION "CUPS v1.1b4"
|
||||
|
||||
/*
|
||||
* Where are files stored?
|
||||
|
||||
+51
-160
@@ -24,7 +24,7 @@ dnl
|
||||
|
||||
AC_INIT(cups/cups.h)
|
||||
AC_CONFIG_HEADER(config.h)
|
||||
AC_PREFIX_DEFAULT(/)
|
||||
AC_PREFIX_DEFAULT(/usr)
|
||||
|
||||
dnl Get the operating system and version number...
|
||||
|
||||
@@ -41,7 +41,6 @@ OPTIM=""
|
||||
AC_SUBST(OPTIM)
|
||||
PICFLAG=1
|
||||
CFLAGS="${CFLAGS:=}"
|
||||
CXXFLAGS="${CXXFLAGS:=}"
|
||||
|
||||
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],[if eval "test x$enable_debug = xyes"; then
|
||||
OPTIM="-g "
|
||||
@@ -49,7 +48,7 @@ fi])
|
||||
AC_ARG_ENABLE(shared, [ --enable-shared turn on shared libraries [default=yes]])
|
||||
AC_ARG_ENABLE(libtool_unsupported, [ --enable-libtool-unsupported=LIBTOOL_PATH
|
||||
turn on building with libtool (UNSUPPORTED!) [default=no]],[if eval "test x$enable_libtool_unsupported != xno"; then
|
||||
LIBTOOL="$enable_libtool_unsupported"
|
||||
LIBTOOL="$enable_libtool"
|
||||
enable_shared=no
|
||||
echo "WARNING: libtool is not supported or endorsed by Easy Software Products."
|
||||
echo " WE DO NOT PROVIDE TECHNICAL SUPPORT FOR LIBTOOL PROBLEMS."
|
||||
@@ -116,12 +115,10 @@ AC_ARG_ENABLE(pam, [ --enable-pam turn on PAM support [default=yes]])
|
||||
dnl Checks for programs...
|
||||
AC_PROG_AWK
|
||||
AC_PROG_CC
|
||||
AC_PROG_CXX
|
||||
AC_PROG_CPP
|
||||
AC_PROG_RANLIB
|
||||
AC_PATH_PROG(AR,ar)
|
||||
AC_PATH_PROG(CHMOD,chmod)
|
||||
AC_PATH_PROG(CHOWN,chown)
|
||||
AC_PATH_PROG(CP,cp)
|
||||
AC_PATH_PROG(MV,mv)
|
||||
AC_PATH_PROG(NROFF,nroff)
|
||||
@@ -193,7 +190,7 @@ AC_CHECK_LIB(jpeg, jpeg_destroy_decompress,
|
||||
LIBJPEG="-ljpeg"
|
||||
LIBS="$LIBS -ljpeg")
|
||||
|
||||
AC_CHECK_LIB(z, gzgets,
|
||||
AC_CHECK_LIB(z, deflate,
|
||||
AC_DEFINE(HAVE_LIBZ)
|
||||
LIBZ="-lz"
|
||||
LIBS="$LIBS -lz")
|
||||
@@ -314,6 +311,19 @@ else
|
||||
IMGLIBS="\$(LIBJPEG) \$(LIBPNG) \$(LIBTIFF) \$(LIBZ)"
|
||||
fi
|
||||
|
||||
# Figure out how to install "cat" pages...
|
||||
case "$uname" in
|
||||
FreeBSD* | NetBSD* | OpenBSD*)
|
||||
# *BSD
|
||||
INSTALL_CAT="install-bsdcat"
|
||||
;;
|
||||
*)
|
||||
# All others
|
||||
INSTALL_CAT="install-cat"
|
||||
;;
|
||||
esac
|
||||
AC_SUBST(INSTALL_CAT)
|
||||
|
||||
AC_SUBST(DSO)
|
||||
AC_SUBST(DSOLIBS)
|
||||
AC_SUBST(IMGLIBS)
|
||||
@@ -323,167 +333,48 @@ AC_SUBST(LIBTOOL)
|
||||
AC_SUBST(LINKCUPS)
|
||||
AC_SUBST(LINKCUPSIMAGE)
|
||||
|
||||
dnl Fix "prefix" variable if it hasn't been specified...
|
||||
if test "$prefix" = "NONE"; then
|
||||
prefix="/"
|
||||
fi
|
||||
|
||||
dnl Fix "exec_prefix" variable if it hasn't been specified...
|
||||
if test "$exec_prefix" = "NONE"; then
|
||||
if test "$prefix" = "/"; then
|
||||
exec_prefix="/usr"
|
||||
else
|
||||
exec_prefix="$prefix"
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl Fix "sharedstatedir" variable if it hasn't been specified...
|
||||
if test "$sharedstatedir" = "\${prefix}/com" -a "$prefix" = "/"; then
|
||||
sharedstatedir="/usr/com"
|
||||
fi
|
||||
|
||||
dnl Fix "infodir" variable if it hasn't been specified...
|
||||
if test "$infodir" = "\${prefix}/info" -a "$prefix" = "/"; then
|
||||
infodir="/usr/info"
|
||||
fi
|
||||
|
||||
dnl Fix "datadir" variable if it hasn't been specified...
|
||||
if test "$datadir" = "\${prefix}/share" -a "$prefix" = "/"; then
|
||||
datadir="/usr/share"
|
||||
fi
|
||||
|
||||
dnl Fix "includedir" variable if it hasn't been specified...
|
||||
if test "$includedir" = "\${prefix}/include" -a "$prefix" = "/"; then
|
||||
includedir="/usr/include"
|
||||
fi
|
||||
|
||||
dnl Fix "localstatedir" variable if it hasn't been specified...
|
||||
if test "$localstatedir" = "\${prefix}/var"; then
|
||||
if test "$prefix" = "/"; then
|
||||
localstatedir="/var"
|
||||
else
|
||||
localstatedir="$prefix/var"
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl Fix "sysconfdir" variable if it hasn't been specified...
|
||||
if test "$sysconfdir" = "\${prefix}/etc"; then
|
||||
if test "$prefix" = "/"; then
|
||||
sysconfdir="/etc"
|
||||
else
|
||||
sysconfdir="$prefix/etc"
|
||||
fi
|
||||
dnl Fix prefix as needed..
|
||||
if test "$prefix" = "NONE" ; then
|
||||
prefix="/usr"
|
||||
fi
|
||||
|
||||
dnl Fix "libdir" variable for IRIX 6.x...
|
||||
if test "$uname" = "IRIX" -a $uversion -ge 62; then
|
||||
libdir="$exec_prefix/lib32"
|
||||
if test "$uname" = "IRIX" -a $uversion -ge 65; then
|
||||
libdir="${prefix}/lib32"
|
||||
fi
|
||||
|
||||
dnl Fix "mandir" variable...
|
||||
if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/"; then
|
||||
if test "$uname" = "IRIX"; then
|
||||
mandir="/usr/share/catman"
|
||||
else
|
||||
mandir="/usr/man"
|
||||
fi
|
||||
fi
|
||||
dnl Need special attention for the default location...
|
||||
if test "$prefix" = "/usr" ; then
|
||||
CUPS_SERVERROOT="/etc/cups"
|
||||
CUPS_LOGDIR="/var/log/cups"
|
||||
CUPS_REQUESTS="/var/spool/cups"
|
||||
|
||||
dnl Setup manpage extensions...
|
||||
case "$uname" in
|
||||
FreeBSD* | NetBSD* | OpenBSD*)
|
||||
# *BSD
|
||||
CAT1EXT=0
|
||||
CAT5EXT=0
|
||||
CAT8EXT=0
|
||||
;;
|
||||
IRIX*)
|
||||
# SGI IRIX
|
||||
CAT1EXT=z
|
||||
CAT5EXT=z
|
||||
CAT8EXT=z
|
||||
;;
|
||||
*)
|
||||
# All others
|
||||
CAT1EXT=1
|
||||
CAT5EXT=5
|
||||
CAT8EXT=8
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_SUBST(CAT1EXT)
|
||||
AC_SUBST(CAT5EXT)
|
||||
AC_SUBST(CAT8EXT)
|
||||
|
||||
dnl Setup init.d locations...
|
||||
if test $prefix = "/"; then
|
||||
case "$uname" in
|
||||
FreeBSD* | NetBSD* | OpenBSD*)
|
||||
# *BSD
|
||||
INITDIR=""
|
||||
INITDDIR=""
|
||||
;;
|
||||
|
||||
Linux*)
|
||||
# Linux seems to choose an init.d directory at random...
|
||||
if test -d /sbin/init.d; then
|
||||
# SuSE
|
||||
INITDIR="/sbin/init.d"
|
||||
INITDDIR=".."
|
||||
else
|
||||
if test -d /etc/rc.d; then
|
||||
# RedHat
|
||||
INITDIR="/etc/rc.d"
|
||||
INITDDIR="../init.d"
|
||||
else
|
||||
# Others
|
||||
INITDIR="/etc"
|
||||
INITDDIR="../init.d"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
|
||||
OSF1* | HP-UX*)
|
||||
INITDIR="/sbin"
|
||||
INITDDIR="../init.d"
|
||||
;;
|
||||
|
||||
*)
|
||||
INITDIR="/etc"
|
||||
INITDDIR="../init.d"
|
||||
;;
|
||||
|
||||
esac
|
||||
AC_DEFINE_UNQUOTED(CUPS_SERVERROOT, "$CUPS_SERVERROOT")
|
||||
AC_DEFINE_UNQUOTED(CUPS_LOGDIR, "$CUPS_LOGDIR")
|
||||
AC_DEFINE_UNQUOTED(CUPS_REQUESTS, "$CUPS_REQUESTS")
|
||||
else
|
||||
INITDIR="/etc"
|
||||
INITDDIR="../init.d"
|
||||
CUPS_SERVERROOT='${prefix}/etc/cups'
|
||||
CUPS_LOGDIR='${prefix}/log/cups'
|
||||
CUPS_REQUESTS='${prefix}/spool/cups'
|
||||
|
||||
AC_DEFINE_UNQUOTED(CUPS_SERVERROOT, "$prefix/etc/cups")
|
||||
AC_DEFINE_UNQUOTED(CUPS_LOGDIR, "$prefix/log/cups")
|
||||
AC_DEFINE_UNQUOTED(CUPS_REQUESTS, "$prefix/spool/cups")
|
||||
fi
|
||||
|
||||
AC_SUBST(INITDIR)
|
||||
AC_SUBST(INITDDIR)
|
||||
|
||||
dnl Setup default locations...
|
||||
CUPS_SERVERROOT='${prefix}/etc/cups'
|
||||
CUPS_LOGDIR='${prefix}/var/log/cups'
|
||||
CUPS_REQUESTS='${prefix}/var/spool/cups'
|
||||
|
||||
AC_DEFINE_UNQUOTED(CUPS_SERVERROOT, "$prefix/etc/cups")
|
||||
AC_DEFINE_UNQUOTED(CUPS_LOGDIR, "$prefix/var/log/cups")
|
||||
AC_DEFINE_UNQUOTED(CUPS_REQUESTS, "$prefix/var/spool/cups")
|
||||
|
||||
dnl See what directory to put server executables...
|
||||
case "$uname" in
|
||||
FreeBSD* | NetBSD* | OpenBSD*)
|
||||
# *BSD
|
||||
INSTALL_SYSV=""
|
||||
CUPS_SERVERBIN='${exec_prefix}/libexec/cups'
|
||||
AC_DEFINE_UNQUOTED(CUPS_SERVERBIN, "$exec_prefix/libexec/cups")
|
||||
CUPS_SERVERBIN='${prefix}/libexec/cups'
|
||||
AC_DEFINE_UNQUOTED(CUPS_SERVERBIN, "$prefix/libexec/cups")
|
||||
;;
|
||||
*)
|
||||
# All others
|
||||
INSTALL_SYSV="install-sysv"
|
||||
CUPS_SERVERBIN='${exec_prefix}/lib/cups'
|
||||
AC_DEFINE_UNQUOTED(CUPS_SERVERBIN, "$exec_prefix/lib/cups")
|
||||
CUPS_SERVERBIN='${prefix}/lib/cups'
|
||||
AC_DEFINE_UNQUOTED(CUPS_SERVERBIN, "$prefix/lib/cups")
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -496,35 +387,35 @@ AC_SUBST(CUPS_REQUESTS)
|
||||
dnl Set the CUPS_LOCALE directory...
|
||||
case "$uname" in
|
||||
Linux* | FreeBSD* | NetBSD* | OpenBSD*)
|
||||
CUPS_LOCALEDIR='${exec_prefix}/share/locale'
|
||||
AC_DEFINE_UNQUOTED(CUPS_LOCALEDIR, "$exec_prefix/share/locale")
|
||||
CUPS_LOCALEDIR='${prefix}/share/locale'
|
||||
AC_DEFINE_UNQUOTED(CUPS_LOCALEDIR, "$prefix/share/locale")
|
||||
;;
|
||||
|
||||
OSF1*)
|
||||
CUPS_LOCALEDIR='${exec_prefix}/lib/nls/msg'
|
||||
AC_DEFINE_UNQUOTED(CUPS_LOCALEDIR, "$exec_prefix/lib/nls/msg")
|
||||
CUPS_LOCALEDIR='${prefix}/lib/nls/msg'
|
||||
AC_DEFINE_UNQUOTED(CUPS_LOCALEDIR, "$prefix/lib/nls/msg")
|
||||
;;
|
||||
|
||||
*)
|
||||
# This is the standard System V location...
|
||||
CUPS_LOCALEDIR='${exec_prefix}/lib/locale'
|
||||
AC_DEFINE_UNQUOTED(CUPS_LOCALEDIR, "$exec_prefix/lib/locale")
|
||||
CUPS_LOCALEDIR='${prefix}/lib/locale'
|
||||
AC_DEFINE_UNQUOTED(CUPS_LOCALEDIR, "$prefix/lib/locale")
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_SUBST(CUPS_LOCALEDIR)
|
||||
|
||||
dnl Set the CUPS_DATADIR directory...
|
||||
CUPS_DATADIR='${exec_prefix}/share/cups'
|
||||
AC_DEFINE_UNQUOTED(CUPS_DATADIR, "$exec_prefix/share/cups")
|
||||
CUPS_DATADIR='${datadir}/cups'
|
||||
AC_DEFINE_UNQUOTED(CUPS_DATADIR, "$prefix/share/cups")
|
||||
AC_SUBST(CUPS_DATADIR)
|
||||
|
||||
dnl Set the CUPS_DOCROOT directory...
|
||||
CUPS_DOCROOT='${exec_prefix}/share/doc/cups'
|
||||
AC_DEFINE_UNQUOTED(CUPS_DOCROOT, "$exec_prefix/share/doc/cups")
|
||||
CUPS_DOCROOT='${datadir}/doc/cups'
|
||||
AC_DEFINE_UNQUOTED(CUPS_DOCROOT, "$prefix/share/doc/cups")
|
||||
AC_SUBST(CUPS_DOCROOT)
|
||||
|
||||
AC_OUTPUT(Makedefs cups.sh)
|
||||
AC_OUTPUT(Makedefs)
|
||||
|
||||
dnl
|
||||
dnl End of "$Id$".
|
||||
|
||||
+389
-437
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: cups.list 1277 2000-08-04 14:53:49Z mike $"
|
||||
# "$Id: cups.list 1084 2000-05-16 19:18:59Z mike $"
|
||||
#
|
||||
# ESP Package Manager (EPM) file list for the Common UNIX Printing
|
||||
# System (CUPS).
|
||||
@@ -28,482 +28,434 @@
|
||||
%vendor Easy Software Products
|
||||
%license LICENSE.txt
|
||||
%readme README.txt
|
||||
%version 1.1.2
|
||||
%version 1.1b4
|
||||
%incompat printpro
|
||||
|
||||
%system all
|
||||
# Server files
|
||||
f 0555 root sys $SBINDIR/cupsd scheduler/cupsd
|
||||
|
||||
d 0555 root sys $SERVERBIN -
|
||||
d 0555 root sys $SERVERBIN/backend -
|
||||
f 0555 root sys $SERVERBIN/backend/ipp backend/ipp
|
||||
l 0555 root sys $SERVERBIN/backend/http ipp
|
||||
f 0555 root sys $SERVERBIN/backend/lpd backend/lpd
|
||||
f 0555 root sys $SERVERBIN/backend/parallel backend/parallel
|
||||
f 0555 root sys $SERVERBIN/backend/serial backend/serial
|
||||
f 0555 root sys $SERVERBIN/backend/socket backend/socket
|
||||
f 0555 root sys $SERVERBIN/backend/usb backend/usb
|
||||
d 0555 root sys $SERVERBIN/cgi-bin -
|
||||
f 0555 root sys $SERVERBIN/cgi-bin/admin.cgi cgi-bin/admin.cgi
|
||||
f 0555 root sys $SERVERBIN/cgi-bin/classes.cgi cgi-bin/classes.cgi
|
||||
f 0555 root sys $SERVERBIN/cgi-bin/jobs.cgi cgi-bin/jobs.cgi
|
||||
f 0555 root sys $SERVERBIN/cgi-bin/printers.cgi cgi-bin/printers.cgi
|
||||
d 0555 root sys $SERVERBIN/daemon -
|
||||
f 0555 root sys $SERVERBIN/daemon/cups-lpd scheduler/cups-lpd
|
||||
f 0555 root sys $SERVERBIN/daemon/cups-polld scheduler/cups-polld
|
||||
d 0555 root sys $SERVERBIN/filter -
|
||||
f 0555 root sys $SERVERBIN/filter/pstoraster pstoraster/pstoraster
|
||||
f 0555 root sys $SERVERBIN/filter/pdftops pdftops/pdftops
|
||||
f 0555 root sys $SERVERBIN/filter/imagetops filter/imagetops
|
||||
f 0555 root sys $SERVERBIN/filter/pstops filter/pstops
|
||||
f 0555 root sys $SERVERBIN/filter/texttops filter/texttops
|
||||
f 0555 root sys $SERVERBIN/filter/rastertoepson filter/rastertoepson
|
||||
f 0555 root sys $SERVERBIN/filter/rastertohp filter/rastertohp
|
||||
f 0555 root sys $SERVERBIN/filter/hpgltops filter/hpgltops
|
||||
f 0555 root sys $SERVERBIN/filter/imagetoraster filter/imagetoraster
|
||||
f 0500 root sys /usr/sbin/cupsd scheduler/cupsd
|
||||
f 0555 root sys /usr/lib/cups/backend/ipp backend/ipp
|
||||
l 0555 root sys /usr/lib/cups/backend/http ipp
|
||||
f 0555 root sys /usr/lib/cups/backend/lpd backend/lpd
|
||||
f 0555 root sys /usr/lib/cups/backend/parallel backend/parallel
|
||||
f 0555 root sys /usr/lib/cups/backend/serial backend/serial
|
||||
f 0555 root sys /usr/lib/cups/backend/socket backend/socket
|
||||
f 0555 root sys /usr/lib/cups/backend/usb backend/usb
|
||||
f 0555 root sys /usr/lib/cups/cgi-bin/admin.cgi cgi-bin/admin.cgi
|
||||
f 0555 root sys /usr/lib/cups/cgi-bin/classes.cgi cgi-bin/classes.cgi
|
||||
f 0555 root sys /usr/lib/cups/cgi-bin/jobs.cgi cgi-bin/jobs.cgi
|
||||
f 0555 root sys /usr/lib/cups/cgi-bin/printers.cgi cgi-bin/printers.cgi
|
||||
f 0555 root sys /usr/lib/cups/daemon/cups-lpd scheduler/cups-lpd
|
||||
f 0555 root sys /usr/lib/cups/daemon/cups-polld scheduler/cups-polld
|
||||
f 0555 root sys /usr/lib/cups/filter/pstoraster pstoraster/pstoraster
|
||||
l 0555 root sys /usr/lib/cups/filter/pdftops pstoraster
|
||||
f 0555 root sys /usr/lib/cups/filter/imagetops filter/imagetops
|
||||
f 0555 root sys /usr/lib/cups/filter/pstops filter/pstops
|
||||
f 0555 root sys /usr/lib/cups/filter/texttops filter/texttops
|
||||
f 0555 root sys /usr/lib/cups/filter/rastertoepson filter/rastertoepson
|
||||
f 0555 root sys /usr/lib/cups/filter/rastertohp filter/rastertohp
|
||||
f 0555 root sys /usr/lib/cups/filter/hpgltops filter/hpgltops
|
||||
f 0555 root sys /usr/lib/cups/filter/imagetoraster filter/imagetoraster
|
||||
|
||||
# Admin commands
|
||||
l 0555 root sys $BINDIR/disable $SBINDIR/accept
|
||||
l 0555 root sys $BINDIR/enable $SBINDIR/accept
|
||||
l 0555 root sys $LIBDIR/accept $SBINDIR/accept
|
||||
l 0555 root sys $LIBDIR/lpadmin $SBINDIR/lpadmin
|
||||
l 0555 root sys $LIBDIR/reject accept
|
||||
f 0555 root sys $SBINDIR/accept systemv/accept
|
||||
f 0555 root sys $SBINDIR/lpadmin systemv/lpadmin
|
||||
f 0555 root sys $SBINDIR/lpc berkeley/lpc
|
||||
f 0555 root sys $SBINDIR/lpinfo systemv/lpinfo
|
||||
f 0555 root sys $SBINDIR/lpmove systemv/lpmove
|
||||
l 0555 root sys $SBINDIR/reject accept
|
||||
|
||||
%system irix
|
||||
l 0555 root sys /usr/etc/lpc $SBINDIR/lpc
|
||||
%system all
|
||||
l 0555 root sys /usr/bin/disable /usr/sbin/accept
|
||||
l 0555 root sys /usr/bin/enable /usr/sbin/accept
|
||||
l 0555 root sys /usr/lib/accept /usr/sbin/accept
|
||||
l 0555 root sys /usr/lib/lpadmin /usr/sbin/lpadmin
|
||||
l 0555 root sys /usr/lib/reject accept
|
||||
f 0555 root sys /usr/sbin/accept systemv/accept
|
||||
f 0555 root sys /usr/sbin/lpadmin systemv/lpadmin
|
||||
f 0555 root sys /usr/sbin/lpc berkeley/lpc
|
||||
f 0555 root sys /usr/sbin/lpinfo systemv/lpinfo
|
||||
f 0555 root sys /usr/sbin/lpmove systemv/lpmove
|
||||
l 0555 root sys /usr/sbin/reject accept
|
||||
|
||||
# User commands
|
||||
f 0555 root sys $BINDIR/cancel systemv/cancel
|
||||
f 0555 root sys $BINDIR/lp systemv/lp
|
||||
f 0555 root sys $BINDIR/lpoptions systemv/lpoptions
|
||||
f 4555 root sys $BINDIR/lppasswd systemv/lppasswd
|
||||
f 0555 root sys $BINDIR/lpq berkeley/lpq
|
||||
f 0555 root sys $BINDIR/lpr berkeley/lpr
|
||||
f 0555 root sys $BINDIR/lprm berkeley/lprm
|
||||
f 0555 root sys $BINDIR/lpstat systemv/lpstat
|
||||
|
||||
%system irix
|
||||
l 0555 root sys /usr/bsd/lpq $BINDIR/lpq
|
||||
l 0555 root sys /usr/bsd/lpr $BINDIR/lpr
|
||||
l 0555 root sys /usr/bsd/lprm $BINDIR/lprm
|
||||
%system all
|
||||
f 0555 root sys /usr/bin/cancel systemv/cancel
|
||||
f 0555 root sys /usr/bin/lp systemv/lp
|
||||
f 0555 root sys /usr/bin/lpoptions systemv/lpoptions
|
||||
f 4555 root sys /usr/bin/lppasswd systemv/lppasswd
|
||||
f 0555 root sys /usr/bin/lpq berkeley/lpq
|
||||
f 0555 root sys /usr/bin/lpr berkeley/lpr
|
||||
f 0555 root sys /usr/bin/lprm berkeley/lprm
|
||||
f 0555 root sys /usr/bin/lpstat systemv/lpstat
|
||||
|
||||
# DSOs
|
||||
%system hpux
|
||||
f 0555 root sys $LIBDIR/libcups.sl.2 cups/libcups.sl.2
|
||||
l 0555 root sys $LIBDIR/libcups.sl libcups.sl.2
|
||||
f 0555 root sys $LIBDIR/libcupsimage.sl.2 filter/libcupsimage.sl.2
|
||||
l 0555 root sys $LIBDIR/libcupsimage.sl libcupsimage.sl.2
|
||||
%system !hpux
|
||||
f 0555 root sys $LIBDIR/libcups.so.2 cups/libcups.so.2
|
||||
l 0555 root sys $LIBDIR/libcups.so libcups.so.2
|
||||
f 0555 root sys $LIBDIR/libcupsimage.so.2 filter/libcupsimage.so.2
|
||||
l 0555 root sys $LIBDIR/libcupsimage.so libcupsimage.so.2
|
||||
f 0555 root sys /usr/lib/libcups.sl.2 cups/libcups.sl.2
|
||||
l 0555 root sys /usr/lib/libcups.sl libcups.sl.2
|
||||
f 0555 root sys /usr/lib/libcupsimage.sl.2 filter/libcupsimage.sl.2
|
||||
l 0555 root sys /usr/lib/libcupsimage.sl libcupsimage.sl.2
|
||||
%system irix-6.5
|
||||
f 0555 root sys /usr/lib32/libcups.so.2 cups/libcups.so.2
|
||||
l 0555 root sys /usr/lib32/libcups.so libcups.so.2
|
||||
f 0555 root sys /usr/lib32/libcupsimage.so.2 filter/libcupsimage.so.2
|
||||
l 0555 root sys /usr/lib32/libcupsimage.so libcupsimage.so.2
|
||||
%system !irix-6.5 !hpux
|
||||
f 0555 root sys /usr/lib/libcups.so.2 cups/libcups.so.2
|
||||
l 0555 root sys /usr/lib/libcups.so libcups.so.2
|
||||
f 0555 root sys /usr/lib/libcupsimage.so.2 filter/libcupsimage.so.2
|
||||
l 0555 root sys /usr/lib/libcupsimage.so libcupsimage.so.2
|
||||
%system all
|
||||
|
||||
# Directories
|
||||
d 0755 root sys $LOGDIR -
|
||||
d 0700 lp sys $REQUESTS -
|
||||
d 1700 lp sys $REQUESTS/tmp -
|
||||
d 0711 root sys /etc/cups/certs
|
||||
d 0755 root sys /etc/cups/interfaces
|
||||
d 0755 root sys /etc/cups/ppd
|
||||
d 0755 root sys /var/log/cups
|
||||
d 0755 root sys /var/spool/cups
|
||||
|
||||
# Data files
|
||||
f 0444 root sys $LOCALEDIR/C/cups_C locale/C/cups_C
|
||||
f 0444 root sys $LOCALEDIR/de/cups_de locale/de/cups_de
|
||||
f 0444 root sys $LOCALEDIR/en/cups_en locale/en/cups_en
|
||||
f 0444 root sys $LOCALEDIR/es/cups_es locale/es/cups_es
|
||||
f 0444 root sys $LOCALEDIR/fr/cups_fr locale/fr/cups_fr
|
||||
f 0444 root sys $LOCALEDIR/it/cups_it locale/it/cups_it
|
||||
%system linux
|
||||
f 0444 root sys /usr/share/locale/C/cups_C locale/C/cups_C
|
||||
f 0444 root sys /usr/share/locale/de/cups_de locale/de/cups_de
|
||||
f 0444 root sys /usr/share/locale/en/cups_en locale/en/cups_en
|
||||
f 0444 root sys /usr/share/locale/es/cups_es locale/es/cups_es
|
||||
f 0444 root sys /usr/share/locale/fr/cups_fr locale/fr/cups_fr
|
||||
f 0444 root sys /usr/share/locale/it/cups_it locale/it/cups_it
|
||||
|
||||
d 0555 root sys $DATADIR -
|
||||
%system dunix
|
||||
f 0444 root sys /usr/lib/nls/msg/C/cups_C locale/C/cups_C
|
||||
f 0444 root sys /usr/lib/nls/msg/de/cups_de locale/de/cups_de
|
||||
f 0444 root sys /usr/lib/nls/msg/en/cups_en locale/en/cups_en
|
||||
f 0444 root sys /usr/lib/nls/msg/es/cups_es locale/es/cups_es
|
||||
f 0444 root sys /usr/lib/nls/msg/fr/cups_fr locale/fr/cups_fr
|
||||
f 0444 root sys /usr/lib/nls/msg/it/cups_it locale/it/cups_it
|
||||
|
||||
d 0555 root sys $DATADIR/banners -
|
||||
f 0444 root sys $DATADIR/banners/classified data/classified
|
||||
f 0444 root sys $DATADIR/banners/confidential data/confidential
|
||||
f 0444 root sys $DATADIR/banners/secret data/secret
|
||||
f 0444 root sys $DATADIR/banners/standard data/standard
|
||||
f 0444 root sys $DATADIR/banners/topsecret data/topsecret
|
||||
f 0444 root sys $DATADIR/banners/unclassified data/unclassified
|
||||
%system !linux dunix
|
||||
f 0444 root sys /usr/lib/locale/C/cups_C locale/C/cups_C
|
||||
f 0444 root sys /usr/lib/locale/de/cups_de locale/de/cups_de
|
||||
f 0444 root sys /usr/lib/locale/en/cups_en locale/en/cups_en
|
||||
f 0444 root sys /usr/lib/locale/es/cups_es locale/es/cups_es
|
||||
f 0444 root sys /usr/lib/locale/fr/cups_fr locale/fr/cups_fr
|
||||
f 0444 root sys /usr/lib/locale/it/cups_it locale/it/cups_it
|
||||
|
||||
d 0555 root sys $DATADIR/charsets -
|
||||
f 0444 root sys $DATADIR/charsets/windows-874 data/windows-874
|
||||
f 0444 root sys $DATADIR/charsets/windows-1250 data/windows-1250
|
||||
f 0444 root sys $DATADIR/charsets/windows-1251 data/windows-1251
|
||||
f 0444 root sys $DATADIR/charsets/windows-1252 data/windows-1252
|
||||
f 0444 root sys $DATADIR/charsets/windows-1253 data/windows-1253
|
||||
f 0444 root sys $DATADIR/charsets/windows-1254 data/windows-1254
|
||||
f 0444 root sys $DATADIR/charsets/windows-1255 data/windows-1255
|
||||
f 0444 root sys $DATADIR/charsets/windows-1256 data/windows-1256
|
||||
f 0444 root sys $DATADIR/charsets/windows-1257 data/windows-1257
|
||||
f 0444 root sys $DATADIR/charsets/windows-1258 data/windows-1258
|
||||
f 0444 root sys $DATADIR/charsets/iso-8859-1 data/iso-8859-1
|
||||
f 0444 root sys $DATADIR/charsets/iso-8859-14 data/iso-8859-14
|
||||
f 0444 root sys $DATADIR/charsets/iso-8859-15 data/iso-8859-15
|
||||
f 0444 root sys $DATADIR/charsets/iso-8859-2 data/iso-8859-2
|
||||
f 0444 root sys $DATADIR/charsets/iso-8859-3 data/iso-8859-3
|
||||
f 0444 root sys $DATADIR/charsets/iso-8859-4 data/iso-8859-4
|
||||
f 0444 root sys $DATADIR/charsets/iso-8859-5 data/iso-8859-5
|
||||
f 0444 root sys $DATADIR/charsets/iso-8859-6 data/iso-8859-6
|
||||
f 0444 root sys $DATADIR/charsets/iso-8859-7 data/iso-8859-7
|
||||
f 0444 root sys $DATADIR/charsets/iso-8859-8 data/iso-8859-8
|
||||
f 0444 root sys $DATADIR/charsets/iso-8859-9 data/iso-8859-9
|
||||
f 0444 root sys $DATADIR/charsets/utf-8 data/utf-8
|
||||
%system all
|
||||
f 0444 root sys /usr/share/cups/banners/classified data/classified
|
||||
f 0444 root sys /usr/share/cups/banners/confidential data/confidential
|
||||
f 0444 root sys /usr/share/cups/banners/secret data/secret
|
||||
f 0444 root sys /usr/share/cups/banners/standard data/standard
|
||||
f 0444 root sys /usr/share/cups/banners/topsecret data/topsecret
|
||||
f 0444 root sys /usr/share/cups/banners/unclassified data/unclassified
|
||||
|
||||
d 0555 root sys $DATADIR/data -
|
||||
f 0444 root sys $DATADIR/data/HPGLprolog data/HPGLprolog
|
||||
f 0444 root sys $DATADIR/data/psglyphs data/psglyphs
|
||||
f 0444 root sys $DATADIR/data/testprint.ps data/testprint.ps
|
||||
f 0444 root sys /usr/share/cups/charsets/windows-874 data/windows-874
|
||||
f 0444 root sys /usr/share/cups/charsets/windows-1250 data/windows-1250
|
||||
f 0444 root sys /usr/share/cups/charsets/windows-1251 data/windows-1251
|
||||
f 0444 root sys /usr/share/cups/charsets/windows-1252 data/windows-1252
|
||||
f 0444 root sys /usr/share/cups/charsets/windows-1253 data/windows-1253
|
||||
f 0444 root sys /usr/share/cups/charsets/windows-1254 data/windows-1254
|
||||
f 0444 root sys /usr/share/cups/charsets/windows-1255 data/windows-1255
|
||||
f 0444 root sys /usr/share/cups/charsets/windows-1256 data/windows-1256
|
||||
f 0444 root sys /usr/share/cups/charsets/windows-1257 data/windows-1257
|
||||
f 0444 root sys /usr/share/cups/charsets/windows-1258 data/windows-1258
|
||||
f 0444 root sys /usr/share/cups/charsets/iso-8859-1 data/iso-8859-1
|
||||
f 0444 root sys /usr/share/cups/charsets/iso-8859-14 data/iso-8859-14
|
||||
f 0444 root sys /usr/share/cups/charsets/iso-8859-15 data/iso-8859-15
|
||||
f 0444 root sys /usr/share/cups/charsets/iso-8859-2 data/iso-8859-2
|
||||
f 0444 root sys /usr/share/cups/charsets/iso-8859-3 data/iso-8859-3
|
||||
f 0444 root sys /usr/share/cups/charsets/iso-8859-4 data/iso-8859-4
|
||||
f 0444 root sys /usr/share/cups/charsets/iso-8859-5 data/iso-8859-5
|
||||
f 0444 root sys /usr/share/cups/charsets/iso-8859-6 data/iso-8859-6
|
||||
f 0444 root sys /usr/share/cups/charsets/iso-8859-7 data/iso-8859-7
|
||||
f 0444 root sys /usr/share/cups/charsets/iso-8859-8 data/iso-8859-8
|
||||
f 0444 root sys /usr/share/cups/charsets/iso-8859-9 data/iso-8859-9
|
||||
f 0444 root sys /usr/share/cups/charsets/utf-8 data/utf-8
|
||||
|
||||
d 0555 root sys $DATADIR/fonts -
|
||||
f 0444 root sys $DATADIR/fonts/AvantGarde-Book fonts/AvantGarde-Book
|
||||
f 0444 root sys $DATADIR/fonts/AvantGarde-BookOblique fonts/AvantGarde-BookOblique
|
||||
f 0444 root sys $DATADIR/fonts/AvantGarde-Demi fonts/AvantGarde-Demi
|
||||
f 0444 root sys $DATADIR/fonts/AvantGarde-DemiOblique fonts/AvantGarde-DemiOblique
|
||||
f 0444 root sys $DATADIR/fonts/Bookman-Demi fonts/Bookman-Demi
|
||||
f 0444 root sys $DATADIR/fonts/Bookman-DemiItalic fonts/Bookman-DemiItalic
|
||||
f 0444 root sys $DATADIR/fonts/Bookman-Light fonts/Bookman-Light
|
||||
f 0444 root sys $DATADIR/fonts/Bookman-LightItalic fonts/Bookman-LightItalic
|
||||
f 0444 root sys $DATADIR/fonts/Charter-Bold fonts/Charter-Bold
|
||||
f 0444 root sys $DATADIR/fonts/Charter-BoldItalic fonts/Charter-BoldItalic
|
||||
f 0444 root sys $DATADIR/fonts/Charter-Italic fonts/Charter-Italic
|
||||
f 0444 root sys $DATADIR/fonts/Charter-Roman fonts/Charter-Roman
|
||||
f 0444 root sys $DATADIR/fonts/Courier fonts/Courier
|
||||
f 0444 root sys $DATADIR/fonts/Courier-Bold fonts/Courier-Bold
|
||||
f 0444 root sys $DATADIR/fonts/Courier-BoldOblique fonts/Courier-BoldOblique
|
||||
f 0444 root sys $DATADIR/fonts/Courier-Oblique fonts/Courier-Oblique
|
||||
f 0444 root sys $DATADIR/fonts/Helvetica fonts/Helvetica
|
||||
f 0444 root sys $DATADIR/fonts/Helvetica-Bold fonts/Helvetica-Bold
|
||||
f 0444 root sys $DATADIR/fonts/Helvetica-BoldOblique fonts/Helvetica-BoldOblique
|
||||
f 0444 root sys $DATADIR/fonts/Helvetica-Narrow fonts/Helvetica-Narrow
|
||||
f 0444 root sys $DATADIR/fonts/Helvetica-Narrow-Bold fonts/Helvetica-Narrow-Bold
|
||||
f 0444 root sys $DATADIR/fonts/Helvetica-Narrow-BoldOblique fonts/Helvetica-Narrow-BoldOblique
|
||||
f 0444 root sys $DATADIR/fonts/Helvetica-Narrow-Oblique fonts/Helvetica-Narrow-Oblique
|
||||
f 0444 root sys $DATADIR/fonts/Helvetica-Oblique fonts/Helvetica-Oblique
|
||||
f 0444 root sys $DATADIR/fonts/NewCenturySchlbk-Bold fonts/NewCenturySchlbk-Bold
|
||||
f 0444 root sys $DATADIR/fonts/NewCenturySchlbk-BoldItalic fonts/NewCenturySchlbk-BoldItalic
|
||||
f 0444 root sys $DATADIR/fonts/NewCenturySchlbk-Italic fonts/NewCenturySchlbk-Italic
|
||||
f 0444 root sys $DATADIR/fonts/NewCenturySchlbk-Roman fonts/NewCenturySchlbk-Roman
|
||||
f 0444 root sys $DATADIR/fonts/Palatino-Bold fonts/Palatino-Bold
|
||||
f 0444 root sys $DATADIR/fonts/Palatino-BoldItalic fonts/Palatino-BoldItalic
|
||||
f 0444 root sys $DATADIR/fonts/Palatino-Italic fonts/Palatino-Italic
|
||||
f 0444 root sys $DATADIR/fonts/Palatino-Roman fonts/Palatino-Roman
|
||||
f 0444 root sys $DATADIR/fonts/Symbol fonts/Symbol
|
||||
f 0444 root sys $DATADIR/fonts/Times-Bold fonts/Times-Bold
|
||||
f 0444 root sys $DATADIR/fonts/Times-BoldItalic fonts/Times-BoldItalic
|
||||
f 0444 root sys $DATADIR/fonts/Times-Italic fonts/Times-Italic
|
||||
f 0444 root sys $DATADIR/fonts/Times-Roman fonts/Times-Roman
|
||||
f 0444 root sys $DATADIR/fonts/Utopia-Bold fonts/Utopia-Bold
|
||||
f 0444 root sys $DATADIR/fonts/Utopia-BoldItalic fonts/Utopia-BoldItalic
|
||||
f 0444 root sys $DATADIR/fonts/Utopia-Italic fonts/Utopia-Italic
|
||||
f 0444 root sys $DATADIR/fonts/Utopia-Regular fonts/Utopia-Regular
|
||||
f 0444 root sys $DATADIR/fonts/ZapfChancery-MediumItalic fonts/ZapfChancery-MediumItalic
|
||||
f 0444 root sys $DATADIR/fonts/ZapfDingbats fonts/ZapfDingbats
|
||||
f 0444 root sys /usr/share/cups/data/HPGLprolog data/HPGLprolog
|
||||
f 0444 root sys /usr/share/cups/data/psglyphs data/psglyphs
|
||||
f 0444 root sys /usr/share/cups/data/testprint.ps data/testprint.ps
|
||||
|
||||
d 0555 root sys $DATADIR/pstoraster -
|
||||
f 0444 root sys $DATADIR/pstoraster/Fontmap pstoraster/Fontmap
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_btokn.ps pstoraster/gs_btokn.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_ccfnt.ps pstoraster/gs_ccfnt.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_cff.ps pstoraster/gs_cff.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_cidfn.ps pstoraster/gs_cidfn.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_cmap.ps pstoraster/gs_cmap.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_cmdl.ps pstoraster/gs_cmdl.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_dbt_e.ps pstoraster/gs_dbt_e.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_diskf.ps pstoraster/gs_diskf.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_dpnxt.ps pstoraster/gs_dpnxt.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_dps.ps pstoraster/gs_dps.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_dps1.ps pstoraster/gs_dps1.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_dps2.ps pstoraster/gs_dps2.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_epsf.ps pstoraster/gs_epsf.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_fform.ps pstoraster/gs_fform.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_fonts.ps pstoraster/gs_fonts.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_init.ps pstoraster/gs_init.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_iso_e.ps pstoraster/gs_iso_e.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_kanji.ps pstoraster/gs_kanji.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_ksb_e.ps pstoraster/gs_ksb_e.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_lev2.ps pstoraster/gs_lev2.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_ll3.ps pstoraster/gs_ll3.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_mex_e.ps pstoraster/gs_mex_e.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_mro_e.ps pstoraster/gs_mro_e.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_pfile.ps pstoraster/gs_pfile.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_res.ps pstoraster/gs_res.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_setpd.ps pstoraster/gs_setpd.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_statd.ps pstoraster/gs_statd.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_std_e.ps pstoraster/gs_std_e.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_sym_e.ps pstoraster/gs_sym_e.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_ttf.ps pstoraster/gs_ttf.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_typ32.ps pstoraster/gs_typ32.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_typ42.ps pstoraster/gs_typ42.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_type1.ps pstoraster/gs_type1.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_wan_e.ps pstoraster/gs_wan_e.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_wl1_e.ps pstoraster/gs_wl1_e.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_wl2_e.ps pstoraster/gs_wl2_e.ps
|
||||
f 0444 root sys $DATADIR/pstoraster/gs_wl5_e.ps pstoraster/gs_wl5_e.ps
|
||||
f 0444 root sys /usr/share/cups/fonts/AvantGarde-Book fonts/AvantGarde-Book
|
||||
f 0444 root sys /usr/share/cups/fonts/AvantGarde-BookOblique fonts/AvantGarde-BookOblique
|
||||
f 0444 root sys /usr/share/cups/fonts/AvantGarde-Demi fonts/AvantGarde-Demi
|
||||
f 0444 root sys /usr/share/cups/fonts/AvantGarde-DemiOblique fonts/AvantGarde-DemiOblique
|
||||
f 0444 root sys /usr/share/cups/fonts/Bookman-Demi fonts/Bookman-Demi
|
||||
f 0444 root sys /usr/share/cups/fonts/Bookman-DemiItalic fonts/Bookman-DemiItalic
|
||||
f 0444 root sys /usr/share/cups/fonts/Bookman-Light fonts/Bookman-Light
|
||||
f 0444 root sys /usr/share/cups/fonts/Bookman-LightItalic fonts/Bookman-LightItalic
|
||||
f 0444 root sys /usr/share/cups/fonts/Charter-Bold fonts/Charter-Bold
|
||||
f 0444 root sys /usr/share/cups/fonts/Charter-BoldItalic fonts/Charter-BoldItalic
|
||||
f 0444 root sys /usr/share/cups/fonts/Charter-Italic fonts/Charter-Italic
|
||||
f 0444 root sys /usr/share/cups/fonts/Charter-Roman fonts/Charter-Roman
|
||||
f 0444 root sys /usr/share/cups/fonts/Courier fonts/Courier
|
||||
f 0444 root sys /usr/share/cups/fonts/Courier-Bold fonts/Courier-Bold
|
||||
f 0444 root sys /usr/share/cups/fonts/Courier-BoldOblique fonts/Courier-BoldOblique
|
||||
f 0444 root sys /usr/share/cups/fonts/Courier-Oblique fonts/Courier-Oblique
|
||||
f 0444 root sys /usr/share/cups/fonts/Helvetica fonts/Helvetica
|
||||
f 0444 root sys /usr/share/cups/fonts/Helvetica-Bold fonts/Helvetica-Bold
|
||||
f 0444 root sys /usr/share/cups/fonts/Helvetica-BoldOblique fonts/Helvetica-BoldOblique
|
||||
f 0444 root sys /usr/share/cups/fonts/Helvetica-Narrow fonts/Helvetica-Narrow
|
||||
f 0444 root sys /usr/share/cups/fonts/Helvetica-Narrow-Bold fonts/Helvetica-Narrow-Bold
|
||||
f 0444 root sys /usr/share/cups/fonts/Helvetica-Narrow-BoldOblique fonts/Helvetica-Narrow-BoldOblique
|
||||
f 0444 root sys /usr/share/cups/fonts/Helvetica-Narrow-Oblique fonts/Helvetica-Narrow-Oblique
|
||||
f 0444 root sys /usr/share/cups/fonts/Helvetica-Oblique fonts/Helvetica-Oblique
|
||||
f 0444 root sys /usr/share/cups/fonts/NewCenturySchlbk-Bold fonts/NewCenturySchlbk-Bold
|
||||
f 0444 root sys /usr/share/cups/fonts/NewCenturySchlbk-BoldItalic fonts/NewCenturySchlbk-BoldItalic
|
||||
f 0444 root sys /usr/share/cups/fonts/NewCenturySchlbk-Italic fonts/NewCenturySchlbk-Italic
|
||||
f 0444 root sys /usr/share/cups/fonts/NewCenturySchlbk-Roman fonts/NewCenturySchlbk-Roman
|
||||
f 0444 root sys /usr/share/cups/fonts/Palatino-Bold fonts/Palatino-Bold
|
||||
f 0444 root sys /usr/share/cups/fonts/Palatino-BoldItalic fonts/Palatino-BoldItalic
|
||||
f 0444 root sys /usr/share/cups/fonts/Palatino-Italic fonts/Palatino-Italic
|
||||
f 0444 root sys /usr/share/cups/fonts/Palatino-Roman fonts/Palatino-Roman
|
||||
f 0444 root sys /usr/share/cups/fonts/Symbol fonts/Symbol
|
||||
f 0444 root sys /usr/share/cups/fonts/Times-Bold fonts/Times-Bold
|
||||
f 0444 root sys /usr/share/cups/fonts/Times-BoldItalic fonts/Times-BoldItalic
|
||||
f 0444 root sys /usr/share/cups/fonts/Times-Italic fonts/Times-Italic
|
||||
f 0444 root sys /usr/share/cups/fonts/Times-Roman fonts/Times-Roman
|
||||
f 0444 root sys /usr/share/cups/fonts/Utopia-Bold fonts/Utopia-Bold
|
||||
f 0444 root sys /usr/share/cups/fonts/Utopia-BoldItalic fonts/Utopia-BoldItalic
|
||||
f 0444 root sys /usr/share/cups/fonts/Utopia-Italic fonts/Utopia-Italic
|
||||
f 0444 root sys /usr/share/cups/fonts/Utopia-Regular fonts/Utopia-Regular
|
||||
f 0444 root sys /usr/share/cups/fonts/ZapfChancery-MediumItalic fonts/ZapfChancery-MediumItalic
|
||||
f 0444 root sys /usr/share/cups/fonts/ZapfDingbats fonts/ZapfDingbats
|
||||
|
||||
d 0555 root sys $DATADIR/model -
|
||||
f 0444 root sys $DATADIR/model/deskjet.ppd ppd/deskjet.ppd
|
||||
f 0444 root sys $DATADIR/model/laserjet.ppd ppd/laserjet.ppd
|
||||
f 0444 root sys $DATADIR/model/epson9.ppd ppd/epson9.ppd
|
||||
f 0444 root sys $DATADIR/model/epson24.ppd ppd/epson24.ppd
|
||||
f 0444 root sys $DATADIR/model/stcolor.ppd ppd/stcolor.ppd
|
||||
f 0444 root sys $DATADIR/model/stphoto.ppd ppd/stphoto.ppd
|
||||
f 0444 root sys /usr/share/cups/pstoraster/Fontmap pstoraster/Fontmap
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_btokn.ps pstoraster/gs_btokn.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_ccfnt.ps pstoraster/gs_ccfnt.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_cff.ps pstoraster/gs_cff.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_cidfn.ps pstoraster/gs_cidfn.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_cmap.ps pstoraster/gs_cmap.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_cmdl.ps pstoraster/gs_cmdl.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_dbt_e.ps pstoraster/gs_dbt_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_diskf.ps pstoraster/gs_diskf.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_dpnxt.ps pstoraster/gs_dpnxt.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_dps1.ps pstoraster/gs_dps1.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_dps2.ps pstoraster/gs_dps2.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_dps.ps pstoraster/gs_dps.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_epsf.ps pstoraster/gs_epsf.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_fform.ps pstoraster/gs_fform.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_fonts.ps pstoraster/gs_fonts.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_init.ps pstoraster/gs_init.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_iso_e.ps pstoraster/gs_iso_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_kanji.ps pstoraster/gs_kanji.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_ksb_e.ps pstoraster/gs_ksb_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_l2img.ps pstoraster/gs_l2img.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_lev2.ps pstoraster/gs_lev2.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_ll3.ps pstoraster/gs_ll3.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_mex_e.ps pstoraster/gs_mex_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_mro_e.ps pstoraster/gs_mro_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_pdfwr.ps pstoraster/gs_pdfwr.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_pdf_e.ps pstoraster/gs_pdf_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_pfile.ps pstoraster/gs_pfile.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_res.ps pstoraster/gs_res.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_setpd.ps pstoraster/gs_setpd.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_statd.ps pstoraster/gs_statd.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_std_e.ps pstoraster/gs_std_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_sym_e.ps pstoraster/gs_sym_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_ttf.ps pstoraster/gs_ttf.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_typ32.ps pstoraster/gs_typ32.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_typ42.ps pstoraster/gs_typ42.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_type1.ps pstoraster/gs_type1.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_wan_e.ps pstoraster/gs_wan_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_wl1_e.ps pstoraster/gs_wl1_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_wl2_e.ps pstoraster/gs_wl2_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/gs_wl5_e.ps pstoraster/gs_wl5_e.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/pdf2dsc.ps pstoraster/pdf2dsc.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/pdf_base.ps pstoraster/pdf_base.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/pdf_draw.ps pstoraster/pdf_draw.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/pdf_font.ps pstoraster/pdf_font.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/pdf_main.ps pstoraster/pdf_main.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/pdf_ops.ps pstoraster/pdf_ops.ps
|
||||
f 0444 root sys /usr/share/cups/pstoraster/pdf_sec.ps pstoraster/pdf_sec.ps
|
||||
|
||||
d 0555 root sys $DATADIR/templates -
|
||||
f 0444 root sys $DATADIR/templates/add-class.tmpl templates/add-class.tmpl
|
||||
f 0444 root sys $DATADIR/templates/add-printer.tmpl templates/add-printer.tmpl
|
||||
f 0444 root sys $DATADIR/templates/admin-op.tmpl templates/admin-op.tmpl
|
||||
f 0444 root sys $DATADIR/templates/admin.tmpl templates/admin.tmpl
|
||||
f 0444 root sys $DATADIR/templates/choose-device.tmpl templates/choose-device.tmpl
|
||||
f 0444 root sys $DATADIR/templates/choose-make.tmpl templates/choose-make.tmpl
|
||||
f 0444 root sys $DATADIR/templates/choose-members.tmpl templates/choose-members.tmpl
|
||||
f 0444 root sys $DATADIR/templates/choose-model.tmpl templates/choose-model.tmpl
|
||||
f 0444 root sys $DATADIR/templates/choose-serial.tmpl templates/choose-serial.tmpl
|
||||
f 0444 root sys $DATADIR/templates/choose-uri.tmpl templates/choose-uri.tmpl
|
||||
f 0444 root sys $DATADIR/templates/class-added.tmpl templates/class-added.tmpl
|
||||
f 0444 root sys $DATADIR/templates/class-confirm.tmpl templates/class-confirm.tmpl
|
||||
f 0444 root sys $DATADIR/templates/class-deleted.tmpl templates/class-deleted.tmpl
|
||||
f 0444 root sys $DATADIR/templates/class-modified.tmpl templates/class-modified.tmpl
|
||||
f 0444 root sys $DATADIR/templates/classes.tmpl templates/classes.tmpl
|
||||
f 0444 root sys $DATADIR/templates/config-printer.tmpl templates/config-printer.tmpl
|
||||
f 0444 root sys $DATADIR/templates/config-printer2.tmpl templates/config-printer2.tmpl
|
||||
f 0444 root sys $DATADIR/templates/error.tmpl templates/error.tmpl
|
||||
f 0444 root sys $DATADIR/templates/header.tmpl templates/header.tmpl
|
||||
f 0444 root sys $DATADIR/templates/job-cancel.tmpl templates/job-cancel.tmpl
|
||||
f 0444 root sys $DATADIR/templates/job-hold.tmpl templates/job-hold.tmpl
|
||||
f 0444 root sys $DATADIR/templates/job-release.tmpl templates/job-release.tmpl
|
||||
f 0444 root sys $DATADIR/templates/job-restart.tmpl templates/job-restart.tmpl
|
||||
f 0444 root sys $DATADIR/templates/jobs.tmpl templates/jobs.tmpl
|
||||
f 0444 root sys $DATADIR/templates/modify-class.tmpl templates/modify-class.tmpl
|
||||
f 0444 root sys $DATADIR/templates/modify-printer.tmpl templates/modify-printer.tmpl
|
||||
f 0444 root sys $DATADIR/templates/option-boolean.tmpl templates/option-boolean.tmpl
|
||||
f 0444 root sys $DATADIR/templates/option-header.tmpl templates/option-header.tmpl
|
||||
f 0444 root sys $DATADIR/templates/option-pickmany.tmpl templates/option-pickmany.tmpl
|
||||
f 0444 root sys $DATADIR/templates/option-pickone.tmpl templates/option-pickone.tmpl
|
||||
f 0444 root sys $DATADIR/templates/option-trailer.tmpl templates/option-trailer.tmpl
|
||||
f 0444 root sys $DATADIR/templates/printer-accept.tmpl templates/printer-accept.tmpl
|
||||
f 0444 root sys $DATADIR/templates/printer-added.tmpl templates/printer-added.tmpl
|
||||
f 0444 root sys $DATADIR/templates/printer-configured.tmpl templates/printer-configured.tmpl
|
||||
f 0444 root sys $DATADIR/templates/printer-confirm.tmpl templates/printer-confirm.tmpl
|
||||
f 0444 root sys $DATADIR/templates/printer-deleted.tmpl templates/printer-deleted.tmpl
|
||||
f 0444 root sys $DATADIR/templates/printer-modified.tmpl templates/printer-modified.tmpl
|
||||
f 0444 root sys $DATADIR/templates/printer-reject.tmpl templates/printer-reject.tmpl
|
||||
f 0444 root sys $DATADIR/templates/printer-start.tmpl templates/printer-start.tmpl
|
||||
f 0444 root sys $DATADIR/templates/printer-stop.tmpl templates/printer-stop.tmpl
|
||||
f 0444 root sys $DATADIR/templates/printers.tmpl templates/printers.tmpl
|
||||
f 0444 root sys $DATADIR/templates/test-page.tmpl templates/test-page.tmpl
|
||||
f 0444 root sys $DATADIR/templates/trailer.tmpl templates/trailer.tmpl
|
||||
f 0444 root sys /usr/share/cups/model/deskjet.ppd ppd/deskjet.ppd
|
||||
f 0444 root sys /usr/share/cups/model/laserjet.ppd ppd/laserjet.ppd
|
||||
#f 0444 root sys /usr/share/cups/model/epson9.ppd ppd/epson9.ppd
|
||||
#f 0444 root sys /usr/share/cups/model/epson24.ppd ppd/epson24.ppd
|
||||
f 0444 root sys /usr/share/cups/model/stcolor.ppd ppd/stcolor.ppd
|
||||
f 0444 root sys /usr/share/cups/model/stphoto.ppd ppd/stphoto.ppd
|
||||
|
||||
f 0444 root sys /usr/share/cups/templates/add-class.tmpl templates/add-class.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/add-printer.tmpl templates/add-printer.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/admin-op.tmpl templates/admin-op.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/admin.tmpl templates/admin.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/choose-device.tmpl templates/choose-device.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/choose-make.tmpl templates/choose-make.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/choose-members.tmpl templates/choose-members.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/choose-model.tmpl templates/choose-model.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/choose-serial.tmpl templates/choose-serial.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/choose-uri.tmpl templates/choose-uri.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/class-added.tmpl templates/class-added.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/class-confirm.tmpl templates/class-confirm.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/class-deleted.tmpl templates/class-deleted.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/class-modified.tmpl templates/class-modified.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/classes.tmpl templates/classes.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/config-printer.tmpl templates/config-printer.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/config-printer2.tmpl templates/config-printer2.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/error.tmpl templates/error.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/job-cancel.tmpl templates/job-cancel.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/job-hold.tmpl templates/job-hold.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/job-release.tmpl templates/job-release.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/jobs.tmpl templates/jobs.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/modify-class.tmpl templates/modify-class.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/modify-printer.tmpl templates/modify-printer.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/option-boolean.tmpl templates/option-boolean.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/option-header.tmpl templates/option-header.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/option-pickmany.tmpl templates/option-pickmany.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/option-pickone.tmpl templates/option-pickone.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/option-trailer.tmpl templates/option-trailer.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/printer-accept.tmpl templates/printer-accept.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/printer-added.tmpl templates/printer-added.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/printer-configured.tmpl templates/printer-configured.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/printer-confirm.tmpl templates/printer-confirm.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/printer-deleted.tmpl templates/printer-deleted.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/printer-modified.tmpl templates/printer-modified.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/printer-reject.tmpl templates/printer-reject.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/printer-start.tmpl templates/printer-start.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/printer-stop.tmpl templates/printer-stop.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/printers.tmpl templates/printers.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/test-page.tmpl templates/test-page.tmpl
|
||||
|
||||
f 0444 root sys /usr/share/cups/templates/header.tmpl templates/header.tmpl
|
||||
f 0444 root sys /usr/share/cups/templates/trailer.tmpl templates/trailer.tmpl
|
||||
|
||||
# Config files
|
||||
d 0555 root sys $SERVERROOT -
|
||||
d 0711 root sys $SERVERROOT/certs -
|
||||
d 0755 root sys $SERVERROOT/interfaces -
|
||||
d 0755 root sys $SERVERROOT/ppd -
|
||||
c 0644 root sys $SERVERROOT/classes.conf conf/classes.conf
|
||||
c 0644 root sys $SERVERROOT/cupsd.conf conf/cupsd.conf
|
||||
f 0644 root sys $SERVERROOT/mime.convs conf/mime.convs
|
||||
f 0644 root sys $SERVERROOT/mime.types conf/mime.types
|
||||
c 0644 root sys $SERVERROOT/printers.conf conf/printers.conf
|
||||
|
||||
%system linux
|
||||
# Linux version needs PAM...
|
||||
%requires /lib/libpam.so.0
|
||||
d 0555 root sys $PAMDIR -
|
||||
c 0644 root sys $PAMDIR/cups data/cups.pam
|
||||
%system all
|
||||
c 0644 root sys /etc/cups/classes.conf conf/classes.conf
|
||||
c 0644 root sys /etc/cups/cupsd.conf conf/cupsd.conf
|
||||
f 0644 root sys /etc/cups/mime.convs conf/mime.convs
|
||||
f 0644 root sys /etc/cups/mime.types conf/mime.types
|
||||
c 0644 root sys /etc/cups/printers.conf conf/printers.conf
|
||||
c 0644 root sys /etc/pam.d/cups data/cups.pam
|
||||
|
||||
# Developer files
|
||||
d 0555 root sys $INCLUDEDIR/cups -
|
||||
f 0444 root sys $INCLUDEDIR/cups/cups.h cups/cups.h
|
||||
f 0444 root sys $INCLUDEDIR/cups/http.h cups/http.h
|
||||
f 0444 root sys $INCLUDEDIR/cups/image.h filter/image.h
|
||||
f 0444 root sys $INCLUDEDIR/cups/ipp.h cups/ipp.h
|
||||
f 0444 root sys $INCLUDEDIR/cups/language.h cups/language.h
|
||||
f 0444 root sys $INCLUDEDIR/cups/md5.h cups/md5.h
|
||||
f 0444 root sys $INCLUDEDIR/cups/ppd.h cups/ppd.h
|
||||
f 0444 root sys $INCLUDEDIR/cups/raster.h filter/raster.h
|
||||
f 0444 root sys /usr/include/cups/cups.h cups/cups.h
|
||||
f 0444 root sys /usr/include/cups/http.h cups/http.h
|
||||
f 0444 root sys /usr/include/cups/image.h filter/image.h
|
||||
f 0444 root sys /usr/include/cups/ipp.h cups/ipp.h
|
||||
f 0444 root sys /usr/include/cups/language.h cups/language.h
|
||||
f 0444 root sys /usr/include/cups/md5.h cups/md5.h
|
||||
f 0444 root sys /usr/include/cups/ppd.h cups/ppd.h
|
||||
f 0444 root sys /usr/include/cups/raster.h filter/raster.h
|
||||
|
||||
f 0444 root sys $LIBDIR/libcups.a cups/libcups.a
|
||||
%system irix-6.5
|
||||
f 0444 root sys /usr/lib32/libcups.a cups/libcups.a
|
||||
%system !irix-6.5
|
||||
f 0444 root sys /usr/lib/libcups.a cups/libcups.a
|
||||
%system all
|
||||
|
||||
# Documentation files
|
||||
d 0555 root sys $DOCDIR -
|
||||
f 0444 root sys $DOCDIR/cups.css doc/cups.css
|
||||
f 0444 root sys $DOCDIR/documentation.html doc/documentation.html
|
||||
f 0444 root sys $DOCDIR/index.html doc/index.html
|
||||
f 0444 root sys /usr/share/doc/cups/cups.css doc/cups.css
|
||||
f 0444 root sys /usr/share/doc/cups/documentation.html doc/documentation.html
|
||||
f 0444 root sys /usr/share/doc/cups/index.html doc/index.html
|
||||
|
||||
d 0555 root sys $DOCDIR/images -
|
||||
|
||||
f 0444 root sys $DOCDIR/images/classes.gif doc/images/classes.gif
|
||||
f 0444 root sys $DOCDIR/images/printer-idle.gif doc/images/printer-idle.gif
|
||||
f 0444 root sys $DOCDIR/images/printer-processing.gif doc/images/printer-processing.gif
|
||||
f 0444 root sys $DOCDIR/images/printer-stopped.gif doc/images/printer-stopped.gif
|
||||
|
||||
f 0444 root sys $DOCDIR/images/accept-jobs.gif doc/images/accept-jobs.gif
|
||||
f 0444 root sys $DOCDIR/images/add-class.gif doc/images/add-class.gif
|
||||
f 0444 root sys $DOCDIR/images/add-printer.gif doc/images/add-printer.gif
|
||||
f 0444 root sys $DOCDIR/images/cancel-job.gif doc/images/cancel-job.gif
|
||||
f 0444 root sys $DOCDIR/images/cancel-jobs.gif doc/images/cancel-jobs.gif
|
||||
f 0444 root sys $DOCDIR/images/cancel.gif doc/images/cancel.gif
|
||||
f 0444 root sys $DOCDIR/images/continue.gif doc/images/continue.gif
|
||||
f 0444 root sys $DOCDIR/images/config-printer.gif doc/images/config-printer.gif
|
||||
f 0444 root sys $DOCDIR/images/cups-block-diagram.gif doc/images/cups-block-diagram.gif
|
||||
f 0444 root sys $DOCDIR/images/delete-class.gif doc/images/delete-class.gif
|
||||
f 0444 root sys $DOCDIR/images/delete-printer.gif doc/images/delete-printer.gif
|
||||
f 0444 root sys $DOCDIR/images/hold-job.gif doc/images/hold-job.gif
|
||||
f 0444 root sys $DOCDIR/images/left.gif doc/images/left.gif
|
||||
f 0444 root sys $DOCDIR/images/logo.gif doc/images/logo.gif
|
||||
f 0444 root sys $DOCDIR/images/manage-classes.gif doc/images/manage-classes.gif
|
||||
f 0444 root sys $DOCDIR/images/manage-jobs.gif doc/images/manage-jobs.gif
|
||||
f 0444 root sys $DOCDIR/images/manage-printers.gif doc/images/manage-printers.gif
|
||||
f 0444 root sys $DOCDIR/images/modify-class.gif doc/images/modify-class.gif
|
||||
f 0444 root sys $DOCDIR/images/modify-printer.gif doc/images/modify-printer.gif
|
||||
f 0444 root sys $DOCDIR/images/navbar.gif doc/images/navbar.gif
|
||||
f 0444 root sys $DOCDIR/images/print-test-page.gif doc/images/print-test-page.gif
|
||||
f 0444 root sys $DOCDIR/images/reject-jobs.gif doc/images/reject-jobs.gif
|
||||
f 0444 root sys $DOCDIR/images/release-job.gif doc/images/release-job.gif
|
||||
f 0444 root sys $DOCDIR/images/restart-job.gif doc/images/restart-job.gif
|
||||
f 0444 root sys $DOCDIR/images/right.gif doc/images/right.gif
|
||||
f 0444 root sys $DOCDIR/images/show-active.gif doc/images/show-active.gif
|
||||
f 0444 root sys $DOCDIR/images/show-completed.gif doc/images/show-completed.gif
|
||||
f 0444 root sys $DOCDIR/images/start-class.gif doc/images/start-class.gif
|
||||
f 0444 root sys $DOCDIR/images/start-printer.gif doc/images/start-printer.gif
|
||||
f 0444 root sys $DOCDIR/images/stop-class.gif doc/images/stop-class.gif
|
||||
f 0444 root sys $DOCDIR/images/stop-printer.gif doc/images/stop-printer.gif
|
||||
|
||||
f 0444 root sys $DOCDIR/cmp.html doc/cmp.html
|
||||
f 0444 root sys $DOCDIR/cmp.pdf doc/cmp.pdf
|
||||
f 0444 root sys $DOCDIR/cupsdoc.css doc/cupsdoc.css
|
||||
f 0444 root sys $DOCDIR/idd.html doc/idd.html
|
||||
f 0444 root sys $DOCDIR/idd.pdf doc/idd.pdf
|
||||
f 0444 root sys $DOCDIR/ipp.html doc/ipp.html
|
||||
f 0444 root sys $DOCDIR/ipp.pdf doc/ipp.pdf
|
||||
f 0444 root sys $DOCDIR/overview.html doc/overview.html
|
||||
f 0444 root sys $DOCDIR/overview.pdf doc/overview.pdf
|
||||
f 0444 root sys $DOCDIR/sam.html doc/sam.html
|
||||
f 0444 root sys $DOCDIR/sam.pdf doc/sam.pdf
|
||||
f 0444 root sys $DOCDIR/sdd.html doc/sdd.html
|
||||
f 0444 root sys $DOCDIR/sdd.pdf doc/sdd.pdf
|
||||
f 0444 root sys $DOCDIR/spm.html doc/spm.html
|
||||
f 0444 root sys $DOCDIR/spm.pdf doc/spm.pdf
|
||||
f 0444 root sys $DOCDIR/sps.html doc/sps.html
|
||||
f 0444 root sys $DOCDIR/sps.pdf doc/sps.pdf
|
||||
f 0444 root sys $DOCDIR/ssr.html doc/ssr.html
|
||||
f 0444 root sys $DOCDIR/ssr.pdf doc/ssr.pdf
|
||||
f 0444 root sys $DOCDIR/sum.html doc/sum.html
|
||||
f 0444 root sys $DOCDIR/sum.pdf doc/sum.pdf
|
||||
f 0444 root sys $DOCDIR/svd.html doc/svd.html
|
||||
f 0444 root sys $DOCDIR/svd.pdf doc/svd.pdf
|
||||
f 0444 root sys $DOCDIR/images/cups-bar.gif doc/images/cups-bar.gif
|
||||
f 0444 root sys $DOCDIR/images/cups-large.gif doc/images/cups-large.gif
|
||||
f 0444 root sys $DOCDIR/images/cups-medium.gif doc/images/cups-medium.gif
|
||||
f 0444 root sys $DOCDIR/images/cups-small.gif doc/images/cups-small.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/accept-jobs.gif doc/images/accept-jobs.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/add-class.gif doc/images/add-class.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/add-printer.gif doc/images/add-printer.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/cancel-job.gif doc/images/cancel-job.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/cancel-jobs.gif doc/images/cancel-jobs.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/cancel.gif doc/images/cancel.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/classes.gif doc/images/classes.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/continue.gif doc/images/continue.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/config-printer.gif doc/images/config-printer.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/cups-bar.gif doc/images/cups-bar.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/cups-block-diagram.gif doc/images/cups-block-diagram.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/cups-large.gif doc/images/cups-large.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/cups-medium.gif doc/images/cups-medium.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/cups-small.gif doc/images/cups-small.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/delete-class.gif doc/images/delete-class.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/delete-printer.gif doc/images/delete-printer.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/hold-job.gif doc/images/hold-job.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/left.gif doc/images/left.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/logo.gif doc/images/logo.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/manage-classes.gif doc/images/manage-classes.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/manage-jobs.gif doc/images/manage-jobs.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/manage-printers.gif doc/images/manage-printers.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/modify-class.gif doc/images/modify-class.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/modify-printer.gif doc/images/modify-printer.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/navbar.gif doc/images/navbar.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/print-test-page.gif doc/images/print-test-page.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/printer-idle.gif doc/images/printer-idle.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/printer-processing.gif doc/images/printer-processing.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/printer-stopped.gif doc/images/printer-stopped.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/reject-jobs.gif doc/images/reject-jobs.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/release-job.gif doc/images/release-job.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/restart-job.gif doc/images/restart-job.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/right.gif doc/images/right.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/show-active.gif doc/images/show-active.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/show-completed.gif doc/images/show-completed.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/start-class.gif doc/images/start-class.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/start-printer.gif doc/images/start-printer.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/stop-class.gif doc/images/stop-class.gif
|
||||
f 0444 root sys /usr/share/doc/cups/images/stop-printer.gif doc/images/stop-printer.gif
|
||||
|
||||
f 0444 root sys /usr/share/doc/cups/cmp.html doc/cmp.html
|
||||
f 0444 root sys /usr/share/doc/cups/cmp.pdf doc/cmp.pdf
|
||||
f 0444 root sys /usr/share/doc/cups/cupsdoc.css doc/cupsdoc.css
|
||||
f 0444 root sys /usr/share/doc/cups/idd.html doc/idd.html
|
||||
f 0444 root sys /usr/share/doc/cups/idd.pdf doc/idd.pdf
|
||||
f 0444 root sys /usr/share/doc/cups/overview.html doc/overview.html
|
||||
f 0444 root sys /usr/share/doc/cups/overview.pdf doc/overview.pdf
|
||||
f 0444 root sys /usr/share/doc/cups/sam.html doc/sam.html
|
||||
f 0444 root sys /usr/share/doc/cups/sam.pdf doc/sam.pdf
|
||||
f 0444 root sys /usr/share/doc/cups/sdd.html doc/sdd.html
|
||||
f 0444 root sys /usr/share/doc/cups/sdd.pdf doc/sdd.pdf
|
||||
f 0444 root sys /usr/share/doc/cups/spm.html doc/spm.html
|
||||
f 0444 root sys /usr/share/doc/cups/spm.pdf doc/spm.pdf
|
||||
f 0444 root sys /usr/share/doc/cups/ssr.html doc/ssr.html
|
||||
f 0444 root sys /usr/share/doc/cups/ssr.pdf doc/ssr.pdf
|
||||
f 0444 root sys /usr/share/doc/cups/sum.html doc/sum.html
|
||||
f 0444 root sys /usr/share/doc/cups/sum.pdf doc/sum.pdf
|
||||
f 0444 root sys /usr/share/doc/cups/svd.html doc/svd.html
|
||||
f 0444 root sys /usr/share/doc/cups/svd.pdf doc/svd.pdf
|
||||
|
||||
# Man pages
|
||||
%system irix
|
||||
d 0555 root sys $MANDIR/a_man -
|
||||
d 0555 root sys $MANDIR/a_man/cat1 -
|
||||
d 0555 root sys $MANDIR/u_man -
|
||||
d 0555 root sys $MANDIR/u_man/cat1 -
|
||||
d 0555 root sys $MANDIR/u_man/cat5 -
|
||||
|
||||
f 0444 root sys $MANDIR/a_man/cat1/accept.z man/accept.z
|
||||
l 0444 root sys $MANDIR/a_man/cat1/reject.z accept.z
|
||||
f 0444 root sys $MANDIR/u_man/cat1/backend.z man/backend.z
|
||||
f 0444 root sys $MANDIR/u_man/cat5/classes.conf.z man/classes.conf.z
|
||||
f 0444 root sys $MANDIR/a_man/cat1/cups-lpd.z man/cups-lpd.z
|
||||
f 0444 root sys $MANDIR/a_man/cat1/cups-polld.z man/cups-polld.z
|
||||
f 0444 root sys $MANDIR/u_man/cat5/cupsd.conf.z man/cupsd.conf.z
|
||||
f 0444 root sys $MANDIR/a_man/cat1/cupsd.z man/cupsd.z
|
||||
f 0444 root sys $MANDIR/a_man/cat1/enable.z man/enable.z
|
||||
l 0444 root sys $MANDIR/a_man/cat1/disable.z enable.z
|
||||
f 0444 root sys $MANDIR/u_man/cat1/filter.z man/filter.z
|
||||
f 0444 root sys $MANDIR/a_man/cat1/lpadmin.z man/lpadmin.z
|
||||
f 0444 root sys $MANDIR/a_man/cat1/lpc.z man/lpc.z
|
||||
f 0444 root sys $MANDIR/a_man/cat1/lpinfo.z man/lpinfo.z
|
||||
f 0444 root sys $MANDIR/a_man/cat1/lpmove.z man/lpmove.z
|
||||
f 0444 root sys $MANDIR/u_man/cat1/lpoptions.z man/lpoptions.z
|
||||
f 0444 root sys $MANDIR/u_man/cat1/lpq.z man/lpq.z
|
||||
f 0444 root sys $MANDIR/u_man/cat1/lprm.z man/lprm.z
|
||||
f 0444 root sys $MANDIR/u_man/cat1/lpr.z man/lpr.z
|
||||
f 0444 root sys $MANDIR/u_man/cat1/lpstat.z man/lpstat.z
|
||||
f 0444 root sys $MANDIR/u_man/cat1/lp.z man/lp.z
|
||||
l 0444 root sys $MANDIR/u_man/cat1/cancel.z lp.z
|
||||
f 0444 root sys $MANDIR/u_man/cat5/mime.convs.z man/mime.convs.z
|
||||
f 0444 root sys $MANDIR/u_man/cat5/mime.types.z man/mime.types.z
|
||||
f 0444 root sys $MANDIR/u_man/cat5/printers.conf.z man/printers.conf.z
|
||||
|
||||
%system solaris hpux
|
||||
d 0555 root sys $MANDIR/man1 -
|
||||
d 0555 root sys $MANDIR/man5 -
|
||||
d 0555 root sys $MANDIR/man1m -
|
||||
|
||||
f 0444 root sys $MANDIR/man1m/accept.1m man/accept.man
|
||||
l 0444 root sys $MANDIR/man1m/reject.1m accept.man
|
||||
f 0444 root sys $MANDIR/man1/backend.1 man/backend.man
|
||||
f 0444 root sys $MANDIR/man1/classes.conf.5 man/classes.conf.man
|
||||
f 0444 root sys $MANDIR/man1m/cups-lpd.1m man/cups-lpd.man
|
||||
f 0444 root sys $MANDIR/man1m/cups-polld.1m man/cups-polld.man
|
||||
f 0444 root sys $MANDIR/man1m/cupsd.1m man/cupsd.man
|
||||
f 0444 root sys $MANDIR/man5/cupsd.conf.5 man/cupsd.conf.man
|
||||
f 0444 root sys $MANDIR/man1m/enable.1m man/enable.man
|
||||
l 0444 root sys $MANDIR/man1m/disable.1m enable.man
|
||||
f 0444 root sys $MANDIR/man1/filter.1 man/filter.man
|
||||
f 0444 root sys $MANDIR/man1m/lpadmin.1m man/lpadmin.man
|
||||
f 0444 root sys $MANDIR/man1m/lpc.1m man/lpc.man
|
||||
f 0444 root sys $MANDIR/man1m/lpinfo.1m man/lpinfo.man
|
||||
f 0444 root sys $MANDIR/man1m/lpmove.1m man/lpmove.man
|
||||
f 0444 root sys $MANDIR/man1/lpoptions.1 man/lpoptions.man
|
||||
f 0444 root sys $MANDIR/man1/lpq.1 man/lpq.man
|
||||
f 0444 root sys $MANDIR/man1/lprm.1 man/lprm.man
|
||||
f 0444 root sys $MANDIR/man1/lpr.1 man/lpr.man
|
||||
f 0444 root sys $MANDIR/man1/lpstat.1 man/lpstat.man
|
||||
f 0444 root sys $MANDIR/man1/lp.1 man/lp.man
|
||||
l 0444 root sys $MANDIR/man1/cancel.1 lp.man
|
||||
f 0444 root sys $MANDIR/man5/mime.convs.5 man/mime.convs.man
|
||||
f 0444 root sys $MANDIR/man5/mime.types.5 man/mime.types.man
|
||||
f 0444 root sys $MANDIR/man5/printers.conf.5 man/printers.conf.man
|
||||
|
||||
%system !irix !solaris !hpux
|
||||
d 0555 root sys $MANDIR/man1 -
|
||||
d 0555 root sys $MANDIR/man5 -
|
||||
d 0555 root sys $MANDIR/man8 -
|
||||
|
||||
f 0444 root sys $MANDIR/man8/accept.8 man/accept.man
|
||||
l 0444 root sys $MANDIR/man8/reject.8 accept.man
|
||||
f 0444 root sys $MANDIR/man1/backend.1 man/backend.man
|
||||
f 0444 root sys $MANDIR/man1/classes.conf.5 man/classes.conf.man
|
||||
f 0444 root sys $MANDIR/man8/cups-lpd.8 man/cups-lpd.man
|
||||
f 0444 root sys $MANDIR/man8/cups-polld.8 man/cups-polld.man
|
||||
f 0444 root sys $MANDIR/man8/cupsd.8 man/cupsd.man
|
||||
f 0444 root sys $MANDIR/man5/cupsd.conf.5 man/cupsd.conf.man
|
||||
f 0444 root sys $MANDIR/man8/enable.8 man/enable.man
|
||||
l 0444 root sys $MANDIR/man8/disable.8 enable.man
|
||||
f 0444 root sys $MANDIR/man1/filter.1 man/filter.man
|
||||
f 0444 root sys $MANDIR/man8/lpadmin.8 man/lpadmin.man
|
||||
f 0444 root sys $MANDIR/man8/lpc.8 man/lpc.man
|
||||
f 0444 root sys $MANDIR/man8/lpinfo.8 man/lpinfo.man
|
||||
f 0444 root sys $MANDIR/man8/lpmove.8 man/lpmove.man
|
||||
f 0444 root sys $MANDIR/man1/lpoptions.1 man/lpoptions.man
|
||||
f 0444 root sys $MANDIR/man1/lpq.1 man/lpq.man
|
||||
f 0444 root sys $MANDIR/man1/lprm.1 man/lprm.man
|
||||
f 0444 root sys $MANDIR/man1/lpr.1 man/lpr.man
|
||||
f 0444 root sys $MANDIR/man1/lpstat.1 man/lpstat.man
|
||||
f 0444 root sys $MANDIR/man1/lp.1 man/lp.man
|
||||
l 0444 root sys $MANDIR/man1/cancel.1 lp.man
|
||||
f 0444 root sys $MANDIR/man5/mime.convs.5 man/mime.convs.man
|
||||
f 0444 root sys $MANDIR/man5/mime.types.5 man/mime.types.man
|
||||
f 0444 root sys $MANDIR/man5/printers.conf.5 man/printers.conf.man
|
||||
f 0444 root sys /usr/share/catman/a_man/cat1/accept.1 man/accept.8
|
||||
l 0444 root sys /usr/share/catman/a_man/cat1/reject.1 accept.1
|
||||
f 0444 root sys /usr/share/catman/u_man/cat1/backend.1 man/backend.1
|
||||
f 0444 root sys /usr/share/catman/u_man/cat5/classes.conf.5 man/classes.conf.5
|
||||
f 0444 root sys /usr/share/catman/a_man/cat1/cups-lpd.1 man/cups-lpd.8
|
||||
f 0444 root sys /usr/share/catman/a_man/cat1/cups-polld.1 man/cups-polld.8
|
||||
f 0444 root sys /usr/share/catman/u_man/cat5/cupsd.conf.5 man/cupsd.conf.5
|
||||
f 0444 root sys /usr/share/catman/a_man/cat1/cupsd.1 man/cupsd.8
|
||||
f 0444 root sys /usr/share/catman/a_man/cat1/enable.1 man/enable.8
|
||||
l 0444 root sys /usr/share/catman/a_man/cat1/disable.1 enable.1
|
||||
f 0444 root sys /usr/share/catman/u_man/cat1/filter.1 man/filter.1
|
||||
f 0444 root sys /usr/share/catman/a_man/cat1/lpadmin.1 man/lpadmin.8
|
||||
f 0444 root sys /usr/share/catman/a_man/cat1/lpc.1 man/lpc.8
|
||||
f 0444 root sys /usr/share/catman/a_man/cat1/lpinfo.1 man/lpinfo.8
|
||||
f 0444 root sys /usr/share/catman/a_man/cat1/lpmove.1 man/lpmove.8
|
||||
f 0444 root sys /usr/share/catman/u_man/cat1/lpoptions.1 man/lpoptions.1
|
||||
f 0444 root sys /usr/share/catman/u_man/cat1/lpq.1 man/lpq.1
|
||||
f 0444 root sys /usr/share/catman/u_man/cat1/lprm.1 man/lprm.1
|
||||
f 0444 root sys /usr/share/catman/u_man/cat1/lpr.1 man/lpr.1
|
||||
f 0444 root sys /usr/share/catman/u_man/cat1/lpstat.1 man/lpstat.1
|
||||
f 0444 root sys /usr/share/catman/u_man/cat1/lp.1 man/lp.1
|
||||
l 0444 root sys /usr/share/catman/u_man/cat1/cancel.1 lp.1
|
||||
f 0444 root sys /usr/share/catman/u_man/cat5/mime.convs.5 man/mime.convs.5
|
||||
f 0444 root sys /usr/share/catman/u_man/cat5/mime.types.5 man/mime.types.5
|
||||
f 0444 root sys /usr/share/catman/u_man/cat5/printers.conf.5 man/printers.conf.5
|
||||
%system !irix
|
||||
f 0444 root sys /usr/man/man8/accept.8 man/accept.man
|
||||
l 0444 root sys /usr/man/man8/reject.8 accept.man
|
||||
f 0444 root sys /usr/man/man1/backend.1 man/backend.man
|
||||
f 0444 root sys /usr/man/man1/classes.conf.5 man/classes.conf.man
|
||||
f 0444 root sys /usr/man/man8/cups-lpd.8 man/cups-lpd.man
|
||||
f 0444 root sys /usr/man/man8/cups-polld.8 man/cups-polld.man
|
||||
f 0444 root sys /usr/man/man8/cupsd.8 man/cupsd.man
|
||||
f 0444 root sys /usr/man/man5/cupsd.conf.5 man/cupsd.conf.man
|
||||
f 0444 root sys /usr/man/man8/enable.8 man/enable.man
|
||||
l 0444 root sys /usr/man/man8/disable.8 enable.man
|
||||
f 0444 root sys /usr/man/man1/filter.1 man/filter.man
|
||||
f 0444 root sys /usr/man/man8/lpadmin.8 man/lpadmin.man
|
||||
f 0444 root sys /usr/man/man8/lpc.8 man/lpc.man
|
||||
f 0444 root sys /usr/man/man8/lpinfo.8 man/lpinfo.man
|
||||
f 0444 root sys /usr/man/man8/lpmove.8 man/lpmove.man
|
||||
f 0444 root sys /usr/man/man1/lpoptions.1 man/lpoptions.man
|
||||
f 0444 root sys /usr/man/man1/lpq.1 man/lpq.man
|
||||
f 0444 root sys /usr/man/man1/lprm.1 man/lprm.man
|
||||
f 0444 root sys /usr/man/man1/lpr.1 man/lpr.man
|
||||
f 0444 root sys /usr/man/man1/lpstat.1 man/lpstat.man
|
||||
f 0444 root sys /usr/man/man1/lp.1 man/lp.man
|
||||
l 0444 root sys /usr/man/man1/cancel.1 lp.man
|
||||
f 0444 root sys /usr/man/man5/mime.convs.5 man/mime.convs.man
|
||||
f 0444 root sys /usr/man/man5/mime.types.5 man/mime.types.man
|
||||
f 0444 root sys /usr/man/man5/printers.conf.5 man/printers.conf.man
|
||||
|
||||
# Startup script
|
||||
%system all
|
||||
i 0555 root sys cups cups.sh
|
||||
|
||||
#
|
||||
# End of "$Id: cups.list 1277 2000-08-04 14:53:49Z mike $".
|
||||
# End of "$Id: cups.list 1084 2000-05-16 19:18:59Z mike $".
|
||||
#
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
# Linux chkconfig stuff:
|
||||
#
|
||||
# chkconfig: 02 99 00
|
||||
# chkconfig: 02345 99 00
|
||||
# description: Startup/shutdown script for the Common UNIX \
|
||||
# Printing System (CUPS).
|
||||
#
|
||||
@@ -77,9 +77,7 @@ case $1 in
|
||||
fi
|
||||
else
|
||||
if $IS_ON cups; then
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
@sbindir@/cupsd
|
||||
/usr/sbin/cupsd
|
||||
$ECHO "cups: scheduler started."
|
||||
fi
|
||||
fi
|
||||
+15
-62
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: cups.spec 1277 2000-08-04 14:53:49Z mike $"
|
||||
# "$Id: cups.spec 1052 2000-05-04 21:17:20Z mike $"
|
||||
#
|
||||
# RPM "spec" file for the Common UNIX Printing System (CUPS).
|
||||
#
|
||||
@@ -26,11 +26,11 @@
|
||||
|
||||
Summary: Common Unix Printing System
|
||||
Name: cups
|
||||
Version: 1.1.2
|
||||
Version: 1.1b4
|
||||
Release: 0
|
||||
Copyright: GPL
|
||||
Group: System Environment/Daemons
|
||||
Source: ftp://ftp.easysw.com/pub/cups/%version/cups-%version-source.tar.gz
|
||||
Source: ftp://ftp.easysw.com/pub/cups/beta/cups-1.1b4-source.tar.gz
|
||||
Url: http://www.cups.org
|
||||
Packager: Michael Sweet <mike@easysw.com>
|
||||
Vendor: Easy Software Products
|
||||
@@ -68,86 +68,39 @@ make
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
|
||||
|
||||
make prefix=$RPM_BUILD_ROOT \
|
||||
exec_prefix=$RPM_BUILD_ROOT/usr \
|
||||
BINDIR=$RPM_BUILD_ROOT/usr/bin \
|
||||
DATADIR=$RPM_BUILD_ROOT/usr/share/cups \
|
||||
DOCDIR=$RPM_BUILD_ROOT/usr/share/doc/cups \
|
||||
INCLUDEDIR=$RPM_BUILD_ROOT/usr/include \
|
||||
LIBDIR=$RPM_BUILD_ROOT/usr/lib \
|
||||
LOCALEDIR=$RPM_BUILD_ROOT/usr/share/locale \
|
||||
MANDIR=$RPM_BUILD_ROOT/usr/man \
|
||||
PAMDIR=$RPM_BUILD_ROOT/etc/pam.d \
|
||||
make prefix=$RPM_BUILD_ROOT/usr LOGDIR=$RPM_BUILD_ROOT/var/log/cups \
|
||||
REQUESTS=$RPM_BUILD_ROOT/var/spool/cups \
|
||||
SBINDIR=$RPM_BUILD_ROOT/usr/sbin \
|
||||
SERVERBIN=$RPM_BUILD_ROOT/usr/lib/cups \
|
||||
SERVERROOT=$RPM_BUILD_ROOT/etc/cups \
|
||||
install
|
||||
SERVERROOT=$RPM_BUILD_ROOT/etc/cups install
|
||||
|
||||
install -m 755 -o root -g root cups.sh $RPM_BUILD_ROOT/etc/rc.d/init.d/cups
|
||||
|
||||
%post
|
||||
if test -x /sbin/chkconfig; then
|
||||
/sbin/chkconfig --add cups
|
||||
/sbin/chkconfig cups on
|
||||
fi
|
||||
|
||||
if test -f /sbin/init.d/cups; then
|
||||
/sbin/init.d/cups start
|
||||
fi
|
||||
if test -f /etc/rc.d/init.d/cups; then
|
||||
/etc/rc.d/init.d/cups start
|
||||
fi
|
||||
if test -f /etc/init.d/cups; then
|
||||
/etc/init.d/cups start
|
||||
fi
|
||||
/sbin/chkconfig --add cups
|
||||
/sbin/chkconfig cups on
|
||||
/etc/rc.d/init.d/cups start
|
||||
|
||||
%preun
|
||||
if test -f /sbin/init.d/cups; then
|
||||
/sbin/init.d/cups stop
|
||||
fi
|
||||
if test -f /etc/rc.d/init.d/cups; then
|
||||
/etc/rc.d/init.d/cups stop
|
||||
fi
|
||||
if test -f /etc/init.d/cups; then
|
||||
/etc/init.d/cups stop
|
||||
fi
|
||||
|
||||
if test -x /sbin/chkconfig; then
|
||||
/sbin/chkconfig --del cups
|
||||
fi
|
||||
/etc/rc.d/init.d/cups stop
|
||||
/sbin/chkconfig --del cups
|
||||
|
||||
%clean
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
%files
|
||||
%defattr(-,root,root)
|
||||
/etc/cups/certs
|
||||
%config /etc/cups/classes.conf
|
||||
%config /etc/cups/client.conf
|
||||
%config /etc/cups/cupsd.conf
|
||||
/etc/cups/interfaces
|
||||
/etc/cups/mime.types
|
||||
/etc/cups/mime.convs
|
||||
/etc/cups/ppd
|
||||
%config /etc/cups/printers.conf
|
||||
/etc/pam.d/*
|
||||
/etc/init.d/*
|
||||
/etc/rc0.d/*
|
||||
/etc/rc2.d/*
|
||||
/etc/rc.d/*
|
||||
/etc/*
|
||||
/usr/bin/*
|
||||
/usr/lib/*.so*
|
||||
/usr/man/*
|
||||
/usr/sbin/*
|
||||
/usr/share/*
|
||||
/usr/lib/cups/*
|
||||
%attr(0700,lp,root) /var/spool/cups
|
||||
%attr(1700,lp,root) /var/spool/cups/tmp
|
||||
/sbin/init.d/*
|
||||
/var/*
|
||||
|
||||
%files devel
|
||||
/usr/include/cups/*
|
||||
/usr/lib/*.a
|
||||
|
||||
#
|
||||
# End of "$Id: cups.spec 1277 2000-08-04 14:53:49Z mike $".
|
||||
# End of "$Id: cups.spec 1052 2000-05-04 21:17:20Z mike $".
|
||||
#
|
||||
|
||||
@@ -68,11 +68,8 @@ clean:
|
||||
|
||||
install: all
|
||||
-$(MKDIR) $(INCLUDEDIR)/cups
|
||||
$(CHMOD) ugo+rx $(INCLUDEDIR)
|
||||
$(CHMOD) ugo+rx $(INCLUDEDIR)/cups
|
||||
$(INSTALL_DATA) $(HEADERS) $(INCLUDEDIR)/cups
|
||||
-$(MKDIR) $(LIBDIR)
|
||||
$(CHMOD) ugo+rx $(LIBDIR)
|
||||
$(INSTALL_LIB) $(LIBCUPS) $(LIBDIR)
|
||||
if test $(LIBCUPS) != "libcups.a" -a $(LIBCUPS) != "libcups.la"; then \
|
||||
$(INSTALL_LIB) libcups.a $(LIBDIR); \
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@ extern "C" {
|
||||
* Constants...
|
||||
*/
|
||||
|
||||
# define CUPS_VERSION 1.0100
|
||||
# define CUPS_VERSION 1.0
|
||||
# define CUPS_DATE_ANY -1
|
||||
|
||||
|
||||
|
||||
+5
-15
@@ -87,8 +87,9 @@ cupsAddDest(const char *name, /* I - Name of destination */
|
||||
for (i = num_dests; i > 0; i --, dest ++)
|
||||
if (strcasecmp(name, dest->name) < 0)
|
||||
break;
|
||||
else if (strcasecmp(name, dest->name) == 0 &&
|
||||
instance != NULL && dest->instance != NULL &&
|
||||
else if (instance == NULL && dest->instance != NULL)
|
||||
break;
|
||||
else if (instance != NULL && dest->instance != NULL &&
|
||||
strcasecmp(instance, dest->instance) < 0)
|
||||
break;
|
||||
|
||||
@@ -260,13 +261,7 @@ cupsGetDests(cups_dest_t **dests) /* O - Destinations */
|
||||
* Load the /etc/cups/lpoptions and ~/.lpoptions files...
|
||||
*/
|
||||
|
||||
if ((home = getenv("CUPS_SERVERROOT")) != NULL)
|
||||
{
|
||||
snprintf(filename, sizeof(filename), "%s/lpoptions", home);
|
||||
num_dests = cups_get_dests(filename, num_dests, dests);
|
||||
}
|
||||
else
|
||||
num_dests = cups_get_dests(CUPS_SERVERROOT "/lpoptions", num_dests, dests);
|
||||
num_dests = cups_get_dests(CUPS_SERVERROOT "/lpoptions", num_dests, dests);
|
||||
|
||||
if ((home = getenv("HOME")) != NULL)
|
||||
{
|
||||
@@ -303,12 +298,7 @@ cupsSetDests(int num_dests, /* I - Number of destinations */
|
||||
*/
|
||||
|
||||
if (getuid() == 0)
|
||||
{
|
||||
if ((home = getenv("CUPS_SERVERROOT")) != NULL)
|
||||
snprintf(filename, sizeof(filename), "%s/lpoptions", home);
|
||||
else
|
||||
strcpy(filename, CUPS_SERVERROOT "/lpoptions");
|
||||
}
|
||||
strcpy(filename, CUPS_SERVERROOT "/lpoptions");
|
||||
else if ((home = getenv("HOME")) != NULL)
|
||||
snprintf(filename, sizeof(filename), "%s/.lpoptions", home);
|
||||
else
|
||||
|
||||
+88
-88
@@ -25,10 +25,8 @@
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* ppdCollect() - Collect all marked options that reside in the specified
|
||||
* ppdEmit() - Emit code for marked options to a file.
|
||||
* ppdEmitFd() - Emit code for marked options to a file.
|
||||
* ppd_sort() - Sort options by ordering numbers...
|
||||
* ppdEmit() - Emit code for marked options to a file.
|
||||
* ppdEmitFd() - Emit code for marked options to a file.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -51,88 +49,8 @@
|
||||
*/
|
||||
|
||||
static int ppd_sort(ppd_choice_t **c1, ppd_choice_t **c2);
|
||||
|
||||
|
||||
/*
|
||||
* 'ppdCollect()' - Collect all marked options that reside in the specified
|
||||
* section.
|
||||
*/
|
||||
|
||||
int /* O - Number of options marked */
|
||||
ppdCollect(ppd_file_t *ppd, /* I - PPD file data */
|
||||
ppd_section_t section, /* I - Section to collect */
|
||||
ppd_choice_t ***choices) /* O - Pointers to choices */
|
||||
{
|
||||
int i, j, k, m; /* Looping vars */
|
||||
ppd_group_t *g, /* Current group */
|
||||
*sg; /* Current sub-group */
|
||||
ppd_option_t *o; /* Current option */
|
||||
ppd_choice_t *c; /* Current choice */
|
||||
int count; /* Number of choices collected */
|
||||
ppd_choice_t **collect; /* Collected choices */
|
||||
|
||||
|
||||
if (ppd == NULL)
|
||||
return (0);
|
||||
|
||||
/*
|
||||
* Allocate memory for up to 1000 selected choices...
|
||||
*/
|
||||
|
||||
count = 0;
|
||||
collect = calloc(sizeof(ppd_choice_t *), 1000);
|
||||
|
||||
/*
|
||||
* Loop through all options and add choices as needed...
|
||||
*/
|
||||
|
||||
for (i = ppd->num_groups, g = ppd->groups; i > 0; i --, g ++)
|
||||
{
|
||||
for (j = g->num_options, o = g->options; j > 0; j --, o ++)
|
||||
if (o->section == section)
|
||||
for (k = o->num_choices, c = o->choices; k > 0; k --, c ++)
|
||||
if (c->marked && count < 1000)
|
||||
{
|
||||
collect[count] = c;
|
||||
count ++;
|
||||
}
|
||||
|
||||
for (j = g->num_subgroups, sg = g->subgroups; j > 0; j --, sg ++)
|
||||
for (k = sg->num_options, o = sg->options; k > 0; k --, o ++)
|
||||
if (o->section == section)
|
||||
for (m = o->num_choices, c = o->choices; m > 0; m --, c ++)
|
||||
if (c->marked && count < 1000)
|
||||
{
|
||||
collect[count] = c;
|
||||
count ++;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If we have more than 1 marked choice, sort them...
|
||||
*/
|
||||
|
||||
if (count > 1)
|
||||
qsort(collect, count, sizeof(ppd_choice_t *),
|
||||
(int (*)(const void *, const void *))ppd_sort);
|
||||
|
||||
/*
|
||||
* Return the array and number of choices; if 0, free the array since
|
||||
* it isn't needed.
|
||||
*/
|
||||
|
||||
if (count > 0)
|
||||
{
|
||||
*choices = collect;
|
||||
return (count);
|
||||
}
|
||||
else
|
||||
{
|
||||
*choices = NULL;
|
||||
free(collect);
|
||||
return (0);
|
||||
}
|
||||
}
|
||||
static int ppd_collect(ppd_file_t *ppd, ppd_section_t section,
|
||||
ppd_choice_t ***choices);
|
||||
|
||||
|
||||
/*
|
||||
@@ -150,7 +68,7 @@ ppdEmit(ppd_file_t *ppd, /* I - PPD file record */
|
||||
ppd_size_t *size; /* Custom page size */
|
||||
|
||||
|
||||
if ((count = ppdCollect(ppd, section, &choices)) == 0)
|
||||
if ((count = ppd_collect(ppd, section, &choices)) == 0)
|
||||
return (0);
|
||||
|
||||
for (i = 0; i < count; i ++)
|
||||
@@ -237,7 +155,7 @@ ppdEmitFd(ppd_file_t *ppd, /* I - PPD file record */
|
||||
char buf[1024]; /* Output buffer for feature */
|
||||
|
||||
|
||||
if ((count = ppdCollect(ppd, section, &choices)) == 0)
|
||||
if ((count = ppd_collect(ppd, section, &choices)) == 0)
|
||||
return (0);
|
||||
|
||||
for (i = 0; i < count; i ++)
|
||||
@@ -296,6 +214,88 @@ ppd_sort(ppd_choice_t **c1, /* I - First choice */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'ppd_collect()' - Collect all marked options that reside in the specified
|
||||
* section.
|
||||
*/
|
||||
|
||||
static int /* O - Number of options marked */
|
||||
ppd_collect(ppd_file_t *ppd, /* I - PPD file data */
|
||||
ppd_section_t section, /* I - Section to collect */
|
||||
ppd_choice_t ***choices) /* O - Pointers to choices */
|
||||
{
|
||||
int i, j, k, m; /* Looping vars */
|
||||
ppd_group_t *g, /* Current group */
|
||||
*sg; /* Current sub-group */
|
||||
ppd_option_t *o; /* Current option */
|
||||
ppd_choice_t *c; /* Current choice */
|
||||
int count; /* Number of choices collected */
|
||||
ppd_choice_t **collect; /* Collected choices */
|
||||
|
||||
|
||||
if (ppd == NULL)
|
||||
return (0);
|
||||
|
||||
/*
|
||||
* Allocate memory for up to 1000 selected choices...
|
||||
*/
|
||||
|
||||
count = 0;
|
||||
collect = calloc(sizeof(ppd_choice_t *), 1000);
|
||||
|
||||
/*
|
||||
* Loop through all options and add choices as needed...
|
||||
*/
|
||||
|
||||
for (i = ppd->num_groups, g = ppd->groups; i > 0; i --, g ++)
|
||||
{
|
||||
for (j = g->num_options, o = g->options; j > 0; j --, o ++)
|
||||
if (o->section == section)
|
||||
for (k = o->num_choices, c = o->choices; k > 0; k --, c ++)
|
||||
if (c->marked && count < 1000)
|
||||
{
|
||||
collect[count] = c;
|
||||
count ++;
|
||||
}
|
||||
|
||||
for (j = g->num_subgroups, sg = g->subgroups; j > 0; j --, sg ++)
|
||||
for (k = sg->num_options, o = sg->options; k > 0; k --, o ++)
|
||||
if (o->section == section)
|
||||
for (m = o->num_choices, c = o->choices; m > 0; m --, c ++)
|
||||
if (c->marked && count < 1000)
|
||||
{
|
||||
collect[count] = c;
|
||||
count ++;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If we have more than 1 marked choice, sort them...
|
||||
*/
|
||||
|
||||
if (count > 1)
|
||||
qsort(collect, count, sizeof(ppd_choice_t *),
|
||||
(int (*)(const void *, const void *))ppd_sort);
|
||||
|
||||
/*
|
||||
* Return the array and number of choices; if 0, free the array since
|
||||
* it isn't needed.
|
||||
*/
|
||||
|
||||
if (count > 0)
|
||||
{
|
||||
*choices = collect;
|
||||
return (count);
|
||||
}
|
||||
else
|
||||
{
|
||||
*choices = NULL;
|
||||
free(collect);
|
||||
return (0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
+1
-2
@@ -47,7 +47,7 @@
|
||||
# include <netinet/tcp.h>
|
||||
# endif /* WIN32 || __EMX__ */
|
||||
|
||||
# include <cups/md5.h>
|
||||
# include "md5.h"
|
||||
|
||||
|
||||
/*
|
||||
@@ -260,7 +260,6 @@ typedef struct
|
||||
char nonce[HTTP_MAX_VALUE];
|
||||
/* Nonce value */
|
||||
int nonce_count; /* Nonce count */
|
||||
void *tls; /* TLS state information */
|
||||
} http_t;
|
||||
|
||||
|
||||
|
||||
@@ -41,7 +41,6 @@
|
||||
* ippErrorString() - Return a textual message for the given error message.
|
||||
* ippFindAttribute() - Find a named attribute in a request...
|
||||
* ippLength() - Compute the length of an IPP request.
|
||||
* ippNew() - Allocate a new IPP request.
|
||||
* ippPort() - Return the default IPP port number.
|
||||
* ippRead() - Read data for an IPP request.
|
||||
* ippTimeToDate() - Convert from UNIX time to RFC 1903 format.
|
||||
@@ -62,7 +61,6 @@
|
||||
|
||||
#include "ipp.h"
|
||||
#include "debug.h"
|
||||
#include <ctype.h>
|
||||
|
||||
|
||||
/*
|
||||
@@ -262,22 +260,6 @@ ippAddString(ipp_t *ipp, /* I - IPP request */
|
||||
attr->values[0].string.charset = charset ? strdup(charset) : NULL;
|
||||
attr->values[0].string.text = strdup(value);
|
||||
|
||||
if (type == IPP_TAG_LANGUAGE || type == IPP_TAG_CHARSET)
|
||||
{
|
||||
/*
|
||||
* Convert to lowercase and change _ to - as needed...
|
||||
*/
|
||||
|
||||
char *p;
|
||||
|
||||
|
||||
for (p = attr->values[0].string.text; *p; p ++)
|
||||
if (*p == '_')
|
||||
*p = '-';
|
||||
else
|
||||
*p = tolower(*p);
|
||||
}
|
||||
|
||||
return (attr);
|
||||
}
|
||||
|
||||
|
||||
+9
-1
@@ -109,6 +109,14 @@ typedef enum /**** Resolution units... ****/
|
||||
IPP_RES_PER_CM
|
||||
} ipp_res_t;
|
||||
|
||||
typedef enum /**** Multiple Document Handling ****/
|
||||
{
|
||||
IPP_DOC_SINGLE,
|
||||
IPP_DOC_UNCOLLATED,
|
||||
IPP_DOC_COLLATED,
|
||||
IPP_DOC_SEPARATE
|
||||
} ipp_doc_t;
|
||||
|
||||
typedef enum /**** Finishings... ****/
|
||||
{
|
||||
IPP_FINISH_NONE = 3,
|
||||
@@ -216,7 +224,7 @@ typedef enum /**** IPP status codes... ****/
|
||||
IPP_ATTRIBUTES,
|
||||
IPP_URI_SCHEME,
|
||||
IPP_CHARSET,
|
||||
IPP_CONFLICT,
|
||||
IPP_CONFLICT,\
|
||||
IPP_COMPRESSION_NOT_SUPPORTED,
|
||||
IPP_COMPRESSION_ERROR,
|
||||
IPP_DOCUMENT_FORMAT_ERROR,
|
||||
|
||||
+4
-4
@@ -23,10 +23,10 @@
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* httpMD5() - Compute the MD5 sum of the username:group:password.
|
||||
* httpMD5Nonce() - Combine the MD5 sum of the username, group, and password
|
||||
* with the server-supplied nonce value.
|
||||
* httpMD5String() - Convert an MD5 sum to a character string.
|
||||
* httpMD5() - Compute the MD5 sum of the username:group:password.
|
||||
* 'httpMD5Nonce()' - Combine the MD5 sum of the username, group, and password
|
||||
* with the server-supplied nonce value.
|
||||
* 'httpMD5String()' - Convert an MD5 sum to a character string.
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
+2
-67
@@ -633,27 +633,6 @@ ppdOpen(FILE *fp) /* I - File to read from */
|
||||
}
|
||||
else if (strcmp(keyword, "Throughput") == 0)
|
||||
ppd->throughput = atoi(string);
|
||||
else if (strcmp(keyword, "Font") == 0)
|
||||
{
|
||||
/*
|
||||
* Add this font to the list of available fonts...
|
||||
*/
|
||||
|
||||
if (ppd->num_fonts == 0)
|
||||
ppd->fonts = (char **)malloc(sizeof(char *));
|
||||
else
|
||||
ppd->fonts = (char **)realloc(ppd->fonts,
|
||||
sizeof(char *) * (ppd->num_fonts + 1));
|
||||
|
||||
if (ppd->fonts == NULL)
|
||||
{
|
||||
ppdClose(ppd);
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
ppd->fonts[ppd->num_fonts] = strdup(name);
|
||||
ppd->num_fonts ++;
|
||||
}
|
||||
else if (strcmp(keyword, "VariablePaperSize") == 0 &&
|
||||
strcmp(string, "True") == 0 &&
|
||||
!ppd->variable_sizes)
|
||||
@@ -1573,7 +1552,7 @@ ppd_read(FILE *fp, /* I - File to read from */
|
||||
*textptr, /* Text pointer */
|
||||
*strptr, /* Pointer into string */
|
||||
*lineptr, /* Current position in line buffer */
|
||||
line[65536]; /* Line buffer (64k) */
|
||||
line[262144]; /* Line buffer (256k) */
|
||||
|
||||
|
||||
/*
|
||||
@@ -1588,8 +1567,6 @@ ppd_read(FILE *fp, /* I - File to read from */
|
||||
* Now loop until we have a valid line...
|
||||
*/
|
||||
|
||||
*string = NULL;
|
||||
|
||||
do
|
||||
{
|
||||
/*
|
||||
@@ -1623,12 +1600,10 @@ ppd_read(FILE *fp, /* I - File to read from */
|
||||
ungetc(ch, fp);
|
||||
}
|
||||
|
||||
ch = '\n';
|
||||
*lineptr++ = '\n';
|
||||
|
||||
if (!endquote) /* Continue for multi-line text */
|
||||
break;
|
||||
|
||||
*lineptr++ = '\n';
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1643,46 +1618,6 @@ ppd_read(FILE *fp, /* I - File to read from */
|
||||
}
|
||||
}
|
||||
|
||||
if (endquote)
|
||||
{
|
||||
/*
|
||||
* Didn't finish this quoted string...
|
||||
*/
|
||||
|
||||
while ((ch = getc(fp)) != EOF)
|
||||
if (ch == '\"')
|
||||
break;
|
||||
}
|
||||
|
||||
if (ch != '\n')
|
||||
{
|
||||
/*
|
||||
* Didn't finish this line...
|
||||
*/
|
||||
|
||||
while ((ch = getc(fp)) != EOF)
|
||||
if (ch == '\r' || ch == '\n')
|
||||
{
|
||||
/*
|
||||
* Line feed or carriage return...
|
||||
*/
|
||||
|
||||
if (ch == '\r')
|
||||
{
|
||||
/*
|
||||
* Check for a trailing line feed...
|
||||
*/
|
||||
|
||||
if ((ch = getc(fp)) == EOF)
|
||||
break;
|
||||
if (ch != 0x0a)
|
||||
ungetc(ch, fp);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (lineptr > line && lineptr[-1] == '\n')
|
||||
lineptr --;
|
||||
|
||||
|
||||
@@ -207,8 +207,6 @@ typedef struct /**** Files ****/
|
||||
*/
|
||||
|
||||
extern void ppdClose(ppd_file_t *ppd);
|
||||
extern int ppdCollect(ppd_file_t *ppd, ppd_section_t section,
|
||||
ppd_choice_t ***choices);
|
||||
extern int ppdConflicts(ppd_file_t *ppd);
|
||||
extern int ppdEmit(ppd_file_t *ppd, FILE *fp,
|
||||
ppd_section_t section);
|
||||
|
||||
@@ -171,10 +171,6 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
}
|
||||
}
|
||||
|
||||
printf(" num_fonts = %d\n", ppd->num_fonts);
|
||||
for (j = 0; j < ppd->num_fonts; j ++)
|
||||
printf(" fonts[%d] = %s\n", j, ppd->fonts[j]);
|
||||
|
||||
ppdClose(ppd);
|
||||
}
|
||||
|
||||
|
||||
+1
-9
@@ -149,15 +149,7 @@ cupsServer(void)
|
||||
fp = NULL;
|
||||
|
||||
if (fp == NULL)
|
||||
{
|
||||
if ((home = getenv("CUPS_SERVERROOT")) != NULL)
|
||||
{
|
||||
snprintf(line, sizeof(line), "%s/client.conf", home);
|
||||
fp = fopen(line, "r");
|
||||
}
|
||||
else
|
||||
fp = fopen(CUPS_SERVERROOT "/client.conf", "r");
|
||||
}
|
||||
fp = fopen(CUPS_SERVERROOT "/client.conf", "r");
|
||||
|
||||
if (fp == NULL)
|
||||
return ("localhost");
|
||||
|
||||
+27
-177
@@ -29,10 +29,8 @@
|
||||
* cupsGetDefault() - Get the default printer or class.
|
||||
* cupsGetPPD() - Get the PPD file for a printer.
|
||||
* cupsGetPrinters() - Get a list of printers.
|
||||
* cupsLastError() - Return the last IPP error that occurred.
|
||||
* cupsPrintFile() - Print a file to a printer or class.
|
||||
* cupsPrintFiles() - Print one or more files to a printer or class.
|
||||
* cupsTempFile() - Generate a temporary filename.
|
||||
* cups_connect() - Connect to the specified host...
|
||||
* cups_local_auth() - Get the local authorization certificate if
|
||||
* available/applicable...
|
||||
@@ -50,7 +48,6 @@
|
||||
#include <stdlib.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
#if defined(WIN32) || defined(__EMX__)
|
||||
# include <io.h>
|
||||
@@ -179,15 +176,6 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
|
||||
encode[255]; /* Encoded username:password */
|
||||
|
||||
|
||||
if (http == NULL || request == NULL || resource == NULL)
|
||||
{
|
||||
if (request != NULL)
|
||||
ippDelete(request);
|
||||
|
||||
last_error = IPP_INTERNAL_ERROR;
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
DEBUG_printf(("cupsDoFileRequest(%08x, %08s, \'%s\', \'%s\')\n",
|
||||
http, request, resource, filename ? filename : "(null)"));
|
||||
|
||||
@@ -444,12 +432,6 @@ cupsGetClasses(char ***classes) /* O - Classes */
|
||||
char **temp; /* Temporary pointer */
|
||||
|
||||
|
||||
if (classes == NULL)
|
||||
{
|
||||
last_error = IPP_INTERNAL_ERROR;
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Try to connect to the server...
|
||||
*/
|
||||
@@ -567,12 +549,7 @@ cupsGetDefault(void)
|
||||
* Next check to see if we have a client.conf file...
|
||||
*/
|
||||
|
||||
if ((var = getenv("CUPS_SERVERROOT")) != NULL)
|
||||
snprintf(line, sizeof(line), "%s/client.conf", var);
|
||||
else
|
||||
strcpy(line, CUPS_SERVERROOT "/client.conf");
|
||||
|
||||
if ((fp = fopen(line, "r")) != NULL)
|
||||
if ((fp = fopen(CUPS_SERVERROOT "/client.conf", "r")) != NULL)
|
||||
{
|
||||
/*
|
||||
* Read the client.conf file and look for a DefaultPrinter line...
|
||||
@@ -668,19 +645,13 @@ cupsGetDefault(void)
|
||||
const char * /* O - Filename for PPD file */
|
||||
cupsGetPPD(const char *name) /* I - Printer name */
|
||||
{
|
||||
ipp_t *request, /* IPP request */
|
||||
*response; /* IPP response */
|
||||
ipp_attribute_t *attr; /* Current attribute */
|
||||
cups_lang_t *language; /* Local language */
|
||||
FILE *fp; /* PPD file */
|
||||
int bytes; /* Number of bytes read */
|
||||
char buffer[8192]; /* Buffer for file */
|
||||
char printer[HTTP_MAX_URI], /* Printer name */
|
||||
method[HTTP_MAX_URI], /* Method/scheme name */
|
||||
username[HTTP_MAX_URI], /* Username:password */
|
||||
hostname[HTTP_MAX_URI], /* Hostname */
|
||||
resource[HTTP_MAX_URI]; /* Resource name */
|
||||
int port; /* Port number */
|
||||
char *tempdir; /* Temporary file directory */
|
||||
const char *password; /* Password string */
|
||||
char realm[HTTP_MAX_VALUE], /* realm="xyz" string */
|
||||
nonce[HTTP_MAX_VALUE], /* nonce="xyz" string */
|
||||
@@ -690,12 +661,6 @@ cupsGetPPD(const char *name) /* I - Printer name */
|
||||
static char filename[HTTP_MAX_URI]; /* Local filename */
|
||||
|
||||
|
||||
if (name == NULL)
|
||||
{
|
||||
last_error = IPP_INTERNAL_ERROR;
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* See if we can connect to the server...
|
||||
*/
|
||||
@@ -706,89 +671,20 @@ cupsGetPPD(const char *name) /* I - Printer name */
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
if (strchr(name, '@') == NULL)
|
||||
{
|
||||
/*
|
||||
* Build an IPP_GET_PRINTER_ATTRIBUTES request, which requires the following
|
||||
* attributes:
|
||||
*
|
||||
* attributes-charset
|
||||
* attributes-natural-language
|
||||
* printer-uri
|
||||
*/
|
||||
|
||||
request = ippNew();
|
||||
|
||||
request->request.op.operation_id = IPP_GET_PRINTER_ATTRIBUTES;
|
||||
request->request.op.request_id = 1;
|
||||
|
||||
language = cupsLangDefault();
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
|
||||
"attributes-charset", NULL, cupsLangEncoding(language));
|
||||
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
|
||||
"attributes-natural-language", NULL, language->language);
|
||||
|
||||
snprintf(buffer, sizeof(buffer), "ipp://localhost/printers/%s", name);
|
||||
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
|
||||
"printer-uri", NULL, buffer);
|
||||
|
||||
/*
|
||||
* Do the request and get back a response...
|
||||
*/
|
||||
|
||||
if ((response = cupsDoRequest(cups_server, request, "/")) != NULL)
|
||||
{
|
||||
last_error = response->request.status.status_code;
|
||||
|
||||
if ((attr = ippFindAttribute(response, "printer-uri-supported",
|
||||
IPP_TAG_URI)) != NULL)
|
||||
{
|
||||
/*
|
||||
* Get the actual server and printer names...
|
||||
*/
|
||||
|
||||
httpSeparate(attr->values[0].string.text, method, username, hostname,
|
||||
&port, resource);
|
||||
strcpy(printer, strrchr(resource, '/') + 1);
|
||||
|
||||
/*
|
||||
* Remap local hostname to localhost...
|
||||
*/
|
||||
|
||||
gethostname(buffer, sizeof(buffer));
|
||||
|
||||
if (strcasecmp(buffer, hostname) == 0)
|
||||
strcpy(hostname, "localhost");
|
||||
}
|
||||
|
||||
ippDelete(response);
|
||||
}
|
||||
|
||||
cupsLangFree(language);
|
||||
|
||||
/*
|
||||
* Reconnect to the correct server as needed...
|
||||
*/
|
||||
|
||||
if (strcasecmp(cups_server->hostname, hostname) != 0)
|
||||
{
|
||||
httpClose(cups_server);
|
||||
|
||||
if ((cups_server = httpConnect(hostname, ippPort())) == NULL)
|
||||
{
|
||||
last_error = IPP_SERVICE_UNAVAILABLE;
|
||||
return (NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Get a temp file...
|
||||
* Then check for the cache file...
|
||||
*/
|
||||
|
||||
cupsTempFile(filename, sizeof(filename));
|
||||
#if defined(WIN32) || defined(__EMX__)
|
||||
tempdir = "C:/WINDOWS/TEMP";
|
||||
|
||||
snprintf(filename, sizeof(filename), "%s/%s.ppd", tempdir, printer);
|
||||
#else
|
||||
if ((tempdir = getenv("TMPDIR")) == NULL)
|
||||
tempdir = "/tmp";
|
||||
|
||||
snprintf(filename, sizeof(filename), "%s/%d.%s.ppd", tempdir, getuid(), printer);
|
||||
#endif /* WIN32 || __EMX__ */
|
||||
|
||||
/*
|
||||
* And send a request to the HTTP server...
|
||||
@@ -887,7 +783,6 @@ cupsGetPPD(const char *name) /* I - Printer name */
|
||||
* Can't open file; close the server connection and return NULL...
|
||||
*/
|
||||
|
||||
httpFlush(cups_server);
|
||||
httpClose(cups_server);
|
||||
cups_server = NULL;
|
||||
return (NULL);
|
||||
@@ -917,12 +812,6 @@ cupsGetPrinters(char ***printers) /* O - Printers */
|
||||
char **temp; /* Temporary pointer */
|
||||
|
||||
|
||||
if (printers == NULL)
|
||||
{
|
||||
last_error = IPP_INTERNAL_ERROR;
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Try to connect to the server...
|
||||
*/
|
||||
@@ -1077,6 +966,7 @@ cupsPrintFiles(const char *name, /* I - Printer or class name */
|
||||
DEBUG_printf(("cupsPrintFile: Unable to open connection - %s.\n",
|
||||
strerror(errno)));
|
||||
last_error = IPP_SERVICE_UNAVAILABLE;
|
||||
ippDelete(request);
|
||||
return (0);
|
||||
}
|
||||
|
||||
@@ -1359,9 +1249,7 @@ char * /* O - Filename */
|
||||
cupsTempFile(char *filename, /* I - Pointer to buffer */
|
||||
int len) /* I - Size of buffer */
|
||||
{
|
||||
int fd; /* File descriptor for temp file */
|
||||
char *tmpdir; /* TMPDIR environment var */
|
||||
struct timeval curtime; /* Current time */
|
||||
static char buf[1024] = ""; /* Buffer if you pass in NULL and 0 */
|
||||
|
||||
|
||||
@@ -1380,64 +1268,26 @@ cupsTempFile(char *filename, /* I - Pointer to buffer */
|
||||
*/
|
||||
|
||||
if ((tmpdir = getenv("TMPDIR")) == NULL)
|
||||
{
|
||||
#ifdef WIN32
|
||||
tmpdir = "C:/WINDOWS/TEMP";
|
||||
#else
|
||||
/*
|
||||
* Put root temp files in restricted temp directory...
|
||||
*/
|
||||
tmpdir = "/var/tmp";
|
||||
|
||||
if (getuid() == 0)
|
||||
tmpdir = CUPS_REQUESTS "/tmp";
|
||||
else
|
||||
tmpdir = "/var/tmp";
|
||||
#endif /* WIN32 */
|
||||
}
|
||||
|
||||
/*
|
||||
* Make the temporary name using the specified directory...
|
||||
*/
|
||||
|
||||
do
|
||||
if ((int)(strlen(tmpdir) + 8) > len)
|
||||
{
|
||||
/*
|
||||
* Get the current time of day...
|
||||
* The specified directory exceeds the size of the buffer; default it...
|
||||
*/
|
||||
|
||||
gettimeofday(&curtime, NULL);
|
||||
|
||||
/*
|
||||
* Format a string using the hex time values...
|
||||
*/
|
||||
|
||||
snprintf(filename, len, "%s/%08x%05x", tmpdir,
|
||||
curtime.tv_sec, curtime.tv_usec);
|
||||
|
||||
/*
|
||||
* Open the file in "exclusive" mode, making sure that we don't
|
||||
* stomp on an existing file or someone's symlink crack...
|
||||
*/
|
||||
|
||||
#ifdef O_NOFOLLOW
|
||||
fd = open(filename, O_WRONLY | O_CREAT | O_EXCL | O_NOFOLLOW, 0600);
|
||||
#else
|
||||
fd = open(filename, O_WRONLY | O_CREAT | O_EXCL, 0600);
|
||||
#endif /* O_NOFOLLOW */
|
||||
strcpy(buf, "/var/tmp/XXXXXX");
|
||||
return (mktemp(buf));
|
||||
}
|
||||
while (fd < 0);
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Make the temporary name using the specified directory...
|
||||
*/
|
||||
|
||||
/*
|
||||
* Close the temp file - it'll be reopened later as needed...
|
||||
*/
|
||||
|
||||
close(fd);
|
||||
|
||||
/*
|
||||
* Return the temp filename...
|
||||
*/
|
||||
|
||||
return (filename);
|
||||
sprintf(filename, "%s/XXXXXX", tmpdir);
|
||||
return (mktemp(filename));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
+1
-5
@@ -81,19 +81,15 @@ clean:
|
||||
#
|
||||
|
||||
install:
|
||||
-$(MKDIR) $(DATADIR)
|
||||
-$(MKDIR) $(DATADIR)/banners
|
||||
$(CHMOD) ugo+rx $(DATADIR)
|
||||
$(CHMOD) ugo+rx $(DATADIR)/banners
|
||||
$(INSTALL_DATA) $(BANNERS) $(DATADIR)/banners
|
||||
-$(MKDIR) $(DATADIR)/charsets
|
||||
$(CHMOD) ugo+rx $(DATADIR)/charsets
|
||||
$(INSTALL_DATA) $(CHARSETS) $(DATADIR)/charsets
|
||||
-$(MKDIR) $(DATADIR)/data
|
||||
$(CHMOD) ugo+rx $(DATADIR)/data
|
||||
$(INSTALL_DATA) $(DATAFILES) $(DATADIR)/data
|
||||
-if test "$(PAMDIR)" != ""; then \
|
||||
$(MKDIR) $(PAMDIR); \
|
||||
$(CHMOD) ugo+rx $(PAMDIR); \
|
||||
$(INSTALL_DATA) cups.pam $(PAMDIR)/cups; \
|
||||
fi
|
||||
|
||||
|
||||
+2
-2
@@ -465,7 +465,7 @@ gsave
|
||||
pageWidth 36 mul % Center of page
|
||||
pageWidth 14 mul % Bottom of page
|
||||
2 copy moveto % Position text
|
||||
(Printed Using CUPS v1.1.x) CENTER % Show text centered
|
||||
(Printed Using CUPS v1.1) CENTER % Show text centered
|
||||
|
||||
pageWidth 3 mul sub % Move down...
|
||||
2 copy moveto % Position text
|
||||
@@ -500,6 +500,6 @@ gsave
|
||||
grestore
|
||||
showpage
|
||||
%
|
||||
% End of "$Id: testprint.ps 1260 2000-08-01 17:52:30Z mike $".
|
||||
% End of "$Id: testprint.ps 985 2000-03-13 18:55:00Z mike $".
|
||||
%
|
||||
%%EOF
|
||||
|
||||
+5
-11
@@ -47,8 +47,7 @@ include ../Makedefs
|
||||
#
|
||||
|
||||
DOCUMENTS = cmp.shtml idd.shtml ipp.shtml sam.shtml sdd.shtml \
|
||||
spm.shtml sps.shtml ssr.shtml stp.shtml sum.shtml \
|
||||
svd.shtml
|
||||
spm.shtml ssr.shtml stp.shtml sum.shtml svd.shtml
|
||||
DOCIMAGES = images/cups-block-diagram.gif images/cups-large.gif \
|
||||
images/cups-medium.gif images/cups-small.gif
|
||||
WEBPAGES = cups.css cupsdoc.css index.html documentation.html
|
||||
@@ -88,6 +87,7 @@ WEBIMAGES = images/accept-jobs.gif \
|
||||
images/stop-printer.gif
|
||||
|
||||
|
||||
#
|
||||
#
|
||||
# Make all documents...
|
||||
#
|
||||
@@ -96,10 +96,11 @@ all: $(DOCUMENTS:.shtml=.pdf) $(DOCUMENTS:.shtml=.html) overview.pdf
|
||||
|
||||
|
||||
#
|
||||
# Make PS files...
|
||||
# Make manuals for printing...
|
||||
#
|
||||
|
||||
ps: $(DOCUMENTS:.shtml=.ps) overview.ps
|
||||
print: sam-7x8.pdf spm-7x8.pdf sum-7x8.pdf \
|
||||
sam-7x8.ps spm-7x8.ps sum-7x8.ps
|
||||
|
||||
|
||||
#
|
||||
@@ -118,13 +119,11 @@ clean:
|
||||
|
||||
install:
|
||||
-$(MKDIR) $(DOCDIR)
|
||||
$(CHMOD) ugo+rx $(DOCDIR)
|
||||
$(INSTALL_MAN) $(WEBPAGES) $(DOCDIR)
|
||||
$(INSTALL_MAN) overview.html overview.pdf $(DOCDIR)
|
||||
$(INSTALL_MAN) $(DOCUMENTS:.shtml=.html) $(DOCDIR)
|
||||
$(INSTALL_MAN) $(DOCUMENTS:.shtml=.pdf) $(DOCDIR)
|
||||
-$(MKDIR) $(DOCDIR)/images
|
||||
$(CHMOD) ugo+rx $(DOCDIR)/images
|
||||
$(INSTALL_MAN) $(WEBIMAGES) $(DOCDIR)/images
|
||||
$(INSTALL_MAN) $(DOCIMAGES) $(DOCDIR)/images
|
||||
|
||||
@@ -208,11 +207,6 @@ sum-7x8.ps: sum.shtml
|
||||
--size 7x8.5in --left 0.5in --right 0.25in \
|
||||
--top 0.25in --bottom 0.25in --fontsize 10 --headfootsize 10 -f $@ sum.shtml
|
||||
|
||||
$(DOCUMENTS): glossary.shtml printing-overview.shtml \
|
||||
references.shtml system-overview.shtml \
|
||||
../LICENSE.html
|
||||
|
||||
|
||||
#
|
||||
# End of Makefile.
|
||||
#
|
||||
|
||||
+51
-53
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE> CUPS Configuration Management Plan</TITLE>
|
||||
<TITLE>CUPS Configuration Management Plan</TITLE>
|
||||
<META NAME="AUTHOR" CONTENT="Easy Software Products">
|
||||
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-CMP-1.1">
|
||||
@@ -17,11 +17,14 @@ H6 { font-family: sans-serif; font-size: 8.0pt }
|
||||
SUB { font-size: 8.0pt }
|
||||
SUP { font-size: 8.0pt }
|
||||
PRE { font-size: 9.0pt }
|
||||
A:link { text-decoration: underline }
|
||||
A:visited { text-decoration: underline }
|
||||
A:active { text-decoration: underline }
|
||||
</STYLE>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0" WIDTH="100%"><BR>
|
||||
<H1> CUPS Configuration Management Plan</H1></A><BR>
|
||||
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0"><BR>
|
||||
<H1>CUPS Configuration Management Plan</H1></A><BR>
|
||||
CUPS-CMP-1.1<BR>
|
||||
Easy Software Products<BR>
|
||||
Copyright 1997-2000, All Rights Reserved<BR>
|
||||
@@ -117,24 +120,24 @@ Copyright 1997-2000, All Rights Reserved<BR>
|
||||
<H1><A NAME="1">1 Scope</A></H1>
|
||||
<H2><A NAME="1_1">1.1 Identification</A></H2>
|
||||
This configuration management plan document provides the guidelines
|
||||
for development and maintenance of the Common UNIX Printing System
|
||||
for development and maintainance of the Common UNIX Printing System
|
||||
("CUPS") Version 1.1 software.
|
||||
<H2><A NAME="1_2">1.2 System Overview</A></H2>
|
||||
<P>CUPS provides a portable printing layer for UNIX®-based operating
|
||||
systems. It has been developed by <A HREF="http://www.easysw.com">Easy
|
||||
Software Products</A> to promote a standard printing solution for all
|
||||
UNIX vendors and users. CUPS provides the System V and Berkeley
|
||||
<P>The Common UNIX Printing System provides a portable printing layer
|
||||
for UNIX® operating systems. It has been developed by <A HREF="http://www.easysw.com">
|
||||
Easy Software Products</A> to promote a standard printing solution for
|
||||
all UNIX vendors and users. CUPS provides the System V and Berkeley
|
||||
command-line interfaces. </P>
|
||||
<P>CUPS uses the Internet Printing Protocol ("IPP") as the basis for
|
||||
managing print jobs and queues. The Line Printer Daemon ("LPD") Server
|
||||
Message Block ("SMB"), and AppSocket (a.k.a. JetDirect) protocols are
|
||||
also supported with reduced functionality. CUPS adds network printer
|
||||
browsing and PostScript Printer Description ("PPD") based printing
|
||||
options to support real-world printing under UNIX. </P>
|
||||
<P>CUPS also includes a customized version of GNU Ghostscript
|
||||
(currently based off GNU Ghostscript 5.50) and an image file RIP that
|
||||
are used to support non-PostScript printers. Sample drivers for HP and
|
||||
EPSON printers are included that use these filters. </P>
|
||||
<P>CUPS uses the Internet Printing Protocol (IETF-IPP) as the basis for
|
||||
managing print jobs and queues. The Line Printer Daemon (LPD, RFC1179),
|
||||
Server Message Block (SMB), and AppSocket protocols are also supported
|
||||
with reduced functionality. </P>
|
||||
<P>CUPS adds network printer browsing and PostScript Printer
|
||||
Description ("PPD")-based printing options to support real world
|
||||
applications under UNIX. </P>
|
||||
<P>CUPS also includes a customized version of GNU GhostScript
|
||||
(currently based off GNU GhostScript 5.50) and an image file RIP that
|
||||
is used to support non-PostScript printers. </P>
|
||||
<H2><A NAME="1_3">1.3 Document Overview</A></H2>
|
||||
This configuration management document is organized into the following
|
||||
sections:
|
||||
@@ -156,44 +159,37 @@ sections:
|
||||
<LI>CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
|
||||
<LI>CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
|
||||
<LI>CUPS-SDD-1.1: CUPS Software Design Description </LI>
|
||||
<LI>CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
|
||||
<LI>CUPS-SPM-1.1: CUPS Software Programming Manual </LI>
|
||||
<LI>CUPS-SSR-1.1: CUPS Software Security Report </LI>
|
||||
<LI>CUPS-STP-1.1: CUPS Software Test Plan </LI>
|
||||
<LI>CUPS-SUM-1.1.x: CUPS Software Users Manual </LI>
|
||||
<LI>CUPS-SVD-1.1: CUPS Software Version Description </LI>
|
||||
<LI>CUPS-SVD-1.1.x: CUPS Software Version Description </LI>
|
||||
</UL>
|
||||
<H2><A NAME="2_2">2.2 Other Documents</A></H2>
|
||||
<P>The following non-CUPS documents are referenced by this document: </P>
|
||||
<UL>
|
||||
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf">
|
||||
Adobe PostScript Printer Description File Format Specification,
|
||||
Version 4.3.</A></LI>
|
||||
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf">
|
||||
Adobe PostScript Language Reference, Third Edition.</A></LI>
|
||||
<LI>Adobe PostScript Printer Description File Format Specification,
|
||||
Version 4.3. </LI>
|
||||
<LI>Adobe PostScript Language Reference, Third Edition. </LI>
|
||||
<LI>IPP: Job and Printer Set Operations </LI>
|
||||
<LI>IPP/1.1: Encoding and Transport </LI>
|
||||
<LI>IPP/1.1: Implementers Guide </LI>
|
||||
<LI>IPP/1.1: Model and Semantics </LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc1179.txt">RFC 1179, Line
|
||||
Printer Daemon Protocol</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2567.txt">RFC 2567, Design
|
||||
Goals for an Internet Printing Protocol</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2568.txt">RFC 2568, Rationale
|
||||
for the Structure of the Model and Protocol</A> for the Internet
|
||||
Printing Protocol</LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2569.txt">RFC 2569, Mapping
|
||||
between LPD and IPP Protocols</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616, Hypertext
|
||||
Transfer Protocol -- HTTP/1.1</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2617.txt">RFC 2617, HTTP
|
||||
Authentication: Basic and Digest Access</A> Authentication </LI>
|
||||
<LI>RFC 1179, Line Printer Daemon Protocol </LI>
|
||||
<LI>RFC 2567, Design Goals for an Internet Printing Protocol </LI>
|
||||
<LI>RFC 2568, Rationale for the Structure of the Model and Protocol
|
||||
for the Internet Printing Protocol </LI>
|
||||
<LI>RFC 2569, Mapping between LPD and IPP Protocols </LI>
|
||||
<LI>RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1 </LI>
|
||||
<LI>RFC 2617, HTTP Authentication: Basic and Digest Access
|
||||
Authentication </LI>
|
||||
</UL>
|
||||
<H1><A NAME="3">3 File Management</A></H1>
|
||||
<H2><A NAME="3_1">3.1 Directory Structure</A></H2>
|
||||
Each source file shall be placed a sub-directory corresponding to the
|
||||
software sub-system it belongs to ("scheduler", "cups", etc.) To remain
|
||||
compatible with older UNIX filesystems, directory names shall not
|
||||
exceed 16 characters in length.
|
||||
software sub-system it belongs to ("scheduler", "libcups", etc.) To
|
||||
remain compatible with older UNIX filesystems, directory names shall
|
||||
not exceed 16 characters in length.
|
||||
<H2><A NAME="3_2">3.2 Source Files</A></H2>
|
||||
Source files shall be documented and formatted as described in
|
||||
Appendix B, Coding Requirements.
|
||||
@@ -333,7 +329,7 @@ tests.
|
||||
<DT>HP-GL </DT>
|
||||
<DD>Hewlett-Packard Graphics Language </DD>
|
||||
<DT>HP-PCL </DT>
|
||||
<DD>Hewlett-Packard Page Control Language </DD>
|
||||
<DD>Hewlett-Packard Printer Control Language </DD>
|
||||
<DT>HP-PJL </DT>
|
||||
<DD>Hewlett-Packard Printer Job Language </DD>
|
||||
<DT>IETF </DT>
|
||||
@@ -346,6 +342,8 @@ tests.
|
||||
<DD>Line Printer Daemon </DD>
|
||||
<DT>MIME </DT>
|
||||
<DD>Multimedia Internet Mail Exchange </DD>
|
||||
<DT>PCL </DT>
|
||||
<DD>Page Control Language </DD>
|
||||
<DT>PPD </DT>
|
||||
<DD>PostScript Printer Description </DD>
|
||||
<DT>SMB </DT>
|
||||
@@ -372,7 +370,7 @@ name and revision information is provided by the CVS "$Id$" tag:
|
||||
<UL>
|
||||
<PRE>
|
||||
/*
|
||||
* "$Id$"
|
||||
* "36;Id$"
|
||||
*
|
||||
* Description of file contents.
|
||||
*
|
||||
@@ -410,7 +408,7 @@ that code has been lost near the end of the file:
|
||||
<UL>
|
||||
<PRE>
|
||||
/*
|
||||
* End of "$Id$".
|
||||
* End of "36;Id$".
|
||||
*/
|
||||
</PRE>
|
||||
</UL>
|
||||
@@ -659,19 +657,19 @@ for (i = sizeof(array) / sizeof(array[0]) - 1; i >= 0; i --)
|
||||
<TR><TH ALIGN="RIGHT">Summary of Problem:</TH><TD ALIGN="LEFT">
|
||||
________________________________________</TD></TR>
|
||||
<TR><TH ALIGN="RIGHT">Problem Severity:</TH><TD ALIGN="LEFT">__1=RFE
|
||||
<BR> __2=Documentation-Error
|
||||
<BR> __3=Unable-to-Print-a-File
|
||||
<BR> __4=Unable-to-Print-to-a-Printer
|
||||
<BR> __5=Unable-to-Print-at-All</TD></TR>
|
||||
<BR>__2=Documentation-Error
|
||||
<BR>__3=Unable-to-Print-a-File
|
||||
<BR>__4=Unable-to-Print-to-a-Printer
|
||||
<BR>__5=Unable-to-Print-at-All</TD></TR>
|
||||
<TR><TH ALIGN="RIGHT">Problem Scope:</TH><TD ALIGN="LEFT">__1=Machine
|
||||
__2=Operating-System __3=All</TD></TR>
|
||||
<TR><TH ALIGN="RIGHT" VALIGN="TOP">Detailed Description of Problem:</TH><TD
|
||||
ALIGN="LEFT">________________________________________
|
||||
<BR> ________________________________________
|
||||
<BR> ________________________________________
|
||||
<BR> ________________________________________
|
||||
<BR> ________________________________________
|
||||
<BR> ________________________________________</TD></TR>
|
||||
<BR>________________________________________
|
||||
<BR>________________________________________
|
||||
<BR>________________________________________
|
||||
<BR>________________________________________
|
||||
<BR>________________________________________</TD></TR>
|
||||
</TABLE>
|
||||
</CENTER>
|
||||
</BODY>
|
||||
|
||||
+622
-690
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+2
-2
@@ -12,7 +12,7 @@
|
||||
<H2>Identification</H2>
|
||||
|
||||
This configuration management plan document provides the guidelines for
|
||||
development and maintenance of the Common UNIX Printing System ("CUPS")
|
||||
development and maintainance of the Common UNIX Printing System ("CUPS")
|
||||
Version 1.1 software.
|
||||
|
||||
<EMBED SRC="system-overview.shtml">
|
||||
@@ -39,7 +39,7 @@ sections:
|
||||
<H2>Directory Structure</H2>
|
||||
|
||||
Each source file shall be placed a sub-directory corresponding to the software
|
||||
sub-system it belongs to ("scheduler", "cups", etc.) To remain compatible
|
||||
sub-system it belongs to ("scheduler", "libcups", etc.) To remain compatible
|
||||
with older UNIX filesystems, directory names shall not exceed 16 characters
|
||||
in length.
|
||||
|
||||
|
||||
@@ -56,10 +56,6 @@ The following documentation for CUPS is available on this server:
|
||||
<A HREF="sdd.html">HTML</A> |
|
||||
<A HREF="sdd.pdf">PDF</A> )
|
||||
|
||||
<LI>Software Performance Specification (
|
||||
<A HREF="sps.html">HTML</A> |
|
||||
<A HREF="sps.pdf">PDF</A> )
|
||||
|
||||
<LI>Software Version Description (
|
||||
<A HREF="svd.html">HTML</A> |
|
||||
<A HREF="svd.pdf">PDF</A> )
|
||||
|
||||
Arquivo binário não exibido.
@@ -41,7 +41,7 @@
|
||||
<DD>Hewlett-Packard Graphics Language
|
||||
|
||||
<DT>HP-PCL
|
||||
<DD>Hewlett-Packard Page Control Language
|
||||
<DD>Hewlett-Packard Printer Control Language
|
||||
|
||||
<DT>HP-PJL
|
||||
<DD>Hewlett-Packard Printer Job Language
|
||||
@@ -61,6 +61,9 @@
|
||||
<DT>MIME
|
||||
<DD>Multimedia Internet Mail Exchange
|
||||
|
||||
<DT>PCL
|
||||
<DD>Page Control Language
|
||||
|
||||
<DT>PPD
|
||||
<DD>PostScript Printer Description
|
||||
|
||||
|
||||
+48
-76
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE> CUPS Interface Design Description</TITLE>
|
||||
<TITLE>CUPS Interface Design Description</TITLE>
|
||||
<META NAME="AUTHOR" CONTENT="Easy Software Products">
|
||||
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-IDD-1.1">
|
||||
@@ -17,11 +17,14 @@ H6 { font-family: sans-serif; font-size: 8.0pt }
|
||||
SUB { font-size: 8.0pt }
|
||||
SUP { font-size: 8.0pt }
|
||||
PRE { font-size: 9.0pt }
|
||||
A:link { text-decoration: underline }
|
||||
A:visited { text-decoration: underline }
|
||||
A:active { text-decoration: underline }
|
||||
</STYLE>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0" WIDTH="100%"><BR>
|
||||
<H1> CUPS Interface Design Description</H1></A><BR>
|
||||
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0"><BR>
|
||||
<H1>CUPS Interface Design Description</H1></A><BR>
|
||||
CUPS-IDD-1.1<BR>
|
||||
Easy Software Products<BR>
|
||||
Copyright 1997-2000, All Rights Reserved<BR>
|
||||
@@ -32,8 +35,7 @@ Copyright 1997-2000, All Rights Reserved<BR>
|
||||
<BR><B><A HREF="#1">1 Scope</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#1_1">1.1 Identification</A></LI>
|
||||
<LI><A HREF="#1_2">1.2 System Overview</A></LI>
|
||||
<LI><A HREF="#1_3">1.3 Document Overview</A></LI>
|
||||
<LI><A HREF="#1_2">1.2 Document Overview</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#2">2 References</A></B>
|
||||
<UL>
|
||||
@@ -94,23 +96,7 @@ Copyright 1997-2000, All Rights Reserved<BR>
|
||||
<P>This interface design description document provides detailed file
|
||||
formats, message formats, and program conventions for the Common UNIX
|
||||
Printing System ("CUPS") Version 1.1. </P>
|
||||
<H2><A NAME="1_2">1.2 System Overview</A></H2>
|
||||
<P>CUPS provides a portable printing layer for UNIX®-based operating
|
||||
systems. It has been developed by <A HREF="http://www.easysw.com">Easy
|
||||
Software Products</A> to promote a standard printing solution for all
|
||||
UNIX vendors and users. CUPS provides the System V and Berkeley
|
||||
command-line interfaces. </P>
|
||||
<P>CUPS uses the Internet Printing Protocol ("IPP") as the basis for
|
||||
managing print jobs and queues. The Line Printer Daemon ("LPD") Server
|
||||
Message Block ("SMB"), and AppSocket (a.k.a. JetDirect) protocols are
|
||||
also supported with reduced functionality. CUPS adds network printer
|
||||
browsing and PostScript Printer Description ("PPD") based printing
|
||||
options to support real-world printing under UNIX. </P>
|
||||
<P>CUPS also includes a customized version of GNU Ghostscript
|
||||
(currently based off GNU Ghostscript 5.50) and an image file RIP that
|
||||
are used to support non-PostScript printers. Sample drivers for HP and
|
||||
EPSON printers are included that use these filters. </P>
|
||||
<H2><A NAME="1_3">1.3 Document Overview</A></H2>
|
||||
<H2><A NAME="1_2">1.2 Document Overview</A></H2>
|
||||
<P>This interface design description document is organized into the
|
||||
following sections: </P>
|
||||
<UL>
|
||||
@@ -130,37 +116,30 @@ following sections: </P>
|
||||
<LI>CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
|
||||
<LI>CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
|
||||
<LI>CUPS-SDD-1.1: CUPS Software Design Description </LI>
|
||||
<LI>CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
|
||||
<LI>CUPS-SPM-1.1: CUPS Software Programming Manual </LI>
|
||||
<LI>CUPS-SSR-1.1: CUPS Software Security Report </LI>
|
||||
<LI>CUPS-STP-1.1: CUPS Software Test Plan </LI>
|
||||
<LI>CUPS-SUM-1.1.x: CUPS Software Users Manual </LI>
|
||||
<LI>CUPS-SVD-1.1: CUPS Software Version Description </LI>
|
||||
<LI>CUPS-SVD-1.1.x: CUPS Software Version Description </LI>
|
||||
</UL>
|
||||
<H2><A NAME="2_2">2.2 Other Documents</A></H2>
|
||||
<P>The following non-CUPS documents are referenced by this document: </P>
|
||||
<UL>
|
||||
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf">
|
||||
Adobe PostScript Printer Description File Format Specification,
|
||||
Version 4.3.</A></LI>
|
||||
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf">
|
||||
Adobe PostScript Language Reference, Third Edition.</A></LI>
|
||||
<LI>Adobe PostScript Printer Description File Format Specification,
|
||||
Version 4.3. </LI>
|
||||
<LI>Adobe PostScript Language Reference, Third Edition. </LI>
|
||||
<LI>IPP: Job and Printer Set Operations </LI>
|
||||
<LI>IPP/1.1: Encoding and Transport </LI>
|
||||
<LI>IPP/1.1: Implementers Guide </LI>
|
||||
<LI>IPP/1.1: Model and Semantics </LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc1179.txt">RFC 1179, Line
|
||||
Printer Daemon Protocol</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2567.txt">RFC 2567, Design
|
||||
Goals for an Internet Printing Protocol</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2568.txt">RFC 2568, Rationale
|
||||
for the Structure of the Model and Protocol</A> for the Internet
|
||||
Printing Protocol</LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2569.txt">RFC 2569, Mapping
|
||||
between LPD and IPP Protocols</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616, Hypertext
|
||||
Transfer Protocol -- HTTP/1.1</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2617.txt">RFC 2617, HTTP
|
||||
Authentication: Basic and Digest Access</A> Authentication </LI>
|
||||
<LI>RFC 1179, Line Printer Daemon Protocol </LI>
|
||||
<LI>RFC 2567, Design Goals for an Internet Printing Protocol </LI>
|
||||
<LI>RFC 2568, Rationale for the Structure of the Model and Protocol
|
||||
for the Internet Printing Protocol </LI>
|
||||
<LI>RFC 2569, Mapping between LPD and IPP Protocols </LI>
|
||||
<LI>RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1 </LI>
|
||||
<LI>RFC 2617, HTTP Authentication: Basic and Digest Access
|
||||
Authentication </LI>
|
||||
</UL>
|
||||
<H1><A NAME="3">3 Internal Interfaces</A></H1>
|
||||
<H2><A NAME="3_1">3.1 Character Set Files</A></H2>
|
||||
@@ -243,6 +222,16 @@ string "cups_" to the front of the language specifier (e.g. "cups
|
||||
<P>The first line identifies the character set to be used for the
|
||||
messages. The currently recognized values are: </P>
|
||||
<UL>
|
||||
<LI>cp874 </LI>
|
||||
<LI>cp1250 </LI>
|
||||
<LI>cp1251 </LI>
|
||||
<LI>cp1252 </LI>
|
||||
<LI>cp1253 </LI>
|
||||
<LI>cp1254 </LI>
|
||||
<LI>cp1255 </LI>
|
||||
<LI>cp1256 </LI>
|
||||
<LI>cp1257 </LI>
|
||||
<LI>cp1258 </LI>
|
||||
<LI>iso-8859-1 </LI>
|
||||
<LI>iso-8859-2 </LI>
|
||||
<LI>iso-8859-3 </LI>
|
||||
@@ -258,16 +247,6 @@ messages. The currently recognized values are: </P>
|
||||
<LI>iso-8859-15 </LI>
|
||||
<LI>us-ascii </LI>
|
||||
<LI>utf-8 </LI>
|
||||
<LI>windows-874 </LI>
|
||||
<LI>windows-1250 </LI>
|
||||
<LI>windows-1251 </LI>
|
||||
<LI>windows-1252 </LI>
|
||||
<LI>windows-1253 </LI>
|
||||
<LI>windows-1254 </LI>
|
||||
<LI>windows-1255 </LI>
|
||||
<LI>windows-1256 </LI>
|
||||
<LI>windows-1257 </LI>
|
||||
<LI>windows-1258 </LI>
|
||||
</UL>
|
||||
<P>The second and succeeding lines define text messages. If the message
|
||||
text is preceded by a number, then the current message number is
|
||||
@@ -314,12 +293,7 @@ of 1 or more lines of ASCII text. Comment lines start with the pound
|
||||
("super/type") representing the source and destination types. Following
|
||||
the MIME types are a cost value (0 to 100) and the filter program to
|
||||
use. If the filter program is not specified using the full path then it
|
||||
must reside in the CUPS filter directory: </P>
|
||||
<UL>
|
||||
<PRE>
|
||||
super/type SP super/type2 SP cost SP program
|
||||
</PRE>
|
||||
</UL>
|
||||
must reside in the CUPS filter directory. </P>
|
||||
<H2><A NAME="3_4">3.4 Option Files</A></H2>
|
||||
<P>CUPS maintains user-defined printer and option files for each
|
||||
printer and user on the system. The printers and options defined in the
|
||||
@@ -434,6 +408,8 @@ other files in a job.</TD></TR>
|
||||
allowed to access the class.</TD></TR>
|
||||
<TR><TD>Info</TD><TD>A textual description of the class.</TD></TR>
|
||||
<TR><TD>Location</TD><TD>A textual location of the class.</TD></TR>
|
||||
<TR><TD>MoreInfo</TD><TD>A URL pointing to additional information on
|
||||
the class.</TD></TR>
|
||||
<TR><TD>Printer</TD><TD>Specifies a printer that is a member of the
|
||||
class.</TD></TR>
|
||||
<TR><TD>State</TD><TD>Specifies the initial state of the class; can be
|
||||
@@ -482,16 +458,11 @@ use for browse packets.</TD></TR>
|
||||
<TR><TD>BrowseRelay</TD><TD>-</TD><TD>Specifies a source and
|
||||
destination address for relaying browser information from one subnet
|
||||
to another.</TD></TR>
|
||||
<TR><TD>BrowseShortNames</TD><TD>yes</TD><TD>Specifies whether or not
|
||||
to provide short names (without the "@server" part) for remote
|
||||
printers.</TD></TR>
|
||||
<TR><TD>BrowseTimeout</TD><TD>300</TD><TD>Specifies the number of
|
||||
seconds to wait until remote destinations are removed from the local
|
||||
destination list.</TD></TR>
|
||||
<TR><TD>Browsing</TD><TD>On</TD><TD>Specifies whether or not printer
|
||||
and class browsing is enabled; can be "On" or "Off".</TD></TR>
|
||||
<TR><TD>DataDir</TD><TD>/usr/share/cups</TD><TD>Specifies the directory
|
||||
where CUPS data files are stored.</TD></TR>
|
||||
<TR><TD>DefaultCharset</TD><TD>iso-8859-1</TD><TD>Specifies the default
|
||||
character set.</TD></TR>
|
||||
<TR><TD>DefaultLanguage</TD><TD>current locale</TD><TD>Specifies the
|
||||
@@ -595,6 +566,8 @@ allowed to access the printer.</TD></TR>
|
||||
printer.</TD></TR>
|
||||
<TR><TD>Info</TD><TD>A textual description of the printer.</TD></TR>
|
||||
<TR><TD>Location</TD><TD>A textual location of the printer.</TD></TR>
|
||||
<TR><TD>MoreInfo</TD><TD>A URL pointing to additional information on
|
||||
the printer.</TD></TR>
|
||||
<TR><TD><Printer name>
|
||||
<BR> </Printer></TD><TD>Surrounds the printer definition.</TD></TR>
|
||||
<TR><TD>State</TD><TD>Specifies the initial state of the printer; can
|
||||
@@ -848,9 +821,10 @@ application/vnd.cups-postscript</CODE>. </P>
|
||||
<H2><A NAME="4_5">4.5 CUPS Raster File</A></H2>
|
||||
<P>CUPS raster files are device-dependent raster image files that
|
||||
contain a PostScript page device dictionary and device-dependent raster
|
||||
imagery for each page in the document. These files are used to transfer
|
||||
raster data from the PostScript and image file RIPs to device-dependent
|
||||
filters that convert the raster data to a printable format. </P>
|
||||
imagery for each page in the document. These files are used to
|
||||
transfer raster data from the PostScript and image file RIPs to
|
||||
device-dependent filters that convert the raster data to a printable
|
||||
format. </P>
|
||||
<P>A raster file begins with a four byte synchronization word:
|
||||
0x52615374 ("RaSt") for big-endian architectures and 0x74536152
|
||||
("tSaR") for little-endian architectures. The writer of the raster
|
||||
@@ -985,9 +959,7 @@ RFC 1179: Line Printer Daemon Protocol</A>. </P>
|
||||
<P>The Server Message Block (SMB) and related Common Internet File
|
||||
System (CIFS) protocols are described at <A HREF="http://anu.samba.org/cifs">
|
||||
http://anu.samba.org/cifs</A>. </P>
|
||||
<P>The URI method name for SMB is "smb". Support for this protocol is
|
||||
provided via the SAMBA <CODE>smbspool(1)</CODE> program provided with
|
||||
SAMBA 2.0.6 and higher. </P>
|
||||
<P>The URI method name for SMB is "smb". </P>
|
||||
<H1><A NAME="5">5 Directories</A></H1>
|
||||
<DL>
|
||||
<DT>/etc/cups </DT>
|
||||
@@ -1000,10 +972,8 @@ SAMBA 2.0.6 and higher. </P>
|
||||
<DD>This directory contains PPD files for each printer. </DD>
|
||||
<DT>/usr/bin </DT>
|
||||
<DD>The <CODE>cancel</CODE>, <CODE>lp</CODE>, <CODE>lpq</CODE>, <CODE>
|
||||
lpr</CODE>, <CODE>lprm</CODE>, and <CODE>lpstat</CODE> commands
|
||||
reside here. </DD>
|
||||
<DT>/usr/lib, /usr/lib32 </DT>
|
||||
<DD>The shared libraries (DSOs) reside here. </DD>
|
||||
lpr</CODE>, <CODE>lprm</CODE>, and <CODE>lpstat</CODE> commands reside
|
||||
here. </DD>
|
||||
<DT>/usr/lib/cups/backend </DT>
|
||||
<DD>The backend filters reside here. </DD>
|
||||
<DT>/usr/lib/cups/cgi-bin </DT>
|
||||
@@ -1013,7 +983,7 @@ SAMBA 2.0.6 and higher. </P>
|
||||
<DT>/usr/lib/cups/filter </DT>
|
||||
<DD>The file filters reside here. </DD>
|
||||
<DT>/usr/sbin </DT>
|
||||
<DD>The <CODE>accept</CODE>, <CODE>cupsd</CODE>, <CODE> lpadmin</CODE>, <CODE>
|
||||
<DD>The <CODE>accept</CODE>, <CODE>cupsd</CODE>, <CODE>lpadmin</CODE>, <CODE>
|
||||
lpc</CODE>, and <CODE>reject</CODE> commands reside here. </DD>
|
||||
<DT>/usr/share/cups </DT>
|
||||
<DD>This is the root directory of the CUPS static data. </DD>
|
||||
@@ -1031,7 +1001,7 @@ lpc</CODE>, and <CODE>reject</CODE> commands reside here. </DD>
|
||||
<DD>The scheduler documentation files reside here. </DD>
|
||||
<DT>/var/log/cups </DT>
|
||||
<DD>The <CODE>access_log</CODE>, <CODE>error_log</CODE>, and <CODE>
|
||||
page_log</CODE> files reside here. </DD>
|
||||
page_log</CODE> files reside here. </DD>
|
||||
<DT>/var/spool/cups </DT>
|
||||
<DD>This directory contains print job files. </DD>
|
||||
</DL>
|
||||
@@ -1062,7 +1032,7 @@ lpc</CODE>, and <CODE>reject</CODE> commands reside here. </DD>
|
||||
<DT>HP-GL </DT>
|
||||
<DD>Hewlett-Packard Graphics Language </DD>
|
||||
<DT>HP-PCL </DT>
|
||||
<DD>Hewlett-Packard Page Control Language </DD>
|
||||
<DD>Hewlett-Packard Printer Control Language </DD>
|
||||
<DT>HP-PJL </DT>
|
||||
<DD>Hewlett-Packard Printer Job Language </DD>
|
||||
<DT>IETF </DT>
|
||||
@@ -1075,6 +1045,8 @@ lpc</CODE>, and <CODE>reject</CODE> commands reside here. </DD>
|
||||
<DD>Line Printer Daemon </DD>
|
||||
<DT>MIME </DT>
|
||||
<DD>Multimedia Internet Mail Exchange </DD>
|
||||
<DT>PCL </DT>
|
||||
<DD>Page Control Language </DD>
|
||||
<DT>PPD </DT>
|
||||
<DD>PostScript Printer Description </DD>
|
||||
<DT>SMB </DT>
|
||||
|
||||
+691
-756
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+21
-33
@@ -129,6 +129,16 @@ file consists of two or more lines of ASCII text.
|
||||
The currently recognized values are:
|
||||
|
||||
<UL>
|
||||
<LI>cp874
|
||||
<LI>cp1250
|
||||
<LI>cp1251
|
||||
<LI>cp1252
|
||||
<LI>cp1253
|
||||
<LI>cp1254
|
||||
<LI>cp1255
|
||||
<LI>cp1256
|
||||
<LI>cp1257
|
||||
<LI>cp1258
|
||||
<LI>iso-8859-1
|
||||
<LI>iso-8859-2
|
||||
<LI>iso-8859-3
|
||||
@@ -144,16 +154,6 @@ The currently recognized values are:
|
||||
<LI>iso-8859-15
|
||||
<LI>us-ascii
|
||||
<LI>utf-8
|
||||
<LI>windows-874
|
||||
<LI>windows-1250
|
||||
<LI>windows-1251
|
||||
<LI>windows-1252
|
||||
<LI>windows-1253
|
||||
<LI>windows-1254
|
||||
<LI>windows-1255
|
||||
<LI>windows-1256
|
||||
<LI>windows-1257
|
||||
<LI>windows-1258
|
||||
</UL>
|
||||
|
||||
<P>The second and succeeding lines define text messages. If the message text
|
||||
@@ -208,11 +208,7 @@ of 1 or more lines of ASCII text. Comment lines start with the pound
|
||||
representing the source and destination types. Following the MIME types are
|
||||
a cost value (0 to 100) and the filter program to use. If the filter program
|
||||
is not specified using the full path then it must reside in the CUPS filter
|
||||
directory:
|
||||
|
||||
<UL><PRE>
|
||||
super/type SP super/type2 SP cost SP program
|
||||
</PRE></UL>
|
||||
directory.
|
||||
|
||||
<H2>Option Files</H2>
|
||||
|
||||
@@ -386,6 +382,10 @@ followed by its value. The following directives are understood:
|
||||
<TD>Location</TD>
|
||||
<TD>A textual location of the class.</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>MoreInfo</TD>
|
||||
<TD>A URL pointing to additional information on the class.</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>Printer</TD>
|
||||
<TD>Specifies a printer that is a member of the class.</TD>
|
||||
@@ -488,12 +488,6 @@ followed by its value. The following directives are understood:
|
||||
<TD>Specifies a source and destination address for relaying browser
|
||||
information from one subnet to another.</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>BrowseShortNames</TD>
|
||||
<TD>yes</TD>
|
||||
<TD>Specifies whether or not to provide short names (without the
|
||||
"@server" part) for remote printers.</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>BrowseTimeout</TD>
|
||||
<TD>300</TD>
|
||||
@@ -506,11 +500,6 @@ followed by its value. The following directives are understood:
|
||||
<TD>Specifies whether or not printer and class browsing is enabled; can
|
||||
be "On" or "Off".</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>DataDir</TD>
|
||||
<TD>/usr/share/cups</TD>
|
||||
<TD>Specifies the directory where CUPS data files are stored.</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>DefaultCharset</TD>
|
||||
<TD>iso-8859-1</TD>
|
||||
@@ -738,6 +727,10 @@ followed by its value. The following directives are understood:
|
||||
<TD>Location</TD>
|
||||
<TD>A textual location of the printer.</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>MoreInfo</TD>
|
||||
<TD>A URL pointing to additional information on the printer.</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD><Printer name><BR>
|
||||
</Printer></TD>
|
||||
@@ -1063,7 +1056,7 @@ Adobe PostScript Language Reference Manual, Third Edition</A>.
|
||||
|
||||
<P>CUPS raster files are device-dependent raster image files that contain a
|
||||
PostScript page device dictionary and device-dependent raster imagery for
|
||||
each page in the document. These files are used to transfer raster data
|
||||
each page in the document. These files are used to transfer raster data
|
||||
from the PostScript and image file RIPs to device-dependent filters that
|
||||
convert the raster data to a printable format.
|
||||
|
||||
@@ -1348,9 +1341,7 @@ Protocol</A>.
|
||||
System (CIFS) protocols are described at
|
||||
<A HREF="http://anu.samba.org/cifs">http://anu.samba.org/cifs</A>.
|
||||
|
||||
<P>The URI method name for SMB is "smb". Support for this protocol is
|
||||
provided via the SAMBA <CODE>smbspool(1)</CODE> program provided with
|
||||
SAMBA 2.0.6 and higher.
|
||||
<P>The URI method name for SMB is "smb".
|
||||
|
||||
<H1>Directories</H1>
|
||||
|
||||
@@ -1373,9 +1364,6 @@ SAMBA 2.0.6 and higher.
|
||||
<CODE>lpr</CODE>, <CODE>lprm</CODE>, and <CODE>lpstat</CODE> commands
|
||||
reside here.
|
||||
|
||||
<DT>/usr/lib, /usr/lib32
|
||||
<DD>The shared libraries (DSOs) reside here.
|
||||
|
||||
<DT>/usr/lib/cups/backend
|
||||
<DD>The backend filters reside here.
|
||||
|
||||
|
||||
Arquivo binário não exibido.
|
Antes Largura: | Altura: | Tamanho: 11 KiB Depois Largura: | Altura: | Tamanho: 3.4 KiB |
+47
-82
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE> CUPS Implementation of IPP</TITLE>
|
||||
<TITLE>CUPS Implementation of IPP</TITLE>
|
||||
<META NAME="AUTHOR" CONTENT="Easy Software Products">
|
||||
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-IPP-1.1">
|
||||
@@ -20,8 +20,8 @@ PRE { font-size: 9.0pt }
|
||||
</STYLE>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0" WIDTH="100%"><BR>
|
||||
<H1> CUPS Implementation of IPP</H1></A><BR>
|
||||
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0"><BR>
|
||||
<H1>CUPS Implementation of IPP</H1></A><BR>
|
||||
CUPS-IPP-1.1<BR>
|
||||
Easy Software Products<BR>
|
||||
Copyright 1997-2000, All Rights Reserved<BR>
|
||||
@@ -147,22 +147,20 @@ Copyright 1997-2000, All Rights Reserved<BR>
|
||||
<LI><A HREF="#5_2_6">5.2.6 gamma (integer(1:10000))</A></LI>
|
||||
<LI><A HREF="#5_2_7">5.2.7 hue (integer(-180:180))</A></LI>
|
||||
<LI><A HREF="#5_2_8">5.2.8 job-billing (text(MAX))</A></LI>
|
||||
<LI><A HREF="#5_2_9">5.2.9 job-hold-until (keyword | name(MAX))</A></LI>
|
||||
<LI><A HREF="#5_2_10">5.2.10 job-sheets (1setof type3 keyword |
|
||||
name(MAX))</A></LI>
|
||||
<LI><A HREF="#5_2_11">5.2.11 lpi (type2 enum)</A></LI>
|
||||
<LI><A HREF="#5_2_12">5.2.12 page-bottom (integer(0:MAX))</A></LI>
|
||||
<LI><A HREF="#5_2_13">5.2.13 page-left (integer(0:MAX))</A></LI>
|
||||
<LI><A HREF="#5_2_14">5.2.14 page-right (integer(0:MAX))</A></LI>
|
||||
<LI><A HREF="#5_2_15">5.2.15 page-set (type2 keyword)</A></LI>
|
||||
<LI><A HREF="#5_2_16">5.2.16 page-top (integer(0:MAX))</A></LI>
|
||||
<LI><A HREF="#5_2_17">5.2.17 penwidth (integer(0:MAX))</A></LI>
|
||||
<LI><A HREF="#5_2_18">5.2.18 position (type2 keyword)</A></LI>
|
||||
<LI><A HREF="#5_2_19">5.2.19 ppi (integer(1:MAX))</A></LI>
|
||||
<LI><A HREF="#5_2_20">5.2.20 prettyprint (boolean)</A></LI>
|
||||
<LI><A HREF="#5_2_21">5.2.21 saturation (integer(0:200))</A></LI>
|
||||
<LI><A HREF="#5_2_22">5.2.22 scaling (integer(1:1000))</A></LI>
|
||||
<LI><A HREF="#5_2_23">5.2.23 wrap (boolean)</A></LI>
|
||||
<LI><A HREF="#5_2_9">5.2.9 job-sheets (1setof type3 keyword | name(MAX))</A>
|
||||
</LI>
|
||||
<LI><A HREF="#5_2_10">5.2.10 lpi (type2 enum)</A></LI>
|
||||
<LI><A HREF="#5_2_11">5.2.11 page-bottom (integer(0:MAX))</A></LI>
|
||||
<LI><A HREF="#5_2_12">5.2.12 page-left (integer(0:MAX))</A></LI>
|
||||
<LI><A HREF="#5_2_13">5.2.13 page-right (integer(0:MAX))</A></LI>
|
||||
<LI><A HREF="#5_2_14">5.2.14 page-set (type2 keyword)</A></LI>
|
||||
<LI><A HREF="#5_2_15">5.2.15 page-top (integer(0:MAX))</A></LI>
|
||||
<LI><A HREF="#5_2_16">5.2.16 penwidth (integer(0:MAX))</A></LI>
|
||||
<LI><A HREF="#5_2_17">5.2.17 ppi (integer(1:MAX))</A></LI>
|
||||
<LI><A HREF="#5_2_18">5.2.18 prettyprint (boolean)</A></LI>
|
||||
<LI><A HREF="#5_2_19">5.2.19 saturation (integer(0:200))</A></LI>
|
||||
<LI><A HREF="#5_2_20">5.2.20 scaling (integer(1:1000))</A></LI>
|
||||
<LI><A HREF="#5_2_21">5.2.21 wrap (boolean)</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#5_3">5.3 PPD Attributes</A></LI>
|
||||
<UL>
|
||||
@@ -236,37 +234,30 @@ EPSON printers are included that use these filters. </P>
|
||||
<LI>CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
|
||||
<LI>CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
|
||||
<LI>CUPS-SDD-1.1: CUPS Software Design Description </LI>
|
||||
<LI>CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
|
||||
<LI>CUPS-SPM-1.1: CUPS Software Programming Manual </LI>
|
||||
<LI>CUPS-SSR-1.1: CUPS Software Security Report </LI>
|
||||
<LI>CUPS-STP-1.1: CUPS Software Test Plan </LI>
|
||||
<LI>CUPS-SUM-1.1.x: CUPS Software Users Manual </LI>
|
||||
<LI>CUPS-SVD-1.1: CUPS Software Version Description </LI>
|
||||
<LI>CUPS-SVD-1.1.x: CUPS Software Version Description </LI>
|
||||
</UL>
|
||||
<H2><A NAME="2_2">2.2 Other Documents</A></H2>
|
||||
<P>The following non-CUPS documents are referenced by this document: </P>
|
||||
<UL>
|
||||
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf">
|
||||
Adobe PostScript Printer Description File Format Specification,
|
||||
Version 4.3.</A></LI>
|
||||
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf">
|
||||
Adobe PostScript Language Reference, Third Edition.</A></LI>
|
||||
<LI>Adobe PostScript Printer Description File Format Specification,
|
||||
Version 4.3. </LI>
|
||||
<LI>Adobe PostScript Language Reference, Third Edition. </LI>
|
||||
<LI>IPP: Job and Printer Set Operations </LI>
|
||||
<LI>IPP/1.1: Encoding and Transport </LI>
|
||||
<LI>IPP/1.1: Implementers Guide </LI>
|
||||
<LI>IPP/1.1: Model and Semantics </LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc1179.txt">RFC 1179, Line
|
||||
Printer Daemon Protocol</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2567.txt">RFC 2567, Design
|
||||
Goals for an Internet Printing Protocol</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2568.txt">RFC 2568, Rationale
|
||||
for the Structure of the Model and Protocol</A> for the Internet
|
||||
Printing Protocol</LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2569.txt">RFC 2569, Mapping
|
||||
between LPD and IPP Protocols</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616, Hypertext
|
||||
Transfer Protocol -- HTTP/1.1</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2617.txt">RFC 2617, HTTP
|
||||
Authentication: Basic and Digest Access</A> Authentication </LI>
|
||||
<LI>RFC 1179, Line Printer Daemon Protocol </LI>
|
||||
<LI>RFC 2567, Design Goals for an Internet Printing Protocol </LI>
|
||||
<LI>RFC 2568, Rationale for the Structure of the Model and Protocol
|
||||
for the Internet Printing Protocol </LI>
|
||||
<LI>RFC 2569, Mapping between LPD and IPP Protocols </LI>
|
||||
<LI>RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1 </LI>
|
||||
<LI>RFC 2617, HTTP Authentication: Basic and Digest Access
|
||||
Authentication </LI>
|
||||
</UL>
|
||||
<H1><A NAME="3">3 Overview</A></H1>
|
||||
<P>CUPS 1.1 implements IPP/1.1 and the operations and attributes
|
||||
@@ -1165,16 +1156,8 @@ files. The default value is 0. </P>
|
||||
<P><I>(CUPS 1.1 and higher)</I></P>
|
||||
<P>The job-billing attribute provides a text value to associate with a
|
||||
job for billing purposes. </P>
|
||||
<H3><A NAME="5_2_9">5.2.9 job-hold-until (keyword | name(MAX))</A></H3>
|
||||
<P><I>(CUPS 1.1 and higher)</I></P>
|
||||
<P>The job-hold-until attribute specifies a hold time. In addition to
|
||||
the standard IPP/1.1 keyword names, CUPS supports name values of the
|
||||
form "HH:MM" and "HH:MM:SS" that specify a hold time. The hold time is
|
||||
in Greenwich Mean Time (GMT) and <I>not</I> in the local time zone. If
|
||||
the specified time is less than the current time, the job is held until
|
||||
the next day. </P>
|
||||
<H3><A NAME="5_2_10">5.2.10 job-sheets (1setof type3 keyword |
|
||||
name(MAX))</A></H3>
|
||||
<H3><A NAME="5_2_9">5.2.9 job-sheets (1setof type3 keyword | name(MAX))</A>
|
||||
</H3>
|
||||
<P><I>(CUPS 1.1 and higher)</I></P>
|
||||
<P>The job-sheets attribute specifies one or two banner files that are
|
||||
printed before and after a job. The reserved value of "none" disables
|
||||
@@ -1183,71 +1166,51 @@ attribute. </P>
|
||||
<P>If only one value is supplied, the banner file is printed before the
|
||||
job. If two values are supplied, the first value is used as the
|
||||
starting banner file and the second as the ending banner file. </P>
|
||||
<H3><A NAME="5_2_11">5.2.11 lpi (type2 enum)</A></H3>
|
||||
<H3><A NAME="5_2_10">5.2.10 lpi (type2 enum)</A></H3>
|
||||
<P>The lpi attribute specifies the number of lines per inch when
|
||||
printing text files. Only the values 6 and 8 are currently supported.
|
||||
The default value is 6. </P>
|
||||
<H3><A NAME="5_2_12">5.2.12 page-bottom (integer(0:MAX))</A></H3>
|
||||
<H3><A NAME="5_2_11">5.2.11 page-bottom (integer(0:MAX))</A></H3>
|
||||
<P>The page-bottom attribute specifies the bottom margin in points (72
|
||||
points equals 1 inch). The default value is the device physical margin. </P>
|
||||
<H3><A NAME="5_2_13">5.2.13 page-left (integer(0:MAX))</A></H3>
|
||||
<H3><A NAME="5_2_12">5.2.12 page-left (integer(0:MAX))</A></H3>
|
||||
<P>The page-left attribute specifies the left margin in points (72
|
||||
points equals 1 inch). The default value is the device physical margin. </P>
|
||||
<H3><A NAME="5_2_14">5.2.14 page-right (integer(0:MAX))</A></H3>
|
||||
<H3><A NAME="5_2_13">5.2.13 page-right (integer(0:MAX))</A></H3>
|
||||
<P>The page-right attribute specifies the right margin in points (72
|
||||
points equals 1 inch). The default value is the device physical margin. </P>
|
||||
<H3><A NAME="5_2_15">5.2.15 page-set (type2 keyword)</A></H3>
|
||||
<H3><A NAME="5_2_14">5.2.14 page-set (type2 keyword)</A></H3>
|
||||
<P>The page-set attribute specifies which pages to print in a file. The
|
||||
supported keywords are "all", "even", and "odd". The default value is
|
||||
"all". </P>
|
||||
<H3><A NAME="5_2_16">5.2.16 page-top (integer(0:MAX))</A></H3>
|
||||
<H3><A NAME="5_2_15">5.2.15 page-top (integer(0:MAX))</A></H3>
|
||||
<P>The page-top attribute specifies the top margin in points (72 points
|
||||
equals 1 inch). The default value is the device physical margin. </P>
|
||||
<H3><A NAME="5_2_17">5.2.17 penwidth (integer(0:MAX))</A></H3>
|
||||
<H3><A NAME="5_2_16">5.2.16 penwidth (integer(0:MAX))</A></H3>
|
||||
<P>The penwidth attribute specifies the default pen width in
|
||||
micrometers when printing HP-GL/2 plot files. The default value is 1000
|
||||
(1 millimeter). </P>
|
||||
<H3><A NAME="5_2_18">5.2.18 position (type2 keyword)</A></H3>
|
||||
<P>The position attribute specifies the location of image files on the
|
||||
media. The following keyword values are recognized: </P>
|
||||
<UL>
|
||||
<LI><CODE>center</CODE> - Center the image on the page (default) </LI>
|
||||
<LI><CODE>top</CODE> - Print the image centered at the top of the page </LI>
|
||||
<LI><CODE>left</CODE> - Print the image centered on the left of page </LI>
|
||||
<LI><CODE>right</CODE> - Print the image centered on the right of the
|
||||
page </LI>
|
||||
<LI><CODE>top-left</CODE> - Print the image at the top left corner of
|
||||
the page </LI>
|
||||
<LI><CODE>top-right</CODE> - Print the image at the top right corner of
|
||||
the page </LI>
|
||||
<LI><CODE>bottom</CODE> - Print the image centered at the bottom of
|
||||
the page </LI>
|
||||
<LI><CODE>bottom-left</CODE> - Print the image at the bottom left
|
||||
corner of the page </LI>
|
||||
<LI><CODE>bottom-right</CODE> - Print the image at the bottom right
|
||||
corner of the page </LI>
|
||||
</UL>
|
||||
<H3><A NAME="5_2_19">5.2.19 ppi (integer(1:MAX))</A></H3>
|
||||
<H3><A NAME="5_2_17">5.2.17 ppi (integer(1:MAX))</A></H3>
|
||||
<P>The ppi attribute specifies the resolution of an image file in
|
||||
pixels per inch. The default value is the resolution included with the
|
||||
file or 128 if no resolution information is available. </P>
|
||||
<H3><A NAME="5_2_20">5.2.20 prettyprint (boolean)</A></H3>
|
||||
<H3><A NAME="5_2_18">5.2.18 prettyprint (boolean)</A></H3>
|
||||
<P>The prettyprint attribute specifies whether text files should be
|
||||
printed with a shaded header and keyword highlighting
|
||||
(prettyprint=true) or without additional formatting
|
||||
(prettyprint=false). The default value is false. </P>
|
||||
<H3><A NAME="5_2_21">5.2.21 saturation (integer(0:200))</A></H3>
|
||||
<H3><A NAME="5_2_19">5.2.19 saturation (integer(0:200))</A></H3>
|
||||
<P>The saturation attribute specifies the color saturation when
|
||||
printing image files. A saturation of 100 is normal, while values of 50
|
||||
and 200 will be half and twice as colorful, respectively. The default
|
||||
value is 100. </P>
|
||||
<H3><A NAME="5_2_22">5.2.22 scaling (integer(1:1000))</A></H3>
|
||||
<H3><A NAME="5_2_20">5.2.20 scaling (integer(1:1000))</A></H3>
|
||||
<P>The scaling attribute specifies the scaling of image files with
|
||||
respect to the selected media. A value of 100 specifies that the image
|
||||
file should fit 100% of the page, or as much as possible given the
|
||||
image dimensions. The default value is unspecified. </P>
|
||||
<P>The scaling attribute overrides the ppi attribute if specified. </P>
|
||||
<H3><A NAME="5_2_23">5.2.23 wrap (boolean)</A></H3>
|
||||
<H3><A NAME="5_2_21">5.2.21 wrap (boolean)</A></H3>
|
||||
<P>The wrap attribute specifies whether long lines should be wrapped
|
||||
(wrap=true) or not (wrap=false) when printing text files. The default
|
||||
value is true. </P>
|
||||
@@ -1388,7 +1351,7 @@ the same element of the member-names attribute. </P>
|
||||
<DT>HP-GL </DT>
|
||||
<DD>Hewlett-Packard Graphics Language </DD>
|
||||
<DT>HP-PCL </DT>
|
||||
<DD>Hewlett-Packard Page Control Language </DD>
|
||||
<DD>Hewlett-Packard Printer Control Language </DD>
|
||||
<DT>HP-PJL </DT>
|
||||
<DD>Hewlett-Packard Printer Job Language </DD>
|
||||
<DT>IETF </DT>
|
||||
@@ -1401,6 +1364,8 @@ the same element of the member-names attribute. </P>
|
||||
<DD>Line Printer Daemon </DD>
|
||||
<DT>MIME </DT>
|
||||
<DD>Multimedia Internet Mail Exchange </DD>
|
||||
<DT>PCL </DT>
|
||||
<DD>Page Control Language </DD>
|
||||
<DT>PPD </DT>
|
||||
<DD>PostScript Printer Description </DD>
|
||||
<DT>SMB </DT>
|
||||
|
||||
+1161
-1223
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
@@ -1589,17 +1589,6 @@ files. The default value is 0.
|
||||
<P>The job-billing attribute provides a text value to associate with a job
|
||||
for billing purposes.
|
||||
|
||||
<H3>job-hold-until (keyword | name(MAX))</H3>
|
||||
|
||||
<P><I>(CUPS 1.1 and higher)</I>
|
||||
|
||||
<P>The job-hold-until attribute specifies a hold time. In addition to the
|
||||
standard IPP/1.1 keyword names, CUPS supports name values of the form
|
||||
"HH:MM" and "HH:MM:SS" that specify a hold time. The hold time is in
|
||||
Greenwich Mean Time (GMT) and <I>not</I> in the local time zone. If the
|
||||
specified time is less than the current time, the job is held until the
|
||||
next day.
|
||||
|
||||
<H3>job-sheets (1setof type3 keyword | name(MAX))</H3>
|
||||
|
||||
<P><I>(CUPS 1.1 and higher)</I>
|
||||
@@ -1649,38 +1638,6 @@ equals 1 inch). The default value is the device physical margin.
|
||||
<P>The penwidth attribute specifies the default pen width in micrometers
|
||||
when printing HP-GL/2 plot files. The default value is 1000 (1 millimeter).
|
||||
|
||||
<H3>position (type2 keyword)</H3>
|
||||
|
||||
<P>The position attribute specifies the location of image files on the
|
||||
media. The following keyword values are recognized:
|
||||
|
||||
<UL>
|
||||
|
||||
<LI><CODE>center</CODE> - Center the image on the page (default)
|
||||
|
||||
<LI><CODE>top</CODE> - Print the image centered at the top of the page
|
||||
|
||||
<LI><CODE>left</CODE> - Print the image centered on the left of page
|
||||
|
||||
<LI><CODE>right</CODE> - Print the image centered on the right of the page
|
||||
|
||||
<LI><CODE>top-left</CODE> - Print the image at the top left corner of
|
||||
the page
|
||||
|
||||
<LI><CODE>top-right</CODE> - Print the image at the top right corner of
|
||||
the page
|
||||
|
||||
<LI><CODE>bottom</CODE> - Print the image centered at the bottom of
|
||||
the page
|
||||
|
||||
<LI><CODE>bottom-left</CODE> - Print the image at the bottom left
|
||||
corner of the page
|
||||
|
||||
<LI><CODE>bottom-right</CODE> - Print the image at the bottom right
|
||||
corner of the page
|
||||
|
||||
</UL>
|
||||
|
||||
<H3>ppi (integer(1:MAX))</H3>
|
||||
|
||||
<P>The ppi attribute specifies the resolution of an image file in pixels
|
||||
|
||||
+155
-363
@@ -8,13 +8,12 @@
|
||||
<TABLE WIDTH="100%">
|
||||
<TR VALIGN=TOP>
|
||||
<TD><IMG SRC="images/cups-large.gif" WIDTH="103" HEIGHT="120"></TD>
|
||||
<TD><H1 ALIGN="RIGHT">An Overview of the<BR>
|
||||
Common UNIX Printing System,<BR>
|
||||
Version 1.1</H1>
|
||||
<TD><H1 ALIGN=right>An Overview of the<BR>
|
||||
Common UNIX Printing System</H1></DIV>
|
||||
|
||||
<P ALIGN="RIGHT">July 10, 2000<BR>
|
||||
<P ALIGN=right>October 4, 1999<BR>
|
||||
Michael Sweet, Easy Software Products<BR>
|
||||
Copyright 1998-2000, All Rights Reserved.</P>
|
||||
Copyright 1998-1999, All Rights Reserved.</P>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
@@ -22,84 +21,124 @@
|
||||
<P>This whitepaper describes the Common UNIX Printing
|
||||
System<SUP>TM</SUP> ("CUPS<SUP>TM</SUP>"), a portable and extensible
|
||||
printing system for UNIX<SUP>®</SUP>. CUPS is being developed by
|
||||
<A HREF="http://www.easysw.com">Easy Software Products</A>, a software
|
||||
firm located in Hollywood, Maryland that has been selling commercial
|
||||
software for UNIX since 1993 through more than 40 distributors serving
|
||||
over 80 countries worldwide.
|
||||
Easy Software Products, a software firm located in Hollywood, Maryland
|
||||
that has been selling commercial software for Silicon
|
||||
Graphics<SUP>®</SUP>, Sun<SUP>®</SUP>, and HP workstations
|
||||
since 1993 through more than 40 distributors serving over 80 countries
|
||||
worldwide.
|
||||
|
||||
<P>Additional information on CUPS is available on the World Wide Web at
|
||||
"<A HREF="http://www.cups.org">http://www.cups.org</A>".
|
||||
|
||||
<H2>Background</H2>
|
||||
|
||||
<P>Printing within UNIX has historically been done using one of two
|
||||
Printing within UNIX has historically been done using one of two
|
||||
printing systems - the Berkeley Line Printer Daemon ("LPD") [RFC1179]
|
||||
and the AT&T Line Printer system. These printing systems were
|
||||
designed in the 70's for printing text to line printers; vendors have
|
||||
since added varying levels of support for other types of printers.
|
||||
|
||||
<P>Replacements for these printing systems have emerged [LPRng,
|
||||
Palladin, PLP], however none of the replacements change the fundamental
|
||||
capabilities of these systems.
|
||||
and the AT&T Line Printer system. Replacements for these printing
|
||||
systems have emerged [LPRng, Palladin, PLP], however none of the
|
||||
replacements change the fundamental capabilities of these systems.
|
||||
|
||||
<P>Over the last few years several attempts at developing a standard
|
||||
printing interface have been made, including the draft POSIX Printing
|
||||
standard developed by the Institute of Electrical and Electronics
|
||||
Engineers, Inc. ("IEEE") [IEEE-1387.4] and Internet Printing Protocol
|
||||
("IPP") developed by the Internet Engineering Task Force ("IETF")
|
||||
through the Printer Working Group ("PWG") [IETF-IPP]. The POSIX
|
||||
printing standard defines a common set of command-line tools as well as
|
||||
a C interface for printer administration and print jobs, but has been
|
||||
shelved by the IEEE.
|
||||
standard [IEEE-1387.4, last updated in 1994] and Internet Printing
|
||||
Protocol [IETF-IPP]. The POSIX printing standard defines a common set
|
||||
of command-line tools as well as a C interface for printer
|
||||
administration and print jobs. The Internet Printing Protocol defines
|
||||
extensions to the HyperText Transport Protocol 1.1 [RFC2068] to provide
|
||||
support for remote printing services.
|
||||
|
||||
<P>The Internet Printing Protocol defines extensions to the HyperText
|
||||
Transport Protocol 1.1 [RFC2616] to provide support for remote printing
|
||||
services. IPP/1.0 was accepted by the IETF as an experimental Request
|
||||
For Comments [RFC] document in October of 1999. Since then the Printer
|
||||
Working Group has developed an updated set of specifications for
|
||||
IPP/1.1 which have been accepted by the IETF and are awaiting
|
||||
publication as proposed standards. Unlike POSIX Printing, IPP enjoys
|
||||
widespread industry support and is poised to become the standard
|
||||
network printing solution for all operating systems.
|
||||
<H2>Weaknesses in Existing Printing Systems</H2>
|
||||
|
||||
<P>CUPS uses IPP/1.1 to provide a complete, modern printing system for
|
||||
UNIX that can be extended to support new printers, devices, and
|
||||
protocols while providing compatibility with existing UNIX
|
||||
applications. CUPS is free software provided under the terms of the
|
||||
GNU General Public License and GNU Library General Public License.
|
||||
Easy Software Products has identified several major weaknesses in
|
||||
the printing systems currently in use:
|
||||
|
||||
<H2>History</H2>
|
||||
<OL>
|
||||
|
||||
<P>The first production release of CUPS (based on IPP/1.0) was released
|
||||
in October of 1999. Since then, we have released several patch updates
|
||||
to the original CUPS 1.0 release that addressed security, portability,
|
||||
and bugs found, but no new functionality was added to improve the
|
||||
stability of the CUPS code.
|
||||
<LI>Users must print text or Adobe<SUP>®</SUP>
|
||||
PostScript<SUP>TM</SUP> files; other formats <I>may</I> be
|
||||
supported, but not universally.
|
||||
|
||||
<P>CUPS 1.1 is based on IPP/1.1 and adds many of the functional
|
||||
enhancements that have been requested by our users. As with 1.0, CUPS
|
||||
1.1 will be followed by patch releases that address any problems found
|
||||
with the software but add no new features.
|
||||
<LI>Lack of a standard command-line interface; each operating
|
||||
system and driver package provides different command-line
|
||||
options, e.g. setting the media size with one driver may
|
||||
involve passing a single option ("letter") while another
|
||||
requires two ("mediasize letter").
|
||||
|
||||
<LI>Lack of a standard application interface; most UNIX
|
||||
applications either do not provide an interface for sending
|
||||
printer options, or restrict the options to those in printer
|
||||
description files supplied with the application.
|
||||
|
||||
<LI>Remote printing problems; no vendor seems to use the same
|
||||
remote printing protocol (many use an "enhanced" version of the
|
||||
LPD protocol with vendor-specific extensions).
|
||||
|
||||
<LI>Client printer administration hassles; most vendors
|
||||
require that you install remote printers on each client by
|
||||
hand, and many do not even provide the ability to browse
|
||||
printers on the "server" system.
|
||||
|
||||
<LI>Drivers typically are hardcoded to handle printing to
|
||||
parallel or serial printers; support for other types of
|
||||
interfaces or networking protocols requires that a driver be
|
||||
rewritten to support them.
|
||||
|
||||
<LI>Security, accounting, and quotas; most printing systems do
|
||||
not support access control lists ("ACLs"), and printer
|
||||
accounting and quotas are not well supported, if at all.
|
||||
|
||||
</OL>
|
||||
|
||||
<H2>Goals of CUPS</H2>
|
||||
|
||||
The basic goals of CUPS are:
|
||||
|
||||
<OL>
|
||||
|
||||
<LI>Provide standard support for text (US ASCII, UTF-8, and
|
||||
ISO-8859-x), Adobe PostScript, PDF, HP-GL/2, TIFF, JPEG, PNG,
|
||||
PBM, PGM, PPM, GIF, SGI RGB, Sun Raster, and Kodak
|
||||
PhotoCD<SUP>TM</SUP> files.
|
||||
|
||||
<LI>Provide a standard command-line interface with a standard
|
||||
minimum set of options (media size and so forth).
|
||||
|
||||
<LI>Provide a standard application interface.
|
||||
|
||||
<LI>Provide a common remote printing interface (IPP).
|
||||
|
||||
<LI>Provide a printer browsing interface and allow users to
|
||||
print to remote printers using a "printer@server" notation
|
||||
rather than adding the printer locally.
|
||||
|
||||
<LI>Provide a scheduler extension interface to support
|
||||
different interfaces separate from the printer driver (e.g.
|
||||
serial, parallel, lpd, tftp, ipp, etc.)
|
||||
|
||||
<LI>Provide a standard interface for ACLs, quotas, accounting,
|
||||
and logging.
|
||||
|
||||
</OL>
|
||||
|
||||
<H2>Design Overview</H2>
|
||||
|
||||
<P>Like most printing systems, CUPS is designed around a central print
|
||||
Like most printing systems, CUPS is designed around a central print
|
||||
scheduling process that dispatches print jobs, processes administrative
|
||||
commands, provides printer status information to local and remote
|
||||
programs, and informs users as needed. Figure 1 shows the basic
|
||||
organization of CUPS.
|
||||
|
||||
<CENTER><IMG SRC="images/cups-block-diagram.gif" WIDTH="470" HEIGHT="170"></CENTER>
|
||||
<P ALIGN="CENTER">Figure 1 - CUPS Block Diagram</P>
|
||||
<P ALIGN=CENTER><IMG SRC="images/cups-block-diagram.gif" WIDTH="540" HEIGHT="200">
|
||||
<BR>Figure 1 - CUPS Block Diagram
|
||||
|
||||
<H3>Scheduler</H3>
|
||||
|
||||
<P>The scheduler is a HTTP/1.1 server application that handles HTTP
|
||||
The scheduler is a HTTP/1.1 server application that handles HTTP
|
||||
requests. Besides handling printer requests via IPP POST requests, the
|
||||
scheduler also acts as a full-featured web server for documentation,
|
||||
status monitoring, and administration.
|
||||
scheduler also acts as a full-featured web server for documentation and
|
||||
status monitoring.
|
||||
|
||||
<P>The scheduler also manages a list of available printers on the LAN
|
||||
<P>The scheduler also monitors the LAN for printer browsing information
|
||||
and dispatches print jobs as needed using the appropriate filters and
|
||||
backends.
|
||||
|
||||
@@ -109,17 +148,17 @@ The configuration files consist of:
|
||||
|
||||
<UL>
|
||||
|
||||
<LI>The HTTP server configuration file.
|
||||
<LI>A HTTP server configuration file.
|
||||
|
||||
<LI>Printer and class definition files.
|
||||
|
||||
<LI>MIME type and conversion rule files.
|
||||
|
||||
<LI>PostScript Printer Description ("PPD") files.
|
||||
<LI>PostScript Printer Description (PPD) files.
|
||||
|
||||
</UL>
|
||||
|
||||
<P>The HTTP server configuration file is purposely similar to the
|
||||
The HTTP server configuration file is purposely similar to the
|
||||
Apache server configuration file and defines all of the access control
|
||||
properties for the server.
|
||||
|
||||
@@ -132,323 +171,77 @@ class, round-robin fashion.
|
||||
application/postscript, etc.) and "magic" rules for automatically
|
||||
detecting the format of a file. These are used by the HTTP server to
|
||||
determine the <I>Content-Type</I> field for <I>GET</I> and <I>HEAD</I>
|
||||
requests and by the IPP request handler to determine the file type
|
||||
when a <I>Print-Job</I> or <I>Send-File</I> request is received with a
|
||||
requests, and by the IPP request handler to determine the file type
|
||||
when a <I>Print-Job</I> request is received with a
|
||||
<I>document-format</I> of <I>application/octet-stream</I>.
|
||||
|
||||
<P>The MIME conversion rule files list the available filters. The
|
||||
filters are used when a job is dispatched so that an application can
|
||||
send a convenient file format to the printing system which then
|
||||
converts the document into a printable format as needed. Each filter
|
||||
has a relative cost associated with it, and the filtering algorithm
|
||||
chooses the set of filters that will convert the file to the needed
|
||||
format with the lowest total "cost".
|
||||
<P>The MIME conversion rule files list the available filters. These
|
||||
files are augmented by <I>cupsFilter</I> entries in the printer PPD
|
||||
files. The filters are used when a job is dispatched so that an
|
||||
application can send a convenient file format to the printing system
|
||||
which then converts the document into a printable format as needed.
|
||||
Each filter has a relative cost associated with it, and the filtering
|
||||
algorithm chooses the set of filters that will convert the file to the
|
||||
needed format with the lowest total "cost".
|
||||
|
||||
<P>The PPD files describe the capabilities of all printers, not just
|
||||
PostScript printers. There is one PPD file for each printer. PPD files
|
||||
for non-PostScript printers define additional filters through
|
||||
<I>cupsFilter</I> attributes to support printer drivers.
|
||||
<P>The PPD files describe the capabilities of PostScript printers.
|
||||
There is one PPD file for each printer.
|
||||
|
||||
<H3>CUPS API</H3>
|
||||
<H3>CUPS Interface Library</H3>
|
||||
|
||||
<P>The CUPS API contains CUPS-specific convenience functions for queuing
|
||||
print jobs, getting printer information, accessing resources via HTTP
|
||||
and IPP, and manipulating PPD files. Unlike the rest of CUPS, the CUPS
|
||||
API is provided under the terms of the GNU LGPL so it may be used by
|
||||
non-GPL applications.
|
||||
|
||||
<H3>Berkeley and System V Commands</H3>
|
||||
|
||||
<P>CUPS provides the System V and Berkeley command-line interfaces for
|
||||
submitting jobs and checking the printer status. The
|
||||
<CODE>lpstat</CODE> and <CODE>lpc status</CODE> commands also show
|
||||
network printers ("printer@server") when printer browsing is enabled.
|
||||
|
||||
<P>The System V administation commands are supplied for managing
|
||||
printers and classes. The Berkeley printer administration tool
|
||||
(<CODE>lpc</CODE>) is only supported in a "read-only" mode to check the
|
||||
current status of the printer queues and scheduler.
|
||||
The CUPS interface library contains CUPS-specific convenience functions
|
||||
for queuing print jobs, etc. It also contains functions to access
|
||||
resources via HTTP and IPP, perform MIME typing and conversion, and
|
||||
manipulate PPD files.
|
||||
|
||||
<H3>Filters</H3>
|
||||
|
||||
<P>A filter program reads from the standard input or from a file if a
|
||||
A filter program reads from the standard input or from a file if a
|
||||
filename is supplied. All filters must support a common set of options
|
||||
including printer name, job ID, username, job title, number of copies,
|
||||
and job options. All output is sent to the standard output.
|
||||
|
||||
<P>Filters are provided for many file formats and include image file
|
||||
and PostScript raster filters that support non-PostScript printers. Multiple
|
||||
filters are run in parallel to produce the required output format.
|
||||
|
||||
<P>The PostScript raster filter is based on the GNU Ghostscript 5.50
|
||||
core. Instead of using the Ghostscript printer drivers and front-end,
|
||||
the CUPS filter uses a generic raster printer driver and CUPS-compliant
|
||||
front-end to support any kind of raster printer. This allows the same
|
||||
printer driver filter to be used for printing raster data from any
|
||||
filter.
|
||||
|
||||
<H3>CUPS Imaging</H3>
|
||||
|
||||
<P>The CUPS Imaging library provides functions for managing large
|
||||
images, doing colorspace conversion and color management, scaling
|
||||
images for printing, and managing raster page streams. It is used by
|
||||
the CUPS image file filters, the PostScript RIP, and all raster
|
||||
printers drivers.
|
||||
|
||||
<H3>Backends</H3>
|
||||
|
||||
<P>A backend program is a special filter that sends print data to a
|
||||
device or network connection. Backends for parallel, serial, USB, LPD, IPP,
|
||||
and AppSocket (JetDirect) connections are provided in CUPS 1.1.
|
||||
|
||||
<P>SAMBA version 2.0.6 and higher includes a SMB backend
|
||||
(<CODE>smbspool(1)</CODE>) that can be used with CUPS 1.0 or 1.1 for
|
||||
printing to Windows.
|
||||
|
||||
<H2>Network Printing</H2>
|
||||
|
||||
<P>Traditionally, network printing has been one of the hardest things to
|
||||
get working under UNIX. One reason is because each vendor added their
|
||||
own extensions to the LPD protocol (the previous standard for network
|
||||
printing), making cross-platform printing difficult if not impossible.
|
||||
|
||||
<P>Another reason is that you have to administer every network printer
|
||||
on every client machine. In some cases you can "clone" the printer
|
||||
configuration from a "master" client to each of the others, but even
|
||||
that can be time-consuming and error-prone. Something better is needed.
|
||||
|
||||
<P>CUPS provides "printer browsing", which allows clients to
|
||||
automatically see and use printers from any server on a LAN. This means
|
||||
that you only need to configure the server and the clients will
|
||||
automatically see the printers and classes on it.
|
||||
|
||||
<P>In addition, CUPS can automatically merge multiple identical network
|
||||
printers into "implicit classes". This allows clients to send jobs to
|
||||
the implicit class and have them print on the first available printer
|
||||
or server. In addition, failsafe and load-balancing functions are
|
||||
enabled simply by defining the same printer on multiple servers!
|
||||
|
||||
<H2>New Features in CUPS 1.1</H2>
|
||||
|
||||
<P>CUPS 1.1 includes many new features and capabilities:
|
||||
|
||||
<OL>
|
||||
|
||||
<LI><A HREF="#BACKENDS">Backends</A>
|
||||
|
||||
<LI><A HREF="#BANNERS">Banner Page Support</A>
|
||||
|
||||
<LI><A HREF="#DIGEST">Digest Authentication</A>
|
||||
|
||||
<LI><A HREF="#DIRSVC">Directory Services</A>
|
||||
|
||||
<LI><A HREF="#FHS2">Directory Structure Changes</A>
|
||||
|
||||
<LI><A HREF="#DOCOS">Documentation</A>
|
||||
|
||||
<LI><A HREF="#DRIVERS">Drivers</A>
|
||||
|
||||
<LI><A HREF="#FILTERS">Filters</A>
|
||||
|
||||
<LI><A HREF="#IPP">IPP Support</A>
|
||||
|
||||
<LI><A HREF="#PERSISTENCE">Job Persistence</A>
|
||||
|
||||
<LI><A HREF="#LPD">LPD Client Support</A>
|
||||
|
||||
<LI><A HREF="#USEROPTS">User-Defined Printers and Options</A>
|
||||
|
||||
<LI><A HREF="#WEB">Web Administration Interface</A>
|
||||
|
||||
</OL>
|
||||
|
||||
<H3><A NAME="BACKENDS">1. Backends</A></H3>
|
||||
|
||||
<P>CUPS 1.1 implements a new backend interface for retrieving a list of
|
||||
available devices for CUPS clients. This allows administration
|
||||
interfaces to query the CUPS scheduler for a list of available devices,
|
||||
automatically configure printers if the device identification
|
||||
information is available, and present the user with a list of available
|
||||
devices rather than relying on the user to know what devices are
|
||||
configured on the system.
|
||||
|
||||
<P>The new release also includes a backend for USB printers under
|
||||
*BSD and Linux. Support for USB under Solaris 8 will be provided in
|
||||
a subsequent patch release.
|
||||
|
||||
<H3><A NAME="BANNERS">2. Banner Page Support</A></H3>
|
||||
|
||||
<P>CUPS 1.1 includes support for banner pages at the beginning and end
|
||||
of a job. Banner pages may be of any file format and support variable
|
||||
substitution for job titles, usernames, etc. Default banner pages are
|
||||
associated with each printer and can be overridden with command-line
|
||||
options by the user.
|
||||
|
||||
<H3><A NAME="DIGEST">3. Digest Authentication</A></H3>
|
||||
|
||||
<P>Digest authentication provides a more secure method of authenticating
|
||||
access to the printing system. Unlike Basic authentication, Digest
|
||||
authentication does not send passwords "in the clear" so it is more
|
||||
difficult to gain unauthorized access to your system.
|
||||
|
||||
<P>CUPS 1.1 implements Digest authentication using a special MD5
|
||||
password file instead of the UNIX password file. This file is managed
|
||||
using the new <CODE>lppasswd</CODE> command.
|
||||
|
||||
<H3><A NAME="DIRSVC">4. Directory Services</A></H3>
|
||||
|
||||
<P>CUPS 1.1 adds new directory service ("printer browsing") features to
|
||||
make using CUPS on large LANs and WANs easier. You can now poll a
|
||||
remote server for printer information and relay it to the LAN as well
|
||||
as restrict what printer information is processed (e.g. to "hide"
|
||||
servers, domains, or networks that you don't want to see.)
|
||||
|
||||
<H3><A NAME="FHS2">5. Directory Structure Changes</A></H3>
|
||||
|
||||
<P>CUPS 1.1 now uses a directory structure that complies with the
|
||||
Filesystem Hierarchy Standard ("FHS"), version 2.0. This should make
|
||||
integration into existing Linux and *BSD distributions a lot easier.
|
||||
|
||||
<H3><A NAME="DOCOS">6. Documentation</A></H3>
|
||||
|
||||
<P>The CUPS 1.1 documentation has gone through many revisions,
|
||||
including a completely rewritten administrators manual, a new
|
||||
programmers manual, and an IPP implementation reference manual.
|
||||
|
||||
<H3><A NAME="DRIVERS">7. Drivers</A></H3>
|
||||
|
||||
<P>CUPS 1.1 includes drivers for EPSON dot-matrix and inkjet printers.
|
||||
As with the HP PCL drivers, the EPSON drivers don't necessarily provide
|
||||
the best possible output for each printer but should provide adequate
|
||||
printing quality for general day-to-day printing.
|
||||
|
||||
<H3><A NAME="FILTERS">8. Filters</A></H3>
|
||||
|
||||
<P>CUPS 1.1 includes new image, PostScript, PDF, and text filters. The image
|
||||
filters have been upgraded to support Windows BMP and Alias PIX files.
|
||||
|
||||
<P>The PostScript filter is now based off GNU Ghostscript 5.50. The new
|
||||
filter provides much better performance with higher-resolution printers
|
||||
and supports most Level 3 PostScript language features.
|
||||
|
||||
<P>The new PDF filter is based off the excellent Xpdf software from
|
||||
Derek Noonburg and supports automatic page scaling. The new filter is a
|
||||
faster, smaller, more reliable replacement for the GNU Ghostscript PDF
|
||||
filtering that was used in CUPS 1.0.
|
||||
|
||||
<P>The new text filter now supports bidirectional text and can embed
|
||||
fonts as needed.
|
||||
|
||||
<H3><A NAME="IPP">9. IPP Support</A></H3>
|
||||
|
||||
<P>Probably the least visible portion of CUPS is the IPP support. CUPS
|
||||
1.1 implements all of the required IPP/1.1 operations and attributes
|
||||
and most of the optional ones. The optional Create-Job and Send-File
|
||||
operations are now implemented, allowing for better System V printing
|
||||
system compatibility (one job ID per <CODE>lp</CODE> command) and
|
||||
support for banner pages.
|
||||
|
||||
<H3><A NAME="PERSISTENCE">10. Job Persistence</A></H3>
|
||||
|
||||
<P>CUPS 1.1 supports job persistence. This means that jobs are preserved
|
||||
even after a reboot, a feature that was sorely missing from CUPS 1.0.
|
||||
|
||||
<P>In addition, CUPS 1.1 allows you to keep job information after the
|
||||
job has printed. The basic post-job persistence mode provides a job
|
||||
history (number of pages printed, time job was printed, etc.) but does
|
||||
not preserve the actual job files. This can be changed to discard all
|
||||
information after a job is printed or keep the job files after printing
|
||||
so you can reprint a job at some later time.
|
||||
|
||||
<H3><A NAME="LPD">11. LPD Client Support</A></H3>
|
||||
|
||||
<P>By popular request, CUPS 1.1 supports LPD-based clients using a new
|
||||
mini-daemon that handles LPD requests and passes them on to the main
|
||||
server.
|
||||
|
||||
<H3><A NAME="USEROPTS">12. User-Defined Printers and Options</A></H3>
|
||||
|
||||
<P>CUPS 1.1 includes support for user-defined printers and options via
|
||||
a new <CODE>lpoptions</CODE> command. User-defined printers are special
|
||||
instances of the available printers (e.g. "printer/instance" or
|
||||
"printer@server/instance") that can have their own default options such
|
||||
as media size, resolution, and so forth. The <CODE>lpoptions</CODE>
|
||||
command can also be used to set a different default printer queue.
|
||||
|
||||
<H3><A NAME="WEB">13. Web Administration Interface</A></H3>
|
||||
|
||||
<P>CUPS 1.0 provided a simple class, job, and printer monitoring
|
||||
interface for web browsers. CUPS 1.1 replaces this interface with an
|
||||
enhanced administration interface that allows you to add, modify,
|
||||
delete, configure, and control classes, jobs, and printers.
|
||||
|
||||
<H2>Software Using CUPS</H2>
|
||||
|
||||
<P>A lot has happened since CUPS 1.0 came out, and many software packages
|
||||
are supporting CUPS. We have contributed code to the SAMBA team to support
|
||||
CUPS, and parts of that are already available in SAMBA 2.0.6 and 2.0.7.
|
||||
With any luck the final pieces that provide a complete integration with
|
||||
SAMBA will be available in the next release of SAMBA.
|
||||
|
||||
<P>Two graphical interfaces have appeared on the scene that use CUPS as
|
||||
well. The KUPS project provides a KDE-based interface for CUPS and can be
|
||||
found at:
|
||||
|
||||
<UL><PRE>
|
||||
<A HREF="http://kups.sourceforge.net">http://kups.sourceforge.net</A>
|
||||
</PRE></UL>
|
||||
|
||||
<P>The X Printing Panel ("XPP") project provides a graphical printing
|
||||
panel for CUPS and can be found at:
|
||||
|
||||
<UL><PRE>
|
||||
<A HREF="http://www.phy.uni-bayreuth.de/till/xpp">http://www.phy.uni-bayreuth.de/till/xpp/</A>
|
||||
</PRE></UL>
|
||||
|
||||
<P>Numerous other filters, drivers, tutorials, etc. have been made available
|
||||
on the CUPS bazaar, available at:
|
||||
|
||||
<UL><PRE>
|
||||
<A HREF="http://www.cups.org/bazaar.cgi">http://www.cups.org/bazaar.cgi</A>
|
||||
</PRE></UL>
|
||||
|
||||
<P>Finally, our own ESP Print Pro software uses CUPS to provide drivers
|
||||
for over 2300 printers and can be found at:
|
||||
|
||||
<UL><PRE>
|
||||
<A HREF="http://www.easysw.com/printpro">http://www.easysw.com/printpro</A>
|
||||
</PRE></UL>
|
||||
|
||||
<H2>Operating Systems Using CUPS</H2>
|
||||
|
||||
<P>One of our goals has always been to get as many UNIX/Linux
|
||||
distributions using CUPS as possible. Debian is currently providing
|
||||
CUPS as part of its stable distribution, and many other distributions
|
||||
are considering it in their next releases.
|
||||
A backend program is a special filter that writes incoming data to a
|
||||
device or network connection. Backends for serial, parallel, LPD,
|
||||
IPP, SMB, and AppSocket (JetDirect) connections are provided in
|
||||
CUPS 1.0.
|
||||
|
||||
<H2>Berkeley and System V Commands</H2>
|
||||
|
||||
CUPS provides the System V and Berkeley command-line interfaces
|
||||
for submitting jobs and checking the printer status. The "lpstat" and
|
||||
"lpc status" commands also show network printers ("printer@hostname")
|
||||
when printer browsing is enabled.
|
||||
|
||||
<P>The System V administation commands are supplied for managing
|
||||
printers local to the system. The Berkeley printer administration tool
|
||||
("lpc") is only supported in a "read-only" mode to check the current
|
||||
status of the printer queues and scheduler.
|
||||
|
||||
<H2>Summary</H2>
|
||||
|
||||
<P>The Common UNIX Printing System provides a modern printing interface
|
||||
The Common UNIX Printing System provides a modern printing interface
|
||||
for UNIX applications that is both flexible and user-friendly. The
|
||||
software provides System V and Berkeley compatible command-line
|
||||
interfaces to ensure compatibility with existing applications. CUPS 1.1
|
||||
adds many new features that make it an even better choice for printing
|
||||
under UNIX.
|
||||
interfaces to ensure compatibility with existing applications.
|
||||
|
||||
<H2>Who to Contact</H2>
|
||||
<H2>Licensing</H2>
|
||||
|
||||
<P>For more information on CUPS please contact us at:
|
||||
CUPS is available under the terms of the GNU General Public License
|
||||
which means that it is basically free except for binary-only
|
||||
distribution. Vendors wishing to license CUPS for their printing
|
||||
solution should contact Easy Software Products at:
|
||||
|
||||
<UL><PRE>
|
||||
Attn: CUPS Information
|
||||
Easy Software Products
|
||||
44141 Airport View Drive Suite 204
|
||||
<UL>
|
||||
<P>Attn: CUPS Licensing<BR>
|
||||
Easy Software Products<BR>
|
||||
44141 Airport View Drive Suite 204<BR>
|
||||
Hollywood, Maryland 20636-3111 USA
|
||||
|
||||
+1.301.373.9600
|
||||
|
||||
<A HREF="mailto:cups-info@cups.org">cups-info@cups.org</A>
|
||||
</PRE></UL>
|
||||
<P>+1.301.373.9600<BR>
|
||||
cups-info@cups.org
|
||||
</UL>
|
||||
|
||||
<H2>References</H2>
|
||||
|
||||
@@ -460,31 +253,30 @@ Hollywood, Maryland 20636-3111 USA
|
||||
|
||||
<DT><A HREF="http://www.pwg.org/ipp/index.html">IETF-IPP</A></DT>
|
||||
|
||||
<DD>Internet Printing Protocol/1.1</DD>
|
||||
<DD>Internet Printing Protocol/1.0</DD>
|
||||
|
||||
<DT><A HREF="http://www.astart.com/lprng.html">LPRng</A></DT>
|
||||
|
||||
<DD>An enhanced, extended, and portable implementation of the
|
||||
Berkeley LPR print spooler functionality</DD>
|
||||
<DD>An enhanced, extended, and portable implementation of the Berkeley LPR
|
||||
print spooler functionality</DD>
|
||||
|
||||
<DT>Palladin</DT>
|
||||
|
||||
<DD>A printing system developed at the Massachussetts Institute
|
||||
of Technology</DD>
|
||||
<DD>A printing system developed at the Massachussetts Institute of Technology</DD>
|
||||
|
||||
<DT><A HREF="http://www-usa.iona.com//hyplan/jmason/plp.html">PLP</A></DT>
|
||||
|
||||
<DD>The Portable Line Printer spooler system</DD>
|
||||
|
||||
<DT><A HREF="http://www.ietf.org/rfc/rfc1179.txt">RFC1179</A></DT>
|
||||
<DT><A HREF="http://www.cis.ohio-state.edu/rfc/rfc1179.txt">RFC1179</A></DT>
|
||||
|
||||
<DD>Line Printer Daemon Protocol</DD>
|
||||
|
||||
<DT><A HREF="http://www.ietf.org/rfc/rfc2046.txt">RFC2046</A></DT>
|
||||
<DT><A HREF="http://www.cis.ohio-state.edu/rfc/rfc2046.txt">RFC2046</A></DT>
|
||||
|
||||
<DD>Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types</DD>
|
||||
|
||||
<DT><A HREF="http://www.ietf.org/rfc/rfc2616.txt">RFC2616</A></DT>
|
||||
<DT><A HREF="http://www.cis.ohio-state.edu/rfc/rfc2068.txt">RFC2068</A></DT>
|
||||
|
||||
<DD>Hypertext Transfer Protocol -- HTTP/1.1</DD>
|
||||
|
||||
@@ -492,9 +284,9 @@ Hollywood, Maryland 20636-3111 USA
|
||||
|
||||
<H2>Trademarks</H2>
|
||||
|
||||
<P>The Common UNIX Printing System, CUPS, and the CUPS logo are the
|
||||
trademark property of Easy Software Products. All other trademarks are
|
||||
the property of their respective owners.
|
||||
The Common UNIX Printing System, CUPS, and the CUPS logo are
|
||||
trademarks of Easy Software Products. All other trademarks are the
|
||||
property of their respective owners.
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
Arquivo binário não exibido.
+12
-14
@@ -10,11 +10,11 @@
|
||||
<LI>CUPS-IPP-1.1: CUPS Implmentation of IPP
|
||||
<LI>CUPS-SAM-1.1.x: CUPS Software Administrators Manual
|
||||
<LI>CUPS-SDD-1.1: CUPS Software Design Description
|
||||
<LI>CUPS-SPM-1.1.x: CUPS Software Programming Manual
|
||||
<LI>CUPS-SPM-1.1: CUPS Software Programming Manual
|
||||
<LI>CUPS-SSR-1.1: CUPS Software Security Report
|
||||
<LI>CUPS-STP-1.1: CUPS Software Test Plan
|
||||
<LI>CUPS-SUM-1.1.x: CUPS Software Users Manual
|
||||
<LI>CUPS-SVD-1.1: CUPS Software Version Description
|
||||
<LI>CUPS-SVD-1.1.x: CUPS Software Version Description
|
||||
</UL>
|
||||
|
||||
<H2>Other Documents</H2>
|
||||
@@ -22,21 +22,19 @@
|
||||
<P>The following non-CUPS documents are referenced by this document:
|
||||
|
||||
<UL>
|
||||
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf">Adobe
|
||||
PostScript Printer Description File Format Specification,
|
||||
Version 4.3.</A>
|
||||
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf">Adobe
|
||||
PostScript Language Reference, Third Edition.</A>
|
||||
<LI>Adobe PostScript Printer Description File Format Specification,
|
||||
Version 4.3.
|
||||
<LI>Adobe PostScript Language Reference, Third Edition.
|
||||
<LI>IPP: Job and Printer Set Operations
|
||||
<LI>IPP/1.1: Encoding and Transport
|
||||
<LI>IPP/1.1: Implementers Guide
|
||||
<LI>IPP/1.1: Model and Semantics
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc1179.txt">RFC 1179, Line Printer Daemon Protocol</A>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2567.txt">RFC 2567, Design Goals for an Internet Printing Protocol</A>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2568.txt">RFC 2568, Rationale for the Structure of the Model and Protocol</A>
|
||||
for the Internet Printing Protocol</A>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2569.txt">RFC 2569, Mapping between LPD and IPP Protocols</A>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1</A>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2617.txt">RFC 2617, HTTP Authentication: Basic and Digest Access</A>
|
||||
<LI>RFC 1179, Line Printer Daemon Protocol
|
||||
<LI>RFC 2567, Design Goals for an Internet Printing Protocol
|
||||
<LI>RFC 2568, Rationale for the Structure of the Model and Protocol
|
||||
for the Internet Printing Protocol
|
||||
<LI>RFC 2569, Mapping between LPD and IPP Protocols
|
||||
<LI>RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1
|
||||
<LI>RFC 2617, HTTP Authentication: Basic and Digest Access
|
||||
Authentication
|
||||
</UL>
|
||||
|
||||
+121
-272
@@ -1,10 +1,10 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE> CUPS Software Administrators Manual</TITLE>
|
||||
<TITLE>CUPS Software Administrators Manual</TITLE>
|
||||
<META NAME="AUTHOR" CONTENT="Easy Software Products">
|
||||
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.1.1">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.1">
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<STYLE>
|
||||
BODY { font-family: serif; font-size: 11.0pt }
|
||||
@@ -20,9 +20,9 @@ PRE { font-size: 9.0pt }
|
||||
</STYLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#ffffff">
|
||||
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0" WIDTH="100%"><BR>
|
||||
<H1> CUPS Software Administrators Manual</H1></A><BR>
|
||||
CUPS-SAM-1.1.1<BR>
|
||||
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0"><BR>
|
||||
<H1>CUPS Software Administrators Manual</H1></A><BR>
|
||||
CUPS-SAM-1.1<BR>
|
||||
Easy Software Products<BR>
|
||||
Copyright 1997-2000, All Rights Reserved<BR>
|
||||
</CENTER>
|
||||
@@ -102,9 +102,8 @@ Copyright 1997-2000, All Rights Reserved<BR>
|
||||
<B><A HREF="#PRINTING_MANAGEMENT">6 - Printing System Management</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#7_1">The Basics</A></LI>
|
||||
<LI><A HREF="#RESTARTING">Restarting the CUPS Server</A></LI>
|
||||
<LI><A HREF="#7_3">Changing the Server Configuration</A></LI>
|
||||
<LI><A HREF="#7_4">Server Directives</A></LI>
|
||||
<LI><A HREF="#7_2">Changing the Server Configuration</A></LI>
|
||||
<LI><A HREF="#7_3">Server Directives</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#AccessLog">AccessLog</A></LI>
|
||||
<LI><A HREF="#Allow">Allow</A></LI>
|
||||
@@ -119,10 +118,8 @@ Copyright 1997-2000, All Rights Reserved<BR>
|
||||
<LI><A HREF="#BrowsePoll">BrowsePoll</A></LI>
|
||||
<LI><A HREF="#BrowsePort">BrowsePort</A></LI>
|
||||
<LI><A HREF="#BrowseRelay">BrowseRelay</A></LI>
|
||||
<LI><A HREF="#BrowseShortNames">BrowseShortNames</A></LI>
|
||||
<LI><A HREF="#BrowseTimeout">BrowseTimeout</A></LI>
|
||||
<LI><A HREF="#Browsing">Browsing</A></LI>
|
||||
<LI><A HREF="#DataDir">DataDir</A></LI>
|
||||
<LI><A HREF="#DefaultCharset">DefaultCharset</A></LI>
|
||||
<LI><A HREF="#DefaultLanguage">DefaultLanguage</A></LI>
|
||||
<LI><A HREF="#Deny">Deny</A></LI>
|
||||
@@ -159,23 +156,23 @@ Copyright 1997-2000, All Rights Reserved<BR>
|
||||
<LI><A HREF="#PRINTING_SECURITY">Printing System Security</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#CERTIFICATES">Authentication Using Certificates</A></LI>
|
||||
<LI><A HREF="#7_5_2">Using Basic Authentication</A></LI>
|
||||
<LI><A HREF="#7_5_3">Using Digest Authentication</A></LI>
|
||||
<LI><A HREF="#7_5_4">System and Group Authentication</A></LI>
|
||||
<LI><A HREF="#7_4_2">Using Basic Authentication</A></LI>
|
||||
<LI><A HREF="#7_4_3">Using Digest Authentication</A></LI>
|
||||
<LI><A HREF="#7_4_4">System and Group Authentication</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#PRINTER_ACCOUNTING">Printer Accounting</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#7_6_1">The access_log File</A></LI>
|
||||
<LI><A HREF="#7_6_2">The error_log File</A></LI>
|
||||
<LI><A HREF="#7_6_3">The page_log File</A></LI>
|
||||
<LI><A HREF="#7_5_1">The access_log File</A></LI>
|
||||
<LI><A HREF="#7_5_2">The error_log File</A></LI>
|
||||
<LI><A HREF="#7_5_3">The page_log File</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#FILE_TYPING_FILTERING">File Typing and Filtering</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#7_7_1">mime.types</A></LI>
|
||||
<LI><A HREF="#7_7_2">mime.convs</A></LI>
|
||||
<LI><A HREF="#7_7_3">Adding Filetypes and Filters</A></LI>
|
||||
<LI><A HREF="#7_7_4">Printer Drivers and PPD Files</A></LI>
|
||||
<LI><A HREF="#7_7_5">Writing Your Own Filter or Printer Driver</A></LI>
|
||||
<LI><A HREF="#7_6_1">mime.types</A></LI>
|
||||
<LI><A HREF="#7_6_2">mime.convs</A></LI>
|
||||
<LI><A HREF="#7_6_3">Adding Filetypes and Filters</A></LI>
|
||||
<LI><A HREF="#7_6_4">Printer Drivers and PPD Files</A></LI>
|
||||
<LI><A HREF="#7_6_5">Writing Your Own Filter or Printer Driver</A></LI>
|
||||
</UL>
|
||||
</UL>
|
||||
<B><A HREF="#PRINTING_OTHER">7 - Printing with Other Systems</A></B>
|
||||
@@ -216,7 +213,6 @@ Copyright 1997-2000, All Rights Reserved<BR>
|
||||
<LI><A HREF="#10_2">Verifying the Printer Connection</A></LI>
|
||||
<LI><A HREF="#10_3">Common Network Interface Settings</A></LI>
|
||||
<LI><A HREF="#AXIS">Configuring Axis Print Servers</A></LI>
|
||||
<LI><A HREF="#LINKSYS">Configuring Linksys Print Servers</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#PRINTER_DRIVERS">C - Printer Drivers</A></B>
|
||||
<UL>
|
||||
@@ -245,7 +241,7 @@ Machine!</A></LI>
|
||||
<H1 ALIGN="RIGHT"><A NAME="1">Preface</A></H1>
|
||||
<P>This software administrators manual provides printer administration
|
||||
information for the Common UNIX Printing System<SUP>TM</SUP> ("CUPS<SUP>
|
||||
TM</SUP>"), version 1.1.1. </P>
|
||||
TM</SUP>"), version 1.1. </P>
|
||||
<H2><A NAME="1_1">System Overview</A></H2>
|
||||
<P>CUPS provides a portable printing layer for UNIX®-based operating
|
||||
systems. It has been developed by <A HREF="http://www.easysw.com">Easy
|
||||
@@ -289,12 +285,12 @@ and their meanings and uses are explained below:
|
||||
<TR><TH>Example</TH><TD> </TD><TH>Description</TH></TR>
|
||||
<TR><TD> </TD></TR>
|
||||
<TR VALIGN="TOP"><TD><CODE>lpstat</CODE>
|
||||
<BR><CODE> lpstat(1)</CODE></TD><TD> </TD><TD>The names of commands;
|
||||
<BR><CODE>lpstat(1)</CODE></TD><TD> </TD><TD>The names of commands;
|
||||
the first mention of a command or function in a chapter is followed by
|
||||
a manual page section number.</TD></TR>
|
||||
<TR><TD> </TD></TR>
|
||||
<TR VALIGN="TOP"><TD><VAR>/var</VAR>
|
||||
<BR><VAR> /usr/share/cups/data/testprint.ps</VAR></TD><TD> </TD><TD>
|
||||
<BR><VAR>/usr/share/cups/data/testprint.ps</VAR></TD><TD> </TD><TD>
|
||||
File and directory names.</TD></TR>
|
||||
<TR><TD> </TD></TR>
|
||||
<TR VALIGN="TOP"><TD NOWRAP><TT>Request ID is Printer-123</TT></TD><TD>
|
||||
@@ -447,7 +443,7 @@ Binary Distribution</A>. </P>
|
||||
<P>This section describes how to compile and install CUPS on your
|
||||
system from the source code. </P>
|
||||
<H3><A NAME="REQUIREMENTS">Requirements</A></H3>
|
||||
<P>You'll need ANSI-compliant C and C++ compilers to build CUPS on your
|
||||
<P>You'll need an ANSI-compliant C compiler to build CUPS on your
|
||||
system. As its name implies, CUPS is designed to run on the UNIX
|
||||
operating system, however the CUPS interface library and most of the
|
||||
filters and backends supplied with CUPS should also compile and run
|
||||
@@ -496,23 +492,12 @@ another location: </P>
|
||||
</UL>
|
||||
<P>If the PNG, JPEG, TIFF, and ZLIB libraries are not installed in a
|
||||
system default location (typically <VAR>/usr/include</VAR> and <VAR>
|
||||
/usr/lib</VAR>) you'll need to set the <CODE>CFLAGS</CODE>, <CODE>
|
||||
CXXFLAGS</CODE>, and <CODE>LDFLAGS</CODE> environment variables prior
|
||||
to running configure: </P>
|
||||
/usr/lib</VAR>) you'll need to set the <CODE>CFLAGS</CODE> and <CODE>
|
||||
LDFLAGS</CODE> environment variables prior to running configure: </P>
|
||||
<UL>
|
||||
<PRE>
|
||||
<B>setenv CFLAGS "-I/some/directory" ENTER</B>
|
||||
<B>setenv CXXFLAGS "-I/some/directory" ENTER</B>
|
||||
<B>setenv LDFLAGS "-L/some/directory" ENTER</B>
|
||||
<B>./configure ... ENTER</B>
|
||||
</PRE>
|
||||
</UL>
|
||||
<P>or: </P>
|
||||
<UL>
|
||||
<PRE>
|
||||
<B>CFLAGS="-I/some/directory"; export CFLAGS ENTER</B>
|
||||
<B>CXXFLAGS="-I/some/directory"; export CXXFLAGS ENTER</B>
|
||||
<B>LDFLAGS="-L/some/directory"; export LDFLAGS ENTER</B>
|
||||
<B>setenv CFLAGS "-I/some/directory"</B>
|
||||
<B>setenv LDFLAGS "-L/some/directory"</B>
|
||||
<B>./configure ... ENTER</B>
|
||||
</PRE>
|
||||
</UL>
|
||||
@@ -534,11 +519,11 @@ to running configure: </P>
|
||||
</UL>
|
||||
<CENTER>
|
||||
<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
|
||||
<TR><TD><B> WARNING:</B>
|
||||
<TR><TD><B>WARNING:</B>
|
||||
<P>Installing CUPS will overwrite your existing printing system. If
|
||||
you experience difficulties with the CUPS software and need to go back
|
||||
to your old printing system, you will need to reinstall the old
|
||||
printing system from your operating system CDs. </P>
|
||||
to your old printing system, you will need to reinstall the printing
|
||||
system from your operating system CDs. </P>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</CENTER>
|
||||
@@ -561,11 +546,11 @@ available for all platforms, while the RPM and DPKG distributions are
|
||||
only available for Linux.
|
||||
<CENTER>
|
||||
<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
|
||||
<TR><TD><B> WARNING:</B>
|
||||
<TR><TD><B>WARNING:</B>
|
||||
<P>Installing CUPS will overwrite your existing printing system. If
|
||||
you experience difficulties with the CUPS software and need to go back
|
||||
to your old printing system, you will need to remove the CUPS software
|
||||
with the provided script and/or reinstall the old printing system from
|
||||
with the provided script and/or reinstall the printing system from
|
||||
your operating system CDs. </P>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
@@ -581,9 +566,7 @@ Once you are the root user, run the installation script with: </P>
|
||||
</PRE>
|
||||
</UL>
|
||||
<P>After asking you a few yes/no questions the CUPS software will be
|
||||
installed and the scheduler will be started automatically.
|
||||
<!-- NEED 2in ---->
|
||||
</P>
|
||||
installed and the scheduler will be started automatically. </P>
|
||||
<H3><A NAME="RPM-BINARY">Installing an RPM Distribution</A></H3>
|
||||
<P>To install the CUPS software from an RPM distribution you will need
|
||||
to be logged in as root; doing an <CODE>su</CODE> is good enough. Once
|
||||
@@ -625,7 +608,7 @@ uses a device URI of <CODE>parallel:/dev/lp1</CODE>.
|
||||
<!-- NEED 2.5in ---->
|
||||
</P>
|
||||
<P>You can see a complete list of supported devices by running the <CODE>
|
||||
lpinfo(8)</CODE> command: </P>
|
||||
lpinfo(1m)</CODE> command: </P>
|
||||
<UL>
|
||||
<PRE>
|
||||
<B>lpinfo -v ENTER</B>
|
||||
@@ -637,7 +620,7 @@ network lpd
|
||||
direct parallel:/dev/lp1
|
||||
serial serial:/dev/ttyS1?baud=115200
|
||||
serial serial:/dev/ttyS2?baud=115200
|
||||
direct usb:/dev/usb/lp0
|
||||
direct usb:/dev/usb/usblp0
|
||||
network smb
|
||||
</PRE>
|
||||
</UL>
|
||||
@@ -656,7 +639,7 @@ files for HP LaserJet, HP DeskJet, EPSON 9-pin, EPSON 24-pin, and EPSON
|
||||
Stylus printers. </P>
|
||||
<H2><A NAME="4_2">Adding Your First Printer</A></H2>
|
||||
<P>CUPS provides two methods for adding printers: a command-line
|
||||
program called <CODE>lpadmin(8)</CODE> and a Web interface. The <CODE>
|
||||
program called <CODE>lpadmin(1m)</CODE> and a Web interface. The <CODE>
|
||||
lpadmin</CODE> command allows you to perform most printer
|
||||
administration tasks from the command-line and is located in <VAR>
|
||||
/usr/sbin</VAR>. The Web interface is located at: </P>
|
||||
@@ -733,9 +716,9 @@ filtering is disabled when using an interface script, scripts
|
||||
printer. </DD>
|
||||
<DT>-m <I>model</I></DT>
|
||||
<DD>Specifies a standard printer driver which is usually a PPD file. A
|
||||
list of all available models can be displayed using the <CODE> lpinfo</CODE>
|
||||
list of all available models can be displayed using the <CODE>lpinfo</CODE>
|
||||
command with the <CODE>-m</CODE> option. A list of printer drivers
|
||||
included with CUPS can be found in <A HREF="#PRINTER_DRIVERS"> Appendix
|
||||
included with CUPS can be found in <A HREF="#PRINTER_DRIVERS">Appendix
|
||||
C, "Printer Drivers"</A>. </DD>
|
||||
<DT>-r <I>class</I></DT>
|
||||
<DD>Removes the named printer from printer class <VAR>class. If the
|
||||
@@ -749,7 +732,7 @@ and sent to the new device. </DD>
|
||||
Personal Printer". </DD>
|
||||
<DT>-E </DT>
|
||||
<DD>Enables the printer and accepts job. This option is equivalent to
|
||||
running the <CODE>enable(1)</CODE> and <CODE> accept(8)</CODE> commands
|
||||
running the <CODE>enable(1)</CODE> and <CODE>accept(1m)</CODE> commands
|
||||
on the printer. </DD>
|
||||
<DT>-L <I>location</I></DT>
|
||||
<DD>Provides a textual location for the printer, e.g. "Computer Lab
|
||||
@@ -901,8 +884,8 @@ jobs to a single server. However, if that server goes down then all
|
||||
printing will be disabled. Use this configuration only as absolutely
|
||||
needed. </P>
|
||||
<P>The default server is normally "localhost". To override the default
|
||||
server create a file named <VAR>/etc/cups/client.conf</VAR> and add a
|
||||
line reading: </P>
|
||||
server create a file named <VAR>/etc/cups/conf/client.conf</VAR> and
|
||||
add a line reading: </P>
|
||||
<UL>
|
||||
<PRE>
|
||||
ServerName <I>server</I>
|
||||
@@ -918,8 +901,8 @@ add a line reading: </P>
|
||||
ServerName <I>server</I>
|
||||
</PRE>
|
||||
</UL>
|
||||
<P>to the file. The <VAR>server</VAR> name can be the hostname or IP
|
||||
address of the default server. </P>
|
||||
<P>to the file. As before the <VAR>server</VAR> name can be the
|
||||
hostname or IP address of the default server. </P>
|
||||
<H3><A NAME="CLIENT_AUTO">Automatic Configuration of Print Queues</A></H3>
|
||||
<P>CUPS supports automatic client configuration of printers on the same
|
||||
subnet. To configure printers on the same subnet, <I>do nothing</I>.
|
||||
@@ -950,7 +933,7 @@ configuration files are located in the <VAR>/etc/cups</VAR> directory: </P>
|
||||
|
||||
<DT>classes.conf </DT>
|
||||
<DD>This file contains information on each printer class. Normally you
|
||||
manipulate this file using the <CODE> lpadmin</CODE> command or the Web
|
||||
manipulate this file using the <CODE>lpadmin</CODE> command or the Web
|
||||
interface.
|
||||
<BR>
|
||||
<!-- NEED 1in ---->
|
||||
@@ -987,7 +970,6 @@ Interface.
|
||||
<BR> </DD>
|
||||
</DL>
|
||||
</UL>
|
||||
<H2><A NAME="RESTARTING">Restarting the CUPS Server</A></H2>
|
||||
<P>Once you have made a change to a configuration file you need to
|
||||
restart the CUPS server by sending it a <CODE>HUP</CODE> signal or
|
||||
using the supplied initialization script. The CUPS distributions
|
||||
@@ -1000,16 +982,17 @@ cups</VAR>. The location varies based upon the operating system: </P>
|
||||
<B>/sbin/init.d/cups restart ENTER</B>
|
||||
</PRE>
|
||||
</UL>
|
||||
<H2><A NAME="7_3">Changing the Server Configuration</A></H2>
|
||||
<H2><A NAME="7_2">Changing the Server Configuration</A></H2>
|
||||
<P>The <VAR>/etc/cups/cupsd.conf</VAR> file contains configuration <I>
|
||||
directives</I> that control how the server functions. Each directive is
|
||||
listed on a line by itself followed by its value. Comments are
|
||||
introduced using the number sign ("#") character at the beginning of a
|
||||
line. Since the server configuration file consists of plain text, you
|
||||
can use your favorite text editor to make changes to it.
|
||||
line. </P>
|
||||
<P>Since the server configuration file consists of plain text, you can
|
||||
use your favorite text editor to make changes to it.
|
||||
<!-- NEED 4in ---->
|
||||
</P>
|
||||
<H2><A NAME="7_4">Server Directives</A></H2>
|
||||
<H2><A NAME="7_3">Server Directives</A></H2>
|
||||
<P>The <VAR>cupsd.conf</VAR> file contains many directives that
|
||||
determine how the server operates: </P>
|
||||
<UL>
|
||||
@@ -1028,12 +1011,10 @@ determine how the server operates: </P>
|
||||
<LI><A HREF="#BrowsePoll"><CODE>BrowsePoll</CODE></A></LI>
|
||||
<LI><A HREF="#BrowsePort"><CODE>BrowsePort</CODE></A></LI>
|
||||
<LI><A HREF="#BrowseRelay"><CODE>BrowseRelay</CODE></A></LI>
|
||||
<LI><A HREF="#BrowseShortNames"><CODE>BrowseShortNames</CODE></A></LI>
|
||||
<LI><A HREF="#BrowseTimeout"><CODE>BrowseTimeout</CODE></A></LI>
|
||||
<LI><A HREF="#Browsing"><CODE>Browsing</CODE></A></LI>
|
||||
<LI><A HREF="#DataDir"><CODE>DataDir</CODE></A></LI>
|
||||
</TD><TD VALIGN="TOP"> </TD><TD VALIGN="TOP">
|
||||
<LI><A HREF="#DefaultCharset"><CODE>DefaultCharset</CODE></A></LI>
|
||||
</TD><TD VALIGN="TOP"> </TD><TD VALIGN="TOP">
|
||||
<LI><A HREF="#DefaultLanguage"><CODE>DefaultLanguage</CODE></A></LI>
|
||||
<LI><A HREF="#Deny"><CODE>Deny</CODE></A></LI>
|
||||
<LI><A HREF="#DocumentRoot"><CODE>DocumentRoot</CODE></A></LI>
|
||||
@@ -1049,8 +1030,8 @@ determine how the server operates: </P>
|
||||
<LI><A HREF="#MaxClients"><CODE>MaxClients</CODE></A></LI>
|
||||
<LI><A HREF="#MaxLogSize"><CODE>MaxLogSize</CODE></A></LI>
|
||||
<LI><A HREF="#MaxRequestSize"><CODE>MaxRequestSize</CODE></A></LI>
|
||||
</TD><TD VALIGN="TOP"> </TD><TD VALIGN="TOP">
|
||||
<LI><A HREF="#Order"><CODE>Order</CODE></A></LI>
|
||||
</TD><TD VALIGN="TOP"> </TD><TD VALIGN="TOP">
|
||||
<LI><A HREF="#PageLog"><CODE>PageLog</CODE></A></LI>
|
||||
<LI><A HREF="#Port"><CODE>Port</CODE></A></LI>
|
||||
<LI><A HREF="#PreserveJobFiles"><CODE>PreserveJobFiles</CODE></A></LI>
|
||||
@@ -1077,7 +1058,6 @@ determine how the server operates: </P>
|
||||
<UL>
|
||||
<PRE>
|
||||
AccessLog /var/log/cups/access_log
|
||||
AccessLog /var/log/cups/access_log-%s
|
||||
AccessLog syslog
|
||||
</PRE>
|
||||
</UL>
|
||||
@@ -1087,12 +1067,10 @@ file. If the filename is not absolute then it is assumed to be relative
|
||||
to the <A HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
|
||||
access log file is stored in "common log format" and can be used by any
|
||||
web access reporting tool to generate a report on CUPS server activity. </P>
|
||||
<P>The server name can be included in the filename by using <CODE>%s</CODE>
|
||||
in the name. </P>
|
||||
<P>The special name "syslog" can be used to send the access information
|
||||
to the system log instead of a plain file. </P>
|
||||
<P>The default access log file is <VAR>/var/log/cups/access_log</VAR>.
|
||||
<!-- NEED 6in ---->
|
||||
<!-- NEED 5in ---->
|
||||
</P>
|
||||
<H3><A NAME="Allow">Allow</A></H3>
|
||||
<HR>
|
||||
@@ -1114,7 +1092,7 @@ Allow from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
|
||||
</UL>
|
||||
<H4>Description</H4>
|
||||
<P>The <CODE>Allow</CODE> directive specifies a hostname, IP address,
|
||||
or network that is allowed access to the server. <CODE> Allow</CODE>
|
||||
or network that is allowed access to the server. <CODE>Allow</CODE>
|
||||
directives are cummulative, so multiple <CODE>Allow</CODE> directives
|
||||
can be used to allow access for multiple hosts or networks. The <CODE>
|
||||
/mm</CODE> notation specifies a CIDR netmask:
|
||||
@@ -1157,7 +1135,7 @@ authentication is required: </P>
|
||||
<LI><CODE>User</CODE> - A valid username and password is required. </LI>
|
||||
<LI><CODE>System</CODE> - A valid username and password is required,
|
||||
and the username must belong to the "sys" group; this can be changed
|
||||
using the <A HREF="#SystemGroup"><CODE> SystemGroup</CODE></A>
|
||||
using the <A HREF="#SystemGroup"><CODE>SystemGroup</CODE></A>
|
||||
directive. </LI>
|
||||
<LI><CODE>Group</CODE> - A valid username and password is required,
|
||||
and the username must belong to the group named by the <CODE>
|
||||
@@ -1230,7 +1208,7 @@ networks or systems. </P>
|
||||
broadcast the information to all networks the server is connected to.
|
||||
<CENTER>
|
||||
<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
|
||||
<TR><TD><B> NOTE:</B>
|
||||
<TR><TD><B>NOTE:</B>
|
||||
<P>If you are using HP-UX 10.20 and a subnet that is not 24, 16, or 8
|
||||
bits, printer browsing (and in fact all broadcast reception) will not
|
||||
work. This problem appears to be fixed in HP-UX 11.0. </P>
|
||||
@@ -1362,7 +1340,7 @@ BrowsePort 9999
|
||||
used for browse packets. The default port number is 631.
|
||||
<CENTER>
|
||||
<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
|
||||
<TR><TD><B> NOTE:</B>
|
||||
<TR><TD><B>NOTE:</B>
|
||||
<P>You must set the <CODE>BrowsePort</CODE> to the same value on all
|
||||
of the systems that you want to see. </P>
|
||||
</TD></TR>
|
||||
@@ -1400,24 +1378,6 @@ BrowseRelay 127.0.0.1 255.255.255.255
|
||||
clients on the LAN(s).
|
||||
<!-- NEED 3in ---->
|
||||
</P>
|
||||
<H3><A NAME="BrowseShortNames">BrowseShortNames</A></H3>
|
||||
<HR>
|
||||
<H4>Examples</H4>
|
||||
<UL>
|
||||
<PRE>
|
||||
BrowseShortNames Yes
|
||||
BrowseShortNames No
|
||||
</PRE>
|
||||
</UL>
|
||||
<H4>Description</H4>
|
||||
<P>The <CODE>BrowseShortNames</CODE> directive specifies whether or not
|
||||
short names are used for remote printers when possible. Short names are
|
||||
just the remote printer name, without the server ("printer"). If more
|
||||
than one remote printer is detected with the same name, the printers
|
||||
will have long names ("printer@server1", "printer@server2".) </P>
|
||||
<P>The default value for this option is <CODE>Yes</CODE>.
|
||||
<!-- NEED 3in ---->
|
||||
</P>
|
||||
<H3><A NAME="BrowseTimeout">BrowseTimeout</A></H3>
|
||||
<HR>
|
||||
<H4>Examples</H4>
|
||||
@@ -1436,7 +1396,7 @@ destinations. </P>
|
||||
the <A HREF="#BrowseInterval"><CODE>BrowseInterval</CODE></A> value.
|
||||
Otherwise printers and classes will disappear from client systems
|
||||
between updates.
|
||||
<!-- NEED 4in ---->
|
||||
<!-- NEED 3in ---->
|
||||
</P>
|
||||
<H3><A NAME="Browsing">Browsing</A></H3>
|
||||
<HR>
|
||||
@@ -1452,7 +1412,7 @@ Browsing Off
|
||||
printer browsing is enabled. The default setting is <CODE>On</CODE>.
|
||||
<CENTER>
|
||||
<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
|
||||
<TR><TD><B> NOTE:</B>
|
||||
<TR><TD><B>NOTE:</B>
|
||||
<P>If you are using HP-UX 10.20 and a subnet that is not 24, 16, or 8
|
||||
bits, printer browsing (and in fact all broadcast reception) will not
|
||||
work. This problem appears to be fixed in HP-UX 11.0. </P>
|
||||
@@ -1460,19 +1420,6 @@ work. This problem appears to be fixed in HP-UX 11.0. </P>
|
||||
</TABLE>
|
||||
</CENTER>
|
||||
|
||||
<!-- NEED 3in ---->
|
||||
</P>
|
||||
<H3><A NAME="DataDir">DataDir</A></H3>
|
||||
<HR>
|
||||
<H4>Examples</H4>
|
||||
<UL>
|
||||
<PRE>
|
||||
DataDir /usr/share/cups
|
||||
</PRE>
|
||||
</UL>
|
||||
<H4>Description</H4>
|
||||
<P>The <CODE>DataDir</CODE> directive sets the directory to use for
|
||||
data files.
|
||||
<!-- NEED 3in ---->
|
||||
</P>
|
||||
<H3><A NAME="DefaultCharset">DefaultCharset</A></H3>
|
||||
@@ -1582,7 +1529,6 @@ content by providing subdirectories for each language needed.
|
||||
<UL>
|
||||
<PRE>
|
||||
ErrorLog /var/log/cups/error_log
|
||||
ErrorLog /var/log/cups/error_log-%s
|
||||
ErrorLog syslog
|
||||
</PRE>
|
||||
</UL>
|
||||
@@ -1591,8 +1537,6 @@ ErrorLog syslog
|
||||
file. If the filename is not absolute then it is assumed to be relative
|
||||
to the <A HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
|
||||
default error log file is <VAR>/var/log/cups/error_log</VAR>. </P>
|
||||
<P>The server name can be included in the filename by using <CODE>%s</CODE>
|
||||
in the name. </P>
|
||||
<P>The special name "syslog" can be used to send the error information
|
||||
to the system log instead of a plain file.
|
||||
<!-- NEED 3in ---->
|
||||
@@ -1764,9 +1708,9 @@ simultaneous clients that will be allowed by the server. The default is
|
||||
100 clients.
|
||||
<CENTER>
|
||||
<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
|
||||
<TR><TD><B> NOTE:</B>
|
||||
<TR><TD><B>NOTE:</B>
|
||||
<P>Since each print job requires a file descriptor for the status
|
||||
pipe, the CUPS server internally limits the <CODE> MaxClients</CODE>
|
||||
pipe, the CUPS server internally limits the <CODE>MaxClients</CODE>
|
||||
value to 1/3 of the available file descriptors to avoid possible
|
||||
problems when printing large numbers of jobs. </P>
|
||||
</TD></TR>
|
||||
@@ -1837,7 +1781,6 @@ an <CODE>Allow</CODE> directive. </LI>
|
||||
<UL>
|
||||
<PRE>
|
||||
PageLog /var/log/cups/page_log
|
||||
PageLog /var/log/cups/page_log-%s
|
||||
PageLog syslog
|
||||
</PRE>
|
||||
</UL>
|
||||
@@ -1846,8 +1789,6 @@ PageLog syslog
|
||||
file. If the filename is not absolute then it is assumed to be relative
|
||||
to the <A HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
|
||||
default page log file is <VAR>/var/log/cups/page_log</VAR>. </P>
|
||||
<P>The server name can be included in the filename by using <CODE>%s</CODE>
|
||||
in the name. </P>
|
||||
<P>The special name "syslog" can be used to send the page information
|
||||
to the system log instead of a plain file.
|
||||
<!-- NEED 3in ---->
|
||||
@@ -2102,9 +2043,9 @@ and CGI programs run as. The default user is <CODE>lp</CODE>.
|
||||
</P>
|
||||
<H2><A NAME="PRINTING_SECURITY">Printing System Security</A></H2>
|
||||
<P>CUPS provides support for address, certificate, and password (Basic
|
||||
and Digest) based authentication and access control. Certificate and
|
||||
password authentication provide ways to limit access to individual
|
||||
people or groups. </P>
|
||||
and Digest) based authentication and access control. </P>
|
||||
<P>Certificate and password authentication provide ways to limit access
|
||||
to individual people or groups. </P>
|
||||
<P>Address based access control allows you to limit access to specific
|
||||
systems, networks, or domains. While this does not provide
|
||||
authentication, it does allow you to limit the potential users of your
|
||||
@@ -2174,13 +2115,13 @@ certificate</I> which can be used by any client running as the
|
||||
super-user or another user that is part of the group defined by the <A HREF="#SystemGroup">
|
||||
<CODE>SystemGroup</CODE></A> directive. The root certificate is
|
||||
automatically regenerated every 5 minutes. </P>
|
||||
<H3><A NAME="7_5_2">Using Basic Authentication</A></H3>
|
||||
<H3><A NAME="7_4_2">Using Basic Authentication</A></H3>
|
||||
<P>Basic authentication uses UNIX users and passwords to authenticate
|
||||
access to resources such as printers and classes, and to limit access
|
||||
to administrative functions.
|
||||
<CENTER>
|
||||
<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
|
||||
<TR><TD><B> NOTE:</B>
|
||||
<TR><TD><B>NOTE:</B>
|
||||
<P>Basic authentication sends the username and password Base64 encoded
|
||||
from the client to the server, so it offers no protection against
|
||||
eavesdropping. This means that a malicious user can monitor network
|
||||
@@ -2199,7 +2140,7 @@ immediately blocked. </P>
|
||||
additional group membership requirements are checked.
|
||||
<CENTER>
|
||||
<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
|
||||
<TR><TD><B> NOTE:</B>
|
||||
<TR><TD><B>NOTE:</B>
|
||||
<P>The root user is considered by CUPS to be a member of every group. </P>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
@@ -2214,16 +2155,14 @@ authentication: </P>
|
||||
AuthType Basic
|
||||
</PRE>
|
||||
</UL>
|
||||
|
||||
<!-- NEED 7in ---->
|
||||
<H3><A NAME="7_5_3">Using Digest Authentication</A></H3>
|
||||
<H3><A NAME="7_4_3">Using Digest Authentication</A></H3>
|
||||
<P>Digest authentication uses users and passwords defined in the <VAR>
|
||||
/etc/cups/passwd.md5</VAR> file to authenticate access to resources
|
||||
such as printers and classes, and to limit access to administrative
|
||||
functions.
|
||||
<CENTER>
|
||||
<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
|
||||
<TR><TD><B> NOTE:</B>
|
||||
<TR><TD><B>NOTE:</B>
|
||||
<P>Unlike Basic authentication, Digest passes the MD5 sum (basically a
|
||||
complicated checksum) of the username and password instead of the
|
||||
strings themselves. Also, Digest authentication does not use the UNIX
|
||||
@@ -2283,7 +2222,7 @@ Password again: <B>(password) ENTER</B> [password is not echoed]
|
||||
additional group membership requirements are checked.
|
||||
<CENTER>
|
||||
<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
|
||||
<TR><TD><B> NOTE:</B>
|
||||
<TR><TD><B>NOTE:</B>
|
||||
<P>The root user is considered by CUPS to be a member of every group. </P>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
@@ -2296,7 +2235,7 @@ authentication: </P>
|
||||
AuthType Digest
|
||||
</PRE>
|
||||
</UL>
|
||||
<H3><A NAME="7_5_4">System and Group Authentication</A></H3>
|
||||
<H3><A NAME="7_4_4">System and Group Authentication</A></H3>
|
||||
<P>The <A HREF="#AuthClass"><CODE>AuthClass</CODE></A> directive
|
||||
controls the level of authentication to perform. <CODE>System</CODE>
|
||||
and <CODE>Group</CODE> authentication extend the normal user-based
|
||||
@@ -2334,7 +2273,7 @@ Password again: <B>(password) ENTER</B> [password is not echoed]
|
||||
<P>The log files are normally stored in the <VAR>/var/log/cups</VAR>
|
||||
directory. You can change this by editing the <VAR>/etc/cups/cupsd.conf</VAR>
|
||||
configuration file. </P>
|
||||
<H3><A NAME="7_6_1">The access_log File</A></H3>
|
||||
<H3><A NAME="7_5_1">The access_log File</A></H3>
|
||||
<P>The <VAR>access_log</VAR> file lists each HTTP resource that is
|
||||
accessed by a web browser or CUPS/IPP client. Each line is in the
|
||||
so-called "Common Log Format" used by many web servers and web
|
||||
@@ -2355,14 +2294,12 @@ have enabled the <A HREF="#HostNameLookups"><CODE>HostNameLookups</CODE></A>
|
||||
requesting user. If no username and password is supplied for the
|
||||
request then this field contains "-". </P>
|
||||
<P>The <I>date-time</I> field is the date and time of the request in
|
||||
local time and is in the format: </P>
|
||||
Greenwich Mean Time (a.k.a. ZULU) and is in the format: </P>
|
||||
<UL>
|
||||
<PRE>
|
||||
[DD/MON/YYYY:HH:MM:SS +ZZZZ]
|
||||
[DD/MON/YYYY:HH:MM:SS +0000]
|
||||
</PRE>
|
||||
</UL>
|
||||
<P>where <I>ZZZZ</I> is the timezone offset in hours and minutes from
|
||||
Greenwich Mean Time (a.k.a. GMT a.k.a. ZULU.) </P>
|
||||
<P>The <I>method</I> field is the HTTP method used ("GET", "PUT",
|
||||
"POST", etc.) </P>
|
||||
<P>The <I>resource</I> field is the filename of the requested resource. </P>
|
||||
@@ -2374,8 +2311,8 @@ For example, 401 is the "unauthorized access" status in the example
|
||||
above. </P>
|
||||
<P>The <I>bytes</I> field contains the number of bytes in the request.
|
||||
For POST requests the <I>bytes</I> field contains the number of bytes
|
||||
that was received from the client. </P>
|
||||
<H3><A NAME="7_6_2">The error_log File</A></H3>
|
||||
of non-IPP data that is received from the client. </P>
|
||||
<H3><A NAME="7_5_2">The error_log File</A></H3>
|
||||
<P>The <VAR>error_log</VAR> file lists messages from the scheduler
|
||||
(errors, warnings, etc.): </P>
|
||||
<UL>
|
||||
@@ -2398,7 +2335,7 @@ I [20/May/1999:19:22:24 +0000] Job 2 was cancelled by 'mike'.
|
||||
page started printing. The format of this field is identical to the <I>
|
||||
data-time</I> field in the <VAR>access_log</VAR> file. </P>
|
||||
<P>The <I>message</I> fields contains a free-form textual message. </P>
|
||||
<H3><A NAME="7_6_3">The page_log File</A></H3>
|
||||
<H3><A NAME="7_5_3">The page_log File</A></H3>
|
||||
<P>The <VAR>page_log</VAR> file lists each page that is sent to a
|
||||
printer. Each line contains the following information: </P>
|
||||
<UL>
|
||||
@@ -2439,7 +2376,7 @@ database in memory. These database files are plain ASCII text and can
|
||||
be edited with your favorite text editor. </P>
|
||||
<P>The <VAR>mime.types</VAR> and <VAR>mime.convs</VAR> files define the
|
||||
standard file types and filters that are available on the system. </P>
|
||||
<H3><A NAME="7_7_1">mime.types</A></H3>
|
||||
<H3><A NAME="7_6_1">mime.types</A></H3>
|
||||
<P>The <VAR>mime.types</VAR> file defines the known file types. Each
|
||||
line of the file starts with the MIME type and may be followed by one
|
||||
or more file type recognition rules. For example, the <CODE>text/html</CODE>
|
||||
@@ -2517,7 +2454,7 @@ image/jpeg jpeg jpg jpe string(0,<FFD8FF>) &&\
|
||||
file starting with the hexadecimal string <CODE><FFD8FF></CODE> (JPEG
|
||||
Start-Of-Image) followed by a character between and including <CODE>0xe0</CODE>
|
||||
and <CODE>0xef</CODE> (JPEG APPn markers) is also a JPEG file. </P>
|
||||
<H3><A NAME="7_7_2">mime.convs</A></H3>
|
||||
<H3><A NAME="7_6_2">mime.convs</A></H3>
|
||||
<P>The <VAR>mime.convs</VAR> file defines all of the filter programs
|
||||
that are known to the system. Each line consists of: </P>
|
||||
<UL>
|
||||
@@ -2557,7 +2494,7 @@ when filtering, otherwise the filter must read from the standard input.
|
||||
All filtered output must go to the standard output.
|
||||
<!-- NEED 4in ---->
|
||||
</P>
|
||||
<H3><A NAME="7_7_3">Adding Filetypes and Filters</A></H3>
|
||||
<H3><A NAME="7_6_3">Adding Filetypes and Filters</A></H3>
|
||||
<P>Adding a new file type or filter is fairly straight-forward. Rather
|
||||
than adding the new type and filter to the <VAR>mime.types</VAR> and <VAR>
|
||||
mime.convs</VAR> files which are overwritten when you upgrade to a new
|
||||
@@ -2583,9 +2520,9 @@ different file types and filters. </P>
|
||||
<P>Once you choose the names for these files, create them using your
|
||||
favorite text editor as described earlier in this chapter. Once you
|
||||
have created the files, restart the <CODE>cupsd</CODE> process as
|
||||
described earlier in <A HREF="#RESTARTING">"Restarting the CUPS Server"</A>
|
||||
. </P>
|
||||
<H3><A NAME="7_7_4">Printer Drivers and PPD Files</A></H3>
|
||||
described in <A HREF="#PRINTING_MANAGEMENT">Chapter N, "Printing System
|
||||
Configuration"</A>. </P>
|
||||
<H3><A NAME="7_6_4">Printer Drivers and PPD Files</A></H3>
|
||||
<P>Most CUPS printer drivers utilize one or more printer-specific
|
||||
filters and a PPD file for each printer model. Printer driver filters
|
||||
are registered via the PPD file using <CODE>cupsFilter</CODE>
|
||||
@@ -2598,7 +2535,7 @@ are registered via the PPD file using <CODE>cupsFilter</CODE>
|
||||
<P>The filter is specified using the source file type only; the
|
||||
destination file type is assumed to be <CODE>printer/name</CODE> -
|
||||
suitable for sending to the printer. </P>
|
||||
<H3><A NAME="7_7_5">Writing Your Own Filter or Printer Driver</A></H3>
|
||||
<H3><A NAME="7_6_5">Writing Your Own Filter or Printer Driver</A></H3>
|
||||
<P>CUPS supports an unlimited number of file formats and filters, and
|
||||
can handle any printer. If you'd like to write a filter or printer
|
||||
driver for your favorite file format or printer, consult the CUPS
|
||||
@@ -2619,7 +2556,7 @@ you can print files to specific printers, list the queue status, and so
|
||||
forth. However, the automatic client configuration and printer options
|
||||
are not supported by the LPD protocol, so you must manually configure
|
||||
each client for the printers it needs to access. </P>
|
||||
<P>The <CODE>cups-lpd(8)</CODE> program provides support for LPD
|
||||
<P>The <CODE>cups-lpd(1m)</CODE> program provides support for LPD
|
||||
clients. To enable LPD support on your server, edit the <VAR>
|
||||
/etc/inetd.conf</VAR> file and add a line reading: </P>
|
||||
<UL>
|
||||
@@ -2629,13 +2566,13 @@ printer stream tcp nowait lp /usr/lib/cups/daemon/cups-lpd cups-lpd
|
||||
</UL>
|
||||
<P>The path to the <CODE>cups-lpd</CODE> may vary depending on your
|
||||
installation. </P>
|
||||
<P>Once you have added this line, send the <CODE>inetd(8)</CODE>
|
||||
<P>Once you have added this line, send the <CODE>inetd(1m)</CODE>
|
||||
process a <CODE>HUP</CODE> signal or reboot the system: </P>
|
||||
<UL>
|
||||
<PRE>
|
||||
<B>killall -HUP inetd ENTER</B> [IRIX and some versions of Linux]
|
||||
<B>kill -HUP <I>pid</I> ENTER [Others]</B>
|
||||
<B>reboot ENTER [For all systems if the HUP signal fails]</B>
|
||||
<B>kill -HUP <I>pid</I> ENTER</B>
|
||||
<B>reboot ENTER</B>
|
||||
</PRE>
|
||||
</UL>
|
||||
<H2><A NAME="8_3">Printing to LPD Servers</A></H2>
|
||||
@@ -2653,7 +2590,7 @@ the LPD protocol. </P>
|
||||
<P>CUPS does not provide Mac OS support directly. However, there are
|
||||
several free and commercial software packages that do. </P>
|
||||
<H3><A NAME="8_4_1">Columbia Appletalk Package (CAP)</A></H3>
|
||||
<P>Because the CAP LaserWriter server (<CODE>lwsrv(8)</CODE>) does not
|
||||
<P>Because the CAP LaserWriter server (<CODE>lwsrv(1m)</CODE>) does not
|
||||
support specification of PPD files, we do not recommend that you use
|
||||
CAP with CUPS. However, you can run the <CODE>lpsrv</CODE> program for
|
||||
limited printing with the command: </P>
|
||||
@@ -2668,7 +2605,7 @@ printer, and <CODE>printer</CODE> is the name of the CUPS print queue.
|
||||
</P>
|
||||
<H3><A NAME="8_4_2">XINET KA/Spool</A></H3>
|
||||
<P>To use your system as a print server for Mac OS clients, configure
|
||||
each printer using a <CODE>papserver(8)</CODE> in the <VAR>
|
||||
each printer using a <CODE>papserver(1m)</CODE> in the <VAR>
|
||||
/usr/adm/appletalk/services</VAR> file, specifying the corresponding
|
||||
PPD file in the <VAR>/etc/cups/ppd</VAR> directory for each printer.
|
||||
For a printer named <CODE>MyPrinter</CODE> the entry would look like: </P>
|
||||
@@ -2680,7 +2617,7 @@ PPD file in the <VAR>/etc/cups/ppd</VAR> directory for each printer.
|
||||
</UL>
|
||||
<CENTER>
|
||||
<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
|
||||
<TR><TD><B> NOTE:</B>
|
||||
<TR><TD><B>NOTE:</B>
|
||||
<P>Enter the text above on a single line without the backslash (\)
|
||||
character. </P>
|
||||
</TD></TR>
|
||||
@@ -2836,17 +2773,17 @@ Agreement</A></H2>
|
||||
<BR> Email: <A HREF="mailto:cups-info@cups.org">cups-info@cups.org</A>
|
||||
<BR> WWW: <A HREF="http://www.cups.org">http://www.cups.org</A></P>
|
||||
<H3><A NAME="9_1_1">Introduction</A></H3>
|
||||
<P>The Common UNIX Printing System<SUP>TM</SUP>, ("CUPS<SUP>TM</SUP>"),
|
||||
<P>The Common UNIX Printing System<SUP>TM</SUP>, or CUPS<SUP>TM</SUP>,
|
||||
is provided under the GNU General Public License ("GPL") and GNU
|
||||
Library General Public License ("LGPL"), Version 2. A copy of these
|
||||
licenses follow this introduction. </P>
|
||||
<P>The GNU LGPL applies to the CUPS API library, located in the "cups"
|
||||
subdirectory of the CUPS source distribution and in the
|
||||
"/usr/include/cups" directory and "libcups.a", "libcups.sl", or
|
||||
"libcups.so" files in the binary distributions. </P>
|
||||
"/usr/include/cups" directory and "/usr/lib/libcups.so" or
|
||||
"/usr/lib32/libcups.so" files in the binary distributions. </P>
|
||||
<P>The GNU GPL applies to the remainder of the CUPS distribution,
|
||||
including the "pstoraster" filter which is based upon GNU Ghostscript
|
||||
5.50 and the "pdftops" filter which is based upon Xpdf 0.90. </P>
|
||||
5.50. </P>
|
||||
<P>For those not familiar with the GNU GPL, the license basically
|
||||
allows you to: </P>
|
||||
<UL>
|
||||
@@ -2855,14 +2792,13 @@ allows you to: </P>
|
||||
form. </LI>
|
||||
<LI>Sell verbatim copies of the software for a media fee, or sell
|
||||
support for the software. </LI>
|
||||
<LI>Distribute or sell printer drivers and filters that use CUPS so
|
||||
long as source code is made available under the GPL. </LI>
|
||||
<LI>Distribute or sell printer drivers and filters that use the CUPS
|
||||
API so long as source code is made available under the GPL. </LI>
|
||||
</UL>
|
||||
<P>What this license <B>does not</B> allow you to do is make changes or
|
||||
add features to CUPS and then sell a binary distribution without source
|
||||
code. You must provide source for any new drivers, changes, or
|
||||
additions to the software, and all code must be provided under the GPL
|
||||
or LGPL as appropriate. </P>
|
||||
additions to the software, and all code must be provided under the GPL. </P>
|
||||
<P>The GNU LGPL relaxes the "link-to" restriction, allowing you to
|
||||
develop applications that use the CUPS API library under other licenses
|
||||
and/or conditions as appropriate for your application. </P>
|
||||
@@ -2878,26 +2814,19 @@ standards as the original. </P>
|
||||
<P>Easy Software Products also sells rights to the CUPS source code
|
||||
under a binary distribution license for vendors that are unable to
|
||||
release source code for their drivers, additions, and modifications to
|
||||
CUPS under the GNU GPL and LGPL. For information please contact us at
|
||||
CUPS under the GNU GPL. For pricing information please contact us at
|
||||
the address shown above. </P>
|
||||
<P>The Common UNIX Printing System provides a "pstoraster" filter that
|
||||
utilizes the GNU GhostScript 5.50 core to convert PostScript files into
|
||||
a stream of raster images. For binary distribution licensing of this
|
||||
software, please contact: <BLOCKQUOTE> Miles Jones
|
||||
utilizes GNU GhostScript 5.50 to convert PostScript files into a stream
|
||||
of raster images. For binary distribution licensing of this software,
|
||||
please contact: <BLOCKQUOTE>Miles Jones
|
||||
<BR> Director of Marketing
|
||||
<BR> Artifex Software Inc.
|
||||
<BR> 454 Las Gallinas Ave., Suite 108
|
||||
<BR> San Rafael, CA 94903 USA
|
||||
<BR> Voice: +1.415.492.9861
|
||||
<BR> Fax: +1.415.492.9862
|
||||
<BR> EMail: <A HREF="mailto:info@arsoft.com">info@arsoft.com</A></BLOCKQUOTE>
|
||||
</P>
|
||||
<P>The "pdftops" filter is based on the Xpdf 0.90 software. For binary
|
||||
distribution licensing of this software, please contact: <BLOCKQUOTE>
|
||||
Derek B. Noonburg
|
||||
<BR> Email: <A HREF="mailto:derekn@foolabs.com">derekn@foolabs.com</A>
|
||||
<BR> WWW: <A HREF="http://www.foolabs.com/xpdf/">
|
||||
http://www.foolabs.com/xpdf/</A></BLOCKQUOTE></P>
|
||||
<BR> EMail: info@arsoft.com </BLOCKQUOTE></P>
|
||||
<H3><A NAME="9_1_4">Support</A></H3>
|
||||
<P>Easy Software Products sells software support for CUPS as well as a
|
||||
commercial printing product based on CUPS called ESP Print Pro. You can
|
||||
@@ -3569,9 +3498,9 @@ test page or bottom of the print server.
|
||||
</P>
|
||||
<H3><A NAME="10_1_1">Configuring the IP Address Using ARP</A></H3>
|
||||
<P>The easiest way to set the IP address of a network device is to use
|
||||
the <CODE>arp(8)</CODE> command. The <CODE>arp</CODE> sends an Address
|
||||
Resolution Protocol ("ARP") packet to the specified Ethernet MAC
|
||||
address, setting the network device's IP address: </P>
|
||||
the <CODE>arp(1m)</CODE> command. The <CODE>arp</CODE> sends an
|
||||
Address Resolution Protocol ("ARP") packet to the specified Ethernet
|
||||
MAC address, setting the network device's IP address: </P>
|
||||
<UL>
|
||||
<PRE>
|
||||
<B>arp -s ip-address ethernet-address ENTER</B>
|
||||
@@ -3589,7 +3518,7 @@ packet with the IP address the device can use. </P>
|
||||
servers, or when you have a network device that does not remember its
|
||||
IP address after a power cycle. If you just have a single printer or
|
||||
print server, the <CODE>arp</CODE> command is the way to go. </P>
|
||||
<P>Some UNIX operating systems use a program called <CODE>rarpd(8)</CODE>
|
||||
<P>Some UNIX operating systems use a program called <CODE>rarpd(1m)</CODE>
|
||||
to manage RARP. Others, like Linux, support this protocol in the
|
||||
kernel. For systems that provide the <CODE>rarpd</CODE> program you
|
||||
will need to start it before RARP lookups will work: </P>
|
||||
@@ -3621,7 +3550,7 @@ server to set its address.
|
||||
<H3><A NAME="10_1_3">Configuring the IP Address Using BOOTP</A></H3>
|
||||
<P>The BOOTP protocol is used when you need to provide additional
|
||||
information such as the location of a configuration file to the network
|
||||
interface. Using the standard <CODE>bootpd(8)</CODE> program supplied
|
||||
interface. Using the standard <CODE>bootpd(1m)</CODE> program supplied
|
||||
with UNIX you simply need to add a line to the <VAR>/etc/bootptab</VAR>
|
||||
file; for IRIX: </P>
|
||||
<UL>
|
||||
@@ -3644,7 +3573,7 @@ provide a boot file you may leave the last part of the line blank.
|
||||
|
||||
<CENTER>
|
||||
<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
|
||||
<TR><TD><B> NOTE:</B>
|
||||
<TR><TD><B>NOTE:</B>
|
||||
<P>Some versions of UNIX do not enable the BOOTP service by default.
|
||||
The <VAR>/etc/inetd.conf</VAR> usually contains a line for the BOOTP
|
||||
service that can be uncommented if needed. </P>
|
||||
@@ -3691,7 +3620,7 @@ address</I>/PASSTHRU</TD></TR>
|
||||
|
||||
<!-- NEED 1in ---->
|
||||
<TR ALIGN="LEFT" VALIGN="TOP"><TD>Axis w/o IPP
|
||||
<BR><A HREF="#AXIS"> (see directions)</A></TD><TD>socket://<I>address</I>
|
||||
<BR><A HREF="#AXIS">(see directions)</A></TD><TD>socket://<I>address</I>
|
||||
:9100
|
||||
<BR> socket://<I>address</I>:9101
|
||||
<BR> socket://<I>address</I>:9102</TD></TR>
|
||||
@@ -3713,7 +3642,7 @@ lpd://<I>address</I>/pr1
|
||||
/pr1
|
||||
<BR> lpd://<I>address</I>/pr2
|
||||
<BR> lpd://<I>address</I>/pr3</TD></TR>
|
||||
<TR ALIGN="LEFT" VALIGN="TOP"><TD>EFI® Fiery® RIP</TD><TD>lpd://<I>
|
||||
<TR ALIGN="LEFT" VALIGN="TOP"><TD>EFI® Fiery RIP</TD><TD>lpd://<I>
|
||||
address</I>/print</TD></TR>
|
||||
<TR ALIGN="LEFT" VALIGN="TOP"><TD>EPSON® Multiprotocol Ethernet
|
||||
Interface Board</TD><TD>socket://<I>address</I></TD></TR>
|
||||
@@ -3746,9 +3675,8 @@ lpd://<I>address</I>/LPT1_PASSTHRU
|
||||
lpd://<I>address</I>/ps</TD></TR>
|
||||
|
||||
<!-- NEED 1in ---->
|
||||
<TR ALIGN="LEFT" VALIGN="TOP"><TD>Linksys EtherFast®
|
||||
<BR><A HREF="#LINKSYS"> (see directions)</A></TD><TD>socket://<I>address</I>
|
||||
:4010
|
||||
<TR ALIGN="LEFT" VALIGN="TOP"><TD>Linksys EtherFast®</TD><TD>socket://<I>
|
||||
address</I>:4010
|
||||
<BR> socket://<I>address</I>:4020
|
||||
<BR> socket://<I>address</I>:4030</TD></TR>
|
||||
<TR ALIGN="LEFT" VALIGN="TOP"><TD>Kodak®</TD><TD>lpd://<I>address</I>/ps</TD>
|
||||
@@ -3757,12 +3685,8 @@ lpd://<I>address</I>/ps</TD></TR>
|
||||
lpd://<I>address</I>/ps</TD></TR>
|
||||
<TR ALIGN="LEFT" VALIGN="TOP"><TD>Tektronix® PhaserShare<SUP>TM</SUP></TD><TD>
|
||||
socket://<I>address</I>:9100</TD></TR>
|
||||
<TR ALIGN="LEFT" VALIGN="TOP"><TD>XEROX® 4512 NIC</TD><TD>lpd://<I>
|
||||
address</I>/PORT1</TD></TR>
|
||||
<TR ALIGN="LEFT" VALIGN="TOP"><TD>XEROX® XNIC</TD><TD>lpd://<I>address</I>
|
||||
/PASSTHRU</TD></TR>
|
||||
<TR ALIGN="LEFT" VALIGN="TOP"><TD>XEROX® (most others)</TD><TD>socket://<I>
|
||||
address</I>:5503</TD></TR>
|
||||
<TR ALIGN="LEFT" VALIGN="TOP"><TD>XEROX®</TD><TD>socket://<I>address</I>
|
||||
:5503</TD></TR>
|
||||
</TABLE>
|
||||
</CENTER>
|
||||
</P>
|
||||
@@ -3868,77 +3792,6 @@ ftp> <B>quit ENTER</B>
|
||||
</PRE>
|
||||
</UL>
|
||||
<P>Your Axis print server is now ready for use! </P>
|
||||
<H2><A NAME="LINKSYS">Configuring Linksys Print Servers</A></H2>
|
||||
<P>The Linksys print servers can be configured using ARP, RARP, or
|
||||
BOOTP. Like older Axis print servers, an additional step must be
|
||||
performed to configure the TCP/IP portion of the print server for use
|
||||
with CUPS.
|
||||
<!-- NEED 3in ---->
|
||||
</P>
|
||||
<P>Each print server contains a configuration file named <VAR>CONFIG</VAR>
|
||||
that contains a list of network parameters used by the server. To
|
||||
modify this file you must first download it from the print server using
|
||||
the <CODE>ftp(1)</CODE> program: </P>
|
||||
<UL>
|
||||
<PRE>
|
||||
<B>ftp -n ip-address ENTER</B>
|
||||
Connected to ip-address.
|
||||
220 Print Server Ready.
|
||||
Remote system type is Print.
|
||||
ftp> <B>get CONFIG ENTER</B>
|
||||
local: CONFIG remote: CONFIG
|
||||
200 Command OK.
|
||||
150 Open ASCII Mode Connection.
|
||||
WARNING! 68 bare linefeeds received in ASCII mode
|
||||
File may not have transferred correctly.
|
||||
226 Transfer complete.
|
||||
##### bytes received in #.## seconds (##### Kbytes/s)
|
||||
ftp> <B>quit ENTER</B>
|
||||
221 Goodbye.
|
||||
</PRE>
|
||||
</UL>
|
||||
|
||||
<!-- NEED 2in ---->
|
||||
<P>Next, edit the file with your favorite text editor and locate the
|
||||
lines beginning with: </P>
|
||||
<UL>
|
||||
<PRE>
|
||||
0100 L1_PROUT:P1
|
||||
0120 L2_PROUT:P1
|
||||
0140 L3_PROUT:P1
|
||||
</PRE>
|
||||
</UL>
|
||||
<P>Change the port number for each parallel and serial port on the
|
||||
server as follows: </P>
|
||||
<UL>
|
||||
<PRE>
|
||||
0100 L1_PROUT:<B>P1</B>
|
||||
0120 L2_PROUT:<B>P2</B>
|
||||
0140 L3_PROUT:<B>P3</B>
|
||||
</PRE>
|
||||
</UL>
|
||||
|
||||
<!-- NEED 4in ---->
|
||||
<P>This maps each virtual printer with a physical port. Save the file
|
||||
and then upload the new <VAR>CONFIG</VAR> file using the <CODE>ftp</CODE>
|
||||
command: </P>
|
||||
<UL>
|
||||
<PRE>
|
||||
<B>ftp -n ip-address ENTER</B>
|
||||
Connected to ip-address.
|
||||
220 Print Server Ready.
|
||||
Remote system type is Print.
|
||||
ftp> <B>put CONFIG ENTER</B>
|
||||
local: CONFIG remote: CONFIG
|
||||
200 Command OK.
|
||||
150 Open ASCII Mode Connection.
|
||||
226 Transfer complete.
|
||||
##### bytes received in #.## seconds (##### Kbytes/s)
|
||||
ftp> <B>quit ENTER</B>
|
||||
221 Goodbye.
|
||||
</PRE>
|
||||
</UL>
|
||||
<P>Your Linksys print server is now ready for use! </P>
|
||||
<H1 ALIGN="RIGHT"><A NAME="PRINTER_DRIVERS">C - Printer Drivers</A></H1>
|
||||
<P>This appendix lists the printer drivers that are provided with CUPS. </P>
|
||||
<H2><A NAME="11_1">Printer Drivers</A></H2>
|
||||
@@ -3992,22 +3845,20 @@ the Common UNIX Printing System.
|
||||
<CENTER>
|
||||
<TABLE BORDER="1" WIDTH="80%">
|
||||
<TR VALIGN="TOP"><TH>Pathname</TH><TH>Description</TH></TR>
|
||||
<TR VALIGN="TOP"><TD>/etc/cups/certs/</TD><TD>The location of
|
||||
authentication certificate files for local HTTP clients.</TD></TR>
|
||||
<TR VALIGN="TOP"><TD>/etc/cups/classes.conf</TD><TD>The printer classes
|
||||
configuration file for the scheduler.</TD></TR>
|
||||
<TR VALIGN="TOP"><TD>/etc/cups/cupsd.conf</TD><TD>The scheduler
|
||||
configuration file.</TD></TR>
|
||||
<TR VALIGN="TOP"><TD>/etc/cups/interfaces/</TD><TD>The location of
|
||||
System V interface scripts for printers.</TD></TR>
|
||||
<TR VALIGN="TOP"><TD>/etc/cups/mime.convs</TD><TD>The list of standard
|
||||
file filters included with ESP Print Pro.</TD></TR>
|
||||
<TR VALIGN="TOP"><TD>/etc/cups/mime.types</TD><TD>The list of
|
||||
recognized file types for ESP Print Pro.</TD></TR>
|
||||
<TR VALIGN="TOP"><TD>/etc/cups/ppd/</TD><TD>The location of PostScript
|
||||
Printer Description ("PPD") files for printers.</TD></TR>
|
||||
<TR VALIGN="TOP"><TD>/etc/cups/printers.conf</TD><TD>The printer
|
||||
configuration file for the scheduler.</TD></TR>
|
||||
<TR VALIGN="TOP"><TD>/etc/cups/interfaces/</TD><TD>The location of
|
||||
System V interface scripts for printers.</TD></TR>
|
||||
<TR VALIGN="TOP"><TD>/etc/cups/ppd/</TD><TD>The location of PostScript
|
||||
Printer Description ("PPD") files for printers.</TD></TR>
|
||||
<TR VALIGN="TOP"><TD>/usr/bin/cancel</TD><TD>The System V cancel job(s)
|
||||
command.</TD></TR>
|
||||
<TR VALIGN="TOP"><TD>/usr/bin/disable</TD><TD>The System V disable
|
||||
@@ -4072,8 +3923,6 @@ get-ppds command.</TD></TR>
|
||||
</TR>
|
||||
<TR VALIGN="TOP"><TD>/usr/share/catman/a_man/
|
||||
<BR> /usr/share/catman/u_man/</TD><TD>Man pages (IRIX)</TD></TR>
|
||||
<TR VALIGN="TOP"><TD>/usr/share/man/</TD><TD>Man pages (Compaq Tru64
|
||||
UNIX, HP-UX, Solaris)</TD></TR>
|
||||
<TR VALIGN="TOP"><TD>/usr/man/</TD><TD>Man pages (all others)</TD></TR>
|
||||
<TR VALIGN="TOP"><TD>/usr/share/cups/data/</TD><TD>The location of
|
||||
filter data files.</TD></TR>
|
||||
@@ -4105,7 +3954,7 @@ encounter when installing and configuring CUPS. </P>
|
||||
<P>Commercial support for CUPS is available from Easy Software
|
||||
Products. For more information please contact us at: </P>
|
||||
<UL>
|
||||
<LI>WWW: <A HREF="http://www.easysw.com"><CODE> http://www.easysw.com</CODE>
|
||||
<LI>WWW: <A HREF="http://www.easysw.com"><CODE>http://www.easysw.com</CODE>
|
||||
</A></LI>
|
||||
<LI>EMail: <A HREF="mailto:support@easysw.com">support@easysw.com</A></LI>
|
||||
<LI>Telephone (M-F, 9-5 EST): +1.301.373.9603 </LI>
|
||||
@@ -4142,7 +3991,7 @@ described in <A HREF="PRINTING_MANAGEMENT">Chapter 8, "Printing System
|
||||
Management"</A>.
|
||||
<CENTER>
|
||||
<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
|
||||
<TR><TD><B> NOTE:</B>
|
||||
<TR><TD><B>NOTE:</B>
|
||||
<P>Disabling password checks will allow any local user to change your
|
||||
printer and class configuration, but remote administration from
|
||||
another machine will still not be allowed. </P>
|
||||
@@ -4166,7 +4015,7 @@ described in <A HREF="PRINTING_MANAGEMENT">Chapter 8, "Printing System
|
||||
Management"</A>.
|
||||
<CENTER>
|
||||
<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
|
||||
<TR><TD><B> NOTE:</B>
|
||||
<TR><TD><B>NOTE:</B>
|
||||
<P>Allowing administration access from all hosts is a potential
|
||||
security risk. Please read <A HREF="PRINTING_SECURITY">Chapter 6,
|
||||
"Printing System Management"</A> for a description of these risks and
|
||||
@@ -4182,7 +4031,7 @@ ways to minimize them. </P>
|
||||
<OL>
|
||||
<LI>not specifying the correct password for the root account. </LI>
|
||||
<LI>accessing the CUPS server using the hostname or IP address of the
|
||||
server without enabling remote access for administration functions.
|
||||
server but haven't enabled remote access for administration functions.
|
||||
This can be corrected by following the instructions in the <A HREF="#ALLOW_REMOTE">
|
||||
"I Can't Do Administration Tasks from Another Machine!"</A> section
|
||||
earlier in this appendix. </LI>
|
||||
|
||||
+2584
-2743
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+58
-209
@@ -1,7 +1,7 @@
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.1.1">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.1">
|
||||
<META NAME="Author" CONTENT="Easy Software Products">
|
||||
<TITLE>CUPS Software Administrators Manual</TITLE>
|
||||
</HEAD>
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
<P>This software administrators manual provides printer administration
|
||||
information for the Common UNIX Printing System<SUP>TM</SUP>
|
||||
("CUPS<SUP>TM</SUP>"), version 1.1.1.
|
||||
("CUPS<SUP>TM</SUP>"), version 1.1.
|
||||
|
||||
<EMBED SRC="system-overview.shtml">
|
||||
|
||||
@@ -148,7 +148,7 @@ from the source code.
|
||||
|
||||
<H3><A NAME="REQUIREMENTS">Requirements</A></H3>
|
||||
|
||||
<P>You'll need ANSI-compliant C and C++ compilers to build CUPS on your
|
||||
<P>You'll need an ANSI-compliant C compiler to build CUPS on your
|
||||
system. As its name implies, CUPS is designed to run on the UNIX
|
||||
operating system, however the CUPS interface library and most of the
|
||||
filters and backends supplied with CUPS should also compile and run
|
||||
@@ -199,23 +199,12 @@ software in another location:
|
||||
|
||||
<P>If the PNG, JPEG, TIFF, and ZLIB libraries are not installed in a
|
||||
system default location (typically <VAR>/usr/include</VAR> and
|
||||
<VAR>/usr/lib</VAR>) you'll need to set the <CODE>CFLAGS</CODE>,
|
||||
<CODE>CXXFLAGS</CODE>, and <CODE>LDFLAGS</CODE> environment variables
|
||||
prior to running configure:
|
||||
<VAR>/usr/lib</VAR>) you'll need to set the <CODE>CFLAGS</CODE> and
|
||||
<CODE>LDFLAGS</CODE> environment variables prior to running configure:
|
||||
|
||||
<UL><PRE>
|
||||
<B>setenv CFLAGS "-I/some/directory" ENTER</B>
|
||||
<B>setenv CXXFLAGS "-I/some/directory" ENTER</B>
|
||||
<B>setenv LDFLAGS "-L/some/directory" ENTER</B>
|
||||
<B>./configure ... ENTER</B>
|
||||
</PRE></UL>
|
||||
|
||||
<P>or:
|
||||
|
||||
<UL><PRE>
|
||||
<B>CFLAGS="-I/some/directory"; export CFLAGS ENTER</B>
|
||||
<B>CXXFLAGS="-I/some/directory"; export CXXFLAGS ENTER</B>
|
||||
<B>LDFLAGS="-L/some/directory"; export LDFLAGS ENTER</B>
|
||||
<B>setenv CFLAGS "-I/some/directory"</B>
|
||||
<B>setenv LDFLAGS "-L/some/directory"</B>
|
||||
<B>./configure ... ENTER</B>
|
||||
</PRE></UL>
|
||||
|
||||
@@ -244,7 +233,7 @@ prior to running configure:
|
||||
<P>Installing CUPS will overwrite your existing printing
|
||||
system. If you experience difficulties with the CUPS software
|
||||
and need to go back to your old printing system, you will need
|
||||
to reinstall the old printing system from your operating system CDs.
|
||||
to reinstall the printing system from your operating system CDs.
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE></CENTER>
|
||||
@@ -277,7 +266,7 @@ only available for Linux.
|
||||
system. If you experience difficulties with the CUPS software
|
||||
and need to go back to your old printing system, you will need
|
||||
to remove the CUPS software with the provided script and/or
|
||||
reinstall the old printing system from your operating system CDs.
|
||||
reinstall the printing system from your operating system CDs.
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE></CENTER>
|
||||
@@ -296,7 +285,6 @@ Once you are the root user, run the installation script with:
|
||||
<P>After asking you a few yes/no questions the CUPS software will be
|
||||
installed and the scheduler will be started automatically.
|
||||
|
||||
<!-- NEED 2in -->
|
||||
<H3><A NAME="RPM-BINARY">Installing an RPM Distribution</A></H3>
|
||||
|
||||
<P>To install the CUPS software from an RPM distribution you will need
|
||||
@@ -346,7 +334,7 @@ example, the first parallel port in Linux usually uses a device URI of
|
||||
|
||||
<!-- NEED 2.5in -->
|
||||
<P>You can see a complete list of supported devices by running the
|
||||
<CODE>lpinfo(8)</CODE> command:
|
||||
<CODE>lpinfo(1m)</CODE> command:
|
||||
|
||||
<UL><PRE>
|
||||
<B>lpinfo -v ENTER</B>
|
||||
@@ -358,7 +346,7 @@ network lpd
|
||||
direct parallel:/dev/lp1
|
||||
serial serial:/dev/ttyS1?baud=115200
|
||||
serial serial:/dev/ttyS2?baud=115200
|
||||
direct usb:/dev/usb/lp0
|
||||
direct usb:/dev/usb/usblp0
|
||||
network smb
|
||||
</PRE></UL>
|
||||
|
||||
@@ -379,7 +367,7 @@ DeskJet, EPSON 9-pin, EPSON 24-pin, and EPSON Stylus printers.
|
||||
<H2>Adding Your First Printer</H2>
|
||||
|
||||
<P>CUPS provides two methods for adding printers: a command-line
|
||||
program called <CODE>lpadmin(8)</CODE> and a Web interface. The
|
||||
program called <CODE>lpadmin(1m)</CODE> and a Web interface. The
|
||||
<CODE>lpadmin</CODE> command allows you to perform most printer
|
||||
administration tasks from the command-line and is located in
|
||||
<VAR>/usr/sbin</VAR>. The Web interface is located at:
|
||||
@@ -493,7 +481,7 @@ to add or modify a printer:
|
||||
|
||||
<DD>Enables the printer and accepts job. This option is
|
||||
equivalent to running the <CODE>enable(1)</CODE> and
|
||||
<CODE>accept(8)</CODE> commands on the printer.
|
||||
<CODE>accept(1m)</CODE> commands on the printer.
|
||||
|
||||
<DT>-L <I>location</I>
|
||||
|
||||
@@ -682,7 +670,7 @@ jobs to a single server. However, if that server goes down then all
|
||||
printing will be disabled. Use this configuration only as absolutely needed.
|
||||
|
||||
<P>The default server is normally "localhost". To override the default
|
||||
server create a file named <VAR>/etc/cups/client.conf</VAR> and add
|
||||
server create a file named <VAR>/etc/cups/conf/client.conf</VAR> and add
|
||||
a line reading:
|
||||
|
||||
<UL><PRE>
|
||||
@@ -700,8 +688,8 @@ reading:
|
||||
ServerName <I>server</I>
|
||||
</PRE></UL>
|
||||
|
||||
<P>to the file. The <VAR>server</VAR> name can be the hostname or IP
|
||||
address of the default server.
|
||||
<P>to the file. As before the <VAR>server</VAR> name can be the
|
||||
hostname or IP address of the default server.
|
||||
|
||||
<H3><A NAME="CLIENT_AUTO">Automatic Configuration of Print Queues</A></H3>
|
||||
|
||||
@@ -784,8 +772,6 @@ configuration files are located in the <VAR>/etc/cups</VAR> directory:
|
||||
</DL>
|
||||
</UL>
|
||||
|
||||
<H2><A NAME="RESTARTING">Restarting the CUPS Server</A></H2>
|
||||
|
||||
<P>Once you have made a change to a configuration file you need to
|
||||
restart the CUPS server by sending it a <CODE>HUP</CODE> signal or using the
|
||||
supplied initialization script. The CUPS distributions install the
|
||||
@@ -803,9 +789,11 @@ script in the <VAR>init.d</VAR> directory with the name
|
||||
<P>The <VAR>/etc/cups/cupsd.conf</VAR> file contains configuration
|
||||
<I>directives</I> that control how the server functions. Each directive
|
||||
is listed on a line by itself followed by its value. Comments are
|
||||
introduced using the number sign ("#") character at the beginning of a
|
||||
line. Since the server configuration file consists of plain text, you
|
||||
can use your favorite text editor to make changes to it.
|
||||
introduced using the number sign ("#") character at the beginning of
|
||||
a line.
|
||||
|
||||
<P>Since the server configuration file consists of plain text, you can
|
||||
use your favorite text editor to make changes to it.
|
||||
|
||||
<!-- NEED 4in -->
|
||||
<H2>Server Directives</H2>
|
||||
@@ -832,10 +820,9 @@ determine how the server operates:
|
||||
<LI><A HREF="#BrowsePoll"><CODE>BrowsePoll</CODE></A>
|
||||
<LI><A HREF="#BrowsePort"><CODE>BrowsePort</CODE></A>
|
||||
<LI><A HREF="#BrowseRelay"><CODE>BrowseRelay</CODE></A>
|
||||
<LI><A HREF="#BrowseShortNames"><CODE>BrowseShortNames</CODE></A>
|
||||
<LI><A HREF="#BrowseTimeout"><CODE>BrowseTimeout</CODE></A>
|
||||
<LI><A HREF="#Browsing"><CODE>Browsing</CODE></A>
|
||||
<LI><A HREF="#DataDir"><CODE>DataDir</CODE></A>
|
||||
<LI><A HREF="#DefaultCharset"><CODE>DefaultCharset</CODE></A>
|
||||
|
||||
</TD>
|
||||
<TD VALIGN="TOP">
|
||||
@@ -843,7 +830,6 @@ determine how the server operates:
|
||||
</TD>
|
||||
<TD VALIGN="TOP">
|
||||
|
||||
<LI><A HREF="#DefaultCharset"><CODE>DefaultCharset</CODE></A>
|
||||
<LI><A HREF="#DefaultLanguage"><CODE>DefaultLanguage</CODE></A>
|
||||
<LI><A HREF="#Deny"><CODE>Deny</CODE></A>
|
||||
<LI><A HREF="#DocumentRoot"><CODE>DocumentRoot</CODE></A>
|
||||
@@ -859,6 +845,7 @@ determine how the server operates:
|
||||
<LI><A HREF="#MaxClients"><CODE>MaxClients</CODE></A>
|
||||
<LI><A HREF="#MaxLogSize"><CODE>MaxLogSize</CODE></A>
|
||||
<LI><A HREF="#MaxRequestSize"><CODE>MaxRequestSize</CODE></A>
|
||||
<LI><A HREF="#Order"><CODE>Order</CODE></A>
|
||||
|
||||
</TD>
|
||||
<TD VALIGN="TOP">
|
||||
@@ -866,7 +853,6 @@ determine how the server operates:
|
||||
</TD>
|
||||
<TD VALIGN="TOP">
|
||||
|
||||
<LI><A HREF="#Order"><CODE>Order</CODE></A>
|
||||
<LI><A HREF="#PageLog"><CODE>PageLog</CODE></A>
|
||||
<LI><A HREF="#Port"><CODE>Port</CODE></A>
|
||||
<LI><A HREF="#PreserveJobFiles"><CODE>PreserveJobFiles</CODE></A>
|
||||
@@ -896,7 +882,6 @@ determine how the server operates:
|
||||
|
||||
<UL><PRE>
|
||||
AccessLog /var/log/cups/access_log
|
||||
AccessLog /var/log/cups/access_log-%s
|
||||
AccessLog syslog
|
||||
</PRE></UL>
|
||||
|
||||
@@ -908,15 +893,12 @@ to the <A HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
|
||||
access log file is stored in "common log format" and can be used by any
|
||||
web access reporting tool to generate a report on CUPS server activity.
|
||||
|
||||
<P>The server name can be included in the filename by using
|
||||
<CODE>%s</CODE> in the name.
|
||||
|
||||
<P>The special name "syslog" can be used to send the access information
|
||||
to the system log instead of a plain file.
|
||||
|
||||
<P>The default access log file is <VAR>/var/log/cups/access_log</VAR>.
|
||||
|
||||
<!-- NEED 6in -->
|
||||
<!-- NEED 5in -->
|
||||
<H3><A NAME="Allow">Allow</A></H3>
|
||||
<HR>
|
||||
|
||||
@@ -1295,27 +1277,6 @@ BrowseRelay 127.0.0.1 255.255.255.255
|
||||
<P>This effectively provides access to printers on a WAN for all clients
|
||||
on the LAN(s).
|
||||
|
||||
<!-- NEED 3in -->
|
||||
<H3><A NAME="BrowseShortNames">BrowseShortNames</A></H3>
|
||||
<HR>
|
||||
|
||||
<H4>Examples</H4>
|
||||
|
||||
<UL><PRE>
|
||||
BrowseShortNames Yes
|
||||
BrowseShortNames No
|
||||
</PRE></UL>
|
||||
|
||||
<H4>Description</H4>
|
||||
|
||||
<P>The <CODE>BrowseShortNames</CODE> directive specifies whether or not
|
||||
short names are used for remote printers when possible. Short names are
|
||||
just the remote printer name, without the server ("printer"). If more than
|
||||
one remote printer is detected with the same name, the printers will have
|
||||
long names ("printer@server1", "printer@server2".)
|
||||
|
||||
<P>The default value for this option is <CODE>Yes</CODE>.
|
||||
|
||||
<!-- NEED 3in -->
|
||||
<H3><A NAME="BrowseTimeout">BrowseTimeout</A></H3>
|
||||
<HR>
|
||||
@@ -1338,7 +1299,7 @@ destinations.
|
||||
<A HREF="#BrowseInterval"><CODE>BrowseInterval</CODE></A> value. Otherwise
|
||||
printers and classes will disappear from client systems between updates.
|
||||
|
||||
<!-- NEED 4in -->
|
||||
<!-- NEED 3in -->
|
||||
<H3><A NAME="Browsing">Browsing</A></H3>
|
||||
<HR>
|
||||
|
||||
@@ -1367,21 +1328,6 @@ browsing is enabled. The default setting is <CODE>On</CODE>.
|
||||
</TR>
|
||||
</TABLE></CENTER>
|
||||
|
||||
<!-- NEED 3in -->
|
||||
<H3><A NAME="DataDir">DataDir</A></H3>
|
||||
<HR>
|
||||
|
||||
<H4>Examples</H4>
|
||||
|
||||
<UL><PRE>
|
||||
DataDir /usr/share/cups
|
||||
</PRE></UL>
|
||||
|
||||
<H4>Description</H4>
|
||||
|
||||
<P>The <CODE>DataDir</CODE> directive sets the directory to use for data
|
||||
files.
|
||||
|
||||
<!-- NEED 3in -->
|
||||
<H3><A NAME="DefaultCharset">DefaultCharset</A></H3>
|
||||
<HR>
|
||||
@@ -1519,7 +1465,6 @@ the web content by providing subdirectories for each language needed.
|
||||
|
||||
<UL><PRE>
|
||||
ErrorLog /var/log/cups/error_log
|
||||
ErrorLog /var/log/cups/error_log-%s
|
||||
ErrorLog syslog
|
||||
</PRE></UL>
|
||||
|
||||
@@ -1530,9 +1475,6 @@ file. If the filename is not absolute then it is assumed to be relative
|
||||
to the <A HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
|
||||
default error log file is <VAR>/var/log/cups/error_log</VAR>.
|
||||
|
||||
<P>The server name can be included in the filename by using
|
||||
<CODE>%s</CODE> in the name.
|
||||
|
||||
<P>The special name "syslog" can be used to send the error information
|
||||
to the system log instead of a plain file.
|
||||
|
||||
@@ -1822,7 +1764,6 @@ The following values are supported:
|
||||
|
||||
<UL><PRE>
|
||||
PageLog /var/log/cups/page_log
|
||||
PageLog /var/log/cups/page_log-%s
|
||||
PageLog syslog
|
||||
</PRE></UL>
|
||||
|
||||
@@ -1833,9 +1774,6 @@ file. If the filename is not absolute then it is assumed to be relative
|
||||
to the <A HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
|
||||
default page log file is <VAR>/var/log/cups/page_log</VAR>.
|
||||
|
||||
<P>The server name can be included in the filename by using
|
||||
<CODE>%s</CODE> in the name.
|
||||
|
||||
<P>The special name "syslog" can be used to send the page information
|
||||
to the system log instead of a plain file.
|
||||
|
||||
@@ -2126,10 +2064,11 @@ filter and CGI programs run as. The default user is <CODE>lp</CODE>.
|
||||
<!-- NEW PAGE -->
|
||||
<H2><A NAME="PRINTING_SECURITY">Printing System Security</A></H2>
|
||||
|
||||
<P>CUPS provides support for address, certificate, and password (Basic
|
||||
and Digest) based authentication and access control. Certificate and
|
||||
password authentication provide ways to limit access to individual
|
||||
people or groups.
|
||||
<P>CUPS provides support for address, certificate, and password (Basic and
|
||||
Digest) based authentication and access control.
|
||||
|
||||
<P>Certificate and password authentication provide ways to limit access to
|
||||
individual people or groups.
|
||||
|
||||
<P>Address based access control allows you to limit access to specific
|
||||
systems, networks, or domains. While this does not provide authentication,
|
||||
@@ -2276,7 +2215,6 @@ additional group membership requirements are checked.
|
||||
AuthType Basic
|
||||
</PRE></UL>
|
||||
|
||||
<!-- NEED 7in -->
|
||||
<H3>Using Digest Authentication</H3>
|
||||
|
||||
<P>Digest authentication uses users and passwords defined in the
|
||||
@@ -2429,16 +2367,13 @@ directive in the <VAR>cupsd.conf</VAR> file.
|
||||
If no username and password is supplied for the request then this field
|
||||
contains "-".
|
||||
|
||||
<P>The <I>date-time</I> field is the date and time of the request in local time
|
||||
and is in the format:
|
||||
<P>The <I>date-time</I> field is the date and time of the request in Greenwich
|
||||
Mean Time (a.k.a. ZULU) and is in the format:
|
||||
|
||||
<UL><PRE>
|
||||
[DD/MON/YYYY:HH:MM:SS +ZZZZ]
|
||||
[DD/MON/YYYY:HH:MM:SS +0000]
|
||||
</PRE></UL>
|
||||
|
||||
<P>where <I>ZZZZ</I> is the timezone offset in hours and minutes from Greenwich
|
||||
Mean Time (a.k.a. GMT a.k.a. ZULU.)
|
||||
|
||||
<P>The <I>method</I> field is the HTTP method used ("GET", "PUT", "POST", etc.)
|
||||
|
||||
<P>The <I>resource</I> field is the filename of the requested resource.
|
||||
@@ -2453,7 +2388,7 @@ above.
|
||||
|
||||
<P>The <I>bytes</I> field contains the number of bytes in the request.
|
||||
For POST requests the <I>bytes</I> field contains the number of bytes
|
||||
that was received from the client.
|
||||
of non-IPP data that is received from the client.
|
||||
|
||||
<H3>The error_log File</H3>
|
||||
|
||||
@@ -2710,7 +2645,8 @@ different file types and filters.
|
||||
<P>Once you choose the names for these files, create them using your
|
||||
favorite text editor as described earlier in this chapter. Once you
|
||||
have created the files, restart the <CODE>cupsd</CODE> process as
|
||||
described earlier in <A HREF="#RESTARTING">"Restarting the CUPS Server"</A>.
|
||||
described in <A HREF="#PRINTING_MANAGEMENT">Chapter N, "Printing System
|
||||
Configuration"</A>.
|
||||
|
||||
<H3>Printer Drivers and PPD Files</H3>
|
||||
|
||||
@@ -2755,7 +2691,7 @@ the automatic client configuration and printer options are not supported by
|
||||
the LPD protocol, so you must manually configure each client for the printers
|
||||
it needs to access.
|
||||
|
||||
<P>The <CODE>cups-lpd(8)</CODE> program provides support for LPD clients.
|
||||
<P>The <CODE>cups-lpd(1m)</CODE> program provides support for LPD clients.
|
||||
To enable LPD support on your server, edit the <VAR>/etc/inetd.conf</VAR>
|
||||
file and add a line reading:
|
||||
|
||||
@@ -2766,13 +2702,13 @@ printer stream tcp nowait lp /usr/lib/cups/daemon/cups-lpd cups-lpd
|
||||
<P>The path to the <CODE>cups-lpd</CODE> may vary depending on your
|
||||
installation.
|
||||
|
||||
<P>Once you have added this line, send the <CODE>inetd(8)</CODE> process
|
||||
<P>Once you have added this line, send the <CODE>inetd(1m)</CODE> process
|
||||
a <CODE>HUP</CODE> signal or reboot the system:
|
||||
|
||||
<UL><PRE>
|
||||
<B>killall -HUP inetd ENTER</B> [IRIX and some versions of Linux]
|
||||
<B>kill -HUP <I>pid</I> ENTER [Others]</B>
|
||||
<B>reboot ENTER [For all systems if the HUP signal fails]</B>
|
||||
<B>kill -HUP <I>pid</I> ENTER</B>
|
||||
<B>reboot ENTER</B>
|
||||
</PRE></UL>
|
||||
|
||||
<H2>Printing to LPD Servers</H2>
|
||||
@@ -2796,7 +2732,7 @@ free and commercial software packages that do.
|
||||
|
||||
<H3>Columbia Appletalk Package (CAP)</H3>
|
||||
|
||||
<P>Because the CAP LaserWriter server (<CODE>lwsrv(8)</CODE>) does
|
||||
<P>Because the CAP LaserWriter server (<CODE>lwsrv(1m)</CODE>) does
|
||||
not support specification of PPD files, we do not recommend that you
|
||||
use CAP with CUPS. However, you can run the <CODE>lpsrv</CODE> program
|
||||
for limited printing with the command:
|
||||
@@ -2812,7 +2748,7 @@ printer, and <CODE>printer</CODE> is the name of the CUPS print queue.
|
||||
<H3>XINET KA/Spool</H3>
|
||||
|
||||
<P>To use your system as a print server for Mac OS clients,
|
||||
configure each printer using a <CODE>papserver(8)</CODE> in the
|
||||
configure each printer using a <CODE>papserver(1m)</CODE> in the
|
||||
<VAR>/usr/adm/appletalk/services</VAR> file, specifying the
|
||||
corresponding PPD file in the <VAR>/etc/cups/ppd</VAR> directory for
|
||||
each printer. For a printer named <CODE>MyPrinter</CODE> the entry
|
||||
@@ -3009,7 +2945,7 @@ test page or bottom of the print server.
|
||||
<H3>Configuring the IP Address Using ARP</H3>
|
||||
|
||||
<P>The easiest way to set the IP address of a network device is to use
|
||||
the <CODE>arp(8)</CODE> command. The <CODE>arp</CODE> sends an Address
|
||||
the <CODE>arp(1m)</CODE> command. The <CODE>arp</CODE> sends an Address
|
||||
Resolution Protocol ("ARP") packet to the specified Ethernet MAC address,
|
||||
setting the network device's IP address:
|
||||
|
||||
@@ -3033,7 +2969,7 @@ IP address after a power cycle. If you just have a single printer or
|
||||
print server, the <CODE>arp</CODE> command is the way to go.
|
||||
|
||||
<P>Some UNIX operating systems use a program called
|
||||
<CODE>rarpd(8)</CODE> to manage RARP. Others, like Linux, support this
|
||||
<CODE>rarpd(1m)</CODE> to manage RARP. Others, like Linux, support this
|
||||
protocol in the kernel. For systems that provide the <CODE>rarpd</CODE>
|
||||
program you will need to start it before RARP lookups will work:
|
||||
|
||||
@@ -3065,7 +3001,7 @@ server to set its address.
|
||||
|
||||
<P>The BOOTP protocol is used when you need to provide additional information
|
||||
such as the location of a configuration file to the network interface. Using
|
||||
the standard <CODE>bootpd(8)</CODE> program supplied with UNIX you simply need to
|
||||
the standard <CODE>bootpd(1m)</CODE> program supplied with UNIX you simply need to
|
||||
add a line to the <VAR>/etc/bootptab</VAR> file; for IRIX:
|
||||
|
||||
<UL><PRE>
|
||||
@@ -3170,7 +3106,7 @@ CUPS:
|
||||
lpd://<I>address</I>/pr3</TD>
|
||||
</TR>
|
||||
<TR ALIGN="LEFT" VALIGN="TOP">
|
||||
<TD>EFI® Fiery® RIP</TD>
|
||||
<TD>EFI® Fiery RIP</TD>
|
||||
<TD>lpd://<I>address</I>/print</TD>
|
||||
</TR>
|
||||
<TR ALIGN="LEFT" VALIGN="TOP">
|
||||
@@ -3212,8 +3148,7 @@ CUPS:
|
||||
</TR>
|
||||
<!-- NEED 1in -->
|
||||
<TR ALIGN="LEFT" VALIGN="TOP">
|
||||
<TD>Linksys EtherFast®<BR>
|
||||
<A HREF="#LINKSYS">(see directions)</A></TD>
|
||||
<TD>Linksys EtherFast®</TD>
|
||||
<TD>socket://<I>address</I>:4010<BR>
|
||||
socket://<I>address</I>:4020<BR>
|
||||
socket://<I>address</I>:4030</TD>
|
||||
@@ -3231,15 +3166,7 @@ CUPS:
|
||||
<TD>socket://<I>address</I>:9100</TD>
|
||||
</TR>
|
||||
<TR ALIGN="LEFT" VALIGN="TOP">
|
||||
<TD>XEROX® 4512 NIC</TD>
|
||||
<TD>lpd://<I>address</I>/PORT1</TD>
|
||||
</TR>
|
||||
<TR ALIGN="LEFT" VALIGN="TOP">
|
||||
<TD>XEROX® XNIC</TD>
|
||||
<TD>lpd://<I>address</I>/PASSTHRU</TD>
|
||||
</TR>
|
||||
<TR ALIGN="LEFT" VALIGN="TOP">
|
||||
<TD>XEROX® (most others)</TD>
|
||||
<TD>XEROX®</TD>
|
||||
<TD>socket://<I>address</I>:5503</TD>
|
||||
</TR>
|
||||
</TABLE></CENTER>
|
||||
@@ -3344,76 +3271,6 @@ ftp> <B>quit ENTER</B>
|
||||
|
||||
<P>Your Axis print server is now ready for use!
|
||||
|
||||
<H2><A NAME="LINKSYS">Configuring Linksys Print Servers</A></H2>
|
||||
|
||||
<P>The Linksys print servers can be configured using ARP, RARP, or
|
||||
BOOTP. Like older Axis print servers, an additional step must be
|
||||
performed to configure the TCP/IP portion of the print server for use
|
||||
with CUPS.
|
||||
|
||||
<!-- NEED 3in -->
|
||||
<P>Each print server contains a configuration file named
|
||||
<VAR>CONFIG</VAR> that contains a list of network parameters used by
|
||||
the server. To modify this file you must first download it from the
|
||||
print server using the <CODE>ftp(1)</CODE> program:
|
||||
|
||||
<UL><PRE>
|
||||
<B>ftp -n ip-address ENTER</B>
|
||||
Connected to ip-address.
|
||||
220 Print Server Ready.
|
||||
Remote system type is Print.
|
||||
ftp> <B>get CONFIG ENTER</B>
|
||||
local: CONFIG remote: CONFIG
|
||||
200 Command OK.
|
||||
150 Open ASCII Mode Connection.
|
||||
WARNING! 68 bare linefeeds received in ASCII mode
|
||||
File may not have transferred correctly.
|
||||
226 Transfer complete.
|
||||
##### bytes received in #.## seconds (##### Kbytes/s)
|
||||
ftp> <B>quit ENTER</B>
|
||||
221 Goodbye.
|
||||
</PRE></UL>
|
||||
|
||||
<!-- NEED 2in -->
|
||||
<P>Next, edit the file with your favorite text editor and locate the
|
||||
lines beginning with:
|
||||
|
||||
<UL><PRE>
|
||||
0100 L1_PROUT:P1
|
||||
0120 L2_PROUT:P1
|
||||
0140 L3_PROUT:P1
|
||||
</PRE></UL>
|
||||
|
||||
<P>Change the port number for
|
||||
each parallel and serial port on the server as follows:
|
||||
|
||||
<UL><PRE>
|
||||
0100 L1_PROUT:<B>P1</B>
|
||||
0120 L2_PROUT:<B>P2</B>
|
||||
0140 L3_PROUT:<B>P3</B>
|
||||
</PRE></UL>
|
||||
|
||||
<!-- NEED 4in -->
|
||||
<P>This maps each virtual printer with a physical port. Save the file and then upload the
|
||||
new <VAR>CONFIG</VAR> file using the <CODE>ftp</CODE> command:
|
||||
|
||||
<UL><PRE>
|
||||
<B>ftp -n ip-address ENTER</B>
|
||||
Connected to ip-address.
|
||||
220 Print Server Ready.
|
||||
Remote system type is Print.
|
||||
ftp> <B>put CONFIG ENTER</B>
|
||||
local: CONFIG remote: CONFIG
|
||||
200 Command OK.
|
||||
150 Open ASCII Mode Connection.
|
||||
226 Transfer complete.
|
||||
##### bytes received in #.## seconds (##### Kbytes/s)
|
||||
ftp> <B>quit ENTER</B>
|
||||
221 Goodbye.
|
||||
</PRE></UL>
|
||||
|
||||
<P>Your Linksys print server is now ready for use!
|
||||
|
||||
|
||||
<H1 ALIGN="RIGHT"><A NAME="PRINTER_DRIVERS">C - Printer Drivers</A></H1>
|
||||
|
||||
@@ -3499,11 +3356,7 @@ the Common UNIX Printing System.
|
||||
<TH>Pathname</TH>
|
||||
<TH>Description</TH>
|
||||
</TR>
|
||||
<TR VALIGN="TOP">
|
||||
<TD>/etc/cups/certs/</TD>
|
||||
<TD>The location of authentication certificate files for local
|
||||
HTTP clients.</TD>
|
||||
</TR>
|
||||
|
||||
<TR VALIGN="TOP">
|
||||
<TD>/etc/cups/classes.conf</TD>
|
||||
<TD>The printer classes configuration file for the scheduler.</TD>
|
||||
@@ -3512,10 +3365,6 @@ the Common UNIX Printing System.
|
||||
<TD>/etc/cups/cupsd.conf</TD>
|
||||
<TD>The scheduler configuration file.</TD>
|
||||
</TR>
|
||||
<TR VALIGN="TOP">
|
||||
<TD>/etc/cups/interfaces/</TD>
|
||||
<TD>The location of System V interface scripts for printers.</TD>
|
||||
</TR>
|
||||
<TR VALIGN="TOP">
|
||||
<TD>/etc/cups/mime.convs</TD>
|
||||
<TD>The list of standard file filters included with ESP Print Pro.</TD>
|
||||
@@ -3524,15 +3373,19 @@ the Common UNIX Printing System.
|
||||
<TD>/etc/cups/mime.types</TD>
|
||||
<TD>The list of recognized file types for ESP Print Pro.</TD>
|
||||
</TR>
|
||||
<TR VALIGN="TOP">
|
||||
<TD>/etc/cups/printers.conf</TD>
|
||||
<TD>The printer configuration file for the scheduler.</TD>
|
||||
</TR>
|
||||
<TR VALIGN="TOP">
|
||||
<TD>/etc/cups/interfaces/</TD>
|
||||
<TD>The location of System V interface scripts for printers.</TD>
|
||||
</TR>
|
||||
<TR VALIGN="TOP">
|
||||
<TD>/etc/cups/ppd/</TD>
|
||||
<TD>The location of PostScript Printer Description ("PPD") files for
|
||||
printers.</TD>
|
||||
</TR>
|
||||
<TR VALIGN="TOP">
|
||||
<TD>/etc/cups/printers.conf</TD>
|
||||
<TD>The printer configuration file for the scheduler.</TD>
|
||||
</TR>
|
||||
<TR VALIGN="TOP">
|
||||
<TD>/usr/bin/cancel</TD>
|
||||
<TD>The System V cancel job(s) command.</TD>
|
||||
@@ -3663,10 +3516,6 @@ the Common UNIX Printing System.
|
||||
/usr/share/catman/u_man/</TD>
|
||||
<TD>Man pages (IRIX)</TD>
|
||||
</TR>
|
||||
<TR VALIGN="TOP">
|
||||
<TD>/usr/share/man/</TD>
|
||||
<TD>Man pages (Compaq Tru64 UNIX, HP-UX, Solaris)</TD>
|
||||
</TR>
|
||||
<TR VALIGN="TOP">
|
||||
<TD>/usr/man/</TD>
|
||||
<TD>Man pages (all others)</TD>
|
||||
@@ -3823,7 +3672,7 @@ Management"</A>.
|
||||
root account.
|
||||
|
||||
<LI>accessing the CUPS server using the hostname or IP
|
||||
address of the server without enabling remote access for
|
||||
address of the server but haven't enabled remote access for
|
||||
administration functions. This can be corrected by following
|
||||
the instructions in the <A HREF="#ALLOW_REMOTE">"I Can't Do
|
||||
Administration Tasks from Another Machine!"</A> section earlier
|
||||
|
||||
+220
-313
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE> CUPS Software Design Description</TITLE>
|
||||
<TITLE>CUPS Software Design Description</TITLE>
|
||||
<META NAME="AUTHOR" CONTENT="Easy Software Products">
|
||||
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SDD-1.1">
|
||||
@@ -17,11 +17,14 @@ H6 { font-family: sans-serif; font-size: 8.0pt }
|
||||
SUB { font-size: 8.0pt }
|
||||
SUP { font-size: 8.0pt }
|
||||
PRE { font-size: 9.0pt }
|
||||
A:link { text-decoration: underline }
|
||||
A:visited { text-decoration: underline }
|
||||
A:active { text-decoration: underline }
|
||||
</STYLE>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0" WIDTH="100%"><BR>
|
||||
<H1> CUPS Software Design Description</H1></A><BR>
|
||||
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0"><BR>
|
||||
<H1>CUPS Software Design Description</H1></A><BR>
|
||||
CUPS-SDD-1.1<BR>
|
||||
Easy Software Products<BR>
|
||||
Copyright 1997-2000, All Rights Reserved<BR>
|
||||
@@ -49,85 +52,62 @@ Copyright 1997-2000, All Rights Reserved<BR>
|
||||
<LI><A HREF="#3_1_3">3.1.3 parallel</A></LI>
|
||||
<LI><A HREF="#3_1_4">3.1.4 serial</A></LI>
|
||||
<LI><A HREF="#3_1_5">3.1.5 socket</A></LI>
|
||||
<LI><A HREF="#3_1_6">3.1.6 usb</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#3_2">3.2 Berkeley Commands</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#3_2_1">3.2.1 lpc</A></LI>
|
||||
<LI><A HREF="#3_2_2">3.2.2 lpq</A></LI>
|
||||
<LI><A HREF="#3_2_3">3.2.3 lpr</A></LI>
|
||||
<LI><A HREF="#3_2_4">3.2.4 lprm</A></LI>
|
||||
<LI><A HREF="#3_2_2">3.2.2 lpr</A></LI>
|
||||
<LI><A HREF="#3_2_3">3.2.3 lprm</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#3_3">3.3 CGI</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#3_3_1">3.3.1 admin.cgi</A></LI>
|
||||
<LI><A HREF="#3_3_2">3.3.2 classes.cgi</A></LI>
|
||||
<LI><A HREF="#3_3_3">3.3.3 jobs.cgi</A></LI>
|
||||
<LI><A HREF="#3_3_4">3.3.4 printers.cgi</A></LI>
|
||||
<LI><A HREF="#3_3_1">3.3.1 classes.cgi</A></LI>
|
||||
<LI><A HREF="#3_3_2">3.3.2 jobs.cgi</A></LI>
|
||||
<LI><A HREF="#3_3_3">3.3.3 printers.cgi</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#3_4">3.4 CUPS Application Programmers Interface</A></LI>
|
||||
<LI><A HREF="#3_4">3.4 CUPS Interface Library</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#3_4_1">3.4.1 Convenience Functions</A></LI>
|
||||
<LI><A HREF="#3_4_2">3.4.2 HTTP Functions</A></LI>
|
||||
<LI><A HREF="#3_4_3">3.4.3 IPP Functions</A></LI>
|
||||
<LI><A HREF="#3_4_4">3.4.4 Language Functions</A></LI>
|
||||
<LI><A HREF="#3_4_5">3.4.5 PPD Functions</A></LI>
|
||||
<LI><A HREF="#3_4_5">3.4.5 MIME Functions</A></LI>
|
||||
<LI><A HREF="#3_4_6">3.4.6 PPD Functions</A></LI>
|
||||
<LI><A HREF="#3_4_7">3.4.7 Raster Functions</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#3_5">3.5 CUPS Imaging Library</A></LI>
|
||||
<LI><A HREF="#3_5">3.5 Filters</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#3_5_1">3.5.1 Colorspace Conversion Functions</A></LI>
|
||||
<LI><A HREF="#3_5_2">3.5.2 Color Management Functions</A></LI>
|
||||
<LI><A HREF="#3_5_3">3.5.3 Image Management Functions</A></LI>
|
||||
<LI><A HREF="#3_5_4">3.5.4 Scaling Functions</A></LI>
|
||||
<LI><A HREF="#3_5_5">3.5.5 Image File Functions</A></LI>
|
||||
<LI><A HREF="#3_5_6">3.5.6 Raster Functions</A></LI>
|
||||
<LI><A HREF="#3_5_1">3.5.1 hpgltops</A></LI>
|
||||
<LI><A HREF="#3_5_2">3.5.2 imagetops</A></LI>
|
||||
<LI><A HREF="#3_5_3">3.5.3 imagetoraster</A></LI>
|
||||
<LI><A HREF="#3_5_4">3.5.4 pstops</A></LI>
|
||||
<LI><A HREF="#3_5_5">3.5.5 pstoraster</A></LI>
|
||||
<LI><A HREF="#3_5_6">3.5.6 rastertohp</A></LI>
|
||||
<LI><A HREF="#3_5_7">3.5.7 texttops</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#3_6">3.6 Daemons</A></LI>
|
||||
<LI><A HREF="#3_6">3.6 Scheduler</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#3_6_1">3.6.1 Line Printer Daemon</A></LI>
|
||||
<LI><A HREF="#3_6_2">3.6.2 Polling Daemon</A></LI>
|
||||
<LI><A HREF="#3_6_1">3.6.1 Authorization</A></LI>
|
||||
<LI><A HREF="#3_6_2">3.6.2 Classes</A></LI>
|
||||
<LI><A HREF="#3_6_3">3.6.3 Client</A></LI>
|
||||
<LI><A HREF="#3_6_4">3.6.4 Configuration</A></LI>
|
||||
<LI><A HREF="#3_6_5">3.6.5 Directory Services</A></LI>
|
||||
<LI><A HREF="#3_6_6">3.6.6 IPP</A></LI>
|
||||
<LI><A HREF="#3_6_7">3.6.7 Jobs</A></LI>
|
||||
<LI><A HREF="#3_6_8">3.6.8 Logging</A></LI>
|
||||
<LI><A HREF="#3_6_9">3.6.9 Main</A></LI>
|
||||
<LI><A HREF="#3_6_10">3.6.10 Printers</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#3_7">3.7 Filters</A></LI>
|
||||
<LI><A HREF="#3_7">3.7 System V Commands</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#3_7_1">3.7.1 hpgltops</A></LI>
|
||||
<LI><A HREF="#3_7_2">3.7.2 imagetops</A></LI>
|
||||
<LI><A HREF="#3_7_3">3.7.3 imagetoraster</A></LI>
|
||||
<LI><A HREF="#3_7_4">3.7.4 pdftops</A></LI>
|
||||
<LI><A HREF="#3_7_5">3.7.5 pstops</A></LI>
|
||||
<LI><A HREF="#3_7_6">3.7.6 pstoraster</A></LI>
|
||||
<LI><A HREF="#3_7_7">3.7.7 rastertoepson</A></LI>
|
||||
<LI><A HREF="#3_7_8">3.7.8 rastertohp</A></LI>
|
||||
<LI><A HREF="#3_7_9">3.7.9 texttops</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#3_8">3.8 Scheduler</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#3_8_1">3.8.1 Authorization</A></LI>
|
||||
<LI><A HREF="#3_8_2">3.8.2 Classes</A></LI>
|
||||
<LI><A HREF="#3_8_3">3.8.3 Client</A></LI>
|
||||
<LI><A HREF="#3_8_4">3.8.4 Configuration</A></LI>
|
||||
<LI><A HREF="#3_8_5">3.8.5 Devices</A></LI>
|
||||
<LI><A HREF="#3_8_6">3.8.6 Directory Services</A></LI>
|
||||
<LI><A HREF="#3_8_7">3.8.7 IPP</A></LI>
|
||||
<LI><A HREF="#3_8_8">3.8.8 Jobs</A></LI>
|
||||
<LI><A HREF="#3_8_9">3.8.9 Logging</A></LI>
|
||||
<LI><A HREF="#3_8_10">3.8.10 Main</A></LI>
|
||||
<LI><A HREF="#3_8_11">3.8.11 MIME</A></LI>
|
||||
<LI><A HREF="#3_8_12">3.8.12 PPDs</A></LI>
|
||||
<LI><A HREF="#3_8_13">3.8.13 Printers</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#3_9">3.9 System V Commands</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#3_9_1">3.9.1 accept</A></LI>
|
||||
<LI><A HREF="#3_9_2">3.9.2 cancel</A></LI>
|
||||
<LI><A HREF="#3_9_3">3.9.3 disable</A></LI>
|
||||
<LI><A HREF="#3_9_4">3.9.4 enable</A></LI>
|
||||
<LI><A HREF="#3_9_5">3.9.5 lp</A></LI>
|
||||
<LI><A HREF="#3_9_6">3.9.6 lpadmin</A></LI>
|
||||
<LI><A HREF="#3_9_7">3.9.7 lpinfo</A></LI>
|
||||
<LI><A HREF="#3_9_8">3.9.8 lpmove</A></LI>
|
||||
<LI><A HREF="#3_9_9">3.9.9 lpoptions</A></LI>
|
||||
<LI><A HREF="#3_9_10">3.9.10 lpstat</A></LI>
|
||||
<LI><A HREF="#3_9_11">3.9.11 reject</A></LI>
|
||||
<LI><A HREF="#3_7_1">3.7.1 accept</A></LI>
|
||||
<LI><A HREF="#3_7_2">3.7.2 cancel</A></LI>
|
||||
<LI><A HREF="#3_7_3">3.7.3 disable</A></LI>
|
||||
<LI><A HREF="#3_7_4">3.7.4 enable</A></LI>
|
||||
<LI><A HREF="#3_7_5">3.7.5 lp</A></LI>
|
||||
<LI><A HREF="#3_7_6">3.7.6 lpadmin</A></LI>
|
||||
<LI><A HREF="#3_7_7">3.7.7 lpstat</A></LI>
|
||||
<LI><A HREF="#3_7_8">3.7.8 reject</A></LI>
|
||||
</UL>
|
||||
</UL>
|
||||
<B><A HREF="#4">A Glossary</A></B>
|
||||
@@ -138,25 +118,25 @@ Copyright 1997-2000, All Rights Reserved<BR>
|
||||
<HR>
|
||||
<H1><A NAME="1">1 Scope</A></H1>
|
||||
<H2><A NAME="1_1">1.1 Identification</A></H2>
|
||||
This software design description document provides general information
|
||||
on the architecture and coding of the Common UNIX Printing System
|
||||
("CUPS") Version 1.1.
|
||||
This software design description document provides detailed
|
||||
information on the architecture and coding of the Common UNIX Printing
|
||||
System ("CUPS") Version 1.1.
|
||||
<H2><A NAME="1_2">1.2 System Overview</A></H2>
|
||||
<P>CUPS provides a portable printing layer for UNIX®-based operating
|
||||
systems. It has been developed by <A HREF="http://www.easysw.com">Easy
|
||||
Software Products</A> to promote a standard printing solution for all
|
||||
UNIX vendors and users. CUPS provides the System V and Berkeley
|
||||
<P>The Common UNIX Printing System provides a portable printing layer
|
||||
for UNIX® operating systems. It has been developed by <A HREF="http://www.easysw.com">
|
||||
Easy Software Products</A> to promote a standard printing solution for
|
||||
all UNIX vendors and users. CUPS provides the System V and Berkeley
|
||||
command-line interfaces. </P>
|
||||
<P>CUPS uses the Internet Printing Protocol ("IPP") as the basis for
|
||||
managing print jobs and queues. The Line Printer Daemon ("LPD") Server
|
||||
Message Block ("SMB"), and AppSocket (a.k.a. JetDirect) protocols are
|
||||
also supported with reduced functionality. CUPS adds network printer
|
||||
browsing and PostScript Printer Description ("PPD") based printing
|
||||
options to support real-world printing under UNIX. </P>
|
||||
<P>CUPS also includes a customized version of GNU Ghostscript
|
||||
(currently based off GNU Ghostscript 5.50) and an image file RIP that
|
||||
are used to support non-PostScript printers. Sample drivers for HP and
|
||||
EPSON printers are included that use these filters. </P>
|
||||
<P>CUPS uses the Internet Printing Protocol (IETF-IPP) as the basis for
|
||||
managing print jobs and queues. The Line Printer Daemon (LPD, RFC1179),
|
||||
Server Message Block (SMB), and AppSocket protocols are also supported
|
||||
with reduced functionality. </P>
|
||||
<P>CUPS adds network printer browsing and PostScript Printer
|
||||
Description ("PPD")-based printing options to support real world
|
||||
applications under UNIX. </P>
|
||||
<P>CUPS also includes a customized version of GNU GhostScript
|
||||
(currently based off GNU GhostScript 5.50) and an image file RIP that
|
||||
is used to support non-PostScript printers. </P>
|
||||
<H2><A NAME="1_3">1.3 Document Overview</A></H2>
|
||||
This software design description document is organized into the
|
||||
following sections:
|
||||
@@ -175,48 +155,39 @@ EPSON printers are included that use these filters. </P>
|
||||
<LI>CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
|
||||
<LI>CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
|
||||
<LI>CUPS-SDD-1.1: CUPS Software Design Description </LI>
|
||||
<LI>CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
|
||||
<LI>CUPS-SPM-1.1: CUPS Software Programming Manual </LI>
|
||||
<LI>CUPS-SSR-1.1: CUPS Software Security Report </LI>
|
||||
<LI>CUPS-STP-1.1: CUPS Software Test Plan </LI>
|
||||
<LI>CUPS-SUM-1.1.x: CUPS Software Users Manual </LI>
|
||||
<LI>CUPS-SVD-1.1: CUPS Software Version Description </LI>
|
||||
<LI>CUPS-SVD-1.1.x: CUPS Software Version Description </LI>
|
||||
</UL>
|
||||
<H2><A NAME="2_2">2.2 Other Documents</A></H2>
|
||||
<P>The following non-CUPS documents are referenced by this document: </P>
|
||||
<UL>
|
||||
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf">
|
||||
Adobe PostScript Printer Description File Format Specification,
|
||||
Version 4.3.</A></LI>
|
||||
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf">
|
||||
Adobe PostScript Language Reference, Third Edition.</A></LI>
|
||||
<LI>Adobe PostScript Printer Description File Format Specification,
|
||||
Version 4.3. </LI>
|
||||
<LI>Adobe PostScript Language Reference, Third Edition. </LI>
|
||||
<LI>IPP: Job and Printer Set Operations </LI>
|
||||
<LI>IPP/1.1: Encoding and Transport </LI>
|
||||
<LI>IPP/1.1: Implementers Guide </LI>
|
||||
<LI>IPP/1.1: Model and Semantics </LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc1179.txt">RFC 1179, Line
|
||||
Printer Daemon Protocol</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2567.txt">RFC 2567, Design
|
||||
Goals for an Internet Printing Protocol</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2568.txt">RFC 2568, Rationale
|
||||
for the Structure of the Model and Protocol</A> for the Internet
|
||||
Printing Protocol</LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2569.txt">RFC 2569, Mapping
|
||||
between LPD and IPP Protocols</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616, Hypertext
|
||||
Transfer Protocol -- HTTP/1.1</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2617.txt">RFC 2617, HTTP
|
||||
Authentication: Basic and Digest Access</A> Authentication </LI>
|
||||
<LI>RFC 1179, Line Printer Daemon Protocol </LI>
|
||||
<LI>RFC 2567, Design Goals for an Internet Printing Protocol </LI>
|
||||
<LI>RFC 2568, Rationale for the Structure of the Model and Protocol
|
||||
for the Internet Printing Protocol </LI>
|
||||
<LI>RFC 2569, Mapping between LPD and IPP Protocols </LI>
|
||||
<LI>RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1 </LI>
|
||||
<LI>RFC 2617, HTTP Authentication: Basic and Digest Access
|
||||
Authentication </LI>
|
||||
</UL>
|
||||
<H1><A NAME="3">3 Design Overview</A></H1>
|
||||
CUPS is composed of 9 software sub-systems that operate together to
|
||||
CUPS is composed of 7 software sub-systems that operate together to
|
||||
perform common printing tasks:
|
||||
<UL>
|
||||
<LI>Backends </LI>
|
||||
<LI>Berkeley Commands </LI>
|
||||
<LI>CGI </LI>
|
||||
<LI>CUPS Application Programmers Interface </LI>
|
||||
<LI>CUPS Imaging Library </LI>
|
||||
<LI>Daemons </LI>
|
||||
<LI>CUPS Interface Library </LI>
|
||||
<LI>Filters </LI>
|
||||
<LI>Scheduler </LI>
|
||||
<LI>System V Commands </LI>
|
||||
@@ -226,7 +197,7 @@ Authentication: Basic and Digest Access</A> Authentication </LI>
|
||||
interfaces. All backends are called with a common set of arguments:
|
||||
<UL>
|
||||
<LI>Device URI - the Uniform Resource Identifier for the output device
|
||||
(e.g. <CODE>parallel:/dev/plp</CODE>, <CODE> ipp://hostname/resource</CODE>
|
||||
(e.g. <CODE>parallel:/dev/plp</CODE>, <CODE>ipp://hostname/resource</CODE>
|
||||
). </LI>
|
||||
<LI>Job Identifier - the job identifier for this job (integer). </LI>
|
||||
<LI>User Name - the user associated with this job (name string). </LI>
|
||||
@@ -238,31 +209,31 @@ interfaces. All backends are called with a common set of arguments:
|
||||
specified, the backend must read the print file from the standard
|
||||
input. </LI>
|
||||
</UL>
|
||||
<P>Backends are named using the scheme of the URI, so a URI of
|
||||
"ipp://hostname/resource" would be processed by the "ipp" backend. </P>
|
||||
Backends are named using the method of the URI, so a URI of
|
||||
"ipp://hostname/resource" would be processed by the "ipp" backend.
|
||||
<H3><A NAME="3_1_1">3.1.1 ipp</A></H3>
|
||||
<P>The ipp backend sends the specified job to a network printer or host
|
||||
The ipp backend sends the specified job to a network printer or host
|
||||
using the Internet Printing Protocol. The URI is as specified by the <CODE>
|
||||
printer-uri-supported</CODE> attribute from the printer or host. </P>
|
||||
printer-uri-supported</CODE> attribute from the printer or host.
|
||||
<H3><A NAME="3_1_2">3.1.2 lpd</A></H3>
|
||||
<P>The lpd backend sends the specified job to a network printer or host
|
||||
using the Line Printer Daemon protocol. The URI is of the form: </P>
|
||||
The lpd backend sends the specified job to a network printer or host
|
||||
using the Line Printer Daemon protocol. The URI is of the form:
|
||||
<UL>
|
||||
<PRE>lpd://hostname/queue
|
||||
</PRE>
|
||||
</UL>
|
||||
<H3><A NAME="3_1_3">3.1.3 parallel</A></H3>
|
||||
<P>The parallel backend sends the specified job to a local printer
|
||||
The parallel backend sends the specified job to a local printer
|
||||
connected via the specified parallel port device. The URI is of the
|
||||
form: </P>
|
||||
form:
|
||||
<UL>
|
||||
<PRE>parallel:/dev/file
|
||||
</PRE>
|
||||
</UL>
|
||||
<H3><A NAME="3_1_4">3.1.4 serial</A></H3>
|
||||
<P>The serial backend sends the specified job to a local printer
|
||||
The serial backend sends the specified job to a local printer
|
||||
connected via the specified serial port device. The URI is of the
|
||||
form: </P>
|
||||
form:
|
||||
<UL>
|
||||
<PRE>serial:/dev/file?option[+option+...]
|
||||
</PRE>
|
||||
@@ -276,25 +247,18 @@ form: </P>
|
||||
<LI><CODE>parity=<I>none</I></CODE> - Turns parity checking off. </LI>
|
||||
</UL>
|
||||
<H3><A NAME="3_1_5">3.1.5 socket</A></H3>
|
||||
<P>The socket backend sends the specified job to a network host using
|
||||
the AppSocket protocol commonly used by Hewlett-Packard and Tektronix
|
||||
printers. The URI is of the form: </P>
|
||||
The socket backend sends the specified job to a network host using the
|
||||
AppSocket protocol commonly used by Hewlett-Packard and Tektronix
|
||||
printers. The URI is of the form:
|
||||
<UL>
|
||||
<PRE>socket://hostname[:port]
|
||||
</PRE>
|
||||
</UL>
|
||||
The default port number is 9100.
|
||||
<H3><A NAME="3_1_6">3.1.6 usb</A></H3>
|
||||
<P>The usb backend sends the specified job to a local printer connected
|
||||
via the specified usb port device. The URI is of the form: </P>
|
||||
<UL>
|
||||
<PRE>usb:/dev/file
|
||||
</PRE>
|
||||
</UL>
|
||||
<H2><A NAME="3_2">3.2 Berkeley Commands</A></H2>
|
||||
<P>The Berkeley commands provide a simple command-line interface to
|
||||
CUPS to submit and control print jobs. It is provided for compatibility
|
||||
with existing software that is hardcoded to use the Berkeley commands. </P>
|
||||
The Berkeley commands provide a simple command-line interface to CUPS
|
||||
to submit and control print jobs. It is provided for compatibility with
|
||||
existing software that is hard coded to use the Berkeley commands.
|
||||
<H3><A NAME="3_2_1">3.2.1 lpc</A></H3>
|
||||
The lpc command allows users and administrators to check the status
|
||||
and control print queues. The version provided with CUPS supports the
|
||||
@@ -303,95 +267,59 @@ following commands:
|
||||
<LI>quit - Quits the lpc command. </LI>
|
||||
<LI>status - Shows the status of printers and jobs in the queue. </LI>
|
||||
</UL>
|
||||
<H3><A NAME="3_2_2">3.2.2 lpq</A></H3>
|
||||
<P>The lpq command shows the current queue status. </P>
|
||||
<H3><A NAME="3_2_3">3.2.3 lpr</A></H3>
|
||||
<P>The lpr command submits a job for printing. The CUPS version of lpr
|
||||
silently ignores the "i", "t", "m", "h", and "s" options. </P>
|
||||
<H3><A NAME="3_2_4">3.2.4 lprm</A></H3>
|
||||
<P>The lprm removes one or more print jobs. </P>
|
||||
<H3><A NAME="3_2_2">3.2.2 lpr</A></H3>
|
||||
The lpr command submits a job for printing. The CUPS version of lpr
|
||||
silently ignores the "i", "t", "m", "h", and "s" options.
|
||||
<H3><A NAME="3_2_3">3.2.3 lprm</A></H3>
|
||||
The lprm removes one or more print jobs.
|
||||
<H2><A NAME="3_3">3.3 CGI</A></H2>
|
||||
<P>The Common Gateway Interface (CGI) programs provide a web-based
|
||||
status interface to monitor the status of printers, classes, and jobs.
|
||||
Each of the CGIs utilize HTML template files that can be customized to
|
||||
provide alternate appearances. </P>
|
||||
<H3><A NAME="3_3_1">3.3.1 admin.cgi</A></H3>
|
||||
<P>The admin CGI provides administration interfaces for printers and
|
||||
classes. The user can add, modify, delete, start, stop, and configure
|
||||
printers and classes using "wizard" interfaces. </P>
|
||||
<H3><A NAME="3_3_2">3.3.2 classes.cgi</A></H3>
|
||||
<P>The classes CGI lists the available printer classes and any pending
|
||||
The Common Gateway Interface (CGI) programs provide a web-based status
|
||||
interface to monitor the status of printers, classes, and jobs.
|
||||
<H3><A NAME="3_3_1">3.3.1 classes.cgi</A></H3>
|
||||
The classes CGI lists the available printer classes and any pending
|
||||
jobs for the class. The user can click on individual classes to limit
|
||||
the display and click on jobs to see the job status. </P>
|
||||
<H3><A NAME="3_3_3">3.3.3 jobs.cgi</A></H3>
|
||||
<P>The jobs CGI lists the queued print jobs in order of priority. The
|
||||
list can be limited by printer or job. </P>
|
||||
<H3><A NAME="3_3_4">3.3.4 printers.cgi</A></H3>
|
||||
<P>The printers CGI lists the available printer queues and any pending
|
||||
the display and click on jobs to see the job status.
|
||||
<H3><A NAME="3_3_2">3.3.2 jobs.cgi</A></H3>
|
||||
The jobs CGI lists the queued print jobs in order of priority. The
|
||||
list can be limited by printer or job. When the user displays the
|
||||
status of an individual print job all job options are displayed.
|
||||
<H3><A NAME="3_3_3">3.3.3 printers.cgi</A></H3>
|
||||
The printers CGI lists the available printer queues and any pending
|
||||
jobs for the printer. The user can click on individual printers to
|
||||
limit the display and click on jobs to see the job status. </P>
|
||||
<H2><A NAME="3_4">3.4 CUPS Application Programmers Interface</A></H2>
|
||||
<P>The CUPS Application Programmers Interface ("API") provides common
|
||||
convenience, HTTP, IPP, language, and PPD functions used by the CUPS
|
||||
software. </P>
|
||||
limit the display and click on jobs to see the job status.
|
||||
<H2><A NAME="3_4">3.4 CUPS Interface Library</A></H2>
|
||||
The CUPS interface library provides common convenience, HTTP, IPP,
|
||||
language, MIME, PPD, and raster functions used by the CUPS software.
|
||||
<H3><A NAME="3_4_1">3.4.1 Convenience Functions</A></H3>
|
||||
<P>Convenience functions are provided to submit an IPP request, send a
|
||||
Convenience functions are provided to submit an IPP request, send a
|
||||
print file, cancel a job, get a list of available printers, get a list
|
||||
of available classes, get the default printer or class, get the default
|
||||
server name, get the local username, and get a password string. </P>
|
||||
server name, get the local username, and get a password string.
|
||||
<H3><A NAME="3_4_2">3.4.2 HTTP Functions</A></H3>
|
||||
<P>The HTTP functions provide functions to connect to HTTP servers,
|
||||
issue requests, read data from a server, and write data to a server. </P>
|
||||
The HTTP functions provide functions to connect to HTTP servers, issue
|
||||
requests, read data from a server, and write data to a server.
|
||||
<H3><A NAME="3_4_3">3.4.3 IPP Functions</A></H3>
|
||||
<P>The IPP function provide functions to manage IPP request data and
|
||||
The IPP function provide functions to manage IPP request data and
|
||||
attributes, read IPP responses from a server, and write IPP requests to
|
||||
a server. </P>
|
||||
a server.
|
||||
<H3><A NAME="3_4_4">3.4.4 Language Functions</A></H3>
|
||||
<P>The language functions provide a standard interface for retrieving
|
||||
The language functions provide a standard interface for retrieving
|
||||
common textual messages for a particular locale and determining the
|
||||
correct encoding (e.g. US ASCII, UTF-8, ISO-8859-1, etc.) </P>
|
||||
<H3><A NAME="3_4_5">3.4.5 PPD Functions</A></H3>
|
||||
<P>The PostScript Printer Description functions manage PPD files,
|
||||
select options, check for option conflicts, and emit selected options
|
||||
in the correct order. </P>
|
||||
<H2><A NAME="3_5">3.5 CUPS Imaging Library</A></H2>
|
||||
<P>The CUPS imaging library provides colorspace conversion, color
|
||||
management, image management, scaling, image file, and raster functions
|
||||
used by the CUPS raster filters. </P>
|
||||
<H3><A NAME="3_5_1">3.5.1 Colorspace Conversion Functions</A></H3>
|
||||
<P>The colorspace conversion functions handle conversion of grayscale
|
||||
and RGB colors to grayscale, RGB, K, CMY, CMYK, and CMYKcm colorspaces. </P>
|
||||
<H3><A NAME="3_5_2">3.5.2 Color Management Functions</A></H3>
|
||||
<P>The color management functions handle gamut mapping and density
|
||||
correction. These are integrated with the colorspace conversion
|
||||
functions so that colorspace conversion and color management are
|
||||
processed in a single step. </P>
|
||||
<H3><A NAME="3_5_3">3.5.3 Image Management Functions</A></H3>
|
||||
<P>The image management functions manage a tiled image database that is
|
||||
swapped to/from disk as needed. </P>
|
||||
<H3><A NAME="3_5_4">3.5.4 Scaling Functions</A></H3>
|
||||
<P>The scaling functions provide image scaling services using
|
||||
nearest-neighbor sampling and bilinear interpolation as appropriate. </P>
|
||||
<H3><A NAME="3_5_5">3.5.5 Image File Functions</A></H3>
|
||||
<P>The image file functions handle loading of all image file formats. </P>
|
||||
<H3><A NAME="3_5_6">3.5.6 Raster Functions</A></H3>
|
||||
<P>The raster functions manage streams of CUPS raster data (described
|
||||
in the Interface Design Document) used by non-PostScript printer
|
||||
drivers and raster filters. </P>
|
||||
<H2><A NAME="3_6">3.6 Daemons</A></H2>
|
||||
<P>The daemons provide additional network functions for the scheduler.
|
||||
Currently only two daemons are provided with CUPS. </P>
|
||||
<H3><A NAME="3_6_1">3.6.1 Line Printer Daemon</A></H3>
|
||||
<P>The line printer daemon provides remote LPD client support and is
|
||||
run by the <CODE>inetd(8)</CODE> daemon as needed. </P>
|
||||
<H3><A NAME="3_6_2">3.6.2 Polling Daemon</A></H3>
|
||||
<P>The polling daemon is used to poll a remote server for a list of
|
||||
available printers and provide it to the scheduler for addition. A
|
||||
separate polling daemon is run by the scheduler for every remote system
|
||||
listed for polling in the scheduler configuration file. </P>
|
||||
<H2><A NAME="3_7">3.7 Filters</A></H2>
|
||||
<P>The filters implement file conversion services for CUPS. All filters
|
||||
are called with a common set of arguments: </P>
|
||||
correct encoding (e.g. US ASCII, ISO-8859-1, etc.)
|
||||
<H3><A NAME="3_4_5">3.4.5 MIME Functions</A></H3>
|
||||
The Multimedia Internet Mail Exchange functions manage a MIME type and
|
||||
conversion database that supports file typing by extension and content,
|
||||
and least-cost file filtering from a source to a destination file type.
|
||||
<H3><A NAME="3_4_6">3.4.6 PPD Functions</A></H3>
|
||||
The PostScript Printer Description functions manage PPD files, select
|
||||
options, check for option conflicts, and emit selected options in the
|
||||
correct order.
|
||||
<H3><A NAME="3_4_7">3.4.7 Raster Functions</A></H3>
|
||||
The raster functions manage streams of CUPS raster data (described in
|
||||
the Interface Design Document) used by non-PostScript printer drivers.
|
||||
<H2><A NAME="3_5">3.5 Filters</A></H2>
|
||||
The filters implement file conversion services for CUPS. All filters
|
||||
are called with a common set of arguments:
|
||||
<UL>
|
||||
<LI>Printer name - the name of the destination printer (name string). </LI>
|
||||
<LI>Job Identifier - the job identifier for this job (integer). </LI>
|
||||
@@ -404,138 +332,115 @@ are called with a common set of arguments: </P>
|
||||
specified, the filter must read the input file from the standard
|
||||
input. </LI>
|
||||
</UL>
|
||||
<P>Filters are added to the MIME conversion data file and implement all
|
||||
necessary conversions from one file type to another. </P>
|
||||
<H3><A NAME="3_7_1">3.7.1 hpgltops</A></H3>
|
||||
<P>The hpgltops filter converts HP-GL/2 files into PostScript. </P>
|
||||
<H3><A NAME="3_7_2">3.7.2 imagetops</A></H3>
|
||||
<P>The imagetops filter converts image files into PostScript. </P>
|
||||
<H3><A NAME="3_7_3">3.7.3 imagetoraster</A></H3>
|
||||
<P>The imagetoraster filter converts image files into CUPS raster data. </P>
|
||||
<H3><A NAME="3_7_4">3.7.4 pdftops</A></H3>
|
||||
<P>The pdftops filter converts PDF files into PostScript. </P>
|
||||
<H3><A NAME="3_7_5">3.7.5 pstops</A></H3>
|
||||
<P>The pstops filter inserts printer-specific commands from PPD files
|
||||
and performs page filtering as requested by the user. </P>
|
||||
<H3><A NAME="3_7_6">3.7.6 pstoraster</A></H3>
|
||||
<P>The pstoraster filter converts PostScript program data into CUPS
|
||||
raster data. </P>
|
||||
<H3><A NAME="3_7_7">3.7.7 rastertoepson</A></H3>
|
||||
<P>The rastertoepson filter handles converting CUPS raster data to
|
||||
ESC/P and supports both color and black-and-white printers. </P>
|
||||
<H3><A NAME="3_7_8">3.7.8 rastertohp</A></H3>
|
||||
<P>The rastertohp filter handles converting CUPS raster data to HP-PCL
|
||||
and supports both color and black-and-white printers. </P>
|
||||
<H3><A NAME="3_7_9">3.7.9 texttops</A></H3>
|
||||
<P>The texttops filter converts text files into PostScript. </P>
|
||||
<H2><A NAME="3_8">3.8 Scheduler</A></H2>
|
||||
<P>The scheduler is a fully-functional HTTP/1.1 and IPP/1.1 server that
|
||||
Filters are added to the MIME conversion data file and implement all
|
||||
necessary conversions from one file type to another.
|
||||
<H3><A NAME="3_5_1">3.5.1 hpgltops</A></H3>
|
||||
The hpgltops filter converts HP-GL/2 files into PostScript.
|
||||
<H3><A NAME="3_5_2">3.5.2 imagetops</A></H3>
|
||||
The imagetops filter converts image files into PostScript.
|
||||
<H3><A NAME="3_5_3">3.5.3 imagetoraster</A></H3>
|
||||
The imagetoraster filter converts image files into CUPS raster data.
|
||||
<H3><A NAME="3_5_4">3.5.4 pstops</A></H3>
|
||||
The pstops filter inserts printer-specific commands from PPD files and
|
||||
performs page filtering as requested by the user.
|
||||
<H3><A NAME="3_5_5">3.5.5 pstoraster</A></H3>
|
||||
The pstoraster filter converts PostScript program data into CUPS
|
||||
raster data.
|
||||
<H3><A NAME="3_5_6">3.5.6 rastertohp</A></H3>
|
||||
The rastertohp filter handles converting CUPS raster data to HP PCL
|
||||
and supports both color and black-and-white printers.
|
||||
<H3><A NAME="3_5_7">3.5.7 texttops</A></H3>
|
||||
The texttops filter converts text files into PostScript.
|
||||
<H2><A NAME="3_6">3.6 Scheduler</A></H2>
|
||||
The scheduler is a fully-functional HTTP/1.1 and IPP/1.1 server that
|
||||
manages the printers, classes, and jobs in the system. It also handles
|
||||
a simple broadcast-based directory service so that remote print queues
|
||||
and classes can be accessed transparently from the local system. </P>
|
||||
<H3><A NAME="3_8_1">3.8.1 Authorization</A></H3>
|
||||
<P>The authorization module is responsible for performing access
|
||||
control and authentication for all HTTP and IPP requests entering the
|
||||
system. </P>
|
||||
<H3><A NAME="3_8_2">3.8.2 Classes</A></H3>
|
||||
<P>The classes module is responsible for managing printer classes in
|
||||
the system. Each class is a collection of local and/or remote printers.
|
||||
and classes can be accessed transparently from the local system.
|
||||
<H3><A NAME="3_6_1">3.6.1 Authorization</A></H3>
|
||||
The authorization module is responsible for performing access control
|
||||
and authentication for all HTTP and IPP requests entering the system.
|
||||
<H3><A NAME="3_6_2">3.6.2 Classes</A></H3>
|
||||
The classes module is responsible for managing printer classes in the
|
||||
system. Each class is a collection of local and/or remote printers.
|
||||
The classes module also reads and writes the classes configuration
|
||||
file. </P>
|
||||
<H3><A NAME="3_8_3">3.8.3 Client</A></H3>
|
||||
<P>The client module is responsible for all HTTP client communications.
|
||||
file.
|
||||
<H3><A NAME="3_6_3">3.6.3 Client</A></H3>
|
||||
The client module is responsible for all HTTP client communications.
|
||||
It handles listening on selected interfaces, accepting connections
|
||||
from prospective clients, processing incoming HTTP requests, and
|
||||
sending HTTP responses to those requests. The client module also is
|
||||
responsible for executing the external CGI programs as needed to
|
||||
support web-based printer, class, and job status monitoring and
|
||||
administration. </P>
|
||||
support web-based printer, class, and job status monitoring.
|
||||
<P>Once authorized, all IPP requests are sent to the IPP module. </P>
|
||||
<H3><A NAME="3_8_4">3.8.4 Configuration</A></H3>
|
||||
<P>The configuration module is responsible for reading the CUPS
|
||||
<H3><A NAME="3_6_4">3.6.4 Configuration</A></H3>
|
||||
The configuration module is responsible for reading the CUPS
|
||||
configuration file and initializing the appropriate data structures and
|
||||
values. The configuration module also stops CUPS services before
|
||||
reading the configuration file and restarts them after the
|
||||
configuration file has been read. </P>
|
||||
<H3><A NAME="3_8_5">3.8.5 Devices</A></H3>
|
||||
<P>The devices module is responsible for managing the list of available
|
||||
devices for the CUPS-Get-Devices operation. </P>
|
||||
<H3><A NAME="3_8_6">3.8.6 Directory Services</A></H3>
|
||||
<P>The directory services module sends and recieves printer state
|
||||
configuration file has been read.
|
||||
<H3><A NAME="3_6_5">3.6.5 Directory Services</A></H3>
|
||||
The directory services module sends and recieves printer state
|
||||
information over a broadcast socket. Remote printers and classes are
|
||||
automatically added to or removed from the local printer and class
|
||||
lists as needed. </P>
|
||||
lists as needed.
|
||||
<P>The directory services module can only recieve printer state
|
||||
information over a single UDP port, however it can broadcast to
|
||||
multiple addresses and ports as needed. </P>
|
||||
<H3><A NAME="3_8_7">3.8.7 IPP</A></H3>
|
||||
<P>The IPP module handles IPP requests and acts accordingly. URI
|
||||
<H3><A NAME="3_6_6">3.6.6 IPP</A></H3>
|
||||
The IPP module handles IPP requests and acts accordingly. URI
|
||||
validation is also performed here, as a client can post IPP data to any
|
||||
URI on the server which might sidestep the access control or
|
||||
authentication of the HTTP server. </P>
|
||||
<H3><A NAME="3_8_8">3.8.8 Jobs</A></H3>
|
||||
<P>The jobs module manages print jobs, starts filter and backend
|
||||
authentication of the HTTP server.
|
||||
<H3><A NAME="3_6_7">3.6.7 Jobs</A></H3>
|
||||
The jobs module manages print jobs, starts filter and backend
|
||||
processes for jobs to be printed, and monitors status messages from
|
||||
those filters and backends. </P>
|
||||
<H3><A NAME="3_8_9">3.8.9 Logging</A></H3>
|
||||
<P>The logging module manages the access, error, and page log files
|
||||
that are generated by the scheduler. </P>
|
||||
<H3><A NAME="3_8_10">3.8.10 Main</A></H3>
|
||||
<P>The main module is responsible for timing out and dispatching input
|
||||
those filters and backends.
|
||||
<H3><A NAME="3_6_8">3.6.8 Logging</A></H3>
|
||||
The logging module manages the access, error, and page log files that
|
||||
are generated by the scheduler.
|
||||
<H3><A NAME="3_6_9">3.6.9 Main</A></H3>
|
||||
The main module is responsible for timing out and dispatching input
|
||||
and output for client connections. It also watches for incoming <CODE>
|
||||
SIGHUP</CODE> and <CODE>SIGCHLD</CODE> signals, reloads the server
|
||||
configuration files as needed, and handles child process errors and
|
||||
exits. </P>
|
||||
<H3><A NAME="3_8_11">3.8.11 MIME</A></H3>
|
||||
<P>The Multimedia Internet Mail Exchange module manages a MIME type and
|
||||
conversion database that supports file typing by extension and content
|
||||
and least-cost file filtering from a source to a destination file type. </P>
|
||||
<H3><A NAME="3_8_12">3.8.12 PPDs</A></H3>
|
||||
<P>The PPDs module is responsible for managing the list of available
|
||||
PPD files for the CUPS-Get-PPDs operation. </P>
|
||||
<H3><A NAME="3_8_13">3.8.13 Printers</A></H3>
|
||||
<P>The printers module is responsible for managing printers and PPD
|
||||
files in the system. The printers module also reads and writes the
|
||||
printers configuration file. </P>
|
||||
<H2><A NAME="3_9">3.9 System V Commands</A></H2>
|
||||
<P>The System V commands provide a robust command-line interface to
|
||||
CUPS to submit and control printers and jobs. </P>
|
||||
<H3><A NAME="3_9_1">3.9.1 accept</A></H3>
|
||||
<P>The accept command tells the scheduler to accept new jobs for
|
||||
specific printers. </P>
|
||||
<H3><A NAME="3_9_2">3.9.2 cancel</A></H3>
|
||||
<P>The cancel command tells the scheduler to cancel one or more jobs
|
||||
that are queued for printing. </P>
|
||||
<H3><A NAME="3_9_3">3.9.3 disable</A></H3>
|
||||
<P>The disable command tells the scheduler to stop printing jobs on the
|
||||
specified printers. </P>
|
||||
<H3><A NAME="3_9_4">3.9.4 enable</A></H3>
|
||||
<P>The enable command tells the scheduler to start printing jobs on the
|
||||
specified printers. </P>
|
||||
<H3><A NAME="3_9_5">3.9.5 lp</A></H3>
|
||||
<P>The lp command submits submits files for printing. Unlike the
|
||||
exits.
|
||||
<H3><A NAME="3_6_10">3.6.10 Printers</A></H3>
|
||||
The printers module is responsible for managing printers and PPD files
|
||||
in the system. The printers module also reads and writes the printers
|
||||
configuration file.
|
||||
<H2><A NAME="3_7">3.7 System V Commands</A></H2>
|
||||
The System V commands provide a robust command-line interface to CUPS
|
||||
to submit and control printers and jobs.
|
||||
<H3><A NAME="3_7_1">3.7.1 accept</A></H3>
|
||||
The accept command tells the scheduler to accept new jobs for specific
|
||||
printers.
|
||||
<H3><A NAME="3_7_2">3.7.2 cancel</A></H3>
|
||||
The cancel command tells the scheduler to cancel one or more jobs that
|
||||
are queued for printing.
|
||||
<H3><A NAME="3_7_3">3.7.3 disable</A></H3>
|
||||
The disable command tells the scheduler to stop printing jobs on the
|
||||
specified printers.
|
||||
<H3><A NAME="3_7_4">3.7.4 enable</A></H3>
|
||||
The enable command tells the scheduler to start printing jobs on the
|
||||
specified printers.
|
||||
<H3><A NAME="3_7_5">3.7.5 lp</A></H3>
|
||||
The lp command submits submits files for printing. Unlike the
|
||||
standard System V lp command, a single CUPS lp command will generate a
|
||||
separate job ID for each file that is printed. Also, the Solaris "f",
|
||||
"H", "P", "S", and "y" options are silently ignored. </P>
|
||||
<H3><A NAME="3_9_6">3.9.6 lpadmin</A></H3>
|
||||
<P>The lpadmin command manages printer queues and classes. The Solaris
|
||||
"H", "P", "S", and "y" options are silently ignored.
|
||||
<H3><A NAME="3_7_6">3.7.6 lpadmin</A></H3>
|
||||
The lpadmin command manages printer queues and classes. The Solaris
|
||||
"A", "F", "I", "M", "P", "Q", "S", "T", "U", "W", "f", "l", "m", "o",
|
||||
"s", "t", and "u" options are not supported, and new options "P" (PPD
|
||||
file) and "E" (enable and accept) are provided to configure
|
||||
CUPS-specific features. </P>
|
||||
<H3><A NAME="3_9_7">3.9.7 lpinfo</A></H3>
|
||||
<P>The lpinfo command lists the available PPD files or devices as
|
||||
selected by the user. </P>
|
||||
<H3><A NAME="3_9_8">3.9.8 lpmove</A></H3>
|
||||
<P>The lpmove command moves a print job to a new destination. </P>
|
||||
<H3><A NAME="3_9_9">3.9.9 lpoptions</A></H3>
|
||||
<P>The lpoptions command manages user-defined printers and options. </P>
|
||||
<H3><A NAME="3_9_10">3.9.10 lpstat</A></H3>
|
||||
<P>The lpstat command lists printers, classes, and jobs as requested by
|
||||
the user. </P>
|
||||
<H3><A NAME="3_9_11">3.9.11 reject</A></H3>
|
||||
<P>The reject command tells the scheduler not to accept new jobs for
|
||||
specific printers. </P>
|
||||
file), "F" (filter), and "E" (enable and accept) are provided to
|
||||
configure CUPS-specific features such as PPD file and conversion
|
||||
filters.
|
||||
<H3><A NAME="3_7_7">3.7.7 lpstat</A></H3>
|
||||
The lpstat command lists printers, classes, and jobs as requested by
|
||||
the user.
|
||||
<H3><A NAME="3_7_8">3.7.8 reject</A></H3>
|
||||
The reject command tells the scheduler not to accept new jobs for
|
||||
specific printers.
|
||||
<H1 TYPE="A" VALUE="1"><A NAME="4">A Glossary</A></H1>
|
||||
<H2><A NAME="4_1">A.1 Terms</A></H2>
|
||||
<DL>
|
||||
@@ -563,7 +468,7 @@ specific printers. </P>
|
||||
<DT>HP-GL </DT>
|
||||
<DD>Hewlett-Packard Graphics Language </DD>
|
||||
<DT>HP-PCL </DT>
|
||||
<DD>Hewlett-Packard Page Control Language </DD>
|
||||
<DD>Hewlett-Packard Printer Control Language </DD>
|
||||
<DT>HP-PJL </DT>
|
||||
<DD>Hewlett-Packard Printer Job Language </DD>
|
||||
<DT>IETF </DT>
|
||||
@@ -576,6 +481,8 @@ specific printers. </P>
|
||||
<DD>Line Printer Daemon </DD>
|
||||
<DT>MIME </DT>
|
||||
<DD>Multimedia Internet Mail Exchange </DD>
|
||||
<DT>PCL </DT>
|
||||
<DD>Page Control Language </DD>
|
||||
<DT>PPD </DT>
|
||||
<DD>PostScript Printer Description </DD>
|
||||
<DT>SMB </DT>
|
||||
|
||||
+636
-866
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+103
-218
@@ -11,7 +11,7 @@
|
||||
|
||||
<H2>Identification</H2>
|
||||
|
||||
This software design description document provides general information
|
||||
This software design description document provides detailed information
|
||||
on the architecture and coding of the Common UNIX Printing System
|
||||
("CUPS") Version 1.1.
|
||||
|
||||
@@ -38,7 +38,7 @@ following sections:
|
||||
|
||||
<H1>Design Overview</H1>
|
||||
|
||||
CUPS is composed of 9 software sub-systems that operate together to
|
||||
CUPS is composed of 7 software sub-systems that operate together to
|
||||
perform common printing tasks:
|
||||
|
||||
<UL>
|
||||
@@ -49,11 +49,7 @@ perform common printing tasks:
|
||||
|
||||
<LI>CGI
|
||||
|
||||
<LI>CUPS Application Programmers Interface
|
||||
|
||||
<LI>CUPS Imaging Library
|
||||
|
||||
<LI>Daemons
|
||||
<LI>CUPS Interface Library
|
||||
|
||||
<LI>Filters
|
||||
|
||||
@@ -91,18 +87,18 @@ All backends are called with a common set of arguments:
|
||||
|
||||
</UL>
|
||||
|
||||
<P>Backends are named using the scheme of the URI, so a URI of
|
||||
Backends are named using the method of the URI, so a URI of
|
||||
"ipp://hostname/resource" would be processed by the "ipp" backend.
|
||||
|
||||
<H3>ipp</H3>
|
||||
|
||||
<P>The ipp backend sends the specified job to a network printer or host using
|
||||
The ipp backend sends the specified job to a network printer or host using
|
||||
the Internet Printing Protocol. The URI is as specified by the
|
||||
<CODE>printer-uri-supported</CODE> attribute from the printer or host.
|
||||
|
||||
<H3>lpd</H3>
|
||||
|
||||
<P>The lpd backend sends the specified job to a network printer or host using
|
||||
The lpd backend sends the specified job to a network printer or host using
|
||||
the Line Printer Daemon protocol. The URI is of the form:
|
||||
|
||||
<UL><PRE>lpd://hostname/queue
|
||||
@@ -110,7 +106,7 @@ the Line Printer Daemon protocol. The URI is of the form:
|
||||
|
||||
<H3>parallel</H3>
|
||||
|
||||
<P>The parallel backend sends the specified job to a local printer connected
|
||||
The parallel backend sends the specified job to a local printer connected
|
||||
via the specified parallel port device. The URI is of the form:
|
||||
|
||||
<UL><PRE>parallel:/dev/file
|
||||
@@ -118,7 +114,7 @@ via the specified parallel port device. The URI is of the form:
|
||||
|
||||
<H3>serial</H3>
|
||||
|
||||
<P>The serial backend sends the specified job to a local printer connected
|
||||
The serial backend sends the specified job to a local printer connected
|
||||
via the specified serial port device. The URI is of the form:
|
||||
|
||||
<UL><PRE>serial:/dev/file?option[+option+...]
|
||||
@@ -142,7 +138,7 @@ The options can be any combination of the following:
|
||||
|
||||
<H3>socket</H3>
|
||||
|
||||
<P>The socket backend sends the specified job to a network host using the
|
||||
The socket backend sends the specified job to a network host using the
|
||||
AppSocket protocol commonly used by Hewlett-Packard and Tektronix
|
||||
printers. The URI is of the form:
|
||||
|
||||
@@ -151,19 +147,11 @@ printers. The URI is of the form:
|
||||
|
||||
The default port number is 9100.
|
||||
|
||||
<H3>usb</H3>
|
||||
|
||||
<P>The usb backend sends the specified job to a local printer connected
|
||||
via the specified usb port device. The URI is of the form:
|
||||
|
||||
<UL><PRE>usb:/dev/file
|
||||
</PRE></UL>
|
||||
|
||||
<H2>Berkeley Commands</H2>
|
||||
|
||||
<P>The Berkeley commands provide a simple command-line interface to CUPS
|
||||
The Berkeley commands provide a simple command-line interface to CUPS
|
||||
to submit and control print jobs. It is provided for compatibility with
|
||||
existing software that is hardcoded to use the Berkeley commands.
|
||||
existing software that is hard coded to use the Berkeley commands.
|
||||
|
||||
<H3>lpc</H3>
|
||||
|
||||
@@ -179,143 +167,85 @@ commands:
|
||||
|
||||
</UL>
|
||||
|
||||
<H3>lpq</H3>
|
||||
|
||||
<P>The lpq command shows the current queue status.
|
||||
|
||||
<H3>lpr</H3>
|
||||
|
||||
<P>The lpr command submits a job for printing. The CUPS version of lpr silently
|
||||
The lpr command submits a job for printing. The CUPS version of lpr silently
|
||||
ignores the "i", "t", "m", "h", and "s" options.
|
||||
|
||||
<H3>lprm</H3>
|
||||
|
||||
<P>The lprm removes one or more print jobs.
|
||||
The lprm removes one or more print jobs.
|
||||
|
||||
<H2>CGI</H2>
|
||||
|
||||
<P>The Common Gateway Interface (CGI) programs provide a web-based
|
||||
status interface to monitor the status of printers, classes, and jobs.
|
||||
Each of the CGIs utilize HTML template files that can be customized to
|
||||
provide alternate appearances.
|
||||
|
||||
<H3>admin.cgi</H3>
|
||||
|
||||
<P>The admin CGI provides administration interfaces for printers and
|
||||
classes. The user can add, modify, delete, start, stop, and configure
|
||||
printers and classes using "wizard" interfaces.
|
||||
The Common Gateway Interface (CGI) programs provide a web-based status interface
|
||||
to monitor the status of printers, classes, and jobs.
|
||||
|
||||
<H3>classes.cgi</H3>
|
||||
|
||||
<P>The classes CGI lists the available printer classes and any pending
|
||||
jobs for the class. The user can click on individual classes to limit
|
||||
the display and click on jobs to see the job status.
|
||||
The classes CGI lists the available printer classes and any pending jobs for
|
||||
the class. The user can click on individual classes to limit the display and
|
||||
click on jobs to see the job status.
|
||||
|
||||
<H3>jobs.cgi</H3>
|
||||
|
||||
<P>The jobs CGI lists the queued print jobs in order of priority. The
|
||||
list can be limited by printer or job.
|
||||
The jobs CGI lists the queued print jobs in order of priority. The list can
|
||||
be limited by printer or job. When the user displays the status of an
|
||||
individual print job all job options are displayed.
|
||||
|
||||
<H3>printers.cgi</H3>
|
||||
|
||||
<P>The printers CGI lists the available printer queues and any pending
|
||||
jobs for the printer. The user can click on individual printers to
|
||||
limit the display and click on jobs to see the job status.
|
||||
The printers CGI lists the available printer queues and any pending jobs for
|
||||
the printer. The user can click on individual printers to limit the display and
|
||||
click on jobs to see the job status.
|
||||
|
||||
<H2>CUPS Application Programmers Interface</H2>
|
||||
<H2>CUPS Interface Library</H2>
|
||||
|
||||
<P>The CUPS Application Programmers Interface ("API") provides common
|
||||
convenience, HTTP, IPP, language, and PPD functions used by the CUPS
|
||||
software.
|
||||
The CUPS interface library provides common convenience, HTTP, IPP,
|
||||
language, MIME, PPD, and raster functions used by the CUPS software.
|
||||
|
||||
<H3>Convenience Functions</H3>
|
||||
|
||||
<P>Convenience functions are provided to submit an IPP request, send a
|
||||
print file, cancel a job, get a list of available printers, get a list
|
||||
of available classes, get the default printer or class, get the default
|
||||
server name, get the local username, and get a password string.
|
||||
Convenience functions are provided to submit an IPP request, send a print file,
|
||||
cancel a job, get a list of available printers, get a list of available
|
||||
classes, get the default printer or class, get the default server name, get
|
||||
the local username, and get a password string.
|
||||
|
||||
<H3>HTTP Functions</H3>
|
||||
|
||||
<P>The HTTP functions provide functions to connect to HTTP servers,
|
||||
issue requests, read data from a server, and write data to a server.
|
||||
The HTTP functions provide functions to connect to HTTP servers, issue requests,
|
||||
read data from a server, and write data to a server.
|
||||
|
||||
<H3>IPP Functions</H3>
|
||||
|
||||
<P>The IPP function provide functions to manage IPP request data and
|
||||
attributes, read IPP responses from a server, and write IPP requests to
|
||||
a server.
|
||||
The IPP function provide functions to manage IPP request data and attributes,
|
||||
read IPP responses from a server, and write IPP requests to a server.
|
||||
|
||||
<H3>Language Functions</H3>
|
||||
|
||||
<P>The language functions provide a standard interface for retrieving
|
||||
common textual messages for a particular locale and determining the
|
||||
correct encoding (e.g. US ASCII, UTF-8, ISO-8859-1, etc.)
|
||||
The language functions provide a standard interface for retrieving common
|
||||
textual messages for a particular locale and determining the correct encoding
|
||||
(e.g. US ASCII, ISO-8859-1, etc.)
|
||||
|
||||
<H3>MIME Functions</H3>
|
||||
|
||||
The Multimedia Internet Mail Exchange functions manage a MIME type and
|
||||
conversion database that supports file typing by extension and content, and
|
||||
least-cost file filtering from a source to a destination file type.
|
||||
|
||||
<H3>PPD Functions</H3>
|
||||
|
||||
<P>The PostScript Printer Description functions manage PPD files,
|
||||
select options, check for option conflicts, and emit selected options
|
||||
in the correct order.
|
||||
|
||||
<H2>CUPS Imaging Library</H2>
|
||||
|
||||
<P>The CUPS imaging library provides colorspace conversion, color
|
||||
management, image management, scaling, image file, and raster functions
|
||||
used by the CUPS raster filters.
|
||||
|
||||
<H3>Colorspace Conversion Functions</H3>
|
||||
|
||||
<P>The colorspace conversion functions handle conversion of grayscale
|
||||
and RGB colors to grayscale, RGB, K, CMY, CMYK, and CMYKcm colorspaces.
|
||||
|
||||
<H3>Color Management Functions</H3>
|
||||
|
||||
<P>The color management functions handle gamut mapping and density
|
||||
correction. These are integrated with the colorspace conversion
|
||||
functions so that colorspace conversion and color management are
|
||||
processed in a single step.
|
||||
|
||||
<H3>Image Management Functions</H3>
|
||||
|
||||
<P>The image management functions manage a tiled image database that is
|
||||
swapped to/from disk as needed.
|
||||
|
||||
<H3>Scaling Functions</H3>
|
||||
|
||||
<P>The scaling functions provide image scaling services using
|
||||
nearest-neighbor sampling and bilinear interpolation as appropriate.
|
||||
|
||||
<H3>Image File Functions</H3>
|
||||
|
||||
<P>The image file functions handle loading of all image file formats.
|
||||
The PostScript Printer Description functions manage PPD files, select options,
|
||||
check for option conflicts, and emit selected options in the correct order.
|
||||
|
||||
<H3>Raster Functions</H3>
|
||||
|
||||
<P>The raster functions manage streams of CUPS raster data (described
|
||||
in the Interface Design Document) used by non-PostScript printer
|
||||
drivers and raster filters.
|
||||
|
||||
<H2>Daemons</H2>
|
||||
|
||||
<P>The daemons provide additional network functions for the scheduler.
|
||||
Currently only two daemons are provided with CUPS.
|
||||
|
||||
<H3>Line Printer Daemon</H3>
|
||||
|
||||
<P>The line printer daemon provides remote LPD client support and is
|
||||
run by the <CODE>inetd(8)</CODE> daemon as needed.
|
||||
|
||||
<H3>Polling Daemon</H3>
|
||||
|
||||
<P>The polling daemon is used to poll a remote server for a list of
|
||||
available printers and provide it to the scheduler for addition. A
|
||||
separate polling daemon is run by the scheduler for every remote
|
||||
system listed for polling in the scheduler configuration file.
|
||||
The raster functions manage streams of CUPS raster data (described in the
|
||||
Interface Design Document) used by non-PostScript printer drivers.
|
||||
|
||||
<H2>Filters</H2>
|
||||
|
||||
<P>The filters implement file conversion services for CUPS. All filters
|
||||
The filters implement file conversion services for CUPS. All filters
|
||||
are called with a common set of arguments:
|
||||
|
||||
<UL>
|
||||
@@ -339,100 +269,80 @@ are called with a common set of arguments:
|
||||
|
||||
</UL>
|
||||
|
||||
<P>Filters are added to the MIME conversion data file and implement all
|
||||
necessary conversions from one file type to another.
|
||||
Filters are added to the MIME conversion data file and implement all necessary
|
||||
conversions from one file type to another.
|
||||
|
||||
<H3>hpgltops</H3>
|
||||
|
||||
<P>The hpgltops filter converts HP-GL/2 files into PostScript.
|
||||
The hpgltops filter converts HP-GL/2 files into PostScript.
|
||||
|
||||
<H3>imagetops</H3>
|
||||
|
||||
<P>The imagetops filter converts image files into PostScript.
|
||||
The imagetops filter converts image files into PostScript.
|
||||
|
||||
<H3>imagetoraster</H3>
|
||||
|
||||
<P>The imagetoraster filter converts image files into CUPS raster data.
|
||||
|
||||
<H3>pdftops</H3>
|
||||
|
||||
<P>The pdftops filter converts PDF files into PostScript.
|
||||
The imagetoraster filter converts image files into CUPS raster data.
|
||||
|
||||
<H3>pstops</H3>
|
||||
|
||||
<P>The pstops filter inserts printer-specific commands from PPD files and
|
||||
The pstops filter inserts printer-specific commands from PPD files and
|
||||
performs page filtering as requested by the user.
|
||||
|
||||
<H3>pstoraster</H3>
|
||||
|
||||
<P>The pstoraster filter converts PostScript program data into CUPS
|
||||
raster data.
|
||||
|
||||
<H3>rastertoepson</H3>
|
||||
|
||||
<P>The rastertoepson filter handles converting CUPS raster data to
|
||||
ESC/P and supports both color and black-and-white printers.
|
||||
The pstoraster filter converts PostScript program data into CUPS raster data.
|
||||
|
||||
<H3>rastertohp</H3>
|
||||
|
||||
<P>The rastertohp filter handles converting CUPS raster data to HP-PCL
|
||||
and supports both color and black-and-white printers.
|
||||
The rastertohp filter handles converting CUPS raster data to HP PCL and
|
||||
supports both color and black-and-white printers.
|
||||
|
||||
<H3>texttops</H3>
|
||||
|
||||
<P>The texttops filter converts text files into PostScript.
|
||||
The texttops filter converts text files into PostScript.
|
||||
|
||||
<H2>Scheduler</H2>
|
||||
|
||||
<P>The scheduler is a fully-functional HTTP/1.1 and IPP/1.1 server that
|
||||
The scheduler is a fully-functional HTTP/1.1 and IPP/1.1 server that
|
||||
manages the printers, classes, and jobs in the system. It also handles
|
||||
a simple broadcast-based directory service so that remote print queues
|
||||
and classes can be accessed transparently from the local system.
|
||||
|
||||
<H3>Authorization</H3>
|
||||
|
||||
<P>The authorization module is responsible for performing access
|
||||
control and authentication for all HTTP and IPP requests entering the
|
||||
system.
|
||||
The authorization module is responsible for performing access control and
|
||||
authentication for all HTTP and IPP requests entering the system.
|
||||
|
||||
<H3>Classes</H3>
|
||||
|
||||
<P>The classes module is responsible for managing printer classes in
|
||||
the system. Each class is a collection of local and/or remote
|
||||
printers. The classes module also reads and writes the classes
|
||||
configuration file.
|
||||
The classes module is responsible for managing printer classes in the system.
|
||||
Each class is a collection of local and/or remote printers. The classes module
|
||||
also reads and writes the classes configuration file.
|
||||
|
||||
<H3>Client</H3>
|
||||
|
||||
<P>The client module is responsible for all HTTP client
|
||||
communications. It handles listening on selected interfaces, accepting
|
||||
connections from prospective clients, processing incoming HTTP
|
||||
requests, and sending HTTP responses to those requests. The client
|
||||
module also is responsible for executing the external CGI programs as
|
||||
needed to support web-based printer, class, and job status monitoring
|
||||
and administration.
|
||||
The client module is responsible for all HTTP client communications. It handles
|
||||
listening on selected interfaces, accepting connections from prospective
|
||||
clients, processing incoming HTTP requests, and sending HTTP responses to
|
||||
those requests. The client module also is responsible for executing the
|
||||
external CGI programs as needed to support web-based printer, class, and job
|
||||
status monitoring.
|
||||
|
||||
<P>Once authorized, all IPP requests are sent to the IPP module.
|
||||
|
||||
<H3>Configuration</H3>
|
||||
|
||||
<P>The configuration module is responsible for reading the CUPS
|
||||
configuration file and initializing the appropriate data structures and
|
||||
values. The configuration module also stops CUPS services before
|
||||
reading the configuration file and restarts them after the
|
||||
configuration file has been read.
|
||||
|
||||
<H3>Devices</H3>
|
||||
|
||||
<P>The devices module is responsible for managing the list of available
|
||||
devices for the CUPS-Get-Devices operation.
|
||||
The configuration module is responsible for reading the CUPS configuration file
|
||||
and initializing the appropriate data structures and values. The configuration
|
||||
module also stops CUPS services before reading the configuration file and
|
||||
restarts them after the configuration file has been read.
|
||||
|
||||
<H3>Directory Services</H3>
|
||||
|
||||
<P>The directory services module sends and recieves printer state
|
||||
information over a broadcast socket. Remote printers and classes are
|
||||
automatically added to or removed from the local printer and class
|
||||
lists as needed.
|
||||
The directory services module sends and recieves printer state information over
|
||||
a broadcast socket. Remote printers and classes are automatically added to or
|
||||
removed from the local printer and class lists as needed.
|
||||
|
||||
<P>The directory services module can only recieve printer state information
|
||||
over a single UDP port, however it can broadcast to multiple addresses and
|
||||
@@ -440,108 +350,83 @@ ports as needed.
|
||||
|
||||
<H3>IPP</H3>
|
||||
|
||||
<P>The IPP module handles IPP requests and acts accordingly. URI
|
||||
The IPP module handles IPP requests and acts accordingly. URI
|
||||
validation is also performed here, as a client can post IPP data to any
|
||||
URI on the server which might sidestep the access control or
|
||||
authentication of the HTTP server.
|
||||
|
||||
<H3>Jobs</H3>
|
||||
|
||||
<P>The jobs module manages print jobs, starts filter and backend
|
||||
processes for jobs to be printed, and monitors status messages from
|
||||
those filters and backends.
|
||||
The jobs module manages print jobs, starts filter and backend processes
|
||||
for jobs to be printed, and monitors status messages from those filters
|
||||
and backends.
|
||||
|
||||
<H3>Logging</H3>
|
||||
|
||||
<P>The logging module manages the access, error, and page log files
|
||||
that are generated by the scheduler.
|
||||
The logging module manages the access, error, and page log files that are
|
||||
generated by the scheduler.
|
||||
|
||||
<H3>Main</H3>
|
||||
|
||||
<P>The main module is responsible for timing out and dispatching input
|
||||
and output for client connections. It also watches for incoming
|
||||
<CODE>SIGHUP</CODE> and <CODE>SIGCHLD</CODE> signals, reloads the
|
||||
server configuration files as needed, and handles child process errors
|
||||
and exits.
|
||||
|
||||
<H3>MIME</H3>
|
||||
|
||||
<P>The Multimedia Internet Mail Exchange module manages a MIME type and
|
||||
conversion database that supports file typing by extension and content
|
||||
and least-cost file filtering from a source to a destination file type.
|
||||
|
||||
<H3>PPDs</H3>
|
||||
|
||||
<P>The PPDs module is responsible for managing the list of available
|
||||
PPD files for the CUPS-Get-PPDs operation.
|
||||
The main module is responsible for timing out and dispatching input and output
|
||||
for client connections. It also watches for incoming <CODE>SIGHUP</CODE>
|
||||
and <CODE>SIGCHLD</CODE> signals, reloads the server configuration files as
|
||||
needed, and handles child process errors and exits.
|
||||
|
||||
<H3>Printers</H3>
|
||||
|
||||
<P>The printers module is responsible for managing printers and PPD
|
||||
files in the system. The printers module also reads and writes the
|
||||
printers configuration file.
|
||||
The printers module is responsible for managing printers and PPD files
|
||||
in the system. The printers module also reads and writes the printers
|
||||
configuration file.
|
||||
|
||||
<H2>System V Commands</H2>
|
||||
|
||||
<P>The System V commands provide a robust command-line interface to
|
||||
CUPS to submit and control printers and jobs.
|
||||
The System V commands provide a robust command-line interface to CUPS
|
||||
to submit and control printers and jobs.
|
||||
|
||||
<H3>accept</H3>
|
||||
|
||||
<P>The accept command tells the scheduler to accept new jobs for specific
|
||||
The accept command tells the scheduler to accept new jobs for specific
|
||||
printers.
|
||||
|
||||
<H3>cancel</H3>
|
||||
|
||||
<P>The cancel command tells the scheduler to cancel one or more jobs that are
|
||||
The cancel command tells the scheduler to cancel one or more jobs that are
|
||||
queued for printing.
|
||||
|
||||
<H3>disable</H3>
|
||||
|
||||
<P>The disable command tells the scheduler to stop printing jobs on the
|
||||
The disable command tells the scheduler to stop printing jobs on the
|
||||
specified printers.
|
||||
|
||||
<H3>enable</H3>
|
||||
|
||||
<P>The enable command tells the scheduler to start printing jobs on the
|
||||
The enable command tells the scheduler to start printing jobs on the
|
||||
specified printers.
|
||||
|
||||
<H3>lp</H3>
|
||||
|
||||
<P>The lp command submits submits files for printing. Unlike the standard
|
||||
The lp command submits submits files for printing. Unlike the standard
|
||||
System V lp command, a single CUPS lp command will generate a separate
|
||||
job ID for each file that is printed. Also, the Solaris "f", "H", "P", "S",
|
||||
and "y" options are silently ignored.
|
||||
|
||||
<H3>lpadmin</H3>
|
||||
|
||||
<P>The lpadmin command manages printer queues and classes. The Solaris
|
||||
The lpadmin command manages printer queues and classes. The Solaris
|
||||
"A", "F", "I", "M", "P", "Q", "S", "T", "U", "W", "f", "l", "m", "o",
|
||||
"s", "t", and "u" options are not supported, and new options "P" (PPD
|
||||
file) and "E" (enable and accept) are provided to configure
|
||||
CUPS-specific features.
|
||||
|
||||
<H3>lpinfo</H3>
|
||||
|
||||
<P>The lpinfo command lists the available PPD files or devices as selected
|
||||
by the user.
|
||||
|
||||
<H3>lpmove</H3>
|
||||
|
||||
<P>The lpmove command moves a print job to a new destination.
|
||||
|
||||
<H3>lpoptions</H3>
|
||||
|
||||
<P>The lpoptions command manages user-defined printers and options.
|
||||
file), "F" (filter), and "E" (enable and accept) are provided to configure
|
||||
CUPS-specific features such as PPD file and conversion filters.
|
||||
|
||||
<H3>lpstat</H3>
|
||||
|
||||
<P>The lpstat command lists printers, classes, and jobs as requested by the
|
||||
The lpstat command lists printers, classes, and jobs as requested by the
|
||||
user.
|
||||
|
||||
<H3>reject</H3>
|
||||
|
||||
<P>The reject command tells the scheduler not to accept new jobs for specific
|
||||
The reject command tells the scheduler not to accept new jobs for specific
|
||||
printers.
|
||||
|
||||
<EMBED SRC="glossary.shtml">
|
||||
|
||||
+472
-2648
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+7148
-8543
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+305
-3461
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
-297
@@ -1,297 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE> CUPS Software Performance Specification</TITLE>
|
||||
<META NAME="AUTHOR" CONTENT="Easy Software Products">
|
||||
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SPS-1.1">
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<STYLE>
|
||||
BODY { font-family: serif; font-size: 11.0pt }
|
||||
H1 { font-family: sans-serif; font-size: 20.0pt }
|
||||
H2 { font-family: sans-serif; font-size: 17.0pt }
|
||||
H3 { font-family: sans-serif; font-size: 14.0pt }
|
||||
H4 { font-family: sans-serif; font-size: 11.0pt }
|
||||
H5 { font-family: sans-serif; font-size: 9.0pt }
|
||||
H6 { font-family: sans-serif; font-size: 8.0pt }
|
||||
SUB { font-size: 8.0pt }
|
||||
SUP { font-size: 8.0pt }
|
||||
PRE { font-size: 9.0pt }
|
||||
</STYLE>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0" WIDTH="100%"><BR>
|
||||
<H1> CUPS Software Performance Specification</H1></A><BR>
|
||||
CUPS-SPS-1.1<BR>
|
||||
Easy Software Products<BR>
|
||||
Copyright 1997-2000, All Rights Reserved<BR>
|
||||
</CENTER>
|
||||
<HR>
|
||||
<H1 ALIGN="CENTER"><A NAME="CONTENTS">Table of Contents</A></H1>
|
||||
<BR>
|
||||
<BR><B><A HREF="#1">1 Scope</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#1_1">1.1 Identification</A></LI>
|
||||
<LI><A HREF="#1_2">1.2 System Overview</A></LI>
|
||||
<LI><A HREF="#1_3">1.3 Document Overview</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#2">2 References</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#2_1">2.1 CUPS Documentation</A></LI>
|
||||
<LI><A HREF="#2_2">2.2 Other Documents</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#3">3 Programs</A></B>
|
||||
<BR>
|
||||
<BR><B><A HREF="#4">4 Scheduler Objects</A></B>
|
||||
<BR>
|
||||
<BR><B><A HREF="#5">A Glossary</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#5_1">A.1 Terms</A></LI>
|
||||
<LI><A HREF="#5_2">A.2 Acronyms</A></LI>
|
||||
</UL>
|
||||
<HR>
|
||||
<H1><A NAME="1">1 Scope</A></H1>
|
||||
<H2><A NAME="1_1">1.1 Identification</A></H2>
|
||||
<P>This software performance specification provides an analysis of the
|
||||
memory, disk, and processor utilitization of each program in the Common
|
||||
UNIX Printing System ("CUPS") Version 1.1.</P>
|
||||
<P>For the purposes of comparison, all figures are for the Linux Intel
|
||||
platform. Memory utilization on other platforms should be similar. </P>
|
||||
<H2><A NAME="1_2">1.2 System Overview</A></H2>
|
||||
<P>CUPS provides a portable printing layer for UNIX®-based operating
|
||||
systems. It has been developed by <A HREF="http://www.easysw.com">Easy
|
||||
Software Products</A> to promote a standard printing solution for all
|
||||
UNIX vendors and users. CUPS provides the System V and Berkeley
|
||||
command-line interfaces. </P>
|
||||
<P>CUPS uses the Internet Printing Protocol ("IPP") as the basis for
|
||||
managing print jobs and queues. The Line Printer Daemon ("LPD") Server
|
||||
Message Block ("SMB"), and AppSocket (a.k.a. JetDirect) protocols are
|
||||
also supported with reduced functionality. CUPS adds network printer
|
||||
browsing and PostScript Printer Description ("PPD") based printing
|
||||
options to support real-world printing under UNIX. </P>
|
||||
<P>CUPS also includes a customized version of GNU Ghostscript
|
||||
(currently based off GNU Ghostscript 5.50) and an image file RIP that
|
||||
are used to support non-PostScript printers. Sample drivers for HP and
|
||||
EPSON printers are included that use these filters. </P>
|
||||
<H2><A NAME="1_3">1.3 Document Overview</A></H2>
|
||||
<P>This software performance specification is organized into the
|
||||
following sections:</P>
|
||||
<UL>
|
||||
<LI>1 - Scope</LI>
|
||||
<LI>2 - References</LI>
|
||||
<LI>3 - Programs</LI>
|
||||
<LI>4 - Scheduler Objects</LI>
|
||||
<LI>A - Glossary</LI>
|
||||
</UL>
|
||||
<H1><A NAME="2">2 References</A></H1>
|
||||
<H2><A NAME="2_1">2.1 CUPS Documentation</A></H2>
|
||||
<P>The following CUPS documentation is referenced by this document: </P>
|
||||
<UL>
|
||||
<LI>CUPS-CMP-1.1: CUPS Configuration Management Plan </LI>
|
||||
<LI>CUPS-IDD-1.1: CUPS System Interface Design Description </LI>
|
||||
<LI>CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
|
||||
<LI>CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
|
||||
<LI>CUPS-SDD-1.1: CUPS Software Design Description </LI>
|
||||
<LI>CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
|
||||
<LI>CUPS-SSR-1.1: CUPS Software Security Report </LI>
|
||||
<LI>CUPS-STP-1.1: CUPS Software Test Plan </LI>
|
||||
<LI>CUPS-SUM-1.1.x: CUPS Software Users Manual </LI>
|
||||
<LI>CUPS-SVD-1.1: CUPS Software Version Description </LI>
|
||||
</UL>
|
||||
<H2><A NAME="2_2">2.2 Other Documents</A></H2>
|
||||
<P>The following non-CUPS documents are referenced by this document: </P>
|
||||
<UL>
|
||||
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf">
|
||||
Adobe PostScript Printer Description File Format Specification,
|
||||
Version 4.3.</A></LI>
|
||||
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf">
|
||||
Adobe PostScript Language Reference, Third Edition.</A></LI>
|
||||
<LI>IPP: Job and Printer Set Operations </LI>
|
||||
<LI>IPP/1.1: Encoding and Transport </LI>
|
||||
<LI>IPP/1.1: Implementers Guide </LI>
|
||||
<LI>IPP/1.1: Model and Semantics </LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc1179.txt">RFC 1179, Line
|
||||
Printer Daemon Protocol</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2567.txt">RFC 2567, Design
|
||||
Goals for an Internet Printing Protocol</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2568.txt">RFC 2568, Rationale
|
||||
for the Structure of the Model and Protocol</A> for the Internet
|
||||
Printing Protocol</LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2569.txt">RFC 2569, Mapping
|
||||
between LPD and IPP Protocols</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616, Hypertext
|
||||
Transfer Protocol -- HTTP/1.1</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2617.txt">RFC 2617, HTTP
|
||||
Authentication: Basic and Digest Access</A> Authentication </LI>
|
||||
</UL>
|
||||
<H1><A NAME="3">3 Programs</A></H1>
|
||||
<P>The following table describes the average memory, disk, and CPU
|
||||
usage of each program in CUPS. </P>
|
||||
<P>The base memory column shows the initial memory requirements for
|
||||
each program, including any shared libraries that are provided by CUPS. </P>
|
||||
<P>The max memory column shows the maximum amount of memory that will
|
||||
be used by the program based upon the default configuration settings
|
||||
supplied with CUPS. </P>
|
||||
<P>The temp files column indicates whether any temporary files are
|
||||
created. </P>
|
||||
<P>The CPU usage column specifies a relative CPU usage by the program
|
||||
under normal conditions, either low, medium, or high. Low usage
|
||||
indicates that the program will never use more than 33% of the
|
||||
available CPU time. Medium usage indicates the program will use as much
|
||||
as 66% of the available CPU time. High usage indicates the program uses
|
||||
66% or more of the available CPU time.
|
||||
<CENTER>
|
||||
<TABLE BORDER="1" WIDTH="80%">
|
||||
<TR><TH COLSPAN="3">Backends</TH></TR>
|
||||
<TR><TH>Program</TH><TH>Base Memory</TH><TH>Max Memory</TH><TH>Temp
|
||||
Files</TH><TH>CPU Usage</TH></TR>
|
||||
<TR><TD>ipp</TD><TD>91k</TD><TD>256k</TD><TD>Up to size of print file</TD><TD>
|
||||
Low</TD></TR>
|
||||
<TR><TD>lpd</TD><TD>89k</TD><TD>89k</TD><TD>Up to size of print file</TD><TD>
|
||||
Low</TD></TR>
|
||||
<TR><TD>parallel</TD><TD>85k</TD><TD>85k</TD><TD>Up to size of print
|
||||
file</TD><TD>Low</TD></TR>
|
||||
<TR><TD>serial</TD><TD>85k</TD><TD>85k</TD><TD>Up to size of print file</TD><TD>
|
||||
Low</TD></TR>
|
||||
<TR><TD>socket</TD><TD>85k</TD><TD>85k</TD><TD>Up to size of print file</TD><TD>
|
||||
Low</TD></TR>
|
||||
<TR><TD>usb</TD><TD>85k</TD><TD>85k</TD><TD>Up to size of print file</TD><TD>
|
||||
Low</TD></TR>
|
||||
<TR><TH COLSPAN="3">CGIs</TH></TR>
|
||||
<TR><TH>Program</TH><TH>Base Memory</TH><TH>Max Memory</TH><TH>Temp
|
||||
Files</TH><TH>CPU Usage</TH></TR>
|
||||
<TR><TD>admin.cgi</TD><TD>107k</TD><TD>256k</TD><TD>Up to size of PPD
|
||||
file</TD><TD>Medium</TD></TR>
|
||||
<TR><TD>classes.cgi</TD><TD>95k</TD><TD>Size of class objects</TD><TD>
|
||||
None</TD><TD>Medium</TD></TR>
|
||||
<TR><TD>jobs.cgi</TD><TD>93k</TD><TD>Size of job objects</TD><TD>None</TD><TD>
|
||||
Medium</TD></TR>
|
||||
<TR><TD>printers.cgi</TD><TD>95k</TD><TD>Size of printer objects</TD><TD>
|
||||
None</TD><TD>Medium</TD></TR>
|
||||
<TR><TH COLSPAN="3">Command-Line Programs</TH></TR>
|
||||
<TR><TH>Program</TH><TH>Base Memory</TH><TH>Max Memory</TH><TH>Temp
|
||||
Files</TH><TH>CPU Usage</TH></TR>
|
||||
<TR><TD>accept</TD><TD>88k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR>
|
||||
<TR><TD>cancel</TD><TD>88k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR>
|
||||
<TR><TD>disable</TD><TD>88k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR>
|
||||
<TR><TD>enable</TD><TD>88k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR>
|
||||
<TR><TD>lp</TD><TD>90k</TD><TD>256k</TD><TD>None</TD><TD>Low</TD></TR>
|
||||
<TR><TD>lpadmin</TD><TD>148k</TD><TD>256k</TD><TD>None</TD><TD>Low</TD></TR>
|
||||
<TR><TD>lpc</TD><TD>86k</TD><TD>Size of job and printer objects</TD><TD>
|
||||
None</TD><TD>Medium</TD></TR>
|
||||
<TR><TD>lpinfo</TD><TD>89k</TD><TD>Size of device and PPD objects</TD><TD>
|
||||
None</TD><TD>Medium</TD></TR>
|
||||
<TR><TD>lpmove</TD><TD>88k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR>
|
||||
<TR><TD>lpoptions</TD><TD>89k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR>
|
||||
<TR><TD>lppasswd</TD><TD>90k</TD><TD>90k</TD><TD>None</TD><TD>Low</TD></TR>
|
||||
<TR><TD>lpq</TD><TD>87k</TD><TD>Size of job objects</TD><TD>None</TD><TD>
|
||||
Medium</TD></TR>
|
||||
<TR><TD>lpr</TD><TD>87k</TD><TD>256k</TD><TD>None</TD><TD>Low</TD></TR>
|
||||
<TR><TD>lprm</TD><TD>84k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR>
|
||||
<TR><TD>lpstat</TD><TD>119k</TD><TD>Size of job, printer, and class
|
||||
objects</TD><TD>None</TD><TD>Medium</TD></TR>
|
||||
<TR><TD>reject</TD><TD>88k</TD><TD>128k</TD><TD>None</TD><TD>Low</TD></TR>
|
||||
<TR><TH COLSPAN="3">Daemons</TH></TR>
|
||||
<TR><TH>Program</TH><TH>Base Memory</TH><TH>Max Memory</TH><TH>Temp
|
||||
Files</TH><TH>CPU Usage</TH></TR>
|
||||
<TR><TD>cups-lpd</TD><TD>92k</TD><TD>256k</TD><TD>One file per control
|
||||
or data file from client</TD><TD>Low</TD></TR>
|
||||
<TR><TD>cupsd</TD><TD>308k</TD><TD>See Scheduler Requirements</TD><TD>
|
||||
See Scheduler Requirements</TD><TD>Medium</TD></TR>
|
||||
<TR><TD>cups-polld</TD><TD>84k</TD><TD>Size of printer and class objects</TD><TD>
|
||||
None</TD><TD>Low</TD></TR>
|
||||
<TR><TH COLSPAN="3">Filters</TH></TR>
|
||||
<TR><TH>Program</TH><TH>Base Memory</TH><TH>Max Memory</TH><TH>Temp
|
||||
Files</TH><TH>CPU Usage</TH></TR>
|
||||
<TR><TD>hpgltops</TD><TD>263k</TD><TD>320k</TD><TD>None</TD><TD>Medium</TD>
|
||||
</TR>
|
||||
<TR><TD>imagetops</TD><TD>628k</TD><TD>10M</TD><TD>Swap file for
|
||||
uncompressed image data</TD><TD>Medium</TD></TR>
|
||||
<TR><TD>imagetoraster</TD><TD>652k</TD><TD>10M</TD><TD>Swap file for
|
||||
uncompressed image data</TD><TD>High</TD></TR>
|
||||
<TR><TD>pstops</TD><TD>775k</TD><TD>840k</TD><TD>Up to size of print
|
||||
file</TD><TD>Medium</TD></TR>
|
||||
<TR><TD>pstoraster</TD><TD>4M</TD><TD>14M</TD><TD>Swap file for command
|
||||
lists</TD><TD>High</TD></TR>
|
||||
<TR><TD>rastertoepson</TD><TD>693k</TD><TD>1M</TD><TD>None</TD><TD>Low</TD>
|
||||
</TR>
|
||||
<TR><TD>rastertohp</TD><TD>690k</TD><TD>1M</TD><TD>None</TD><TD>Low</TD></TR>
|
||||
<TR><TD>texttops</TD><TD>638k</TD><TD>4*cols*rows</TD><TD>None</TD><TD>
|
||||
Low</TD></TR>
|
||||
</TABLE>
|
||||
</CENTER>
|
||||
</P>
|
||||
<H1><A NAME="4">4 Scheduler Objects</A></H1>
|
||||
<P>The <CODE>cupsd</CODE> program is the CUPS scheduler process. It
|
||||
manages many interdependent server objects that are used to manage and
|
||||
print files to printers. </P>
|
||||
<P>The following table provides the memory and disk cost associated
|
||||
with each server object.
|
||||
<CENTER>
|
||||
<TABLE BORDER="1" WIDTH="80%">
|
||||
<TR><TH>Object</TH><TH>Memory Per</TH><TH>Disk Per</TH></TR>
|
||||
<TR><TD>Browse ACL</TD><TD>1k</TD><TD>120</TD></TR>
|
||||
<TR><TD>Browse Poll</TD><TD>24</TD><TD>80</TD></TR>
|
||||
<TR><TD>Browse Relay</TD><TD>28</TD><TD>80</TD></TR>
|
||||
<TR><TD>Certificate</TD><TD>76</TD><TD>32</TD></TR>
|
||||
<TR><TD>Class</TD><TD>9k</TD><TD>200</TD></TR>
|
||||
<TR><TD>Client</TD><TD>13k</TD><TD>-</TD></TR>
|
||||
<TR><TD>Device</TD><TD>256</TD><TD>-</TD></TR>
|
||||
<TR><TD>Job</TD><TD>2k</TD><TD>1k + size of document files</TD></TR>
|
||||
<TR><TD>Location ACL</TD><TD>1k</TD><TD>120</TD></TR>
|
||||
<TR><TD>MIME Filter</TD><TD>268</TD><TD>80</TD></TR>
|
||||
<TR><TD>MIME Type</TD><TD>340</TD><TD>80</TD></TR>
|
||||
<TR><TD>PPD</TD><TD>200</TD><TD>656</TD></TR>
|
||||
<TR><TD>Printer</TD><TD>11k</TD><TD>32k</TD></TR>
|
||||
</TABLE>
|
||||
</CENTER>
|
||||
</P>
|
||||
<H1 TYPE="A" VALUE="1"><A NAME="5">A Glossary</A></H1>
|
||||
<H2><A NAME="5_1">A.1 Terms</A></H2>
|
||||
<DL>
|
||||
<DT>C </DT>
|
||||
<DD>A computer language. </DD>
|
||||
<DT>parallel </DT>
|
||||
<DD>Sending or receiving data more than 1 bit at a time. </DD>
|
||||
<DT>pipe </DT>
|
||||
<DD>A one-way communications channel between two programs. </DD>
|
||||
<DT>serial </DT>
|
||||
<DD>Sending or receiving data 1 bit at a time. </DD>
|
||||
<DT>socket </DT>
|
||||
<DD>A two-way network communications channel. </DD>
|
||||
</DL>
|
||||
<H2><A NAME="5_2">A.2 Acronyms</A></H2>
|
||||
<DL>
|
||||
<DT>ASCII </DT>
|
||||
<DD>American Standard Code for Information Interchange </DD>
|
||||
<DT>CUPS </DT>
|
||||
<DD>Common UNIX Printing System </DD>
|
||||
<DT>ESC/P </DT>
|
||||
<DD>EPSON Standard Code for Printers </DD>
|
||||
<DT>FTP </DT>
|
||||
<DD>File Transfer Protocol </DD>
|
||||
<DT>HP-GL </DT>
|
||||
<DD>Hewlett-Packard Graphics Language </DD>
|
||||
<DT>HP-PCL </DT>
|
||||
<DD>Hewlett-Packard Page Control Language </DD>
|
||||
<DT>HP-PJL </DT>
|
||||
<DD>Hewlett-Packard Printer Job Language </DD>
|
||||
<DT>IETF </DT>
|
||||
<DD>Internet Engineering Task Force </DD>
|
||||
<DT>IPP </DT>
|
||||
<DD>Internet Printing Protocol </DD>
|
||||
<DT>ISO </DT>
|
||||
<DD>International Standards Organization </DD>
|
||||
<DT>LPD </DT>
|
||||
<DD>Line Printer Daemon </DD>
|
||||
<DT>MIME </DT>
|
||||
<DD>Multimedia Internet Mail Exchange </DD>
|
||||
<DT>PPD </DT>
|
||||
<DD>PostScript Printer Description </DD>
|
||||
<DT>SMB </DT>
|
||||
<DD>Server Message Block </DD>
|
||||
<DT>TFTP </DT>
|
||||
<DD>Trivial File Transfer Protocol </DD>
|
||||
</DL>
|
||||
</BODY>
|
||||
</HTML>
|
||||
Arquivo binário não exibido.
-457
@@ -1,457 +0,0 @@
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SPS-1.1">
|
||||
<META NAME="Author" CONTENT="Easy Software Products">
|
||||
<TITLE>CUPS Software Performance Specification</TITLE>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
|
||||
<H1>Scope</H1>
|
||||
|
||||
<H2>Identification</H2>
|
||||
|
||||
<P>This software performance specification provides an analysis of the
|
||||
memory, disk, and processor utilitization of each program in the
|
||||
Common UNIX Printing System ("CUPS") Version 1.1.</P>
|
||||
|
||||
<P>For the purposes of comparison, all figures are for the Linux Intel
|
||||
platform. Memory utilization on other platforms should be similar.
|
||||
|
||||
<EMBED SRC="system-overview.shtml">
|
||||
|
||||
<H2>Document Overview</H2>
|
||||
|
||||
<P>This software performance specification is organized into the
|
||||
following sections:</P>
|
||||
|
||||
<UL>
|
||||
<LI>1 - Scope</LI>
|
||||
<LI>2 - References</LI>
|
||||
<LI>3 - Programs</LI>
|
||||
<LI>4 - Scheduler Objects</LI>
|
||||
<LI>A - Glossary</LI>
|
||||
</UL>
|
||||
|
||||
<EMBED SRC="references.shtml">
|
||||
|
||||
<H1>Programs</H1>
|
||||
|
||||
<P>The following table describes the average memory, disk, and CPU usage of
|
||||
each program in CUPS.
|
||||
|
||||
<P>The base memory column shows the initial memory requirements for each
|
||||
program, including any shared libraries that are provided by CUPS.
|
||||
|
||||
<P>The max memory column shows the maximum amount of memory that will be
|
||||
used by the program based upon the default configuration settings supplied
|
||||
with CUPS.
|
||||
|
||||
<P>The temp files column indicates whether any temporary files are created.
|
||||
|
||||
<P>The CPU usage column specifies a relative CPU usage by the program under
|
||||
normal conditions, either low, medium, or high. Low usage indicates that
|
||||
the program will never use more than 33% of the available CPU time. Medium
|
||||
usage indicates the program will use as much as 66% of the available CPU
|
||||
time. High usage indicates the program uses 66% or more of the available CPU
|
||||
time.
|
||||
|
||||
<CENTER><TABLE WIDTH="80%" BORDER="1">
|
||||
<TR>
|
||||
<TH COLSPAN="3">Backends</TH>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH>Program</TH>
|
||||
<TH>Base Memory</TH>
|
||||
<TH>Max Memory</TH>
|
||||
<TH>Temp Files</TH>
|
||||
<TH>CPU Usage</TH>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>ipp</TD>
|
||||
<TD>91k</TD>
|
||||
<TD>256k</TD>
|
||||
<TD>Up to size of print file</TD>
|
||||
<TD>Low</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>lpd</TD>
|
||||
<TD>89k</TD>
|
||||
<TD>89k</TD>
|
||||
<TD>Up to size of print file</TD>
|
||||
<TD>Low</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>parallel</TD>
|
||||
<TD>85k</TD>
|
||||
<TD>85k</TD>
|
||||
<TD>Up to size of print file</TD>
|
||||
<TD>Low</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>serial</TD>
|
||||
<TD>85k</TD>
|
||||
<TD>85k</TD>
|
||||
<TD>Up to size of print file</TD>
|
||||
<TD>Low</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>socket</TD>
|
||||
<TD>85k</TD>
|
||||
<TD>85k</TD>
|
||||
<TD>Up to size of print file</TD>
|
||||
<TD>Low</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>usb</TD>
|
||||
<TD>85k</TD>
|
||||
<TD>85k</TD>
|
||||
<TD>Up to size of print file</TD>
|
||||
<TD>Low</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH COLSPAN="3">CGIs</TH>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH>Program</TH>
|
||||
<TH>Base Memory</TH>
|
||||
<TH>Max Memory</TH>
|
||||
<TH>Temp Files</TH>
|
||||
<TH>CPU Usage</TH>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>admin.cgi</TD>
|
||||
<TD>107k</TD>
|
||||
<TD>256k</TD>
|
||||
<TD>Up to size of PPD file</TD>
|
||||
<TD>Medium</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>classes.cgi</TD>
|
||||
<TD>95k</TD>
|
||||
<TD>Size of class objects</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Medium</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>jobs.cgi</TD>
|
||||
<TD>93k</TD>
|
||||
<TD>Size of job objects</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Medium</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>printers.cgi</TD>
|
||||
<TD>95k</TD>
|
||||
<TD>Size of printer objects</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Medium</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH COLSPAN="3">Command-Line Programs</TH>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH>Program</TH>
|
||||
<TH>Base Memory</TH>
|
||||
<TH>Max Memory</TH>
|
||||
<TH>Temp Files</TH>
|
||||
<TH>CPU Usage</TH>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>accept</TD>
|
||||
<TD>88k</TD>
|
||||
<TD>128k</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Low</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>cancel</TD>
|
||||
<TD>88k</TD>
|
||||
<TD>128k</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Low</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>disable</TD>
|
||||
<TD>88k</TD>
|
||||
<TD>128k</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Low</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>enable</TD>
|
||||
<TD>88k</TD>
|
||||
<TD>128k</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Low</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>lp</TD>
|
||||
<TD>90k</TD>
|
||||
<TD>256k</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Low</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>lpadmin</TD>
|
||||
<TD>148k</TD>
|
||||
<TD>256k</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Low</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>lpc</TD>
|
||||
<TD>86k</TD>
|
||||
<TD>Size of job and printer objects</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Medium</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>lpinfo</TD>
|
||||
<TD>89k</TD>
|
||||
<TD>Size of device and PPD objects</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Medium</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>lpmove</TD>
|
||||
<TD>88k</TD>
|
||||
<TD>128k</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Low</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>lpoptions</TD>
|
||||
<TD>89k</TD>
|
||||
<TD>128k</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Low</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>lppasswd</TD>
|
||||
<TD>90k</TD>
|
||||
<TD>90k</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Low</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>lpq</TD>
|
||||
<TD>87k</TD>
|
||||
<TD>Size of job objects</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Medium</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>lpr</TD>
|
||||
<TD>87k</TD>
|
||||
<TD>256k</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Low</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>lprm</TD>
|
||||
<TD>84k</TD>
|
||||
<TD>128k</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Low</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>lpstat</TD>
|
||||
<TD>119k</TD>
|
||||
<TD>Size of job, printer, and class objects</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Medium</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>reject</TD>
|
||||
<TD>88k</TD>
|
||||
<TD>128k</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Low</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH COLSPAN="3">Daemons</TH>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH>Program</TH>
|
||||
<TH>Base Memory</TH>
|
||||
<TH>Max Memory</TH>
|
||||
<TH>Temp Files</TH>
|
||||
<TH>CPU Usage</TH>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>cups-lpd</TD>
|
||||
<TD>92k</TD>
|
||||
<TD>256k</TD>
|
||||
<TD>One file per control or data file from client</TD>
|
||||
<TD>Low</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>cupsd</TD>
|
||||
<TD>308k</TD>
|
||||
<TD>See Scheduler Requirements</TD>
|
||||
<TD>See Scheduler Requirements</TD>
|
||||
<TD>Medium</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>cups-polld</TD>
|
||||
<TD>84k</TD>
|
||||
<TD>Size of printer and class objects</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Low</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH COLSPAN="3">Filters</TH>
|
||||
</TR>
|
||||
<TR>
|
||||
<TH>Program</TH>
|
||||
<TH>Base Memory</TH>
|
||||
<TH>Max Memory</TH>
|
||||
<TH>Temp Files</TH>
|
||||
<TH>CPU Usage</TH>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>hpgltops</TD>
|
||||
<TD>263k</TD>
|
||||
<TD>320k</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Medium</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>imagetops</TD>
|
||||
<TD>628k</TD>
|
||||
<TD>10M</TD>
|
||||
<TD>Swap file for uncompressed image data</TD>
|
||||
<TD>Medium</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>imagetoraster</TD>
|
||||
<TD>652k</TD>
|
||||
<TD>10M</TD>
|
||||
<TD>Swap file for uncompressed image data</TD>
|
||||
<TD>High</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>pstops</TD>
|
||||
<TD>775k</TD>
|
||||
<TD>840k</TD>
|
||||
<TD>Up to size of print file</TD>
|
||||
<TD>Medium</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>pstoraster</TD>
|
||||
<TD>4M</TD>
|
||||
<TD>14M</TD>
|
||||
<TD>Swap file for command lists</TD>
|
||||
<TD>High</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>rastertoepson</TD>
|
||||
<TD>693k</TD>
|
||||
<TD>1M</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Low</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>rastertohp</TD>
|
||||
<TD>690k</TD>
|
||||
<TD>1M</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Low</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>texttops</TD>
|
||||
<TD>638k</TD>
|
||||
<TD>4*cols*rows</TD>
|
||||
<TD>None</TD>
|
||||
<TD>Low</TD>
|
||||
</TR>
|
||||
</TABLE></CENTER>
|
||||
|
||||
|
||||
<H1>Scheduler Objects</H1>
|
||||
|
||||
<P>The <CODE>cupsd</CODE> program is the CUPS scheduler process. It manages
|
||||
many interdependent server objects that are used to manage and print files
|
||||
to printers.
|
||||
|
||||
<P>The following table provides the memory and disk cost associated with each
|
||||
server object.
|
||||
|
||||
<CENTER><TABLE WIDTH="80%" BORDER="1">
|
||||
<TR>
|
||||
<TH>Object</TH>
|
||||
<TH>Memory Per</TH>
|
||||
<TH>Disk Per</TH>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>Browse ACL</TD>
|
||||
<TD>1k</TD>
|
||||
<TD>120</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>Browse Poll</TD>
|
||||
<TD>24</TD>
|
||||
<TD>80</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>Browse Relay</TD>
|
||||
<TD>28</TD>
|
||||
<TD>80</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>Certificate</TD>
|
||||
<TD>76</TD>
|
||||
<TD>32</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>Class</TD>
|
||||
<TD>9k</TD>
|
||||
<TD>200</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>Client</TD>
|
||||
<TD>13k</TD>
|
||||
<TD>-</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>Device</TD>
|
||||
<TD>256</TD>
|
||||
<TD>-</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>Job</TD>
|
||||
<TD>2k</TD>
|
||||
<TD>1k + size of document files</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>Location ACL</TD>
|
||||
<TD>1k</TD>
|
||||
<TD>120</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>MIME Filter</TD>
|
||||
<TD>268</TD>
|
||||
<TD>80</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>MIME Type</TD>
|
||||
<TD>340</TD>
|
||||
<TD>80</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>PPD</TD>
|
||||
<TD>200</TD>
|
||||
<TD>656</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>Printer</TD>
|
||||
<TD>11k</TD>
|
||||
<TD>32k</TD>
|
||||
</TR>
|
||||
</TABLE></CENTER>
|
||||
|
||||
<EMBED SRC="glossary.shtml">
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
+55
-123
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE> CUPS Software Security Report</TITLE>
|
||||
<TITLE>CUPS Software Security Report</TITLE>
|
||||
<META NAME="AUTHOR" CONTENT="Easy Software Products">
|
||||
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SSR-1.1">
|
||||
@@ -17,11 +17,14 @@ H6 { font-family: sans-serif; font-size: 8.0pt }
|
||||
SUB { font-size: 8.0pt }
|
||||
SUP { font-size: 8.0pt }
|
||||
PRE { font-size: 9.0pt }
|
||||
A:link { text-decoration: underline }
|
||||
A:visited { text-decoration: underline }
|
||||
A:active { text-decoration: underline }
|
||||
</STYLE>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0" WIDTH="100%"><BR>
|
||||
<H1> CUPS Software Security Report</H1></A><BR>
|
||||
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0"><BR>
|
||||
<H1>CUPS Software Security Report</H1></A><BR>
|
||||
CUPS-SSR-1.1<BR>
|
||||
Easy Software Products<BR>
|
||||
Copyright 1997-2000, All Rights Reserved<BR>
|
||||
@@ -49,33 +52,28 @@ Copyright 1997-2000, All Rights Reserved<BR>
|
||||
<LI><A HREF="#4_1">4.1 Denial of Service Attacks</A></LI>
|
||||
<LI><A HREF="#4_2">4.2 Security Breaches</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#5">A Glossary</A></B>
|
||||
<UL>
|
||||
<LI><A HREF="#5_1">A.1 Terms</A></LI>
|
||||
<LI><A HREF="#5_2">A.2 Acronyms</A></LI>
|
||||
</UL>
|
||||
<HR>
|
||||
<H1><A NAME="1">1 Scope</A></H1>
|
||||
<H2><A NAME="1_1">1.1 Identification</A></H2>
|
||||
<P>This software security report provides an analysis of possible
|
||||
This software security report provides an analysis of possible
|
||||
security concerns for the Common UNIX Printing System ("CUPS") Version
|
||||
1.1.</P>
|
||||
1.1.
|
||||
<H2><A NAME="1_2">1.2 System Overview</A></H2>
|
||||
<P>CUPS provides a portable printing layer for UNIX®-based operating
|
||||
systems. It has been developed by <A HREF="http://www.easysw.com">Easy
|
||||
Software Products</A> to promote a standard printing solution for all
|
||||
UNIX vendors and users. CUPS provides the System V and Berkeley
|
||||
<P>The Common UNIX Printing System provides a portable printing layer
|
||||
for UNIX® operating systems. It has been developed by <A HREF="http://www.easysw.com">
|
||||
Easy Software Products</A> to promote a standard printing solution for
|
||||
all UNIX vendors and users. CUPS provides the System V and Berkeley
|
||||
command-line interfaces. </P>
|
||||
<P>CUPS uses the Internet Printing Protocol ("IPP") as the basis for
|
||||
managing print jobs and queues. The Line Printer Daemon ("LPD") Server
|
||||
Message Block ("SMB"), and AppSocket (a.k.a. JetDirect) protocols are
|
||||
also supported with reduced functionality. CUPS adds network printer
|
||||
browsing and PostScript Printer Description ("PPD") based printing
|
||||
options to support real-world printing under UNIX. </P>
|
||||
<P>CUPS also includes a customized version of GNU Ghostscript
|
||||
(currently based off GNU Ghostscript 5.50) and an image file RIP that
|
||||
are used to support non-PostScript printers. Sample drivers for HP and
|
||||
EPSON printers are included that use these filters. </P>
|
||||
<P>CUPS uses the Internet Printing Protocol (IETF-IPP) as the basis for
|
||||
managing print jobs and queues. The Line Printer Daemon (LPD, RFC1179),
|
||||
Server Message Block (SMB), and AppSocket protocols are also supported
|
||||
with reduced functionality. </P>
|
||||
<P>CUPS adds network printer browsing and PostScript Printer
|
||||
Description ("PPD")-based printing options to support real world
|
||||
applications under UNIX. </P>
|
||||
<P>CUPS also includes a customized version of GNU GhostScript
|
||||
(currently based off GNU GhostScript 5.50) and an image file RIP that
|
||||
is used to support non-PostScript printers. </P>
|
||||
<H2><A NAME="1_3">1.3 Document Overview</A></H2>
|
||||
<P>This software security report is organized into the following
|
||||
sections:</P>
|
||||
@@ -95,37 +93,30 @@ sections:</P>
|
||||
<LI>CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
|
||||
<LI>CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
|
||||
<LI>CUPS-SDD-1.1: CUPS Software Design Description </LI>
|
||||
<LI>CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
|
||||
<LI>CUPS-SPM-1.1: CUPS Software Programming Manual </LI>
|
||||
<LI>CUPS-SSR-1.1: CUPS Software Security Report </LI>
|
||||
<LI>CUPS-STP-1.1: CUPS Software Test Plan </LI>
|
||||
<LI>CUPS-SUM-1.1.x: CUPS Software Users Manual </LI>
|
||||
<LI>CUPS-SVD-1.1: CUPS Software Version Description </LI>
|
||||
<LI>CUPS-SVD-1.1.x: CUPS Software Version Description </LI>
|
||||
</UL>
|
||||
<H2><A NAME="2_2">2.2 Other Documents</A></H2>
|
||||
<P>The following non-CUPS documents are referenced by this document: </P>
|
||||
<UL>
|
||||
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf">
|
||||
Adobe PostScript Printer Description File Format Specification,
|
||||
Version 4.3.</A></LI>
|
||||
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf">
|
||||
Adobe PostScript Language Reference, Third Edition.</A></LI>
|
||||
<LI>Adobe PostScript Printer Description File Format Specification,
|
||||
Version 4.3. </LI>
|
||||
<LI>Adobe PostScript Language Reference, Third Edition. </LI>
|
||||
<LI>IPP: Job and Printer Set Operations </LI>
|
||||
<LI>IPP/1.1: Encoding and Transport </LI>
|
||||
<LI>IPP/1.1: Implementers Guide </LI>
|
||||
<LI>IPP/1.1: Model and Semantics </LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc1179.txt">RFC 1179, Line
|
||||
Printer Daemon Protocol</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2567.txt">RFC 2567, Design
|
||||
Goals for an Internet Printing Protocol</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2568.txt">RFC 2568, Rationale
|
||||
for the Structure of the Model and Protocol</A> for the Internet
|
||||
Printing Protocol</LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2569.txt">RFC 2569, Mapping
|
||||
between LPD and IPP Protocols</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616, Hypertext
|
||||
Transfer Protocol -- HTTP/1.1</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2617.txt">RFC 2617, HTTP
|
||||
Authentication: Basic and Digest Access</A> Authentication </LI>
|
||||
<LI>RFC 1179, Line Printer Daemon Protocol </LI>
|
||||
<LI>RFC 2567, Design Goals for an Internet Printing Protocol </LI>
|
||||
<LI>RFC 2568, Rationale for the Structure of the Model and Protocol
|
||||
for the Internet Printing Protocol </LI>
|
||||
<LI>RFC 2569, Mapping between LPD and IPP Protocols </LI>
|
||||
<LI>RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1 </LI>
|
||||
<LI>RFC 2617, HTTP Authentication: Basic and Digest Access
|
||||
Authentication </LI>
|
||||
</UL>
|
||||
<H1><A NAME="3">3 Local Access Risks</A></H1>
|
||||
<P>Local access risks are those that can be exploited only with a local
|
||||
@@ -133,8 +124,13 @@ user account. This section does not address issues related to
|
||||
dissemination of the root password or other security issues associated
|
||||
with the UNIX operating system. </P>
|
||||
<H2><A NAME="3_1">3.1 Security Breaches</A></H2>
|
||||
<P>There is one known security vulnerability with local access: </P>
|
||||
<P>There are two known security vulnerabilities with local access: </P>
|
||||
<OL>
|
||||
<LI>Since the default installation creates a world-readable request
|
||||
directory, it is possible for local users to read the contents of
|
||||
print files before they are printed. </LI>
|
||||
<P>This problem can be alleviated by making the request directory
|
||||
readable only by the user specified in the CUPS configuration file. </P>
|
||||
<LI>Device URIs are passed to backend filters in argv[0] and in an
|
||||
environment variable. Since device URIs can contain usernames and
|
||||
passwords it may be possible for a local user to gain access to a
|
||||
@@ -159,7 +155,7 @@ of service attacks, including: </P>
|
||||
<P>This cannot be protected against by the current software. It is
|
||||
possible that future versions of the CUPS software could be configured
|
||||
to limit the number of connections allowed from a single host, however
|
||||
that still would not prevent a distributed attack. </P>
|
||||
that still would not prevent a determined attack. </P>
|
||||
<LI>Repeatedly opening and closing connections to the server as fast
|
||||
as possible. </LI>
|
||||
<P>There is no easy way of protecting against this in the CUPS
|
||||
@@ -188,83 +184,19 @@ large attribute values. </P>
|
||||
user-level access control as needed for expensive printers. </P>
|
||||
</OL>
|
||||
<H2><A NAME="4_2">4.2 Security Breaches</A></H2>
|
||||
<P>The current CUPS server supports Basic, Digest, and local
|
||||
certificate authentication: </P>
|
||||
<OL>
|
||||
<LI>Basic authentication essentially places the clear text of the
|
||||
username and password on the network. Since CUPS uses the UNIX
|
||||
username and password account information, the authentication
|
||||
information could be used to gain access to accounts (possibly
|
||||
priviledged accounts) on the server. </LI>
|
||||
<LI>Digest authentication uses an MD5 checksum of the username,
|
||||
password, and domain ("CUPS"), so the original username and password
|
||||
is not sent over the network. However, the current implementation does
|
||||
not authenticate the entire message and uses the client's IP address
|
||||
for the nonce value, making it possible to launch "man in the middle"
|
||||
and replay attacks from the same client. The next minor release of
|
||||
CUPS will support Digest authentication of the entire message body,
|
||||
effectively stopping these methods of attack. </LI>
|
||||
<LI>Local certificate authentication passes 128-bit "certificates"
|
||||
that identify an authenticated user. Certificates are created
|
||||
on-the-fly from random data and stored in files under <CODE>
|
||||
/etc/cups/certs</CODE>. They have restricted read permissions: root +
|
||||
system for the root certificate, and lp + system for CGI certificates.
|
||||
Because certificates are only available on the local system, the CUPS
|
||||
server does not accept local authentication unless the client is
|
||||
connected to the localhost address (127.0.0.1.) </LI>
|
||||
</OL>
|
||||
<P>The current CUPS server only supports Basic authentication with
|
||||
usernames and passwords. This essentially places the clear text of the
|
||||
username and password on the network. Since CUPS uses the UNIX username
|
||||
and password account information, the authentication information could
|
||||
be used to gain access to accounts (possibly priviledged accounts) on
|
||||
the server. </P>
|
||||
<P>The default CUPS configuration disables remote administration. We do
|
||||
not recommend that remote administration be enabled for all hosts.
|
||||
However, if you have a trusted network or subnet, access can be
|
||||
restricted accordingly. Also, we highly recommend using Digest
|
||||
authentication when possible. Unfortunately, most web browsers do not
|
||||
support Digest authentication at this time. </P>
|
||||
<H1 TYPE="A" VALUE="1"><A NAME="5">A Glossary</A></H1>
|
||||
<H2><A NAME="5_1">A.1 Terms</A></H2>
|
||||
<DL>
|
||||
<DT>C </DT>
|
||||
<DD>A computer language. </DD>
|
||||
<DT>parallel </DT>
|
||||
<DD>Sending or receiving data more than 1 bit at a time. </DD>
|
||||
<DT>pipe </DT>
|
||||
<DD>A one-way communications channel between two programs. </DD>
|
||||
<DT>serial </DT>
|
||||
<DD>Sending or receiving data 1 bit at a time. </DD>
|
||||
<DT>socket </DT>
|
||||
<DD>A two-way network communications channel. </DD>
|
||||
</DL>
|
||||
<H2><A NAME="5_2">A.2 Acronyms</A></H2>
|
||||
<DL>
|
||||
<DT>ASCII </DT>
|
||||
<DD>American Standard Code for Information Interchange </DD>
|
||||
<DT>CUPS </DT>
|
||||
<DD>Common UNIX Printing System </DD>
|
||||
<DT>ESC/P </DT>
|
||||
<DD>EPSON Standard Code for Printers </DD>
|
||||
<DT>FTP </DT>
|
||||
<DD>File Transfer Protocol </DD>
|
||||
<DT>HP-GL </DT>
|
||||
<DD>Hewlett-Packard Graphics Language </DD>
|
||||
<DT>HP-PCL </DT>
|
||||
<DD>Hewlett-Packard Page Control Language </DD>
|
||||
<DT>HP-PJL </DT>
|
||||
<DD>Hewlett-Packard Printer Job Language </DD>
|
||||
<DT>IETF </DT>
|
||||
<DD>Internet Engineering Task Force </DD>
|
||||
<DT>IPP </DT>
|
||||
<DD>Internet Printing Protocol </DD>
|
||||
<DT>ISO </DT>
|
||||
<DD>International Standards Organization </DD>
|
||||
<DT>LPD </DT>
|
||||
<DD>Line Printer Daemon </DD>
|
||||
<DT>MIME </DT>
|
||||
<DD>Multimedia Internet Mail Exchange </DD>
|
||||
<DT>PPD </DT>
|
||||
<DD>PostScript Printer Description </DD>
|
||||
<DT>SMB </DT>
|
||||
<DD>Server Message Block </DD>
|
||||
<DT>TFTP </DT>
|
||||
<DD>Trivial File Transfer Protocol </DD>
|
||||
</DL>
|
||||
not recommend that remote administration be enabled for all hosts,
|
||||
however if you have a trusted network or subnet access can be
|
||||
restricted accordingly. </P>
|
||||
<P>The next minor release of CUPS will support Digest authentication of
|
||||
the entire message body using separate MD5-based username and password
|
||||
files. This will protect password information and prevent unauthorized
|
||||
access due to compromised account passwords. </P>
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
Arquivo binário não exibido.
+8
-10
@@ -11,7 +11,7 @@
|
||||
|
||||
<H2>Identification</H2>
|
||||
|
||||
<P>This software security report provides an analysis of possible security
|
||||
This software security report provides an analysis of possible security
|
||||
concerns for the Common UNIX Printing System ("CUPS") Version 1.1.</P>
|
||||
|
||||
<EMBED SRC="system-overview.shtml">
|
||||
@@ -39,7 +39,7 @@ system.
|
||||
|
||||
<H2>Security Breaches</H2>
|
||||
|
||||
<P>There is one known security vulnerability with local access:
|
||||
<P>There is one known security vulnerabilities with local access:
|
||||
|
||||
<OL>
|
||||
|
||||
@@ -77,7 +77,7 @@ service attacks, including:
|
||||
<P>This cannot be protected against by the current software. It
|
||||
is possible that future versions of the CUPS software could be
|
||||
configured to limit the number of connections allowed from a
|
||||
single host, however that still would not prevent a distributed
|
||||
single host, however that still would not prevent a determined
|
||||
attack.
|
||||
|
||||
<LI>Repeatedly opening and closing connections to the server as fast
|
||||
@@ -153,13 +153,11 @@ authentication:
|
||||
</OL>
|
||||
|
||||
<P>The default CUPS configuration disables remote administration. We do
|
||||
not recommend that remote administration be enabled for all hosts.
|
||||
However, if you have a trusted network or subnet, access can be
|
||||
restricted accordingly.
|
||||
|
||||
Also, we highly recommend using Digest authentication when possible.
|
||||
Unfortunately, most web browsers do not support Digest authentication
|
||||
at this time.
|
||||
not recommend that remote administration be enabled for all hosts,
|
||||
however if you have a trusted network or subnet access can be
|
||||
restricted accordingly. Also, we highly recommend using Digest
|
||||
authentication when possible; unfortunately, most web browsers do not
|
||||
support Digest authentication at this time.
|
||||
|
||||
<EMBED SRC="glossary.shtml">
|
||||
|
||||
|
||||
+39
-41
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE> DRAFT - CUPS Software Test Plan</TITLE>
|
||||
<TITLE>DRAFT - CUPS Software Test Plan</TITLE>
|
||||
<META NAME="AUTHOR" CONTENT="Easy Software Products">
|
||||
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-STP-1.1">
|
||||
@@ -17,11 +17,14 @@ H6 { font-family: sans-serif; font-size: 8.0pt }
|
||||
SUB { font-size: 8.0pt }
|
||||
SUP { font-size: 8.0pt }
|
||||
PRE { font-size: 9.0pt }
|
||||
A:link { text-decoration: underline }
|
||||
A:visited { text-decoration: underline }
|
||||
A:active { text-decoration: underline }
|
||||
</STYLE>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0" WIDTH="100%"><BR>
|
||||
<H1> DRAFT - CUPS Software Test Plan</H1></A><BR>
|
||||
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0"><BR>
|
||||
<H1>DRAFT - CUPS Software Test Plan</H1></A><BR>
|
||||
CUPS-STP-1.1<BR>
|
||||
Easy Software Products<BR>
|
||||
Copyright 1997-2000, All Rights Reserved<BR>
|
||||
@@ -52,27 +55,27 @@ Copyright 1997-2000, All Rights Reserved<BR>
|
||||
<HR>
|
||||
<H1><A NAME="1">1 Scope</A></H1>
|
||||
<H2><A NAME="1_1">1.1 Identification</A></H2>
|
||||
<P>This software test plan provides detailed tests that are used to
|
||||
This software test plan provides detailed tests that are used to
|
||||
evaluate the stability of the Common UNIX Printing System ("CUPS")
|
||||
Version 1.1. </P>
|
||||
Version 1.1.
|
||||
<H2><A NAME="1_2">1.2 System Overview</A></H2>
|
||||
<P>CUPS provides a portable printing layer for UNIX®-based operating
|
||||
systems. It has been developed by <A HREF="http://www.easysw.com">Easy
|
||||
Software Products</A> to promote a standard printing solution for all
|
||||
UNIX vendors and users. CUPS provides the System V and Berkeley
|
||||
<P>The Common UNIX Printing System provides a portable printing layer
|
||||
for UNIX® operating systems. It has been developed by <A HREF="http://www.easysw.com">
|
||||
Easy Software Products</A> to promote a standard printing solution for
|
||||
all UNIX vendors and users. CUPS provides the System V and Berkeley
|
||||
command-line interfaces. </P>
|
||||
<P>CUPS uses the Internet Printing Protocol ("IPP") as the basis for
|
||||
managing print jobs and queues. The Line Printer Daemon ("LPD") Server
|
||||
Message Block ("SMB"), and AppSocket (a.k.a. JetDirect) protocols are
|
||||
also supported with reduced functionality. CUPS adds network printer
|
||||
browsing and PostScript Printer Description ("PPD") based printing
|
||||
options to support real-world printing under UNIX. </P>
|
||||
<P>CUPS also includes a customized version of GNU Ghostscript
|
||||
(currently based off GNU Ghostscript 5.50) and an image file RIP that
|
||||
are used to support non-PostScript printers. Sample drivers for HP and
|
||||
EPSON printers are included that use these filters. </P>
|
||||
<P>CUPS uses the Internet Printing Protocol (IETF-IPP) as the basis for
|
||||
managing print jobs and queues. The Line Printer Daemon (LPD, RFC1179),
|
||||
Server Message Block (SMB), and AppSocket protocols are also supported
|
||||
with reduced functionality. </P>
|
||||
<P>CUPS adds network printer browsing and PostScript Printer
|
||||
Description ("PPD")-based printing options to support real world
|
||||
applications under UNIX. </P>
|
||||
<P>CUPS also includes a customized version of GNU GhostScript
|
||||
(currently based off GNU GhostScript 5.50) and an image file RIP that
|
||||
is used to support non-PostScript printers. </P>
|
||||
<H2><A NAME="1_3">1.3 Document Overview</A></H2>
|
||||
<P>This software test plan is organized into the following sections: </P>
|
||||
This software test plan is organized into the following sections:
|
||||
<UL>
|
||||
<LI>1 - Scope</LI>
|
||||
<LI>2 - References</LI>
|
||||
@@ -89,37 +92,30 @@ EPSON printers are included that use these filters. </P>
|
||||
<LI>CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
|
||||
<LI>CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
|
||||
<LI>CUPS-SDD-1.1: CUPS Software Design Description </LI>
|
||||
<LI>CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
|
||||
<LI>CUPS-SPM-1.1: CUPS Software Programming Manual </LI>
|
||||
<LI>CUPS-SSR-1.1: CUPS Software Security Report </LI>
|
||||
<LI>CUPS-STP-1.1: CUPS Software Test Plan </LI>
|
||||
<LI>CUPS-SUM-1.1.x: CUPS Software Users Manual </LI>
|
||||
<LI>CUPS-SVD-1.1: CUPS Software Version Description </LI>
|
||||
<LI>CUPS-SVD-1.1.x: CUPS Software Version Description </LI>
|
||||
</UL>
|
||||
<H2><A NAME="2_2">2.2 Other Documents</A></H2>
|
||||
<P>The following non-CUPS documents are referenced by this document: </P>
|
||||
<UL>
|
||||
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf">
|
||||
Adobe PostScript Printer Description File Format Specification,
|
||||
Version 4.3.</A></LI>
|
||||
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf">
|
||||
Adobe PostScript Language Reference, Third Edition.</A></LI>
|
||||
<LI>Adobe PostScript Printer Description File Format Specification,
|
||||
Version 4.3. </LI>
|
||||
<LI>Adobe PostScript Language Reference, Third Edition. </LI>
|
||||
<LI>IPP: Job and Printer Set Operations </LI>
|
||||
<LI>IPP/1.1: Encoding and Transport </LI>
|
||||
<LI>IPP/1.1: Implementers Guide </LI>
|
||||
<LI>IPP/1.1: Model and Semantics </LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc1179.txt">RFC 1179, Line
|
||||
Printer Daemon Protocol</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2567.txt">RFC 2567, Design
|
||||
Goals for an Internet Printing Protocol</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2568.txt">RFC 2568, Rationale
|
||||
for the Structure of the Model and Protocol</A> for the Internet
|
||||
Printing Protocol</LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2569.txt">RFC 2569, Mapping
|
||||
between LPD and IPP Protocols</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616, Hypertext
|
||||
Transfer Protocol -- HTTP/1.1</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2617.txt">RFC 2617, HTTP
|
||||
Authentication: Basic and Digest Access</A> Authentication </LI>
|
||||
<LI>RFC 1179, Line Printer Daemon Protocol </LI>
|
||||
<LI>RFC 2567, Design Goals for an Internet Printing Protocol </LI>
|
||||
<LI>RFC 2568, Rationale for the Structure of the Model and Protocol
|
||||
for the Internet Printing Protocol </LI>
|
||||
<LI>RFC 2569, Mapping between LPD and IPP Protocols </LI>
|
||||
<LI>RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1 </LI>
|
||||
<LI>RFC 2617, HTTP Authentication: Basic and Digest Access
|
||||
Authentication </LI>
|
||||
</UL>
|
||||
<H1><A NAME="3">3 Local Tests</A></H1>
|
||||
<H1><A NAME="4">4 Remote Tests</A></H1>
|
||||
@@ -150,7 +146,7 @@ Authentication: Basic and Digest Access</A> Authentication </LI>
|
||||
<DT>HP-GL </DT>
|
||||
<DD>Hewlett-Packard Graphics Language </DD>
|
||||
<DT>HP-PCL </DT>
|
||||
<DD>Hewlett-Packard Page Control Language </DD>
|
||||
<DD>Hewlett-Packard Printer Control Language </DD>
|
||||
<DT>HP-PJL </DT>
|
||||
<DD>Hewlett-Packard Printer Job Language </DD>
|
||||
<DT>IETF </DT>
|
||||
@@ -163,6 +159,8 @@ Authentication: Basic and Digest Access</A> Authentication </LI>
|
||||
<DD>Line Printer Daemon </DD>
|
||||
<DT>MIME </DT>
|
||||
<DD>Multimedia Internet Mail Exchange </DD>
|
||||
<DT>PCL </DT>
|
||||
<DD>Page Control Language </DD>
|
||||
<DT>PPD </DT>
|
||||
<DD>PostScript Printer Description </DD>
|
||||
<DT>SMB </DT>
|
||||
|
||||
Arquivo binário não exibido.
+2
-2
@@ -12,14 +12,14 @@
|
||||
|
||||
<H2>Identification</H2>
|
||||
|
||||
<P>This software test plan provides detailed tests that are used to evaluate
|
||||
This software test plan provides detailed tests that are used to evaluate
|
||||
the stability of the Common UNIX Printing System ("CUPS") Version 1.1.
|
||||
|
||||
<EMBED SRC="system-overview.shtml">
|
||||
|
||||
<H2>Document Overview</H2>
|
||||
|
||||
<P>This software test plan is organized into the following sections:
|
||||
This software test plan is organized into the following sections:
|
||||
|
||||
<UL>
|
||||
<LI>1 - Scope</LI>
|
||||
|
||||
+63
-156
@@ -1,10 +1,10 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE> CUPS Software Users Manual</TITLE>
|
||||
<TITLE>CUPS Software Users Manual</TITLE>
|
||||
<META NAME="AUTHOR" CONTENT="Easy Software Products">
|
||||
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SUM-1.1.1">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SUM-1.1">
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<STYLE>
|
||||
BODY { font-family: serif; font-size: 11.0pt }
|
||||
@@ -20,9 +20,9 @@ PRE { font-size: 9.0pt }
|
||||
</STYLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#ffffff">
|
||||
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0" WIDTH="100%"><BR>
|
||||
<H1> CUPS Software Users Manual</H1></A><BR>
|
||||
CUPS-SUM-1.1.1<BR>
|
||||
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0"><BR>
|
||||
<H1>CUPS Software Users Manual</H1></A><BR>
|
||||
CUPS-SUM-1.1<BR>
|
||||
Easy Software Products<BR>
|
||||
Copyright 1997-2000, All Rights Reserved<BR>
|
||||
</CENTER>
|
||||
@@ -65,41 +65,32 @@ Copyright 1997-2000, All Rights Reserved<BR>
|
||||
<LI><A HREF="#4_1_1">Setting the Orientation</A></LI>
|
||||
<LI><A HREF="#4_1_2">Selecting the Media Size, Type, and Source</A></LI>
|
||||
<LI><A HREF="#4_1_3">Printing On Both Sides of the Paper</A></LI>
|
||||
<LI><A HREF="#4_1_4">Selecting a Range of Pages</A></LI>
|
||||
<LI><A HREF="#4_1_5">Selecting Even or Odd Pages</A></LI>
|
||||
<LI><A HREF="#4_1_6">N-Up Printing</A></LI>
|
||||
<LI><A HREF="#4_1_7">Setting the Brightness</A></LI>
|
||||
<LI><A HREF="#4_1_8">Setting the Gamma Correction</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#4_2">Banner Options</A></LI>
|
||||
<LI><A HREF="#4_2">Text Options</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#4_2_1">Selecting the Banner Page(s)</A></LI>
|
||||
<LI><A HREF="#4_2_1">Setting the Number of Characters Per Inch</A></LI>
|
||||
<LI><A HREF="#4_2_2">Setting the Number of Lines Per Inch</A></LI>
|
||||
<LI><A HREF="#4_2_3">Setting the Number of Columns</A></LI>
|
||||
<LI><A HREF="#4_2_4">Setting the Page Margins</A></LI>
|
||||
<LI><A HREF="#4_2_5">Pretty Printing</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#4_3">Document Options</A></LI>
|
||||
<LI><A HREF="#4_3">Image Options</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#4_3_1">Selecting a Range of Pages</A></LI>
|
||||
<LI><A HREF="#4_3_2">Selecting Even or Odd Pages</A></LI>
|
||||
<LI><A HREF="#4_3_3">N-Up Printing</A></LI>
|
||||
<LI><A HREF="#4_3_4">Setting the Brightness</A></LI>
|
||||
<LI><A HREF="#4_3_5">Setting the Gamma Correction</A></LI>
|
||||
<LI><A HREF="#4_3_1">Scaling the Image</A></LI>
|
||||
<LI><A HREF="#4_3_2">Adjusting the Hue (Tint) of an Image</A></LI>
|
||||
<LI><A HREF="#4_3_3">Adjusting the Saturation (Color) of an Image</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#4_4">Text Options</A></LI>
|
||||
<LI><A HREF="#4_4">HP-GL/2 Options</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#4_4_1">Setting the Number of Characters Per Inch</A></LI>
|
||||
<LI><A HREF="#4_4_2">Setting the Number of Lines Per Inch</A></LI>
|
||||
<LI><A HREF="#4_4_3">Setting the Number of Columns</A></LI>
|
||||
<LI><A HREF="#4_4_4">Setting the Page Margins</A></LI>
|
||||
<LI><A HREF="#4_4_5">Pretty Printing</A></LI>
|
||||
<LI><A HREF="#4_4_1">Printing in Black</A></LI>
|
||||
<LI><A HREF="#4_4_2">Fitting the Plot on the Page</A></LI>
|
||||
<LI><A HREF="#4_4_3">Setting the Default Pen Width</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#4_5">Image Options</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#4_5_1">Positioning the Image</A></LI>
|
||||
<LI><A HREF="#4_5_2">Scaling the Image</A></LI>
|
||||
<LI><A HREF="#4_5_3">Adjusting the Hue (Tint) of an Image</A></LI>
|
||||
<LI><A HREF="#4_5_4">Adjusting the Saturation (Color) of an Image</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#4_6">HP-GL/2 Options</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#4_6_1">Printing in Black</A></LI>
|
||||
<LI><A HREF="#4_6_2">Fitting the Plot on the Page</A></LI>
|
||||
<LI><A HREF="#4_6_3">Setting the Default Pen Width</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#4_7">Raw or Unfiltered Output</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#SAVING_OPTIONS">4 - Saving Printer Options and Defaults</A></B>
|
||||
<UL>
|
||||
@@ -125,7 +116,7 @@ Copyright 1997-2000, All Rights Reserved<BR>
|
||||
<HR>
|
||||
<H1 ALIGN="RIGHT"><A NAME="1">Preface</A></H1>
|
||||
<P>This software users manual describes how to use the Common UNIX
|
||||
Printing System<SUP>TM</SUP> ("CUPS<SUP>TM</SUP>") Version 1.1.1. </P>
|
||||
Printing System<SUP>TM</SUP> ("CUPS<SUP>TM</SUP>") Version 1.1. </P>
|
||||
<H2><A NAME="1_1">System Overview</A></H2>
|
||||
<P>CUPS provides a portable printing layer for UNIX®-based operating
|
||||
systems. It has been developed by <A HREF="http://www.easysw.com">Easy
|
||||
@@ -162,12 +153,12 @@ and their meanings and uses are explained below:
|
||||
<TR><TH>Example</TH><TD> </TD><TH>Description</TH></TR>
|
||||
<TR><TD> </TD></TR>
|
||||
<TR VALIGN="TOP"><TD><CODE>lpstat</CODE>
|
||||
<BR><CODE> lpstat(1)</CODE></TD><TD> </TD><TD>The names of commands;
|
||||
<BR><CODE>lpstat(1)</CODE></TD><TD> </TD><TD>The names of commands;
|
||||
the first mention of a command or function in a chapter is followed by
|
||||
a manual page section number.</TD></TR>
|
||||
<TR><TD> </TD></TR>
|
||||
<TR VALIGN="TOP"><TD><VAR>/var</VAR>
|
||||
<BR><VAR> /usr/share/cups/data/testprint.ps</VAR></TD><TD> </TD><TD>
|
||||
<BR><VAR>/usr/share/cups/data/testprint.ps</VAR></TD><TD> </TD><TD>
|
||||
File and directory names.</TD></TR>
|
||||
<TR><TD> </TD></TR>
|
||||
<TR VALIGN="TOP"><TD NOWRAP><TT>Request ID is Printer-123</TT></TD><TD>
|
||||
@@ -517,41 +508,7 @@ suitable for portrait pages: </P>
|
||||
<B>lpr -o sides=one-sided filename ENTER</B>
|
||||
</PRE>
|
||||
</UL>
|
||||
<H2><A NAME="4_2">Banner Options</A></H2>
|
||||
<P>The following options apply when printing all types of files. </P>
|
||||
<H3><A NAME="4_2_1">Selecting the Banner Page(s)</A></H3>
|
||||
<P>The <CODE>-o jobsheets=start,end</CODE> option sets the banner
|
||||
page(s) to use for a job: </P>
|
||||
<UL>
|
||||
<PRE>
|
||||
<B>lp -o job-sheets=none filename ENTER</B>
|
||||
<B>lp -o job-sheets=standard filename ENTER</B>
|
||||
<B>lpr -o job-sheets=classified,classified filename ENTER</B>
|
||||
</PRE>
|
||||
</UL>
|
||||
<P>If only one banner file is specified, it will be printed before the
|
||||
files in the job. If a second banner file is specified, it is printed
|
||||
after the files in the job. </P>
|
||||
<P>The available banner pages depend on the local system configuration;
|
||||
CUPS includes the following banner files: </P>
|
||||
<UL>
|
||||
<LI><CODE>none</CODE> - Do not produce a banner page. </LI>
|
||||
<LI><CODE>classified</CODE> - A banner page with a "classified" label
|
||||
at the top and bottom. </LI>
|
||||
<LI><CODE>confidential</CODE> - A banner page with a "confidential"
|
||||
label at the top and bottom. </LI>
|
||||
<LI><CODE>secret</CODE> - A banner page with a "secret" label at the
|
||||
top and bottom. </LI>
|
||||
<LI><CODE>standard</CODE> - A banner page with no label at the top and
|
||||
bottom. </LI>
|
||||
<LI><CODE>topsecret</CODE> - A banner page with a "top secret" label
|
||||
at the top and bottom. </LI>
|
||||
<LI><CODE>unclassified</CODE> - A banner page with an "unclassified"
|
||||
label at the top and bottom. </LI>
|
||||
</UL>
|
||||
<H2><A NAME="4_3">Document Options</A></H2>
|
||||
<P>The following options apply when printing all types of files. </P>
|
||||
<H3><A NAME="4_3_1">Selecting a Range of Pages</A></H3>
|
||||
<H3><A NAME="4_1_4">Selecting a Range of Pages</A></H3>
|
||||
<P>The <CODE>-o page-ranges=pages</CODE> option selects a range of
|
||||
pages for printing: </P>
|
||||
<UL>
|
||||
@@ -567,7 +524,7 @@ range of pages, or a collection of page numbers and ranges separated by
|
||||
commas. The pages will always be printed in ascending order, regardless
|
||||
of the order of the pages in the <CODE>page-ranges</CODE> option. </P>
|
||||
<P>The default is to print all pages. </P>
|
||||
<H3><A NAME="4_3_2">Selecting Even or Odd Pages</A></H3>
|
||||
<H3><A NAME="4_1_5">Selecting Even or Odd Pages</A></H3>
|
||||
<P>Use the <CODE>-o page-set=set</CODE> option to select the even or
|
||||
odd pages: </P>
|
||||
<UL>
|
||||
@@ -578,7 +535,7 @@ odd pages: </P>
|
||||
</PRE>
|
||||
</UL>
|
||||
<P>The default is to print all pages. </P>
|
||||
<H3><A NAME="4_3_3">N-Up Printing</A></H3>
|
||||
<H3><A NAME="4_1_6">N-Up Printing</A></H3>
|
||||
<P>The <CODE>-o number-up=value</CODE> option selects N-Up printing.
|
||||
N-Up printing places multiple document pages on a single printed page.
|
||||
CUPS supports 1-Up, 2-Up, and 4-Up formats: </P>
|
||||
@@ -591,7 +548,7 @@ odd pages: </P>
|
||||
</PRE>
|
||||
</UL>
|
||||
<P>The default format is 1-Up. </P>
|
||||
<H3><A NAME="4_3_4">Setting the Brightness</A></H3>
|
||||
<H3><A NAME="4_1_7">Setting the Brightness</A></H3>
|
||||
<P>You can control the overall brightness of the printed output using
|
||||
the <CODE>-o brightness=percent</CODE> option: </P>
|
||||
<UL>
|
||||
@@ -602,7 +559,7 @@ the <CODE>-o brightness=percent</CODE> option: </P>
|
||||
</UL>
|
||||
<P>Values greater than 100 will lighten the print, while values less
|
||||
than 100 will darken it. </P>
|
||||
<H3><A NAME="4_3_5">Setting the Gamma Correction</A></H3>
|
||||
<H3><A NAME="4_1_8">Setting the Gamma Correction</A></H3>
|
||||
<P>You can control the overall gamma correction of the printed output
|
||||
using the <CODE>-o gamma=value</CODE> option: </P>
|
||||
<UL>
|
||||
@@ -613,9 +570,9 @@ using the <CODE>-o gamma=value</CODE> option: </P>
|
||||
</UL>
|
||||
<P>Values greater than 1000 will lighten the print, while values less
|
||||
than 1000 will darken it. The default gamma is 1000. </P>
|
||||
<H2><A NAME="4_4">Text Options</A></H2>
|
||||
<H2><A NAME="4_2">Text Options</A></H2>
|
||||
<P>The following options apply when printing text files. </P>
|
||||
<H3><A NAME="4_4_1">Setting the Number of Characters Per Inch</A></H3>
|
||||
<H3><A NAME="4_2_1">Setting the Number of Characters Per Inch</A></H3>
|
||||
<P>The <CODE>-o cpi=value</CODE> option sets the number of characters
|
||||
per inch: </P>
|
||||
<UL>
|
||||
@@ -626,7 +583,7 @@ per inch: </P>
|
||||
</PRE>
|
||||
</UL>
|
||||
<P>The default characters per inch is 10. </P>
|
||||
<H3><A NAME="4_4_2">Setting the Number of Lines Per Inch</A></H3>
|
||||
<H3><A NAME="4_2_2">Setting the Number of Lines Per Inch</A></H3>
|
||||
<P>The <CODE>-o lpi=value</CODE> option sets the number of lines per
|
||||
inch: </P>
|
||||
<UL>
|
||||
@@ -636,7 +593,7 @@ inch: </P>
|
||||
</PRE>
|
||||
</UL>
|
||||
<P>The default lines per inch is 6. </P>
|
||||
<H3><A NAME="4_4_3">Setting the Number of Columns</A></H3>
|
||||
<H3><A NAME="4_2_3">Setting the Number of Columns</A></H3>
|
||||
<P>The <CODE>-o columns=value</CODE> option sets the number of text
|
||||
columns: </P>
|
||||
<UL>
|
||||
@@ -646,7 +603,7 @@ columns: </P>
|
||||
</PRE>
|
||||
</UL>
|
||||
<P>The default number of columns is 1. </P>
|
||||
<H3><A NAME="4_4_4">Setting the Page Margins</A></H3>
|
||||
<H3><A NAME="4_2_4">Setting the Page Margins</A></H3>
|
||||
<P>Normally the page margins are set to the hard limits of the printer.
|
||||
Use the <CODE>-o page-left=value</CODE>, <CODE>-o page-right=value</CODE>
|
||||
, <CODE>-o page-top=value</CODE>, and <CODE>-o page-bottom=value</CODE>
|
||||
@@ -662,7 +619,7 @@ Use the <CODE>-o page-left=value</CODE>, <CODE>-o page-right=value</CODE>
|
||||
</UL>
|
||||
<P>The <CODE>value</CODE> argument is the margin in points; each point
|
||||
is 1/72 inch or 0.35mm. </P>
|
||||
<H3><A NAME="4_4_5">Pretty Printing</A></H3>
|
||||
<H3><A NAME="4_2_5">Pretty Printing</A></H3>
|
||||
<P>The <CODE>-o prettyprint</CODE> option puts a header at the top of
|
||||
each page with the page number, job title (usually the filename), and
|
||||
the date. Also, C and C++ keywords are highlighted, and comment lines
|
||||
@@ -673,29 +630,9 @@ are italicized: </P>
|
||||
<B>lpr -o prettyprint filename ENTER</B>
|
||||
</PRE>
|
||||
</UL>
|
||||
<H2><A NAME="4_5">Image Options</A></H2>
|
||||
<H2><A NAME="4_3">Image Options</A></H2>
|
||||
<P>The following options apply when printing image files. </P>
|
||||
<H3><A NAME="4_5_1">Positioning the Image</A></H3>
|
||||
<P>The <CODE>-o position=name</CODE> option specifies the position of
|
||||
the image on the page: </P>
|
||||
<UL>
|
||||
<LI><CODE>center</CODE> - Center the image on the page (default) </LI>
|
||||
<LI><CODE>top</CODE> - Print the image centered at the top of the page </LI>
|
||||
<LI><CODE>left</CODE> - Print the image centered on the left of page </LI>
|
||||
<LI><CODE>right</CODE> - Print the image centered on the right of the
|
||||
page </LI>
|
||||
<LI><CODE>top-left</CODE> - Print the image at the top left corner of
|
||||
the page </LI>
|
||||
<LI><CODE>top-right</CODE> - Print the image at the top right corner of
|
||||
the page </LI>
|
||||
<LI><CODE>bottom</CODE> - Print the image centered at the bottom of
|
||||
the page </LI>
|
||||
<LI><CODE>bottom-left</CODE> - Print the image at the bottom left
|
||||
corner of the page </LI>
|
||||
<LI><CODE>bottom-right</CODE> - Print the image at the bottom right
|
||||
corner of the page </LI>
|
||||
</UL>
|
||||
<H3><A NAME="4_5_2">Scaling the Image</A></H3>
|
||||
<H3><A NAME="4_3_1">Scaling the Image</A></H3>
|
||||
<P>The <CODE>-o scaling=percent</CODE> and <CODE>-o ppi=value</CODE>
|
||||
options change the size of a printed image: </P>
|
||||
<UL>
|
||||
@@ -714,7 +651,7 @@ resolution of the image in pixels per inch. An image that is 3000x2400
|
||||
pixels will print 10x8 inches at 300 pixels per inch, for example. If
|
||||
the specified resolution makes the image larger than the page, multiple
|
||||
pages will be printed to satisfy the request. </P>
|
||||
<H3><A NAME="4_5_3">Adjusting the Hue (Tint) of an Image</A></H3>
|
||||
<H3><A NAME="4_3_2">Adjusting the Hue (Tint) of an Image</A></H3>
|
||||
<P>The <CODE>-o hue=value</CODE> option will adjust the hue of the
|
||||
printed image, much like the tint control on your television: </P>
|
||||
<UL>
|
||||
@@ -741,7 +678,7 @@ change you'll see with different colors:
|
||||
</CENTER>
|
||||
</P>
|
||||
<P>The default hue adjustment is 0. </P>
|
||||
<H3><A NAME="4_5_4">Adjusting the Saturation (Color) of an Image</A></H3>
|
||||
<H3><A NAME="4_3_3">Adjusting the Saturation (Color) of an Image</A></H3>
|
||||
<P>The <CODE>-o saturation=percent</CODE> option adjusts the saturation
|
||||
of the colors in an image, much like the color knob on your television: </P>
|
||||
<UL>
|
||||
@@ -754,36 +691,32 @@ of the colors in an image, much like the color knob on your television: </P>
|
||||
from 0 to 200. A color saturation of 0 produces a black-and-white
|
||||
print, while a value of 200 will make the colors extremely intense. </P>
|
||||
<P>The default saturation is 100.
|
||||
<!-- NEED 4in ---->
|
||||
<!-- NEED 2in ---->
|
||||
</P>
|
||||
<H2><A NAME="4_6">HP-GL/2 Options</A></H2>
|
||||
<H2><A NAME="4_4">HP-GL/2 Options</A></H2>
|
||||
<P>The following options apply to HP-GL/2 files. </P>
|
||||
<H3><A NAME="4_6_1">Printing in Black</A></H3>
|
||||
<H3><A NAME="4_4_1">Printing in Black</A></H3>
|
||||
<P>The <CODE>-o blackplot</CODE> option specifies that all pens should
|
||||
plot in black: </P>
|
||||
<UL>
|
||||
plot in black: <U></P>
|
||||
<PRE>
|
||||
<B>lp -o blackplot filename ENTER</B>
|
||||
<B>lpr -o blackplot filename ENTER</B>
|
||||
</PRE>
|
||||
</UL>
|
||||
<P>The default is to use the colors defined in the plot file or the
|
||||
standard pen colors defined in the HP-GL/2 reference manual from
|
||||
Hewlett Packard. </P>
|
||||
<H3><A NAME="4_6_2">Fitting the Plot on the Page</A></H3>
|
||||
<H3><A NAME="4_4_2">Fitting the Plot on the Page</A></H3>
|
||||
<P>The <CODE>-o fitplot</CODE> option specifies that the plot should be
|
||||
scaled to fit on the page: </P>
|
||||
<UL>
|
||||
scaled to fit on the page: <U></P>
|
||||
<PRE>
|
||||
<B>lp -o fitplot filename ENTER</B>
|
||||
<B>lpr -o fitplot filename ENTER</B>
|
||||
</PRE>
|
||||
</UL>
|
||||
<P>The default is to use the absolute distances specified in the plot
|
||||
file.
|
||||
<CENTER>
|
||||
<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
|
||||
<TR><TD><B> NOTE:</B>
|
||||
<TR><TD><B>NOTE:</B>
|
||||
<P>This feature depends upon an accurate plot size (<CODE>PS</CODE>)
|
||||
command in the HP-GL/2 file. If no plot size is given in the file
|
||||
than the HP-GL/2 filter assumes the plot is ANSI E size. </P>
|
||||
@@ -791,7 +724,7 @@ file.
|
||||
</TABLE>
|
||||
</CENTER>
|
||||
</P>
|
||||
<H3><A NAME="4_6_3">Setting the Default Pen Width</A></H3>
|
||||
<H3><A NAME="4_4_3">Setting the Default Pen Width</A></H3>
|
||||
<P>The <CODE>-o penwidth=value</CODE> option specifies the default pen
|
||||
width for HP-GL/2 files: </P>
|
||||
<UL>
|
||||
@@ -806,31 +739,13 @@ millimeter in width. Specifying a pen width of 0 produces lines that
|
||||
are exactly 1 pixel wide.
|
||||
<CENTER>
|
||||
<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
|
||||
<TR><TD><B> NOTE:</B>
|
||||
<TR><TD><B>NOTE:</B>
|
||||
<P>This option is ignored when the pen widths are set in the plot
|
||||
file. </P>
|
||||
</TD></TR>
|
||||
</TABLE>
|
||||
</CENTER>
|
||||
</P>
|
||||
<H2><A NAME="4_7">Raw or Unfiltered Output</A></H2>
|
||||
<P>The <CODE>-o raw</CODE> option allows you to send files directly to
|
||||
a printer without filtering. This is sometimes required when printing
|
||||
from applications that provide their own "printer drivers" for your
|
||||
printer: </P>
|
||||
<UL>
|
||||
<PRE>
|
||||
<B>lp -o raw filename ENTER</B>
|
||||
<B>lpr -o raw filename ENTER</B>
|
||||
</PRE>
|
||||
</UL>
|
||||
<P>The <CODE>-l</CODE> option can also be used with the <CODE>lpr</CODE>
|
||||
command to send files directly to a printer: </P>
|
||||
<UL>
|
||||
<PRE>
|
||||
<B>lpr -l filename ENTER</B>
|
||||
</PRE>
|
||||
</UL>
|
||||
<H1 ALIGN="RIGHT"><A NAME="SAVING_OPTIONS">4 - Saving Printer Options
|
||||
and Defaults</A></H1>
|
||||
<P>This chapter describes how to save printer options for your printer
|
||||
@@ -926,17 +841,17 @@ Agreement</A></H2>
|
||||
<BR> Email: <A HREF="mailto:cups-info@cups.org">cups-info@cups.org</A>
|
||||
<BR> WWW: <A HREF="http://www.cups.org">http://www.cups.org</A></P>
|
||||
<H3><A NAME="6_1_1">Introduction</A></H3>
|
||||
<P>The Common UNIX Printing System<SUP>TM</SUP>, ("CUPS<SUP>TM</SUP>"),
|
||||
<P>The Common UNIX Printing System<SUP>TM</SUP>, or CUPS<SUP>TM</SUP>,
|
||||
is provided under the GNU General Public License ("GPL") and GNU
|
||||
Library General Public License ("LGPL"), Version 2. A copy of these
|
||||
licenses follow this introduction. </P>
|
||||
<P>The GNU LGPL applies to the CUPS API library, located in the "cups"
|
||||
subdirectory of the CUPS source distribution and in the
|
||||
"/usr/include/cups" directory and "libcups.a", "libcups.sl", or
|
||||
"libcups.so" files in the binary distributions. </P>
|
||||
"/usr/include/cups" directory and "/usr/lib/libcups.so" or
|
||||
"/usr/lib32/libcups.so" files in the binary distributions. </P>
|
||||
<P>The GNU GPL applies to the remainder of the CUPS distribution,
|
||||
including the "pstoraster" filter which is based upon GNU Ghostscript
|
||||
5.50 and the "pdftops" filter which is based upon Xpdf 0.90. </P>
|
||||
5.50. </P>
|
||||
<P>For those not familiar with the GNU GPL, the license basically
|
||||
allows you to: </P>
|
||||
<UL>
|
||||
@@ -945,14 +860,13 @@ allows you to: </P>
|
||||
form. </LI>
|
||||
<LI>Sell verbatim copies of the software for a media fee, or sell
|
||||
support for the software. </LI>
|
||||
<LI>Distribute or sell printer drivers and filters that use CUPS so
|
||||
long as source code is made available under the GPL. </LI>
|
||||
<LI>Distribute or sell printer drivers and filters that use the CUPS
|
||||
API so long as source code is made available under the GPL. </LI>
|
||||
</UL>
|
||||
<P>What this license <B>does not</B> allow you to do is make changes or
|
||||
add features to CUPS and then sell a binary distribution without source
|
||||
code. You must provide source for any new drivers, changes, or
|
||||
additions to the software, and all code must be provided under the GPL
|
||||
or LGPL as appropriate. </P>
|
||||
additions to the software, and all code must be provided under the GPL. </P>
|
||||
<P>The GNU LGPL relaxes the "link-to" restriction, allowing you to
|
||||
develop applications that use the CUPS API library under other licenses
|
||||
and/or conditions as appropriate for your application. </P>
|
||||
@@ -968,26 +882,19 @@ standards as the original. </P>
|
||||
<P>Easy Software Products also sells rights to the CUPS source code
|
||||
under a binary distribution license for vendors that are unable to
|
||||
release source code for their drivers, additions, and modifications to
|
||||
CUPS under the GNU GPL and LGPL. For information please contact us at
|
||||
CUPS under the GNU GPL. For pricing information please contact us at
|
||||
the address shown above. </P>
|
||||
<P>The Common UNIX Printing System provides a "pstoraster" filter that
|
||||
utilizes the GNU GhostScript 5.50 core to convert PostScript files into
|
||||
a stream of raster images. For binary distribution licensing of this
|
||||
software, please contact: <BLOCKQUOTE> Miles Jones
|
||||
utilizes GNU GhostScript 5.50 to convert PostScript files into a stream
|
||||
of raster images. For binary distribution licensing of this software,
|
||||
please contact: <BLOCKQUOTE>Miles Jones
|
||||
<BR> Director of Marketing
|
||||
<BR> Artifex Software Inc.
|
||||
<BR> 454 Las Gallinas Ave., Suite 108
|
||||
<BR> San Rafael, CA 94903 USA
|
||||
<BR> Voice: +1.415.492.9861
|
||||
<BR> Fax: +1.415.492.9862
|
||||
<BR> EMail: <A HREF="mailto:info@arsoft.com">info@arsoft.com</A></BLOCKQUOTE>
|
||||
</P>
|
||||
<P>The "pdftops" filter is based on the Xpdf 0.90 software. For binary
|
||||
distribution licensing of this software, please contact: <BLOCKQUOTE>
|
||||
Derek B. Noonburg
|
||||
<BR> Email: <A HREF="mailto:derekn@foolabs.com">derekn@foolabs.com</A>
|
||||
<BR> WWW: <A HREF="http://www.foolabs.com/xpdf/">
|
||||
http://www.foolabs.com/xpdf/</A></BLOCKQUOTE></P>
|
||||
<BR> EMail: info@arsoft.com </BLOCKQUOTE></P>
|
||||
<H3><A NAME="6_1_4">Support</A></H3>
|
||||
<P>Easy Software Products sells software support for CUPS as well as a
|
||||
commercial printing product based on CUPS called ESP Print Pro. You can
|
||||
|
||||
+926
-1080
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
+5
-106
@@ -2,7 +2,7 @@
|
||||
<HEAD>
|
||||
<META NAME="Description" CONTENT="Common UNIX Printing System Software Users Manual">
|
||||
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SUM-1.1.1">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SUM-1.1">
|
||||
<META NAME="Author" CONTENT="Easy Software Products">
|
||||
<TITLE>CUPS Software Users Manual</TITLE>
|
||||
</HEAD>
|
||||
@@ -11,7 +11,7 @@
|
||||
<H1 ALIGN="RIGHT">Preface</H1>
|
||||
|
||||
<P>This software users manual describes how to use the Common UNIX Printing
|
||||
System<SUP>TM</SUP> ("CUPS<SUP>TM</SUP>") Version 1.1.1.
|
||||
System<SUP>TM</SUP> ("CUPS<SUP>TM</SUP>") Version 1.1.
|
||||
|
||||
<EMBED SRC="system-overview.shtml">
|
||||
|
||||
@@ -365,56 +365,6 @@ suitable for portrait pages:
|
||||
<B>lpr -o sides=one-sided filename ENTER</B>
|
||||
</PRE></UL>
|
||||
|
||||
<H2>Banner Options</H2>
|
||||
|
||||
<P>The following options apply when printing all types of files.
|
||||
|
||||
<H3>Selecting the Banner Page(s)</H3>
|
||||
|
||||
<P>The <CODE>-o jobsheets=start,end</CODE> option sets the banner page(s) to
|
||||
use for a job:
|
||||
|
||||
<UL><PRE>
|
||||
<B>lp -o job-sheets=none filename ENTER</B>
|
||||
<B>lp -o job-sheets=standard filename ENTER</B>
|
||||
<B>lpr -o job-sheets=classified,classified filename ENTER</B>
|
||||
</PRE></UL>
|
||||
|
||||
<P>If only one banner file is specified, it will be printed before the
|
||||
files in the job. If a second banner file is specified, it is printed after
|
||||
the files in the job.
|
||||
|
||||
<P>The available banner pages depend on the local system configuration; CUPS
|
||||
includes the following banner files:
|
||||
|
||||
<UL>
|
||||
|
||||
<LI><CODE>none</CODE> - Do not produce a banner page.
|
||||
|
||||
<LI><CODE>classified</CODE> - A banner page with a "classified"
|
||||
label at the top and bottom.
|
||||
|
||||
<LI><CODE>confidential</CODE> - A banner page with a
|
||||
"confidential" label at the top and bottom.
|
||||
|
||||
<LI><CODE>secret</CODE> - A banner page with a "secret" label
|
||||
at the top and bottom.
|
||||
|
||||
<LI><CODE>standard</CODE> - A banner page with no label at the
|
||||
top and bottom.
|
||||
|
||||
<LI><CODE>topsecret</CODE> - A banner page with a "top secret"
|
||||
label at the top and bottom.
|
||||
|
||||
<LI><CODE>unclassified</CODE> - A banner page with an
|
||||
"unclassified" label at the top and bottom.
|
||||
|
||||
</UL>
|
||||
|
||||
<H2>Document Options</H2>
|
||||
|
||||
<P>The following options apply when printing all types of files.
|
||||
|
||||
<H3>Selecting a Range of Pages</H3>
|
||||
|
||||
<P>The <CODE>-o page-ranges=pages</CODE> option selects a range of
|
||||
@@ -558,38 +508,6 @@ keywords are highlighted, and comment lines are italicized:
|
||||
|
||||
<P>The following options apply when printing image files.
|
||||
|
||||
<H3>Positioning the Image</H3>
|
||||
|
||||
<P>The <CODE>-o position=name</CODE> option specifies the position of the
|
||||
image on the page:
|
||||
|
||||
<UL>
|
||||
|
||||
<LI><CODE>center</CODE> - Center the image on the page (default)
|
||||
|
||||
<LI><CODE>top</CODE> - Print the image centered at the top of the page
|
||||
|
||||
<LI><CODE>left</CODE> - Print the image centered on the left of page
|
||||
|
||||
<LI><CODE>right</CODE> - Print the image centered on the right of the page
|
||||
|
||||
<LI><CODE>top-left</CODE> - Print the image at the top left corner of
|
||||
the page
|
||||
|
||||
<LI><CODE>top-right</CODE> - Print the image at the top right corner of
|
||||
the page
|
||||
|
||||
<LI><CODE>bottom</CODE> - Print the image centered at the bottom of
|
||||
the page
|
||||
|
||||
<LI><CODE>bottom-left</CODE> - Print the image at the bottom left
|
||||
corner of the page
|
||||
|
||||
<LI><CODE>bottom-right</CODE> - Print the image at the bottom right
|
||||
corner of the page
|
||||
|
||||
</UL>
|
||||
|
||||
<H3>Scaling the Image</H3>
|
||||
|
||||
<P>The <CODE>-o scaling=percent</CODE> and <CODE>-o ppi=value</CODE>
|
||||
@@ -684,7 +602,7 @@ print, while a value of 200 will make the colors extremely intense.
|
||||
|
||||
<P>The default saturation is 100.
|
||||
|
||||
<!-- NEED 4in -->
|
||||
<!-- NEED 2in -->
|
||||
<H2>HP-GL/2 Options</H2>
|
||||
|
||||
<P>The following options apply to HP-GL/2 files.
|
||||
@@ -694,7 +612,7 @@ print, while a value of 200 will make the colors extremely intense.
|
||||
<P>The <CODE>-o blackplot</CODE> option specifies that all pens should
|
||||
plot in black:
|
||||
|
||||
<UL><PRE>
|
||||
<U><PRE>
|
||||
<B>lp -o blackplot filename ENTER</B>
|
||||
<B>lpr -o blackplot filename ENTER</B>
|
||||
</PRE></UL>
|
||||
@@ -708,7 +626,7 @@ Hewlett Packard.
|
||||
<P>The <CODE>-o fitplot</CODE> option specifies that the plot should be
|
||||
scaled to fit on the page:
|
||||
|
||||
<UL><PRE>
|
||||
<U><PRE>
|
||||
<B>lp -o fitplot filename ENTER</B>
|
||||
<B>lpr -o fitplot filename ENTER</B>
|
||||
</PRE></UL>
|
||||
@@ -753,25 +671,6 @@ Specifying a pen width of 0 produces lines that are exactly 1 pixel wide.
|
||||
</TR>
|
||||
</TABLE></CENTER>
|
||||
|
||||
<H2>Raw or Unfiltered Output</H2>
|
||||
|
||||
<P>The <CODE>-o raw</CODE> option allows you to send files directly to
|
||||
a printer without filtering. This is sometimes required when printing
|
||||
from applications that provide their own "printer drivers" for your
|
||||
printer:
|
||||
|
||||
<UL><PRE>
|
||||
<B>lp -o raw filename ENTER</B>
|
||||
<B>lpr -o raw filename ENTER</B>
|
||||
</PRE></UL>
|
||||
|
||||
<P>The <CODE>-l</CODE> option can also be used with the
|
||||
<CODE>lpr</CODE> command to send files directly to a printer:
|
||||
|
||||
<UL><PRE>
|
||||
<B>lpr -l filename ENTER</B>
|
||||
</PRE></UL>
|
||||
|
||||
|
||||
<H1 ALIGN="RIGHT"><A NAME="SAVING_OPTIONS">4 - Saving Printer Options and Defaults</A></H1>
|
||||
|
||||
|
||||
+34
-90
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE> CUPS Software Version Description</TITLE>
|
||||
<TITLE>CUPS Software Version Description</TITLE>
|
||||
<META NAME="AUTHOR" CONTENT="Easy Software Products">
|
||||
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-2000, All Rights Reserved">
|
||||
<META NAME="DOCNUMBER" CONTENT="CUPS-SVD-1.1">
|
||||
@@ -20,8 +20,8 @@ PRE { font-size: 9.0pt }
|
||||
</STYLE>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0" WIDTH="100%"><BR>
|
||||
<H1> CUPS Software Version Description</H1></A><BR>
|
||||
<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0"><BR>
|
||||
<H1>CUPS Software Version Description</H1></A><BR>
|
||||
CUPS-SVD-1.1<BR>
|
||||
Easy Software Products<BR>
|
||||
Copyright 1997-2000, All Rights Reserved<BR>
|
||||
@@ -45,23 +45,9 @@ Copyright 1997-2000, All Rights Reserved<BR>
|
||||
<LI><A HREF="#3_1">3.1 Filters</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#3_1_1">3.1.1 imagetoraster, imagetops</A></LI>
|
||||
<LI><A HREF="#3_1_2">3.1.2 pdftops</A></LI>
|
||||
<LI><A HREF="#3_1_3">3.1.3 pstoraster</A></LI>
|
||||
<LI><A HREF="#3_1_4">3.1.4 rastertoepson</A></LI>
|
||||
<LI><A HREF="#3_1_2">3.1.2 pstoraster</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#3_2">3.2 User-Defined Printers and Options</A></LI>
|
||||
<LI><A HREF="#3_3">3.3 Daemons</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#3_3_1">3.3.1 cups-lpd</A></LI>
|
||||
<LI><A HREF="#3_3_2">3.3.2 cups-polld</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#3_4">3.4 Commands</A></LI>
|
||||
<UL>
|
||||
<LI><A HREF="#3_4_1">3.4.1 lpoptions</A></LI>
|
||||
<LI><A HREF="#3_4_2">3.4.2 lpmove</A></LI>
|
||||
<LI><A HREF="#3_4_3">3.4.3 lpinfo</A></LI>
|
||||
</UL>
|
||||
<LI><A HREF="#3_5">3.5 IPP Implementation</A></LI>
|
||||
</UL>
|
||||
<B><A HREF="#4">4 Changes</A></B>
|
||||
<UL>
|
||||
@@ -113,58 +99,43 @@ following sections:</P>
|
||||
<LI>CUPS-IPP-1.1: CUPS Implmentation of IPP </LI>
|
||||
<LI>CUPS-SAM-1.1.x: CUPS Software Administrators Manual </LI>
|
||||
<LI>CUPS-SDD-1.1: CUPS Software Design Description </LI>
|
||||
<LI>CUPS-SPM-1.1.x: CUPS Software Programming Manual </LI>
|
||||
<LI>CUPS-SPM-1.1: CUPS Software Programming Manual </LI>
|
||||
<LI>CUPS-SSR-1.1: CUPS Software Security Report </LI>
|
||||
<LI>CUPS-STP-1.1: CUPS Software Test Plan </LI>
|
||||
<LI>CUPS-SUM-1.1.x: CUPS Software Users Manual </LI>
|
||||
<LI>CUPS-SVD-1.1: CUPS Software Version Description </LI>
|
||||
<LI>CUPS-SVD-1.1.x: CUPS Software Version Description </LI>
|
||||
</UL>
|
||||
<H2><A NAME="2_2">2.2 Other Documents</A></H2>
|
||||
<P>The following non-CUPS documents are referenced by this document: </P>
|
||||
<UL>
|
||||
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/5003.PPD_Spec_v4.3.pdf">
|
||||
Adobe PostScript Printer Description File Format Specification,
|
||||
Version 4.3.</A></LI>
|
||||
<LI><A HREF="http://partners.adobe.com/asn/developer/PDFS/TN/PLRM.pdf">
|
||||
Adobe PostScript Language Reference, Third Edition.</A></LI>
|
||||
<LI>Adobe PostScript Printer Description File Format Specification,
|
||||
Version 4.3. </LI>
|
||||
<LI>Adobe PostScript Language Reference, Third Edition. </LI>
|
||||
<LI>IPP: Job and Printer Set Operations </LI>
|
||||
<LI>IPP/1.1: Encoding and Transport </LI>
|
||||
<LI>IPP/1.1: Implementers Guide </LI>
|
||||
<LI>IPP/1.1: Model and Semantics </LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc1179.txt">RFC 1179, Line
|
||||
Printer Daemon Protocol</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2567.txt">RFC 2567, Design
|
||||
Goals for an Internet Printing Protocol</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2568.txt">RFC 2568, Rationale
|
||||
for the Structure of the Model and Protocol</A> for the Internet
|
||||
Printing Protocol</LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2569.txt">RFC 2569, Mapping
|
||||
between LPD and IPP Protocols</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616, Hypertext
|
||||
Transfer Protocol -- HTTP/1.1</A></LI>
|
||||
<LI><A HREF="http://www.ietf.org/rfc/rfc2617.txt">RFC 2617, HTTP
|
||||
Authentication: Basic and Digest Access</A> Authentication </LI>
|
||||
<LI>RFC 1179, Line Printer Daemon Protocol </LI>
|
||||
<LI>RFC 2567, Design Goals for an Internet Printing Protocol </LI>
|
||||
<LI>RFC 2568, Rationale for the Structure of the Model and Protocol
|
||||
for the Internet Printing Protocol </LI>
|
||||
<LI>RFC 2569, Mapping between LPD and IPP Protocols </LI>
|
||||
<LI>RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1 </LI>
|
||||
<LI>RFC 2617, HTTP Authentication: Basic and Digest Access
|
||||
Authentication </LI>
|
||||
</UL>
|
||||
<H1><A NAME="3">3 Additions</A></H1>
|
||||
<P>CUPS 1.1 includes many new features from the 1.0.x releases. </P>
|
||||
CUPS 1.1 includes many new features from the 1.0.x releases.
|
||||
<H2><A NAME="3_1">3.1 Filters</A></H2>
|
||||
<H3><A NAME="3_1_1">3.1.1 <CODE>imagetoraster</CODE>, <CODE>imagetops</CODE>
|
||||
</A></H3>
|
||||
<P>The image file filters have been upgraded to support conversion of
|
||||
Microsoft Bitmap ("BMP") and Alias PIX files. </P>
|
||||
<H3><A NAME="3_1_2">3.1.2 pdftops</A></H3>
|
||||
<P>A new pdftops filter has been developed that is based on the
|
||||
excellent Xpdf 0.90 software from Derek B. Noonburg. The new filter is
|
||||
faster, smaller, and considerably more reliable than the
|
||||
Ghostscript-based filter in CUPS 1.0. </P>
|
||||
<H3><A NAME="3_1_3">3.1.3 pstoraster</A></H3>
|
||||
The image file filters have been upgraded to support conversion of
|
||||
Microsoft Bitmap ("BMP") files.
|
||||
<H3><A NAME="3_1_2">3.1.2 pstoraster</A></H3>
|
||||
<P>The <CODE>pstoraster</CODE> filter has been integrated with GNU
|
||||
GhostScript 5.50. The new RIP supports most Level 3 PostScript language
|
||||
features. </P>
|
||||
<H3><A NAME="3_1_4">3.1.4 rastertoepson</A></H3>
|
||||
<P>The new <CODE>rastertoepson</CODE> filter supports EPSON printers
|
||||
using the ESC/P or ESC/P2 command sets. PPDs are supplied for 9-pin,
|
||||
24-pin, Stylus Color, and Stylus Photo printers. </P>
|
||||
features and much better color management for the sample printer
|
||||
drivers. </P>
|
||||
<H2><A NAME="3_2">3.2 User-Defined Printers and Options</A></H2>
|
||||
<P>The new <CODE>lpoptions</CODE> command allows users to configure
|
||||
default document options and create additional "instances" of existing
|
||||
@@ -172,42 +143,15 @@ printers, each with unique options. </P>
|
||||
<P>The <CODE>lp</CODE>, <CODE>lpr</CODE>, and <CODE>lpstat</CODE>
|
||||
commands have been upgraded to use this option and printer instance
|
||||
information automatically. </P>
|
||||
<H2><A NAME="3_3">3.3 Daemons</A></H2>
|
||||
<P>CUPS 1.1 includes two new daemons that provide enhanced network
|
||||
printing support. </P>
|
||||
<H3><A NAME="3_3_1">3.3.1 cups-lpd</A></H3>
|
||||
<P>The <CODE>cups-lpd</CODE> daemon provides support for clients using
|
||||
the Line Printer Daemon protocol. </P>
|
||||
<H3><A NAME="3_3_2">3.3.2 cups-polld</A></H3>
|
||||
<P>The <CODE>cups-polld</CODE> daemon provides remote polling services
|
||||
for the scheduler. </P>
|
||||
<H2><A NAME="3_4">3.4 Commands</A></H2>
|
||||
<P>CUPS 1.1 includes several new printing commands. </P>
|
||||
<H3><A NAME="3_4_1">3.4.1 lpoptions</A></H3>
|
||||
<P>The <CODE>lpoptions</CODE> command provides user-defined printers
|
||||
and options. </P>
|
||||
<H3><A NAME="3_4_2">3.4.2 lpmove</A></H3>
|
||||
<P>The <CODE>lpmove</CODE> command moves a print job to a new
|
||||
destination. </P>
|
||||
<H3><A NAME="3_4_3">3.4.3 lpinfo</A></H3>
|
||||
<P>The <CODE>lpinfo</CODE> command lists the available PPD files or
|
||||
devices. </P>
|
||||
<H2><A NAME="3_5">3.5 IPP Implementation</A></H2>
|
||||
<P>CUPS 1.1 adds support for the <CODE>set-job-attributes</CODE>
|
||||
extension operation as well as two new CUPS-specific extension
|
||||
operations to determine which devices and printer drivers are available
|
||||
on the system. </P>
|
||||
<P>Further information on the CUPS implementation of IPP can be found
|
||||
in CUPS-IPP-1.1. </P>
|
||||
<H1><A NAME="4">4 Changes</A></H1>
|
||||
<P>CUPS 1.1 includes many changes from the 1.0.x releases. </P>
|
||||
CUPS 1.1 includes many changes from the 1.0.x releases.
|
||||
<H2><A NAME="4_1">4.1 Directory Structure</A></H2>
|
||||
<P>The directory structure in CUPS 1.1 has been modified to conform to
|
||||
The directory structure in CUPS 1.1 has been modified to conform to
|
||||
the Filesystem Hierarchy Standard, 2.0. The following table describes
|
||||
the new file locations.
|
||||
<CENTER>
|
||||
<TABLE BORDER WIDTH="80%"><CAPTION> Table 1: Directory structure
|
||||
changes from CUPS 1.0.x to 1.1.x.</CAPTION>
|
||||
<TABLE BORDER WIDTH="80%"><CAPTION>Table N: Directory structure changes
|
||||
from CUPS 1.0.x to 1.1.x.</CAPTION>
|
||||
<TR><TH>Description</TH><TH>CUPS 1.0.x</TH><TH>CUPS 1.1.x</TH></TR>
|
||||
<TR><TD>Backends</TD><TD>/var/cups/backend</TD><TD>/usr/lib/cups/backend</TD>
|
||||
</TR>
|
||||
@@ -229,13 +173,11 @@ changes from CUPS 1.0.x to 1.1.x.</CAPTION>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</CENTER>
|
||||
</P>
|
||||
<H2><A NAME="4_2">4.2 IPP Implementation</A></H2>
|
||||
<P>CUPS 1.1 is based on version 1.1 of the Internet Printing Protocol. </P>
|
||||
<P>The new scheduler supports the <CODE>create-job</CODE> and <CODE>
|
||||
send-document</CODE> operations. In addition, the <CODE>job-sheets</CODE>
|
||||
, <CODE>job-sheets-default</CODE>, and <CODE>job-sheets-supported</CODE>
|
||||
attributes are now supported for banner pages. </P>
|
||||
<P>CUPS 1.1 is based on version 1.1 of the Internet Printing Protocol,
|
||||
and implements the <CODE>set-job-attributes</CODE> extension operation. </P>
|
||||
<P>Two new CUPS-specific extension operations are provided to determine
|
||||
which devices and printer drivers are available on the system. </P>
|
||||
<P>The <CODE>CUPS-get-printers</CODE> and <CODE>CUPS-get-classes</CODE>
|
||||
operations have been upgraded to support limited filtering based upon
|
||||
the <CODE>printer-type</CODE>, <CODE>printer-location</CODE>, <CODE>
|
||||
@@ -273,7 +215,7 @@ in CUPS-IPP-1.1. </P>
|
||||
<DT>HP-GL </DT>
|
||||
<DD>Hewlett-Packard Graphics Language </DD>
|
||||
<DT>HP-PCL </DT>
|
||||
<DD>Hewlett-Packard Page Control Language </DD>
|
||||
<DD>Hewlett-Packard Printer Control Language </DD>
|
||||
<DT>HP-PJL </DT>
|
||||
<DD>Hewlett-Packard Printer Job Language </DD>
|
||||
<DT>IETF </DT>
|
||||
@@ -286,6 +228,8 @@ in CUPS-IPP-1.1. </P>
|
||||
<DD>Line Printer Daemon </DD>
|
||||
<DT>MIME </DT>
|
||||
<DD>Multimedia Internet Mail Exchange </DD>
|
||||
<DT>PCL </DT>
|
||||
<DD>Page Control Language </DD>
|
||||
<DT>PPD </DT>
|
||||
<DD>PostScript Printer Description </DD>
|
||||
<DT>SMB </DT>
|
||||
|
||||
Arquivo binário não exibido.
+15
-71
@@ -33,33 +33,20 @@ sections:</P>
|
||||
|
||||
<H1>Additions</H1>
|
||||
|
||||
<P>CUPS 1.1 includes many new features from the 1.0.x releases.
|
||||
CUPS 1.1 includes many new features from the 1.0.x releases.
|
||||
|
||||
<H2>Filters</H2>
|
||||
|
||||
<H3><CODE>imagetoraster</CODE>, <CODE>imagetops</CODE></H3>
|
||||
|
||||
<P>The image file filters have been upgraded to support conversion of
|
||||
Microsoft Bitmap ("BMP") and Alias PIX files.
|
||||
|
||||
<H3>pdftops</H3>
|
||||
|
||||
<P>A new pdftops filter has been developed that is based on the
|
||||
excellent Xpdf 0.90 software from Derek B. Noonburg. The new filter is
|
||||
faster, smaller, and considerably more reliable than the
|
||||
Ghostscript-based filter in CUPS 1.0.
|
||||
The image file filters have been upgraded to support conversion of Microsoft
|
||||
Bitmap ("BMP") files.
|
||||
|
||||
<H3>pstoraster</H3>
|
||||
|
||||
<P>The <CODE>pstoraster</CODE> filter has been integrated with GNU
|
||||
GhostScript 5.50. The new RIP supports most Level 3 PostScript language
|
||||
features.
|
||||
|
||||
<H3>rastertoepson</H3>
|
||||
|
||||
<P>The new <CODE>rastertoepson</CODE> filter supports EPSON printers
|
||||
using the ESC/P or ESC/P2 command sets. PPDs are supplied for 9-pin,
|
||||
24-pin, Stylus Color, and Stylus Photo printers.
|
||||
<P>The <CODE>pstoraster</CODE> filter has been integrated with GNU GhostScript 5.50. The
|
||||
new RIP supports most Level 3 PostScript language features and much better
|
||||
color management for the sample printer drivers.
|
||||
|
||||
<H2>User-Defined Printers and Options</H2>
|
||||
|
||||
@@ -71,61 +58,20 @@ each with unique options.
|
||||
have been upgraded to use this option and printer instance information
|
||||
automatically.
|
||||
|
||||
<H2>Daemons</H2>
|
||||
|
||||
<P>CUPS 1.1 includes two new daemons that provide enhanced network printing
|
||||
support.
|
||||
|
||||
<H3>cups-lpd</H3>
|
||||
|
||||
<P>The <CODE>cups-lpd</CODE> daemon provides support for clients using the
|
||||
Line Printer Daemon protocol.
|
||||
|
||||
<H3>cups-polld</H3>
|
||||
|
||||
<P>The <CODE>cups-polld</CODE> daemon provides remote polling services for
|
||||
the scheduler.
|
||||
|
||||
<H2>Commands</H2>
|
||||
|
||||
<P>CUPS 1.1 includes several new printing commands.
|
||||
|
||||
<H3>lpoptions</H3>
|
||||
|
||||
<P>The <CODE>lpoptions</CODE> command provides user-defined printers and
|
||||
options.
|
||||
|
||||
<H3>lpmove</H3>
|
||||
|
||||
<P>The <CODE>lpmove</CODE> command moves a print job to a new destination.
|
||||
|
||||
<H3>lpinfo</H3>
|
||||
|
||||
<P>The <CODE>lpinfo</CODE> command lists the available PPD files or devices.
|
||||
|
||||
<H2>IPP Implementation</H2>
|
||||
|
||||
<P>CUPS 1.1 adds support for the <CODE>set-job-attributes</CODE>
|
||||
extension operation as well as two new CUPS-specific extension
|
||||
operations to determine which devices and printer drivers are available
|
||||
on the system.
|
||||
|
||||
<P>Further information on the CUPS implementation of IPP can be found
|
||||
in CUPS-IPP-1.1.
|
||||
|
||||
|
||||
<H1>Changes</H1>
|
||||
|
||||
<P>CUPS 1.1 includes many changes from the 1.0.x releases.
|
||||
CUPS 1.1 includes many changes from the 1.0.x releases.
|
||||
|
||||
<H2>Directory Structure</H2>
|
||||
|
||||
<P>The directory structure in CUPS 1.1 has been modified to conform to the
|
||||
The directory structure in CUPS 1.1 has been modified to conform to the
|
||||
Filesystem Hierarchy Standard, 2.0. The following table describes the
|
||||
new file locations.
|
||||
|
||||
<CENTER><TABLE WIDTH="80%" BORDER>
|
||||
<CAPTION>Table 1: Directory structure changes from CUPS 1.0.x to 1.1.x.</CAPTION>
|
||||
<CAPTION>Table N: Directory structure changes from CUPS 1.0.x to 1.1.x.</CAPTION>
|
||||
<TR>
|
||||
<TH>Description</TH>
|
||||
<TH>CUPS 1.0.x</TH>
|
||||
@@ -185,13 +131,11 @@ new file locations.
|
||||
|
||||
<H2>IPP Implementation</H2>
|
||||
|
||||
<P>CUPS 1.1 is based on version 1.1 of the Internet Printing Protocol.
|
||||
<P>CUPS 1.1 is based on version 1.1 of the Internet Printing Protocol,
|
||||
and implements the <CODE>set-job-attributes</CODE> extension operation.
|
||||
|
||||
<P>The new scheduler supports the <CODE>create-job</CODE> and
|
||||
<CODE>send-document</CODE> operations. In addition, the
|
||||
<CODE>job-sheets</CODE>, <CODE>job-sheets-default</CODE>, and
|
||||
<CODE>job-sheets-supported</CODE> attributes are now supported for
|
||||
banner pages.
|
||||
<P>Two new CUPS-specific extension operations are provided to determine
|
||||
which devices and printer drivers are available on the system.
|
||||
|
||||
<P>The <CODE>CUPS-get-printers</CODE> and <CODE>CUPS-get-classes</CODE>
|
||||
operations have been upgraded to support limited filtering based upon
|
||||
@@ -200,8 +144,8 @@ the <CODE>printer-type</CODE>, <CODE>printer-location</CODE>,
|
||||
attributes.
|
||||
|
||||
<P>The <CODE>CUPS-add-printer</CODE> operation now supports the
|
||||
<CODE>ppd-name</CODE> attribute to specify a locally-available PPD file
|
||||
rather than sending the PPD file from the client with the request.
|
||||
<CODE>ppd-name</CODE> attribute to specify a locally-available PPD
|
||||
file rather than sending the PPD file from the client with the request.
|
||||
|
||||
<P>Further information on the CUPS implementation of IPP can be found
|
||||
in CUPS-IPP-1.1.
|
||||
|
||||
+3
-8
@@ -60,16 +60,11 @@ clean:
|
||||
|
||||
install:
|
||||
-$(MKDIR) $(SERVERBIN)/filter
|
||||
$(CHMOD) ugo+rx $(SERVERBIN)
|
||||
$(CHMOD) ugo+rx $(SERVERBIN)/filter
|
||||
$(INSTALL_BIN) $(TARGETS) $(SERVERBIN)/filter
|
||||
-$(MKDIR) $(INCLUDEDIR)/cups
|
||||
$(CHMOD) ugo+rx $(INCLUDEDIR)
|
||||
$(CHMOD) ugo+rx $(INCLUDEDIR)/cups
|
||||
$(INSTALL_DATA) raster.h $(INCLUDEDIR)/cups
|
||||
-$(MKDIR) $(LIBDIR)
|
||||
$(CHMOD) ugo+rx $(LIBDIR)
|
||||
$(INSTALL_LIB) $(LIBCUPSIMAGE) $(LIBDIR)
|
||||
$(INSTALL_DATA) $(LIBCUPSIMAGE) $(LIBDIR)
|
||||
-if test $(LIBCUPSIMAGE) != "libcupsimage.a" -a $(LIBCUPSIMAGE) != "libcupsimage.la"; then \
|
||||
$(RM) `basename $(LIBCUPSIMAGE) .2`; \
|
||||
$(LN) $(LIBCUPSIMAGE) `basename $(LIBCUPSIMAGE) .2`; \
|
||||
@@ -171,7 +166,7 @@ pstops.o: common.h
|
||||
|
||||
rastertoepson: rastertoepson.o ../Makedefs ../cups/$(LIBCUPS) $(LIBCUPSIMAGE)
|
||||
echo Linking $@...
|
||||
$(CC) $(LDFLAGS) -o $@ rastertoepson.o $(LINKCUPSIMAGE) $(IMGLIBS) $(LIBS)
|
||||
$(CC) $(LDFLAGS) -o $@ rastertoepson.o $(LINKCUPSIMAGE) $(LIBS)
|
||||
rastertoepson.o: raster.h
|
||||
|
||||
|
||||
@@ -181,7 +176,7 @@ rastertoepson.o: raster.h
|
||||
|
||||
rastertohp: rastertohp.o ../Makedefs ../cups/$(LIBCUPS) $(LIBCUPSIMAGE)
|
||||
echo Linking $@...
|
||||
$(CC) $(LDFLAGS) -o $@ rastertohp.o $(LINKCUPSIMAGE) $(IMGLIBS) $(LIBS)
|
||||
$(CC) $(LDFLAGS) -o $@ rastertohp.o $(LINKCUPSIMAGE) $(LIBS)
|
||||
rastertohp.o: raster.h
|
||||
|
||||
|
||||
|
||||
@@ -71,7 +71,6 @@ CR_color_range(int num_params, /* I - Number of parameters */
|
||||
/*
|
||||
* Set the range based on the parameters...
|
||||
*/
|
||||
|
||||
ColorRange[0][0] = params[0].value.number;
|
||||
ColorRange[0][1] = params[1].value.number - params[0].value.number;
|
||||
ColorRange[1][0] = params[2].value.number;
|
||||
@@ -270,12 +269,9 @@ PC_pen_color(int num_params, /* I - Number of parameters */
|
||||
}
|
||||
else
|
||||
{
|
||||
Pens[i].rgb[0] = (params[1].value.number - ColorRange[0][0]) /
|
||||
(ColorRange[0][1] - ColorRange[0][0]);
|
||||
Pens[i].rgb[1] = (params[2].value.number - ColorRange[1][0]) /
|
||||
(ColorRange[1][1] - ColorRange[1][0]);
|
||||
Pens[i].rgb[2] = (params[3].value.number - ColorRange[2][0]) /
|
||||
(ColorRange[2][1] - ColorRange[2][0]);
|
||||
Pens[i].rgb[0] = params[1].value.number;
|
||||
Pens[i].rgb[1] = params[2].value.number;
|
||||
Pens[i].rgb[2] = params[3].value.number;
|
||||
}
|
||||
|
||||
if (PageDirty && i == PenNumber)
|
||||
|
||||
+10
-10
@@ -229,9 +229,9 @@ update_transform(void)
|
||||
if (FitPlot)
|
||||
{
|
||||
if (Rotation == 0 || Rotation == 180)
|
||||
PenScaling = page_width / PlotSize[1];
|
||||
PenScaling *= page_width / PlotSize[1];
|
||||
else
|
||||
PenScaling = page_width / PlotSize[0];
|
||||
PenScaling *= page_width / PlotSize[0];
|
||||
}
|
||||
else
|
||||
PenScaling = 1.0;
|
||||
@@ -361,10 +361,10 @@ IP_input_absolute(int num_params, /* I - Number of parameters */
|
||||
P2[1] = params[3].value.number;
|
||||
}
|
||||
|
||||
IW1[0] = 0.0;
|
||||
IW1[1] = 0.0;
|
||||
IW2[0] = 0.0;
|
||||
IW2[1] = 0.0;
|
||||
IW1[0] = P1[0];
|
||||
IW1[1] = P1[1];
|
||||
IW2[0] = P2[0];
|
||||
IW2[1] = P2[1];
|
||||
|
||||
if (ScalingType < 0)
|
||||
{
|
||||
@@ -410,10 +410,10 @@ IR_input_relative(int num_params, /* I - Number of parameters */
|
||||
P2[1] = params[3].value.number * PlotSize[1] / 72.0f * 1016.0f / 100.0f;
|
||||
}
|
||||
|
||||
IW1[0] = 0.0;
|
||||
IW1[1] = 0.0;
|
||||
IW2[0] = 0.0;
|
||||
IW2[1] = 0.0;
|
||||
IW1[0] = P1[0];
|
||||
IW1[1] = P1[1];
|
||||
IW2[0] = P2[0];
|
||||
IW2[1] = P2[1];
|
||||
|
||||
if (ScalingType < 0)
|
||||
{
|
||||
|
||||
+83
-115
@@ -48,8 +48,6 @@ OutputProlog(char *title, /* I - Job title */
|
||||
{
|
||||
FILE *prolog; /* Prolog file */
|
||||
char line[255]; /* Line from prolog file */
|
||||
const char *datadir; /* CUPS_DATADIR environment variable */
|
||||
char filename[1024]; /* Name of prolog file */
|
||||
time_t curtime; /* Current time */
|
||||
struct tm *curtm; /* Current date */
|
||||
|
||||
@@ -81,15 +79,9 @@ OutputProlog(char *title, /* I - Job title */
|
||||
else if (!ColorDevice) /* Greyscale */
|
||||
puts("/setrgbcolor { 0.08 mul exch 0.61 mul add exch 0.31 mul add setgray } bind def\n");
|
||||
|
||||
if ((datadir = getenv("CUPS_DATADIR")) == NULL)
|
||||
datadir = CUPS_DATADIR;
|
||||
|
||||
snprintf(filename, sizeof(filename), "%s/data/HPGLprolog", datadir);
|
||||
|
||||
if ((prolog = fopen(filename, "r")) == NULL)
|
||||
if ((prolog = fopen(CUPS_DATADIR "/data/HPGLprolog", "r")) == NULL)
|
||||
{
|
||||
fprintf(stderr, "ERROR: Unable to open HPGL prolog \"%s\" for reading - %s\n",
|
||||
filename, strerror(errno));
|
||||
perror("ERROR: Unable to open HPGL prolog \"" CUPS_DATADIR "/data/HPGLprolog\" for reading");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -149,11 +141,7 @@ Outputf(const char *format, /* I - Printf-style string */
|
||||
PageDirty = 1;
|
||||
PageCount ++;
|
||||
|
||||
printf("%%%%Page: %d %d\n", PageCount, PageCount);
|
||||
|
||||
landscape = 0;
|
||||
|
||||
if (!FitPlot)
|
||||
if (PPD != NULL && !FitPlot)
|
||||
{
|
||||
/*
|
||||
* Set the page size for this page...
|
||||
@@ -170,130 +158,110 @@ Outputf(const char *format, /* I - Printf-style string */
|
||||
length = PlotSize[0];
|
||||
}
|
||||
|
||||
fprintf(stderr, "DEBUG: hpgltops setting page size (%.0f x %.0f)\n",
|
||||
width, length);
|
||||
landscape = 0;
|
||||
|
||||
if (PPD != NULL)
|
||||
/*
|
||||
* Lookup the closest PageSize and set it...
|
||||
*/
|
||||
|
||||
for (i = PPD->num_sizes, size = PPD->sizes; i > 0; i --, size ++)
|
||||
if ((fabs(length - size->length) < 36.0 && size->width >= width) ||
|
||||
(fabs(length - size->width) < 36.0 && size->length >= width))
|
||||
break;
|
||||
|
||||
if (i == 0 && PPD->variable_sizes)
|
||||
{
|
||||
for (i = PPD->num_sizes, size = PPD->sizes; i > 0; i --, size ++)
|
||||
if (strcasecmp(size->name, "custom") == 0)
|
||||
break;
|
||||
}
|
||||
|
||||
if (i > 0)
|
||||
{
|
||||
fputs("DEBUG: hpgltops has a PPD file!\n", stderr);
|
||||
|
||||
/*
|
||||
* Lookup the closest PageSize and set it...
|
||||
* Found a matching size...
|
||||
*/
|
||||
|
||||
for (i = PPD->num_sizes, size = PPD->sizes; i > 0; i --, size ++)
|
||||
if ((fabs(length - size->length) < 36.0 && size->width >= width) ||
|
||||
(fabs(length - size->width) < 36.0 && size->length >= width))
|
||||
break;
|
||||
option = ppdFindOption(PPD, "PageSize");
|
||||
choice = ppdFindChoice(option, size->name);
|
||||
|
||||
if (i == 0 && PPD->variable_sizes)
|
||||
puts("%%BeginSetup");
|
||||
printf("%%%%BeginFeature: PageSize %s\n", size->name);
|
||||
|
||||
if (strcasecmp(size->name, "custom") == 0)
|
||||
{
|
||||
for (i = PPD->num_sizes, size = PPD->sizes; i > 0; i --, size ++)
|
||||
if (strcasecmp(size->name, "custom") == 0)
|
||||
break;
|
||||
}
|
||||
PageLeft = PPD->custom_margins[0];
|
||||
PageRight = width - PPD->custom_margins[2];
|
||||
PageWidth = width;
|
||||
PageBottom = PPD->custom_margins[1];
|
||||
PageTop = length - PPD->custom_margins[3];
|
||||
PageLength = length;
|
||||
|
||||
if (i > 0)
|
||||
{
|
||||
/*
|
||||
* Found a matching size...
|
||||
*/
|
||||
printf("%.0f %.0f 0 0 0\n", width, length);
|
||||
|
||||
option = ppdFindOption(PPD, "PageSize");
|
||||
choice = ppdFindChoice(option, size->name);
|
||||
|
||||
puts("%%BeginPageSetup");
|
||||
printf("%%%%BeginFeature: PageSize %s\n", size->name);
|
||||
|
||||
if (strcasecmp(size->name, "custom") == 0)
|
||||
if (choice->code == NULL)
|
||||
{
|
||||
PageLeft = PPD->custom_margins[0];
|
||||
PageRight = width - PPD->custom_margins[2];
|
||||
PageWidth = width;
|
||||
PageBottom = PPD->custom_margins[1];
|
||||
PageTop = length - PPD->custom_margins[3];
|
||||
PageLength = length;
|
||||
/*
|
||||
* This can happen with certain buggy PPD files that don't include
|
||||
* a CustomPageSize command sequence... We just use a generic
|
||||
* Level 2 command sequence...
|
||||
*/
|
||||
|
||||
printf("%.0f %.0f 0 0 0\n", width, length);
|
||||
puts("pop pop pop");
|
||||
puts("<</PageSize[5 -2 roll]/ImagingBBox null>>setpagedevice\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Use the vendor-supplied command...
|
||||
*/
|
||||
|
||||
if (choice->code == NULL)
|
||||
{
|
||||
/*
|
||||
* This can happen with certain buggy PPD files that don't include
|
||||
* a CustomPageSize command sequence... We just use a generic
|
||||
* Level 2 command sequence...
|
||||
*/
|
||||
printf("%s\n", choice->code);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (choice->code)
|
||||
printf("%s\n", choice->code);
|
||||
|
||||
puts("pop pop pop");
|
||||
puts("<</PageSize[5 -2 roll]/ImagingBBox null>>setpagedevice\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Use the vendor-supplied command...
|
||||
*/
|
||||
if (fabs(length - size->width) < 36.0)
|
||||
{
|
||||
/*
|
||||
* Do landscape orientation...
|
||||
*/
|
||||
|
||||
printf("%s\n", choice->code);
|
||||
}
|
||||
PageLeft = size->bottom;
|
||||
PageRight = size->top;
|
||||
PageWidth = size->length;
|
||||
PageBottom = size->left;
|
||||
PageTop = size->right;
|
||||
PageLength = size->width;
|
||||
|
||||
landscape = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (choice->code)
|
||||
printf("%s\n", choice->code);
|
||||
/*
|
||||
* Do portrait orientation...
|
||||
*/
|
||||
|
||||
if (fabs(length - size->width) < 36.0)
|
||||
{
|
||||
/*
|
||||
* Do landscape orientation...
|
||||
*/
|
||||
|
||||
PageLeft = size->bottom;
|
||||
PageRight = size->top;
|
||||
PageWidth = size->length;
|
||||
PageBottom = size->left;
|
||||
PageTop = size->right;
|
||||
PageLength = size->width;
|
||||
|
||||
landscape = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Do portrait orientation...
|
||||
*/
|
||||
|
||||
PageLeft = size->left;
|
||||
PageRight = size->right;
|
||||
PageWidth = size->width;
|
||||
PageBottom = size->bottom;
|
||||
PageTop = size->top;
|
||||
PageLength = size->length;
|
||||
}
|
||||
PageLeft = size->left;
|
||||
PageRight = size->right;
|
||||
PageWidth = size->width;
|
||||
PageBottom = size->bottom;
|
||||
PageTop = size->top;
|
||||
PageLength = size->length;
|
||||
}
|
||||
|
||||
puts("%%EndFeature");
|
||||
puts("%%EndPageSetup");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fputs("DEBUG: hpgltops does not have a PPD file!\n", stderr);
|
||||
|
||||
puts("%%BeginPageSetup");
|
||||
printf("%%%%BeginFeature: PageSize w%.0fh%.0f\n", width, length);
|
||||
printf("<</PageSize[%.0f %.0f]/ImageBBox null>>setpagedevice\n",
|
||||
width, length);
|
||||
puts("%%EndFeature");
|
||||
puts("%%EndPageSetup");
|
||||
|
||||
PageLeft = 0.0;
|
||||
PageRight = width;
|
||||
PageWidth = width;
|
||||
PageBottom = 0.0;
|
||||
PageTop = length;
|
||||
PageLength = length;
|
||||
puts("%%EndSetup");
|
||||
}
|
||||
}
|
||||
else
|
||||
landscape = 0;
|
||||
|
||||
printf("%%%%Page: %d %d\n", PageCount, PageCount);
|
||||
|
||||
printf("/SA {\n"
|
||||
" /%s%s%s%s findfont\n"
|
||||
|
||||
@@ -377,10 +377,6 @@ PE_polyline_encoded(int num_params, /* I - Number of parameters */
|
||||
case '7' :
|
||||
s ++;
|
||||
base_bits = 5;
|
||||
|
||||
#ifdef DEBUG
|
||||
fputs("DEBUG: 7-bit\n", stderr);
|
||||
#endif /* DEBUG */
|
||||
break;
|
||||
case ':' : /* Select pen */
|
||||
s ++;
|
||||
@@ -389,35 +385,19 @@ PE_polyline_encoded(int num_params, /* I - Number of parameters */
|
||||
printf("%.3f %.3f %.3f %.2f SP\n", Pens[PenNumber].rgb[0],
|
||||
Pens[PenNumber].rgb[PenNumber], Pens[PenNumber].rgb[2],
|
||||
Pens[PenNumber].width * PenScaling);
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, "DEBUG: set pen #%d\n", PenNumber);
|
||||
#endif /* DEBUG */
|
||||
break;
|
||||
case '<' : /* Next coords are a move-to */
|
||||
draw = 0;
|
||||
s ++;
|
||||
|
||||
#ifdef DEBUG
|
||||
fputs("DEBUG: moveto\n", stderr);
|
||||
#endif /* DEBUG */
|
||||
break;
|
||||
case '>' : /* Set fractional bits */
|
||||
s ++;
|
||||
temp = (int)decode_number(&s, base_bits, 1.0);
|
||||
frac_bits = 1.0 / (1 << temp);
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, "DEBUG: set fractional bits %d\n", temp);
|
||||
#endif /* DEBUG */
|
||||
break;
|
||||
case '=' : /* Next coords are absolute */
|
||||
s ++;
|
||||
abscoords = 1;
|
||||
|
||||
#ifdef DEBUG
|
||||
fputs("DEBUG: absolute\n", stderr);
|
||||
#endif /* DEBUG */
|
||||
break;
|
||||
default :
|
||||
if (*s >= 63)
|
||||
@@ -429,10 +409,6 @@ PE_polyline_encoded(int num_params, /* I - Number of parameters */
|
||||
x = decode_number(&s, base_bits, frac_bits);
|
||||
y = decode_number(&s, base_bits, frac_bits);
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, "DEBUG: coords %.3f %.3f\n", x, y);
|
||||
#endif /* DEBUG */
|
||||
|
||||
if (abscoords)
|
||||
{
|
||||
tx = Transform[0][0] * x + Transform[0][1] * y +
|
||||
|
||||
+6
-16
@@ -54,7 +54,6 @@ ImageReadTIFF(image_t *img, /* IO - Image */
|
||||
TIFF *tif; /* TIFF file */
|
||||
uint32 width, height; /* Size of image */
|
||||
uint16 photometric, /* Colorspace */
|
||||
compression, /* Type of compression */
|
||||
orientation, /* Orientation */
|
||||
resunit, /* Units for resolution */
|
||||
samples, /* Number of samples/pixel */
|
||||
@@ -102,7 +101,6 @@ ImageReadTIFF(image_t *img, /* IO - Image */
|
||||
if (!TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &width) ||
|
||||
!TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &height) ||
|
||||
!TIFFGetField(tif, TIFFTAG_PHOTOMETRIC, &photometric) ||
|
||||
!TIFFGetField(tif, TIFFTAG_COMPRESSION, &compression) ||
|
||||
!TIFFGetField(tif, TIFFTAG_SAMPLESPERPIXEL, &samples) ||
|
||||
!TIFFGetField(tif, TIFFTAG_BITSPERSAMPLE, &bits))
|
||||
{
|
||||
@@ -141,11 +139,6 @@ ImageReadTIFF(image_t *img, /* IO - Image */
|
||||
img->xppi = 128;
|
||||
img->yppi = 128;
|
||||
}
|
||||
|
||||
fprintf(stderr, "DEBUG: TIFF resolution = %fx%f, units=%d\n",
|
||||
xres, yres, resunit);
|
||||
fprintf(stderr, "DEBUG: Stored resolution = %dx%d PPI\n",
|
||||
img->xppi, img->yppi);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -248,23 +241,20 @@ ImageReadTIFF(image_t *img, /* IO - Image */
|
||||
* each which must be handled separately...
|
||||
*/
|
||||
|
||||
fprintf(stderr, "DEBUG: photometric = %d\n", photometric);
|
||||
fprintf(stderr, "DEBUG: compression = %d\n", compression);
|
||||
|
||||
switch (photometric)
|
||||
{
|
||||
case PHOTOMETRIC_MINISWHITE :
|
||||
case PHOTOMETRIC_MINISBLACK :
|
||||
if (photometric == PHOTOMETRIC_MINISWHITE)
|
||||
{
|
||||
zero = 255;
|
||||
one = 0;
|
||||
}
|
||||
else
|
||||
if (photometric == PHOTOMETRIC_MINISBLACK)
|
||||
{
|
||||
zero = 0;
|
||||
one = 255;
|
||||
}
|
||||
else
|
||||
{
|
||||
zero = 255;
|
||||
one = 0;
|
||||
}
|
||||
|
||||
if (orientation < ORIENTATION_LEFTTOP)
|
||||
{
|
||||
|
||||
+53
-217
@@ -42,8 +42,6 @@
|
||||
*/
|
||||
|
||||
int Flip = 0, /* Flip/mirror pages */
|
||||
XPosition = 0, /* Horizontal position on page */
|
||||
YPosition = 0, /* Vertical position on page */
|
||||
Collate = 0, /* Collate copies? */
|
||||
Copies = 1; /* Number of copies */
|
||||
|
||||
@@ -73,7 +71,6 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
ysize,
|
||||
xsize2,
|
||||
ysize2;
|
||||
float aspect; /* Aspect ratio */
|
||||
int xpages, /* # x pages */
|
||||
ypages, /* # y pages */
|
||||
xpage, /* Current x page */
|
||||
@@ -94,63 +91,23 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
float g; /* Gamma correction value */
|
||||
float b; /* Brightness factor */
|
||||
float zoom; /* Zoom facter */
|
||||
int xppi, yppi; /* Pixels-per-inch */
|
||||
int ppi; /* Pixels-per-inch */
|
||||
int hue, sat; /* Hue and saturation adjustment */
|
||||
int realcopies; /* Real copies being printed */
|
||||
float left, top; /* Left and top of image */
|
||||
char filename[1024]; /* Name of file to print */
|
||||
|
||||
|
||||
/*
|
||||
* Check arguments...
|
||||
*/
|
||||
|
||||
if (argc < 6 || argc > 7)
|
||||
if (argc != 7)
|
||||
{
|
||||
fputs("ERROR: imagetops job-id user title copies options [file]\n", stderr);
|
||||
fputs("ERROR: imagetops job-id user title copies options file\n", stderr);
|
||||
return (1);
|
||||
}
|
||||
|
||||
fprintf(stderr, "INFO: %s %s %s %s %s %s %s\n", argv[0], argv[1], argv[2],
|
||||
argv[3], argv[4], argv[5], argv[6] ? argv[6] : "(null)");
|
||||
|
||||
/*
|
||||
* Copy stdin as needed...
|
||||
*/
|
||||
|
||||
if (argc == 6)
|
||||
{
|
||||
FILE *fp; /* File to read from */
|
||||
char buffer[8192]; /* Buffer to read into */
|
||||
int bytes; /* # of bytes to read */
|
||||
|
||||
|
||||
if ((fp = fopen(cupsTempFile(filename, sizeof(filename)), "w")) == NULL)
|
||||
{
|
||||
perror("ERROR: Unable to copy image file");
|
||||
return (1);
|
||||
}
|
||||
|
||||
fprintf(stderr, "DEBUG: imagetops - copying to temp print file \"%s\"\n",
|
||||
filename);
|
||||
|
||||
while ((bytes = fread(buffer, 1, sizeof(buffer), stdin)) > 0)
|
||||
fwrite(buffer, 1, bytes, fp);
|
||||
fclose(fp);
|
||||
}
|
||||
else
|
||||
{
|
||||
strncpy(filename, argv[6], sizeof(filename) - 1);
|
||||
filename[sizeof(filename) - 1] = '\0';
|
||||
}
|
||||
|
||||
/*
|
||||
* Process command-line options and write the prolog...
|
||||
*/
|
||||
|
||||
zoom = 0.0;
|
||||
xppi = 0;
|
||||
yppi = 0;
|
||||
ppi = 0;
|
||||
hue = 0;
|
||||
sat = 100;
|
||||
g = 1.0;
|
||||
@@ -191,57 +148,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
zoom = atoi(val) * 0.01;
|
||||
|
||||
if ((val = cupsGetOption("ppi", num_options, options)) != NULL)
|
||||
if (sscanf(val, "%dx%d", &xppi, &yppi) < 2)
|
||||
yppi = xppi;
|
||||
|
||||
if ((val = cupsGetOption("position", num_options, options)) != NULL)
|
||||
{
|
||||
if (strcasecmp(val, "center") == 0)
|
||||
{
|
||||
XPosition = 0;
|
||||
YPosition = 0;
|
||||
}
|
||||
else if (strcasecmp(val, "top") == 0)
|
||||
{
|
||||
XPosition = 0;
|
||||
YPosition = 1;
|
||||
}
|
||||
else if (strcasecmp(val, "left") == 0)
|
||||
{
|
||||
XPosition = -1;
|
||||
YPosition = 0;
|
||||
}
|
||||
else if (strcasecmp(val, "right") == 0)
|
||||
{
|
||||
XPosition = 1;
|
||||
YPosition = 0;
|
||||
}
|
||||
else if (strcasecmp(val, "top-left") == 0)
|
||||
{
|
||||
XPosition = -1;
|
||||
YPosition = 1;
|
||||
}
|
||||
else if (strcasecmp(val, "top-right") == 0)
|
||||
{
|
||||
XPosition = 1;
|
||||
YPosition = 1;
|
||||
}
|
||||
else if (strcasecmp(val, "bottom") == 0)
|
||||
{
|
||||
XPosition = 0;
|
||||
YPosition = -1;
|
||||
}
|
||||
else if (strcasecmp(val, "bottom-left") == 0)
|
||||
{
|
||||
XPosition = -1;
|
||||
YPosition = -1;
|
||||
}
|
||||
else if (strcasecmp(val, "bottom-right") == 0)
|
||||
{
|
||||
XPosition = 1;
|
||||
YPosition = -1;
|
||||
}
|
||||
}
|
||||
ppi = atoi(val);
|
||||
|
||||
if ((val = cupsGetOption("saturation", num_options, options)) != NULL)
|
||||
sat = atoi(val);
|
||||
@@ -255,12 +162,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
colorspace = ColorDevice ? IMAGE_RGB : IMAGE_WHITE;
|
||||
|
||||
img = ImageOpen(filename, colorspace, IMAGE_WHITE, sat, hue, NULL);
|
||||
|
||||
if (argc == 6)
|
||||
unlink(filename);
|
||||
|
||||
if (img == NULL)
|
||||
if ((img = ImageOpen(argv[6], colorspace, IMAGE_WHITE, sat, hue, NULL)) == NULL)
|
||||
{
|
||||
fputs("ERROR: Unable to open image file for printing!\n", stderr);
|
||||
ppdClose(ppd);
|
||||
@@ -273,56 +175,46 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
* Scale as necessary...
|
||||
*/
|
||||
|
||||
if (zoom == 0.0 && ppi == 0)
|
||||
ppi = img->xppi;
|
||||
|
||||
xprint = (PageRight - PageLeft) / 72.0;
|
||||
yprint = (PageTop - PageBottom) / 72.0;
|
||||
|
||||
if (zoom == 0.0 && xppi == 0)
|
||||
{
|
||||
xppi = img->xppi;
|
||||
yppi = img->yppi;
|
||||
}
|
||||
|
||||
if (yppi == 0)
|
||||
yppi = xppi;
|
||||
|
||||
if (xppi > 0)
|
||||
if (ppi > 0)
|
||||
{
|
||||
/*
|
||||
* Scale the image as neccesary to match the desired pixels-per-inch.
|
||||
*/
|
||||
|
||||
xinches = (float)img->xsize / (float)xppi;
|
||||
yinches = (float)img->ysize / (float)yppi;
|
||||
xinches = (float)img->xsize / (float)ppi;
|
||||
yinches = (float)img->ysize / (float)ppi;
|
||||
|
||||
if (cupsGetOption("orientation", num_options, options) == NULL &&
|
||||
cupsGetOption("landscape", num_options, options) == NULL)
|
||||
/*
|
||||
* Rotate the image if it will fit landscape but not portrait...
|
||||
*/
|
||||
|
||||
if ((xinches > xprint || yinches > yprint) &&
|
||||
xinches <= yprint && yinches <= xprint)
|
||||
{
|
||||
/*
|
||||
* Rotate the image if it will fit landscape but not portrait...
|
||||
* Rotate the image as needed...
|
||||
*/
|
||||
|
||||
if ((xinches > xprint || yinches > yprint) &&
|
||||
xinches <= yprint && yinches <= xprint)
|
||||
{
|
||||
/*
|
||||
* Rotate the image as needed...
|
||||
*/
|
||||
Orientation = (Orientation + 1) & 3;
|
||||
xsize = yprint;
|
||||
yprint = xprint;
|
||||
xprint = xsize;
|
||||
|
||||
Orientation = (Orientation + 1) & 3;
|
||||
xsize = yprint;
|
||||
yprint = xprint;
|
||||
xprint = xsize;
|
||||
xsize = PageLeft;
|
||||
PageLeft = PageBottom;
|
||||
PageBottom = PageWidth - PageRight;
|
||||
PageRight = PageTop;
|
||||
PageTop = PageLength - xsize;
|
||||
|
||||
xsize = PageLeft;
|
||||
PageLeft = PageBottom;
|
||||
PageBottom = PageWidth - PageRight;
|
||||
PageRight = PageTop;
|
||||
PageTop = PageLength - xsize;
|
||||
|
||||
xsize = PageWidth;
|
||||
PageWidth = PageLength;
|
||||
PageLength = xsize;
|
||||
}
|
||||
xsize = PageWidth;
|
||||
PageWidth = PageLength;
|
||||
PageLength = xsize;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -331,75 +223,36 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
* Scale percentage of page size...
|
||||
*/
|
||||
|
||||
aspect = (float)img->yppi / (float)img->xppi;
|
||||
|
||||
fprintf(stderr, "DEBUG: img->xppi = %d, img->yppi = %d, aspect = %f\n",
|
||||
img->xppi, img->yppi, aspect);
|
||||
|
||||
xsize = xprint * zoom;
|
||||
ysize = xsize * img->ysize / img->xsize / aspect;
|
||||
ysize = xsize * img->ysize / img->xsize;
|
||||
|
||||
if (ysize > (yprint * zoom))
|
||||
{
|
||||
ysize = yprint * zoom;
|
||||
xsize = ysize * img->xsize * aspect / img->ysize;
|
||||
xsize = ysize * img->xsize / img->ysize;
|
||||
}
|
||||
|
||||
xsize2 = yprint * zoom;
|
||||
ysize2 = xsize2 * img->ysize / img->xsize / aspect;
|
||||
ysize2 = xsize2 * img->ysize / img->xsize;
|
||||
|
||||
if (ysize2 > (xprint * zoom))
|
||||
{
|
||||
ysize2 = xprint * zoom;
|
||||
xsize2 = ysize2 * img->xsize * aspect / img->ysize;
|
||||
xsize2 = ysize2 * img->xsize / img->ysize;
|
||||
}
|
||||
|
||||
fprintf(stderr, "DEBUG: xsize = %.0f, ysize = %.0f\n", xsize, ysize);
|
||||
fprintf(stderr, "DEBUG: xsize2 = %.0f, ysize2 = %.0f\n", xsize2, ysize2);
|
||||
/*
|
||||
* Choose the rotation with the largest area, but prefer
|
||||
* portrait if they are equal...
|
||||
*/
|
||||
|
||||
if (cupsGetOption("orientation", num_options, options) == NULL &&
|
||||
cupsGetOption("landscape", num_options, options) == NULL)
|
||||
if ((xsize * ysize) < (xsize2 * xsize2))
|
||||
{
|
||||
/*
|
||||
* Choose the rotation with the largest area, but prefer
|
||||
* portrait if they are equal...
|
||||
* Do landscape orientation...
|
||||
*/
|
||||
|
||||
if ((xsize * ysize) < (xsize2 * xsize2))
|
||||
{
|
||||
/*
|
||||
* Do landscape orientation...
|
||||
*/
|
||||
|
||||
Orientation = 1;
|
||||
xinches = xsize2;
|
||||
yinches = ysize2;
|
||||
xprint = (PageTop - PageBottom) / 72.0;
|
||||
yprint = (PageRight - PageLeft) / 72.0;
|
||||
|
||||
xsize = PageLeft;
|
||||
PageLeft = PageBottom;
|
||||
PageBottom = PageWidth - PageRight;
|
||||
PageRight = PageTop;
|
||||
PageTop = PageLength - xsize;
|
||||
|
||||
xsize = PageWidth;
|
||||
PageWidth = PageLength;
|
||||
PageLength = xsize;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Do portrait orientation...
|
||||
*/
|
||||
|
||||
Orientation = 0;
|
||||
xinches = xsize;
|
||||
yinches = ysize;
|
||||
}
|
||||
}
|
||||
else if (Orientation & 1)
|
||||
{
|
||||
Orientation = 1;
|
||||
xinches = xsize2;
|
||||
yinches = ysize2;
|
||||
xprint = (PageTop - PageBottom) / 72.0;
|
||||
@@ -415,6 +268,16 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
PageWidth = PageLength;
|
||||
PageLength = xsize;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Do portrait orientation...
|
||||
*/
|
||||
|
||||
Orientation = 0;
|
||||
xinches = xsize;
|
||||
yinches = ysize;
|
||||
}
|
||||
}
|
||||
|
||||
xpages = ceil(xinches / xprint);
|
||||
@@ -512,34 +375,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
y0 = img->ysize * ypage / ypages;
|
||||
y1 = img->ysize * (ypage + 1) / ypages - 1;
|
||||
|
||||
switch (XPosition)
|
||||
{
|
||||
case -1 :
|
||||
left = PageLeft;
|
||||
break;
|
||||
case 0 :
|
||||
left = (PageWidth - xprint * 72.0) * 0.5;
|
||||
break;
|
||||
case 1 :
|
||||
left = PageRight - xprint * 72.0;
|
||||
break;
|
||||
}
|
||||
|
||||
switch (YPosition)
|
||||
{
|
||||
case -1 :
|
||||
top = PageBottom + 72.0 * yprint;
|
||||
break;
|
||||
case 0 :
|
||||
top = (PageLength + yprint * 72.0) * 0.5;
|
||||
break;
|
||||
case 1 :
|
||||
top = PageTop;
|
||||
break;
|
||||
}
|
||||
|
||||
printf("%.1f %.1f translate\n", left, top);
|
||||
|
||||
printf("%.1f %.1f translate\n", PageLeft, PageBottom + 72.0 * yprint);
|
||||
printf("%.3f %.3f scale\n\n",
|
||||
xprint * 72.0 / (x1 - x0 + 1),
|
||||
yprint * 72.0 / (y1 - y0 + 1));
|
||||
|
||||
+130
-457
@@ -24,8 +24,6 @@
|
||||
* Contents:
|
||||
*
|
||||
* main() - Main entry...
|
||||
* exec_code() - Execute PostScript setpagedevice commands as
|
||||
* appropriate.
|
||||
* format_CMY() - Convert image data to CMY.
|
||||
* format_CMYK() - Convert image data to CMYK.
|
||||
* format_K() - Convert image data to black.
|
||||
@@ -42,6 +40,10 @@
|
||||
* Include necessary headers...
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include necessary headers...
|
||||
*/
|
||||
|
||||
#include "common.h"
|
||||
#include "image.h"
|
||||
#include "raster.h"
|
||||
@@ -53,8 +55,6 @@
|
||||
*/
|
||||
|
||||
int Flip = 0, /* Flip/mirror pages */
|
||||
XPosition = 0, /* Horizontal position on page */
|
||||
YPosition = 0, /* Vertical position on page */
|
||||
Collate = 0, /* Collate copies? */
|
||||
Copies = 1; /* Number of copies */
|
||||
int Floyd16x16[16][16] = /* Traditional Floyd ordered dither */
|
||||
@@ -121,7 +121,7 @@ int Planes[] = /* Number of planes for each colorspace */
|
||||
* Local functions...
|
||||
*/
|
||||
|
||||
static void exec_code(cups_page_header_t *header, const char *code);
|
||||
static void exec_choice(cups_page_header_t *header, ppd_choice_t *choice);
|
||||
static void format_CMY(cups_page_header_t *header, unsigned char *row, int y, int z, int xsize, int ysize, int yerr0, int yerr1, ib_t *r0, ib_t *r1);
|
||||
static void format_CMYK(cups_page_header_t *header, unsigned char *row, int y, int z, int xsize, int ysize, int yerr0, int yerr1, ib_t *r0, ib_t *r1);
|
||||
static void format_K(cups_page_header_t *header, unsigned char *row, int y, int z, int xsize, int ysize, int yerr0, int yerr1, ib_t *r0, ib_t *r1);
|
||||
@@ -153,7 +153,6 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
ysize,
|
||||
xsize2,
|
||||
ysize2;
|
||||
float aspect; /* Aspect ratio */
|
||||
int xpages, /* # x pages */
|
||||
ypages, /* # y pages */
|
||||
xpage, /* Current x page */
|
||||
@@ -164,9 +163,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
int x0, y0, /* Corners of the page in image coords */
|
||||
x1, y1;
|
||||
ppd_file_t *ppd; /* PPD file */
|
||||
ppd_choice_t *choice, /* PPD option choice */
|
||||
**choices; /* List of marked choices */
|
||||
int count; /* Number of marked choices */
|
||||
ppd_choice_t *choice; /* PPD option choice */
|
||||
char *resolution, /* Output resolution */
|
||||
*media_type; /* Media type */
|
||||
ppd_profile_t *profile; /* Color profile */
|
||||
@@ -181,7 +178,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
float g; /* Gamma correction value */
|
||||
float b; /* Brightness factor */
|
||||
float zoom; /* Zoom facter */
|
||||
int xppi, yppi; /* Pixels-per-inch */
|
||||
int ppi; /* Pixels-per-inch */
|
||||
int hue, sat; /* Hue and saturation adjustment */
|
||||
izoom_t *z; /* ImageZoom buffer */
|
||||
int primary, /* Primary image colorspace */
|
||||
@@ -198,59 +195,23 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
ib_t lut[256]; /* Gamma/brightness LUT */
|
||||
int plane, /* Current color plane */
|
||||
num_planes; /* Number of color planes */
|
||||
char filename[1024]; /* Name of file to print */
|
||||
|
||||
|
||||
/*
|
||||
* Check arguments...
|
||||
*/
|
||||
|
||||
if (argc < 6 || argc > 7)
|
||||
if (argc != 7)
|
||||
{
|
||||
fputs("ERROR: imagetoraster job-id user title copies options [file]\n", stderr);
|
||||
fputs("ERROR: imagetoraster job-id user title copies options file\n", stderr);
|
||||
return (1);
|
||||
}
|
||||
|
||||
fprintf(stderr, "INFO: %s %s %s %s %s %s %s\n", argv[0], argv[1], argv[2],
|
||||
argv[3], argv[4], argv[5], argv[6] ? argv[6] : "(null)");
|
||||
|
||||
/*
|
||||
* Copy stdin as needed...
|
||||
*/
|
||||
|
||||
if (argc == 6)
|
||||
{
|
||||
FILE *fp; /* File to read from */
|
||||
char buffer[8192]; /* Buffer to read into */
|
||||
int bytes; /* # of bytes to read */
|
||||
|
||||
|
||||
if ((fp = fopen(cupsTempFile(filename, sizeof(filename)), "w")) == NULL)
|
||||
{
|
||||
perror("ERROR: Unable to copy image file");
|
||||
return (1);
|
||||
}
|
||||
|
||||
fprintf(stderr, "DEBUG: imagetoraster - copying to temp print file \"%s\"\n",
|
||||
filename);
|
||||
|
||||
while ((bytes = fread(buffer, 1, sizeof(buffer), stdin)) > 0)
|
||||
fwrite(buffer, 1, bytes, fp);
|
||||
fclose(fp);
|
||||
}
|
||||
else
|
||||
{
|
||||
strncpy(filename, argv[6], sizeof(filename) - 1);
|
||||
filename[sizeof(filename) - 1] = '\0';
|
||||
}
|
||||
argv[3], argv[4], argv[5], argv[6]);
|
||||
|
||||
/*
|
||||
* Process command-line options and write the prolog...
|
||||
*/
|
||||
|
||||
zoom = 0.0;
|
||||
xppi = 0;
|
||||
yppi = 0;
|
||||
ppi = 0;
|
||||
hue = 0;
|
||||
sat = 100;
|
||||
g = 1.0;
|
||||
@@ -291,57 +252,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
zoom = atoi(val) * 0.01;
|
||||
|
||||
if ((val = cupsGetOption("ppi", num_options, options)) != NULL)
|
||||
if (sscanf(val, "%dx%d", &xppi, &yppi) < 2)
|
||||
yppi = xppi;
|
||||
|
||||
if ((val = cupsGetOption("position", num_options, options)) != NULL)
|
||||
{
|
||||
if (strcasecmp(val, "center") == 0)
|
||||
{
|
||||
XPosition = 0;
|
||||
YPosition = 0;
|
||||
}
|
||||
else if (strcasecmp(val, "top") == 0)
|
||||
{
|
||||
XPosition = 0;
|
||||
YPosition = 1;
|
||||
}
|
||||
else if (strcasecmp(val, "left") == 0)
|
||||
{
|
||||
XPosition = -1;
|
||||
YPosition = 0;
|
||||
}
|
||||
else if (strcasecmp(val, "right") == 0)
|
||||
{
|
||||
XPosition = 1;
|
||||
YPosition = 0;
|
||||
}
|
||||
else if (strcasecmp(val, "top-left") == 0)
|
||||
{
|
||||
XPosition = -1;
|
||||
YPosition = 1;
|
||||
}
|
||||
else if (strcasecmp(val, "top-right") == 0)
|
||||
{
|
||||
XPosition = 1;
|
||||
YPosition = 1;
|
||||
}
|
||||
else if (strcasecmp(val, "bottom") == 0)
|
||||
{
|
||||
XPosition = 0;
|
||||
YPosition = -1;
|
||||
}
|
||||
else if (strcasecmp(val, "bottom-left") == 0)
|
||||
{
|
||||
XPosition = -1;
|
||||
YPosition = -1;
|
||||
}
|
||||
else if (strcasecmp(val, "bottom-right") == 0)
|
||||
{
|
||||
XPosition = 1;
|
||||
YPosition = -1;
|
||||
}
|
||||
}
|
||||
ppi = atoi(val);
|
||||
|
||||
if ((val = cupsGetOption("saturation", num_options, options)) != NULL)
|
||||
sat = atoi(val);
|
||||
@@ -358,38 +269,35 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
header.HWResolution[1] = 100;
|
||||
header.cupsBitsPerColor = 1;
|
||||
header.cupsColorOrder = CUPS_ORDER_CHUNKED;
|
||||
header.cupsColorSpace = CUPS_CSPACE_K;
|
||||
header.cupsColorSpace = CUPS_CSPACE_RGB;
|
||||
|
||||
if (ppd->patches)
|
||||
exec_code(&header, ppd->patches);
|
||||
if ((choice = ppdFindMarkedChoice(ppd, "ColorModel")) != NULL)
|
||||
exec_choice(&header, choice);
|
||||
|
||||
if ((count = ppdCollect(ppd, PPD_ORDER_DOCUMENT, &choices)) > 0)
|
||||
for (i = 0; i < count; i ++)
|
||||
exec_code(&header, choices[i]->code);
|
||||
if ((choice = ppdFindMarkedChoice(ppd, "CutMedia")) != NULL)
|
||||
exec_choice(&header, choice);
|
||||
|
||||
if ((count = ppdCollect(ppd, PPD_ORDER_ANY, &choices)) > 0)
|
||||
for (i = 0; i < count; i ++)
|
||||
exec_code(&header, choices[i]->code);
|
||||
if ((choice = ppdFindMarkedChoice(ppd, "ESPFinishing")) != NULL)
|
||||
exec_choice(&header, choice);
|
||||
|
||||
if ((count = ppdCollect(ppd, PPD_ORDER_PROLOG, &choices)) > 0)
|
||||
for (i = 0; i < count; i ++)
|
||||
exec_code(&header, choices[i]->code);
|
||||
|
||||
if ((count = ppdCollect(ppd, PPD_ORDER_PAGE, &choices)) > 0)
|
||||
for (i = 0; i < count; i ++)
|
||||
exec_code(&header, choices[i]->code);
|
||||
|
||||
/*
|
||||
* Get the media type and resolution that have been chosen...
|
||||
*/
|
||||
if ((choice = ppdFindMarkedChoice(ppd, "InputSlot")) != NULL)
|
||||
exec_choice(&header, choice);
|
||||
|
||||
if ((choice = ppdFindMarkedChoice(ppd, "MediaType")) != NULL)
|
||||
{
|
||||
exec_choice(&header, choice);
|
||||
|
||||
media_type = choice->choice;
|
||||
}
|
||||
else
|
||||
media_type = "";
|
||||
|
||||
if ((choice = ppdFindMarkedChoice(ppd, "Resolution")) != NULL)
|
||||
{
|
||||
exec_choice(&header, choice);
|
||||
|
||||
resolution = choice->choice;
|
||||
}
|
||||
else
|
||||
resolution = "";
|
||||
|
||||
@@ -555,12 +463,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
fputs("INFO: Loading image file...\n", stderr);
|
||||
|
||||
img = ImageOpen(filename, primary, secondary, sat, hue, lut);
|
||||
|
||||
if (argc == 6)
|
||||
unlink(filename);
|
||||
|
||||
if (img == NULL)
|
||||
if ((img = ImageOpen(argv[6], primary, secondary, sat, hue, lut)) == NULL)
|
||||
{
|
||||
fputs("ERROR: Unable to open image file for printing!\n", stderr);
|
||||
ppdClose(ppd);
|
||||
@@ -571,16 +474,10 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
* Scale as necessary...
|
||||
*/
|
||||
|
||||
if (zoom == 0.0 && xppi == 0)
|
||||
{
|
||||
xppi = img->xppi;
|
||||
yppi = img->yppi;
|
||||
}
|
||||
if (zoom == 0.0 && ppi == 0)
|
||||
ppi = img->xppi;
|
||||
|
||||
if (yppi == 0)
|
||||
yppi = xppi;
|
||||
|
||||
if (xppi > 0)
|
||||
if (ppi > 0)
|
||||
{
|
||||
/*
|
||||
* Scale the image as neccesary to match the desired pixels-per-inch.
|
||||
@@ -597,28 +494,24 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
yprint = (PageTop - PageBottom) / 72.0;
|
||||
}
|
||||
|
||||
xinches = (float)img->xsize / (float)xppi;
|
||||
yinches = (float)img->ysize / (float)yppi;
|
||||
xinches = (float)img->xsize / (float)ppi;
|
||||
yinches = (float)img->ysize / (float)ppi;
|
||||
|
||||
if (cupsGetOption("orientation", num_options, options) == NULL &&
|
||||
cupsGetOption("landscape", num_options, options) == NULL)
|
||||
/*
|
||||
* Rotate the image if it will fit landscape but not portrait...
|
||||
*/
|
||||
|
||||
if ((xinches > xprint || yinches > yprint) &&
|
||||
xinches <= yprint && yinches <= xprint)
|
||||
{
|
||||
/*
|
||||
* Rotate the image if it will fit landscape but not portrait...
|
||||
* Rotate the image as needed...
|
||||
*/
|
||||
|
||||
if ((xinches > xprint || yinches > yprint) &&
|
||||
xinches <= yprint && yinches <= xprint)
|
||||
{
|
||||
/*
|
||||
* Rotate the image as needed...
|
||||
*/
|
||||
|
||||
Orientation = (Orientation + 1) & 3;
|
||||
xsize = yprint;
|
||||
yprint = xprint;
|
||||
xprint = xsize;
|
||||
}
|
||||
Orientation = (Orientation + 1) & 3;
|
||||
xsize = yprint;
|
||||
yprint = xprint;
|
||||
xprint = xsize;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -629,87 +522,57 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
xprint = (PageRight - PageLeft) / 72.0;
|
||||
yprint = (PageTop - PageBottom) / 72.0;
|
||||
aspect = (float)img->yppi / (float)img->xppi;
|
||||
|
||||
fprintf(stderr, "DEBUG: img->xppi = %d, img->yppi = %d, aspect = %f\n",
|
||||
img->xppi, img->yppi, aspect);
|
||||
|
||||
xsize = xprint * zoom;
|
||||
ysize = xsize * img->ysize / img->xsize / aspect;
|
||||
ysize = xsize * img->ysize / img->xsize;
|
||||
|
||||
if (ysize > (yprint * zoom))
|
||||
{
|
||||
ysize = yprint * zoom;
|
||||
xsize = ysize * img->xsize * aspect / img->ysize;
|
||||
xsize = ysize * img->xsize / img->ysize;
|
||||
}
|
||||
|
||||
xsize2 = yprint * zoom;
|
||||
ysize2 = xsize2 * img->ysize / img->xsize / aspect;
|
||||
ysize2 = xsize2 * img->ysize / img->xsize;
|
||||
|
||||
if (ysize2 > (xprint * zoom))
|
||||
{
|
||||
ysize2 = xprint * zoom;
|
||||
xsize2 = ysize2 * img->xsize * aspect / img->ysize;
|
||||
xsize2 = ysize2 * img->xsize / img->ysize;
|
||||
}
|
||||
|
||||
fprintf(stderr, "DEBUG: xsize = %.0f, ysize = %.0f\n", xsize, ysize);
|
||||
fprintf(stderr, "DEBUG: xsize2 = %.0f, ysize2 = %.0f\n", xsize2, ysize2);
|
||||
/*
|
||||
* Choose the rotation with the largest area, but prefer
|
||||
* portrait if they are equal...
|
||||
*/
|
||||
|
||||
if (cupsGetOption("orientation", num_options, options) == NULL &&
|
||||
cupsGetOption("landscape", num_options, options) == NULL)
|
||||
if ((xsize * ysize) < (xsize2 * xsize2))
|
||||
{
|
||||
/*
|
||||
* Choose the rotation with the largest area, but prefer
|
||||
* portrait if they are equal...
|
||||
* Do landscape orientation...
|
||||
*/
|
||||
|
||||
if ((xsize * ysize) < (xsize2 * xsize2))
|
||||
{
|
||||
/*
|
||||
* Do landscape orientation...
|
||||
*/
|
||||
|
||||
Orientation = 1;
|
||||
xinches = xsize2;
|
||||
yinches = ysize2;
|
||||
xprint = (PageTop - PageBottom) / 72.0;
|
||||
yprint = (PageRight - PageLeft) / 72.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Do portrait orientation...
|
||||
*/
|
||||
|
||||
Orientation = 0;
|
||||
xinches = xsize;
|
||||
yinches = ysize;
|
||||
}
|
||||
}
|
||||
else if (Orientation & 1)
|
||||
{
|
||||
Orientation = 1;
|
||||
xinches = xsize2;
|
||||
yinches = ysize2;
|
||||
xprint = (PageTop - PageBottom) / 72.0;
|
||||
yprint = (PageRight - PageLeft) / 72.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Do portrait orientation...
|
||||
*/
|
||||
|
||||
xsize = PageLeft;
|
||||
PageLeft = PageBottom;
|
||||
PageBottom = PageWidth - PageRight;
|
||||
PageRight = PageTop;
|
||||
PageTop = PageLength - xsize;
|
||||
|
||||
xsize = PageWidth;
|
||||
PageWidth = PageLength;
|
||||
PageLength = xsize;
|
||||
Orientation = 0;
|
||||
xinches = xsize;
|
||||
yinches = ysize;
|
||||
}
|
||||
}
|
||||
|
||||
xpages = ceil(xinches / xprint);
|
||||
ypages = ceil(yinches / yprint);
|
||||
|
||||
fprintf(stderr, "DEBUG: xpages = %d, ypages = %d\n", xpages, ypages);
|
||||
|
||||
/*
|
||||
* Compute the bitmap size...
|
||||
*/
|
||||
@@ -749,139 +612,28 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
switch (Orientation)
|
||||
{
|
||||
case 0 :
|
||||
switch (XPosition)
|
||||
{
|
||||
case -1 :
|
||||
header.ImagingBoundingBox[0] = PageLeft;
|
||||
header.ImagingBoundingBox[2] = PageLeft + xprint * 72;
|
||||
break;
|
||||
case 0 :
|
||||
header.ImagingBoundingBox[0] = (PageRight + PageLeft - xprint * 72) / 2;
|
||||
header.ImagingBoundingBox[2] = (PageRight + PageLeft + xprint * 72) / 2;
|
||||
break;
|
||||
case 1 :
|
||||
header.ImagingBoundingBox[0] = PageRight - xprint * 72;
|
||||
header.ImagingBoundingBox[2] = PageRight;
|
||||
break;
|
||||
}
|
||||
|
||||
switch (YPosition)
|
||||
{
|
||||
case -1 :
|
||||
header.ImagingBoundingBox[1] = PageBottom;
|
||||
header.ImagingBoundingBox[3] = PageBottom + yprint * 72;
|
||||
break;
|
||||
case 0 :
|
||||
header.ImagingBoundingBox[1] = (PageTop + PageBottom - yprint * 72) / 2;
|
||||
header.ImagingBoundingBox[3] = (PageTop + PageBottom + yprint * 72) / 2;
|
||||
break;
|
||||
case 1 :
|
||||
header.ImagingBoundingBox[1] = PageTop - yprint * 72;
|
||||
header.ImagingBoundingBox[3] = PageTop;
|
||||
break;
|
||||
}
|
||||
header.ImagingBoundingBox[0] = PageLeft;
|
||||
header.ImagingBoundingBox[1] = PageBottom;
|
||||
header.ImagingBoundingBox[2] = PageLeft + xprint * 72;
|
||||
header.ImagingBoundingBox[3] = PageBottom + yprint * 72;
|
||||
break;
|
||||
|
||||
case 1 :
|
||||
switch (XPosition)
|
||||
{
|
||||
case -1 :
|
||||
header.ImagingBoundingBox[0] = PageBottom;
|
||||
header.ImagingBoundingBox[2] = PageBottom + yprint * 72;
|
||||
break;
|
||||
case 0 :
|
||||
header.ImagingBoundingBox[0] = (PageTop + PageBottom - yprint * 72) / 2;
|
||||
header.ImagingBoundingBox[2] = (PageTop + PageBottom + yprint * 72) / 2;
|
||||
break;
|
||||
case 1 :
|
||||
header.ImagingBoundingBox[0] = PageTop - yprint * 72;
|
||||
header.ImagingBoundingBox[2] = PageTop;
|
||||
break;
|
||||
}
|
||||
|
||||
switch (YPosition)
|
||||
{
|
||||
case -1 :
|
||||
header.ImagingBoundingBox[1] = PageLeft;
|
||||
header.ImagingBoundingBox[3] = PageLeft + xprint * 72;
|
||||
break;
|
||||
case 0 :
|
||||
header.ImagingBoundingBox[1] = (PageRight + PageLeft - xprint * 72) / 2;
|
||||
header.ImagingBoundingBox[3] = (PageRight + PageLeft + xprint * 72) / 2;
|
||||
break;
|
||||
case 1 :
|
||||
header.ImagingBoundingBox[1] = PageRight - xprint * 72;
|
||||
header.ImagingBoundingBox[3] = PageRight;
|
||||
break;
|
||||
}
|
||||
header.ImagingBoundingBox[0] = PageRight - yprint * 72;
|
||||
header.ImagingBoundingBox[1] = PageBottom;
|
||||
header.ImagingBoundingBox[2] = PageRight;
|
||||
header.ImagingBoundingBox[3] = PageBottom + xprint * 72;
|
||||
break;
|
||||
|
||||
case 2 :
|
||||
switch (XPosition)
|
||||
{
|
||||
case 1 :
|
||||
header.ImagingBoundingBox[0] = PageLeft;
|
||||
header.ImagingBoundingBox[2] = PageLeft + xprint * 72;
|
||||
break;
|
||||
case 0 :
|
||||
header.ImagingBoundingBox[0] = (PageRight + PageLeft - xprint * 72) / 2;
|
||||
header.ImagingBoundingBox[2] = (PageRight + PageLeft + xprint * 72) / 2;
|
||||
break;
|
||||
case -1 :
|
||||
header.ImagingBoundingBox[0] = PageRight - xprint * 72;
|
||||
header.ImagingBoundingBox[2] = PageRight;
|
||||
break;
|
||||
}
|
||||
|
||||
switch (YPosition)
|
||||
{
|
||||
case 1 :
|
||||
header.ImagingBoundingBox[1] = PageBottom;
|
||||
header.ImagingBoundingBox[3] = PageBottom + yprint * 72;
|
||||
break;
|
||||
case 0 :
|
||||
header.ImagingBoundingBox[1] = (PageTop + PageBottom - yprint * 72) / 2;
|
||||
header.ImagingBoundingBox[3] = (PageTop + PageBottom + yprint * 72) / 2;
|
||||
break;
|
||||
case -1 :
|
||||
header.ImagingBoundingBox[1] = PageTop - yprint * 72;
|
||||
header.ImagingBoundingBox[3] = PageTop;
|
||||
break;
|
||||
}
|
||||
header.ImagingBoundingBox[0] = PageRight - xprint * 72;
|
||||
header.ImagingBoundingBox[1] = PageTop - yprint * 72;
|
||||
header.ImagingBoundingBox[2] = PageRight;
|
||||
header.ImagingBoundingBox[3] = PageTop;
|
||||
break;
|
||||
|
||||
case 3 :
|
||||
switch (XPosition)
|
||||
{
|
||||
case 1 :
|
||||
header.ImagingBoundingBox[0] = PageBottom;
|
||||
header.ImagingBoundingBox[2] = PageBottom + yprint * 72;
|
||||
break;
|
||||
case 0 :
|
||||
header.ImagingBoundingBox[0] = (PageTop + PageBottom - yprint * 72) / 2;
|
||||
header.ImagingBoundingBox[2] = (PageTop + PageBottom + yprint * 72) / 2;
|
||||
break;
|
||||
case -1 :
|
||||
header.ImagingBoundingBox[0] = PageTop - yprint * 72;
|
||||
header.ImagingBoundingBox[2] = PageTop;
|
||||
break;
|
||||
}
|
||||
|
||||
switch (YPosition)
|
||||
{
|
||||
case 1 :
|
||||
header.ImagingBoundingBox[1] = PageLeft;
|
||||
header.ImagingBoundingBox[3] = PageLeft + xprint * 72;
|
||||
break;
|
||||
case 0 :
|
||||
header.ImagingBoundingBox[1] = (PageRight + PageLeft - xprint * 72) / 2;
|
||||
header.ImagingBoundingBox[3] = (PageRight + PageLeft + xprint * 72) / 2;
|
||||
break;
|
||||
case -1 :
|
||||
header.ImagingBoundingBox[1] = PageRight - xprint * 72;
|
||||
header.ImagingBoundingBox[3] = PageRight;
|
||||
break;
|
||||
}
|
||||
header.ImagingBoundingBox[0] = PageLeft;
|
||||
header.ImagingBoundingBox[1] = PageTop - xprint * 72;
|
||||
header.ImagingBoundingBox[2] = PageLeft + yprint * 72 + 0.5f;
|
||||
header.ImagingBoundingBox[3] = PageTop;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1022,15 +774,11 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
* Write leading blank space as needed...
|
||||
*/
|
||||
|
||||
if (header.cupsHeight > z->ysize && YPosition <= 0)
|
||||
if (header.cupsHeight > z->ysize && Orientation < 2)
|
||||
{
|
||||
memset(row, blank, header.cupsBytesPerLine);
|
||||
|
||||
y = header.cupsHeight - z->ysize;
|
||||
if (YPosition == 0)
|
||||
y /= 2;
|
||||
|
||||
for (; y > 0; y --)
|
||||
for (y = header.cupsHeight - z->ysize; y > 0; y --)
|
||||
{
|
||||
if (cupsRasterWritePixels(ras, row, header.cupsBytesPerLine) <
|
||||
header.cupsBytesPerLine)
|
||||
@@ -1138,7 +886,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
*/
|
||||
|
||||
if (cupsRasterWritePixels(ras, row, header.cupsBytesPerLine) <
|
||||
header.cupsBytesPerLine)
|
||||
header.cupsBytesPerLine)
|
||||
{
|
||||
fputs("ERROR: Unable to write raster data to driver!\n", stderr);
|
||||
ImageClose(img);
|
||||
@@ -1164,15 +912,11 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
* Write trailing blank space as needed...
|
||||
*/
|
||||
|
||||
if (header.cupsHeight > z->ysize && YPosition >= 0)
|
||||
if (header.cupsHeight > z->ysize && Orientation >= 2)
|
||||
{
|
||||
memset(row, blank, header.cupsBytesPerLine);
|
||||
|
||||
y = header.cupsHeight - z->ysize;
|
||||
if (YPosition == 0)
|
||||
y = y - y / 2;
|
||||
|
||||
for (; y > 0; y --)
|
||||
for (y = header.cupsHeight - z->ysize; y > 0; y --)
|
||||
{
|
||||
if (cupsRasterWritePixels(ras, row, header.cupsBytesPerLine) <
|
||||
header.cupsBytesPerLine)
|
||||
@@ -1206,19 +950,20 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
|
||||
/*
|
||||
* 'exec_code()' - Execute PostScript setpagedevice commands as appropriate.
|
||||
* 'exec_choice()' - Execute PostScript setpagedevice commands as appropriate.
|
||||
*/
|
||||
|
||||
static void
|
||||
exec_code(cups_page_header_t *header, /* I - Page header */
|
||||
const char *code) /* I - Option choice to execute */
|
||||
exec_choice(cups_page_header_t *header, /* I - Page header */
|
||||
ppd_choice_t *choice) /* I - Option choice to execute */
|
||||
{
|
||||
char *ptr, /* Pointer into name/value string */
|
||||
char *code, /* Pointer into code string */
|
||||
*ptr, /* Pointer into name/value string */
|
||||
name[255], /* Name of pagedevice entry */
|
||||
value[1024]; /* Value of pagedevice entry */
|
||||
|
||||
|
||||
for (; *code != '\0';)
|
||||
for (code = choice->code; *code != '\0';)
|
||||
{
|
||||
/*
|
||||
* Search for the start of a dictionary name...
|
||||
@@ -1276,7 +1021,7 @@ exec_code(cups_page_header_t *header, /* I - Page header */
|
||||
{
|
||||
code ++;
|
||||
if (isdigit(*code))
|
||||
*ptr++ = (char)strtol(code, (char **)&code, 8);
|
||||
*ptr++ = (char)strtol(code, &code, 8);
|
||||
else
|
||||
*ptr++ = *code++;
|
||||
}
|
||||
@@ -1362,18 +1107,10 @@ format_CMY(cups_page_header_t *header, /* I - Page header */
|
||||
*dither; /* Pointer into dither array */
|
||||
|
||||
|
||||
switch (XPosition)
|
||||
{
|
||||
case -1 :
|
||||
bitoffset = 0;
|
||||
break;
|
||||
case 0 :
|
||||
bitoffset = header->cupsBitsPerPixel * ((header->cupsWidth - xsize) / 2);
|
||||
break;
|
||||
case 1 :
|
||||
bitoffset = header->cupsBitsPerPixel * (header->cupsWidth - xsize);
|
||||
break;
|
||||
}
|
||||
if (Orientation == 1 || Orientation == 2)
|
||||
bitoffset = header->cupsBitsPerPixel * (header->cupsWidth - xsize);
|
||||
else
|
||||
bitoffset = 0;
|
||||
|
||||
ptr = row + bitoffset / 8;
|
||||
bandwidth = header->cupsBytesPerLine / 3;
|
||||
@@ -1737,18 +1474,10 @@ format_CMYK(cups_page_header_t *header, /* I - Page header */
|
||||
*dither; /* Pointer into dither array */
|
||||
|
||||
|
||||
switch (XPosition)
|
||||
{
|
||||
case -1 :
|
||||
bitoffset = 0;
|
||||
break;
|
||||
case 0 :
|
||||
bitoffset = header->cupsBitsPerPixel * ((header->cupsWidth - xsize) / 2);
|
||||
break;
|
||||
case 1 :
|
||||
bitoffset = header->cupsBitsPerPixel * (header->cupsWidth - xsize);
|
||||
break;
|
||||
}
|
||||
if (Orientation == 1 || Orientation == 2)
|
||||
bitoffset = header->cupsBitsPerPixel * (header->cupsWidth - xsize);
|
||||
else
|
||||
bitoffset = 0;
|
||||
|
||||
ptr = row + bitoffset / 8;
|
||||
bandwidth = header->cupsBytesPerLine / 4;
|
||||
@@ -2106,18 +1835,10 @@ format_K(cups_page_header_t *header, /* I - Page header */
|
||||
*dither; /* Pointer into dither array */
|
||||
|
||||
|
||||
switch (XPosition)
|
||||
{
|
||||
case -1 :
|
||||
bitoffset = 0;
|
||||
break;
|
||||
case 0 :
|
||||
bitoffset = header->cupsBitsPerPixel * ((header->cupsWidth - xsize) / 2);
|
||||
break;
|
||||
case 1 :
|
||||
bitoffset = header->cupsBitsPerPixel * (header->cupsWidth - xsize);
|
||||
break;
|
||||
}
|
||||
if (Orientation == 1 || Orientation == 2)
|
||||
bitoffset = header->cupsBitsPerPixel * (header->cupsWidth - xsize);
|
||||
else
|
||||
bitoffset = 0;
|
||||
|
||||
ptr = row + bitoffset / 8;
|
||||
|
||||
@@ -2227,18 +1948,10 @@ format_KCMY(cups_page_header_t *header, /* I - Page header */
|
||||
*dither; /* Pointer into dither array */
|
||||
|
||||
|
||||
switch (XPosition)
|
||||
{
|
||||
case -1 :
|
||||
bitoffset = 0;
|
||||
break;
|
||||
case 0 :
|
||||
bitoffset = header->cupsBitsPerPixel * ((header->cupsWidth - xsize) / 2);
|
||||
break;
|
||||
case 1 :
|
||||
bitoffset = header->cupsBitsPerPixel * (header->cupsWidth - xsize);
|
||||
break;
|
||||
}
|
||||
if (Orientation == 1 || Orientation == 2)
|
||||
bitoffset = header->cupsBitsPerPixel * (header->cupsWidth - xsize);
|
||||
else
|
||||
bitoffset = 0;
|
||||
|
||||
ptr = row + bitoffset / 8;
|
||||
bandwidth = header->cupsBytesPerLine / 4;
|
||||
@@ -2638,18 +2351,10 @@ format_KCMYcm(cups_page_header_t *header,/* I - Page header */
|
||||
*dither; /* Pointer into dither array */
|
||||
|
||||
|
||||
switch (XPosition)
|
||||
{
|
||||
case -1 :
|
||||
bitoffset = 0;
|
||||
break;
|
||||
case 0 :
|
||||
bitoffset = header->cupsBitsPerPixel * ((header->cupsWidth - xsize) / 2);
|
||||
break;
|
||||
case 1 :
|
||||
bitoffset = header->cupsBitsPerPixel * (header->cupsWidth - xsize);
|
||||
break;
|
||||
}
|
||||
if (Orientation == 1 || Orientation == 2)
|
||||
bitoffset = header->cupsBitsPerPixel * (header->cupsWidth - xsize);
|
||||
else
|
||||
bitoffset = 0;
|
||||
|
||||
ptr = row + bitoffset / 8;
|
||||
if (header->cupsBitsPerColor == 1)
|
||||
@@ -2971,18 +2676,10 @@ format_RGBA(cups_page_header_t *header, /* I - Page header */
|
||||
*dither; /* Pointer into dither array */
|
||||
|
||||
|
||||
switch (XPosition)
|
||||
{
|
||||
case -1 :
|
||||
bitoffset = 0;
|
||||
break;
|
||||
case 0 :
|
||||
bitoffset = header->cupsBitsPerPixel * ((header->cupsWidth - xsize) / 2);
|
||||
break;
|
||||
case 1 :
|
||||
bitoffset = header->cupsBitsPerPixel * (header->cupsWidth - xsize);
|
||||
break;
|
||||
}
|
||||
if (Orientation == 1 || Orientation == 2)
|
||||
bitoffset = header->cupsBitsPerPixel * (header->cupsWidth - xsize);
|
||||
else
|
||||
bitoffset = 0;
|
||||
|
||||
ptr = row + bitoffset / 8;
|
||||
bandwidth = header->cupsBytesPerLine / 4;
|
||||
@@ -3370,18 +3067,10 @@ format_W(cups_page_header_t *header, /* I - Page header */
|
||||
*dither; /* Pointer into dither array */
|
||||
|
||||
|
||||
switch (XPosition)
|
||||
{
|
||||
case -1 :
|
||||
bitoffset = 0;
|
||||
break;
|
||||
case 0 :
|
||||
bitoffset = header->cupsBitsPerPixel * ((header->cupsWidth - xsize) / 2);
|
||||
break;
|
||||
case 1 :
|
||||
bitoffset = header->cupsBitsPerPixel * (header->cupsWidth - xsize);
|
||||
break;
|
||||
}
|
||||
if (Orientation == 1 || Orientation == 2)
|
||||
bitoffset = header->cupsBitsPerPixel * (header->cupsWidth - xsize);
|
||||
else
|
||||
bitoffset = 0;
|
||||
|
||||
ptr = row + bitoffset / 8;
|
||||
|
||||
@@ -3490,18 +3179,10 @@ format_YMC(cups_page_header_t *header, /* I - Page header */
|
||||
*dither; /* Pointer into dither array */
|
||||
|
||||
|
||||
switch (XPosition)
|
||||
{
|
||||
case -1 :
|
||||
bitoffset = 0;
|
||||
break;
|
||||
case 0 :
|
||||
bitoffset = header->cupsBitsPerPixel * ((header->cupsWidth - xsize) / 2);
|
||||
break;
|
||||
case 1 :
|
||||
bitoffset = header->cupsBitsPerPixel * (header->cupsWidth - xsize);
|
||||
break;
|
||||
}
|
||||
if (Orientation == 1 || Orientation == 2)
|
||||
bitoffset = header->cupsBitsPerPixel * (header->cupsWidth - xsize);
|
||||
else
|
||||
bitoffset = 0;
|
||||
|
||||
ptr = row + bitoffset / 8;
|
||||
bandwidth = header->cupsBytesPerLine / 3;
|
||||
@@ -3880,18 +3561,10 @@ format_YMCK(cups_page_header_t *header, /* I - Page header */
|
||||
*dither; /* Pointer into dither array */
|
||||
|
||||
|
||||
switch (XPosition)
|
||||
{
|
||||
case -1 :
|
||||
bitoffset = 0;
|
||||
break;
|
||||
case 0 :
|
||||
bitoffset = header->cupsBitsPerPixel * ((header->cupsWidth - xsize) / 2);
|
||||
break;
|
||||
case 1 :
|
||||
bitoffset = header->cupsBitsPerPixel * (header->cupsWidth - xsize);
|
||||
break;
|
||||
}
|
||||
if (Orientation == 1 || Orientation == 2)
|
||||
bitoffset = header->cupsBitsPerPixel * (header->cupsWidth - xsize);
|
||||
else
|
||||
bitoffset = 0;
|
||||
|
||||
ptr = row + bitoffset / 8;
|
||||
bandwidth = header->cupsBytesPerLine / 4;
|
||||
|
||||
+2
-44
@@ -101,13 +101,8 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
int page_count; /* Page count for NUp */
|
||||
int subpage; /* Sub-page number */
|
||||
int copy; /* Current copy */
|
||||
int saweof; /* Did we see a %%EOF tag? */
|
||||
|
||||
|
||||
/*
|
||||
* Check arguments...
|
||||
*/
|
||||
|
||||
if (argc < 6 || argc > 7)
|
||||
{
|
||||
fputs("ERROR: pstops job-id user title copies options [file]\n", stderr);
|
||||
@@ -230,17 +225,6 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
{
|
||||
fputs(ppd->jcl_begin, stdout);
|
||||
ppdEmit(ppd, stdout, PPD_ORDER_JCL);
|
||||
|
||||
if (strncmp(ppd->jcl_ps, "@PJL", 4) == 0)
|
||||
{
|
||||
/*
|
||||
* Send other PJL commands before we enter PostScript mode...
|
||||
*/
|
||||
|
||||
printf("@PJL JOB NAME = \"%s\" DISPLAY = \"%s %s %s\"\n", argv[3],
|
||||
argv[1], argv[2], argv[3]);
|
||||
}
|
||||
|
||||
fputs(ppd->jcl_ps, stdout);
|
||||
}
|
||||
|
||||
@@ -261,8 +245,6 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
|
||||
puts(line);
|
||||
|
||||
saweof = 0;
|
||||
|
||||
if (ppd != NULL && ppd->patches != NULL)
|
||||
puts(ppd->patches);
|
||||
|
||||
@@ -310,11 +292,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
tbytes = atoi(strchr(line, ':') + 1);
|
||||
while (tbytes > 0)
|
||||
{
|
||||
if (tbytes > sizeof(line))
|
||||
nbytes = fread(line, 1, sizeof(line), fp);
|
||||
else
|
||||
nbytes = fread(line, 1, tbytes, fp);
|
||||
|
||||
nbytes = fread(line, 1, sizeof(line), fp);
|
||||
fwrite(line, 1, nbytes, stdout);
|
||||
tbytes -= nbytes;
|
||||
}
|
||||
@@ -333,8 +311,6 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
level ++;
|
||||
else if (strcmp(line, "%%EndDocument") == 0 && level > 0)
|
||||
level --;
|
||||
else if (strcmp(line, "%%EOF") == 0 && level == 0)
|
||||
saweof = 1;
|
||||
else if (strncmp(line, "%%Page:", 7) == 0 && level == 0)
|
||||
{
|
||||
if (sscanf(line, "%*s%*s%d", &number) == 1)
|
||||
@@ -388,10 +364,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
tbytes = atoi(strchr(line, ':') + 1);
|
||||
while (tbytes > 0)
|
||||
{
|
||||
if (tbytes > sizeof(line))
|
||||
nbytes = fread(line, 1, sizeof(line), fp);
|
||||
else
|
||||
nbytes = fread(line, 1, tbytes, fp);
|
||||
nbytes = fread(line, 1, sizeof(line), fp);
|
||||
|
||||
if (!sloworder)
|
||||
fwrite(line, 1, nbytes, stdout);
|
||||
@@ -403,14 +376,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
}
|
||||
}
|
||||
else if (strcmp(line, "%%Trailer") == 0 && level == 0)
|
||||
{
|
||||
/*
|
||||
* Assume that a file with a %%Trailer will likely also have %%EOF...
|
||||
*/
|
||||
|
||||
saweof = 1;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!sloworder)
|
||||
@@ -558,18 +524,10 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
|
||||
rewind(temp);
|
||||
copy_bytes(temp, 0);
|
||||
Copies --;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Send %%EOF if needed...
|
||||
*/
|
||||
|
||||
if (!saweof)
|
||||
puts("%%EOF");
|
||||
|
||||
/*
|
||||
* End the job with the appropriate JCL command or CTRL-D otherwise.
|
||||
*/
|
||||
|
||||
+90
-449
@@ -46,16 +46,6 @@
|
||||
#include <fcntl.h>
|
||||
|
||||
|
||||
/*
|
||||
* Model numbers...
|
||||
*/
|
||||
|
||||
#define EPSON_9PIN 0
|
||||
#define EPSON_24PIN 1
|
||||
#define EPSON_COLOR 2
|
||||
#define EPSON_PHOTO 3
|
||||
|
||||
|
||||
/*
|
||||
* Macros...
|
||||
*/
|
||||
@@ -68,17 +58,9 @@
|
||||
*/
|
||||
|
||||
unsigned char *Planes[6], /* Output buffers */
|
||||
*CompBuffer, /* Compression buffer */
|
||||
*LineBuffers[2]; /* Line bitmap buffers */
|
||||
*CompBuffer; /* Compression buffer */
|
||||
int NumPlanes, /* Number of color planes */
|
||||
Feed; /* Number of lines to skip */
|
||||
int DotBit, /* Bit in buffers */
|
||||
DotBytes, /* # bytes in a dot column */
|
||||
DotColumns, /* # columns in 1/60 inch */
|
||||
LineCount, /* # of lines processed */
|
||||
EvenOffset, /* Offset into 'even' buffers */
|
||||
OddOffset, /* Offset into 'odd' buffers */
|
||||
Shingling; /* Shingle output? */
|
||||
|
||||
|
||||
/*
|
||||
@@ -86,14 +68,13 @@ int DotBit, /* Bit in buffers */
|
||||
*/
|
||||
|
||||
void Setup(void);
|
||||
void StartPage(const ppd_file_t *ppd, const cups_page_header_t *header);
|
||||
void EndPage(const cups_page_header_t *header);
|
||||
void StartPage(cups_page_header_t *header, ppd_file_t *ppd);
|
||||
void EndPage(cups_page_header_t *header);
|
||||
void Shutdown(void);
|
||||
|
||||
void CompressData(const unsigned char *line, int length, int plane,
|
||||
int type, int xstep, int ystep);
|
||||
void OutputLine(const cups_page_header_t *header);
|
||||
void OutputRows(const cups_page_header_t *header, int row);
|
||||
void CompressData(unsigned char *line, int length, int plane, int type,
|
||||
int xstep, int ystep);
|
||||
void OutputLine(cups_page_header_t *header);
|
||||
|
||||
|
||||
/*
|
||||
@@ -116,11 +97,11 @@ Setup(void)
|
||||
*/
|
||||
|
||||
void
|
||||
StartPage(const ppd_file_t *ppd, /* I - PPD file */
|
||||
const cups_page_header_t *header) /* I - Page header */
|
||||
StartPage(cups_page_header_t *header, /* I - Page header */
|
||||
ppd_file_t *ppd) /* I - PPD file */
|
||||
{
|
||||
int n, t; /* Numbers */
|
||||
int plane; /* Looping var */
|
||||
int n, t; /* Numbers */
|
||||
int plane; /* Looping var */
|
||||
|
||||
|
||||
/*
|
||||
@@ -130,105 +111,32 @@ StartPage(const ppd_file_t *ppd, /* I - PPD file */
|
||||
printf("\033@");
|
||||
|
||||
/*
|
||||
* See which type of printer we are using...
|
||||
* Set graphics mode...
|
||||
*/
|
||||
|
||||
switch (ppd->model_number)
|
||||
{
|
||||
case EPSON_9PIN :
|
||||
case EPSON_24PIN :
|
||||
printf("\033P"); /* Set 10 CPI */
|
||||
pwrite("\033(G\001\000\001", 6); /* Graphics mode */
|
||||
|
||||
if (header->HWResolution[0] == 360 || header->HWResolution[0] == 240)
|
||||
{
|
||||
printf("\033x1"); /* LQ printing */
|
||||
printf("\033U1"); /* Unidirectional */
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("\033x0"); /* Draft printing */
|
||||
printf("\033U0"); /* Bidirectional */
|
||||
}
|
||||
/*
|
||||
* Set the media size...
|
||||
*/
|
||||
|
||||
printf("\033l%c\033Q%c", 0, /* Side margins */
|
||||
(int)(10.0 * header->PageSize[0] / 72.0 + 0.5));
|
||||
printf("\033C%c%c", 0, /* Page length */
|
||||
(int)(header->PageSize[1] / 72.0 + 0.5));
|
||||
printf("\033N%c", 0); /* Bottom margin */
|
||||
pwrite("\033(U\001\000", 5); /* Resolution/units */
|
||||
putchar(3600 / header->HWResolution[1]);
|
||||
|
||||
/*
|
||||
* Setup various buffer limits...
|
||||
*/
|
||||
n = header->PageSize[1] * header->HWResolution[1] / 72.0;
|
||||
|
||||
DotBytes = header->cupsRowCount / 8;
|
||||
DotColumns = header->HWResolution[0] / 60;
|
||||
Shingling = 0;
|
||||
pwrite("\033(C\002\000", 5); /* Page length */
|
||||
putchar(n);
|
||||
putchar(n >> 8);
|
||||
|
||||
if (ppd->model_number == EPSON_9PIN)
|
||||
printf("\033\063\030"); /* Set line feed */
|
||||
else
|
||||
switch (header->HWResolution[0])
|
||||
{
|
||||
case 60:
|
||||
case 120 :
|
||||
printf("\033\063\030"); /* Set line feed */
|
||||
break;
|
||||
t = (ppd->sizes[1].length - ppd->sizes[1].top) *
|
||||
header->HWResolution[1] / 72.0;
|
||||
|
||||
case 180 :
|
||||
case 360 :
|
||||
Shingling = 1;
|
||||
|
||||
if (header->HWResolution[1] == 180)
|
||||
printf("\033\063\010");/* Set line feed */
|
||||
else
|
||||
printf("\033+\010"); /* Set line feed */
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case EPSON_COLOR :
|
||||
case EPSON_PHOTO :
|
||||
/*
|
||||
* Set graphics mode...
|
||||
*/
|
||||
|
||||
pwrite("\033(G\001\000\001", 6); /* Graphics mode */
|
||||
|
||||
/*
|
||||
* Set the media size...
|
||||
*/
|
||||
|
||||
pwrite("\033(U\001\000", 5); /* Resolution/units */
|
||||
putchar(3600 / header->HWResolution[1]);
|
||||
|
||||
n = header->PageSize[1] * header->HWResolution[1] / 72.0;
|
||||
|
||||
pwrite("\033(C\002\000", 5); /* Page length */
|
||||
putchar(n);
|
||||
putchar(n >> 8);
|
||||
|
||||
t = (ppd->sizes[1].length - ppd->sizes[1].top) *
|
||||
header->HWResolution[1] / 72.0;
|
||||
|
||||
pwrite("\033(c\004\000", 5); /* Top & bottom margins */
|
||||
putchar(t);
|
||||
putchar(t >> 8);
|
||||
putchar(n);
|
||||
putchar(n >> 8);
|
||||
|
||||
if (header->HWResolution[1] == 720)
|
||||
{
|
||||
pwrite("\033(i\001\000\001", 6); /* Microweave */
|
||||
pwrite("\033(e\002\000\000\001", 7); /* Small dots */
|
||||
}
|
||||
|
||||
pwrite("\033(V\002\000\000\000", 7); /* Set absolute position 0 */
|
||||
|
||||
DotBytes = 0;
|
||||
DotColumns = 0;
|
||||
Shingling = 0;
|
||||
break;
|
||||
}
|
||||
pwrite("\033(c\004\000", 5); /* Top & bottom margins */
|
||||
putchar(t);
|
||||
putchar(t >> 8);
|
||||
putchar(n);
|
||||
putchar(n >> 8);
|
||||
|
||||
/*
|
||||
* Set other stuff...
|
||||
@@ -243,28 +151,26 @@ StartPage(const ppd_file_t *ppd, /* I - PPD file */
|
||||
else
|
||||
NumPlanes = 1;
|
||||
|
||||
if (header->HWResolution[1] == 720)
|
||||
{
|
||||
pwrite("\033(i\001\000\001", 6); /* Microweave */
|
||||
pwrite("\033(e\002\000\000\001", 7);/* Small dots */
|
||||
}
|
||||
|
||||
pwrite("\033(V\002\000\000\000", 7); /* Set absolute position 0 */
|
||||
|
||||
Feed = 0; /* No blank lines yet */
|
||||
|
||||
/*
|
||||
* Allocate memory for a line/row of graphics...
|
||||
* Allocate memory for a line of graphics...
|
||||
*/
|
||||
|
||||
Planes[0] = malloc(header->cupsBytesPerLine);
|
||||
for (plane = 1; plane < NumPlanes; plane ++)
|
||||
Planes[plane] = Planes[0] + plane * header->cupsBytesPerLine / NumPlanes;
|
||||
|
||||
if (header->cupsCompression || DotBytes)
|
||||
CompBuffer = calloc(2, header->cupsWidth);
|
||||
|
||||
if (DotBytes)
|
||||
{
|
||||
LineBuffers[0] = calloc(DotBytes, header->cupsWidth * (Shingling + 1));
|
||||
LineBuffers[1] = LineBuffers[0] + DotBytes * header->cupsWidth;
|
||||
DotBit = 128;
|
||||
LineCount = 0;
|
||||
EvenOffset = 0;
|
||||
OddOffset = 0;
|
||||
}
|
||||
if (header->cupsCompression)
|
||||
CompBuffer = malloc(header->cupsBytesPerLine * 2);
|
||||
}
|
||||
|
||||
|
||||
@@ -273,33 +179,13 @@ StartPage(const ppd_file_t *ppd, /* I - PPD file */
|
||||
*/
|
||||
|
||||
void
|
||||
EndPage(const cups_page_header_t *header) /* I - Page header */
|
||||
EndPage(cups_page_header_t *header) /* I - Page header */
|
||||
{
|
||||
if (DotBytes)
|
||||
{
|
||||
/*
|
||||
* Flush remaining graphics as needed...
|
||||
*/
|
||||
|
||||
if (!Shingling)
|
||||
OutputRows(header, 0);
|
||||
else if (OddOffset > EvenOffset)
|
||||
{
|
||||
OutputRows(header, 1);
|
||||
OutputRows(header, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
OutputRows(header, 0);
|
||||
OutputRows(header, 1);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Eject the current page...
|
||||
*/
|
||||
|
||||
putchar(12); /* Form feed */
|
||||
putchar(12); /* Form feed */
|
||||
|
||||
/*
|
||||
* Free memory...
|
||||
@@ -307,11 +193,8 @@ EndPage(const cups_page_header_t *header) /* I - Page header */
|
||||
|
||||
free(Planes[0]);
|
||||
|
||||
if (header->cupsCompression || DotBytes)
|
||||
if (header->cupsCompression)
|
||||
free(CompBuffer);
|
||||
|
||||
if (DotBytes)
|
||||
free(LineBuffers[0]);
|
||||
}
|
||||
|
||||
|
||||
@@ -335,20 +218,20 @@ Shutdown(void)
|
||||
*/
|
||||
|
||||
void
|
||||
CompressData(const unsigned char *line, /* I - Data to compress */
|
||||
int length,/* I - Number of bytes */
|
||||
int plane, /* I - Color plane */
|
||||
int type, /* I - Type of compression */
|
||||
int xstep, /* I - X resolution */
|
||||
int ystep) /* I - Y resolution */
|
||||
CompressData(unsigned char *line, /* I - Data to compress */
|
||||
int length, /* I - Number of bytes */
|
||||
int plane, /* I - Color plane */
|
||||
int type, /* I - Type of compression */
|
||||
int xstep, /* I - X resolution */
|
||||
int ystep) /* I - Y resolution */
|
||||
{
|
||||
const unsigned char *line_ptr, /* Current byte pointer */
|
||||
*line_end, /* End-of-line byte pointer */
|
||||
*start; /* Start of compression sequence */
|
||||
unsigned char *comp_ptr, /* Pointer into compression buffer */
|
||||
temp; /* Current byte */
|
||||
int count; /* Count of bytes for output */
|
||||
static int ctable[6] = { 0, 2, 1, 4, 2, 1 };
|
||||
unsigned char *line_ptr, /* Current byte pointer */
|
||||
*line_end, /* End-of-line byte pointer */
|
||||
*comp_ptr, /* Pointer into compression buffer */
|
||||
*start, /* Start of compression sequence */
|
||||
temp; /* Current byte */
|
||||
int count; /* Count of bytes for output */
|
||||
static int ctable[6] = { 0, 2, 1, 4, 2, 1 };
|
||||
/* KCMYcm color values */
|
||||
|
||||
|
||||
@@ -365,7 +248,7 @@ CompressData(const unsigned char *line, /* I - Data to compress */
|
||||
|
||||
if (ystep == 5)
|
||||
{
|
||||
for (comp_ptr = (unsigned char *)line; comp_ptr < line_end;)
|
||||
for (comp_ptr = line; comp_ptr < line_end;)
|
||||
{
|
||||
/*
|
||||
* Grab the current byte...
|
||||
@@ -520,290 +403,48 @@ CompressData(const unsigned char *line, /* I - Data to compress */
|
||||
*/
|
||||
|
||||
void
|
||||
OutputLine(const cups_page_header_t *header) /* I - Page header */
|
||||
OutputLine(cups_page_header_t *header) /* I - Page header */
|
||||
{
|
||||
if (header->cupsRowCount)
|
||||
{
|
||||
int width;
|
||||
unsigned char *tempptr,
|
||||
*evenptr,
|
||||
*oddptr;
|
||||
register int x;
|
||||
unsigned char bit;
|
||||
const unsigned char *pixel;
|
||||
unsigned char *temp;
|
||||
|
||||
|
||||
/*
|
||||
* Collect bitmap data in the line buffers and write after each buffer.
|
||||
*/
|
||||
|
||||
for (x = header->cupsWidth, bit = 128, pixel = Planes[0],
|
||||
temp = CompBuffer;
|
||||
x > 0;
|
||||
x --, temp ++)
|
||||
{
|
||||
if (*pixel & bit)
|
||||
*temp |= DotBit;
|
||||
|
||||
if (bit > 1)
|
||||
bit >>= 1;
|
||||
else
|
||||
{
|
||||
bit = 128;
|
||||
pixel ++;
|
||||
}
|
||||
}
|
||||
|
||||
if (DotBit > 1)
|
||||
DotBit >>= 1;
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Copy the holding buffer to the output buffer, shingling as necessary...
|
||||
*/
|
||||
|
||||
if (Shingling && LineCount != 0)
|
||||
{
|
||||
/*
|
||||
* Shingle the output...
|
||||
*/
|
||||
|
||||
if (LineCount & 1)
|
||||
{
|
||||
evenptr = LineBuffers[1] + OddOffset;
|
||||
oddptr = LineBuffers[0] + EvenOffset + DotBytes;
|
||||
}
|
||||
else
|
||||
{
|
||||
evenptr = LineBuffers[0] + EvenOffset;
|
||||
oddptr = LineBuffers[1] + OddOffset + DotBytes;
|
||||
}
|
||||
|
||||
for (width = header->cupsWidth, tempptr = CompBuffer;
|
||||
width > 0;
|
||||
width -= 2, tempptr += 2, oddptr += DotBytes * 2,
|
||||
evenptr += DotBytes * 2)
|
||||
{
|
||||
evenptr[0] = tempptr[0];
|
||||
oddptr[0] = tempptr[1];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Don't shingle the output...
|
||||
*/
|
||||
|
||||
for (width = header->cupsWidth, tempptr = CompBuffer,
|
||||
evenptr = LineBuffers[0] + EvenOffset;
|
||||
width >= 0;
|
||||
width --, tempptr ++, evenptr += DotBytes)
|
||||
*evenptr = tempptr[0];
|
||||
}
|
||||
|
||||
if (Shingling && LineCount != 0)
|
||||
{
|
||||
EvenOffset ++;
|
||||
OddOffset ++;
|
||||
|
||||
if (EvenOffset == DotBytes)
|
||||
{
|
||||
EvenOffset = 0;
|
||||
OutputRows(header, 0);
|
||||
}
|
||||
|
||||
if (OddOffset == DotBytes)
|
||||
{
|
||||
OddOffset = 0;
|
||||
OutputRows(header, 1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
EvenOffset ++;
|
||||
|
||||
if (EvenOffset == DotBytes)
|
||||
{
|
||||
EvenOffset = 0;
|
||||
OutputRows(header, 0);
|
||||
}
|
||||
}
|
||||
|
||||
DotBit = 128;
|
||||
LineCount ++;
|
||||
|
||||
memset(CompBuffer, 0, header->cupsWidth);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int plane; /* Current plane */
|
||||
int bytes; /* Bytes per plane */
|
||||
int xstep, ystep; /* X & Y resolutions */
|
||||
|
||||
|
||||
/*
|
||||
* Write a single line of bitmap data as needed...
|
||||
*/
|
||||
|
||||
xstep = 3600 / header->HWResolution[0];
|
||||
ystep = 3600 / header->HWResolution[1];
|
||||
bytes = header->cupsBytesPerLine / NumPlanes;
|
||||
|
||||
for (plane = 0; plane < NumPlanes; plane ++)
|
||||
{
|
||||
/*
|
||||
* Skip blank data...
|
||||
*/
|
||||
|
||||
if (!Planes[plane][0] &&
|
||||
memcmp(Planes[plane], Planes[plane] + 1, bytes - 1) == 0)
|
||||
continue;
|
||||
|
||||
/*
|
||||
* Output whitespace as needed...
|
||||
*/
|
||||
|
||||
if (Feed > 0)
|
||||
{
|
||||
pwrite("\033(v\002\000", 5); /* Relative vertical position */
|
||||
putchar(Feed);
|
||||
putchar(Feed >> 8);
|
||||
|
||||
Feed = 0;
|
||||
}
|
||||
|
||||
CompressData(Planes[plane], bytes, plane, header->cupsCompression, xstep,
|
||||
ystep);
|
||||
}
|
||||
|
||||
Feed ++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'OutputRows()' - Output 8, 24, or 48 rows.
|
||||
*/
|
||||
|
||||
void
|
||||
OutputRows(const cups_page_header_t *header, /* I - Page image header */
|
||||
int row) /* I - Row number (0 or 1) */
|
||||
{
|
||||
unsigned i, n; /* Looping vars */
|
||||
int dot_count, /* Number of bytes to print */
|
||||
dot_min; /* Minimum number of bytes */
|
||||
unsigned char *dot_ptr; /* Pointer to print data */
|
||||
|
||||
|
||||
dot_min = DotBytes * DotColumns;
|
||||
|
||||
if (LineBuffers[row][0] != 0 ||
|
||||
memcmp(LineBuffers[row], LineBuffers[row] + 1,
|
||||
header->cupsWidth * DotBytes - 1))
|
||||
{
|
||||
/*
|
||||
* Skip leading space...
|
||||
*/
|
||||
|
||||
i = 0;
|
||||
dot_count = header->cupsWidth * DotBytes;
|
||||
dot_ptr = LineBuffers[row];
|
||||
|
||||
while (dot_count >= dot_min && dot_ptr[0] == 0 &&
|
||||
memcmp(dot_ptr, dot_ptr + 1, dot_min - 1) == 0)
|
||||
{
|
||||
i ++;
|
||||
dot_ptr += dot_min;
|
||||
dot_count -= dot_min;
|
||||
}
|
||||
|
||||
/*
|
||||
* Skip trailing space...
|
||||
*/
|
||||
|
||||
while (dot_count >= dot_min && dot_ptr[dot_count - dot_min] == 0 &&
|
||||
memcmp(dot_ptr + dot_count - dot_min,
|
||||
dot_ptr + dot_count - dot_min + 1, dot_min - 1) == 0)
|
||||
dot_count -= dot_min;
|
||||
|
||||
/*
|
||||
* Position print head for printing...
|
||||
*/
|
||||
|
||||
putchar(0x1b);
|
||||
putchar('$');
|
||||
putchar(i & 255);
|
||||
putchar(i >> 8);
|
||||
|
||||
/*
|
||||
* Start bitmap graphics for this line...
|
||||
*/
|
||||
|
||||
printf("\033*"); /* Select bit image */
|
||||
switch (header->HWResolution[0])
|
||||
{
|
||||
case 60 : /* 60x60/72 DPI gfx */
|
||||
putchar(0);
|
||||
break;
|
||||
case 120 : /* 120x60/72 DPI gfx */
|
||||
putchar(1);
|
||||
break;
|
||||
case 180 : /* 180 DPI gfx */
|
||||
putchar(39);
|
||||
break;
|
||||
case 240 : /* 240x72 DPI gfx */
|
||||
putchar(3);
|
||||
break;
|
||||
case 360 : /* 360x180/360 DPI gfx */
|
||||
if (header->HWResolution[1] == 180)
|
||||
{
|
||||
if (Shingling && LineCount != 0)
|
||||
putchar(40); /* 360x180 fast */
|
||||
else
|
||||
putchar(41); /* 360x180 slow */
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Shingling && LineCount != 0)
|
||||
putchar(72); /* 360x360 fast */
|
||||
else
|
||||
putchar(73); /* 360x360 slow */
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
n = (unsigned)dot_count / DotBytes;
|
||||
putchar(n & 255);
|
||||
putchar(n / 256);
|
||||
|
||||
/*
|
||||
* Write the graphics data...
|
||||
*/
|
||||
|
||||
pwrite(dot_ptr, dot_count);
|
||||
}
|
||||
int plane; /* Current plane */
|
||||
int bytes; /* Bytes per plane */
|
||||
int xstep, ystep; /* X & Y resolutions */
|
||||
|
||||
/*
|
||||
* Feed the paper...
|
||||
* Write bitmap data as needed...
|
||||
*/
|
||||
|
||||
putchar('\n');
|
||||
xstep = 3600 / header->HWResolution[0];
|
||||
ystep = 3600 / header->HWResolution[1];
|
||||
bytes = header->cupsBytesPerLine / NumPlanes;
|
||||
|
||||
if (Shingling && row == 1)
|
||||
for (plane = 0; plane < NumPlanes; plane ++)
|
||||
{
|
||||
if (header->HWResolution[1] == 360)
|
||||
printf("\n\n\n\n");
|
||||
else
|
||||
printf("\n");
|
||||
/*
|
||||
* Skip blank data...
|
||||
*/
|
||||
|
||||
if (!Planes[plane][0] &&
|
||||
memcmp(Planes[plane], Planes[plane] + 1, bytes - 1) == 0)
|
||||
continue;
|
||||
|
||||
/*
|
||||
* Output whitespace as needed...
|
||||
*/
|
||||
|
||||
if (Feed > 0)
|
||||
{
|
||||
pwrite("\033(v\002\000", 5); /* Relative vertical position */
|
||||
putchar(Feed);
|
||||
putchar(Feed >> 8);
|
||||
|
||||
Feed = 0;
|
||||
}
|
||||
|
||||
CompressData(Planes[plane], bytes, plane, header->cupsCompression, xstep,
|
||||
ystep);
|
||||
}
|
||||
|
||||
/*
|
||||
* Clear the buffer...
|
||||
*/
|
||||
|
||||
memset(LineBuffers[row], 0, header->cupsWidth * DotBytes);
|
||||
Feed ++;
|
||||
}
|
||||
|
||||
|
||||
@@ -884,7 +525,7 @@ main(int argc, /* I - Number of command-line arguments */
|
||||
* Start the page...
|
||||
*/
|
||||
|
||||
StartPage(ppd, &header);
|
||||
StartPage(&header, ppd);
|
||||
|
||||
/*
|
||||
* Loop for each line on the page...
|
||||
|
||||
+7
-70
@@ -99,94 +99,31 @@ StartPage(cups_page_header_t *header) /* I - Page header */
|
||||
*/
|
||||
|
||||
printf("\033&l6D\033&k12H"); /* Set 6 LPI, 10 CPI */
|
||||
|
||||
switch (header->PageSize[1])
|
||||
{
|
||||
case 540 : /* Monarch Envelope */
|
||||
printf("\033&l80A"); /* Set page size */
|
||||
break;
|
||||
|
||||
case 624 : /* DL Envelope */
|
||||
printf("\033&l90A"); /* Set page size */
|
||||
break;
|
||||
|
||||
case 649 : /* C5 Envelope */
|
||||
printf("\033&l91A"); /* Set page size */
|
||||
break;
|
||||
|
||||
case 684 : /* COM-10 Envelope */
|
||||
printf("\033&l81A"); /* Set page size */
|
||||
break;
|
||||
|
||||
case 709 : /* B5 Envelope */
|
||||
printf("\033&l100A"); /* Set page size */
|
||||
break;
|
||||
|
||||
case 756 : /* Executive */
|
||||
printf("\033&l1A"); /* Set page size */
|
||||
break;
|
||||
|
||||
case 792 : /* Letter */
|
||||
printf("\033&l2A"); /* Set page size */
|
||||
break;
|
||||
|
||||
case 842 : /* A4 */
|
||||
printf("\033&l26A"); /* Set page size */
|
||||
break;
|
||||
|
||||
case 1008 : /* Legal */
|
||||
printf("\033&l3A"); /* Set page size */
|
||||
break;
|
||||
|
||||
case 1191 : /* A3 */
|
||||
printf("\033&l27A"); /* Set page size */
|
||||
break;
|
||||
|
||||
case 1224 : /* Tabloid */
|
||||
printf("\033&l6A"); /* Set page size */
|
||||
break;
|
||||
}
|
||||
|
||||
printf("\033&l%dP", header->PageSize[1] / 12);/* Set page length */
|
||||
printf("\033&l0E"); /* Set top margin to 0 */
|
||||
|
||||
printf("\033&l%.2fP", /* Set page length */
|
||||
header->PageSize[1] / 12.0);
|
||||
printf("\033&l%dX", header->NumCopies); /* Set number copies */
|
||||
|
||||
if (header->MediaPosition)
|
||||
printf("\033&l%dH", header->MediaPosition); /* Set media position */
|
||||
|
||||
if (header->cupsMediaType)
|
||||
printf("\033&l%dM", /* Set media type */
|
||||
header->cupsMediaType);
|
||||
|
||||
if (header->Duplex)
|
||||
printf("\033&l%dS", /* Set duplex mode */
|
||||
header->Duplex + header->Tumble);
|
||||
|
||||
printf("\033&l0L"); /* Turn off perforation skip */
|
||||
|
||||
/*
|
||||
* Set graphics mode...
|
||||
*/
|
||||
|
||||
printf("\033*t%dR", header->HWResolution[0]); /* Set resolution */
|
||||
printf("\033*r%dS", header->cupsWidth); /* Set width */
|
||||
printf("\033*r%dT", header->cupsHeight); /* Set height */
|
||||
|
||||
if (header->cupsColorSpace == CUPS_CSPACE_KCMY)
|
||||
{
|
||||
NumPlanes = 4;
|
||||
printf("\033*r-4U"); /* Set KCMY graphics */
|
||||
}
|
||||
else if (header->cupsColorSpace == CUPS_CSPACE_CMY)
|
||||
{
|
||||
NumPlanes = 3;
|
||||
printf("\033*r-3U"); /* Set CMY graphics */
|
||||
}
|
||||
else
|
||||
NumPlanes = 1; /* Black&white graphics */
|
||||
NumPlanes = 1;
|
||||
|
||||
printf("\033&a0H\033&a330V"); /* Set top-of-page */
|
||||
printf("\033*t%dR", header->HWResolution[0]); /* Set resolution */
|
||||
printf("\033*r%dS", header->cupsWidth); /* Set width */
|
||||
printf("\033*r%dT", header->cupsHeight); /* Set height */
|
||||
printf("\033&a0H\033&a0V"); /* Set top-of-page */
|
||||
printf("\033*r1A"); /* Start graphics */
|
||||
|
||||
if (header->cupsCompression)
|
||||
|
||||
@@ -204,7 +204,8 @@ TextMain(char *name, /* I - Name of filter */
|
||||
LinesPerInch = 8;
|
||||
}
|
||||
|
||||
ppd = SetCommonOptions(num_options, options, 1);
|
||||
if ((ppd = SetCommonOptions(num_options, options, 1)) != NULL)
|
||||
ppdClose(ppd);
|
||||
|
||||
WrapLines = cupsGetOption("nowrap", num_options, options) == NULL;
|
||||
|
||||
@@ -649,9 +650,6 @@ TextMain(char *name, /* I - Name of filter */
|
||||
|
||||
WriteEpilogue();
|
||||
|
||||
if (ppd != NULL)
|
||||
ppdClose(ppd);
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
+6
-75
@@ -129,7 +129,6 @@ WriteProlog(char *title, /* I - Title of job */
|
||||
char *charset; /* Character set string */
|
||||
char filename[1024]; /* Glyph filenames */
|
||||
FILE *fp; /* Glyph files */
|
||||
const char *datadir; /* CUPS_DATADIR environment variable */
|
||||
char line[1024], /* Line from file */
|
||||
*lineptr, /* Pointer into line */
|
||||
*valptr; /* Pointer to value in line */
|
||||
@@ -149,13 +148,6 @@ WriteProlog(char *title, /* I - Title of job */
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Get the data directory...
|
||||
*/
|
||||
|
||||
if ((datadir = getenv("CUPS_DATADIR")) == NULL)
|
||||
datadir = CUPS_DATADIR;
|
||||
|
||||
/*
|
||||
* Allocate memory for the page...
|
||||
*/
|
||||
@@ -194,6 +186,7 @@ WriteProlog(char *title, /* I - Title of job */
|
||||
printf("%%%%CreationDate: %s\n", curdate);
|
||||
printf("%%%%Title: %s\n", title);
|
||||
printf("%%%%For: %s\n", user);
|
||||
puts("%%DocumentSuppliedResources: procset texttops 1.1 0");
|
||||
puts("%%Pages: (atend)");
|
||||
|
||||
/*
|
||||
@@ -211,9 +204,7 @@ WriteProlog(char *title, /* I - Title of job */
|
||||
* set definition...
|
||||
*/
|
||||
|
||||
snprintf(filename, sizeof(filename), "%s/data/psglyphs", datadir);
|
||||
|
||||
if ((fp = fopen(filename, "r")) != NULL)
|
||||
if ((fp = fopen(CUPS_DATADIR "/data/psglyphs", "r")) != NULL)
|
||||
{
|
||||
while (fscanf(fp, "%x%63s", &unicode, glyph) == 2)
|
||||
Glyphs[unicode] = strdup(glyph);
|
||||
@@ -222,8 +213,7 @@ WriteProlog(char *title, /* I - Title of job */
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "ERROR: Unable to open \"%s\" - %s\n", filename,
|
||||
strerror(errno));
|
||||
perror("ERROR: Unable to open " CUPS_DATADIR "/data/psglyphs");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -234,7 +224,7 @@ WriteProlog(char *title, /* I - Title of job */
|
||||
charset = getenv("CHARSET");
|
||||
if (charset != NULL && strcmp(charset, "us-ascii") != 0)
|
||||
{
|
||||
snprintf(filename, sizeof(filename), "%s/charsets/%s", datadir, charset);
|
||||
snprintf(filename, sizeof(filename), CUPS_DATADIR "/charsets/%s", charset);
|
||||
|
||||
if ((fp = fopen(filename, "r")) == NULL)
|
||||
{
|
||||
@@ -660,73 +650,14 @@ WriteProlog(char *title, /* I - Title of job */
|
||||
|
||||
for (i = 0; i < num_fonts; i ++)
|
||||
if (i == 0)
|
||||
printf("%%%%DocumentNeededResources: font %s\n", fonts[i]);
|
||||
printf("%%DocumentNeededResources: font %s\n", fonts[i]);
|
||||
else
|
||||
printf("%%%%+ font %s\n", fonts[i]);
|
||||
|
||||
puts("%%DocumentSuppliedResources: procset texttops 1.1 0");
|
||||
|
||||
for (i = 0; i < num_fonts; i ++)
|
||||
{
|
||||
if (ppd != NULL)
|
||||
{
|
||||
fprintf(stderr, "DEBUG: ppd->num_fonts = %d\n", ppd->num_fonts);
|
||||
|
||||
for (j = 0; j < ppd->num_fonts; j ++)
|
||||
{
|
||||
fprintf(stderr, "DEBUG: ppd->fonts[%d] = %s\n", j, ppd->fonts[j]);
|
||||
|
||||
if (strcmp(fonts[i], ppd->fonts[j]) == 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (ppd == NULL || j >= ppd->num_fonts)
|
||||
{
|
||||
/*
|
||||
* Need to embed this font...
|
||||
*/
|
||||
|
||||
printf("%%%%+ font %s\n", fonts[i]);
|
||||
}
|
||||
}
|
||||
printf("%%+ font %s\n", fonts[i]);
|
||||
|
||||
puts("%%EndComments");
|
||||
|
||||
puts("%%BeginProlog");
|
||||
|
||||
/*
|
||||
* Download any missing fonts...
|
||||
*/
|
||||
|
||||
for (i = 0; i < num_fonts; i ++)
|
||||
{
|
||||
if (ppd != NULL)
|
||||
for (j = 0; j < ppd->num_fonts; j ++)
|
||||
if (strcmp(fonts[i], ppd->fonts[j]) == 0)
|
||||
break;
|
||||
|
||||
if (ppd == NULL || j >= ppd->num_fonts)
|
||||
{
|
||||
/*
|
||||
* Need to embed this font...
|
||||
*/
|
||||
|
||||
printf("%%%%BeginResource: font %s\n", fonts[i]);
|
||||
|
||||
snprintf(filename, sizeof(filename), "%s/fonts/%s", datadir, fonts[i]);
|
||||
if ((fp = fopen(filename, "rb")) != NULL)
|
||||
{
|
||||
while (fgets(line, sizeof(line), fp) != NULL)
|
||||
fputs(line, stdout);
|
||||
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
puts("%%EndResource");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Write the encoding array(s)...
|
||||
*/
|
||||
|
||||
@@ -65,8 +65,6 @@ clean:
|
||||
|
||||
install:
|
||||
-$(MKDIR) $(DATADIR)/fonts
|
||||
$(CHMOD) ugo+rx $(DATADIR)
|
||||
$(CHMOD) ugo+rx $(DATADIR)/fonts
|
||||
$(INSTALL_DATA) $(FONTS) $(DATADIR)/fonts
|
||||
|
||||
|
||||
|
||||
+1
-3
@@ -50,12 +50,10 @@ clean:
|
||||
#
|
||||
|
||||
install:
|
||||
-$(MKDIR) $(LOCALEDIR)
|
||||
$(CHMOD) ugo+rx $(LOCALEDIR)
|
||||
-$(MKDIR) $(LIBDIR)/locale
|
||||
for dir in $(LOCALES) ; do \
|
||||
if test ! -d $(LOCALEDIR)/$$dir ; then \
|
||||
$(MKDIR) $(LOCALEDIR)/$$dir ; \
|
||||
$(CHMOD) ugo+rx $(LOCALEDIR)/$$dir ; \
|
||||
fi ; \
|
||||
$(INSTALL_DATA) $$dir/cups_$$dir $(LOCALEDIR)/$$dir ; \
|
||||
done
|
||||
|
||||
+39
-23
@@ -28,16 +28,15 @@ include ../Makedefs
|
||||
# Man pages...
|
||||
#
|
||||
|
||||
MAN1 = backend.man filter.man lp.man lpoptions.man lpq.man lprm.man \
|
||||
lpr.man lpstat.man
|
||||
MAN5 = classes.conf.man cupsd.conf.man mime.convs.man mime.types.man \
|
||||
printers.conf.man
|
||||
MAN8 = accept.man cups-lpd.man cups-polld.man cupsd.man enable.man \
|
||||
lpadmin.man lpinfo.man lpmove.man lpc.man
|
||||
CAT1 = backend.1 filter.1 lp.1 lpoptions.1 lpq.1 lprm.1 lpr.1 lpstat.1
|
||||
CAT5 = classes.conf.5 cupsd.conf.5 mime.convs.5 mime.types.5 \
|
||||
printers.conf.5
|
||||
CAT8 = accept.8 cups-lpd.8 cups-polld.8 cupsd.8 enable.8 \
|
||||
lpadmin.8 lpinfo.8 lpmove.8 lpc.8
|
||||
|
||||
CAT1 = $(MAN1:.man=.$(CAT1EXT))
|
||||
CAT5 = $(MAN5:.man=.$(CAT1EXT))
|
||||
CAT8 = $(MAN8:.man=.$(CAT1EXT))
|
||||
MAN1 = $(CAT1:.1=.man)
|
||||
MAN5 = $(CAT5:.5=.man)
|
||||
MAN8 = $(CAT8:.8=.man)
|
||||
|
||||
|
||||
#
|
||||
@@ -58,22 +57,20 @@ clean:
|
||||
# Install files...
|
||||
#
|
||||
|
||||
install:
|
||||
install: install-man $(INSTALL_CAT)
|
||||
|
||||
install-man:
|
||||
-$(MKDIR) $(MANDIR)/man1
|
||||
-$(CHMOD) ugo+rx $(MANDIR)
|
||||
-$(CHMOD) ugo+rx $(MANDIR)/man1
|
||||
for file in $(MAN1); do \
|
||||
$(INSTALL_MAN) $$file $(MANDIR)/man1/`basename $$file man`1; \
|
||||
done
|
||||
$(RM) $(MANDIR)/man1/cancel.1
|
||||
$(LN) lp.1 $(MANDIR)/man1/cancel.1
|
||||
-$(MKDIR) $(MANDIR)/man5
|
||||
-$(CHMOD) ugo+rx $(MANDIR)/man5
|
||||
for file in $(MAN5); do \
|
||||
$(INSTALL_MAN) $$file $(MANDIR)/man5/`basename $$file man`5; \
|
||||
done
|
||||
-$(MKDIR) $(MANDIR)/man8
|
||||
-$(CHMOD) ugo+rx $(MANDIR)/man8
|
||||
for file in $(MAN8); do \
|
||||
$(INSTALL_MAN) $$file $(MANDIR)/man8/`basename $$file man`8; \
|
||||
done
|
||||
@@ -81,21 +78,40 @@ install:
|
||||
$(LN) accept.8 $(MANDIR)/man8/reject.8
|
||||
$(RM) $(MANDIR)/man8/disable.8
|
||||
$(LN) enable.8 $(MANDIR)/man8/disable.8
|
||||
|
||||
install-cat:
|
||||
-$(MKDIR) $(MANDIR)/cat1
|
||||
-$(CHMOD) ugo+rx $(MANDIR)/cat1
|
||||
$(INSTALL_MAN) $(CAT1) $(MANDIR)/cat1
|
||||
$(RM) $(MANDIR)/cat1/cancel.$(CAT1EXT)
|
||||
$(LN) lp.$(CAT1EXT) $(MANDIR)/cat1/cancel.$(CAT1EXT)
|
||||
$(RM) $(MANDIR)/cat1/cancel.1
|
||||
$(LN) lp.1 $(MANDIR)/cat1/cancel.1
|
||||
-$(MKDIR) $(MANDIR)/cat5
|
||||
-$(CHMOD) ugo+rx $(MANDIR)/cat5
|
||||
$(INSTALL_MAN) $(CAT5) $(MANDIR)/cat5
|
||||
-$(MKDIR) $(MANDIR)/cat8
|
||||
-$(CHMOD) ugo+rx $(MANDIR)/cat8
|
||||
$(INSTALL_MAN) $(CAT8) $(MANDIR)/cat8
|
||||
$(RM) $(MANDIR)/cat8/reject.$(CAT1EXT)
|
||||
$(LN) accept.$(CAT1EXT) $(MANDIR)/cat8/reject.$(CAT1EXT)
|
||||
$(RM) $(MANDIR)/cat8/disable.$(CAT1EXT)
|
||||
$(LN) enable.$(CAT1EXT) $(MANDIR)/cat8/disable.$(CAT1EXT)
|
||||
$(RM) $(MANDIR)/cat8/reject.8
|
||||
$(LN) accept.8 $(MANDIR)/cat8/reject.8
|
||||
$(RM) $(MANDIR)/cat8/disable.8
|
||||
$(LN) enable.8 $(MANDIR)/cat8/disable.8
|
||||
|
||||
install-bsdcat:
|
||||
-$(MKDIR) $(MANDIR)/cat1
|
||||
for file in $(CAT1); do \
|
||||
$(INSTALL_MAN) $$file $(MANDIR)/cat1/`basename $$file 1`0; \
|
||||
done
|
||||
$(RM) $(MANDIR)/cat1/cancel.0
|
||||
$(LN) lp.0 $(MANDIR)/cat1/cancel.0
|
||||
-$(MKDIR) $(MANDIR)/cat5
|
||||
for file in $(CAT5); do \
|
||||
$(INSTALL_MAN) $$file $(MANDIR)/cat5/`basename $$file 5`0; \
|
||||
done
|
||||
-$(MKDIR) $(MANDIR)/cat8
|
||||
for file in $(CAT8); do \
|
||||
$(INSTALL_MAN) $$file $(MANDIR)/cat8/`basename $$file 8`0; \
|
||||
done
|
||||
$(RM) $(MANDIR)/cat8/reject.0
|
||||
$(LN) accept.0 $(MANDIR)/cat8/reject.0
|
||||
$(RM) $(MANDIR)/cat8/disable.0
|
||||
$(LN) enable.0 $(MANDIR)/cat8/disable.0
|
||||
|
||||
|
||||
#
|
||||
|
||||
Alguns arquivos não foram exibidos porque demasiados arquivos foram alterados neste diff Mostrar Mais
Referência em uma Nova Issue
Bloquear um usuário