Comparar commits

..

1 Commits

Autor SHA1 Mensagem Data
msweet 53b898e28b Import cups.org releases
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/tags/release-1.0b5@4306 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-10 18:56:23 +00:00
158 arquivos alterados com 7767 adições e 6844 exclusões
-25
Ver Arquivo
@@ -1,25 +0,0 @@
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
@@ -0,0 +1,332 @@
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
+1 -3
Ver Arquivo
@@ -37,7 +37,6 @@ DSO = @DSO@
HTMLDOC = @HTMLDOC@
LN = /bin/ln -sf
MKDIR = @MKDIR@ -p
MV = @MV@
NROFF = @NROFF@
PACK = @PACK@
RANLIB = @RANLIB@
@@ -70,8 +69,7 @@ CFLAGS = @CFLAGS@ $(OPTIM) -I.. $(OPTIONS)
DSOLIBS = @DSOLIBS@
IMGLIBS = @IMGLIBS@ -lm
LDFLAGS = @LDFLAGS@ $(OPTIM)
LIBS = -L../cups -lcups $(NETLIBS) @LIBS@
NETLIBS = @NETLIBS@
LIBS = -L../cups -lcups @LIBS@
OPTIM = @OPTIM@
OPTIONS =
+139
Ver Arquivo
@@ -0,0 +1,139 @@
<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>
+78 -142
Ver Arquivo
@@ -1,184 +1,120 @@
README - CUPS v1.0 - 10/01/1999
-------------------------------
README - CUPS v1.0b4
--------------------
CONTENTS
* Introduction
* Requirements
* Using CUPS
* Known Problems
* Reporting Problems
* Other Resources
* Legal Stuff
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)
and AppSocket protocols are also supported with reduced functionality.
managing print jobs and queues. The Line Printer Daemon (LPD, RFC1179),
Server Message Block (SMB), 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 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.
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.
SYSTEM REQUIREMENTS
REQUIREMENTS
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.
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®.
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".
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.)
SOFTWARE REQUIREMENTS
USING CUPS
The following operating system software is required to install one of
the binary distributions from Easy Software Products:
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.
- 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)
Once you have installed CUPS, the Software Administrator's Manual and
Software User's Manual are excellent places to start setting things up.
INSTALLING CUPS
KNOWN PROBLEMS
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.
The following known problems are being worked on and should be resolved for
the fourth beta release of CUPS:
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.
* Documentation is not completed.
* The lpc command currently only supports the help and status commands.
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:
CUPS has been built and tested on the following operating systems:
./cups.install ENTER
* 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)
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.
The client libraries and filters have been successfully compiled under
Microsoft Windows using Visual C++ 6.0.
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" (or the
file "cups.license" for a binary distribution.) For commercial
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". For commercial
support and "binary-only" 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
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.
+14 -1
Ver Arquivo
@@ -24,7 +24,7 @@
include ../Makedefs
TARGETS = ipp lpd parallel serial socket
TARGETS = ipp lpd parallel serial smb socket
OBJS = ipp.o lpd.o parallel.o serial.o socket.o
#
@@ -91,6 +91,19 @@ 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
#
+14 -23
Ver Arquivo
@@ -23,7 +23,6 @@
*
* Contents:
*
* main() - Send a file to the printer or server.
*/
/*
@@ -147,10 +146,12 @@ 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_OPERATION, IPP_TAG_NAME, "requesting-user-name",
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "requesting-user-name",
NULL, argv[2]);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL, argv[3]);
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]));
/*
* Handle options on the command-line...
@@ -160,14 +161,12 @@ 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_OPERATION, IPP_TAG_MIMETYPE, "document-format",
ippAddString(request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/vnd.cups-raw");
else
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
ippAddString(request, IPP_TAG_JOB, 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 ++)
{
/*
@@ -280,9 +279,7 @@ 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...
*/
@@ -294,12 +291,12 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
*/
if (httpPost(http, resource))
{
fputs("INFO: Unable to POST print request; retrying...\n", stderr);
sleep(10);
httpReconnect(http);
continue;
}
if (httpPost(http, resource))
{
fputs("INFO: Unable to POST print request; retrying...\n", stderr);
sleep(10);
continue;
}
fputs("INFO: POST successful, sending IPP request...\n", stderr);
@@ -336,13 +333,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
}
}
/*
* 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);
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(cupsTempFile(filename, sizeof(filename)), "w")) == NULL)
if ((fp = fopen(tmpnam(filename), "w")) == NULL)
{
perror("ERROR: unable to create temporary file");
return (1);
Arquivo executável
+88
Ver Arquivo
@@ -0,0 +1,88 @@
#!/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,15 +433,7 @@ 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");
+11 -14
Ver Arquivo
@@ -23,8 +23,6 @@
*
* Contents:
*
* main() - Parse options and commands.
* show_jobs() - Show jobs.
*/
/*
@@ -47,8 +45,7 @@
* Local functions...
*/
static int show_jobs(http_t *, const char *, const char *, const int,
const int);
static int show_jobs(http_t *, char *, char *, int, int);
/*
@@ -61,7 +58,7 @@ main(int argc, /* I - Number of command-line arguments */
{
int i; /* Looping var */
http_t *http; /* Connection to server */
const char *dest, /* Desired printer */
char *dest, /* Desired printer */
*user; /* Desired user */
int id, /* Desired job ID */
interval, /* Reporting interval */
@@ -77,7 +74,7 @@ main(int argc, /* I - Number of command-line arguments */
* Check for command-line options...
*/
dest = cupsGetDefault();
dest = NULL;
user = NULL;
id = 0;
interval = 0;
@@ -139,21 +136,21 @@ main(int argc, /* I - Number of command-line arguments */
/*
* 'show_jobs()' - Show jobs.
* 'show_jobs()' - Show printers.
*/
static int /* O - Number of jobs in queue */
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 */
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 */
{
ipp_t *request, /* IPP Request */
*response; /* IPP Response */
ipp_attribute_t *attr; /* Current attribute */
cups_lang_t *language; /* Default language */
const char *jobdest, /* Pointer into job-printer-uri */
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 */
@@ -163,7 +160,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 const char *ranks[10] =/* Ranking strings */
static char *ranks[10] = /* Ranking strings */
{
"th",
"st",
+4 -6
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 */
const char *title; /* Job title */
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(cupsTempFile(tempfile, sizeof(tempfile)), "w");
temp = fopen(tmpnam(tempfile), "w");
if (temp == NULL)
{
@@ -225,7 +225,7 @@ main(int argc, /* I - Number of command-line arguments */
if (i == 0)
{
fputs("lpr: standard input is empty, so no job has been sent.\n", stderr);
fputs("lpr: stdin is empty, so no job has been sent.\n", stderr);
return (1);
}
@@ -234,11 +234,9 @@ 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)
{
fputs("lpr: unable to print standard input.\n", stderr);
fprintf(stderr, "lpr: unable to print file \'%s\'.\n", argv[i]);
return (1);
}
}
-7
Ver Arquivo
@@ -169,14 +169,7 @@ 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);
+1 -11
Ver Arquivo
@@ -38,7 +38,6 @@
#include <cups/cups.h>
#include <cups/language.h>
#include <cups/debug.h>
#include <config.h>
/*
@@ -100,24 +99,15 @@ 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 - " CUPS_SVERSION "</TITLE>\n",
printf("<TITLE>%s on %s - Common UNIX Printing System</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>");
+3 -11
Ver Arquivo
@@ -38,7 +38,6 @@
#include <cups/cups.h>
#include <cups/language.h>
#include <cups/debug.h>
#include <config.h>
/*
@@ -63,6 +62,8 @@ main(int argc, /* I - Number of command-line arguments */
http_t *http; /* Connection to the server */
setbuf(stdout, NULL);
/*
* Get the request language...
*/
@@ -100,24 +101,15 @@ 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 - " CUPS_SVERSION "</TITLE>\n",
printf("<TITLE>%s on %s - Common UNIX Printing System</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>");
+1 -11
Ver Arquivo
@@ -38,7 +38,6 @@
#include <cups/cups.h>
#include <cups/language.h>
#include <cups/debug.h>
#include <config.h>
/*
@@ -100,24 +99,15 @@ 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 - " CUPS_SVERSION "</TITLE>\n",
printf("<TITLE>%s on %s - Common UNIX Printing System</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>");
+2 -9
Ver Arquivo
@@ -28,8 +28,7 @@ include ../Makedefs
# Config files...
#
KEEP = classes.conf cupsd.conf printers.conf
REPLACE = mime.convs mime.types
FILES = classes.conf cupsd.conf mime.convs mime.types printers.conf
#
# Make everything...
@@ -49,19 +48,13 @@ clean:
install:
-$(MKDIR) $(SERVERROOT)/conf
for file in $(KEEP); do \
for file in $(FILES); 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$".
+2 -9
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: classes.conf 678 1999-09-22 18:10:55Z mike $"
# "$Id: classes.conf 333 1999-05-17 18:03:40Z mike $"
#
# Sample class configuration file for the Common UNIX Printing System
# (CUPS) scheduler.
@@ -59,13 +59,6 @@
#Location Room 101 in the activities building
#
# Accepting: is the class accepting jobs?
#
#Accepting Yes
#Accepting No
#
#
# Printer: adds a printer to the class.
#
@@ -75,5 +68,5 @@
#</Class>
#
# End of "$Id: classes.conf 678 1999-09-22 18:10:55Z mike $".
# End of "$Id: classes.conf 333 1999-05-17 18:03:40Z mike $".
#
+8 -30
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: cupsd.conf 628 1999-08-23 15:24:48Z mike $"
# "$Id: cupsd.conf 510 1999-07-09 14:20:15Z mike $"
#
# Sample configuration file for the Common UNIX Printing System (CUPS)
# scheduler.
@@ -70,25 +70,20 @@ Port 631
# program is run...
#
#User lp
#Group sys
User lp
Group sys
#
# SystemGroup: the group name for "System" (printer administration)
# access. The default varies depending on the operating system, but
# will be "sys", "system", or "root" (checked for in that order.)
# access.
#
#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
@@ -310,23 +305,6 @@ 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>
@@ -351,8 +329,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 the system group to do any admin tasks. You can change
# the group name using the SystemGroup directive.
# is a member of group "sys" to do any admin tasks. You can change the
# group name using the SystemGroup directive.
#
AuthType Basic
@@ -365,5 +343,5 @@ Allow From 127.0.0.1
</Location>
#
# End of "$Id: cupsd.conf 628 1999-08-23 15:24:48Z mike $".
# End of "$Id: cupsd.conf 510 1999-07-09 14:20:15Z mike $".
#
+3 -3
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: mime.convs 575 1999-07-30 13:57:16Z mike $"
# "$Id: mime.convs 530 1999-07-13 14:11:17Z 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 575 1999-07-30 13:57:16Z mike $".
# End of "$Id: mime.convs 530 1999-07-13 14:11:17Z mike $".
#
+5 -4
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: mime.types 575 1999-07-30 13:57:16Z mike $"
# "$Id: mime.types 487 1999-06-30 21:07:52Z mike $"
#
# MIME types file for the Common UNIX Printing System (CUPS).
#
@@ -92,9 +92,10 @@ 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
image/x-sun-raster ras
# TODO: Add Alias, SoftImage, GIMP??? files
# TODO: Add Sun Raster, Alias, SoftImage, GIMP??? files
image/x-sun-raster ras
#image/x-alias pix
#image/x-softimage
#image/x-gimp-xcf xcf xcf.gz
@@ -118,5 +119,5 @@ application/vnd.cups-raster string(0,"RaSt") string(0,"tSaR")
application/vnd.cups-raw
#
# End of "$Id: mime.types 575 1999-07-30 13:57:16Z mike $".
# End of "$Id: mime.types 487 1999-06-30 21:07:52Z mike $".
#
-2
Ver Arquivo
@@ -1,2 +0,0 @@
# This is a dummy printcap file that is automatically generated by the
# CUPS software for old applications that rely on it.
+3 -10
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: printers.conf 678 1999-09-22 18:10:55Z mike $"
# "$Id: printers.conf 334 1999-05-17 18:11:26Z mike $"
#
# Sample printer configuration file for the Common UNIX Printing System
# (CUPS) scheduler.
@@ -77,20 +77,13 @@
# State: sets the initial state of the printer. Can be one of the
# following:
#
# Idle - Printer is available to print new jobs.
# Idle - Printer is available to accept 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 678 1999-09-22 18:10:55Z mike $".
# End of "$Id: printers.conf 334 1999-05-17 18:11:26Z mike $".
#
+1 -1
Ver Arquivo
@@ -28,7 +28,7 @@
* Version of software...
*/
#define CUPS_SVERSION "CUPS v1.0b9"
#define CUPS_SVERSION "CUPS v1.0"
/*
* Where are files stored?
+13 -31
Ver Arquivo
@@ -46,7 +46,12 @@ 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 test "$disable_shared" != "yes"; then
if eval "test x$disable_shared = xyes"; then
PICFLAG=0
LIBCUPS="libcups.a"
LIBCUPSIMAGE="libcupsimage.a"
DSO=":"
else
case "$uname" in
SunOS* | UNIX_S*)
LIBCUPS="libcups.so.1"
@@ -58,7 +63,7 @@ if test "$disable_shared" != "yes"; then
LIBCUPSIMAGE="libcupsimage.sl.1"
DSO="ld -b -z +h \$@ -o"
;;
OSF1* | Linux* | FreeBSD*)
OSF1* | Linux*)
LIBCUPS="libcups.so.1"
LIBCUPSIMAGE="libcupsimage.so.1"
DSO="\$(CC) -Wl,-soname,\$@ -shared \$(OPTIM) -o"
@@ -76,11 +81,6 @@ if test "$disable_shared" != "yes"; then
DSO="\$(CC) -Wl,-soname,\$@ -shared \$(OPTIM) -o"
;;
esac
else
PICFLAG=0
LIBCUPS="libcups.a"
LIBCUPSIMAGE="libcupsimage.a"
DSO=":"
fi
dnl Checks for programs...
@@ -91,14 +91,13 @@ 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(GROFF,groff)
if test "$GROFF" = ""; then
AC_PATH_PROG(NROFF,groff)
if test "$NROFF" = ""; then
NROFF="echo"
else
NROFF="$GROFF -T ascii"
NROFF="$NROFF -T ascii"
fi
fi
AC_PATH_PROG(HTMLDOC,htmldoc)
@@ -134,18 +133,15 @@ 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
NETLIBS="-lsocket"
LIBS="$LIBS -lsocket"
else
echo "Not using -lsocket since you are running IRIX."
fi)
AC_CHECK_LIB(nsl,gethostbyaddr,
if test "$uname" != "IRIX"; then
NETLIBS="$NETLIBS -lnsl"
LIBS="$LIBS -lnsl"
else
echo "Not using -lnsl since you are running IRIX."
fi)
@@ -213,7 +209,6 @@ else
if test -z "$OPTIM"; then
OPTIM="+O2"
fi
OPTIM="-Ae $OPTIM"
;;
SunOS*)
# Solaris
@@ -243,19 +238,6 @@ 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)"
@@ -273,7 +255,7 @@ if test "$prefix" = "NONE"; then
fi
dnl Fix "libdir" variable for IRIX 6.x...
if test "$uname" = "IRIX" -a $uversion -ge 65; then
if test "$uname" = "IRIX" -a $uversion -ge 62; then
libdir="/usr/lib32"
fi
+345
Ver Arquivo
@@ -0,0 +1,345 @@
#
# "$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 $".
#
+16 -64
Ver Arquivo
@@ -4,12 +4,6 @@
#
# 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
@@ -29,26 +23,7 @@
# WWW: http://www.cups.org
#
# 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...
# See if the CUPS daemon is running, and if so stop it...
case "`uname`" in
IRIX* | HP-UX | SunOS)
pid=`ps -e | awk '{print $1,$4}' | grep cupsd | awk '{print $1}'`
@@ -64,49 +39,26 @@ case "`uname`" in
;;
esac
# Start or stop the CUPS server based upon the first argument to the script.
case $1 in
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
;;
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
;;
stop)
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
;;
if test "$pid" != ""; then
echo "Stopping CUPS scheduler..."
kill $pid
sleep 1
fi
;;
esac
exit 0
#
# End of "$Id$".
#
+41 -43
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: cups.spec 714 1999-10-01 14:40:53Z mike $"
# "$Id: cups.spec 505 1999-07-08 15:00:20Z mike $"
#
# RPM "spec" file for the Common UNIX Printing System (CUPS).
#
@@ -26,11 +26,11 @@
Summary: Common Unix Printing System
Name: cups
Version: 1.0
Version: 1.0b5
Release: 0
Copyright: GPL
Group: System Environment/Daemons
Source: ftp://ftp.easysw.com/pub/cups/beta/cups-1.0-source.tar.gz
Source: ftp://ftp.easysw.com/pub/cups/beta/cups-1.0b5-source.tar.gz
Url: http://www.cups.org
Packager: Michael Sweet <mike@easysw.com>
Vendor: Easy Software Products
@@ -66,29 +66,28 @@ make
# these lines just make sure the directory structure in the
# RPM_BUILD_ROOT exists
rm -rf $RPM_BUILD_ROOT
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
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
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
$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
install -m 755 -o root -g root $RPM_SOURCE_DIR/cups.sh $RPM_BUILD_ROOT/etc/rc.d/init.d/cups
%post
/sbin/chkconfig --add cups
@@ -106,6 +105,9 @@ 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
@@ -113,11 +115,6 @@ 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
@@ -137,25 +134,23 @@ rm -rf $RPM_BUILD_ROOT
/usr/man/man8/lpc.8
/usr/man/man8/reject.8
/usr/man/man8/disable.8
/usr/sbin/accept
/usr/sbin/cupsd
/usr/sbin/lpadmin
/usr/sbin/lpc
/usr/sbin/reject
/usr/sbin/cupsd
/usr/lib/libcups.so.1
/usr/lib/libcupsimage.so.1
%dir /usr/share/cups
/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/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/doc/cmp.html
/usr/share/cups/doc/cmp.pdf
/usr/share/cups/doc/cups.css
@@ -277,6 +272,7 @@ 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
@@ -303,7 +299,9 @@ 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 714 1999-10-01 14:40:53Z mike $".
# End of "$Id: cups.spec 505 1999-07-08 15:00:20Z mike $".
#
+11 -12
Ver Arquivo
@@ -28,10 +28,9 @@ include ../Makedefs
# Object files...
#
LIBOBJS = emit.o filter.o http.o ipp.o language.o mark.o mime.o \
OBJS = 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...
@@ -43,7 +42,7 @@ HEADERS = cups.h http.h ipp.h language.h mime.h ppd.h raster.h
# Targets in this directory...
#
TARGETS = $(LIBCUPS) testhttp testmime testppd
TARGETS = $(LIBCUPS) testmime testppd testhttp
#
# Make all targets...
@@ -68,26 +67,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: $(LIBOBJS) ../Makedefs
libcups.so.1 libcups.sl.1: $(OBJS) ../Makedefs
echo Linking $@...
$(DSO) $@ $(LIBOBJS)
-$(LN) $@ `basename $@ .1`
$(DSO) $@ $(OBJS)
$(LN) $@ `basename $@ .1`
#
# libcups.a
#
libcups.a: $(LIBOBJS)
libcups.a: $(OBJS)
echo Archiving $@...
$(RM) $@
$(AR) $(ARFLAGS) $@ $(LIBOBJS)
$(AR) $(ARFLAGS) $@ $(OBJS)
$(RANLIB) $@
#
@@ -121,7 +120,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 $(NETLIBS)
$(CC) $(LDFLAGS) -o $@ testhttp.o libcups.a $(LIBS)
testhttp.o: http.h ../Makedefs
@@ -131,7 +130,7 @@ testhttp.o: http.h ../Makedefs
testmime: testmime.o libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ testmime.o libcups.a
$(CC) $(LDFLAGS) -o $@ testmime.o libcups.a $(LIBS)
testmime.o: mime.h ../Makedefs
@@ -141,7 +140,7 @@ testmime.o: mime.h ../Makedefs
testppd: testppd.o libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ testppd.o libcups.a $(NETLIBS)
$(CC) $(LDFLAGS) -o $@ testppd.o libcups.a $(LIBS)
testppd.o: ppd.h ../Makedefs
-176
Ver Arquivo
@@ -1,176 +0,0 @@
# 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
@@ -1,123 +0,0 @@
"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[5 -2 roll]/ImagingBBox null>>setpagedevice\n", fp);
fputs("<</PageSize[7 -2 roll]/ImagingBBox null>>setpagedevice\n", fp);
}
}
+37 -145
Ver Arquivo
@@ -25,8 +25,6 @@
*
* 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...
@@ -68,7 +66,6 @@
#include <ctype.h>
#include "string.h"
#include <fcntl.h>
#include <errno.h>
#include "http.h"
#include "ipp.h"
@@ -192,41 +189,6 @@ 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...
*/
@@ -329,11 +291,7 @@ 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 *
@@ -355,9 +313,6 @@ 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
@@ -367,9 +322,6 @@ httpReconnect(http_t *http) /* I - HTTP data */
return (-1);
}
http->error = 0;
http->status = HTTP_CONTINUE;
return (0);
}
@@ -695,11 +647,6 @@ 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
@@ -734,23 +681,13 @@ 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)
if (http->data_remaining == 0 && http->data_encoding != HTTP_ENCODE_CHUNKED)
{
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;
}
if (http->state == HTTP_POST_RECV)
http->state ++;
else
http->state = HTTP_WAITING;
}
return (bytes);
@@ -779,8 +716,11 @@ 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))
if (httpPrintf(http, "%x\r\n", length) < 0)
{
sprintf(len, "%x\r\n", length);
if (send(http->fd, len, strlen(len), 0) < 3)
return (-1);
}
if (length == 0)
{
@@ -805,7 +745,6 @@ httpWrite(http_t *http, /* I - HTTP data */
if (bytes < 0)
{
DEBUG_puts("httpWrite: error writing data...\n");
return (-1);
}
@@ -816,12 +755,6 @@ 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)
{
/*
@@ -864,8 +797,6 @@ 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;
@@ -883,36 +814,23 @@ 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)) < 0)
if ((bytes = recv(http->fd, bufend, HTTP_MAX_BUFFER - http->used, 0)) < 1)
{
/*
* 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 if (bytes == 0)
else
{
if (http->blocking)
http->error = EPIPE;
/*
* Yup, update the amount used and the end pointer...
*/
return (NULL);
http->used += bytes;
bufend += bytes;
}
/*
* Yup, update the amount used and the end pointer...
*/
http->used += bytes;
bufend += bytes;
}
}
while (bufptr >= bufend);
@@ -940,7 +858,6 @@ 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)
@@ -949,8 +866,6 @@ httpGets(char *line, /* I - Line to read into */
*lineptr++ = *bufptr++;
}
DEBUG_puts("httpGets(): No new line available!");
return (NULL);
}
@@ -964,11 +879,8 @@ 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 */
nbytes, /* Number of bytes written */
tbytes; /* Number of bytes all together */
char buf[HTTP_MAX_BUFFER], /* Buffer for formatted string */
*bufptr; /* Pointer into buffer */
int bytes; /* Number of bytes to write */
char buf[HTTP_MAX_BUFFER]; /* Buffer for formatted string */
va_list ap; /* Variable argument pointer */
@@ -978,11 +890,7 @@ httpPrintf(http_t *http, /* I - HTTP data */
DEBUG_printf(("httpPrintf: %s", buf));
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);
return (send(http->fd, buf, bytes, 0));
}
@@ -1181,20 +1089,7 @@ 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);
}
/*
@@ -1431,13 +1326,6 @@ 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...
*/
@@ -1446,12 +1334,22 @@ http_send(http_t *http, /* I - HTTP data */
if (request == HTTP_POST || request == HTTP_PUT)
http->state ++;
http->status = HTTP_CONTINUE;
if (httpPrintf(http, "%s %s HTTP/1.1\r\n", codes[request], buf) < 1)
if (httpPrintf(http, "%s %s HTTP/1.1\n", codes[request], buf) < 1)
{
http->status = HTTP_ERROR;
return (-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);
}
for (i = 0; i < HTTP_FIELD_MAX; i ++)
@@ -1459,18 +1357,12 @@ http_send(http_t *http, /* I - HTTP data */
{
DEBUG_printf(("%s: %s\n", http_fields[i], http->fields[i]));
if (httpPrintf(http, "%s: %s\r\n", http_fields[i], http->fields[i]) < 1)
{
http->status = HTTP_ERROR;
return (-1);
}
if (httpPrintf(http, "%s: %s\n", http_fields[i], http->fields[i]) < 1)
return (-1);
}
if (httpPrintf(http, "\r\n") < 1)
{
http->status = HTTP_ERROR;
if (httpPrintf(http, "\n") < 1)
return (-1);
}
httpClearFields(http);
-3
Ver Arquivo
@@ -221,7 +221,6 @@ 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 */
@@ -246,13 +245,11 @@ 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);
+19 -17
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, unsigned char *buffer, int length);
static int ipp_read(http_t *http, char *buffer, int length);
/*
@@ -512,6 +512,8 @@ ippDateToTime(const ipp_uchar_t *date) /* I - RFC 1903 date info */
else
t -= date[9] * 3600 + date[10] * 60;
t -= timezone;
return (t);
}
@@ -723,7 +725,7 @@ ippRead(http_t *http, /* I - HTTP data */
ipp_t *ipp) /* I - IPP data */
{
int n; /* Length of data */
unsigned char buffer[8192]; /* Data buffer */
char buffer[8192]; /* Data buffer */
ipp_attribute_t *attr; /* Current attribute */
ipp_tag_t tag; /* Current tag */
@@ -865,7 +867,7 @@ ippRead(http_t *http, /* I - HTTP data */
attr->group_tag = ipp->curtag;
attr->value_tag = tag;
attr->name = strdup((char *)buffer);
attr->name = strdup(buffer);
attr->num_values = 0;
}
@@ -911,7 +913,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((char *)buffer);
attr->values[attr->num_values].string.text = strdup(buffer);
break;
case IPP_TAG_DATE :
if (ipp_read(http, buffer, 11) < 11)
@@ -950,7 +952,7 @@ ippRead(http_t *http, /* I - HTTP data */
buffer[n] = '\0';
attr->values[attr->num_values].string.charset = strdup((char *)buffer);
attr->values[attr->num_values].string.charset = strdup(buffer);
if (ipp_read(http, buffer, 2) < 2)
return (IPP_ERROR);
@@ -962,7 +964,7 @@ ippRead(http_t *http, /* I - HTTP data */
buffer[n] = '\0';
attr->values[attr->num_values].string.text = strdup((char *)buffer);
attr->values[attr->num_values].string.text = strdup(buffer);
break;
}
@@ -1042,7 +1044,7 @@ ippWrite(http_t *http, /* I - HTTP data */
{
int i; /* Looping var */
int n; /* Length of data */
unsigned char buffer[8192], /* Data buffer */
char buffer[8192], /* Data buffer */
*bufptr; /* Pointer into buffer */
ipp_attribute_t *attr; /* Current attribute */
@@ -1071,7 +1073,7 @@ ippWrite(http_t *http, /* I - HTTP data */
*bufptr++ = ipp->request.any.request_id >> 8;
*bufptr++ = ipp->request.any.request_id;
if (httpWrite(http, (char *)buffer, bufptr - buffer) < 0)
if (httpWrite(http, buffer, bufptr - buffer) < 0)
{
DEBUG_puts("ippWrite: Could not write IPP header...");
return (IPP_ERROR);
@@ -1327,7 +1329,7 @@ ippWrite(http_t *http, /* I - HTTP data */
* Write the data out...
*/
if (httpWrite(http, (char *)buffer, bufptr - buffer) < 0)
if (httpWrite(http, buffer, bufptr - buffer) < 0)
{
DEBUG_puts("ippWrite: Could not write IPP attribute...");
return (IPP_ERROR);
@@ -1350,7 +1352,7 @@ ippWrite(http_t *http, /* I - HTTP data */
*/
buffer[0] = IPP_TAG_END;
if (httpWrite(http, (char *)buffer, 1) < 0)
if (httpWrite(http, buffer, 1) < 0)
{
DEBUG_puts("ippWrite: Could not write IPP end-tag...");
return (IPP_ERROR);
@@ -1427,13 +1429,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 */
unsigned 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 */
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 */
/*
@@ -1441,7 +1443,7 @@ ipp_read(http_t *http, /* I - Client connection */
*/
for (tbytes = 0; tbytes < length; tbytes += bytes, buffer += bytes)
if ((bytes = httpRead(http, (char *)buffer, length - tbytes)) <= 0)
if ((bytes = httpRead(http, buffer, length - tbytes)) <= 0)
break;
/*
+1 -2
Ver Arquivo
@@ -87,12 +87,11 @@ 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 = 0x44,
IPP_TAG_KEYWORD,
IPP_TAG_URI,
IPP_TAG_URISCHEME,
IPP_TAG_CHARSET,
+1 -2
Ver Arquivo
@@ -149,8 +149,7 @@ cupsLangGet(const char *language) /* I - Language or locale */
* operating systems.
*/
if (language == NULL || language[0] == '\0' ||
strcmp(language, "POSIX") == 0)
if (language == NULL || language[0] == '\0')
strcpy(langname, "C");
else
strcpy(langname, language);
+1 -6
Ver Arquivo
@@ -177,12 +177,7 @@ typedef struct cups_lang_str /**** Language Cache Structure ****/
* Prototypes...
*/
# 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 */
# define cupsLangDefault() cupsLangGet(setlocale(LC_ALL, ""))
extern char *cupsLangEncoding(cups_lang_t *lang);
extern void cupsLangFlush(void);
extern void cupsLangFree(cups_lang_t *lang);
+40 -12
Ver Arquivo
@@ -33,6 +33,7 @@
* 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.
*/
/*
@@ -47,7 +48,8 @@
* Local functions...
*/
static void ppd_defaults(ppd_file_t *ppd, ppd_group_t *g);
static void ppd_defaults(ppd_group_t *g);
static void ppd_default(ppd_option_t *o);
/*
@@ -294,7 +296,12 @@ ppdMarkDefaults(ppd_file_t *ppd)/* I - PPD file record */
return;
for (i = ppd->num_groups, g = ppd->groups; i > 0; i --, g ++)
ppd_defaults(ppd, 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;
}
@@ -365,15 +372,15 @@ ppdMarkOption(ppd_file_t *ppd, /* I - PPD file record */
if (strcmp(option, "PageSize") == 0)
{
if ((o = ppdFindOption(ppd, "PageRegion")) != NULL)
for (i = 0; i < o->num_choices; i ++)
o->choices[i].marked = 0;
o = ppdFindOption(ppd, "PageRegion");
for (i = 0; i < o->num_choices; i ++)
o->choices[i].marked = 0;
}
else
{
if ((o = ppdFindOption(ppd, "PageSize")) != NULL)
for (i = 0; i < o->num_choices; i ++)
o->choices[i].marked = 0;
o = ppdFindOption(ppd, "PageSize");
for (i = 0; i < o->num_choices; i ++)
o->choices[i].marked = 0;
}
}
}
@@ -387,8 +394,7 @@ ppdMarkOption(ppd_file_t *ppd, /* I - PPD file record */
*/
static void
ppd_defaults(ppd_file_t *ppd, /* I - PPD file */
ppd_group_t *g) /* I - Group to default */
ppd_defaults(ppd_group_t *g) /* I - Group to default */
{
int i; /* Looping var */
ppd_option_t *o; /* Current option */
@@ -400,10 +406,32 @@ ppd_defaults(ppd_file_t *ppd, /* I - PPD file */
for (i = g->num_options, o = g->options; i > 0; i --, o ++)
if (strcmp(o->keyword, "PageRegion") != 0)
ppdMarkOption(ppd, o->keyword, o->defchoice);
ppd_default(o);
for (i = g->num_subgroups, sg = g->subgroups; i > 0; i --, sg ++)
ppd_defaults(ppd, 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;
}
+70 -126
Ver Arquivo
@@ -70,8 +70,6 @@
# 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 */
@@ -121,14 +119,14 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
* Free all strings at the top level...
*/
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(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);
/*
* Free any emulations...
@@ -138,11 +136,11 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
{
for (i = ppd->num_emulations, emul = ppd->emulations; i > 0; i --, emul ++)
{
safe_free(emul->start);
safe_free(emul->stop);
free(emul->start);
free(emul->stop);
}
safe_free(ppd->emulations);
free(ppd->emulations);
}
/*
@@ -154,7 +152,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);
safe_free(ppd->groups);
free(ppd->groups);
}
/*
@@ -162,14 +160,14 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
*/
if (ppd->num_sizes > 0)
safe_free(ppd->sizes);
free(ppd->sizes);
/*
* Free any constraints...
*/
if (ppd->num_consts > 0)
safe_free(ppd->consts);
free(ppd->consts);
/*
* Free any fonts...
@@ -178,9 +176,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 ++)
safe_free(*font);
free(*font);
safe_free(ppd->fonts);
free(ppd->fonts);
}
/*
@@ -188,13 +186,13 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
*/
if (ppd->num_profiles > 0)
safe_free(ppd->profiles);
free(ppd->profiles);
/*
* Free the whole record...
*/
safe_free(ppd);
free(ppd);
}
@@ -217,7 +215,7 @@ ppd_free_group(ppd_group_t *group) /* I - Group to free */
i --, option ++)
ppd_free_option(option);
safe_free(group->options);
free(group->options);
}
if (group->num_subgroups > 0)
@@ -227,7 +225,7 @@ ppd_free_group(ppd_group_t *group) /* I - Group to free */
i --, subgroup ++)
ppd_free_group(subgroup);
safe_free(group->subgroups);
free(group->subgroups);
}
}
@@ -248,9 +246,9 @@ ppd_free_option(ppd_option_t *option) /* I - Option to free */
for (i = option->num_choices, choice = option->choices;
i > 0;
i --, choice ++)
safe_free(choice->code);
free(choice->code);
safe_free(option->choices);
free(option->choices);
}
}
@@ -287,7 +285,7 @@ ppd_get_group(ppd_file_t *ppd, /* I - PPD file */
ppd->num_groups ++;
memset(group, 0, sizeof(ppd_group_t));
strncpy(group->text, name, sizeof(group->text) - 1);
strcpy(group->text, name);
}
return (group);
@@ -326,7 +324,7 @@ ppd_get_option(ppd_group_t *group, /* I - Group */
group->num_options ++;
memset(option, 0, sizeof(ppd_option_t));
strncpy(option->keyword, name, sizeof(option->keyword) - 1);
strcpy(option->keyword, name);
}
return (option);
@@ -358,7 +356,7 @@ ppd_add_choice(ppd_option_t *option, /* I - Option */
option->num_choices ++;
memset(choice, 0, sizeof(ppd_choice_t));
strncpy(choice->choice, name, sizeof(choice->choice) - 1);
strcpy(choice->choice, name);
return (choice);
}
@@ -388,7 +386,7 @@ ppd_add_size(ppd_file_t *ppd, /* I - PPD file */
ppd->num_sizes ++;
memset(size, 0, sizeof(ppd_size_t));
strncpy(size->name, name, sizeof(size->name) - 1);
strcpy(size->name, name);
return (size);
}
@@ -451,14 +449,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.
*/
safe_free(string);
if (string != NULL)
free(string);
return (NULL);
}
DEBUG_printf(("ppdOpen: keyword = %s, string = %08x\n", keyword, string));
safe_free(string);
if (string != NULL)
free(string);
/*
* Allocate memory for the PPD file record...
@@ -601,10 +599,9 @@ ppdOpen(FILE *fp) /* I - File to read from */
ppd->num_profiles ++;
memset(profile, 0, sizeof(ppd_profile_t));
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),
strcpy(profile->resolution, name);
strcpy(profile->media_type, text);
sscanf(string, "%f%f%f%f%f%f%f%f%f%f", &(profile->density),
profile->matrix[0] + 0, profile->matrix[0] + 1,
profile->matrix[0] + 2, profile->matrix[1] + 0,
profile->matrix[1] + 1, profile->matrix[1] + 2,
@@ -630,8 +627,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
string = NULL;
}
else if (strcmp(keyword, "VariablePaperSize") == 0 &&
strcmp(string, "True") == 0 &&
!ppd->variable_sizes)
strcmp(string, "True") == 0)
{
ppd->variable_sizes = 1;
@@ -650,26 +646,25 @@ ppdOpen(FILE *fp) /* I - File to read from */
CUPS_MSG_GENERAL))) == NULL)
{
ppdClose(ppd);
safe_free(string);
free(string);
return (NULL);
}
if ((option = ppd_get_option(group, "PageSize")) == NULL)
{
ppdClose(ppd);
safe_free(string);
free(string);
return (NULL);
}
if ((choice = ppd_add_choice(option, "Custom")) == NULL)
{
ppdClose(ppd);
safe_free(string);
free(string);
return (NULL);
}
strncpy(choice->text, cupsLangString(language, CUPS_MSG_VARIABLE),
sizeof(choice->text) - 1);
strcpy(choice->text, cupsLangString(language, CUPS_MSG_VARIABLE));
group = NULL;
option = NULL;
}
@@ -691,62 +686,20 @@ 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)
strcmp(name, "True") == 0 &&
ppd->variable_sizes)
{
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);
safe_free(string);
free(string);
return (NULL);
}
if ((choice = ppdFindChoice(option, "Custom")) == NULL)
{
ppdClose(ppd);
safe_free(string);
free(string);
return (NULL);
}
@@ -860,7 +813,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (group == NULL)
{
ppdClose(ppd);
safe_free(string);
free(string);
return (NULL);
}
@@ -873,7 +826,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (option == NULL)
{
ppdClose(ppd);
safe_free(string);
free(string);
return (NULL);
}
@@ -890,28 +843,23 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (text[0])
{
strncpy(option->text, text, sizeof(option->text) - 1);
strcpy(option->text, text);
ppd_fix(option->text);
}
else
{
if (strcmp(name, "PageSize") == 0)
strncpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_SIZE),
sizeof(option->text) - 1);
strcpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_SIZE));
else if (strcmp(name, "MediaType") == 0)
strncpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_TYPE),
sizeof(option->text) - 1);
strcpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_TYPE));
else if (strcmp(name, "InputSlot") == 0)
strncpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_SOURCE),
sizeof(option->text) - 1);
strcpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_SOURCE));
else if (strcmp(name, "ColorModel") == 0)
strncpy(option->text, cupsLangString(language, CUPS_MSG_OUTPUT_MODE),
sizeof(option->text) - 1);
strcpy(option->text, cupsLangString(language, CUPS_MSG_OUTPUT_MODE));
else if (strcmp(name, "Resolution") == 0)
strncpy(option->text, cupsLangString(language, CUPS_MSG_RESOLUTION),
sizeof(option->text) - 1);
strcpy(option->text, cupsLangString(language, CUPS_MSG_RESOLUTION));
else
strncpy(option->text, name, sizeof(option->text) - 1);
strcpy(option->text, name);
}
option->section = PPD_ORDER_ANY;
@@ -927,7 +875,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (group == NULL)
{
ppdClose(ppd);
safe_free(string);
free(string);
return (NULL);
}
@@ -943,7 +891,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (option == NULL)
{
ppdClose(ppd);
safe_free(string);
free(string);
return (NULL);
}
@@ -958,7 +906,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
else
option->ui = PPD_UI_PICKONE;
strncpy(option->text, text, sizeof(option->text) - 1);
strcpy(option->text, text);
option->section = PPD_ORDER_JCL;
group = NULL;
@@ -975,7 +923,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (group != NULL)
{
ppdClose(ppd);
safe_free(string);
free(string);
return (NULL);
}
@@ -997,7 +945,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (group == NULL || subgroup != NULL)
{
ppdClose(ppd);
safe_free(string);
free(string);
return (NULL);
}
@@ -1010,7 +958,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (subgroup == NULL)
{
ppdClose(ppd);
safe_free(string);
free(string);
return (NULL);
}
@@ -1021,7 +969,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
memset(subgroup, 0, sizeof(ppd_group_t));
ppd_decode(string);
ppd_fix(string);
strncpy(subgroup->text, string, sizeof(subgroup->text) - 1);
strcpy(subgroup->text, string);
}
else if (strcmp(keyword, "CloseSubGroup") == 0)
subgroup = NULL;
@@ -1031,7 +979,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (sscanf(string, "%f%s%s", &order, name, keyword) != 3)
{
ppdClose(ppd);
safe_free(string);
free(string);
return (NULL);
}
@@ -1100,15 +1048,14 @@ ppdOpen(FILE *fp) /* I - File to read from */
for (i = 0; i < group->num_options; i ++)
if (strcmp(keyword, group->options[i].keyword) == 0)
{
strncpy(group->options[i].defchoice, string,
sizeof(group->options[i].defchoice) - 1);
strcpy(group->options[i].defchoice, string);
break;
}
group = NULL;
}
else
strncpy(option->defchoice, string, sizeof(option->defchoice) - 1);
strcpy(option->defchoice, string);
}
else if (strcmp(keyword, "UIConstraints") == 0 ||
strcmp(keyword, "NonUIConstraints") == 0)
@@ -1122,7 +1069,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (constraint == NULL)
{
ppdClose(ppd);
safe_free(string);
free(string);
return (NULL);
}
@@ -1130,14 +1077,14 @@ ppdOpen(FILE *fp) /* I - File to read from */
constraint += ppd->num_consts;
ppd->num_consts ++;
switch (sscanf(string, "%40s%40s%40s%40s", constraint->option1,
switch (sscanf(string, "%s%s%s%s", constraint->option1,
constraint->choice1, constraint->option2,
constraint->choice2))
{
case 0 : /* Error */
case 1 : /* Error */
ppdClose(ppd);
safe_free(string);
free(string);
break;
case 2 : /* Two options... */
@@ -1213,7 +1160,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (mask & PPD_TEXT)
{
strncpy(choice->text, text, sizeof(choice->text) - 1);
strcpy(choice->text, text);
ppd_fix(choice->text);
}
else if (strcmp(name, "True") == 0)
@@ -1221,7 +1168,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
else if (strcmp(name, "False") == 0)
strcpy(choice->text, "No");
else
strncpy(choice->text, name, sizeof(choice->text) - 1);
strcpy(choice->text, name);
if (strncmp(keyword, "JCL", 3) == 0)
ppd_decode(string); /* Decode quoted string */
@@ -1230,7 +1177,8 @@ ppdOpen(FILE *fp) /* I - File to read from */
string = NULL; /* Don't free this string below */
}
safe_free(string);
if (string != NULL)
free(string);
}
#ifdef DEBUG
@@ -1318,7 +1266,7 @@ ppdOpenFd(int fd) /* I - File to read from */
ppd = ppdOpen(fp);
safe_free(fp);
free(fp);
}
else
ppd = NULL;
@@ -1406,11 +1354,7 @@ compare_strings(char *s, /* I - First string */
* Bounce out if *s and *t aren't both digits...
*/
if (isdigit(*s) && !isdigit(*t))
return (1);
else if (!isdigit(*s) && isdigit(*t))
return (-1);
else if (!isdigit(*s) || !isdigit(*t))
if (!isdigit(*s) || !isdigit(*t))
continue;
if (*s < *t)
-1
Ver Arquivo
@@ -153,7 +153,6 @@ 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 <= 13) ||
*bufptr == 26 || *bufptr == 27)
(*bufptr >= 8 && *bufptr <= 10) ||
*bufptr == 13 || *bufptr == 26)
{
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 <= 13) ||
*bufptr == 26 || *bufptr == 27)
(*bufptr >= 8 && *bufptr <= 10) ||
*bufptr == 13 || *bufptr == 26)
{
n --;
bufptr ++;
+20 -69
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_OPERATION, IPP_TAG_INTEGER, "job-id", job);
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-id", job);
/*
* Do the request...
@@ -152,6 +152,7 @@ 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 */
@@ -217,7 +218,8 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
DEBUG_puts("cupsDoFileRequest: post...");
if (httpPost(http, resource))
continue;
if (httpPost(http, resource))
break;
/*
* Send the IPP data and wait for the response...
@@ -277,14 +279,8 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
else
break;
}
else if (status == HTTP_ERROR)
{
if (http->error != ENETDOWN && http->error != ENETUNREACH)
continue;
else
break;
}
else if (status != HTTP_OK)
if (status != HTTP_OK)
{
DEBUG_printf(("cupsDoFileRequest: error %d...\n", status));
@@ -505,6 +501,7 @@ 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 */
/*
@@ -520,29 +517,33 @@ 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...
* And send a request to the HTTP server using "if-modified-since"...
*/
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);
}
@@ -723,17 +724,17 @@ cupsPrintFile(const char *name, /* I - Printer or class name */
*/
if (cupsGetOption("raw", num_options, options))
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
ippAddString(request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/vnd.cups-raw");
else
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
ippAddString(request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/octet-stream");
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "requesting-user-name",
NULL, cupsUser());
if (title)
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL, title);
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL, title);
/*
* Then add all options on the command-line...
@@ -888,56 +889,6 @@ 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
@@ -0,0 +1,62 @@
%%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)/data
$(CP) $(FILES) $(DATADIR)/data
-$(MKDIR) $(DATADIR)
$(CP) $(FILES) $(DATADIR)
#
# 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
stp.shtml sum.shtml svd.shtml
DOCIMAGES = images/cups-block-diagram.gif images/cups-large.gif \
images/cups-medium.gif images/cups-small.gif
WEBPAGES = cups.css cupsdoc.css index.html documentation.html
@@ -86,7 +86,7 @@ install:
overview.pdf: overview.html
echo Formatting $@...
htmldoc --duplex --compression=9 --jpeg --webpage -f overview.pdf overview.html
htmldoc --duplex --compression=9 --jpeg --webpage -f $@ $<
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>
+121 -118
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:19990922200456Z)/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:19990521210307Z)/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,10 +400,13 @@ endobj
endobj
204 0 obj<</Type/Page/Parent 191 0 R/Contents 205 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>>>endobj
205 0 obj<</Length 206 0 R/Filter/FlateDecode>>stream
xÚ­•ÁŽÚ0†ï<ÅY‰dI!áF­Š6%aO\ÜØW‰Mm£-o_*­ºÊ!Ì|ÿxæøÑñ ¯/F>!äUçSÖy~‰Á‹!+ô›p4€ w}X‘‚Âr"Ÿ²ï6dèF6ÈF® s=˜®“f<?T„)¤(g6ažw÷Cží¼,ù;e[›ˆ›‰@%ˆZ÷#¨þªŽ[p~û‘ë_Ù?Á­r×(8Óeâxnlõ¦œt{Vo‰ÚƤDì–¯ ÷-ñ7øb6kÀÓ£T¤‚SD('0#’n™¹å‚i#N–FÂýY‹ðB½#A`‚+ʨTú,\Hs–*àß¡¦HéÉò:|+PU<\uºº‡NI~Tµ}÷\¨¸Yrù¨EÒõæ·–äÆö6»}ÓTãíß&wÝ`Ç®N×[ìëÚqYcù+Ì8snÖX‚)á#wx1ŸÏÁ ¢‘;èÕ Öp¾>ÝXŠ2eêÙt±@…Ú<µêç"IžO3Ÿ`L •ðº¿<+#ÁÑöRàµb¯^¦úq÷à eÄVjH¥g¤7Añœ—­‘þ0öàRøœå †!ˆÉÖî?SÃuÉ1)OÈ”THw8—í‘a7j_ž~oõ?(&6':çœéÇñ½¡AÔwc­ª_æó<ë|íü ÕàIendstream
xÚ­•OÚ0Åï|Š9²Ò&K 7
l…T´) {ââÆp•ØÔ6Úòíkc•V%]å@Æ¿7ö¼?ZÀ „nòªõ)k=½ÄÄæMЃŒ¶CX`yŽê!ûîJžýÈyÏ‘ïÊüÆË$…‰ÈwrM4Ü-èAËþ+Ï6…(KñÎøÚ-¤— )µ.…o{ÐóU]3tàü#?<³Wa×Êm«àç‰ø¡Ó ^°õN:½9ád– IIø5ß4tÄßà³Éäžî•Æ
f\£,HŽ0AÅÖÜÞrɶ糹G"Í­„ÿ³…~'aD+Æ™Òf/B*»—)ð¯·PÓ?¤õd~ H±–¤ª¬ w.n¡SÌw’é½±ïVHÝ€›%·¸ª¦I—˜ßRáÿŒímrûf¨ÖÛ¿Mîœ`ÏE§×)áUoPžb¬þ1Â\pï*Æ
l ™áÙt:…  üÞc° ç›Ý ¡×¶ŸU›JRèÕÃ]ç9K’§ÃÌG”2K$%¼nOèdxÆ^fì)ϵ=N!“„«» zbͪmyøÕ²ú¼c›qæ‚byh(ÅŠ˜#ÌÕ] ÅËØ<âGøÂ8º1X¬ŒM̵ÈÅÑÛÑqÑÑ{aßúŸéE?6²æU×~žf­¯­_Ð&Ùûendstream
endobj
206 0 obj
536
522
endobj
207 0 obj<</Type/Page/Parent 191 0 R/Contents 208 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
208 0 obj<</Length 209 0 R/Filter/FlateDecode>>stream
@@ -839,122 +842,122 @@ xref
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
0000039946 00000 n
0000040059 00000 n
0000040265 00000 n
0000040286 00000 n
0000040441 00000 n
0000042496 00000 n
0000042518 00000 n
0000042673 00000 n
0000043454 00000 n
0000043475 00000 n
0000043530 00000 n
0000043635 00000 n
0000043779 00000 n
0000043885 00000 n
0000044005 00000 n
0000044114 00000 n
0000044263 00000 n
0000044373 00000 n
0000044480 00000 n
0000044634 00000 n
0000044745 00000 n
0000044862 00000 n
0000044978 00000 n
0000045142 00000 n
0000045248 00000 n
0000045367 00000 n
0000045482 00000 n
0000045586 00000 n
0000045742 00000 n
0000045851 00000 n
0000045966 00000 n
0000046078 00000 n
0000046177 00000 n
0000046324 00000 n
0000046421 00000 n
0000046521 00000 n
0000046679 00000 n
0000046819 00000 n
0000046919 00000 n
0000047026 00000 n
0000047176 00000 n
0000047276 00000 n
0000047383 00000 n
0000047531 00000 n
0000047631 00000 n
0000047738 00000 n
0000047888 00000 n
0000047988 00000 n
0000048095 00000 n
0000048241 00000 n
0000048341 00000 n
0000048448 00000 n
0000048599 00000 n
0000048699 00000 n
0000048806 00000 n
0000048954 00000 n
0000049054 00000 n
0000049161 00000 n
0000049311 00000 n
0000049411 00000 n
0000049518 00000 n
0000049650 00000 n
0000049757 00000 n
0000049856 00000 n
0000049974 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
0000038419 00000 n
0000039346 00000 n
0000039367 00000 n
0000039507 00000 n
0000039911 00000 n
0000039932 00000 n
0000040045 00000 n
0000040251 00000 n
0000040272 00000 n
0000040427 00000 n
0000042482 00000 n
0000042504 00000 n
0000042659 00000 n
0000043440 00000 n
0000043461 00000 n
0000043516 00000 n
0000043621 00000 n
0000043765 00000 n
0000043871 00000 n
0000043991 00000 n
0000044100 00000 n
0000044249 00000 n
0000044359 00000 n
0000044466 00000 n
0000044620 00000 n
0000044731 00000 n
0000044848 00000 n
0000044964 00000 n
0000045128 00000 n
0000045234 00000 n
0000045353 00000 n
0000045468 00000 n
0000045572 00000 n
0000045728 00000 n
0000045837 00000 n
0000045952 00000 n
0000046064 00000 n
0000046163 00000 n
0000046310 00000 n
0000046407 00000 n
0000046507 00000 n
0000046665 00000 n
0000046805 00000 n
0000046905 00000 n
0000047012 00000 n
0000047162 00000 n
0000047262 00000 n
0000047369 00000 n
0000047517 00000 n
0000047617 00000 n
0000047724 00000 n
0000047874 00000 n
0000047974 00000 n
0000048081 00000 n
0000048227 00000 n
0000048327 00000 n
0000048434 00000 n
0000048585 00000 n
0000048685 00000 n
0000048792 00000 n
0000048940 00000 n
0000049040 00000 n
0000049147 00000 n
0000049297 00000 n
0000049397 00000 n
0000049504 00000 n
0000049636 00000 n
0000049743 00000 n
0000049842 00000 n
0000049960 00000 n
trailer
<</Size 320/Root 319 0 R/Info 1 0 R>>
startxref
50160
50146
%%EOF
+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 679 1999-09-22 20:06:27Z mike $" tag:
information is provided by the CVS "$Id: cmp.shtml 351 1999-05-21 20:54:09Z mike $" tag:
<UL>
<PRE>
/*
* "$Id: cmp.shtml 679 1999-09-22 20:06:27Z mike $"
* "$Id: cmp.shtml 351 1999-05-21 20:54:09Z mike $"
*
* Description of file contents.
*
@@ -372,14 +372,14 @@ information is provided by the CVS "$Id: cmp.shtml 679 1999-09-22 20:06:27Z mike
</UL>
The bottom of each source file shall contain a trailer giving the name
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
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
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 679 1999-09-22 20:06:27Z mike $".
* End of "$Id: cmp.shtml 351 1999-05-21 20:54:09Z mike $".
*/
</PRE>
</UL>
+2
Ver Arquivo
@@ -55,6 +55,8 @@ 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>
+97 -152
Ver Arquivo
@@ -1,13 +1,13 @@
<HTML>
<HEAD>
<TITLE>CUPS Interface Design Description</TITLE>
<TITLE>DRAFT - 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>CUPS Interface Design Description</H1></A><BR>
<H1>DRAFT - CUPS Interface Design Description</H1></A><BR>
CUPS-IDD-1.0<BR>
Easy Software Products<BR>
Copyright 1997-1999, All Rights Reserved<BR>
@@ -53,24 +53,26 @@ 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 Internet Printing Protocol</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>
<UL>
<LI><A HREF=#4_6_1>4.6.1 Get Default Destination (CUPS_GET_DEFAULT =
<LI><A HREF=#4_7_1>4.7.1 Get Default Destination (CUPS_GET_DEFAULT =
0x4001)</A></LI>
<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><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>
<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 =
<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 =
0x400A)</A></LI>
</UL>
<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>
<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>
</UL>
<B><A HREF=#5>5 5 - Directories</A></B>
<BR>
@@ -131,10 +133,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>
@@ -241,17 +243,17 @@ specific model of printer. </P>
<P>This string attribute specifies a color profile of the form: </P>
<UL>
<PRE>
resolution/type density gamma m00 m01 m02 m10 m11 m12 m20 m21 m22
resolution/type density 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> and <I>gamma</I> values define gamma and density
adjustment function such that: </P>
<P>The <I>density</I> value defines a gamma and density adjustment
function such that: </P>
<UL>
<PRE>
f(x) = density * x<SUP>gamma</SUP>
f(x) = d * x<SUP>1/d</SUP>
</PRE>
</UL>
<P>The <I>m00</I> through <I>m22</I> values define a 3x3 transformation
@@ -283,18 +285,13 @@ 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>Surrounds a class definition.</TD></TR>
<BR> &lt;/Class&gt;</TD><TD></TR>
<TR><TD>&lt;DefaultClass name&gt;
<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>
<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>
</TABLE>
</CENTER>
</P>
@@ -307,92 +304,43 @@ 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>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>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>&lt;Location path&gt;
<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>
<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>
</TABLE>
</CENTER>
</P>
@@ -405,28 +353,22 @@ 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>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>
<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>
<TR><TD>&lt;Printer name&gt;
<BR> &lt;/Printer&gt;</TD><TD>Surrounds the printer definition.</TD></TR>
<TR><TD>State</TD><TD>Specifies the initial state of the printer; can
be &quot;Idle&quot; or &quot;Stopped&quot;.</TD></TR>
<BR> &lt;/Printer&gt;</TD><TD></TR>
<TR><TD>State</TD><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. The URI method name is &quot;socket&quot;. </P>
The default IP service port is 9100. </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>
@@ -603,7 +545,10 @@ 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 Internet Printing Protocol</A></H2>
<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>
<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
@@ -618,21 +563,20 @@ 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_6_1>4.6.1 Get Default Destination (CUPS_GET_DEFAULT =
<H3><A NAME=4_7_1>4.7.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_6_2>4.6.2 Get Printers (CUPS_GET_PRINTERS = 0x4002)</A></H3>
<H3><A NAME=4_7_2>4.7.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_6_3>4.6.3 Add Printer (CUPS_ADD_PRINTER = 0x4003)</A></H3>
<H3><A NAME=4_7_3>4.7.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>
@@ -645,19 +589,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_6_4>4.6.4 Delete Printer (CUPS_DELETE_PRINTER = 0x4004)</A>
<H3><A NAME=4_7_4>4.7.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_6_5>4.6.5 Get Classes (CUPS_GET_CLASSES = 0x4005)</A></H3>
<H3><A NAME=4_7_5>4.7.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_6_6>4.6.6 Add Class (CUPS_ADD_CLASS = 0x4006)</A></H3>
<H3><A NAME=4_7_6>4.7.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>
@@ -667,27 +611,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_6_7>4.6.7 Delete Class (CUPS_DELETE_CLASS = 0x4007)</A></H3>
<H3><A NAME=4_7_7>4.7.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_6_8>4.6.8 Accept Jobs (CUPS_ACCEPT_JOBS = 0x4008)</A></H3>
<H3><A NAME=4_7_8>4.7.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_6_9>4.6.9 Reject Jobs (CUPS_REJECT_JOBS = 0x4009)</A></H3>
<H3><A NAME=4_7_9>4.7.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_6_10>4.6.10 Set Default Destination (CUPS_SET_DEFAULT =
<H3><A NAME=4_7_10>4.7.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
@@ -696,27 +640,28 @@ 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_7>4.7 Line Printer Daemon Protocol</A></H2>
<H2><A NAME=4_8>4.8 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>
<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>
<H2><A NAME=4_9>4.9 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>
<P>The URI method name for SMB is &quot;smb&quot;. </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>
<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>accept</CODE>, <CODE>cupsd</CODE>, <CODE>lpadmin</CODE>, <CODE>
lpc</CODE>, and <CODE>reject</CODE> commands reside here. </DD>
<DD>The <CODE>lpc</CODE> and <CODE>cupsd</CODE> commands resize 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>
+1206 -1147
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+109 -143
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>CUPS Interface Design Description</TITLE>
<TITLE>DRAFT - 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 gamma m00 m01 m02 m10 m11 m12 m20 m21 m22
resolution/type density 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> and <I>gamma</I> values define gamma and density
adjustment function such that:
<P>The <I>density</I> value defines a gamma and density adjustment function
such that:
<UL><PRE>
f(x) = density * x<SUP>gamma</SUP>
f(x) = d * x<SUP>1/d</SUP>
</PRE></UL>
<P>The <I>m00</I> through <I>m22</I> values define a 3x3 transformation
@@ -269,33 +269,28 @@ followed by its value. The following directives are understood:
<TR>
<TD>&lt;Class name&gt;<BR>
&lt;/Class&gt;</TD>
<TD>Surrounds a class definition.</TD>
<TD></TD>
</TR>
<TR>
<TD>&lt;DefaultClass name&gt;<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 "Yes" or "No".</TD>
<TD></TD>
</TR>
<TR>
<TD>Info</TD>
<TD>A textual description of the class.</TD>
<TD></TD>
</TR>
<TR>
<TD>Location</TD>
<TD>A textual location of the class.</TD>
<TD></TD>
</TR>
<TR>
<TD>MoreInfo</TD>
<TD>A URL pointing to additional information on the class.</TD>
<TD></TD>
</TR>
<TR>
<TD>Printer</TD>
<TD>Specifies a printer that is a member of the class.</TD>
<TD></TD>
</TR>
</TABLE></CENTER>
@@ -315,208 +310,180 @@ followed by its value. The following directives are understood:
</TR>
<TR>
<TD>AccessLog</TD>
<TD>logs/access_log</TD>
<TD>Specifies the location of the access log file.</TD>
<TD></TD>
<TD>Specifies the location of the access log file (default
"logs/access_log").</TD>
</TR>
<TR>
<TD>Allow</TD>
<TD>-</TD>
<TD>Allows connections from the specified host, network, or
domain.</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>AuthClass</TD>
<TD>-</TD>
<TD>Specifies what level of authentication is required; may be either
"User", "System", or "Group".</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>AuthType</TD>
<TD>None</TD>
<TD>Specifies the type of authentication to perform; may be either
"None" or "Basic".</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>BrowseAddress</TD>
<TD>255.255.255.255</TD>
<TD>Specifies a broadcast address to send CUPS browsing packets to.</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>BrowseInterval</TD>
<TD>30</TD>
<TD>Specifies the number of seconds between browsing updates.</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>BrowsePort</TD>
<TD>631</TD>
<TD>Specifies the UDP port number to use for browse packets.</TD>
<TD></TD>
<TD></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>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>Browsing</TD>
<TD>On</TD>
<TD>Specifies whether or not printer and class browsing is enabled; can
be "On" or "Off".</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>DefaultCharset</TD>
<TD>iso-8859-1</TD>
<TD>Specifies the default character set.</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>DefaultLanguage</TD>
<TD>current locale</TD>
<TD>Specifies the default language.</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>Deny</TD>
<TD>-</TD>
<TD>Refuses connections from the specified host, network, or
domain.</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>DocumentRoot</TD>
<TD>/usr/share/cups/doc</TD>
<TD>Specifies the document data root directory.</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>ErrorLog</TD>
<TD>logs/error_log</TD>
<TD>Specifies the error log file location.</TD>
<TD></TD>
<TD></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>
<TD></TD>
<TD></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 "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>
<TD></TD>
<TD></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 "On" or "Off".</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>KeepAlive</TD>
<TD>On</TD>
<TD>Specifies whether or not to use the HTTP Keep-Alive feature; may
be "On" or "Off".</TD>
<TD></TD>
<TD></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>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>&lt;Location path&gt;<BR>
&lt;/Location&gt;</TD>
<TD>-</TD>
<TD>Specifies a location to restrict access to.</TD>
<TD></TD>
<TD></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 "debug", "info", "warn", "error",
or "none", in decreasing order or verbosity.</TD>
<TD></TD>
<TD></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>
<TD></TD>
<TD></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>
<TD></TD>
<TD></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>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>Order</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>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>PageLog</TD>
<TD>logs/page_log</TD>
<TD>Specifies the location of the page log file.</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>Port</TD>
<TD>631</TD>
<TD>Specifies a port number to listen to for HTTP connections.</TD>
<TD></TD>
<TD></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>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>ServerAdmin</TD>
<TD>root@ServerName</TD>
<TD>Specifies the person to contact with problems.</TD>
<TD></TD>
<TD></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>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>ServerRoot</TD>
<TD>/var/cups</TD>
<TD>Specifies the root directory for server data files.</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>SystemGroup</TD>
<TD>root, sys, system</TD>
<TD>Specifies the group name used for System class authentication.</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>TempDir</TD>
<TD>/var/tmp</TD>
<TD>Specifies the temporary directory to use.</TD>
<TD></TD>
<TD></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>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>User</TD>
<TD>lp</TD>
<TD>Specifies the user that is used when running external programs.</TD>
<TD></TD>
<TD></TD>
</TR>
</TABLE></CENTER>
@@ -533,41 +500,35 @@ 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>Surrounds the printer definition for a default destination.</TD>
<TD></TD>
</TR>
<TR>
<TD>DeviceURI</TD>
<TD>Specifies the device-uri attribute for the printer.</TD>
<TD></TD>
</TR>
<TR>
<TD>Info</TD>
<TD>A textual description of the printer.</TD>
<TD></TD>
</TR>
<TR>
<TD>Location</TD>
<TD>A textual location of the printer.</TD>
<TD></TD>
</TR>
<TR>
<TD>MoreInfo</TD>
<TD>A URL pointing to additional information on the printer.</TD>
<TD></TD>
</TR>
<TR>
<TD>&lt;Printer name&gt;<BR>
&lt;/Printer&gt;</TD>
<TD>Surrounds the printer definition.</TD>
<TD></TD>
</TR>
<TR>
<TD>State</TD>
<TD>Specifies the initial state of the printer; can be "Idle" or
"Stopped".</TD>
<TD></TD>
</TR>
</TABLE></CENTER>
@@ -576,7 +537,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 URI method name is "socket".
The default IP service port is 9100.
<H2>CUPS Browsing Protocol</H2>
@@ -951,6 +912,12 @@ 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:
@@ -975,8 +942,6 @@ Raw files is <CODE>application/vnd.cups-raw</CODE>.
</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>
@@ -1097,15 +1062,17 @@ 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>.
<P>The URI method name for SMB is "smb".
<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>.
<H1>5 - Directories</H1>
@@ -1116,15 +1083,14 @@ 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>accept</CODE>, <CODE>cupsd</CODE>,
<CODE>lpadmin</CODE>, <CODE>lpc</CODE>, and <CODE>reject</CODE>
commands reside here.
<DD>The <CODE>lpc</CODE> and <CODE>cupsd</CODE> commands resize 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
+9 -14
Ver Arquivo
@@ -11,7 +11,7 @@
<TD><H1 ALIGN=right>An Overview of the<BR>
Common UNIX Printing System</H1></DIV>
<P ALIGN=right>September 14, 1999<BR>
<P ALIGN=right>May 11, 1999<BR>
Michael Sweet, Easy Software Products<BR>
Copyright 1998-1999, All Rights Reserved.</P>
</TD>
@@ -163,9 +163,7 @@ 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. Printer classes are collections of printers. Jobs
sent to a class are forwarded to the first available printer in the
class, round-robin fashion.
queues and classes.
<P>The MIME type files list the supported MIME types (text/plain,
application/postscript, etc.) and "magic" rules for automatically
@@ -176,16 +174,13 @@ 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>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
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
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>
@@ -204,8 +199,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,
IPP, SMB, and AppSocket (JetDirect) connections are provided in
device or network connection. Backends for serial, parallel, LPD, TFTP,
FTP, 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.
+6 -38
Ver Arquivo
@@ -1,13 +1,13 @@
<HTML>
<HEAD>
<TITLE>CUPS Software Administrators Manual</TITLE>
<TITLE>DRAFT - 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>CUPS Software Administrators Manual</H1></A><BR>
<H1>DRAFT - 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://[username:password@]hostname[:port]/resource </DT>
<DT>ipp://[username:password@]hostname[:port]/resource </DT>
<DT>http://hostname[:port]/resource </DT>
<DT>ipp://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,9 +365,6 @@ 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>
@@ -601,21 +598,7 @@ 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. 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>
or networks. </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>
@@ -637,22 +620,7 @@ 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.
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>
directives can be used to allow access for multiple hosts or networks. </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>
+543 -571
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+5 -89
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>CUPS Software Administrators Manual</TITLE>
<TITLE>DRAFT - 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://[username:password@]hostname[:port]/resource
<DT>ipp://[username:password@]hostname[:port]/resource
<DT>http://hostname[:port]/resource
<DT>ipp://hostname[:port]/resource
<DD>Sends all output to the specified IPP printer or server.
The <I>port</I> parameters defaults to 631.
@@ -343,10 +343,6 @@ 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.
@@ -637,47 +633,7 @@ 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. 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>
directives can be used to allow access for multiple hosts or networks.
<P>The <CODE>Allow</CODE> directive must appear inside a
<CODE>Location</CODE> directive.
@@ -702,47 +658,7 @@ 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. 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>
directives can be used to allow access for multiple hosts or networks.
<P>The <CODE>Deny</CODE> directive must appear inside a
<CODE>Location</CODE> directive.
+67 -61
Ver Arquivo
@@ -1,13 +1,13 @@
<HTML>
<HEAD>
<TITLE>CUPS Software Design Description</TITLE>
<TITLE>DRAFT - 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>CUPS Software Design Description</H1></A><BR>
<H1>DRAFT - CUPS Software Design Description</H1></A><BR>
CUPS-SDD-1.0<BR>
Easy Software Products<BR>
Copyright 1997-1999, All Rights Reserved<BR>
@@ -34,7 +34,8 @@ 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 socket</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>
</UL>
<LI><A HREF=#3_2>3.2 Berkeley Commands</A></LI>
<UL>
@@ -44,9 +45,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.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>
<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>
</UL>
<LI><A HREF=#3_4>3.4 CUPS Interface Library</A></LI>
<UL>
@@ -62,11 +63,8 @@ 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 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>
<LI><A HREF=#3_5_3>3.5.3 pstops</A></LI>
<LI><A HREF=#3_5_4>3.5.4 texttops</A></LI>
</UL>
<LI><A HREF=#3_6>3.6 Scheduler</A></LI>
<UL>
@@ -77,9 +75,8 @@ 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 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>
<LI><A HREF=#3_6_8>3.6.8 Main</A></LI>
<LI><A HREF=#3_6_9>3.6.9 Printers</A></LI>
</UL>
<LI><A HREF=#3_7>3.7 System V Commands</A></LI>
<UL>
@@ -93,10 +90,12 @@ 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>A Glossary</A></B>
<B><A HREF=#4>4 Detailed Design</A></B>
<BR>
<BR><B><A HREF=#5>A Glossary</A></B>
<UL>
<LI><A HREF=#4_1>A.1 Terms</A></LI>
<LI><A HREF=#4_2>A.2 Acronyms</A></LI>
<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>
@@ -127,6 +126,7 @@ 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,7 +219,17 @@ 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 socket</A></H3>
<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>
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:
@@ -231,32 +241,41 @@ 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.
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.
<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>quit - Quits the lpc command. </LI>
<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>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;t&quot;, &quot;m&quot;, &quot;h&quot;, and &quot;s&quot; options.
silently ignores the &quot;i&quot;, &quot;p&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.cgi</A></H3>
<H3><A NAME=3_3_1>3.3.1 classes</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.cgi</A></H3>
<H3><A NAME=3_3_2>3.3.2 jobs</A></H3>
The jobs CGI lists the queued print jobs in order of priority. The
list can be limited by printer or job. When the user displays the
status of an individual print job all job options are displayed.
<H3><A NAME=3_3_3>3.3.3 printers.cgi</A></H3>
<H3><A NAME=3_3_3>3.3.3 printers</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.
@@ -265,9 +284,8 @@ 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, 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.
print file, cancel a job, get a list of available printers, and get a
list of available classes.
<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.
@@ -311,24 +329,16 @@ 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 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>
<H3><A NAME=3_5_3>3.5.3 pstops</A></H3>
The pstops filter inserts printer-specific commands from PPD files and
performs page filtering as requested by the user.
<H3><A NAME=3_5_5>3.5.5 pstoraster</A></H3>
The pstoraster filter converts PostScript program data into CUPS
raster data.
<H3><A NAME=3_5_6>3.5.6 rastertohp</A></H3>
The rastertohp filter handles converting CUPS raster data to HP PCL
and supports both color and black-and-white printers.
<H3><A NAME=3_5_7>3.5.7 texttops</A></H3>
<H3><A NAME=3_5_4>3.5.4 texttops</A></H3>
The texttops filter converts text files into PostScript.
<H2><A NAME=3_6>3.6 Scheduler</A></H2>
The scheduler is a fully-functional HTTP/1.1 and IPP/1.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.
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.
<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.
@@ -362,28 +372,24 @@ 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 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>
<H3><A NAME=3_6_8>3.6.8 Main</A></H3>
The main module is responsible for timing out and dispatching input
and output for client connections. It also watches for incoming <CODE>
SIGHUP</CODE> and <CODE>SIGCHLD</CODE> signals, reloads the server
configuration files as needed, and handles child process errors and
exits.
<H3><A NAME=3_6_10>3.6.10 Printers</A></H3>
SIGHUP</CODE> signals and reloads the server configuration files as
needed.
<H3><A NAME=3_6_9>3.6.9 Printers</A></H3>
The printers module is responsible for managing printers and PPD files
in the system. The printers module also reads and writes the printers
configuration file.
<H2><A NAME=3_7>3.7 System V Commands</A></H2>
The System V commands provide a robust command-line interface to CUPS
to submit and control printers and jobs.
to submit and control print 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.
@@ -405,17 +411,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), &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.
file) and &quot;F&quot; (filter) are provided to configure CUPS-specific features
such as PPD file and conversion filters.
<H3><A NAME=3_7_7>3.7.7 lpstat</A></H3>
The lpstat command lists printers, classes, and jobs as requested by
the user.
<H3><A NAME=3_7_8>3.7.8 reject</A></H3>
The reject command tells the scheduler not to accept new jobs for
specific printers.
<H1 TYPE=A VALUE=1><A NAME=4>A Glossary</A></H1>
<H2><A NAME=4_1>A.1 Terms</A></H2>
<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>
<DL>
<DT>C </DT>
<DD>A computer language. </DD>
@@ -428,7 +434,7 @@ specific printers.
<DT>socket </DT>
<DD>A two-way network communications channel. </DD>
</DL>
<H2><A NAME=4_2>A.2 Acronyms</A></H2>
<H2><A NAME=5_2>A.2 Acronyms</A></H2>
<DL>
<DT>ASCII </DT>
<DD>American Standard Code for Information Interchange </DD>
+783 -793
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+52 -42
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>CUPS Software Design Description</TITLE>
<TITLE>DRAFT - CUPS Software Design Description</TITLE>
</HEAD>
<BODY>
@@ -48,6 +48,8 @@ following sections:
<LI>3 - Design Overview
<LI>4 - Detailed Design
<LI>A - Glossary
</UL>
@@ -77,10 +79,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>
@@ -183,6 +185,18 @@ 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
@@ -198,7 +212,9 @@ 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.
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.
<H3>lpc</H3>
@@ -208,16 +224,28 @@ commands:
<UL>
<LI>quit - Quits the lpc command.
<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>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", "t", "m", "h", and "s" options.
ignores the "i", "p", "t", "m", "h", and "s" options.
<H3>lprm</H3>
@@ -228,19 +256,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.cgi</H3>
<H3>classes</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.cgi</H3>
<H3>jobs</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.cgi</H3>
<H3>printers</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
@@ -254,9 +282,8 @@ 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, 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.
cancel a job, get a list of available printers, and get a list of available
classes.
<H3>HTTP Functions</H3>
@@ -327,34 +354,21 @@ 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 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.
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.
<H3>Authorization</H3>
@@ -399,8 +413,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>
@@ -408,17 +422,11 @@ 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>
and <CODE>SIGCHLD</CODE> signals, reloads the server configuration files as
needed, and handles child process errors and exits.
signals and reloads the server configuration files as needed.
<H3>Printers</H3>
@@ -429,7 +437,7 @@ configuration file.
<H2>System V Commands</H2>
The System V commands provide a robust command-line interface to CUPS
to submit and control printers and jobs.
to submit and control print jobs.
<H3>accept</H3>
@@ -463,8 +471,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), "F" (filter), and "E" (enable and accept) are provided to configure
CUPS-specific features such as PPD file and conversion filters.
file) and "F" (filter) are provided to configure CUPS-specific features
such as PPD file and conversion filters.
<H3>lpstat</H3>
@@ -476,6 +484,8 @@ 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>
+9 -24
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,32 +102,17 @@ user account. This section does not address issues related to
dissemination of the root password or other security issues associated
with the UNIX operating system. </P>
<H2><A NAME=3_1>3.1 Security Breaches</A></H2>
<P>There 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>
<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>
<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
+67 -59
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:19990922200511Z)/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:19990709142834Z)/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,10 +194,13 @@ endobj
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
86 0 obj<</Length 87 0 R/Filter/FlateDecode>>stream
xÚ­•ÁŽÚ0†ï<ÅY‰dI!áF­Š6%aO\ÜØW‰Mm£-o_*­ºÊ!Ì|ÿxæøÑñ ¯/F>!äUçSÖy~‰Á‹!+ô›p4€ w}X‘‚Âr"Ÿ²ï6dèF6ÈF® s=˜®“f<?T„)¤(g6ažw÷Cží¼,ù;e[›ˆ›‰@%ˆZ÷#¨þªŽ[p~û‘ë_Ù?Á­r×(8Óeâxnlõ¦œt{Vo‰ÚƤDì–¯ ÷-ñ7øb6kÀÓ£T¤‚SD('0#’n™¹å‚i#N–FÂýY‹ðB½#A`‚+ʨTú,\Hs–*àß¡¦HéÉò:|+PU<\uºº‡NI~Tµ}÷\¨¸Yrù¨EÒõæ·–äÆö6»}ÓTãíß&wÝ`Ç®N×[ìëÚqYcù+Ì8snÖX‚)á#wx1ŸÏÁ ¢‘;èÕ Öp¾>ÝXŠ2eêÙt±@…Ú<µêç"IžO3Ÿ`L •ðº¿<+#ÁÑöRàµb¯^¦úq÷à eÄVjH¥g¤7Añœ—­‘þ0öàRøœå †!ˆÉÖî?SÃuÉ1)OÈ”THw8—í‘a7j_ž~oõ?(&6':çœéÇñ½¡AÔwc­ª_æó<ë|íü ÕàIendstream
xÚ­•OÚ0Åï|Š9²Ò&K 7
l…T´) {ââÆp•ØÔ6Úòíkc•V%]å@Æ¿7ö¼?ZÀ „nòªõ)k=½ÄÄæMЃŒ¶CX`yŽê!ûîJžýÈyÏ‘ïÊüÆË$…‰ÈwrM4Ü-èAËþ+Ï6…(KñÎøÚ-¤— )µ.…o{ÐóU]3tàü#?<³Wa×Êm«àç‰ø¡Ó ^°õN:½9ád– IIø5ß4tÄßà³Éäžî•Æ
f\£,HŽ0AÅÖÜÞrɶ糹G"Í­„ÿ³…~'aD+Æ™Òf/B*»—)ð¯·PÓ?¤õd~ H±–¤ª¬ w.n¡SÌw’é½±ïVHÝ€›%·¸ª¦I—˜ßRáÿŒímrûf¨ÖÛ¿Mîœ`ÏE§×)áUoPžb¬þ1Â\pï*Æ
l ™áÙt:…  üÞc° ç›Ý ¡×¶ŸU›JRèÕÃ]ç9K’§ÃÌG”2K$%¼nOèdxÆ^fì)ϵ=N!“„«» zbͪmyøÕ²ú¼c›qæ‚byh(ÅŠ˜#ÌÕ] ÅËØ<âGøÂ8º1X¬ŒM̵ÈÅÑÛÑqÑÑ{aßúŸéE?6²æU×~žf­¯­_Ð&Ùûendstream
endobj
87 0 obj
536
522
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
@@ -210,12 +213,13 @@ endobj
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
}T]oÛ0 |ϯ úÔW'mÚìmÝP`º6Ŭ{P,%Ñ"K©$;ó~ý޲¶Æ6`éDïH>Žr:Å/§‹ MgT”£«ÅèõÇ9åsZ¬p3»8£…<žÒ'WCoB…@·:lÃÉâ' g”ç-t<g3·PÑB=CIxEqãÿ‹H…°´T¤~íŒÓQIrÖ4´×qC‚Lz^å9†«lÌh±Ñ‚*¢v–¤S¬‹Liói6á´BJÏu^Á¡£#‰#Uj+Òs· EÞ¹H;ÂÞyðäpê9Iåulú0¸B§H‰?½ÿ|ýmÜí”Gx»¦Ð„¨Ê¬UBžg—Oú´bf9Ýõi®¼ÅFý[ÍX©VÀ½£­u{ûD²®ŒEâ¥6:j°MÍ3ýßpÜÉ9'³6yžßi[¨TT+Q™HÚ†(ŒiE*@+rùãSŠ¥²Dhêa‡óÍ+ÒxhçBÐŒXAË'Sa(ê üà`)uálT6ödçµ´ÒY—
A»&Užî”Ì:ÑûZRWì¼CÖ²ï)T êÖ¯eC¥Ø²'Éï!q:Ô”ºh†¥¾ ;Uè•F mF3æÝýÍs_éuå[½˜w¢7~^ë¤û=(AíûÛëv¸íÚÖ\Šb«¬ä÷b!ëúûéV¦OKÊÖÚ;[B*ª…×L:£ÖA™BEN™XVX
—eEÉŽ"lßö½+EýðïÅ‚æšctO1Å«ÒE–8¸ÊjèÓW¾*\Yr¥iÛHŒá`„%¤›÷Àye"ÒEN ÀNnD­ÈèRwpp´†rZƒkÓ±i‡ú¤(_v ƒ½€p¿ÿÖ]½ºl·øQsì=÷ݲ¾P5YÌÄk%Nh¿Q<±ðŽ•³t}sC…Ñ80ïÙŠ¾ê¤>hb×õ»y>öM·j.»Õ1ÆO§ùÿÖöÙåi6Ç’䜿?,F_F¼qþbendstream
uRÛjÜ0}÷WÌcïnöòØ”
¥´]úª•ÆY%²ÆÑÈMý÷‘³]Xƒå3ç6z®¸‘§Í–k°}u×V¾ì ÙAÛÉŸõf­{·„odM€Ö"3üòüÄWí£@WÐ43ôz¹«×
ž¡f†&…‚IùH¬o“Ášü;òP ¼ø|¡ŒŒI9hŒ¹†öèÁ2DÊj@de½PYã\REÏ<
a0J œaï£)ãÔ‰ „D”a0Ì/”Ä@’Ó¤"còy:Ñ€¬/LÅŸŽÞÿúûBœLB€'ÎØ×s;Räm½=÷3—Y7°?ÉÜ%4öˆo·¹÷ÑbuØ™1d𑳠aNce>«OÁ]˧3‡ ùðYüg Ÿ¤7JÓ{ð2Ë0³WD'¡Ïe³6¥ÓÉTÙRÌ3kwCò1C烈P8马¸üCW¿R,Ösಽ!‘ˆö§ÝKü3÷z˜ 7OÚ]ÙË¥oø©ÜA+¬ÜÐúÎ zzaýÓý½zïüØæºÔ÷ën¶ç®W›õ<ñÖ=_moê r«ßŸÛêgõ #endstream
endobj
93 0 obj
760
447
endobj
94 0 obj<</Type/Page/Parent 72 0 R/Contents 95 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
95 0 obj<</Length 96 0 R/Filter/FlateDecode>>stream
@@ -228,13 +232,17 @@ endobj
97 0 obj<</Type/Page/Parent 72 0 R/Contents 98 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
98 0 obj<</Length 99 0 R/Filter/FlateDecode>>stream
xÚ}WKo7¾ûWÌÑ$Ù’ßí©nÀ@[¤¶‚öà Å¥$Æ\rCr½V~}¿!¹z¬í @‘¬È™ù3œ~?šÒþLézFçW$룻ùÑéç[šÞÒ|‰_®®/h^_Ѓª]Tô›”*zÐá9œÌ¿áìM§ùìøüvrŧËY‘Ïz>KÂ+Škø¿"’ŠÔkcœŽª¢Nã×6’ ã¤0Ôå9‚k->ÚêÔyZzWã€ÏáÃ&DUO¸
äžžOfœ{¾Ö‚’Q;K•S¬C€ªò\‹¡Å'¯Œà¤Ñ‘U±sþ™8¼öªÆðõÖ븙d„`ãrr³Ã˜™Lée5JuKzTþEKУ?aæOý ^âÞF呹ÒÍ0/Š~ÿúå1}xàxiU^,ŒâR«mºr‰DN7"m¥i+mW¿pêÙ%gW¹Î鄸Óñ§G‡5QÝš¨D•ÎÚÌUà \BÉÚµÙÿÐi”Í’6”Rí¼Jüã6Y"Ò2åP·ñÐI2Ñb%´ ø¸I!A¯WÐ5¸eìàŒ ÝGÆÛ¸tBËY¶±…kzgÆJàiMÅ©l©W¸žD6ºÖ1e¶m½„Ú‡E\‡£Å`¡¸5ŽéÖ8Çl¤CdNº”“!7¿±]!ä­µeèI£DÕ˜¹ê#ÍŠ0ªQlF³!×@aÈ»“4ŽËø‰B"ÐR€S±ãíAXÑܤDØP'6 ¾(“’i"k§íž wâ$â Ž&]ÍW™®?há +•ÎçFî ÔzµÎÆØêìÐu\QhåÀK’õD;+s´ƒ”^}GOGZƒˆ…RÝ-•~õÅm}?¡€–ùŠdT".›ù0x. ð0êÖpùú³võVÔó"êgã·cö\a€G•äô pª[[ðá#]Oßèwÿi•i* Z—l¢—Y@Wé„ÿ`¦ö+DȺ¥x/Eb×p?áW}Ó„lÍ“ -ó"´I58{€r+¤Y9 Ñu] <ûœûF %,Îê  “<R·†–lM%ÐEô"Œ®¨m*4K:¹P|ªû­EGe“ð‘ççý—/T<~¥Ð(©—N5›¬²;Ëp³!½^´HŠ
Z•š3ri!º¦Áá^³>oô†/ Tè_§½~Ü?éªÔš!úVÆ~Tù„9:¿W0½ãc|/SŮȵkò¹Üò\Zþ°ß—xö²Æ˜á-Ÿ—>Ó½Sã˜.v}s‹3eŒúȧW™^õÇl:Õ7ÑÛ™•ÜÇc›Ç²ÚÀÕ*üÎðÊöÊx:fæò;|VÞáã¿ÄëCæñQÿP‡ôñާ“§>8Ka÷™ÑmO$\5|*µkCËZæÂ0é€ uÀJñ»²×­ÅfRÁ÷Ã>äu(àrn;±‚$ØÊM3¢N±÷]]Cü .Ò™“RN¿~Agë:›ž3ÎÓwj¢äJ±(q .}l€Ùôa0X¢w†_«TŪ ö7eúoK›iŒ½rokšaWÊÛÝÁër­>Þ–ö»e3rehîDÐ’DËMÑÈiú¥YË(¬¨UA„ÜxL{
2)…ôx* »zeýØ=ˆ9zÔün¥¢q!Çúú÷ýׇiû`ýÚ«-8® ¼@îý¾Û| îŒ=”˜ÃÇìé¸<+­Vj[Ax:é‘eêß›g•Z
ì“l¿wå¢Ê3ú•]TØ4¬š~žÐ¿¸íR/í¬œú#ŸÏƸÙcvñáÿŽ\ÜœMnqg®ùߟæGÿýŒÊUendstream
äžžOfœ{¾Ö‚’Q;K•S¬C€ªò\‹¡Å'¯Œà¤Ñ‘U±sþ™8¼öªÆðõÖ븙d„`ãrr³Ã˜™Lée5JuKzTþEKУ?aæOý ^BÛ¨<r#WºFàEÑï_¿<¦O/­±Ê‹…Q\jµMW.‘ÈéF'M[i»ú…SÏ.i<»ÊuN'ÄŸŽ?…ˆ8:¬qˆêÖDÝ ªtÖf®JvЮÍþ‡N£l–´‰ ”jçUâ·Éù–)‡º‡N’‰+¡mÀÇM
z½‚®Á-cgLè>2ÞÆ… ZöȲ-\ƒä!à¸<Ð;3VâOk*N `K½Âõ$²ÑµŽ)³mëÀ Ô>t(â:- àEÀ­q4H·Æ9f#"sÒ¥œ ¹ñøí
© o­-CO%ªÆÌUiV„yPb3š ¹
Cؤq\ÆOœŠ¢ÀŠæ& %†:±aðE™”¬HY;m÷l¸'_p4éj¾Êt øA ]©t>7rß` Ö«u6ÆVg‡®3àŠB+×^’Œ¨'ÚY™£íˆ¤ôê;z:ÒD,”²èn©ô ¨/nëû ´ÌW$£qÙ̇ÁsI€‡Q·v€;Èןµ«·¢žQ?縳ç
<âhá¨$§o€SEØÚ‚éê|úF¿ûH«tHSѺd½Ì¢¸J'ø»0µ_!â@Ö-Åx)»†ûÉ¿ê›&dã¤É…–yÚ¤œ=@¹Ò¬†èº.Pž}Î}#†guPÐI ©[CK¶¦è"zFWÔ6š%\(>Õ‹ýV‹‹¢Å£²IŠFøÈóóþË*ž ¿Rh”ÔK §šÍe¸Ù^/Z$E­¹´]Óàp¯YŸ7zaC*ô¯Ó^?n‡ŸtUjÍ}+c?ª|B‹ÈËÎß+˜€^€ñ1¾—©bWäÚ5ù€\ny.-ØïK<{YãÌð–ÏËŸéÞ©qL»‚¾¹EÈ™²GFý@äÓŽ«L¯zÈc6ê›èíÌJîã±ÍcYHmàj• ~gxe {e<3sù>+ïðñ_âõ!󸍍ÃGúxÇÀÓÉÇSœ¥‡0ûÌè¶'®>•Úµ¡€e-sa˜t@:`¥ø]ÙëÖb3©àûaò:p9·XAº·å¦Q§Øû®®!þéÌI)§_¿ ȳuçé;5 Qr¥X”8—>6Àlú0,Ñ;ïUªbU
û›²ý·%áÍÎ4Æ^¹·5Ͱ+åíŠîàu¹VoKûݲ¿9‹Ç2´ Í@w"hI¢å¦Œhä4ýÒ¬eVÔªˆ Bî
<¦=¨ø7þ€ˆÆ™”Bz<Ð]½Æ²~lƒÄ Á =j~·RѸc}ýûþ¿ƒëô}°~íÕ× P^ ÷~ßm>H wÆžJÌácöt\ž• +ø‡V+µ­ <ôÈ2õïͳJ-öÉ ¶ß»rQå™
ýÊ.*ì VM?Oè_Üv©—vVNý‘ÏgcÜìŒ1»ÎÆøðG.nÎ&·8‰3×üïOó£ŽþúYU»endstream
endobj
99 0 obj
1405
1404
endobj
100 0 obj<</Type/Page/Parent 72 0 R/Contents 101 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R>>>>>>endobj
101 0 obj<</Length 102 0 R/Filter/FlateDecode>>stream
@@ -385,54 +393,54 @@ xref
0000014851 00000 n
0000014871 00000 n
0000015008 00000 n
0000015613 00000 n
0000015633 00000 n
0000015743 00000 n
0000015933 00000 n
0000015953 00000 n
0000016081 00000 n
0000016910 00000 n
0000016930 00000 n
0000017040 00000 n
0000017240 00000 n
0000017260 00000 n
0000017397 00000 n
0000018871 00000 n
0000018892 00000 n
0000019013 00000 n
0000019465 00000 n
0000019486 00000 n
0000019625 00000 n
0000020122 00000 n
0000020143 00000 n
0000020273 00000 n
0000020727 00000 n
0000020748 00000 n
0000020901 00000 n
0000021999 00000 n
0000022021 00000 n
0000022133 00000 n
0000022307 00000 n
0000022328 00000 n
0000022383 00000 n
0000022488 00000 n
0000022631 00000 n
0000022736 00000 n
0000022855 00000 n
0000022963 00000 n
0000023111 00000 n
0000023220 00000 n
0000023326 00000 n
0000023482 00000 n
0000023577 00000 n
0000023734 00000 n
0000023850 00000 n
0000023958 00000 n
0000024092 00000 n
0000024189 00000 n
0000024289 00000 n
0000015599 00000 n
0000015619 00000 n
0000015729 00000 n
0000015919 00000 n
0000015939 00000 n
0000016067 00000 n
0000016583 00000 n
0000016603 00000 n
0000016713 00000 n
0000016913 00000 n
0000016933 00000 n
0000017070 00000 n
0000018543 00000 n
0000018564 00000 n
0000018685 00000 n
0000019137 00000 n
0000019158 00000 n
0000019297 00000 n
0000019794 00000 n
0000019815 00000 n
0000019945 00000 n
0000020399 00000 n
0000020420 00000 n
0000020573 00000 n
0000021671 00000 n
0000021693 00000 n
0000021805 00000 n
0000021979 00000 n
0000022000 00000 n
0000022055 00000 n
0000022160 00000 n
0000022303 00000 n
0000022408 00000 n
0000022527 00000 n
0000022635 00000 n
0000022783 00000 n
0000022892 00000 n
0000022998 00000 n
0000023154 00000 n
0000023249 00000 n
0000023406 00000 n
0000023522 00000 n
0000023630 00000 n
0000023764 00000 n
0000023861 00000 n
0000023961 00000 n
trailer
<</Size 133/Root 132 0 R/Info 1 0 R>>
startxref
24472
24144
%%EOF
+9 -29
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,32 +86,12 @@ system.
<H2>Security Breaches</H2>
<P>There are two known security vulnerabilities with local access:
<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.
<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>
<P>This problem can be alleviated by making the request directory readable only
by the user specified in the CUPS configuration file.
<H1>Remote Access Risks</H1>
@@ -121,7 +101,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>CUPS Software Users Manual</TITLE>
<TITLE>DRAFT - 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.0">
<META NAME="DOCNUMBER" CONTENT="CUPS-SUM-1.0.0b1">
</HEAD>
<BODY>
<CENTER><A HREF=#contents><IMG SRC="images/cups-large.gif" BORDER=0><BR>
<H1>CUPS Software Users Manual</H1></A><BR>
CUPS-SUM-1.0.0<BR>
<H1>DRAFT - CUPS Software Users Manual</H1></A><BR>
CUPS-SUM-1.0.0b1<BR>
Easy Software Products<BR>
Copyright 1997-1999, All Rights Reserved<BR>
</CENTER>
+417 -399
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:19990922200514Z)/Title(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:19990713124419Z)/Title(DRAFT - 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,30 +362,43 @@
]>>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º= $@Æ#{ܳ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§¨«> 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 áq*øáDÄ!ð†ë„pdH/ .GŒì#At`3»Sæu.„ :à™±ÛPPqáþôZ7¸â L0ô]P ì‡8Ò£ïZCAޱ'ú P„cä Öýèç
.áüÃ'ÞÉxÇž`z¢@AŽq'>rsyeø¥bå‘'áôH*:rˆH8‡‚(#N0Ê!ÐÆyÔ5å ˆ ÇÜäˆ ¢ŽŽ¹ÉAÙjâÄQésÊ$âH¨ô¤i 6¥k@UÒÑvÛ$IÓ€:5G3D„-͵\‘»†HÛ~>Á–Žša9²KÉSš!y…3!F´ç t+Å%1tògCL‰
Æ!FÄég.šae¥œ3üb%¥>l(8lðU³ ª¬ 6peFö>P°&ØÀ.,&Ï ` ùÀÊ!é=ÖX9Q+p–ÛCÇ>3€³=2pÌ‘1 x“tP©˜g@©—œÇ Ü¿3\sp§épÆšîÀ•ÕÁ ×› ©ô XÈzÆÀÿSà 3LþLfÀB^XlG8Ì€¥Lg
| $è@N‰ÇaÁÖn ×É•92`2äáPbí«–Æ 5T«\(Ì ±×…³ä[ f†Ø«ÖcŸîÍ…7Ä¥#3°(L ÑOFÖx¥x™Àöi‰Ÿ=¾j¹¤7¶%æFÒ…±!ö¤‰Âȇ‚ñ¤íÉ;£­P½3Ƴ¶ïœZ ûú^¦˜ e l<1û+–Èô‘‚…‰kß‹=>¸ r¥¤³©Í
È\Ò 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ägiqõ 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
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© ª.ëà˜÷ny®gQ˜i'M[]×Á1ïݲ!öÝ¢Y»´Õ%pÉg/¶ŠëœxÝÍU«Kà:8æƒH¶r™äcï^%³®ºb-W[]
×Ögùyÿ´®ª{…ÎÍN]]
×V2üìà ¹ÜþaW[]
×n¤Sïô¢ºÞ¸fÛò[¹tu)\p¸ ëwq™Ü»•_‹Vo«KáJ7kfæ\ëöåײ¼™k¹ÚêR¸²³Sï+-gTû˜ZgÛêR¸òój •Ëäâ¡­>ÔZk¹ÚêvÄó•·mÉê© ײóö|©_,¶Õ¥p•Þ ÛWܲV«sµÔ%q —ѽ켥j«¥.ƒ+1çZàÒmê¡#VÑ×%qÅŸôÀ•ë¦Á•s÷£ªpz*­\FïߨîÅ|Y´réë’¸tïgµËUêìuÑÁ¥­KâÊN>½Ëh#{ç®BíA‰I]£bøÞžc¡|½Þ0_Ågøž%g‹á{±^¹†çê~Ýò4¹â¿Y®d’\Ý›Ir™,˜_¹†ç2ZXNšk1I.ù7ËL’«{6¡\³ir…/0ð5ü>ŽW®¸¢øâ¾Çg=I.x¡\é  ¿×l¬Òõ²×¥á÷ÐUºº¼Æ}o sTj‡Ë¹@ªKêÃïå«Ä(®prGW(ýÞ[×Ñe_Èï)vm§-ìÒä÷J»px(.˜ZÀ!;ý-òûÍ 82×ä¾ÀD[Î9fèœ6€1WçsÔ)s€‘ç˜ètK€qÎ9°°sÅïšëûe¯Ž9°¼[ ¥/Ž­,³nõ”?pÌ¥ÝÔÅÝÆ(ƒuluG}€Š#s`¢[ä'œn =¢¯€stN }ް-À¬SBŸ!´p
ã”Ð"H\U§„>FtCë’Ð „ir*ºчÝîë™KNHè%Fº¡À
ýb2r¸.q‰ébŠ™1€ ¹Ä£pP`…Þ›Šúe®l:‚ˆ2,(ÐBïH„˜£">(ÐBLDe.„Ð;"€²+(ÐBïˆpD(´zº"!bõUâJ'Iu
Áá(
¼ÐY• !ô³IÈFPåBlÝø“EKLC8Bœ
þA8qHäüá:!ÒË¡… ÂAØÌîTy !ˆxfìvA\¸?½Ö ®x }û!„ôè»ÖP„cì †~Gy‚u?ú¹‚K8?Áð‰w@2Þ±'X„ž(PЄcÜ †€äFž`~)¤Xyä F8}’ŠŽ"NÁ¡
LjŒrH´qu F9CbÃ179bB瀨£cnrP¶Ú81GTúœ2I€8Ò#*=iG¨MÇSzAéP•t´Ý6IÒ4 NÍÑ aKs-Wä®!Ò¶_  O°¥£fXŽ…€ìÒG2Ä”fH@^áŒdˆíyÝŠG1DI ]¼ÄÇSâㆂ1ÁFˆqz@Á™`‹fXYiçÁ ¿XI©
Î|Õ,¨jk‚ œd™‘½¬ 6° ‹ÉsXC>°rHz€5EV
œåöÐ1‡ Ï àl sd Þ$Tê#Æ„æãPê%ç1÷ï ÇÜi:Ü€±¦;peu°ÃõfàB*ý@²ž1ðÿÔ0Æ €?S‡°ÖÛ3`)Ó™_ :S¢ÀqEX°µÃ5GreŽ ˜ ¹A8F†Xûª¥qB Õ*
3Cìuá,ùV…™!öªõا»Dsá ±GéÈ l
SCô“‘5^)^`&°}Zâgo†Z.ém‰¹‘tAalˆ=i¢0ò¡`<i{òÎh+TïŒñ¬íÇ;ç†Öƾ¾—)&CCÙOÌþŠ%2}¤`aâÚ÷b.¨\)iÀlj2—ôF“¡ù;FnL

–ÌÁ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†(ˆ =$WºÄµ±Ç•Mk¸Ð\¬Žž4>±É•;õ,lr9£õ¸ã <— §¢ñ4.î΢AãrB:°ç½.9+¤q9`‰è£C×è–ˆÏ: qå±B*×Èñ/á›È5ª%Rr_¨\czgÊñ•kÄÀž”4GæmŠÑÒ^è\#M1bbƒkœ)F<Ûep2ŨY.JzàšÁæ\;è©r<®µƒ‘Èä’Â])4áRY©Ã\®áÀx™dl.FÚÏ ŽË˜k ÅóÆ×þÙç^¤0áêßùYšF\}ƒ$Ÿšqõ«Š&Ɇ\}:h£hS®þÀÌ’ñ¹È9Ô=-Lìsõ±l1LW·Ãe_ÍïMXá*¤][¼6ï‘®­-Ú²Ù¦p‡« –M.KCv¹)\ã*ä± ¾µÕ›\üÔê#Õµ½žØå2H¯F¤nÉÅ%³KÕ‡ìò­í>ôÁEÌ‹÷W=¼ç¢®myÂeÇû—÷½||o\ûQë0È‹ÕS_ŸÝ'×~ØîVêqº~êósûæ: Üî†ÃêêbW.W«ë§§Þ?r®
$ß¾Iß<È7ï¿ù$n? ùññãÍ×â>º¹òû¿{Ê>#Å;ñX@.òŸþðëÿ}÷ó¢øå‡Ÿ¿ûîO¿}÷ãßËÿÞ6¾··»Æ·w_ß|ïn?ÜÜíšïš½Ë‹ß½»½‰n¢ÿ¸ÝU~w¿ýÝ»»H¾ûå¯ç? ?ÿôýo¿ÿõ—C½7Kê§?ÿõçÿúãþºí槯ÞmÿïÓ?ˆÏ?þ(²ÝÙÛNýïßïš&r õÿÉ„ñkendstream
endobj
200 0 obj
6298
6310
endobj
201 0 obj<</Type/Page/Parent 197 0 R/Contents 202 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
202 0 obj<</Length 203 0 R/Filter/FlateDecode>>stream
@@ -405,10 +418,11 @@ endobj
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
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
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
291
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
211 0 obj<</Length 212 0 R/Filter/FlateDecode>>stream
@@ -421,40 +435,41 @@ endobj
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
rÛ6½û+öèÌXŒå8²s¬ã¤qÆ™ª3½ø‘ …4«|}ß$%1ާO,
Àb÷½·oé's:Ç¿9½YðOQŸÜä'¯?¾£ùÛìšò
k‹««lAyyšo$岨«íãîUþ/i>OÛfoÞ¥mï¿-W¤<­…—%µ5$ ÉZºGeéÎéŒ äƒ0¥p%Bkì ?..2·/ ¶°úŒ¬£»å2ãÿh#_JÃIàêù›ì‚¯–õÚ‰±Ö;*íOi<ÙŠŽ%²(ÇÏ^º'üª…i+Q„ÖIçÏâŽNiØäÛ¦±.¤`œ›‘ÿú¢
g½­Âäæ”)m‡ëéDLÜï|uÖï»Xd—¼“/e¥Œô$ö4}•T¡Êf¨EvÙà7¾¸HßíÚÕc› ,ÊÕj+©–¥½ú)ÏÈIouË[S±Þòa“Ñ=€w–˜r.œuKËKÚ2g;¦Ä2ŒGÔ;¹ºÏÑÓ¦5¥“¥çsac["CµÒŒG'v}3±‹˜î0‡í$îJÉÌ{†p°(¤÷“[ k‚c݈¡h!öuKS¸]“žk±e`U!u[l¨¶ôË¢Øs1à†Ä„Õ%ƒŸ#â×b'Q*ñÛpŒÑ§ä1ËYH¹ÆsúÇ
ÿ”çË3ê6
y *¢ÔÉu¯[<N¥HAFùG@K ·ô¤d‡Î(ÚˆD<’ ð¹õ¤ ÄP§¯ye¯®±aZ0~½Z¹˜ÝÚáB馘DG•OªŒ²/lÝh$Sùzž°Ž­ÃH‡ý±ÀPLȌɗ¶
»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¶ 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
RÜ8½ó}$UŒa€r !,¤HílÆ©½pÑÈ2£Œ-9’ŒwòõûZ²=ŒC¨­Pa<ZÝï½~m~ÌéÿætvÁ?²>¸ÎŽoßÓüìŠòk——ÙåÅa¾V”+¹6¶²OÛwùwl<§ù<m½OÛ>~[,I{Z ¯
jkHRµrOÚ<ѽ ÊÈa
á
’¢ª°3 ü¸¸pÚÞ¾p6Xi«#²Žî‹Œÿ£µ@|¥ '«çgÙ)_­ê•±V[*ìOe<Ù’Ž¥²(ÆÏ^¹güª…iK!Cë”óGqG§«
±É·Mc]HÁ87£þ ôEKg½-Ãäæ´)l‡ëåDLÜo}PuÖï;½ÈÎy'_¨RåIì hú*©D•ÍP;Šì²Áo$*"|q‘¾Û•ß«Ç6A[”[é¢ZZLôú§:"§¼­ZÞšŠõ–o ëŒø ˆ¼³ÄÜpá¬%H,-/U–9Û2%–aÜ£.ØÉÕ}ŽžÖ­)œ*<Ÿ kÛz¤ªuÅxtb›Ñ7k°ˆé^æ°¶Â])Q!óž!”Ry?¹UZëF´@¥ØÕ­ŒtÛ&=×bÃÀêBêV®©¶ô+ Qì¸pCâÂVƒ_#â¯ÄV¡Tâ¶á£»-ä1ËYH¹Æsúû
¿ËóÅuk< QêÔª×-§ÒIAFùG@K ·ô¬U‡Îm D"IøÜzÒb¨Ó×¼²Sר0­¿^­]Ìnåp¡rSL¢#€Êg]DÙK[7•
Š©<ž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š‹
¿ñÙT×BnTj¤B³3‰µý…p]³ü#‡èŒ6ÏèoßFdz©ô%z
Ä ¢«7-yHfÏaöIÖ5Wq=¢»ÅìχãÓáqqs;|d@Ï·øœ½Fõ8»+´+-PóR:Ý„xvw }ž ¹ß`H²‰[~KCø©hbœÉÅI¨ÎÒJ‡Z4½ú7›>]ºùA·JôN°‹oE°Fvè*XhDTÍ$Á4¾9abwÖm0œE|þ¬ÂvPØ$ÿÇÃM³´¸/<¾;¢ej™/€…ºÆKÙ&E~Àëeê<¬ßUC©ã›ToW½çççÙ{º¸ºJ6póõÃm}Å"—xÏí¸%¿yVǼ,‹ŠÏÒ©Ùåé :çïÎO®2þcâÕ?üQendstream
endobj
215 0 obj
1359
1367
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Ì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‰8¨ b K2”¬Ë½#«÷J÷$ÁQâ9¼L 8Äa£ßz°B‘Ñ5ä5Øœ
…ªxšÂ•àl°w`“`»IoÅñ“á- #Ð_ HsH$ÎDÊc}»ö€Oö6íš lõ“ª±b
Vèd⺽9,6ï1wáÄ÷íMû²;[mÒ X.ñ
Þ¹5…oIü»`éoL7,lì<FÏ׋³üS:¿<K7n/èûÃvòcòj”Mendstream
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×ö ™A<m<l…–yì¸ò²d
Lí«Ú  3“y.¬Ð}aœ0ÊMAúX/%²àC¹Â4°35p¦¡±OðË‚itŸÞQH=#ÆV†Rо%^#oDV…Ù—¤YRä7ác¥ÞþO½ˆÉsÛ6©  ÇñÝÎy«½)™—x¬và
<Ë ‘¾ƒñ¶ íóu„O`ƒ<†À
¦qÄ _WÁ&-žRÜz¬]«[×—Û @ÍIKÔÆUÆ(ä HR!Ü ô#õGC|Ÿ8£¤öqºàYÎk‹ó`ßœuÓM)æe/6 ‰òI=·ìáKvc%F)„
„ýÀ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äÕÛœ
…ªxšÀ…ଷw`“`ÛI{oÅñ§ý[F ¿6gŸHœ‰”ÇúvìŸ8ìmÜ6Ø ês&UmÅj­ÐÉÄ%´{³_lÞanà ˆïÛ›(öY+vº\&ç°XÌã tùãýÕfñå¿5¹oÈwÁÚ_™®YØÜYÌš­ç'ÿøç´<;Á€p{Jß7£ï£?¸&Ohendstream
endobj
218 0 obj
815
821
endobj
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 VÎO+)O,JU-N-*VðMÌ+MÌÑ ÉâÒ…¨Õ…*6‰™šé™+€ùE™y%©E
.E™e@ Y×®@. ²!Õendstream
áÒw³P04TIS041ѳT072PIÑp rt QÐUp VÎO+)O,JU-N-*VðMÌ+MÌÑ ÉâÒ…èÑ…j2‰™šé™+€ùE™y%©E
.E™e@ Y×®@.s#­endstream
endobj
221 0 obj
116
124
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
@@ -468,30 +483,31 @@ endobj
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 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Ü
TÛ$E(ñ™u¼ßÞýÒúŒæ#AÇvßñ0ï«Vú™›XJæQ0ÝžBqiØpxÐá8{¿Ÿ›ªè:†;áh¿ÝÆØ7¹mùѺXvq²ù*Á|¹$ý Ç÷õ=ÜëÊ慨ïŽ^Šð=«e’Ü’h,®Çd¼¤ï&«Yº‚ñùw7G?Ï ñ endstream
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°Ó l™rDãÃÂöå :_ÎY”÷a 'ò¬ÿ>kŒá"Ð}Љœ¬‘®o2²Ifí#ÄzÂ:”Yç¶çô>ˆV&G4ÿЉÛs!$W¬âO­Mqõ$Fó?@ˆVÿD¹Ÿß§'û–;GÜŽ/|÷XíÉ1¾ÆÂ*e·«Q9¨J†Ò ÒŽ:‚¡ÃŽÕ66R@
ƒ‚38\<·1|Ñ[¾¡æb\Áá@?NT˜q[råµJžÄi†ËcÑå£è~ÌÈÉ!Þ‰™v:±æ#ݽ@@€ Do­j”ñQÕߌAºSÁ •§Ab6›±šÓÿ‘ôrvA§Šç‚]~˜ôýŽÕë'À³Õ‡ëÙ‚ÒÝ1¼Ážßƒj=™Wé`ðö „>n>Ãd|Žé“Å ‹¬`2áßppKw š.æBx´F{B7ÌìPc5W91K#UöVþv\‡*g&ï}¨á9·™w(¡à4Î{ÈçE<;ÀùÐŬûÒZôË’Õ„wìÙ[Zëa|4‰!@?Œ«V™ð§HÔHÁR׸ ONãGíÊç->êè³{oÃÝ|œº¡9¸°3]ïüÝç5øBq+PMe¾ÄGvÖá~{õOëšz(m*Û]Ëô«ZéGnb)™CÁ´{
Å¥aÍÝþA‹ãäý~jª¶¢íý¶ ±/SÓðƒu1oã$“I¼€é|NúɇŸn>\§Áòçênuá¶TçOK/Gø¾Õ0IîQðŠfç#ršÓwãÅ~5:ý‡#òcð7?òäendstream
endobj
227 0 obj
910
916
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
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
xÚ½UmoÓ:þÞ_qî$¤^©É’4kÚI|àŽ xk&>;©C Žk;«öï9ÇNË:
Ò@B•¢ÚçýyÎ9þ’B‚¿Š æ ¨»Éåäô*UœAÙÐÝbY@¹™þ[~™$¥)žì!R †.ªu/¸…HÃ…–’9þ¼4‡FH®XÇáò}yyCÖ§W+HÏâ%ùÐq4_Å9y»hyýU¨ÏàZ×F(Ç ¬sƒ…ÆèÎß_è®cj½Šo9P2 ¦Ožä©DÅ LFáTö=ZL¡Þ f
*ƒåpmà‹®,Æeîõ-»ã`‡ªΡ&)ô”'&}¾‹÷±(Óÿ#˜Q*ßÙ‹Æš£öj£9äyVÅâ¨V¶×JÏŠåqù^g^dË<;¬‡þ3_-3¤°T Psm6Èþ»‡­òeóM ¥Ë9l[Q·žlt€€¹ ÞXíÄŸ¼ÞßIÔŸìÒ!Ò½Z=Ĩ?‚ã^rûõ 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–^Þ¼¸*!
C´ÖÛÒ.¾µDð;¦摎‚UTdÉ~C…ïéD/éÁ¥wTóe‚š^m5NÎÇÉ7<x`Qendstream
endobj
230 0 obj
807
814
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
+ä2T0BCc3JÎår
áÒw³P04TIS04³Ô3U072PIÑp VÎO+)O,JU-N-*VðMÌ+MÌÑ ÉâÒ…¨Õ…*64 ÅÀE™y%™yé
¾¥9%™
Îù™©Å e®!\\%Uendstream
-‹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
233 0 obj
126
133
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
235 0 obj<</Length 236 0 R/Filter/FlateDecode>>stream
@@ -503,86 +519,88 @@ endobj
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
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Èû~ 6¯N:M_rqn,Þ§ÍwÖ¨C8ò¶kn}Ø_A' e¢Xnêxw±—ÌžŽþБ’¼D 1/xj¥Àà• T+Š€^ªþ¡¨RG‘¾µUÈÑ6¨Æª i/ÔL5Ú»˜£c<ÿg¸9qpÂO¸Œ&£™ã½„¶ÌÔt6ÜÜ¡,Ör+€-äÁ¨He—Ü+ø`EE§/vU¬ŠZ›£v?3Hea[‡|7ÕfÁ•nç䑌뒰1¸| òÅl6L»öáÔí±¯’[¶×”GýÐì g:å"³oTe\SYÁõajXþq†lÑ›­0üÎq+·ñ "7´
„¬ÿà‚J–YÖPéz¼d¨¹¹ÅŸ6àç´EAäguB÷mr}ò˜6½õ½©;ƒè&r'àáõîkùþmC,—fK+õMSÛž™À­kW²†èåLœü€ƒÉ¼Ó7KØÅ´XG@ûÏ®I Ýþ;õ˜ þüˆ@Rendstream
endobj
239 0 obj
966
973
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
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Ã÷Ì ‘Ô>˜Á÷à?î]ð0endstream
xÚ¥U[o0~çWUª”Iƒa`„LêÚ¥Ó¤­k:i.˜ÀflfL³ýûÛi.R›¦©òás¾«IþxG§P´Þyî½»˜‰ƒò
ÏÒŒ˜¯åhδnÄtÍà\5‹Z Ö÷oò_¸!nÜ'AjÆÊ
* B+Éíš¼gŠrwëu•=éT#4+Aº4 ýÓ‰/·ÆÏ:¦
&ô ÈN7R|pô!Lœ\ôà;éåÈ¡ï`ŠD!T g‚¶ f—ùìf׋oÀÜü |`=,£š)T†ÎH²A;Ü`2±1ò–5"ýÛâÆèîJIÕoÜhtàH·÷ãÈ‘n'þ™¶-…©TŠÆùQ¹/,H±9(}»tf­»Ã ãðõ‘“ùÓ¡¿²M~‰¡ÍÙ_ ߭ͧ/wެ•ä\.MR.”h×ñ(9¬$›¢3žûC›¾Ú;ô‹ÕLkªhæ{¸Â'_DQïUdÚ*ºf·+è™î-°X`|¡ AàWjˆHôh‹®Ð½&¿6ø6îâ[Ì£­ŽìõΦ’í3—ÈVææž·eïÒjúå}­X¯,[É#aL MR'ñÓÍÇ‹|˜Þ^Ía.+½¤ŠÁmonÎ7*ÊͺO’·ü1þ¢îý£HÆ ¾ovˆÄæÁ,÷®½ÿMÚòendstream
endobj
242 0 obj
514
521
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
xÚ•VMsÛ6½ëWìd¦3òDbHI–åvrp=î4‡¦N¬Ü|É¥$Œ¬þúî¤DÓŽ#u0ýxûöí’ßG Äô—À|É¿´ý¹}øë’y4ƒuNwËUÂÿfãtNVp嵯 ü#ÌFVöd}O. H’à0ŸGKvø¬M)”Úyš=Êà Xtà´¿+„É@ÉR: :æFVMk "»o¬{¥±èßM5c Ìu6f³©ÂÜ}ü!Tƒï&lã§FnŠŽ®÷‡¢ÊwÚ9]¶w k'ue5ÇpX"êö¹;( ?üª†.ÔäRa%J„«Ï뫯?wé¡=Úg_ÊÑý_p:4wÊ…ví]õázÙ^}„§.cjö¦)±r ­oWhЯÖÔdû H‹ðÀ6ɇ³ÝÒ‘6GóÓ²ŒB̾,§óY€qmH—;¸<ªÆuP
)‹í½¾º~BÝò(24 ‚ÖˆGVcǺÛJWTX5åš Üë;pÒ)„ÛqcEv¬Þž}q˜L8ŒàBY=Kzùþ=<àn«M†¤ þ+ÖfÁ/Õ¥çRÉ
ƒ‰tBÉTþ‡ÙÛUy âŶß§Ñªßø»*¹þÃ(¼Êw®•Ò[^íà€¨kâg[`Fœï¤Çìk¾I©Ðvÿx¿lµ k4)r»÷“]ËÁDCZˆjö‰%2¹ó¢ÝBY@øfzéÇØÛưÍ4Ç6ñp %k=Èr£KZÿ´ˆWq ¶ÆT滎eOÍ©A%üœ´ûÚëÿv<ÈVég™ØØsÝžÀÅ`$:ÐÄtB¹;–¶R)®^R ˺¯:$ñ{ˆKÙa| Xm–F
z±gq<|;ô3õSmMÍå-|Æ Cr™-ƒä™dêÍQûîez“Ùs~ Z­ÏlûÚ Eñj”¨,“âW!ÕT…ËA-®~iÎã8~œ-˜ÇàÙ+.‰W>
o ǦÃðšTø(˜ä>0­$ýÒ—âûíP´Û)&¡ªöí›@Ù(')rà6@»Ãýt;–úgó]ËÊ÷­{m\ø/‚ŽÆ¿Vãš‚‘Êxn«#÷CÑàÓ5 õ¾7Èâé ¸&z-(ùV†cžS]9£*ü!-eiɪ–,Ï£SúÌZEglwùíúntݿY4–¾´*z±°Û4XOÏf1' >œ/çtÿê#íj=ú2ú³i endstream
xÚ•VÁrÛ8 ½û+0éŒ3µTÉv§;=dÓtÚC»ÙF½åÂX°Å„U’ªã~}%M±I RHè—ÂdÆÏ¢ü› Þ~<…t![ÒÞlžòß|x…ÎÉj®@¸+„/¬de²[2™BšƒhrÏØà«6¥Pjã-j¶(ƒƒ`ÑÓ~¯&%Ké,èe8ndåÐÄiùmcÝc/E¿ø*ÒŒ"ÔùE
—îýO¡|5â3Þ82rU<±ìt½]U¾Û¸ÑÎé²Ý];©+û.äœÀi`‰¨ÛÆî ¤üòT « XJ…•(.¾fßþl²‡ö`›m*[ìçø„Ñ®¸'Ú•7#êÃö¬ÝzM†TìUSbå@Z_®P> §ÖTdû Xá…ϤoOÆ´KKÚ@OŽË2>÷eÆ¥!]nà’Còü£³ RŸ÷úêê uCÊP ÈÑ€Z#Yën-]±SaÕ”7hFp«oÀI§®‡m:Á÷Ù±z}ôÅnrá0†3eõÎýêù›7p‡›µ6yh’‚ê¯X˜»….=—JVŽH'”\È_˜¿\•;*ž,;ñ}Ï÷ ?eóÏ%çÿ_h…gù^j¥ôš‡FÛ8 êšøYX…ç=éý1û\¡¯”h;<„¿–Ú‹÷5šr¹·]Ë^GâÕ*ÌKdråE;…ò€ðÅôöÂÔŽ°—µa©ßŽmà~CJÖz/,.iüÓ ž' Ør¹éXöDPŸTÂ÷I;¯½þ¯‡½h•~{îâë#8ëµDš˜N)vÇÒZ*ÅÙ«](aY÷µB‡$aw~é… ;0Œ«ÍRKÁžïq’ô¿û‘‚ú)·¦æô¦>bÐ!™ŒgAòL2Õæ y÷4½éø1¿­Vg¶ýì…¤x4Ê{T–Iñ£rªÂf/W?4'I’ܧÌc°ÜK.MîçÞ O ÇGûîGÔ©ð^0É1|`ZIúßí…/Åî—CÑl'Ÿ„ªÚ–oe£œ$ÏÛí·ÝEìXªŸ]nZV~4hÝs£àÌß:?5¬ÆŒœ‘ʸo«çCÑàÃ1 íÝ7èÄÃI; 8'ú,(yF†cžºrF+ÓF7¦_)TøSZŠÒy ,NãSºfÍã>÷áÛÙÇ "8ÿ~yWzéÖ<å¿[4–n\}`Ø<
VÑÉ8a£tÊ‹“Ù$>†äo—µ‹lðÿà7öEÝendstream
endobj
245 0 obj
952
959
endobj
246 0 obj<</Type/Page/Parent 197 0 R/Contents 247 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F5 5 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
247 0 obj<</Length 248 0 R/Filter/FlateDecode>>stream
xÚ¥–]oÚ0†ïùG•¦Q©I4˜Ô‹µ]¥uí
½˜Ô'Á%‰™“”±_¿ã8ð1iBâü9>Ïñ±_ÿj9Àèå@×… &qëzÔ:¿eз]zÌïua4mŸŽÞZ ,ÇÑ?>A´KÂ,ÇËwåˆ0á1ÂÍ÷ÑͳŸßz ÕXźèÛ¾~t4C0ûåßí"Âö#mà*ÌcL2)pHòxŒ
%cŽA&Aðd

S’¦Qð‰Œ¤Ò™Ï„LlГ2ŠäR$!d|aÅs¡A§í4c®Ä,ƒÌx"¬dþ9Š E„¥Èf0A€JgUÌ’~1Ywʬϱ5*³=óQ‰P$<Ò¢ž.3éŠY^§êØÎfЌ݌ZÌf¤]¿=ßã:6ƒNÏ·{ÐÓ_]FI+„á±Ëܘ}$îÕÄÞ–¸èƒj9׃N×5+øŒÓ"ý2ù§\-L9+ÆŸ¨+mI¥kø•ïSÔ¦TFÜʈ÷¨
–Žk–èN!&uš2÷p=^2]SnFy>…n
Œø0Ð…kúØä_'z\/CÅR@[«µòëSܦ4FÜÆˆÓ8nUó:Ép¾²ÆÕÛí¾ç÷¦ˆRx}‡¶åøÀC:2xå>™ŠPÖAJÄ©ü¨»<:4¥¸I)>LÒuÌÖ¬øÖnÙÞÊ7Î2+áï›å:†äwšŸ¥¸!’8×ú`Îý€öXéLWÓ·<Í
ƒ ò,W…}Àk{ Oû×S9ÜÇ<Üñ+¶mp'äé:ÀåÕ„:àä¢È‹™ŒÓld:úÚÀR‰žKè¹Î Î'3ˆÄk7OäxÇÅ(Y–‚ #|)-ªnèkõAKßOû¿¼½ŒñOwO8Àºw×JR~áö.c6\í+¤.þBÉi>¡ |§ ãˆOæÝ¬åLdHBdg@?"¤k…¹»PŠNOVózSÀߙ£­G†IжAéUÎè÷íx3ó ^ž†0”A¶äÔm/)Rˆžäæ`µÕuÙ~Ã}¥L^Û#šf¿Ñ¼®G›³xÈ©î ?Zü{Ýendstream
xÚ¥VQoÚ0~çWœ&M£R“:im×v•ÖµƒôaR_ \‚Û$fNRÆ~ýÎq¡0iB
äøüù¾óÙŸu`ôq ï©Ó¤stN® m‚PÇüA‚Y÷(xî0°G¿|„x–„yg¯<.B„«ïÁÕHƒO®=Ðè,b±N‡¶¯‡só·_ýÝ-¶‡t«¨H0ÍAdÀ!-’ *•L4ƒ\‚þâé .fÍ 'ò©Œ¥Ò™’9Ï…LmГ†2ŽåR¤ä|ãZÏ©:ëfE’p%þ`E2çi„°’ŧ8† –"ŸÃL„!*U9KöÙdÝ«²v<ÇÖR™íiÎ{%"‘òXƒºÌÓ³¼^êÙÎ&hbWA‡ÙŒ°õctŽëØ zßÀ@ÿtÆ{À.s7`ö{[à²ÖËá¸ôú®YÁÎÊô«ä
µ0å\kü‰ºÒ–Tº†ï©ò}bm«Ê€[ª2àU¥–žk–èF!¦M5UîQ¯4]Pn¢‡y>Q·dÀ-ð~A§®éc“SÑ}½ k-¥hkU#©q}âm«Æ€[ª1àýjw]ó¦’ñËÊš¬cìm÷RÁ|z¶UaÀ-Uð^ÞСmE9ÞñˆŽ Þ”r›ÎD$B.•H2ù^wyth´>*p;%x¿’¾c¶þåŠoí–í]±–òMDóÜJùëf¹Iò{íO€
ÜR’ï9׆`ÎýöXåLç³ç"ËKƒ ó¼P¥}ÀS÷RŸöOG Cr¸MxôƯضÁ} oÌj‚³ª)uÀ‹’—3§ÙÀ4{m`ˆTÏ%ô\ÇÓ9Äâ÷’ÊÉ#²,9Æø*2"­ªiè5z¯¥ï¦ý_Þ^qüÓݳNE(°éÝ’”†_º½Ë˜ 绩‹¿PrVL‰„¿)È$æÓn Ör.r$ Hóc —éZaî.DAìäðdõ oÖ8ü+L0^Ñzä˜fh)ƒÚò={žÇÌ|_Fç×Xpùø0†± ó%§®{̨îxZ˜Ë€eFY}—í6ÞWÊè©Ðt» çõ=Ú¤å g}_øÑù 3ü}µendstream
endobj
248 0 obj
834
839
endobj
249 0 obj<</Type/Page/Parent 197 0 R/Contents 250 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
250 0 obj<</Length 251 0 R/Filter/FlateDecode>>stream
xÚ-‹±‚0E÷~Åaûl¬:ªÑè`¢¡l,´i_QsÏtrî“øg!'n=Û*6;¬@eAr/°œs¨:Ù•—Å`ÃK¥7£ÇY»¨©êXök³Lr’‚x.𛺋>´®A¸£A•¨Ö…*Å`¡N½nÌtÚ+veo­ˆ)endstream
xÚ-Ë»@„á~ŸbJ(À=BPJ¼-LTÍF„Èa‰¯¯¨™©þä{
‚üŒDóoذX¤k+Pú1VK .Ý5I¶ù9CÖWö¥|ÔÈ“2“z¸Ü
ïg¼?¢hŽI?À7$e;¶15ì]ã0i
ÊàØ©ZÏhÏâ"Þɉ*ëendstream
endobj
251 0 obj
137
143
endobj
252 0 obj<</Type/Page/Parent 197 0 R/Contents 253 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F5 5 0 R/F8 7 0 R/F9 8 0 R>>>>/Annots 156 0 R>>endobj
253 0 obj<</Length 254 0 R/Filter/FlateDecode>>stream
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
¬É¸–Ðïöc¿>v:¼—-êµEy©­ðqyrí'aSN~Ϊ‚ïX[SÿºöïI_³ª
-ªßŽæ‘Úš¥þ®¾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™å# Îªõ¾'
Ñ–Ô _äITÂn˜Jiì ­
–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,-¬€õ·TΩ=_ð\Í}¡‡Œ[_² |ãÈ 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
xÚÍ›QsÜ6ßý+ôØÎœ7")JâcãÔ¹v.­/v¦/ymÙÞvµòiw“Ëýú#HP"•dfj{Ó7Ÿ,AùÏ ËrýË*ž‰2»éN^_¼:WSÙÕ]ÆJ±âYYIýóêö‡«æzÓfý]vÖo÷ív¿ûñêÏ“Ÿ¯NòU®)ðƒÁ÷oa•¢Öj]&äªÀÁ&»„Ìä‡ûìչ̃G‚ž²»ڻ榅‡L9j±ZX‹­Žþ[´“(ÁP\êŸ]V±Ã ¥ÝUò pùe·o»lñ!·ÓÊÅJ†OÁyÃúýS;|Ÿ¿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@¥ô¾'
Ñ–Ô _äQ”Ân˜*iì ­
.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,-¬€õwTÎQž/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
2708
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³P04TIS04³Ô3U072PIÑp VÎO+)O,JU-N-*VðMÌ+MÌÑ ÉâÒ…¨Õ…*ÎÌ º†prÇvMendstream
áÒw³P04TIS041ѳT072PIÑp rt QÐUp VÎO+)O,JU-N-*VðMÌ+MÌÑ ÉâÒ…èÑ…jÊÌ º†pr¿%endstream
endobj
257 0 obj
94
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
@@ -628,304 +646,304 @@ 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
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
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
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
0000012233 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
0000018899 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
0000026519 00000 n
0000027280 00000 n
0000027301 00000 n
0000027441 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
0000031859 00000 n
0000031999 00000 n
0000032574 00000 n
0000032595 00000 n
0000032758 00000 n
0000033739 00000 n
0000033760 00000 n
0000033923 00000 n
0000034801 00000 n
0000034822 00000 n
0000034935 00000 n
0000035132 00000 n
0000035153 00000 n
0000035302 00000 n
0000035912 00000 n
0000035933 00000 n
0000036091 00000 n
0000037128 00000 n
0000037149 00000 n
0000037289 00000 n
0000037874 00000 n
0000037895 00000 n
0000038044 00000 n
0000039067 00000 n
0000039088 00000 n
0000039246 00000 n
0000040151 00000 n
0000040172 00000 n
0000040285 00000 n
0000040493 00000 n
0000040514 00000 n
0000040669 00000 n
0000043448 00000 n
0000043470 00000 n
0000043583 00000 n
0000043748 00000 n
0000043768 00000 n
0000043823 00000 n
0000043928 00000 n
0000044072 00000 n
0000044175 00000 n
0000044280 00000 n
0000044445 00000 n
0000044553 00000 n
0000044668 00000 n
0000044773 00000 n
0000044881 00000 n
0000044989 00000 n
0000026408 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
0000030524 00000 n
0000030664 00000 n
0000031556 00000 n
0000031577 00000 n
0000031690 00000 n
0000031885 00000 n
0000031906 00000 n
0000032046 00000 n
0000032621 00000 n
0000032642 00000 n
0000032805 00000 n
0000033792 00000 n
0000033813 00000 n
0000033976 00000 n
0000034861 00000 n
0000034882 00000 n
0000034995 00000 n
0000035199 00000 n
0000035220 00000 n
0000035369 00000 n
0000035979 00000 n
0000036000 00000 n
0000036158 00000 n
0000037202 00000 n
0000037223 00000 n
0000037363 00000 n
0000037955 00000 n
0000037976 00000 n
0000038125 00000 n
0000039155 00000 n
0000039176 00000 n
0000039334 00000 n
0000040244 00000 n
0000040265 00000 n
0000040378 00000 n
0000040592 00000 n
0000040613 00000 n
0000040768 00000 n
0000043555 00000 n
0000043577 00000 n
0000043690 00000 n
0000043863 00000 n
0000043884 00000 n
0000043939 00000 n
0000044044 00000 n
0000044188 00000 n
0000044291 00000 n
0000044396 00000 n
0000044561 00000 n
0000044669 00000 n
0000044784 00000 n
0000044889 00000 n
0000044997 00000 n
0000045105 00000 n
0000045203 00000 n
0000045369 00000 n
0000045486 00000 n
0000045605 00000 n
0000045729 00000 n
0000045854 00000 n
0000046004 00000 n
0000046145 00000 n
0000046254 00000 n
0000046406 00000 n
0000046545 00000 n
0000046675 00000 n
0000046799 00000 n
0000046935 00000 n
0000047062 00000 n
0000047185 00000 n
0000045221 00000 n
0000045319 00000 n
0000045485 00000 n
0000045602 00000 n
0000045721 00000 n
0000045845 00000 n
0000045970 00000 n
0000046120 00000 n
0000046261 00000 n
0000046370 00000 n
0000046522 00000 n
0000046661 00000 n
0000046791 00000 n
0000046915 00000 n
0000047051 00000 n
0000047178 00000 n
0000047301 00000 n
0000047450 00000 n
0000047579 00000 n
0000047716 00000 n
0000047846 00000 n
0000047971 00000 n
0000048074 00000 n
0000048211 00000 n
0000048316 00000 n
0000048455 00000 n
0000048589 00000 n
0000047417 00000 n
0000047566 00000 n
0000047695 00000 n
0000047832 00000 n
0000047962 00000 n
0000048087 00000 n
0000048190 00000 n
0000048327 00000 n
0000048432 00000 n
0000048571 00000 n
0000048705 00000 n
trailer
<</Size 298/Root 297 0 R/Info 1 0 R>>
startxref
48775
48891
%%EOF
+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.0">
<META NAME="DOCNUMBER" CONTENT="CUPS-SUM-1.0.0b1">
<META NAME="Author" CONTENT="Easy Software Products">
<TITLE>CUPS Software Users Manual</TITLE>
<TITLE>DRAFT - CUPS Software Users Manual</TITLE>
</HEAD>
<BODY>
+149
Ver Arquivo
@@ -0,0 +1,149 @@
<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
@@ -0,0 +1,167 @@
<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) -lm
-$(LN) $@ `basename $@ .1`
$(DSO) $@ $(IMAGEOBJS) $(DSOLIBS)
$(LN) $@ `basename $@ .1`
#
# libcupsimage.a
+3 -8
Ver Arquivo
@@ -77,9 +77,6 @@ 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)
@@ -239,11 +236,9 @@ SetCommonOptions(int num_options, /* I - Number of options */
if ((val = cupsGetOption("sides", num_options, options)) != NULL &&
strncmp(val, "two-", 4) == 0)
Duplex = 1;
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"))
if ((val = cupsGetOption("Duplex", num_options, options)) != NULL &&
strcmp(val, "DuplexNoTumble") == 0)
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 "/data/HPGLprolog", "r")) == NULL)
if ((prolog = fopen(CUPS_DATADIR "/HPGLprolog", "r")) == NULL)
{
perror("ERROR: Unable to open HPGL prolog \"" CUPS_DATADIR "/data/HPGLprolog\" for reading");
perror("ERROR: Unable to open HPGL prolog \"" CUPS_DATADIR "/HPGLprolog\" for reading");
exit(1);
}
+130
Ver Arquivo
@@ -0,0 +1,130 @@
# 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
+37 -38
Ver Arquivo
@@ -84,9 +84,9 @@ static void zshear(float [3][3], float, float);
*/
void
ImageWhiteToWhite(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageWhiteToWhite(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(const ib_t *in, /* I - Input pixels */
*/
void
ImageWhiteToRGB(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageWhiteToRGB(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(const ib_t *in, /* I - Input pixels */
*/
void
ImageWhiteToBlack(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageWhiteToBlack(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(const ib_t *in, /* I - Input pixels */
*/
void
ImageWhiteToCMY(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageWhiteToCMY(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(const ib_t *in, /* I - Input pixels */
*/
void
ImageWhiteToCMYK(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageWhiteToCMYK(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(const ib_t *in, /* I - Input pixels */
*/
void
ImageRGBToBlack(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageRGBToBlack(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(const ib_t *in, /* I - Input pixels */
*/
void
ImageRGBToCMY(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageRGBToCMY(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,12 +316,11 @@ ImageRGBToCMY(const ib_t *in, /* I - Input pixels */
*/
void
ImageRGBToCMYK(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count)/* I - Number of pixels */
ImageRGBToCMYK(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 */
@@ -335,8 +334,8 @@ ImageRGBToCMYK(const ib_t *in, /* I - Input pixels */
y = 255 - *in++;
k = min(c, min(m, y));
if ((km = max(c, max(m, y))) > k)
k = k * k / km;
diff = 255 - (max(c, max(m, y)) - k);
k = k * diff / 255;
if (k == 255)
c = m = y = 0;
@@ -386,7 +385,7 @@ ImageRGBToCMYK(const ib_t *in, /* I - Input pixels */
else if (cy > 255)
*out++ = ImageDensity[255];
else
*out++ = ImageDensity[cy];
*out++ = cy;
*out++ = ImageDensity[k];
@@ -434,9 +433,9 @@ ImageRGBToCMYK(const ib_t *in, /* I - Input pixels */
*/
void
ImageRGBToWhite(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageRGBToWhite(ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
{
if (ImageHaveProfile)
while (count > 0)
@@ -460,9 +459,9 @@ ImageRGBToWhite(const ib_t *in, /* I - Input pixels */
*/
void
ImageRGBToRGB(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageRGBToRGB(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 */
@@ -522,9 +521,9 @@ ImageRGBToRGB(const ib_t *in, /* I - Input pixels */
*/
void
ImageLut(ib_t *pixels, /* IO - Input/output pixels */
int count, /* I - Number of pixels/bytes to adjust */
const ib_t *lut) /* I - Lookup table */
ImageLut(ib_t *pixels, /* I - Input/output pixels */
int count, /* I - Number of pixels/bytes to adjust */
ib_t *lut) /* I - Lookup table */
{
while (count > 0)
{
@@ -540,7 +539,7 @@ ImageLut(ib_t *pixels, /* IO - Input/output pixels */
*/
void
ImageRGBAdjust(ib_t *pixels, /* IO - Input/output pixels */
ImageRGBAdjust(ib_t *pixels, /* I - 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) */
const 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) */
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 /* 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? */
static int
gif_read_cmap(FILE *fp,
int ncolors,
gif_cmap_t cmap,
int *gray)
{
int i; /* Looping var */
int i;
/*
+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) */
const 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) */
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) */
const 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) */
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) */
const 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) */
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) */
const 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) */
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) */
const 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) */
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) */
const 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) */
ib_t *lut) /* I - Lookup table for gamma/brightness */
{
int i, x, y,
bpp, /* Bytes per pixel */
+10 -8
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) */
const 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) */
ib_t *lut) /* I - Lookup table for gamma/brightness */
{
TIFF *tif; /* TIFF file */
uint32 width, height; /* Size of image */
@@ -89,7 +89,9 @@ ImageReadTIFF(image_t *img, /* IO - Image */
* Open the TIFF file and get the required parameters...
*/
lseek(fileno(fp), 0, SEEK_SET); /* Work around "feature" in some stdio's */
#ifdef __hpux
lseek(fileno(fp), 0, SEEK_SET); /* Work around "feature" in HP-UX stdio */
#endif /* __hpux */
if ((tif = TIFFFdOpen(fileno(fp), "", "r")) == NULL)
{
+120 -134
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 */
const 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 */
ib_t *lut) /* I - RGB gamma/brightness LUT */
{
FILE *fp; /* File pointer */
unsigned char header[16], /* First 16 bytes of file */
@@ -178,46 +178,33 @@ 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);
}
@@ -229,7 +216,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 or the RIP_CACHE environment variable.
* computed from the image size.
*/
void
@@ -286,7 +273,9 @@ ImageSetMaxTiles(image_t *img, /* I - Image to set */
img->max_ics = max_tiles;
fprintf(stderr, "DEBUG: max_ics=%d...\n", img->max_ics);
#ifdef DEBUG
fprintf(stderr, "ImageSetMaxTiles: max_ics=%d...\n", img->max_ics);
#endif /* DEBUG */
}
@@ -295,23 +284,24 @@ ImageSetMaxTiles(image_t *img, /* I - Image to set */
*/
void
ImageSetProfile(float d, /* I - Ink/marker density */
float g, /* I - Ink/marker gamma */
ImageSetProfile(float density, /* I - Ink/marker density */
float matrix[3][3]) /* I - Color transform matrix */
{
int i, j, k; /* Looping vars */
float m; /* Current matrix value */
int *im; /* Pointer into ImageMatrix */
int i, j, k; /* Looping vars */
float g; /* Gamma correction */
ImageHaveProfile = 1;
for (i = 0, im = ImageMatrix[0][0]; i < 3; i ++)
for (i = 0; i < 3; i ++)
for (j = 0; j < 3; j ++)
for (k = 0, m = matrix[i][j]; k < 256; k ++)
*im++ = (int)(k * m + 0.5);
for (k = 0; k < 256; k ++)
ImageMatrix[i][j][k] = (int)(k * matrix[i][j] + 0.5);
for (k = 0, im = ImageDensity; k < 256; k ++)
*im++ = 255.0 * d * pow((float)k / 255.0, g) + 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;
}
@@ -319,17 +309,17 @@ ImageSetProfile(float d, /* I - Ink/marker density */
* 'ImageGetCol()' - Get a column of pixels from an image.
*/
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
ImageGetCol(image_t *img,
int x,
int y,
int height,
ib_t *pixels)
{
int bpp, /* Bytes per pixel */
twidth, /* Tile width */
count; /* Number of pixels to get */
const ib_t *ib; /* Pointer into tile */
int bpp,
twidth,
count;
ib_t *ib;
if (img == NULL || x < 0 || x >= img->xsize || y >= img->ysize)
@@ -386,16 +376,16 @@ ImageGetCol(image_t *img, /* I - Image */
* 'ImageGetRow()' - Get a row of pixels from an image.
*/
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
ImageGetRow(image_t *img,
int x,
int y,
int width,
ib_t *pixels)
{
int bpp, /* Bytes per pixel */
count; /* Number of pixels to get */
const ib_t *ib; /* Pointer to pixels */
int bpp,
count;
ib_t *ib;
if (img == NULL || y < 0 || y >= img->ysize || x >= img->xsize)
@@ -439,19 +429,19 @@ ImageGetRow(image_t *img, /* I - Image */
* 'ImagePutCol()' - Put a column of pixels to an image.
*/
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
ImagePutCol(image_t *img,
int x,
int y,
int height,
ib_t *pixels)
{
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 */
int bpp,
twidth,
count;
int tilex,
tiley;
ib_t *ib;
if (img == NULL || x < 0 || x >= img->xsize || y >= img->ysize)
@@ -513,18 +503,18 @@ ImagePutCol(image_t *img, /* I - Image */
* 'ImagePutRow()' - Put a row of pixels to an image.
*/
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
ImagePutRow(image_t *img,
int x,
int y,
int width,
ib_t *pixels)
{
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 */
int bpp,
count;
int tilex,
tiley;
ib_t *ib;
if (img == NULL || y < 0 || y >= img->ysize || x >= img->xsize)
@@ -573,33 +563,28 @@ ImagePutRow(image_t *img, /* I - Image */
* 'get_tile()' - Get a cached tile.
*/
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 */
static ib_t *
get_tile(image_t *img,
int x,
int y)
{
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 */
int bpp,
tilex,
tiley,
xtiles,
ytiles;
ic_t *ic;
itile_t *tile;
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;
fprintf(stderr, "DEBUG: Creating tile array (%dx%d)\n", xtiles, ytiles);
#ifdef DEBUG
fprintf(stderr, "get_tile: Creating tile array (%dx%d)\n", xtiles, ytiles);
#endif /* DEBUG */
img->tiles = calloc(sizeof(itile_t *), ytiles);
tile = calloc(sizeof(itile_t), xtiles * ytiles);
@@ -624,18 +609,20 @@ get_tile(image_t *img, /* I - Image */
{
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
{
fprintf(stderr, "DEBUG: Flushing old cache tile (%08lx)...\n",
img->first);
#ifdef DEBUG
fputs("get_tile: Flushing old cache tile...\n", stderr);
#endif /* DEBUG */
flush_tile(img);
ic = img->first;
@@ -646,8 +633,10 @@ get_tile(image_t *img, /* I - Image */
if (tile->pos >= 0)
{
fprintf(stderr, "DEBUG: Loading cache tile from file position %d...\n",
#ifdef DEBUG
fprintf(stderr, "get_tile: 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))
@@ -657,7 +646,9 @@ get_tile(image_t *img, /* I - Image */
}
else
{
fputs("DEBUG: Clearing cache tile...\n", stderr);
#ifdef DEBUG
fputs("get_tile: Clearing cache tile...\n", stderr);
#endif /* DEBUG */
memset(ic->pixels, 0, bpp * TILE_SIZE * TILE_SIZE);
}
@@ -688,13 +679,17 @@ get_tile(image_t *img, /* I - Image */
*/
static void
flush_tile(image_t *img) /* I - Image */
flush_tile(image_t *img)
{
int bpp; /* Bytes per pixel */
itile_t *tile; /* Pointer to tile */
int bpp;
itile_t *tile;
#ifdef DEBUG
fprintf(stderr, "flush_tile(%08x)...\n", img);
#endif /* DEBUG */
bpp = ImageGetDepth(img);
tile = img->first->tile;
@@ -706,15 +701,16 @@ flush_tile(image_t *img) /* I - Image */
if (img->cachefile == NULL)
{
cupsTempFile(img->cachename, sizeof(img->cachename));
tmpnam(img->cachename);
fprintf(stderr, "DEBUG: Creating swap file \"%s\"...\n", img->cachename);
#ifdef DEBUG
fprintf(stderr, "flush_tile: Creating cache file %s...\n", img->cachename);
#endif /* DEBUG */
if ((img->cachefile = fopen(img->cachename, "wb+")) == NULL)
{
perror("ERROR: Unable to create image swap file");
tile->ic = NULL;
tile->dirty = 0;
fprintf(stderr, "flush_tile: Unable to create swap file - %s\n",
strerror(errno));
return;
}
}
@@ -723,32 +719,22 @@ flush_tile(image_t *img) /* I - Image */
{
if (ftell(img->cachefile) != tile->pos)
if (fseek(img->cachefile, tile->pos, SEEK_SET))
{
perror("ERROR: Unable to seek in swap file");
tile->ic = NULL;
tile->dirty = 0;
return;
}
perror("flush_tile:");
}
else
{
if (fseek(img->cachefile, 0, SEEK_END))
{
perror("ERROR: Unable to append to swap file");
tile->ic = NULL;
tile->dirty = 0;
return;
}
perror("flush_tile:");
tile->pos = ftell(img->cachefile);
}
#ifdef DEBUG
fprintf(stderr, "flush_tile: Wrote tile cache at position %d...\n",
tile->pos);
#endif /* DEBUG */
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);
fwrite(tile->ic->pixels, bpp, TILE_SIZE * TILE_SIZE, img->cachefile);
tile->ic = NULL;
tile->dirty = 0;
}
+23 -25
Ver Arquivo
@@ -153,59 +153,57 @@ typedef struct
*/
extern image_t *ImageOpen(char *filename, int primary, int secondary,
int saturation, int hue, const ib_t *lut);
int saturation, int hue, ib_t *lut);
extern void ImageClose(image_t *img);
extern void ImageSetMaxTiles(image_t *img, int max_tiles);
extern void ImageSetProfile(float d, float g, float matrix[3][3]);
extern void ImageSetProfile(float density, 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, const ib_t *pixels);
extern int ImagePutRow(image_t *img, int x, int y, int width, const 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);
/*
* File formats...
*/
extern int ImageReadGIF(image_t *img, FILE *fp, int primary, int secondary,
int saturation, int hue, const ib_t *lut);
int saturation, int hue, ib_t *lut);
extern int ImageReadJPEG(image_t *img, FILE *fp, int primary, int secondary,
int saturation, int hue, const ib_t *lut);
int saturation, int hue, ib_t *lut);
extern int ImageReadPNG(image_t *img, FILE *fp, int primary, int secondary,
int saturation, int hue, const ib_t *lut);
int saturation, int hue, ib_t *lut);
extern int ImageReadPNM(image_t *img, FILE *fp, int primary, int secondary,
int saturation, int hue, const ib_t *lut);
int saturation, int hue, ib_t *lut);
extern int ImageReadPhotoCD(image_t *img, FILE *fp, int primary,
int secondary, int saturation, int hue,
const ib_t *lut);
int secondary, int saturation, int hue, ib_t *lut);
extern int ImageReadSGI(image_t *img, FILE *fp, int primary, int secondary,
int saturation, int hue, const ib_t *lut);
int saturation, int hue, ib_t *lut);
extern int ImageReadSunRaster(image_t *img, FILE *fp, int primary,
int secondary, int saturation, int hue,
const ib_t *lut);
int secondary, int saturation, int hue, ib_t *lut);
extern int ImageReadTIFF(image_t *img, FILE *fp, int primary, int secondary,
int saturation, int hue, const ib_t *lut);
int saturation, int hue, ib_t *lut);
/*
* Colorspace conversions...
*/
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 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 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 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 ImageRGBAdjust(ib_t *pixels, int count, int saturation, int hue);
extern void ImageLut(ib_t *pixels, int count, const ib_t *lut);
extern void ImageLut(ib_t *pixels, int count, ib_t *lut);
/*
* Image scaling operations...
+1 -6
Ver Arquivo
@@ -91,7 +91,6 @@ 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)
@@ -259,11 +258,8 @@ main(int argc, /* I - Number of command-line arguments */
if (Copies > 1 && !slowcollate)
{
printf("/#copies %d def\n", Copies);
realcopies = Copies;
Copies = 1;
Copies = 1;
}
else
realcopies = 1;
/*
* Output the pages...
@@ -277,7 +273,6 @@ 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);
+12 -22
Ver Arquivo
@@ -296,7 +296,7 @@ main(int argc, /* I - Number of command-line arguments */
resolution = "";
/*
* Choose the appropriate colorspace...
* Choose the appropriate colorspace and color profile...
*/
switch (header.cupsColorSpace)
@@ -388,32 +388,22 @@ 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)
ImageSetProfile(profile->density, profile->gamma, profile->matrix);
{
fputs("Setting color profile!\n", stderr);
ImageSetProfile(profile->density, profile->matrix);
}
}
/*
@@ -491,8 +481,8 @@ main(int argc, /* I - Number of command-line arguments */
xprint = xinches / xpages;
yprint = yinches / ypages;
if ((choice = ppdFindMarkedChoice(ppd, "PageSize")) != NULL &&
strcmp(choice->choice, "Custom") == 0)
if ((val = cupsGetOption("Page", num_options, options)) != NULL &&
strncmp(val, "Custom.", 7) == 0)
{
if (Orientation & 1)
{
@@ -564,8 +554,6 @@ main(int argc, /* I - Number of command-line arguments */
Copies = 1;
}
else
header.NumCopies = 1;
/*
* Create the dithering lookup tables...
@@ -609,7 +597,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(2 * header.cupsBytesPerLine);
row = malloc(header.cupsBytesPerLine);
ras = cupsRasterOpen(1, CUPS_RASTER_WRITE);
blank = img->colorspace < 0 ? 0 : ~0;
@@ -2257,7 +2245,7 @@ format_KCMYcm(cups_page_header_t *header,/* I - Page header */
if (pk)
*ptr++ ^= 32; /* Black */
else if (pc && pm)
*ptr++ ^= 17; /* Blue (cyan + light magenta) */
*ptr++ ^= 3; /* Blue (light cyan + light magenta) */
else if (pc && py)
*ptr++ ^= 6; /* Green (light cyan + yellow) */
else if (pm && py)
@@ -2323,7 +2311,7 @@ format_KCMYcm(cups_page_header_t *header,/* I - Page header */
*kptr ^= bitmask; /* Black */
else if (pc && pm)
{
*cptr ^= bitmask; /* Blue (cyan + light magenta) */
*lcptr ^= bitmask; /* Blue (light cyan + light magenta) */
*lmptr ^= bitmask;
}
else if (pc && py)
@@ -2414,6 +2402,7 @@ 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;
@@ -2467,6 +2456,7 @@ 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;
+21 -43
Ver Arquivo
@@ -97,7 +97,6 @@ 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)
@@ -205,7 +204,7 @@ main(int argc, /* I - Number of command-line arguments */
if (sloworder || slowcollate)
{
temp = fopen(cupsTempFile(tempfile, sizeof(tempfile)), "wb+");
temp = fopen(tmpnam(tempfile), "wb+");
if (temp == NULL)
slowcollate = sloworder = 0;
@@ -277,7 +276,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 && level > 0)
else if (strcmp(line, "%%EndDocument") == 0)
level --;
else if (strncmp(line, "%%Page:", 7) == 0 && level == 0)
break;
@@ -304,12 +303,12 @@ main(int argc, /* I - Number of command-line arguments */
* Then read all of the pages, filtering as needed...
*/
for (page = 1;;)
for (;;)
{
if (strncmp(line, "%%BeginDocument:", 16) == 0 ||
strncmp(line, "%%BeginDocument ", 16) == 0) /* Adobe Acrobat BUG */
level ++;
else if (strcmp(line, "%%EndDocument") == 0 && level > 0)
else if (strcmp(line, "%%EndDocument") == 0)
level --;
else if (strncmp(line, "%%Page:", 7) == 0 && level == 0)
{
@@ -321,7 +320,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 && level > 0)
else if (strcmp(line, "%%EndDocument") == 0)
level --;
else if (strncmp(line, "%%Page:", 7) == 0 && level == 0)
break;
@@ -335,22 +334,16 @@ main(int argc, /* I - Number of command-line arguments */
if (slowcollate || sloworder)
Pages[NumPages] = ftell(temp);
NumPages ++;
if (!sloworder)
{
if ((NumPages % NUp) == 0)
{
if (ppd == NULL || ppd->num_filters == 0)
fprintf(stderr, "PAGE: %d %d\n", page, Copies);
if (ppd == NULL || ppd->num_filters == 0)
fprintf(stderr, "PAGE: %d %d\n", NumPages, Copies);
printf("%%%%Page: %d %d\n", page, page);
page ++;
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
}
start_nup(NumPages);
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
start_nup(NumPages - 1);
}
NumPages ++;
}
}
else if (strncmp(line, "%%BeginBinary:", 14) == 0 ||
@@ -397,26 +390,19 @@ main(int argc, /* I - Number of command-line arguments */
if (slowcollate || sloworder)
{
Pages[NumPages] = ftell(temp);
page = 1;
if (!sloworder)
{
while (Copies > 0)
while (Copies > 1)
{
rewind(temp);
for (number = 0; number < NumPages; number ++)
{
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);
}
if (ppd == NULL || ppd->num_filters == 0)
fprintf(stderr, "PAGE: %d 1\n", number + 1);
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
start_nup(number);
copy_bytes(temp, Pages[number + 1] - Pages[number]);
end_nup(number);
@@ -431,17 +417,11 @@ main(int argc, /* I - Number of command-line arguments */
{
for (number = NumPages - 1; number >= 0; number --)
{
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);
}
if (ppd == NULL || ppd->num_filters == 0)
fprintf(stderr, "PAGE: %d %d\n", NumPages - number,
slowcollate ? 1 : Copies);
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]);
@@ -616,8 +596,7 @@ copy_bytes(FILE *fp, /* I - File to read from */
static void
end_nup(int number) /* I - Page number */
{
if (Flip || Orientation || NUp > 1)
puts("grestoreall");
puts("grestore");
switch (NUp)
{
@@ -704,8 +683,7 @@ start_nup(int number) /* I - Page number */
tx, ty; /* Translation values for subpage */
if (Flip || Orientation || NUp > 1)
puts("gsave");
puts("gsave");
if (Flip)
printf("%.0f 0 translate -1 1 scale\n", PageWidth);
+107
Ver Arquivo
@@ -0,0 +1,107 @@
# 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
+10 -48
Ver Arquivo
@@ -39,14 +39,13 @@
* Globals...
*/
int WrapLines = 1, /* Wrap text in lines */
int WrapLines = 0, /* 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 */
Copies = 1; /* Number of copies */
PrettyPrint = 0; /* Do pretty code formatting */
lchar_t **Page = NULL; /* Page characters */
int NumPages = 0; /* Number of pages in document */
int CharsPerInch = 10; /* Number of character columns per inch */
@@ -54,46 +53,28 @@ 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",
"do",
"double",
"do",
"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",
@@ -105,21 +86,12 @@ char *Keywords[] = /* List of known keywords... */
"static",
"struct",
"switch",
"template",
"this",
"throw",
"true",
"try",
"typedef",
"typename",
"union",
"unsigned",
"virtual",
"void",
"volatile",
"while",
"xor",
"xor_eq"
"while"
};
@@ -193,21 +165,10 @@ 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("nowrap", num_options, options) == NULL;
WrapLines = cupsGetOption("wrap", num_options, options) != NULL;
if ((val = cupsGetOption("columns", num_options, options)) != NULL)
PageColumns = atoi(val);
@@ -219,11 +180,12 @@ TextMain(char *name, /* I - Name of filter */
LinesPerInch = atoi(val);
if ((val = cupsGetOption("prettyprint", num_options, options)) != NULL)
PageTop -= 216.0f / LinesPerInch;
{
PrettyPrint = 1;
PageTop -= 216.0f / LinesPerInch;
}
Copies = atoi(argv[4]);
WriteProlog(argv[3], argv[2], ppd);
WriteProlog(argv[3], argv[2]);
/*
* Read text from the specified source and print it...
+2 -3
Ver Arquivo
@@ -64,8 +64,7 @@ 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 */
Copies; /* Number of copies to produce */
PrettyPrint; /* Do pretty code formatting */
extern lchar_t **Page; /* Page characters */
extern int NumPages; /* Number of pages in document */
extern int CharsPerInch, /* Number of character columns per inch */
@@ -81,7 +80,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, ppd_file_t *ppd);
extern void WriteProlog(char *title, char *user);
/*
+21 -20
Ver Arquivo
@@ -113,9 +113,8 @@ WritePage(void)
*/
void
WriteProlog(char *title, /* I - Title of job */
char *user, /* I - Username */
ppd_file_t *ppd) /* I - PPD file info */
WriteProlog(char *title, /* I - Title of job */
char *user) /* I - Username */
{
int line; /* Current output line */
char *charset; /* Character set string */
@@ -336,43 +335,41 @@ WriteProlog(char *title, /* I - Title of job */
printf("\t0 0 %.1f %.1f rectfill\n", PageRight - PageLeft,
144.0f / LinesPerInch);
puts("\tFB setfont");
puts("\tFN 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,
(0.5f + 0.157f) * 72.0f / LinesPerInch);
PageRight - PageLeft - 36.0f / LinesPerInch, 54.0f / LinesPerInch);
printf("\t\t%.1f %.1f } ifelse\n", 36.0f / LinesPerInch,
(0.5f + 0.157f) * 72.0f / LinesPerInch);
54.0f / LinesPerInch);
}
else
printf("\t%.1f %.1f\n", 36.0f / LinesPerInch,
(0.5f + 0.157f) * 72.0f / LinesPerInch);
54.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,
(0.5f + 0.157f) * 72.0f / LinesPerInch);
(PageRight - PageLeft) * 0.5, 54.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,
(0.5f + 0.157f) * 72.0f / LinesPerInch);
54.0f / LinesPerInch);
printf("\t\tdup stringwidth pop neg %.1f add %.1f } ifelse\n",
PageRight - PageLeft - 36.0f / LinesPerInch,
(0.5f + 0.157f) * 72.0f / LinesPerInch);
54.0f / LinesPerInch);
}
else
printf("\tP cvs dup stringwidth pop neg %.1f add %.1f\n",
PageRight - PageLeft - 36.0f / LinesPerInch,
(0.5f + 0.157f) * 72.0f / LinesPerInch);
54.0f / LinesPerInch);
puts("\tmoveto show");
puts("\tgrestore");
@@ -455,8 +452,8 @@ write_string(int col, /* I - Start column */
y = PageTop;
}
x += (float)col * 72.0f / (float)CharsPerInch;
y -= (float)(row + 0.843) * 72.0f / (float)LinesPerInch;
x += (float)col * 72.0 / (float)CharsPerInch;
y -= (float)(row + 1) * 72.0 / (float)LinesPerInch;
attr = s->attr;
@@ -509,6 +506,15 @@ 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
{
@@ -545,10 +551,7 @@ write_string(int col, /* I - Start column */
}
putchar(')');
}
if (PrettyPrint)
{
if (attr & ATTR_RED)
puts("r");
else if (attr & ATTR_GREEN)
@@ -558,8 +561,6 @@ write_string(int col, /* I - Start column */
else
puts("S");
}
else
puts("S");
}
+98
Ver Arquivo
@@ -0,0 +1,98 @@
# 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
+113 -114
Ver Arquivo
@@ -1,124 +1,123 @@
iso-8859-1
Okay
Abbrechen
Hilfe
Beenden
Schließen
Ja
Nein
An
Aus
Speichern
Verwerfen
Default
Optionen
Mehr Info
Schwarz
Farbe
Cyan
Magenta
Gelb
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
Copyright 1993-1999 durch Easy Software Products, alle Rechte vorbehalten.
Allgemein
Drucker
Bild Optionen
HP-GL/2 Optionen
Speziell
Dokument
Andere
Druckbereich:
General
Drucker
BildOptionen
HP-GL/2 Optionen
Extrakosten
Dokument
Anderes
DruckSeiten:
Gesamtes Dokument
Seitenbereich:
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:
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:
Helligkeit:
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
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
Lokal
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
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
Leerlauf
In Arbeit
Verarbeitend
Gestoppt
Alles
Ungerade
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.
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.
+62 -62
Ver Arquivo
@@ -3,16 +3,16 @@ OK
Annulation
Aide
Quitté
Fermer
Étroit
Oui
Non
Oui
Non
Sauver
Quitté
Sur
Outre de
Économiser
Écart
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
Options supplémentaires
Options D'Image
Options D'HP-GL/2
Frais supplémentaires
Document
Autre
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
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
Zoom par PPI
Image de miroir:
Saturation de couleur:
Teinture de couleur:
Correspondre au page:
Image De Miroir:
Saturation De Couleur:
Tonalité De Couleur:
Adaptez pour paginer:
Ombrageant:
Largeur de crayon lecteur:
Correction de Gamma:
Largeur De Crayon lecteur:
Gamma Correction:
Éclat:
Ajoutez
Éffacer
Effacement
Modifiez
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
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
Ne recevant pas Les Travaux
Tirages
Classe
Local
Distant
Périphérique
Duplexage
Agrafant
Copie Rapides
Copies Assemblées
Poinçon de trou
Rapides Copies
Assemblées Copies
Poinçon De Trou
Bâche
Liant
Triant
Petit (jusqu'à 9.5x1pouce)
Moyen (9.5x1pouce à 13x19pouce)
Grand (13x19pouce et plus grand)
Taille faite sur commande
Arrêter
Petit (jusqu'à 9.5x1în)
Support (9.5x1în à 13x19in)
Grand (13x19in et plus grand)
Faite sur commande Taille
Ralenti
Traitant
Arrêté
Tout
Impair
Même Pages
Plus foncé Plus Lumineux
Dimension du medias
Sorte de medias
Source du medias
Taille De Medias
Type De Supports
Source De Medias
Orientation:
Verticale
Horizontal
État du travail
Nom du travail
Nom de l'utilisateur
Priorité
Job State
Job Name
User Name
Priority
Copies
Grandeur du fichier
Imminent
Method de sortie
File Size
Pending
Output Mode
Resolution
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.
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.
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 ce serveur.
L'Uri de demande est trop grand pour ce serveur.
La demande est trop grande pour que ce serveur traite.
L'cUri de demande est trop grand pour que ce serveur traite.
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 actuellement indisponible sur ce serveur.
La ressource demandée est actuel 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 680 1999-09-22 20:06:43Z mike $"
.\" "$Id: accept.8 380 1999-06-10 16:15:04Z 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" "22 September 1999" "Easy Software Products"
.TH accept 8 "Common UNIX Printing System" "14 May 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
\fIaccept\fR instructs the printing system to accept print jobs to the
\fBaccept\fR instructs the printing system to accept print jobs to the
specified destinations.
.LP
\fIreject\fR instructs the printing system to reject print jobs to the
\fBreject\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 \fIaccept\fR and \fIreject\fR may ask the user for an
The CUPS versions of \fBaccept\fR and \fBreject\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 Administrators Manual
CUPS Software Administrator's Manual
.SH COPYRIGHT
Copyright 1993-1999 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: accept.8 680 1999-09-22 20:06:43Z mike $".
.\" End of "$Id: accept.8 380 1999-06-10 16:15:04Z 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