Comparar commits

..

1 Commits

Autor SHA1 Mensagem Data
msweet 357c466e44 Import cups.org releases
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/tags/release-1.0@4306 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-10 18:56:23 +00:00
158 arquivos alterados com 6854 adições e 7777 exclusões
+25
Ver Arquivo
@@ -0,0 +1,25 @@
CREDITS.txt - 10/01/1999
------------------------
Few projects are completed by one person, and CUPS is no exception. We'd
like to thank the following individuals for their contributions:
Nathaniel Barbour - Lots of testing and feedback.
N. Becker - setsid().
Jean-Eric Cuendet - GhostScript filters for CUPS.
Van Dang - HTTP and IPP policeman.
Dr. ZP Han - setgid()/setuid().
Guy Harris - *BSD shared libraries and lots of other fixes.
Wang Jian - CUPS RPM corrections.
Roderick Johnstone - Beta tester of the millenium.
Sergey V. Kovalyov - ESP Print Pro and CUPS beta tester.
Mark Lawrence - Microsoft interoperability testing.
Jason McMullan - Original CUPS RPM distributions.
Wes Morgan - *BSD fixes.
Ulrich Oldendorf - German locale.
Petter Reinholdtsen - HP-UX compiler stuff.
Stuart Stevens - HP JetDirect IPP information.
Kiko - Bug fixes.
If I've missed someone, please let me know by sending an email to
"mike@easysw.com".
-332
Ver Arquivo
@@ -1,332 +0,0 @@
Common UNIX Printing System License Agreement
Copyright 1997-1999 by Easy Software Products
44141 AIRPORT VIEW DR STE 204
HOLLYWOOD, MARYLAND 20636-3111 USA
Voice: +1.301.373.9603
Email: cups-info@cups.org
WWW: http://www.cups.org
Introduction
The Common UNIX Printing SystemTM, or CUPSTM, is provided under the GNU
General Public License, Version 2. A copy of this license follows this
introduction.
For those not familiar with the GNU General Public License, the license
basically allows you to:
* Use the CUPS software at no charge.
* Distribute verbatim copies of the software in source or binary form.
* Sell verbatim copies of the software for a media fee, or sell support
for the software.
* Distribute or sell printer drivers and filters that use the CUPS API so
long as source code is made available under the GPL.
What this license does not allow you to do is make changes or add features
to CUPS and then sell a binary distribution without source code. You have to
provide source for any new drivers, changes, or additions to the software,
and all code must be provided under the GPL.
Also, since we have trademarked the Common UNIX Printing System, CUPS, and
CUPS logo, you may not release a derivative product using those names
without permission from Easy Software Products.
Binary Distribution Rights
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 or additions and modifications to CUPS under the GPL.
For pricing information please contact us at the address shown above.
The Common UNIX Printing System utilizes GNU GhostScript 4.03 to convert
PostScript files into a stream of raster images. For binary distribution
licensing of this software, please contact:
Miles Jones
Director of Marketing
Artifex Software Inc.
454 Las Gallinas Ave., Suite 108
San Rafael, CA 94903 USA
Voice: +1.415.492.9861
Fax: +1.415.492.9862
EMail: info@arsoft.com
Support
Easy Software Products sells software support for distributors and resellers
of CUPS. Support for users of CUPS is available from Easy Software Products
through our ESP Print software.
Trademarks
The Common UNIX Printing System, CUPS, and the CUPS logo are the trademark
property of Easy Software Products. Any derivative of this software may not
use any of these trademarks without the expressed written consent of Easy
Software Products.
GNU General Public License
Version 2, June 1991
Copyright 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies of this license
document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your freedom to
share and change it. By contrast, the GNU General Public License is intended
to guarantee your freedom to share and change free software--to make sure
the software is free for all its users. This General Public License applies
to most of the Free Software Foundation's software and to any other program
whose authors commit to using it. (Some other Free Software Foundation
software is covered by the GNU Library General Public License instead.) You
can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our
General Public Licenses are designed to make sure that you have the freedom
to distribute copies of free software (and charge for this service if you
wish), that you receive source code or can get it if you want it, that you
can change the software or use pieces of it in new free programs; and that
you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to
deny you these rights or to ask you to surrender the rights. These
restrictions translate to certain responsibilities for you if you distribute
copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis or
for a fee, you must give the recipients all the rights that you have. You
must make sure that they, too, receive or can get the source code. And you
must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and (2)
offer you this license which gives you legal permission to copy, distribute
and/or modify the software.
Also, for each author's protection and ours, we want to make certain that
everyone understands that there is no warranty for this free software. If
the software is modified by someone else and passed on, we want its
recipients to know that what they have is not the original, so that any
problems introduced by others will not reflect on the original authors'
reputations.
Finally, any free program is threatened constantly by software patents. We
wish to avoid the danger that redistributors of a free program will
individually obtain patent licenses, in effect making the program
proprietary. To prevent this, we have made it clear that any patent must be
licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification
follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
1. This License applies to any program or other work which contains a
notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of running
the Program is not restricted, and the output from the Program is
covered only if its contents constitute a work based on the Program
(independent of having been made by running the Program). Whether that
is true depends on what the Program does.
2. You may copy and distribute verbatim copies of the Program's source
code as you receive it, in any medium, provided that you conspicuously
and appropriately publish on each copy an appropriate copyright notice
and disclaimer of warranty; keep intact all the notices that refer to
this License and to the absence of any warranty; and give any other
recipients of the Program a copy of this License along with the
Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
3. You may modify your copy or copies of the Program or any portion of it,
thus forming a work based on the Program, and copy and distribute such
modifications or work under the terms of Section 1 above, provided that
you also meet all of these conditions:
a. You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b. You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c. if the modified program normally reads commands interactively when
run, you must cause it, when started running for such interactive
use in the most ordinary way, to print or display an announcement
including an appropriate copyright notice and a notice that there
is no warranty (or else, saying that you provide a warranty) and
that users may redistribute the program under these conditions,
and telling the user how to view a copy of this License.
(Exception: if the Program itself is interactive but does not
normally print such an announcement, your work based on the
Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of a
storage or distribution medium does not bring the other work under the
scope of this License.
4. You may copy and distribute the Program (or a work based on it, under
Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a. Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software
interchange; or,
b. Accompany it with a written offer, valid for at least three years,
to give any third party, for a charge no more than your cost of
physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c. Accompany it with the information you received as to the offer to
distribute corresponding source code. (This alternative is allowed
only for noncommercial distribution and only if you received the
program in object code or executable form with such an offer, in
accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to control
compilation and installation of the executable. However, as a special
exception, the source code distributed need not include anything that
is normally distributed (in either source or binary form) with the
major components (compiler, kernel, and so on) of the operating system
on which the executable runs, unless that component itself accompanies
the executable.
If distribution of executable or object code is made by offering access
to copy from a designated place, then offering equivalent access to
copy the source code from the same place counts as distribution of the
source code, even though third parties are not compelled to copy the
source along with the object code.
5. You may not copy, modify, sublicense, or distribute the Program except
as expressly provided under this License. Any attempt otherwise to
copy, modify, sublicense or distribute the Program is void, and will
automatically terminate your rights under this License. However,
parties who have received copies, or rights, from you under this
License will not have their licenses terminated so long as such parties
remain in full compliance.
6. You are not required to accept this License, since you have not signed
it. However, nothing else grants you permission to modify or distribute
the Program or its derivative works. These actions are prohibited by
law if you do not accept this License. Therefore, by modifying or
distributing the Program (or any work based on the Program), you
indicate your acceptance of this License to do so, and all its terms
and conditions for copying, distributing or modifying the Program or
works based on it.
7. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further restrictions
on the recipients' exercise of the rights granted herein. You are not
responsible for enforcing compliance by third parties to this License.
8. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent license
would not permit royalty-free redistribution of the Program by all
those who receive copies directly or indirectly through you, then the
only way you could satisfy both it and this License would be to refrain
entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made generous
contributions to the wide range of software distributed through that
system in reliance on consistent application of that system; it is up
to the author/donor to decide if he or she is willing to distribute
software through any other system and a licensee cannot impose that
choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
9. If the distribution and/or use of the Program is restricted in certain
countries either by patents or by copyrighted interfaces, the original
copyright holder who places the Program under this License may add an
explicit geographical distribution limitation excluding those
countries, so that distribution is permitted only in or among countries
not thus excluded. In such case, this License incorporates the
limitation as if written in the body of this License.
10. The Free Software Foundation may publish revised and/or new versions of
the General Public License from time to time. Such new versions will be
similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Program does not specify a version
number of this License, you may choose any version ever published by
the Free Software Foundation.
11. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the
author to ask for permission. For software which is copyrighted by the
Free Software Foundation, write to the Free Software Foundation; we
sometimes make exceptions for this. Our decision will be guided by the
two goals of preserving the free status of all derivatives of our free
software and of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
NECESSARY SERVICING, REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM
(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR
OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
+3 -1
Ver Arquivo
@@ -37,6 +37,7 @@ DSO = @DSO@
HTMLDOC = @HTMLDOC@
LN = /bin/ln -sf
MKDIR = @MKDIR@ -p
MV = @MV@
NROFF = @NROFF@
PACK = @PACK@
RANLIB = @RANLIB@
@@ -69,7 +70,8 @@ CFLAGS = @CFLAGS@ $(OPTIM) -I.. $(OPTIONS)
DSOLIBS = @DSOLIBS@
IMGLIBS = @IMGLIBS@ -lm
LDFLAGS = @LDFLAGS@ $(OPTIM)
LIBS = -L../cups -lcups @LIBS@
LIBS = -L../cups -lcups $(NETLIBS) @LIBS@
NETLIBS = @NETLIBS@
OPTIM = @OPTIM@
OPTIONS =
-139
Ver Arquivo
@@ -1,139 +0,0 @@
<HTML>
<HEAD>
<TITLE>README - Common UNIX Printing System</TITLE>
</HEAD>
<BODY>
<H1>README - CUPS v1.0b4</H1>
<H2>Contents</H2>
<UL>
<LI><A HREF="#intro">Introduction</A>
<LI><A HREF="#require">Requirements</A>
<LI><A HREF="#use">Using CUPS</A>
<LI><A HREF="#known">Known Problems</A>
<LI><A HREF="#report">Reporting Problems</A>
<LI><A HREF="#resources">Other Resources</A>
<LI><A HREF="#legal">Legal Stuff</A>
</UL>
<H2><A NAME="intro">Introduction</A></H2>
The Common UNIX Printing System provides a portable printing layer for
UNIX&reg; operating systems. It has been developed by Easy Software
Products to promote a standard printing solution for all UNIX vendors
and users. CUPS provides the System V and Berkeley command-line
interfaces.
<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>CUPS adds network printer browsing and PostScript Printer
Description (&quot;PPD&quot;)-based printing options to support real
world applications under UNIX.
<P>CUPS also includes a customized version of GNU GhostScript (currently
based off GNU GhostScript 4.03) and an image file RIP that can be used to
support non-PostScript printers.
<H2><A NAME="require">Requirements</A></H2>
You'll need an ANSI 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 run under Microsoft&reg; Windows&reg;.
<P>For the image file filters you'll need the JPEG, PNG, TIFF, and ZLIB
libraries. CUPS will build without these, but with reduced functionality.
<P>If you make changes to the man pages you'll need GNU groff or another
nroff-like package.
<P>The documentation is formatted using the HTMLDOC software (again, not
needed unless you make changes.)
<H2><A NAME="use">Using CUPS</A></H2>
<P>Pre-compiled binary distributions are available for CUPS from our
web site at
<A HREF="http://www.cups.org/software.html">http://www.cups.org/software.html</A>.
If you'd like to build CUPS from the source, please read the Software
Administrator's Manual.
<P>Once you have installed CUPS, the Software Administrator's Manual and
Software User's Manual are excellent places to start setting things up.
<H2><A NAME="known">Known Problems</A></H2>
The following known problems are being worked on and should be resolved for
the fourth beta release of CUPS:
<UL>
<LI>Documentation is not completed.
<LI>The lpc command currently only supports the help and status
commands.
</UL>
CUPS has been built and tested on the following operating systems:
<UL>
<LI>Digital UNIX 4.0d
<LI>HP-UX 10.20 and 11.0
<LI>IRIX 5.3, 6.2, 6.5.3
<LI>Linux (RedHat 5.2)
<LI>Solaris 2.5.1, 2.6, 2.7 (aka 7)
</UL>
The client libraries and filters have been successfully compiled under
Microsoft Windows using Visual C++ 6.0.
<H2><A NAME="report">Reporting Problems</A></H2>
If you have problems, please send an email to
<A HREF="mailto:cups-support@cups.org">cups-support@cups.org</A>. Include
your operating system and version, compiler and version, and any errors
or problems you've run into.
<H2><A NAME="resources">Other Resources</A></H2>
See the CUPS web site at "http://www.cups.org" for other site links.
<P>You can subscribe to the CUPS mailing list by sending a message containing
"subscribe cups" to <A HREF="mailto:majordomo@cups.org">majordomo@cups.org</A>.
This list is provided to discuss problems, questions, and improvements to
the CUPS software. New releases of CUPS are announced to this list as well.
<H2><A NAME="legal">Legal Stuff</A></H2>
CUPS is Copyright 1993-1999 by Easy Software Products. CUPS, the CUPS logo,
and the Common UNIX Printing System are the trademark property of Easy Software
Products.
<P>CUPS is provided under the terms of the
<A HREF="LICENSE.html">GNU General Public License</A>
which is located in the files "LICENSE.html" and "LICENSE.txt". For commercial
support and "binary-only" licensing information, please contact:
<UL>
Attn: CUPS Licensing Information
<BR>Easy Software Products
<BR>44141 Airport View Drive, Suite 204
<BR>Hollywood, Maryland 20636-3111 USA
<P>Voice: +1.301.373.9603
<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>
</UL>
<P>If you're interested in a complete, commercial printing solution for UNIX,
check out our ESP Print software at <A HREF="http://www.easysw.com/print.html">
http://www.easysw.com/print.html</A>.
</BODY>
</HTML>
+142 -78
Ver Arquivo
@@ -1,120 +1,184 @@
README - CUPS v1.0b4
--------------------
CONTENTS
* Introduction
* Requirements
* Using CUPS
* Known Problems
* Reporting Problems
* Other Resources
* Legal Stuff
README - CUPS v1.0 - 10/01/1999
-------------------------------
INTRODUCTION
The Common UNIX Printing System provides a portable printing layer for UNIX®
operating systems. It has been developed by Easy Software Products to
promote a standard printing solution for all UNIX vendors and users. CUPS
provides the System V and Berkeley command-line interfaces.
The Common UNIX Printing System provides a portable printing layer for
UNIX® operating systems. It has been developed by Easy Software
Products to promote a standard printing solution for all UNIX vendors
and users. CUPS provides the System V and Berkeley command-line
interfaces.
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.
managing print jobs and queues. The Line Printer Daemon (LPD, RFC1179)
and AppSocket protocols are also supported with reduced functionality.
CUPS adds network printer browsing and PostScript Printer Description
("PPD")-based printing options to support real world applications under
UNIX.
CUPS also includes a customized version of GNU GhostScript (currently based
off GNU GhostScript 4.03) and an image file RIP that can be used to support
non-PostScript printers.
CUPS also includes a customized version of GNU GhostScript (currently
based off GNU GhostScript 4.03) and an image file RIP that can be used
to support non-PostScript printers.
CUPS is Copyright 1993-1999 by Easy Software Products, All Rights
Reserved. CUPS is currently licensed under the terms of the GNU
General Public License. Please see the license file for details.
REQUIREMENTS
SYSTEM REQUIREMENTS
You'll need an ANSI 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 run under Microsoft® Windows®.
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.
For the image file filters you'll need the JPEG, PNG, TIFF, and ZLIB
libraries. CUPS will build without these, but with reduced functionality.
If you make changes to the man pages you'll need GNU groff or another
nroff-like package.
The documentation is formatted using the HTMLDOC software (again, not needed
unless you make changes.)
If you are installing from source you'll need an ANSI 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".
USING CUPS
SOFTWARE REQUIREMENTS
Pre-compiled binary distributions are available for CUPS from our web site
at http://www.cups.org/software.html. If you'd like to build CUPS from the
source, please read the Software Administrator's Manual.
The following operating system software is required to install one of
the binary distributions from Easy Software Products:
Once you have installed CUPS, the Software Administrator's Manual and
Software User's Manual are excellent places to start setting things up.
- Digital UNIX (aka OSF1 aka Compaq Tru64 UNIX) 4.0 or higher
- HP-UX 10.20 or higher
- IRIX 5.3 or higher
- Linux 2.0 with glibc2 or higher (tested with RedHat 5.2)
- Solaris 2.5 or higher (SPARC or Intel)
KNOWN PROBLEMS
INSTALLING CUPS
The following known problems are being worked on and should be resolved for
the fourth beta release of CUPS:
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 also included with the source
distribution.
* Documentation is not completed.
* The lpc command currently only supports the help and status commands.
WARNING: Installing CUPS will overwrite your existing printing system.
Backup files are made by the installation script and restored by the
removal script, so if you experience problems you should be able to
remove the CUPS software to restore your previous configuration.
However, Easy Software Products makes no warranty for this and will not
be liable for any lost revenues, etc.
CUPS has been built and tested on the following operating systems:
To install the CUPS software you will need to be logged in as root
(doing an "su" is good enough). Once you are the root user, run the
installation script with:
* Digital UNIX 4.0d
* HP-UX 10.20 and 11.0
* IRIX 5.3, 6.2, 6.5.3
* Linux (RedHat 5.2)
* Solaris 2.5.1, 2.6, 2.7 (aka 7)
./cups.install ENTER
The client libraries and filters have been successfully compiled under
Microsoft Windows using Visual C++ 6.0.
After asking you a few yes/no questions the CUPS software will be
installed and the scheduler will be started automatically.
SETTING UP PRINTER QUEUES
CUPS works best with PPD (PostScript Printer Description) files. In a
pinch you can also use System V style printer interface scripts.
Two sample PPD files are provided with this distribution that utilize
the PostScript and image file RIPs and the sample HP printer driver.
To add the sample DeskJet driver to the system for a printer connected
to the parallel port, use one of the following commands:
Digital UNIX:
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/lp0 -E
HP-UX:
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/c2t0d0_lp -E
IRIX:
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/plp -E
Linux:
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/par0 -E
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/par1 -E
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/par2 -E
Solaris:
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/bpp0 -E
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/ecpp0 -E
Similarly, for the sample LaserJet driver you can use "LaserJet" and
"laserjet.ppd".
For other printers and interfaces see the CUPS System Administator's
Manual included with this software.
If you're interested in a complete, commercial printing solution for
UNIX, check out our ESP Print Pro software at:
http://www.easysw.com/printpro
PRINTING FILES
CUPS provides both the System V "lp" and Berkeley "lpr" commands for
printing:
lp filename
lpr filename
Both the "lp" and "lpr" commands support printing options for the
driver:
lp -omedia=A4 -oresolution=600dpi filename
lpr -omedia=A4 -oresolution=600dpi filename
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:
lp -oraw filename
lpr -l filename
This will prevent the filters from misinterpreting your print file.
REPORTING PROBLEMS
If you have 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.
If you have 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.
OTHER RESOURCES
See the CUPS web site at "http://www.cups.org" for other site links.
You can subscribe to the CUPS mailing list by sending a message containing
"subscribe cups" to majordomo@cups.org. This list is provided to discuss
problems, questions, and improvements to the CUPS software. New releases of
CUPS are announced to this list as well.
You can subscribe to the CUPS mailing list by sending a message
containing "subscribe cups" to majordomo@cups.org. This list is
provided to discuss problems, questions, and improvements to the CUPS
software. New releases of CUPS are announced to this list as well.
LEGAL STUFF
CUPS is Copyright 1993-1999 by Easy Software Products. CUPS, the CUPS logo,
and the Common UNIX Printing System are the trademark property of Easy
Software Products.
CUPS is Copyright 1993-1999 by Easy Software Products. CUPS, the CUPS
logo, and the Common UNIX Printing System are the trademark property of
Easy Software Products.
CUPS is provided under the terms of the GNU General Public License which is
located in the files "LICENSE.html" and "LICENSE.txt". For commercial
support and "binary-only" licensing information, please contact:
CUPS is provided under the terms of the GNU General Public License
which is located in the files "LICENSE.html" and "LICENSE.txt" (or the
file "cups.license" for a binary distribution.) For commercial
licensing information, please contact:
Attn: CUPS Licensing Information
Easy Software Products
44141 Airport View Drive, Suite 204
Hollywood, Maryland 20636-3111 USA
Attn: CUPS Licensing Information
Easy Software Products
44141 Airport View Drive, Suite 204
Hollywood, Maryland 20636-3111 USA
Voice: +1.301.373.9603
Email: cups-info@cups.org
WWW: http://www.cups.org
If you're interested in a complete, commercial printing solution for UNIX,
check out our ESP Print software at http://www.easysw.com/print.html.
Voice: +1.301.373.9603
Email: cups-info@cups.org
WWW: http://www.cups.org
+1 -14
Ver Arquivo
@@ -24,7 +24,7 @@
include ../Makedefs
TARGETS = ipp lpd parallel serial smb socket
TARGETS = ipp lpd parallel serial socket
OBJS = ipp.o lpd.o parallel.o serial.o socket.o
#
@@ -91,19 +91,6 @@ serial: serial.o ../cups/$(LIBCUPS)
serial.o: ../cups/cups.h ../Makedefs
#
# smb
#
# Note: reading through these commands is a good way to get a headache... :)
#
smb: smb.sh ../Makedefs
echo Generating $@...
$(RM) smb
sedcmd="1,\$$s/^SMBCLIENT=.\*/SMBCLIENT=`echo $(SMBCLIENT) | sed -e '1,$$s/\\//\\\\\\//g'`/" ;\
$(SED) -e "$$sedcmd" <smb.sh >smb
$(CHMOD) +x smb
#
# socket
#
+23 -14
Ver Arquivo
@@ -23,6 +23,7 @@
*
* Contents:
*
* main() - Send a file to the printer or server.
*/
/*
@@ -146,12 +147,10 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, uri);
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "requesting-user-name",
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
NULL, argv[2]);
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL, argv[3]);
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "copies", atoi(argv[4]));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL, argv[3]);
/*
* Handle options on the command-line...
@@ -161,12 +160,14 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
num_options = cupsParseOptions(argv[5], 0, &options);
if (cupsGetOption("raw", num_options, options))
ippAddString(request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format",
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/vnd.cups-raw");
else
ippAddString(request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format",
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/octet-stream");
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "copies", atoi(argv[4]));
for (i = 0; i < num_options; i ++)
{
/*
@@ -279,7 +280,9 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
sprintf(buffer, "%u", ippLength(request) + (size_t)fileinfo.st_size);
httpSetField(http, HTTP_FIELD_CONTENT_LENGTH, buffer);
}
else
httpSetField(http, HTTP_FIELD_TRANSFER_ENCODING, "chunked");
/*
* Do the request...
*/
@@ -291,12 +294,12 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
*/
if (httpPost(http, resource))
if (httpPost(http, resource))
{
fputs("INFO: Unable to POST print request; retrying...\n", stderr);
sleep(10);
continue;
}
{
fputs("INFO: Unable to POST print request; retrying...\n", stderr);
sleep(10);
httpReconnect(http);
continue;
}
fputs("INFO: POST successful, sending IPP request...\n", stderr);
@@ -333,7 +336,13 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
}
}
httpWrite(http, buffer, 0);
/*
* If we are chunking the output from stdin, make sure we end up with
* a 0-length chunk at the end...
*/
if (fp == stdin)
httpWrite(http, buffer, 0);
fputs("INFO: Print file sent; checking status...\n", stderr);
+1 -1
Ver Arquivo
@@ -107,7 +107,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
int bytes; /* Number of bytes read */
if ((fp = fopen(tmpnam(filename), "w")) == NULL)
if ((fp = fopen(cupsTempFile(filename, sizeof(filename)), "w")) == NULL)
{
perror("ERROR: unable to create temporary file");
return (1);
-88
Ver Arquivo
@@ -1,88 +0,0 @@
#!/bin/sh
#
# "$Id$"
#
# SMB printing script for the Common UNIX Printing System (CUPS).
#
# Copyright 1993-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
# copyright law. Distribution and use rights are outlined in the file
# "LICENSE.txt" which should have been included with this file. If this
# file is missing or damaged please contact Easy Software Products
# at:
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44145 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
# EMail: cups-info@cups.org
# WWW: http://www.cups.org
#
SMBCLIENT=/usr/local/samba/bin/smbclient
#
# Usage:
#
# printer job user title copies options [filename]
#
if [ $# -lt 5 -o $# -gt 6 ]; then
# Too few or too many arguments
echo 'Usage: smb job-id user title copies options [file]' >&2
exit 1
fi
#
# If "filename" is not on the command-line, then we read the print
# data from stdin and write it to a temporary file.
#
if [ $# = 5 ]; then
# Collect all print data and put it in a temporary file...
if [ "$TMPDIR" = "" ]; then
TMPDIR=/var/tmp
fi
filename="$TMPDIR/$$.smb"
cat >$filename
else
# Use the file on the command-line...
filename="$6"
fi
#
# Take apart the URI in $0...
#
uri="$0"
host=`echo $uri | awk -F/ '{print substr($3, index($3, "@") + 1)}'`
user=`echo $uri | awk -F/ '{print substr($3, 0, index($3, "@") - 1)}'`
if [ "$user" != "" ]; then
user="-U $user"
fi
printer=`echo $uri | awk -F/ '{print $4}'`
#
# Send the file to the remote system...
#
$SMBCLIENT //$host/$printer $user -P -N <<EOF
print $filename
EOF
#
# Lastly, remove the temporary file as needed...
#
if [ $# = 5 ]; then
rm -f $filename
fi
#
# End of "$Id$".
#
+8
Ver Arquivo
@@ -433,7 +433,15 @@ show_status(http_t *http, /* I - HTTP connection to server */
if (strncmp(device, "file:", 5) == 0)
printf("\tprinter is on device \'%s\' speed -1\n", device + 5);
else
{
/*
* Just show the method...
*/
*strchr(device, ':') = '\0';
printf("\tprinter is on device \'%s\' speed -1\n", device);
}
printf("\tqueuing is %sabled\n", accepting ? "en" : "dis");
printf("\tprinting is %sabled\n",
pstate == IPP_PRINTER_STOPPED ? "dis" : "en");
+14 -11
Ver Arquivo
@@ -23,6 +23,8 @@
*
* Contents:
*
* main() - Parse options and commands.
* show_jobs() - Show jobs.
*/
/*
@@ -45,7 +47,8 @@
* Local functions...
*/
static int show_jobs(http_t *, char *, char *, int, int);
static int show_jobs(http_t *, const char *, const char *, const int,
const int);
/*
@@ -58,7 +61,7 @@ main(int argc, /* I - Number of command-line arguments */
{
int i; /* Looping var */
http_t *http; /* Connection to server */
char *dest, /* Desired printer */
const char *dest, /* Desired printer */
*user; /* Desired user */
int id, /* Desired job ID */
interval, /* Reporting interval */
@@ -74,7 +77,7 @@ main(int argc, /* I - Number of command-line arguments */
* Check for command-line options...
*/
dest = NULL;
dest = cupsGetDefault();
user = NULL;
id = 0;
interval = 0;
@@ -136,21 +139,21 @@ main(int argc, /* I - Number of command-line arguments */
/*
* 'show_jobs()' - Show printers.
* 'show_jobs()' - Show jobs.
*/
static int /* O - Number of jobs in queue */
show_jobs(http_t *http, /* I - HTTP connection to server */
char *dest, /* I - Destination */
char *user, /* I - User */
int id, /* I - Job ID */
int longstatus) /* I - 1 if long report desired */
show_jobs(http_t *http, /* I - HTTP connection to server */
const char *dest, /* I - Destination */
const char *user, /* I - User */
const int id, /* I - Job ID */
const int longstatus)/* I - 1 if long report desired */
{
ipp_t *request, /* IPP Request */
*response; /* IPP Response */
ipp_attribute_t *attr; /* Current attribute */
cups_lang_t *language; /* Default language */
char *jobdest, /* Pointer into job-printer-uri */
const char *jobdest, /* Pointer into job-printer-uri */
*jobuser, /* Pointer to job-originating-user-name */
*jobname; /* Pointer to job-name */
ipp_jstate_t jobstate; /* job-state */
@@ -160,7 +163,7 @@ show_jobs(http_t *http, /* I - HTTP connection to server */
jobcount, /* Number of jobs */
rank; /* Rank of job */
char resource[1024]; /* Resource string */
static char *ranks[10] = /* Ranking strings */
static const char *ranks[10] =/* Ranking strings */
{
"th",
"st",
+6 -4
Ver Arquivo
@@ -46,7 +46,7 @@ main(int argc, /* I - Number of command-line arguments */
int i; /* Looping var */
int job_id; /* Job ID */
const char *dest; /* Destination printer */
char *title; /* Job title */
const char *title; /* Job title */
int priority; /* Job priority (1-100) */
int num_copies; /* Number of copies per file */
int num_files; /* Number of files printed */
@@ -209,7 +209,7 @@ main(int argc, /* I - Number of command-line arguments */
return (1);
}
temp = fopen(tmpnam(tempfile), "w");
temp = fopen(cupsTempFile(tempfile, sizeof(tempfile)), "w");
if (temp == NULL)
{
@@ -225,7 +225,7 @@ 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);
}
@@ -234,9 +234,11 @@ main(int argc, /* I - Number of command-line arguments */
else
job_id = cupsPrintFile(dest, tempfile, "(stdin)", num_options, options);
unlink(tempfile);
if (job_id < 1)
{
fprintf(stderr, "lpr: unable to print file \'%s\'.\n", argv[i]);
fputs("lpr: unable to print standard input.\n", stderr);
return (1);
}
}
+7
Ver Arquivo
@@ -169,7 +169,14 @@ main(int argc, /* I - Number of command-line arguments */
response = cupsDoRequest(http, request, "/jobs/");
if (response != NULL)
{
if (response->request.status.status_code == IPP_NOT_FOUND)
fputs("lprm: Job or printer not found!\n", stderr);
else if (response->request.status.status_code > IPP_OK_CONFLICT)
fputs("lprm: Unable to cancel job(s)!\n", stderr);
ippDelete(response);
}
else
{
fputs("lprm: Unable to cancel job(s)!\n", stderr);
+11 -1
Ver Arquivo
@@ -38,6 +38,7 @@
#include <cups/cups.h>
#include <cups/language.h>
#include <cups/debug.h>
#include <config.h>
/*
@@ -99,15 +100,24 @@ main(int argc, /* I - Number of command-line arguments */
puts("<META HTTP-EQUIV=\"Refresh\" CONTENT=\"10\">");
else
puts("<META HTTP-EQUIV=\"Refresh\" CONTENT=\"30\">");
printf("<TITLE>%s on %s - Common UNIX Printing System</TITLE>\n",
printf("<TITLE>%s on %s - " CUPS_SVERSION "</TITLE>\n",
name == NULL ? "Classes" : name, getenv("SERVER_NAME"));
puts("<LINK REL=STYLESHEET TYPE=\"text/css\" HREF=\"/cups.css\">");
puts("<MAP NAME=\"navbar\">");
#ifdef ESPPRINTPRO
puts("<AREA SHAPE=\"RECT\" COORDS=\"10,10,76,30\" HREF=\"printers\" ALT=\"Current Printer Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"88,10,158,30\" HREF=\"classes\" ALT=\"Current Printer Classes Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"170,10,210,30\" HREF=\"jobs\" ALT=\"Current Jobs Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"222,10,354,30\" HREF=\"documentation.html\" ALT=\"Read CUPS Documentation On-Line\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"366,10,442,30\" HREF=\"http://www.easysw.com/printpro/software.html\" ALT=\"Download the Current ESP Print Pro Software\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"454,10,530,30\" HREF=\"http://www.easysw.com/printpro/support.html\" ALT=\"Get Tech Support for Current ESP Print Pro\">");
#else
puts("<AREA SHAPE=\"RECT\" COORDS=\"10,10,85,30\" HREF=\"/printers\" ALT=\"Current Printer Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"95,10,175,30\" HREF=\"/classes\" ALT=\"Current Printer Classes Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"185,10,235,30\" HREF=\"/jobs\" ALT=\"Current Jobs Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"245,10,395,30\" HREF=\"/documentation.html\" ALT=\"Read CUPS Documentation On-Line\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"405,10,490,30\" HREF=\"http://www.cups.org\" ALT=\"Download the Current CUPS Software\">");
#endif /* ESPPRINTPRO */
puts("</MAP>");
puts("</HEAD>");
puts("<BODY>");
+11 -3
Ver Arquivo
@@ -38,6 +38,7 @@
#include <cups/cups.h>
#include <cups/language.h>
#include <cups/debug.h>
#include <config.h>
/*
@@ -62,8 +63,6 @@ main(int argc, /* I - Number of command-line arguments */
http_t *http; /* Connection to the server */
setbuf(stdout, NULL);
/*
* Get the request language...
*/
@@ -101,15 +100,24 @@ main(int argc, /* I - Number of command-line arguments */
puts("<META HTTP-EQUIV=\"Refresh\" CONTENT=\"10\">");
else
puts("<META HTTP-EQUIV=\"Refresh\" CONTENT=\"30\">");
printf("<TITLE>%s on %s - Common UNIX Printing System</TITLE>\n",
printf("<TITLE>%s on %s - " CUPS_SVERSION "</TITLE>\n",
job == NULL ? "Jobs" : job, getenv("SERVER_NAME"));
puts("<LINK REL=STYLESHEET TYPE=\"text/css\" HREF=\"/cups.css\">");
puts("<MAP NAME=\"navbar\">");
#ifdef ESPPRINTPRO
puts("<AREA SHAPE=\"RECT\" COORDS=\"10,10,76,30\" HREF=\"printers\" ALT=\"Current Printer Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"88,10,158,30\" HREF=\"classes\" ALT=\"Current Printer Classes Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"170,10,210,30\" HREF=\"jobs\" ALT=\"Current Jobs Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"222,10,354,30\" HREF=\"documentation.html\" ALT=\"Read CUPS Documentation On-Line\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"366,10,442,30\" HREF=\"http://www.easysw.com/printpro/software.html\" ALT=\"Download the Current ESP Print Pro Software\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"454,10,530,30\" HREF=\"http://www.easysw.com/printpro/support.html\" ALT=\"Get Tech Support for Current ESP Print Pro\">");
#else
puts("<AREA SHAPE=\"RECT\" COORDS=\"10,10,85,30\" HREF=\"/printers\" ALT=\"Current Printer Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"95,10,175,30\" HREF=\"/classes\" ALT=\"Current Printer Classes Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"185,10,235,30\" HREF=\"/jobs\" ALT=\"Current Jobs Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"245,10,395,30\" HREF=\"/documentation.html\" ALT=\"Read CUPS Documentation On-Line\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"405,10,490,30\" HREF=\"http://www.cups.org\" ALT=\"Download the Current CUPS Software\">");
#endif /* ESPPRINTPRO */
puts("</MAP>");
puts("</HEAD>");
puts("<BODY>");
+11 -1
Ver Arquivo
@@ -38,6 +38,7 @@
#include <cups/cups.h>
#include <cups/language.h>
#include <cups/debug.h>
#include <config.h>
/*
@@ -99,15 +100,24 @@ main(int argc, /* I - Number of command-line arguments */
puts("<META HTTP-EQUIV=\"Refresh\" CONTENT=\"10\">");
else
puts("<META HTTP-EQUIV=\"Refresh\" CONTENT=\"30\">");
printf("<TITLE>%s on %s - Common UNIX Printing System</TITLE>\n",
printf("<TITLE>%s on %s - " CUPS_SVERSION "</TITLE>\n",
printer == NULL ? "Printers" : printer, getenv("SERVER_NAME"));
puts("<LINK REL=STYLESHEET TYPE=\"text/css\" HREF=\"/cups.css\">");
puts("<MAP NAME=\"navbar\">");
#ifdef ESPPRINTPRO
puts("<AREA SHAPE=\"RECT\" COORDS=\"10,10,76,30\" HREF=\"printers\" ALT=\"Current Printer Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"88,10,158,30\" HREF=\"classes\" ALT=\"Current Printer Classes Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"170,10,210,30\" HREF=\"jobs\" ALT=\"Current Jobs Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"222,10,354,30\" HREF=\"documentation.html\" ALT=\"Read CUPS Documentation On-Line\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"366,10,442,30\" HREF=\"http://www.easysw.com/printpro/software.html\" ALT=\"Download the Current ESP Print Pro Software\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"454,10,530,30\" HREF=\"http://www.easysw.com/printpro/support.html\" ALT=\"Get Tech Support for Current ESP Print Pro\">");
#else
puts("<AREA SHAPE=\"RECT\" COORDS=\"10,10,85,30\" HREF=\"/printers\" ALT=\"Current Printer Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"95,10,175,30\" HREF=\"/classes\" ALT=\"Current Printer Classes Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"185,10,235,30\" HREF=\"/jobs\" ALT=\"Current Jobs Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"245,10,395,30\" HREF=\"/documentation.html\" ALT=\"Read CUPS Documentation On-Line\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"405,10,490,30\" HREF=\"http://www.cups.org\" ALT=\"Download the Current CUPS Software\">");
#endif /* ESPPRINTPRO */
puts("</MAP>");
puts("</HEAD>");
puts("<BODY>");
+9 -2
Ver Arquivo
@@ -28,7 +28,8 @@ include ../Makedefs
# Config files...
#
FILES = classes.conf cupsd.conf mime.convs mime.types printers.conf
KEEP = classes.conf cupsd.conf printers.conf
REPLACE = mime.convs mime.types
#
# Make everything...
@@ -48,13 +49,19 @@ clean:
install:
-$(MKDIR) $(SERVERROOT)/conf
for file in $(FILES); do \
for file in $(KEEP); do \
if test -e $(SERVERROOT)/conf/$$file ; then \
$(CP) $$file $(SERVERROOT)/conf/$$file.N ; \
else \
$(CP) $$file $(SERVERROOT)/conf ; \
fi ; \
done
for file in $(REPLACE); do \
if test -e $(SERVERROOT)/conf/$$file ; then \
$(MV) $(SERVERROOT)/conf/$$file $(SERVERROOT)/conf/$$file.O ; \
fi ; \
$(CP) $$file $(SERVERROOT)/conf ; \
done
#
# End of "$Id$".
+9 -2
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: classes.conf 333 1999-05-17 18:03:40Z mike $"
# "$Id: classes.conf 678 1999-09-22 18:10:55Z mike $"
#
# Sample class configuration file for the Common UNIX Printing System
# (CUPS) scheduler.
@@ -59,6 +59,13 @@
#Location Room 101 in the activities building
#
# Accepting: is the class accepting jobs?
#
#Accepting Yes
#Accepting No
#
#
# Printer: adds a printer to the class.
#
@@ -68,5 +75,5 @@
#</Class>
#
# End of "$Id: classes.conf 333 1999-05-17 18:03:40Z mike $".
# End of "$Id: classes.conf 678 1999-09-22 18:10:55Z mike $".
#
+30 -8
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: cupsd.conf 510 1999-07-09 14:20:15Z mike $"
# "$Id: cupsd.conf 628 1999-08-23 15:24:48Z mike $"
#
# Sample configuration file for the Common UNIX Printing System (CUPS)
# scheduler.
@@ -70,20 +70,25 @@ Port 631
# program is run...
#
User lp
Group sys
#User lp
#Group sys
#
# SystemGroup: the group name for "System" (printer administration)
# access.
# access. The default varies depending on the operating system, but
# will be "sys", "system", or "root" (checked for in that order.)
#
SystemGroup sys
#SystemGroup sys
#
# ServerName: the hostname of your server, as advertised to the world.
# By default CUPS will use the hostname of the system.
#
# This is also the name used by clients when connecting to the local
# server, so you can use this to configure a client machine without
# a local server running.
#
#ServerName myhost.domain.com
@@ -305,6 +310,23 @@ LogLevel info
# Deny: denies access from the specified hostname, domain, IP address, or
# network.
#
# Both "Allow" and "Deny" accept the following notations for addresses:
#
# All
# None
# *.domain.com
# .domain.com
# host.domain.com
# nnn.*
# nnn.nnn.*
# nnn.nnn.nnn.*
# nnn.nnn.nnn.nnn
# nnn.nnn.nnn.nnn/mm
# nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
#
# The host and domain address require that you enable hostname lookups
# with "HostNameLookups On" above.
#
<Location />
</Location>
@@ -329,8 +351,8 @@ LogLevel info
#
# You definitely will want to limit access to the administration tools.
# The default configuration requires a local connection from a user who
# is a member of group "sys" to do any admin tasks. You can change the
# group name using the SystemGroup directive.
# is a member of the system group to do any admin tasks. You can change
# the group name using the SystemGroup directive.
#
AuthType Basic
@@ -343,5 +365,5 @@ Allow From 127.0.0.1
</Location>
#
# End of "$Id: cupsd.conf 510 1999-07-09 14:20:15Z mike $".
# End of "$Id: cupsd.conf 628 1999-08-23 15:24:48Z mike $".
#
+3 -3
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: mime.convs 530 1999-07-13 14:11:17Z mike $"
# "$Id: mime.convs 575 1999-07-30 13:57:16Z mike $"
#
# MIME converts file for the Common UNIX Printing System (CUPS).
#
@@ -42,7 +42,7 @@
#
#application/msword application/postscript 50 mswordtops
#application/pdf application/postscript 50 pdftops
application/pdf application/postscript 50 pdftops
application/postscript application/vnd.cups-postscript 50 pstops
application/vnd.hp-HPGL application/postscript 50 hpgltops
image/* application/vnd.cups-postscript 50 imagetops
@@ -58,5 +58,5 @@ image/* application/vnd.cups-raster 50 imagetoraster
application/vnd.cups-postscript application/vnd.cups-raster 50 pstoraster
#
# End of "$Id: mime.convs 530 1999-07-13 14:11:17Z mike $".
# End of "$Id: mime.convs 575 1999-07-30 13:57:16Z mike $".
#
+4 -5
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: mime.types 487 1999-06-30 21:07:52Z mike $"
# "$Id: mime.types 575 1999-07-30 13:57:16Z mike $"
#
# MIME types file for the Common UNIX Printing System (CUPS).
#
@@ -92,10 +92,9 @@ image/x-sgi-rgb rgb sgi bw icon short(0,474)
image/x-xbitmap xbm
image/x-xpixmap xpm ascii(0,1024) + string(3,"XPM")
image/x-xwindowdump xwd
# TODO: Add Sun Raster, Alias, SoftImage, GIMP??? files
image/x-sun-raster ras
# TODO: Add Alias, SoftImage, GIMP??? files
#image/x-alias pix
#image/x-softimage
#image/x-gimp-xcf xcf xcf.gz
@@ -119,5 +118,5 @@ application/vnd.cups-raster string(0,"RaSt") string(0,"tSaR")
application/vnd.cups-raw
#
# End of "$Id: mime.types 487 1999-06-30 21:07:52Z mike $".
# End of "$Id: mime.types 575 1999-07-30 13:57:16Z mike $".
#
+2
Ver Arquivo
@@ -0,0 +1,2 @@
# This is a dummy printcap file that is automatically generated by the
# CUPS software for old applications that rely on it.
+10 -3
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: printers.conf 334 1999-05-17 18:11:26Z mike $"
# "$Id: printers.conf 678 1999-09-22 18:10:55Z mike $"
#
# Sample printer configuration file for the Common UNIX Printing System
# (CUPS) scheduler.
@@ -77,13 +77,20 @@
# State: sets the initial state of the printer. Can be one of the
# following:
#
# Idle - Printer is available to accept new jobs.
# Idle - Printer is available to print new jobs.
# Stopped - Printer is disabled but accepting new jobs.
#
#State Idle
#
# Accepting: is the printer accepting jobs?
#
#Accepting Yes
#Accepting No
#</Printer>
#
# End of "$Id: printers.conf 334 1999-05-17 18:11:26Z mike $".
# End of "$Id: printers.conf 678 1999-09-22 18:10:55Z mike $".
#
+1 -1
Ver Arquivo
@@ -28,7 +28,7 @@
* Version of software...
*/
#define CUPS_SVERSION "CUPS v1.0"
#define CUPS_SVERSION "CUPS v1.0b9"
/*
* Where are files stored?
+31 -13
Ver Arquivo
@@ -46,12 +46,7 @@ AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],
OPTIM="-g "
fi])
AC_ARG_ENABLE(shared, [ --disable-shared turn off shared libraries [default=no]])
if eval "test x$disable_shared = xyes"; then
PICFLAG=0
LIBCUPS="libcups.a"
LIBCUPSIMAGE="libcupsimage.a"
DSO=":"
else
if test "$disable_shared" != "yes"; then
case "$uname" in
SunOS* | UNIX_S*)
LIBCUPS="libcups.so.1"
@@ -63,7 +58,7 @@ else
LIBCUPSIMAGE="libcupsimage.sl.1"
DSO="ld -b -z +h \$@ -o"
;;
OSF1* | Linux*)
OSF1* | Linux* | FreeBSD*)
LIBCUPS="libcups.so.1"
LIBCUPSIMAGE="libcupsimage.so.1"
DSO="\$(CC) -Wl,-soname,\$@ -shared \$(OPTIM) -o"
@@ -81,6 +76,11 @@ else
DSO="\$(CC) -Wl,-soname,\$@ -shared \$(OPTIM) -o"
;;
esac
else
PICFLAG=0
LIBCUPS="libcups.a"
LIBCUPSIMAGE="libcupsimage.a"
DSO=":"
fi
dnl Checks for programs...
@@ -91,13 +91,14 @@ AC_PROG_RANLIB
AC_PATH_PROG(AR,ar)
AC_PATH_PROG(CHMOD,chmod)
AC_PATH_PROG(CP,cp)
AC_PATH_PROG(MV,mv)
AC_PATH_PROG(NROFF,nroff)
if test "$NROFF" = ""; then
AC_PATH_PROG(NROFF,groff)
if test "$NROFF" = ""; then
AC_PATH_PROG(GROFF,groff)
if test "$GROFF" = ""; then
NROFF="echo"
else
NROFF="$NROFF -T ascii"
NROFF="$GROFF -T ascii"
fi
fi
AC_PATH_PROG(HTMLDOC,htmldoc)
@@ -133,15 +134,18 @@ dnl Check for libraries...
AC_CHECK_LIB(c,crypt,LIBS="$LIBS",AC_CHECK_LIB(crypt,crypt))
AC_CHECK_HEADER(crypt.h, AC_DEFINE(HAVE_CRYPT_H))
AC_CHECK_LIB(sec,getspent)
NETLIBS=""
AC_SUBST(NETLIBS)
AC_CHECK_LIB(socket,socket,
if test "$uname" != "IRIX"; then
LIBS="$LIBS -lsocket"
NETLIBS="-lsocket"
else
echo "Not using -lsocket since you are running IRIX."
fi)
AC_CHECK_LIB(nsl,gethostbyaddr,
if test "$uname" != "IRIX"; then
LIBS="$LIBS -lnsl"
NETLIBS="$NETLIBS -lnsl"
else
echo "Not using -lnsl since you are running IRIX."
fi)
@@ -209,6 +213,7 @@ else
if test -z "$OPTIM"; then
OPTIM="+O2"
fi
OPTIM="-Ae $OPTIM"
;;
SunOS*)
# Solaris
@@ -238,6 +243,19 @@ if test "$DSO" != ":"; then
# a single DSO rather than a bunch...
DSOLIBS="\$(LIBJPEG) \$(LIBPNG) \$(LIBTIFF) \$(LIBZ)"
IMGLIBS=""
# The HP-UX and Solaris run-time linkers are EXTREMELY stupid when
# it comes to deciding where to find a DSO. Add linker options to
# tell them where to find the DSO (usually in /usr/lib... duh!)
case $uname in
HP-UX*)
LDFLAGS="$LDFLAGS -Wl,+b,$libdir,+fb"
;;
SunOS*)
# Solaris
LDFLAGS="-R$libdir"
;;
esac
else
DSOLIBS=""
IMGLIBS="\$(LIBJPEG) \$(LIBPNG) \$(LIBTIFF) \$(LIBZ)"
@@ -255,7 +273,7 @@ if test "$prefix" = "NONE"; then
fi
dnl Fix "libdir" variable for IRIX 6.x...
if test "$uname" = "IRIX" -a $uversion -ge 62; then
if test "$uname" = "IRIX" -a $uversion -ge 65; then
libdir="/usr/lib32"
fi
-345
Ver Arquivo
@@ -1,345 +0,0 @@
#
# "$Id: cups.list 529 1999-07-13 14:11:00Z mike $"
#
# ESP Package Manager (EPM) file list for the Common UNIX Printing
# System (CUPS).
#
# EPM can be found in the "epm" subdirectory of this distribution.
# Please report problems and fixes to Michael Sweet (mike@easysw.com).
#
# 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
# copyright law. Distribution and use rights are outlined in the file
# "LICENSE.txt" which should have been included with this file. If this
# file is missing or damaged please contact Easy Software Products
# at:
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44141 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
# EMail: cups-info@cups.org
# WWW: http://www.cups.org
#
%product Common UNIX Printing System
%copyright 1993-1999 by Easy Software Products, All Rights Reserved.
%vendor Easy Software Products
%license LICENSE.cups
%readme README.cups
%version 1.0b5
%incompat printpro
%system all
# Server files
f 0555 root sys /var/cups/backend/ipp backend/ipp
f 4555 root sys /var/cups/backend/lpd backend/lpd
f 0555 root sys /var/cups/backend/parallel backend/parallel
f 0555 root sys /var/cups/backend/serial backend/serial
f 0555 root sys /var/cups/backend/smb backend/smb
f 0555 root sys /var/cups/backend/socket backend/socket
f 0500 root sys /usr/sbin/cupsd scheduler/cupsd
f 0555 root sys /var/cups/cgi-bin/classes.cgi cgi-bin/classes.cgi
f 0555 root sys /var/cups/cgi-bin/jobs.cgi cgi-bin/jobs.cgi
f 0555 root sys /var/cups/cgi-bin/printers.cgi cgi-bin/printers.cgi
f 0555 root sys /var/cups/filter/pstoraster pstoraster/pstoraster
f 0555 root sys /var/cups/filter/imagetops filter/imagetops
f 0555 root sys /var/cups/filter/pstops filter/pstops
f 0555 root sys /var/cups/filter/texttops filter/texttops
f 0555 root sys /var/cups/filter/rastertohp filter/rastertohp
f 0555 root sys /var/cups/filter/hpgltops filter/hpgltops
f 0555 root sys /var/cups/filter/imagetoraster filter/imagetoraster
# User commands
f 0555 root sys /usr/bin/lp systemv/lp
f 0555 root sys /usr/bin/lpstat systemv/lpstat
f 0555 root sys /usr/lib/lpadmin systemv/lpadmin
f 0555 root sys /usr/bin/cancel systemv/cancel
f 0555 root sys /usr/lib/accept systemv/accept
l 0555 root sys /usr/lib/reject accept
l 0555 root sys /usr/bin/disable /usr/lib/accept
l 0555 root sys /usr/bin/enable /usr/lib/accept
f 0555 root sys /usr/sbin/lpc berkeley/lpc
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
# DSOs
%system hpux
f 0555 root sys /usr/lib/libcups.sl.1 cups/libcups.sl.1
l 0555 root sys /usr/lib/libcups.sl libcups.sl.1
f 0555 root sys /usr/lib/libcupsimage.sl.1 filter/libcupsimage.sl.1
l 0555 root sys /usr/lib/libcupsimage.sl libcupsimage.sl.1
%system irix irix64
f 0555 root sys /usr/lib32/libcups.so.1 cups/libcups.so.1
l 0555 root sys /usr/lib32/libcups.so libcups.so.1
f 0555 root sys /usr/lib32/libcupsimage.so.1 filter/libcupsimage.so.1
l 0555 root sys /usr/lib32/libcupsimage.so libcupsimage.so.1
%system dunix linux solaris sunos
f 0555 root sys /usr/lib/libcups.so.1 cups/libcups.so.1
l 0555 root sys /usr/lib/libcups.so libcups.so.1
f 0555 root sys /usr/lib/libcupsimage.so.1 filter/libcupsimage.so.1
l 0555 root sys /usr/lib/libcupsimage.so libcupsimage.so.1
%system all
# Directories
d 0755 root sys /var/cups/interfaces
d 0755 root sys /var/cups/logs
d 0755 root sys /var/cups/ppd
d 0755 root sys /var/cups/requests
# Data files
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
f 0444 root sys /usr/share/cups/data/8859-1 data/8859-1
f 0444 root sys /usr/share/cups/data/8859-14 data/8859-14
f 0444 root sys /usr/share/cups/data/8859-15 data/8859-15
f 0444 root sys /usr/share/cups/data/8859-2 data/8859-2
f 0444 root sys /usr/share/cups/data/8859-3 data/8859-3
f 0444 root sys /usr/share/cups/data/8859-4 data/8859-4
f 0444 root sys /usr/share/cups/data/8859-5 data/8859-5
f 0444 root sys /usr/share/cups/data/8859-6 data/8859-6
f 0444 root sys /usr/share/cups/data/8859-7 data/8859-7
f 0444 root sys /usr/share/cups/data/8859-8 data/8859-8
f 0444 root sys /usr/share/cups/data/8859-9 data/8859-9
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/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/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
f 0444 root sys /usr/share/cups/pstoraster/Fontmap pstoraster/Fontmap
f 0444 root sys /usr/share/cups/pstoraster/gs_l2img.ps pstoraster/gs_l2img.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_pfile.ps pstoraster/gs_pfile.ps
f 0444 root sys /usr/share/cups/pstoraster/pfbtogs.ps pstoraster/pfbtogs.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/gs_wan_e.ps pstoraster/gs_wan_e.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_sym_e.ps pstoraster/gs_sym_e.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_dbt_e.ps pstoraster/gs_dbt_e.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_iso_e.ps pstoraster/gs_iso_e.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_ttf.ps pstoraster/gs_ttf.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_pdf.ps pstoraster/gs_pdf.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_ccfnt.ps pstoraster/gs_ccfnt.ps
f 0444 root sys /usr/share/cups/pstoraster/pdf_sec.ps pstoraster/pdf_sec.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_res.ps pstoraster/gs_res.ps
f 0444 root sys /usr/share/cups/pstoraster/pdf_base.ps pstoraster/pdf_base.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_btokn.ps pstoraster/gs_btokn.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_diskf.ps pstoraster/gs_diskf.ps
f 0444 root sys /usr/share/cups/pstoraster/pdf_2ps.ps pstoraster/pdf_2ps.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_kanji.ps pstoraster/gs_kanji.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/gs_type1.ps pstoraster/gs_type1.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_statd.ps pstoraster/gs_statd.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_typ42.ps pstoraster/gs_typ42.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_cidfn.ps pstoraster/gs_cidfn.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_dps1.ps pstoraster/gs_dps1.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_cmap.ps pstoraster/gs_cmap.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_fform.ps pstoraster/gs_fform.ps
f 0444 root sys /usr/share/cups/pstoraster/pdf_main.ps pstoraster/pdf_main.ps
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
# Config files
c 0600 root sys /var/cups/conf/classes.conf conf/classes.conf
c 0600 root sys /var/cups/conf/cupsd.conf conf/cupsd.conf
c 0600 root sys /var/cups/conf/mime.convs conf/mime.convs
c 0600 root sys /var/cups/conf/mime.types conf/mime.types
c 0600 root sys /var/cups/conf/printers.conf conf/printers.conf
# Developer files
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/ipp.h cups/ipp.h
f 0444 root sys /usr/include/cups/language.h cups/language.h
f 0444 root sys /usr/include/cups/mime.h cups/mime.h
f 0444 root sys /usr/include/cups/ppd.h cups/ppd.h
f 0444 root sys /usr/include/cups/raster.h cups/raster.h
# This should only be done for IRIX 6.x (-n32)
%system irix irix64
f 0444 root sys /usr/lib32/libcups.a cups/libcups.a
%system hpux solaris sunos dunix linux
f 0444 root sys /usr/lib/libcups.a cups/libcups.a
%system all
# Documentation files
f 0444 root sys /usr/share/cups/doc/cmp.html doc/cmp.html
f 0444 root sys /usr/share/cups/doc/cmp.pdf doc/cmp.pdf
f 0444 root sys /usr/share/cups/doc/cupsdoc.css doc/cupsdoc.css
f 0444 root sys /usr/share/cups/doc/cups.css doc/cups.css
f 0444 root sys /usr/share/cups/doc/documentation.html doc/documentation.html
f 0444 root sys /usr/share/cups/doc/idd.html doc/idd.html
f 0444 root sys /usr/share/cups/doc/idd.pdf doc/idd.pdf
f 0444 root sys /usr/share/cups/doc/images/classes.gif doc/images/classes.gif
f 0444 root sys /usr/share/cups/doc/images/cups-bar.gif doc/images/cups-bar.gif
f 0444 root sys /usr/share/cups/doc/images/cups-block-diagram.gif doc/images/cups-block-diagram.gif
f 0444 root sys /usr/share/cups/doc/images/cups-large.gif doc/images/cups-large.gif
f 0444 root sys /usr/share/cups/doc/images/cups-medium.gif doc/images/cups-medium.gif
f 0444 root sys /usr/share/cups/doc/images/cups-small.gif doc/images/cups-small.gif
f 0444 root sys /usr/share/cups/doc/images/logo.gif doc/images/logo.gif
f 0444 root sys /usr/share/cups/doc/images/navbar.gif doc/images/navbar.gif
f 0444 root sys /usr/share/cups/doc/images/printer-idle.gif doc/images/printer-idle.gif
f 0444 root sys /usr/share/cups/doc/images/printer-processing.gif doc/images/printer-processing.gif
f 0444 root sys /usr/share/cups/doc/images/printer-stopped.gif doc/images/printer-stopped.gif
f 0444 root sys /usr/share/cups/doc/index.html doc/index.html
f 0444 root sys /usr/share/cups/doc/overview.html doc/overview.html
f 0444 root sys /usr/share/cups/doc/overview.pdf doc/overview.pdf
f 0444 root sys /usr/share/cups/doc/sam.html doc/sam.html
f 0444 root sys /usr/share/cups/doc/sam.pdf doc/sam.pdf
f 0444 root sys /usr/share/cups/doc/sdd.html doc/sdd.html
f 0444 root sys /usr/share/cups/doc/sdd.pdf doc/sdd.pdf
f 0444 root sys /usr/share/cups/doc/ssr.html doc/ssr.html
f 0444 root sys /usr/share/cups/doc/ssr.pdf doc/ssr.pdf
f 0444 root sys /usr/share/cups/doc/stp.html doc/stp.html
f 0444 root sys /usr/share/cups/doc/stp.pdf doc/stp.pdf
f 0444 root sys /usr/share/cups/doc/sum.html doc/sum.html
f 0444 root sys /usr/share/cups/doc/sum.pdf doc/sum.pdf
f 0444 root sys /usr/share/cups/doc/svd.html doc/svd.html
f 0444 root sys /usr/share/cups/doc/svd.pdf doc/svd.pdf
# Man pages
%system irix irix64
f 0444 root sys /usr/share/catman/a_man/cat1/accept.z man/accept.z
l 0444 root sys /usr/share/catman/a_man/cat1/reject.z accept.z
f 0444 root sys /usr/share/catman/u_man/cat1/backend.z man/backend.z
f 0444 root sys /usr/share/catman/u_man/cat5/classes.conf.z man/classes.conf.z
f 0444 root sys /usr/share/catman/u_man/cat5/cupsd.conf.z man/cupsd.conf.z
f 0444 root sys /usr/share/catman/a_man/cat1/cupsd.z man/cupsd.z
f 0444 root sys /usr/share/catman/a_man/cat1/enable.z man/enable.z
l 0444 root sys /usr/share/catman/a_man/cat1/disable.z enable.z
f 0444 root sys /usr/share/catman/u_man/cat1/filter.z man/filter.z
f 0444 root sys /usr/share/catman/a_man/cat1/lpadmin.z man/lpadmin.z
f 0444 root sys /usr/share/catman/a_man/cat1/lpc.z man/lpc.z
f 0444 root sys /usr/share/catman/u_man/cat1/lprm.z man/lprm.z
f 0444 root sys /usr/share/catman/u_man/cat1/lpr.z man/lpr.z
f 0444 root sys /usr/share/catman/u_man/cat1/lpstat.z man/lpstat.z
f 0444 root sys /usr/share/catman/u_man/cat1/lp.z man/lp.z
l 0444 root sys /usr/share/catman/u_man/cat1/cancel.z lp.z
f 0444 root sys /usr/share/catman/u_man/cat5/mime.convs.z man/mime.convs.z
f 0444 root sys /usr/share/catman/u_man/cat5/mime.types.z man/mime.types.z
f 0444 root sys /usr/share/catman/u_man/cat5/printers.conf.z man/printers.conf.z
%system hpux linux dunix solaris sunos
f 0444 root sys /usr/man/man8/accept.8 man/accept.8
l 0444 root sys /usr/man/man8/reject.8 accept.8
f 0444 root sys /usr/man/man1/backend.1 man/backend.1
f 0444 root sys /usr/man/man1/classes.conf.5 man/classes.conf.5
f 0444 root sys /usr/man/man8/cupsd.8 man/cupsd.8
f 0444 root sys /usr/man/man5/cupsd.conf.5 man/cupsd.conf.5
f 0444 root sys /usr/man/man8/enable.8 man/enable.8
l 0444 root sys /usr/man/man8/disable.8 enable.8
f 0444 root sys /usr/man/man1/filter.1 man/filter.1
f 0444 root sys /usr/man/man8/lpadmin.8 man/lpadmin.8
f 0444 root sys /usr/man/man8/lpc.8 man/lpc.8
f 0444 root sys /usr/man/man1/lprm.1 man/lprm.1
f 0444 root sys /usr/man/man1/lpr.1 man/lpr.1
f 0444 root sys /usr/man/man1/lpstat.1 man/lpstat.1
f 0444 root sys /usr/man/man1/lp.1 man/lp.1
l 0444 root sys /usr/man/man1/cancel.1 lp.1
f 0444 root sys /usr/man/man5/mime.convs.5 man/mime.convs.5
f 0444 root sys /usr/man/man5/mime.types.5 man/mime.types.5
f 0444 root sys /usr/man/man5/printers.conf.5 man/printers.conf.5
# Startup scripts
%system hpux
%install /sbin/init.d/cups start
%remove /sbin/init.d/cups stop
%patch /sbin/init.d/cups stop
f 0555 root sys /sbin/init.d/cups cups.sh
l 0555 root sys /sbin/rc1.d/K280cups ../init.d/cups
l 0555 root sys /sbin/rc2.d/S720cups ../init.d/cups
%system irix irix64
%install /sbin/chkconfig -f cups on
%install /etc/init.d/cups start
%remove /etc/init.d/cups stop
%patch /etc/init.d/cups stop
f 0555 root sys /etc/init.d/cups cups.sh
l 0555 root sys /etc/rc0.d/K25cups ../init.d/cups
l 0555 root sys /etc/rc2.d/S60cups ../init.d/cups
%system linux
%install /etc/rc.d/init.d/cups start
%remove /etc/rc.d/init.d/cups stop
%patch /etc/rc.d/init.d/cups stop
f 0555 root sys /etc/rc.d/init.d/cups cups.sh
l 0555 root sys /etc/rc.d/rc2.d/S60cups ../init.d/cups
l 0555 root sys /etc/rc.d/rc3.d/S60cups ../init.d/cups
l 0555 root sys /etc/rc.d/rc4.d/S60cups ../init.d/cups
l 0555 root sys /etc/rc.d/rc5.d/S60cups ../init.d/cups
l 0555 root sys /etc/rc.d/rc0.d/K60cups ../init.d/cups
l 0555 root sys /etc/rc.d/rc1.d/K60cups ../init.d/cups
l 0555 root sys /etc/rc.d/rc6.d/K60cups ../init.d/cups
%system dunix
%install /sbin/init.d/cups start
%remove /sbin/init.d/cups stop
%patch /sbin/init.d/cups stop
f 0555 root sys /sbin/init.d/cups cups.sh
l 0555 root sys /sbin/rc0.d/K05cups ../init.d/cups
l 0555 root sys /sbin/rc2.d/K00cups ../init.d/cups
l 0555 root sys /sbin/rc3.d/S65cups ../init.d/cups
%system sunos solaris
%install /etc/init.d/cups start
%remove /etc/init.d/cups stop
%patch /etc/init.d/cups stop
f 0555 root sys /etc/init.d/cups cups.sh
l 0555 root sys /etc/rc0.d/K20cups ../init.d/cups
l 0555 root sys /etc/rc2.d/S80cups ../init.d/cups
#
# End of "$Id: cups.list 529 1999-07-13 14:11:00Z mike $".
#
+64 -16
Ver Arquivo
@@ -4,6 +4,12 @@
#
# Startup/shutdown script for the Common UNIX Printing System (CUPS).
#
# Linux chkconfig stuff:
#
# chkconfig: 2345 60 60
# description: Startup/shutdown script for the Common UNIX \
# Printing System (CUPS).
#
# Copyright 1997-1999 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
@@ -23,7 +29,26 @@
# WWW: http://www.cups.org
#
# See if the CUPS daemon is running, and if so stop it...
# See what program to use for configuration stuff...
case "`uname`" in
IRIX*)
IS_ON=/sbin/chkconfig
;;
*)
IS_ON=/bin/true
;;
esac
# The verbose flag controls the printing of the names of
# daemons as they are started.
if $IS_ON verbose; then
ECHO=echo
else
ECHO=:
fi
# See if the CUPS server is running...
case "`uname`" in
IRIX* | HP-UX | SunOS)
pid=`ps -e | awk '{print $1,$4}' | grep cupsd | awk '{print $1}'`
@@ -39,26 +64,49 @@ case "`uname`" in
;;
esac
# Start or stop the CUPS server based upon the first argument to the script.
case $1 in
start | restart)
if test "$pid" != ""; then
echo "Restarting CUPS scheduler..."
kill -HUP $pid
else
echo "Starting CUPS scheduler..."
/usr/sbin/cupsd 2>&1 >/dev/null &
fi
;;
start | restart | reload)
if test "$pid" != ""; then
if $IS_ON cups; then
kill -HUP $pid
$ECHO "cups: scheduler restarted."
else
kill $pid
$ECHO "cups: scheduler stopped."
fi
else
if $IS_ON cups; then
/usr/sbin/cupsd 2>&1 >/dev/null &
$ECHO "cups: scheduler started."
fi
fi
;;
stop)
if test "$pid" != ""; then
echo "Stopping CUPS scheduler..."
kill $pid
sleep 1
fi
;;
if test "$pid" != ""; then
kill $pid
$ECHO "cups: scheduler stopped."
fi
;;
status)
if test "$pid" != ""; then
echo "cups: Scheduler is running."
else
echo "cups: Scheduler is not running."
fi
;;
*)
echo "Usage: cups {reload|restart|start|status|stop}"
exit 1
;;
esac
exit 0
#
# End of "$Id$".
#
+43 -41
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: cups.spec 505 1999-07-08 15:00:20Z mike $"
# "$Id: cups.spec 714 1999-10-01 14:40:53Z mike $"
#
# RPM "spec" file for the Common UNIX Printing System (CUPS).
#
@@ -26,11 +26,11 @@
Summary: Common Unix Printing System
Name: cups
Version: 1.0b5
Version: 1.0
Release: 0
Copyright: GPL
Group: System Environment/Daemons
Source: ftp://ftp.easysw.com/pub/cups/beta/cups-1.0b5-source.tar.gz
Source: ftp://ftp.easysw.com/pub/cups/beta/cups-1.0-source.tar.gz
Url: http://www.cups.org
Packager: Michael Sweet <mike@easysw.com>
Vendor: Easy Software Products
@@ -66,28 +66,29 @@ make
# these lines just make sure the directory structure in the
# RPM_BUILD_ROOT exists
rm -rf $RPM_BUILD_ROOT
mkdir $RPM_BUILD_ROOT/etc
mkdir $RPM_BUILD_ROOT/etc/rc.d
mkdir $RPM_BUILD_ROOT/etc/rc.d/init.d
mkdir $RPM_BUILD_ROOT/usr
mkdir $RPM_BUILD_ROOT/usr/bin
mkdir $RPM_BUILD_ROOT/usr/lib
mkdir $RPM_BUILD_ROOT/usr/man
mkdir $RPM_BUILD_ROOT/usr/man/man1
mkdir $RPM_BUILD_ROOT/usr/man/man5
mkdir $RPM_BUILD_ROOT/usr/man/man8
mkdir $RPM_BUILD_ROOT/usr/share/locale
mkdir $RPM_BUILD_ROOT/var/cups
mkdir $RPM_BUILD_ROOT/var/cups/conf
mkdir $RPM_BUILD_ROOT/var/cups/logs
mkdir $RPM_BUILD_ROOT/var/logs
mkdir -p $RPM_BUILD_ROOT/etc
mkdir -p $RPM_BUILD_ROOT/etc/rc.d
mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
mkdir -p $RPM_BUILD_ROOT/usr
mkdir -p $RPM_BUILD_ROOT/usr/bin
mkdir -p $RPM_BUILD_ROOT/usr/lib
mkdir -p $RPM_BUILD_ROOT/usr/man
mkdir -p $RPM_BUILD_ROOT/usr/man/man1
mkdir -p $RPM_BUILD_ROOT/usr/man/man5
mkdir -p $RPM_BUILD_ROOT/usr/man/man8
mkdir -p $RPM_BUILD_ROOT/usr/share/locale
mkdir -p $RPM_BUILD_ROOT/var/cups
mkdir -p $RPM_BUILD_ROOT/var/cups/conf
mkdir -p $RPM_BUILD_ROOT/var/cups/logs
mkdir -p $RPM_BUILD_ROOT/var/logs
ln -sf /var/cups/logs $RPM_BUILD_ROOT/var/logs/cups
ln -sf /var/cups/conf $RPM_BUILD_ROOT/etc/cups
make prefix=$RPM_BUILD_ROOT/usr DATADIR=$RPM_BUILD_ROOT/usr/share/cups LOCALEDIR=$RPM_BUILD_ROOT/usr/share/locale SERVERROOT=$RPM_BUILD_ROOT/var/cups install
install -m 755 -o root -g root $RPM_SOURCE_DIR/cups.sh $RPM_BUILD_ROOT/etc/rc.d/init.d/cups
$RPM_BUILD_ROOT/etc/rc.d/init.d/cups
install -m 755 -o root -g root cups.sh $RPM_BUILD_ROOT/etc/rc.d/init.d/cups
%post
/sbin/chkconfig --add cups
@@ -105,9 +106,6 @@ rm -rf $RPM_BUILD_ROOT
%config /var/cups/conf/mime.convs
%config /var/cups/conf/mime.types
%config /var/cups/conf/printers.conf
/usr/lib/accept
/usr/lib/lpadmin
/usr/lib/reject
/usr/bin/lpr
/usr/bin/lprm
/usr/bin/disable
@@ -115,6 +113,11 @@ rm -rf $RPM_BUILD_ROOT
/usr/bin/cancel
/usr/bin/lp
/usr/bin/lpstat
/usr/lib/accept
/usr/lib/libcups.so.1
/usr/lib/libcupsimage.so.1
/usr/lib/lpadmin
/usr/lib/reject
/usr/man/man1/backend.1
/usr/man/man1/filter.1
/usr/man/man1/lprm.1
@@ -134,23 +137,25 @@ rm -rf $RPM_BUILD_ROOT
/usr/man/man8/lpc.8
/usr/man/man8/reject.8
/usr/man/man8/disable.8
/usr/sbin/lpc
/usr/sbin/accept
/usr/sbin/cupsd
/usr/lib/libcups.so.1
/usr/lib/libcupsimage.so.1
/usr/sbin/lpadmin
/usr/sbin/lpc
/usr/sbin/reject
%dir /usr/share/cups
/usr/share/cups/8859-1
/usr/share/cups/8859-14
/usr/share/cups/8859-15
/usr/share/cups/8859-2
/usr/share/cups/8859-3
/usr/share/cups/8859-4
/usr/share/cups/8859-5
/usr/share/cups/8859-6
/usr/share/cups/8859-7
/usr/share/cups/8859-8
/usr/share/cups/8859-9
/usr/share/cups/HPGLprolog
/usr/share/cups/data/8859-1
/usr/share/cups/data/8859-14
/usr/share/cups/data/8859-15
/usr/share/cups/data/8859-2
/usr/share/cups/data/8859-3
/usr/share/cups/data/8859-4
/usr/share/cups/data/8859-5
/usr/share/cups/data/8859-6
/usr/share/cups/data/8859-7
/usr/share/cups/data/8859-8
/usr/share/cups/data/8859-9
/usr/share/cups/data/HPGLprolog
/usr/share/cups/data/psglyphs
/usr/share/cups/doc/cmp.html
/usr/share/cups/doc/cmp.pdf
/usr/share/cups/doc/cups.css
@@ -272,7 +277,6 @@ rm -rf $RPM_BUILD_ROOT
/var/cups/backend/lpd
/var/cups/backend/parallel
/var/cups/backend/serial
/var/cups/backend/smb
/var/cups/backend/socket
/var/cups/cgi-bin/classes.cgi
/var/cups/cgi-bin/jobs.cgi
@@ -299,9 +303,7 @@ rm -rf $RPM_BUILD_ROOT
/usr/include/cups/mime.h
/usr/include/cups/ppd.h
/usr/include/cups/raster.h
/usr/lib/libcups.so
/usr/lib/libcupsimage.so
#
# End of "$Id: cups.spec 505 1999-07-08 15:00:20Z mike $".
# End of "$Id: cups.spec 714 1999-10-01 14:40:53Z mike $".
#
+12 -11
Ver Arquivo
@@ -28,9 +28,10 @@ include ../Makedefs
# Object files...
#
OBJS = emit.o filter.o http.o ipp.o language.o mark.o mime.o \
LIBOBJS = emit.o filter.o http.o ipp.o language.o mark.o mime.o \
options.o page.o ppd.o raster.o string.o type.o usersys.o \
util.o
OBJS = $(LIBOBJS) testhttp.o testmime.o testppd.o
#
# Header files to install...
@@ -42,7 +43,7 @@ HEADERS = cups.h http.h ipp.h language.h mime.h ppd.h raster.h
# Targets in this directory...
#
TARGETS = $(LIBCUPS) testmime testppd testhttp
TARGETS = $(LIBCUPS) testhttp testmime testppd
#
# Make all targets...
@@ -67,26 +68,26 @@ install: all
-$(MKDIR) $(LIBDIR)
$(CP) $(LIBCUPS) $(LIBDIR)
if test $(LIBCUPS) != "libcups.a"; then \
$(LN) $(LIBCUPS) `basename $(LIBCUPS) .1` \
$(LN) $(LIBCUPS) `basename $(LIBCUPS) .1`; \
fi
#
# libcups.so.1, libcups.sl.1
#
libcups.so.1 libcups.sl.1: $(OBJS) ../Makedefs
libcups.so.1 libcups.sl.1: $(LIBOBJS) ../Makedefs
echo Linking $@...
$(DSO) $@ $(OBJS)
$(LN) $@ `basename $@ .1`
$(DSO) $@ $(LIBOBJS)
-$(LN) $@ `basename $@ .1`
#
# libcups.a
#
libcups.a: $(OBJS)
libcups.a: $(LIBOBJS)
echo Archiving $@...
$(RM) $@
$(AR) $(ARFLAGS) $@ $(OBJS)
$(AR) $(ARFLAGS) $@ $(LIBOBJS)
$(RANLIB) $@
#
@@ -120,7 +121,7 @@ util.o: cups.h http.h ipp.h ../config.h ../Makedefs
testhttp: testhttp.o libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ testhttp.o libcups.a $(LIBS)
$(CC) $(LDFLAGS) -o $@ testhttp.o libcups.a $(NETLIBS)
testhttp.o: http.h ../Makedefs
@@ -130,7 +131,7 @@ testhttp.o: http.h ../Makedefs
testmime: testmime.o libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ testmime.o libcups.a $(LIBS)
$(CC) $(LDFLAGS) -o $@ testmime.o libcups.a
testmime.o: mime.h ../Makedefs
@@ -140,7 +141,7 @@ testmime.o: mime.h ../Makedefs
testppd: testppd.o libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ testppd.o libcups.a $(LIBS)
$(CC) $(LDFLAGS) -o $@ testppd.o libcups.a $(NETLIBS)
testppd.o: ppd.h ../Makedefs
+176
Ver Arquivo
@@ -0,0 +1,176 @@
# Microsoft Developer Studio Project File - Name="cups" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
CFG=cups - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "cups.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "cups.mak" CFG="cups - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "cups - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "cups - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "cups - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\visualc" /I ".." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"cups.lib"
!ELSEIF "$(CFG)" == "cups - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\visualc" /I ".." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"cupsd.lib"
!ENDIF
# Begin Target
# Name "cups - Win32 Release"
# Name "cups - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\emit.c
# End Source File
# Begin Source File
SOURCE=.\filter.c
# End Source File
# Begin Source File
SOURCE=.\http.c
# End Source File
# Begin Source File
SOURCE=.\ipp.c
# End Source File
# Begin Source File
SOURCE=.\language.c
# End Source File
# Begin Source File
SOURCE=.\mark.c
# End Source File
# Begin Source File
SOURCE=.\mime.c
# End Source File
# Begin Source File
SOURCE=.\options.c
# End Source File
# Begin Source File
SOURCE=.\page.c
# End Source File
# Begin Source File
SOURCE=.\ppd.c
# End Source File
# Begin Source File
SOURCE=.\raster.c
# End Source File
# Begin Source File
SOURCE=.\string.c
# End Source File
# Begin Source File
SOURCE=.\type.c
# End Source File
# Begin Source File
SOURCE=.\util.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=.\cups.h
# End Source File
# Begin Source File
SOURCE=.\http.h
# End Source File
# Begin Source File
SOURCE=.\ipp.h
# End Source File
# Begin Source File
SOURCE=.\language.h
# End Source File
# Begin Source File
SOURCE=.\mime.h
# End Source File
# Begin Source File
SOURCE=.\ppd.h
# End Source File
# Begin Source File
SOURCE=.\raster.h
# End Source File
# End Group
# End Target
# End Project
+1 -1
Ver Arquivo
@@ -117,7 +117,7 @@ extern int cupsGetPrinters(char ***printers);
extern int cupsPrintFile(const char *printer, const char *filename,
const char *title, int num_options,
cups_option_t *options);
extern char *cupsTempFile(char *filename, int len);
extern int cupsAddOption(const char *name, const char *value,
int num_options, cups_option_t **options);
extern void cupsFreeOptions(int num_options, cups_option_t *options);
+123
Ver Arquivo
@@ -0,0 +1,123 @@
"us-ascii",
"OK",
"Cancel",
"Help",
"Quit",
"Close",
"Yes",
"No",
"On",
"Off",
"Save",
"Discard",
"Default",
"Options",
"More Info",
"Black",
"Color",
"Cyan",
"Magenta",
"Yellow",
"Copyright 1993-1999 by Easy Software Products, All Rights Reserved.",
"General",
"Printer",
"Image Options",
"HP-GL/2 Options",
"Extra",
"Document",
"Other",
"Print Pages: ",
"Entire Document",
"Page Range:",
"Reverse Order: ",
"Page Format: ",
" 1-Up",
" 2-Up",
" 4-Up",
"Image Scaling: ",
"Use Natural Image Size",
"Zoom by Percent",
"Zoom by PPI",
"Mirror Image: ",
"Color Saturation: ",
"Color Hue: ",
"Fit to Page: ",
"Shading: ",
"Pen Width: ",
"Gamma Correction: ",
"Brightness: ",
"Add",
"Delete",
"Modify",
"Printer URI",
"Printer Name",
"Printer Location",
"Printer Info",
"Printer Make and Model",
"Device URI",
"Formatting Page",
"Printing Page",
"Initializing Printer",
"Printer State",
"Accepting Jobs",
"Not Accepting Jobs",
"Print Jobs",
"Class",
"Local",
"Remote",
"Duplexing",
"Stapling",
"Fast Copies",
"Collated Copies",
"Hole Punching",
"Covering",
"Binding",
"Sorting",
"Small (up to 9.5x14in)",
"Medium (9.5x14in to 13x19in)",
"Large (13x19in and larger)",
"Custom Size",
"Idle",
"Processing",
"Stopped",
"All",
"Odd",
"Even Pages",
"Darker Lighter",
"Media Size",
"Media Type",
"Media Source",
"Orientation: ",
"Portrait",
"Landscape",
"Job State",
"Job Name",
"User Name",
"Priority",
"Copies",
"File Size",
"Pending",
"Output Mode",
"Resolution",
"400 Your browser sent a request that this server could not understand.",
"This server could not verify that you are authorized to access the resource.",
"You must pay to access this server.",
"You don't have permission to access the resource on this server.",
"The requested resource was not found on this server.",
"The requested method is not allowed with the resource.",
"An appropriate representation for the resource was not found on this server.",
"You don't have permission to use this server as a proxy host.",
"The request has taken too long to complete and has been aborted.",
"The requested resource has more than one value.",
"The requested resource is gone and has not been replaced.",
"The requested method requires a valid Content-Length.",
"The precondition on the request evaluated to false.",
"The request is too large for this server to process.",
"The request URI is too large for this server to process.",
"The request format is not understood by this server.",
"500 The server has detected an unrecoverable error and cannot process your request.",
"The requested method is not implemented by this server.",
"The proxy server received an invalid response from an upstream server.",
"The requested resource is currently unavailable on this server.",
"The proxy server has taken too long to respond to this server.",
"This server does not support the HTTP version required by your browser.",
+1 -1
Ver Arquivo
@@ -107,7 +107,7 @@ ppdEmit(ppd_file_t *ppd, /* I - PPD file record */
*/
fputs("pop pop pop\n", fp);
fputs("<</PageSize[7 -2 roll]/ImagingBBox null>>setpagedevice\n", fp);
fputs("<</PageSize[5 -2 roll]/ImagingBBox null>>setpagedevice\n", fp);
}
}
+145 -37
Ver Arquivo
@@ -25,6 +25,8 @@
*
* httpInitialize() - Initialize the HTTP interface library and set the
* default HTTP proxy (if any).
* httpCheck() - Check to see if there is a pending response from
* the server.
* httpClose() - Close an HTTP connection...
* httpConnect() - Connect to a HTTP server.
* httpReconnect() - Reconnect to a HTTP server...
@@ -66,6 +68,7 @@
#include <ctype.h>
#include "string.h"
#include <fcntl.h>
#include <errno.h>
#include "http.h"
#include "ipp.h"
@@ -189,6 +192,41 @@ httpInitialize(void)
}
/*
* 'httpCheck()' - Check to see if there is a pending response from the server.
*/
int /* O - 0 = no data, 1 = data available */
httpCheck(http_t *http) /* I - HTTP connection */
{
fd_set input; /* Input set for select() */
struct timeval timeout; /* Timeout */
/*
* First see if there is data in the buffer...
*/
if (http == NULL)
return (0);
if (http->used)
return (1);
/*
* Then try doing a select() to poll the socket...
*/
FD_ZERO(&input);
FD_SET(http->fd, &input);
timeout.tv_sec = 0;
timeout.tv_usec = 0;
return (select(http->fd + 1, &input, NULL, NULL, &timeout) > 0);
}
/*
* 'httpClose()' - Close an HTTP connection...
*/
@@ -291,7 +329,11 @@ httpReconnect(http_t *http) /* I - HTTP data */
*/
if ((http->fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
http->error = errno;
http->status = HTTP_ERROR;
return (-1);
}
#ifdef FD_CLOEXEC
fcntl(http->fd, F_SETFD, FD_CLOEXEC); /* Close this socket when starting *
@@ -313,6 +355,9 @@ httpReconnect(http_t *http) /* I - HTTP data */
if (connect(http->fd, (struct sockaddr *)&(http->hostaddr),
sizeof(http->hostaddr)) < 0)
{
http->error = errno;
http->status = HTTP_ERROR;
#ifdef WIN32
closesocket(http->fd);
#else
@@ -322,6 +367,9 @@ httpReconnect(http_t *http) /* I - HTTP data */
return (-1);
}
http->error = 0;
http->status = HTTP_CONTINUE;
return (0);
}
@@ -647,6 +695,11 @@ httpRead(http_t *http, /* I - HTTP data */
* data, go idle...
*/
if (http->data_encoding == HTTP_ENCODE_CHUNKED &&
(http->state == HTTP_GET_SEND || http->state == HTTP_POST_RECV ||
http->state == HTTP_POST_SEND || http->state == HTTP_PUT_RECV))
httpGets(len, sizeof(len), http);
if (http->state == HTTP_POST_RECV)
http->state ++;
else
@@ -681,13 +734,23 @@ httpRead(http_t *http, /* I - HTTP data */
if (bytes > 0)
http->data_remaining -= bytes;
else if (bytes < 0)
http->error = errno;
if (http->data_remaining == 0 && http->data_encoding != HTTP_ENCODE_CHUNKED)
if (http->data_remaining == 0)
{
if (http->state == HTTP_POST_RECV)
http->state ++;
else
http->state = HTTP_WAITING;
if (http->data_encoding == HTTP_ENCODE_CHUNKED &&
(http->state == HTTP_GET_SEND || http->state == HTTP_POST_RECV ||
http->state == HTTP_POST_SEND || http->state == HTTP_PUT_RECV))
httpGets(len, sizeof(len), http);
if (http->data_encoding != HTTP_ENCODE_CHUNKED)
{
if (http->state == HTTP_POST_RECV)
http->state ++;
else
http->state = HTTP_WAITING;
}
}
return (bytes);
@@ -716,11 +779,8 @@ httpWrite(http_t *http, /* I - HTTP data */
if (http->data_encoding == HTTP_ENCODE_CHUNKED &&
(http->state == HTTP_GET_SEND || http->state == HTTP_POST_RECV ||
http->state == HTTP_POST_SEND || http->state == HTTP_PUT_RECV))
{
sprintf(len, "%x\r\n", length);
if (send(http->fd, len, strlen(len), 0) < 3)
if (httpPrintf(http, "%x\r\n", length) < 0)
return (-1);
}
if (length == 0)
{
@@ -745,6 +805,7 @@ httpWrite(http_t *http, /* I - HTTP data */
if (bytes < 0)
{
DEBUG_puts("httpWrite: error writing data...\n");
return (-1);
}
@@ -755,6 +816,12 @@ httpWrite(http_t *http, /* I - HTTP data */
http->data_remaining -= bytes;
}
if (http->data_encoding == HTTP_ENCODE_CHUNKED &&
(http->state == HTTP_GET_SEND || http->state == HTTP_POST_RECV ||
http->state == HTTP_POST_SEND || http->state == HTTP_PUT_RECV))
if (httpPrintf(http, "\r\n") < 0)
return (-1);
if (http->data_remaining == 0 && http->data_encoding == HTTP_ENCODE_LENGTH)
{
/*
@@ -797,6 +864,8 @@ httpGets(char *line, /* I - Line to read into */
* Pre-scan the buffer and see if there is a newline in there...
*/
errno = 0;
do
{
bufptr = http->buffer;
@@ -814,23 +883,36 @@ httpGets(char *line, /* I - Line to read into */
* No newline; see if there is more data to be read...
*/
if ((bytes = recv(http->fd, bufend, HTTP_MAX_BUFFER - http->used, 0)) < 1)
if ((bytes = recv(http->fd, bufend, HTTP_MAX_BUFFER - http->used, 0)) < 0)
{
/*
* Nope, can't get a line this time...
*/
if (errno != http->error)
{
http->error = errno;
continue;
}
DEBUG_printf(("httpGets(): recv() error %d!\n", errno));
return (NULL);
}
else
else if (bytes == 0)
{
/*
* Yup, update the amount used and the end pointer...
*/
if (http->blocking)
http->error = EPIPE;
http->used += bytes;
bufend += bytes;
return (NULL);
}
/*
* Yup, update the amount used and the end pointer...
*/
http->used += bytes;
bufend += bytes;
}
}
while (bufptr >= bufend);
@@ -858,6 +940,7 @@ httpGets(char *line, /* I - Line to read into */
if (http->used > 0)
memcpy(http->buffer, bufptr, http->used);
DEBUG_printf(("httpGets(): Returning \"%s\"\n", line));
return (line);
}
else if (*bufptr == 0x0d)
@@ -866,6 +949,8 @@ httpGets(char *line, /* I - Line to read into */
*lineptr++ = *bufptr++;
}
DEBUG_puts("httpGets(): No new line available!");
return (NULL);
}
@@ -879,8 +964,11 @@ httpPrintf(http_t *http, /* I - HTTP data */
const char *format, /* I - printf-style format string */
...) /* I - Additional args as needed */
{
int bytes; /* Number of bytes to write */
char buf[HTTP_MAX_BUFFER]; /* Buffer for formatted string */
int bytes, /* Number of bytes to write */
nbytes, /* Number of bytes written */
tbytes; /* Number of bytes all together */
char buf[HTTP_MAX_BUFFER], /* Buffer for formatted string */
*bufptr; /* Pointer into buffer */
va_list ap; /* Variable argument pointer */
@@ -890,7 +978,11 @@ httpPrintf(http_t *http, /* I - HTTP data */
DEBUG_printf(("httpPrintf: %s", buf));
return (send(http->fd, buf, bytes, 0));
for (tbytes = 0, bufptr = buf; tbytes < bytes; tbytes += nbytes, bufptr += nbytes)
if ((nbytes = send(http->fd, bufptr, bytes - tbytes, 0)) < 0)
return (-1);
return (bytes);
}
@@ -1089,7 +1181,20 @@ httpUpdate(http_t *http) /* I - HTTP data */
httpSetField(http, field, value);
}
else
{
http->status = HTTP_ERROR;
return (HTTP_ERROR);
}
}
/*
* See if there was an error...
*/
if (http->error)
{
http->status = HTTP_ERROR;
return (HTTP_ERROR);
}
/*
@@ -1326,6 +1431,13 @@ http_send(http_t *http, /* I - HTTP data */
*ptr = '\0';
/*
* See if we had an error the last time around; if so, reconnect...
*/
if (http->status == HTTP_ERROR || http->status >= HTTP_BAD_REQUEST)
httpReconnect(http);
/*
* Send the request header...
*/
@@ -1334,22 +1446,12 @@ http_send(http_t *http, /* I - HTTP data */
if (request == HTTP_POST || request == HTTP_PUT)
http->state ++;
if (httpPrintf(http, "%s %s HTTP/1.1\n", codes[request], buf) < 1)
http->status = HTTP_CONTINUE;
if (httpPrintf(http, "%s %s HTTP/1.1\r\n", codes[request], buf) < 1)
{
/*
* Might have lost connection; try to reconnect...
*/
if (httpReconnect(http))
return (-1);
/*
* OK, we've reconnected, send the request again...
*/
if (httpPrintf(http, "%s %s HTTP/%d.%d\n", codes[request], buf,
http->version / 100, http->version % 100) < 1)
return (-1);
http->status = HTTP_ERROR;
return (-1);
}
for (i = 0; i < HTTP_FIELD_MAX; i ++)
@@ -1357,12 +1459,18 @@ http_send(http_t *http, /* I - HTTP data */
{
DEBUG_printf(("%s: %s\n", http_fields[i], http->fields[i]));
if (httpPrintf(http, "%s: %s\n", http_fields[i], http->fields[i]) < 1)
return (-1);
if (httpPrintf(http, "%s: %s\r\n", http_fields[i], http->fields[i]) < 1)
{
http->status = HTTP_ERROR;
return (-1);
}
}
if (httpPrintf(http, "\n") < 1)
if (httpPrintf(http, "\r\n") < 1)
{
http->status = HTTP_ERROR;
return (-1);
}
httpClearFields(http);
+3
Ver Arquivo
@@ -221,6 +221,7 @@ typedef struct
{
int fd; /* File descriptor for this socket */
int blocking; /* To block or not to block */
int error; /* Last error on read */
time_t activity; /* Time since last read/write */
http_state_t state; /* State of client */
http_status_t status; /* Status of last request */
@@ -245,11 +246,13 @@ typedef struct
*/
# define httpBlocking(http,b) (http)->blocking = (b)
extern int httpCheck(http_t *http);
# define httpClearFields(http) memset((http)->fields, 0, sizeof((http)->fields)),\
httpSetField((http), HTTP_FIELD_HOST, (http)->hostname)
extern void httpClose(http_t *http);
extern http_t *httpConnect(const char *host, int port);
extern int httpDelete(http_t *http, const char *uri);
# define httpError(http) ((http)->error)
extern void httpFlush(http_t *http);
extern int httpGet(http_t *http, const char *uri);
extern char *httpGets(char *line, int length, http_t *http);
+17 -19
Ver Arquivo
@@ -65,7 +65,7 @@
*/
static ipp_attribute_t *add_attr(ipp_t *ipp, int num_values);
static int ipp_read(http_t *http, char *buffer, int length);
static int ipp_read(http_t *http, unsigned char *buffer, int length);
/*
@@ -512,8 +512,6 @@ ippDateToTime(const ipp_uchar_t *date) /* I - RFC 1903 date info */
else
t -= date[9] * 3600 + date[10] * 60;
t -= timezone;
return (t);
}
@@ -725,7 +723,7 @@ ippRead(http_t *http, /* I - HTTP data */
ipp_t *ipp) /* I - IPP data */
{
int n; /* Length of data */
char buffer[8192]; /* Data buffer */
unsigned char buffer[8192]; /* Data buffer */
ipp_attribute_t *attr; /* Current attribute */
ipp_tag_t tag; /* Current tag */
@@ -867,7 +865,7 @@ ippRead(http_t *http, /* I - HTTP data */
attr->group_tag = ipp->curtag;
attr->value_tag = tag;
attr->name = strdup(buffer);
attr->name = strdup((char *)buffer);
attr->num_values = 0;
}
@@ -913,7 +911,7 @@ ippRead(http_t *http, /* I - HTTP data */
buffer[n] = '\0';
DEBUG_printf(("ippRead: value = \'%s\'\n", buffer));
attr->values[attr->num_values].string.text = strdup(buffer);
attr->values[attr->num_values].string.text = strdup((char *)buffer);
break;
case IPP_TAG_DATE :
if (ipp_read(http, buffer, 11) < 11)
@@ -952,7 +950,7 @@ ippRead(http_t *http, /* I - HTTP data */
buffer[n] = '\0';
attr->values[attr->num_values].string.charset = strdup(buffer);
attr->values[attr->num_values].string.charset = strdup((char *)buffer);
if (ipp_read(http, buffer, 2) < 2)
return (IPP_ERROR);
@@ -964,7 +962,7 @@ ippRead(http_t *http, /* I - HTTP data */
buffer[n] = '\0';
attr->values[attr->num_values].string.text = strdup(buffer);
attr->values[attr->num_values].string.text = strdup((char *)buffer);
break;
}
@@ -1044,7 +1042,7 @@ ippWrite(http_t *http, /* I - HTTP data */
{
int i; /* Looping var */
int n; /* Length of data */
char buffer[8192], /* Data buffer */
unsigned char buffer[8192], /* Data buffer */
*bufptr; /* Pointer into buffer */
ipp_attribute_t *attr; /* Current attribute */
@@ -1073,7 +1071,7 @@ ippWrite(http_t *http, /* I - HTTP data */
*bufptr++ = ipp->request.any.request_id >> 8;
*bufptr++ = ipp->request.any.request_id;
if (httpWrite(http, buffer, bufptr - buffer) < 0)
if (httpWrite(http, (char *)buffer, bufptr - buffer) < 0)
{
DEBUG_puts("ippWrite: Could not write IPP header...");
return (IPP_ERROR);
@@ -1329,7 +1327,7 @@ ippWrite(http_t *http, /* I - HTTP data */
* Write the data out...
*/
if (httpWrite(http, buffer, bufptr - buffer) < 0)
if (httpWrite(http, (char *)buffer, bufptr - buffer) < 0)
{
DEBUG_puts("ippWrite: Could not write IPP attribute...");
return (IPP_ERROR);
@@ -1352,7 +1350,7 @@ ippWrite(http_t *http, /* I - HTTP data */
*/
buffer[0] = IPP_TAG_END;
if (httpWrite(http, buffer, 1) < 0)
if (httpWrite(http, (char *)buffer, 1) < 0)
{
DEBUG_puts("ippWrite: Could not write IPP end-tag...");
return (IPP_ERROR);
@@ -1429,13 +1427,13 @@ add_attr(ipp_t *ipp, /* I - IPP request */
* 'ipp_read()' - Semi-blocking read on a HTTP connection...
*/
static int /* O - Number of bytes read */
ipp_read(http_t *http, /* I - Client connection */
char *buffer,/* O - Buffer for data */
int length) /* I - Total length */
static int /* O - Number of bytes read */
ipp_read(http_t *http, /* I - Client connection */
unsigned char *buffer, /* O - Buffer for data */
int length) /* I - Total length */
{
int tbytes, /* Total bytes read */
bytes; /* Bytes read this pass */
int tbytes, /* Total bytes read */
bytes; /* Bytes read this pass */
/*
@@ -1443,7 +1441,7 @@ ipp_read(http_t *http, /* I - Client connection */
*/
for (tbytes = 0; tbytes < length; tbytes += bytes, buffer += bytes)
if ((bytes = httpRead(http, buffer, length - tbytes)) <= 0)
if ((bytes = httpRead(http, (char *)buffer, length - tbytes)) <= 0)
break;
/*
+2 -1
Ver Arquivo
@@ -87,11 +87,12 @@ typedef enum /**** Format tags for attribute formats... ****/
IPP_TAG_DATE,
IPP_TAG_RESOLUTION,
IPP_TAG_RANGE,
IPP_TAG_COLLECTION,
IPP_TAG_TEXTLANG,
IPP_TAG_NAMELANG,
IPP_TAG_TEXT = 0x41,
IPP_TAG_NAME,
IPP_TAG_KEYWORD,
IPP_TAG_KEYWORD = 0x44,
IPP_TAG_URI,
IPP_TAG_URISCHEME,
IPP_TAG_CHARSET,
+2 -1
Ver Arquivo
@@ -149,7 +149,8 @@ cupsLangGet(const char *language) /* I - Language or locale */
* operating systems.
*/
if (language == NULL || language[0] == '\0')
if (language == NULL || language[0] == '\0' ||
strcmp(language, "POSIX") == 0)
strcpy(langname, "C");
else
strcpy(langname, language);
+6 -1
Ver Arquivo
@@ -177,7 +177,12 @@ typedef struct cups_lang_str /**** Language Cache Structure ****/
* Prototypes...
*/
# define cupsLangDefault() cupsLangGet(setlocale(LC_ALL, ""))
# ifdef WIN32
# define cupsLangDefault() cupsLangGet(setlocale(LC_ALL, ""))
# else /* This fix works around bugs in the Linux and HP-UX setlocale() */
# define cupsLangDefault() cupsLangGet(getenv("LANG"))
# endif /* WIN32 */
extern char *cupsLangEncoding(cups_lang_t *lang);
extern void cupsLangFlush(void);
extern void cupsLangFree(cups_lang_t *lang);
+12 -40
Ver Arquivo
@@ -33,7 +33,6 @@
* ppdMarkDefaults() - Mark all default options in the PPD file.
* ppdMarkOption() - Mark an option in a PPD file.
* ppd_defaults() - Set the defaults for this group and all sub-groups.
* ppd_default() - Set the default choice for an option.
*/
/*
@@ -48,8 +47,7 @@
* Local functions...
*/
static void ppd_defaults(ppd_group_t *g);
static void ppd_default(ppd_option_t *o);
static void ppd_defaults(ppd_file_t *ppd, ppd_group_t *g);
/*
@@ -296,12 +294,7 @@ ppdMarkDefaults(ppd_file_t *ppd)/* I - PPD file record */
return;
for (i = ppd->num_groups, g = ppd->groups; i > 0; i --, g ++)
ppd_defaults(g);
o = ppdFindOption(ppd, "PageSize");
for (i = 0; i < ppd->num_sizes; i ++)
ppd->sizes[i].marked = strcmp(ppd->sizes[i].name, o->defchoice) == 0;
ppd_defaults(ppd, g);
}
@@ -372,15 +365,15 @@ ppdMarkOption(ppd_file_t *ppd, /* I - PPD file record */
if (strcmp(option, "PageSize") == 0)
{
o = ppdFindOption(ppd, "PageRegion");
for (i = 0; i < o->num_choices; i ++)
o->choices[i].marked = 0;
if ((o = ppdFindOption(ppd, "PageRegion")) != NULL)
for (i = 0; i < o->num_choices; i ++)
o->choices[i].marked = 0;
}
else
{
o = ppdFindOption(ppd, "PageSize");
for (i = 0; i < o->num_choices; i ++)
o->choices[i].marked = 0;
if ((o = ppdFindOption(ppd, "PageSize")) != NULL)
for (i = 0; i < o->num_choices; i ++)
o->choices[i].marked = 0;
}
}
}
@@ -394,7 +387,8 @@ ppdMarkOption(ppd_file_t *ppd, /* I - PPD file record */
*/
static void
ppd_defaults(ppd_group_t *g) /* I - Group to default */
ppd_defaults(ppd_file_t *ppd, /* I - PPD file */
ppd_group_t *g) /* I - Group to default */
{
int i; /* Looping var */
ppd_option_t *o; /* Current option */
@@ -406,32 +400,10 @@ ppd_defaults(ppd_group_t *g) /* I - Group to default */
for (i = g->num_options, o = g->options; i > 0; i --, o ++)
if (strcmp(o->keyword, "PageRegion") != 0)
ppd_default(o);
ppdMarkOption(ppd, o->keyword, o->defchoice);
for (i = g->num_subgroups, sg = g->subgroups; i > 0; i --, sg ++)
ppd_defaults(sg);
}
/*
* 'ppd_default()' - Set the default choice for an option.
*/
static void
ppd_default(ppd_option_t *o) /* I - Option to default */
{
int i; /* Looping var */
ppd_choice_t *c; /* Current choice */
if (o == NULL)
return;
for (i = o->num_choices, c = o->choices; i > 0; i --, c ++)
if (strcmp(c->choice, o->defchoice) == 0)
c->marked = 1;
else
c->marked = 0;
ppd_defaults(ppd, sg);
}
+126 -70
Ver Arquivo
@@ -70,6 +70,8 @@
# define WRITE_BINARY "w" /* Open a binary file for writing */
#endif /* WIN32 || __EMX__ */
#define safe_free(p) if (p) free(p) /* Safe free macro */
#define PPD_KEYWORD 1 /* Line contained a keyword */
#define PPD_OPTION 2 /* Line contained an option name */
#define PPD_TEXT 4 /* Line contained human-readable text */
@@ -119,14 +121,14 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
* Free all strings at the top level...
*/
free(ppd->lang_encoding);
free(ppd->lang_version);
free(ppd->modelname);
free(ppd->ttrasterizer);
free(ppd->manufacturer);
free(ppd->product);
free(ppd->nickname);
free(ppd->shortnickname);
safe_free(ppd->lang_encoding);
safe_free(ppd->lang_version);
safe_free(ppd->modelname);
safe_free(ppd->ttrasterizer);
safe_free(ppd->manufacturer);
safe_free(ppd->product);
safe_free(ppd->nickname);
safe_free(ppd->shortnickname);
/*
* Free any emulations...
@@ -136,11 +138,11 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
{
for (i = ppd->num_emulations, emul = ppd->emulations; i > 0; i --, emul ++)
{
free(emul->start);
free(emul->stop);
safe_free(emul->start);
safe_free(emul->stop);
}
free(ppd->emulations);
safe_free(ppd->emulations);
}
/*
@@ -152,7 +154,7 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
for (i = ppd->num_groups, group = ppd->groups; i > 0; i --, group ++)
ppd_free_group(group);
free(ppd->groups);
safe_free(ppd->groups);
}
/*
@@ -160,14 +162,14 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
*/
if (ppd->num_sizes > 0)
free(ppd->sizes);
safe_free(ppd->sizes);
/*
* Free any constraints...
*/
if (ppd->num_consts > 0)
free(ppd->consts);
safe_free(ppd->consts);
/*
* Free any fonts...
@@ -176,9 +178,9 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
if (ppd->num_fonts > 0)
{
for (i = ppd->num_fonts, font = ppd->fonts; i > 0; i --, font ++)
free(*font);
safe_free(*font);
free(ppd->fonts);
safe_free(ppd->fonts);
}
/*
@@ -186,13 +188,13 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
*/
if (ppd->num_profiles > 0)
free(ppd->profiles);
safe_free(ppd->profiles);
/*
* Free the whole record...
*/
free(ppd);
safe_free(ppd);
}
@@ -215,7 +217,7 @@ ppd_free_group(ppd_group_t *group) /* I - Group to free */
i --, option ++)
ppd_free_option(option);
free(group->options);
safe_free(group->options);
}
if (group->num_subgroups > 0)
@@ -225,7 +227,7 @@ ppd_free_group(ppd_group_t *group) /* I - Group to free */
i --, subgroup ++)
ppd_free_group(subgroup);
free(group->subgroups);
safe_free(group->subgroups);
}
}
@@ -246,9 +248,9 @@ ppd_free_option(ppd_option_t *option) /* I - Option to free */
for (i = option->num_choices, choice = option->choices;
i > 0;
i --, choice ++)
free(choice->code);
safe_free(choice->code);
free(option->choices);
safe_free(option->choices);
}
}
@@ -285,7 +287,7 @@ ppd_get_group(ppd_file_t *ppd, /* I - PPD file */
ppd->num_groups ++;
memset(group, 0, sizeof(ppd_group_t));
strcpy(group->text, name);
strncpy(group->text, name, sizeof(group->text) - 1);
}
return (group);
@@ -324,7 +326,7 @@ ppd_get_option(ppd_group_t *group, /* I - Group */
group->num_options ++;
memset(option, 0, sizeof(ppd_option_t));
strcpy(option->keyword, name);
strncpy(option->keyword, name, sizeof(option->keyword) - 1);
}
return (option);
@@ -356,7 +358,7 @@ ppd_add_choice(ppd_option_t *option, /* I - Option */
option->num_choices ++;
memset(choice, 0, sizeof(ppd_choice_t));
strcpy(choice->choice, name);
strncpy(choice->choice, name, sizeof(choice->choice) - 1);
return (choice);
}
@@ -386,7 +388,7 @@ ppd_add_size(ppd_file_t *ppd, /* I - PPD file */
ppd->num_sizes ++;
memset(size, 0, sizeof(ppd_size_t));
strcpy(size->name, name);
strncpy(size->name, name, sizeof(size->name) - 1);
return (size);
}
@@ -449,14 +451,14 @@ ppdOpen(FILE *fp) /* I - File to read from */
* Either this is not a PPD file, or it is not a 4.x PPD file.
*/
if (string != NULL)
free(string);
safe_free(string);
return (NULL);
}
if (string != NULL)
free(string);
DEBUG_printf(("ppdOpen: keyword = %s, string = %08x\n", keyword, string));
safe_free(string);
/*
* Allocate memory for the PPD file record...
@@ -599,9 +601,10 @@ ppdOpen(FILE *fp) /* I - File to read from */
ppd->num_profiles ++;
memset(profile, 0, sizeof(ppd_profile_t));
strcpy(profile->resolution, name);
strcpy(profile->media_type, text);
sscanf(string, "%f%f%f%f%f%f%f%f%f%f", &(profile->density),
strncpy(profile->resolution, name, sizeof(profile->resolution) - 1);
strncpy(profile->media_type, text, sizeof(profile->media_type) - 1);
sscanf(string, "%f%f%f%f%f%f%f%f%f%f%f", &(profile->density),
&(profile->gamma),
profile->matrix[0] + 0, profile->matrix[0] + 1,
profile->matrix[0] + 2, profile->matrix[1] + 0,
profile->matrix[1] + 1, profile->matrix[1] + 2,
@@ -627,7 +630,8 @@ ppdOpen(FILE *fp) /* I - File to read from */
string = NULL;
}
else if (strcmp(keyword, "VariablePaperSize") == 0 &&
strcmp(string, "True") == 0)
strcmp(string, "True") == 0 &&
!ppd->variable_sizes)
{
ppd->variable_sizes = 1;
@@ -646,25 +650,26 @@ ppdOpen(FILE *fp) /* I - File to read from */
CUPS_MSG_GENERAL))) == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
if ((option = ppd_get_option(group, "PageSize")) == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
if ((choice = ppd_add_choice(option, "Custom")) == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
strcpy(choice->text, cupsLangString(language, CUPS_MSG_VARIABLE));
strncpy(choice->text, cupsLangString(language, CUPS_MSG_VARIABLE),
sizeof(choice->text) - 1);
group = NULL;
option = NULL;
}
@@ -686,20 +691,62 @@ ppdOpen(FILE *fp) /* I - File to read from */
ppd->custom_margins + 1, ppd->custom_margins + 2,
ppd->custom_margins + 3);
else if (strcmp(keyword, "CustomPageSize") == 0 &&
strcmp(name, "True") == 0 &&
ppd->variable_sizes)
strcmp(name, "True") == 0)
{
if (!ppd->variable_sizes)
{
ppd->variable_sizes = 1;
/*
* Add a "Custom" page size entry...
*/
ppd_add_size(ppd, "Custom");
/*
* Add a "Custom" page size option...
*/
if ((group = ppd_get_group(ppd,
cupsLangString(language,
CUPS_MSG_GENERAL))) == NULL)
{
ppdClose(ppd);
safe_free(string);
return (NULL);
}
if ((option = ppd_get_option(group, "PageSize")) == NULL)
{
ppdClose(ppd);
safe_free(string);
return (NULL);
}
if ((choice = ppd_add_choice(option, "Custom")) == NULL)
{
ppdClose(ppd);
safe_free(string);
return (NULL);
}
strncpy(choice->text, cupsLangString(language, CUPS_MSG_VARIABLE),
sizeof(choice->text) - 1);
group = NULL;
option = NULL;
}
if ((option = ppdFindOption(ppd, "PageSize")) == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
if ((choice = ppdFindChoice(option, "Custom")) == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -813,7 +860,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (group == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -826,7 +873,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (option == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -843,23 +890,28 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (text[0])
{
strcpy(option->text, text);
strncpy(option->text, text, sizeof(option->text) - 1);
ppd_fix(option->text);
}
else
{
if (strcmp(name, "PageSize") == 0)
strcpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_SIZE));
strncpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_SIZE),
sizeof(option->text) - 1);
else if (strcmp(name, "MediaType") == 0)
strcpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_TYPE));
strncpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_TYPE),
sizeof(option->text) - 1);
else if (strcmp(name, "InputSlot") == 0)
strcpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_SOURCE));
strncpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_SOURCE),
sizeof(option->text) - 1);
else if (strcmp(name, "ColorModel") == 0)
strcpy(option->text, cupsLangString(language, CUPS_MSG_OUTPUT_MODE));
strncpy(option->text, cupsLangString(language, CUPS_MSG_OUTPUT_MODE),
sizeof(option->text) - 1);
else if (strcmp(name, "Resolution") == 0)
strcpy(option->text, cupsLangString(language, CUPS_MSG_RESOLUTION));
strncpy(option->text, cupsLangString(language, CUPS_MSG_RESOLUTION),
sizeof(option->text) - 1);
else
strcpy(option->text, name);
strncpy(option->text, name, sizeof(option->text) - 1);
}
option->section = PPD_ORDER_ANY;
@@ -875,7 +927,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (group == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -891,7 +943,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (option == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -906,7 +958,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
else
option->ui = PPD_UI_PICKONE;
strcpy(option->text, text);
strncpy(option->text, text, sizeof(option->text) - 1);
option->section = PPD_ORDER_JCL;
group = NULL;
@@ -923,7 +975,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (group != NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -945,7 +997,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (group == NULL || subgroup != NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -958,7 +1010,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (subgroup == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -969,7 +1021,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
memset(subgroup, 0, sizeof(ppd_group_t));
ppd_decode(string);
ppd_fix(string);
strcpy(subgroup->text, string);
strncpy(subgroup->text, string, sizeof(subgroup->text) - 1);
}
else if (strcmp(keyword, "CloseSubGroup") == 0)
subgroup = NULL;
@@ -979,7 +1031,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (sscanf(string, "%f%s%s", &order, name, keyword) != 3)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -1048,14 +1100,15 @@ ppdOpen(FILE *fp) /* I - File to read from */
for (i = 0; i < group->num_options; i ++)
if (strcmp(keyword, group->options[i].keyword) == 0)
{
strcpy(group->options[i].defchoice, string);
strncpy(group->options[i].defchoice, string,
sizeof(group->options[i].defchoice) - 1);
break;
}
group = NULL;
}
else
strcpy(option->defchoice, string);
strncpy(option->defchoice, string, sizeof(option->defchoice) - 1);
}
else if (strcmp(keyword, "UIConstraints") == 0 ||
strcmp(keyword, "NonUIConstraints") == 0)
@@ -1069,7 +1122,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (constraint == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -1077,14 +1130,14 @@ ppdOpen(FILE *fp) /* I - File to read from */
constraint += ppd->num_consts;
ppd->num_consts ++;
switch (sscanf(string, "%s%s%s%s", constraint->option1,
switch (sscanf(string, "%40s%40s%40s%40s", constraint->option1,
constraint->choice1, constraint->option2,
constraint->choice2))
{
case 0 : /* Error */
case 1 : /* Error */
ppdClose(ppd);
free(string);
safe_free(string);
break;
case 2 : /* Two options... */
@@ -1160,7 +1213,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (mask & PPD_TEXT)
{
strcpy(choice->text, text);
strncpy(choice->text, text, sizeof(choice->text) - 1);
ppd_fix(choice->text);
}
else if (strcmp(name, "True") == 0)
@@ -1168,7 +1221,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
else if (strcmp(name, "False") == 0)
strcpy(choice->text, "No");
else
strcpy(choice->text, name);
strncpy(choice->text, name, sizeof(choice->text) - 1);
if (strncmp(keyword, "JCL", 3) == 0)
ppd_decode(string); /* Decode quoted string */
@@ -1177,8 +1230,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
string = NULL; /* Don't free this string below */
}
if (string != NULL)
free(string);
safe_free(string);
}
#ifdef DEBUG
@@ -1266,7 +1318,7 @@ ppdOpenFd(int fd) /* I - File to read from */
ppd = ppdOpen(fp);
free(fp);
safe_free(fp);
}
else
ppd = NULL;
@@ -1354,7 +1406,11 @@ compare_strings(char *s, /* I - First string */
* Bounce out if *s and *t aren't both digits...
*/
if (!isdigit(*s) || !isdigit(*t))
if (isdigit(*s) && !isdigit(*t))
return (1);
else if (!isdigit(*s) && isdigit(*t))
return (-1);
else if (!isdigit(*s) || !isdigit(*t))
continue;
if (*s < *t)
+1
Ver Arquivo
@@ -153,6 +153,7 @@ typedef struct /**** sRGB Color Profiles ****/
char resolution[41], /* Resolution or "-" */
media_type[41]; /* Media type of "-" */
float density, /* Ink density to use */
gamma, /* Gamma correction to use */
matrix[3][3]; /* Transform matrix */
} ppd_profile_t;
+4 -4
Ver Arquivo
@@ -686,8 +686,8 @@ checkrules(const char *filename, /* I - Filename */
bufptr = buffer + rules->offset - bufoffset;
while (n > 0)
if ((*bufptr >= 32 && *bufptr <= 126) ||
(*bufptr >= 8 && *bufptr <= 10) ||
*bufptr == 13 || *bufptr == 26)
(*bufptr >= 8 && *bufptr <= 13) ||
*bufptr == 26 || *bufptr == 27)
{
n --;
bufptr ++;
@@ -729,8 +729,8 @@ checkrules(const char *filename, /* I - Filename */
while (n > 0)
if ((*bufptr >= 160 && *bufptr <= 254) ||
(*bufptr >= 32 && *bufptr <= 126) ||
(*bufptr >= 8 && *bufptr <= 10) ||
*bufptr == 13 || *bufptr == 26)
(*bufptr >= 8 && *bufptr <= 13) ||
*bufptr == 26 || *bufptr == 27)
{
n --;
bufptr ++;
+69 -20
Ver Arquivo
@@ -118,7 +118,7 @@ cupsCancelJob(const char *name, /* I - Name of printer or class */
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, uri);
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-id", job);
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "job-id", job);
/*
* Do the request...
@@ -152,7 +152,6 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
const char *password; /* Password string */
char plain[255], /* Plaintext username:password */
encode[255]; /* Encoded username:password */
char junk[8192]; /* Junk buffer for error data */
static char authstring[255] = "";
/* Authorization string */
@@ -218,8 +217,7 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
DEBUG_puts("cupsDoFileRequest: post...");
if (httpPost(http, resource))
if (httpPost(http, resource))
break;
continue;
/*
* Send the IPP data and wait for the response...
@@ -279,8 +277,14 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
else
break;
}
if (status != HTTP_OK)
else if (status == HTTP_ERROR)
{
if (http->error != ENETDOWN && http->error != ENETUNREACH)
continue;
else
break;
}
else if (status != HTTP_OK)
{
DEBUG_printf(("cupsDoFileRequest: error %d...\n", status));
@@ -501,7 +505,6 @@ cupsGetPPD(const char *name) /* I - Printer name */
resource[HTTP_MAX_URI]; /* Resource name */
static char filename[HTTP_MAX_URI]; /* Local filename */
char *tempdir; /* Temporary file directory */
struct stat fileinfo; /* File information */
/*
@@ -517,33 +520,29 @@ cupsGetPPD(const char *name) /* I - Printer name */
#if defined(WIN32) || defined(__EMX__)
tempdir = "C:/WINDOWS/TEMP";
sprintf(filename, "%s/%s.ppd", tempdir, printer);
#else
if ((tempdir = getenv("TMPDIR")) == NULL)
tempdir = "/tmp";
sprintf(filename, "%s/%d.%s.ppd", tempdir, getuid(), printer);
#endif /* WIN32 || __EMX__ */
sprintf(filename, "%s/%s.ppd", tempdir, printer);
if (stat(filename, &fileinfo))
memset(&fileinfo, 0, sizeof(fileinfo));
/*
* And send a request to the HTTP server using "if-modified-since"...
* And send a request to the HTTP server...
*/
sprintf(resource, "/printers/%s.ppd", printer);
httpClearFields(cups_server);
httpSetField(cups_server, HTTP_FIELD_HOST, hostname);
httpSetField(cups_server, HTTP_FIELD_IF_MODIFIED_SINCE,
httpGetDateString(fileinfo.st_mtime));
httpGet(cups_server, resource);
switch (httpUpdate(cups_server))
{
case HTTP_OK : /* New file - get it! */
break;
case HTTP_NOT_MODIFIED : /* File hasn't been modified; use the current copy */
return (filename);
default :
return (NULL);
}
@@ -724,17 +723,17 @@ cupsPrintFile(const char *name, /* I - Printer or class name */
*/
if (cupsGetOption("raw", num_options, options))
ippAddString(request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format",
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/vnd.cups-raw");
else
ippAddString(request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format",
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/octet-stream");
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "requesting-user-name",
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
NULL, cupsUser());
if (title)
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL, title);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL, title);
/*
* Then add all options on the command-line...
@@ -889,6 +888,56 @@ cupsPrintFile(const char *name, /* I - Printer or class name */
}
/*
* 'cupsTempFile()' - Generate a temporary filename.
*/
char * /* O - Filename */
cupsTempFile(char *filename, /* I - Pointer to buffer */
int len) /* I - Size of buffer */
{
char *tmpdir; /* TMPDIR environment var */
static char buf[1024] = ""; /* Buffer if you pass in NULL and 0 */
/*
* See if a filename was specified...
*/
if (filename == NULL)
{
filename = buf;
len = sizeof(buf);
}
/*
* See if TMPDIR is defined...
*/
if ((tmpdir = getenv("TMPDIR")) == NULL)
tmpdir = "/var/tmp";
if ((strlen(tmpdir) + 8) > len)
{
/*
* The specified directory exceeds the size of the buffer; default it...
*/
strcpy(buf, "/var/tmp/XXXXXX");
return (mktemp(buf));
}
else
{
/*
* Make the temporary name using the specified directory...
*/
sprintf(filename, "%s/XXXXXX", tmpdir);
return (mktemp(filename));
}
}
/*
* 'cups_connect()' - Connect to the specified host...
*/
-62
Ver Arquivo
@@ -1,62 +0,0 @@
%%BeginResource: procset hpgltops 1.0 0
%
% "$Id: HPGLprolog 312 1999-05-11 19:45:40Z mike $"
%
% HP-GL/2 filter procset for the Common UNIX Printing System (CUPS).
%
% This procset contains the basic drawing commands that are used to
% reduce output size. Note the 'MP' (make newpath) definition - this
% should be called 'NP' (newpath), but GhostScript uses the 'NP' name
% for 'noaccess put' in some of its font files...
%
% Copyright 1993-1999 Easy Software Products
%
% These coded instructions, statements, and computer programs are the
% property of Easy Software Products and are protected by Federal
% copyright law. Distribution and use rights are outlined in the file
% "LICENSE.txt" which should have been included with this file. If this
% file is missing or damaged please contact Easy Software Products
% at:
%
% Attn: CUPS Licensing Information
% Easy Software Products
% 44141 Airport View Drive, Suite 204
% Hollywood, Maryland 20636-3111 USA
%
% Voice: (301) 373-9603
% EMail: cups-info@cups.org
% WWW: http://www.cups.org
%
/MO { moveto } bind def
/LI { lineto } bind def
/FI { fill } bind def
/ST { stroke } bind def
/CP { closepath } bind def
/MP { newpath } bind def
%
% If you have more than 8 pens defined for your HP-GL/2 output you'll
% need to add P# definitions (# = pen number) to set the appropriate color.
% If you don't you'll get errors. The default 8 pens cover the primary
% colors (white, black, red, green, yellow, blue, magenta, cyan). Ditto
% for pen widths (W#).
%
% PC and PW commands in the input stream will define/redefine these
% appropriately, but some packages don't generate them...
%
/P0 { 1.0 1.0 1.0 setrgbcolor } bind def
/P1 { 0.0 0.0 0.0 setrgbcolor } bind def
/P2 { 1.0 0.0 0.0 setrgbcolor } bind def
/P3 { 0.0 1.0 0.0 setrgbcolor } bind def
/P4 { 1.0 1.0 0.0 setrgbcolor } bind def
/P5 { 0.0 0.0 1.0 setrgbcolor } bind def
/P6 { 1.0 0.0 1.0 setrgbcolor } bind def
/P7 { 0.0 1.0 1.0 setrgbcolor } bind def
/W0 { DefaultPenWidth PenScaling mul setlinewidth } bind def
/W1 { DefaultPenWidth PenScaling mul setlinewidth } bind def
/W2 { DefaultPenWidth PenScaling mul setlinewidth } bind def
/W3 { DefaultPenWidth PenScaling mul setlinewidth } bind def
/W4 { DefaultPenWidth PenScaling mul setlinewidth } bind def
/W5 { DefaultPenWidth PenScaling mul setlinewidth } bind def
/W6 { DefaultPenWidth PenScaling mul setlinewidth } bind def
/W7 { DefaultPenWidth PenScaling mul setlinewidth } bind def
%%EndResource
+2 -2
Ver Arquivo
@@ -48,8 +48,8 @@ clean:
#
install:
-$(MKDIR) $(DATADIR)
$(CP) $(FILES) $(DATADIR)
-$(MKDIR) $(DATADIR)/data
$(CP) $(FILES) $(DATADIR)/data
#
# End of "$Id$".
-1051
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+2 -2
Ver Arquivo
@@ -42,7 +42,7 @@ include ../Makedefs
#
DOCUMENTS = cmp.shtml idd.shtml sam.shtml sdd.shtml ssr.shtml \
stp.shtml sum.shtml svd.shtml
stp.shtml sum.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
@@ -86,7 +86,7 @@ install:
overview.pdf: overview.html
echo Formatting $@...
htmldoc --duplex --compression=9 --jpeg --webpage -f $@ $<
htmldoc --duplex --compression=9 --jpeg --webpage -f overview.pdf overview.html
sam.html: sam.shtml
echo Formatting $@...
+3 -3
Ver Arquivo
@@ -152,10 +152,10 @@ sections:
<UL>
<LI>IEEE 1387.4, System Administration: Printing (draft) </LI>
<LI>IPP/1.0: Additional Optional Operations - Set 1 </LI>
<LI>IPP/1.0: Encoding and Transport </LI>
<LI>IPP/1.0: Implementers Guide </LI>
<LI>IPP/1.0: Model and Semantics </LI>
<LI>RFC 1179, Line Printer Daemon Protocol </LI>
<LI>RFC 2565, IPP/1.0: Encoding and Transport </LI>
<LI>RFC 2566, IPP/1.0: Model and Semantics </LI>
<LI>RFC 2639, IPP/1.0: Implementers Guide </LI>
</UL>
<H1><A NAME=3>3 File Management</A></H1>
<H2><A NAME=3_1>3.1 Directory Structure</A></H2>
+118 -121
Ver Arquivo
@@ -1,6 +1,6 @@
%PDF-1.2
%âãÏÓ
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990521210307Z)/Title(CUPS Configuration Management Plan)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990922200456Z)/Title(CUPS Configuration Management Plan)/Author(Easy Software Products)>>endobj
2 0 obj<</Type/Encoding/BaseEncoding/WinAnsiEncoding>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Roman/Encoding 2 0 R>>endobj
@@ -400,13 +400,10 @@ endobj
endobj
198 0 obj<</Type/Page/Parent 191 0 R/Contents 199 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>>>endobj
199 0 obj<</Length 200 0 R/Filter/FlateDecode>>stream
xÚ•UMo"9½ó+J9%ÒЛB`oC¾„4™aŒöÀŸ«Á·«c»Aì¯ß²» E‹¢Hi»ªÞ{õÊ•·V
×ü“Âmº}Ek4oýñ8„tóœoú·=˜g—)Ì$•x5ÿUßÞ$ƒú¾}3Hêˆ$…q†Æ«\Iá™:¸iÚ„vúuè|­H2¹ZU6†B!ŒXaÁéPja #YÕ_–6*C~°ªøO­ æd!Ã
j*cœ0QÆó¯0ò€Ï¨i7éÔPàŽŠ‚Ñ^¾ÿ†‰åheV0Û9,./î^&³‹ÅüDë«4¹G¹ß
‹É íÝá^{g_åÇíFáöñŸÓx, $ëÅR#Ÿ51ZìÐFí!wѹé»zÈ—.p Œ=¬…;’¿D4ûŽaË<·ƒY#yPVIϦÀ¡ LÁyn¬°Ù#]EË ¡u­bƒ&#ë‚
xÚ•UMo"9½ó+J9%ÒЛB`oC¾„4™aŒöÀŸ«Á·«c»Aì¯ß²» E‹¢Hi»ªÞ{õÊ•·V
×ü“Âmº}Ek4oýñ8„tóœoú·=˜g—)Ì$•x5ÿUßÞ$ƒú¾}3Hêˆ$…q†Æ«\Iá™:¸iÚ„vúuè|­H2¹ZU6†B!ŒXaÁéPja #YÕ_–6*C~°ªøO­ æd!Ã
j*cœ0QÆó¯0ò€Ï¨i7éÔPàŽŠ‚Ñ^¾ÿ†‰åheV0Û9,./î^&³‹ÅüDë«4¹G¹ß
_ËrƇ'<Red¶AhGG®*Ã$°i[å×`‘}â¼22!´ò»“ýYæ€Û²%ûZ+dNKK[$r~&­*ýAºx ¢°‹Éäž_D›[††€â}˜•Ó\™¤ÐÀ¸:Q–ºÙ*“a=¼§³zv]êª~²rž
‹É íÝá^{g_åÇíFáöñŸÓx, $ëÅR#Ÿ51ZìÐFí!wѹé»zÈ—.p Œ=¬…;’¿D4ûŽaË<·ƒY#yPVIϦÀ¡ LÁyn¬°Ù#]EË ¡u­bƒ&#ë‚
G¸•ãf&Zû»™ÞŸÑºÚWÔ¸ã±(x²vpm.$º¤©ºïb,Ç¥ëRãšÉj<IÒìêøaþØO&쫨שz‚âØ…ø(~Ñ2J€·
+6ëHηÀ+°÷ƒ‹Ëo“û/0}¼KÓÛáâê Ìxøþ㱆‘&ùÊa³çQ¸
_ËrƇ'<Red¶AhGG®*Ã$°i[å×`‘}â¼22!´ò»“ýYæ€Û²%ûZ+dNKK[$r~&­*ýAºx ¢°‹Éäž_D›[††€â}˜•Ó\™¤ÐÀ¸:Q–ºÙ*“a=¼§³zv]êª~²rž
@@ -842,122 +839,122 @@ xref
0000014635 00000 n
0000014669 00000 n
0000014703 00000 n
0000014669 00000 n
0000014703 00000 n
0000015402 00000 n
0000015451 00000 n
0000015500 00000 n
0000015549 00000 n
0000015598 00000 n
0000015647 00000 n
0000015696 00000 n
0000015745 00000 n
0000015794 00000 n
0000015843 00000 n
0000015892 00000 n
0000015941 00000 n
0000015990 00000 n
0000016039 00000 n
0000016088 00000 n
0000016137 00000 n
0000016186 00000 n
0000016235 00000 n
0000016284 00000 n
0000016333 00000 n
0000016382 00000 n
0000016431 00000 n
0000016480 00000 n
0000016529 00000 n
0000016578 00000 n
0000016627 00000 n
0000016676 00000 n
0000016725 00000 n
0000016774 00000 n
0000016823 00000 n
0000016872 00000 n
0000016921 00000 n
0000016970 00000 n
0000017019 00000 n
0000017068 00000 n
0000017117 00000 n
0000017166 00000 n
0000017215 00000 n
0000017264 00000 n
0000017313 00000 n
0000017362 00000 n
0000017411 00000 n
0000017460 00000 n
0000017509 00000 n
0000017558 00000 n
0000017607 00000 n
0000017656 00000 n
0000017705 00000 n
0000017754 00000 n
0000017803 00000 n
0000017852 00000 n
0000017901 00000 n
0000017950 00000 n
0000017999 00000 n
0000018260 00000 n
0000018412 00000 n
0000024803 00000 n
0000024825 00000 n
0000024938 00000 n
0000025040 00000 n
0000025060 00000 n
0000025200 00000 n
0000026140 00000 n
0000026161 00000 n
0000026274 00000 n
0000026462 00000 n
0000026483 00000 n
0000026623 00000 n
0000027216 00000 n
0000027237 00000 n
0000027350 00000 n
0000027543 00000 n
0000027564 00000 n
0000027695 00000 n
0000028308 00000 n
0000028329 00000 n
0000028442 00000 n
0000028631 00000 n
0000028652 00000 n
0000028783 00000 n
0000029727 00000 n
0000029748 00000 n
0000029879 00000 n
0000030166 00000 n
0000030187 00000 n
0000030327 00000 n
0000031243 00000 n
0000031264 00000 n
0000031395 00000 n
0000031753 00000 n
0000031774 00000 n
0000031914 00000 n
0000032410 00000 n
0000032431 00000 n
0000032562 00000 n
0000033014 00000 n
0000033035 00000 n
0000033175 00000 n
0000034315 00000 n
0000034337 00000 n
0000034477 00000 n
0000035383 00000 n
0000035404 00000 n
0000035544 00000 n
0000036470 00000 n
0000036491 00000 n
0000036631 00000 n
0000037277 00000 n
0000037298 00000 n
0000037438 00000 n
0000038258 00000 n
0000038279 00000 n
0000015402 00000 n
0000015451 00000 n
0000015500 00000 n
0000015549 00000 n
0000015598 00000 n
0000015647 00000 n
0000015696 00000 n
0000015745 00000 n
0000015794 00000 n
0000015843 00000 n
0000015892 00000 n
0000015941 00000 n
0000015990 00000 n
0000016039 00000 n
0000016088 00000 n
0000016137 00000 n
0000016186 00000 n
0000016235 00000 n
0000016284 00000 n
0000016333 00000 n
0000016382 00000 n
0000016431 00000 n
0000016480 00000 n
0000016529 00000 n
0000016578 00000 n
0000016627 00000 n
0000016676 00000 n
0000016725 00000 n
0000016774 00000 n
0000016823 00000 n
0000016872 00000 n
0000016921 00000 n
0000016970 00000 n
0000017019 00000 n
0000017068 00000 n
0000017117 00000 n
0000017166 00000 n
0000017215 00000 n
0000017264 00000 n
0000017313 00000 n
0000017362 00000 n
0000017411 00000 n
0000017460 00000 n
0000017509 00000 n
0000017558 00000 n
0000017607 00000 n
0000017656 00000 n
0000017705 00000 n
0000017754 00000 n
0000017803 00000 n
0000017852 00000 n
0000017901 00000 n
0000017950 00000 n
0000017999 00000 n
0000018260 00000 n
0000018412 00000 n
0000024803 00000 n
0000024825 00000 n
0000024938 00000 n
0000025040 00000 n
0000025060 00000 n
0000025200 00000 n
0000026140 00000 n
0000026161 00000 n
0000026274 00000 n
0000026462 00000 n
0000026483 00000 n
0000026623 00000 n
0000027230 00000 n
0000027251 00000 n
0000027364 00000 n
0000027557 00000 n
0000027578 00000 n
0000027709 00000 n
0000028322 00000 n
0000028343 00000 n
0000028456 00000 n
0000028645 00000 n
0000028666 00000 n
0000028797 00000 n
0000029741 00000 n
0000029762 00000 n
0000029893 00000 n
0000030180 00000 n
0000030201 00000 n
0000030341 00000 n
0000031257 00000 n
0000031278 00000 n
0000031409 00000 n
0000031767 00000 n
0000031788 00000 n
0000031928 00000 n
0000032424 00000 n
0000032445 00000 n
0000032576 00000 n
0000033028 00000 n
0000033049 00000 n
0000033189 00000 n
0000034329 00000 n
0000034351 00000 n
0000034491 00000 n
0000035397 00000 n
0000035418 00000 n
0000035558 00000 n
0000036484 00000 n
0000036505 00000 n
0000036645 00000 n
0000037291 00000 n
0000037312 00000 n
0000037452 00000 n
0000038272 00000 n
0000038293 00000 n
0000038433 00000 n
0000039360 00000 n
0000039381 00000 n
0000039521 00000 n
0000039925 00000 n
0000039507 00000 n
0000039946 00000 n
0000040059 00000 n
+7 -7
Ver Arquivo
@@ -75,10 +75,10 @@ The following non-CUPS documents are referenced by this document:
<UL>
<LI>IEEE 1387.4, System Administration: Printing (draft)
<LI>IPP/1.0: Additional Optional Operations - Set 1
<LI>IPP/1.0: Encoding and Transport
<LI>IPP/1.0: Implementers Guide
<LI>IPP/1.0: Model and Semantics
<LI>RFC 1179, Line Printer Daemon Protocol
<LI>RFC 2565, IPP/1.0: Encoding and Transport
<LI>RFC 2566, IPP/1.0: Model and Semantics
<LI>RFC 2639, IPP/1.0: Implementers Guide
</UL>
<H1>File Management</H1>
@@ -334,12 +334,12 @@ extension of ".h".
The top of each source file shall contain a header giving the name of the
file, the purpose or nature of the source file, the copyright and licensing
notice, and the functions contained in the file. The file name and revision
information is provided by the CVS "$Id: cmp.shtml 351 1999-05-21 20:54:09Z mike $" tag:
information is provided by the CVS "$Id: cmp.shtml 679 1999-09-22 20:06:27Z mike $" tag:
<UL>
<PRE>
/*
* "$Id: cmp.shtml 351 1999-05-21 20:54:09Z mike $"
* "$Id: cmp.shtml 679 1999-09-22 20:06:27Z mike $"
*
* Description of file contents.
*
@@ -372,14 +372,14 @@ information is provided by the CVS "$Id: cmp.shtml 351 1999-05-21 20:54:09Z mike
</UL>
The bottom of each source file shall contain a trailer giving the name
of the file using the CVS "$Id: cmp.shtml 351 1999-05-21 20:54:09Z mike $" tag. The primary purpose of this is to
of the file using the CVS "$Id: cmp.shtml 679 1999-09-22 20:06:27Z mike $" tag. The primary purpose of this is to
mark the end of a source file; if the trailer is missing it is possible
that code has been lost near the end of the file:
<UL>
<PRE>
/*
* End of "$Id: cmp.shtml 351 1999-05-21 20:54:09Z mike $".
* End of "$Id: cmp.shtml 679 1999-09-22 20:06:27Z mike $".
*/
</PRE>
</UL>
-2
Ver Arquivo
@@ -55,8 +55,6 @@ The following documentation for CUPS is available on this server:
<A HREF="ssr.html">HTML</A> |
<A HREF="ssr.pdf">PDF</A> )
<LI>Software Test Plan (Not Yet Available)
</UL>
<HR>
+152 -97
Ver Arquivo
@@ -1,13 +1,13 @@
<HTML>
<HEAD>
<TITLE>DRAFT - CUPS Interface Design Description</TITLE>
<TITLE>CUPS Interface Design Description</TITLE>
<META NAME="AUTHOR" CONTENT="Easy Software Products">
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-1999, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-IDD-1.0">
</HEAD>
<BODY>
<CENTER><A HREF=#contents><IMG SRC="images/cups-large.gif" BORDER=0><BR>
<H1>DRAFT - CUPS Interface Design Description</H1></A><BR>
<H1>CUPS Interface Design Description</H1></A><BR>
CUPS-IDD-1.0<BR>
Easy Software Products<BR>
Copyright 1997-1999, All Rights Reserved<BR>
@@ -53,26 +53,24 @@ Copyright 1997-1999, All Rights Reserved<BR>
<LI><A HREF=#4_3>4.3 CUPS PostScript File</A></LI>
<LI><A HREF=#4_4>4.4 CUPS Raster File</A></LI>
<LI><A HREF=#4_5>4.5 CUPS Raw Files</A></LI>
<LI><A HREF=#4_6>4.6 File Transfer Protocol</A></LI>
<LI><A HREF=#4_7>4.7 Internet Printing Protocol</A></LI>
<LI><A HREF=#4_6>4.6 Internet Printing Protocol</A></LI>
<UL>
<LI><A HREF=#4_7_1>4.7.1 Get Default Destination (CUPS_GET_DEFAULT =
<LI><A HREF=#4_6_1>4.6.1 Get Default Destination (CUPS_GET_DEFAULT =
0x4001)</A></LI>
<LI><A HREF=#4_7_2>4.7.2 Get Printers (CUPS_GET_PRINTERS = 0x4002)</A></LI>
<LI><A HREF=#4_7_3>4.7.3 Add Printer (CUPS_ADD_PRINTER = 0x4003)</A></LI>
<LI><A HREF=#4_7_4>4.7.4 Delete Printer (CUPS_DELETE_PRINTER = 0x4004)</A>
<LI><A HREF=#4_6_2>4.6.2 Get Printers (CUPS_GET_PRINTERS = 0x4002)</A></LI>
<LI><A HREF=#4_6_3>4.6.3 Add Printer (CUPS_ADD_PRINTER = 0x4003)</A></LI>
<LI><A HREF=#4_6_4>4.6.4 Delete Printer (CUPS_DELETE_PRINTER = 0x4004)</A>
</LI>
<LI><A HREF=#4_7_5>4.7.5 Get Classes (CUPS_GET_CLASSES = 0x4005)</A></LI>
<LI><A HREF=#4_7_6>4.7.6 Add Class (CUPS_ADD_CLASS = 0x4006)</A></LI>
<LI><A HREF=#4_7_7>4.7.7 Delete Class (CUPS_DELETE_CLASS = 0x4007)</A></LI>
<LI><A HREF=#4_7_8>4.7.8 Accept Jobs (CUPS_ACCEPT_JOBS = 0x4008)</A></LI>
<LI><A HREF=#4_7_9>4.7.9 Reject Jobs (CUPS_REJECT_JOBS = 0x4009)</A></LI>
<LI><A HREF=#4_7_10>4.7.10 Set Default Destination (CUPS_SET_DEFAULT =
<LI><A HREF=#4_6_5>4.6.5 Get Classes (CUPS_GET_CLASSES = 0x4005)</A></LI>
<LI><A HREF=#4_6_6>4.6.6 Add Class (CUPS_ADD_CLASS = 0x4006)</A></LI>
<LI><A HREF=#4_6_7>4.6.7 Delete Class (CUPS_DELETE_CLASS = 0x4007)</A></LI>
<LI><A HREF=#4_6_8>4.6.8 Accept Jobs (CUPS_ACCEPT_JOBS = 0x4008)</A></LI>
<LI><A HREF=#4_6_9>4.6.9 Reject Jobs (CUPS_REJECT_JOBS = 0x4009)</A></LI>
<LI><A HREF=#4_6_10>4.6.10 Set Default Destination (CUPS_SET_DEFAULT =
0x400A)</A></LI>
</UL>
<LI><A HREF=#4_8>4.8 Line Printer Daemon Protocol</A></LI>
<LI><A HREF=#4_9>4.9 Server Message Block Protocol</A></LI>
<LI><A HREF=#4_10>4.10 Trivial File Transfer Protocol</A></LI>
<LI><A HREF=#4_7>4.7 Line Printer Daemon Protocol</A></LI>
<LI><A HREF=#4_8>4.8 Server Message Block Protocol</A></LI>
</UL>
<B><A HREF=#5>5 5 - Directories</A></B>
<BR>
@@ -133,10 +131,10 @@ following sections: </P>
<UL>
<LI>IEEE 1387.4, System Administration: Printing (draft) </LI>
<LI>IPP/1.0: Additional Optional Operations - Set 1 </LI>
<LI>IPP/1.0: Encoding and Transport </LI>
<LI>IPP/1.0: Implementers Guide </LI>
<LI>IPP/1.0: Model and Semantics </LI>
<LI>RFC 1179, Line Printer Daemon Protocol </LI>
<LI>RFC 2565, IPP/1.0: Encoding and Transport </LI>
<LI>RFC 2566, IPP/1.0: Model and Semantics </LI>
<LI>RFC 2639, IPP/1.0: Implementers Guide </LI>
</UL>
<H1><A NAME=3>3 Internal Interfaces</A></H1>
<H2><A NAME=3_1>3.1 Character Set Files</A></H2>
@@ -243,17 +241,17 @@ specific model of printer. </P>
<P>This string attribute specifies a color profile of the form: </P>
<UL>
<PRE>
resolution/type density m00 m01 m02 m10 m11 m12 m20 m21 m22
resolution/type density gamma m00 m01 m02 m10 m11 m12 m20 m21 m22
</PRE>
</UL>
<P>The <I>resolution</I> and <I>type</I> values may be &quot;-&quot; to act as a
wildcard. Otherwise they must match one of the <CODE>Resolution</CODE>
or <CODE>MediaType</CODE> attributes defined in the PPD file. </P>
<P>The <I>density</I> value defines a gamma and density adjustment
function such that: </P>
<P>The <I>density</I> and <I>gamma</I> values define gamma and density
adjustment function such that: </P>
<UL>
<PRE>
f(x) = d * x<SUP>1/d</SUP>
f(x) = density * x<SUP>gamma</SUP>
</PRE>
</UL>
<P>The <I>m00</I> through <I>m22</I> values define a 3x3 transformation
@@ -285,13 +283,18 @@ understood:
<TABLE BORDER=1 WIDTH=90%>
<TR><TH WIDTH=25%>Directive</TH><TH>Description</TH></TR>
<TR><TD>&lt;Class name&gt;
<BR> &lt;/Class&gt;</TD><TD></TR>
<BR> &lt;/Class&gt;</TD><TD>Surrounds a class definition.</TD></TR>
<TR><TD>&lt;DefaultClass name&gt;
<BR> &lt;/Class&gt;</TD><TD></TR>
<TR><TD>Info</TD><TD></TR>
<TR><TD>Location</TD><TD></TR>
<TR><TD>MoreInfo</TD><TD></TR>
<TR><TD>Printer</TD><TD></TR>
<BR> &lt;/Class&gt;</TD><TD>Surrounds a class definition for the default
destination.</TD></TR>
<TR><TD>Accepting</TD><TD>Specifies whether the class is accepting new
jobs. May be the names &quot;Yes&quot; or &quot;No&quot;.</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>
</TABLE>
</CENTER>
</P>
@@ -304,43 +307,92 @@ understood:
<CENTER>
<TABLE BORDER=1 WIDTH=90%>
<TR><TH WIDTH=25%>Directive</TH><TH>Default</TH><TH>Description</TH></TR>
<TR><TD>AccessLog</TD><TD><TD>Specifies the location of the access log
file (default &quot;logs/access_log&quot;).</TD></TR>
<TR><TD>Allow</TD><TD><TD></TR>
<TR><TD>AuthClass</TD><TD><TD></TR>
<TR><TD>AuthType</TD><TD><TD></TR>
<TR><TD>BrowseAddress</TD><TD><TD></TR>
<TR><TD>BrowseInterval</TD><TD><TD></TR>
<TR><TD>BrowsePort</TD><TD><TD></TR>
<TR><TD>BrowseTimeout</TD><TD><TD></TR>
<TR><TD>Browsing</TD><TD><TD></TR>
<TR><TD>DefaultCharset</TD><TD><TD></TR>
<TR><TD>DefaultLanguage</TD><TD><TD></TR>
<TR><TD>Deny</TD><TD><TD></TR>
<TR><TD>DocumentRoot</TD><TD><TD></TR>
<TR><TD>ErrorLog</TD><TD><TD></TR>
<TR><TD>Group</TD><TD><TD></TR>
<TR><TD>HostNameLookups</TD><TD><TD></TR>
<TR><TD>ImplicitClasses</TD><TD><TD></TR>
<TR><TD>KeepAlive</TD><TD><TD></TR>
<TR><TD>KeepAliveTimeout</TD><TD><TD></TR>
<TR><TD>AccessLog</TD><TD>logs/access_log</TD><TD>Specifies the
location of the access log file.</TD></TR>
<TR><TD>Allow</TD><TD>-</TD><TD>Allows connections from the specified
host, network, or domain.</TD></TR>
<TR><TD>AuthClass</TD><TD>-</TD><TD>Specifies what level of
authentication is required; may be either &quot;User&quot;, &quot;System&quot;, or &quot;Group&quot;.</TD>
</TR>
<TR><TD>AuthType</TD><TD>None</TD><TD>Specifies the type of
authentication to perform; may be either &quot;None&quot; or &quot;Basic&quot;.</TD></TR>
<TR><TD>BrowseAddress</TD><TD>255.255.255.255</TD><TD>Specifies a
broadcast address to send CUPS browsing packets to.</TD></TR>
<TR><TD>BrowseInterval</TD><TD>30</TD><TD>Specifies the number of
seconds between browsing updates.</TD></TR>
<TR><TD>BrowsePort</TD><TD>631</TD><TD>Specifies the UDP port number to
use for browse packets.</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>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
default language.</TD></TR>
<TR><TD>Deny</TD><TD>-</TD><TD>Refuses connections from the specified
host, network, or domain.</TD></TR>
<TR><TD>DocumentRoot</TD><TD>/usr/share/cups/doc</TD><TD>Specifies the
document data root directory.</TD></TR>
<TR><TD>ErrorLog</TD><TD>logs/error_log</TD><TD>Specifies the error log
file location.</TD></TR>
<TR><TD>Group</TD><TD>root, sys, system</TD><TD>Specifies the group
name or ID that is used when running external programs.</TD></TR>
<TR><TD>HostNameLookups</TD><TD>Off</TD><TD>Specifies whether or not to
perform reverse IP address lookups to get the actual hostname; may be
&quot;On&quot; or &quot;Off&quot;. Hostname lookups can significantly degrade the
performance of the CUPS server if one or more DNS servers is not
functioning properly.</TD></TR>
<TR><TD>ImplicitClasses</TD><TD>On</TD><TD>Specifies whether or not to
automatically create printer classes when more than one printer or
class of the same name is detected on the network; may be &quot;On&quot; or
&quot;Off&quot;.</TD></TR>
<TR><TD>KeepAlive</TD><TD>On</TD><TD>Specifies whether or not to use
the HTTP Keep-Alive feature; may be &quot;On&quot; or &quot;Off&quot;.</TD></TR>
<TR><TD>KeepAliveTimeout</TD><TD>30</TD><TD>Specifies the amount of
time to keep the HTTP connection alive before closing it.</TD></TR>
<TR><TD>&lt;Location path&gt;
<BR> &lt;/Location&gt;</TD><TD><TD></TR>
<TR><TD>LogLevel</TD><TD><TD></TR>
<TR><TD>MaxClients</TD><TD><TD></TR>
<TR><TD>MaxLogSize</TD><TD><TD></TR>
<TR><TD>MaxRequestSize</TD><TD><TD></TR>
<TR><TD>Order</TD><TD><TD></TR>
<TR><TD>PageLog</TD><TD><TD></TR>
<TR><TD>Port</TD><TD><TD></TR>
<TR><TD>RIPCache</TD><TD><TD></TR>
<TR><TD>ServerAdmin</TD><TD><TD></TR>
<TR><TD>ServerName</TD><TD><TD></TR>
<TR><TD>ServerRoot</TD><TD><TD></TR>
<TR><TD>SystemGroup</TD><TD><TD></TR>
<TR><TD>TempDir</TD><TD><TD></TR>
<TR><TD>Timeout</TD><TD><TD></TR>
<TR><TD>User</TD><TD><TD></TR>
<BR> &lt;/Location&gt;</TD><TD>-</TD><TD>Specifies a location to restrict
access to.</TD></TR>
<TR><TD>LogLevel</TD><TD>info</TD><TD>Controls the amount of
information that is logged in the error log file. Can be one of
&quot;debug&quot;, &quot;info&quot;, &quot;warn&quot;, &quot;error&quot;, or &quot;none&quot;, in decreasing order or
verbosity.</TD></TR>
<TR><TD>MaxClients</TD><TD>100</TD><TD>Specifies the maximum number of
simultaneous active clients. This value is internally limited to 1/3
of the total number of availabel file descriptors.</TD></TR>
<TR><TD>MaxLogSize</TD><TD>0</TD><TD>Specifies the maximum size of the
access, error, and page log files in bytes. If set to 0 then no
maximum size is set. Log files are rotated automatically when this
size is exceeded.</TD></TR>
<TR><TD>MaxRequestSize</TD><TD>0</TD><TD>Specifies the maximum size of
HTTP requests in bytes. If set to 0 then there is no maximum.</TD></TR>
<TR><TD>Order</TD><TD>Allow,Deny</TD><TD>Specifies the order of Allow
and Deny directive processing; can be &quot;Deny,Allow&quot; to implicitly deny
hosts unless they are allowed by an Allow line, or &quot;Allow,Deny&quot; to
implicitly allow hosts unless they are denied by a Deny line.</TD></TR>
<TR><TD>PageLog</TD><TD>logs/page_log</TD><TD>Specifies the location of
the page log file.</TD></TR>
<TR><TD>Port</TD><TD>631</TD><TD>Specifies a port number to listen to
for HTTP connections.</TD></TR>
<TR><TD>RIPCache</TD><TD>8m</TD><TD>Specifies the size of the memory
cache in bytes that is used by RIP filters.</TD></TR>
<TR><TD>ServerAdmin</TD><TD>root@ServerName</TD><TD>Specifies the
person to contact with problems.</TD></TR>
<TR><TD>ServerName</TD><TD>hostname</TD><TD>Specifies the hostname that
is supplied to HTTP clients. This is also used to determine the
default CUPS server for the CUPS IPP client applications.</TD></TR>
<TR><TD>ServerRoot</TD><TD>/var/cups</TD><TD>Specifies the root
directory for server data files.</TD></TR>
<TR><TD>SystemGroup</TD><TD>root, sys, system</TD><TD>Specifies the
group name used for System class authentication.</TD></TR>
<TR><TD>TempDir</TD><TD>/var/tmp</TD><TD>Specifies the temporary
directory to use.</TD></TR>
<TR><TD>Timeout</TD><TD>300</TD><TD>The timeout in seconds before
client connections are closed in the middle of a request.</TD></TR>
<TR><TD>User</TD><TD>lp</TD><TD>Specifies the user that is used when
running external programs.</TD></TR>
</TABLE>
</CENTER>
</P>
@@ -353,22 +405,28 @@ understood:
<CENTER>
<TABLE BORDER=1 WIDTH=90%>
<TR><TH WIDTH=25%>Directive</TH><TH>Description</TH></TR>
<TR><TD>Accepting</TD><TD>Specifies whether the printer is accepting
new jobs. May be the names &quot;Yes&quot; or &quot;No&quot;.</TD></TR>
<TR><TD>&lt;DefaultPrinter name&gt;
<BR> &lt;/Printer&gt;</TD><TD></TR>
<TR><TD>DeviceURI</TD><TD></TR>
<TR><TD>Info</TD><TD></TR>
<TR><TD>Location</TD><TD></TR>
<TR><TD>MoreInfo</TD><TD></TR>
<BR> &lt;/Printer&gt;</TD><TD>Surrounds the printer definition for a default
destination.</TD></TR>
<TR><TD>DeviceURI</TD><TD>Specifies the device-uri attribute for the
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></TR>
<TR><TD>State</TD><TD></TR>
<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
be &quot;Idle&quot; or &quot;Stopped&quot;.</TD></TR>
</TABLE>
</CENTER>
</P>
<H1><A NAME=4>4 External Interfaces</A></H1>
<H2><A NAME=4_1>4.1 AppSocket Protocol</A></H2>
<P>The AppSocket protocol is an 8-bit clean TCP/IP socket connection.
The default IP service port is 9100. </P>
The default IP service port is 9100. The URI method name is &quot;socket&quot;. </P>
<H2><A NAME=4_2>4.2 CUPS Browsing Protocol</A></H2>
<P>The CUPS Browsing Protocol is a UDP/IP-based broadcast service. By
default this service operates on IP service port 631. </P>
@@ -545,10 +603,7 @@ application/vnd.cups-raster</CODE>. </P>
<P>Raw files are printer-dependent print files that are in a format
suitable to the destination printer (e.g. HP-PCL, HP-RTL, etc.) The
MIME type for CUPS Raw files is <CODE>application/vnd.cups-raw</CODE>. </P>
<H2><A NAME=4_6>4.6 File Transfer Protocol</A></H2>
<P>The File Transfer Protocol (FTP) is described by <A HREF=http://www.ietf.org/rfc/rfc959.txt>
RFC 959: File Transfer Protocol</A>. </P>
<H2><A NAME=4_7>4.7 Internet Printing Protocol</A></H2>
<H2><A NAME=4_6>4.6 Internet Printing Protocol</A></H2>
<P>The Internet Printing Protocol is described by the following RFCs: </P>
<UL>
<LI><A HREF=http://www.ietf.org/rfc/rfc2565.txt>RFC 2565: Internet
@@ -563,20 +618,21 @@ Protocol</A></LI>
<LI><A HREF=http://www.ietf.org/rfc/rfc2569.txt>RFC 2569: Mapping
between LPD and IPP Protocols</A></LI>
</UL>
<P>The URI method name for IPP is &quot;ipp&quot;. </P>
<P>CUPS defines the following extension operations to IPP. </P>
<H3><A NAME=4_7_1>4.7.1 Get Default Destination (CUPS_GET_DEFAULT =
<H3><A NAME=4_6_1>4.6.1 Get Default Destination (CUPS_GET_DEFAULT =
0x4001)</A></H3>
<P>The get default destination operation returns the printer attributes
for the system default printer or class. The only required attributes
are <CODE>attributes-charset</CODE> and <CODE>
attributes-natural-language</CODE>. </P>
<P>Get default destination will only return <CODE>ipp-ok</CODE>. </P>
<H3><A NAME=4_7_2>4.7.2 Get Printers (CUPS_GET_PRINTERS = 0x4002)</A></H3>
<H3><A NAME=4_6_2>4.6.2 Get Printers (CUPS_GET_PRINTERS = 0x4002)</A></H3>
<P>The get printers operation returns the printer attributes for all
printers known to the system. The only required attributes are <CODE>
attributes-charset</CODE> and <CODE>attributes-natural-language</CODE>. </P>
<P>Get printers will only return <CODE>ipp-ok</CODE>. </P>
<H3><A NAME=4_7_3>4.7.3 Add Printer (CUPS_ADD_PRINTER = 0x4003)</A></H3>
<H3><A NAME=4_6_3>4.6.3 Add Printer (CUPS_ADD_PRINTER = 0x4003)</A></H3>
<P>The add printer operation adds or replaces the specified printer.
The <CODE>attributes-charset</CODE>, <CODE>attributes-natural-language</CODE>
and <CODE>printer-uri</CODE> attributes are required. </P>
@@ -589,19 +645,19 @@ body. If a valid interface script or PPD file is not provided then the
printer is treated as a generic PostScript device. </P>
<P>Add printer will return <CODE>ipp-ok</CODE>, <CODE>ipp-not-authorized</CODE>
, <CODE>ipp-bad-request</CODE>, or <CODE>ipp-attributes</CODE>. </P>
<H3><A NAME=4_7_4>4.7.4 Delete Printer (CUPS_DELETE_PRINTER = 0x4004)</A>
<H3><A NAME=4_6_4>4.6.4 Delete Printer (CUPS_DELETE_PRINTER = 0x4004)</A>
</H3>
<P>The delete printer operation removes the specified printer. The only
required attributes are <CODE>attributes-charset</CODE>, <CODE>
attributes-natural-language</CODE>, and <CODE>printer-uri</CODE>. </P>
<P>Delete printer will return <CODE>ipp-ok</CODE>, <CODE>ipp-not-found</CODE>
, or <CODE>ipp-not-authorized</CODE>. </P>
<H3><A NAME=4_7_5>4.7.5 Get Classes (CUPS_GET_CLASSES = 0x4005)</A></H3>
<H3><A NAME=4_6_5>4.6.5 Get Classes (CUPS_GET_CLASSES = 0x4005)</A></H3>
<P>The get classes operation returns the printer attributes for all
classes known to the system. The only required attributes are <CODE>
attributes-charset</CODE> and <CODE>attributes-natural-language</CODE>. </P>
<P>Get classes will only return <CODE>ipp-ok</CODE>. </P>
<H3><A NAME=4_7_6>4.7.6 Add Class (CUPS_ADD_CLASS = 0x4006)</A></H3>
<H3><A NAME=4_6_6>4.6.6 Add Class (CUPS_ADD_CLASS = 0x4006)</A></H3>
<P>The add class operation adds or replaces the specified class. The <CODE>
attributes-charset</CODE>, <CODE>attributes-natural-language</CODE>,
and <CODE>printer-uri</CODE> attributes are required. </P>
@@ -611,27 +667,27 @@ required when initially adding a printer and optional when modifying a
printer. </P>
<P>Add class will return <CODE>ipp-ok</CODE>, <CODE>ipp-not-authorized</CODE>
, <CODE>ipp-bad-request</CODE>, or <CODE>ipp-attributes</CODE>. </P>
<H3><A NAME=4_7_7>4.7.7 Delete Class (CUPS_DELETE_CLASS = 0x4007)</A></H3>
<H3><A NAME=4_6_7>4.6.7 Delete Class (CUPS_DELETE_CLASS = 0x4007)</A></H3>
<P>The delete class operation removes the specified class. The only
required attributes are <CODE>attributes-charset</CODE>, <CODE>
attributes-natural-language</CODE>, and <CODE>printer-uri</CODE>. </P>
<P>Delete class will return <CODE>ipp-ok</CODE>, <CODE>ipp-not-found</CODE>
, or <CODE>ipp-not-authorized</CODE>. </P>
<H3><A NAME=4_7_8>4.7.8 Accept Jobs (CUPS_ACCEPT_JOBS = 0x4008)</A></H3>
<H3><A NAME=4_6_8>4.6.8 Accept Jobs (CUPS_ACCEPT_JOBS = 0x4008)</A></H3>
<P>The accept jobs operation allows jobs to be accepted by the
specified destination. The only required attributes are <CODE>
attributes-charset</CODE>, <CODE>attributes-natural-language</CODE>,
and <CODE>printer-uri</CODE>. </P>
<P>Accept jobs will return <CODE>ipp-ok</CODE>, <CODE>ipp-not-found</CODE>
, or <CODE>ipp-not-authorized</CODE>. </P>
<H3><A NAME=4_7_9>4.7.9 Reject Jobs (CUPS_REJECT_JOBS = 0x4009)</A></H3>
<H3><A NAME=4_6_9>4.6.9 Reject Jobs (CUPS_REJECT_JOBS = 0x4009)</A></H3>
<P>The reject jobs operation prevents jobs from being accepted by the
specified destination. The only required attributes are <CODE>
attributes-charset</CODE>, <CODE>attributes-natural-language</CODE>,
and <CODE>printer-uri</CODE>. </P>
<P>Reject jobs will return <CODE>ipp-ok</CODE>, <CODE>ipp-not-found</CODE>
, or <CODE>ipp-not-authorized</CODE>. </P>
<H3><A NAME=4_7_10>4.7.10 Set Default Destination (CUPS_SET_DEFAULT =
<H3><A NAME=4_6_10>4.6.10 Set Default Destination (CUPS_SET_DEFAULT =
0x400A)</A></H3>
<P>The set default destination operation returns the printer attributes
for the system default printer or class. The only required attributes
@@ -640,28 +696,27 @@ are <CODE>attributes-charset</CODE>, <CODE>attributes-natural-language</CODE>
<P>Set default destination will return <CODE>ipp-ok</CODE>, <CODE>
ipp-not-authorized</CODE>, <CODE>ipp-bad-request</CODE>, or <CODE>
ipp-not-found</CODE>. </P>
<H2><A NAME=4_8>4.8 Line Printer Daemon Protocol</A></H2>
<H2><A NAME=4_7>4.7 Line Printer Daemon Protocol</A></H2>
<P>The Line Printer Daemon (LPD) protocol is described by <A HREF=http://www.ietf.org/rfc/rfc1179.txt>
RFC 1179: Line Printer Daemon Protocol</A>. </P>
<H2><A NAME=4_9>4.9 Server Message Block Protocol</A></H2>
<P>The URI method name for LPD is &quot;lpd&quot;. </P>
<H2><A NAME=4_8>4.8 Server Message Block Protocol</A></H2>
<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>
<H2><A NAME=4_10>4.10 Trivial File Transfer Protocol</A></H2>
<P>The Trivial File Transfer Protocol (TFTP) is described by <A HREF=http://www.ietf.org/rfc/rfc1350.txt>
RFC 1350: The TFTP Protocol (Revision 2)</A>. </P>
<P>The URI method name for SMB is &quot;smb&quot;. </P>
<H1><A NAME=5>5 5 - Directories</A></H1>
<DL>
<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 </DT>
<DD>The <CODE>accept</CODE>, <CODE>disable</CODE>, <CODE>enable</CODE>, <CODE>
lpadmin</CODE>, and <CODE>reject</CODE> commands reside here. </DD>
<DT>/usr/sbin </DT>
<DD>The <CODE>lpc</CODE> and <CODE>cupsd</CODE> commands resize here. </DD>
<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>
<DT>/usr/share/cups/data </DT>
<DD>The character set and filter data files reside here. </DD>
<DT>/usr/share/cups/fonts </DT>
<DD>The <CODE>pstoraster</CODE> font files reside here. </DD>
+1157 -1216
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+143 -109
Ver Arquivo
@@ -3,7 +3,7 @@
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-1999, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-IDD-1.0">
<META NAME="Author" CONTENT="Easy Software Products">
<TITLE>DRAFT - CUPS Interface Design Description</TITLE>
<TITLE>CUPS Interface Design Description</TITLE>
</HEAD>
<BODY>
@@ -74,10 +74,10 @@ sections:
<UL>
<LI>IEEE 1387.4, System Administration: Printing (draft)
<LI>IPP/1.0: Additional Optional Operations - Set 1
<LI>IPP/1.0: Encoding and Transport
<LI>IPP/1.0: Implementers Guide
<LI>IPP/1.0: Model and Semantics
<LI>RFC 1179, Line Printer Daemon Protocol
<LI>RFC 2565, IPP/1.0: Encoding and Transport
<LI>RFC 2566, IPP/1.0: Model and Semantics
<LI>RFC 2639, IPP/1.0: Implementers Guide
</UL>
<H1>Internal Interfaces</H1>
@@ -210,18 +210,18 @@ printer.
<P>This string attribute specifies a color profile of the form:
<UL><PRE>
resolution/type density m00 m01 m02 m10 m11 m12 m20 m21 m22
resolution/type density gamma m00 m01 m02 m10 m11 m12 m20 m21 m22
</PRE></UL>
<P>The <I>resolution</I> and <I>type</I> values may be "-" to act as a
wildcard. Otherwise they must match one of the <CODE>Resolution</CODE> or
<CODE>MediaType</CODE> attributes defined in the PPD file.
<P>The <I>density</I> value defines a gamma and density adjustment function
such that:
<P>The <I>density</I> and <I>gamma</I> values define gamma and density
adjustment function such that:
<UL><PRE>
f(x) = d * x<SUP>1/d</SUP>
f(x) = density * x<SUP>gamma</SUP>
</PRE></UL>
<P>The <I>m00</I> through <I>m22</I> values define a 3x3 transformation
@@ -269,28 +269,33 @@ followed by its value. The following directives are understood:
<TR>
<TD>&lt;Class name&gt;<BR>
&lt;/Class&gt;</TD>
<TD></TD>
<TD>Surrounds a class definition.</TD>
</TR>
<TR>
<TD>&lt;DefaultClass name&gt;<BR>
&lt;/Class&gt;</TD>
<TD></TD>
<TD>Surrounds a class definition for the default destination.</TD>
</TR>
<TR>
<TD>Accepting</TD>
<TD>Specifies whether the class is accepting new jobs. May be
the names "Yes" or "No".</TD>
</TR>
<TR>
<TD>Info</TD>
<TD></TD>
<TD>A textual description of the class.</TD>
</TR>
<TR>
<TD>Location</TD>
<TD></TD>
<TD>A textual location of the class.</TD>
</TR>
<TR>
<TD>MoreInfo</TD>
<TD></TD>
<TD>A URL pointing to additional information on the class.</TD>
</TR>
<TR>
<TD>Printer</TD>
<TD></TD>
<TD>Specifies a printer that is a member of the class.</TD>
</TR>
</TABLE></CENTER>
@@ -310,180 +315,208 @@ followed by its value. The following directives are understood:
</TR>
<TR>
<TD>AccessLog</TD>
<TD></TD>
<TD>Specifies the location of the access log file (default
"logs/access_log").</TD>
<TD>logs/access_log</TD>
<TD>Specifies the location of the access log file.</TD>
</TR>
<TR>
<TD>Allow</TD>
<TD></TD>
<TD></TD>
<TD>-</TD>
<TD>Allows connections from the specified host, network, or
domain.</TD>
</TR>
<TR>
<TD>AuthClass</TD>
<TD></TD>
<TD></TD>
<TD>-</TD>
<TD>Specifies what level of authentication is required; may be either
"User", "System", or "Group".</TD>
</TR>
<TR>
<TD>AuthType</TD>
<TD></TD>
<TD></TD>
<TD>None</TD>
<TD>Specifies the type of authentication to perform; may be either
"None" or "Basic".</TD>
</TR>
<TR>
<TD>BrowseAddress</TD>
<TD></TD>
<TD></TD>
<TD>255.255.255.255</TD>
<TD>Specifies a broadcast address to send CUPS browsing packets to.</TD>
</TR>
<TR>
<TD>BrowseInterval</TD>
<TD></TD>
<TD></TD>
<TD>30</TD>
<TD>Specifies the number of seconds between browsing updates.</TD>
</TR>
<TR>
<TD>BrowsePort</TD>
<TD></TD>
<TD></TD>
<TD>631</TD>
<TD>Specifies the UDP port number to use for browse packets.</TD>
</TR>
<TR>
<TD>BrowseTimeout</TD>
<TD></TD>
<TD></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></TD>
<TD></TD>
<TD>On</TD>
<TD>Specifies whether or not printer and class browsing is enabled; can
be "On" or "Off".</TD>
</TR>
<TR>
<TD>DefaultCharset</TD>
<TD></TD>
<TD></TD>
<TD>iso-8859-1</TD>
<TD>Specifies the default character set.</TD>
</TR>
<TR>
<TD>DefaultLanguage</TD>
<TD></TD>
<TD></TD>
<TD>current locale</TD>
<TD>Specifies the default language.</TD>
</TR>
<TR>
<TD>Deny</TD>
<TD></TD>
<TD></TD>
<TD>-</TD>
<TD>Refuses connections from the specified host, network, or
domain.</TD>
</TR>
<TR>
<TD>DocumentRoot</TD>
<TD></TD>
<TD></TD>
<TD>/usr/share/cups/doc</TD>
<TD>Specifies the document data root directory.</TD>
</TR>
<TR>
<TD>ErrorLog</TD>
<TD></TD>
<TD></TD>
<TD>logs/error_log</TD>
<TD>Specifies the error log file location.</TD>
</TR>
<TR>
<TD>Group</TD>
<TD></TD>
<TD></TD>
<TD>root, sys, system</TD>
<TD>Specifies the group name or ID that is used when running
external programs.</TD>
</TR>
<TR>
<TD>HostNameLookups</TD>
<TD></TD>
<TD></TD>
<TD>Off</TD>
<TD>Specifies whether or not to perform reverse IP address lookups to
get the actual hostname; may be "On" or "Off". Hostname lookups can
significantly degrade the performance of the CUPS server if one or
more DNS servers is not functioning properly.</TD>
</TR>
<TR>
<TD>ImplicitClasses</TD>
<TD></TD>
<TD></TD>
<TD>On</TD>
<TD>Specifies whether or not to automatically create printer classes
when more than one printer or class of the same name is detected on
the network; may be "On" or "Off".</TD>
</TR>
<TR>
<TD>KeepAlive</TD>
<TD></TD>
<TD></TD>
<TD>On</TD>
<TD>Specifies whether or not to use the HTTP Keep-Alive feature; may
be "On" or "Off".</TD>
</TR>
<TR>
<TD>KeepAliveTimeout</TD>
<TD></TD>
<TD></TD>
<TD>30</TD>
<TD>Specifies the amount of time to keep the HTTP connection alive
before closing it.</TD>
</TR>
<TR>
<TD>&lt;Location path&gt;<BR>
&lt;/Location&gt;</TD>
<TD></TD>
<TD></TD>
<TD>-</TD>
<TD>Specifies a location to restrict access to.</TD>
</TR>
<TR>
<TD>LogLevel</TD>
<TD></TD>
<TD></TD>
<TD>info</TD>
<TD>Controls the amount of information that is logged in the
error log file. Can be one of "debug", "info", "warn", "error",
or "none", in decreasing order or verbosity.</TD>
</TR>
<TR>
<TD>MaxClients</TD>
<TD></TD>
<TD></TD>
<TD>100</TD>
<TD>Specifies the maximum number of simultaneous active clients.
This value is internally limited to 1/3 of the total number of
availabel file descriptors.</TD>
</TR>
<TR>
<TD>MaxLogSize</TD>
<TD></TD>
<TD></TD>
<TD>0</TD>
<TD>Specifies the maximum size of the access, error, and page
log files in bytes. If set to 0 then no maximum size is set.
Log files are rotated automatically when this size is
exceeded.</TD>
</TR>
<TR>
<TD>MaxRequestSize</TD>
<TD></TD>
<TD></TD>
<TD>0</TD>
<TD>Specifies the maximum size of HTTP requests in bytes. If set to 0
then there is no maximum.</TD>
</TR>
<TR>
<TD>Order</TD>
<TD></TD>
<TD></TD>
<TD>Allow,Deny</TD>
<TD>Specifies the order of Allow and Deny directive processing; can
be "Deny,Allow" to implicitly deny hosts unless they are allowed by
an Allow line, or "Allow,Deny" to implicitly allow hosts unless they
are denied by a Deny line.</TD>
</TR>
<TR>
<TD>PageLog</TD>
<TD></TD>
<TD></TD>
<TD>logs/page_log</TD>
<TD>Specifies the location of the page log file.</TD>
</TR>
<TR>
<TD>Port</TD>
<TD></TD>
<TD></TD>
<TD>631</TD>
<TD>Specifies a port number to listen to for HTTP connections.</TD>
</TR>
<TR>
<TD>RIPCache</TD>
<TD></TD>
<TD></TD>
<TD>8m</TD>
<TD>Specifies the size of the memory cache in bytes that is used by
RIP filters.</TD>
</TR>
<TR>
<TD>ServerAdmin</TD>
<TD></TD>
<TD></TD>
<TD>root@ServerName</TD>
<TD>Specifies the person to contact with problems.</TD>
</TR>
<TR>
<TD>ServerName</TD>
<TD></TD>
<TD></TD>
<TD>hostname</TD>
<TD>Specifies the hostname that is supplied to HTTP clients. This
is also used to determine the default CUPS server for the CUPS IPP
client applications.</TD>
</TR>
<TR>
<TD>ServerRoot</TD>
<TD></TD>
<TD></TD>
<TD>/var/cups</TD>
<TD>Specifies the root directory for server data files.</TD>
</TR>
<TR>
<TD>SystemGroup</TD>
<TD></TD>
<TD></TD>
<TD>root, sys, system</TD>
<TD>Specifies the group name used for System class authentication.</TD>
</TR>
<TR>
<TD>TempDir</TD>
<TD></TD>
<TD></TD>
<TD>/var/tmp</TD>
<TD>Specifies the temporary directory to use.</TD>
</TR>
<TR>
<TD>Timeout</TD>
<TD></TD>
<TD></TD>
<TD>300</TD>
<TD>The timeout in seconds before client connections are closed
in the middle of a request.</TD>
</TR>
<TR>
<TD>User</TD>
<TD></TD>
<TD></TD>
<TD>lp</TD>
<TD>Specifies the user that is used when running external programs.</TD>
</TR>
</TABLE></CENTER>
@@ -500,35 +533,41 @@ followed by its value. The following directives are understood:
<TH WIDTH="25%">Directive</TH>
<TH>Description</TH>
</TR>
<TR>
<TD>Accepting</TD>
<TD>Specifies whether the printer is accepting new jobs. May be
the names "Yes" or "No".</TD>
</TR>
<TR>
<TD>&lt;DefaultPrinter name&gt;<BR>
&lt;/Printer&gt;</TD>
<TD></TD>
<TD>Surrounds the printer definition for a default destination.</TD>
</TR>
<TR>
<TD>DeviceURI</TD>
<TD></TD>
<TD>Specifies the device-uri attribute for the printer.</TD>
</TR>
<TR>
<TD>Info</TD>
<TD></TD>
<TD>A textual description of the printer.</TD>
</TR>
<TR>
<TD>Location</TD>
<TD></TD>
<TD>A textual location of the printer.</TD>
</TR>
<TR>
<TD>MoreInfo</TD>
<TD></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></TD>
<TD>Surrounds the printer definition.</TD>
</TR>
<TR>
<TD>State</TD>
<TD></TD>
<TD>Specifies the initial state of the printer; can be "Idle" or
"Stopped".</TD>
</TR>
</TABLE></CENTER>
@@ -537,7 +576,7 @@ followed by its value. The following directives are understood:
<H2>AppSocket Protocol</H2>
<P>The AppSocket protocol is an 8-bit clean TCP/IP socket connection.
The default IP service port is 9100.
The default IP service port is 9100. The URI method name is "socket".
<H2>CUPS Browsing Protocol</H2>
@@ -912,12 +951,6 @@ raster data for that page.
to the destination printer (e.g. HP-PCL, HP-RTL, etc.) The MIME type for CUPS
Raw files is <CODE>application/vnd.cups-raw</CODE>.
<H2>File Transfer Protocol</H2>
<P>The File Transfer Protocol (FTP) is described by
<A HREF="http://www.ietf.org/rfc/rfc959.txt">RFC 959: File Transfer
Protocol</A>.
<H2>Internet Printing Protocol</H2>
<P>The Internet Printing Protocol is described by the following RFCs:
@@ -942,6 +975,8 @@ Protocol</A>.
</UL>
<P>The URI method name for IPP is "ipp".
<P>CUPS defines the following extension operations to IPP.
<H3>Get Default Destination (CUPS_GET_DEFAULT = 0x4001)</H3>
@@ -1062,17 +1097,15 @@ are <CODE>attributes-charset</CODE>,
<A HREF="http://www.ietf.org/rfc/rfc1179.txt">RFC 1179: Line Printer Daemon
Protocol</A>.
<P>The URI method name for LPD is "lpd".
<H2>Server Message Block Protocol</H2>
<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>.
<H2>Trivial File Transfer Protocol</H2>
<P>The Trivial File Transfer Protocol (TFTP) is described by
<A HREF="http://www.ietf.org/rfc/rfc1350.txt">RFC 1350: The TFTP Protocol
(Revision 2)</A>.
<P>The URI method name for SMB is "smb".
<H1>5 - Directories</H1>
@@ -1083,14 +1116,15 @@ System (CIFS) protocols are described at
<CODE>lpr</CODE>, <CODE>lprm</CODE>, and <CODE>lpstat</CODE> commands
reside here.
<DT>/usr/lib
<DD>The <CODE>accept</CODE>, <CODE>disable</CODE>, <CODE>enable</CODE>,
<CODE>lpadmin</CODE>, and <CODE>reject</CODE> commands reside here.
<DT>/usr/sbin
<DD>The <CODE>lpc</CODE> and <CODE>cupsd</CODE> commands resize here.
<DD>The <CODE>accept</CODE>, <CODE>cupsd</CODE>,
<CODE>lpadmin</CODE>, <CODE>lpc</CODE>, and <CODE>reject</CODE>
commands reside here.
<DT>/usr/share/cups
<DD>This is the root directory of the CUPS static data.
<DT>/usr/share/cups/data
<DD>The character set and filter data files reside here.
<DT>/usr/share/cups/fonts
+14 -9
Ver Arquivo
@@ -11,7 +11,7 @@
<TD><H1 ALIGN=right>An Overview of the<BR>
Common UNIX Printing System</H1></DIV>
<P ALIGN=right>May 11, 1999<BR>
<P ALIGN=right>September 14, 1999<BR>
Michael Sweet, Easy Software Products<BR>
Copyright 1998-1999, All Rights Reserved.</P>
</TD>
@@ -163,7 +163,9 @@ Apache server configuration file and defines all of the access control
properties for the server.
<P>The printer and class definition files list the available printer
queues and classes.
queues and classes. Printer classes are collections of printers. Jobs
sent to a class are forwarded to the first available printer in the
class, round-robin fashion.
<P>The MIME type files list the supported MIME types (text/plain,
application/postscript, etc.) and "magic" rules for automatically
@@ -174,13 +176,16 @@ 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. These
files are augmented by <I>AddFilter</I> entries in the printer
definition files. The filters are used when a job is dispatched so that
an application can send a convenient file format to the printing system
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 PostScript printers. There is
one PPD file for each printer.
<P>The PPD files describe the capabilities of PostScript printers.
There is one PPD file for each printer.
<H3>CUPS Interface Library</H3>
@@ -199,8 +204,8 @@ and job options. All output is sent to the standard output.
<H3>Backends</H3>
A backend program is a special filter that writes incoming data to a
device or network connection. Backends for serial, parallel, LPD, TFTP,
FTP, IPP, SMB, and AppSocket (JetDirect) connections are provided in
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>
Arquivo binário não exibido.
+38 -6
Ver Arquivo
@@ -1,13 +1,13 @@
<HTML>
<HEAD>
<TITLE>DRAFT - CUPS Software Administrators Manual</TITLE>
<TITLE>CUPS Software Administrators Manual</TITLE>
<META NAME="AUTHOR" CONTENT="Easy Software Products">
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-1999, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.0.0">
</HEAD>
<BODY>
<CENTER><A HREF=#contents><IMG SRC="images/cups-large.gif" BORDER=0><BR>
<H1>DRAFT - CUPS Software Administrators Manual</H1></A><BR>
<H1>CUPS Software Administrators Manual</H1></A><BR>
CUPS-SAM-1.0.0<BR>
Easy Software Products<BR>
Copyright 1997-1999, All Rights Reserved<BR>
@@ -345,8 +345,8 @@ installation of CUPS: </P>
<DT>file:/dev/filename </DT>
<DT>/dev/filename </DT>
<DD>Sends all output to the specified file. </DD>
<DT>http://hostname[:port]/resource </DT>
<DT>ipp://hostname[:port]/resource </DT>
<DT>http://[username:password@]hostname[:port]/resource </DT>
<DT>ipp://[username:password@]hostname[:port]/resource </DT>
<DD>Sends all output to the specified IPP printer or server. The <I>
port</I> parameters defaults to 631. </DD>
<DT>lpd://hostname/queue </DT>
@@ -365,6 +365,9 @@ character:
<LI><CODE>parity=<I>none</I></CODE> - Turns parity checking off. </LI>
</UL>
</DD>
<DT>smb://[username:password@]hostname/queue </DT>
<DD>Sends all output to the specified SMB (Windows) printer queue
using the SAMBA software. </DD>
<DT>socket://hostname[:port] </DT>
<DD>Sends all output to the specified printer using the AppSocket
protocol. The <I>port</I> parameter defaults to 9100. </DD>
@@ -598,7 +601,21 @@ Allow from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
</UL>
<P><CODE>Allow</CODE> directives are cummulative, so multiple <CODE>
Allow</CODE> directives can be used to allow access for multiple hosts
or networks. </P>
or networks. The <CODE>/mm</CODE> notation specifies a CIDR netmask:
<CENTER>
<TABLE BORDER=1 WIDTH=80%>
<TR><TH>mm</TH><TH>netmask</TH></TR>
<TR><TD>0</TD><TD>0.0.0.0</TD></TR>
<TR><TD>1</TD><TD>128.0.0.0</TD></TR>
<TR><TD>2</TD><TD>192.0.0.0</TD></TR>
<TR><TD>...</TD><TD>...</TD></TR>
<TR><TD>8</TD><TD>255.0.0.0</TD></TR>
<TR><TD>16</TD><TD>255.255.0.0</TD></TR>
<TR><TD>24</TD><TD>255.255.255.0</TD></TR>
<TR><TD>32</TD><TD>255.255.255.255</TD></TR>
</TABLE>
</CENTER>
</P>
<P>The <CODE>Allow</CODE> directive must appear inside a <CODE>Location</CODE>
directive. </P>
<H3><A NAME=5_4_4>Deny</A></H3>
@@ -620,7 +637,22 @@ Deny from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
</PRE>
</UL>
<P><CODE>Deny</CODE> directives are cummulative, so multiple <CODE>Deny</CODE>
directives can be used to allow access for multiple hosts or networks. </P>
directives can be used to allow access for multiple hosts or networks.
The <CODE>/mm</CODE> notation specifies a CIDR netmask:
<CENTER>
<TABLE BORDER=1 WIDTH=80%>
<TR><TH>mm</TH><TH>netmask</TH></TR>
<TR><TD>0</TD><TD>0.0.0.0</TD></TR>
<TR><TD>1</TD><TD>128.0.0.0</TD></TR>
<TR><TD>2</TD><TD>192.0.0.0</TD></TR>
<TR><TD>...</TD><TD>...</TD></TR>
<TR><TD>8</TD><TD>255.0.0.0</TD></TR>
<TR><TD>16</TD><TD>255.255.0.0</TD></TR>
<TR><TD>24</TD><TD>255.255.255.0</TD></TR>
<TR><TD>32</TD><TD>255.255.255.255</TD></TR>
</TABLE>
</CENTER>
</P>
<P>The <CODE>Deny</CODE> directive must appear inside a <CODE>Location</CODE>
directive. </P>
<H3><A NAME=5_4_5>AuthType</A></H3>
+571 -543
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+89 -5
Ver Arquivo
@@ -3,7 +3,7 @@
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-1999, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-SAM-1.0.0">
<META NAME="Author" CONTENT="Easy Software Products">
<TITLE>DRAFT - CUPS Software Administrators Manual</TITLE>
<TITLE>CUPS Software Administrators Manual</TITLE>
</HEAD>
<BODY>
@@ -315,8 +315,8 @@ CUPS:
<DT>/dev/filename
<DD>Sends all output to the specified file.
<DT>http://hostname[:port]/resource
<DT>ipp://hostname[:port]/resource
<DT>http://[username:password@]hostname[:port]/resource
<DT>ipp://[username:password@]hostname[:port]/resource
<DD>Sends all output to the specified IPP printer or server.
The <I>port</I> parameters defaults to 631.
@@ -343,6 +343,10 @@ CUPS:
checking off.
</UL>
<DT>smb://[username:password@]hostname/queue
<DD>Sends all output to the specified SMB (Windows) printer queue
using the SAMBA software.
<DT>socket://hostname[:port]
<DD>Sends all output to the specified printer using the
AppSocket protocol. The <I>port</I> parameter defaults to 9100.
@@ -633,7 +637,47 @@ Allow from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
</PRE></UL>
<P><CODE>Allow</CODE> directives are cummulative, so multiple <CODE>Allow</CODE>
directives can be used to allow access for multiple hosts or networks.
directives can be used to allow access for multiple hosts or networks. The
<CODE>/mm</CODE> notation specifies a CIDR netmask:
<CENTER><TABLE WIDTH="80%" BORDER="1">
<TR>
<TH>mm</TH>
<TH>netmask</TH>
</TR>
<TR>
<TD>0</TD>
<TD>0.0.0.0</TD>
</TR>
<TR>
<TD>1</TD>
<TD>128.0.0.0</TD>
</TR>
<TR>
<TD>2</TD>
<TD>192.0.0.0</TD>
</TR>
<TR>
<TD>...</TD>
<TD>...</TD>
</TR>
<TR>
<TD>8</TD>
<TD>255.0.0.0</TD>
</TR>
<TR>
<TD>16</TD>
<TD>255.255.0.0</TD>
</TR>
<TR>
<TD>24</TD>
<TD>255.255.255.0</TD>
</TR>
<TR>
<TD>32</TD>
<TD>255.255.255.255</TD>
</TR>
</TABLE></CENTER>
<P>The <CODE>Allow</CODE> directive must appear inside a
<CODE>Location</CODE> directive.
@@ -658,7 +702,47 @@ Deny from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
</PRE></UL>
<P><CODE>Deny</CODE> directives are cummulative, so multiple <CODE>Deny</CODE>
directives can be used to allow access for multiple hosts or networks.
directives can be used to allow access for multiple hosts or networks. The
<CODE>/mm</CODE> notation specifies a CIDR netmask:
<CENTER><TABLE WIDTH="80%" BORDER="1">
<TR>
<TH>mm</TH>
<TH>netmask</TH>
</TR>
<TR>
<TD>0</TD>
<TD>0.0.0.0</TD>
</TR>
<TR>
<TD>1</TD>
<TD>128.0.0.0</TD>
</TR>
<TR>
<TD>2</TD>
<TD>192.0.0.0</TD>
</TR>
<TR>
<TD>...</TD>
<TD>...</TD>
</TR>
<TR>
<TD>8</TD>
<TD>255.0.0.0</TD>
</TR>
<TR>
<TD>16</TD>
<TD>255.255.0.0</TD>
</TR>
<TR>
<TD>24</TD>
<TD>255.255.255.0</TD>
</TR>
<TR>
<TD>32</TD>
<TD>255.255.255.255</TD>
</TR>
</TABLE></CENTER>
<P>The <CODE>Deny</CODE> directive must appear inside a
<CODE>Location</CODE> directive.
+61 -67
Ver Arquivo
@@ -1,13 +1,13 @@
<HTML>
<HEAD>
<TITLE>DRAFT - CUPS Software Design Description</TITLE>
<TITLE>CUPS Software Design Description</TITLE>
<META NAME="AUTHOR" CONTENT="Easy Software Products">
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-1999, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-SDD-1.0">
</HEAD>
<BODY>
<CENTER><A HREF=#contents><IMG SRC="images/cups-large.gif" BORDER=0><BR>
<H1>DRAFT - CUPS Software Design Description</H1></A><BR>
<H1>CUPS Software Design Description</H1></A><BR>
CUPS-SDD-1.0<BR>
Easy Software Products<BR>
Copyright 1997-1999, All Rights Reserved<BR>
@@ -34,8 +34,7 @@ Copyright 1997-1999, All Rights Reserved<BR>
<LI><A HREF=#3_1_2>3.1.2 lpd</A></LI>
<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 smb</A></LI>
<LI><A HREF=#3_1_6>3.1.6 socket</A></LI>
<LI><A HREF=#3_1_5>3.1.5 socket</A></LI>
</UL>
<LI><A HREF=#3_2>3.2 Berkeley Commands</A></LI>
<UL>
@@ -45,9 +44,9 @@ Copyright 1997-1999, All Rights Reserved<BR>
</UL>
<LI><A HREF=#3_3>3.3 CGI</A></LI>
<UL>
<LI><A HREF=#3_3_1>3.3.1 classes</A></LI>
<LI><A HREF=#3_3_2>3.3.2 jobs</A></LI>
<LI><A HREF=#3_3_3>3.3.3 printers</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 Interface Library</A></LI>
<UL>
@@ -63,8 +62,11 @@ Copyright 1997-1999, All Rights Reserved<BR>
<UL>
<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 pstops</A></LI>
<LI><A HREF=#3_5_4>3.5.4 texttops</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 Scheduler</A></LI>
<UL>
@@ -75,8 +77,9 @@ Copyright 1997-1999, All Rights Reserved<BR>
<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 Main</A></LI>
<LI><A HREF=#3_6_9>3.6.9 Printers</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 System V Commands</A></LI>
<UL>
@@ -90,12 +93,10 @@ Copyright 1997-1999, All Rights Reserved<BR>
<LI><A HREF=#3_7_8>3.7.8 reject</A></LI>
</UL>
</UL>
<B><A HREF=#4>4 Detailed Design</A></B>
<BR>
<BR><B><A HREF=#5>A Glossary</A></B>
<B><A HREF=#4>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>
<LI><A HREF=#4_1>A.1 Terms</A></LI>
<LI><A HREF=#4_2>A.2 Acronyms</A></LI>
</UL>
<HR>
<H1><A NAME=1>1 Scope</A></H1>
@@ -126,7 +127,6 @@ can be used to support non-PostScript printers. </P>
<LI>1 - Scope </LI>
<LI>2 - References </LI>
<LI>3 - Design Overview </LI>
<LI>4 - Detailed Design </LI>
<LI>A - Glossary </LI>
</UL>
<H1><A NAME=2>2 References</A></H1>
@@ -148,10 +148,10 @@ can be used to support non-PostScript printers. </P>
<UL>
<LI>IEEE 1387.4, System Administration: Printing (draft) </LI>
<LI>IPP/1.0: Additional Optional Operations - Set 1 </LI>
<LI>IPP/1.0: Encoding and Transport </LI>
<LI>IPP/1.0: Implementers Guide </LI>
<LI>IPP/1.0: Model and Semantics </LI>
<LI>RFC 1179, Line Printer Daemon Protocol </LI>
<LI>RFC 2565, IPP/1.0: Encoding and Transport </LI>
<LI>RFC 2566, IPP/1.0: Model and Semantics </LI>
<LI>RFC 2639, IPP/1.0: Implementers Guide </LI>
</UL>
<H1><A NAME=3>3 Design Overview</A></H1>
CUPS is composed of 7 software sub-systems that operate together to
@@ -219,17 +219,7 @@ form:
<LI><CODE>parity=<I>odd</I></CODE> - Sets odd parity checking. </LI>
<LI><CODE>parity=<I>none</I></CODE> - Turns parity checking off. </LI>
</UL>
<H3><A NAME=3_1_5>3.1.5 smb</A></H3>
The smb backend sends the specified job to a network host using the
Server Message Block protocol, which is used by most machines running
Microsoft&reg; Windows&reg;. The URI is of the form:
<UL>
<PRE>smb://hostname/queue
</PRE>
</UL>
Usernames and passwords required to access the printer are stored in
an external file.
<H3><A NAME=3_1_6>3.1.6 socket</A></H3>
<H3><A NAME=3_1_5>3.1.5 socket</A></H3>
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:
@@ -241,41 +231,32 @@ printers. The URI is of the form:
<H2><A NAME=3_2>3.2 Berkeley Commands</A></H2>
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,
however since printer options cannot be specified using the Berkeley
commands their use it not encouraged.
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
following commands:
<UL>
<LI>abort - Stops a printer or all printers and any active print jobs. </LI>
<LI>disable - Prevents new jobs from being submitted to the specified
printer or all printers. </LI>
<LI>down - Stops a printer or all printers after completing the current
print jobs. </LI>
<LI>enable - Allows new jobs to be submitted. </LI>
<LI>start - Starts a printer or all printers. </LI>
<LI>quit - Quits the lpc command. </LI>
<LI>status - Shows the status of printers and jobs in the queue. </LI>
<LI>up - Starts a printer or all printers. </LI>
</UL>
<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;p&quot;, &quot;t&quot;, &quot;m&quot;, &quot;h&quot;, and &quot;s&quot; options.
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>
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</A></H3>
<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.
<H3><A NAME=3_3_2>3.3.2 jobs</A></H3>
<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</A></H3>
<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.
@@ -284,8 +265,9 @@ limit the display and click on jobs to see the job status.
language, MIME, PPD, and raster functions used by the CUPS software.
<H3><A NAME=3_4_1>3.4.1 Convenience Functions</A></H3>
Convenience functions are provided to submit an IPP request, send a
print file, cancel a job, get a list of available printers, and get a
list of available classes.
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><A NAME=3_4_2>3.4.2 HTTP Functions</A></H3>
The HTTP functions provide functions to connect to HTTP servers, issue
requests, read data from a server, and write data to a server.
@@ -329,16 +311,24 @@ necessary conversions from one file type to another.
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 pstops</A></H3>
<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_4>3.5.4 texttops</A></H3>
<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 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.
The scheduler is a fully-functional HTTP/1.1 and IPP/1.0 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><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.
@@ -372,24 +362,28 @@ multiple addresses and ports as needed. </P>
<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.)
URI on the server which might sidestep the access control or
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.
<H3><A NAME=3_6_8>3.6.8 Main</A></H3>
<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> signals and reloads the server configuration files as
needed.
<H3><A NAME=3_6_9>3.6.9 Printers</A></H3>
SIGHUP</CODE> and <CODE>SIGCHLD</CODE> signals, reloads the server
configuration files as needed, and handles child process errors and
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 print jobs.
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.
@@ -411,17 +405,17 @@ separate job ID for each file that is printed. Also, the Solaris &quot;f&quot;,
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;F&quot; (filter) are provided to configure CUPS-specific features
such as PPD file and conversion filters.
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><A NAME=4>4 Detailed Design</A></H1>
<H1 TYPE=A VALUE=1><A NAME=5>A Glossary</A></H1>
<H2><A NAME=5_1>A.1 Terms</A></H2>
<H1 TYPE=A VALUE=1><A NAME=4>A Glossary</A></H1>
<H2><A NAME=4_1>A.1 Terms</A></H2>
<DL>
<DT>C </DT>
<DD>A computer language. </DD>
@@ -434,7 +428,7 @@ specific printers.
<DT>socket </DT>
<DD>A two-way network communications channel. </DD>
</DL>
<H2><A NAME=5_2>A.2 Acronyms</A></H2>
<H2><A NAME=4_2>A.2 Acronyms</A></H2>
<DL>
<DT>ASCII </DT>
<DD>American Standard Code for Information Interchange </DD>
+793 -783
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+42 -52
Ver Arquivo
@@ -3,7 +3,7 @@
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-1999, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-SDD-1.0">
<META NAME="Author" CONTENT="Easy Software Products">
<TITLE>DRAFT - CUPS Software Design Description</TITLE>
<TITLE>CUPS Software Design Description</TITLE>
</HEAD>
<BODY>
@@ -48,8 +48,6 @@ following sections:
<LI>3 - Design Overview
<LI>4 - Detailed Design
<LI>A - Glossary
</UL>
@@ -79,10 +77,10 @@ The following non-CUPS documents are referenced by this document:
<UL>
<LI>IEEE 1387.4, System Administration: Printing (draft)
<LI>IPP/1.0: Additional Optional Operations - Set 1
<LI>IPP/1.0: Encoding and Transport
<LI>IPP/1.0: Implementers Guide
<LI>IPP/1.0: Model and Semantics
<LI>RFC 1179, Line Printer Daemon Protocol
<LI>RFC 2565, IPP/1.0: Encoding and Transport
<LI>RFC 2566, IPP/1.0: Model and Semantics
<LI>RFC 2639, IPP/1.0: Implementers Guide
</UL>
<H1>Design Overview</H1>
@@ -185,18 +183,6 @@ The options can be any combination of the following:
</UL>
<H3>smb</H3>
The smb backend sends the specified job to a network host using the Server
Message Block protocol, which is used by most machines running Microsoft&reg;
Windows&reg;. The URI is of the form:
<UL><PRE>smb://hostname/queue
</PRE></UL>
Usernames and passwords required to access the printer are stored in an
external file.
<H3>socket</H3>
The socket backend sends the specified job to a network host using the
@@ -212,9 +198,7 @@ The default port number is 9100.
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,
however since printer options cannot be specified using the Berkeley
commands their use it not encouraged.
existing software that is hard coded to use the Berkeley commands.
<H3>lpc</H3>
@@ -224,28 +208,16 @@ commands:
<UL>
<LI>abort - Stops a printer or all printers and any active print jobs.
<LI>disable - Prevents new jobs from being submitted to the specified
printer or all printers.
<LI>down - Stops a printer or all printers after completing the current
print jobs.
<LI>enable - Allows new jobs to be submitted.
<LI>start - Starts a printer or all printers.
<LI>quit - Quits the lpc command.
<LI>status - Shows the status of printers and jobs in the queue.
<LI>up - Starts a printer or all printers.
</UL>
<H3>lpr</H3>
The lpr command submits a job for printing. The CUPS version of lpr silently
ignores the "i", "p", "t", "m", "h", and "s" options.
ignores the "i", "t", "m", "h", and "s" options.
<H3>lprm</H3>
@@ -256,19 +228,19 @@ The lprm removes one or more print jobs.
The Common Gateway Interface (CGI) programs provide a web-based status interface
to monitor the status of printers, classes, and jobs.
<H3>classes</H3>
<H3>classes.cgi</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.
<H3>jobs</H3>
<H3>jobs.cgi</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>printers</H3>
<H3>printers.cgi</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
@@ -282,8 +254,9 @@ language, MIME, PPD, and raster functions used by the CUPS software.
<H3>Convenience Functions</H3>
Convenience functions are provided to submit an IPP request, send a print file,
cancel a job, get a list of available printers, and get a list of available
classes.
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>
@@ -354,21 +327,34 @@ The hpgltops filter converts HP-GL/2 files into PostScript.
The imagetops filter converts image files into PostScript.
<H3>imagetoraster</H3>
The imagetoraster filter converts image files into CUPS raster data.
<H3>pstops</H3>
The pstops filter inserts printer-specific commands from PPD files and
performs page filtering as requested by the user.
<H3>pstoraster</H3>
The pstoraster filter converts PostScript program data into CUPS raster data.
<H3>rastertohp</H3>
The rastertohp filter handles converting CUPS raster data to HP PCL and
supports both color and black-and-white printers.
<H3>texttops</H3>
The texttops filter converts text files into PostScript.
<H2>Scheduler</H2>
The scheduler is a fully-functional HTTP/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.
The scheduler is a fully-functional HTTP/1.1 and IPP/1.0 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>
@@ -413,8 +399,8 @@ ports as needed.
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.)
URI on the server which might sidestep the access control or
authentication of the HTTP server.
<H3>Jobs</H3>
@@ -422,11 +408,17 @@ 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>
The logging module manages the access, error, and page log files that are
generated by the scheduler.
<H3>Main</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>
signals and reloads the server configuration files as needed.
and <CODE>SIGCHLD</CODE> signals, reloads the server configuration files as
needed, and handles child process errors and exits.
<H3>Printers</H3>
@@ -437,7 +429,7 @@ configuration file.
<H2>System V Commands</H2>
The System V commands provide a robust command-line interface to CUPS
to submit and control print jobs.
to submit and control printers and jobs.
<H3>accept</H3>
@@ -471,8 +463,8 @@ and "y" options are silently ignored.
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 "F" (filter) are provided to configure CUPS-specific features
such as PPD file and conversion filters.
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>
@@ -484,8 +476,6 @@ user.
The reject command tells the scheduler not to accept new jobs for specific
printers.
<H1>Detailed Design</H1>
<H1 TYPE=A VALUE=1>Glossary</H1>
<H2>Terms</H2>
+24 -9
Ver Arquivo
@@ -91,10 +91,10 @@ sections:</P>
<UL>
<LI>IEEE 1387.4, System Administration: Printing (draft) </LI>
<LI>IPP/1.0: Additional Optional Operations - Set 1 </LI>
<LI>IPP/1.0: Encoding and Transport </LI>
<LI>IPP/1.0: Implementers Guide </LI>
<LI>IPP/1.0: Model and Semantics </LI>
<LI>RFC 1179, Line Printer Daemon Protocol </LI>
<LI>RFC 2565, IPP/1.0: Encoding and Transport </LI>
<LI>RFC 2566, IPP/1.0: Model and Semantics </LI>
<LI>RFC 2639, IPP/1.0: Implementers Guide </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
@@ -102,17 +102,32 @@ 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>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. </P>
<P>This problem can be alleviated by making the request directory
readable only by the user specified in the CUPS configuration file. </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.
<P>This problem can be alleviated by making the request directory
readable only by the user specified in the CUPS configuration file. </P>
</LI>
<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
remote resource.
<P>We recommend that any password-protected accounts used for remote
printing have limited access priviledges so that the possible damages
can be minimized. </P>
<P>The device URI is &quot;sanitized&quot; (the username and password are
removed) when sent to an IPP client so that a remote user cannot
exploit this vulnerability. </P>
</LI>
</OL>
<H1><A NAME=4>4 Remote Access Risks</A></H1>
<P>Remote access risks are those that can be exploited without a local
user account and/or from a remote system. This section does not address
issues related to network or firewall security. </P>
<H2><A NAME=4_1>4.1 Denial of Service Attacks</A></H2>
<P>Like all internet services, the CUPS server is vulnerable to denial
<P>Like all Internet services, the CUPS server is vulnerable to denial
of service attacks, including: </P>
<OL>
<LI>Establishing multiple connections to the server until the server
+59 -67
Ver Arquivo
@@ -1,6 +1,6 @@
%PDF-1.2
%âãÏÓ
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990709142834Z)/Title(DRAFT - CUPS Software Security Report)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990922200511Z)/Title(DRAFT - CUPS Software Security Report)/Author(Easy Software Products)>>endobj
2 0 obj<</Type/Encoding/BaseEncoding/WinAnsiEncoding>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Roman/Encoding 2 0 R>>endobj
@@ -194,13 +194,10 @@ endobj
xÚ+ä2T0BCc3JÎår
ár
á
äHendstream
endobj
78 0 obj
31
äHendstream
endobj
78 0 obj
80 0 obj<</Length 81 0 R/Filter/FlateDecode>>stream
31
endobj
79 0 obj<</Type/Page/Parent 72 0 R/Contents 80 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>>>endobj
80 0 obj<</Length 81 0 R/Filter/FlateDecode>>stream
@@ -213,13 +210,12 @@ endobj
endobj
82 0 obj<</Type/Page/Parent 72 0 R/Contents 83 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
83 0 obj<</Length 84 0 R/Filter/FlateDecode>>stream
ÁÉù© Q×®@.ü7 £endstream
endobj
84 0 obj
118
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS041T072PIÑp rt QÐUp
VÎO+)O,JUNM.-Ê,©TJ-È/*Ñ ÉâÒiÒ…ê2‰˜˜˜é™)€ù†
ÁÉù© Q×®@.ü7 £endstream
endobj
86 0 obj<</Length 87 0 R/Filter/FlateDecode>>stream
84 0 obj
118
endobj
85 0 obj<</Type/Page/Parent 72 0 R/Contents 86 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>>>endobj
@@ -232,17 +228,13 @@ endobj
536
endobj
88 0 obj<</Type/Page/Parent 72 0 R/Contents 89 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
88 0 obj<</Type/Page/Parent 72 0 R/Contents 89 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
89 0 obj<</Length 90 0 R/Filter/FlateDecode>>stream
xÚ-‹Í1…÷÷)Î’E™[Ͱ5˜5Óë¤n3TE¼½©È9›óó=ˆQb,êâp£FhÞ®À ‰`ÇXÚ
ržl»u+0Ø÷~ˆù}J
¯á•.ùƒNïCÊS¹’)ùS®4Îò¬Æ/Ûñ5iôY¦Ð¾­u"§endstream
endobj
90 0 obj
121
89 0 obj<</Length 90 0 R/Filter/FlateDecode>>stream
xÚ-‹Í1…÷÷)Î’E™[Ͱ5˜5Óë¤n3TE¼½©È9›óó=ˆQb,êâp£FhÞ®À ‰`ÇXÚ
ržl»u+0Ø÷~ˆù}J
¯á•.ùƒNïCÊS¹’)ùS®4Îò¬Æ/Ûñ5iôY¦Ð¾­u"§endstream
endobj
90 0 obj
92 0 obj<</Length 93 0 R/Filter/FlateDecode>>stream
121
endobj
91 0 obj<</Type/Page/Parent 72 0 R/Contents 92 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
92 0 obj<</Length 93 0 R/Filter/FlateDecode>>stream
@@ -393,54 +385,54 @@ xref
0000003913 00000 n
0000004017 00000 n
0000004121 00000 n
0000004121 00000 n
0000004225 00000 n
0000004329 00000 n
0000004433 00000 n
0000004537 00000 n
0000004641 00000 n
0000004744 00000 n
0000004848 00000 n
0000004953 00000 n
0000005058 00000 n
0000005163 00000 n
0000005268 00000 n
0000005586 00000 n
0000005618 00000 n
0000005650 00000 n
0000005849 00000 n
0000005896 00000 n
0000005943 00000 n
0000005990 00000 n
0000006037 00000 n
0000006084 00000 n
0000006131 00000 n
0000006178 00000 n
0000006225 00000 n
0000006272 00000 n
0000006319 00000 n
0000006366 00000 n
0000006413 00000 n
0000006461 00000 n
0000006509 00000 n
0000006557 00000 n
0000006728 00000 n
0000006877 00000 n
0000013254 00000 n
0000013275 00000 n
0000013385 00000 n
0000013485 00000 n
0000013504 00000 n
0000013641 00000 n
0000014534 00000 n
0000014554 00000 n
0000014664 00000 n
0000014851 00000 n
0000014871 00000 n
0000015008 00000 n
0000015599 00000 n
0000004225 00000 n
0000004329 00000 n
0000004433 00000 n
0000004537 00000 n
0000004641 00000 n
0000004744 00000 n
0000004848 00000 n
0000004953 00000 n
0000005058 00000 n
0000005163 00000 n
0000005268 00000 n
0000005586 00000 n
0000005618 00000 n
0000005650 00000 n
0000005849 00000 n
0000005896 00000 n
0000005943 00000 n
0000005990 00000 n
0000006037 00000 n
0000006084 00000 n
0000006131 00000 n
0000006178 00000 n
0000006225 00000 n
0000006272 00000 n
0000006319 00000 n
0000006366 00000 n
0000006413 00000 n
0000006461 00000 n
0000006509 00000 n
0000006557 00000 n
0000006728 00000 n
0000006877 00000 n
0000013254 00000 n
0000013275 00000 n
0000013385 00000 n
0000013485 00000 n
0000013504 00000 n
0000013641 00000 n
0000014534 00000 n
0000014554 00000 n
0000014664 00000 n
0000014851 00000 n
0000014871 00000 n
0000015008 00000 n
0000015613 00000 n
0000015633 00000 n
0000015743 00000 n
0000015933 00000 n
0000015953 00000 n
0000015939 00000 n
0000016081 00000 n
0000016910 00000 n
+29 -9
Ver Arquivo
@@ -71,10 +71,10 @@ The following non-CUPS documents are referenced by this document:
<UL>
<LI>IEEE 1387.4, System Administration: Printing (draft)
<LI>IPP/1.0: Additional Optional Operations - Set 1
<LI>IPP/1.0: Encoding and Transport
<LI>IPP/1.0: Implementers Guide
<LI>IPP/1.0: Model and Semantics
<LI>RFC 1179, Line Printer Daemon Protocol
<LI>RFC 2565, IPP/1.0: Encoding and Transport
<LI>RFC 2566, IPP/1.0: Model and Semantics
<LI>RFC 2639, IPP/1.0: Implementers Guide
</UL>
<H1>Local Access Risks</H1>
@@ -86,12 +86,32 @@ system.
<H2>Security Breaches</H2>
<P>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.
<P>There are two known security vulnerabilities with local access:
<P>This problem can be alleviated by making the request directory readable only
by the user specified in the CUPS configuration file.
<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.
<P>This problem can be alleviated by making the request
directory readable only by the user specified in the CUPS
configuration file.
<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 remote resource.
<P>We recommend that any password-protected accounts used for
remote printing have limited access priviledges so that the
possible damages can be minimized.
<P>The device URI is "sanitized" (the username and password are
removed) when sent to an IPP client so that a remote user
cannot exploit this vulnerability.
</OL>
<H1>Remote Access Risks</H1>
@@ -101,7 +121,7 @@ related to network or firewall security.
<H2>Denial of Service Attacks</H2>
<P>Like all internet services, the CUPS server is vulnerable to denial of
<P>Like all Internet services, the CUPS server is vulnerable to denial of
service attacks, including:
<OL>
BIN
Ver Arquivo
Arquivo binário não exibido.
+4 -4
Ver Arquivo
@@ -1,14 +1,14 @@
<HTML>
<HEAD>
<TITLE>DRAFT - CUPS Software Users Manual</TITLE>
<TITLE>CUPS Software Users Manual</TITLE>
<META NAME="AUTHOR" CONTENT="Easy Software Products">
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-1999, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-SUM-1.0.0b1">
<META NAME="DOCNUMBER" CONTENT="CUPS-SUM-1.0.0">
</HEAD>
<BODY>
<CENTER><A HREF=#contents><IMG SRC="images/cups-large.gif" BORDER=0><BR>
<H1>DRAFT - CUPS Software Users Manual</H1></A><BR>
CUPS-SUM-1.0.0b1<BR>
<H1>CUPS Software Users Manual</H1></A><BR>
CUPS-SUM-1.0.0<BR>
Easy Software Products<BR>
Copyright 1997-1999, All Rights Reserved<BR>
</CENTER>
+399 -417
Ver Arquivo
@@ -1,6 +1,6 @@
%PDF-1.2
%âãÏÓ
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990713124419Z)/Title(DRAFT - CUPS Software Users Manual)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990922200514Z)/Title(CUPS Software Users Manual)/Author(Easy Software Products)>>endobj
2 0 obj<</Type/Encoding/BaseEncoding/WinAnsiEncoding>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Roman/Encoding 2 0 R>>endobj
@@ -362,43 +362,30 @@
]>>endobj
198 0 obj<</Type/Page/Parent 197 0 R/Contents 199 0 R/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
199 0 obj<</Length 200 0 R/Filter/FlateDecode>>stream
xÚíßoä8rÇ¥nõË<ÉÞíwº=
$@Æ#{ܳ;@hlk“}8 $QÈCÍíÞ%Áæön$¸ÿ>ýËÝúAJUEJ¢|æ›tó#¿U$‹ê¿¼¹Ñö·â«;ñá£øýÿ¼yoùæ/âCôõÍWû_~øøñ&_º¹ww·7÷ûZß¾Ìÿíý·ï³~Œöåþ|Ü—Oûò¸/ßìË?ýûûoů?ÿöÃû÷nßÿ‹ØÜÞ¾€Gq/¾}zS¼Ì¯\fE>Ý­V««‹]ÙþÇêþiê\òquzªrqyý4M.yw¥F*Á­î'Æ%ﺘžËåu2.<Ôí~
\W¹ø«Äq®‡Ðã•ËÃ\w\*›æÎŒ•Ý1³Ìõ(<óòEâW~åY)þµS\wžµ2Û8Ã%…g³\;Âe¬v‡Ì—¼ò¬ÿíè\yèõQ¾™ëÁë©Ì’1¹n½ÞŠ¿˲Z·±¶åí(\2ô<ÁÀI!¬–/çÀâ€Á°`à´dðŦåyë¸z÷[fšÍ50Ö,¸>{#”yï\™7Jù²g®<‡‹ Šà¾Â³´¦ … 퀉huŠÑ¹roÔ²é‹+ 9Å`™ãÅ`ž‹,öD.9>–ç÷À%àòë\™çDÙXæ’¡\3Ë\‘çHYZåÊ<gJb‘Ë+D91Wì9T6Ö¸r—°:¥¦'¨¨&(˜¨&iàµË•º†Õ1`0=G
LPã1ÎÇ%]ÄjëaŠ˜a0=—Œša0Üp]\®VoŸvåawñ¡ßƒA†Ë¿|Ûœä»{½
ô?\~KÒ¿|¼êgÀ ïáºì\*= ­
¸¢~†ª<j+ëa=ô8\„ôcÉÍ
Þ°¹Ø¡-]œI6çrqC
zznÎZ2$L.æp±Ò©9C0¹X<71d>+íGÛ-ÙšÅeƒ'oZ‘z°¿«a’öÎI6Ø0¸Ä`S‹Ÿyйò°È`>‹,ò¾+’ÂX9Ú¹FÂ"‚Í©\éFÈ1Å„È%ÆÂ"-i\¹É \Ø[x}YX-™‘!‚µHÞ2éöՒ•ZgŒJdðá`I5üÄ>¡ žKši¦%碞 F\‡ò™mˆ`e…2+z*kˆ`Cf{™\´É°ÄrÅc9dž(ϰ\=Á3D07Ãþ¬¢‰kWä„zà¸ÐBštø(®ldÌP°
¯†AÑ{ÁIØÃº!­Ÿ!¸2~`6Þ€%Ý\±+¢A°u7WèˆÆ“útren
rÀf\±cÃ…ôaIWèØp!Ÿô²ƒ+wÆ%Óºtp¥Î
.Jœup ÇfZÊ’V.éàpáæüº•+sp¸pÛHA+RåýA±PV4kå
Š ‰ÊÑÆ…Uù±PÓcÓÂ…Tù`h®‚dCÀUùÍà\Cœ·p9°·Æ6Ä™ž+sQäÑ‚–h¹ÀE‘G; µ–K8ª8SZ踤«ª›úsWF
«žìü¯š±?ÿŽÏ4­¨r†õó¾cÀ
¢–(®¥–KVnÜ–ÐJt­‰†KÐbV®¹–ëø1eÃ8‰Ÿ À™^ŽËÓsAI½r|¸)ЖœéµFr­µ\yéùÖ 1³$PsÑyµsZ®ƒíÍ΃0³¤ô35— :¯v®™žë¬’²êA?s`‡k,׳q)¸ÎÚžáÍ£ô‰Š+§ÆP\K-×YcÊ^IŠ}è@_{x®¹ž+~~D!eñcÈkíJ(ßÁåé¹²ãßÊ)fˆ˜(Š+$ša'×ZËuø¬ÅáGø-»Na+¸ =WtÍ3T£í6_Á•QͰ“Ë×s>쉸<Èd¯œ`¹æ§ÚJ®ƒq\PwŽ‘"P½ò¬Àr-ÂgyRr•DвJ8{ªl,ñ\ñócPs¥¬Ujgˆ¸hpåd3lçÊ*8
.ÉÚ,IqºDÙ˜x.ùlj®“I6Kr\¸V\ûŽz®”µg‡z ÊÆšÂÇÑpIÖž]g/\ŒôÅv®ü(
®c‰{v1ª‹@“YAá*ŽJ¯ãÎSŠ2) ÉÆ‚ÆuTz¯ 剀&k×Qéu\!g~IÔ³î Šë¨ô®Œw†b$HÑÆŒÈuTz
WÌÛìïzþó*—dL¯N®ƒÒk¸BÞáLŒyø@’5•ë ôj®œyŠ‘b3ö6
*×AéÕ\ 7³HªÊ3¦W7×^éÕ\‚™¹#1Ž(QT@çÚ[w¬_W®†Ø%p
ëP¹[)¸ö½*®ƒÝKFÈ!ÝJ•¨]R6¿ÊuîDK4YÐ
1BÀÊ"¨r­Ë¦Î®ç"œ¦`·ae.ÄžÍ\c˲¢Îj\¹†+=òätCL29\jLbÞüG}ÿ³É=?ôi%ÚÓV¸G6*Gòä‹J\±’Kžz
Q"ì
Ñ¡Ö$‚ÀºÎ•)¹ÒSå”û"tðÑáLïûw¯´¹-kfÃOÕ¹¢“ÆHz¾UˆçÊ9^ùüþE^WT¹JQc_Ñ >:\b|ɢɕ*¸Ê©(1Ù£î x9Ü`´)irå
®²ÞdäEà¹"–l4lb^4¹Ž¶Zá
Ë–¼“Oí¥Ä%X²QŸ˜§Û{Šuq™«šõÑôT±Zù¬òpŠ}Œ2W\1ì´‡Ô?@Ë¡vñw~¯ÉÛBÉ%\aÅòòR5õêí$ß¿øÔ¿à
)•+eÊás9LV÷¸º£y¿˜T¬ÌÏ&É%xQ”ó\!/ŠrKšÈ¡Ã\¹¡ºÊ•q£Cǹҗ&‡G®˜ºÍñ£C§¹ÄK“ù#WøÒäðÈÅÙšŸ—|q2àÊ^œÌc¹&!óåE àܲûѼ<|[Éå¦Ä³e¾\çr£ú©wq]Ùö;ïö6®ó)£í®FšMÀ¹å5‚ë¼oSŸœ‰’kÉáZª¹Ê3éË—`»/5¾Fuj]œs¸æJ®\}¾²Ý—@cƵ.z.OÉ%ÔçüMµ½êrSk]\s¸Ö
®´©r€rË3,×\¾¬U\‡+Pp…ÍÇh™ë`°ºÜ¹Zg®Y“ëY4ü‹ðd÷€rËšk­æòU\õë|(®ÆÀ“œïüÉcx4×¢•kÿ_«ô`Qu,‰Šk©tEÕxѨìdžÛn,»¹Ž/Ÿ7N>{•ëå.Î9\FYÅ?P›ØkW)-¥:ÄçÜžz=W£QõÐé˜Ç¨0jƒá:§)²äÊ.®9\õF¢˜ïi(—gÛ¹¤†+Ös®z£ÚLÙ›å PaTá:ÿC‘ý¯æò9\µFõ‹§Ïå÷Á¥¸Î×Í¥h”Õìj[®ÎÌ¹šº¡¸Î×Í¥»¨ÖËž.©áŠÔ:¯¸Î‡àj6Š•0aTP˜èaxʹ­v±yÁÕl$”Žŵ@qejÿ•iâ(Åu>W³‘–+³ÄÇsRëbó:‚«Ù(T:"×Ã%½†"·®S×ù0\FZ®”F•úpüŠÆ5z]©¸Î‡áj4*W?"ŠkS®¿–Ê.6®óa¸´\À£
õÀhvU]<Š6«ÞÈ€«@sªŸú‰¦‹õë|(®z#-Wl‘k£ÅDÝÅúu>W½‘–+⇇…Úà4Ûû.Ö¯ó¡¸êÂZšê‰KXãò
W)T­t±vÇUkÄçš!¹üué§G¿|ÜöXª»X»Î‡ãª5%Å®p…v¸Jù‡åxã°í¨»X»Î‡ãª5jÄQ)–+(pë”BÅUz?”¢‹{ѦrUEõˆ(>ryýrem\Õë|H.ÅÀr#,׈+×Åó§ R¹ªÒúT \²g.©¹Å¡¸Î‡äª6Êj’-=,×Òˆ«håW¥‘¬…æ©\9‡«Ú(¬N0qäêÎ=\÷ÈU¹Î‡åª6ŠÉø[®l\®˜ÃUi”žO•Ï›¼£se®J#YîevŠ7L–•¸$‡«ÚHœÏ¿<WÒ'Wù:š«Ú(mœWºÀ•r¸ªj‘ Øs™,—Q\a;WÎáª6ª®ŒƒÈ ®Òu><W­QeÀ’x@®¾‹1‡«Ú¨šF{®Îí
ßKxå-Ú…:à§rÕ}./Óa¸NoÐtQr¸êJ[¸Ü)ûüÃ/ÎïŸïäšJ¬,ß„îm¶Éåö¸Ä+×+׸æ/”+˜&WøÊõÊõÊõÊõÊ…ãZ¼r½rõÏå™smW>è{¥”ºãr=ìßaæ_cºK©;2×UýúZõeC¥7Ì)êªOÔ'Užâ¢”¶wÆ\¢‘¾QÍÓ/O5ë2¸6ÕÍО¸>7W4Õ—yåçÎϘU\ëêí‡K*N”ª/4LO[üuó¨“k9¨–Ö¢<Áj鵺 ®EQ™šýp…ª£2(σ°’&S¯Ëà
ª–Ò Wþ|ðtQ®[~uíù´^Y—Á5«|t?\éé PÞ–>´$çì
e]>WÖ'W\:±ŽÎÞ¥ä²ÎÉ皺ªm~õ§VwÒ>¹DI äyV5°ôBfM]:>ÝNâYo\ayNÔ”þl<IK]×ìô8â..“x¾òk8«ÅieÕ$mU]×üô8¶O&†+=ÿë”Õ$mU]WP~t 3®ŽôÃÓ¯ó‹mY–Ä*)Ý‘Ò×%qíîÓ²W®™î;žRRqÛV?žK'én
¯{ã
ué8Ç3å¼¶¤î๢ãßÛýåMo\‡Hp£‰g•i¤­KâŠ2´³ô¤7®ãYçåF`í3)žå\[—ÄçìW¿èë¢7z{øâ‡°ä‹õu•\ÍÄÎ=Ezœ¯;÷ÕW)¤ÖÛøÙÛœ|±¾.…+;@´ûÃf\mçzåz•÷§Í,Zm]
W~üçÎ-ÃÆÊ{•ÅqÒY—Â%½Ó Ñí\FçËR›Y*Y-úº®âè˜÷?í«–Eë' u)\ǼwË}r•^´U¥P}Éœ®.…ëà˜³½ï“ëù"l#—J•lÚZÇupÌÙ¾¾WgÞ×C¨š5BùPÔuñ~yï“Ýÿû\6òÙ¯š‹šT³ÈQÕ%p¥{ Ü»åþ¹Î½×B©
xÚíßoä8rÇ¥nõË<ÉÞíwº=
$@Æ#{ܳ7@hlë’}8 $QÈCÅí^~`“ÍÍì&¸ÿ>ýËÝúAJUEJ¢|ætó#¿U$‹ê?¿¹Ñö·â»;ñá£øã½yoùæÏâCô»›ïö¿üðñãM$~÷éæNÜÝÝÞÜïk}ÿþ1ÿ—÷ß¿ÏþñAlþ>Ú—ûòq_>íËã¾ü~_þá_ß/~ýòÛOïÿYܸ}ÿObs{ûþŽøþéMñ2 ¼r™ùt·Z­®.veû«û§©sÉÇÕEè©ÊÅåõÓ4¹äÝ•©·ºŸ—¼ëbz.—×ÉT¸ðPG´û)p=^yäâ¯ǹBW.7sÝq©lš#83VvÇÌ2×£ðÌË7‰c\ù•g¥ø×NqÝyÖÊlã žÍrí—±^Ø2K\òʳ^ü·£så¡×Gùfd®¯§2KÆäºõz+þf4.Ë:h ÜÆÚ–·£pÉÐó\'…°Z¾œk,LSÀb€Ó’Á˜–ç­âêÝo™9h6×ÀX[°d®È¼ÌàúìPæ½seÞ(åÛž¹òp.‚(‚û
ÏÒ˜‚Ô)FçʽQ˦/®p\.äƒ 8dŽƒix.²Ø¹äøXžß—p€Ë ¬sežec™K†npÍ,sEž#ei•+óœ)‰E.W¬åÄ\±çPÙXãÊ]Âꔘžh ¢˜ h`¢˜T¤×z,WêVÇ€Áô45`0AÇ8g—t«5®‡)j<b†Áô\2j†ÁpÃuq¹Z½}Ú•‡ÝŇ~ .ÿòms’ïîAô6`Ðÿpù-IÿòñªŸƒ¾‡ë²s©ô`€¶6àŠúªò¨­¬‡õÐãpÒ%77xÃæb‡´tq&ÙœËÅ
5èé¹9kÉ0¹˜ÃÅJ§æ YÀäbòÜlHÆù<®´m·8dkW8”
ž¼YhEêÁþ®†IÚ;'Ù`ÃàƒM-~æU@çÊGÀ"ƒùt.²Èûv®H
cåhç 6§r¥#"— ¶¤qåV<$,4ra`oáõmaµdF†Ö"yËX¤ÛWK
Wj!œ1*‘Á‡ƒ%Õðû\„$x.i¤™–œoˆz.urÊg¶!‚•ʬè©®!‚
™íerÑ&ÃËåy¢<ÃrÌp^ôXÏÁÜ û³BŠ&®q\‘VHèI€ãr@ iÒ᣸²‘=2CÁ6'a Wè†hP´~†àÊøÙx–tsÅ®ˆeÀÖÝ\¡#OêOÐÉ•¹5\È›urÅŽ
Ò‡%]\¡cÃ…|ÒˮܗLëRÐÁ•:7\¸(qÖÁ%›]h)KZ¹¤ƒÃ…›óëV®ÌÁáÂm#­\H•÷ÅBYѬ•+t(2$*GÆBMM R僡¹
Wå7ƒs! qÞÂåÀÞÛgz®ÌE‘G Z¢åEí€ÖZ.á¨jàLi¡ã’®ªnêÏu\-4¬z²ó¿jÆþüs8>Ó´¢ÊÖÏGøŽ+ˆZ¢¸–Z.Yy¸q[B+ѵ&.A5Z¹æZ®ãÇ”uã8$~gz8.OÏ%õÊñá¦@[p¦×ɵÖrå¥çX3ÄÌ’@ÍDçÕζ7;ÂÌ’ÒÏÔ\‚è¼Ú¹fz®³VHʪýÌ®±\ÏÆ¥à:k{†7CŒÒ'*®œCup-µ\gŒ){%)ö¡à¹æz®øù…”ÅwŽD ¯µ+¡|—§çÊŽ+§˜!b¢h†\k-×á³á·ì:…m®à’T3ìä
ô\ÑH4ÏP¶Û|WF5ÃN._Ïuø°'âò C
"½r‚嚟j+¹ÆqAÝ9FFˆ@õʳ˵ŸåIÉU)Ê*Uàì ¨²±ÄsÅÏAÍ•²V©!â¢Á•“Ͱ+«à4¸$k³$ÅéecVà¹ä³Y¨¹N&EÚ,Éq=âZ9 pí;è¹RÖž(k
?FÃ%Y{v½lp1ÒÛ¹ò£(h¸Ž]$îÙŨ.M6f…«8*½Ž 8N)ʤ€& ×Qéu\1g¼2”'šl¬i\G¥×q…œù%Qϸ‚(®£Òk¸Fˆ‘l E3"×Qé5\1o³¿ëùÏ«\1½:¹J¯á
y‡31æáI6ÖT®ƒÒ«¹ræ)FŠqÌ@ÚÛ(¨\¥WsÞ Ì"©*W̘^Ý\{¥Ws fæŽÄ8f DQkoݱ~]¹bb—Àm*\¬Cåjl¥àÚ÷^¨¸v/!‡@t(QT¢~tIÙ@ü*×¹u.qÐdA7Äp+‹ Êµ.?š:h¸žŠpš‚݆Y”¹{6sI,ËŠ:«qå®ôÈ“Ó
1EÈäp©1‰yóõýÏ&WôüЧ•hO[áÙ¨
Ë’/*qÅJ.yêAD6D‰°+ D‡Z“Jë:W¦äJO•Szì‹ÐÀG‡3½ïß½Òæ¶¬™
?UçŠN#éùV!ž+çxåóGøUxE\Qå*ýEAŽ}Ew€øèp‰ñ%&Wªà*§¢ÄdCŒº' àåpƒÑ¦¤É•+¸Êz“‘a€çŠX²Ñ°‰yÑä:Új…+,OXò"L>µ——`ÉF}bžnï)ÖÅe®jFTÔCF#ÐSÅjå³ÊÃ)ö1Ê\qŰÓRÿ-‡ÚÅßù½&o %—lp…ËË{HÕtÔ«·“|ÿâSÿr€+¤T®”)‡Ïå0YÝãêŽæýbR°2?$—àEQÎs…¼(Êu.i"‡så†rè*WÆçJ_š¹bvtè6WÄæ/Mæ\áK“Ã#gk~\òÅÉü+{q2嚄̗€sËîGóòðm%—›WÌ–ùrËê§ÞÅueÛï¼Û۸ΧŒ¶»i6Yç–×®ó¾M}r&J®%‡k©æ*ϤoO\‚í¾ÔøÕ©uqÎáš+¹rõùrÈv_j׺èq¸<%—PŸ;ð7mÔöªËM­uqÍáZ+¸Ò¦ÊÊ-ϰ\sMø²Vq®@Á6£e®ƒÁêrçj]œq¸fM®gÑð/“ÝÊ-h®µšËWqÕ¯ó¡¸wOr¾ó'áÑlp\V®ý=
¯ÒƒEÕ±$*®¥ÒUãQD£²“y>lT¸±ìæ:¾Þ8uøìU®”»8çp5epü8@mb¯\¥´”êŸs{ê]ô8\FÕC§c Â¨
†ëœF¤È’_(»¸æpÕ‰j`¾§   \žmç’®XÏp¸êj3eo–3@…Q†ëüEö¿šËçpÕÕ/žJ<—ß—â:_7—¢QVw°«m¹Lx83çjê†â:_7—î` Z/{v¸¤†+Rë¼â:‚«Ù(V:XÀ„QAa¢‡á)ç¶ÚÅæu>W³‘P:"×Å•©ýW¦‰£×ù\ÍFZ®ÌW¬Œ7ÏaH­‹Íë|®f£PéˆP\K —ôŠÜºNQ\çÃp5i¹R~UêÃñ+×èu¥â:†«Ñ¨\ýü‰(®Ma¸þZ*»Ø¸Î‡áj4Òr?Œ*Ô£ÙUmtñ(Ú4®z#®Í¨~ê'š.Ö¯ó¡¸ê´\±E®zuë×ùP\õFZ®ˆjƒÓlï7ºX¿Î‡âª7
kiª'.aËO4\¥PµÒÅÚu>Ÿk†äò×¥ŸýòqÛc©îbí:Ž«ÖH”»ÂÚá*å–ãöG îbí:ޫ֍G¥X® À­S
WéýPŠ.îE›ÊUmÕ#¢øÈåõË•µqU¯ó!¹wË]Œ°\ #®\ÏŸ‚JAäª6JëS%<pÉž¹¤æ‡â:’«Ú(«I¶ô°\K#®¢• 8\•F²š§Npå®j£°:ÁÄ‘«;÷pÝ#Wå:–«Ú(V$ão¹²q¹bW¥Qz>U>oòŽÎ•q¸*d¹—Ù)Þ0YVZà’®j#q>ÿzð\IŸ\åë|h®j£´q^éWÊáª6ªE‚bÏe²\Fq…í\9‡«Ú¨º2"'¸J×ùð\µF•¹6ú.Æ®j£jì¹:·7|C.á•·hꀟÊUkô¹¼XL‡á:½ @ÓEÉáª7z(mEXàr§<îó¿9¿¾“k*9°²|gº·Ù&—Û{à¯\¯\Sàš¿P®`š\á+×+×+×+×+ŽkñÊõÊÕ?—gε]ù ï•RêŽËõ°‡™é.¥îÈ\WõëkÕ—
•Þ0§¨«>
×V2üìà
PŸTyŠ‹RÚÞs‰FúF5O¿|<Õ¬ËàÚT7C{âúÜ\ÑT_敟;>cnTur­«´.©8Qª¾Ð0=mñKÔÍ£N®å\ ZZ‹ò«¥oÔê2¸EejöêŽÊ <ÂJšL½.ƒ+¨ZJ/\ùóÁÓE¹nùÕµçÓze]׬òÑýp¥§ƒBy[úÐ’ž³+”uù\YŸ\qéÄ::{—’Ë:'ŸkꪶùÕŸZ=ÞIûä%çYuÖÀÒ ™5ui\þéøt;‰g½q…åm8QSú³ñ$-ui\³Ó㈻¸Lâùʯᬧ –U“´UuI\óÓãØ>™`®ôü¯S
T“´UuI\AùÑ-̸:ÒO¿Î/¶eY«¤tGJ_—ĵ»ÿuzLË^¹fº_ìxJIÅm[ýx.qœ¤»)¼î+Ô¥ãÏ”óLØ’ºƒçŠŽo÷—7½q&nœU¦‘¶.‰+>ÊÐÎÒ“Þ¸Žgu€µÏ¤x–sm]œ³_ý¢7®SˆÞèíá‹Â’/Ö×Ur5éq¾îÜW\¥|ZoãgosòÅúº®ìhÑî›qµë•ëUÞKœ6³hµu)\ùñŸ;·lÈÕv+ïqTÇIg]
—ôN/D_´s/Kmf©hdµè븊£cÞÿ´?®Z­Ÿ4F2@Ô¥póÞ-÷ÉUzÑV•Bõ%sºº®ƒcÎö>¾O®ç‹°\*U²ik]×Á1gûúf\y_¡jÖåCQ×Åûå½LvÿïwpÙÈg{¼j.jRÍ"GU—À•î-pï–ûç:÷v^ ¥6¨º®ƒcÞ»å!¸žEa¦4mu \Ǽwˆ\ØwfíbÐV—À%Ÿ½Øb(®sâu7W­.ëà˜"ÙÊe½{•̺ꊵ\mu)\[œåçýÓ^¸ªî:7;uu)\[Éð³ƒc4äJpû‡\mu)\»‘N½Ó‹êzãšUlËoåÒÕ¥pÁá2¬ßÅerïFT~-Zu¾­.…+=ܬ™™s­Û—_Ëò:d®åj«KáÊÎN½7®´<žQícjm«KáÊÏ«V.“{ˆ‡¶þýùPk­åj«ÛÏWÞ¶%«§‚\ËÎsØó!¤~±ØV—ÂUz/l\qËZ­ÎÕR—Ä%p\F÷²ó–ªu®–º ®ÄœkK·©‡þXE_—Ä7~ÒW®W˜WÎݪRÀé©´r½£ºómÑÊ¥¯KâÒ½ŸÕ.W©³×E—¶.‰+;ùôv.£ì
µ%&uŠá{{Ž…òõzÃ|Ÿá{–œ-†ïÅzåž«ûuËÓäŠÿj¹’Iruopl&Ée²`~åžËha9i®Å$¹ä_-W0I®îØü…rͦɾÀÀ×ðû8^¹FàŠ^`à‹ûŸõ$¹à…r¥/0@4ü^³±J×Ë^—†ßC7Véêò÷½Î©.©K ¿—s¬£¸ÂÉö{o] 8D—}!¿§Øµ¶°Kß+íZÀᡸ`j‡ìô·Èï7w,àÈp\“û>ú´sm9瘡sÚÆ\sÌQ§ÌF^œs`¢Ó-Æ8çÀÂÎQ¿k¬;씽:æÀòn5”¾8¶²ÌºÕPþÀ1–vwPÀ1w  Ö±õ*Žt̉n‘œpº%ôˆ¾ÎÑ9%ô9¶7²N }†ÐÀ)ŒSBˆ pUúÑU@­KB/¦È©èRDv»¯g.9!¡—é†+ô‹ÉÈáºÄ%¦#ˆ)fÆ2ärHcŒÂAzo*rè—¹²é"ʰ @ ½#bŽŠø @ }09\”¹BïˆpÊ® @ ½#¡tÐêéŠp„ˆÕW‰+H$Õ)‡£(ðBLB6fU.„ÐÏ&!A• ±uãOB65.1
@@ -418,11 +405,10 @@ endobj
È\Ò L†æì¹M0),|(X2i^/\´OØ–o––P,ì.”¬Â\oí˜ØX¯Z£aéã°²¿Pr'›!±ôR¶¢´ØÛ”°ý0,j“©z±Zn£ž-æ!õƒ6WrÀêßtŽ*wôÙð¹R—çßS‹añmq@sÀ<ï2éy°Ú×F\±Ç-ø/¬i\˜pI_.QÖ˜_ñþúÚˆË`ÀvóìºË™Tˇn.“; =éÿö]Èþ»KC.ê2Li×Oq“«Ðäq¦\¹g§\\®V«·OÛò¸Z]…†miÌecÀ¬—®üG —tkiËLG.—{¶¶ÂåÜ€uo}á¸äÔ† ÉE8µ¢ 6ô\EèׯW6­áBs±v:zÒøÄ&Wî ײ°ÉåŒÖãŽ7ð\2œŠÆÓ¸¸[8#ˆË éÀž÷R¸äd¬Æå€%¢I\£[">ë€Æ•OÄ
©\#Ç¿„l"ר–HÉ}¡ré)ÇOT®{RÒ™k´)FK{¡s4ň‰e ®q¦ñl—Á5Ê£fp¸(éch›kpí §Êñ¸ÖF “K
w¥Ð„kHQd¥s¹†ãe’±¹i?ƒ8.c®\CøgŸ{‘„«Sägi

–ÌÁb@Eš×Kí¶å‹¥°%Ô » %«0WÅ[;&6Ö«ÁhXúx¬ì/”ÜÉfH,½T­(íöv %l? ‹Údªd¬–Ûh`ÏóŸ­ƒg‹yHý €ÍU„°ú7£Êýc6|®”Ååù÷ÔÁbX|[ÐÅÅ0Ï»Lz¬öµQ'Wìq þKçk&\Òã—K”5æW¼¿¾6â2°Ý<»î2ÇG&UÇò¡›ËdÀhOú¿}²ÿîÒ‹º SäõScÜäã*4y\…)WîÙ)—«ÕêíÓ¶<®VW¡á_[0ë¥+ÿÃ%äZZà2“ÄQ† ÇåÞ€­­p97`Ý[_8.9µáBrNm†(ˆ
f|jÆÕ¯*š$ rõé r M¹ú3KÆ7æ"çP÷´0±ÏÕDzÅ0]Ý—}Y4¿7a…«vmñÚ¼Gv¸¶¶hoÈf›Â®B^¹3X6¹,
Ùå¦p«wÆ2øÖV_lrñS«T×özb—Ë ½‘º=&—Ì.U\²Ë·¶ûÐ1/Þ_õðž‹~¸¶å —ï_Þ÷òñ½qíG­Ã /VO}}vŸ\ûa»[]¨Çéú©ÏÏí›ë0p»««‹]¹\­®ŸžzÿÈA¸F(|ÿ&}ó ß¼ÿý'qûIÈ?‰ÛèÓÍ'qÝÜ ùãß<‹ü—?ýú?|ùI_úòUüá‡ÿþ퇟ÿVþç¶Õ½¸½ÝµúÝ|'ÞÝ~¸¹{nõ./þðîö&º‰v5ß}Úýþîãá¯&?|ýËù¯Â—_~üí¿~Ý×»ÿpó±ô‡~ùŸ¿|ùû÷_·ûôÝ»íÿ}ú;ñùçŸE¶ûáW‘ý´íÑÿþôã®i"·(ÿ«=ïendstream
endobj
$ß¾Iß<È7ï¿ù$n? ùññãÍ×â>º¹òû¿{Ê>#Å;ñX@.òŸþðëÿ}÷ó¢øå‡Ÿ¿ûîO¿}÷ãßËÿÞ6¾··»Æ·w_ß|ïn?ÜÜíšïš½Ë‹ß½»½‰n¢ÿ¸ÝU~w¿ýÝ»»H¾ûå¯ç? ?ÿôýo¿ÿõ—C½7Kê§?ÿõçÿúãþºí槯ÞmÿïÓ?ˆÏ?þ(²ÝÙÛNýïßïš&r õÿÉ„ñkendstream
200 0 obj
6298
endobj
201 0 obj<</Type/Page/Parent 197 0 R/Contents 202 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
@@ -435,41 +421,40 @@ endobj
203 0 obj
31
endobj
31
endobj
204 0 obj<</Type/Page/Parent 197 0 R/Contents 205 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
205 0 obj<</Length 206 0 R/Filter/FlateDecode>>stream
xÚ…TKoâ0¾ó+F=Ôd P(Ç¥/!µÝl“V{ÈÅI&Å­c§¶býŽ ºl¥UN±?{¾ÇŒ?Œé‹`1éŠz°Jßn—-!­`ÍÂÌ3HËa¬±bŽÒ7BÌ Š"è Át²'•n¸£*»c¡5¨
ÔL¶L@‰¦Ð<Gµ«Ü.Ø
•ªk%áùqý bÍ¥åò’½±XC6<»zŽ“³l/tCM»‚Q8¦¯cE¼/ÂKÇ‹Óeèy÷ýØ¢ÞrÜýÍŸp“y‡KÿäÑjËI0h”¶,Hk=F°=j¨”ög³ÉÅTƒšùMã/0!¬-l˜9#Jòf‹‚N”ïᆙ=$c­Ê¶°Æ9Fje(ËdÉty¤`”h-ùãY0!:[”¥¢ }R×g‚s÷¨ÍÅÑë}qg`…úî¡ kh!\"PIÔ®LØßzpÑ_GWwW­N¢=šIj¬*” `×7ém°ŽcŠ–uðœêÇŸJ±W‡÷òàMå^|´ØRQ °NäÜ;^¾ qÍÐå˜
ïãësxº½Š¢Å2CBM@ûh {EX U¼,yX¹]Wá{Ó$´Hœ›ž*U¦˜0ꤤi× ÚŽÛ
h¤œè§jeá‚`‚Ûý—þ°²4@¶ì”~ï§\«q’‹X›Ð´4ö¨ÉOã#¦©ˆãkŠ€,ÃOM ü¾ë•¯¹IšDª+J`M#xÁº­,±kÞ¯“zJ½m7Ek¬ªùoª½íÆTwÏp·9RφE«5J+öÐUÕ¿¨Y8žf£¾Î&×.¦ŠÓ¬=­cjf¡ õÜ¿-¥›‰ƒ2©dðɶÞVÓ?
—ÇÆýËðéE›]ŽÃ%mºÅýߤƒŸƒ?¿¸¥†endstream
204 0 obj<</Type/Page/Parent 197 0 R/Contents 205 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
205 0 obj<</Length 206 0 R/Filter/FlateDecode>>stream
xÚ…TKoâ0¾ó+F=Ôd P(Ç¥/!µÝl“V{ÈÅI&Å­c§¶býŽ ºl¥UN±?{¾ÇŒ?Œé‹`1éŠz°Jßn—-!­`ÍÂÌ3HËa¬±bŽÒ7BÌ Š"è Át²'•n¸£*»c¡5¨
ÔL¶L@‰¦Ð<Gµ«Ü.Ø
•ªk%áùqý bÍ¥åò’½±XC6<»zŽ“³l/tCM»‚Q8¦¯cE¼/ÂKÇ‹Óeèy÷ýØ¢ÞrÜýÍŸp“y‡KÿäÑjËI0h”¶,Hk=F°=j¨”ög³ÉÅTƒšùMã/0!¬-l˜9#Jòf‹‚N”ïᆙ=$c­Ê¶°Æ9Fje(ËdÉty¤`”h-ùãY0!:[”¥¢ }R×g‚s÷¨ÍÅÑë}qg`…úî¡ kh!\"PIÔ®LØßzpÑ_GWwW­N¢=šIj¬*” `×7ém°ŽcŠ–uðœêÇŸJ±W‡÷òàMå^|´ØRQ °NäÜ;^¾ qÍÐå˜
ïãësxº½Š¢Å2CBM@ûh {EX U¼,yX¹]Wá{Ó$´Hœ›ž*U¦˜0ꤤi× ÚŽÛ
h¤œè§jeá‚`‚Ûý—þ°²4@¶ì”~ï§\«q’‹X›Ð´4ö¨ÉOã#¦©ˆãkŠ€,ÃOM ü¾ë•¯¹IšDª+J`M#xÁº­,±kÞ¯“zJ½m7Ek¬ªùoª½íÆTwÏp·9RφE«5J+öÐUÕ¿¨Y8žf£¾Î&×.¦ŠÓ¬=­cjf¡ õÜ¿-¥›‰ƒ2©dðɶÞVÓ?
—ÇÆýËðéE›]ŽÃ%mºÅýߤƒŸƒ?¿¸¥†endstream
endobj
206 0 obj
690
endobj
207 0 obj<</Type/Page/Parent 197 0 R/Contents 208 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>>>endobj
690
208 0 obj<</Length 209 0 R/Filter/FlateDecode>>stream
xÚ•‘ÁOƒ0Åïüï8 Ì£Sof30½x©PFZmËýëmaK›&í÷¾ß÷š÷å„vÄ©ÛUïÝ–ÞõÃdä(³,HQÖ³;Y
=«S;ÎöWå»Õ& dRúñbR–-×в1{ªÍ”FOÅ@;Ø‚T[*ø«Á…‘0-C#»Nî¹ØB³Êp)ôͯð("øQ$Žÿ¥þOŸøX+Kt”â[ÖŸ­þŒ’Øâ΀ìl´£8g'È‹H±%†Ššªz1…Õçø¿‹@‰-[V}]Yª4ž9¯/ìmêÈ$!AlÏÜ—›uâ˜ÆfLãqLÃ5ù$]søY:qäÞâ<Gx6òûÒ{ò~xŸÎendstream
endobj
xÚ•ÑÍRƒ0à=Oq–u6€@Ýù×Ó*¡nÜDHÛhI4 íèÓ›@;Žé¢6Iîýr™óŒÝ"H2ÿÕmpKƒËéä**@—î.Ëó(mF÷ªîZ.-f[®·‚ï.軫MAÈP&“¡’®…QK»cš£3\´Lvlw¡ôŠIñÃiìšc©6µrÃk+”4×^ïñ¸ˆb„q¥Þ³ÿ_„˜k'z¥ü6–·GƒÖƒ’Äq' ÷y–”8©´L6L7Ä5fŸýÿ¥º[óúã0•Smg°¬ß¾ð·¡£Øw’E9HZô¹=ßL©ªy‰òJÕ§òاâ›C’¦Ña}SìÏ’¢Àødô4x
~aT¡¯endstream
endobj
209 0 obj
296
endobj
210 0 obj<</Type/Page/Parent 197 0 R/Contents 211 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
209 0 obj
291
endobj
210 0 obj<</Type/Page/Parent 197 0 R/Contents 211 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
211 0 obj<</Length 212 0 R/Filter/FlateDecode>>stream
UMsÛ6½ëWìÑž‘}8Šul2É´‡ÔêXnsð"—"b`PŠþ}ß‚ÔG¨L2ÓÑE$w÷½}ûøw4¥ ~Sz7£ù‚òzô~=zóiIÓ%­KšMÙœïîi]ÜLéŽV^ۨ햞!rM;ö;ÍûÛõW¤ÝÓt*iw]ÞÝü~’¥Ôu¥å•j"{j¼Ûé‚)K®Ï'WRåö®®¥ç?ÿør…·wþ5dH¾Ío¨å‰ÏI+ï6†ëïÉuÁ þä<Xù@]È¢¹ͱJó£*7T©@QÛ–‹Äõeöv‘ѳ5ú•é³Î½ ®Œò–þѶpûþò³ÊŸÆ]ƒRÅ:©
^Óy6^!*[(_°/UÎ’: ´X¼*å]Û4Î÷4StÈè7È·MRgÚ¨SÏ;íÚ`¤vJ…–Æ3€~Ïþ•
^Óy6^!*[(_°/UÎ’: ´X¼*å]Û4Î÷4StÈè7È·MRgÚ¨SÏ;íÚ`¤vJ…–Æ3€~Ïþ•
GÑÿ>kÑqÀè<'€Ú…˜j+Ã6f}±Ùâ4ŒÀ×É=i2Úò‰6½ÜDþÉYsx¹•~W¨ý”{ÝÄ« !·õª©t^nÇéy¯c5ÔÑÕL¹Sßt§ÇrxnÚªwb¢¨l!¯ì–ÅŠ'<)\j“Ä®U„¸¿»=ôc”ÉU‹öXåCÜòrH%)
Ú5ìÕ… „\Ô§B—%{‰è„T•|‹–ÇTÖ¸æbÔÔÂëp_(ȯ¢šçšáÁÖykbFëJEHUo0“NËmt­#^ì`¤Z*
0ó6DˆÜ£Š]·GÄÞø’£Do•ăvŒ@kj›K+§,`ªŸc±Î‡ç ½â˜Ñ[é@,ÍXùl{FV¬$° †cë-†ñ´ÁÁW—’„Kß}‡l™‹ ÃBª¬ñj 
 Å~kW´Fyqª$œO
@õ¶#@àäÎ&Ò'6(¹,ù„+ß\zž<btŒ&N—ˆ„—ž´¶Ìà|Öo\ï¨Ó™"«u:mN"ˆÄøÆ
@õ¶#@àäÎ&Ò'6(¹,ù„+ß\zž<btŒ&N—ˆ„—ž´¶Ìà|Öo\ï¨Ó™"«u:mN"ˆÄøÆ
Xx<
Xx<
«t°á¨Á=«&•ß°åR4I»X\.‘óÊ:㶇ÎÙàŠË-¯’‡óݰXÊòëÛîþa’-‘€Ð¹<\þýçm»endstream
endobj
212 0 obj
212 0 obj
843
endobj
213 0 obj<</Type/Page/Parent 197 0 R/Contents 214 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
214 0 obj<</Length 215 0 R/Filter/FlateDecode>>stream
@@ -483,31 +468,30 @@ endobj
»IZ£“<¨DF·êQúð\¨ü~u Ñ
Ä“PZ¬µBTµìÄ,ÄŽ³Õä^®6Kîxh£ìÏèÝßšçâ+´Cª,úv]«À>tä
Xé}SPжè£ÂŽãŸfô9òP©äk‚Z£~´0·¶^³-á’õÌ@2©#ïÕ£aö,>P´Z8øšÇÙ„æÃiëÛ裊^õi°“ÄÞˆ'9:ÂÚB .´Saò­§ÆÝÉfÈþFÉÑúÄÑ…m”ìMWZ§Âî%Þk\)ýËslô4¨–Eè)§ÑÓ¶Æv†“šP<} ƒƒ»FA•{¶RÎOÇÌ^‰Ck*7Ç8/UûQiÎ÷·ÕöëÉ4X>õ½hÓ3f±¨¢{3i¶
Š©<žg'£à¬cë0Òawì0È ™1ùÂÖB#a7Ikrõ‚ÈèF?)^ •?,_Hc´ñ,t%V•BT¶ìÄ,ÄŽ³åä^®6KîøÒFÙ#ŸÑ»¿5ÏOÄ—h‡T=XôíªÖ}hϰÒû¦ í¢v˜ÑçhÈX"@©“¯ jþÑÂÜÚzŶ„KÖ0ɤ6Ž ¼×O†
Û²Dø€l+áàkgš‡­o£GŒ*z|×§ÁNx-žÕè\\h§Ãše[O=Œ»“Íý’£õ‰£=¤m´êMWZ§Ãö->V¸Rù·çØè1hÐJÉÐSN£§mŒí '5!A¾} ƒƒ»FA•{¶ÔÎOÇÌN‰Ckj7Ç8oU{«+Î÷·ÕöëÉ4X>õ½hšjh$–Ʀf"Ì,bQF÷fÒlææ©’çJ–æxW»¢Ù)µÉ^"1Ö§*“›‚%É‚è5—jÏhiëaìo„ˆ—õ)as¡ËÁps²6Ÿú
±^RQœSȳ9£¿xy‚osÈý‰3ꥵfAš‹
ssdÅs%Ks<«}ÑŒì”Úd/ˆ˜ ëSVɉMÉ’dAôšKµg´²õ°?ö7BÄËú”°¹TU…`¸9Y›O}…XÏ©(NŒ)äÙœÑ_<‡<Á·9äþÈõRˆZ³ ÍÅ…ßúl*„Qlej¤!ŒY™ÄÚþB¸ªY~‚‘CtFgôŒ·ï"2½TzÈbPÑ€Õ‹–<$sä0Ç$«š+¸žÑ§åìÏû×Ããòöãð‘ <ßâsöÕãìÖhWZ¢æUáTâÙý5ôUx&ä.~ƒ!É&nù-
I~½[âC¤r ý 6Ä8“‹“(P¥µ
µhz1ôo6{}ºtóÿ‚nè`ߊ`ìÐ:XhDhŠf`ßœ0±;ë¶Î">–áV9(l’ÿÃéM³²¸/<¼:£Uj™/€…ºÁKÙ6E¾Çëeê<¬ß
YC©ã›To×½ç‹wÙ[Z\_˜Þ
ï··â7Ϫø‚—d¡ùØ,íž]]œóæKþîòü:ã?"žýáC~ò÷É…4yendstream
endobj
}ž ¹ß`H²‰[~KC’_ïø©hbœÉÅI¨ÎÒJ‡Z4½ú7›>]ºùA·JôN°‹oE°Fvè*XhDTÍ$Á4¾9abwÖm0œE|þ¬ÂvPØ$ÿÇÃM³´¸/<¾;¢ej™/€…ºÆKÙ&E~Àëeê<¬ßUC©ã›ToçççÙ{º¸ºJ6póõÃm}Å"—xÏí¸%¿yVǼ,‹ŠÏÒ©Ùåé :çïÎO®2þcâÕ?üQendstream
215 0 obj
1359
endobj
216 0 obj<</Type/Page/Parent 197 0 R/Contents 217 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
endobj
216 0 obj<</Type/Page/Parent 197 0 R/Contents 217 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
217 0 obj<</Length 218 0 R/Filter/FlateDecode>>stream
xÚ…UÁRÛ0½ç+¶¹4Ì$'![K)Óvh‡–0½p²«È’+ɘü}w%Û$¦°´»o÷½·â÷(…üIa=‡Å
x9ºØŒŽ¯Î!=MÎ`“ãÝj½NV°É&7Vj/,\Zù$¬;ÚüÂÈ%¤iŒ›-Îã²RÇ»›[àF;é<˜Œô«4V@.•§0W .sÉÁ`PÅ"IL•š«:/++%º{j¡ÓE2'è ¹±ðI4Jx?»aü‘Ù ®™ö‹ðÀt—Â=Òßm—ÀÏBbU_H×ö
217 0 obj<</Length 218 0 R/Filter/FlateDecode>>stream
xÚ…UÁRÛ0½ç+¶¹4Ì8'[‡ÒNÛi;tÓ !˱Š,¹’ŒÉßwW²MbÚépK»ûvß{+~O28ß Ö X®€W“«íäô㲋ôÞ­ÖëtÛ|vc¥öµ•Oº“í/Œ<‡,‹qóåæ8.q 5¼¿»¹n´“΃)ÀhA¿*cRy
sµà²¼u,’ÆT©¹jráð±ªV¢¿§&:[¦ ‚ŽP ŸD«„÷óÆ™Íá+sÂ~˜ÎáZ¸Gú»«âRøYJ¬êK麾!7ˆ§ÐÂ2×^VLi|Ýø4aæ²(„z(ŒæB¹¤õrQ! >”+M gZ+ñ¿,˜Vé=…Ô3r`lm(uíKQá5òFd¥Q˜C IšsŠü.|kì£Ô»ÿ©1¹bÎaÛF#5”á8¾Û; µc7óÕ\‰g9´Ò—`0Þv¡C¾Žð)l‘çÑXÁ´.‚ƒ8á›:ؤCó@Ê‘;Bëtëûr¨9i‰Ú¸Ú…œ£I*„5€~¤CãhˆÏág”Ô>N<ËycQ`ìûƒó±~º„òh^öb’øéâ\ ŸÔs'Á¾ôh7Va”B¨Ð@Øx_L<ã¹H3uì(‰2â•«Ò %¸}âþ[²ýkô¶”¼ìéBމÕû™Hw)L»üwD^6%2ŽÓôþ¤+·XE£…­eÊ‘jæIÒêFÇ­:ÇÍ$®±ä¸ÇŽ
<Ë ‘¾ƒñ¶
9K vD.ãFÑ,7‡h¯zŠÍô&}MH:l3ZÕ(/éY‰
b K2”¬Ë½#«÷J÷$ÁQâ9¼L 8Äa£ßz°B‘Ñ5ä5Øœ
…ªxšÂ•àl°w`“`»IoÅñ“á- #Ð_
H›sH$ÎDÊc}»ö€Oö6íš lõ“ª±b
„ýÀB:€wÅÄ3n‘‹4SÇŽ’(sJ\ reC:¡÷! K|صK¶{Þ]È1±z?É6q›ÿŽÈKÇDæÁÑ|œÜµåæ«h´°µL9RÍ<IZÝè¸U븉Ä5–÷¢õØ¡!'Sˆ‘˸Q4‹ÄÍ!Ú«=‡c3I_ †$ÛÁߌVÖÊKzV"È…ô%«bçÈêÒ]'Óà(ñ^¦)8Ä`£ßz°B‘Ñ5äÕÛœ
Vèd⺽9,6ï1wáÄ÷íMû²;[mÒ X.ñ
Þ¹5…oIü»`éoL7,lì<FÏ׋³üS:¿<K7n/èûÃvòcòj”Mendstream
endobj
218 0 obj
815
endobj
218 0 obj
219 0 obj<</Type/Page/Parent 197 0 R/Contents 220 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
220 0 obj<</Length 221 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS04³Ô3U072PIÑp
@@ -519,88 +503,86 @@ endobj
endobj
222 0 obj<</Type/Page/Parent 197 0 R/Contents 223 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
223 0 obj<</Length 224 0 R/Filter/FlateDecode>>stream
endobj
222 0 obj<</Type/Page/Parent 197 0 R/Contents 223 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
223 0 obj<</Length 224 0 R/Filter/FlateDecode>>stream
xÚ•SÁrÚ0½óÛCgÈ ¸6PÀ=¦CŽZœž¸{‹Ê’#Édü÷Ý•pÒ¤i;\¬•Þ¾·ï- Rúe°YÀr
e;¹-&îrÈr(jX¤«$ƒõfE5]ÀîÔà„½•Úóá08íMq&Ü
²Œqóœ/Wi°E#è<Zpyr0˜è¼ןZégðØ£f t¥Ð%*è˜Îæäø]%ë-R%ÔѺ$ò’ÞÉ–™S"Í#ç!t
ï¤Bµ±Ï²_ë¨5£>ßïÔÞ\dE“ñM7N ßá8Ðô
ªîu¯éñ&Lp‹ö*þ„°¿CºÑÏÒ´-á]…¹Î/ ¦Ø–Ra-zå¹éΖɂu_£Ã#õ§439Íu5Œ¶¬£ýâ‚ñÂh$
xÚ•SÁrÚ0½óÛCgÈ ¸6PÀ=¦CŽZœž¸{‹Ê’#Édü÷Ý•pÒ¤i;\¬•Þ¾·ï- Rúe°YÀr
e;¹-&îrÈr(jX¤«$ƒõfE5]ÀîÔà„½•Úóá08íMq&Ü
²Œqóœ/Wi°E#è<Zpyr0˜è¼ןZégðØ£f t¥Ð%*è˜Îæäø]%ë-R%ÔѺ$ò’ÞÉ–™S"Í#ç!t
ï¤Bµ±Ï²_ë¨5£>ßïÔÞ\dE“ñM7N ßá8Ðô
ªîu¯éñ&Lp‹ö*þ„°¿CºÑÏÒ´-á]…¹Î/ ¦Ø–Ra-zå¹éΖɂu_£Ã#õ§439Íu5Œ¶¬£ýâ‚ñÂh$
endobj
\;÷΃F¬ÝÐá§Q}ÎD5¯É3é¨!ãÃ{P]ªE‹°ûRì¾½Ù
†Ž>û_í¿w öº¢õðl$Ã/»ÃC90uèèèÂbéíÔ¥ê+Î`oœ?”Vv>D)[ñ€ñ9¥Â«,”¢~ÛçÇÌjkZêèhb¢ë”,…—F;}ê÷\I3xjdÙà…#"ݤ‚îõµ$áïâÌÛ—ÍÒ4Žü׿æj›&9Aèí†Ï»bòuòž5Ùendstream
endobj
224 0 obj
225 0 obj<</Type/Page/Parent 197 0 R/Contents 226 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>/Annots 12 0 R>>endobj
226 0 obj<</Length 227 0 R/Filter/FlateDecode>>stream
xÚ­VmoÓ0þÞ_qB* ÍÚõi lð([ø^â4ǶӪÿž;;I·ve›„6uss/Ï=÷Ü9 Œð'ñ”~³jð1¼»^@rÏ!-ðÙt6‹§æÃe©µj
VF(ÇÍ›ôO I‚i4^Ó¯LíÀî¬ã•…­J¶áPiÃÁ•LVê؆ Éî$>Òø”Cc¹‰!-¹í,dèuÇ9Dz’ç­-!À¼É8>§¼RgL¶‰a#B­™aRr ÚÆø¼Öƽ¥ó>³Þ Ê­¸Ûjó;nŸOã N5:cvÂ:ÐÅ=×á[ÂícZF--CY[ÇÜC®†éªb*ß/¨‚‚šÐWÓ—Ðá5„8Õåpõ-½ºy3"߮ȜEõèÚ ­ÀÖ<…à–øw°Ó
504
endobj
225 0 obj<</Type/Page/Parent 197 0 R/Contents 226 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>/Annots 12 0 R>>endobj
226 0 obj<</Length 227 0 R/Filter/FlateDecode>>stream
xÚ­VÛnÛ8}÷W RÈ‘jÅ÷éîK»ÞFýF¢,v)KR6ü÷!%9±ã&ŠNhÍåÌ™3Cý?Ê`Œ?Læô[4£OùèÃçd³t y…Ïæ‹E:‡¼¼¼­µvBm€ÁÚ
å¹ý#ÿÆSȲhšLVÑô S{p{çyã`'¤„šm94Úrð5S ƒÛ2!ÙƒÄGŸrh·)ä5wƒ‘ƒ½80ïYQó²³%˜7›¤×”Wê‚É.1lC¨†Y&%— -`\϶þŠÎ‡Ìz‹@(·â~§íiøzžN)p®Ñ³ƒ΃®¹ö¯iw´\Jã<óO¹º„B7
Å¥aÍÝþA‹ãäý~jª¶¢íý¶ ±/SÓðƒu1oã$“I¼€é|NúɇŸn>\§Áòçênuá¶TçOK/Gø¾Õ0IîQðŠfç#ršÓwãÅ~5:ý‡#òcð7?òäendstream
SåÇÞxETÔ„¡š¾¸Œï!ÆÄ@RÂÝ×üîÛÓ˜ ùö@öà"1 Z•àŽø÷°×-ì˜òDãÓÂå ºPÎERa,'ò\ø¾h­å"Ò}Ô‰’W¬•~h2²]HæÜ3ÄÂz”Eïvàô1ˆN&'4ÿЉÛs%$W¬á/­m‡qý"Fû;@ZHÖ¿Dy˜ßg ûž{Oܰº³cü kh”ýÞ rP ¥A¥t8C‡=
ªk+l¤ Tgq¸xéRø[ïø–š‹ap!D‡#ýxÑ`Æ]ÍUÐ*y§.MTDŸ¢‡1÷¢h%‹„'f»éÄšOt÷.½s!&b0(㓪۰£
t¯‚7*OƒÄl®`†Óÿ‘ôf1£SÃKÁnþœýN˜Í àÕêÃõì@éþ˜`ÞžàÀïQµÌ»|4NÇx{ÐGFßþ‚éäÓg«ÙÀt1Æ¿ñ$ážî4]-#„ðd„n™Ý£Æ W%1K#UVáv\‡ªd¶|¨á%w…(¡à<ÎGÈç,]á|êb7CiúÛšÂ; ¬Çõez2‰1À0ŒëN™ð§H¤àV\Ðg§ñ“öõëuôÕ½wñn~<NýÐ]Ø…6ûp÷
¾QÜ
endobj
228 0 obj<</Type/Page/Parent 197 0 R/Contents 229 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>/Annots 15 0 R>>endobj
229 0 obj<</Length 230 0 R/Filter/FlateDecode>>stream
TÛ$E(ñ™u¼ßÞýÒúŒæ#AÇvßñ0ï«Vú™›XJæQ0ÝžBqiØpxÐá8{¿Ÿ›ªè:†;áh¿ÝÆØ7¹mùѺXvq²ù*Á|¹$ý Ç÷õ=ÜëÊ慨ïŽ^Šð=«e’Ü’h,®Çd¼¤ï&«Yº‚ñùw7G?Ï ñ endstream
endobj
227 0 obj
910
endobj
228 0 obj<</Type/Page/Parent 197 0 R/Contents 229 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>/Annots 15 0 R>>endobj
229 0 obj<</Length 230 0 R/Filter/FlateDecode>>stream
Ò@B•¢ÚçýyÎ9þ’B‚¿Š æ ¨»Éåäô*UœAÙÐÝbY@¹™þ[~™$¥)žì!R †.ªu/¸…HÃ…–’9þ¼4‡FH®XÇáò}yyCÖ§W+HÏâ%ùÐq4_Å9y»hyýU¨ÏàZ×F(Ç
xÚ½UmoÓ0þÞ_qLB*R“%i×´“øÂØhÀX3ñÙIbpì`;«öï¹³Ó²ŽnÒ@B•¢Úw¾—ç¹—Ÿ£ü¥g0CՎޣ㋖qEMwóEÅzüªø>J JS:¼ÙA¤@õmTéNp ‘†3-%süuazµ\±–Ãù§âüš^_,!=‰d7BÃÑtÏÈÚYëB}×p¸2B9n`å˜ë-ÔF·þþL·-SëèR(¬Í€‚©1|²4'K*a2Dz³hiÿŪ`
*¦ äÐ[¾§¡¢H Ö¾ëÒ¢_æàN÷а[¶/[áj’BGqbЧ[¿‹Ò)ý?€…òhÈ9JÑm£ÖšÃl–åy>?¨•í´Ò“|qXgºÓ™æÙb–íç¿E‡™Ï–RXJP(¹6kdÿÝÁFHIHù´ù:†Bƒå6¨O6@@ƒÜk¬râ–O^oï(ꎶáéÎ ­žÀqpo¹ýñ;Pz³ãi{¥ñ`|6T¶Á‡n‡ ¦E‡mj÷óÑG^L‰AHÅþE.úp:ÿ§,þ½i导|´ƒWBUØì7W+BÙzý÷dEaDWÛh®ŒvºÒrÂ@ФÕÀ î¥ŒjŽÞ ñ†—X¢æ–_­Dö²¡{r^Œ’8ÁéGŸ”>×ï [¤ñ²“sk‘º<>NV4<¦”øz\½±ÜL«•pÚì• hüÙ;ì©v‚õÁC[Ý\_Bèƒ}ÿæŒçºÓãc©+&mÝé|šî«&[Õ£.HO¦Ùƒöº<T²
è*É,";ñÅ=ÙoÚpW¯¤ÀAˆÚ ÊÞ9­^<¤=¹G:CÎ$ñÂEðA—ϙѕ7ðÄŒF)’⤸ŸÑcá5=ŠÄúþ2ztñ|Gxù08*:Z¥ØÄfÁðNV ñQÞy0ÿØHaå<gkÙ¡ƒ /±LçÙ,à›g¥k·¡|c‰ØLõÌ#í(Ï’Ýd ê>öÒ‰NÒ¢¥}Nª³E‚ÍàÕ–CÇ|ýqÏ^yendstream
endobj
w ôvÏÓî2Jã_€ñÁPØ
Ý,»ÒÖ£O¼˜
ƒPŠýZôñrþN[üz2ÊŸxõÓ ^ Uã°ß^¯ eëõ_“]ï²¹6ÚéZË)Vƒf2j8F3ØÄ[^a‹š;n|·i8ˆî)üe9Iâ·}Rúܼ‚l™Æ+Èά­CêŠøl<IXÓnLð˜Rá›ieôÖrß0VÂisÐ& Uˆgïq¦ºöcu{óÂÆ7ŸaÚ:ןŸžJ]3ÙjëÎóôP5Ù©žÄp5Bj|i´Í×à¡“mà@7PKfÙ™oîÙáÐn…k½z-.BÔfP
ÎiõÏcÚ“¤3äL/,Potõ”]{¿ØÑ(ECž”÷f,X“Q$6£Ÿ.à ^ìò“£¦£ç¯ò ‡xË,ÞkãÂSB|T÷Ì^¤ÇΰsžòjÙq—£ ÍslÚE–^Þ¼¸*!
230 0 obj
807
endobj
231 0 obj<</Type/Page/Parent 197 0 R/Contents 232 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
232 0 obj<</Length 233 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS04³Ô3U072PIÑp
VÎO+)O,JU-N-*VðMÌ+MÌÑ ÉâÒ…¨Õ…*64 ÅÀE™y%™yé
¾¥9%™
Îù™©Å e®!\\%Uendstream
endobj
230 0 obj
233 0 obj
126
endobj
234 0 obj<</Type/Page/Parent 197 0 R/Contents 235 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>>>endobj
232 0 obj<</Length 233 0 R/Filter/FlateDecode>>stream
xÚ-‹A0÷=Å[ê¢Ø/(ºT” J9@£ÅÔÔ‚´ÄëkÕ¼·šÌ<A|FH×ñ—ÛK¶(7 ‚ì@Y–l/äuv8ïJ Ž¢­4}^jÔh½=*å&eçòÎø¯áÿˆD„iNÉ
_PÆãn¨&Ì`5Š~0ÚGí(Ù‰½5'-endstream
endobj
235 0 obj<</Length 236 0 R/Filter/FlateDecode>>stream
xÚ¥TMÓ0½÷WŒVBJ¥&Û|4m‘¸ .,,$Üzq·1rlc»´Ý_Ï8N¶Ý²° ”S<3ï½y3ö÷Q Süb˜'æPµ£·åèöÝâ%”[HâY”B>Ï ¬ƒB(,5Ñ5Ük&,ÕðIY&…—ß°,ƒ8ve¡¯ Ólu¥eà T
Q®¤¦¦ÒlC
endobj
؆‚U(="¢)„q²á
>˜m:O>íÉ®žª  ’m‹,‘?ÇæfÑÂE¦(qé¾§‚jŸïÇçå¾
[ɹ<8 ƒV¢?]É#œƒ=)lSnaË85gþ4JÜÄã”Óª«sÝÑš@‰@ùPȽ®è¥Ý„ZWüæxz¸éõ¡Ö›Ý…Àt¸vÀ½•LýzpréõáF„^k¸’9Ö:x\Á#ÕjÝà\‚´VËÕ—ó'w{nÙý^+iè?—š£p=Duú/æ—.¶ÚÙqiöy1Ͼo¬ñó¶\yEñGá¦Ðoú6{ ­4Ì^)©mýe»†~úA¬ƒŠ ax¡ Û ¶ev=îgWõb“f‡Iî·{äóëk⽸¾*!|- è:XD³#F˜¨×.JçÇd¾lÛõø)á¥ÂgÙv„ÿ† #WvÍ•Îò3×âñ}éºÃ»³ø›‡)›g˜8u©qìVåèóè'½G{®endstream
endobj
Q®¤¦¦ÒlC
؆‚U(="¢)„q²á
>˜m:O>íÉ®žª  ’m‹,‘?ÇæfÑÂE¦(qé¾§‚jŸïÇçå¾
[ɹ<8 ƒV¢?]É#œƒ=)lSnaË85gþ4JÜÄã”Óª«sÝÑš@‰@ùPȽ®è¥Ý„ZWüæxz¸éõ¡Ö›Ý…Àt¸vÀ½•LýzpréõáF„^k¸’9Ö:x\Á#ÕjÝà\‚´VËÕ—ó'w{nÙý^+iè?—š£p=Duú/æ—.¶ÚÙqiöy1Ͼo¬ñó¶\yEñGá¦Ðoú6{ ­4Ì^)©mýe»†~úA¬ƒŠ ax¡ Û ¶ev=îgWõb“f‡Iî·{äóëk⽸¾*!|- è:XD³#F˜¨×.JçÇd¾lÛõø)á¥ÂgÙv„ÿ† #WvÍ•Îò3×âñ}éºÃ»³ø›‡)›g˜8u©qìVåèóè'½G{®endstream
endobj
236 0 obj
539
endobj
237 0 obj<</Type/Page/Parent 197 0 R/Contents 238 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>>>endobj
238 0 obj<</Length 239 0 R/Filter/FlateDecode>>stream
V]oë6 }ϯ 2 kس×Iô¡·í.ЮYí¾õE±•ă#y’Ü$ûõ#e;7‰=Ü›¢HE‘‡<<"ûÏÀ¿|n_’Áï_Sð}H–¢ièN!ɮރh×ÉßxÁk.\Ý…õAØß⸠áý
½';ßw£ä"]s=© ð½]0›l6ï×µo‹æãð î_ž}¯‹öÃ/¾âƒ²ä;sov¡ë7'¨¡¿ó½›‹Qžú |x:†œºQ„˜ãñ dàaõÞʼnbB—Lq‘î»àÇVØð,g`ö˜jY©”_„õV–\õJÇP2úmÛ_óInûbÚãÏÆ|®
“Ï+UJÍ»¡­Õ)kó§ÓfjÅïYÉÒÜôðnÍ6ö3Ǿg<s#
Ÿ¬9°ÔT¬Yš\
º*K© Ï[ Þ-U. W¿i˜Ï`™¼µœå8g+çÿžS0:¿÷M”•‰ i:™ÈNï±òLjJPLçÕ7E¸õù jë;ê’cnL.V6é•saùœFòN):
LH#«|Ø À6/
PýyMÖ 39[)Î5YóE¼QþÌ?Úgu–8Ø%’‰*öé_¡(á8K½`&¯çå:©-xN9PÅ/¾H³†8Ï0;¹´IÏYç]õ¯ÉåÖl¥CŸ2G¯Q"CêQ¯¹b5<(Êò„Ù.P-YU|GÙH«›¶Ì¦êF_8¨òå±àZUjÈû~
236 0 obj
539
endobj
237 0 obj<</Type/Page/Parent 197 0 R/Contents 238 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>>>endobj
238 0 obj<</Length 239 0 R/Filter/FlateDecode>>stream
VÑnÚJ}ç+F\]ÝD¾^*å!MR©RÒp yËËb/à+³ëî®ôë;³¶)`W-!ïΜ9gÎÎò­Ã Àƒ~Dñ¦óqÞù÷S ŒÁ| áØ!ü1Ì“«×0ÁõüÜT®nåƒAý<ø<{†Û¼^aôhǘM •ñZ˜(
! vád´Ù¼^—±5Zë#à/ îžŸXÐD{™Á_,€ù&2• øÃÝÀgáðuÀv,^ŒzÿØNðþñrìGböû'a€ìƒ‹!çšK“s-d¼o¯ÂF$)»Ç"ШBÇâ"¬—<ºETz 9§ÿVóýE9Õ¶-§{üÞœOEfÓi¡seD3µ[õòrùÝes½w<çqj[twËWëg ž;)^âG”~¾Àc[ð TnS%
˜"Ï•¶"l$b™JüœJ°¸7ש´Bÿc`:½‡eš‰z嬯)_‰Yúý\‚Þù¾Ï2/ì,S¶±‘Ëätï‘*Oä¦9šéœ}EÂ/ŸO  p±ý°¤<Ö¦råŠ~Ö©–SÌi¦àT¢®§  ª*º
lÓ,­0^”â g˜¨ÙJ aÀªR/’èö?`~¨ NÊ*q°1fôåoÈr8®ÁI/ùFÀ×ùÃ×sºeª O©bü,ᣲk˜¥ V§–®è)oœ«ò†BnìVyô)ñÌ-Ò¥µ.gJ®ºG9°Úº%)òLì¨å|SÓ¬XWþÂA•.
W»Ò@jý×kpu5Ê©ú’’‰Sëð–8m~ªF‘·]“q›èÝv„T‰æ©-ó]ÜÅV1[:úÛ@*ò'ÌD&bg_¹D·¢ 褚߀˜zšbÌc}Ǹ¤Sê:¥ÛP*UyïbŽñØŸhsà
ÞÒõ& [­•)嬴¹E[¬ÕV_¨7Ñ;ƒQ=ò¦¸WðÆ³‚´„N_ìª\e¥7{
ÝýÌ!V™kê]­€,6 ¡M='l\RÂÆàåËi/ö˜`³áÆw§l;•<Ûò½¡:ʃæ=7±‰;£:ºZ¬¸N2aSÃ-à—3d{È^Ý
ÝŸ׆ñ«˜0òÎaª² oBe•$µ…)ÇëÁ†FØ|× ßç-JB êÚïŠk³Ç¸ê-ë÷ý!DÃÈQ‚»—é fji·t•¾—xÛº«˜Eø¼QÐfÒÃpÔ‡àô¬wwá]¨= {Ï]˜ºþõ0ïü×ù½;>qendstream
endobj
239 0 obj
966
endobj
240 0 obj<</Type/Page/Parent 197 0 R/Contents 241 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
241 0 obj<</Length 242 0 R/Filter/FlateDecode>>stream
òÅl6L»öáÔí±¯’[¶×”GýÐì g:å"³oTe\SYÁõajXþq†lÑ›­0üÎq+·ñ "7´
xÚ¥U[oÓ0~ϯ8š„T$â$K[¤½¬* Æ ^â4Ƕ³ŽϱÝõ"m]ש/U|ÎwuÚ¿?Æ ¤9”]pYï?N¤QEgù„دÕhÁŒiÅLÃàRµËƦõÛâ7.d@ˆÓi”Ûñ_r€’
(¥0Jr·&œÃífdíNzÕ
Ã*ƒéƒ~`: åÎøEÏTÉ„9Ù›VŠž>†©—‹B/½Ù#Ôc…U£7À{؇"I uË™ ƒùU1ÿ±ï%´`n~R>0
KŨa
•¡3ǰjÑ·˜Ll¼ƒUƒÈpç·¸5º¿RQõ7ZyÒÝÄÃ4ñ¤»‰¢]Ga&•b¥u~RîKRn@ŽJß-]8+'Çî1È8~}ä§dþtèçÑd›_fi voà›³ùôå.µ–œË•Mʇ¢ö=ÿ‡2ÃIr)Z8ëYÛôÕÐÝ¢_¬fÖPEK4¯áŸ|esP‘m«ìÛý®@3£°Ø—[`|¡ EàWj‰Hòh[‹¾Ðƒ&¿´ø6ïã;Ì“­YŽÉëÍ$ºg.‘«ÌÏ=oËÝ¥õôËûZ³<^Ùd-¤ity–{‰³›ë,dmVT1¸ÑöÆ|¥b Ü®…$Ÿât8Æ_ÒƒÙ8Ã÷Ì
endobj
‘Ô>˜Á÷à?î]ð0endstream
endobj
242 0 obj
xÚ¥U[o›0~çWUª”Iƒa`„LêÚ¥Ó¤­k:i.˜ÀflfL³ýûÛi.R›¦©òás¾«IþxG§P´Þyî½»˜‰ƒò
514
endobj
243 0 obj<</Type/Page/Parent 197 0 R/Contents 244 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
244 0 obj<</Length 245 0 R/Filter/FlateDecode>>stream
@@ -646,304 +628,304 @@ xref
xÚÍ›ÝsÜ6ÀßýWè±¹lÄ/}<6n“kçÒújgî%/òZ¶·]­|Úݤ¹¿þ”H%é™ÚÞtÆ
‡ÀO Èü÷Œe¹þe%ÏD‘­»³7Wg¯ßÖ«³«ÛŒbų¢TúçÕÍwWÍõ¶ÍúÛì¼ßÚÝaÿýÕg?]å«\Sàƒ¿¿ƒAVˆJ«u™P+‰ƒmv ˜ÉwÙë·*c  zµ}ÜÅÐÞ6ë2iä¨!ÄJha-¶:ù?lÑN¢Cq¥vYÉV „¡$J»«ààòËþÐvÙâC<n§•åJ…OÁyÃúíS;|Ú´Ÿ¿mtÉVõ =fWÆV•~åJ®
¬É¸–Ðïöc¿>v:¼—-êµEy©­ðqyrí'aSN~Ϊ‚ïX[SÿºöïI_³ª
¥ÝUò pùe·o»lñ!·ÓÊÅJ†OÁyÃúýS;|Z·Ÿ¿mô‚­Ô=fWÆVµ~åºX•8X´+X“q-¡ßíMsètx/[Ô#j‹òJ[%àã<ò"6å:Ú¦œüœe
ß±¶¦þuíß“¾fY—ZT¿#Ì9"µ5+ý]|;‹”ÓeЧÙeRé˜08œ‹a½Ý¯·÷Ë8ÐeJê&Àá4âbŸ §¯_±ÈWUHÃy¤EF¾x¸úÓ7™_JýaØAZB“•À•æ¡%<3aµg
ðƒÿ œn‰9Ú#hßaâóp~äõzì%pé1|Ë1éèÍGe™':¹,¯µ!°GP{ó°í7ýý—oQ2>im/"æ,¤Y ô;–8 ÍY”vaøµ¿Þ}ÛLu3ŠàÚ]Vªq@E9Û4»]»[ªúŽØ*1ƒh§Bú/M>1Ò <·«Áùz³o‡ƒèÚCu ÄŒ’—&ï–5,‰f@%¯¼´ÞËùÈB>bs<Î#îͰþ´hcY:Ò$mÖB “ˆëZ‡‡Pf-”‰´ßÚýç~øK¯– yùhJÕTc@áZ”¥IDPGÚ¿'®EYÙ„ÄéÂÕáM}ðí,Rb…«ÃèµA…œF·YÌxê&ÓÌ~%œFÖžZÐ=eø€Ê¹õpQñ2ËG@¥ô¾'
Ñ–Ô QUäÂn˜*­
.d»ŠÃu·ÞÓfõè°¹‡Mhð,œ/Ƶ¤Ý>òôíÆ¶iNqw=}u
+ùüWsE¸%[,­Ù‹¹<æi½¡ƒe¦Îáë2Ì®:g}OÎÑ$ó2Äã4â‚3©B”˜U!Ùy ‡:¢PqŒŽ°ÜÖ 
¤c¸)Ë/ÛÈ7çá 5BiÀq¾N*T|}È‹PÐ4'`{Iûu¿]*TøQl?cNaÂì–ªÒ½NaŪN[b<¢mtÖ!ç‘÷î°Ù¯7-•'´m`wÏúÇõÒÎ…×/còÜJ&«˜阜áŽí¡½ù+!!^U:“xœf U‰§ ”)"|Î3¯*!?> y6eÏ ðrßìÔê4¯†=mÈCäÝ
=Ñ5ôõ5M}õ¶N År¾z§÷|ô¸ƒ©àUÏú®k¶·§ÿZoŽ`ªüïhE‡¨¨+[SAÄØ¢¢®mm‘¢o¢(Àã4ââ!êH6~Î×^ÕÑ‘gâ'à9¦…èÈ3òPy)!:ÒÔWoëR,ç«ëå¹^
C˜
öz!ÙæÏÓ‰E«Ypt´BÑkd´ºsÖ³f{Ónèp:\Ùø0®vZF CO–L(²bÆ„*µZNÚPÈäó—vˆûµ_ð+ޤ‹®È¾‚(*{¼¨_Çþ=©¯ ŠÚV ‚î+8¼Ùþ|;‹”X_Áaôv=186¶·ÍpK6¦—†ŽÚŒW-¡êe>MÔó—ÔŽ®z¡›þÂáÂ"GÑBfÙ­L24ƒ´^€Ò.ÇoÛm;4¢øÐî&xÎ#޶¨8®cþeãš*Fp†Ý¹ªp´h]¸èÂ9.•í¦½‰t­<¦=œOYß<uÛ™ýºNaïÚÛ5‘»}¬äÐËq(à^wý¿öÔR>ôê«ßKÌp(€¸«/Îhœ‰©ç§ÓóÔ5¬„;,! Ü«ö‡añæPþgkÑ Ík<Š€ƒP;"ƒ4Ç[PÑn„O„‚“Ã"ëóéõÔaíŽC„ý>¬Û­®8u2Y¸­P¿L«–qÚ\¹ûPг#Ê\¥ö¹= ¸îtx'`óð–òŤ •?µ!  éu¿ ªþIü
{v›»¾%ÛÄž:$5Ús,-¬€õwQž/x.ç¾ÐŽCÆ­¯
Ù¾ñ䬛ÇÅöæÓß+Œ†fËÌÒbGdhÖxÑ,y=Ÿ`Þ6x@$µüxÊžPé‡(@Ôûf{Oec àPqdXyÚ°+…ÿ‡,@ÖEs¿Ø·{îZ(e%du;"££TØ»J[HF¾Iôß ¨”v“§î„õ"„¡Â^ëû‡ý¶Ýí–n½½PMÊDÄoõYãH©>¹twýáøÖ^>ß ”)µ§§nÛHÕ {Ût]Cw‘ªÇóò+
î¬ÈM‹eÂómâXär/ðöb
Æ-x¤kà wg±ý/Ññh]¦à !@ã4¢èÝYñòûÝïþH¸»h"–«Xµ%òïùD݆°OG‹Kù@ªÌç¿(
XÔo‡îšìoxú¶Ž®g4+`iäZæéBSC°¤³‡fhnà¾Q+y M,òÑA®V²–xA½¦¯¬QRÍ9-à@¿lo~pë ":•Lb3Ë “±B‹•«ú{âÒñmäø|'€À”Èt08 ›ŽgÃ'à¡@™PiyÚ°ä£YÃèt,8M¢BÓ@zÿN L0:4=eØTóßÌ ŒÏ'¾Œ
Óœû_Îc_.¾¯âs|F>ß ˆôŠÏÁl 0@Xb˜£€‡ÈKSdqfò[ÀBw ¹ßºÅX=Ó5ÈX`Àîy*=íˆ
¦òï*=G¾q\ÀGLŒVÀ5¿f vcÍӇ柿:
8Ú»f¸_/ºR>ÿõiVD¼ZM—–݈ôj5Þ‰Öný;sñºØ•!Î\<yïåOèXäj9üãUsùË„C»ÍJ.¿tdôy0ë!¢q¾H8c9®>•…ÂZ é숌J™c­tÓl"¹f"Ú–”
ù(à€‘\3©Ã6Žp0ãî…ÎÏ ï³¢x•Z—Ï G¤GÞ¬þéöÏÃ.Ö&œ˜*à®wð'r“ÜWŸ@— „¡Âþy Û„“º½¾RÏ`(€°?\é<öñGú
K=ô?C"
T u†§
å0ìêC
«ÙRµð¤
l97@ÊO}y:«Ü]P7aÃE¬Ráx)<=VÝl,ñàÒº(’Žh'u[]Ìa(à®è7ûÃ`Ž¿¨ãÓn;B&
ó#”Ÿý@ŬéÌŽ{†tˆ¤bÖ×îLWJÎX(P¸ƒZª0iÃ%Ã|ôýذȢb¶úûw]ÌüK¡Wç5^°8e&ÉK…·"Þ¼ÿéü*;ÍÎ>\\f—ýÝþs3´Ù‡´SÞ5ÛC³}! ÍqZqóÛ­Ñÿ>ù?7±½endstream
endobj
254 0 obj
2716
endobj
255 0 obj<</Type/Page/Parent 197 0 R/Contents 256 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
256 0 obj<</Length 257 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS041ѳT072PIÑp rt QÐUp
VÎO+)O,JU-N-*VðMÌ+MÌÑ ÉâÒ…èÑ…jÊÌ º†pr¿%endstream
endobj
257 0 obj
102
endobj
258 0 obj<</Count 5/First 259 0 R/Last 279 0 R>>endobj
259 0 obj<</Parent 258 0 R/Title(Table of Contents)/Dest[252 0 R/XYZ null 756 null]/Next 260 0 R>>endobj
260 0 obj<</Parent 258 0 R/Count -2/First 261 0 R/Last 262 0 R/Title(Preface)/Dest[204 0 R/XYZ null 743 null]/Prev 259 0 R/Next 263 0 R>>endobj
261 0 obj<</Parent 260 0 R/Title(System Overview)/Dest[204 0 R/XYZ null 371 null]/Next 262 0 R>>endobj
262 0 obj<</Parent 260 0 R/Title(Document Overview)/Dest[207 0 R/XYZ null 736 null]/Prev 261 0 R>>endobj
263 0 obj<</Parent 258 0 R/Count -7/First 264 0 R/Last 270 0 R/Title(1 - Printing System Overview)/Dest[210 0 R/XYZ null 743 null]/Prev 260 0 R/Next 271 0 R>>endobj
264 0 obj<</Parent 263 0 R/Title(The Printing Problem)/Dest[210 0 R/XYZ null 371 null]/Next 265 0 R>>endobj
265 0 obj<</Parent 263 0 R/Title(The Technology)/Dest[213 0 R/XYZ null 736 null]/Prev 264 0 R/Next 266 0 R>>endobj
266 0 obj<</Parent 263 0 R/Title(Jobs)/Dest[213 0 R/XYZ null 478 null]/Prev 265 0 R/Next 267 0 R>>endobj
267 0 obj<</Parent 263 0 R/Title(Classes)/Dest[213 0 R/XYZ null 372 null]/Prev 266 0 R/Next 268 0 R>>endobj
268 0 obj<</Parent 263 0 R/Title(Filters)/Dest[213 0 R/XYZ null 280 null]/Prev 267 0 R/Next 269 0 R>>endobj
269 0 obj<</Parent 263 0 R/Title(Printer Drivers)/Dest[216 0 R/XYZ null 736 null]/Prev 268 0 R/Next 270 0 R>>endobj
270 0 obj<</Parent 263 0 R/Title(Networking)/Dest[216 0 R/XYZ null 636 null]/Prev 269 0 R>>endobj
271 0 obj<</Parent 258 0 R/Count -7/First 272 0 R/Last 278 0 R/Title(2 - Using the Printing System)/Dest[222 0 R/XYZ null 743 null]/Prev 263 0 R/Next 279 0 R>>endobj
272 0 obj<</Parent 271 0 R/Title(Submitting Files for Printing)/Dest[222 0 R/XYZ null 371 null]/Next 273 0 R>>endobj
273 0 obj<</Parent 271 0 R/Title(Choosing a Printer)/Dest[225 0 R/XYZ null 736 null]/Prev 272 0 R/Next 274 0 R>>endobj
274 0 obj<</Parent 271 0 R/Title(Setting Printer Options)/Dest[225 0 R/XYZ null 445 null]/Prev 273 0 R/Next 275 0 R>>endobj
275 0 obj<</Parent 271 0 R/Title(Printing Multiple Copies)/Dest[225 0 R/XYZ null 236 null]/Prev 274 0 R/Next 276 0 R>>endobj
276 0 obj<</Parent 271 0 R/Title(Checking the Printer Status from the Command-Line)/Dest[228 0 R/XYZ null 714 null]/Prev 275 0 R/Next 277 0 R>>endobj
277 0 obj<</Parent 271 0 R/Title(Checking the Printer Status from the Web)/Dest[228 0 R/XYZ null 382 null]/Prev 276 0 R/Next 278 0 R>>endobj
278 0 obj<</Parent 271 0 R/Title(Canceling a Print Job)/Dest[228 0 R/XYZ null 276 null]/Prev 277 0 R>>endobj
279 0 obj<</Parent 258 0 R/Count -3/First 280 0 R/Last 293 0 R/Title(3 - Standard Printer Options)/Dest[234 0 R/XYZ null 743 null]/Prev 271 0 R>>endobj
280 0 obj<</Parent 279 0 R/Count -6/First 281 0 R/Last 286 0 R/Title(General Options)/Dest[234 0 R/XYZ null 371 null]/Next 287 0 R>>endobj
281 0 obj<</Parent 280 0 R/Title(Selecting the Media Size, Type, and Source)/Dest[234 0 R/XYZ null 286 null]/Next 282 0 R>>endobj
282 0 obj<</Parent 280 0 R/Title(Setting the Orientation)/Dest[237 0 R/XYZ null 571 null]/Prev 281 0 R/Next 283 0 R>>endobj
283 0 obj<</Parent 280 0 R/Title(Printing On Both Sides of the Paper)/Dest[237 0 R/XYZ null 474 null]/Prev 282 0 R/Next 284 0 R>>endobj
284 0 obj<</Parent 280 0 R/Title(Selecting a Range of Pages)/Dest[237 0 R/XYZ null 340 null]/Prev 283 0 R/Next 285 0 R>>endobj
285 0 obj<</Parent 280 0 R/Title(Setting the Brightness)/Dest[240 0 R/XYZ null 729 null]/Prev 284 0 R/Next 286 0 R>>endobj
286 0 obj<</Parent 280 0 R/Title(Setting the Gamma Correction)/Dest[240 0 R/XYZ null 609 null]/Prev 285 0 R>>endobj
287 0 obj<</Parent 279 0 R/Count -5/First 288 0 R/Last 292 0 R/Title(Text Options)/Dest[240 0 R/XYZ null 479 null]/Prev 280 0 R/Next 293 0 R>>endobj
288 0 obj<</Parent 287 0 R/Title(Setting the Number of Characters Per Inch)/Dest[240 0 R/XYZ null 394 null]/Next 289 0 R>>endobj
289 0 obj<</Parent 287 0 R/Title(Setting the Number of Lines Per Inch)/Dest[240 0 R/XYZ null 297 null]/Prev 288 0 R/Next 290 0 R>>endobj
290 0 obj<</Parent 287 0 R/Title(Setting the Number of Columns)/Dest[240 0 R/XYZ null 201 null]/Prev 289 0 R/Next 291 0 R>>endobj
291 0 obj<</Parent 287 0 R/Title(Setting the Page Margins)/Dest[243 0 R/XYZ null 729 null]/Prev 290 0 R/Next 292 0 R>>endobj
292 0 obj<</Parent 287 0 R/Title(Pretty Printing)/Dest[243 0 R/XYZ null 563 null]/Prev 291 0 R>>endobj
293 0 obj<</Parent 279 0 R/Count -3/First 294 0 R/Last 296 0 R/Title(Image Options)/Dest[243 0 R/XYZ null 459 null]/Prev 287 0 R>>endobj
294 0 obj<</Parent 293 0 R/Title(Scaling the Image)/Dest[243 0 R/XYZ null 374 null]/Next 295 0 R>>endobj
295 0 obj<</Parent 293 0 R/Title(Adjusting the Hue \(Tint\) of an Image)/Dest[243 0 R/XYZ null 148 null]/Prev 294 0 R/Next 296 0 R>>endobj
296 0 obj<</Parent 293 0 R/Title(Adjusting the Saturation \(Color\) of an Image)/Dest[246 0 R/XYZ null 473 null]/Prev 295 0 R>>endobj
297 0 obj<</Type/Catalog/Pages 197 0 R/Names 157 0 R/ViewerPreferences<</PageLayout/TwoColumnRight>>/Outlines 258 0 R/PageMode/UseOutlines/OpenAction[204 0 R/XYZ null null null]>>endobj
xref
0 298
0000000000 65535 f
0000000015 00000 n
0000000218 00000 n
0000000279 00000 n
0000000353 00000 n
0000000431 00000 n
0000000508 00000 n
0000000587 00000 n
0000000663 00000 n
0000000744 00000 n
0000000802 00000 n
0000000907 00000 n
0000001012 00000 n
0000001043 00000 n
0000001094 00000 n
0000001179 00000 n
0000001203 00000 n
0000001307 00000 n
0000001412 00000 n
0000001517 00000 n
0000001622 00000 n
0000001727 00000 n
0000001830 00000 n
0000001933 00000 n
0000002037 00000 n
0000002142 00000 n
0000002247 00000 n
0000002352 00000 n
0000002457 00000 n
0000002562 00000 n
0000002667 00000 n
0000002772 00000 n
0000002877 00000 n
0000002982 00000 n
0000003087 00000 n
0000003192 00000 n
0000003297 00000 n
0000003402 00000 n
0000003505 00000 n
0000003608 00000 n
0000003712 00000 n
0000003817 00000 n
0000003922 00000 n
0000004027 00000 n
0000004132 00000 n
0000004237 00000 n
0000004342 00000 n
0000004447 00000 n
0000004552 00000 n
0000004657 00000 n
0000004762 00000 n
0000004867 00000 n
0000004972 00000 n
0000005077 00000 n
0000005182 00000 n
0000005287 00000 n
0000005392 00000 n
0000005497 00000 n
0000005602 00000 n
0000005707 00000 n
0000005812 00000 n
0000005917 00000 n
0000006022 00000 n
0000006127 00000 n
0000006232 00000 n
0000006337 00000 n
0000006442 00000 n
0000006547 00000 n
0000006652 00000 n
0000006757 00000 n
0000006862 00000 n
0000006967 00000 n
0000007072 00000 n
0000007177 00000 n
0000007282 00000 n
0000007385 00000 n
0000007488 00000 n
0000007592 00000 n
0000007697 00000 n
0000007802 00000 n
0000007907 00000 n
0000008012 00000 n
0000008117 00000 n
0000008222 00000 n
0000008327 00000 n
0000008432 00000 n
0000008537 00000 n
0000008642 00000 n
0000008747 00000 n
0000008852 00000 n
0000008957 00000 n
0000009062 00000 n
0000009167 00000 n
0000009272 00000 n
0000009377 00000 n
0000009482 00000 n
0000009587 00000 n
0000009692 00000 n
0000009797 00000 n
0000009902 00000 n
0000010007 00000 n
0000010113 00000 n
0000010219 00000 n
0000010325 00000 n
0000010431 00000 n
0000010537 00000 n
0000010643 00000 n
0000010749 00000 n
0000010855 00000 n
0000010961 00000 n
0000011067 00000 n
0000011173 00000 n
0000011279 00000 n
0000011385 00000 n
0000011491 00000 n
0000011597 00000 n
0000011703 00000 n
0000011809 00000 n
0000011915 00000 n
0000012021 00000 n
0000012127 00000 n
-ªßŽæ‘Úš¥þ®¾EÊ«eЧÙeªÖ1`p9ÃfwØìî–q¡Ëj¥?š‡Óˆ‹}‚ž¾~E™¯Ê†óH‹Œzñpô‡§Jn2¿Rúðƒ´„¦J+Í}KxfÂjÏHðƒÿ œn‰9Ú#hßaâóp~äõzì%pé)|Ë1éèÍGU':¹,¯´!°GP»¾ßõÛþî˷ͨ˜NŸ§´¶Ëˆ9¥2+¤9ea†_úëý·-ÀêÓ¯nbF\[£ËŠz©@ηÍ~ßî—ª¾¶JÌ Ú©þ “OÌ€4Ïíjðv³=´Ã‚Atí¡N:PbFÉ “w
–D3 ’—^Zo‡å|ä!±9ç÷ã°ù´hc‘ŸX:ÒmVY “ˆ«J‡‡Pf•µ‰´_ÛÃç~øS¯– yùdJÕTc@á*‹Â$"¨#íß“
WY”6!qºpuxS_|;‹”Xáê0zm¨C N#çÞ,f<u“if¿N#ë@-èž2|@ÅÜz8¨x™å# Îªõ¾'
Ñ–Ô IeäTÂn˜J­
–Jâ®âxÝm´Y=:lîa< ç帖´{ÂGž¾ÝØÊæØW×°‚Ï5' Ã-ÙbiÍ^Ìå1Oë
,3U_—ÙV2»êœß÷=ý9{D“̋ӈkΤ
QbV…dçY°¸.Tõ õ€ªˆct„å¶­q@:†›²ü²|sR#”¶竤BÅׇ¼]@s¶—ôpØô»¥B…ŸÄö3æ&Ìn©”îÍ€t
“«*m‰ñˆ¶ÑY…|œGÞûãö°yضT:œжÝ}tH<ï6K;^½¼obŽÉs[(™¬b¤cr†;¶ûvýgBC|]êLàqš%T%ž2,P¦ˆðQ8ϼª„üø<‚æ)Ø”<'€ÀËCs8R ¨Gм
ö´!w;ôD×Ð××´ú«·u)–óÕ;½oä£Ç¬^õ¼ïºfwóê_›ÝÂL™ÿý]Ó!*ªÒÖT1v@…¨¨*[[$†¨Ã›(
ð8¸xˆ:’Ÿ…ó•WõÄCt䙸 xNi!:òL…<@^JˆŽ´ú«·u)–óÕuˆò\/…!¬^õ?íõB²ÍŸ§+‹V³àèh…¢×Èhuç¬çÍnÝnép:\Ùø0®vZE CO–L(²PÍ&Œ Ujµœ´¡Éç/í÷K¿à=&O¤‹^“}!K{¼¨_Çþ=©¯ de«Þlÿ¾EJ¬¯à0z»ž‡œFŽN»›f¸!ÓKCGmÆ+äDK¨z™OÕü%µÀ„£«^覿p¸°ÈQ´Ò,»¥I†fÖ BÙåø]»k‡fK¿ÚÀÂyÄѧuÌ¿l\SÅΰû¡V%Ž­ ]8Ç¥²Ý¶ëH×ÊcÚÓÁ:|‚à)ë›§n;"³_× ì}{³!r·€•zÙ!Üënþ×þƒZÊ'€^}õ{‰wõåÂù31àœâtú!`žº†p‡%„¡€{Õþ8,ÞÊŸâl-¤y…GpjGdæx ð‰PprXd}¾@ ¢ž:¬=Ðña(€°ß†M»Ó§N& ·ª—iÕ2Nûƒ×î>´Áìˆò¯SûÜÜw:¼°yxGùbÒ…ÊŠÚ†ô¦?ÜSUÿ¤
~…=HÈB»ÍÝÜmbOO=Ús,-¬€õ·©=_ð\Í}¡‡Œ[_²
È X/6‹íͧ¿W
Í
/–™¥ÅŽÈЬð¢Yòz6>Á¼mð'€Hjùñ”!<¡ÒQ(€¨ß›Ý•y<DP€CÄ‘aåiîþ²PYÍÝbßî¹k¡ht–xÕíˆŒŽ¢ÆÞUÚB2òM¢øN Ni7yêàNX/B
ìͰ¹»?ìÚý~éÖÛ Õ¤LDü¡ðVŸ5ŽR‘ê“+wg0ÑŽoíåó@‘R{zê¶TÎ`(€°wM×5t©q</¾Â¡âÎûa€Ü´X&<ß&ŽE.Çq‰·+0®ä‘®
—îÎbûÑñh]VÃB€ÆiDÑ»3ùòûÝG$Ü] 4ËëXµ%òÇ|"ŽnCا£€Å¥| Uäó_,ê×cwMö7<}[GW3š°4r-ót¡)
XÒù}34k¸/FÔJCe>:ÈÕJVÀ/¨×ô•5JÕó_N 8ÐÏ»õýBÃîb=ADG£’)lf™ a*Vh±bU=&.ßFŽÏwL‰L³ÀPa‰±éx6|
 •–§
ë@>š5ŒNÇ‚Ó$*4=ô  ÷à´À£CÓS†A9ÿ͜ˆð|â˸Ñ0͹_ñå<VñåâqŸãÛ0òùN@¤W|fc(€¡ÂÃÔñl<@^B˜"3“ß
¸KÈýöØ-.Àõ3]ƒŒìž§ÒÓŽ¨À`uþ¨ÒsäÇ|pÀ„Àa®ù…0+à`°#hž>4øüÕQÀÑÞ7ÃÝfÑ•êù¯O3ñj9]Zv#Ò«åx'Z»õKìÌeÄëbW…x8sñhäu¼—?¡c‘«åðWÍå/4+L¸üÜ‘ÑçÁ¬‡XˆÆy™pÆrZ5|4*eµÒÙ•*ÇZiÝl#¹f"Ú–TòQÀ#¹fR‡m.„0+à`ÆÝ ŸÞgE="ð*µ.ŸŽH¼YýÃÍÇ}¬M81!UÀ]ïà N å&¹¯>.AC„ýóH¶ 'u{}¥šÁPa¿»Òyìã÷ô–j"ÖÐÿ ‰(P&Ôž6”ð«Y(€¬fGÕ“6°ÅÜlNYT(?õåéh¬rwAÝ„
±J…ã¥ðôXuO°±ÄƒKëV@&ÑN궺˜ÃPÀ]ÑoÇÁQÆ=¦Ýv„L@æG(?ûŠYÒ™÷ éIŬ¯Ý™®”š±P@ºƒZª0iÃ%Ã|ôýذȢb¶üûw]ÌüK¡×o+¼`ñŠåp§j¼qþáâ2»ìoŸ›¡Í>ì¡ò¾Ù›-è ¦²W%7¿ÓMðï³ÿó_º´endstream
endobj
254 0 obj
2708
endobj
255 0 obj<</Type/Page/Parent 197 0 R/Contents 256 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
256 0 obj<</Length 257 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS04³Ô3U072PIÑp
VÎO+)O,JU-N-*VðMÌ+MÌÑ ÉâÒ…¨Õ…*ÎÌ º†prÇvMendstream
endobj
257 0 obj
94
endobj
258 0 obj<</Count 5/First 259 0 R/Last 279 0 R>>endobj
259 0 obj<</Parent 258 0 R/Title(Table of Contents)/Dest[252 0 R/XYZ null 756 null]/Next 260 0 R>>endobj
260 0 obj<</Parent 258 0 R/Count -2/First 261 0 R/Last 262 0 R/Title(Preface)/Dest[204 0 R/XYZ null 743 null]/Prev 259 0 R/Next 263 0 R>>endobj
261 0 obj<</Parent 260 0 R/Title(System Overview)/Dest[204 0 R/XYZ null 371 null]/Next 262 0 R>>endobj
262 0 obj<</Parent 260 0 R/Title(Document Overview)/Dest[207 0 R/XYZ null 736 null]/Prev 261 0 R>>endobj
263 0 obj<</Parent 258 0 R/Count -7/First 264 0 R/Last 270 0 R/Title(1 - Printing System Overview)/Dest[210 0 R/XYZ null 743 null]/Prev 260 0 R/Next 271 0 R>>endobj
264 0 obj<</Parent 263 0 R/Title(The Printing Problem)/Dest[210 0 R/XYZ null 371 null]/Next 265 0 R>>endobj
265 0 obj<</Parent 263 0 R/Title(The Technology)/Dest[213 0 R/XYZ null 736 null]/Prev 264 0 R/Next 266 0 R>>endobj
266 0 obj<</Parent 263 0 R/Title(Jobs)/Dest[213 0 R/XYZ null 478 null]/Prev 265 0 R/Next 267 0 R>>endobj
267 0 obj<</Parent 263 0 R/Title(Classes)/Dest[213 0 R/XYZ null 372 null]/Prev 266 0 R/Next 268 0 R>>endobj
268 0 obj<</Parent 263 0 R/Title(Filters)/Dest[213 0 R/XYZ null 280 null]/Prev 267 0 R/Next 269 0 R>>endobj
269 0 obj<</Parent 263 0 R/Title(Printer Drivers)/Dest[216 0 R/XYZ null 736 null]/Prev 268 0 R/Next 270 0 R>>endobj
270 0 obj<</Parent 263 0 R/Title(Networking)/Dest[216 0 R/XYZ null 636 null]/Prev 269 0 R>>endobj
271 0 obj<</Parent 258 0 R/Count -7/First 272 0 R/Last 278 0 R/Title(2 - Using the Printing System)/Dest[222 0 R/XYZ null 743 null]/Prev 263 0 R/Next 279 0 R>>endobj
272 0 obj<</Parent 271 0 R/Title(Submitting Files for Printing)/Dest[222 0 R/XYZ null 371 null]/Next 273 0 R>>endobj
273 0 obj<</Parent 271 0 R/Title(Choosing a Printer)/Dest[225 0 R/XYZ null 736 null]/Prev 272 0 R/Next 274 0 R>>endobj
274 0 obj<</Parent 271 0 R/Title(Setting Printer Options)/Dest[225 0 R/XYZ null 445 null]/Prev 273 0 R/Next 275 0 R>>endobj
275 0 obj<</Parent 271 0 R/Title(Printing Multiple Copies)/Dest[225 0 R/XYZ null 236 null]/Prev 274 0 R/Next 276 0 R>>endobj
276 0 obj<</Parent 271 0 R/Title(Checking the Printer Status from the Command-Line)/Dest[228 0 R/XYZ null 714 null]/Prev 275 0 R/Next 277 0 R>>endobj
277 0 obj<</Parent 271 0 R/Title(Checking the Printer Status from the Web)/Dest[228 0 R/XYZ null 382 null]/Prev 276 0 R/Next 278 0 R>>endobj
278 0 obj<</Parent 271 0 R/Title(Canceling a Print Job)/Dest[228 0 R/XYZ null 276 null]/Prev 277 0 R>>endobj
279 0 obj<</Parent 258 0 R/Count -3/First 280 0 R/Last 293 0 R/Title(3 - Standard Printer Options)/Dest[234 0 R/XYZ null 743 null]/Prev 271 0 R>>endobj
280 0 obj<</Parent 279 0 R/Count -6/First 281 0 R/Last 286 0 R/Title(General Options)/Dest[234 0 R/XYZ null 371 null]/Next 287 0 R>>endobj
281 0 obj<</Parent 280 0 R/Title(Selecting the Media Size, Type, and Source)/Dest[234 0 R/XYZ null 286 null]/Next 282 0 R>>endobj
282 0 obj<</Parent 280 0 R/Title(Setting the Orientation)/Dest[237 0 R/XYZ null 571 null]/Prev 281 0 R/Next 283 0 R>>endobj
283 0 obj<</Parent 280 0 R/Title(Printing On Both Sides of the Paper)/Dest[237 0 R/XYZ null 474 null]/Prev 282 0 R/Next 284 0 R>>endobj
284 0 obj<</Parent 280 0 R/Title(Selecting a Range of Pages)/Dest[237 0 R/XYZ null 340 null]/Prev 283 0 R/Next 285 0 R>>endobj
285 0 obj<</Parent 280 0 R/Title(Setting the Brightness)/Dest[240 0 R/XYZ null 729 null]/Prev 284 0 R/Next 286 0 R>>endobj
286 0 obj<</Parent 280 0 R/Title(Setting the Gamma Correction)/Dest[240 0 R/XYZ null 609 null]/Prev 285 0 R>>endobj
287 0 obj<</Parent 279 0 R/Count -5/First 288 0 R/Last 292 0 R/Title(Text Options)/Dest[240 0 R/XYZ null 479 null]/Prev 280 0 R/Next 293 0 R>>endobj
288 0 obj<</Parent 287 0 R/Title(Setting the Number of Characters Per Inch)/Dest[240 0 R/XYZ null 394 null]/Next 289 0 R>>endobj
289 0 obj<</Parent 287 0 R/Title(Setting the Number of Lines Per Inch)/Dest[240 0 R/XYZ null 297 null]/Prev 288 0 R/Next 290 0 R>>endobj
290 0 obj<</Parent 287 0 R/Title(Setting the Number of Columns)/Dest[240 0 R/XYZ null 201 null]/Prev 289 0 R/Next 291 0 R>>endobj
291 0 obj<</Parent 287 0 R/Title(Setting the Page Margins)/Dest[243 0 R/XYZ null 729 null]/Prev 290 0 R/Next 292 0 R>>endobj
292 0 obj<</Parent 287 0 R/Title(Pretty Printing)/Dest[243 0 R/XYZ null 563 null]/Prev 291 0 R>>endobj
293 0 obj<</Parent 279 0 R/Count -3/First 294 0 R/Last 296 0 R/Title(Image Options)/Dest[243 0 R/XYZ null 459 null]/Prev 287 0 R>>endobj
294 0 obj<</Parent 293 0 R/Title(Scaling the Image)/Dest[243 0 R/XYZ null 374 null]/Next 295 0 R>>endobj
295 0 obj<</Parent 293 0 R/Title(Adjusting the Hue \(Tint\) of an Image)/Dest[243 0 R/XYZ null 148 null]/Prev 294 0 R/Next 296 0 R>>endobj
296 0 obj<</Parent 293 0 R/Title(Adjusting the Saturation \(Color\) of an Image)/Dest[246 0 R/XYZ null 473 null]/Prev 295 0 R>>endobj
297 0 obj<</Type/Catalog/Pages 197 0 R/Names 157 0 R/ViewerPreferences<</PageLayout/TwoColumnRight>>/Outlines 258 0 R/PageMode/UseOutlines/OpenAction[204 0 R/XYZ null null null]>>endobj
xref
0 298
0000000000 65535 f
0000000015 00000 n
0000000210 00000 n
0000000271 00000 n
0000000345 00000 n
0000000423 00000 n
0000000500 00000 n
0000000579 00000 n
0000000655 00000 n
0000000736 00000 n
0000000794 00000 n
0000000899 00000 n
0000001004 00000 n
0000001035 00000 n
0000001086 00000 n
0000001171 00000 n
0000001195 00000 n
0000001299 00000 n
0000001404 00000 n
0000001509 00000 n
0000001614 00000 n
0000001719 00000 n
0000001822 00000 n
0000001925 00000 n
0000002029 00000 n
0000002134 00000 n
0000002239 00000 n
0000002344 00000 n
0000002449 00000 n
0000002554 00000 n
0000002659 00000 n
0000002764 00000 n
0000002869 00000 n
0000002974 00000 n
0000003079 00000 n
0000003184 00000 n
0000003289 00000 n
0000003394 00000 n
0000003497 00000 n
0000003600 00000 n
0000003704 00000 n
0000003809 00000 n
0000003914 00000 n
0000004019 00000 n
0000004124 00000 n
0000004229 00000 n
0000004334 00000 n
0000004439 00000 n
0000004544 00000 n
0000004649 00000 n
0000004754 00000 n
0000004859 00000 n
0000004964 00000 n
0000005069 00000 n
0000005174 00000 n
0000005279 00000 n
0000005384 00000 n
0000005489 00000 n
0000005594 00000 n
0000005699 00000 n
0000005804 00000 n
0000005909 00000 n
0000006014 00000 n
0000006119 00000 n
0000006224 00000 n
0000006329 00000 n
0000006434 00000 n
0000006539 00000 n
0000006644 00000 n
0000006749 00000 n
0000006854 00000 n
0000006959 00000 n
0000007064 00000 n
0000007169 00000 n
0000007274 00000 n
0000007377 00000 n
0000007480 00000 n
0000007584 00000 n
0000007689 00000 n
0000007794 00000 n
0000007899 00000 n
0000008004 00000 n
0000008109 00000 n
0000008214 00000 n
0000008319 00000 n
0000008424 00000 n
0000008529 00000 n
0000008634 00000 n
0000008739 00000 n
0000008844 00000 n
0000008949 00000 n
0000009054 00000 n
0000009159 00000 n
0000009264 00000 n
0000009369 00000 n
0000009474 00000 n
0000009579 00000 n
0000009684 00000 n
0000009789 00000 n
0000009894 00000 n
0000009999 00000 n
0000010105 00000 n
0000010211 00000 n
0000010317 00000 n
0000010423 00000 n
0000010529 00000 n
0000010635 00000 n
0000010741 00000 n
0000010847 00000 n
0000010953 00000 n
0000011059 00000 n
0000011165 00000 n
0000011271 00000 n
0000011377 00000 n
0000011483 00000 n
0000011589 00000 n
0000011695 00000 n
0000011801 00000 n
0000011907 00000 n
0000012013 00000 n
0000012119 00000 n
0000012225 00000 n
0000012331 00000 n
0000012437 00000 n
0000012543 00000 n
0000012649 00000 n
0000012339 00000 n
0000012445 00000 n
0000012551 00000 n
0000012657 00000 n
0000012763 00000 n
0000012869 00000 n
0000012975 00000 n
0000013081 00000 n
0000013187 00000 n
0000013293 00000 n
0000013399 00000 n
0000013505 00000 n
0000013611 00000 n
0000013717 00000 n
0000013823 00000 n
0000013929 00000 n
0000014035 00000 n
0000014141 00000 n
0000014247 00000 n
0000014353 00000 n
0000014459 00000 n
0000014565 00000 n
0000014671 00000 n
0000014777 00000 n
0000014883 00000 n
0000014989 00000 n
0000015095 00000 n
0000015201 00000 n
0000015307 00000 n
0000015413 00000 n
0000015519 00000 n
0000015625 00000 n
0000015731 00000 n
0000015837 00000 n
0000015943 00000 n
0000016997 00000 n
0000017031 00000 n
0000017065 00000 n
0000017576 00000 n
0000017625 00000 n
0000017674 00000 n
0000017723 00000 n
0000017772 00000 n
0000017821 00000 n
0000017870 00000 n
0000017919 00000 n
0000017968 00000 n
0000018017 00000 n
0000018066 00000 n
0000018115 00000 n
0000018164 00000 n
0000018213 00000 n
0000018262 00000 n
0000018311 00000 n
0000018360 00000 n
0000018409 00000 n
0000018458 00000 n
0000018507 00000 n
0000018556 00000 n
0000018605 00000 n
0000018654 00000 n
0000018703 00000 n
0000018752 00000 n
0000018801 00000 n
0000018850 00000 n
0000012755 00000 n
0000012861 00000 n
0000012967 00000 n
0000013073 00000 n
0000013179 00000 n
0000013285 00000 n
0000013391 00000 n
0000013497 00000 n
0000013603 00000 n
0000013709 00000 n
0000013815 00000 n
0000013921 00000 n
0000014027 00000 n
0000014133 00000 n
0000014239 00000 n
0000014345 00000 n
0000014451 00000 n
0000014557 00000 n
0000014663 00000 n
0000014769 00000 n
0000014875 00000 n
0000014981 00000 n
0000015087 00000 n
0000015193 00000 n
0000015299 00000 n
0000015405 00000 n
0000015511 00000 n
0000015617 00000 n
0000015723 00000 n
0000015829 00000 n
0000015935 00000 n
0000016989 00000 n
0000017023 00000 n
0000017057 00000 n
0000017568 00000 n
0000017617 00000 n
0000017666 00000 n
0000017715 00000 n
0000017764 00000 n
0000017813 00000 n
0000017862 00000 n
0000017911 00000 n
0000017960 00000 n
0000018009 00000 n
0000018058 00000 n
0000018107 00000 n
0000018156 00000 n
0000018205 00000 n
0000018254 00000 n
0000018303 00000 n
0000018352 00000 n
0000018401 00000 n
0000018450 00000 n
0000018499 00000 n
0000018548 00000 n
0000018597 00000 n
0000018646 00000 n
0000018695 00000 n
0000018744 00000 n
0000018793 00000 n
0000018842 00000 n
0000018891 00000 n
0000018940 00000 n
0000018989 00000 n
0000019038 00000 n
0000019087 00000 n
0000018948 00000 n
0000018997 00000 n
0000019046 00000 n
0000019095 00000 n
0000019144 00000 n
0000019193 00000 n
0000019242 00000 n
0000019291 00000 n
0000019340 00000 n
0000019389 00000 n
0000019618 00000 n
0000019770 00000 n
0000026151 00000 n
0000026173 00000 n
0000026286 00000 n
0000026388 00000 n
0000019136 00000 n
0000019185 00000 n
0000019234 00000 n
0000019283 00000 n
0000019332 00000 n
0000019381 00000 n
0000019610 00000 n
0000019762 00000 n
0000026131 00000 n
0000026153 00000 n
0000026266 00000 n
0000026368 00000 n
0000026388 00000 n
0000026519 00000 n
0000027280 00000 n
0000027301 00000 n
0000027441 00000 n
0000026539 00000 n
0000027300 00000 n
0000027321 00000 n
0000027461 00000 n
0000027828 00000 n
0000027849 00000 n
0000027989 00000 n
0000028903 00000 n
0000028924 00000 n
0000029064 00000 n
0000030502 00000 n
0000027803 00000 n
0000027824 00000 n
0000027964 00000 n
0000028878 00000 n
0000028899 00000 n
0000029039 00000 n
0000030469 00000 n
0000030491 00000 n
0000030631 00000 n
0000031517 00000 n
0000031538 00000 n
0000031651 00000 n
0000031838 00000 n
0000031577 00000 n
0000031859 00000 n
0000031999 00000 n
+2 -2
Ver Arquivo
@@ -2,9 +2,9 @@
<HEAD>
<META NAME="Description" CONTENT="Common UNIX Printing System Software Users Manual">
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-1999, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-SUM-1.0.0b1">
<META NAME="DOCNUMBER" CONTENT="CUPS-SUM-1.0.0">
<META NAME="Author" CONTENT="Easy Software Products">
<TITLE>DRAFT - CUPS Software Users Manual</TITLE>
<TITLE>CUPS Software Users Manual</TITLE>
</HEAD>
<BODY>
-149
Ver Arquivo
@@ -1,149 +0,0 @@
<HTML>
<HEAD>
<TITLE>CUPS Software Version Description</TITLE>
<META NAME="AUTHOR" CONTENT="Easy Software Products">
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-1999, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-SVD-1.0.0">
</HEAD>
<BODY>
<CENTER><A HREF=#contents><IMG SRC="images/cups-large.gif" BORDER=0><BR>
<H1>CUPS Software Version Description</H1></A><BR>
CUPS-SVD-1.0.0<BR>
Easy Software Products<BR>
Copyright 1997-1999, 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 Additions</A></B>
<BR>
<BR><B><A HREF=#4>4 Changes</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>
This software version description document provides release
information for the Common UNIX Printing System (&quot;CUPS&quot;) Version 1.0.
<H2><A NAME=1_2>1.2 System Overview</A></H2>
The Common UNIX Printing System provides a portable printing layer for
UNIX&reg; operating systems. It has been developed by Easy Software
Products to promote a standard printing solution for all UNIX vendors
and users. CUPS provides the System V and Berkeley command-line
interfaces.
<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 4.03) and an image file RIP that
can be used to support non-PostScript printers. </P>
<H2><A NAME=1_3>1.3 Document Overview</A></H2>
<P>This Something Something Something document is organized into the
following sections:</P>
<UL>
<LI>1 - Scope</LI>
<LI>2 - References</LI>
<LI>3 - Additions</LI>
<LI>4 - Changes</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>
The following CUPS documentation is referenced by this document:
<UL>
<LI>CUPS-CMP-1.0: CUPS Configuration Management Plan </LI>
<LI>CUPS-IDD-1.0: CUPS System Interface Design Description </LI>
<LI>CUPS-SAM-1.0.x: CUPS Software Administrators Manual </LI>
<LI>CUPS-SDD-1.0: CUPS Software Design Description </LI>
<LI>CUPS-SPM-1.0: CUPS Software Programming Manual </LI>
<LI>CUPS-SSR-1.0: CUPS Software Security Report </LI>
<LI>CUPS-STP-1.0: CUPS Software Test Plan </LI>
<LI>CUPS-SUM-1.0.x: CUPS Software Users Manual </LI>
<LI>CUPS-SVD-1.0.x: CUPS Software Version Description </LI>
</UL>
<H2><A NAME=2_2>2.2 Other Documents</A></H2>
The following non-CUPS documents are referenced by this document:
<UL>
<LI>IEEE 1387.4, System Administration: Printing (draft) </LI>
<LI>IPP/1.0: Additional Optional Operations - Set 1 </LI>
<LI>IPP/1.0: Encoding and Transport </LI>
<LI>IPP/1.0: Implementers Guide </LI>
<LI>IPP/1.0: Model and Semantics </LI>
<LI>RFC 1179, Line Printer Daemon Protocol </LI>
</UL>
<H1><A NAME=3>3 Additions</A></H1>
Since this is the first release of CUPS, there are no additions to
report.
<H1><A NAME=4>4 Changes</A></H1>
Since this is the first release of CUPS, there are no changes to
report.
<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 Printer 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>PCL </DT>
<DD>Page Control Language </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.
-167
Ver Arquivo
@@ -1,167 +0,0 @@
<HTML>
<HEAD>
<META NAME="COPYRIGHT" CONTENT="Copyright 1997-1999, All Rights Reserved">
<META NAME="DOCNUMBER" CONTENT="CUPS-SVD-1.0.0">
<META NAME="Author" CONTENT="Easy Software Products">
<TITLE>CUPS Software Version Description</TITLE>
</HEAD>
<BODY>
<H1>Scope</H1>
<H2>Identification</H2>
This software version description document provides release information for the
Common UNIX Printing System ("CUPS") Version 1.0.
<H2>System Overview</H2>
The Common UNIX Printing System provides a portable printing layer for
UNIX&reg; operating systems. It has been developed by Easy Software
Products to promote a standard printing solution for all UNIX vendors
and users. CUPS provides the System V and Berkeley command-line interfaces.
<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>CUPS adds network printer browsing and PostScript Printer
Description (&quot;PPD&quot;)-based printing options to support real
world applications under UNIX.
<P>CUPS also includes a customized version of GNU GhostScript
(currently based off GNU GhostScript 4.03) and an image file RIP that
can be used to support non-PostScript printers.
<H2>Document Overview</H2>
<P>This Something Something Something document is organized into the following
sections:</P>
<UL>
<LI>1 - Scope</LI>
<LI>2 - References</LI>
<LI>3 - Additions</LI>
<LI>4 - Changes</LI>
<LI>A - Glossary</LI>
</UL>
<H1>References</H1>
<H2>CUPS Documentation</H2>
The following CUPS documentation is referenced by this document:
<UL>
<LI>CUPS-CMP-1.0: CUPS Configuration Management Plan
<LI>CUPS-IDD-1.0: CUPS System Interface Design Description
<LI>CUPS-SAM-1.0.x: CUPS Software Administrators Manual
<LI>CUPS-SDD-1.0: CUPS Software Design Description
<LI>CUPS-SPM-1.0: CUPS Software Programming Manual
<LI>CUPS-SSR-1.0: CUPS Software Security Report
<LI>CUPS-STP-1.0: CUPS Software Test Plan
<LI>CUPS-SUM-1.0.x: CUPS Software Users Manual
<LI>CUPS-SVD-1.0.x: CUPS Software Version Description
</UL>
<H2>Other Documents</H2>
The following non-CUPS documents are referenced by this document:
<UL>
<LI>IEEE 1387.4, System Administration: Printing (draft)
<LI>IPP/1.0: Additional Optional Operations - Set 1
<LI>IPP/1.0: Encoding and Transport
<LI>IPP/1.0: Implementers Guide
<LI>IPP/1.0: Model and Semantics
<LI>RFC 1179, Line Printer Daemon Protocol
</UL>
<H1>Additions</H1>
Since this is the first release of CUPS, there are no additions to report.
<H1>Changes</H1>
Since this is the first release of CUPS, there are no changes to report.
<H1 TYPE=A VALUE=1>Glossary</H1>
<H2>Terms</H2>
<DL>
<DT>C
<DD>A computer language.
<DT>parallel
<DD>Sending or receiving data more than 1 bit at a time.
<DT>pipe
<DD>A one-way communications channel between two programs.
<DT>serial
<DD>Sending or receiving data 1 bit at a time.
<DT>socket
<DD>A two-way network communications channel.
</DL>
<H2>Acronyms</H2>
<DL>
<DT>ASCII
<DD>American Standard Code for Information Interchange
<DT>CUPS
<DD>Common UNIX Printing System
<DT>ESC/P
<DD>EPSON Standard Code for Printers
<DT>FTP
<DD>File Transfer Protocol
<DT>HP-GL
<DD>Hewlett-Packard Graphics Language
<DT>HP-PCL
<DD>Hewlett-Packard Printer Control Language
<DT>HP-PJL
<DD>Hewlett-Packard Printer Job Language
<DT>IETF
<DD>Internet Engineering Task Force
<DT>IPP
<DD>Internet Printing Protocol
<DT>ISO
<DD>International Standards Organization
<DT>LPD
<DD>Line Printer Daemon
<DT>MIME
<DD>Multimedia Internet Mail Exchange
<DT>PCL
<DD>Page Control Language
<DT>PPD
<DD>PostScript Printer Description
<DT>SMB
<DD>Server Message Block
<DT>TFTP
<DD>Trivial File Transfer Protocol
</DL>
</BODY>
</HTML>
+4 -4
Ver Arquivo
@@ -57,8 +57,8 @@ install:
$(CP) $(TARGETS) $(SERVERROOT)/filter
-$(MKDIR) $(LIBDIR)
$(CP) $(LIBCUPSIMAGE) $(LIBDIR)
if test $(LIBCUPSIMAGE) != "libcupsimage.a"; then \
$(LN) $(LIBCUPSIMAGE) `basename $(LIBCUPSIMAGE) .1` \
-if test $(LIBCUPSIMAGE) != "libcupsimage.a"; then \
$(LN) $(LIBCUPSIMAGE) `basename $(LIBCUPSIMAGE) .1`; \
fi
#
@@ -76,8 +76,8 @@ $(HPGLOBJS): hpgltops.h
libcupsimage.so.1 libcupsimage.sl.1: $(IMAGEOBJS) ../Makedefs
echo Linking $@...
$(DSO) $@ $(IMAGEOBJS) $(DSOLIBS)
$(LN) $@ `basename $@ .1`
$(DSO) $@ $(IMAGEOBJS) $(DSOLIBS) -lm
-$(LN) $@ `basename $@ .1`
#
# libcupsimage.a
+8 -3
Ver Arquivo
@@ -77,6 +77,9 @@ SetCommonOptions(int num_options, /* I - Number of options */
PageBottom = pagesize->bottom;
PageLeft = pagesize->left;
PageRight = pagesize->right;
fprintf(stderr, "DEBUG: Page = %.0fx%.0f; %.0f,%.0f to %.0f,%.0f\n",
PageWidth, PageLength, PageLeft, PageBottom, PageRight, PageTop);
}
if (ppd != NULL)
@@ -236,9 +239,11 @@ SetCommonOptions(int num_options, /* I - Number of options */
if ((val = cupsGetOption("sides", num_options, options)) != NULL &&
strncmp(val, "two-", 4) == 0)
Duplex = 1;
if ((val = cupsGetOption("Duplex", num_options, options)) != NULL &&
strcmp(val, "DuplexNoTumble") == 0)
else if ((val = cupsGetOption("Duplex", num_options, options)) != NULL &&
strcmp(val, "DuplexNoTumble") == 0)
Duplex = 1;
else if (ppdIsMarked(ppd, "Duplex", "DuplexNoTumble") ||
ppdIsMarked(ppd, "Duplex", "DuplexTumble"))
Duplex = 1;
return (ppd);
+2 -2
Ver Arquivo
@@ -80,9 +80,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 ((prolog = fopen(CUPS_DATADIR "/HPGLprolog", "r")) == NULL)
if ((prolog = fopen(CUPS_DATADIR "/data/HPGLprolog", "r")) == NULL)
{
perror("ERROR: Unable to open HPGL prolog \"" CUPS_DATADIR "/HPGLprolog\" for reading");
perror("ERROR: Unable to open HPGL prolog \"" CUPS_DATADIR "/data/HPGLprolog\" for reading");
exit(1);
}
-130
Ver Arquivo
@@ -1,130 +0,0 @@
# Microsoft Developer Studio Project File - Name="hpgltops" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=hpgltops - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "hpgltops.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "hpgltops.mak" CFG="hpgltops - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "hpgltops - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "hpgltops - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "hpgltops - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 ../cups/cups.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"hpgltops.exe"
!ELSEIF "$(CFG)" == "hpgltops - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "hpgltops___Win32_Debug"
# PROP BASE Intermediate_Dir "hpgltops___Win32_Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 ../cups/cupsd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"hpgltopsd.exe" /pdbtype:sept
!ENDIF
# Begin Target
# Name "hpgltops - Win32 Release"
# Name "hpgltops - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=".\hpgl-attr.c"
# End Source File
# Begin Source File
SOURCE=".\hpgl-char.c"
# End Source File
# Begin Source File
SOURCE=".\hpgl-config.c"
# End Source File
# Begin Source File
SOURCE=".\hpgl-input.c"
# End Source File
# Begin Source File
SOURCE=".\hpgl-main.c"
# End Source File
# Begin Source File
SOURCE=".\hpgl-polygon.c"
# End Source File
# Begin Source File
SOURCE=".\hpgl-prolog.c"
# End Source File
# Begin Source File
SOURCE=".\hpgl-vector.c"
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=.\hpgltops.h
# End Source File
# End Group
# End Target
# End Project
+38 -37
Ver Arquivo
@@ -84,9 +84,9 @@ static void zshear(float [3][3], float, float);
*/
void
ImageWhiteToWhite(ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageWhiteToWhite(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
{
if (ImageHaveProfile)
while (count > 0)
@@ -104,9 +104,9 @@ ImageWhiteToWhite(ib_t *in, /* I - Input pixels */
*/
void
ImageWhiteToRGB(ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageWhiteToRGB(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
{
if (ImageHaveProfile)
while (count > 0)
@@ -133,9 +133,9 @@ ImageWhiteToRGB(ib_t *in, /* I - Input pixels */
*/
void
ImageWhiteToBlack(ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageWhiteToBlack(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
{
if (ImageHaveProfile)
while (count > 0)
@@ -157,9 +157,9 @@ ImageWhiteToBlack(ib_t *in, /* I - Input pixels */
*/
void
ImageWhiteToCMY(ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageWhiteToCMY(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
{
if (ImageHaveProfile)
while (count > 0)
@@ -186,9 +186,9 @@ ImageWhiteToCMY(ib_t *in, /* I - Input pixels */
*/
void
ImageWhiteToCMYK(ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageWhiteToCMYK(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
{
if (ImageHaveProfile)
while (count > 0)
@@ -216,9 +216,9 @@ ImageWhiteToCMYK(ib_t *in, /* I - Input pixels */
*/
void
ImageRGBToBlack(ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageRGBToBlack(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
{
if (ImageHaveProfile)
while (count > 0)
@@ -242,9 +242,9 @@ ImageRGBToBlack(ib_t *in, /* I - Input pixels */
*/
void
ImageRGBToCMY(ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageRGBToCMY(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
{
int c, m, y, k; /* CMYK values */
int cc, cm, cy; /* Calibrated CMY values */
@@ -316,11 +316,12 @@ ImageRGBToCMY(ib_t *in, /* I - Input pixels */
*/
void
ImageRGBToCMYK(ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageRGBToCMYK(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count)/* I - Number of pixels */
{
int c, m, y, k, /* CMYK values */
km, /* Maximum K value */
diff, /* Color differences */
divk; /* Color divisor */
int cc, cm, cy; /* Calibrated CMY values */
@@ -334,8 +335,8 @@ ImageRGBToCMYK(ib_t *in, /* I - Input pixels */
y = 255 - *in++;
k = min(c, min(m, y));
diff = 255 - (max(c, max(m, y)) - k);
k = k * diff / 255;
if ((km = max(c, max(m, y))) > k)
k = k * k / km;
if (k == 255)
c = m = y = 0;
@@ -385,7 +386,7 @@ ImageRGBToCMYK(ib_t *in, /* I - Input pixels */
else if (cy > 255)
*out++ = ImageDensity[255];
else
*out++ = cy;
*out++ = ImageDensity[cy];
*out++ = ImageDensity[k];
@@ -433,9 +434,9 @@ ImageRGBToCMYK(ib_t *in, /* I - Input pixels */
*/
void
ImageRGBToWhite(ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageRGBToWhite(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
{
if (ImageHaveProfile)
while (count > 0)
@@ -459,9 +460,9 @@ ImageRGBToWhite(ib_t *in, /* I - Input pixels */
*/
void
ImageRGBToRGB(ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageRGBToRGB(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
{
int c, m, y, k; /* CMYK values */
int cr, cg, cb; /* Calibrated RGB values */
@@ -521,9 +522,9 @@ ImageRGBToRGB(ib_t *in, /* I - Input pixels */
*/
void
ImageLut(ib_t *pixels, /* I - Input/output pixels */
int count, /* I - Number of pixels/bytes to adjust */
ib_t *lut) /* I - Lookup table */
ImageLut(ib_t *pixels, /* IO - Input/output pixels */
int count, /* I - Number of pixels/bytes to adjust */
const ib_t *lut) /* I - Lookup table */
{
while (count > 0)
{
@@ -539,7 +540,7 @@ ImageLut(ib_t *pixels, /* I - Input/output pixels */
*/
void
ImageRGBAdjust(ib_t *pixels, /* I - Input/output pixels */
ImageRGBAdjust(ib_t *pixels, /* IO - Input/output pixels */
int count, /* I - Number of pixels to adjust */
int saturation, /* I - Color saturation (%) */
int hue) /* I - Color hue (degrees) */
+14 -14
Ver Arquivo
@@ -72,14 +72,14 @@ static int gif_read_image(FILE *fp, image_t *img, gif_cmap_t cmap,
* 'ImageReadGIF()' - Read a GIF image file.
*/
int /* O - Read status */
ImageReadGIF(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation,/* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
ib_t *lut) /* I - Lookup table for gamma/brightness */
int /* O - Read status */
ImageReadGIF(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation, /* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
const ib_t *lut) /* I - Lookup table for gamma/brightness */
{
unsigned char buf[1024]; /* Input buffer */
gif_cmap_t cmap; /* Colormap */
@@ -236,13 +236,13 @@ ImageReadGIF(image_t *img, /* IO - Image */
* 'gif_read_cmap()' - Read the colormap from a GIF file...
*/
static int
gif_read_cmap(FILE *fp,
int ncolors,
gif_cmap_t cmap,
int *gray)
static int /* O - -1 on error, 0 on success */
gif_read_cmap(FILE *fp, /* I - File to read from */
int ncolors, /* I - Number of colors in file */
gif_cmap_t cmap, /* O - Colormap information */
int *gray) /* IO - Is the image grayscale? */
{
int i;
int i; /* Looping var */
/*
+7 -7
Ver Arquivo
@@ -41,13 +41,13 @@
*/
int /* O - Read status */
ImageReadJPEG(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation, /* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
ib_t *lut) /* I - Lookup table for gamma/brightness */
ImageReadJPEG(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation, /* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
const ib_t *lut) /* I - Lookup table for gamma/brightness */
{
struct jpeg_decompress_struct cinfo; /* Decompressor info */
struct jpeg_error_mgr jerr; /* Error handler info */
+7 -7
Ver Arquivo
@@ -44,13 +44,13 @@
*/
int /* O - Read status */
ImageReadPhotoCD(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation, /* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
ib_t *lut) /* I - Lookup table for gamma/brightness */
ImageReadPhotoCD(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation, /* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
const ib_t *lut) /* I - Lookup table for gamma/brightness */
{
int x, y; /* Looping vars */
int xdir, /* X direction */
+8 -8
Ver Arquivo
@@ -40,14 +40,14 @@
* 'ImageReadPNG()' - Read a PNG image file.
*/
int /* O - Read status */
ImageReadPNG(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation,/* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
ib_t *lut) /* I - Lookup table for gamma/brightness */
int /* O - Read status */
ImageReadPNG(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation, /* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
const ib_t *lut) /* I - Lookup table for gamma/brightness */
{
int y; /* Looping var */
png_structp pp; /* PNG read pointer */
+8 -8
Ver Arquivo
@@ -38,14 +38,14 @@
* 'ImageReadPNM()' - Read a PNM image file.
*/
int /* O - Read status */
ImageReadPNM(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation,/* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
ib_t *lut) /* I - Lookup table for gamma/brightness */
int /* O - Read status */
ImageReadPNM(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation, /* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
const ib_t *lut) /* I - Lookup table for gamma/brightness */
{
int x, y; /* Looping vars */
int bpp; /* Bytes per pixel */
+8 -8
Ver Arquivo
@@ -38,14 +38,14 @@
* 'ImageReadSGI()' - Read a SGI image file.
*/
int /* O - Read status */
ImageReadSGI(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation,/* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
ib_t *lut) /* I - Lookup table for gamma/brightness */
int /* O - Read status */
ImageReadSGI(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation, /* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
const ib_t *lut) /* I - Lookup table for gamma/brightness */
{
int i, y; /* Looping vars */
int bpp; /* Bytes per pixel */
+7 -7
Ver Arquivo
@@ -75,13 +75,13 @@ static unsigned read_unsigned(FILE *fp);
*/
int /* O - Read status */
ImageReadSunRaster(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation, /* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
ib_t *lut) /* I - Lookup table for gamma/brightness */
ImageReadSunRaster(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary,/* I - Secondary choice for colorspace */
int saturation,/* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
const ib_t *lut) /* I - Lookup table for gamma/brightness */
{
int i, x, y,
bpp, /* Bytes per pixel */
+8 -10
Ver Arquivo
@@ -42,13 +42,13 @@
*/
int /* O - Read status */
ImageReadTIFF(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation, /* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
ib_t *lut) /* I - Lookup table for gamma/brightness */
ImageReadTIFF(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation, /* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
const ib_t *lut) /* I - Lookup table for gamma/brightness */
{
TIFF *tif; /* TIFF file */
uint32 width, height; /* Size of image */
@@ -89,9 +89,7 @@ ImageReadTIFF(image_t *img, /* IO - Image */
* Open the TIFF file and get the required parameters...
*/
#ifdef __hpux
lseek(fileno(fp), 0, SEEK_SET); /* Work around "feature" in HP-UX stdio */
#endif /* __hpux */
lseek(fileno(fp), 0, SEEK_SET); /* Work around "feature" in some stdio's */
if ((tif = TIFFFdOpen(fileno(fp), "", "r")) == NULL)
{
+134 -120
Ver Arquivo
@@ -67,12 +67,12 @@ static void flush_tile(image_t *img);
*/
image_t * /* O - New image */
ImageOpen(char *filename, /* I - Filename of image */
int primary, /* I - Primary colorspace needed */
int secondary, /* I - Secondary colorspace if primary no good */
int saturation, /* I - Color saturation level */
int hue, /* I - Color hue adjustment */
ib_t *lut) /* I - RGB gamma/brightness LUT */
ImageOpen(char *filename, /* I - Filename of image */
int primary, /* I - Primary colorspace needed */
int secondary, /* I - Secondary colorspace if primary no good */
int saturation,/* I - Color saturation level */
int hue, /* I - Color hue adjustment */
const ib_t *lut) /* I - RGB gamma/brightness LUT */
{
FILE *fp; /* File pointer */
unsigned char header[16], /* First 16 bytes of file */
@@ -178,33 +178,46 @@ ImageClose(image_t *img) /* I - Image to close */
*next; /* Next cached tile */
/*
* Free the image cache...
*/
for (current = img->first; current != NULL; current = next)
{
next = current->next;
free(current);
}
/*
* Wipe the tile cache file (if any)...
*/
if (img->cachefile != NULL)
{
fprintf(stderr, "DEBUG: Closing and removing swap file \"%s\"...\n",
img->cachename);
fclose(img->cachefile);
unlink(img->cachename);
}
/*
* Free the image cache...
*/
fputs("DEBUG: Freeing memory...\n", stderr);
for (current = img->first; current != NULL; current = next)
{
fprintf(stderr, "DEBUG: Freeing cache (%08lx, next = %08lx)...\n",
current, next);
next = current->next;
free(current);
}
/*
* Free the rest of memory...
*/
if (img->tiles != NULL)
{
fprintf(stderr, "DEBUG: Freeing tiles (%08lx)...\n", img->tiles[0]);
free(img->tiles[0]);
fprintf(stderr, "DEBUG: Freeing tile pointers (%08lx)...\n", img->tiles);
free(img->tiles);
}
@@ -216,7 +229,7 @@ ImageClose(image_t *img) /* I - Image to close */
* 'ImageSetMaxTiles()' - Set the maximum number of tiles to cache.
*
* If the "max_tiles" argument is 0 then the maximum number of tiles is
* computed from the image size.
* computed from the image size or the RIP_CACHE environment variable.
*/
void
@@ -273,9 +286,7 @@ ImageSetMaxTiles(image_t *img, /* I - Image to set */
img->max_ics = max_tiles;
#ifdef DEBUG
fprintf(stderr, "ImageSetMaxTiles: max_ics=%d...\n", img->max_ics);
#endif /* DEBUG */
fprintf(stderr, "DEBUG: max_ics=%d...\n", img->max_ics);
}
@@ -284,24 +295,23 @@ ImageSetMaxTiles(image_t *img, /* I - Image to set */
*/
void
ImageSetProfile(float density, /* I - Ink/marker density */
ImageSetProfile(float d, /* I - Ink/marker density */
float g, /* I - Ink/marker gamma */
float matrix[3][3]) /* I - Color transform matrix */
{
int i, j, k; /* Looping vars */
float g; /* Gamma correction */
int i, j, k; /* Looping vars */
float m; /* Current matrix value */
int *im; /* Pointer into ImageMatrix */
ImageHaveProfile = 1;
for (i = 0; i < 3; i ++)
for (i = 0, im = ImageMatrix[0][0]; i < 3; i ++)
for (j = 0; j < 3; j ++)
for (k = 0; k < 256; k ++)
ImageMatrix[i][j][k] = (int)(k * matrix[i][j] + 0.5);
for (k = 0, m = matrix[i][j]; k < 256; k ++)
*im++ = (int)(k * m + 0.5);
g = 1.0 / density;
for (k = 0; k < 256; k ++)
ImageDensity[k] = 255.0 * density * pow((float)k / 255.0, g) + 0.5;
for (k = 0, im = ImageDensity; k < 256; k ++)
*im++ = 255.0 * d * pow((float)k / 255.0, g) + 0.5;
}
@@ -309,17 +319,17 @@ ImageSetProfile(float density, /* I - Ink/marker density */
* 'ImageGetCol()' - Get a column of pixels from an image.
*/
int
ImageGetCol(image_t *img,
int x,
int y,
int height,
ib_t *pixels)
int /* O - -1 on error, 0 on success */
ImageGetCol(image_t *img, /* I - Image */
int x, /* I - Column */
int y, /* I - Start row */
int height, /* I - Column height */
ib_t *pixels) /* O - Pixel data */
{
int bpp,
twidth,
count;
ib_t *ib;
int bpp, /* Bytes per pixel */
twidth, /* Tile width */
count; /* Number of pixels to get */
const ib_t *ib; /* Pointer into tile */
if (img == NULL || x < 0 || x >= img->xsize || y >= img->ysize)
@@ -376,16 +386,16 @@ ImageGetCol(image_t *img,
* 'ImageGetRow()' - Get a row of pixels from an image.
*/
int
ImageGetRow(image_t *img,
int x,
int y,
int width,
ib_t *pixels)
int /* O - -1 on error, 0 on success */
ImageGetRow(image_t *img, /* I - Image */
int x, /* I - Start column */
int y, /* I - Row */
int width, /* I - Width of row */
ib_t *pixels) /* O - Pixel data */
{
int bpp,
count;
ib_t *ib;
int bpp, /* Bytes per pixel */
count; /* Number of pixels to get */
const ib_t *ib; /* Pointer to pixels */
if (img == NULL || y < 0 || y >= img->ysize || x >= img->xsize)
@@ -429,19 +439,19 @@ ImageGetRow(image_t *img,
* 'ImagePutCol()' - Put a column of pixels to an image.
*/
int
ImagePutCol(image_t *img,
int x,
int y,
int height,
ib_t *pixels)
int /* O - -1 on error, 0 on success */
ImagePutCol(image_t *img, /* I - Image */
int x, /* I - Column */
int y, /* I - Start row */
int height, /* I - Column height */
const ib_t *pixels) /* I - Pixels to put */
{
int bpp,
twidth,
count;
int tilex,
tiley;
ib_t *ib;
int bpp, /* Bytes per pixel */
twidth, /* Width of tile */
count; /* Number of pixels to put */
int tilex, /* Column within tile */
tiley; /* Row within tile */
ib_t *ib; /* Pointer to pixels in tile */
if (img == NULL || x < 0 || x >= img->xsize || y >= img->ysize)
@@ -503,18 +513,18 @@ ImagePutCol(image_t *img,
* 'ImagePutRow()' - Put a row of pixels to an image.
*/
int
ImagePutRow(image_t *img,
int x,
int y,
int width,
ib_t *pixels)
int /* O - -1 on error, 0 on success */
ImagePutRow(image_t *img, /* I - Image */
int x, /* I - Start column */
int y, /* I - Row */
int width, /* I - Row width */
const ib_t *pixels) /* I - Pixel data */
{
int bpp,
count;
int tilex,
tiley;
ib_t *ib;
int bpp, /* Bytes per pixel */
count; /* Number of pixels to put */
int tilex, /* Column within tile */
tiley; /* Row within tile */
ib_t *ib; /* Pointer to pixels in tile */
if (img == NULL || y < 0 || y >= img->ysize || x >= img->xsize)
@@ -563,28 +573,33 @@ ImagePutRow(image_t *img,
* 'get_tile()' - Get a cached tile.
*/
static ib_t *
get_tile(image_t *img,
int x,
int y)
static ib_t * /* O - Pointer to tile or NULL */
get_tile(image_t *img, /* I - Image */
int x, /* I - Column in image */
int y) /* I - Row in image */
{
int bpp,
tilex,
tiley,
xtiles,
ytiles;
ic_t *ic;
itile_t *tile;
int bpp, /* Bytes per pixel */
tilex, /* Column within tile */
tiley, /* Row within tile */
xtiles, /* Number of tiles horizontally */
ytiles; /* Number of tiles vertically */
ic_t *ic; /* Cache pointer */
itile_t *tile; /* Tile pointer */
if (x >= img->xsize || y >= img->ysize)
{
fprintf(stderr, "ERROR: Internal image RIP error - %d,%d is outside of %dx%d\n",
x, y, img->xsize, img->ysize);
return (NULL);
}
if (img->tiles == NULL)
{
xtiles = (img->xsize + TILE_SIZE - 1) / TILE_SIZE;
ytiles = (img->ysize + TILE_SIZE - 1) / TILE_SIZE;
#ifdef DEBUG
fprintf(stderr, "get_tile: Creating tile array (%dx%d)\n", xtiles, ytiles);
#endif /* DEBUG */
fprintf(stderr, "DEBUG: Creating tile array (%dx%d)\n", xtiles, ytiles);
img->tiles = calloc(sizeof(itile_t *), ytiles);
tile = calloc(sizeof(itile_t), xtiles * ytiles);
@@ -609,20 +624,18 @@ get_tile(image_t *img,
{
if (img->num_ics < img->max_ics)
{
#ifdef DEBUG
fputs("get_tile: Allocating new cache tile...\n", stderr);
#endif /* DEBUG */
ic = calloc(sizeof(ic_t) + bpp * TILE_SIZE * TILE_SIZE, 1);
ic->pixels = ((ib_t *)ic) + sizeof(ic_t);
img->num_ics ++;
fprintf(stderr, "DEBUG: Allocated cache tile %d (%08lx)...\n",
img->num_ics, ic);
}
else
{
#ifdef DEBUG
fputs("get_tile: Flushing old cache tile...\n", stderr);
#endif /* DEBUG */
fprintf(stderr, "DEBUG: Flushing old cache tile (%08lx)...\n",
img->first);
flush_tile(img);
ic = img->first;
@@ -633,10 +646,8 @@ get_tile(image_t *img,
if (tile->pos >= 0)
{
#ifdef DEBUG
fprintf(stderr, "get_tile: loading cache tile from file position %d...\n",
fprintf(stderr, "DEBUG: Loading cache tile from file position %d...\n",
tile->pos);
#endif /* DEBUG */
if (ftell(img->cachefile) != tile->pos)
if (fseek(img->cachefile, tile->pos, SEEK_SET))
@@ -646,9 +657,7 @@ get_tile(image_t *img,
}
else
{
#ifdef DEBUG
fputs("get_tile: Clearing cache tile...\n", stderr);
#endif /* DEBUG */
fputs("DEBUG: Clearing cache tile...\n", stderr);
memset(ic->pixels, 0, bpp * TILE_SIZE * TILE_SIZE);
}
@@ -679,17 +688,13 @@ get_tile(image_t *img,
*/
static void
flush_tile(image_t *img)
flush_tile(image_t *img) /* I - Image */
{
int bpp;
itile_t *tile;
int bpp; /* Bytes per pixel */
itile_t *tile; /* Pointer to tile */
#ifdef DEBUG
fprintf(stderr, "flush_tile(%08x)...\n", img);
#endif /* DEBUG */
bpp = ImageGetDepth(img);
tile = img->first->tile;
@@ -701,16 +706,15 @@ flush_tile(image_t *img)
if (img->cachefile == NULL)
{
tmpnam(img->cachename);
cupsTempFile(img->cachename, sizeof(img->cachename));
#ifdef DEBUG
fprintf(stderr, "flush_tile: Creating cache file %s...\n", img->cachename);
#endif /* DEBUG */
fprintf(stderr, "DEBUG: Creating swap file \"%s\"...\n", img->cachename);
if ((img->cachefile = fopen(img->cachename, "wb+")) == NULL)
{
fprintf(stderr, "flush_tile: Unable to create swap file - %s\n",
strerror(errno));
perror("ERROR: Unable to create image swap file");
tile->ic = NULL;
tile->dirty = 0;
return;
}
}
@@ -719,22 +723,32 @@ flush_tile(image_t *img)
{
if (ftell(img->cachefile) != tile->pos)
if (fseek(img->cachefile, tile->pos, SEEK_SET))
perror("flush_tile:");
{
perror("ERROR: Unable to seek in swap file");
tile->ic = NULL;
tile->dirty = 0;
return;
}
}
else
{
if (fseek(img->cachefile, 0, SEEK_END))
perror("flush_tile:");
{
perror("ERROR: Unable to append to swap file");
tile->ic = NULL;
tile->dirty = 0;
return;
}
tile->pos = ftell(img->cachefile);
}
#ifdef DEBUG
fprintf(stderr, "flush_tile: Wrote tile cache at position %d...\n",
tile->pos);
#endif /* DEBUG */
fwrite(tile->ic->pixels, bpp, TILE_SIZE * TILE_SIZE, img->cachefile);
if (fwrite(tile->ic->pixels, bpp, TILE_SIZE * TILE_SIZE, img->cachefile) < 1)
perror("ERROR: Unable to write tile to swap file");
else
fprintf(stderr, "DEBUG: Wrote tile at position %d...\n", tile->pos);
tile->ic = NULL;
tile->dirty = 0;
}
+25 -23
Ver Arquivo
@@ -153,57 +153,59 @@ typedef struct
*/
extern image_t *ImageOpen(char *filename, int primary, int secondary,
int saturation, int hue, ib_t *lut);
int saturation, int hue, const ib_t *lut);
extern void ImageClose(image_t *img);
extern void ImageSetMaxTiles(image_t *img, int max_tiles);
extern void ImageSetProfile(float density, float matrix[3][3]);
extern void ImageSetProfile(float d, float g, float matrix[3][3]);
#define ImageGetDepth(img) ((img)->colorspace < 0 ? -(img)->colorspace : (img)->colorspace)
extern int ImageGetCol(image_t *img, int x, int y, int height, ib_t *pixels);
extern int ImageGetRow(image_t *img, int x, int y, int width, ib_t *pixels);
extern int ImagePutCol(image_t *img, int x, int y, int height, ib_t *pixels);
extern int ImagePutRow(image_t *img, int x, int y, int width, ib_t *pixels);
extern int ImagePutCol(image_t *img, int x, int y, int height, const ib_t *pixels);
extern int ImagePutRow(image_t *img, int x, int y, int width, const ib_t *pixels);
/*
* File formats...
*/
extern int ImageReadGIF(image_t *img, FILE *fp, int primary, int secondary,
int saturation, int hue, ib_t *lut);
int saturation, int hue, const ib_t *lut);
extern int ImageReadJPEG(image_t *img, FILE *fp, int primary, int secondary,
int saturation, int hue, ib_t *lut);
int saturation, int hue, const ib_t *lut);
extern int ImageReadPNG(image_t *img, FILE *fp, int primary, int secondary,
int saturation, int hue, ib_t *lut);
int saturation, int hue, const ib_t *lut);
extern int ImageReadPNM(image_t *img, FILE *fp, int primary, int secondary,
int saturation, int hue, ib_t *lut);
int saturation, int hue, const ib_t *lut);
extern int ImageReadPhotoCD(image_t *img, FILE *fp, int primary,
int secondary, int saturation, int hue, ib_t *lut);
int secondary, int saturation, int hue,
const ib_t *lut);
extern int ImageReadSGI(image_t *img, FILE *fp, int primary, int secondary,
int saturation, int hue, ib_t *lut);
int saturation, int hue, const ib_t *lut);
extern int ImageReadSunRaster(image_t *img, FILE *fp, int primary,
int secondary, int saturation, int hue, ib_t *lut);
int secondary, int saturation, int hue,
const ib_t *lut);
extern int ImageReadTIFF(image_t *img, FILE *fp, int primary, int secondary,
int saturation, int hue, ib_t *lut);
int saturation, int hue, const ib_t *lut);
/*
* Colorspace conversions...
*/
extern void ImageWhiteToWhite(ib_t *in, ib_t *out, int count);
extern void ImageWhiteToRGB(ib_t *in, ib_t *out, int count);
extern void ImageWhiteToBlack(ib_t *in, ib_t *out, int count);
extern void ImageWhiteToCMY(ib_t *in, ib_t *out, int count);
extern void ImageWhiteToCMYK(ib_t *in, ib_t *out, int count);
extern void ImageWhiteToWhite(const ib_t *in, ib_t *out, int count);
extern void ImageWhiteToRGB(const ib_t *in, ib_t *out, int count);
extern void ImageWhiteToBlack(const ib_t *in, ib_t *out, int count);
extern void ImageWhiteToCMY(const ib_t *in, ib_t *out, int count);
extern void ImageWhiteToCMYK(const ib_t *in, ib_t *out, int count);
extern void ImageRGBToWhite(ib_t *in, ib_t *out, int count);
extern void ImageRGBToRGB(ib_t *in, ib_t *out, int count);
extern void ImageRGBToBlack(ib_t *in, ib_t *out, int count);
extern void ImageRGBToCMY(ib_t *in, ib_t *out, int count);
extern void ImageRGBToCMYK(ib_t *in, ib_t *out, int count);
extern void ImageRGBToWhite(const ib_t *in, ib_t *out, int count);
extern void ImageRGBToRGB(const ib_t *in, ib_t *out, int count);
extern void ImageRGBToBlack(const ib_t *in, ib_t *out, int count);
extern void ImageRGBToCMY(const ib_t *in, ib_t *out, int count);
extern void ImageRGBToCMYK(const ib_t *in, ib_t *out, int count);
extern void ImageRGBAdjust(ib_t *pixels, int count, int saturation, int hue);
extern void ImageLut(ib_t *pixels, int count, ib_t *lut);
extern void ImageLut(ib_t *pixels, int count, const ib_t *lut);
/*
* Image scaling operations...
+6 -1
Ver Arquivo
@@ -91,6 +91,7 @@ main(int argc, /* I - Number of command-line arguments */
float zoom; /* Zoom facter */
int ppi; /* Pixels-per-inch */
int hue, sat; /* Hue and saturation adjustment */
int realcopies; /* Real copies being printed */
if (argc != 7)
@@ -258,8 +259,11 @@ main(int argc, /* I - Number of command-line arguments */
if (Copies > 1 && !slowcollate)
{
printf("/#copies %d def\n", Copies);
Copies = 1;
realcopies = Copies;
Copies = 1;
}
else
realcopies = 1;
/*
* Output the pages...
@@ -273,6 +277,7 @@ main(int argc, /* I - Number of command-line arguments */
for (xpage = 0; xpage < xpages; xpage ++)
for (ypage = 0; ypage < ypages; ypage ++, page ++)
{
fprintf(stderr, "PAGE: %d %d\n", page, realcopies);
fprintf(stderr, "INFO: Printing page %d...\n", page);
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
+22 -12
Ver Arquivo
@@ -296,7 +296,7 @@ main(int argc, /* I - Number of command-line arguments */
resolution = "";
/*
* Choose the appropriate colorspace and color profile...
* Choose the appropriate colorspace...
*/
switch (header.cupsColorSpace)
@@ -388,22 +388,32 @@ main(int argc, /* I - Number of command-line arguments */
if (ppd != NULL)
{
fprintf(stderr, "DEBUG: Searching for profile \"%s/%s\"...\n",
resolution, media_type);
for (i = 0, profile = ppd->profiles; i < ppd->num_profiles; i ++, profile ++)
{
fprintf(stderr, "DEBUG: \"%s/%s\" = ", profile->resolution,
profile->media_type);
if ((strcmp(profile->resolution, resolution) == 0 ||
profile->resolution[0] == '-') &&
(strcmp(profile->media_type, media_type) == 0 ||
profile->media_type[0] == '-'))
{
fputs("MATCH!\n", stderr);
break;
}
else
fputs("no.\n", stderr);
}
/*
* If we found a color profile, use it!
*/
if (i < ppd->num_profiles)
{
fputs("Setting color profile!\n", stderr);
ImageSetProfile(profile->density, profile->matrix);
}
ImageSetProfile(profile->density, profile->gamma, profile->matrix);
}
/*
@@ -481,8 +491,8 @@ main(int argc, /* I - Number of command-line arguments */
xprint = xinches / xpages;
yprint = yinches / ypages;
if ((val = cupsGetOption("Page", num_options, options)) != NULL &&
strncmp(val, "Custom.", 7) == 0)
if ((choice = ppdFindMarkedChoice(ppd, "PageSize")) != NULL &&
strcmp(choice->choice, "Custom") == 0)
{
if (Orientation & 1)
{
@@ -554,6 +564,8 @@ main(int argc, /* I - Number of command-line arguments */
Copies = 1;
}
else
header.NumCopies = 1;
/*
* Create the dithering lookup tables...
@@ -597,7 +609,7 @@ main(int argc, /* I - Number of command-line arguments */
fprintf(stderr, "DEBUG: cupsColorSpace = %d\n", header.cupsColorSpace);
fprintf(stderr, "DEBUG: img->colorspace = %d\n", img->colorspace);
row = malloc(header.cupsBytesPerLine);
row = malloc(2 * header.cupsBytesPerLine);
ras = cupsRasterOpen(1, CUPS_RASTER_WRITE);
blank = img->colorspace < 0 ? 0 : ~0;
@@ -2245,7 +2257,7 @@ format_KCMYcm(cups_page_header_t *header,/* I - Page header */
if (pk)
*ptr++ ^= 32; /* Black */
else if (pc && pm)
*ptr++ ^= 3; /* Blue (light cyan + light magenta) */
*ptr++ ^= 17; /* Blue (cyan + light magenta) */
else if (pc && py)
*ptr++ ^= 6; /* Green (light cyan + yellow) */
else if (pm && py)
@@ -2311,7 +2323,7 @@ format_KCMYcm(cups_page_header_t *header,/* I - Page header */
*kptr ^= bitmask; /* Black */
else if (pc && pm)
{
*lcptr ^= bitmask; /* Blue (light cyan + light magenta) */
*cptr ^= bitmask; /* Blue (cyan + light magenta) */
*lmptr ^= bitmask;
}
else if (pc && py)
@@ -2402,7 +2414,6 @@ format_KCMYcm(cups_page_header_t *header,/* I - Page header */
for (x = xsize; x > 0; x --, r0 += 4)
{
if (r0[0] > dither[x & 15] &&
r0[1] < dither[x & 15] &&
r0[2] < dither[x & 15])
*ptr ^= bitmask;
@@ -2456,7 +2467,6 @@ format_KCMYcm(cups_page_header_t *header,/* I - Page header */
for (x = xsize; x > 0; x --, r0 += 4)
{
if (r0[0] > dither[x & 15] &&
r0[1] < dither[x & 15] &&
r0[2] > dither[x & 15])
*ptr ^= bitmask;
+43 -21
Ver Arquivo
@@ -97,6 +97,7 @@ main(int argc, /* I - Number of command-line arguments */
int level; /* Nesting level for embedded files */
int nbytes, /* Number of bytes read */
tbytes; /* Total bytes to read for binary data */
int page; /* Current page sequence number */
if (argc < 6 || argc > 7)
@@ -204,7 +205,7 @@ main(int argc, /* I - Number of command-line arguments */
if (sloworder || slowcollate)
{
temp = fopen(tmpnam(tempfile), "wb+");
temp = fopen(cupsTempFile(tempfile, sizeof(tempfile)), "wb+");
if (temp == NULL)
slowcollate = sloworder = 0;
@@ -276,7 +277,7 @@ main(int argc, /* I - Number of command-line arguments */
if (strncmp(line, "%%BeginDocument:", 16) == 0 ||
strncmp(line, "%%BeginDocument ", 16) == 0) /* Adobe Acrobat BUG */
level ++;
else if (strcmp(line, "%%EndDocument") == 0)
else if (strcmp(line, "%%EndDocument") == 0 && level > 0)
level --;
else if (strncmp(line, "%%Page:", 7) == 0 && level == 0)
break;
@@ -303,12 +304,12 @@ main(int argc, /* I - Number of command-line arguments */
* Then read all of the pages, filtering as needed...
*/
for (;;)
for (page = 1;;)
{
if (strncmp(line, "%%BeginDocument:", 16) == 0 ||
strncmp(line, "%%BeginDocument ", 16) == 0) /* Adobe Acrobat BUG */
level ++;
else if (strcmp(line, "%%EndDocument") == 0)
else if (strcmp(line, "%%EndDocument") == 0 && level > 0)
level --;
else if (strncmp(line, "%%Page:", 7) == 0 && level == 0)
{
@@ -320,7 +321,7 @@ main(int argc, /* I - Number of command-line arguments */
if (strncmp(line, "%%BeginDocument:", 16) == 0 ||
strncmp(line, "%%BeginDocument ", 16) == 0) /* Adobe Acrobat BUG */
level ++;
else if (strcmp(line, "%%EndDocument") == 0)
else if (strcmp(line, "%%EndDocument") == 0 && level > 0)
level --;
else if (strncmp(line, "%%Page:", 7) == 0 && level == 0)
break;
@@ -334,16 +335,22 @@ main(int argc, /* I - Number of command-line arguments */
if (slowcollate || sloworder)
Pages[NumPages] = ftell(temp);
NumPages ++;
if (!sloworder)
{
if (ppd == NULL || ppd->num_filters == 0)
fprintf(stderr, "PAGE: %d %d\n", NumPages, Copies);
if ((NumPages % NUp) == 0)
{
if (ppd == NULL || ppd->num_filters == 0)
fprintf(stderr, "PAGE: %d %d\n", page, Copies);
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
start_nup(NumPages - 1);
printf("%%%%Page: %d %d\n", page, page);
page ++;
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
}
start_nup(NumPages);
}
NumPages ++;
}
}
else if (strncmp(line, "%%BeginBinary:", 14) == 0 ||
@@ -390,19 +397,26 @@ main(int argc, /* I - Number of command-line arguments */
if (slowcollate || sloworder)
{
Pages[NumPages] = ftell(temp);
page = 1;
if (!sloworder)
{
while (Copies > 1)
while (Copies > 0)
{
rewind(temp);
for (number = 0; number < NumPages; number ++)
{
if (ppd == NULL || ppd->num_filters == 0)
fprintf(stderr, "PAGE: %d 1\n", number + 1);
if ((number % NUp) == 0)
{
if (ppd == NULL || ppd->num_filters == 0)
fprintf(stderr, "PAGE: %d 1\n", page);
printf("%%%%Page: %d %d\n", page, page);
page ++;
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
}
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
start_nup(number);
copy_bytes(temp, Pages[number + 1] - Pages[number]);
end_nup(number);
@@ -417,11 +431,17 @@ main(int argc, /* I - Number of command-line arguments */
{
for (number = NumPages - 1; number >= 0; number --)
{
if (ppd == NULL || ppd->num_filters == 0)
fprintf(stderr, "PAGE: %d %d\n", NumPages - number,
slowcollate ? 1 : Copies);
if ((number % NUp) == 0)
{
if (ppd == NULL || ppd->num_filters == 0)
fprintf(stderr, "PAGE: %d %d\n", page,
slowcollate ? 1 : Copies);
printf("%%%%Page: %d %d\n", page, page);
page ++;
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
}
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
start_nup(NumPages - 1 - number);
fseek(temp, Pages[number], SEEK_SET);
copy_bytes(temp, Pages[number + 1] - Pages[number]);
@@ -596,7 +616,8 @@ copy_bytes(FILE *fp, /* I - File to read from */
static void
end_nup(int number) /* I - Page number */
{
puts("grestore");
if (Flip || Orientation || NUp > 1)
puts("grestoreall");
switch (NUp)
{
@@ -683,7 +704,8 @@ start_nup(int number) /* I - Page number */
tx, ty; /* Translation values for subpage */
puts("gsave");
if (Flip || Orientation || NUp > 1)
puts("gsave");
if (Flip)
printf("%.0f 0 translate -1 1 scale\n", PageWidth);
-107
Ver Arquivo
@@ -1,107 +0,0 @@
# Microsoft Developer Studio Project File - Name="pstops" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=pstops - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "pstops.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "pstops.mak" CFG="pstops - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "pstops - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "pstops - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "pstops - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 ../cups/cups.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"pstops.exe"
!ELSEIF "$(CFG)" == "pstops - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "pstops___Win32_Debug"
# PROP BASE Intermediate_Dir "pstops___Win32_Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 ../cups/cups.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"pstopsd.exe" /pdbtype:sept
!ENDIF
# Begin Target
# Name "pstops - Win32 Release"
# Name "pstops - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\pstops.c
!IF "$(CFG)" == "pstops - Win32 Release"
!ELSEIF "$(CFG)" == "pstops - Win32 Debug"
# ADD CPP /Zi
!ENDIF
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# End Target
# End Project
+48 -10
Ver Arquivo
@@ -39,13 +39,14 @@
* Globals...
*/
int WrapLines = 0, /* Wrap text in lines */
int WrapLines = 1, /* Wrap text in lines */
SizeLines = 60, /* Number of lines on a page */
SizeColumns = 80, /* Number of columns on a line */
PageColumns = 1, /* Number of columns on a page */
ColumnGutter = 0, /* Number of characters between text columns */
ColumnWidth = 80, /* Width of each column */
PrettyPrint = 0; /* Do pretty code formatting */
PrettyPrint = 0, /* Do pretty code formatting */
Copies = 1; /* Number of copies */
lchar_t **Page = NULL; /* Page characters */
int NumPages = 0; /* Number of pages in document */
int CharsPerInch = 10; /* Number of character columns per inch */
@@ -53,28 +54,46 @@ int LinesPerInch = 6; /* Number of lines per inch */
int UTF8 = 0; /* Use UTF-8 encoding? */
char *Keywords[] = /* List of known keywords... */
{
"and",
"and_eq",
"asm",
"auto",
"bitand",
"bitor",
"bool",
"break",
"case",
"catch",
"char",
"class",
"compl",
"const",
"continue",
"default",
"delete",
"double",
"do",
"double",
"else",
"enum",
"explicit",
"extern",
"false",
"float",
"for",
"friend",
"goto",
"if",
"inline",
"int",
"long",
"mutable",
"namespace",
"new",
"not",
"not_eq",
"operator",
"or",
"or_eq",
"private",
"protected",
"public",
@@ -86,12 +105,21 @@ char *Keywords[] = /* List of known keywords... */
"static",
"struct",
"switch",
"template",
"this",
"throw",
"true",
"try",
"typedef",
"typename",
"union",
"unsigned",
"virtual",
"void",
"volatile",
"while"
"while",
"xor",
"xor_eq"
};
@@ -165,10 +193,21 @@ TextMain(char *name, /* I - Name of filter */
options = NULL;
num_options = cupsParseOptions(argv[5], 0, &options);
if ((val = cupsGetOption("prettyprint", num_options, options)) != NULL)
{
PrettyPrint = 1;
PageLeft = 72.0f;
PageRight = PageWidth - 36.0f;
PageBottom = PageBottom > 36.0f ? PageBottom : 36.0f;
PageTop = PageLength - 36.0f;
CharsPerInch = 12;
LinesPerInch = 8;
}
if ((ppd = SetCommonOptions(num_options, options, 1)) != NULL)
ppdClose(ppd);
WrapLines = cupsGetOption("wrap", num_options, options) != NULL;
WrapLines = cupsGetOption("nowrap", num_options, options) == NULL;
if ((val = cupsGetOption("columns", num_options, options)) != NULL)
PageColumns = atoi(val);
@@ -180,12 +219,11 @@ TextMain(char *name, /* I - Name of filter */
LinesPerInch = atoi(val);
if ((val = cupsGetOption("prettyprint", num_options, options)) != NULL)
{
PrettyPrint = 1;
PageTop -= 216.0f / LinesPerInch;
}
PageTop -= 216.0f / LinesPerInch;
WriteProlog(argv[3], argv[2]);
Copies = atoi(argv[4]);
WriteProlog(argv[3], argv[2], ppd);
/*
* Read text from the specified source and print it...
+3 -2
Ver Arquivo
@@ -64,7 +64,8 @@ extern int WrapLines, /* Wrap text in lines */
PageColumns, /* Number of columns on a page */
ColumnGutter, /* Number of characters between text columns */
ColumnWidth, /* Width of each column */
PrettyPrint; /* Do pretty code formatting */
PrettyPrint, /* Do pretty code formatting */
Copies; /* Number of copies to produce */
extern lchar_t **Page; /* Page characters */
extern int NumPages; /* Number of pages in document */
extern int CharsPerInch, /* Number of character columns per inch */
@@ -80,7 +81,7 @@ extern char *Keywords[]; /* List of known keywords... */
extern int TextMain(char *name, int argc, char *argv[]);
extern void WriteEpilogue(void);
extern void WritePage(void);
extern void WriteProlog(char *title, char *user);
extern void WriteProlog(char *title, char *user, ppd_file_t *ppd);
/*
+20 -21
Ver Arquivo
@@ -113,8 +113,9 @@ WritePage(void)
*/
void
WriteProlog(char *title, /* I - Title of job */
char *user) /* I - Username */
WriteProlog(char *title, /* I - Title of job */
char *user, /* I - Username */
ppd_file_t *ppd) /* I - PPD file info */
{
int line; /* Current output line */
char *charset; /* Character set string */
@@ -335,41 +336,43 @@ WriteProlog(char *title, /* I - Title of job */
printf("\t0 0 %.1f %.1f rectfill\n", PageRight - PageLeft,
144.0f / LinesPerInch);
puts("\tFN setfont");
puts("\tFB setfont");
puts("\t0 setgray");
if (Duplex)
{
puts("\tdup 2 mod 0 eq {");
printf("\t\tT stringwidth pop neg %.1f add %.1f } {\n",
PageRight - PageLeft - 36.0f / LinesPerInch, 54.0f / LinesPerInch);
PageRight - PageLeft - 36.0f / LinesPerInch,
(0.5f + 0.157f) * 72.0f / LinesPerInch);
printf("\t\t%.1f %.1f } ifelse\n", 36.0f / LinesPerInch,
54.0f / LinesPerInch);
(0.5f + 0.157f) * 72.0f / LinesPerInch);
}
else
printf("\t%.1f %.1f\n", 36.0f / LinesPerInch,
54.0f / LinesPerInch);
(0.5f + 0.157f) * 72.0f / LinesPerInch);
puts("\tmoveto T show");
printf("\t(%s)\n", curdate);
printf("\tdup stringwidth pop neg 2 div %.1f add %.1f\n",
(PageRight - PageLeft) * 0.5, 54.0f / LinesPerInch);
(PageRight - PageLeft) * 0.5,
(0.5f + 0.157f) * 72.0f / LinesPerInch);
puts("\tmoveto show");
if (Duplex)
{
puts("\tdup P cvs exch 2 mod 0 eq {");
printf("\t\t%.1f %.1f } {\n", 36.0f / LinesPerInch,
54.0f / LinesPerInch);
(0.5f + 0.157f) * 72.0f / LinesPerInch);
printf("\t\tdup stringwidth pop neg %.1f add %.1f } ifelse\n",
PageRight - PageLeft - 36.0f / LinesPerInch,
54.0f / LinesPerInch);
(0.5f + 0.157f) * 72.0f / LinesPerInch);
}
else
printf("\tP cvs dup stringwidth pop neg %.1f add %.1f\n",
PageRight - PageLeft - 36.0f / LinesPerInch,
54.0f / LinesPerInch);
(0.5f + 0.157f) * 72.0f / LinesPerInch);
puts("\tmoveto show");
puts("\tgrestore");
@@ -452,8 +455,8 @@ write_string(int col, /* I - Start column */
y = PageTop;
}
x += (float)col * 72.0 / (float)CharsPerInch;
y -= (float)(row + 1) * 72.0 / (float)LinesPerInch;
x += (float)col * 72.0f / (float)CharsPerInch;
y -= (float)(row + 0.843) * 72.0f / (float)LinesPerInch;
attr = s->attr;
@@ -506,15 +509,6 @@ write_string(int col, /* I - Start column */
}
putchar('>');
if (attr & ATTR_RED)
puts("r");
else if (attr & ATTR_GREEN)
puts("g");
else if (attr & ATTR_BLUE)
puts("b");
else
puts("S");
}
else
{
@@ -551,7 +545,10 @@ write_string(int col, /* I - Start column */
}
putchar(')');
}
if (PrettyPrint)
{
if (attr & ATTR_RED)
puts("r");
else if (attr & ATTR_GREEN)
@@ -561,6 +558,8 @@ write_string(int col, /* I - Start column */
else
puts("S");
}
else
puts("S");
}
-98
Ver Arquivo
@@ -1,98 +0,0 @@
# Microsoft Developer Studio Project File - Name="texttops" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=texttops - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "texttops.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "texttops.mak" CFG="texttops - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "texttops - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "texttops - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "texttops - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W1 /GX /O2 /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 ../cups/cups.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"texttops.exe"
!ELSEIF "$(CFG)" == "texttops - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W1 /Gm /GX /Zi /Od /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 ../cups/cupsd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"texttopsd.exe" /pdbtype:sept
!ENDIF
# Begin Target
# Name "texttops - Win32 Release"
# Name "texttops - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\texttops.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# End Target
# End Project
+114 -113
Ver Arquivo
@@ -1,123 +1,124 @@
iso-8859-1
OK
Löschen
Hilfe
Beendet
Nah
Ja
Nein
Auf
Weg von
Außer
Ausschuß
Rückstellung
Optionen
Mehr INFO
Schwarzes
Farbe
Cyan-blau
Magenta
Gelb
Okay
Abbrechen
Hilfe
Beenden
Schließen
Ja
Nein
An
Aus
Speichern
Verwerfen
Default
Optionen
Mehr Info
Schwarz
Farbe
Cyan
Magenta
Gelb
Copyright 1993-1999 durch Easy Software Products, alle Rechte vorbehalten.
General
Drucker
BildOptionen
HP-GL/2 Optionen
Extrakosten
Dokument
Anderes
DruckSeiten:
Allgemein
Drucker
Bild Optionen
HP-GL/2 Optionen
Speziell
Dokument
Andere
Druckbereich:
Gesamtes Dokument
Seitenbereich:
RückOrdnung:
Seite Format:
1-Up
2-Up
4-Up
BildScaling:
Natürliche BildGröße Des Gebrauches
Zoom durch Percent
Zoom durch PPI
SpiegelBild:
Farbe Sättigung:
Farbe Farbe:
Passen Sie, um zu paginieren:
Schattierend:
FederBreite:
Gamma Korrektur:
Umgedrehte Reihenfolge:
Seitenformat:
normal
2 auf 1
4 auf 1
Bild-Skalierung:
Natürliche Bildgröße
Zoom in Prozent
Zoom in PPI
Gespiegelte Ausgabe:
Farbsättigung:
Farbton:
Auf Seite anpassen:
Schattiert:
Strichstärke:
Gamma-Korrektur:
Helligkeit:
Fügen Sie hinzu
Löschung
ändern Sie
DruckerURI
DruckerName
DruckerStandort
Drucker-cInfo
Drucker bilden und formen
EinheitURI
Formatierung Seite
Seite Druckend
InitialisierenDrucker
DruckerZustand
Jobs Annehmend
Jobs Nicht, Annehmend
Druckjobs
Kategorie
Hinzufügen
Löschen
Ändern
Drucker-URI
Drucker-Name
Drucker-Standort
Drucker-Info
Drucker-Modell
Device-URI
Formatiere Seite
Drucke Seite
Initialisiere Drucker
Drucker-Zustand
Bereit
Nicht bereit
Druckaufträge
Klasse
Lokal
Entfernte Station
Duplexing
Heftend
Schnelle Plattenkopierprogramme
Gemischte Exemplare
Bohrung Lochen
Bedeckung
Binden
Sortierend
Klein (bis 9.5x1în)
Medium (9.5x1în bis 13x19in)
Groß (13x19in und größeres)
Kundenspezifische Größe
Remote
Duplex
Hefter
Schnellkopien
Sortieren/Gruppieren
Locher
Deckblatt
Bindung
Sortieren
Klein (bis 14x35cm)
Medium (14x35cm bis 33x48cm)
Groß (33x48cm und größer)
Benutzerspezifische Größe
Leerlauf
Verarbeitend
In Arbeit
Gestoppt
Alles
Ungerade
Gleichmäßige Seiten
Dunkleres Heller
MediaGröße
MediaArt
MediaQuelle
Lagebestimmung:
Portrait
Landschaft
Job State
Job Name
User Name
Priority
Copies
File Size
Pending
Output Mode
Resolution
400 Ihre Datenbanksuchroutine sendete einen Antrag, den dieser Server nicht verstehen könnte.
Dieser Server könnte nicht überprüfen, daß Sie autorisiert sind, das Hilfsmittel zuzugreifen.
Sie müssen zahlen, diesen Server zuzugreifen.
Sie haben nicht Erlaubnis, das Hilfsmittel auf diesem Server zuzugreifen.
Das erbetene Hilfsmittel wurde nicht auf diesem Server gefunden.
Die erbetene Methode wird nicht mit dem Hilfsmittel erlaubt.
Eine passende Darstellung für das Hilfsmittel wurde nicht auf diesem Server gefunden.
Sie haben nicht Erlaubnis, diesen Server als Proxyhauptrechner zu benutzen.
Der Antrag hat zu lang genommen, um durchzuführen und ist abgebrochen worden.
Das erbetene Hilfsmittel hat mehr als einen Wert.
Das erbetene Hilfsmittel wird gegangen und ist nicht ersetzt worden.
Die erbetene Methode benötigt ein gültiges Content-Length.
Die Vorbedingung auf dem Antrag wertete zu falschem aus.
Der Antrag ist zu groß, damit dieser Server verarbeitet.
Der AntragcUri ist zu groß, damit dieser Server verarbeitet.
Das Antragformat wird nicht durch diesen Server verstanden.
500 Der Server hat einen unrecoverable Fehler ermittelt und nicht Ihren Antrag verarbeiten kann.
Die erbetene Methode wird nicht durch diesen Server eingeführt.
Das proxy server empfing eine unzulässige Antwort von einem aufwärts gerichteten Server.
Das erbetene Hilfsmittel ist aktuell auf diesem Server nicht erreichbar.
Das proxy server hat zu lang genommen, um auf diesen Server zu reagieren.
Dieser Server unterstützt nicht die HTTP-Version, die durch Ihre Datenbanksuchroutine angefordert wird.
Gerade Seiten
Dunkler Heller
Medien-Größe
Medium
Medien-Quelle
Ausrichtung:
Hochformat
Querformat
Job-Status
Job-Name
Benutzername
Priorität
Kopien
Dateigröße
In Warteposition
Ausgabe-Modus
Auflösung
400 Der Server versteht die Anfrage Ihres Browsers nicht.
Der Server konnte nicht Ihre Berechtigung überprüfen, diese Ressource zu benutzen.
Sie müssen bezahlen, um auf diesen Server zuzugreifen.
Sie sind nicht berechtigt, auf diese Ressource des Servers zuzugreifen.
Die gewünschte Ressource wurde auf diesem Server nicht gefunden.
Die gewünschte Methode ist mit dieser Ressource nicht erlaubt.
Eine passende Art der Ressource wurde auf diesem Server nicht gefunden.
Sie können diesen Server nicht als Proxy-Server verwenden.
Der Auftrag brauchte zu lang zur Beendigung und wurde abgebrochen.
Die gewünschte Ressource besitzt mehr als einen Wert.
Die gewünschte Ressource existiert nicht mehr und wurde nicht ersetzt.
Die gewünschte Methode benötigt eine gültige Länge des Inhalts.
Die Voraussetzungen für den Auftrag sind nicht erfüllt.
Der Auftrag ist zu groß, um auf diesem Server verarbeitet zu werden.
Die URI des Auftrags ist zu groß, um auf diesem Server verarbeitet zu werden.
Das Format des Auftrags wird von diesem Server nicht verstanden.
500 Der Server hat einen nicht behebbaren Fehler entdeckt und kann Ihren Auftrag nicht verarbeiten.
Die gewünschte Methode ist auf diesen Server nicht implementiert.
Der Proxy-Server empfing eine unzulässige Antwort von einem höheren Server.
Die gewünschte Ressource ist aktuell auf diesem Server nicht verfügbarr.
Der Proxy-Server braucht zu lang, um auf diesen Server zu reagieren.
Dieser Server unterstützt nicht die HTTP-Version, die Ihr Browser benötigt.
+62 -62
Ver Arquivo
@@ -3,16 +3,16 @@ OK
Annulation
Aide
Quitté
Étroit
Fermer
Oui
Non
Sur
Outre de
Économiser
Écart
Oui
Non
Sauver
Quitté
Défaut
Options
Plus D'Information
Plus d'information
Noir
Couleur
Cyan
@@ -21,86 +21,86 @@ Jaune
Copyright 1993-1999 par Easy Software Products, tous droits réservés.
Général
Imprimante
Options D'Image
Options D'HP-GL/2
Frais supplémentaires
Options d'Image
Options d'HP-GL/2
Options supplémentaires
Document
Autre
Pages D'Impression:
Entier Document
Chaîne De Page
Commande D'Inversion:
Format De Page:
1-Up
2-Up
4-Up
Graduation D'Image:
Taille Normale D'Image D'Utilisation
Zoom par Percent
Pages d'impression:
Entier document
Chaîne de page
Commande d'Inversion:
Pages par feuilles:
1
2
4
Graduation d'image:
Emploi taille normale d'image
Zoom par pourcent
Zoom par PPI
Image De Miroir:
Saturation De Couleur:
Tonalité De Couleur:
Adaptez pour paginer:
Image de miroir:
Saturation de couleur:
Teinture de couleur:
Correspondre au page:
Ombrageant:
Largeur De Crayon lecteur:
Gamma Correction:
Largeur de crayon lecteur:
Correction de Gamma:
Éclat:
Ajoutez
Effacement
Éffacer
Modifiez
URI D'Imprimante
Nom D'Imprimante
Emplacement D'Imprimante
Information D'Imprimante
L'imprimante font et modèlent
URI De Dispositif
Page De Formatage
Imprimant La Page
D' Initialisation Imprimante
État D'Imprimante
Recevant Les Travaux
URI de l'imprimante
Nom de l'imprimante
Emplacement de l'imprimante
Information de l'imprimante
Font et modèlent de l'imprimante
Dispositif de l'URI
Formatage du page
Imprimant la page
Initialisation de l'imprimante
État de l'Imprimante
Recevant les travaux
Ne recevant pas Les Travaux
Tirages
Classe
Local
Périphérique
Distant
Duplexage
Agrafant
Rapides Copies
Assemblées Copies
Poinçon De Trou
Copie Rapides
Copies Assemblées
Poinçon de trou
Bâche
Liant
Triant
Petit (jusqu'à 9.5x1în)
Support (9.5x1în à 13x19in)
Grand (13x19in et plus grand)
Faite sur commande Taille
Ralenti
Petit (jusqu'à 9.5x1pouce)
Moyen (9.5x1pouce à 13x19pouce)
Grand (13x19pouce et plus grand)
Taille faite sur commande
Arrêter
Traitant
Arrêté
Tout
Impair
Même Pages
Plus foncé Plus Lumineux
Taille De Medias
Type De Supports
Source De Medias
Dimension du medias
Sorte de medias
Source du medias
Orientation:
Verticale
Horizontal
Job State
Job Name
User Name
Priority
État du travail
Nom du travail
Nom de l'utilisateur
Priorité
Copies
File Size
Pending
Output Mode
Grandeur du fichier
Imminent
Method de sortie
Resolution
400 Votre browser a envoyé une demande que ce serveur ne pourrait pas comprendre.
Ce serveur ne pourrait pas vérifier que vous êtes autorisés à accéder à la ressource.
400 Votre browser a envoyé une demande que ce serveur ne pouvait pas comprendre.
Ce serveur ne pouvait pas vérifier que vous êtes autoriséz à accéder à la ressource.
Vous devez payer pour accéder à ce serveur.
Vous n'avez pas la permission d'accéder à la ressource sur ce serveur.
La ressource demandée n'a pas été trouvée sur ce serveur.
@@ -112,12 +112,12 @@ La ressource demand
La ressource demandée est allée et n'a pas été substituée.
La méthode demandée exige un Content-Length valide.
La condition préalable sur la demande a évalué à faux.
La demande est trop grande pour que ce serveur traite.
L'cUri de demande est trop grand pour que ce serveur traite.
La demande est trop grande pour ce serveur.
L'Uri de demande est trop grand pour ce serveur.
Le format de demande n'est pas compris par ce serveur.
500 Le serveur a détecté une erreur irrémédiable et ne peut pas traiter votre demande.
La méthode demandée n'est pas appliquée par ce serveur.
Le proxy server a reçu une réponse incorrecte d'un serveur ascendant.
La ressource demandée est actuel indisponible sur ce serveur.
La ressource demandée est actuellement indisponible sur ce serveur.
Le proxy server a pris trop longtemps pour répondre à ce serveur.
Ce serveur ne supporte pas la version de HTTP exigée par votre browser.
+7 -7
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: accept.8 380 1999-06-10 16:15:04Z mike $"
.\" "$Id: accept.8 680 1999-09-22 20:06:43Z mike $"
.\"
.\" accept/reject man page for the Common UNIX Printing System (CUPS).
.\"
@@ -21,7 +21,7 @@
.\" EMail: cups-info@cups.org
.\" WWW: http://www.cups.org
.\"
.TH accept 8 "Common UNIX Printing System" "14 May 1999" "Easy Software Products"
.TH accept 8 "Common UNIX Printing System" "22 September 1999" "Easy Software Products"
.SH NAME
accept/reject \- accept/reject jobs sent to a destination
.SH SYNOPSIS
@@ -36,22 +36,22 @@ destination(s)
] ]
destination(s)
.SH DESCRIPTION
\fBaccept\fR instructs the printing system to accept print jobs to the
\fIaccept\fR instructs the printing system to accept print jobs to the
specified destinations.
.LP
\fBreject\fR instructs the printing system to reject print jobs to the
\fIreject\fR instructs the printing system to reject print jobs to the
specified destinations. The \fI-r\fR option sets the reason for rejecting
print jobs. If not specified the reason defaults to "Reason Unknown".
.SH COMPATIBILITY
The CUPS versions of \fBaccept\fR and \fBreject\fR may ask the user for an
The CUPS versions of \fIaccept\fR and \fIreject\fR may ask the user for an
access password depending on the printing system configuration. This differs
from the System V versions which require the root user to execute these
commands.
.SH SEE ALSO
cancel(1), disable(8), enable(8), lp(1), lpadmin(8), lpstat(1),
CUPS Software Administrator's Manual
CUPS Software Administrators Manual
.SH COPYRIGHT
Copyright 1993-1999 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: accept.8 380 1999-06-10 16:15:04Z mike $".
.\" End of "$Id: accept.8 680 1999-09-22 20:06:43Z mike $".
.\"
BIN
Ver Arquivo
Arquivo binário não exibido.

Alguns arquivos não foram exibidos porque demasiados arquivos foram alterados neste diff Mostrar Mais