Comparar commits

..

1 Commits

Autor SHA1 Mensagem Data
msweet 8047cace9b Import cups.org releases
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/tags/release-1.1b4@4306 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-10 18:56:23 +00:00
315 arquivos alterados com 27525 adições e 127705 exclusões
+22 -387
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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.
-2
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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);
-2
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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);
-2
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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 *);
-1
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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 $".
#
+8 -2
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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 $".
#
+2 -4
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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 $".
#
-3
Ver Arquivo
@@ -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
Ver Arquivo
@@ -46,7 +46,7 @@ extern "C" {
* Constants...
*/
# define CUPS_VERSION 1.0100
# define CUPS_VERSION 1.0
# define CUPS_DATE_ANY -1
+5 -15
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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;
-18
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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 --;
-2
Ver Arquivo
@@ -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);
-4
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
(&quot;CUPS&quot;) Version 1.1 software.
<H2><A NAME="1_2">1.2 System Overview</A></H2>
<P>CUPS provides a portable printing layer for UNIX&reg;-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&reg; 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 (&quot;IPP&quot;) as the basis for
managing print jobs and queues. The Line Printer Daemon (&quot;LPD&quot;) Server
Message Block (&quot;SMB&quot;), and AppSocket (a.k.a. JetDirect) protocols are
also supported with reduced functionality. CUPS adds network printer
browsing and PostScript Printer Description (&quot;PPD&quot;) 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 (&quot;PPD&quot;)-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 (&quot;scheduler&quot;, &quot;cups&quot;, etc.) To remain
compatible with older UNIX filesystems, directory names shall not
exceed 16 characters in length.
software sub-system it belongs to (&quot;scheduler&quot;, &quot;libcups&quot;, 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 &quot;$Id$&quot; tag:
<UL>
<PRE>
/*
* &quot;$Id$&quot;
* &quot;36;Id$&quot;
*
* Description of file contents.
*
@@ -410,7 +408,7 @@ that code has been lost near the end of the file:
<UL>
<PRE>
/*
* End of &quot;$Id$&quot;.
* End of &quot;36;Id$&quot;.
*/
</PRE>
</UL>
@@ -659,19 +657,19 @@ for (i = sizeof(array) / sizeof(array[0]) - 1; i &gt;= 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
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+2 -2
Ver Arquivo
@@ -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.
-4
Ver Arquivo
@@ -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> )
BIN
Ver Arquivo
Arquivo binário não exibido.
+4 -1
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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 (&quot;CUPS&quot;) Version 1.1. </P>
<H2><A NAME="1_2">1.2 System Overview</A></H2>
<P>CUPS provides a portable printing layer for UNIX&reg;-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 (&quot;IPP&quot;) as the basis for
managing print jobs and queues. The Line Printer Daemon (&quot;LPD&quot;) Server
Message Block (&quot;SMB&quot;), and AppSocket (a.k.a. JetDirect) protocols are
also supported with reduced functionality. CUPS adds network printer
browsing and PostScript Printer Description (&quot;PPD&quot;) 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 &quot;cups_&quot; to the front of the language specifier (e.g. &quot;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
(&quot;super/type&quot;) 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 &quot;@server&quot; 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 &quot;On&quot; or &quot;Off&quot;.</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>&lt;Printer name&gt;
<BR> &lt;/Printer&gt;</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 (&quot;RaSt&quot;) for big-endian architectures and 0x74536152
(&quot;tSaR&quot;) 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 &quot;smb&quot;. 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 &quot;smb&quot;. </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
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+21 -33
Ver Arquivo
@@ -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>&lt;Printer name&gt;<BR>
&lt;/Printer&gt;</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
Ver Arquivo
@@ -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 &quot;HH:MM&quot; and &quot;HH:MM:SS&quot; 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 &quot;none&quot; 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 &quot;all&quot;, &quot;even&quot;, and &quot;odd&quot;. The default value is
&quot;all&quot;. </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
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
-43
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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>&reg;</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>&reg;</SUP>, Sun<SUP>&reg;</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&amp;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&amp;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>&reg;</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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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> (&quot;CUPS<SUP>
TM</SUP>&quot;), version 1.1.1. </P>
TM</SUP>&quot;), version 1.1. </P>
<H2><A NAME="1_1">System Overview</A></H2>
<P>CUPS provides a portable printing layer for UNIX&reg;-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>&nbsp;&nbsp;&nbsp;</TD><TH>Description</TH></TR>
<TR><TD>&nbsp;</TD></TR>
<TR VALIGN="TOP"><TD><CODE>lpstat</CODE>
<BR><CODE> lpstat(1)</CODE></TD><TD>&nbsp;&nbsp;&nbsp;</TD><TD>The names of commands;
<BR><CODE>lpstat(1)</CODE></TD><TD>&nbsp;&nbsp;&nbsp;</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>&nbsp;</TD></TR>
<TR VALIGN="TOP"><TD><VAR>/var</VAR>
<BR><VAR> /usr/share/cups/data/testprint.ps</VAR></TD><TD>&nbsp;&nbsp;&nbsp;</TD><TD>
<BR><VAR>/usr/share/cups/data/testprint.ps</VAR></TD><TD>&nbsp;&nbsp;&nbsp;</TD><TD>
File and directory names.</TD></TR>
<TR><TD>&nbsp;</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 &quot;-I/some/directory&quot; ENTER</B>
<B>setenv CXXFLAGS &quot;-I/some/directory&quot; ENTER</B>
<B>setenv LDFLAGS &quot;-L/some/directory&quot; ENTER</B>
<B>./configure ... ENTER</B>
</PRE>
</UL>
<P>or: </P>
<UL>
<PRE>
<B>CFLAGS=&quot;-I/some/directory&quot;; export CFLAGS ENTER</B>
<B>CXXFLAGS=&quot;-I/some/directory&quot;; export CXXFLAGS ENTER</B>
<B>LDFLAGS=&quot;-L/some/directory&quot;; export LDFLAGS ENTER</B>
<B>setenv CFLAGS &quot;-I/some/directory&quot;</B>
<B>setenv LDFLAGS &quot;-L/some/directory&quot;</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, &quot;Printer Drivers&quot;</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&quot;. </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. &quot;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 &quot;localhost&quot;. 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>&nbsp;
<!-- NEED 1in ---->
@@ -987,7 +970,6 @@ Interface.
<BR>&nbsp; </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 (&quot;#&quot;) 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"> &nbsp;&nbsp;&nbsp; </TD><TD VALIGN="TOP">
<LI><A HREF="#DefaultCharset"><CODE>DefaultCharset</CODE></A></LI>
</TD><TD VALIGN="TOP"> &nbsp;&nbsp;&nbsp; </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"> &nbsp;&nbsp;&nbsp; </TD><TD VALIGN="TOP">
<LI><A HREF="#Order"><CODE>Order</CODE></A></LI>
</TD><TD VALIGN="TOP"> &nbsp;&nbsp;&nbsp; </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 &quot;common log format&quot; 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 &quot;syslog&quot; 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 &quot;sys&quot; 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 (&quot;printer&quot;). If more
than one remote printer is detected with the same name, the printers
will have long names (&quot;printer@server1&quot;, &quot;printer@server2&quot;.) </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 &quot;syslog&quot; 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 &quot;syslog&quot; 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 &quot;Common Log Format&quot; 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 &quot;-&quot;. </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 (&quot;GET&quot;, &quot;PUT&quot;,
&quot;POST&quot;, 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 &quot;unauthorized access&quot; 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,&lt;FFD8FF&gt;) &amp;&amp;\
file starting with the hexadecimal string <CODE>&lt;FFD8FF&gt;</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">&quot;Restarting the CUPS Server&quot;</A>
. </P>
<H3><A NAME="7_7_4">Printer Drivers and PPD Files</A></H3>
described in <A HREF="#PRINTING_MANAGEMENT">Chapter N, &quot;Printing System
Configuration&quot;</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>, (&quot;CUPS<SUP>TM</SUP>&quot;),
<P>The Common UNIX Printing System<SUP>TM</SUP>, or CUPS<SUP>TM</SUP>,
is provided under the GNU General Public License (&quot;GPL&quot;) and GNU
Library General Public License (&quot;LGPL&quot;), Version 2. A copy of these
licenses follow this introduction. </P>
<P>The GNU LGPL applies to the CUPS API library, located in the &quot;cups&quot;
subdirectory of the CUPS source distribution and in the
&quot;/usr/include/cups&quot; directory and &quot;libcups.a&quot;, &quot;libcups.sl&quot;, or
&quot;libcups.so&quot; files in the binary distributions. </P>
&quot;/usr/include/cups&quot; directory and &quot;/usr/lib/libcups.so&quot; or
&quot;/usr/lib32/libcups.so&quot; files in the binary distributions. </P>
<P>The GNU GPL applies to the remainder of the CUPS distribution,
including the &quot;pstoraster&quot; filter which is based upon GNU Ghostscript
5.50 and the &quot;pdftops&quot; 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 &quot;link-to&quot; 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 &quot;pstoraster&quot; 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 &quot;pdftops&quot; 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 (&quot;ARP&quot;) 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 (&quot;ARP&quot;) 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&reg; Fiery&reg; RIP</TD><TD>lpd://<I>
<TR ALIGN="LEFT" VALIGN="TOP"><TD>EFI&reg; Fiery RIP</TD><TD>lpd://<I>
address</I>/print</TD></TR>
<TR ALIGN="LEFT" VALIGN="TOP"><TD>EPSON&reg; 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&reg;
<BR><A HREF="#LINKSYS"> (see directions)</A></TD><TD>socket://<I>address</I>
:4010
<TR ALIGN="LEFT" VALIGN="TOP"><TD>Linksys EtherFast&reg;</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&reg;</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&reg; PhaserShare<SUP>TM</SUP></TD><TD>
socket://<I>address</I>:9100</TD></TR>
<TR ALIGN="LEFT" VALIGN="TOP"><TD>XEROX&reg; 4512 NIC</TD><TD>lpd://<I>
address</I>/PORT1</TD></TR>
<TR ALIGN="LEFT" VALIGN="TOP"><TD>XEROX&reg; XNIC</TD><TD>lpd://<I>address</I>
/PASSTHRU</TD></TR>
<TR ALIGN="LEFT" VALIGN="TOP"><TD>XEROX&reg; (most others)</TD><TD>socket://<I>
address</I>:5503</TD></TR>
<TR ALIGN="LEFT" VALIGN="TOP"><TD>XEROX&reg;</TD><TD>socket://<I>address</I>
:5503</TD></TR>
</TABLE>
</CENTER>
</P>
@@ -3868,77 +3792,6 @@ ftp&gt; <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&gt; <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&gt; <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&gt; <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&gt; <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 (&quot;PPD&quot;) 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 (&quot;PPD&quot;) 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, &quot;Printing System
Management&quot;</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, &quot;Printing System
Management&quot;</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,
&quot;Printing System Management&quot;</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">
&quot;I Can't Do Administration Tasks from Another Machine!&quot;</A> section
earlier in this appendix. </LI>
+2584 -2743
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+58 -209
Ver Arquivo
@@ -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&reg; Fiery&reg; RIP</TD>
<TD>EFI&reg; 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&reg;<BR>
<A HREF="#LINKSYS">(see directions)</A></TD>
<TD>Linksys EtherFast&reg;</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&reg; 4512 NIC</TD>
<TD>lpd://<I>address</I>/PORT1</TD>
</TR>
<TR ALIGN="LEFT" VALIGN="TOP">
<TD>XEROX&reg; XNIC</TD>
<TD>lpd://<I>address</I>/PASSTHRU</TD>
</TR>
<TR ALIGN="LEFT" VALIGN="TOP">
<TD>XEROX&reg; (most others)</TD>
<TD>XEROX&reg;</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
Ver Arquivo
@@ -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
(&quot;CUPS&quot;) Version 1.1.
This software design description document provides detailed
information on the architecture and coding of the Common UNIX Printing
System (&quot;CUPS&quot;) Version 1.1.
<H2><A NAME="1_2">1.2 System Overview</A></H2>
<P>CUPS provides a portable printing layer for UNIX&reg;-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&reg; 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 (&quot;IPP&quot;) as the basis for
managing print jobs and queues. The Line Printer Daemon (&quot;LPD&quot;) Server
Message Block (&quot;SMB&quot;), and AppSocket (a.k.a. JetDirect) protocols are
also supported with reduced functionality. CUPS adds network printer
browsing and PostScript Printer Description (&quot;PPD&quot;) 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 (&quot;PPD&quot;)-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
&quot;ipp://hostname/resource&quot; would be processed by the &quot;ipp&quot; backend. </P>
Backends are named using the method of the URI, so a URI of
&quot;ipp://hostname/resource&quot; would be processed by the &quot;ipp&quot; 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 &quot;i&quot;, &quot;t&quot;, &quot;m&quot;, &quot;h&quot;, and &quot;s&quot; 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 &quot;i&quot;, &quot;t&quot;, &quot;m&quot;, &quot;h&quot;, and &quot;s&quot; 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 &quot;wizard&quot; 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 (&quot;API&quot;) 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 &quot;f&quot;,
&quot;H&quot;, &quot;P&quot;, &quot;S&quot;, and &quot;y&quot; 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
&quot;H&quot;, &quot;P&quot;, &quot;S&quot;, and &quot;y&quot; 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
&quot;A&quot;, &quot;F&quot;, &quot;I&quot;, &quot;M&quot;, &quot;P&quot;, &quot;Q&quot;, &quot;S&quot;, &quot;T&quot;, &quot;U&quot;, &quot;W&quot;, &quot;f&quot;, &quot;l&quot;, &quot;m&quot;, &quot;o&quot;,
&quot;s&quot;, &quot;t&quot;, and &quot;u&quot; options are not supported, and new options &quot;P&quot; (PPD
file) and &quot;E&quot; (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), &quot;F&quot; (filter), and &quot;E&quot; (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
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+103 -218
Ver Arquivo
@@ -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
(&quot;CUPS&quot;) 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
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+7148 -8543
Ver Arquivo
Diff do arquivo suprimido porque uma ou mais linhas são muito longas
+305 -3461
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
-297
Ver Arquivo
@@ -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 (&quot;CUPS&quot;) 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&reg;-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 (&quot;IPP&quot;) as the basis for
managing print jobs and queues. The Line Printer Daemon (&quot;LPD&quot;) Server
Message Block (&quot;SMB&quot;), and AppSocket (a.k.a. JetDirect) protocols are
also supported with reduced functionality. CUPS adds network printer
browsing and PostScript Printer Description (&quot;PPD&quot;) 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>
BIN
Ver Arquivo
Arquivo binário não exibido.
-457
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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 (&quot;CUPS&quot;) 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&reg;-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&reg; 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 (&quot;IPP&quot;) as the basis for
managing print jobs and queues. The Line Printer Daemon (&quot;LPD&quot;) Server
Message Block (&quot;SMB&quot;), and AppSocket (a.k.a. JetDirect) protocols are
also supported with reduced functionality. CUPS adds network printer
browsing and PostScript Printer Description (&quot;PPD&quot;) 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 (&quot;PPD&quot;)-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 (&quot;CUPS&quot;), 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 &quot;man in the middle&quot;
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 &quot;certificates&quot;
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>
BIN
Ver Arquivo
Arquivo binário não exibido.
+8 -10
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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 (&quot;CUPS&quot;)
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&reg;-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&reg; 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 (&quot;IPP&quot;) as the basis for
managing print jobs and queues. The Line Printer Daemon (&quot;LPD&quot;) Server
Message Block (&quot;SMB&quot;), and AppSocket (a.k.a. JetDirect) protocols are
also supported with reduced functionality. CUPS adds network printer
browsing and PostScript Printer Description (&quot;PPD&quot;) 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 (&quot;PPD&quot;)-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>
BIN
Ver Arquivo
Arquivo binário não exibido.
+2 -2
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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> (&quot;CUPS<SUP>TM</SUP>&quot;) Version 1.1.1. </P>
Printing System<SUP>TM</SUP> (&quot;CUPS<SUP>TM</SUP>&quot;) Version 1.1. </P>
<H2><A NAME="1_1">System Overview</A></H2>
<P>CUPS provides a portable printing layer for UNIX&reg;-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>&nbsp;&nbsp;&nbsp;</TD><TH>Description</TH></TR>
<TR><TD>&nbsp;</TD></TR>
<TR VALIGN="TOP"><TD><CODE>lpstat</CODE>
<BR><CODE> lpstat(1)</CODE></TD><TD>&nbsp;&nbsp;&nbsp;</TD><TD>The names of commands;
<BR><CODE>lpstat(1)</CODE></TD><TD>&nbsp;&nbsp;&nbsp;</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>&nbsp;</TD></TR>
<TR VALIGN="TOP"><TD><VAR>/var</VAR>
<BR><VAR> /usr/share/cups/data/testprint.ps</VAR></TD><TD>&nbsp;&nbsp;&nbsp;</TD><TD>
<BR><VAR>/usr/share/cups/data/testprint.ps</VAR></TD><TD>&nbsp;&nbsp;&nbsp;</TD><TD>
File and directory names.</TD></TR>
<TR><TD>&nbsp;</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 &quot;classified&quot; label
at the top and bottom. </LI>
<LI><CODE>confidential</CODE> - A banner page with a &quot;confidential&quot;
label at the top and bottom. </LI>
<LI><CODE>secret</CODE> - A banner page with a &quot;secret&quot; 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 &quot;top secret&quot; label
at the top and bottom. </LI>
<LI><CODE>unclassified</CODE> - A banner page with an &quot;unclassified&quot;
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 &quot;printer drivers&quot; 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>, (&quot;CUPS<SUP>TM</SUP>&quot;),
<P>The Common UNIX Printing System<SUP>TM</SUP>, or CUPS<SUP>TM</SUP>,
is provided under the GNU General Public License (&quot;GPL&quot;) and GNU
Library General Public License (&quot;LGPL&quot;), Version 2. A copy of these
licenses follow this introduction. </P>
<P>The GNU LGPL applies to the CUPS API library, located in the &quot;cups&quot;
subdirectory of the CUPS source distribution and in the
&quot;/usr/include/cups&quot; directory and &quot;libcups.a&quot;, &quot;libcups.sl&quot;, or
&quot;libcups.so&quot; files in the binary distributions. </P>
&quot;/usr/include/cups&quot; directory and &quot;/usr/lib/libcups.so&quot; or
&quot;/usr/lib32/libcups.so&quot; files in the binary distributions. </P>
<P>The GNU GPL applies to the remainder of the CUPS distribution,
including the &quot;pstoraster&quot; filter which is based upon GNU Ghostscript
5.50 and the &quot;pdftops&quot; 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 &quot;link-to&quot; 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 &quot;pstoraster&quot; 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 &quot;pdftops&quot; 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
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+5 -106
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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 (&quot;BMP&quot;) 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 (&quot;BMP&quot;) 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 &quot;instances&quot; 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>
BIN
Ver Arquivo
Arquivo binário não exibido.
+15 -71
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
+3 -7
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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"
-24
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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)
+2 -4
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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)...
*/
-2
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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