Comparar commits

..

1 Commits

Autor SHA1 Mensagem Data
msweet 641f3d83c2 Import cups.org releases
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/tags/release-1.0b7@4306 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-10 18:56:23 +00:00
115 arquivos alterados com 4210 adições e 4884 exclusões
-332
Ver Arquivo
@@ -1,332 +0,0 @@
Common UNIX Printing System License Agreement
Copyright 1997-1999 by Easy Software Products
44141 AIRPORT VIEW DR STE 204
HOLLYWOOD, MARYLAND 20636-3111 USA
Voice: +1.301.373.9603
Email: cups-info@cups.org
WWW: http://www.cups.org
Introduction
The Common UNIX Printing SystemTM, or CUPSTM, is provided under the GNU
General Public License, Version 2. A copy of this license follows this
introduction.
For those not familiar with the GNU General Public License, the license
basically allows you to:
* Use the CUPS software at no charge.
* Distribute verbatim copies of the software in source or binary form.
* Sell verbatim copies of the software for a media fee, or sell support
for the software.
* Distribute or sell printer drivers and filters that use the CUPS API so
long as source code is made available under the GPL.
What this license does not allow you to do is make changes or add features
to CUPS and then sell a binary distribution without source code. You have to
provide source for any new drivers, changes, or additions to the software,
and all code must be provided under the GPL.
Also, since we have trademarked the Common UNIX Printing System, CUPS, and
CUPS logo, you may not release a derivative product using those names
without permission from Easy Software Products.
Binary Distribution Rights
Easy Software Products also sells rights to the CUPS source code under a
binary distribution license for vendors that are unable to release source
code for their drivers or additions and modifications to CUPS under the GPL.
For pricing information please contact us at the address shown above.
The Common UNIX Printing System utilizes GNU GhostScript 4.03 to convert
PostScript files into a stream of raster images. For binary distribution
licensing of this software, please contact:
Miles Jones
Director of Marketing
Artifex Software Inc.
454 Las Gallinas Ave., Suite 108
San Rafael, CA 94903 USA
Voice: +1.415.492.9861
Fax: +1.415.492.9862
EMail: info@arsoft.com
Support
Easy Software Products sells software support for distributors and resellers
of CUPS. Support for users of CUPS is available from Easy Software Products
through our ESP Print software.
Trademarks
The Common UNIX Printing System, CUPS, and the CUPS logo are the trademark
property of Easy Software Products. Any derivative of this software may not
use any of these trademarks without the expressed written consent of Easy
Software Products.
GNU General Public License
Version 2, June 1991
Copyright 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies of this license
document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your freedom to
share and change it. By contrast, the GNU General Public License is intended
to guarantee your freedom to share and change free software--to make sure
the software is free for all its users. This General Public License applies
to most of the Free Software Foundation's software and to any other program
whose authors commit to using it. (Some other Free Software Foundation
software is covered by the GNU Library General Public License instead.) You
can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our
General Public Licenses are designed to make sure that you have the freedom
to distribute copies of free software (and charge for this service if you
wish), that you receive source code or can get it if you want it, that you
can change the software or use pieces of it in new free programs; and that
you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to
deny you these rights or to ask you to surrender the rights. These
restrictions translate to certain responsibilities for you if you distribute
copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis or
for a fee, you must give the recipients all the rights that you have. You
must make sure that they, too, receive or can get the source code. And you
must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and (2)
offer you this license which gives you legal permission to copy, distribute
and/or modify the software.
Also, for each author's protection and ours, we want to make certain that
everyone understands that there is no warranty for this free software. If
the software is modified by someone else and passed on, we want its
recipients to know that what they have is not the original, so that any
problems introduced by others will not reflect on the original authors'
reputations.
Finally, any free program is threatened constantly by software patents. We
wish to avoid the danger that redistributors of a free program will
individually obtain patent licenses, in effect making the program
proprietary. To prevent this, we have made it clear that any patent must be
licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification
follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
1. This License applies to any program or other work which contains a
notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of running
the Program is not restricted, and the output from the Program is
covered only if its contents constitute a work based on the Program
(independent of having been made by running the Program). Whether that
is true depends on what the Program does.
2. You may copy and distribute verbatim copies of the Program's source
code as you receive it, in any medium, provided that you conspicuously
and appropriately publish on each copy an appropriate copyright notice
and disclaimer of warranty; keep intact all the notices that refer to
this License and to the absence of any warranty; and give any other
recipients of the Program a copy of this License along with the
Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
3. You may modify your copy or copies of the Program or any portion of it,
thus forming a work based on the Program, and copy and distribute such
modifications or work under the terms of Section 1 above, provided that
you also meet all of these conditions:
a. You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b. You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c. if the modified program normally reads commands interactively when
run, you must cause it, when started running for such interactive
use in the most ordinary way, to print or display an announcement
including an appropriate copyright notice and a notice that there
is no warranty (or else, saying that you provide a warranty) and
that users may redistribute the program under these conditions,
and telling the user how to view a copy of this License.
(Exception: if the Program itself is interactive but does not
normally print such an announcement, your work based on the
Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of a
storage or distribution medium does not bring the other work under the
scope of this License.
4. You may copy and distribute the Program (or a work based on it, under
Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a. Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software
interchange; or,
b. Accompany it with a written offer, valid for at least three years,
to give any third party, for a charge no more than your cost of
physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c. Accompany it with the information you received as to the offer to
distribute corresponding source code. (This alternative is allowed
only for noncommercial distribution and only if you received the
program in object code or executable form with such an offer, in
accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to control
compilation and installation of the executable. However, as a special
exception, the source code distributed need not include anything that
is normally distributed (in either source or binary form) with the
major components (compiler, kernel, and so on) of the operating system
on which the executable runs, unless that component itself accompanies
the executable.
If distribution of executable or object code is made by offering access
to copy from a designated place, then offering equivalent access to
copy the source code from the same place counts as distribution of the
source code, even though third parties are not compelled to copy the
source along with the object code.
5. You may not copy, modify, sublicense, or distribute the Program except
as expressly provided under this License. Any attempt otherwise to
copy, modify, sublicense or distribute the Program is void, and will
automatically terminate your rights under this License. However,
parties who have received copies, or rights, from you under this
License will not have their licenses terminated so long as such parties
remain in full compliance.
6. You are not required to accept this License, since you have not signed
it. However, nothing else grants you permission to modify or distribute
the Program or its derivative works. These actions are prohibited by
law if you do not accept this License. Therefore, by modifying or
distributing the Program (or any work based on the Program), you
indicate your acceptance of this License to do so, and all its terms
and conditions for copying, distributing or modifying the Program or
works based on it.
7. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further restrictions
on the recipients' exercise of the rights granted herein. You are not
responsible for enforcing compliance by third parties to this License.
8. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent license
would not permit royalty-free redistribution of the Program by all
those who receive copies directly or indirectly through you, then the
only way you could satisfy both it and this License would be to refrain
entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made generous
contributions to the wide range of software distributed through that
system in reliance on consistent application of that system; it is up
to the author/donor to decide if he or she is willing to distribute
software through any other system and a licensee cannot impose that
choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
9. If the distribution and/or use of the Program is restricted in certain
countries either by patents or by copyrighted interfaces, the original
copyright holder who places the Program under this License may add an
explicit geographical distribution limitation excluding those
countries, so that distribution is permitted only in or among countries
not thus excluded. In such case, this License incorporates the
limitation as if written in the body of this License.
10. The Free Software Foundation may publish revised and/or new versions of
the General Public License from time to time. Such new versions will be
similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Program does not specify a version
number of this License, you may choose any version ever published by
the Free Software Foundation.
11. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the
author to ask for permission. For software which is copyrighted by the
Free Software Foundation, write to the Free Software Foundation; we
sometimes make exceptions for this. Our decision will be guided by the
two goals of preserving the free status of all derivatives of our free
software and of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
NECESSARY SERVICING, REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM
(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR
OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
+18 -3
Ver Arquivo
@@ -33,6 +33,7 @@ AWK = @AWK@
CC = @CC@
CHMOD = @CHMOD@
CP = @CP@
DSO = @DSO@
HTMLDOC = @HTMLDOC@
LN = /bin/ln -sf
MKDIR = @MKDIR@ -p
@@ -44,6 +45,17 @@ SED = @SED@
SHELL = /bin/sh
SMBCLIENT = @SMBCLIENT@
#
# Libraries...
#
LIBCUPS = @LIBCUPS@
LIBCUPSIMAGE = @LIBCUPSIMAGE@
LIBJPEG = @LIBJPEG@
LIBPNG = @LIBPNG@
LIBTIFF = @LIBTIFF@
LIBZ = @LIBZ@
#
# Program options...
#
@@ -54,9 +66,11 @@ SMBCLIENT = @SMBCLIENT@
ARFLAGS = crvs
CFLAGS = @CFLAGS@ $(OPTIM) -I.. $(OPTIONS)
IMGLIBS = @IMGLIBS@ $(LIBS) -lm
DSOLIBS = @DSOLIBS@
IMGLIBS = @IMGLIBS@ -lm
LDFLAGS = @LDFLAGS@ $(OPTIM)
LIBS = @LIBS@ -L../cups -lcups
LIBS = -L../cups -lcups $(NETLIBS) @LIBS@
NETLIBS = @NETLIBS@
OPTIM = @OPTIM@
OPTIONS =
@@ -97,7 +111,7 @@ top_srcdir = @top_srcdir@
BINDIR = @bindir@
DATADIR = @CUPS_DATADIR@
INCLUDEDIR = $(includedir)/cups
INCLUDEDIR = $(includedir)
LIBDIR = $(libdir)
LOCALEDIR = @CUPS_LOCALEDIR@
MANDIR = @mandir@
@@ -108,6 +122,7 @@ SERVERROOT = @CUPS_SERVERROOT@
# Rules...
#
.SILENT:
.SUFFIXES: .a .c .gz .h .o .z .1 .5 .8
.c.o:
echo Compiling $<...
-139
Ver Arquivo
@@ -1,139 +0,0 @@
<HTML>
<HEAD>
<TITLE>README - Common UNIX Printing System</TITLE>
</HEAD>
<BODY>
<H1>README - CUPS v1.0b4</H1>
<H2>Contents</H2>
<UL>
<LI><A HREF="#intro">Introduction</A>
<LI><A HREF="#require">Requirements</A>
<LI><A HREF="#use">Using CUPS</A>
<LI><A HREF="#known">Known Problems</A>
<LI><A HREF="#report">Reporting Problems</A>
<LI><A HREF="#resources">Other Resources</A>
<LI><A HREF="#legal">Legal Stuff</A>
</UL>
<H2><A NAME="intro">Introduction</A></H2>
The Common UNIX Printing System provides a portable printing layer for
UNIX&reg; operating systems. It has been developed by Easy Software
Products to promote a standard printing solution for all UNIX vendors
and users. CUPS provides the System V and Berkeley command-line
interfaces.
<P>CUPS uses the Internet Printing Protocol (IETF-IPP) as the basis
for managing print jobs and queues. The Line Printer Daemon (LPD,
RFC1179), Server Message Block (SMB), and AppSocket protocols are also
supported with reduced functionality.
<P>CUPS adds network printer browsing and PostScript Printer
Description (&quot;PPD&quot;)-based printing options to support real
world applications under UNIX.
<P>CUPS also includes a customized version of GNU GhostScript (currently
based off GNU GhostScript 4.03) and an image file RIP that can be used to
support non-PostScript printers.
<H2><A NAME="require">Requirements</A></H2>
You'll need an ANSI C compiler to build CUPS on your system. As its name
implies, CUPS is designed to run on the UNIX operating system, however
the CUPS interface library and most of the filters and backends supplied
with CUPS should also run under Microsoft&reg; Windows&reg;.
<P>For the image file filters you'll need the JPEG, PNG, TIFF, and ZLIB
libraries. CUPS will build without these, but with reduced functionality.
<P>If you make changes to the man pages you'll need GNU groff or another
nroff-like package.
<P>The documentation is formatted using the HTMLDOC software (again, not
needed unless you make changes.)
<H2><A NAME="use">Using CUPS</A></H2>
<P>Pre-compiled binary distributions are available for CUPS from our
web site at
<A HREF="http://www.cups.org/software.html">http://www.cups.org/software.html</A>.
If you'd like to build CUPS from the source, please read the Software
Administrator's Manual.
<P>Once you have installed CUPS, the Software Administrator's Manual and
Software User's Manual are excellent places to start setting things up.
<H2><A NAME="known">Known Problems</A></H2>
The following known problems are being worked on and should be resolved for
the fourth beta release of CUPS:
<UL>
<LI>Documentation is not completed.
<LI>The lpc command currently only supports the help and status
commands.
</UL>
CUPS has been built and tested on the following operating systems:
<UL>
<LI>Digital UNIX 4.0d
<LI>HP-UX 10.20 and 11.0
<LI>IRIX 5.3, 6.2, 6.5.3
<LI>Linux (RedHat 5.2)
<LI>Solaris 2.5.1, 2.6, 2.7 (aka 7)
</UL>
The client libraries and filters have been successfully compiled under
Microsoft Windows using Visual C++ 6.0.
<H2><A NAME="report">Reporting Problems</A></H2>
If you have problems, please send an email to
<A HREF="mailto:cups-support@cups.org">cups-support@cups.org</A>. Include
your operating system and version, compiler and version, and any errors
or problems you've run into.
<H2><A NAME="resources">Other Resources</A></H2>
See the CUPS web site at "http://www.cups.org" for other site links.
<P>You can subscribe to the CUPS mailing list by sending a message containing
"subscribe cups" to <A HREF="mailto:majordomo@cups.org">majordomo@cups.org</A>.
This list is provided to discuss problems, questions, and improvements to
the CUPS software. New releases of CUPS are announced to this list as well.
<H2><A NAME="legal">Legal Stuff</A></H2>
CUPS is Copyright 1993-1999 by Easy Software Products. CUPS, the CUPS logo,
and the Common UNIX Printing System are the trademark property of Easy Software
Products.
<P>CUPS is provided under the terms of the
<A HREF="LICENSE.html">GNU General Public License</A>
which is located in the files "LICENSE.html" and "LICENSE.txt". For commercial
support and "binary-only" licensing information, please contact:
<UL>
Attn: CUPS Licensing Information
<BR>Easy Software Products
<BR>44141 Airport View Drive, Suite 204
<BR>Hollywood, Maryland 20636-3111 USA
<P>Voice: +1.301.373.9603
<BR>Email: <A HREF="mailto:cups-info@cups.org">cups-info@cups.org</A>
<BR>WWW: <A HREF="http://www.cups.org">http://www.cups.org</A>
</UL>
<P>If you're interested in a complete, commercial printing solution for UNIX,
check out our ESP Print software at <A HREF="http://www.easysw.com/print.html">
http://www.easysw.com/print.html</A>.
</BODY>
</HTML>
+149 -74
Ver Arquivo
@@ -1,120 +1,195 @@
README - CUPS v1.0b4
--------------------
README - CUPS v1.0b6 - 07/30/1999
---------------------------------
CONTENTS
BETA SOFTWARE BETA SOFTWARE BETA SOFTWARE BETA SOFTWARE BETA SOFTWARE
* Introduction
* Requirements
* Using CUPS
* Known Problems
* Reporting Problems
* Other Resources
* Legal Stuff
WARNING - This is a BETA release of CUPS, which means that it may
contain "bugs" that could prevent you from printing. If
you are concerned that this may cause you lost time or
money, please STOP and do not install this software!
BETA SOFTWARE BETA SOFTWARE BETA SOFTWARE BETA SOFTWARE BETA SOFTWARE
INTRODUCTION
The Common UNIX Printing System provides a portable printing layer for UNIX®
operating systems. It has been developed by Easy Software Products to
promote a standard printing solution for all UNIX vendors and users. CUPS
provides the System V and Berkeley command-line interfaces.
The Common UNIX Printing System provides a portable printing layer for
UNIX® operating systems. It has been developed by Easy Software
Products to promote a standard printing solution for all UNIX vendors
and users. CUPS provides the System V and Berkeley command-line
interfaces.
CUPS uses the Internet Printing Protocol (IETF-IPP) as the basis for
managing print jobs and queues. The Line Printer Daemon (LPD, RFC1179),
Server Message Block (SMB), and AppSocket protocols are also supported with
reduced functionality.
managing print jobs and queues. The Line Printer Daemon (LPD,
RFC1179), 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 also includes a customized version of GNU GhostScript (currently
based off GNU GhostScript 4.03) and an image file RIP that can be used
to support non-PostScript printers.
CUPS is Copyright 1993-1999 by Easy Software Products, All Rights
Reserved. CUPS is currently licensed under the terms of the GNU
General Public License. Please see the license file for details.
REQUIREMENTS
SYSTEM REQUIREMENTS
You'll need an ANSI C compiler to build CUPS on your system. As its name
implies, CUPS is designed to run on the UNIX operating system, however the
CUPS interface library and most of the filters and backends supplied with
CUPS should also run under Microsoft® Windows®.
Binary distributions require a minimum of 10MB of free disk space. We
do not recommend using CUPS on a workstation with less than 32MB of RAM
or a PC with less than 16MB of RAM.
For the image file filters you'll need the JPEG, PNG, TIFF, and ZLIB
libraries. CUPS will build without these, but with reduced functionality.
If you make changes to the man pages you'll need GNU groff or another
nroff-like package.
The documentation is formatted using the HTMLDOC software (again, not needed
unless you make changes.)
If you are installing from source you'll need an ANSI C compiler and
optionally one or more image file support libraries. Complete source
installation instructions can be found in the CUPS System
Administrator's Manual in the files "doc/sam.html" or "doc/sam.pdf".
USING CUPS
SOFTWARE REQUIREMENTS
Pre-compiled binary distributions are available for CUPS from our web site
at http://www.cups.org/software.html. If you'd like to build CUPS from the
source, please read the Software Administrator's Manual.
The following operating system software is required to install one of
the binary distributions from Easy Software Products:
Once you have installed CUPS, the Software Administrator's Manual and
Software User's Manual are excellent places to start setting things up.
- Digital UNIX (aka OSF1 aka Compaq Tru64 UNIX) 4.0 or higher
- HP-UX 10.20 or higher
- IRIX 5.3 or higher
- Linux 2.0.36 with glibc2 or higher (tested with RedHat 5.2)
- Solaris 2.5 or higher (SPARC or Intel)
KNOWN PROBLEMS
INSTALLING CUPS
The following known problems are being worked on and should be resolved for
the fourth beta release of CUPS:
We are currently distributing CUPS binary distributions in TAR format
with installation and removal scripts generated by our ESP Package
Manager (EPM) software, which is also included with the source
distribution.
* Documentation is not completed.
* The lpc command currently only supports the help and status commands.
WARNING: Installing CUPS will overwrite your existing printing system.
Backup files are made by the installation script and restored by the
removal script, so if you experience problems you should be able to
remove the CUPS software to restore your previous configuration.
However, Easy Software Products makes no warranty for this and will not
be liable for any lost revenues, etc.
CUPS has been built and tested on the following operating systems:
To install the CUPS software you will need to be logged in as root
(doing an "su" is good enough). Once you are the root user, run the
installation script with:
* Digital UNIX 4.0d
* HP-UX 10.20 and 11.0
* IRIX 5.3, 6.2, 6.5.3
* Linux (RedHat 5.2)
* Solaris 2.5.1, 2.6, 2.7 (aka 7)
./cups.install ENTER
The client libraries and filters have been successfully compiled under
Microsoft Windows using Visual C++ 6.0.
After asking you a few yes/no questions the CUPS software will be
installed and the scheduler will be started automatically.
SETTING UP PRINTER QUEUES
CUPS works best with PPD (PostScript Printer Description) files. In a
pinch you can also use System V style printer interface scripts.
Two sample PPD files are provided with this distribution that utilize
the PostScript and image file RIPs and the sample HP printer driver.
To add the sample DeskJet driver to the system for a printer connected
to the parallel port, use one of the following commands:
Digital UNIX:
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/lp0 -E
HP-UX:
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/c2t0d0_lp -E
IRIX:
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/plp -E
Linux:
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/par0 -E
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/par1 -E
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/par2 -E
Solaris:
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/bpp0 -E
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/ecpp0 -E
Similarly, for the sample LaserJet driver you can use "LaserJet" and
"laserjet.ppd".
For other printers and interfaces see the CUPS System Administator's
Manual included with this software.
PRINTING FILES
CUPS provides both the System V "lp" and Berkeley "lpr" commands for
printing:
lp filename
lpr filename
Both the "lp" and "lpr" commands support printing options for the
driver:
lp -omedia=A4 -oresolution=600dpi filename
lpr -omedia=A4 -oresolution=600dpi filename
CUPS recognizes many types of images files as well as PostScript, HP-GL/2,
and text files, so you can print those files directly rather than through
an application.
If you have an application that generates output specifically for your
printer then you need to use the "-oraw" or "-l" options:
lp -oraw filename
lpr -l filename
This will prevent the filters from misinterpreting your print file.
REPORTING PROBLEMS
If you have problems, please send an email to cups-support@cups.org. Include
your operating system and version, compiler and version, and any errors or
problems you've run into.
If you have problems, please send an email to cups-support@cups.org.
Include your operating system and version, compiler and version, and
any errors or problems you've run into.
OTHER RESOURCES
See the CUPS web site at "http://www.cups.org" for other site links.
You can subscribe to the CUPS mailing list by sending a message containing
"subscribe cups" to majordomo@cups.org. This list is provided to discuss
problems, questions, and improvements to the CUPS software. New releases of
CUPS are announced to this list as well.
You can subscribe to the CUPS mailing list by sending a message
containing "subscribe cups" to majordomo@cups.org. This list is
provided to discuss problems, questions, and improvements to the CUPS
software. New releases of CUPS are announced to this list as well.
LEGAL STUFF
CUPS is Copyright 1993-1999 by Easy Software Products. CUPS, the CUPS logo,
and the Common UNIX Printing System are the trademark property of Easy
Software Products.
CUPS is Copyright 1993-1999 by Easy Software Products. CUPS, the CUPS
logo, and the Common UNIX Printing System are the trademark property of
Easy Software Products.
CUPS is provided under the terms of the GNU General Public License which is
located in the files "LICENSE.html" and "LICENSE.txt". For commercial
support and "binary-only" licensing information, please contact:
CUPS is provided under the terms of the GNU General Public License
which is located in the files "LICENSE.html" and "LICENSE.txt" (or the
file "cups.license" for a binary distribution.) For commercial
licensing information, please contact:
Attn: CUPS Licensing Information
Easy Software Products
44141 Airport View Drive, Suite 204
Hollywood, Maryland 20636-3111 USA
Attn: CUPS Licensing Information
Easy Software Products
44141 Airport View Drive, Suite 204
Hollywood, Maryland 20636-3111 USA
Voice: +1.301.373.9603
Email: cups-info@cups.org
WWW: http://www.cups.org
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.
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
+7 -7
Ver Arquivo
@@ -47,17 +47,17 @@ clean:
install:
-$(MKDIR) $(SERVERROOT)/backend
$(CP) $(TARGETS) $(SERVERROOT)/backend
$(LN) ipp $(SERVERROOT)/backend/http
-$(LN) ipp $(SERVERROOT)/backend/http
$(CHMOD) u+s $(SERVERROOT)/backend/lpd
#
# ipp
#
ipp: ipp.o ../cups/libcups.a
ipp: ipp.o ../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o ipp ipp.o $(LIBS)
$(LN) ipp http
-$(LN) ipp http
ipp.o: ../cups/cups.h ../Makedefs
@@ -65,7 +65,7 @@ ipp.o: ../cups/cups.h ../Makedefs
# lpd
#
lpd: lpd.o ../cups/libcups.a
lpd: lpd.o ../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o lpd lpd.o $(LIBS)
@@ -75,7 +75,7 @@ lpd.o: ../cups/cups.h ../Makedefs
# parallel
#
parallel: parallel.o ../cups/libcups.a
parallel: parallel.o ../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o parallel parallel.o $(LIBS)
@@ -85,7 +85,7 @@ parallel.o: ../cups/cups.h ../Makedefs
# serial
#
serial: serial.o ../cups/libcups.a
serial: serial.o ../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o serial serial.o $(LIBS)
@@ -108,7 +108,7 @@ smb: smb.sh ../Makedefs
# socket
#
socket: socket.o ../cups/libcups.a
socket: socket.o ../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o socket socket.o $(LIBS)
+26 -18
Ver Arquivo
@@ -23,6 +23,7 @@
*
* Contents:
*
* main() - Send a file to the printer or server.
*/
/*
@@ -124,14 +125,15 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
/*
* Build a URI for the printer and fill the standard IPP attributes for
* an IPP_PRINT_FILE request...
* an IPP_PRINT_FILE request. We can't use the URI in argv[0] because it
* might contain username:password information...
*/
request = ippNew();
request->request.op.operation_id = IPP_PRINT_JOB;
request->request.op.request_id = 1;
sprintf(uri, "%s://%s:%d/%s", method, hostname, port, resource);
sprintf(uri, "%s://%s:%d%s", method, hostname, port, resource);
language = cupsLangDefault();
@@ -145,12 +147,10 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, uri);
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "requesting-user-name",
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
NULL, argv[2]);
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL, argv[3]);
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "copies", atoi(argv[4]));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL, argv[3]);
/*
* Handle options on the command-line...
@@ -160,12 +160,14 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
num_options = cupsParseOptions(argv[5], 0, &options);
if (cupsGetOption("raw", num_options, options))
ippAddString(request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format",
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/vnd.cups-raw");
else
ippAddString(request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format",
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/octet-stream");
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "copies", atoi(argv[4]));
for (i = 0; i < num_options; i ++)
{
/*
@@ -278,7 +280,9 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
sprintf(buffer, "%u", ippLength(request) + (size_t)fileinfo.st_size);
httpSetField(http, HTTP_FIELD_CONTENT_LENGTH, buffer);
}
else
httpSetField(http, HTTP_FIELD_TRANSFER_ENCODING, "chunked");
/*
* Do the request...
*/
@@ -290,12 +294,14 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
*/
if (httpPost(http, resource))
if (httpPost(http, resource))
{
fputs("INFO: Unable to POST print request; retrying...\n", stderr);
sleep(10);
continue;
}
{
fputs("INFO: Unable to POST print request; retrying...\n", stderr);
sleep(10);
httpReconnect(http);
continue;
}
fputs("INFO: POST successful, sending IPP request...\n", stderr);
/*
* Send the IPP request...
@@ -303,13 +309,15 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
request->state = IPP_IDLE;
if (ippWrite(http, request) != IPP_OK)
if (ippWrite(http, request) == IPP_ERROR)
{
fputs("ERROR: Unable to send IPP request; retrying...\n", stderr);
fputs("ERROR: Unable to send IPP request!\n", stderr);
status = HTTP_ERROR;
break;
}
fputs("INFO: IPP request sent, sending print file...\n", stderr);
/*
* Then send the file...
*/
@@ -328,7 +336,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
}
}
httpWrite(http, buffer, 0);
fputs("INFO: Print file sent; checking status...\n", stderr);
/*
* Finally, check the status from the HTTP server...
+2 -2
Ver Arquivo
@@ -107,7 +107,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
int bytes; /* Number of bytes read */
if ((fp = fopen(tmpnam(filename), "w")) == NULL)
if ((fp = fopen(cupsTempFile(filename, sizeof(filename)), "w")) == NULL)
{
perror("ERROR: unable to create temporary file");
return (1);
@@ -345,7 +345,7 @@ lpd_queue(char *hostname, /* I - Host to connect to */
fputs("INFO: Control file sent successfully\n", stderr);
lpd_command(fd, "\003%d dfA%03.3d%s\n", filestats.st_size,
lpd_command(fd, "\003%u dfA%03.3d%s\n", (unsigned)filestats.st_size,
getpid() % 1000, localhost);
fprintf(stderr, "INFO: Sending data file (%u bytes)\n",
+5 -5
Ver Arquivo
@@ -47,14 +47,14 @@ clean:
install:
-$(MKDIR) $(BINDIR)
-$(MKDIR) $(SBINDIR)
$(CP) lpr lprm $(BINDIR)
$(CP) lpq lpr lprm $(BINDIR)
$(CP) lpc $(SBINDIR)
#
# lpc
#
lpc: lpc.o ../cups/libcups.a
lpc: lpc.o ../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o lpc lpc.o $(LIBS)
@@ -64,7 +64,7 @@ lpc.o: ../cups/cups.h ../Makedefs
# lpq
#
lpq: lpq.o ../cups/libcups.a
lpq: lpq.o ../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o lpq lpq.o $(LIBS)
@@ -74,7 +74,7 @@ lpq.o: ../cups/cups.h ../Makedefs
# lpr
#
lpr: lpr.o ../cups/libcups.a
lpr: lpr.o ../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o lpr lpr.o $(LIBS)
@@ -84,7 +84,7 @@ lpr.o: ../cups/cups.h ../Makedefs
# lprm
#
lprm: lprm.o ../cups/libcups.a
lprm: lprm.o ../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o lprm lprm.o $(LIBS)
+14 -11
Ver Arquivo
@@ -23,6 +23,8 @@
*
* Contents:
*
* main() - Parse options and commands.
* show_jobs() - Show jobs.
*/
/*
@@ -45,7 +47,8 @@
* Local functions...
*/
static int show_jobs(http_t *, char *, char *, int, int);
static int show_jobs(http_t *, const char *, const char *, const int,
const int);
/*
@@ -58,7 +61,7 @@ main(int argc, /* I - Number of command-line arguments */
{
int i; /* Looping var */
http_t *http; /* Connection to server */
char *dest, /* Desired printer */
const char *dest, /* Desired printer */
*user; /* Desired user */
int id, /* Desired job ID */
interval, /* Reporting interval */
@@ -74,7 +77,7 @@ main(int argc, /* I - Number of command-line arguments */
* Check for command-line options...
*/
dest = NULL;
dest = cupsGetDefault();
user = NULL;
id = 0;
interval = 0;
@@ -136,21 +139,21 @@ main(int argc, /* I - Number of command-line arguments */
/*
* 'show_jobs()' - Show printers.
* 'show_jobs()' - Show jobs.
*/
static int /* O - Number of jobs in queue */
show_jobs(http_t *http, /* I - HTTP connection to server */
char *dest, /* I - Destination */
char *user, /* I - User */
int id, /* I - Job ID */
int longstatus) /* I - 1 if long report desired */
show_jobs(http_t *http, /* I - HTTP connection to server */
const char *dest, /* I - Destination */
const char *user, /* I - User */
const int id, /* I - Job ID */
const int longstatus)/* I - 1 if long report desired */
{
ipp_t *request, /* IPP Request */
*response; /* IPP Response */
ipp_attribute_t *attr; /* Current attribute */
cups_lang_t *language; /* Default language */
char *jobdest, /* Pointer into job-printer-uri */
const char *jobdest, /* Pointer into job-printer-uri */
*jobuser, /* Pointer to job-originating-user-name */
*jobname; /* Pointer to job-name */
ipp_jstate_t jobstate; /* job-state */
@@ -160,7 +163,7 @@ show_jobs(http_t *http, /* I - HTTP connection to server */
jobcount, /* Number of jobs */
rank; /* Rank of job */
char resource[1024]; /* Resource string */
static char *ranks[10] = /* Ranking strings */
static const char *ranks[10] =/* Ranking strings */
{
"th",
"st",
+27 -7
Ver Arquivo
@@ -45,20 +45,22 @@ main(int argc, /* I - Number of command-line arguments */
{
int i; /* Looping var */
int job_id; /* Job ID */
char *dest; /* Destination printer */
char *title; /* Job title */
const char *dest; /* Destination printer */
const char *title; /* Job title */
int priority; /* Job priority (1-100) */
int num_copies; /* Number of copies per file */
int num_files; /* Number of files printed */
int num_options; /* Number of options */
cups_option_t *options; /* Options */
int silent; /* Silent or verbose output? */
int silent, /* Silent or verbose output? */
deletefile; /* Delete file after print? */
char tempfile[1024]; /* Temporary file for printing from stdin */
char buffer[8192]; /* Copy buffer */
FILE *temp; /* Temporary file pointer */
silent = 0;
deletefile = 0;
dest = cupsGetDefault();
num_options = 0;
options = NULL;
@@ -84,6 +86,16 @@ main(int argc, /* I - Number of command-line arguments */
argv[i][1]);
break;
case 'o' : /* Option */
if (argv[i][2] != '\0')
num_options = cupsParseOptions(argv[i] + 2, num_options, &options);
else
{
i ++;
num_options = cupsParseOptions(argv[i], num_options, &options);
}
break;
case 'l' : /* Literal/raw */
num_options = cupsParseOptions("raw", num_options, &options);
break;
@@ -96,10 +108,14 @@ main(int argc, /* I - Number of command-line arguments */
case 's' : /* Don't use symlinks */
break;
case 'm' : /* mail on completion */
case 'm' : /* Mail on completion */
fputs("Warning: email notification is not supported!\n", stderr);
break;
case 'r' : /* Remove file after printing */
deletefile = 1;
break;
case 'P' : /* Destination printer or class */
if (argv[i][2] != '\0')
dest = argv[i] + 2;
@@ -177,6 +193,8 @@ main(int argc, /* I - Number of command-line arguments */
fprintf(stderr, "lpr: unable to print file \'%s\'.\n", argv[i]);
return (1);
}
else if (deletefile)
unlink(argv[i]);
}
/*
@@ -191,7 +209,7 @@ main(int argc, /* I - Number of command-line arguments */
return (1);
}
temp = fopen(tmpnam(tempfile), "w");
temp = fopen(cupsTempFile(tempfile, sizeof(tempfile)), "w");
if (temp == NULL)
{
@@ -207,7 +225,7 @@ main(int argc, /* I - Number of command-line arguments */
if (i == 0)
{
fputs("lpr: stdin is empty, so no job has been sent.\n", stderr);
fputs("lpr: standard input is empty, so no job has been sent.\n", stderr);
return (1);
}
@@ -216,9 +234,11 @@ main(int argc, /* I - Number of command-line arguments */
else
job_id = cupsPrintFile(dest, tempfile, "(stdin)", num_options, options);
unlink(tempfile);
if (job_id < 1)
{
fprintf(stderr, "lpr: unable to print file \'%s\'.\n", argv[i]);
fputs("lpr: unable to print standard input.\n", stderr);
return (1);
}
}
+8 -1
Ver Arquivo
@@ -49,7 +49,7 @@ main(int argc, /* I - Number of command-line arguments */
http_t *http; /* HTTP connection to server */
int i; /* Looping var */
int job_id; /* Job ID */
char *dest; /* Destination printer */
const char *dest; /* Destination printer */
char uri[1024]; /* Printer or job URI */
ipp_t *request; /* IPP request */
ipp_t *response; /* IPP response */
@@ -169,7 +169,14 @@ main(int argc, /* I - Number of command-line arguments */
response = cupsDoRequest(http, request, "/jobs/");
if (response != NULL)
{
if (response->request.status.status_code == IPP_NOT_FOUND)
fputs("lprm: Job or printer not found!\n", stderr);
else if (response->request.status.status_code > IPP_OK_CONFLICT)
fputs("lprm: Unable to cancel job(s)!\n", stderr);
ippDelete(response);
}
else
{
fputs("lprm: Unable to cancel job(s)!\n", stderr);
+3 -3
Ver Arquivo
@@ -52,7 +52,7 @@ install:
# classes.cgi
#
classes.cgi: classes.o ../Makedefs ../cups/libcups.a
classes.cgi: classes.o ../Makedefs ../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ classes.o $(LIBS)
@@ -62,7 +62,7 @@ $(OBJS): ../Makedefs ../cups/cups.h ../cups/ipp.h ../cups/language.h
# jobs.cgi
#
jobs.cgi: jobs.o ../Makedefs ../cups/libcups.a
jobs.cgi: jobs.o ../Makedefs ../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ jobs.o $(LIBS)
@@ -72,7 +72,7 @@ $(OBJS): ../Makedefs ../cups/cups.h ../cups/ipp.h ../cups/language.h
# printers.cgi
#
printers.cgi: printers.o ../Makedefs ../cups/libcups.a
printers.cgi: printers.o ../Makedefs ../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ printers.o $(LIBS)
+25 -12
Ver Arquivo
@@ -107,14 +107,23 @@ main(int argc, /* I - Number of command-line arguments */
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\">");
#ifdef ESPPRINTPRO
puts("<AREA SHAPE=\"RECT\" COORDS=\"405,10,490,30\" HREF=\"http://www.easysw.com/printpro/software.html\" ALT=\"Download the Current ESP Print Pro Software\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"505,10,585,30\" HREF=\"http://www.easysw.com/printpro/support.html\" ALT=\"Get Tech Support for Current ESP Print Pro\">");
#else
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>");
puts("<P ALIGN=CENTER>");
puts("<A HREF=\"http://www.easysw.com\" ALT=\"Easy Software Products Home Page\">");
puts("<IMG SRC=\"/images/logo.gif\" WIDTH=\"71\" HEIGHT=\"40\" BORDER=0 ALT=\"Easy Software Products Home Page\"></A>");
#ifdef ESPPRINTPRO
puts("<IMG SRC=\"/images/navbar.gif\" WIDTH=\"600\" HEIGHT=\"40\" USEMAP=\"#navbar\" BORDER=0>");
#else
puts("<IMG SRC=\"/images/navbar.gif\" WIDTH=\"540\" HEIGHT=\"40\" USEMAP=\"#navbar\" BORDER=0>");
#endif /* ESPPRINTPRO */
printf("<H1>%s on %s</H1>\n", name == NULL ? "Classes" : name,
getenv("SERVER_NAME"));
@@ -273,7 +282,7 @@ show_class_info(http_t *http,
*
* attributes-charset
* attributes-natural-language
* class-uri
* printer-uri
*/
request = ippNew();
@@ -289,7 +298,7 @@ show_class_info(http_t *http,
sprintf(uri, "ipp://localhost/classes/%s", name);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "class-uri", NULL, uri);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri);
/*
* Do the request and get back a response...
@@ -312,24 +321,27 @@ show_class_info(http_t *http,
* Grab the needed class attributes...
*/
if ((attr = ippFindAttribute(response, "class-state", IPP_TAG_ENUM)) != NULL)
if ((attr = ippFindAttribute(response, "printer-state", IPP_TAG_ENUM)) != NULL)
pstate = (ipp_pstate_t)attr->values[0].integer;
else
pstate = IPP_PRINTER_IDLE;
if ((attr = ippFindAttribute(response, "class-state-message", IPP_TAG_TEXT)) != NULL)
if ((attr = ippFindAttribute(response, "printer-state-message", IPP_TAG_TEXT)) != NULL)
message = attr->values[0].string.text;
else
message = NULL;
if ((attr = ippFindAttribute(response, "class-is-accepting-jobs",
if ((attr = ippFindAttribute(response, "printer-is-accepting-jobs",
IPP_TAG_BOOLEAN)) != NULL)
accepting = attr->values[0].boolean;
else
accepting = 1;
if ((attr = ippFindAttribute(response, "printer-uri", IPP_TAG_URI)) != NULL)
strcpy(uri, attr->values[0].string.text);
if ((attr = ippFindAttribute(response, "printer-uri-supported", IPP_TAG_URI)) != NULL)
{
strcpy(uri, "http:");
strcpy(uri + 5, strchr(attr->values[0].string.text, '/'));
}
/*
* Display the class entry...
@@ -337,7 +349,7 @@ show_class_info(http_t *http,
puts("<TR>");
printf("<TD VALIGN=TOP><A HREF=\"/classes/%s\">%s</A></TD>\n", name, name);
printf("<TD VALIGN=TOP><A HREF=\"%s\">%s</A></TD>\n", uri, name);
puts("<TD VALIGN=TOP><IMG SRC=\"/images/classes.gif\" ALIGN=\"LEFT\">");
@@ -368,7 +380,7 @@ show_class_info(http_t *http,
*
* attributes-charset
* attributes-natural-language
* class-uri
* printer-uri
*/
request = ippNew();
@@ -384,8 +396,9 @@ show_class_info(http_t *http,
"attributes-natural-language", NULL,
language->language);
sprintf(uri, "ipp://localhost/printers/%s", name);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"class-uri", NULL, uri);
"printer-uri", NULL, uri);
jobs = cupsDoRequest(http, request, uri + 15);
}
@@ -398,8 +411,8 @@ show_class_info(http_t *http,
if (jobs != NULL)
{
char *username; /* Pointer to job-originating-user-name */
int jobid, /* job-id */
size; /* job-k-octets */
int jobid, /* job-id */
size; /* job-k-octets */
for (attr = jobs->attrs; attr != NULL; attr = attr->next)
+9 -2
Ver Arquivo
@@ -62,8 +62,6 @@ main(int argc, /* I - Number of command-line arguments */
http_t *http; /* Connection to the server */
setbuf(stdout, NULL);
/*
* Get the request language...
*/
@@ -109,14 +107,23 @@ main(int argc, /* I - Number of command-line arguments */
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\">");
#ifdef ESPPRINTPRO
puts("<AREA SHAPE=\"RECT\" COORDS=\"405,10,490,30\" HREF=\"http://www.easysw.com/printpro/software.html\" ALT=\"Download the Current ESP Print Pro Software\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"505,10,585,30\" HREF=\"http://www.easysw.com/printpro/support.html\" ALT=\"Get Tech Support for Current ESP Print Pro\">");
#else
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>");
puts("<P ALIGN=CENTER>");
puts("<A HREF=\"http://www.easysw.com\" ALT=\"Easy Software Products Home Page\">");
puts("<IMG SRC=\"/images/logo.gif\" WIDTH=\"71\" HEIGHT=\"40\" BORDER=0 ALT=\"Easy Software Products Home Page\"></A>");
#ifdef ESPPRINTPRO
puts("<IMG SRC=\"/images/navbar.gif\" WIDTH=\"600\" HEIGHT=\"40\" USEMAP=\"#navbar\" BORDER=0>");
#else
puts("<IMG SRC=\"/images/navbar.gif\" WIDTH=\"540\" HEIGHT=\"40\" USEMAP=\"#navbar\" BORDER=0>");
#endif /* ESPPRINTPRO */
fflush(stdout);
+18 -5
Ver Arquivo
@@ -107,14 +107,23 @@ main(int argc, /* I - Number of command-line arguments */
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\">");
#ifdef ESPPRINTPRO
puts("<AREA SHAPE=\"RECT\" COORDS=\"405,10,490,30\" HREF=\"http://www.easysw.com/printpro/software.html\" ALT=\"Download the Current ESP Print Pro Software\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"505,10,585,30\" HREF=\"http://www.easysw.com/printpro/support.html\" ALT=\"Get Tech Support for Current ESP Print Pro\">");
#else
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>");
puts("<P ALIGN=CENTER>");
puts("<A HREF=\"http://www.easysw.com\" ALT=\"Easy Software Products Home Page\">");
puts("<IMG SRC=\"/images/logo.gif\" WIDTH=\"71\" HEIGHT=\"40\" BORDER=0 ALT=\"Easy Software Products Home Page\"></A>");
#ifdef ESPPRINTPRO
puts("<IMG SRC=\"/images/navbar.gif\" WIDTH=\"600\" HEIGHT=\"40\" USEMAP=\"#navbar\" BORDER=0>");
#else
puts("<IMG SRC=\"/images/navbar.gif\" WIDTH=\"540\" HEIGHT=\"40\" USEMAP=\"#navbar\" BORDER=0>");
#endif /* ESPPRINTPRO */
printf("<H1>%s on %s</H1>\n", printer == NULL ? "Printers" : printer,
getenv("SERVER_NAME"));
@@ -328,8 +337,11 @@ show_printer_info(http_t *http,
else
accepting = 1;
if ((attr = ippFindAttribute(response, "printer-uri", IPP_TAG_URI)) != NULL)
strcpy(uri, attr->values[0].string.text);
if ((attr = ippFindAttribute(response, "printer-uri-supported", IPP_TAG_URI)) != NULL)
{
strcpy(uri, "http:");
strcpy(uri + 5, strchr(attr->values[0].string.text, '/'));
}
/*
* Display the printer entry...
@@ -337,7 +349,7 @@ show_printer_info(http_t *http,
puts("<TR>");
printf("<TD VALIGN=TOP><A HREF=\"/printers/%s\">%s</A></TD>\n", name, name);
printf("<TD VALIGN=TOP><A HREF=\"%s\">%s</A></TD>\n", uri, name);
printf("<TD VALIGN=TOP><IMG SRC=\"/images/printer-%s.gif\" ALIGN=\"LEFT\">\n",
pstate == IPP_PRINTER_IDLE ? "idle" :
@@ -386,6 +398,7 @@ show_printer_info(http_t *http,
"attributes-natural-language", NULL,
language->language);
sprintf(uri, "ipp://localhost/printers/%s", name);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, uri);
@@ -400,8 +413,8 @@ show_printer_info(http_t *http,
if (jobs != NULL)
{
char *username; /* Pointer to job-originating-user-name */
int jobid, /* job-id */
size; /* job-k-octets */
int jobid, /* job-id */
size; /* job-k-octets */
for (attr = jobs->attrs; attr != NULL; attr = attr->next)
+9 -2
Ver Arquivo
@@ -28,7 +28,8 @@ include ../Makedefs
# Config files...
#
FILES = classes.conf cupsd.conf mime.convs mime.types printers.conf
KEEP = classes.conf cupsd.conf printers.conf
REPLACE = mime.convs mime.types
#
# Make everything...
@@ -48,13 +49,19 @@ clean:
install:
-$(MKDIR) $(SERVERROOT)/conf
for file in $(FILES); do \
for file in $(KEEP); do \
if test -e $(SERVERROOT)/conf/$$file ; then \
$(CP) $$file $(SERVERROOT)/conf/$$file.N ; \
else \
$(CP) $$file $(SERVERROOT)/conf ; \
fi ; \
done
for file in $(REPLACE); do \
if test -e $(SERVERROOT)/conf/$$file ; then \
$(MV) $(SERVERROOT)/conf/$$file $(SERVERROOT)/conf/$$file.O ; \
fi ; \
$(CP) $$file $(SERVERROOT)/conf ; \
done
#
# End of "$Id$".
+39 -10
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: cupsd.conf 429 1999-06-21 19:43:22Z mike $"
# "$Id: cupsd.conf 628 1999-08-23 15:24:48Z mike $"
#
# Sample configuration file for the Common UNIX Printing System (CUPS)
# scheduler.
@@ -53,6 +53,13 @@
#Port 80
Port 631
#
# MaxClients: controls the maximum number of simultaneous clients that
# will be handled. Defaults to 100.
#
#MaxClients 100
#
# User/Group: the user and group the server runs under. Normally this
# must be lp and sys, however you can configure things for another user
@@ -63,20 +70,25 @@ Port 631
# program is run...
#
User lp
Group sys
#User lp
#Group sys
#
# SystemGroup: the group name for "System" (printer administration)
# access.
# access. The default varies depending on the operating system, but
# will be "sys", "system", or "root" (checked for in that order.)
#
SystemGroup sys
#SystemGroup sys
#
# ServerName: the hostname of your server, as advertised to the world.
# By default CUPS will use the hostname of the system.
#
# This is also the name used by clients when connecting to the local
# server, so you can use this to configure a client machine without
# a local server running.
#
#ServerName myhost.domain.com
@@ -264,10 +276,10 @@ LogLevel info
# RIPCache: the amount of memory that each RIP should use to cache
# bitmaps. The value can be any real number followed by "k" for
# kilobytes, "m" for megabytes, "g" for gigabytes, or "t" for tiles
# (1 tile = 256x256 pixels.) Defaults to "32m" (32 megabytes).
# (1 tile = 256x256 pixels.) Defaults to "8m" (8 megabytes).
#
#RIPCache: 32m
#RIPCache 8m
#
# TempDir: the directory to put temporary files in. This directory must be
@@ -298,6 +310,23 @@ LogLevel info
# Deny: denies access from the specified hostname, domain, IP address, or
# network.
#
# Both "Allow" and "Deny" accept the following notations for addresses:
#
# All
# None
# *.domain.com
# .domain.com
# host.domain.com
# nnn.*
# nnn.nnn.*
# nnn.nnn.nnn.*
# nnn.nnn.nnn.nnn
# nnn.nnn.nnn.nnn/mm
# nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
#
# The host and domain address require that you enable hostname lookups
# with "HostNameLookups On" above.
#
<Location />
</Location>
@@ -322,8 +351,8 @@ LogLevel info
#
# You definitely will want to limit access to the administration tools.
# The default configuration requires a local connection from a user who
# is a member of group "sys" to do any admin tasks. You can change the
# group name using the SystemGroup directive.
# is a member of the system group to do any admin tasks. You can change
# the group name using the SystemGroup directive.
#
AuthType Basic
@@ -336,5 +365,5 @@ Allow From 127.0.0.1
</Location>
#
# End of "$Id: cupsd.conf 429 1999-06-21 19:43:22Z mike $".
# End of "$Id: cupsd.conf 628 1999-08-23 15:24:48Z mike $".
#
+4 -4
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: mime.convs 237 1999-04-21 19:29:35Z mike $"
# "$Id: mime.convs 575 1999-07-30 13:57:16Z mike $"
#
# MIME converts file for the Common UNIX Printing System (CUPS).
#
@@ -41,12 +41,12 @@
# PostScript filters
#
application/msword application/postscript 50 mswordtops
#application/msword application/postscript 50 mswordtops
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
text/html application/postscript 50 htmltops
#text/html application/postscript 50 htmltops
text/plain application/postscript 50 texttops
########################################################################
@@ -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 237 1999-04-21 19:29:35Z mike $".
# End of "$Id: mime.convs 575 1999-07-30 13:57:16Z mike $".
#
+5 -6
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: mime.types 185 1999-03-24 18:38:50Z mike $"
# "$Id: mime.types 575 1999-07-30 13:57:16Z mike $"
#
# MIME types file for the Common UNIX Printing System (CUPS).
#
@@ -92,10 +92,9 @@ image/x-sgi-rgb rgb sgi bw icon short(0,474)
image/x-xbitmap xbm
image/x-xpixmap xpm ascii(0,1024) + string(3,"XPM")
image/x-xwindowdump xwd
# TODO: Add Sun Raster, Alias, SoftImage, GIMP??? files
image/x-sun-raster ras
# TODO: Add Alias, SoftImage, GIMP??? files
#image/x-alias pix
#image/x-softimage
#image/x-gimp-xcf xcf xcf.gz
@@ -114,10 +113,10 @@ text/plain txt printable(0,1024)
# CUPS-specific types...
#
application/vnd.cups-postscript
application/vnd.cups-postscript string(0,<1B>%-12345X)
application/vnd.cups-raster string(0,"RaSt") string(0,"tSaR")
application/vnd.cups-raw
#
# End of "$Id: mime.types 185 1999-03-24 18:38:50Z mike $".
# End of "$Id: mime.types 575 1999-07-30 13:57:16Z mike $".
#
+171 -38
Ver Arquivo
@@ -26,31 +26,62 @@ AC_INIT(cups/cups.h)
AC_CONFIG_HEADER(config.h)
AC_PREFIX_DEFAULT(/usr)
dnl Clear default debugging options and set normal optimization by
dnl default unless the user asks for debugging specifically.
dnl Get the operating system and version number...
dnl CFLAGS="${CFLAGS:=}"
dnl CXXFLAGS="${CXXFLAGS:=}"
dnl OPTIM="-O"
dnl AC_SUBST(OPTIM)
uname=`uname`
uversion=`uname -r | sed -e '1,$s/\.//g'`
if test "$uname" = "IRIX64"; then
uname="IRIX"
fi
dnl AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],
dnl if eval "test x$enable_debug = xyes"; then
dnl OPTIM="-g"
dnl fi)
dnl Clear the debugging and non-shared library options unless the user asks
dnl for them...
dnl Clear default debugging options and set debugging by
dnl default unless the user asks for no debugging specifically.
CFLAGS="${CFLAGS:=}"
CXXFLAGS="${CXXFLAGS:=}"
OPTIM="-g"
OPTIM=""
AC_SUBST(OPTIM)
PICFLAG=1
CFLAGS="${CFLAGS:=}"
AC_ARG_ENABLE(debug, [ --disable-debug turn off debugging [default=no]],
if eval "test x$disable_debug = xyes"; then
OPTIM="-O"
fi)
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],[if eval "test x$enable_debug = xyes"; then
OPTIM="-g "
fi])
AC_ARG_ENABLE(shared, [ --disable-shared turn off shared libraries [default=no]])
if test "$disable_shared" != "yes"; then
case "$uname" in
SunOS* | UNIX_S*)
LIBCUPS="libcups.so.1"
LIBCUPSIMAGE="libcupsimage.so.1"
DSO="\$(CC) -Wl,-h,\$@ -G \$(OPTIM) -o"
;;
HP-UX*)
LIBCUPS="libcups.sl.1"
LIBCUPSIMAGE="libcupsimage.sl.1"
DSO="ld -b -z +h \$@ -o"
;;
OSF1* | Linux* | FreeBSD*)
LIBCUPS="libcups.so.1"
LIBCUPSIMAGE="libcupsimage.so.1"
DSO="\$(CC) -Wl,-soname,\$@ -shared \$(OPTIM) -o"
;;
IRIX*)
LIBCUPS="libcups.so.1"
LIBCUPSIMAGE="libcupsimage.so.1"
DSO="\$(CC) -soname \$@ -shared \$(OPTIM) -o"
;;
*)
echo "Warning: shared libraries may not be supported. Trying -shared"
echo " option with compiler."
LIBCUPS="libcups.so.1"
LIBCUPSIMAGE="libcupsimage.so.1"
DSO="\$(CC) -Wl,-soname,\$@ -shared \$(OPTIM) -o"
;;
esac
else
PICFLAG=0
LIBCUPS="libcups.a"
LIBCUPSIMAGE="libcupsimage.a"
DSO=":"
fi
dnl Checks for programs...
AC_PROG_AWK
@@ -62,11 +93,11 @@ AC_PATH_PROG(CHMOD,chmod)
AC_PATH_PROG(CP,cp)
AC_PATH_PROG(NROFF,nroff)
if test "$NROFF" = ""; then
AC_PATH_PROG(NROFF,groff)
if test "$NROFF" = ""; then
AC_PATH_PROG(GROFF,groff)
if test "$GROFF" = ""; then
NROFF="echo"
else
NROFF="$NROFF -T ascii"
NROFF="$GROFF -T ascii"
fi
fi
AC_PATH_PROG(HTMLDOC,htmldoc)
@@ -97,42 +128,49 @@ fi
dnl Architecture checks...
AC_C_BIGENDIAN
uname=`uname`
if test "$uname" = "IRIX64"; then
uname=IRIX
fi
dnl Check for libraries...
AC_CHECK_LIB(c,crypt,LIBS="$LIBS",AC_CHECK_LIB(crypt,crypt))
AC_CHECK_HEADER(crypt.h, AC_DEFINE(HAVE_CRYPT_H))
AC_CHECK_LIB(sec,getspent)
NETLIBS=""
AC_SUBST(NETLIBS)
AC_CHECK_LIB(socket,socket,
if test "$uname" != "IRIX"; then
LIBS="$LIBS -lsocket"
NETLIBS="-lsocket"
else
echo "Not using -lsocket since you are running IRIX."
fi)
AC_CHECK_LIB(nsl,gethostbyaddr,
if test "$uname" != "IRIX"; then
LIBS="$LIBS -lnsl"
NETLIBS="$NETLIBS -lnsl"
else
echo "Not using -lnsl since you are running IRIX."
fi)
IMGLIBS=""
AC_SUBST(IMGLIBS)
LIBJPEG=""
LIBPNG=""
LIBTIFF=""
LIBZ=""
AC_SUBST(LIBJPEG)
AC_SUBST(LIBPNG)
AC_SUBST(LIBTIFF)
AC_SUBST(LIBZ)
AC_CHECK_HEADER(jpeglib.h,
AC_DEFINE(HAVE_LIBJPEG)
IMGLIBS="$IMGLIBS -ljpeg")
AC_CHECK_HEADER(zlib.h,
AC_DEFINE(HAVE_LIBZ)
IMGLIBS="$IMGLIBS -lz")
LIBJPEG="-ljpeg")
AC_CHECK_HEADER(png.h,
AC_DEFINE(HAVE_LIBPNG)
IMGLIBS="$IMGLIBS -lpng")
LIBPNG="-lpng")
AC_CHECK_HEADER(tiff.h,
AC_DEFINE(HAVE_LIBTIFF)
IMGLIBS="$IMGLIBS -ltiff")
LIBTIFF="-ltiff")
AC_CHECK_HEADER(zlib.h,
AC_DEFINE(HAVE_LIBZ)
LIBZ="-lz")
dnl Checks for header files.
AC_HEADER_STDC
@@ -152,11 +190,92 @@ dnl Checks for wait functions.
AC_CHECK_FUNCS(waitpid)
AC_CHECK_FUNCS(wait3)
dnl Update compiler options...
if test -n "$GXX"; then
if test -z "$OPTIM"; then
OPTIM="-O2"
fi
if test $PICFLAG = 1; then
OPTIM="-fPIC $OPTIM"
fi
else
case $uname in
IRIX*)
if test -z "$OPTIM"; then
OPTIM="-O2"
fi
if test $uversion -ge 62; then
OPTIM="$OPTIM -n32 -mips3"
fi
;;
HP-UX*)
if test -z "$OPTIM"; then
OPTIM="+O2"
fi
OPTIM="-Ae $OPTIM"
;;
SunOS*)
# Solaris
if test -z "$OPTIM"; then
OPTIM="-O"
fi
if test $PICFLAG = 1; then
OPTIM="-KPIC $OPTIM"
fi
;;
*)
# Running some other operating system; inform the user they
# should contribute the necessary options to
# cups-support@cups.org...
echo "Building CUPS with default compiler optimizations; contact"
echo "cups-support@cups.org with uname and compiler options needed"
echo "for your platform, or set the CFLAGS environment variable"
echo "before running configure."
;;
esac
fi
if test "$DSO" != ":"; then
# When using DSOs the image libraries are linked to libcupsimage.so
# rather than to the executables. This makes things smaller if you
# are using any static libraries, and it also allows us to distribute
# 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)"
fi
AC_SUBST(DSO)
AC_SUBST(DSOLIBS)
AC_SUBST(IMGLIBS)
AC_SUBST(LIBCUPS)
AC_SUBST(LIBCUPSIMAGE)
dnl Fix "prefix" variable if it hasn't been specified...
if test "$prefix" = "NONE"; then
prefix="/usr"
fi
dnl Fix "libdir" variable for IRIX 6.x...
if test "$uname" = "IRIX" -a $uversion -ge 62; then
libdir="/usr/lib32"
fi
dnl CUPS_SERVERROOT needs special attention for the default location...
if test "$prefix" = "/usr"; then
CUPS_SERVERROOT="/var/cups"
@@ -167,7 +286,21 @@ AC_DEFINE_UNQUOTED(CUPS_SERVERROOT, "$CUPS_SERVERROOT")
AC_SUBST(CUPS_SERVERROOT)
dnl Set the CUPS_LOCALE directory...
CUPS_LOCALEDIR="$prefix/lib/locale"
case "$uname" in
Linux)
CUPS_LOCALEDIR="$prefix/share/locale"
;;
OSF1)
CUPS_LOCALEDIR="$prefix/lib/nls/msg"
;;
*)
# This is the standard System V location...
CUPS_LOCALEDIR="$prefix/lib/locale"
;;
esac
AC_DEFINE_UNQUOTED(CUPS_LOCALEDIR, "$CUPS_LOCALEDIR")
AC_SUBST(CUPS_LOCALEDIR)
-309
Ver Arquivo
@@ -1,309 +0,0 @@
#
# "$Id: cups.list 432 1999-06-21 20:14:24Z 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.0b4
%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/lib/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
# 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
# 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/lp start
%remove /sbin/init.d/lp stop
%patch /sbin/init.d/lp stop
f 0555 root sys /sbin/init.d/lp cups.sh
l 0555 root sys /sbin/rc1.d/K280lp ../init.d/lp
l 0555 root sys /sbin/rc2.d/S720lp ../init.d/lp
%system irix irix64
%install /etc/init.d/lp start
%remove /etc/init.d/lp stop
%patch /etc/init.d/lp stop
f 0555 root sys /etc/init.d/lp cups.sh
l 0555 root sys /etc/rc0.d/K25lp ../init.d/lp
l 0555 root sys /etc/rc2.d/S60lp ../init.d/lp
%system linux
%install /etc/rc.d/init.d/lpd start
%remove /etc/rc.d/init.d/lpd stop
%patch /etc/rc.d/init.d/lpd stop
f 0555 root sys /etc/rc.d/init.d/lpd cups.sh
l 0555 root sys /etc/rc.d/rc2.d/S60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc3.d/S60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc4.d/S60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc5.d/S60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc0.d/K60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc1.d/K60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc6.d/K60lpd ../init.d/lpd
%system dunix
%install /sbin/init.d/lpd start
%remove /sbin/init.d/lpd stop
%patch /sbin/init.d/lpd stop
f 0555 root sys /sbin/init.d/lpd cups.sh
l 0555 root sys /sbin/rc0.d/K05lpd ../init.d/lpd
l 0555 root sys /sbin/rc2.d/K00lpd ../init.d/lpd
l 0555 root sys /sbin/rc3.d/S65lpd ../init.d/lpd
%system solaris sunos
%install /etc/init.d/lp start
%remove /etc/init.d/lp stop
%patch /etc/init.d/lp stop
f 0555 root sys /etc/init.d/lp cups.sh
l 0555 root sys /etc/rc0.d/K20lp ../init.d/lp
l 0555 root sys /etc/rc2.d/S80lp ../init.d/lp
#
# End of "$Id: cups.list 432 1999-06-21 20:14:24Z mike $".
#
+64 -16
Ver Arquivo
@@ -4,6 +4,12 @@
#
# Startup/shutdown script for the Common UNIX Printing System (CUPS).
#
# Linux chkconfig stuff:
#
# chkconfig: 2345 60 60
# description: Startup/shutdown script for the Common UNIX \
# Printing System (CUPS).
#
# Copyright 1997-1999 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
@@ -23,7 +29,26 @@
# WWW: http://www.cups.org
#
# See if the CUPS daemon is running, and if so stop it...
# See what program to use for configuration stuff...
case "`uname`" in
IRIX*)
IS_ON=/sbin/chkconfig
;;
*)
IS_ON=/bin/true
;;
esac
# The verbose flag controls the printing of the names of
# daemons as they are started.
if $IS_ON verbose; then
ECHO=echo
else
ECHO=:
fi
# See if the CUPS server is running...
case "`uname`" in
IRIX* | HP-UX | SunOS)
pid=`ps -e | awk '{print $1,$4}' | grep cupsd | awk '{print $1}'`
@@ -39,26 +64,49 @@ case "`uname`" in
;;
esac
# Start or stop the CUPS server based upon the first argument to the script.
case $1 in
start | restart)
if test "$pid" != ""; then
echo "Restarting CUPS scheduler..."
kill -HUP $pid
else
echo "Starting CUPS scheduler..."
/usr/sbin/cupsd 2>&1 >/dev/null &
fi
;;
start | restart | reload)
if test "$pid" != ""; then
if $IS_ON cups; then
kill -HUP $pid
$ECHO "cups: scheduler restarted."
else
kill $pid
$ECHO "cups: scheduler stopped."
fi
else
if $IS_ON cups; then
/usr/sbin/cupsd 2>&1 >/dev/null &
$ECHO "cups: scheduler started."
fi
fi
;;
stop)
if test "$pid" != ""; then
echo "Stopping CUPS scheduler..."
kill $pid
sleep 1
fi
;;
if test "$pid" != ""; then
kill $pid
$ECHO "cups: scheduler stopped."
fi
;;
status)
if test "$pid" != ""; then
echo "cups: Scheduler is running."
else
echo "cups: Scheduler is not running."
fi
;;
*)
echo "Usage: cups {reload|restart|start|status|stop}"
exit 1
;;
esac
exit 0
#
# End of "$Id$".
#
+25 -12
Ver Arquivo
@@ -28,9 +28,10 @@ include ../Makedefs
# Object files...
#
OBJS = emit.o filter.o http.o ipp.o language.o mark.o mime.o \
LIBOBJS = emit.o filter.o http.o ipp.o language.o mark.o mime.o \
options.o page.o ppd.o raster.o string.o type.o usersys.o \
util.o
OBJS = $(LIBOBJS) testhttp.o testmime.o testppd.o
#
# Header files to install...
@@ -42,7 +43,7 @@ HEADERS = cups.h http.h ipp.h language.h mime.h ppd.h raster.h
# Targets in this directory...
#
TARGETS = libcups.a testmime testppd testhttp
TARGETS = $(LIBCUPS) testhttp testmime testppd
#
# Make all targets...
@@ -62,19 +63,31 @@ clean:
#
install: all
-$(MKDIR) $(LIBDIR)
$(CP) libcups.a $(LIBDIR)
-$(MKDIR) $(INCLUDEDIR)/cups
$(CP) $(HEADERS) $(INCLUDEDIR)/cups
-$(MKDIR) $(LIBDIR)
$(CP) $(LIBCUPS) $(LIBDIR)
if test $(LIBCUPS) != "libcups.a"; then \
$(LN) $(LIBCUPS) `basename $(LIBCUPS) .1`; \
fi
#
# libcups.so.1, libcups.sl.1
#
libcups.so.1 libcups.sl.1: $(LIBOBJS) ../Makedefs
echo Linking $@...
$(DSO) $@ $(LIBOBJS)
-$(LN) $@ `basename $@ .1`
#
# libcups.a
#
libcups.a: $(OBJS)
libcups.a: $(LIBOBJS)
echo Archiving $@...
$(RM) $@
$(AR) $(ARFLAGS) $@ $(OBJS)
$(AR) $(ARFLAGS) $@ $(LIBOBJS)
$(RANLIB) $@
#
@@ -103,32 +116,32 @@ usersys.o: cups.h ../config.h ../Makedefs
util.o: cups.h http.h ipp.h ../config.h ../Makedefs
#
# testhttp
# testhttp (dependency on static CUPS library is intentional)
#
testhttp: testhttp.o libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ testhttp.o $(LIBS)
$(CC) $(LDFLAGS) -o $@ testhttp.o libcups.a $(NETLIBS)
testhttp.o: http.h ../Makedefs
#
# testmime
# testmime (dependency on static CUPS library is intentional)
#
testmime: testmime.o libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ testmime.o $(LIBS)
$(CC) $(LDFLAGS) -o $@ testmime.o libcups.a
testmime.o: mime.h ../Makedefs
#
# testppd
# testppd (dependency on static CUPS library is intentional)
#
testppd: testppd.o libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ testppd.o $(LIBS)
$(CC) $(LDFLAGS) -o $@ testppd.o libcups.a $(NETLIBS)
testppd.o: ppd.h ../Makedefs
+176
Ver Arquivo
@@ -0,0 +1,176 @@
# Microsoft Developer Studio Project File - Name="cups" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
CFG=cups - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "cups.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "cups.mak" CFG="cups - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "cups - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "cups - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "cups - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\visualc" /I ".." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"cups.lib"
!ELSEIF "$(CFG)" == "cups - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\visualc" /I ".." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"cupsd.lib"
!ENDIF
# Begin Target
# Name "cups - Win32 Release"
# Name "cups - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\emit.c
# End Source File
# Begin Source File
SOURCE=.\filter.c
# End Source File
# Begin Source File
SOURCE=.\http.c
# End Source File
# Begin Source File
SOURCE=.\ipp.c
# End Source File
# Begin Source File
SOURCE=.\language.c
# End Source File
# Begin Source File
SOURCE=.\mark.c
# End Source File
# Begin Source File
SOURCE=.\mime.c
# End Source File
# Begin Source File
SOURCE=.\options.c
# End Source File
# Begin Source File
SOURCE=.\page.c
# End Source File
# Begin Source File
SOURCE=.\ppd.c
# End Source File
# Begin Source File
SOURCE=.\raster.c
# End Source File
# Begin Source File
SOURCE=.\string.c
# End Source File
# Begin Source File
SOURCE=.\type.c
# End Source File
# Begin Source File
SOURCE=.\util.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=.\cups.h
# End Source File
# Begin Source File
SOURCE=.\http.h
# End Source File
# Begin Source File
SOURCE=.\ipp.h
# End Source File
# Begin Source File
SOURCE=.\language.h
# End Source File
# Begin Source File
SOURCE=.\mime.h
# End Source File
# Begin Source File
SOURCE=.\ppd.h
# End Source File
# Begin Source File
SOURCE=.\raster.h
# End Source File
# End Group
# End Target
# End Project
+15 -14
Ver Arquivo
@@ -106,30 +106,31 @@ typedef struct /**** Printer Options ****/
* Functions...
*/
extern int cupsCancelJob(char *printer, int job);
extern int cupsCancelJob(const char *printer, int job);
#define cupsDoRequest(http,request,resource) cupsDoFileRequest((http),(request),(resource),NULL)
extern ipp_t *cupsDoFileRequest(http_t *http, ipp_t *request,
char *resource, char *filename);
const char *resource, const char *filename);
extern int cupsGetClasses(char ***classes);
extern char *cupsGetPPD(char *printer);
extern char *cupsGetDefault(void);
extern const char *cupsGetDefault(void);
extern const char *cupsGetPPD(const char *printer);
extern int cupsGetPrinters(char ***printers);
extern int cupsPrintFile(char *printer, char *filename, char *title,
int num_options, cups_option_t *options);
extern int cupsAddOption(char *name, char *value, int num_options,
cups_option_t **options);
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);
extern char *cupsGetOption(char *name, int num_options,
extern const char *cupsGetOption(const char *name, int num_options,
cups_option_t *options);
extern int cupsParseOptions(char *arg, int num_options,
extern int cupsParseOptions(const char *arg, int num_options,
cups_option_t **options);
extern int cupsMarkOptions(ppd_file_t *ppd, int num_options,
cups_option_t *options);
extern char *cupsGetPassword(const char *prompt);
extern char *cupsServer();
extern char *cupsUser();
extern const char *cupsGetPassword(const char *prompt);
extern const char *cupsServer(void);
extern const char *cupsUser(void);
# ifdef __cplusplus
}
+123
Ver Arquivo
@@ -0,0 +1,123 @@
"us-ascii",
"OK",
"Cancel",
"Help",
"Quit",
"Close",
"Yes",
"No",
"On",
"Off",
"Save",
"Discard",
"Default",
"Options",
"More Info",
"Black",
"Color",
"Cyan",
"Magenta",
"Yellow",
"Copyright 1993-1999 by Easy Software Products, All Rights Reserved.",
"General",
"Printer",
"Image Options",
"HP-GL/2 Options",
"Extra",
"Document",
"Other",
"Print Pages: ",
"Entire Document",
"Page Range:",
"Reverse Order: ",
"Page Format: ",
" 1-Up",
" 2-Up",
" 4-Up",
"Image Scaling: ",
"Use Natural Image Size",
"Zoom by Percent",
"Zoom by PPI",
"Mirror Image: ",
"Color Saturation: ",
"Color Hue: ",
"Fit to Page: ",
"Shading: ",
"Pen Width: ",
"Gamma Correction: ",
"Brightness: ",
"Add",
"Delete",
"Modify",
"Printer URI",
"Printer Name",
"Printer Location",
"Printer Info",
"Printer Make and Model",
"Device URI",
"Formatting Page",
"Printing Page",
"Initializing Printer",
"Printer State",
"Accepting Jobs",
"Not Accepting Jobs",
"Print Jobs",
"Class",
"Local",
"Remote",
"Duplexing",
"Stapling",
"Fast Copies",
"Collated Copies",
"Hole Punching",
"Covering",
"Binding",
"Sorting",
"Small (up to 9.5x14in)",
"Medium (9.5x14in to 13x19in)",
"Large (13x19in and larger)",
"Custom Size",
"Idle",
"Processing",
"Stopped",
"All",
"Odd",
"Even Pages",
"Darker Lighter",
"Media Size",
"Media Type",
"Media Source",
"Orientation: ",
"Portrait",
"Landscape",
"Job State",
"Job Name",
"User Name",
"Priority",
"Copies",
"File Size",
"Pending",
"Output Mode",
"Resolution",
"400 Your browser sent a request that this server could not understand.",
"This server could not verify that you are authorized to access the resource.",
"You must pay to access this server.",
"You don't have permission to access the resource on this server.",
"The requested resource was not found on this server.",
"The requested method is not allowed with the resource.",
"An appropriate representation for the resource was not found on this server.",
"You don't have permission to use this server as a proxy host.",
"The request has taken too long to complete and has been aborted.",
"The requested resource has more than one value.",
"The requested resource is gone and has not been replaced.",
"The requested method requires a valid Content-Length.",
"The precondition on the request evaluated to false.",
"The request is too large for this server to process.",
"The request URI is too large for this server to process.",
"The request format is not understood by this server.",
"500 The server has detected an unrecoverable error and cannot process your request.",
"The requested method is not implemented by this server.",
"The proxy server received an invalid response from an upstream server.",
"The requested resource is currently unavailable on this server.",
"The proxy server has taken too long to respond to this server.",
"This server does not support the HTTP version required by your browser.",
+1 -1
Ver Arquivo
@@ -58,7 +58,7 @@ mimeAddFilter(mime_t *mime, /* I - MIME database */
mime_type_t *src, /* I - Source type */
mime_type_t *dst, /* I - Destination type */
int cost, /* I - Relative time/resource cost */
char *filter) /* I - Filter program to run */
const char *filter) /* I - Filter program to run */
{
mime_filter_t *temp; /* New filter */
+134 -87
Ver Arquivo
@@ -25,6 +25,8 @@
*
* httpInitialize() - Initialize the HTTP interface library and set the
* default HTTP proxy (if any).
* httpCheck() - Check to see if there is a pending response from
* the server.
* httpClose() - Close an HTTP connection...
* httpConnect() - Connect to a HTTP server.
* httpReconnect() - Reconnect to a HTTP server...
@@ -66,6 +68,7 @@
#include <ctype.h>
#include "string.h"
#include <fcntl.h>
#include <errno.h>
#include "http.h"
#include "ipp.h"
@@ -89,28 +92,21 @@
* Local functions...
*/
static http_field_t http_field(char *name);
static int http_send(http_t *http, http_state_t request, char *uri);
static http_field_t http_field(const char *name);
static int http_send(http_t *http, http_state_t request,
const char *uri);
/*
* Local globals...
*/
static char *http_fields[] =
static const char *http_fields[] =
{
"Accept",
"Accept-Charset",
"Accept-Encoding",
"Accept-Language",
"Accept-Ranges",
"Age",
"Allow",
"Alternates",
"Authorization",
"Cache-Control",
"Connection",
"Content-Base",
"Content-Encoding",
"Content-Language",
"Content-Length",
@@ -120,41 +116,22 @@ static char *http_fields[] =
"Content-Type",
"Content-Version",
"Date",
"Derived-From",
"Etag",
"Expires",
"From",
"Host",
"If-Match",
"If-Modified-Since",
"If-None-Match",
"If-Range",
"If-Unmodified-since",
"Keep-Alive",
"Last-Modified",
"Link",
"Location",
"Max-Forwards",
"Message-Id",
"MIME-Version",
"Pragma",
"Proxy-Authenticate",
"Proxy-Authorization",
"Public",
"Range",
"Referer",
"Retry-After",
"Server",
"Transfer-Encoding",
"Upgrade",
"URI",
"User-Agent",
"Vary",
"Via",
"Warning",
"WWW-Authenticate"
};
static char *days[7] =
static const char *days[7] =
{
"Sun",
"Mon",
@@ -164,7 +141,7 @@ static char *days[7] =
"Fri",
"Sat"
};
static char *months[12] =
static const char *months[12] =
{
"Jan",
"Feb",
@@ -215,6 +192,41 @@ httpInitialize(void)
}
/*
* 'httpCheck()' - Check to see if there is a pending response from the server.
*/
int /* O - 0 = no data, 1 = data available */
httpCheck(http_t *http) /* I - HTTP connection */
{
fd_set input; /* Input set for select() */
struct timeval timeout; /* Timeout */
/*
* First see if there is data in the buffer...
*/
if (http == NULL)
return (0);
if (http->used)
return (1);
/*
* Then try doing a select() to poll the socket...
*/
FD_ZERO(&input);
FD_SET(http->fd, &input);
timeout.tv_sec = 0;
timeout.tv_usec = 0;
return (select(http->fd + 1, &input, NULL, NULL, &timeout) > 0);
}
/*
* 'httpClose()' - Close an HTTP connection...
*/
@@ -240,8 +252,8 @@ httpClose(http_t *http) /* I - Connection to close */
*/
http_t * /* O - New HTTP connection */
httpConnect(char *host, /* I - Host to connect to */
int port) /* I - Port number */
httpConnect(const char *host, /* I - Host to connect to */
int port) /* I - Port number */
{
http_t *http; /* New HTTP connection */
struct hostent *hostaddr; /* Host address data */
@@ -358,12 +370,12 @@ httpReconnect(http_t *http) /* I - HTTP data */
*/
void
httpSeparate(char *uri, /* I - Universal Resource Identifier */
char *method, /* O - Method (http, https, etc.) */
char *username, /* O - Username */
char *host, /* O - Hostname */
int *port, /* O - Port number to use */
char *resource) /* O - Resource/filename */
httpSeparate(const char *uri, /* I - Universal Resource Identifier */
char *method, /* O - Method (http, https, etc.) */
char *username, /* O - Username */
char *host, /* O - Hostname */
int *port, /* O - Port number to use */
char *resource) /* O - Resource/filename */
{
char *ptr; /* Pointer into string... */
@@ -405,7 +417,7 @@ httpSeparate(char *uri, /* I - Universal Resource Identifier */
* OK, we have "hostname:port[/resource]"...
*/
*port = strtol(uri, &uri, 10);
*port = strtol(uri, (char **)&uri, 10);
if (*uri == '/')
strcpy(resource, uri);
@@ -500,6 +512,8 @@ httpSeparate(char *uri, /* I - Universal Resource Identifier */
*port = 443;
else if (strcasecmp(method, "ipp") == 0) /* Not registered yet... */
*port = ippPort();
else if (strcasecmp(method, "socket") == 0) /* Not registered yet... */
*port = 9100;
else
*port = 0;
}
@@ -519,7 +533,7 @@ httpSeparate(char *uri, /* I - Universal Resource Identifier */
void
httpSetField(http_t *http, /* I - HTTP data */
http_field_t field, /* I - Field index */
char *value) /* I - Value */
const char *value) /* I - Value */
{
strncpy(http->fields[field], value, HTTP_MAX_VALUE - 1);
http->fields[field][HTTP_MAX_VALUE - 1] = '\0';
@@ -531,8 +545,8 @@ httpSetField(http_t *http, /* I - HTTP data */
*/
int /* O - Status of call (0 = success) */
httpDelete(http_t *http, /* I - HTTP data */
char *uri) /* I - URI to delete */
httpDelete(http_t *http, /* I - HTTP data */
const char *uri) /* I - URI to delete */
{
return (http_send(http, HTTP_DELETE, uri));
}
@@ -543,8 +557,8 @@ httpDelete(http_t *http, /* I - HTTP data */
*/
int /* O - Status of call (0 = success) */
httpGet(http_t *http, /* I - HTTP data */
char *uri) /* I - URI to get */
httpGet(http_t *http, /* I - HTTP data */
const char *uri) /* I - URI to get */
{
return (http_send(http, HTTP_GET, uri));
}
@@ -555,8 +569,8 @@ httpGet(http_t *http, /* I - HTTP data */
*/
int /* O - Status of call (0 = success) */
httpHead(http_t *http, /* I - HTTP data */
char *uri) /* I - URI for head */
httpHead(http_t *http, /* I - HTTP data */
const char *uri) /* I - URI for head */
{
return (http_send(http, HTTP_HEAD, uri));
}
@@ -567,8 +581,8 @@ httpHead(http_t *http, /* I - HTTP data */
*/
int /* O - Status of call (0 = success) */
httpOptions(http_t *http, /* I - HTTP data */
char *uri) /* I - URI for options */
httpOptions(http_t *http, /* I - HTTP data */
const char *uri) /* I - URI for options */
{
return (http_send(http, HTTP_OPTIONS, uri));
}
@@ -579,8 +593,8 @@ httpOptions(http_t *http, /* I - HTTP data */
*/
int /* O - Status of call (0 = success) */
httpPost(http_t *http, /* I - HTTP data */
char *uri) /* I - URI for post */
httpPost(http_t *http, /* I - HTTP data */
const char *uri) /* I - URI for post */
{
httpGetLength(http);
@@ -593,8 +607,8 @@ httpPost(http_t *http, /* I - HTTP data */
*/
int /* O - Status of call (0 = success) */
httpPut(http_t *http, /* I - HTTP data */
char *uri) /* I - URI to put */
httpPut(http_t *http, /* I - HTTP data */
const char *uri) /* I - URI to put */
{
httpGetLength(http);
@@ -607,8 +621,8 @@ httpPut(http_t *http, /* I - HTTP data */
*/
int /* O - Status of call (0 = success) */
httpTrace(http_t *http, /* I - HTTP data */
char *uri) /* I - URI for trace */
httpTrace(http_t *http, /* I - HTTP data */
const char *uri) /* I - URI for trace */
{
return (http_send(http, HTTP_TRACE, uri));
}
@@ -723,9 +737,9 @@ httpRead(http_t *http, /* I - HTTP data */
*/
int /* O - Number of bytes written */
httpWrite(http_t *http, /* I - HTTP data */
char *buffer, /* I - Buffer for data */
int length) /* I - Number of bytes to write */
httpWrite(http_t *http, /* I - HTTP data */
const char *buffer, /* I - Buffer for data */
int length) /* I - Number of bytes to write */
{
int tbytes, /* Total bytes sent */
bytes; /* Bytes sent */
@@ -769,6 +783,7 @@ httpWrite(http_t *http, /* I - HTTP data */
if (bytes < 0)
{
DEBUG_puts("httpWrite: error writing data...\n");
return (-1);
}
@@ -810,6 +825,7 @@ httpGets(char *line, /* I - Line to read into */
*bufptr, /* Pointer into input buffer */
*bufend; /* Pointer to end of buffer */
int bytes; /* Number of bytes read */
int lasterror; /* Last error received */
DEBUG_printf(("httpGets(%08x, %d, %08x)\n", line, length, http));
@@ -821,6 +837,9 @@ httpGets(char *line, /* I - Line to read into */
* Pre-scan the buffer and see if there is a newline in there...
*/
lasterror = 0;
errno = 0;
do
{
bufptr = http->buffer;
@@ -838,23 +857,32 @@ httpGets(char *line, /* I - Line to read into */
* No newline; see if there is more data to be read...
*/
if ((bytes = recv(http->fd, bufend, HTTP_MAX_BUFFER - http->used, 0)) < 1)
if ((bytes = recv(http->fd, bufend, HTTP_MAX_BUFFER - http->used, 0)) < 0)
{
/*
* Nope, can't get a line this time...
*/
if (errno != lasterror && errno != ECONNRESET &&
errno != ECONNABORTED && errno != ENETRESET)
{
lasterror = errno;
continue;
}
DEBUG_printf(("httpGets(): recv() error %d!\n", errno));
return (NULL);
}
else
{
/*
* Yup, update the amount used and the end pointer...
*/
else if (bytes == 0)
return (NULL);
http->used += bytes;
bufend += bytes;
}
/*
* Yup, update the amount used and the end pointer...
*/
http->used += bytes;
bufend += bytes;
}
}
while (bufptr >= bufend);
@@ -882,6 +910,7 @@ httpGets(char *line, /* I - Line to read into */
if (http->used > 0)
memcpy(http->buffer, bufptr, http->used);
DEBUG_printf(("httpGets(): Returning \"%s\"\n", line));
return (line);
}
else if (*bufptr == 0x0d)
@@ -890,6 +919,8 @@ httpGets(char *line, /* I - Line to read into */
*lineptr++ = *bufptr++;
}
DEBUG_puts("httpGets(): No new line available!");
return (NULL);
}
@@ -903,8 +934,11 @@ httpPrintf(http_t *http, /* I - HTTP data */
const char *format, /* I - printf-style format string */
...) /* I - Additional args as needed */
{
int bytes; /* Number of bytes to write */
char buf[HTTP_MAX_BUFFER]; /* Buffer for formatted string */
int bytes, /* Number of bytes to write */
nbytes, /* Number of bytes written */
tbytes; /* Number of bytes all together */
char buf[HTTP_MAX_BUFFER], /* Buffer for formatted string */
*bufptr; /* Pointer into buffer */
va_list ap; /* Variable argument pointer */
@@ -914,7 +948,11 @@ httpPrintf(http_t *http, /* I - HTTP data */
DEBUG_printf(("httpPrintf: %s", buf));
return (send(http->fd, buf, bytes, 0));
for (tbytes = 0, bufptr = buf; tbytes < bytes; tbytes += nbytes, bufptr += nbytes)
if ((nbytes = send(http->fd, bufptr, bytes - tbytes, 0)) < 0)
return (-1);
return (bytes);
}
@@ -922,7 +960,7 @@ httpPrintf(http_t *http, /* I - HTTP data */
* 'httpStatus()' - Return a short string describing a HTTP status code.
*/
char * /* O - String or NULL */
const char * /* O - String or NULL */
httpStatus(http_status_t status) /* I - HTTP status code */
{
switch (status)
@@ -963,7 +1001,7 @@ httpStatus(http_status_t status) /* I - HTTP status code */
* 'httpGetDateString()' - Get a formatted date/time string from a time value.
*/
char * /* O - Date/time string */
const char * /* O - Date/time string */
httpGetDateString(time_t t) /* I - UNIX time */
{
struct tm *tdate;
@@ -984,7 +1022,7 @@ httpGetDateString(time_t t) /* I - UNIX time */
*/
time_t /* O - UNIX time */
httpGetDateTime(char *s) /* I - Date/time string */
httpGetDateTime(const char *s) /* I - Date/time string */
{
int i; /* Looping var */
struct tm tdate; /* Time/date structure */
@@ -1116,6 +1154,13 @@ httpUpdate(http_t *http) /* I - HTTP data */
return (HTTP_ERROR);
}
/*
* See if there was an error...
*/
if (errno)
return (HTTP_ERROR);
/*
* If we haven't already returned, then there is nothing new...
*/
@@ -1129,8 +1174,8 @@ httpUpdate(http_t *http) /* I - HTTP data */
*/
char * /* O - Decoded string */
httpDecode64(char *out, /* I - String to write to */
char *in) /* I - String to read from */
httpDecode64(char *out, /* I - String to write to */
const char *in) /* I - String to read from */
{
int pos, /* Bit position */
base64; /* Value of this character */
@@ -1200,8 +1245,8 @@ httpDecode64(char *out, /* I - String to write to */
*/
char * /* O - Encoded string */
httpEncode64(char *out, /* I - String to write to */
char *in) /* I - String to read from */
httpEncode64(char *out, /* I - String to write to */
const char *in) /* I - String to read from */
{
char *outptr; /* Output pointer */
static char base64[] = /* Base64 characters... */
@@ -1251,7 +1296,7 @@ httpEncode64(char *out, /* I - String to write to */
* content-length or transfer-encoding fields.
*/
int
int /* O - Content length */
httpGetLength(http_t *http) /* I - HTTP data */
{
if (strcasecmp(http->fields[HTTP_FIELD_TRANSFER_ENCODING], "chunked") == 0)
@@ -1286,7 +1331,7 @@ httpGetLength(http_t *http) /* I - HTTP data */
*/
static http_field_t /* O - Field index */
http_field(char *name) /* I - String name */
http_field(const char *name) /* I - String name */
{
int i; /* Looping var */
@@ -1306,12 +1351,12 @@ http_field(char *name) /* I - String name */
static int /* O - 0 on success, non-zero on error */
http_send(http_t *http, /* I - HTTP data */
http_state_t request, /* I - Request code */
char *uri) /* I - URI */
const char *uri) /* I - URI */
{
int i; /* Looping var */
char *ptr, /* Pointer in buffer */
buf[1024]; /* Encoded URI buffer */
static char *codes[] = /* Request code strings */
static const char *codes[] = /* Request code strings */
{
NULL,
"OPTIONS",
@@ -1327,7 +1372,7 @@ http_send(http_t *http, /* I - HTTP data */
"TRACE",
"CLOSE"
};
static char *hex = "0123456789ABCDEF";
static const char *hex = "0123456789ABCDEF";
/* Hex digits */
@@ -1358,7 +1403,9 @@ http_send(http_t *http, /* I - HTTP data */
if (request == HTTP_POST || request == HTTP_PUT)
http->state ++;
if (httpPrintf(http, "%s %s HTTP/1.1\n", codes[request], buf) < 1)
http->status = HTTP_CONTINUE;
if (httpPrintf(http, "%s %s HTTP/1.1\r\n", codes[request], buf) < 1)
{
/*
* Might have lost connection; try to reconnect...
@@ -1371,7 +1418,7 @@ http_send(http_t *http, /* I - HTTP data */
* OK, we've reconnected, send the request again...
*/
if (httpPrintf(http, "%s %s HTTP/%d.%d\n", codes[request], buf,
if (httpPrintf(http, "%s %s HTTP/%d.%d\r\n", codes[request], buf,
http->version / 100, http->version % 100) < 1)
return (-1);
}
@@ -1381,11 +1428,11 @@ http_send(http_t *http, /* I - HTTP data */
{
DEBUG_printf(("%s: %s\n", http_fields[i], http->fields[i]));
if (httpPrintf(http, "%s: %s\n", http_fields[i], http->fields[i]) < 1)
if (httpPrintf(http, "%s: %s\r\n", http_fields[i], http->fields[i]) < 1)
return (-1);
}
if (httpPrintf(http, "\n") < 1)
if (httpPrintf(http, "\r\n") < 1)
return (-1);
httpClearFields(http);
+18 -44
Ver Arquivo
@@ -63,7 +63,7 @@ extern "C" {
# define HTTP_MAX_URI 1024 /* Max length of URI string */
# define HTTP_MAX_HOST 256 /* Max length of hostname string */
# define HTTP_MAX_BUFFER 8192 /* Max length of data buffer */
# define HTTP_MAX_BUFFER 2048 /* Max length of data buffer */
# define HTTP_MAX_VALUE 256 /* Max header field value length */
@@ -182,18 +182,10 @@ typedef enum
typedef enum
{
HTTP_FIELD_UNKNOWN = -1,
HTTP_FIELD_ACCEPT = 0,
HTTP_FIELD_ACCEPT_CHARSET,
HTTP_FIELD_ACCEPT_ENCODING,
HTTP_FIELD_ACCEPT_LANGUAGE,
HTTP_FIELD_ACCEPT_RANGES,
HTTP_FIELD_AGE,
HTTP_FIELD_ALLOW,
HTTP_FIELD_ALTERNATES,
HTTP_FIELD_AUTHORIZATION,
HTTP_FIELD_CACHE_CONTROL,
HTTP_FIELD_CONNECTION,
HTTP_FIELD_CONTENT_BASE,
HTTP_FIELD_CONTENT_ENCODING,
HTTP_FIELD_CONTENT_LANGUAGE,
HTTP_FIELD_CONTENT_LENGTH,
@@ -203,38 +195,19 @@ typedef enum
HTTP_FIELD_CONTENT_TYPE,
HTTP_FIELD_CONTENT_VERSION,
HTTP_FIELD_DATE,
HTTP_FIELD_DERIVED_FROM,
HTTP_FIELD_ETAG,
HTTP_FIELD_EXPIRES,
HTTP_FIELD_FROM,
HTTP_FIELD_HOST,
HTTP_FIELD_IF_MATCH,
HTTP_FIELD_IF_MODIFIED_SINCE,
HTTP_FIELD_IF_NONE_MATCH,
HTTP_FIELD_IF_RANGE,
HTTP_FIELD_IF_UNMODIFIED_SINCE,
HTTP_FIELD_KEEP_ALIVE,
HTTP_FIELD_LAST_MODIFIED,
HTTP_FIELD_LINK,
HTTP_FIELD_LOCATION,
HTTP_FIELD_MAX_FORWARDS,
HTTP_FIELD_MESSAGE_ID,
HTTP_FIELD_MIME_VERSION,
HTTP_FIELD_PRAGMA,
HTTP_FIELD_PROXY_AUTHENTICATE,
HTTP_FIELD_PROXY_AUTHORIZATION,
HTTP_FIELD_PUBLIC,
HTTP_FIELD_RANGE,
HTTP_FIELD_REFERER,
HTTP_FIELD_RETRY_AFTER,
HTTP_FIELD_SERVER,
HTTP_FIELD_TRANSFER_ENCODING,
HTTP_FIELD_UPGRADE,
HTTP_FIELD_URI,
HTTP_FIELD_USER_AGENT,
HTTP_FIELD_VARY,
HTTP_FIELD_VIA,
HTTP_FIELD_WARNING,
HTTP_FIELD_WWW_AUTHENTICATE,
HTTP_FIELD_MAX
} http_field_t;
@@ -272,34 +245,35 @@ 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(char *host, int port);
extern int httpDelete(http_t *http, char *uri);
extern http_t *httpConnect(const char *host, int port);
extern int httpDelete(http_t *http, const char *uri);
extern void httpFlush(http_t *http);
extern int httpGet(http_t *http, char *uri);
extern int httpGet(http_t *http, const char *uri);
extern char *httpGets(char *line, int length, http_t *http);
extern char *httpGetDateString(time_t t);
extern time_t httpGetDateTime(char *s);
extern const char *httpGetDateString(time_t t);
extern time_t httpGetDateTime(const char *s);
# define httpGetField(http,field) (http)->fields[field]
extern int httpHead(http_t *http, char *uri);
extern int httpHead(http_t *http, const char *uri);
extern void httpInitialize(void);
extern int httpOptions(http_t *http, char *uri);
extern int httpPost(http_t *http, char *uri);
extern int httpOptions(http_t *http, const char *uri);
extern int httpPost(http_t *http, const char *uri);
extern int httpPrintf(http_t *http, const char *format, ...);
extern int httpPut(http_t *http, char *uri);
extern int httpPut(http_t *http, const char *uri);
extern int httpRead(http_t *http, char *buffer, int length);
extern int httpReconnect(http_t *http);
extern void httpSeparate(char *uri, char *method, char *username,
extern void httpSeparate(const char *uri, char *method, char *username,
char *host, int *port, char *resource);
extern void httpSetField(http_t *http, http_field_t field, char *value);
extern char *httpStatus(http_status_t status);
extern int httpTrace(http_t *http, char *uri);
extern void httpSetField(http_t *http, http_field_t field, const char *value);
extern const char *httpStatus(http_status_t status);
extern int httpTrace(http_t *http, const char *uri);
extern http_status_t httpUpdate(http_t *http);
extern int httpWrite(http_t *http, char *buffer, int length);
extern char *httpEncode64(char *out, char *in);
extern char *httpDecode64(char *out, char *in);
extern int httpWrite(http_t *http, const char *buffer, int length);
extern char *httpEncode64(char *out, const char *in);
extern char *httpDecode64(char *out, const char *in);
extern int httpGetLength(http_t *http);
+86 -87
Ver Arquivo
@@ -65,7 +65,7 @@
*/
static ipp_attribute_t *add_attr(ipp_t *ipp, int num_values);
static int ipp_read(http_t *http, char *buffer, int length);
static int ipp_read(http_t *http, unsigned char *buffer, int length);
/*
@@ -73,10 +73,10 @@ static int ipp_read(http_t *http, char *buffer, int length);
*/
ipp_attribute_t * /* O - New attribute */
ippAddBoolean(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
char *name, /* I - Name of attribute */
char value) /* I - Value of attribute */
ippAddBoolean(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
const char *name, /* I - Name of attribute */
char value) /* I - Value of attribute */
{
ipp_attribute_t *attr; /* New attribute */
@@ -103,11 +103,11 @@ ippAddBoolean(ipp_t *ipp, /* I - IPP request */
*/
ipp_attribute_t * /* O - New attribute */
ippAddBooleans(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
char *name, /* I - Name of attribute */
int num_values, /* I - Number of values */
char *values) /* I - Values */
ippAddBooleans(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
const char *name, /* I - Name of attribute */
int num_values, /* I - Number of values */
const char *values) /* I - Values */
{
int i; /* Looping var */
ipp_attribute_t *attr; /* New attribute */
@@ -139,10 +139,10 @@ ippAddBooleans(ipp_t *ipp, /* I - IPP request */
*/
ipp_attribute_t * /* O - New attribute */
ippAddDate(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
char *name, /* I - Name of attribute */
ipp_uchar_t *value) /* I - Value */
ippAddDate(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
const char *name, /* I - Name of attribute */
const ipp_uchar_t *value) /* I - Value */
{
ipp_attribute_t *attr; /* New attribute */
@@ -170,11 +170,11 @@ ippAddDate(ipp_t *ipp, /* I - IPP request */
*/
ipp_attribute_t * /* O - New attribute */
ippAddInteger(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
ipp_tag_t type, /* I - Type of attribute */
char *name, /* I - Name of attribute */
int value) /* I - Value of attribute */
ippAddInteger(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
ipp_tag_t type, /* I - Type of attribute */
const char *name, /* I - Name of attribute */
int value) /* I - Value of attribute */
{
ipp_attribute_t *attr; /* New attribute */
@@ -202,12 +202,12 @@ ippAddInteger(ipp_t *ipp, /* I - IPP request */
*/
ipp_attribute_t * /* O - New attribute */
ippAddIntegers(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
ipp_tag_t type, /* I - Type of attribute */
char *name, /* I - Name of attribute */
int num_values, /* I - Number of values */
int *values) /* I - Values */
ippAddIntegers(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
ipp_tag_t type, /* I - Type of attribute */
const char *name, /* I - Name of attribute */
int num_values, /* I - Number of values */
const int *values) /* I - Values */
{
int i; /* Looping var */
ipp_attribute_t *attr; /* New attribute */
@@ -236,12 +236,12 @@ ippAddIntegers(ipp_t *ipp, /* I - IPP request */
*/
ipp_attribute_t * /* O - New attribute */
ippAddString(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
ipp_tag_t type, /* I - Type of attribute */
char *name, /* I - Name of attribute */
char *charset, /* I - Character set */
char *value) /* I - Value */
ippAddString(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
ipp_tag_t type, /* I - Type of attribute */
const char *name, /* I - Name of attribute */
const char *charset, /* I - Character set */
const char *value) /* I - Value */
{
ipp_attribute_t *attr; /* New attribute */
@@ -267,13 +267,13 @@ ippAddString(ipp_t *ipp, /* I - IPP request */
*/
ipp_attribute_t * /* O - New attribute */
ippAddStrings(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
ipp_tag_t type, /* I - Type of attribute */
char *name, /* I - Name of attribute */
int num_values, /* I - Number of values */
char *charset, /* I - Character set */
char **values) /* I - Values */
ippAddStrings(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
ipp_tag_t type, /* I - Type of attribute */
const char *name, /* I - Name of attribute */
int num_values, /* I - Number of values */
const char *charset, /* I - Character set */
const char **values) /* I - Values */
{
int i; /* Looping var */
ipp_attribute_t *attr; /* New attribute */
@@ -309,11 +309,11 @@ ippAddStrings(ipp_t *ipp, /* I - IPP request */
*/
ipp_attribute_t * /* O - New attribute */
ippAddRange(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
char *name, /* I - Name of attribute */
int lower, /* I - Lower value */
int upper) /* I - Upper value */
ippAddRange(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
const char *name, /* I - Name of attribute */
int lower, /* I - Lower value */
int upper) /* I - Upper value */
{
ipp_attribute_t *attr; /* New attribute */
@@ -339,12 +339,12 @@ ippAddRange(ipp_t *ipp, /* I - IPP request */
*/
ipp_attribute_t * /* O - New attribute */
ippAddRanges(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
char *name, /* I - Name of attribute */
int num_values, /* I - Number of values */
int *lower, /* I - Lower values */
int *upper) /* I - Upper values */
ippAddRanges(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
const char *name, /* I - Name of attribute */
int num_values, /* I - Number of values */
const int *lower, /* I - Lower values */
const int *upper) /* I - Upper values */
{
int i; /* Looping var */
ipp_attribute_t *attr; /* New attribute */
@@ -376,12 +376,12 @@ ippAddRanges(ipp_t *ipp, /* I - IPP request */
*/
ipp_attribute_t * /* O - New attribute */
ippAddResolution(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
char *name, /* I - Name of attribute */
ipp_res_t units, /* I - Units for resolution */
int xres, /* I - X resolution */
int yres) /* I - Y resolution */
ippAddResolution(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
const char *name, /* I - Name of attribute */
ipp_res_t units, /* I - Units for resolution */
int xres, /* I - X resolution */
int yres) /* I - Y resolution */
{
ipp_attribute_t *attr; /* New attribute */
@@ -408,13 +408,13 @@ ippAddResolution(ipp_t *ipp, /* I - IPP request */
*/
ipp_attribute_t * /* O - New attribute */
ippAddResolutions(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
char *name, /* I - Name of attribute */
int num_values, /* I - Number of values */
ipp_res_t units, /* I - Units for resolution */
int *xres, /* I - X resolutions */
int *yres) /* I - Y resolutions */
ippAddResolutions(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
const char *name, /* I - Name of attribute */
int num_values,/* I - Number of values */
ipp_res_t units, /* I - Units for resolution */
const int *xres, /* I - X resolutions */
const int *yres) /* I - Y resolutions */
{
int i; /* Looping var */
ipp_attribute_t *attr; /* New attribute */
@@ -472,8 +472,8 @@ ippAddSeparator(ipp_t *ipp) /* I - IPP request */
* in seconds.
*/
time_t /* O - UNIX time value */
ippDateToTime(ipp_uchar_t *date)/* I - RFC 1903 date info */
time_t /* O - UNIX time value */
ippDateToTime(const ipp_uchar_t *date) /* I - RFC 1903 date info */
{
struct tm unixdate; /* UNIX date/time info */
time_t t; /* Computed time */
@@ -578,9 +578,9 @@ ippDelete(ipp_t *ipp) /* I - IPP request */
*/
ipp_attribute_t * /* O - Matching attribute */
ippFindAttribute(ipp_t *ipp, /* I - IPP request */
char *name, /* I - Name of attribute */
ipp_tag_t type) /* I - Type of attribute */
ippFindAttribute(ipp_t *ipp, /* I - IPP request */
const char *name, /* I - Name of attribute */
ipp_tag_t type) /* I - Type of attribute */
{
ipp_attribute_t *attr; /* Current atttribute */
@@ -725,7 +725,7 @@ ippRead(http_t *http, /* I - HTTP data */
ipp_t *ipp) /* I - IPP data */
{
int n; /* Length of data */
char buffer[8192]; /* Data buffer */
unsigned char buffer[8192]; /* Data buffer */
ipp_attribute_t *attr; /* Current attribute */
ipp_tag_t tag; /* Current tag */
@@ -867,7 +867,7 @@ ippRead(http_t *http, /* I - HTTP data */
attr->group_tag = ipp->curtag;
attr->value_tag = tag;
attr->name = strdup(buffer);
attr->name = strdup((char *)buffer);
attr->num_values = 0;
}
@@ -913,7 +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(buffer);
attr->values[attr->num_values].string.text = strdup((char *)buffer);
break;
case IPP_TAG_DATE :
if (ipp_read(http, buffer, 11) < 11)
@@ -952,7 +952,7 @@ ippRead(http_t *http, /* I - HTTP data */
buffer[n] = '\0';
attr->values[attr->num_values].string.charset = strdup(buffer);
attr->values[attr->num_values].string.charset = strdup((char *)buffer);
if (ipp_read(http, buffer, 2) < 2)
return (IPP_ERROR);
@@ -964,7 +964,7 @@ ippRead(http_t *http, /* I - HTTP data */
buffer[n] = '\0';
attr->values[attr->num_values].string.text = strdup(buffer);
attr->values[attr->num_values].string.text = strdup((char *)buffer);
break;
}
@@ -991,7 +991,7 @@ ippRead(http_t *http, /* I - HTTP data */
* 'ippTimeToDate()' - Convert from UNIX time to RFC 1903 format.
*/
ipp_uchar_t * /* O - RFC-1903 date/time data */
const ipp_uchar_t * /* O - RFC-1903 date/time data */
ippTimeToDate(time_t t) /* I - UNIX time value */
{
struct tm *unixdate; /* UNIX unixdate/time info */
@@ -1044,7 +1044,7 @@ ippWrite(http_t *http, /* I - HTTP data */
{
int i; /* Looping var */
int n; /* Length of data */
char buffer[8192], /* Data buffer */
unsigned char buffer[8192], /* Data buffer */
*bufptr; /* Pointer into buffer */
ipp_attribute_t *attr; /* Current attribute */
@@ -1073,7 +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, buffer, bufptr - buffer) < 0)
if (httpWrite(http, (char *)buffer, bufptr - buffer) < 0)
{
DEBUG_puts("ippWrite: Could not write IPP header...");
return (IPP_ERROR);
@@ -1329,7 +1329,7 @@ ippWrite(http_t *http, /* I - HTTP data */
* Write the data out...
*/
if (httpWrite(http, buffer, bufptr - buffer) < 0)
if (httpWrite(http, (char *)buffer, bufptr - buffer) < 0)
{
DEBUG_puts("ippWrite: Could not write IPP attribute...");
return (IPP_ERROR);
@@ -1352,7 +1352,7 @@ ippWrite(http_t *http, /* I - HTTP data */
*/
buffer[0] = IPP_TAG_END;
if (httpWrite(http, buffer, 1) < 0)
if (httpWrite(http, (char *)buffer, 1) < 0)
{
DEBUG_puts("ippWrite: Could not write IPP end-tag...");
return (IPP_ERROR);
@@ -1377,11 +1377,11 @@ ippWrite(http_t *http, /* I - HTTP data */
int /* O - Port number */
ippPort(void)
{
char *server_port; /* SERVER_PORT environment variable */
const char *server_port; /* SERVER_PORT environment variable */
struct servent *port; /* Port number info */
if ((server_port = getenv("SERVER_PORT")) != NULL)
if ((server_port = getenv("IPP_PORT")) != NULL)
return (atoi(server_port));
else if ((port = getservbyname("ipp", NULL)) == NULL)
return (IPP_PORT);
@@ -1429,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 */
char *buffer,/* O - Buffer for data */
int length) /* I - Total length */
static int /* O - Number of bytes read */
ipp_read(http_t *http, /* I - Client connection */
unsigned char *buffer, /* O - Buffer for data */
int length) /* I - Total length */
{
int tbytes, /* Total bytes read */
bytes; /* Bytes read this pass */
int tbytes, /* Total bytes read */
bytes; /* Bytes read this pass */
/*
@@ -1443,7 +1443,7 @@ ipp_read(http_t *http, /* I - Client connection */
*/
for (tbytes = 0; tbytes < length; tbytes += bytes, buffer += bytes)
if ((bytes = httpRead(http, buffer, length - tbytes)) <= 0)
if ((bytes = httpRead(http, (char *)buffer, length - tbytes)) <= 0)
break;
/*
@@ -1454,7 +1454,6 @@ ipp_read(http_t *http, /* I - Client connection */
}
/*
* End of "$Id$".
*/
+16 -15
Ver Arquivo
@@ -87,11 +87,12 @@ typedef enum /**** Format tags for attribute formats... ****/
IPP_TAG_DATE,
IPP_TAG_RESOLUTION,
IPP_TAG_RANGE,
IPP_TAG_COLLECTION,
IPP_TAG_TEXTLANG,
IPP_TAG_NAMELANG,
IPP_TAG_TEXT = 0x41,
IPP_TAG_NAME,
IPP_TAG_KEYWORD,
IPP_TAG_KEYWORD = 0x44,
IPP_TAG_URI,
IPP_TAG_URISCHEME,
IPP_TAG_CHARSET,
@@ -306,25 +307,25 @@ typedef struct /**** Request State ****/
* Prototypes...
*/
extern time_t ippDateToTime(ipp_uchar_t *date);
extern ipp_attribute_t *ippAddBoolean(ipp_t *ipp, ipp_tag_t group, char *name, char value);
extern ipp_attribute_t *ippAddBooleans(ipp_t *ipp, ipp_tag_t group, char *name, int num_values, char *values);
extern ipp_attribute_t *ippAddDate(ipp_t *ipp, ipp_tag_t group, char *name, ipp_uchar_t *value);
extern ipp_attribute_t *ippAddInteger(ipp_t *ipp, ipp_tag_t group, ipp_tag_t type, char *name, int value);
extern ipp_attribute_t *ippAddIntegers(ipp_t *ipp, ipp_tag_t group, ipp_tag_t type, char *name, int num_values, int *values);
extern ipp_attribute_t *ippAddRange(ipp_t *ipp, ipp_tag_t group, char *name, int lower, int upper);
extern ipp_attribute_t *ippAddRanges(ipp_t *ipp, ipp_tag_t group, char *name, int num_values, int *lower, int *upper);
extern ipp_attribute_t *ippAddResolution(ipp_t *ipp, ipp_tag_t group, char *name, ipp_res_t units, int xres, int yres);
extern ipp_attribute_t *ippAddResolutions(ipp_t *ipp, ipp_tag_t group, char *name, int num_values, ipp_res_t units, int *xres, int *yres);
extern time_t ippDateToTime(const ipp_uchar_t *date);
extern ipp_attribute_t *ippAddBoolean(ipp_t *ipp, ipp_tag_t group, const char *name, char value);
extern ipp_attribute_t *ippAddBooleans(ipp_t *ipp, ipp_tag_t group, const char *name, int num_values, const char *values);
extern ipp_attribute_t *ippAddDate(ipp_t *ipp, ipp_tag_t group, const char *name, const ipp_uchar_t *value);
extern ipp_attribute_t *ippAddInteger(ipp_t *ipp, ipp_tag_t group, ipp_tag_t type, const char *name, int value);
extern ipp_attribute_t *ippAddIntegers(ipp_t *ipp, ipp_tag_t group, ipp_tag_t type, const char *name, int num_values, const int *values);
extern ipp_attribute_t *ippAddRange(ipp_t *ipp, ipp_tag_t group, const char *name, int lower, int upper);
extern ipp_attribute_t *ippAddRanges(ipp_t *ipp, ipp_tag_t group, const char *name, int num_values, const int *lower, const int *upper);
extern ipp_attribute_t *ippAddResolution(ipp_t *ipp, ipp_tag_t group, const char *name, ipp_res_t units, int xres, int yres);
extern ipp_attribute_t *ippAddResolutions(ipp_t *ipp, ipp_tag_t group, const char *name, int num_values, ipp_res_t units, const int *xres, const int *yres);
extern ipp_attribute_t *ippAddSeparator(ipp_t *ipp);
extern ipp_attribute_t *ippAddString(ipp_t *ipp, ipp_tag_t group, ipp_tag_t type, char *name, char *charset, char *value);
extern ipp_attribute_t *ippAddStrings(ipp_t *ipp, ipp_tag_t group, ipp_tag_t type, char *name, int num_values, char *charset, char **values);
extern ipp_attribute_t *ippAddString(ipp_t *ipp, ipp_tag_t group, ipp_tag_t type, const char *name, const char *charset, const char *value);
extern ipp_attribute_t *ippAddStrings(ipp_t *ipp, ipp_tag_t group, ipp_tag_t type, const char *name, int num_values, const char *charset, const char **values);
extern void ippDelete(ipp_t *ipp);
extern ipp_attribute_t *ippFindAttribute(ipp_t *ipp, char *name, ipp_tag_t type);
extern ipp_attribute_t *ippFindAttribute(ipp_t *ipp, const char *name, ipp_tag_t type);
extern size_t ippLength(ipp_t *ipp);
extern ipp_t *ippNew(void);
extern ipp_state_t ippRead(http_t *http, ipp_t *ipp);
extern ipp_uchar_t *ippTimeToDate(time_t t);
extern const ipp_uchar_t *ippTimeToDate(time_t t);
extern ipp_state_t ippWrite(http_t *http, ipp_t *ipp);
extern int ippPort(void);
+16 -13
Ver Arquivo
@@ -127,10 +127,11 @@ cupsLangFree(cups_lang_t *lang) /* I - Language to free */
*/
cups_lang_t * /* O - Language data */
cupsLangGet(char *language) /* I - Language or locale */
cupsLangGet(const char *language) /* I - Language or locale */
{
int i, count; /* Looping vars */
char real[16], /* Real language name */
char langname[16], /* Requested language name */
real[16], /* Real language name */
filename[1024], /* Filename for language locale file */
*localedir; /* Directory for locale files */
FILE *fp; /* Language locale file pointer */
@@ -149,26 +150,28 @@ cupsLangGet(char *language) /* I - Language or locale */
*/
if (language == NULL || language[0] == '\0')
language = "C";
strcpy(langname, "C");
else
strcpy(langname, language);
if (strlen(language) < 2)
if (strlen(langname) < 2)
strcpy(real, "C");
else
{
real[0] = tolower(language[0]);
real[1] = tolower(language[1]);
real[0] = tolower(langname[0]);
real[1] = tolower(langname[1]);
if (language[2] == '_' || language[2] == '-')
if (langname[2] == '_' || langname[2] == '-')
{
real[2] = '_';
real[3] = toupper(language[3]);
real[4] = toupper(language[4]);
real[3] = toupper(langname[3]);
real[4] = toupper(langname[4]);
real[5] = '\0';
language[5] = '\0';
langname[5] = '\0';
}
else
{
language[2] = '\0';
langname[2] = '\0';
real[2] = '\0';
}
}
@@ -201,7 +204,7 @@ cupsLangGet(char *language) /* I - Language or locale */
*/
for (lang = lang_cache; lang != NULL; lang = lang->next)
if (strcmp(lang->language, language) == 0)
if (strcmp(lang->language, langname) == 0)
{
lang->used ++;
@@ -288,7 +291,7 @@ cupsLangGet(char *language) /* I - Language or locale */
*/
lang->used ++;
strcpy(lang->language, language);
strcpy(lang->language, langname);
for (i = 0; i < (sizeof(lang_encodings) / sizeof(lang_encodings[0])); i ++)
if (strcmp(lang_encodings[i], line) == 0)
+3 -1
Ver Arquivo
@@ -139,6 +139,8 @@ typedef enum /**** Message Indices ****/
CUPS_MSG_COPIES,
CUPS_MSG_FILE_SIZE,
CUPS_MSG_PENDING,
CUPS_MSG_OUTPUT_MODE,
CUPS_MSG_RESOLUTION,
CUPS_MSG_HTTP_BASE = 200,
CUPS_MSG_HTTP_END = 505,
CUPS_MSG_MAX
@@ -179,7 +181,7 @@ typedef struct cups_lang_str /**** Language Cache Structure ****/
extern char *cupsLangEncoding(cups_lang_t *lang);
extern void cupsLangFlush(void);
extern void cupsLangFree(cups_lang_t *lang);
extern cups_lang_t *cupsLangGet(char *language);
extern cups_lang_t *cupsLangGet(const char *language);
# define cupsLangString(lang,msg) (lang)->messages[(msg)]
# ifdef __cplusplus
+45 -61
Ver Arquivo
@@ -33,7 +33,6 @@
* ppdMarkDefaults() - Mark all default options in the PPD file.
* ppdMarkOption() - Mark an option in a PPD file.
* ppd_defaults() - Set the defaults for this group and all sub-groups.
* ppd_default() - Set the default choice for an option.
*/
/*
@@ -48,8 +47,7 @@
* Local functions...
*/
static void ppd_defaults(ppd_group_t *g);
static void ppd_default(ppd_option_t *o);
static void ppd_defaults(ppd_file_t *ppd, ppd_group_t *g);
/*
@@ -180,7 +178,7 @@ ppdConflicts(ppd_file_t *ppd) /* I - PPD to check */
ppd_choice_t * /* O - Choice pointer or NULL */
ppdFindChoice(ppd_option_t *o, /* I - Pointer to option */
char *choice) /* I - Name of choice */
const char *choice) /* I - Name of choice */
{
int i; /* Looping var */
ppd_choice_t *c; /* Current choice */
@@ -203,7 +201,7 @@ ppdFindChoice(ppd_option_t *o, /* I - Pointer to option */
ppd_choice_t * /* O - Pointer to choice or NULL */
ppdFindMarkedChoice(ppd_file_t *ppd, /* I - PPD file */
char *option) /* I - Keyword/option name */
const char *option) /* I - Keyword/option name */
{
int i; /* Looping var */
ppd_option_t *o; /* Pointer to option */
@@ -227,7 +225,7 @@ ppdFindMarkedChoice(ppd_file_t *ppd, /* I - PPD file */
ppd_option_t * /* O - Pointer to option or NULL */
ppdFindOption(ppd_file_t *ppd, /* I - PPD file data */
char *option) /* I - Option/Keyword name */
const char *option) /* I - Option/Keyword name */
{
int i, j, k; /* Looping vars */
ppd_option_t *o; /* Pointer to option */
@@ -260,8 +258,8 @@ ppdFindOption(ppd_file_t *ppd, /* I - PPD file data */
int /* O - Non-zero if option is marked */
ppdIsMarked(ppd_file_t *ppd, /* I - PPD file data */
char *option, /* I - Option/Keyword name */
char *choice) /* I - Choice name */
const char *option, /* I - Option/Keyword name */
const char *choice) /* I - Choice name */
{
ppd_option_t *o; /* Option pointer */
ppd_choice_t *c; /* Choice pointer */
@@ -296,12 +294,7 @@ ppdMarkDefaults(ppd_file_t *ppd)/* I - PPD file record */
return;
for (i = ppd->num_groups, g = ppd->groups; i > 0; i --, g ++)
ppd_defaults(g);
o = ppdFindOption(ppd, "PageSize");
for (i = 0; i < ppd->num_sizes; i ++)
ppd->sizes[i].marked = strcmp(ppd->sizes[i].name, o->defchoice) == 0;
ppd_defaults(ppd, g);
}
@@ -316,8 +309,8 @@ ppdMarkDefaults(ppd_file_t *ppd)/* I - PPD file record */
int /* O - Number of conflicts */
ppdMarkOption(ppd_file_t *ppd, /* I - PPD file record */
char *option, /* I - Keyword */
char *choice) /* I - Option name */
const char *option, /* I - Keyword */
const char *choice) /* I - Option name */
{
int i; /* Looping var */
ppd_option_t *o; /* Option pointer */
@@ -342,34 +335,46 @@ ppdMarkOption(ppd_file_t *ppd, /* I - PPD file record */
for (i = o->num_choices, c = o->choices; i > 0; i --, c ++)
if (strcmp(c->choice, choice) == 0)
c->marked = 1;
else if (o->ui != PPD_UI_PICKMANY)
c->marked = 0;
break;
if (strcmp(option, "PageSize") == 0 || strcmp(option, "PageRegion") == 0)
if (i)
{
/*
* Mark current page size...
* Option found; mark it and then handle unmarking any other options.
*/
for (i = 0; i < ppd->num_sizes; i ++)
ppd->sizes[i].marked = strcmp(ppd->sizes[i].name, choice) == 0;
c->marked = 1;
/*
* Unmark the current PageSize or PageRegion setting, as appropriate...
*/
if (o->ui != PPD_UI_PICKMANY)
for (i = o->num_choices, c = o->choices; i > 0; i --, c ++)
if (strcmp(c->choice, choice) != 0)
c->marked = 0;
if (strcmp(option, "PageSize") == 0)
if (strcmp(option, "PageSize") == 0 || strcmp(option, "PageRegion") == 0)
{
o = ppdFindOption(ppd, "PageRegion");
for (i = 0; i < o->num_choices; i ++)
o->choices[i].marked = 0;
}
else
{
o = ppdFindOption(ppd, "PageSize");
for (i = 0; i < o->num_choices; i ++)
o->choices[i].marked = 0;
/*
* Mark current page size...
*/
for (i = 0; i < ppd->num_sizes; i ++)
ppd->sizes[i].marked = strcmp(ppd->sizes[i].name, choice) == 0;
/*
* Unmark the current PageSize or PageRegion setting, as appropriate...
*/
if (strcmp(option, "PageSize") == 0)
{
o = ppdFindOption(ppd, "PageRegion");
for (i = 0; i < o->num_choices; i ++)
o->choices[i].marked = 0;
}
else
{
o = ppdFindOption(ppd, "PageSize");
for (i = 0; i < o->num_choices; i ++)
o->choices[i].marked = 0;
}
}
}
@@ -382,7 +387,8 @@ ppdMarkOption(ppd_file_t *ppd, /* I - PPD file record */
*/
static void
ppd_defaults(ppd_group_t *g) /* I - Group to default */
ppd_defaults(ppd_file_t *ppd, /* I - PPD file */
ppd_group_t *g) /* I - Group to default */
{
int i; /* Looping var */
ppd_option_t *o; /* Current option */
@@ -394,32 +400,10 @@ ppd_defaults(ppd_group_t *g) /* I - Group to default */
for (i = g->num_options, o = g->options; i > 0; i --, o ++)
if (strcmp(o->keyword, "PageRegion") != 0)
ppd_default(o);
ppdMarkOption(ppd, o->keyword, o->defchoice);
for (i = g->num_subgroups, sg = g->subgroups; i > 0; i --, sg ++)
ppd_defaults(sg);
}
/*
* 'ppd_default()' - Set the default choice for an option.
*/
static void
ppd_default(ppd_option_t *o) /* I - Option to default */
{
int i; /* Looping var */
ppd_choice_t *c; /* Current choice */
if (o == NULL)
return;
for (i = o->num_choices, c = o->choices; i > 0; i --, c ++)
if (strcmp(c->choice, o->defchoice) == 0)
c->marked = 1;
else
c->marked = 0;
ppd_defaults(ppd, sg);
}
+5 -2
Ver Arquivo
@@ -33,6 +33,9 @@
* Revision History:
*
* $Log: mime.c,v $
* Revision 1.14 1999/07/12 16:09:38 mike
* Fixed all constant arrays to use "const" modifier.
*
* Revision 1.13 1999/06/18 18:36:10 mike
* Fixed address to 44141 Airport View Drive...
*
@@ -177,8 +180,8 @@ mimeDelete(mime_t *mime) /* I - MIME database */
*/
mime_t * /* O - Updated MIME database */
mimeMerge(mime_t *mime, /* I - MIME database to add to */
char *pathname) /* I - Directory to load */
mimeMerge(mime_t *mime, /* I - MIME database to add to */
const char *pathname) /* I - Directory to load */
{
#if defined(WIN32) || defined(__EMX__)
HANDLE dir; /* Directory handle */
+6 -6
Ver Arquivo
@@ -114,16 +114,16 @@ typedef struct /**** MIME Database ****/
extern void mimeDelete(mime_t *mime);
#define mimeLoad(pathname) mimeMerge((mime_t *)0, (pathname));
extern mime_t *mimeMerge(mime_t *mime, char *pathname);
extern mime_t *mimeMerge(mime_t *mime, const char *pathname);
extern mime_t *mimeNew(void);
extern mime_type_t *mimeAddType(mime_t *mime, char *super, char *type);
extern int mimeAddTypeRule(mime_type_t *mt, char *rule);
extern mime_type_t *mimeFileType(mime_t *mime, char *pathname);
extern mime_type_t *mimeType(mime_t *mime, char *super, char *type);
extern mime_type_t *mimeAddType(mime_t *mime, const char *super, const char *type);
extern int mimeAddTypeRule(mime_type_t *mt, const char *rule);
extern mime_type_t *mimeFileType(mime_t *mime, const char *pathname);
extern mime_type_t *mimeType(mime_t *mime, const char *super, const char *type);
extern mime_filter_t *mimeAddFilter(mime_t *mime, mime_type_t *src, mime_type_t *dst,
int cost, char *filter);
int cost, const char *filter);
extern mime_filter_t *mimeFilter(mime_t *mime, mime_type_t *src, mime_type_t *dst,
int *num_filters);
+62 -14
Ver Arquivo
@@ -45,8 +45,8 @@
*/
int /* O - Number of options */
cupsAddOption(char *name, /* I - Name of option */
char *value, /* I - Value of option */
cupsAddOption(const char *name, /* I - Name of option */
const char *value, /* I - Value of option */
int num_options, /* I - Number of options */
cups_option_t **options) /* IO - Pointer to options */
{
@@ -128,8 +128,8 @@ cupsFreeOptions(int num_options, /* I - Number of options */
* 'cupsGetOption()' - Get an option value.
*/
char * /* O - Option value or NULL */
cupsGetOption(char *name, /* I - Name of option */
const char * /* O - Option value or NULL */
cupsGetOption(const char *name, /* I - Name of option */
int num_options,/* I - Number of options */
cups_option_t *options) /* I - Options */
{
@@ -152,7 +152,7 @@ cupsGetOption(char *name, /* I - Name of option */
*/
int /* O - Number of options found */
cupsParseOptions(char *arg, /* I - Argument to parse */
cupsParseOptions(const char *arg, /* I - Argument to parse */
int num_options, /* I - Number of options */
cups_option_t **options) /* O - Options found */
{
@@ -279,6 +279,9 @@ cupsMarkOptions(ppd_file_t *ppd, /* I - PPD file */
{
int i; /* Looping var */
int conflict; /* Option conflicts */
char *val, /* Pointer into value */
*ptr, /* Pointer into string */
s[255]; /* Temporary string */
conflict = 0;
@@ -286,12 +289,40 @@ cupsMarkOptions(ppd_file_t *ppd, /* I - PPD file */
for (i = num_options; i > 0; i --, options ++)
if (strcmp(options->name, "media") == 0)
{
if (ppdMarkOption(ppd, "PageSize", options->value))
conflict = 1;
if (ppdMarkOption(ppd, "InputSlot", options->value))
conflict = 1;
if (ppdMarkOption(ppd, "MediaType", options->value))
conflict = 1;
/*
* Loop through the option string, separating it at commas and
* marking each individual option.
*/
for (val = options->value; *val;)
{
/*
* Extract the sub-option from the string...
*/
for (ptr = s; *val && *val != ',' && (ptr - s) < (sizeof(s) - 1);)
*ptr++ = *val++;
*ptr++ = '\0';
if (*val == ',')
val ++;
/*
* Mark it...
*/
if (ppdMarkOption(ppd, "PageSize", s))
conflict = 1;
if (ppdMarkOption(ppd, "InputSlot", s))
conflict = 1;
if (ppdMarkOption(ppd, "MediaType", s))
conflict = 1;
if (ppdMarkOption(ppd, "EFMediaQualityMode", s)) /* EFI */
conflict = 1;
if (strcasecmp(s, "manual") == 0)
if (ppdMarkOption(ppd, "ManualFeed", "True"))
conflict = 1;
}
}
else if (strcmp(options->name, "sides") == 0)
{
@@ -299,15 +330,27 @@ cupsMarkOptions(ppd_file_t *ppd, /* I - PPD file */
{
if (ppdMarkOption(ppd, "Duplex", "None"))
conflict = 1;
if (ppdMarkOption(ppd, "EFDuplex", "None")) /* EFI */
conflict = 1;
if (ppdMarkOption(ppd, "KD03Duplex", "None")) /* Kodak */
conflict = 1;
}
else if (strcmp(options->value, "two-sided-long-edge") == 0)
{
if (ppdMarkOption(ppd, "Duplex", "NoTumble"))
if (ppdMarkOption(ppd, "Duplex", "DuplexNoTumble"))
conflict = 1;
if (ppdMarkOption(ppd, "EFDuplex", "DuplexNoTumble")) /* EFI */
conflict = 1;
if (ppdMarkOption(ppd, "KD03Duplex", "DuplexNoTumble")) /* Kodak */
conflict = 1;
}
else if (strcmp(options->value, "two-sided-short-edge") == 0)
{
if (ppdMarkOption(ppd, "Duplex", "Tumble"))
if (ppdMarkOption(ppd, "Duplex", "DuplexTumble"))
conflict = 1;
if (ppdMarkOption(ppd, "EFDuplex", "DuplexTumble")) /* EFI */
conflict = 1;
if (ppdMarkOption(ppd, "KD03Duplex", "DuplexTumble")) /* Kodak */
conflict = 1;
}
}
@@ -315,7 +358,12 @@ cupsMarkOptions(ppd_file_t *ppd, /* I - PPD file */
{
if (ppdMarkOption(ppd, "Resolution", options->value))
conflict = 1;
if (ppdMarkOption(ppd, "JCLResolution", options->value))
if (ppdMarkOption(ppd, "SetResolution", options->value))
/* Calcomp, Linotype, QMS, Summagraphics, Tektronix, Varityper */
conflict = 1;
if (ppdMarkOption(ppd, "JCLResolution", options->value)) /* HP */
conflict = 1;
if (ppdMarkOption(ppd, "CNRes_PGP", options->value)) /* Canon */
conflict = 1;
}
else if (ppdMarkOption(ppd, options->name, options->value))
+40 -30
Ver Arquivo
@@ -45,7 +45,7 @@
ppd_size_t * /* O - Size record for page or NULL */
ppdPageSize(ppd_file_t *ppd, /* I - PPD file record */
char *name) /* I - Size name */
const char *name) /* I - Size name */
{
int i; /* Looping var */
float w, l; /* Width and length of page */
@@ -57,9 +57,19 @@ ppdPageSize(ppd_file_t *ppd, /* I - PPD file record */
if (name != NULL)
{
if (strncmp(name, "Custom.", 7) == 0 &&
strcmp(ppd->sizes[0].name, "Custom") == 0)
if (strncmp(name, "Custom.", 7) == 0 && ppd->variable_sizes)
{
/*
* Find the custom page size...
*/
for (i = 0; i < ppd->num_sizes; i ++)
if (strcmp("Custom", ppd->sizes[i].name) == 0)
break;
if (i == ppd->num_sizes)
return (NULL);
/*
* Variable size; size name can be one of the following:
*
@@ -75,42 +85,42 @@ ppdPageSize(ppd_file_t *ppd, /* I - PPD file record */
if (strcasecmp(units, "in") == 0)
{
ppd->sizes[0].width = w * 72.0;
ppd->sizes[0].length = l * 72.0;
ppd->sizes[0].left = ppd->custom_margins[0];
ppd->sizes[0].bottom = ppd->custom_margins[1];
ppd->sizes[0].right = w * 72.0 - ppd->custom_margins[2];
ppd->sizes[0].top = l * 72.0 - ppd->custom_margins[3];
ppd->sizes[i].width = w * 72.0;
ppd->sizes[i].length = l * 72.0;
ppd->sizes[i].left = ppd->custom_margins[0];
ppd->sizes[i].bottom = ppd->custom_margins[1];
ppd->sizes[i].right = w * 72.0 - ppd->custom_margins[2];
ppd->sizes[i].top = l * 72.0 - ppd->custom_margins[3];
}
else if (strcasecmp(units, "cm") == 0)
{
ppd->sizes[0].width = w * 2.54 * 72.0;
ppd->sizes[0].length = l * 2.54 * 72.0;
ppd->sizes[0].left = ppd->custom_margins[0];
ppd->sizes[0].bottom = ppd->custom_margins[1];
ppd->sizes[0].right = w * 2.54 * 72.0 - ppd->custom_margins[2];
ppd->sizes[0].top = l * 2.54 * 72.0 - ppd->custom_margins[3];
ppd->sizes[i].width = w * 2.54 * 72.0;
ppd->sizes[i].length = l * 2.54 * 72.0;
ppd->sizes[i].left = ppd->custom_margins[0];
ppd->sizes[i].bottom = ppd->custom_margins[1];
ppd->sizes[i].right = w * 2.54 * 72.0 - ppd->custom_margins[2];
ppd->sizes[i].top = l * 2.54 * 72.0 - ppd->custom_margins[3];
}
else if (strcasecmp(units, "mm") == 0)
{
ppd->sizes[0].width = w * 25.4 * 72.0;
ppd->sizes[0].length = l * 25.4 * 72.0;
ppd->sizes[0].left = ppd->custom_margins[0];
ppd->sizes[0].bottom = ppd->custom_margins[1];
ppd->sizes[0].right = w * 25.4 * 72.0 - ppd->custom_margins[2];
ppd->sizes[0].top = l * 25.4 * 72.0 - ppd->custom_margins[3];
ppd->sizes[i].width = w * 25.4 * 72.0;
ppd->sizes[i].length = l * 25.4 * 72.0;
ppd->sizes[i].left = ppd->custom_margins[0];
ppd->sizes[i].bottom = ppd->custom_margins[1];
ppd->sizes[i].right = w * 25.4 * 72.0 - ppd->custom_margins[2];
ppd->sizes[i].top = l * 25.4 * 72.0 - ppd->custom_margins[3];
}
else
{
ppd->sizes[0].width = w;
ppd->sizes[0].length = l;
ppd->sizes[0].left = ppd->custom_margins[0];
ppd->sizes[0].bottom = ppd->custom_margins[1];
ppd->sizes[0].right = w - ppd->custom_margins[2];
ppd->sizes[0].top = l - ppd->custom_margins[3];
ppd->sizes[i].width = w;
ppd->sizes[i].length = l;
ppd->sizes[i].left = ppd->custom_margins[0];
ppd->sizes[i].bottom = ppd->custom_margins[1];
ppd->sizes[i].right = w - ppd->custom_margins[2];
ppd->sizes[i].top = l - ppd->custom_margins[3];
}
return (ppd->sizes);
return (ppd->sizes + i);
}
else
{
@@ -144,7 +154,7 @@ ppdPageSize(ppd_file_t *ppd, /* I - PPD file record */
float /* O - Width of page in points or 0.0 */
ppdPageWidth(ppd_file_t *ppd, /* I - PPD file record */
char *name) /* I - Size name */
const char *name) /* I - Size name */
{
ppd_size_t *size; /* Page size */
@@ -162,7 +172,7 @@ ppdPageWidth(ppd_file_t *ppd, /* I - PPD file record */
float /* O - Length of page in points or 0.0 */
ppdPageLength(ppd_file_t *ppd, /* I - PPD file */
char *name) /* I - Size name */
const char *name) /* I - Size name */
{
ppd_size_t *size; /* Page size */
+81 -66
Ver Arquivo
@@ -70,6 +70,8 @@
# define WRITE_BINARY "w" /* Open a binary file for writing */
#endif /* WIN32 || __EMX__ */
#define safe_free(p) if (p) free(p) /* Safe free macro */
#define PPD_KEYWORD 1 /* Line contained a keyword */
#define PPD_OPTION 2 /* Line contained an option name */
#define PPD_TEXT 4 /* Line contained human-readable text */
@@ -119,14 +121,14 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
* Free all strings at the top level...
*/
free(ppd->lang_encoding);
free(ppd->lang_version);
free(ppd->modelname);
free(ppd->ttrasterizer);
free(ppd->manufacturer);
free(ppd->product);
free(ppd->nickname);
free(ppd->shortnickname);
safe_free(ppd->lang_encoding);
safe_free(ppd->lang_version);
safe_free(ppd->modelname);
safe_free(ppd->ttrasterizer);
safe_free(ppd->manufacturer);
safe_free(ppd->product);
safe_free(ppd->nickname);
safe_free(ppd->shortnickname);
/*
* Free any emulations...
@@ -136,11 +138,11 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
{
for (i = ppd->num_emulations, emul = ppd->emulations; i > 0; i --, emul ++)
{
free(emul->start);
free(emul->stop);
safe_free(emul->start);
safe_free(emul->stop);
}
free(ppd->emulations);
safe_free(ppd->emulations);
}
/*
@@ -152,7 +154,7 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
for (i = ppd->num_groups, group = ppd->groups; i > 0; i --, group ++)
ppd_free_group(group);
free(ppd->groups);
safe_free(ppd->groups);
}
/*
@@ -160,14 +162,14 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
*/
if (ppd->num_sizes > 0)
free(ppd->sizes);
safe_free(ppd->sizes);
/*
* Free any constraints...
*/
if (ppd->num_consts > 0)
free(ppd->consts);
safe_free(ppd->consts);
/*
* Free any fonts...
@@ -176,9 +178,9 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
if (ppd->num_fonts > 0)
{
for (i = ppd->num_fonts, font = ppd->fonts; i > 0; i --, font ++)
free(*font);
safe_free(*font);
free(ppd->fonts);
safe_free(ppd->fonts);
}
/*
@@ -186,13 +188,13 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
*/
if (ppd->num_profiles > 0)
free(ppd->profiles);
safe_free(ppd->profiles);
/*
* Free the whole record...
*/
free(ppd);
safe_free(ppd);
}
@@ -215,7 +217,7 @@ ppd_free_group(ppd_group_t *group) /* I - Group to free */
i --, option ++)
ppd_free_option(option);
free(group->options);
safe_free(group->options);
}
if (group->num_subgroups > 0)
@@ -225,7 +227,7 @@ ppd_free_group(ppd_group_t *group) /* I - Group to free */
i --, subgroup ++)
ppd_free_group(subgroup);
free(group->subgroups);
safe_free(group->subgroups);
}
}
@@ -246,9 +248,9 @@ ppd_free_option(ppd_option_t *option) /* I - Option to free */
for (i = option->num_choices, choice = option->choices;
i > 0;
i --, choice ++)
free(choice->code);
safe_free(choice->code);
free(option->choices);
safe_free(option->choices);
}
}
@@ -285,7 +287,7 @@ ppd_get_group(ppd_file_t *ppd, /* I - PPD file */
ppd->num_groups ++;
memset(group, 0, sizeof(ppd_group_t));
strcpy(group->text, name);
strncpy(group->text, name, sizeof(group->text) - 1);
}
return (group);
@@ -324,7 +326,7 @@ ppd_get_option(ppd_group_t *group, /* I - Group */
group->num_options ++;
memset(option, 0, sizeof(ppd_option_t));
strcpy(option->keyword, name);
strncpy(option->keyword, name, sizeof(option->keyword) - 1);
}
return (option);
@@ -356,7 +358,7 @@ ppd_add_choice(ppd_option_t *option, /* I - Option */
option->num_choices ++;
memset(choice, 0, sizeof(ppd_choice_t));
strcpy(choice->choice, name);
strncpy(choice->choice, name, sizeof(choice->choice) - 1);
return (choice);
}
@@ -386,7 +388,7 @@ ppd_add_size(ppd_file_t *ppd, /* I - PPD file */
ppd->num_sizes ++;
memset(size, 0, sizeof(ppd_size_t));
strcpy(size->name, name);
strncpy(size->name, name, sizeof(size->name) - 1);
return (size);
}
@@ -449,14 +451,12 @@ ppdOpen(FILE *fp) /* I - File to read from */
* Either this is not a PPD file, or it is not a 4.x PPD file.
*/
if (string != NULL)
free(string);
safe_free(string);
return (NULL);
}
if (string != NULL)
free(string);
safe_free(string);
/*
* Allocate memory for the PPD file record...
@@ -599,9 +599,10 @@ ppdOpen(FILE *fp) /* I - File to read from */
ppd->num_profiles ++;
memset(profile, 0, sizeof(ppd_profile_t));
strcpy(profile->resolution, name);
strcpy(profile->media_type, text);
sscanf(string, "%f%f%f%f%f%f%f%f%f%f", &(profile->density),
strncpy(profile->resolution, name, sizeof(profile->resolution) - 1);
strncpy(profile->media_type, text, sizeof(profile->media_type) - 1);
sscanf(string, "%f%f%f%f%f%f%f%f%f%f%f", &(profile->density),
&(profile->gamma),
profile->matrix[0] + 0, profile->matrix[0] + 1,
profile->matrix[0] + 2, profile->matrix[1] + 0,
profile->matrix[1] + 1, profile->matrix[1] + 2,
@@ -646,25 +647,26 @@ ppdOpen(FILE *fp) /* I - File to read from */
CUPS_MSG_GENERAL))) == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
if ((option = ppd_get_option(group, "PageSize")) == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
if ((choice = ppd_add_choice(option, "Custom")) == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
strcpy(choice->text, cupsLangString(language, CUPS_MSG_VARIABLE));
strncpy(choice->text, cupsLangString(language, CUPS_MSG_VARIABLE),
sizeof(choice->text) - 1);
group = NULL;
option = NULL;
}
@@ -692,14 +694,14 @@ ppdOpen(FILE *fp) /* I - File to read from */
if ((option = ppdFindOption(ppd, "PageSize")) == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
if ((choice = ppdFindChoice(option, "Custom")) == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -813,7 +815,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (group == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -826,7 +828,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (option == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -843,19 +845,28 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (text[0])
{
strcpy(option->text, text);
strncpy(option->text, text, sizeof(option->text) - 1);
ppd_fix(option->text);
}
else
{
if (strcmp(name, "PageSize") == 0)
strcpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_SIZE));
strncpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_SIZE),
sizeof(option->text) - 1);
else if (strcmp(name, "MediaType") == 0)
strcpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_TYPE));
strncpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_TYPE),
sizeof(option->text) - 1);
else if (strcmp(name, "InputSlot") == 0)
strcpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_SOURCE));
strncpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_SOURCE),
sizeof(option->text) - 1);
else if (strcmp(name, "ColorModel") == 0)
strncpy(option->text, cupsLangString(language, CUPS_MSG_OUTPUT_MODE),
sizeof(option->text) - 1);
else if (strcmp(name, "Resolution") == 0)
strncpy(option->text, cupsLangString(language, CUPS_MSG_RESOLUTION),
sizeof(option->text) - 1);
else
strcpy(option->text, name);
strncpy(option->text, name, sizeof(option->text) - 1);
}
option->section = PPD_ORDER_ANY;
@@ -871,7 +882,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (group == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -887,7 +898,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (option == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -902,7 +913,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
else
option->ui = PPD_UI_PICKONE;
strcpy(option->text, text);
strncpy(option->text, text, sizeof(option->text) - 1);
option->section = PPD_ORDER_JCL;
group = NULL;
@@ -919,7 +930,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (group != NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -941,7 +952,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (group == NULL || subgroup != NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -954,7 +965,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (subgroup == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -965,7 +976,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
memset(subgroup, 0, sizeof(ppd_group_t));
ppd_decode(string);
ppd_fix(string);
strcpy(subgroup->text, string);
strncpy(subgroup->text, string, sizeof(subgroup->text) - 1);
}
else if (strcmp(keyword, "CloseSubGroup") == 0)
subgroup = NULL;
@@ -975,7 +986,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (sscanf(string, "%f%s%s", &order, name, keyword) != 3)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -1044,14 +1055,15 @@ ppdOpen(FILE *fp) /* I - File to read from */
for (i = 0; i < group->num_options; i ++)
if (strcmp(keyword, group->options[i].keyword) == 0)
{
strcpy(group->options[i].defchoice, string);
strncpy(group->options[i].defchoice, string,
sizeof(group->options[i].defchoice) - 1);
break;
}
group = NULL;
}
else
strcpy(option->defchoice, string);
strncpy(option->defchoice, string, sizeof(option->defchoice) - 1);
}
else if (strcmp(keyword, "UIConstraints") == 0 ||
strcmp(keyword, "NonUIConstraints") == 0)
@@ -1065,7 +1077,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (constraint == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -1073,14 +1085,14 @@ ppdOpen(FILE *fp) /* I - File to read from */
constraint += ppd->num_consts;
ppd->num_consts ++;
switch (sscanf(string, "%s%s%s%s", constraint->option1,
switch (sscanf(string, "%40s%40s%40s%40s", constraint->option1,
constraint->choice1, constraint->option2,
constraint->choice2))
{
case 0 : /* Error */
case 1 : /* Error */
ppdClose(ppd);
free(string);
safe_free(string);
break;
case 2 : /* Two options... */
@@ -1156,7 +1168,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (mask & PPD_TEXT)
{
strcpy(choice->text, text);
strncpy(choice->text, text, sizeof(choice->text) - 1);
ppd_fix(choice->text);
}
else if (strcmp(name, "True") == 0)
@@ -1164,7 +1176,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
else if (strcmp(name, "False") == 0)
strcpy(choice->text, "No");
else
strcpy(choice->text, name);
strncpy(choice->text, name, sizeof(choice->text) - 1);
if (strncmp(keyword, "JCL", 3) == 0)
ppd_decode(string); /* Decode quoted string */
@@ -1173,8 +1185,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
string = NULL; /* Don't free this string below */
}
if (string != NULL)
free(string);
safe_free(string);
}
#ifdef DEBUG
@@ -1262,7 +1273,7 @@ ppdOpenFd(int fd) /* I - File to read from */
ppd = ppdOpen(fp);
free(fp);
safe_free(fp);
}
else
ppd = NULL;
@@ -1276,7 +1287,7 @@ ppdOpenFd(int fd) /* I - File to read from */
*/
ppd_file_t * /* O - PPD file record */
ppdOpenFile(char *filename) /* I - File to read from */
ppdOpenFile(const char *filename) /* I - File to read from */
{
FILE *fp; /* File pointer */
ppd_file_t *ppd; /* PPD file record */
@@ -1350,7 +1361,11 @@ compare_strings(char *s, /* I - First string */
* Bounce out if *s and *t aren't both digits...
*/
if (!isdigit(*s) || !isdigit(*t))
if (isdigit(*s) && !isdigit(*t))
return (1);
else if (!isdigit(*s) && isdigit(*t))
return (-1);
else if (!isdigit(*s) || !isdigit(*t))
continue;
if (*s < *t)
+12 -11
Ver Arquivo
@@ -153,6 +153,7 @@ typedef struct /**** sRGB Color Profiles ****/
char resolution[41], /* Resolution or "-" */
media_type[41]; /* Media type of "-" */
float density, /* Ink density to use */
gamma, /* Gamma correction to use */
matrix[3][3]; /* Transform matrix */
} ppd_profile_t;
@@ -209,20 +210,20 @@ extern int ppdEmit(ppd_file_t *ppd, FILE *fp,
ppd_section_t section);
extern int ppdEmitFd(ppd_file_t *ppd, int fd,
ppd_section_t section);
extern int ppdIsMarked(ppd_file_t *ppd, char *keyword,
char *option);
extern int ppdIsMarked(ppd_file_t *ppd, const char *keyword,
const char *option);
extern void ppdMarkDefaults(ppd_file_t *ppd);
extern int ppdMarkOption(ppd_file_t *ppd, char *keyword,
char *option);
extern ppd_choice_t *ppdFindChoice(ppd_option_t *o, char *option);
extern ppd_choice_t *ppdFindMarkedChoice(ppd_file_t *ppd, char *keyword);
extern ppd_option_t *ppdFindOption(ppd_file_t *ppd, char *keyword);
extern int ppdMarkOption(ppd_file_t *ppd, const char *keyword,
const char *option);
extern ppd_choice_t *ppdFindChoice(ppd_option_t *o, const char *option);
extern ppd_choice_t *ppdFindMarkedChoice(ppd_file_t *ppd, const char *keyword);
extern ppd_option_t *ppdFindOption(ppd_file_t *ppd, const char *keyword);
extern ppd_file_t *ppdOpen(FILE *fp);
extern ppd_file_t *ppdOpenFd(int fd);
extern ppd_file_t *ppdOpenFile(char *filename);
extern float ppdPageLength(ppd_file_t *ppd, char *name);
extern ppd_size_t *ppdPageSize(ppd_file_t *ppd, char *name);
extern float ppdPageWidth(ppd_file_t *ppd, char *name);
extern ppd_file_t *ppdOpenFile(const char *filename);
extern float ppdPageLength(ppd_file_t *ppd, const char *name);
extern ppd_size_t *ppdPageSize(ppd_file_t *ppd, const char *name);
extern float ppdPageWidth(ppd_file_t *ppd, const char *name);
/*
* C++ magic...
+1 -1
Ver Arquivo
@@ -45,7 +45,7 @@ main(int argc, /* I - Number of command-line arguments */
char *argv[]) /* I - Command-line arguments */
{
int i, j, k, m, n; /* Looping vars */
char *filename; /* File to load */
const char *filename; /* File to load */
ppd_file_t *ppd; /* PPD file record */
ppd_size_t *size; /* Size record */
ppd_group_t *group; /* UI group */
+21 -21
Ver Arquivo
@@ -50,8 +50,8 @@
*/
static int compare(mime_type_t **, mime_type_t **);
static int checkrules(char *, FILE *, mime_magic_t *);
static int patmatch(char *, char *);
static int checkrules(const char *, FILE *, mime_magic_t *);
static int patmatch(const char *, const char *);
/*
@@ -59,9 +59,9 @@ static int patmatch(char *, char *);
*/
mime_type_t * /* O - New (or existing) MIME type */
mimeAddType(mime_t *mime, /* I - MIME database */
char *super, /* I - Super-type name */
char *type) /* I - Type name */
mimeAddType(mime_t *mime, /* I - MIME database */
const char *super, /* I - Super-type name */
const char *type) /* I - Type name */
{
mime_type_t *temp, /* New MIME type */
**types; /* New MIME types array */
@@ -125,7 +125,7 @@ mimeAddType(mime_t *mime, /* I - MIME database */
int /* O - 0 on success, -1 on failure */
mimeAddTypeRule(mime_type_t *mt, /* I - Type to add to */
char *rule) /* I - Rule to add */
const char *rule) /* I - Rule to add */
{
int num_values, /* Number of values seen */
op, /* Operation code */
@@ -497,14 +497,14 @@ mimeAddTypeRule(mime_type_t *mt, /* I - Type to add to */
* 'mimeFileType()' - Determine the type of a file.
*/
mime_type_t * /* O - Type of file */
mimeFileType(mime_t *mime, /* I - MIME database */
char *pathname) /* I - Name of file to check */
mime_type_t * /* O - Type of file */
mimeFileType(mime_t *mime, /* I - MIME database */
const char *pathname) /* I - Name of file to check */
{
int i; /* Looping var */
FILE *fp; /* File pointer */
mime_type_t **types; /* File types */
char *filename; /* Base filename of file */
const char *filename; /* Base filename of file */
/*
@@ -556,9 +556,9 @@ mimeFileType(mime_t *mime, /* I - MIME database */
*/
mime_type_t * /* O - Matching file type definition */
mimeType(mime_t *mime, /* I - MIME database */
char *super, /* I - Super-type name */
char *type) /* I - Type name */
mimeType(mime_t *mime, /* I - MIME database */
const char *super, /* I - Super-type name */
const char *type) /* I - Type name */
{
mime_type_t key, /* MIME type search key*/
*keyptr, /* Key pointer... */
@@ -620,7 +620,7 @@ compare(mime_type_t **t0, /* I - First type */
*/
static int /* O - 1 if match, 0 if no match */
checkrules(char *filename, /* I - Filename */
checkrules(const char *filename, /* I - Filename */
FILE *fp, /* I - File to check */
mime_magic_t *rules) /* I - Rules to check */
{
@@ -686,8 +686,8 @@ checkrules(char *filename, /* I - Filename */
bufptr = buffer + rules->offset - bufoffset;
while (n > 0)
if ((*bufptr >= 32 && *bufptr <= 126) ||
(*bufptr >= 8 && *bufptr <= 10) ||
*bufptr == 13 || *bufptr == 26)
(*bufptr >= 8 && *bufptr <= 13) ||
*bufptr == 26 || *bufptr == 27)
{
n --;
bufptr ++;
@@ -729,8 +729,8 @@ checkrules(char *filename, /* I - Filename */
while (n > 0)
if ((*bufptr >= 160 && *bufptr <= 254) ||
(*bufptr >= 32 && *bufptr <= 126) ||
(*bufptr >= 8 && *bufptr <= 10) ||
*bufptr == 13 || *bufptr == 26)
(*bufptr >= 8 && *bufptr <= 13) ||
*bufptr == 26 || *bufptr == 27)
{
n --;
bufptr ++;
@@ -906,9 +906,9 @@ checkrules(char *filename, /* I - Filename */
* 'patmatch()' - Pattern matching...
*/
static int /* O - 1 if match, 0 if no match */
patmatch(char *s, /* I - String to match against */
char *pat) /* I - Pattern to match against */
static int /* O - 1 if match, 0 if no match */
patmatch(const char *s, /* I - String to match against */
const char *pat) /* I - Pattern to match against */
{
/*
* Range check the input...
+5 -5
Ver Arquivo
@@ -45,7 +45,7 @@
* 'cupsUser()' - Return the current user's name.
*/
char * /* O - User name */
const char * /* O - User name */
cupsUser(void)
{
return ("WindowsUser");
@@ -56,7 +56,7 @@ cupsUser(void)
* 'cupsGetPassword()' - Get a password from the user...
*/
char * /* O - Password */
const char * /* O - Password */
cupsGetPassword(const char *prompt) /* I - Prompt string */
{
return (NULL);
@@ -72,7 +72,7 @@ cupsGetPassword(const char *prompt) /* I - Prompt string */
* 'cupsUser()' - Return the current user's name.
*/
char * /* O - User name */
const char * /* O - User name */
cupsUser(void)
{
struct passwd *pwd; /* User/password entry */
@@ -105,7 +105,7 @@ cupsUser(void)
* 'cupsGetPassword()' - Get a password from the user...
*/
char * /* O - Password */
const char * /* O - Password */
cupsGetPassword(const char *prompt) /* I - Prompt string */
{
return (getpass(prompt));
@@ -117,7 +117,7 @@ cupsGetPassword(const char *prompt) /* I - Prompt string */
* 'cupsServer()' - Return the hostname of the default server...
*/
char * /* O - Server name */
const char * /* O - Server name */
cupsServer(void)
{
FILE *fp; /* cupsd.conf file */
+89 -48
Ver Arquivo
@@ -64,7 +64,7 @@ static http_t *cups_server = NULL;
* Local functions...
*/
static char *cups_connect(char *name, char *printer, char *hostname);
static char *cups_connect(const char *name, char *printer, char *hostname);
/*
@@ -72,8 +72,8 @@ static char *cups_connect(char *name, char *printer, char *hostname);
*/
int /* O - 1 on success, 0 on failure */
cupsCancelJob(char *name, /* I - Name of printer or class */
int job) /* I - Job ID */
cupsCancelJob(const char *name, /* I - Name of printer or class */
int job) /* I - Job ID */
{
char printer[HTTP_MAX_URI], /* Printer name */
hostname[HTTP_MAX_URI], /* Hostname */
@@ -118,7 +118,7 @@ cupsCancelJob(char *name, /* I - Name of printer or class */
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, uri);
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-id", job);
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "job-id", job);
/*
* Do the request...
@@ -137,10 +137,10 @@ cupsCancelJob(char *name, /* I - Name of printer or class */
*/
ipp_t * /* O - Response data */
cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
ipp_t *request, /* I - IPP request */
char *resource, /* I - HTTP resource for POST */
char *filename) /* I - File to send or NULL */
cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
ipp_t *request, /* I - IPP request */
const char *resource, /* I - HTTP resource for POST */
const char *filename) /* I - File to send or NULL */
{
ipp_t *response; /* IPP response data */
char length[255]; /* Content-Length field */
@@ -149,10 +149,9 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
struct stat fileinfo; /* File information */
int bytes; /* Number of bytes read/written */
char buffer[8192]; /* Output buffer */
char *password, /* Password string */
plain[255], /* Plaintext username:password */
const char *password; /* Password string */
char plain[255], /* Plaintext username:password */
encode[255]; /* Encoded username:password */
char junk[8192]; /* Junk buffer for error data */
static char authstring[255] = "";
/* Authorization string */
@@ -218,8 +217,10 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
DEBUG_puts("cupsDoFileRequest: post...");
if (httpPost(http, resource))
if (httpPost(http, resource))
break;
{
httpReconnect(http);
continue;
}
/*
* Send the IPP data and wait for the response...
@@ -418,7 +419,7 @@ cupsGetClasses(char ***classes) /* O - Classes */
* 'cupsGetDefault()' - Get the default printer or class.
*/
char * /* O - Default printer or NULL */
const char * /* O - Default printer or NULL */
cupsGetDefault(void)
{
ipp_t *request, /* IPP Request */
@@ -490,8 +491,8 @@ cupsGetDefault(void)
* 'cupsGetPPD()' - Get the PPD file for a printer.
*/
char * /* O - Filename for PPD file */
cupsGetPPD(char *name) /* I - Printer name */
const char * /* O - Filename for PPD file */
cupsGetPPD(const char *name) /* I - Printer name */
{
FILE *fp; /* PPD file */
int bytes; /* Number of bytes read */
@@ -501,7 +502,6 @@ cupsGetPPD(char *name) /* I - Printer name */
resource[HTTP_MAX_URI]; /* Resource name */
static char filename[HTTP_MAX_URI]; /* Local filename */
char *tempdir; /* Temporary file directory */
struct stat fileinfo; /* File information */
/*
@@ -517,33 +517,29 @@ cupsGetPPD(char *name) /* I - Printer name */
#if defined(WIN32) || defined(__EMX__)
tempdir = "C:/WINDOWS/TEMP";
sprintf(filename, "%s/%s.ppd", tempdir, printer);
#else
if ((tempdir = getenv("TMPDIR")) == NULL)
tempdir = "/tmp";
sprintf(filename, "%s/%d.%s.ppd", tempdir, getuid(), printer);
#endif /* WIN32 || __EMX__ */
sprintf(filename, "%s/%s.ppd", tempdir, printer);
if (stat(filename, &fileinfo))
memset(&fileinfo, 0, sizeof(fileinfo));
/*
* And send a request to the HTTP server using "if-modified-since"...
* And send a request to the HTTP server...
*/
sprintf(resource, "/printers/%s.ppd", printer);
httpClearFields(cups_server);
httpSetField(cups_server, HTTP_FIELD_HOST, hostname);
httpSetField(cups_server, HTTP_FIELD_IF_MODIFIED_SINCE,
httpGetDateString(fileinfo.st_mtime));
httpGet(cups_server, resource);
switch (httpUpdate(cups_server))
{
case HTTP_OK : /* New file - get it! */
break;
case HTTP_NOT_MODIFIED : /* File hasn't been modified; use the current copy */
return (filename);
default :
return (NULL);
}
@@ -655,9 +651,9 @@ cupsGetPrinters(char ***printers) /* O - Printers */
*/
int /* O - Job ID */
cupsPrintFile(char *name, /* I - Printer or class name */
char *filename, /* I - File to print */
char *title, /* I - Title of job */
cupsPrintFile(const char *name, /* I - Printer or class name */
const char *filename, /* I - File to print */
const char *title, /* I - Title of job */
int num_options,/* I - Number of options */
cups_option_t *options) /* I - Options */
{
@@ -724,22 +720,17 @@ cupsPrintFile(char *name, /* I - Printer or class name */
*/
if (cupsGetOption("raw", num_options, options))
ippAddString(request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format",
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/vnd.cups-raw");
else
ippAddString(request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format",
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/octet-stream");
#if defined(WIN32) || defined(__EMX__)
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "requesting-user-name",
NULL, "WindowsUser");
#else
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "requesting-user-name",
NULL, cuserid(NULL));
#endif /* WIN32 || __EMX__ */
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
NULL, cupsUser());
if (title)
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL, title);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL, title);
/*
* Then add all options on the command-line...
@@ -812,7 +803,7 @@ cupsPrintFile(char *name, /* I - Printer or class name */
* String value(s)...
*/
DEBUG_printf(("cupsPrintJob: Adding string option \'%s\' with value \'%s\'...\n",
DEBUG_printf(("cupsPrintFile: Adding string option \'%s\' with value \'%s\'...\n",
option, val));
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, option, NULL, val);
@@ -828,7 +819,7 @@ cupsPrintFile(char *name, /* I - Printer or class name */
n2 = strtol(s + 1, NULL, 0);
ippAddRange(request, IPP_TAG_JOB, option, n, n2);
DEBUG_printf(("cupsPrintJob: Adding range option \'%s\' with value %d-%d...\n",
DEBUG_printf(("cupsPrintFile: Adding range option \'%s\' with value %d-%d...\n",
option, n, n2));
}
else if (*s == 'x')
@@ -842,14 +833,14 @@ cupsPrintFile(char *name, /* I - Printer or class name */
else
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, option, NULL, val);
DEBUG_printf(("cupsPrintJob: Adding resolution option \'%s\' with value %s...\n",
DEBUG_printf(("cupsPrintFile: Adding resolution option \'%s\' with value %s...\n",
option, val));
}
else
{
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, option, n);
DEBUG_printf(("cupsPrintJob: Adding integer option \'%s\' with value %d...\n",
DEBUG_printf(("cupsPrintFile: Adding integer option \'%s\' with value %d...\n",
option, n));
}
}
@@ -859,7 +850,7 @@ cupsPrintFile(char *name, /* I - Printer or class name */
* Boolean value...
*/
DEBUG_printf(("cupsPrintJob: Adding boolean option \'%s\' with value %d...\n",
DEBUG_printf(("cupsPrintFile: Adding boolean option \'%s\' with value %d...\n",
option, n));
ippAddBoolean(request, IPP_TAG_JOB, option, (char)n);
}
@@ -894,14 +885,64 @@ cupsPrintFile(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...
*/
static char * /* I - Printer name if success, NULL if fail */
cups_connect(char *name, /* I - Destination (printer[@host]) */
char *printer, /* O - Printer name */
char *hostname) /* O - Hostname */
static char * /* I - Printer name or NULL */
cups_connect(const char *name, /* I - Destination (printer[@host]) */
char *printer, /* O - Printer name */
char *hostname) /* O - Hostname */
{
char hostbuf[HTTP_MAX_URI];
/* Name of host */
-62
Ver Arquivo
@@ -1,62 +0,0 @@
%%BeginResource: procset hpgltops 1.0 0
%
% "$Id: HPGLprolog 312 1999-05-11 19:45:40Z mike $"
%
% HP-GL/2 filter procset for the Common UNIX Printing System (CUPS).
%
% This procset contains the basic drawing commands that are used to
% reduce output size. Note the 'MP' (make newpath) definition - this
% should be called 'NP' (newpath), but GhostScript uses the 'NP' name
% for 'noaccess put' in some of its font files...
%
% Copyright 1993-1999 Easy Software Products
%
% These coded instructions, statements, and computer programs are the
% property of Easy Software Products and are protected by Federal
% copyright law. Distribution and use rights are outlined in the file
% "LICENSE.txt" which should have been included with this file. If this
% file is missing or damaged please contact Easy Software Products
% at:
%
% Attn: CUPS Licensing Information
% Easy Software Products
% 44141 Airport View Drive, Suite 204
% Hollywood, Maryland 20636-3111 USA
%
% Voice: (301) 373-9603
% EMail: cups-info@cups.org
% WWW: http://www.cups.org
%
/MO { moveto } bind def
/LI { lineto } bind def
/FI { fill } bind def
/ST { stroke } bind def
/CP { closepath } bind def
/MP { newpath } bind def
%
% If you have more than 8 pens defined for your HP-GL/2 output you'll
% need to add P# definitions (# = pen number) to set the appropriate color.
% If you don't you'll get errors. The default 8 pens cover the primary
% colors (white, black, red, green, yellow, blue, magenta, cyan). Ditto
% for pen widths (W#).
%
% PC and PW commands in the input stream will define/redefine these
% appropriately, but some packages don't generate them...
%
/P0 { 1.0 1.0 1.0 setrgbcolor } bind def
/P1 { 0.0 0.0 0.0 setrgbcolor } bind def
/P2 { 1.0 0.0 0.0 setrgbcolor } bind def
/P3 { 0.0 1.0 0.0 setrgbcolor } bind def
/P4 { 1.0 1.0 0.0 setrgbcolor } bind def
/P5 { 0.0 0.0 1.0 setrgbcolor } bind def
/P6 { 1.0 0.0 1.0 setrgbcolor } bind def
/P7 { 0.0 1.0 1.0 setrgbcolor } bind def
/W0 { DefaultPenWidth PenScaling mul setlinewidth } bind def
/W1 { DefaultPenWidth PenScaling mul setlinewidth } bind def
/W2 { DefaultPenWidth PenScaling mul setlinewidth } bind def
/W3 { DefaultPenWidth PenScaling mul setlinewidth } bind def
/W4 { DefaultPenWidth PenScaling mul setlinewidth } bind def
/W5 { DefaultPenWidth PenScaling mul setlinewidth } bind def
/W6 { DefaultPenWidth PenScaling mul setlinewidth } bind def
/W7 { DefaultPenWidth PenScaling mul setlinewidth } bind def
%%EndResource
+2 -2
Ver Arquivo
@@ -48,8 +48,8 @@ clean:
#
install:
-$(MKDIR) $(DATADIR)
$(CP) $(FILES) $(DATADIR)
-$(MKDIR) $(DATADIR)/data
$(CP) $(FILES) $(DATADIR)/data
#
# End of "$Id$".
-1051
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+2 -2
Ver Arquivo
@@ -32,8 +32,8 @@ The following documentation for CUPS is available on this server:
<A HREF="sum.pdf">PDF</A> )
<LI>Software Administrators Manual (
<A HREF="sum.html">HTML</A> |
<A HREF="sum.pdf">PDF</A> )
<A HREF="sam.html">HTML</A> |
<A HREF="sam.pdf">PDF</A> )
<LI>Configuration Management Plan (
<A HREF="cmp.html">HTML</A> |
+45 -42
Ver Arquivo
@@ -243,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 m00 m01 m02 m10 m11 m12 m20 m21 m22
resolution/type density gamma m00 m01 m02 m10 m11 m12 m20 m21 m22
</PRE>
</UL>
<P>The <I>resolution</I> and <I>type</I> values may be &quot;-&quot; to act as a
wildcard. Otherwise they must match one of the <CODE>Resolution</CODE>
or <CODE>MediaType</CODE> attributes defined in the PPD file. </P>
<P>The <I>density</I> value defines a gamma and density adjustment
function such that: </P>
<P>The <I>density</I> and <I>gamma</I> values define gamma and density
adjustment function such that: </P>
<UL>
<PRE>
f(x) = d * x<SUP>1/d</SUP>
f(x) = density * x<SUP>gamma</SUP>
</PRE>
</UL>
<P>The <I>m00</I> through <I>m22</I> values define a 3x3 transformation
@@ -303,43 +303,44 @@ directive followed by its value. The following directives are
understood:
<CENTER>
<TABLE BORDER=1 WIDTH=90%>
<TR><TH WIDTH=25%>Directive</TH><TH>Description</TH></TR>
<TR><TD>AccessLog</TD><TD>Specifies the location of the access log file
(default &quot;logs/access_log&quot;).</TD></TR>
<TR><TD>Allow</TD><TD></TR>
<TR><TD>AuthClass</TD><TD></TR>
<TR><TD>AuthType</TD><TD></TR>
<TR><TD>BrowseAddress</TD><TD></TR>
<TR><TD>BrowseInterval</TD><TD></TR>
<TR><TD>BrowsePort</TD><TD></TR>
<TR><TD>BrowseTimeout</TD><TD></TR>
<TR><TD>Browsing</TD><TD></TR>
<TR><TD>DefaultCharset</TD><TD></TR>
<TR><TD>DefaultLanguage</TD><TD></TR>
<TR><TD>Deny</TD><TD></TR>
<TR><TD>DocumentRoot</TD><TD></TR>
<TR><TD>ErrorLog</TD><TD></TR>
<TR><TD>Group</TD><TD></TR>
<TR><TD>HostNameLookups</TD><TD></TR>
<TR><TD>ImplicitClasses</TD><TD></TR>
<TR><TD>KeepAlive</TD><TD></TR>
<TR><TD>KeepAliveTimeout</TD><TD></TR>
<TR><TH WIDTH=25%>Directive</TH><TH>Default</TH><TH>Description</TH></TR>
<TR><TD>AccessLog</TD><TD><TD>Specifies the location of the access log
file (default &quot;logs/access_log&quot;).</TD></TR>
<TR><TD>Allow</TD><TD><TD></TR>
<TR><TD>AuthClass</TD><TD><TD></TR>
<TR><TD>AuthType</TD><TD><TD></TR>
<TR><TD>BrowseAddress</TD><TD><TD></TR>
<TR><TD>BrowseInterval</TD><TD><TD></TR>
<TR><TD>BrowsePort</TD><TD><TD></TR>
<TR><TD>BrowseTimeout</TD><TD><TD></TR>
<TR><TD>Browsing</TD><TD><TD></TR>
<TR><TD>DefaultCharset</TD><TD><TD></TR>
<TR><TD>DefaultLanguage</TD><TD><TD></TR>
<TR><TD>Deny</TD><TD><TD></TR>
<TR><TD>DocumentRoot</TD><TD><TD></TR>
<TR><TD>ErrorLog</TD><TD><TD></TR>
<TR><TD>Group</TD><TD><TD></TR>
<TR><TD>HostNameLookups</TD><TD><TD></TR>
<TR><TD>ImplicitClasses</TD><TD><TD></TR>
<TR><TD>KeepAlive</TD><TD><TD></TR>
<TR><TD>KeepAliveTimeout</TD><TD><TD></TR>
<TR><TD>&lt;Location path&gt;
<BR> &lt;/Location&gt;</TD><TD></TR>
<TR><TD>LogLevel</TD><TD></TR>
<TR><TD>MaxLogSize</TD><TD></TR>
<TR><TD>MaxRequestSize</TD><TD></TR>
<TR><TD>Order</TD><TD></TR>
<TR><TD>PageLog</TD><TD></TR>
<TR><TD>Port</TD><TD></TR>
<TR><TD>RIPCache</TD><TD></TR>
<TR><TD>ServerAdmin</TD><TD></TR>
<TR><TD>ServerName</TD><TD></TR>
<TR><TD>ServerRoot</TD><TD></TR>
<TR><TD>SystemGroup</TD><TD></TR>
<TR><TD>TempDir</TD><TD></TR>
<TR><TD>Timeout</TD><TD></TR>
<TR><TD>User</TD><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>
@@ -584,8 +585,8 @@ printer-more-info</CODE>, and <CODE>device-uri</CODE> attributes are
required when initially adding a printer and optional when modifying a
printer. </P>
<P>A PPD file or System V interface script may follow the IPP request
body. Note that the printer will be disabled until a valid interface
script or PPD file is sent. </P>
body. If a valid interface script or PPD file is not provided then the
printer is treated as a generic PostScript device. </P>
<P>Add printer will return <CODE>ipp-ok</CODE>, <CODE>ipp-not-authorized</CODE>
, <CODE>ipp-bad-request</CODE>, or <CODE>ipp-attributes</CODE>. </P>
<H3><A NAME=4_7_4>4.7.4 Delete Printer (CUPS_DELETE_PRINTER = 0x4004)</A>
@@ -661,6 +662,8 @@ lpadmin</CODE>, and <CODE>reject</CODE> commands reside here. </DD>
<DT>/usr/sbin </DT>
<DD>The <CODE>lpc</CODE> and <CODE>cupsd</CODE> commands resize here. </DD>
<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>
+137 -134
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:19990624171515Z)/Title(DRAFT - CUPS Interface Design Description)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990730151722Z)/Title(DRAFT - CUPS Interface Design Description)/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
@@ -325,8 +325,8 @@
237 0 obj<</Subtype/Link/Rect[168.8 435.6 221.6 448.6]/Border[0 0 0]/Dest[436 0 R/XYZ null 547 0]>>endobj
238 0 obj<</Subtype/Link/Rect[144.0 422.4 168.8 435.4]/Border[0 0 0]/Dest[436 0 R/XYZ null 215 0]>>endobj
239 0 obj<</Subtype/Link/Rect[168.8 422.4 216.7 435.4]/Border[0 0 0]/Dest[436 0 R/XYZ null 215 0]>>endobj
240 0 obj<</Subtype/Link/Rect[144.0 409.2 168.8 422.2]/Border[0 0 0]/Dest[442 0 R/XYZ null 682 0]>>endobj
241 0 obj<</Subtype/Link/Rect[168.8 409.2 224.7 422.2]/Border[0 0 0]/Dest[442 0 R/XYZ null 682 0]>>endobj
240 0 obj<</Subtype/Link/Rect[144.0 409.2 168.8 422.2]/Border[0 0 0]/Dest[442 0 R/XYZ null 641 0]>>endobj
241 0 obj<</Subtype/Link/Rect[168.8 409.2 224.7 422.2]/Border[0 0 0]/Dest[442 0 R/XYZ null 641 0]>>endobj
242 0 obj<</Subtype/Link/Rect[72.0 382.8 80.2 395.8]/Border[0 0 0]/Dest[445 0 R/XYZ null 818 0]>>endobj
243 0 obj<</Subtype/Link/Rect[80.2 382.8 123.9 395.8]/Border[0 0 0]/Dest[445 0 R/XYZ null 818 0]>>endobj
244 0 obj<</Subtype/Link/Rect[123.9 382.8 171.0 395.8]/Border[0 0 0]/Dest[445 0 R/XYZ null 818 0]>>endobj
@@ -640,7 +640,7 @@
379 0 obj<</D[436 0 R/XYZ null 800 null]>>endobj
380 0 obj<</D[436 0 R/XYZ null 547 null]>>endobj
381 0 obj<</D[436 0 R/XYZ null 215 null]>>endobj
382 0 obj<</D[442 0 R/XYZ null 682 null]>>endobj
382 0 obj<</D[442 0 R/XYZ null 641 null]>>endobj
383 0 obj<</D[445 0 R/XYZ null 818 null]>>endobj
384 0 obj<</D[445 0 R/XYZ null 737 null]>>endobj
385 0 obj<</D[463 0 R/XYZ null 458 null]>>endobj
@@ -794,13 +794,11 @@ endobj
424 0 obj<</Type/Page/Parent 408 0 R/Contents 425 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
425 0 obj<</Length 426 0 R/Filter/FlateDecode>>stream
xÚ-‹Á
Â0DïûsÔC´›”êµZ Þ´® q#ŒšöÿшÌÀ03¼71ª¯®)öÚ-û5˜!ìV¶‚\gÝÐöƒíùpÂ>MšÃÅ+:ã-•ð9¾¦øLs¹“) ù“uYjË‹¿n1hЬÉëX®Ð‘>H.#ùendstream
endobj
426 0 obj
123
endobj
427 0 obj<</Type/Page/Parent 408 0 R/Contents 428 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>>>endobj
428 0 obj<</Length 429 0 R/Filter/FlateDecode>>stream
Â0DïûsÔC´›”êµZ Þ´® q#ŒšöÿшÌÀ03¼71ª¯®)öÚ-û5˜!ìV¶‚\gÝÐöƒíùpÂ>MšÃÅ+:ã-•ð9¾¦øLs¹“) ù“uYjË‹¿n1hЬÉëX®Ð‘>H.#ùendstream
endobj
426 0 obj
123
endobj
427 0 obj<</Type/Page/Parent 408 0 R/Contents 428 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>>>endobj
428 0 obj<</Length 429 0 R/Filter/FlateDecode>>stream
VÑn0}ÏW\õ©•
@@ -816,29 +814,30 @@ endobj
430 0 obj<</Type/Page/Parent 408 0 R/Contents 431 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>/Annots 32 0 R>>endobj
431 0 obj<</Length 432 0 R/Filter/FlateDecode>>stream
xÚ­WËrÛ6Ýû+n™Ò†4)Éòc¦ 5¶;^Äqcµ‹Æ]@$(¡& …€ì8qÿ½ç”E1²2îTö"qîëà> O{ ÅøKh0âÿ´Üûe²·~LÉ êÓ$ÇÚè(á¯Yo
§…¨n=Ü9o¼÷‚Þ]¼;s‘Ê®ÊÜ‚§f¹õ>/°Ç€Ô˜“5<}
üb|9Žh\޳ާ¹.
}¯ª™ƒ¶ì`“j),‡Œ]!#kåéwËÍæY¥+ª—…4'>b:öƒ4z²±2™ð§DètœüLÎ
ö¯õ+]_9uôÏB¯ˆðK@ŒÃ?ƒ.n¥· Ã=t×È]ãðøQgÖ‰‚$‰DdT
‹½y$
ûÂ"!
Þ½“àü5káínl3í¸oN¿œÉÏ oáqL«O Lªƒuži)xP!«¶}§Ü¢V•ÓBþYc!<ëú—»¹š:bw¢XÊëÚ¾\ ñ½\¨Ð©ðœ´âÙÀ>%oÕO¼þó‘
=S¦ñå)ýµ]?xÃ2Hñ
¢„JUÊÈ>,¤y=ùÐ!%‰†ƒãhÄÀÉ\¶`”«BR&sUáÁb­–©žUê‹Ìüš‡‰*£TWFkHçðI×TêZRá$ñj|ýö€ül#z«ËRV–€iïnÖóPcEmé^Ù¹³·ÐKè¾é¯‚›×”ÎE-R+ëˆØÑ©HoM!Ìœ77JEESIKW…uÊ$TÁá¼"«; «ª%Væh0N°b·t
}&Ò9Uº
§…¨n=Ü9o¼÷‚Þ]¼;s‘Ê®ÊÜ‚§f¹õ>/°Ç€Ô˜“5<}
üb|9Žh\޳ާ¹.
}¯ª™ƒ¶ì`“j),‡Œ]!#kåéwËÍæY¥+ª—…4'>b:öƒ4z²±2™ð§DètœüLÎ
ö¯õ+]_9uôÏB¯ˆðK@ŒÃ?ƒ.n¥· Ã=t×È]ãðøQgÖ‰‚$‰DdT
‹½y$
ûÂ"!
Þ½“àü5káínl3í¸oN¿œÉÏ oáqL«O Lªƒuži)xP!«¶}§Ü¢V•ÓBþYc!<ëú—»¹š:bw¢XÊëÚ¾\ ñ½\¨Ð©ðœ´âÙÀ>%oÕO¼þó‘
=S¦ñå)ýµ]?xÃ2Hñ
™÷v‰ü<}ÿHËJÔtù~â%Öm7ärk7ÞU5úåžò-r-Ðs¶ƒrlwq®º›:(´¾¥@´6ø‚Žfïu}KÓ+Ѭ3×™Dt‰ˆ¦j¢U*Q¡=­•ÚØÐ(t“|TÖ+ÊUm|£ÜœCá ï£ä9Ô÷Ýöîÿ›C¸Xíe“¨T3—èE“è…c´o æÛÉPËE-
šFoô²N%ÇØq<“ á»#,¢óí# ŽŒmêë¦óœK☧bdÏ'-j=«EÉë¤]ä[r¡ƒÅª´%³)G–AråF¾Ä<[ÏhEÊR¹„ˆDpZ2èíïW×+û™ÂF£xÖIu­seè“jHWˆç:­ÕÂÒwJÈžJã^0)çÈ—lg“½8ŠqnâK—¿Ò Ž‘u T©¤’õ°y*èÚŸªÖ)š$ÍNsŠ~ÇìMïêê¬úÕ5
’éÉd
’éÉd
jòó^µü€W‡G|íÕ| QÒ0éãÄ· ßFp
7£îˆÔ³'¢Æ™Æ k"Óù¥Fõ¿:ˆãÁI‹“gCÃò­Ï­€|”îᙸր’ŽFãt Pâ>bwÀÛà‡|^Þ‰o!JêãïÄ·À#evã[àÐ0[xÞ<6u÷\¢£ö]¦]û
L}_ø=†ïÃhàê÷ÉtÜlnowã"Y\iž­K†Û|]][[¹Y†Ž*ï0‹ Ÿ{É1¯§Këú9œå¶´®‹©Dójü9jT&ƒGnÜž~ŸO(ô]0
¹@k˜ImFXGÈ¢áa?fÉ¿:ãç~!iÛû¥ÿ·ùendstream
¹@k˜ImFXGÈ¢áa?fÉ¿:ãç~!iÛû¥ÿ·ùendstream
endobj
432 0 obj
1236
endobj
433 0 obj<</Type/Page/Parent 408 0 R/Contents 434 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
endobj
432 0 obj
1236
endobj
433 0 obj<</Type/Page/Parent 408 0 R/Contents 434 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
434 0 obj<</Length 435 0 R/Filter/FlateDecode>>stream
ì…–(› ‰Ôò#¶ÿ}gHÑÚ4n à ߼y3Ô·Qüep›C1ƒ²ýº]?ÞC–Á²Æ7³»izËj\¤Ó4K3(]gEc¹þ°üŠ¦ÓƒiRܧ32]n„k`¯+g9tZ½ŠŠ`P*ùʵJv
ÚF~ç¯ÝKI%;Øæàˆ”‡äÈI÷p-½ÒJ•ò²ØkØÈÞuöÇÿ}gvmNr¤B¬½3»ß|óÍ _G Lð“À<…ly=ú¸½}X@’ÀºÄÙÝ4¾ƒu1ÎâiœÄ ä®1¢²\¿YAÓioe‹xF¦ë0`¬r ÌâïÆYV/¢àäJ¾pm„’ ]ÅA•`wJ¥ëwáÔ ,┎EPQ’ѺÓ^C÷c£œÎù[{l8žg,¿Õ¬¾D‘ÿ `…d–îö¾ãj^€UFƒÀ1¼_Œ7ˆá±DÈíK0®i”¶Æ[ áœBhžÛê6ž Vu€[ü¥§­
Ôì›Ö¾¼ˆüÿQ:‹§'þSÏÿ“ŽU÷ªܼž…Rgò,
RYº)ðü¸‚€Šž™õ/Ï)êÂ.z k?RÞaË%×ÁPÈA°;¦‹=ÓÈ_ ½d®²ðÂ*ç9/Yeøµh³­*xõ›«7×$GP·ölÇ«9e0jßåPÓ¹ ýÁ„O#c˜gP#ú^fn)ʆ_œ ì)ggIËè7¸ uÞ¢¸ùÔG¾Ò
@@ -888,14 +887,16 @@ endobj
443 0 obj<</Length 444 0 R/Filter/FlateDecode>>stream
xÚ­•ßOÛ0ÇßûWœØ <4øG~uBHŒª´I¬
o¼˜Ô¡Þ’¸KÜ2þ{Îqh7H*M­¢ÈþÞÝÇç»Ë¯‚?
endobj
444 0 obj
630
endobj
445 0 obj<</Type/Page/Parent 408 0 R/Contents 446 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
<´ÿ´}IF§×>P
I,‚0æ^ Éòx!«­¬æZ›“äÇè* íî1¿æ{Â(BJC|gÄcPIXtˆ©Oöêö¨9¡ïªÙ‚†Ü ÐçÚÈâ¦Ò›ui¡Å`R§JÚ©nI}îù–4‘ÅzªªJyþpJ§JÙ©n)Ç
©7}·N#T¦tꡔꖒpËxWËž4ŸC[õ@ÀnuÓI M3ì²À§–•{Ça]©ÒȪöR]f}ßuÆ|âj9YÉ¿•©\¾Õª65è {WWPh ™«R6K‹ËÙ Œüm<¸ÔE!KÓnÖFTž”Y±®õ¦\Âýñѧ£û ¡i{íéJT"ÅÀ^»ÁBWµW"]A©ËñC.ÊŸcç·Þ;.E!-‰°¨™zÜTÂ(]ÂRU25j+!Óy®ŸäžA¡éVäé=°ÛRåã¢q
‹è˜£õò³Ë_Ðæ/$˜¼1'wújeE }E˜`».ë´Rk‹õqåø”PÚNͱyþ©…?¦*Ÿ43õl*3±ÉÍ­»â&mçoN}vÚɣx7w¹0b:µÃÜ«]OñÐwÕ7•[•Ê»ù¬'r0Gº#A6²ï»K›•™î ÊãÆ¢S¿ý5™þªSÑ_œÆ”ƒS¿˜4gý†½Û^6‰˜_NÝ–½~ÑÏþGÙ±¦X†–Sw— ÚŽ]adOÔ¦Pg£QwödÜö$åÃüâ:1\ÞÝ.`fS‰TÎ õX›±1¶†ãÖ’»ä“ç;yõ Òͺ^îæ<êûè-$/Šendstream
endobj
444 0 obj
695
endobj
445 0 obj<</Type/Page/Parent 408 0 R/Contents 446 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
`—Íx>i¡J^À¦Ä‡=OEý°û×i—^äÔ‹eä9½GáKU½Èô§Ð°URËTnB”¶r?öB#ßÄ•¼jå×ÀKˆI®!->ïž¶›-ÔN˜Ê²©Îeé ‘‰=o
446 0 obj<</Length 447 0 R/Filter/FlateDecode>>stream
–Ár£8†ï~Š>:I` [µ‡q&³åª­-ïÄsËE€¼f#VˆÄ~ûmIàØTª\ýêþôwKâ¿V üÒãl½›=~‹Æ°ÛãH¸
`—Íx>i¡J^À¦Ä‡=OEý°û×i—^äÔ‹eä9½GáKU½Èô§Ð°URËTnB”¶r?öB#ßÄ•¼jå×ÀKˆI®!->ïž¶›-ÔN˜Ê²©Îeé ‘‰=o
@@ -926,19 +927,21 @@ endobj
450 0 obj
1407
endobj
˜Ks£8…÷ùZÎT5n$ñòb“¤=®N:“¸+kbËD=Ñ<Ò_?Wº@ æ¡JUl£Ì9\]ùû%.üQ²;^\n/Þo<B)ÙˆOIñUD¶û?Xà9,ÿÜ~»ðB8]©4Q×Çc.ù‹ìÉTEv8 ¯¹¥¦\âP¾bš£ÀîÊ…[êþ=üC¼hå’ ðVñBxËùÊ#… #ìÚïX¸¥˜¹nG3õhðA«÷]8`ÔG iO}]ÝŠ½ŒÏä߉WQ]]c;>§’Ä“øPz©Pìœú¦ž?‡JQ
ïÊãDÌ»í¯iëvÈáßœÛÈ¢Ûs0º4ºýF£Û~6n‡ ÜöOݾ®óTü<óú¾YEJ™%©pJ¹û»Ú«úùšQïGp²]­!k[kHךï5Ú‡EüTûǧQª´®¤Êz|T…ü­²*†'›í ”]%wð¡èp"3^•N.
451 0 obj<</Type/Page/Parent 408 0 R/Contents 452 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R>>>>>>endobj
452 0 obj<</Length 453 0 R/Filter/FlateDecode>>stream
˜Ks£8…÷ùZÎT5n$ñòb“¤=®N:“¸+kbËD=Ñ<Ò_?Wº@ æ¡JUl£Ì9\]ùû%.üQ²;^\n/Þo<B)ÙˆOIñUD¶û?Xà9,ÿÜ~»ðB8]©4Q×Çc.ù‹ìÉTEv8 ¯¹¥¦\âP¾bš£ÀîÊ…[êþ=üC¼hå’ ðVñBxËùÊ#… #ìÚïX¸¥˜¹nG3õhðA«÷]8`ÔG iO}]ÝŠ½ŒÏä߉WQ]]c;>§’Ä“øPz©Pìœú¦ž?‡JQ
ïÊãDÌ»í¯iëvÈáßœÛÈ¢Ûs0º4ºýF£Û~6n‡ ÜöOݾ®óTü<óú¾YEJ™%©pJ¹û»Ú«úùšQïGp²]­!k[kHךï5Ú‡EüTûǧQª´®¤Êz|T…ü­²*†'›í ”]%wð¡èp"3^•N.
ÎÁ‡†Fßhô¯ÃæžÝÈá´·ú}±žöÉùú¿U90@d >e5â烞³”¶óÒLßYLûùæú94m'÷»åmÑNdmíDzÂNÞ,oœ2°³—r·q)Wö¬4ªtbaˆ{`tFÉ£(ËL⼫ÅHGÖ6Ò‘tNÛÚaIŒ÷Åfuœn®Ãc‘t4Dú‹šl£nÇ©i+غ[Ý£YÛ(Bz<ŠXÛBsaÄzad:Èûfýé¹q“åе•)¸Ñ®OäP@¸°‚‘»¡ÐIE–ÏYÛgŽôø3g‡â7B!/8=ú$ô¬ïÉ4ÇÉ3 +:)âcI [çi¢ñ{K
Gf»—Õ‚tskF:sáVg¥¥ÏÁtC£ô7º‘ÎÚ‰ dÖëSñ7Ç8Ç{©êlo^ûE°Qu"+‘ˆ¢$‰|†T/‚¤âP½#ϪªÔñ)dòµK•Ê5’«Rj³J¢æ\=AàTüFxóSÛ˜+øš…”ò]û”BÖºrÜé”òÖMJq×u¸Û«›¬„ªx| ½És9-
Ñ‘ÇE\)MöÍ49í‰RëÙ„¬­'HOxâ‡èˆŽôV­O*w61~Lú§vl>³‡Øxh©&µg<¤äý5L•Y
ÎÁ‡†Fßhô¯ÃæžÝÈá´·ú}±žöÉùú¿U90@d >e5â烞³”¶óÒLßYLûùæú94m'÷»åmÑNdmíDzÂNÞ,oœ2°³—r·q)Wö¬4ªtbaˆ{`tFÉ£(ËL⼫ÅHGÖ6Ò‘tNÛÚaIŒ÷Åfuœn®Ãc‘t4Dú‹šl£nÇ©i+غ[Ý£YÛ(Bz<ŠXÛBsaÄzad:Èûfýé¹q“åе•)¸Ñ®OäP@¸°‚‘»¡ÐIE–ÏYÛgŽôø3g‡â7B!/8=ú$ô¬ïÉ4ÇÉ3 +:)âcI [çi¢ñ{K
óÃv>/Ë5¬µ\COÈõx3Ÿ9ÌgÞkWoeQ¨Â4ž“5níV÷p|F?ó¬—Xd­ëÚÐuM]T€ú^šÝ‰$®ä«˜Õ/3ݯN뿎Oë§ÐE–ú‘µÕô¸~M¹{q^/âîêãU·«íÔS=u™>¤÷غ²`“Íü\«©¤nX‚#Ä!tÁ„еžÈÚN¤Ç'õƒæÖ=n_
endobj
453 0 obj
)`srm'EP¨JÿÐîH‡MÂÛ(ÙA;àìRµûï‡,Ǻ¯m]dH×¹ÞçÁÖçG6Ò/ô®{z½wiWb‹-²¶-Òã-ú«0T¿¨_ê
ˆ_ó3wq`tÌ:@ê|^¼Ù—ÛM/ƒÚÎ.OüòÒ>.²Õï¥Ë=<¶Gù»ßw>É}õbº¥Td ¼µÝ±…mr.ïwÃ.8-¶»a—›Ã)ãq#,€Ðz¡ñˆû*½ø¡c§Ž¦ØNþÖ±S©Þõ¯7³~pëø4¨õêÁÇÃóý&jŽrNB†¿ð<ü½ÙBÌ]}½„ð‡¹njóZ”2ÉôË®y›%Ž>ÑiÎôàÒæ¬‡¸Ô=æٛy¡ßÉËþ½ø×Àþ[endstream
endobj
453 0 obj
1348
endobj
454 0 obj<</Type/Page/Parent 408 0 R/Contents 455 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
454 0 obj<</Type/Page/Parent 408 0 R/Contents 455 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
455 0 obj<</Length 456 0 R/Filter/FlateDecode>>stream
xÚÅ—Msâ8†ïüŠ>fªbdÉ_‡=LÈdf*Cm–°µEÕ\#@;`¼¶ÿߖÚ$ x÷’JʆæmÙïÓrKþ§ÇáÙÿ|Ù»õ>ÞIàFS9D‰ðM®D$=ÅF÷dŒ9UÙöq£M>·QÎB
@@ -1004,7 +1007,7 @@ endobj
i©‡¿6b>øæÅø7þÖT=XBl“GÔAø>BƒnVVîs‚ƒ´>U8Œ«ž»‹ÒÈôÒßG3jîŸk?6
Ì1¢ó7EdçEnˆÜÐQêA«Åt]ÐXæ¶-e!SjcRaþ8ÛØ’Ø™}ý^-
endstream
endstream
endobj
468 0 obj
154
endobj
@@ -1474,101 +1477,101 @@ xref
0000029804 00000 n
0000029910 00000 n
0000030016 00000 n
0000030440 00000 n
0000030546 00000 n
0000030652 00000 n
0000030758 00000 n
0000030864 00000 n
0000030970 00000 n
0000031076 00000 n
0000031182 00000 n
0000031288 00000 n
0000031394 00000 n
0000031500 00000 n
0000031606 00000 n
0000031712 00000 n
0000031818 00000 n
0000031924 00000 n
0000032030 00000 n
0000032136 00000 n
0000032242 00000 n
0000032348 00000 n
0000032454 00000 n
0000032560 00000 n
0000032666 00000 n
0000032769 00000 n
0000032872 00000 n
0000032975 00000 n
0000033079 00000 n
0000033181 00000 n
0000033284 00000 n
0000034654 00000 n
0000034758 00000 n
0000034863 00000 n
0000034967 00000 n
0000035072 00000 n
0000035122 00000 n
0000035156 00000 n
0000035190 00000 n
0000035785 00000 n
0000035834 00000 n
0000035883 00000 n
0000035932 00000 n
0000035981 00000 n
0000036030 00000 n
0000036079 00000 n
0000036128 00000 n
0000036177 00000 n
0000036226 00000 n
0000036275 00000 n
0000036324 00000 n
0000036373 00000 n
0000036422 00000 n
0000036471 00000 n
0000036520 00000 n
0000036569 00000 n
0000036618 00000 n
0000036667 00000 n
0000036716 00000 n
0000036765 00000 n
0000036814 00000 n
0000036863 00000 n
0000036912 00000 n
0000036961 00000 n
0000037010 00000 n
0000037059 00000 n
0000037108 00000 n
0000037157 00000 n
0000037206 00000 n
0000037255 00000 n
0000037304 00000 n
0000037353 00000 n
0000037402 00000 n
0000037451 00000 n
0000037500 00000 n
0000037549 00000 n
0000037598 00000 n
0000037647 00000 n
0000037696 00000 n
0000037745 00000 n
0000037794 00000 n
0000037843 00000 n
0000037892 00000 n
0000037941 00000 n
0000038218 00000 n
0000038370 00000 n
0000044766 00000 n
0000044788 00000 n
0000044901 00000 n
0000045003 00000 n
0000045023 00000 n
0000045163 00000 n
0000046071 00000 n
0000046092 00000 n
0000046205 00000 n
0000046396 00000 n
0000030122 00000 n
0000030228 00000 n
0000030334 00000 n
0000030440 00000 n
0000030546 00000 n
0000030652 00000 n
0000030758 00000 n
0000030864 00000 n
0000030970 00000 n
0000031076 00000 n
0000031182 00000 n
0000031288 00000 n
0000031394 00000 n
0000031500 00000 n
0000031606 00000 n
0000031712 00000 n
0000031818 00000 n
0000031924 00000 n
0000032030 00000 n
0000032136 00000 n
0000032242 00000 n
0000032348 00000 n
0000032454 00000 n
0000032560 00000 n
0000032666 00000 n
0000032769 00000 n
0000032872 00000 n
0000032975 00000 n
0000033079 00000 n
0000033181 00000 n
0000033284 00000 n
0000034654 00000 n
0000034758 00000 n
0000034863 00000 n
0000034967 00000 n
0000035072 00000 n
0000035122 00000 n
0000035156 00000 n
0000035190 00000 n
0000035785 00000 n
0000035834 00000 n
0000035883 00000 n
0000035932 00000 n
0000035981 00000 n
0000036030 00000 n
0000036079 00000 n
0000036128 00000 n
0000036177 00000 n
0000036226 00000 n
0000036275 00000 n
0000036324 00000 n
0000036373 00000 n
0000036422 00000 n
0000036471 00000 n
0000036520 00000 n
0000036569 00000 n
0000036618 00000 n
0000036667 00000 n
0000036716 00000 n
0000036765 00000 n
0000036814 00000 n
0000036863 00000 n
0000036912 00000 n
0000036961 00000 n
0000037010 00000 n
0000037059 00000 n
0000037108 00000 n
0000037157 00000 n
0000037206 00000 n
0000037255 00000 n
0000037304 00000 n
0000037353 00000 n
0000037402 00000 n
0000037451 00000 n
0000037500 00000 n
0000037549 00000 n
0000037598 00000 n
0000037647 00000 n
0000037696 00000 n
0000037745 00000 n
0000037794 00000 n
0000037843 00000 n
0000037892 00000 n
0000037941 00000 n
0000038218 00000 n
0000038370 00000 n
0000044766 00000 n
0000044788 00000 n
0000044901 00000 n
0000045003 00000 n
0000045023 00000 n
0000045163 00000 n
0000046071 00000 n
0000046092 00000 n
0000046205 00000 n
0000046396 00000 n
0000047178 00000 n
0000046417 00000 n
0000046557 00000 n
+49 -6
Ver Arquivo
@@ -210,18 +210,18 @@ printer.
<P>This string attribute specifies a color profile of the form:
<UL><PRE>
resolution/type density m00 m01 m02 m10 m11 m12 m20 m21 m22
resolution/type density gamma m00 m01 m02 m10 m11 m12 m20 m21 m22
</PRE></UL>
<P>The <I>resolution</I> and <I>type</I> values may be "-" to act as a
wildcard. Otherwise they must match one of the <CODE>Resolution</CODE> or
<CODE>MediaType</CODE> attributes defined in the PPD file.
<P>The <I>density</I> value defines a gamma and density adjustment function
such that:
<P>The <I>density</I> and <I>gamma</I> values define gamma and density
adjustment function such that:
<UL><PRE>
f(x) = d * x<SUP>1/d</SUP>
f(x) = density * x<SUP>gamma</SUP>
</PRE></UL>
<P>The <I>m00</I> through <I>m22</I> values define a 3x3 transformation
@@ -305,145 +305,185 @@ followed by its value. The following directives are understood:
<CENTER><TABLE WIDTH="90%" BORDER="1">
<TR>
<TH WIDTH="25%">Directive</TH>
<TH>Default</TH>
<TH>Description</TH>
</TR>
<TR>
<TD>AccessLog</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></TD>
</TR>
<TR>
<TD>AuthClass</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>AuthType</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>BrowseAddress</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>BrowseInterval</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>BrowsePort</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>BrowseTimeout</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>Browsing</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>DefaultCharset</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>DefaultLanguage</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>Deny</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>DocumentRoot</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>ErrorLog</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>Group</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>HostNameLookups</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>ImplicitClasses</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>KeepAlive</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>KeepAliveTimeout</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>&lt;Location path&gt;<BR>
&lt;/Location&gt;</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>LogLevel</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>MaxClients</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>MaxLogSize</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>MaxRequestSize</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>Order</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>PageLog</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>Port</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>RIPCache</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>ServerAdmin</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>ServerName</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>ServerRoot</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>SystemGroup</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>TempDir</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>Timeout</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>User</TD>
<TD></TD>
<TD></TD>
</TR>
</TABLE></CENTER>
@@ -935,8 +975,8 @@ are required when initially adding a printer and optional when modifying
a printer.
<P>A PPD file or System V interface script may follow the IPP request
body. Note that the printer will be disabled until a valid interface script or
PPD file is sent.
body. If a valid interface script or PPD file is not provided then the
printer is treated as a generic PostScript device.
<P>Add printer will return <CODE>ipp-ok</CODE>, <CODE>ipp-not-authorized</CODE>,
<CODE>ipp-bad-request</CODE>, or <CODE>ipp-attributes</CODE>.
@@ -1051,6 +1091,9 @@ System (CIFS) protocols are described at
<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
+36 -4
Ver Arquivo
@@ -345,8 +345,8 @@ installation of CUPS: </P>
<DT>file:/dev/filename </DT>
<DT>/dev/filename </DT>
<DD>Sends all output to the specified file. </DD>
<DT>http://hostname[:port]/resource </DT>
<DT>ipp://hostname[:port]/resource </DT>
<DT>http://[username:password@]hostname[:port]/resource </DT>
<DT>ipp://[username:password@]hostname[:port]/resource </DT>
<DD>Sends all output to the specified IPP printer or server. The <I>
port</I> parameters defaults to 631. </DD>
<DT>lpd://hostname/queue </DT>
@@ -365,6 +365,9 @@ character:
<LI><CODE>parity=<I>none</I></CODE> - Turns parity checking off. </LI>
</UL>
</DD>
<DT>smb://[username:password@]hostname/queue </DT>
<DD>Sends all output to the specified SMB (Windows) printer queue
using the SAMBA software. </DD>
<DT>socket://hostname[:port] </DT>
<DD>Sends all output to the specified printer using the AppSocket
protocol. The <I>port</I> parameter defaults to 9100. </DD>
@@ -598,7 +601,21 @@ Allow from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
</UL>
<P><CODE>Allow</CODE> directives are cummulative, so multiple <CODE>
Allow</CODE> directives can be used to allow access for multiple hosts
or networks. </P>
or networks. The <CODE>/mm</CODE> notation specifies a CIDR netmask:
<CENTER>
<TABLE BORDER=1 WIDTH=80%>
<TR><TH>mm</TH><TH>netmask</TH></TR>
<TR><TD>0</TD><TD>0.0.0.0</TD></TR>
<TR><TD>1</TD><TD>128.0.0.0</TD></TR>
<TR><TD>2</TD><TD>192.0.0.0</TD></TR>
<TR><TD>...</TD><TD>...</TD></TR>
<TR><TD>8</TD><TD>255.0.0.0</TD></TR>
<TR><TD>16</TD><TD>255.255.0.0</TD></TR>
<TR><TD>24</TD><TD>255.255.255.0</TD></TR>
<TR><TD>32</TD><TD>255.255.255.255</TD></TR>
</TABLE>
</CENTER>
</P>
<P>The <CODE>Allow</CODE> directive must appear inside a <CODE>Location</CODE>
directive. </P>
<H3><A NAME=5_4_4>Deny</A></H3>
@@ -620,7 +637,22 @@ Deny from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
</PRE>
</UL>
<P><CODE>Deny</CODE> directives are cummulative, so multiple <CODE>Deny</CODE>
directives can be used to allow access for multiple hosts or networks. </P>
directives can be used to allow access for multiple hosts or networks.
The <CODE>/mm</CODE> notation specifies a CIDR netmask:
<CENTER>
<TABLE BORDER=1 WIDTH=80%>
<TR><TH>mm</TH><TH>netmask</TH></TR>
<TR><TD>0</TD><TD>0.0.0.0</TD></TR>
<TR><TD>1</TD><TD>128.0.0.0</TD></TR>
<TR><TD>2</TD><TD>192.0.0.0</TD></TR>
<TR><TD>...</TD><TD>...</TD></TR>
<TR><TD>8</TD><TD>255.0.0.0</TD></TR>
<TR><TD>16</TD><TD>255.255.0.0</TD></TR>
<TR><TD>24</TD><TD>255.255.255.0</TD></TR>
<TR><TD>32</TD><TD>255.255.255.255</TD></TR>
</TABLE>
</CENTER>
</P>
<P>The <CODE>Deny</CODE> directive must appear inside a <CODE>Location</CODE>
directive. </P>
<H3><A NAME=5_4_5>AuthType</A></H3>
+231 -219
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:19990624171520Z)/Title(DRAFT - CUPS Software Administrators Manual)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990730151724Z)/Title(DRAFT - CUPS Software Administrators 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/Courier-Oblique/Encoding 2 0 R>>endobj
@@ -85,27 +85,27 @@
76 0 obj<</Subtype/Link/Rect[143.8 369.6 162.4 382.6]/Border[0 0 0]/Dest[244 0 R/XYZ null 311 0]>>endobj
77 0 obj<</Subtype/Link/Rect[162.4 369.6 212.2 382.6]/Border[0 0 0]/Dest[244 0 R/XYZ null 311 0]>>endobj
78 0 obj<</Subtype/Link/Rect[212.2 369.6 246.4 382.6]/Border[0 0 0]/Dest[244 0 R/XYZ null 311 0]>>endobj
79 0 obj<</Subtype/Link/Rect[144.0 356.4 173.0 369.4]/Border[0 0 0]/Dest[247 0 R/XYZ null 224 0]>>endobj
80 0 obj<</Subtype/Link/Rect[173.0 356.4 214.9 369.4]/Border[0 0 0]/Dest[247 0 R/XYZ null 224 0]>>endobj
81 0 obj<</Subtype/Link/Rect[214.9 356.4 247.6 369.4]/Border[0 0 0]/Dest[247 0 R/XYZ null 224 0]>>endobj
82 0 obj<</Subtype/Link/Rect[247.6 356.4 280.6 369.4]/Border[0 0 0]/Dest[247 0 R/XYZ null 224 0]>>endobj
83 0 obj<</Subtype/Link/Rect[108.0 343.2 156.6 356.2]/Border[0 0 0]/Dest[250 0 R/XYZ null 730 0]>>endobj
84 0 obj<</Subtype/Link/Rect[156.6 343.2 190.8 356.2]/Border[0 0 0]/Dest[250 0 R/XYZ null 730 0]>>endobj
85 0 obj<</Subtype/Link/Rect[108.0 330.0 140.7 343.0]/Border[0 0 0]/Dest[250 0 R/XYZ null 627 0]>>endobj
86 0 obj<</Subtype/Link/Rect[140.7 330.0 173.7 343.0]/Border[0 0 0]/Dest[250 0 R/XYZ null 627 0]>>endobj
87 0 obj<</Subtype/Link/Rect[108.0 316.8 141.9 329.8]/Border[0 0 0]/Dest[250 0 R/XYZ null 420 0]>>endobj
88 0 obj<</Subtype/Link/Rect[141.9 316.8 158.1 329.8]/Border[0 0 0]/Dest[250 0 R/XYZ null 420 0]>>endobj
89 0 obj<</Subtype/Link/Rect[158.1 316.8 193.9 329.8]/Border[0 0 0]/Dest[250 0 R/XYZ null 420 0]>>endobj
90 0 obj<</Subtype/Link/Rect[193.9 316.8 223.8 329.8]/Border[0 0 0]/Dest[250 0 R/XYZ null 420 0]>>endobj
91 0 obj<</Subtype/Link/Rect[108.0 303.6 145.6 316.6]/Border[0 0 0]/Dest[250 0 R/XYZ null 277 0]>>endobj
92 0 obj<</Subtype/Link/Rect[145.6 303.6 164.2 316.6]/Border[0 0 0]/Dest[250 0 R/XYZ null 277 0]>>endobj
93 0 obj<</Subtype/Link/Rect[164.2 303.6 206.7 316.6]/Border[0 0 0]/Dest[250 0 R/XYZ null 277 0]>>endobj
94 0 obj<</Subtype/Link/Rect[206.7 303.6 240.9 316.6]/Border[0 0 0]/Dest[250 0 R/XYZ null 277 0]>>endobj
95 0 obj<</Subtype/Link/Rect[108.0 290.4 156.0 303.4]/Border[0 0 0]/Dest[253 0 R/XYZ null 767 0]>>endobj
96 0 obj<</Subtype/Link/Rect[156.0 290.4 174.6 303.4]/Border[0 0 0]/Dest[253 0 R/XYZ null 767 0]>>endobj
97 0 obj<</Subtype/Link/Rect[174.6 290.4 219.5 303.4]/Border[0 0 0]/Dest[253 0 R/XYZ null 767 0]>>endobj
98 0 obj<</Subtype/Link/Rect[219.5 290.4 243.7 303.4]/Border[0 0 0]/Dest[253 0 R/XYZ null 767 0]>>endobj
99 0 obj<</Subtype/Link/Rect[243.7 290.4 263.2 303.4]/Border[0 0 0]/Dest[253 0 R/XYZ null 767 0]>>endobj
79 0 obj<</Subtype/Link/Rect[144.0 356.4 173.0 369.4]/Border[0 0 0]/Dest[247 0 R/XYZ null 172 0]>>endobj
80 0 obj<</Subtype/Link/Rect[173.0 356.4 214.9 369.4]/Border[0 0 0]/Dest[247 0 R/XYZ null 172 0]>>endobj
81 0 obj<</Subtype/Link/Rect[214.9 356.4 247.6 369.4]/Border[0 0 0]/Dest[247 0 R/XYZ null 172 0]>>endobj
82 0 obj<</Subtype/Link/Rect[247.6 356.4 280.6 369.4]/Border[0 0 0]/Dest[247 0 R/XYZ null 172 0]>>endobj
83 0 obj<</Subtype/Link/Rect[108.0 343.2 156.6 356.2]/Border[0 0 0]/Dest[250 0 R/XYZ null 666 0]>>endobj
84 0 obj<</Subtype/Link/Rect[156.6 343.2 190.8 356.2]/Border[0 0 0]/Dest[250 0 R/XYZ null 666 0]>>endobj
85 0 obj<</Subtype/Link/Rect[108.0 330.0 140.7 343.0]/Border[0 0 0]/Dest[250 0 R/XYZ null 563 0]>>endobj
86 0 obj<</Subtype/Link/Rect[140.7 330.0 173.7 343.0]/Border[0 0 0]/Dest[250 0 R/XYZ null 563 0]>>endobj
87 0 obj<</Subtype/Link/Rect[108.0 316.8 141.9 329.8]/Border[0 0 0]/Dest[250 0 R/XYZ null 356 0]>>endobj
88 0 obj<</Subtype/Link/Rect[141.9 316.8 158.1 329.8]/Border[0 0 0]/Dest[250 0 R/XYZ null 356 0]>>endobj
89 0 obj<</Subtype/Link/Rect[158.1 316.8 193.9 329.8]/Border[0 0 0]/Dest[250 0 R/XYZ null 356 0]>>endobj
90 0 obj<</Subtype/Link/Rect[193.9 316.8 223.8 329.8]/Border[0 0 0]/Dest[250 0 R/XYZ null 356 0]>>endobj
91 0 obj<</Subtype/Link/Rect[108.0 303.6 145.6 316.6]/Border[0 0 0]/Dest[250 0 R/XYZ null 213 0]>>endobj
92 0 obj<</Subtype/Link/Rect[145.6 303.6 164.2 316.6]/Border[0 0 0]/Dest[250 0 R/XYZ null 213 0]>>endobj
93 0 obj<</Subtype/Link/Rect[164.2 303.6 206.7 316.6]/Border[0 0 0]/Dest[250 0 R/XYZ null 213 0]>>endobj
94 0 obj<</Subtype/Link/Rect[206.7 303.6 240.9 316.6]/Border[0 0 0]/Dest[250 0 R/XYZ null 213 0]>>endobj
95 0 obj<</Subtype/Link/Rect[108.0 290.4 156.0 303.4]/Border[0 0 0]/Dest[253 0 R/XYZ null 703 0]>>endobj
96 0 obj<</Subtype/Link/Rect[156.0 290.4 174.6 303.4]/Border[0 0 0]/Dest[253 0 R/XYZ null 703 0]>>endobj
97 0 obj<</Subtype/Link/Rect[174.6 290.4 219.5 303.4]/Border[0 0 0]/Dest[253 0 R/XYZ null 703 0]>>endobj
98 0 obj<</Subtype/Link/Rect[219.5 290.4 243.7 303.4]/Border[0 0 0]/Dest[253 0 R/XYZ null 703 0]>>endobj
99 0 obj<</Subtype/Link/Rect[243.7 290.4 263.2 303.4]/Border[0 0 0]/Dest[253 0 R/XYZ null 703 0]>>endobj
100 0 obj<</Subtype/Link/Rect[72.0 264.0 80.2 277.0]/Border[0 0 0]/Dest[256 0 R/XYZ null 818 0]>>endobj
101 0 obj<</Subtype/Link/Rect[80.2 264.0 89.3 277.0]/Border[0 0 0]/Dest[256 0 R/XYZ null 818 0]>>endobj
102 0 obj<</Subtype/Link/Rect[89.3 264.0 131.1 277.0]/Border[0 0 0]/Dest[256 0 R/XYZ null 818 0]>>endobj
@@ -128,10 +128,10 @@
119 0 obj<</Subtype/Link/Rect[144.0 145.2 183.1 158.2]/Border[0 0 0]/Dest[262 0 R/XYZ null 482 0]>>endobj
120 0 obj<</Subtype/Link/Rect[144.0 132.0 169.7 145.0]/Border[0 0 0]/Dest[265 0 R/XYZ null 782 0]>>endobj
121 0 obj<</Subtype/Link/Rect[144.0 118.8 171.5 131.8]/Border[0 0 0]/Dest[265 0 R/XYZ null 617 0]>>endobj
122 0 obj<</Subtype/Link/Rect[144.0 105.6 167.8 118.6]/Border[0 0 0]/Dest[265 0 R/XYZ null 331 0]>>endobj
123 0 obj<</Subtype/Link/Rect[144.0 92.4 188.6 105.4]/Border[0 0 0]/Dest[268 0 R/XYZ null 713 0]>>endobj
124 0 obj<</Subtype/Link/Rect[144.0 79.2 189.8 92.2]/Border[0 0 0]/Dest[268 0 R/XYZ null 561 0]>>endobj
125 0 obj<</Subtype/Link/Rect[144.0 66.0 220.4 79.0]/Border[0 0 0]/Dest[268 0 R/XYZ null 357 0]>>endobj
122 0 obj<</Subtype/Link/Rect[144.0 105.6 167.8 118.6]/Border[0 0 0]/Dest[268 0 R/XYZ null 782 0]>>endobj
123 0 obj<</Subtype/Link/Rect[144.0 92.4 188.6 105.4]/Border[0 0 0]/Dest[268 0 R/XYZ null 274 0]>>endobj
124 0 obj<</Subtype/Link/Rect[144.0 79.2 189.8 92.2]/Border[0 0 0]/Dest[271 0 R/XYZ null 782 0]>>endobj
125 0 obj<</Subtype/Link/Rect[144.0 66.0 220.4 79.0]/Border[0 0 0]/Dest[271 0 R/XYZ null 577 0]>>endobj
126 0 obj[23 0 R
24 0 R
25 0 R
@@ -236,11 +236,11 @@
124 0 R
125 0 R
]endobj
127 0 obj<</Subtype/Link/Rect[108.0 673.2 168.5 686.2]/Border[0 0 0]/Dest[268 0 R/XYZ null 259 0]>>endobj
128 0 obj<</Subtype/Link/Rect[72.0 660.0 91.9 673.0]/Border[0 0 0]/Dest[271 0 R/XYZ null 800 0]>>endobj
129 0 obj<</Subtype/Link/Rect[91.9 660.0 127.9 673.0]/Border[0 0 0]/Dest[271 0 R/XYZ null 800 0]>>endobj
130 0 obj<</Subtype/Link/Rect[108.0 646.8 159.0 659.8]/Border[0 0 0]/Dest[271 0 R/XYZ null 679 0]>>endobj
131 0 obj<</Subtype/Link/Rect[108.0 633.6 161.5 646.6]/Border[0 0 0]/Dest[271 0 R/XYZ null 202 0]>>endobj
127 0 obj<</Subtype/Link/Rect[108.0 673.2 168.5 686.2]/Border[0 0 0]/Dest[271 0 R/XYZ null 479 0]>>endobj
128 0 obj<</Subtype/Link/Rect[72.0 660.0 91.9 673.0]/Border[0 0 0]/Dest[271 0 R/XYZ null 408 0]>>endobj
129 0 obj<</Subtype/Link/Rect[91.9 660.0 127.9 673.0]/Border[0 0 0]/Dest[271 0 R/XYZ null 408 0]>>endobj
130 0 obj<</Subtype/Link/Rect[108.0 646.8 159.0 659.8]/Border[0 0 0]/Dest[271 0 R/XYZ null 288 0]>>endobj
131 0 obj<</Subtype/Link/Rect[108.0 633.6 161.5 646.6]/Border[0 0 0]/Dest[274 0 R/XYZ null 488 0]>>endobj
132 0 obj<</Subtype/Link/Rect[36.0 607.2 44.2 620.2]/Border[0 0 0]/Dest[280 0 R/XYZ null 818 0]>>endobj
133 0 obj<</Subtype/Link/Rect[44.2 607.2 53.3 620.2]/Border[0 0 0]/Dest[280 0 R/XYZ null 818 0]>>endobj
134 0 obj<</Subtype/Link/Rect[53.3 607.2 90.2 620.2]/Border[0 0 0]/Dest[280 0 R/XYZ null 818 0]>>endobj
@@ -308,12 +308,12 @@
172 0 obj<</D[244 0 R/XYZ null 818 null]>>endobj
173 0 obj<</D[244 0 R/XYZ null 416 null]>>endobj
174 0 obj<</D[244 0 R/XYZ null 311 null]>>endobj
175 0 obj<</D[247 0 R/XYZ null 224 null]>>endobj
176 0 obj<</D[250 0 R/XYZ null 730 null]>>endobj
177 0 obj<</D[250 0 R/XYZ null 627 null]>>endobj
178 0 obj<</D[250 0 R/XYZ null 420 null]>>endobj
179 0 obj<</D[250 0 R/XYZ null 277 null]>>endobj
180 0 obj<</D[253 0 R/XYZ null 767 null]>>endobj
175 0 obj<</D[247 0 R/XYZ null 172 null]>>endobj
176 0 obj<</D[250 0 R/XYZ null 666 null]>>endobj
177 0 obj<</D[250 0 R/XYZ null 563 null]>>endobj
178 0 obj<</D[250 0 R/XYZ null 356 null]>>endobj
179 0 obj<</D[250 0 R/XYZ null 213 null]>>endobj
180 0 obj<</D[253 0 R/XYZ null 703 null]>>endobj
181 0 obj<</D[256 0 R/XYZ null 818 null]>>endobj
182 0 obj<</D[256 0 R/XYZ null 416 null]>>endobj
183 0 obj<</D[256 0 R/XYZ null 234 null]>>endobj
@@ -326,14 +326,14 @@
190 0 obj<</D[262 0 R/XYZ null 482 null]>>endobj
191 0 obj<</D[265 0 R/XYZ null 782 null]>>endobj
192 0 obj<</D[265 0 R/XYZ null 617 null]>>endobj
193 0 obj<</D[265 0 R/XYZ null 331 null]>>endobj
194 0 obj<</D[268 0 R/XYZ null 713 null]>>endobj
195 0 obj<</D[268 0 R/XYZ null 561 null]>>endobj
196 0 obj<</D[268 0 R/XYZ null 357 null]>>endobj
197 0 obj<</D[268 0 R/XYZ null 259 null]>>endobj
198 0 obj<</D[271 0 R/XYZ null 800 null]>>endobj
199 0 obj<</D[271 0 R/XYZ null 679 null]>>endobj
200 0 obj<</D[271 0 R/XYZ null 202 null]>>endobj
193 0 obj<</D[268 0 R/XYZ null 782 null]>>endobj
194 0 obj<</D[268 0 R/XYZ null 274 null]>>endobj
195 0 obj<</D[271 0 R/XYZ null 782 null]>>endobj
196 0 obj<</D[271 0 R/XYZ null 577 null]>>endobj
197 0 obj<</D[271 0 R/XYZ null 479 null]>>endobj
198 0 obj<</D[271 0 R/XYZ null 408 null]>>endobj
199 0 obj<</D[271 0 R/XYZ null 288 null]>>endobj
200 0 obj<</D[274 0 R/XYZ null 488 null]>>endobj
201 0 obj<</D[280 0 R/XYZ null 818 null]>>endobj
202 0 obj<</D[280 0 R/XYZ null 429 null]>>endobj
203 0 obj<</D[280 0 R/XYZ null 337 null]>>endobj
@@ -517,30 +517,32 @@ endobj
;(¿H¤0e…²¾¸8­ŒA;öÆ"¨­£," Ì·Å0
žÄMyBøËˆG1LȺz ¹Ó?¼=0
FÏ]yÞíâq”g÷Ú·[V›î‰ÔëÓ—LúxM|¤ÕXÆÀiHêõ)Ù=§•¬¶(³^a‡¦dô¢ÙÜë›;Ø瀕dJc¤E/:…@
ŠIQ#P¼t+{d¢`²Õ´;ŸÉÓO¸D†ÿûOh0‰qãø2Œëö|iýíû=endstream
endobj
234 0 obj
831
endobj
ŠIQ#P¼t+{d¢`²Õ´;ŸÉÓO¸D†ÿûOh0‰qãø2Œëö|iýíû=endstream
endobj
234 0 obj
831
endobj
235 0 obj<</Type/Page/Parent 207 0 R/Contents 236 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F8 8 0 R/F9 9 0 R>>>>/Annots 22 0 R>>endobj
236 0 obj<</Length 237 0 R/Filter/FlateDecode>>stream
U]sÓ:}ϯØa†¹a¦–í´
U]sÓ:}ϯØa†¹a¦–í´
3÷¡´M JiÍË^[Nd©!ÿž]9n\ÓÞ“Œ[ûuέ¾bˆðÃñ˜¾Y5x.ÓAÄ"|OKLËíî²Æ ­ÄIÌ’ÝS wäÔó0K§Ò‚B“׿î߄!®l©Óf®Ý"\]¯Ò¯(Ñ.J|rŠ©"ò%ƒpzqL1ƒ¦ˆàxÂÆ´›®ä:s•P–[©È
m*n­ÈÁÕR-Á¢Ñ»ôÃüâã9Ôº°nƒY[í@ ´³*þM@¶âj)j¿‘qKaÉÛ‰¹ X>ìÇ‚ÂèêMShýƒ¿Ñ¤áw2BPÍÓ³ü©±'fe=«›Í† ^oë
Ët®lU"!ÏÐz:Æ Z'ДHÄúìÁñ¨!ö\WkY{çŸoî7!ÚóO›È2Rvuý¸³:Óª >éW.²Cô»…,ÑŽ«‰s&C¶u.¨YD·„`EÅ íú¶É;ì÷Àn×âùäÓÃK`á>úåuzyÛ¹>R—(¸+-HU[^–È6²,aí¼8|{-Hå_¶5Q‡¡«ÍãDCÏDßìžÿb–K#2«Dò0uúlV2[õøñµé{a6FZY¶ ~ÈÚR/×F*ÿ¥Raþ~DÏþéÓØ¸ÒøÞôr–:kˆA)<?Öûÿ£M¯Éë/»×ý—È
©„ò`GñÐSy7×WGðþæ×t6ù^ü7Ÿ½…R. ÷\`ÛÒS‚à·ªkeñ€üË…(±†rû|‡&_¨TYérñ;jð¸ä¢gúåµììP;»êfLõýϧ󳫻ßH4¿xÒR¨{i´¢Ù
©„ò`GñÐSy7×WGðþæ×t6ù^ü7Ÿ½…R. ÷\`ÛÒS‚à·ªkeñ€üË…(±†rû|‡&_¨TYérñ;jð¸ä¢gúåµììP;»êfLõýϧ󳫻ßH4¿xÒR¨{i´¢Ù
(LÉx€{GEáyÄŒSªQÖ®?ÐU¬sAS/¼fa­+¶Êß¾xÚ~W6:Ì8teÃ;(“
(LÉx€{GEáyÄŒSªQÖ®?ÐU¬sAS/¼fa­+¶Êß¾xÚ~W6:Ì8teÃ;(“
Ç]+~/öìà««íŸNÃÊŒL.œ,sßχ˪?­£ý ž5òlﹻ˳»wÀÎö߀iu@%»ŒInãQÌ&dq{6M!hÆI["œå•T8™ ÇžÕð+ÇK
Ä£t^ü]•л“8a§ÍÝu+¾;ì4é²Þ]­Ÿ?´Nendstream
endobj
237 0 obj
endobj
858
endobj
238 0 obj<</Type/Page/Parent 207 0 R/Contents 239 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F5 6 0 R/F8 8 0 R/F9 9 0 R>>>>>>endobj
239 0 obj<</Length 240 0 R/Filter/FlateDecode>>stream
238 0 obj<</Type/Page/Parent 207 0 R/Contents 239 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F5 6 0 R/F8 8 0 R/F9 9 0 R>>>>>>endobj
239 0 obj<</Length 240 0 R/Filter/FlateDecode>>stream
TIo1¾ó+>EjE¤0¬aÉlUM[2U.¹xÆp3ØÄ dþ}¼Ì jUqñð–oy~~kõÑs¿>& ÇÈ×­ë´Õ½Ÿ¡?LH OûþHÛ +Ó,ÌŽ(vžþqé#ôû1¹3'#ŸüCä •´X-Ú²d4ëº8Äs"à‚Ê„ÐÍïŸO „­¥@VÁT‡xQz˜ENŽh'ò£mŸ¶¿ kµêꌋnn7šâ+îÓ»ElàT]&Sß¡ã[ g‘êC$ç¥\sAT…[®â™5\ŠO]áØ>3x¹UŠ SV û*×+HÉb;zÐN;7Î(¤Zƒ7«Æ â@…rlI +¾1:‰$.kž~ãôó|ñøðøíꯣ8Ð8íxYBn™Ú)nÂØ»cè36Š‹pЕ6là¡cbï¦8óS¥¼(xnKÙŽìÝäš9Ôc @û9{A‚ùéK,%2’¿úc@–%=½ˆfSì`û+r‚¶jظŽrË©«þÕ–Ö.×G˜(”\׌œRrº¹þ7·& ?•8lw,øÿŒ¡”Ë¥ûpÃ'JJƒ—6•áÖ œi{®;’‚ i—«—óÍèõ4t±š© (+Â_G©ï]ùïJÂæ$¶ƒõi®Ö‘
óÂ0å½z!^6AÁv¨˜î
‰7Ët¼óŸ=
þd‡oƒRxò£¶t}›œð@0zjƒ5ÒmÏ]yUoÈ´&ÙŒ\Òp2‰;p»˜ß§èD
‰7Ët¼óŸ=
Íã…9]sáW“©4¾aI&Ë;“Aï_/ßhÚKf)3ÿ}—¶~µ>ùq°endstream
endobj
240 0 obj
640
@@ -575,51 +577,59 @@ endobj
OñšŒ: WmrzçaÑÔ îG‘Î6QN©É'p´Ï–4
)pæp(ƒt&ˆ¸z™ òB¥DòÅýëø†ó=áÑrttmô…XøBÛfl”)=ØéÙò«ìøá/ϱó¾JÍÍÚbÿí,ð–h’G<»<Ÿ5©[ãtµI¾ ·µ¡Â¾=jGV|fy—@h3Î$FýýÖmŒåö
>‹úý2ÉÎéÓ;ëŽ÷œýyΟyðÏQŽ8)dî`Ò¹¶|@§4­2BÆj‡•öñ6pY®•jñ`½¬OV
ØiºR6à0\wîm&*õ¤µ¹®*V‹Ð—ÐÑð6É:µî|±V?c­xHºUxÚ Ñø9u޾7>¥ à™ ¨g°Äs‚´Å«é
öÌB&¸d`åOñ
„KºXεDUµqåfºgR±%ÂÈ6ƃɤ 8 W^ØZ»ýާ
î‡÷»ñS3DÕz†½í@„½g6~7ä7·ñ¢ßé<S˜Í³î¶y}{õ.Ç=C8XéÂÞ£¾pE+cqñk¼c`ë;æQ¢4"ޤGH3z9™ŽãIy%uÕù£ªØÑSh;ßo7ùèÏÑ?†f@-endstream
endobj
249 0 obj
952
endobj
ã™üm “eLóÐgPÑ(çc8¨Ôº*;|ü1éBâÙXŸý§D~&êlÞ2¥ à P_ÀO7Ò /`•ò”IX¸=aöÄ$@Dƒf5žL*‰/¾Ì>,p˜é6q˜5inWƒ9VÊ3U¶NåŽÔ'ïh@‡£~wåƒç$Ѻ4\¦úT*åy¿h}ný•÷4endstream
endobj
249 0 obj
883
endobj
250 0 obj<</Type/Page/Parent 207 0 R/Contents 251 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 4 0 R/F4 5 0 R/F6 7 0 R/F8 8 0 R/F9 9 0 R>>>>>>endobj
xÚ½VmoÛ8 þž_A8\¨“ØIó²o½¥Å0܆\›á>+ݪgKž$'Í¿)ÛiÎI‡--ÐÚ&Eòy’úÞ‹aH?1LM -z®zƒ›1Ä1¬2ú2™û3XÉóÕ«Gú8i>žFb^¿kÎAØûª@íÁ•˜ªL¡O®Z& ÿ/— ÈTNÏ”öh3‘"¸ÔªÒ÷á†Þâ“(ÊR‚€ÒK¨œÒ÷sQ<ê'œŸé‚|ZÂÝ¿Ÿ‘â£åàÒª
251 0 obj<</Length 252 0 R/Filter/FlateDecode>>stream
xÚÅVQoÛ6~÷¯8š•dÉŽl÷­­ Ã6x‰Š>Óâ)a**IÙñ¿ß‘’<Uq
•³ƒ\­y)d¡4DeIt
ZøÁ"yÇ;~ßwG~Ä0¥_ f)äÕäC6‰®h&†¬ •t9ñó¨1:2wLc”7µ‰*űü=»'ëyg}\hÌ­ÒØ {öá,¨Î@ÕV(ù®5ŸÂ*Lœ= â™ûæçniJÃØ
~­Û¨¬¯„„ n“Þ9&Ï9%HæµÒ¢ï¾ Äý:ìFþ³¤wç¸9޽ËTãÐ)ýûµGÏdÑù]þ“]^‹P¬.È*˜­ÂÔÙdPk‘öžÄ•éÛ¦BiÁÔ˜‹B ñØJV!¨Âo6k(DIc
†û/öÃ`9 d°lŒÈQÝ¿-ïBNZ;°•„´U66t™MMQ-a«üCp;‹žÎÀ”^ý& žjç¤uŽÉsLåy“|÷ô)¡¾¿€Z<›’å¸/ø˜ çðeØ>Ä’ÙºAvoMU2^*¶ÅÒ‘l ÙN;´¥^þy@ö!QY’¦–®¥Í:è¼v¼ÐÒ»ŽÈ·*ÏaäcR¤*$¬wÁ4SÖyA®sÜó­˜[áëSûÍiɤFdÕí«çÞU åð›³(m•âÞÖSoJ”v'ô7|; lï™L%ÖÖ%£!Å}î·ãáxJ ¤!QyS¯RÒÛTʃ4èôïžÆŸr4 »¸¦æ±"ªIBÿWû½—ÃÖ›Nd‚ÐîÐ{Yœð3Qå¾_?›^ŽÆ&»ÈÆ¥•©iÚëÝBù2„4â Á!:.ç­Íi‰
géÏ$vtô‰-¬Ž×oË~—Ãá}^ØÀÃvçMY¾nÿS‚š§ÓQžtlÇP*wʲ᎘甂££|öÕ|¯°Bšžùâáiéç»_åt­ô Î:„Χí¨xýF¢P—'4õu#Äİû奷—ËsßMVž«w€°ÔJu\ …Øt¼NDšbƒÌ4ë¾€uåéijH¤¾
#ª^VBïÂÝÍÑ¥‰Î`AíøøÎ¶"˜&”4ÅHƒôKc+«ržt‡",DžU:
Ž‚å&×¢¶!\Ñ,>°ª.ñ-XŒs`Ðò¶g #Äíi¼ü±5š/"ÅGí‚s-vä—+)‰oänËšiV–XB­´%E5’“É_B6pP
ìUSr
…?&ƒ>Ïió]D$F4Љ-N÷húæCV_8) ."Q0wA®±R;:>lZ0Ì·ØOd)ÐÎÈѹ?~ÚÜøAh@7ÒÒŸ²ã°;Á˜Ù\U“|X/¯R/?P/§Q‹—‹N»¸/øX2cðiØ<>Ä’ÚAv«US;¼DÉt¥!Ù²£rèÎ]”x!|¾CçC¢Ò$MÉMO
Ü«­×yëøÖCKs#‘ïEYÂÉGåH§à°=xÓBhcíe¸-ñÈ·pÜ2Ûîv»%i‹H6®«ÿxUÔgàf΂¼WŠùu­5²9({asœM)îsÍñ”
@È52׆XcUŬÈIo \¡‘o,µ?a¨«¸¥æ¾!ªIB?«ü^ŠË°ôi‡ŒÚ
ZëZ–KxkJÛ·¯çº—¡¶é\xçÒËTuåõjå¯!Bjñs!F.VÇ{û¤Ä¦K‚ô9‰=ÚúÄ-,_¿c,Ã1‡Ó}–iÏŸƒíƪº~Ùý󘔮;=Ê“¶raNYvÜó.%ïh(Ÿãi¾6Ø uOîáaéÒ/ßËéVȨÍF„®}«øžiÙs9O䫤
252 0 obj
½¾~•AÐ^Ç7ª°{zªÂ{'%ª{ÍèUjào&æ_WAœÌÝm¶H|€OîD\Lóž Xûwާd¾˜÷ÙÄ37q™MþüKŽ0Àendstream
endobj
252 0 obj
915
254 0 obj<</Length 255 0 R/Filter/FlateDecode>>stream
xÚ­SKÚ0¾ó+æR)+-@–GoiË*µÚBzÛ‹“L£Äfm´ÿ¾3v€õX%ÊÃ3ß÷Íóm”À”®æ ¾Ënô%MžSHÈk²,Vi¼‚¼Š„A8©V j‡\s>1 - EKÆ×È:aÈíõ!~È÷͆ä‰I˜o<_Ç)óee‰ª‚-î±ôßuaø
C ÍI8§ƒ1žíyæ;Gã…îKÝuäl!ðx`ð žâZ‡¤•è(Ï!õGr´þˆíûç³Ü:ž15ÕtœÌù»ŠØDY°f}‚Ioͤ•ÅdÐ ÈÙ¹^Ò{Ê®ƒÐ=ó’Jêí°ù™o¶l&©§ ™ükÍÆÉ2¹v$³ ´ŸŒBñÄe0J¡ @°Nd/z7Ô˜{­ðô¡¾1d70ÑZÍXs™
endobj
253 0 obj<</Type/Page/Parent 207 0 R/Contents 254 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 4 0 R/F4 5 0 R/F8 8 0 R/F9 9 0 R>>>>>>endobj
254 0 obj<</Length 255 0 R/Filter/FlateDecode>>stream
xÚ­TMoÚ@½ó+æR•HÁØ@ ôF[r¨Ô* î-—µ=®­wÉîÄ¿ïŒ×|¹½Tª@Bx>Þ›7óü>H ¦OÓ9ózð9ŒŸbXFHK~6\@Z ?À¸qvœI=.¤™B¸K·”;9å&ñ$šS3JÞY©=Úpi¶ˆCÖ?ÒõkÏ I8:Jóh£é’ºPÎsèáÀWƒ°nµ8‚óR)yŽ;[“9(Xê_÷5F¤ÒÜ7B©c‚ÐG(¥B
¥*jGnÏlbb1e²ÅТóÂz,"H+逾òQ K®nF"£ÊFç^í¨yGÓ€F¢éeà
Ùßu]o©ñh谻쨄*´ºÙš“l[.E¤`ÄQÈ–œf-ÆH@«)!Òº]ƒ“ë²JœÌRÒœÑîø…ù¶ÍžsÃ×ß/;ØéÚx%³ªãtN÷¡zцYððñræ{˜¤|8O§ñ<4uÇKz^¿·ç²}$;oòѯÑ_ÙD=rendstream
äÆZÌ}Weh„:‚Ñxo°!̾‡ÎãDÉ0×ÄuâmØÑ|»‹‚žKHHgR4nÅœq¿U« Ó2|Å-ñá­Èð­#pYF|ÙCZ6wÁaPý¶bØvî%Ú¨Ÿ˜›º¦dwÚ†ÌnEçuòÐZÔ4g7ú=%º“ߣ:~êØü¢àIÐäêx•ÌÆfïv— úýÇÓ%¨‡¿t“üo$—¬hÓ^Fföxâ|¹Ð!yÃìvgˆóæ5®ô¥ ¼)Ê®µçÛ üÞU^mçP‘…@z²’–®B¶©qÌZ‰=R/ÔáÂÿ´ïöPQœ½R7ŽÖ=ÀZ0A-tŽ`ôøhü
) {!Uûn"Û
255 0 obj
g$@ˆ0¤)À”­3;»<v'“aNË€üõuõ”¾ü|ÞÀÆ”þÀ–\5ë­ð†zšÞ,áÚòÑbÒî0™ñÃé,ަa©6éÉ~^ÏÙ}D’“×éàeð„u²ˆendstream
endobj
endobj
256 0 obj<</Type/Page/Parent 207 0 R/Contents 257 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F8 8 0 R/F9 9 0 R>>>>>>endobj
257 0 obj<</Length 258 0 R/Filter/FlateDecode>>stream
xÚ…T]Ú0|çW¬NªJ88úÖž8µ½Ò’û&qˆÛÄvmß];ÉÝ…û2agvg<£fø‰a=‡Å
255 0 obj
652
endobj
256 0 obj<</Type/Page/Parent 207 0 R/Contents 257 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F8 8 0 R/F9 9 0 R>>>>>>endobj
257 0 obj<</Length 258 0 R/Filter/FlateDecode>>stream
xÚ…T]Ú0|çW¬NªJ88úÖž8µ½Ò’û&qˆÛÄvmß];ÉÝ…û2agvg<£fø‰a=‡Å
Òjô5Mï6o É!^/`µ^B—0Ò y„}c¯à“ìÈ+.ݧä–Çn²XÎ"M
a!-˜vÜ€-ÔÙ~A£jH™„TÉ\kÃÁnv{°Üœ¸‰+sÝï I7ó¶`òH£xLËÀœPîDÉíópEÀ/e *÷°Ð¥ïÐ9¡á4¥J™ãé«ã¬eOOÌLÓZÛ)៷C& O2M?eʽւ8T,ãÀ¨ÑœfJI ÊWÀ|_.9öÆG†[ÇŒšO2#„Cà·‡Xq” õ¨mgŽ­µ.rÙÔí­¯²HQd‹ž«Ï]Ù†`9e¥§ècúñ¢iËÑO¾½O¶¿ !‚îJœò $3
úf‡Ú_…ˆ/Kdøé_¹ !…‹²W/ÎÂ'Yuˆþ]Ô\²sÝÚ¯äÀTêtÂ?•™ôîënw¬ß·²ðJ+Cv¼å{e*ô§ ±ÐµÃ܆t <ºž%D{)®Êà{N ü˜A)þúXv¥E~t•jÊr ½‹-Ï„{oü)‹^Z!š:jÉç«àÌÞç “ŸÎ\—pÉÏOÔ>ÎÇ$†ž»¾ŽimÞn5hn*a-ÆÌ¶Ù¾ybð<üþ;o¹^âõͨ8¾¦Ûdôkô9åšõendstream
endobj
258 0 obj
587
endobj
úf‡Ú_…ˆ/Kdøé_¹ !…‹²W/ÎÂ'Yuˆþ]Ô\²sÝÚ¯äÀTêtÂ?•™ôîënw¬ß·²ðJ+Cv¼å{e*ô§ ±ÐµÃ܆t <ºž%D{)®Êà{N ü˜A)þúXv¥E~t•jÊr ½‹-Ï„{oü)‹^Z!š:jÉç«àÌÞç “ŸÎ\—pÉÏOÔ>ÎÇ$†ž»¾ŽimÞn5hn*a-ÆÌ¶Ù¾ybð<üþ;o¹^âõͨ8¾¦Ûdôkô9åšõendstream
259 0 obj<</Type/Page/Parent 207 0 R/Contents 260 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 4 0 R/F4 5 0 R/F8 8 0 R/F9 9 0 R>>>>>>endobj
260 0 obj<</Length 261 0 R/Filter/FlateDecode>>stream
258 0 obj
xÚ¥VÛrÛ6}×Wl2‘§/BÉykš™4ã&ì›_`´P“ €fô÷ÝH]ÙS·#ÍH{9çì‚ORHð“Â"£oQO®óI¼Ià*šC^ÒZ¶^AΧù_“fiJo ~äÒ-Æ›ù`½\àoBq©u|ÏLìê&í]fËhŒàæk~ó¶gi²>ø.¶µæÀ~5Ý7±NÿS€x³r_b”uŠû³ÅU”‘M¾
#2õ ÀmTR (´rL*©üÚ x˜æ¢n>Isêw
endobj
ˆ(œ| Õ¹cEÛX¡ër|Òioh³Ã'æ`§Û·ObÀ Åt #˜üý¨fäiorÂTŸëÿdj áryp#«ªÝ%a3Ηb…y˜Ý:‚” ”ÒX‡ûˆ”V K\”–hœ0Qté; ¡gIq¾
×@ùÐFNKNh.JÖVŽØ<œ!|üóöûf%­ÊB©
«>]ª-&Y²B`]
Õf‹tDÑÝÔ#à˜âÌpø|{ë-ï."øÀkT•u}*e«úHÌòj‰Ô’*]°ê$•Nº­Ï›5Ñ‘¨‚QÜ«Q¬FÅ¡aÖbÊ<êæY@ñséuÅ1Ú£ð¡(*°k²ôŒ»ì©½¥¯>d%¸tç„?¡|HÝ1!?¯óRVâ@ñ"¨ŒHÒn¦þÙþ¸ m#
xÚ¥VÛrÛ6}×Wl2‘§/BÉykš™4ã&ì›_`´P“ €fô÷ÝH]ÙS·#ÍH{9çì‚ORHð“Â"£oQO®óI¼Ià*šC^ÒZ¶^AΧù_“fiJo ~äÒ-Æ›ù`½\àoBq©u|ÏLìê&í]fËhŒàæk~ó¶gi²>ø.¶µæÀ~5Ý7±NÿS€x³r_b”uŠû³ÅU”‘M¾
YJ䊪|µÄ4‘G\µJ#¸Vr´?ËÜM‘ë» B
¦Fè³ÊjÔ“k› ­“˜ä÷·<ßû['è-¹pèX”ŒòÞgщûÃÆ(t'ªê%X¿ø^ì¹ÏAÊ£QÉ87¤"¯?¬ðÄÜâÃäÎ*év}ž>*êEn#:†Ž)Ï+2©»“†ÑªÚ…öSÝ7TÍŠ-÷žAÂý_Ò ¤óU”à'}ß7þÑX¤³¨R¡9ãôypÏ·ì¾ÔqòbS±mïñï%Ö‹=n[*f»€ %5Lµ#ÞFÊRÚ„·v|æ—dwmtgÅk{ú¹SÇò£ëÙè
§âVÛÐMx‰ÔZI¼>qXQsQk'G%u8u÷n#HoÝÚ_½£²Ç- [Ý ê½A9ý aý|¼ïÀuŸo:_¢³l•E rùéÛ‡M³Ðáßué:ùG÷6~gªeUx!òÇg«¹¿ÓŒ—É*z.dºÖµaøª°Á™êÂM>ùcò3Rò‚endstream
endobj
@@ -659,31 +669,33 @@ endobj
Iˆ6EDÀyíóØ~±ÏŸ™ þ\ x$åì|9;»ŠÁõlË cAäªÛôè’ñ×ãåo ûàº:hy±¨àrÅ@ÑAš×,iòg²bIžåL…•
§%;…ë iZ3)OAÔÀYó"ê'hV´¥E!^X
4IPÀvÅêgVêÓÇš‡céQ¤G*„°ŠB²Z”°(Š-‘-¡;%͹ˆr‹d¿Bx¿ŠsnŸìˆM‰OÕà5MuV–“…¥½v
endobj
267 0 obj
636
endobj
268 0 obj<</Type/Page/Parent 207 0 R/Contents 269 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F8 8 0 R/F9 9 0 R/Fc 10 0 R>>>>>>endobj
269 0 obj<</Length 270 0 R/Filter/FlateDecode>>stream
xÚ½VMsÚ0½ó+vr"3±‹
ÃGo$i:™i™¦˜™¸(¶ÀjmÉñÊaø÷]Y`0 LÚ '´Ú}OoßÊzjyСŸº}ÓÖuÐútG+ Šô‡=wAÔ¾år}ü¦`¯
¶!9µxæiZ$Ì,\* ?Zd ›÷Rô­R!“ðÈ¡@VÀ’D­€…!G„…Ê·ec…8^×õ
MŠK®W*ÿƒnòûnÏ„‚ø<&X–q–ƒ("l¿Â7Ò•<Zŵ‘X†FS§ë»}Ãh\è8Xg¼žl6Œì†ÊÍ9»´#¾’tÔ”¬i'¨0ÊâR KÖÈšñœÄL?Û:aUÇÉbs¿?ØÇŸ(y€íÀDíC`¬Š$2¬¨›ó6qcÔ>w~YÇÝé`è5C¢–˧(ä²d6¹ÿC$‹DÀdË\,D­c«Á»Zð!ιIèçZ§!©É;«˜iHø3OŒ{NéF5 !çOŒÎ¶ÖX*¹NUî¯òüt Ï,Æ=<—,å¥]6ÞÙ9©{Øtš§ï€»*#ÆÍ›­¥áy¢ŒÍU»À5^BÖíó¶ŽÅæ¦
c&—µ)idüÕ¤µÎU ¿Ú“©7©ÑXõŸ‹±|A©ñ1»ÉBë¦3›a)¹MhÓë3êЗós÷!Æ‘ã¼}i¼­ ׸UÚÈNí(?×§ô»>Û'|¸Odõße=:¯‹zÊ@m%eQ*¤@Û›Ï*\>V¤ZM¼×æwɼ
ía©õéݳÓ*¸ì5ƒ¤-˶ êÅ)HøÐäUq˜ë$$”Ã/­D¡}:CõvÊÐqoݪ’ý@Þ)mqüY?È÷Ô\4È,øÀï×—·ª§’Ê'cÛ¹iázáÄ8¶¯2êÝÈÇ—ŽzaZ©·Ÿ—3Çvðó}û»ý~d;à»»q€÷ÄÁ[œ¿»1ñý5õ| îö~sr:ž8Ð4Ø‘úí¦ñbõ?•¦WoÐ ƒy8˜×P¸$šÄ†Øz2‡Qržö-rÄdÇ<ÄÖ“9Œz”Ã÷´MlÛ˜ç ^ˆ-'3õ(1G4 óù¤¹pÜګG9¯[ƒ`àì!qx€I{õ‰ˆ6)ñGQ:œ=0ap€S{õ(L@´S=²¯=8óàÃöê
õè©9¸Z([Ù­*FkȹÌS†Ûè‡¾Š¤Ûj·öbëÈzqcyf~m³Z¾Vìg¼Í:vʲœã–¯ª”• 2 ØŠñ&×°êªXGOiN‚ÄôCÔ®l‘@á$?æï‹”õÜ–.SÈ•h‹T{&ž}GÈFñ°³އy×뱤çTæÉfÖîõ”Ä­Ìùc7!÷߯BE¥ÄK:žÂc-Ú
²¼`²[+KÏÁ?-ÁÿtNÔÒÄG® ðMõr»¸Zâ\ÜßÜÁÈšU°,Ò2ç¹ljÚˆZÂ7Ê[Ú•›–nn…ÄY¯}üðíwcóAþ˜ý­¦õÞendstream
endobj
270 0 obj
816
endobj
271 0 obj<</Type/Page/Parent 207 0 R/Contents 272 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F8 8 0 R/F9 9 0 R/Fc 10 0 R>>>>>>endobj
272 0 obj<</Length 273 0 R/Filter/FlateDecode>>stream
xÚµVÛrÛ6}×WlõdOMF¤YÎd:ã8v“™8Mkå¡3zIHD 
JÑßwM‰””4ÛcËÀb÷œ³àS/~'0ÓOVö^M{Ïî® Æ)Lç¸7ž$ô1?»®\q#™µçÓÐfI,¢áU<&iÁ!l¶›ÇA. ÏœXqÈù\(na]0’¯¸=oûyŬÈÚ>X–qkAX0üS…óÁ$Ûš¤¥ãxDðféø²ƒOiµ)uÕÁÁ{
ÑsåDÆœÐ
l¡+™Ã#‡%7smJžÃì ñ³Jºxv¾… *ŽüÑrÓ
endobj
z
+&Eî*Vr`*‡%ê·Ö&ßeÿ¯`ëxùá.üªÑ˜–•u¨…ÔjNû½¾ÝØ>E¹Œ'
 …ÑÕ…r:̘"³‚©§À‚Žw ' þŽ- ~Ý’"Ú ~Hƒ^¸‹:ʲÆÚâLÍâ±½G££¬=Ý»õ;ûÎCfË%g„²"GÂm7ït(ýÓ`öF4L¬t¾<4¾¬Xîl£4ÉŽéì˯Ê÷~o{ƒfV|;ªŸ.ëÑÎ8-ê×4T#)ËK¡„u&L¾ 0Ê›ã˜æjO¼SýÛŽä6KÃ[·U»nŠíµ{s$m”xŽmôÄÒ'éNHw8‡™;~)Ý|üðK£W˜ ‹©¸{=2¢2§ó‰(PGãÿŽú¯ä4 „- Q¦ÕŠçÍ=D†þ„rìQúrÃðô§Å‰³¬vÜÄp !¥(yLtz”°2& ã€*\¢^¼šßáDIE”Ìà⊠顇úÛL§­ÏÛ©ú;†ûtùg[ßÿý_¥×ªa`c¸%%qÃGÁ=ë˜ÁrY WøEJjùdœÅ-rs-ñ®³W“;¥6»raè…¾àM%):ðϬ\J¼lT¹ãŸÝ³Â•òPVWQ''f_Ô篂¬4Åk€5Þħ¢v õ/˜Íö,àéë©ggƒ‹dŽfçð+޷ؽXË´Øùfzÿî·>nì.þòú›éßnq½~¼Ô :÷Ë\œkn­ƒ4`Ùf[SjØúdàíŽÈ9Î= ŸÔöû¤‚ãO…ÎÀ—Þ°Þq+kƶãÚÖxˆ-½% Ë|•S7½I"ú‚h—KÁB­ tºwGœbÌ"¬¹”Û™lžOÆñs:ÿú¯ë»)¾)üôyÐs·&h×ÍTÕˆöž©ŠùÒ‰Âñè2Ðét@‹£á8¾‚Açí};íýÙû#²v}endstream
endobj
271 0 obj<</Type/Page/Parent 207 0 R/Contents 272 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F8 8 0 R/F9 9 0 R/Fc 10 0 R>>>>>>endobj
272 0 obj<</Length 273 0 R/Filter/FlateDecode>>stream
W]sê6}ϯØë—’^ð¤ÓéL>§™ÉW÷¡3¼[Æjl‰J2\þ}w%0Æ!sá&™$ȫݳgWGëÿŽÐÇè')®â£ow08
Ï!ÎðÙèì,AœvîDÁáNé’Ysÿ‹fC ¼QïäÂ]ÿýò3­æ"å<Þ?Þö&Ìð2Úo—3!§À¤ûl¹¦O%Or&…)Á*H”œsm¹¡†þ„´l‚Û3žþŒ;8 #ŠËY’{;®Cˆsb±SŠ’‡·°w–]Æ䃱G•òLHLì³âœvŽ(™ÆÅ9…ƒ®d 2í6Kcyú(Ⱥ{ä <¡Ÿánp~P¶ºqØß¥ZÈM&„[¢± ÜT¶IÏX¦­…°¹[¤¢nr.Ù&¼•\¦ŠB-°ê“%fŽî4”J7éÒ<QS)¬PtUPtl.àßY9+x×jeeùwû-·e±«*Þ«X'f~[ï¿ð´b‡××x®kǰþãñ–Ô_u3Ž;ýî 
ÇÇðÆc©—i1øýÏøñá4¿Ü<_Çÿ¼Üâúøx;ƒ!k–3ÚX° 婃ûž’KŸ­+“È—åÒ‰X± $ü±íþ
273 0 obj
974
endobj
274 0 obj<</Type/Page/Parent 207 0 R/Contents 275 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 8 0 R/F9 9 0 R/Fc 10 0 R>>>>>>endobj
275 0 obj<</Length 276 0 R/Filter/FlateDecode>>stream
WKSã8¾ó+z}Ù ›„$„³'CU3 ÙÓfŠ-Û[òHr2ù÷Ó-%Æ1’)8Äv«ûëî¯úq0„þ
átÇóƒËéÁÑ͆C˜Æøer6îŸÁ4êLS±ÐÆ‚]*ÐeÆ
Dœe`TƳ,…MÁ¢d9»ß±È8̹ ØUÁ£>LSaÿKÃã2ƒeÊ¥“TZ$B¢::B*>MŸÐ÷Gd<Kµ”]HÕ’/¸†Xi(´Ö1N‹áš>EŠù§–-ÙÊ@ʬ‚¥ÒÏ2!Â7©Ð‘s
,{æ¦a<dzíÂ(”1b.2aWÀd¬´*gV„,Ã0Ä")5¢Q¥}‰ùsfxe¡¼Ã¡’–Kk¶B%¤±œEýµýѤ?ÞÄž-˜ÈØœ´qƒÇÒg;º ×É!ÚêÌl49/0X tfà?
¾eë}ž¯ðŸ7£‹(¼ g7¯—w1òìÞ³ÞTfø2-¾?YͬB yd²òubHÔžE}Úõiq¢³þ®wºÛøè¯£ÿ¶ý$Ôendstream
³OþÃ&ÍèÁwT(ˆA)´$ÈÑS„›hU˜Ãmsµø´Ùú뵉¯*¡(ÁÅýõ^ªºMUo™
ŒCÁB^Süía/½¼
ñþÛt/UH€0u‚‚Y˵ Ú#쾌kê;[â?‘6”– ‡ýJ<ØË
³ŽŠcÃma&6móiªKdm ófƒ8 –‰È¦cëÅãÕí-Ì:W]¸ÿÚ…éÅe.»p<ê
@@ -708,12 +720,12 @@ endobj
åvmüQgC¶?6¨* rcÚ®a‘¿Hø J*;„3ánøÚ¤íMšK5“ášü—ƒ»iÑdIeȃ#J,qõL&"œ2ÓvËv«òt-IôâCKgu¬(QTVÇiQç7;e.K`èçùæ%»„
L!“Íÿ,‰fixw^ÕÍ–Þt¬‰Oýq@ÇÏ·NV†•;B/´2Êǃu¯Ü,|Ž1Er÷uÝuÁ¦îØW@+Ml´æÇGâyÈÞ³_\ãwendstream
endobj
280 0 obj<</Type/Page/Parent 207 0 R/Contents 281 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 8 0 R/F9 9 0 R>>>>>>endobj
281 0 obj<</Length 282 0 R/Filter/FlateDecode>>stream
xÚ…TaoÚ0ýί8åS§‰$ ¾mU«Vê4¦fš¦ušŒcˆWÇf¶Ó*ÿ~w mZJY,…8ðÞó½»Ç߃ƒyˆzô©%Š5dóIÌ`6ŸBQž|€1,2A:ø(„mLPfó®øƒ€)0F€qO²yœ¨¨”Qñ-¡Jé…S+é!Tξ-o@Û
¬•–>î‰PùC|JT)²äq§ü½’NB°p¡LÙa¯vA°—ò=fÖ Ëu5׺¬“%(ÓQõ éŽá$¹ç.ÍÖ'ˆÞ£?R9)ÞÆðÃ6 ¸¡âÌOG…®Z¥"[ˆú%3žMzS
aͺ{*czÜ—£wjÓ8”5])Çl¢’¹ÒûßzçÏQ{ö* ûÇ aÐÊ’‹
.b NzÛ8A•óX|GcÑr+g<öݺ®ÙÉÕr B+iB çHD:ÏlÑÊH"Ú5ÆÛ±À~!atfë
279 0 obj
257
endobj
280 0 obj<</Type/Page/Parent 207 0 R/Contents 281 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 8 0 R/F9 9 0 R>>>>>>endobj
281 0 obj<</Length 282 0 R/Filter/FlateDecode>>stream
xÚ…TaoÚ0ýί8åS§‰$ ¾mU«Vê4¦fš¦ušŒcˆWÇf¶Ó*ÿ~w mZJY,…8ðÞó½»Ç߃ƒyˆzô©%Š5dóIÌ`6ŸBQž|€1,2A:ø(„mLPfó®øƒ€)0F€qO²yœ¨¨”Qñ-¡Jé…S+é!Tξ-o@Û
¬•–>î‰PùC|JT)²äq§ü½’NB°p¡LÙa¯vA°—ò=fÖ Ëu5׺¬“%(ÓQõ éŽá$¹ç.ÍÖ'ˆÞ£?R9)ÞÆðÃ6 ¸¡âÌOG…®Z¥"[ˆú%3žMzS
aͺ{*czÜ—£wjÓ8”5])Çl¢’¹ÒûßzçÏQ{ö* ûÇ aÐÊ’‹
.b NzÛ8A•óX|GcÑr+g<öݺ®ÙÉÕr B+iB çHD:ÏlÑÊH"Ú5ÆÛ±À~!atfë
@@ -726,14 +738,14 @@ endobj
652
endobj
283 0 obj<</Type/Page/Parent 207 0 R/Contents 284 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 8 0 R/F9 9 0 R/Fc 10 0 R>>>>>>endobj
ᆾ†¼:å5µCÄ?>FñÇ_;Ðkxy9‡77ðCH¯¿Öq´9Æé 轿@÷ ³W±_&É5x;nVFÀZïÏ“Ö ´®oý×ÇþF—wÇoSnÐêÒ¤¯3>•9î˜J_»ïÑÜ'4Vjõ6<;ÃTNypÉ–nídQ™¥4ŠÊpAã÷óíõÍrÁúÑ›Ë<‘ÏÅÂÂd³¹-Nщ‚hŸy´N¸Òí¦nâ¢Ì
ª¸µ¥ÈóHÇ`[qR—&¥Mff‰¼É·Rqª3´ ÂL[+'9zàøU³O F5­Rñ¾×FþKl‰4Ek[uE~Øk?ý´Oß& ‡ûp ÊbB@wåQ§kàšy8ëïõß’mP´™Z³˜©öÕõ5‹… Q±n0EùDÌL.V'Ég@ô# .k/ïÓ†4F›¿s}´ÖË wmé°®½ñÜÆD-È%ÓPP“Ä=•ÝTeÓÌÊœ ÝùöæÂ(’k[oí½õ)Ç'Ì¡‘Ö:ÝšÍÚ±Xt¢Á`0ŒèÝÆý¥¤Á=¡3‹ZX‘´1Gh? ;äÝyXÈG< ÞˆGÃ0^ÿÏxñ0î®Ç› ©P)æ¹×•Hû+rÅݳï³J—Ü.{“.]â>µ¥ÙbwqïÝæ˜œoæhÙòc:MKc0 Öƒ®Œÿ®ˆ¿oGd|t¾“ VìT–€Ó0CÃgXÍ'ʲû}É®¶“])ŒR,‘×¼|_ÔÑvÔNÊû{¾µ¬Fl{‚_é㋵^n]/æþRCúK YL
Ÿ|3#ߟ‚ŠWÖ‹~sû‘›R.3#Ë™u·³LñÚýG­854y•IcöøAØÊiŸ¹¤OˆíjR~uåV_ûKß(îÞ^<à„£ßÎ.j]uNßè©›óQv–R‘úáHÝ`,…«zéÛïâ½ã./žöYäºþgÄŸ'Ÿ¾‰AH`endstream
endobj
285 0 obj
1010
endobj
286 0 obj<</Type/Page/Parent 207 0 R/Contents 287 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 8 0 R/F9 9 0 R>>>>>>endobj
284 0 obj<</Length 285 0 R/Filter/FlateDecode>>stream
xÚ¥VmSã6þίØÉ`JÛ¤¹$ßh7M+f:íÑé(öTl)'ÉäÒ_»VlòäÚIˆ¼oϳ«GúrAHœöø?%.D$SzÒëwƒ>$ÙQò€pœüC{ˇG¥Eã—jû#˜JÌ3Ù‹’>•“©p˜›+Q èiõÔà—­“ê¾zÀÕ”~6*ƒ™°v®MÑ–³Y.1ã”!´£Ó æÂ¦Ú¬†ãÿ}ƒ¯%ÕÊ ©,´Ú­`é÷‚î  2ªµíd¯"c«ª@¶ÜRÁ{ƒ¨æ2}€1
‰à1üyûËíÝqåNá$W‹Û 
ᆾ†¼:å5µCÄ?>FñÇ_;Ðkxy9‡77ðCH¯¿Öq´9Æé 轿@÷ ³W±_&É5x;nVFÀZïÏ“Ö ´®oý×ÇþF—wÇoSnÐêÒ¤¯3>•9î˜J_»ïÑÜ'4Vjõ6<;ÃTNypÉ–nídQ™¥4ŠÊpAã÷óíõÍrÁúÑ›Ë<‘ÏÅÂÂd³¹-Nщ‚hŸy´N¸Òí¦nâ¢Ì
ª¸µ¥ÈóHÇ`[qR—&¥Mff‰¼É·Rqª3´ ÂL[+'9zàøU³O F5­Rñ¾×FþKl‰4Ek[uE~Øk?ý´Oß& ‡ûp ÊbB@wåQ§kàšy8ëïõß’mP´™Z³˜©öÕõ5‹… Q±n0EùDÌL.V'Ég@ô# .k/ïÓ†4F›¿s}´ÖË wmé°®½ñÜÆD-È%ÓPP“Ä=•ÝTeÓÌÊœ ÝùöæÂ(’k[oí½õ)Ç'Ì¡‘Ö:ÝšÍÚ±Xt¢Á`0ŒèÝÆý¥¤Á=¡3‹ZX‘´1Gh? ;äÝyXÈG< ÞˆGÃ0^ÿÏxñ0î®Ç› ©P)æ¹×•Hû+rÅݳï³J—Ü.{“.]â>µ¥ÙbwqïÝæ˜œoæhÙòc:MKc0 Öƒ®Œÿ®ˆ¿oGd|t¾“ VìT–€Ó0CÃgXÍ'ʲû}É®¶“])ŒR,‘×¼|_ÔÑvÔNÊû{¾µ¬Fl{‚_é㋵^n]/æþRCúK YL
Ÿ|3#ߟ‚ŠWÖ‹~sû‘›R.3#Ë™u·³LñÚýG­854y•IcöøAØÊiŸ¹¤OˆíjR~uåV_ûKß(îÞ^<à„£ßÎ.j]uNßè©›óQv–R‘úáHÝ`,…«zéÛïâ½ã./žöYäºþgÄŸ'Ÿ¾‰AH`endstream
endobj
285 0 obj
1010
endobj
286 0 obj<</Type/Page/Parent 207 0 R/Contents 287 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 5 0 R/F6 7 0 R/F8 8 0 R/F9 9 0 R>>>>>>endobj
@@ -991,112 +1003,112 @@ xref
0000013728 00000 n
0000013834 00000 n
0000013940 00000 n
0000015516 00000 n
0000015622 00000 n
0000015726 00000 n
0000015831 00000 n
0000015937 00000 n
0000016147 00000 n
0000016181 00000 n
0000016215 00000 n
0000016916 00000 n
0000016965 00000 n
0000017014 00000 n
0000017063 00000 n
0000017112 00000 n
0000017161 00000 n
0000017210 00000 n
0000017259 00000 n
0000017308 00000 n
0000017357 00000 n
0000017406 00000 n
0000017455 00000 n
0000017504 00000 n
0000017553 00000 n
0000017602 00000 n
0000017651 00000 n
0000017700 00000 n
0000017749 00000 n
0000017798 00000 n
0000017847 00000 n
0000017896 00000 n
0000017945 00000 n
0000017994 00000 n
0000018043 00000 n
0000018092 00000 n
0000018141 00000 n
0000018190 00000 n
0000018239 00000 n
0000018288 00000 n
0000018337 00000 n
0000018386 00000 n
0000018435 00000 n
0000018484 00000 n
0000018533 00000 n
0000018582 00000 n
0000018631 00000 n
0000018680 00000 n
0000018729 00000 n
0000018778 00000 n
0000018827 00000 n
0000018876 00000 n
0000018925 00000 n
0000018974 00000 n
0000019023 00000 n
0000019072 00000 n
0000019121 00000 n
0000019170 00000 n
0000019219 00000 n
0000019268 00000 n
0000019317 00000 n
0000019366 00000 n
0000019415 00000 n
0000019464 00000 n
0000019773 00000 n
0000019925 00000 n
0000026317 00000 n
0000026339 00000 n
0000026452 00000 n
0000026554 00000 n
0000026574 00000 n
0000026705 00000 n
0000027474 00000 n
0000027495 00000 n
0000027636 00000 n
0000028014 00000 n
0000028035 00000 n
0000028175 00000 n
0000029089 00000 n
0000029110 00000 n
0000029250 00000 n
0000030693 00000 n
0000030715 00000 n
0000030855 00000 n
0000031753 00000 n
0000031774 00000 n
0000031887 00000 n
0000032089 00000 n
0000032110 00000 n
0000032264 00000 n
0000033166 00000 n
0000033187 00000 n
0000033341 00000 n
0000034270 00000 n
0000034291 00000 n
0000034440 00000 n
0000035151 00000 n
0000035172 00000 n
0000035285 00000 n
0000035488 00000 n
0000035509 00000 n
0000035667 00000 n
0000036420 00000 n
0000036441 00000 n
0000036599 00000 n
0000037622 00000 n
0000037643 00000 n
0000014044 00000 n
0000014148 00000 n
0000014252 00000 n
0000014357 00000 n
0000014462 00000 n
0000014568 00000 n
0000014674 00000 n
0000014780 00000 n
0000014886 00000 n
0000014992 00000 n
0000015096 00000 n
0000015201 00000 n
0000015307 00000 n
0000015411 00000 n
0000015516 00000 n
0000015622 00000 n
0000015726 00000 n
0000015831 00000 n
0000015937 00000 n
0000016147 00000 n
0000016181 00000 n
0000016215 00000 n
0000016916 00000 n
0000016965 00000 n
0000017014 00000 n
0000017063 00000 n
0000017112 00000 n
0000017161 00000 n
0000017210 00000 n
0000017259 00000 n
0000017308 00000 n
0000017357 00000 n
0000017406 00000 n
0000017455 00000 n
0000017504 00000 n
0000017553 00000 n
0000017602 00000 n
0000017651 00000 n
0000017700 00000 n
0000017749 00000 n
0000017798 00000 n
0000017847 00000 n
0000017896 00000 n
0000017945 00000 n
0000017994 00000 n
0000018043 00000 n
0000018092 00000 n
0000018141 00000 n
0000018190 00000 n
0000018239 00000 n
0000018288 00000 n
0000018337 00000 n
0000018386 00000 n
0000018435 00000 n
0000018484 00000 n
0000018533 00000 n
0000018582 00000 n
0000018631 00000 n
0000018680 00000 n
0000018729 00000 n
0000018778 00000 n
0000018827 00000 n
0000018876 00000 n
0000018925 00000 n
0000018974 00000 n
0000019023 00000 n
0000019072 00000 n
0000019121 00000 n
0000019170 00000 n
0000019219 00000 n
0000019268 00000 n
0000019317 00000 n
0000019366 00000 n
0000019415 00000 n
0000019464 00000 n
0000019773 00000 n
0000019925 00000 n
0000026317 00000 n
0000026339 00000 n
0000026452 00000 n
0000026554 00000 n
0000026574 00000 n
0000026705 00000 n
0000027474 00000 n
0000027495 00000 n
0000027636 00000 n
0000028014 00000 n
0000028035 00000 n
0000028175 00000 n
0000029089 00000 n
0000029110 00000 n
0000029250 00000 n
0000030693 00000 n
0000030715 00000 n
0000030855 00000 n
0000031753 00000 n
0000031774 00000 n
0000031887 00000 n
0000032089 00000 n
0000032110 00000 n
0000032264 00000 n
0000033166 00000 n
0000033187 00000 n
0000033341 00000 n
0000034270 00000 n
0000034291 00000 n
0000034440 00000 n
0000039043 00000 n
0000035151 00000 n
0000035172 00000 n
+88 -4
Ver Arquivo
@@ -315,8 +315,8 @@ CUPS:
<DT>/dev/filename
<DD>Sends all output to the specified file.
<DT>http://hostname[:port]/resource
<DT>ipp://hostname[:port]/resource
<DT>http://[username:password@]hostname[:port]/resource
<DT>ipp://[username:password@]hostname[:port]/resource
<DD>Sends all output to the specified IPP printer or server.
The <I>port</I> parameters defaults to 631.
@@ -343,6 +343,10 @@ CUPS:
checking off.
</UL>
<DT>smb://[username:password@]hostname/queue
<DD>Sends all output to the specified SMB (Windows) printer queue
using the SAMBA software.
<DT>socket://hostname[:port]
<DD>Sends all output to the specified printer using the
AppSocket protocol. The <I>port</I> parameter defaults to 9100.
@@ -633,7 +637,47 @@ Allow from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
</PRE></UL>
<P><CODE>Allow</CODE> directives are cummulative, so multiple <CODE>Allow</CODE>
directives can be used to allow access for multiple hosts or networks.
directives can be used to allow access for multiple hosts or networks. The
<CODE>/mm</CODE> notation specifies a CIDR netmask:
<CENTER><TABLE WIDTH="80%" BORDER="1">
<TR>
<TH>mm</TH>
<TH>netmask</TH>
</TR>
<TR>
<TD>0</TD>
<TD>0.0.0.0</TD>
</TR>
<TR>
<TD>1</TD>
<TD>128.0.0.0</TD>
</TR>
<TR>
<TD>2</TD>
<TD>192.0.0.0</TD>
</TR>
<TR>
<TD>...</TD>
<TD>...</TD>
</TR>
<TR>
<TD>8</TD>
<TD>255.0.0.0</TD>
</TR>
<TR>
<TD>16</TD>
<TD>255.255.0.0</TD>
</TR>
<TR>
<TD>24</TD>
<TD>255.255.255.0</TD>
</TR>
<TR>
<TD>32</TD>
<TD>255.255.255.255</TD>
</TR>
</TABLE></CENTER>
<P>The <CODE>Allow</CODE> directive must appear inside a
<CODE>Location</CODE> directive.
@@ -658,7 +702,47 @@ Deny from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
</PRE></UL>
<P><CODE>Deny</CODE> directives are cummulative, so multiple <CODE>Deny</CODE>
directives can be used to allow access for multiple hosts or networks.
directives can be used to allow access for multiple hosts or networks. The
<CODE>/mm</CODE> notation specifies a CIDR netmask:
<CENTER><TABLE WIDTH="80%" BORDER="1">
<TR>
<TH>mm</TH>
<TH>netmask</TH>
</TR>
<TR>
<TD>0</TD>
<TD>0.0.0.0</TD>
</TR>
<TR>
<TD>1</TD>
<TD>128.0.0.0</TD>
</TR>
<TR>
<TD>2</TD>
<TD>192.0.0.0</TD>
</TR>
<TR>
<TD>...</TD>
<TD>...</TD>
</TR>
<TR>
<TD>8</TD>
<TD>255.0.0.0</TD>
</TR>
<TR>
<TD>16</TD>
<TD>255.255.0.0</TD>
</TR>
<TR>
<TD>24</TD>
<TD>255.255.255.0</TD>
</TR>
<TR>
<TD>32</TD>
<TD>255.255.255.255</TD>
</TR>
</TABLE></CENTER>
<P>The <CODE>Deny</CODE> directive must appear inside a
<CODE>Location</CODE> directive.
+10 -10
Ver Arquivo
@@ -26,16 +26,16 @@ Copyright 1997-1999, All Rights Reserved<BR>
<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 3 - Local Access Risks</A></B>
<B><A HREF=#3>3 Local Access Risks</A></B>
<UL>
<LI><A HREF=#3_1>3.1 Security Breaches</A></LI>
</UL>
<B><A HREF=#4>4 Remote Access Risks</A></B>
<UL>
<LI><A HREF=#4_0_1>4.0.1 Denial of Service Attacks</A></LI>
<LI><A HREF=#4_0_2>4.0.2 Security Breaches</A></LI>
<LI><A HREF=#4_1>4.1 Denial of Service Attacks</A></LI>
<LI><A HREF=#4_2>4.2 Security Breaches</A></LI>
</UL>
</UL>
<B><A HREF=#4>4 4 - Remote Access Risks</A></B><B><A HREF=#5>A Glossary</A>
</B>
<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>
@@ -96,7 +96,7 @@ sections:</P>
<LI>IPP/1.0: Model and Semantics </LI>
<LI>RFC 1179, Line Printer Daemon Protocol </LI>
</UL>
<H1><A NAME=3>3 3 - Local Access Risks</A></H1>
<H1><A NAME=3>3 Local Access Risks</A></H1>
<P>Local access risks are those that can be exploited only with a local
user account. This section does not address issues related to
dissemination of the root password or other security issues associated
@@ -107,11 +107,11 @@ 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 4 - Remote Access Risks</A></H1>
<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>
<H3><A NAME=4_0_1>4.0.1 Denial of Service Attacks</A></H3>
<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
of service attacks, including: </P>
<OL>
@@ -153,7 +153,7 @@ large attribute values. </P>
user-level access control as needed for expensive printers. </P>
</LI>
</OL>
<H3><A NAME=4_0_2>4.0.2 Security Breaches</A></H3>
<H2><A NAME=4_2>4.2 Security Breaches</A></H2>
<P>The current CUPS server only supports Basic authentication with
usernames and passwords. This essentially places the clear text of the
username and password on the network. Since CUPS uses the UNIX username
+268 -274
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:19990624171525Z)/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
@@ -9,54 +9,50 @@
7 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica/Encoding 2 0 R>>endobj
8 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica-Bold/Encoding 2 0 R>>endobj
9 0 obj<</Type/Font/Subtype/Type1/BaseFont/Symbol>>endobj
10 0 obj<</Subtype/Link/Rect[72.0 673.2 80.2 686.2]/Border[0 0 0]/Dest[83 0 R/XYZ null 818 0]>>endobj
11 0 obj<</Subtype/Link/Rect[80.2 673.2 107.8 686.2]/Border[0 0 0]/Dest[83 0 R/XYZ null 818 0]>>endobj
12 0 obj<</Subtype/Link/Rect[108.0 660.0 124.5 673.0]/Border[0 0 0]/Dest[83 0 R/XYZ null 737 0]>>endobj
13 0 obj<</Subtype/Link/Rect[124.5 660.0 183.8 673.0]/Border[0 0 0]/Dest[83 0 R/XYZ null 737 0]>>endobj
14 0 obj<</Subtype/Link/Rect[108.0 646.8 124.5 659.8]/Border[0 0 0]/Dest[83 0 R/XYZ null 658 0]>>endobj
15 0 obj<</Subtype/Link/Rect[124.5 646.8 159.6 659.8]/Border[0 0 0]/Dest[83 0 R/XYZ null 658 0]>>endobj
16 0 obj<</Subtype/Link/Rect[159.6 646.8 203.0 659.8]/Border[0 0 0]/Dest[83 0 R/XYZ null 658 0]>>endobj
17 0 obj<</Subtype/Link/Rect[108.0 633.6 124.5 646.6]/Border[0 0 0]/Dest[83 0 R/XYZ null 434 0]>>endobj
18 0 obj<</Subtype/Link/Rect[124.5 633.6 173.1 646.6]/Border[0 0 0]/Dest[83 0 R/XYZ null 434 0]>>endobj
19 0 obj<</Subtype/Link/Rect[173.1 633.6 216.4 646.6]/Border[0 0 0]/Dest[83 0 R/XYZ null 434 0]>>endobj
20 0 obj<</Subtype/Link/Rect[72.0 607.2 80.2 620.2]/Border[0 0 0]/Dest[89 0 R/XYZ null 818 0]>>endobj
21 0 obj<</Subtype/Link/Rect[80.2 607.2 131.6 620.2]/Border[0 0 0]/Dest[89 0 R/XYZ null 818 0]>>endobj
22 0 obj<</Subtype/Link/Rect[108.0 594.0 124.5 607.0]/Border[0 0 0]/Dest[89 0 R/XYZ null 737 0]>>endobj
23 0 obj<</Subtype/Link/Rect[124.5 594.0 154.8 607.0]/Border[0 0 0]/Dest[89 0 R/XYZ null 737 0]>>endobj
24 0 obj<</Subtype/Link/Rect[154.8 594.0 222.6 607.0]/Border[0 0 0]/Dest[89 0 R/XYZ null 737 0]>>endobj
25 0 obj<</Subtype/Link/Rect[108.0 580.8 124.5 593.8]/Border[0 0 0]/Dest[89 0 R/XYZ null 540 0]>>endobj
26 0 obj<</Subtype/Link/Rect[124.5 580.8 152.3 593.8]/Border[0 0 0]/Dest[89 0 R/XYZ null 540 0]>>endobj
27 0 obj<</Subtype/Link/Rect[152.3 580.8 202.4 593.8]/Border[0 0 0]/Dest[89 0 R/XYZ null 540 0]>>endobj
28 0 obj<</Subtype/Link/Rect[72.0 554.4 80.2 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
29 0 obj<</Subtype/Link/Rect[80.2 554.4 88.5 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
30 0 obj<</Subtype/Link/Rect[88.5 554.4 97.5 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
31 0 obj<</Subtype/Link/Rect[97.5 554.4 126.5 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
32 0 obj<</Subtype/Link/Rect[126.5 554.4 160.5 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
33 0 obj<</Subtype/Link/Rect[160.5 554.4 186.1 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
34 0 obj<</Subtype/Link/Rect[108.0 541.2 124.5 554.2]/Border[0 0 0]/Dest[95 0 R/XYZ null 690 0]>>endobj
35 0 obj<</Subtype/Link/Rect[124.5 541.2 163.9 554.2]/Border[0 0 0]/Dest[95 0 R/XYZ null 690 0]>>endobj
36 0 obj<</Subtype/Link/Rect[163.9 541.2 204.2 554.2]/Border[0 0 0]/Dest[95 0 R/XYZ null 690 0]>>endobj
37 0 obj<</Subtype/Link/Rect[144.0 528.0 168.8 541.0]/Border[0 0 0]/Dest[101 0 R/XYZ null 689 0]>>endobj
38 0 obj<</Subtype/Link/Rect[168.8 528.0 200.8 541.0]/Border[0 0 0]/Dest[101 0 R/XYZ null 689 0]>>endobj
39 0 obj<</Subtype/Link/Rect[200.8 528.0 212.7 541.0]/Border[0 0 0]/Dest[101 0 R/XYZ null 689 0]>>endobj
40 0 obj<</Subtype/Link/Rect[212.7 528.0 248.5 541.0]/Border[0 0 0]/Dest[101 0 R/XYZ null 689 0]>>endobj
41 0 obj<</Subtype/Link/Rect[248.5 528.0 282.1 541.0]/Border[0 0 0]/Dest[101 0 R/XYZ null 689 0]>>endobj
42 0 obj<</Subtype/Link/Rect[144.0 514.8 168.8 527.8]/Border[0 0 0]/Dest[101 0 R/XYZ null 247 0]>>endobj
43 0 obj<</Subtype/Link/Rect[168.8 514.8 208.2 527.8]/Border[0 0 0]/Dest[101 0 R/XYZ null 247 0]>>endobj
44 0 obj<</Subtype/Link/Rect[208.2 514.8 248.5 527.8]/Border[0 0 0]/Dest[101 0 R/XYZ null 247 0]>>endobj
45 0 obj<</Subtype/Link/Rect[72.0 488.4 80.2 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
46 0 obj<</Subtype/Link/Rect[80.2 488.4 88.5 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
47 0 obj<</Subtype/Link/Rect[88.5 488.4 97.5 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
48 0 obj<</Subtype/Link/Rect[97.5 488.4 136.3 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
49 0 obj<</Subtype/Link/Rect[136.3 488.4 170.2 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
50 0 obj<</Subtype/Link/Rect[170.2 488.4 195.9 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
51 0 obj<</Subtype/Link/Rect[72.0 462.0 82.7 475.0]/Border[0 0 0]/Dest[107 0 R/XYZ null 818 0]>>endobj
52 0 obj<</Subtype/Link/Rect[82.7 462.0 124.2 475.0]/Border[0 0 0]/Dest[107 0 R/XYZ null 818 0]>>endobj
53 0 obj<</Subtype/Link/Rect[108.0 448.8 126.9 461.8]/Border[0 0 0]/Dest[107 0 R/XYZ null 737 0]>>endobj
54 0 obj<</Subtype/Link/Rect[126.9 448.8 155.0 461.8]/Border[0 0 0]/Dest[107 0 R/XYZ null 737 0]>>endobj
55 0 obj<</Subtype/Link/Rect[108.0 435.6 126.9 448.6]/Border[0 0 0]/Dest[107 0 R/XYZ null 434 0]>>endobj
56 0 obj<</Subtype/Link/Rect[126.9 435.6 172.8 448.6]/Border[0 0 0]/Dest[107 0 R/XYZ null 434 0]>>endobj
57 0 obj[10 0 R
10 0 obj<</Subtype/Link/Rect[72.0 673.2 80.2 686.2]/Border[0 0 0]/Dest[79 0 R/XYZ null 818 0]>>endobj
11 0 obj<</Subtype/Link/Rect[80.2 673.2 107.8 686.2]/Border[0 0 0]/Dest[79 0 R/XYZ null 818 0]>>endobj
12 0 obj<</Subtype/Link/Rect[108.0 660.0 124.5 673.0]/Border[0 0 0]/Dest[79 0 R/XYZ null 737 0]>>endobj
13 0 obj<</Subtype/Link/Rect[124.5 660.0 183.8 673.0]/Border[0 0 0]/Dest[79 0 R/XYZ null 737 0]>>endobj
14 0 obj<</Subtype/Link/Rect[108.0 646.8 124.5 659.8]/Border[0 0 0]/Dest[79 0 R/XYZ null 658 0]>>endobj
15 0 obj<</Subtype/Link/Rect[124.5 646.8 159.6 659.8]/Border[0 0 0]/Dest[79 0 R/XYZ null 658 0]>>endobj
16 0 obj<</Subtype/Link/Rect[159.6 646.8 203.0 659.8]/Border[0 0 0]/Dest[79 0 R/XYZ null 658 0]>>endobj
17 0 obj<</Subtype/Link/Rect[108.0 633.6 124.5 646.6]/Border[0 0 0]/Dest[79 0 R/XYZ null 434 0]>>endobj
18 0 obj<</Subtype/Link/Rect[124.5 633.6 173.1 646.6]/Border[0 0 0]/Dest[79 0 R/XYZ null 434 0]>>endobj
19 0 obj<</Subtype/Link/Rect[173.1 633.6 216.4 646.6]/Border[0 0 0]/Dest[79 0 R/XYZ null 434 0]>>endobj
20 0 obj<</Subtype/Link/Rect[72.0 607.2 80.2 620.2]/Border[0 0 0]/Dest[85 0 R/XYZ null 818 0]>>endobj
21 0 obj<</Subtype/Link/Rect[80.2 607.2 131.6 620.2]/Border[0 0 0]/Dest[85 0 R/XYZ null 818 0]>>endobj
22 0 obj<</Subtype/Link/Rect[108.0 594.0 124.5 607.0]/Border[0 0 0]/Dest[85 0 R/XYZ null 737 0]>>endobj
23 0 obj<</Subtype/Link/Rect[124.5 594.0 154.8 607.0]/Border[0 0 0]/Dest[85 0 R/XYZ null 737 0]>>endobj
24 0 obj<</Subtype/Link/Rect[154.8 594.0 222.6 607.0]/Border[0 0 0]/Dest[85 0 R/XYZ null 737 0]>>endobj
25 0 obj<</Subtype/Link/Rect[108.0 580.8 124.5 593.8]/Border[0 0 0]/Dest[85 0 R/XYZ null 540 0]>>endobj
26 0 obj<</Subtype/Link/Rect[124.5 580.8 152.3 593.8]/Border[0 0 0]/Dest[85 0 R/XYZ null 540 0]>>endobj
27 0 obj<</Subtype/Link/Rect[152.3 580.8 202.4 593.8]/Border[0 0 0]/Dest[85 0 R/XYZ null 540 0]>>endobj
28 0 obj<</Subtype/Link/Rect[72.0 554.4 80.2 567.4]/Border[0 0 0]/Dest[91 0 R/XYZ null 818 0]>>endobj
29 0 obj<</Subtype/Link/Rect[80.2 554.4 109.3 567.4]/Border[0 0 0]/Dest[91 0 R/XYZ null 818 0]>>endobj
30 0 obj<</Subtype/Link/Rect[109.3 554.4 143.2 567.4]/Border[0 0 0]/Dest[91 0 R/XYZ null 818 0]>>endobj
31 0 obj<</Subtype/Link/Rect[143.2 554.4 168.9 567.4]/Border[0 0 0]/Dest[91 0 R/XYZ null 818 0]>>endobj
32 0 obj<</Subtype/Link/Rect[108.0 541.2 124.5 554.2]/Border[0 0 0]/Dest[91 0 R/XYZ null 690 0]>>endobj
33 0 obj<</Subtype/Link/Rect[124.5 541.2 163.9 554.2]/Border[0 0 0]/Dest[91 0 R/XYZ null 690 0]>>endobj
34 0 obj<</Subtype/Link/Rect[163.9 541.2 204.2 554.2]/Border[0 0 0]/Dest[91 0 R/XYZ null 690 0]>>endobj
35 0 obj<</Subtype/Link/Rect[72.0 514.8 80.2 527.8]/Border[0 0 0]/Dest[97 0 R/XYZ null 818 0]>>endobj
36 0 obj<</Subtype/Link/Rect[80.2 514.8 119.0 527.8]/Border[0 0 0]/Dest[97 0 R/XYZ null 818 0]>>endobj
37 0 obj<</Subtype/Link/Rect[119.0 514.8 152.9 527.8]/Border[0 0 0]/Dest[97 0 R/XYZ null 818 0]>>endobj
38 0 obj<</Subtype/Link/Rect[152.9 514.8 178.6 527.8]/Border[0 0 0]/Dest[97 0 R/XYZ null 818 0]>>endobj
39 0 obj<</Subtype/Link/Rect[108.0 501.6 124.5 514.6]/Border[0 0 0]/Dest[97 0 R/XYZ null 704 0]>>endobj
40 0 obj<</Subtype/Link/Rect[124.5 501.6 156.6 514.6]/Border[0 0 0]/Dest[97 0 R/XYZ null 704 0]>>endobj
41 0 obj<</Subtype/Link/Rect[156.6 501.6 168.5 514.6]/Border[0 0 0]/Dest[97 0 R/XYZ null 704 0]>>endobj
42 0 obj<</Subtype/Link/Rect[168.5 501.6 204.2 514.6]/Border[0 0 0]/Dest[97 0 R/XYZ null 704 0]>>endobj
43 0 obj<</Subtype/Link/Rect[204.2 501.6 237.8 514.6]/Border[0 0 0]/Dest[97 0 R/XYZ null 704 0]>>endobj
44 0 obj<</Subtype/Link/Rect[108.0 488.4 124.5 501.4]/Border[0 0 0]/Dest[97 0 R/XYZ null 255 0]>>endobj
45 0 obj<</Subtype/Link/Rect[124.5 488.4 163.9 501.4]/Border[0 0 0]/Dest[97 0 R/XYZ null 255 0]>>endobj
46 0 obj<</Subtype/Link/Rect[163.9 488.4 204.2 501.4]/Border[0 0 0]/Dest[97 0 R/XYZ null 255 0]>>endobj
47 0 obj<</Subtype/Link/Rect[72.0 462.0 82.7 475.0]/Border[0 0 0]/Dest[103 0 R/XYZ null 818 0]>>endobj
48 0 obj<</Subtype/Link/Rect[82.7 462.0 124.2 475.0]/Border[0 0 0]/Dest[103 0 R/XYZ null 818 0]>>endobj
49 0 obj<</Subtype/Link/Rect[108.0 448.8 126.9 461.8]/Border[0 0 0]/Dest[103 0 R/XYZ null 737 0]>>endobj
50 0 obj<</Subtype/Link/Rect[126.9 448.8 155.0 461.8]/Border[0 0 0]/Dest[103 0 R/XYZ null 737 0]>>endobj
51 0 obj<</Subtype/Link/Rect[108.0 435.6 126.9 448.6]/Border[0 0 0]/Dest[103 0 R/XYZ null 434 0]>>endobj
52 0 obj<</Subtype/Link/Rect[126.9 435.6 172.8 448.6]/Border[0 0 0]/Dest[103 0 R/XYZ null 434 0]>>endobj
53 0 obj[10 0 R
11 0 R
12 0 R
13 0 R
@@ -99,46 +95,42 @@
50 0 R
51 0 R
52 0 R
53 0 R
54 0 R
55 0 R
56 0 R
]endobj
58 0 obj<</Dests 59 0 R>>endobj
59 0 obj<</Kids[60 0 R]>>endobj
60 0 obj<</Limits[(1)(5_2)]/Names[(1)61 0 R(1_1)62 0 R(1_2)63 0 R(1_3)64 0 R(2)65 0 R(2_1)66 0 R(2_2)67 0 R(3)68 0 R(3_1)69 0 R(4)70 0 R(4_0_1)71 0 R(4_0_2)72 0 R(5)73 0 R(5_1)74 0 R(5_2)75 0 R]>>endobj
61 0 obj<</D[83 0 R/XYZ null 818 null]>>endobj
62 0 obj<</D[83 0 R/XYZ null 737 null]>>endobj
63 0 obj<</D[83 0 R/XYZ null 658 null]>>endobj
64 0 obj<</D[83 0 R/XYZ null 434 null]>>endobj
65 0 obj<</D[89 0 R/XYZ null 818 null]>>endobj
66 0 obj<</D[89 0 R/XYZ null 737 null]>>endobj
67 0 obj<</D[89 0 R/XYZ null 540 null]>>endobj
68 0 obj<</D[95 0 R/XYZ null 818 null]>>endobj
69 0 obj<</D[95 0 R/XYZ null 690 null]>>endobj
70 0 obj<</D[101 0 R/XYZ null 818 null]>>endobj
71 0 obj<</D[101 0 R/XYZ null 689 null]>>endobj
72 0 obj<</D[101 0 R/XYZ null 247 null]>>endobj
73 0 obj<</D[107 0 R/XYZ null 818 null]>>endobj
74 0 obj<</D[107 0 R/XYZ null 737 null]>>endobj
75 0 obj<</D[107 0 R/XYZ null 434 null]>>endobj
76 0 obj<</Type/Pages/MediaBox[0 0 595 792]/Count 14/Kids[77 0 R
80 0 R
113 0 R
116 0 R
83 0 R
86 0 R
89 0 R
92 0 R
95 0 R
98 0 R
101 0 R
104 0 R
107 0 R
110 0 R
54 0 obj<</Dests 55 0 R>>endobj
55 0 obj<</Kids[56 0 R]>>endobj
56 0 obj<</Limits[(1)(5_2)]/Names[(1)57 0 R(1_1)58 0 R(1_2)59 0 R(1_3)60 0 R(2)61 0 R(2_1)62 0 R(2_2)63 0 R(3)64 0 R(3_1)65 0 R(4)66 0 R(4_1)67 0 R(4_2)68 0 R(5)69 0 R(5_1)70 0 R(5_2)71 0 R]>>endobj
57 0 obj<</D[79 0 R/XYZ null 818 null]>>endobj
58 0 obj<</D[79 0 R/XYZ null 737 null]>>endobj
59 0 obj<</D[79 0 R/XYZ null 658 null]>>endobj
60 0 obj<</D[79 0 R/XYZ null 434 null]>>endobj
61 0 obj<</D[85 0 R/XYZ null 818 null]>>endobj
62 0 obj<</D[85 0 R/XYZ null 737 null]>>endobj
63 0 obj<</D[85 0 R/XYZ null 540 null]>>endobj
64 0 obj<</D[91 0 R/XYZ null 818 null]>>endobj
65 0 obj<</D[91 0 R/XYZ null 690 null]>>endobj
66 0 obj<</D[97 0 R/XYZ null 818 null]>>endobj
67 0 obj<</D[97 0 R/XYZ null 704 null]>>endobj
68 0 obj<</D[97 0 R/XYZ null 255 null]>>endobj
69 0 obj<</D[103 0 R/XYZ null 818 null]>>endobj
70 0 obj<</D[103 0 R/XYZ null 737 null]>>endobj
71 0 obj<</D[103 0 R/XYZ null 434 null]>>endobj
72 0 obj<</Type/Pages/MediaBox[0 0 595 792]/Count 14/Kids[73 0 R
76 0 R
109 0 R
112 0 R
79 0 R
82 0 R
85 0 R
88 0 R
91 0 R
94 0 R
97 0 R
100 0 R
103 0 R
106 0 R
]>>endobj
77 0 obj<</Type/Page/Parent 76 0 R/Contents 78 0 R/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
78 0 obj<</Length 79 0 R/Filter/FlateDecode>>stream
73 0 obj<</Type/Page/Parent 72 0 R/Contents 74 0 R/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
74 0 obj<</Length 75 0 R/Filter/FlateDecode>>stream
xÚíßÜ8rÇ%µúÅOšÙíwNH€ØîO{Ï@pgF›ì[I¢‡]_r‡ öÎë½`ÿûô¯éÖRª*R57<à°¶Én~Äâ·ŠdQý·W7b½ýßøîV¼ÿ ~üßW÷òU"_ýM¼_ÿîíwû|ÿáÃÛµøÝÇ··âööæíݾÖïòÿ|÷ûìßîÅæ_×ûò~_>ìËÇ}yØ—ï÷å÷ÿõîñõ˯Ÿßý‡¸{óîßÅæææÝ=<ˆ;ñÃã«âyxá2+òñv¹\^]ìÊö?–wSç’Ë‹ÈS•‹ËëÇirÉÛ+5R ny71.yÛÅôT.¯“©pᡎhwSàz¸òÈÅ_&ŽsÝG¯\næºåRÙ4Gpf¬ìŽ™e®á™—oǸò+ÏJñ¯âºõ¬•`ã žÍrí—±^Ø2K\òʳ^ü×£så‘×Gùfd®{¯§$crÝx½3—e´ncmËëQ¸däy.“BX-ßÎ5 &€Åƒ)`1ÀÀiÉà‹LËóVqõî·Ì4›k`¬-X2×Ú¼p}òF(³Þ¹2o”òmÏ\y4AÁ}…giLA
ÚÑ ê£såÞ¨eÓW4.rŠÁ2Ç‹Á4<Yì‰\r|,ÏïK8Àå…Ö¹2ω²±Ì%#7¸Ë\kÏ‘²°Ê•yΔÄ"—+Vˆrb®Øs¨l¬qå.auJLO4PQLP40QL*ÒÀk=–+u
«cÀ`z0˜ Æcœ3ŽKºˆÕ×Ã51Ã`z.5Ã`¸áº¸\._?îÊýîâC¿ƒ ùº9Éw÷ z¸ü–¤ùpÕÏ€AßÃuÙ¹Tº7@[p­ûªò¨-­‡õÐãpÒ%77xÃæb‡´tq&ÙŒËÅ
@@ -171,143 +163,149 @@ w
N#îâ2‰ç+ÿ gµ8M°¬š¤­ªKâšÇöÉ„Ãp¥ç?R` š¤­ªKâ
ËnnÆÕ‘~xúçüb[%±JJw¤ôuI\»û_§Ç´è•+ÐýÃŽ§”TܶÕçÇIº›Â«Þ¸"]:ÎñL9/ÁD-©;x®õñóvŸ¼éë n4qcP™FÚº$®ø(C;KOzã:žu^nÔÖ>“âIεuI\pÎ~õ‹Þ¸N!z£·‡~ˆJ¾X_WÉÕLìÜS¤Çùºs_ýq•òAj½Ÿ¼ÍÉëëR¸²£¬wlÆÕv®W®Wy/qÚÌ¢ÕÖ¥påÇ?îܲ!WÛ9l¬¼ÇQY'u)\Ò;½}ÞÎet¾,µ™¥¢‘Õ¢¯Kà*ŽŽyÿ·ýqÕ²hý¤1’!¢.…ëà˜÷n¹O®Ò‹¶ªª™ÓÕ¥ps¶÷ñ}r=]„mäR©’M[ë⸎9Û×7ãêÌûºT³F(Šº.Þ/ïÝ`²û¿ƒËF>ÛÃUsQ“j9ªº®to{·Ü?×¹·³Z(µAÕ%póÞ-Áõ$
vÒ´Õ%póÞ-raß-šµ‹A[]—|òbó¡¸Î‰×Ý\µº®ƒc>ˆd+—I>öîU2«ª+ÖrµÕ¥pmM0ÈÏû§½pUÝ+tnvêêR¸¶’ágÇhÈ•àö;¸ÚêR¸v#ÕõÆTlËoåÒÕ¥pÁá2¬ßÅerïFTþY´ê|[]
Wz¸Y˜s­Ú—_‹ò:d¦åj«KáÊÎN½7®´<žëÚ×Ô:ÛV—•ŸW­\&÷mý»ó¡ÖJËÕV·#ž¯¼mKVO
Wz¸Y˜s­Ú—_‹ò:d¦åj«KáÊÎN½7®´<žëÚ×Ô:ÛV—•ŸW­\&÷mý»ó¡ÖJËÕV·#ž¯¼mKVO
¸ç°çCHýb±­.…«ô^Øþ¸â–µZ«¥.‰Kฌîeç-Uë\-u\‰9×—nSý±Š¾.‰+nüM\¹^a\9w?ªJ§§ÒÊeôþê^Ì·E+—¾.‰K÷~V»\¥Î^\Úº$®ìäÓÛ¹Œ6²wÞè*Ò”˜Ô5*†ïí9ÊÏë
óS|†ïYr¶¾ë…kx®î×-O“+þ‡åJ&ÉÕ½Á±™$—É‚ù…kx.£…夹æ“ä’ÿ°\á$¹º`³gÊL“+z†¯áïq¼pÀµ~†/îw|V“ä‚gÊ•>ÃÑðwÍÆ*]/{]þÝX¥«Ë+Üï:H¥v¸œ ¤º¤.1ü]αJŒâŠ&pt…Øß½u-à]ö…üb×vÚ¢.=@þ®´k‡‡â‚©²Óß"ßܱ€#ÃqMî÷èÓÎaL´åœc†ÎisuÎ1¯;e0òâœn 0îÀ9 ø]s`Ýa ìÕ1–w« ôű•eÖ­Þ€òŽ9°´»³€zŽ9°¸Û¸e°Ž­ÀÖÝQ âHǘè9À §[Bè+àSBŸ#l p#ë”Ðg-œÂ8%ô€ÒWÕ)¡]äк$ôaZ€œŠ.EôQ·ûzâ’z‰‘n(°B?ŸŒ®J\b:‚˜bf C.‡1Æ(X¡÷¦"‡~™+›Ž ¢
´Ð;!樈
´Ð‡‘Ãy™ !ôŽ ì
´Ð;!樈
´Ð‡‘Ãy™ !ôŽ ì
´Ð;"k”Z=]ޱú*q¥‰¤:…àp”^èÃIÈFPåB}0 Ù«\ˆ­²1¯q‰iG„SÀ?'"‰|ø€7\'„#CzY ´pA8bd¡ ¢›Ù*0«s!Ñόݮ€‚"ˆs÷§×ªÁO`‚¡ï‚a?Ä
pŒ=ÁÐïh€‚$#O°îG?Sp ç'HÆ;ö[£'
w‚á# 9‡‘'X†_J)VyN¤¢#‡ˆ„Sp(ˆÂ1â£ÒmœG]ƒQ΀ØpÌMŽ˜Ð9 ê蘛”­v NÌ•>§L ŽôˆJOÚ‘jÓñ”^PºT%m·M4
¨Ss4CDØÒL˵v×iÛ/PÐ'ØÂQ3,ÇB@vé#bJ3$ ¯pF2Ä5íyÝŠG1DI ]¼ÄÇSâㆂ1ÁFˆqz@Á™`¡‹fXYiçÁ ¿XI©
¨Ss4CDØÒL˵v×iÛ/PÐ'ØÂQ3,ÇB@vé#bJ3$ ¯pF2Ä5íyÝŠG1DI ]¼ÄÇSâㆂ1ÁFˆqz@Á™`¡‹fXYiçÁ ¿XI©
Î|Õ,¨jk
œd™‘½¬ 6° ‹ÉsXC>°rHz€5EV
œåöÐ1‡ Ï àl sd Þ$Tê׌ ÌÇ3 ÔKÎcîç ÇÜi:Ü€±¦;peu°ÃõfŽàB*ý@±ž1ð?j˜c† ÀŸ©Ã ë€í°”éL/AƒÈ)Qà¸ÖX°•Ã5CreŽ ˜Œ¸A8F†Xû©¥qB
Õ*
œåöÐ1‡ Ï àl sd Þ$Tê׌ ÌÇ3 ÔKÎcîç ÇÜi:Ü€±¦;peu°ÃõfŽàB*ý@±ž1ð?j˜c† ÀŸ©Ã ë€í°”éL/AƒÈ)Qà¸ÖX°•Ã5CreŽ ˜Œ¸A8F†Xû©¥qB
Õ*
3Cìuá,ùV…™!öªõا»@sá
±GéÈ l
SCô“‘5^)^`&°}Zâ'o†Z.ém‰¹‘tAalˆ=i¢0ò¡`<i{òÎh+TïŒñ¬íÇ;ç†Öƾ¾—)&#CÙOÌþŠemúHÁÂĵïÅî _\P¹RÒ€ÙÔŠf…d.é&#ó vŒÜ&˜¾,™ƒÅ€Š4¯ .Ú7lË7KaK¨vJVa®Š7vLl¬W-‚ѰôñXÙ_(¹“ÍXz©[QÚ ìõ@JØ~ µÉT=ÈX-·ÑÀžç?[ÏóˆúE!›«ˆ8`õ_:G•[ú×lø\)‹Ëó糖Űø¶8 ‹‹9`žw™ô<Xík£N®ØãüÎ?Ö4.L¸¤Ç/—(k̯xŸ¾2â2°Ý<»î2Ç&UÇò¡›ËdÀhúϾ؟»0ä¢.ÔyýØ7ù°ŒLWaÊ•{vÊÅår¹|ý¸-ËåUdøi c.f½tå?b¸¤ƒ\ \f’8Êpá¸Ü°•¬{ë Ç%§6\H.©Í±¡‡ä*"—¸6ö¸²i
š‹µÓÑ“Æ'6¹rg¸…M.g´ç’ÑT4žÆÅÝÂA4h\NHö¼—Â%'c…4.,}tHâÝñY4®|"VHå9þ%`¹FµDJî •kLïL9~¢rØ“’æÈ\£M1ZÚ k¤)FL,cp3ňg» ®Q¦5Ë€ÃEIC3Ø\ƒk=UŽÇ5°v02™\R¸+…&\CŠ"+u˜Ë5/“ŒÍÅHûÄqs
š‹µÓÑ“Æ'6¹rg¸…M.g´ç’ÑT4žÆÅÝÂA4h\NHö¼—Â%'c…4.,}tHâÝñY4®|"VHå9þ%`¹FµDJî •kLïL9~¢rØ“’æÈ\£M1ZÚ k¤)FL,cp3ňg» ®Q¦5Ë€ÃEIC3Ø\ƒk=UŽÇ5°v02™\R¸+…&\CŠ"+u˜Ë5/“ŒÍÅHûÄqs
´cÞ80àÂ?ûÜ‹&\ý›"?KÓˆ«o0ƒäS3®~UÑ$YØ«Om”mÊÕ˜Y2¾19‡º§…‰}®>–-†éêv¸ìË¢ù½ +\…´k‹×æ=²ÃµµE{Cl
w¸
yåÎ`Ùä²4d—›Â5®BÞËàk[}±ÉÅO­>R]Ûë‰].ƒôjDêö˜\\2»T}pqÈ._ÛîC\ļxÙÃ{.úáÚ–G\v¼y×Ë×÷Ƶµƒ¼X>öõÝ}rí‡ívy¡§ëÇ>¿·o®ÃÀín8,¯.vår¹¼~|ìý+á¡@òëôÕ½|õîûâæ£›ïÞ~wë·wBþôOÙ§ï¥x#
ÈEþó¿þß¾|ùçýò§¯¿‰ìó_þòõŸåŸ·íïÄÍÍ®ýÍÝGñææýÛÛ]û]»7yž½¹y»ÞU{s³Ù~ú›ÛOþðËoç…/?ÿôë_ÙW¼{ÿöCés~þëo_þôßÿóuÛÉß½ÙþßÇŸþò‘íþò—mG~ùüåïŸÚ5MäéÿiÁñ½endstream
yåÎ`Ùä²4d—›Â5®BÞËàk[}±ÉÅO­>R]Ûë‰].ƒôjDêö˜\\2»T}pqÈ._ÛîC\ļxÙÃ{.úáÚ–G\v¼y×Ë×÷Ƶµƒ¼X>öõÝ}rí‡ívy¡§ëÇ>¿·o®ÃÀín8,¯.vår¹¼~|ìý+á¡@òëôÕ½|õîûâæ£›ïÞ~wë·wBþôOÙ§ï¥x#
ÈEþó¿þß¾|ùçýò§¯¿‰ìó_þòõŸåŸ·íïÄÍÍ®ýÍÝGñææýÛÛ]û]»7yž½¹y»ÞU{s³Ù~ú›ÛOþðËoç…/?ÿôë_ÙW¼{ÿöCés~þëo_þôßÿóuÛÉß½ÙþßÇŸþò‘íþò—mG~ùüåïŸÚ5MäéÿiÁñ½endstream
endobj
75 0 obj
6308
endobj
80 0 obj<</Type/Page/Parent 76 0 R/Contents 81 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
76 0 obj<</Type/Page/Parent 72 0 R/Contents 77 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
77 0 obj<</Length 78 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
ár
á
ár
á
äHendstream
endobj
78 0 obj
31
endobj
83 0 obj<</Type/Page/Parent 76 0 R/Contents 84 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>>>endobj
79 0 obj<</Type/Page/Parent 72 0 R/Contents 80 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>>>endobj
80 0 obj<</Length 81 0 R/Filter/FlateDecode>>stream
UKo1¾ó+F9%RÙfè-o!¥í6ª.Æ;œx=[Û ¢¿¾c/Bi«TpÁóú¾o|o¥pÊŸÎ;Ðíƒ,[—“ÖûÛ!¤C˜léŸ÷`’§0–TáÉä¹±ž%ƒÆÞ>$G’Â(GãU¡¤ðŠLã܃4]»vúëd®8*üRX‡²¶Ê¯ÀbEÖCei¡rt …^9ö¦*rNÍôN€$#ÑYðs„+*K2ðøiô-ç’i7é„’™UŒÌ<Áxå<–0=>ºzÌÆGÓøŠÖ1ZH“Óä¿îpï³ þ¼@»P¸ü ÁWX`¿ú–"Ê"°ª6>Z¬ÐFJ!vÚ9ë+oE4º˜À%0ò0nå Ñ@Ž Ô‘Ãl7­`¼‘:³”×Ò;ð0”ä‘!8/L.l¾…àHסƒ…кa±@““
}É÷êÖŽ5L (ºå²æû5ÄÀ%ÚÔúV–üÐÖÊ pI´…è’uÖŠ1§nR‚ŸA¿“Ùx’¤¹™£›Ém{”eÜNѸÏD›€ŸK‰§àéÁ3Í"ø^cÍE›µGç>àŠe¸×C§Ç÷Ùõ;x¸½JÓóáôäŒyØþO—šä »?^k¨pQUc~Ä8Ó*Wæ6íh¯¤««0 Ü´¥òs^îÿ(j#C#„æy?¨Ès,Ë’ìKÃ1Í,-] PdäüXZUù-'tñAEbGYvÍ‹ÐfÉpg(ÚìÆÊ …®«sU¥×[ï 696Ã{1³ç®K]7 kç©T?¸öb½Š¼íwŸán¾…>=楷|^ô
 TüîÕKN»Ó“=¼A¾%ª m*ïÚÃ(ã!$¿Ï0 YvbÃÌiïȶ–Õýý<tášd]2Ä?öîÿû†{gŸ„‰špiŠ]Ö´Œë‰q(܇&¿\çï ˜ï/­§þ9¼ÀW¼½{ÇåØF«CQœ°@VŸ·ôM¡]½'Ésr!9ÖÁƒr/oKÑ‹Õã©úïœãNóÿ‡°«Æ4X›Úhé°Û4fç®78M†œ9¼†ß7“Ö—ÖOªÏ8˜endstream
}É÷êÖŽ5L (ºå²æû5ÄÀ%ÚÔúV–üÐÖÊ pI´…è’uÖŠ1§nR‚ŸA¿“Ùx’¤¹™£›Ém{”eÜNѸÏD›€ŸK‰§àéÁ3Í"ø^cÍE›µGç>àŠe¸×C§Ç÷Ùõ;x¸½JÓóáôäŒyØþO—šä »?^k¨pQUc~Ä8Ó*Wæ6íh¯¤««0 Ü´¥òs^îÿ(j#C#„æy?¨Ès,Ë’ìKÃ1Í,-] PdäüXZUù-'tñAEbGYvÍ‹ÐfÉpg(ÚìÆÊ …®«sU¥×[ï 696Ã{1³ç®K]7 kç©T?¸öb½Š¼íwŸán¾…>=楷|^ô
 TüîÕKN»Ó“=¼A¾%ª m*ïÚÃ(ã!$¿Ï0 YvbÃÌiïȶ–Õýý<tášd]2Ä?öîÿû†{gŸ„‰špiŠ]Ö´Œë‰q(܇&¿\çï ˜ï/­§þ9¼ÀW¼½{ÇåØF«CQœ°@VŸ·ôM¡]½'Ésr!9ÖÁƒr/oKÑ‹Õã©úïœãNóÿ‡°«Æ4X›Úhé°Û4fç®78M†œ9¼†ß7“Ö—ÖOªÏ8˜endstream
endobj
81 0 obj
824
endobj
86 0 obj<</Type/Page/Parent 76 0 R/Contents 87 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
82 0 obj<</Type/Page/Parent 72 0 R/Contents 83 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
83 0 obj<</Length 84 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS041T072PIÑp rt QÐUp
VÎO+)O,JUNM.-Ê,©TJ-È/*Ñ ÉâÒiÒ…ê2‰˜˜˜é™)€ù†
ÁÉù© Q×®@.ü7 £endstream
endobj
áÒw³P04TIS041T072PIÑp rt QÐUp
VÎO+)O,JUNM.-Ê,©TJ-È/*Ñ ÉâÒiÒ…ê2‰˜˜˜é™)€ù†
ÁÉù© Q×®@.ü7 £endstream
endobj
84 0 obj
118
endobj
118
endobj
85 0 obj<</Type/Page/Parent 72 0 R/Contents 86 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>>>endobj
86 0 obj<</Length 87 0 R/Filter/FlateDecode>>stream
xÚ­•OÚ0Åï|Š9²Ò&K 7
90 0 obj<</Length 91 0 R/Filter/FlateDecode>>stream
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Äßà³Éäžî•Æ
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° ç›Ý
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
zbͪmyøÕ²ú¼c›qæ‚byh(ÅŠ˜#ÌÕ] ÅËØ<âGøÂ8º1X¬ŒM̵ÈÅÑÛÑqÑÑ{aßúŸéE?6²æU×~žf­¯­_Ð&Ùûendstream
endobj
91 0 obj
522
endobj
92 0 obj<</Type/Page/Parent 76 0 R/Contents 93 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
87 0 obj
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
xÚ-‹Í1…÷÷)Î’E™[Ͱ5˜5Óë¤n3TE¼½©È9›óó=ˆQb,êâp£FhÞ®À ‰`ÇXÚ
ržl»u+0Ø÷~ˆù}J
¯á•.ùƒNïCÊS¹’)ùS®4Îò¬Æ/Ûñ5iôY¦Ð¾­u"§endstream
endobj
90 0 obj
121
endobj
xÚ-‹Í1…÷÷)Î’E™[Ͱ5˜5Óë¤n3TE¼½©È9›óó=ˆQb,êâp£FhÞ®À ‰`ÇXÚ
ržl»u+0Ø÷~ˆù}J
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
xÚuRÛjÜ0}÷WÌcïnöòØ”
endobj
94 0 obj
121
¥´]úª•Æ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
95 0 obj<</Type/Page/Parent 76 0 R/Contents 96 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
96 0 obj<</Length 97 0 R/Filter/FlateDecode>>stream
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
$o•@+Gü=¹`Þ-ðlÓ ¸<>³O5ô'K@¨“
L@`Ù¦­×"«Œ‰¢h‰fDtJ¨SÃG8Z¯òxØB !Á¤ˆžCdŸF™£MË™†AÛÌ”ýÉèý—O?®ÄÄ‘éýÐB Ǻ´ÃeÞÖ»K?¥ÐºÃYæ.¢Ò'üw›ë5fYƒƒš]ë))çJÍóI|çpfÅŸFçÃ'öŸ8|äÞB\Þ€åY)YA úR6IS2}•L”uð }"énŠÖ'¬cÑ#2G6·äçŠuWçíM1°èxÞ=À_¥×ã£z”îò^®}ÃßHù–0Z`ù~ЄÚ–9¬—Ó+ëïï¿Äû`æXêß/»Ù]ºÞl»2ñ¿»¾ÙÝÔ{F3ìV¾?ôÕ·êšU
95 0 obj<</Length 96 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS041T072PIÑp rt QÐUp
VÎO+)O,JUNM.-Ê,©TJ-È/*Ñ ÉâÒiÒ…ê2[ëìò|ò“s““S‹‹‚2‹³‹AJ\C¸¹Ñ€%3endstream
endobj
450
96 0 obj
131
endobj
99 0 obj<</Length 100 0 R/Filter/FlateDecode>>stream
xÚ-Œ»Â0C÷ûa4$
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ý ^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
132
`K½Âõ$²ÑµŽ)³mëÀ Ô>t(â:- àEÀ­q4H·Æ9f#"sÒ¥œ ¹ñøí
© o­-CO%ªÆÌUiV„yPb3š
¹
102 0 obj<</Length 103 0 R/Filter/FlateDecode>>stream
xÚ…WKo7¾ûWÌÑ$Å’;nOMÚ"µ´_¨]JbÌ%7$×õ×÷›!Wu"€KäÌ|Ž¿œÍéÿæt½ Ë+ªš³wg¯?ÜÐü†ÖøæêzIõù’–4¥;Ýø¤é—ªÒ1Ò‰OñÕÃgœ_Ò|žÏO/ofW|£œUùl೤‚¦´õ‘ªD•r´Ò¤¿¶Ö›¤kê
¾í)²¾R–º¨Ç®~í­ƒop äðq“nf\rÏ/g Îý°5‘¢®’ñŽj¯#9u¸c‡‚¶Š“&ON§Þ‡'âð&è^YË×»`Òn– ž1.2Æåìb6§ß´3(Ö¯é^‡gS ”Tõn~7O`IŒK: ;²ÉÍ83š~ýôñ^>| yî¬ÓA­¬æbë}ºr‰TN7A¸Êvµq›Ÿ8õâ
MW3Ño>#þèü}Lˆ‡¨él2-¢VÞ¹ÌVä \BÉâ=þ 7(EmH¥Æ- ã>™Ðq™tèÛ(U1Õj£Œ‹øp'!ApÐP6úuêáÝ&ÆÛú e—¬»ÔÁ7H¥@Çå‘â™±x:[sj[
®‹ÌÖ4&If×5+€A¨cèPÄ÷8Z,ÁŠ€_Ód”n‹s̆sÒKN†Ü|dž…T·1Ž¡‹FBÕ”¹"-Š0wºÕlG»#ßBaÈÃSe=—ñ…T¤µ§êÀÛ7Ñ`ÅpVqG½Ú1ø¢Œ$+Ò$Öθ#Äâ ŽVù†¯2]#~ÐÄÑÔZÎçVZ 4f³ÍÆØëìÑw\Qìª-€—$ˆö®ÊÑDŒRý]h "VZ;ôw¥Í3¨/nú tÌW"«…¸læÓà¹$Àã¨ßzÀåκÍKQ/‹¨¬÷ÜŽÙs…r´
§oS'ØÚèêrþB¿ÛïV(SÑz±‰YgQ\m~a"NdÝS<'‘Ø5ÜOV…ÍÐ41G&ZæY+5xwr/¤ÝxŒÑmS <÷”ûF%,Îê¡ ¯x80¤~ -ÙšZ¡‹èYYSS×Öh9¹Ò|jû¥ˢŽv"E«Bâùyûñ#ÏÄŸ)¶º2k§ÚÝV9œe¸ÙÁ¬:$E–æL\ZL¾mqxÐlÈ›‚r±Á[†÷é¨÷ïòµ´fL¡«Ò0ª‚ EŽäeçL@¯ÀøŸO×R±/rš|D.·<—–?í÷5¾¬ñf|É盟rïµõL»‚>ûUÌ™²G&Ã@äÓž«”w=æ1+§†&z9³Ä}<¶y,«ÊX¸Zç‚¿1¼2†£2Ï™¹ü_”wøüõõ.óxoþÕ§ôùÇWߟúàLÂ<î3£ûž\
|ZßÅ–µÌ…aÒtÀFó»²·ÃnRÃ÷ã>ä…(ârn;µ$tëÊM;¡^³÷}Ó@ü.2™“Rΰ€A'ç{'Ïç:5ŽQr¥X•8—>µÀl‡0,)x˯ӺfU
œvý·'áÅÖ4Åvy²7-°-å
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\ž•
éñX@yý5•dô$æh ÎèÞðË%EãBŽõéÏÛÓÁ†Õ×8°Ü ¼ Ž@}Ø}@F ÷Æ‘ JÌñsöx^ Ö½¯ >¾eê¿5Ñj½VØ(3ØaóÊE•‡*k»ª±9˜U¾žÑß¸í¥›f–ÉçÇ=¹-B8ŸÍÈ{µ˜ü°=à1Ûù«ªƒ6ò<9Úúc·â-|0¹ü]’ÝøöàÆÅõìæÿZ¾½À© >wÍ¿¿8ûëì?ˆ€lendstream
endobj
‡V+µ­ <ôÈ2õïͳJ-öÉ ¶ß»rQå™
ýÊ.*ì
VM?Oè_Üv©—vVNý‘ÏgcÜìŒ1»ÎÆøðG.nÎ&·8‰3×üïOó£ŽþúYU»endstream
1455
endobj
endobj
99 0 obj
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
Œ&Y´Nÿú'“ˆ¡FB°K{í¯æ¶ÝOIͶõ5YV1ÔS°›Ýã–#¿´·M8‰øñ=ÉÑépÆŽRX‰œ'N¾š—‰U§ÉbUFS_éúÇZ;²%ŸPÏ<{Ë~AΜüendstream
101 0 obj<</Length 102 0 R/Filter/FlateDecode>>stream
xÚ]Q]o0}çWœÇU4NXš=®Ëò6ikØÜÍ|ífÙ¯ßuˆZ©Âºæ|ÝßBa%Âf›™ŠÇ¦¸?ÔP
M/_¶»ºÚ¡é>èn²Îr :ZïÐÈév¤½ÐãˆÁsäò:Ó ØŸ0è‚F ‰£€ų¿!N­LÐÆ3ŒÎ¢wÍs±B©6Õ:Ck2Q`>tÖÆKuC­·UQÍ@¢û7BŠn 4|¯¿~ŽÓ<û±·'Ñ„Nq ­¨ÌÈ70I}"´¾» ±x‚iÖ²ùû|ß÷ŸÊV¼:Qpz’U]‡Y3Ë–R‰+4ƒå%Æ|$ßÖI}Ó’âJ
320
endobj
107 0 obj<</Type/Page/Parent 76 0 R/Contents 108 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
108 0 obj<</Length 109 0 R/Filter/FlateDecode>>stream
T]o›0}çWÜÇíZÒ4…Ç %i¤ªcJ}uÍ
õâf;‹òïwZ©ÝŠ¥N „uçžã{ð¯$‡Kºr¸™ÁÕ¸J¾µÉꄼ„vG•ÅÍÚîË6Ò8Çìékûs\gÅI¯‹le9´h•1 Èó€ Þt¶!ÕXšPZ7j8x´ ™î¬Çì=Qú>0ˤD9MØ î„îÁX°ÈQü‹ŽyÊXÿÌ4Ýà…Š7ÆÔé‘ uЂ3/ŒvÀ©F OèˆüÑÀ`Mo™r±v­`ÿåîžœá{ô1W$÷ìJ“|c÷S‘RžÒ«ò53Xrkô)eSm·)Š6„ÓÈÏtÇl•é«é©ÎŠèñ]=ÔÍt«Š<ÕÃýöj+´[ÛœœGá\5ÕE=Mºª›ï÷ˆ?7@ë"Ìë6»¡µL»
72Âv[§›»i¾[<Jô>­ß¡ˆgÁܽü”ã§Å+uô¼  ÿsJ̋ˬ¤ó
eX¯ÚäGòE8%endstream
endobj
109 0 obj
426
endobj
110 0 obj<</Type/Page/Parent 76 0 R/Contents 111 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F6 6 0 R/F8 7 0 R>>>>>>endobj
111 0 obj<</Length 112 0 R/Filter/FlateDecode>>stream
’MSÂ0†ïý{ÔC+ÅRË‘v„¡C¤ñÄj¤$˜½IU“œö}v÷Ý}õBè˜Âml?ÝxCìÝd1„!à•
ÅI$€—W÷ÈG£Ù5~1ztÖýnDÎÓÚG„®‰ZR\h¦`$…V²‚厔ì“ð]Á¿@˜Ó”˜Ê§ßà')ÎÚáLC*J.0©×IE\„~mšµL¤¤–TV.b1ÿ‰H4—‚TPh"–ÆŒæª$‚¿7‚ƒ=CãvöÌL~²uLØÆ‰Ê'yÚÎÊw•æ¶äN&ä„W¾Ñg³-—¥ÎKCfÍ9+äšÉZTñ­>ÏÍê&àö±È‡íÔ‚©½!嬮m³ÃJÒµƒ…3ì8!¬øž›Ug¼b€õʰ/Ï(ùÊ‹ûÐKúAlóÆ‹A†Á‡Ñ#* +} ŠAÁèNq}„ÛJ¥mºF!øwÝŽÍ
;6…IЃ&0º0 JŠã¦¶RнïõG%¿endstream
endobj
Rž‹H.GôÁþ£îé­°.¢‡ñ“ˆN–o%÷¦Îצî»ÛïTµ‚Z©EfÿôåР\::ú>žµì~$“‚<Qî+óËL+Ö«ÌÚå›ÍÃgiþ:×"öÊy ¤Í@œ1ßšâgñ)Åõendstream
endobj
102 0 obj
381
endobj
103 0 obj<</Type/Page/Parent 72 0 R/Contents 104 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
104 0 obj<</Length 105 0 R/Filter/FlateDecode>>stream
T]o›0}çWÜÇíZÒ4…Ç %i¤ªcJ}uÍ
õâf;‹òïwZ©ÝŠ¥N „uçžã{ð¯$‡Kºr¸™ÁÕ¸J¾µÉꄼ„vG•ÅÍÚîË6Ò8Çìékûs\gÅI¯‹le9´h•1 Èó€ Þt¶!ÕXšPZ7j8x´ ™î¬Çì=Qú>0ˤD9MØ î„îÁX°ÈQü‹ŽyÊXÿÌ4Ýà…Š7ÆÔé‘ uЂ3/ŒvÀ©F OèˆüÑÀ`Mo™r±v­`ÿåîžœá{ô1W$÷ìJ“|c÷S‘RžÒ«ò53Xrkô)eSm·)Š6„ÓÈÏtÇl•é«é©ÎŠèñ]=ÔÍt«Š<ÕÃýöj+´[ÛœœGá\5ÕE=Mºª›ï÷ˆ?7@ë"Ìë6»¡µL»
72Âv[§›»i¾[<Jô>­ß¡ˆgÁܽü”ã§Å+uô¼  ÿsJ̋ˬ¤ó
eX¯ÚäGòE8%endstream
endobj
105 0 obj
426
endobj
106 0 obj<</Type/Page/Parent 72 0 R/Contents 107 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F6 6 0 R/F8 7 0 R>>>>>>endobj
107 0 obj<</Length 108 0 R/Filter/FlateDecode>>stream
’MSÂ0†ïý{ÔC+ÅRË‘v„¡C¤ñÄj¤$˜½IU“œö}v÷Ý}õBè˜Âml?ÝxCìÝd1„!à•
ÅI$€—W÷ÈG£Ù5~1ztÖýnDÎÓÚG„®‰ZR\h¦`$…V²‚厔ì“ð]Á¿@˜Ó”˜Ê§ßà')ÎÚáLC*J.0©×IE\„~mšµL¤¤–TV.b1ÿ‰H4—‚TPh"–ÆŒæª$‚¿7‚ƒ=CãvöÌL~²uLØÆ‰Ê'yÚÎÊw•æ¶äN&ä„W¾Ñg³-—¥ÎKCfÍ9+äšÉZTñ­>ÏÍê&àö±È‡íÔ‚©½!嬮m³ÃJÒµƒ…3ì8!¬øž›Ug¼b€õʰ/Ï(ùÊ‹ûÐKúAlóÆ‹A†Á‡Ñ#* +} ŠAÁèNq}„ÛJ¥mºF!øwÝŽÍ
383
;6…IЃ&0º0 JŠã¦¶RнïõG%¿endstream
endobj
108 0 obj
383
@@ -338,115 +336,111 @@ xref
117 0 obj<</Parent 115 0 R/Count -3/First 118 0 R/Last 120 0 R/Title(1 Scope)/Dest[79 0 R/XYZ null 743 null]/Prev 116 0 R/Next 121 0 R>>endobj
118 0 obj<</Parent 117 0 R/Title(1.1 Identification)/Dest[79 0 R/XYZ null 693 null]/Next 119 0 R>>endobj
119 0 obj<</Parent 117 0 R/Title(1.2 System Overview)/Dest[79 0 R/XYZ null 613 null]/Prev 118 0 R/Next 120 0 R>>endobj
119 0 obj<</Count 6/First 120 0 R/Last 133 0 R>>endobj
120 0 obj<</Parent 119 0 R/Title(Table of Contents)/Dest[113 0 R/XYZ null 756 null]/Next 121 0 R>>endobj
121 0 obj<</Parent 119 0 R/Count -3/First 122 0 R/Last 124 0 R/Title(1 Scope)/Dest[83 0 R/XYZ null 743 null]/Prev 120 0 R/Next 125 0 R>>endobj
122 0 obj<</Parent 121 0 R/Title(1.1 Identification)/Dest[83 0 R/XYZ null 693 null]/Next 123 0 R>>endobj
123 0 obj<</Parent 121 0 R/Title(1.2 System Overview)/Dest[83 0 R/XYZ null 613 null]/Prev 122 0 R/Next 124 0 R>>endobj
124 0 obj<</Parent 121 0 R/Title(1.3 Document Overview)/Dest[83 0 R/XYZ null 389 null]/Prev 123 0 R>>endobj
125 0 obj<</Parent 119 0 R/Count -2/First 126 0 R/Last 127 0 R/Title(2 References)/Dest[89 0 R/XYZ null 743 null]/Prev 121 0 R/Next 128 0 R>>endobj
126 0 obj<</Parent 125 0 R/Title(2.1 CUPS Documentation)/Dest[89 0 R/XYZ null 693 null]/Next 127 0 R>>endobj
120 0 obj<</Parent 117 0 R/Title(1.3 Document Overview)/Dest[79 0 R/XYZ null 389 null]/Prev 119 0 R>>endobj
121 0 obj<</Parent 115 0 R/Count -2/First 122 0 R/Last 123 0 R/Title(2 References)/Dest[85 0 R/XYZ null 743 null]/Prev 117 0 R/Next 124 0 R>>endobj
122 0 obj<</Parent 121 0 R/Title(2.1 CUPS Documentation)/Dest[85 0 R/XYZ null 693 null]/Next 123 0 R>>endobj
123 0 obj<</Parent 121 0 R/Title(2.2 Other Documents)/Dest[85 0 R/XYZ null 495 null]/Prev 122 0 R>>endobj
124 0 obj<</Parent 115 0 R/Count -1/First 125 0 R/Last 125 0 R/Title(3 Local Access Risks)/Dest[91 0 R/XYZ null 743 null]/Prev 121 0 R/Next 126 0 R>>endobj
125 0 obj<</Parent 124 0 R/Title(3.1 Security Breaches)/Dest[91 0 R/XYZ null 646 null]>>endobj
126 0 obj<</Parent 115 0 R/Count -2/First 127 0 R/Last 128 0 R/Title(4 Remote Access Risks)/Dest[97 0 R/XYZ null 743 null]/Prev 124 0 R/Next 129 0 R>>endobj
127 0 obj<</Parent 126 0 R/Title(4.1 Denial of Service Attacks)/Dest[97 0 R/XYZ null 659 null]/Next 128 0 R>>endobj
128 0 obj<</Parent 126 0 R/Title(4.2 Security Breaches)/Dest[97 0 R/XYZ null 210 null]/Prev 127 0 R>>endobj
128 0 obj<</Parent 119 0 R/Count -1/First 129 0 R/Last 129 0 R/Title(3 3 - Local Access Risks)/Dest[95 0 R/XYZ null 743 null]/Prev 125 0 R/Next 132 0 R>>endobj
129 0 obj<</Parent 128 0 R/Count -2/First 130 0 R/Last 131 0 R/Title(3.1 Security Breaches)/Dest[95 0 R/XYZ null 646 null]>>endobj
130 0 obj<</Parent 129 0 R/Title(4.0.1 Denial of Service Attacks)/Dest[101 0 R/XYZ null 743 null]/Next 131 0 R>>endobj
131 0 obj<</Parent 129 0 R/Title(4.0.2 Security Breaches)/Dest[101 0 R/XYZ null 652 null]/Prev 130 0 R>>endobj
132 0 obj<</Parent 119 0 R/Title(4 4 - Remote Access Risks)/Dest[101 0 R/XYZ null 211 null]/Prev 128 0 R/Next 133 0 R>>endobj
133 0 obj<</Parent 119 0 R/Count -2/First 134 0 R/Last 135 0 R/Title(A Glossary)/Dest[107 0 R/XYZ null 743 null]/Prev 132 0 R>>endobj
134 0 obj<</Parent 133 0 R/Title(A.1 Terms)/Dest[107 0 R/XYZ null 693 null]/Next 135 0 R>>endobj
135 0 obj<</Parent 133 0 R/Title(A.2 Acronyms)/Dest[107 0 R/XYZ null 389 null]/Prev 134 0 R>>endobj
136 0 obj<</Type/Catalog/Pages 76 0 R/Names 58 0 R/ViewerPreferences<</PageLayout/TwoColumnRight>>/Outlines 119 0 R/PageMode/UseOutlines/OpenAction[83 0 R/XYZ null null null]>>endobj
xref
0 137
0000000000 65535 f
0000000015 00000 n
0000000221 00000 n
0000000282 00000 n
0000000356 00000 n
0000000434 00000 n
0000000511 00000 n
0000000590 00000 n
0000000666 00000 n
0000000747 00000 n
0000000805 00000 n
0000000907 00000 n
0000001010 00000 n
0000001114 00000 n
0000001218 00000 n
0000001322 00000 n
0000001426 00000 n
0000001530 00000 n
0000001634 00000 n
0000001738 00000 n
0000001842 00000 n
0000001944 00000 n
0000002047 00000 n
0000002151 00000 n
0000002255 00000 n
0000002359 00000 n
0000002463 00000 n
0000002567 00000 n
0000002671 00000 n
0000002773 00000 n
0000002875 00000 n
0000002977 00000 n
0000003080 00000 n
0000003184 00000 n
0000003288 00000 n
0000003392 00000 n
0000003496 00000 n
0000003600 00000 n
0000003705 00000 n
0000003810 00000 n
0000003915 00000 n
0000004020 00000 n
0000004125 00000 n
0000004230 00000 n
0000004335 00000 n
0000004440 00000 n
0000004543 00000 n
0000004646 00000 n
0000004749 00000 n
0000004853 00000 n
0000004958 00000 n
0000005063 00000 n
0000005166 00000 n
0000005270 00000 n
0000005375 00000 n
0000005480 00000 n
0000005585 00000 n
0000005690 00000 n
0000006036 00000 n
0000006068 00000 n
0000006100 00000 n
0000006303 00000 n
0000006350 00000 n
0000006397 00000 n
0000006444 00000 n
0000006491 00000 n
0000006538 00000 n
0000006585 00000 n
0000006632 00000 n
0000006679 00000 n
0000006726 00000 n
0000006774 00000 n
0000006822 00000 n
0000006870 00000 n
0000006918 00000 n
0000006966 00000 n
0000007014 00000 n
0000007186 00000 n
0000007335 00000 n
0000013712 00000 n
0000013733 00000 n
0000013843 00000 n
0000013943 00000 n
0000013962 00000 n
0000014099 00000 n
0000014992 00000 n
0000015012 00000 n
129 0 obj<</Parent 115 0 R/Count -2/First 130 0 R/Last 131 0 R/Title(A Glossary)/Dest[103 0 R/XYZ null 743 null]/Prev 126 0 R>>endobj
130 0 obj<</Parent 129 0 R/Title(A.1 Terms)/Dest[103 0 R/XYZ null 693 null]/Next 131 0 R>>endobj
131 0 obj<</Parent 129 0 R/Title(A.2 Acronyms)/Dest[103 0 R/XYZ null 389 null]/Prev 130 0 R>>endobj
132 0 obj<</Type/Catalog/Pages 72 0 R/Names 54 0 R/ViewerPreferences<</PageLayout/TwoColumnRight>>/Outlines 115 0 R/PageMode/UseOutlines/OpenAction[79 0 R/XYZ null null null]>>endobj
xref
0 133
0000000000 65535 f
0000000015 00000 n
0000000221 00000 n
0000000282 00000 n
0000000356 00000 n
0000000434 00000 n
0000000511 00000 n
0000000590 00000 n
0000000666 00000 n
0000000747 00000 n
0000000805 00000 n
0000000907 00000 n
0000001010 00000 n
0000001114 00000 n
0000001218 00000 n
0000001322 00000 n
0000001426 00000 n
0000001530 00000 n
0000001634 00000 n
0000001738 00000 n
0000001842 00000 n
0000001944 00000 n
0000002047 00000 n
0000002151 00000 n
0000002255 00000 n
0000002359 00000 n
0000002463 00000 n
0000002567 00000 n
0000002671 00000 n
0000002773 00000 n
0000002876 00000 n
0000002980 00000 n
0000003084 00000 n
0000003188 00000 n
0000003292 00000 n
0000003396 00000 n
0000003498 00000 n
0000003601 00000 n
0000003705 00000 n
0000003809 00000 n
0000003913 00000 n
0000004017 00000 n
0000004121 00000 n
0000004225 00000 n
0000004329 00000 n
0000004433 00000 n
0000004537 00000 n
0000004641 00000 n
0000004744 00000 n
0000004848 00000 n
0000004953 00000 n
0000005058 00000 n
0000005163 00000 n
0000005268 00000 n
0000005586 00000 n
0000005618 00000 n
0000005650 00000 n
0000005849 00000 n
0000005896 00000 n
0000005943 00000 n
0000005990 00000 n
0000006037 00000 n
0000006084 00000 n
0000006131 00000 n
0000006178 00000 n
0000006225 00000 n
0000006272 00000 n
0000006319 00000 n
0000006366 00000 n
0000006413 00000 n
0000006461 00000 n
0000006509 00000 n
0000006557 00000 n
0000006728 00000 n
0000006877 00000 n
0000013254 00000 n
0000013275 00000 n
0000013385 00000 n
0000013485 00000 n
0000013504 00000 n
0000013641 00000 n
0000014534 00000 n
0000014554 00000 n
0000014664 00000 n
0000014851 00000 n
0000014871 00000 n
0000015008 00000 n
0000015599 00000 n
0000015619 00000 n
0000015309 00000 n
0000015729 00000 n
0000015919 00000 n
0000015466 00000 n
0000015939 00000 n
0000016067 00000 n
+4 -4
Ver Arquivo
@@ -77,7 +77,7 @@ The following non-CUPS documents are referenced by this document:
<LI>RFC 1179, Line Printer Daemon Protocol
</UL>
<H1>3 - Local Access Risks</H1>
<H1>Local Access Risks</H1>
<P>Local access risks are those that can be exploited only with a local user
account. This section does not address issues related to dissemination of the
@@ -93,13 +93,13 @@ are printed.
<P>This problem can be alleviated by making the request directory readable only
by the user specified in the CUPS configuration file.
<H1>4 - Remote Access Risks</H1>
<H1>Remote Access Risks</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.
<H3>Denial of Service Attacks</H3>
<H2>Denial of Service Attacks</H2>
<P>Like all internet services, the CUPS server is vulnerable to denial of
service attacks, including:
@@ -152,7 +152,7 @@ service attacks, including:
</OL>
<H3>Security Breaches</H3>
<H2>Security Breaches</H2>
<P>The current CUPS server only supports Basic authentication with
usernames and passwords. This essentially places the clear text of the
BIN
Ver Arquivo
Arquivo binário não exibido.
+20 -9
Ver Arquivo
@@ -44,7 +44,7 @@ Copyright 1997-1999, All Rights Reserved<BR>
<UL>
<LI><A HREF=#4_1>General Options</A></LI>
<UL>
<LI><A HREF=#4_1_1>Selecting the Media Size</A></LI>
<LI><A HREF=#4_1_1>Selecting the Media Size, Type, and Source</A></LI>
<LI><A HREF=#4_1_2>Setting the Orientation</A></LI>
<LI><A HREF=#4_1_3>Printing On Both Sides of the Paper</A></LI>
<LI><A HREF=#4_1_4>Selecting a Range of Pages</A></LI>
@@ -317,15 +317,18 @@ lp</CODE> or <CODE>lpstat</CODE> commands. </P>
available when printing with the <CODE>lp</CODE> command. </P>
<H2><A NAME=4_1>General Options</A></H2>
<P>The following options apply when printing all types of files. </P>
<H3><A NAME=4_1_1>Selecting the Media Size</A></H3>
<P>The &quot;-o media=size&quot; option sets the media size: </P>
<H3><A NAME=4_1_1>Selecting the Media Size, Type, and Source</A></H3>
<P>The &quot;-o media=xyz&quot; option sets the media size, type, and/or source: </P>
<UL>
<PRE>
% lp -o media=Letter filename ENTER
% lp -o media=Letter,MultiPurpose filename ENTER
% lp -o media=Letter,Transparency filename ENTER
% lp -o media=Letter,MultiPurpose,Transparency filename ENTER
</PRE>
</UL>
<P>The available media sizes depend on the printer, but most support at
least the following sizes (case is significant): </P>
<P>The available media sizes, types, and sources depend on the printer,
but most support the following options (case is significant): </P>
<UL>
<LI><CODE>Letter</CODE> - US Letter (8.5x11 inches, or 216x279mm) </LI>
<LI><CODE>Legal</CODE> - US Legal (8.5x14 inches, or 216x356mm) </LI>
@@ -333,7 +336,15 @@ least the following sizes (case is significant): </P>
<LI><CODE>COM10</CODE> - US #10 Envelope (9.5x4.125 inches, or
241x105mm) </LI>
<LI><CODE>DL</CODE> - ISO DL Envelope (8.66x4.33 inches, or 220x110mm) </LI>
<LI><CODE>Transparency</CODE> - Transparency media type or source </LI>
<LI><CODE>Upper</CODE> - Upper paper tray </LI>
<LI><CODE>Lower</CODE> - Lower paper tray </LI>
<LI><CODE>MultiPurpose</CODE> - Multi-purpose paper tray </LI>
<LI><CODE>LargeCapacity</CODE> - Large capacity paper tray </LI>
</UL>
<P>The actual options supported are defined in the printer's PPD file
in the <CODE>PageSize</CODE>, <CODE>InputSlot</CODE>, and <CODE>
MediaType</CODE> options. </P>
<H3><A NAME=4_1_2>Setting the Orientation</A></H3>
<P>The &quot;-o landscape&quot; option will rotate the page 90 degrees to print
in landscape orientation: </P>
@@ -354,13 +365,13 @@ will enable duplexing on the printer (if the printer supports it.) The
</PRE>
</UL>
<H3><A NAME=4_1_4>Selecting a Range of Pages</A></H3>
<P>The &quot;-o page-range=pages&quot; option selects a range of pages for
<P>The &quot;-o page-ranges=pages&quot; option selects a range of pages for
printing: </P>
<UL>
<PRE>
% lp -o page-range=1 filename ENTER
% lp -o page-range=1-4 filename ENTER
% lp -o page-range=1-4,7,9-12 filename ENTER
% lp -o page-ranges=1 filename ENTER
% lp -o page-ranges=1-4 filename ENTER
% lp -o page-ranges=1-4,7,9-12 filename ENTER
</PRE>
</UL>
<P>As shown above, the <I>pages</I> value can be a single page, a range
+477 -472
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+25 -8
Ver Arquivo
@@ -305,16 +305,19 @@ when printing with the <CODE>lp</CODE> command.
<P>The following options apply when printing all types of files.
<H3>Selecting the Media Size</H3>
<H3>Selecting the Media Size, Type, and Source</H3>
<P>The "-o media=size" option sets the media size:
<P>The "-o media=xyz" option sets the media size, type, and/or source:
<UL><PRE>
% lp -o media=Letter filename ENTER
% lp -o media=Letter,MultiPurpose filename ENTER
% lp -o media=Letter,Transparency filename ENTER
% lp -o media=Letter,MultiPurpose,Transparency filename ENTER
</PRE></UL>
<P>The available media sizes depend on the printer, but most support at
least the following sizes (case is significant):
<P>The available media sizes, types, and sources depend on the printer, but
most support the following options (case is significant):
<UL>
@@ -329,8 +332,22 @@ least the following sizes (case is significant):
<LI><CODE>DL</CODE> - ISO DL Envelope (8.66x4.33 inches, or 220x110mm)
<LI><CODE>Transparency</CODE> - Transparency media type or source
<LI><CODE>Upper</CODE> - Upper paper tray
<LI><CODE>Lower</CODE> - Lower paper tray
<LI><CODE>MultiPurpose</CODE> - Multi-purpose paper tray
<LI><CODE>LargeCapacity</CODE> - Large capacity paper tray
</UL>
<P>The actual options supported are defined in the printer's PPD file in the
<CODE>PageSize</CODE>, <CODE>InputSlot</CODE>, and <CODE>MediaType</CODE>
options.
<H3>Setting the Orientation</H3>
<P>The "-o landscape" option will rotate the page 90 degrees to print in
@@ -354,12 +371,12 @@ suitable for portrait pages:
<H3>Selecting a Range of Pages</H3>
<P>The "-o page-range=pages" option selects a range of pages for printing:
<P>The "-o page-ranges=pages" option selects a range of pages for printing:
<UL><PRE>
% lp -o page-range=1 filename ENTER
% lp -o page-range=1-4 filename ENTER
% lp -o page-range=1-4,7,9-12 filename ENTER
% lp -o page-ranges=1 filename ENTER
% lp -o page-ranges=1-4 filename ENTER
% lp -o page-ranges=1-4,7,9-12 filename ENTER
</PRE></UL>
<P>As shown above, the <I>pages</I> value can be a single page, a range of
+31 -11
Ver Arquivo
@@ -46,7 +46,7 @@ all: $(TARGETS)
#
clean:
rm -f $(OBJS) $(TARGETS) image.a
rm -f $(OBJS) $(TARGETS) $(LIBCUPSIMAGE)
#
# Install all targets...
@@ -55,50 +55,69 @@ clean:
install:
-$(MKDIR) $(SERVERROOT)/filter
$(CP) $(TARGETS) $(SERVERROOT)/filter
-$(MKDIR) $(LIBDIR)
$(CP) $(LIBCUPSIMAGE) $(LIBDIR)
-if test $(LIBCUPSIMAGE) != "libcupsimage.a"; then \
$(LN) $(LIBCUPSIMAGE) `basename $(LIBCUPSIMAGE) .1`; \
fi
#
# hpgltops
#
hpgltops: $(HPGLOBJS) common.o ../Makedefs ../cups/libcups.a
hpgltops: $(HPGLOBJS) common.o ../Makedefs ../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ $(HPGLOBJS) common.o $(LIBS) -lm
$(HPGLOBJS): hpgltops.h
#
# image.a
# libcupsimage.so.1, libcupsimage.sl.1
#
image.a: $(IMAGEOBJS) ../Makedefs ../cups/libcups.a
libcupsimage.so.1 libcupsimage.sl.1: $(IMAGEOBJS) ../Makedefs
echo Linking $@...
$(DSO) $@ $(IMAGEOBJS) $(DSOLIBS) -lm
-$(LN) $@ `basename $@ .1`
#
# libcupsimage.a
#
libcupsimage.a: $(IMAGEOBJS) ../Makedefs
echo Archiving $@...
$(RM) $@
$(AR) $(ARFLAGS) $@ $(IMAGEOBJS)
$(RANLIB) $@
$(IMAGEOBJS): image.h
#
# imagetops
#
imagetops: imagetops.o common.o image.a ../Makedefs ../cups/libcups.a
imagetops: imagetops.o common.o $(LIBCUPSIMAGE) ../Makedefs \
../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ imagetops.o common.o image.a $(IMGLIBS)
$(CC) $(LDFLAGS) -o $@ imagetops.o common.o -L. -lcupsimage \
$(IMGLIBS) $(LIBS)
imagetops: common.h image.h
#
# imagetoraster
#
imagetoraster: imagetoraster.o common.o image.a ../Makedefs ../cups/libcups.a
imagetoraster: imagetoraster.o common.o $(LIBCUPSIMAGE) ../Makedefs \
../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ imagetoraster.o common.o image.a $(IMGLIBS)
$(CC) $(LDFLAGS) -o $@ imagetoraster.o common.o -L. -lcupsimage \
$(IMGLIBS) $(LIBS)
imagetoraster: common.h image.h
#
# pstops
#
pstops: pstops.o common.o ../Makedefs ../cups/libcups.a
pstops: pstops.o common.o ../Makedefs ../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ pstops.o common.o $(LIBS)
pstops.o: common.h
@@ -107,7 +126,7 @@ pstops.o: common.h
# rastertohp
#
rastertohp: rastertohp.o ../Makedefs ../cups/libcups.a
rastertohp: rastertohp.o ../Makedefs ../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ rastertohp.o $(LIBS)
rastertohp.o: ../cups/raster.h
@@ -116,7 +135,8 @@ rastertohp.o: ../cups/raster.h
# texttops
#
texttops: texttops.o textcommon.o common.o ../Makedefs ../cups/libcups.a
texttops: texttops.o textcommon.o common.o ../Makedefs \
../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ texttops.o textcommon.o common.o $(LIBS)
texttops.o: common.h textcommon.h
+6 -4
Ver Arquivo
@@ -61,7 +61,7 @@ SetCommonOptions(int num_options, /* I - Number of options */
float temp; /* Swapping variable */
ppd_file_t *ppd; /* PPD file */
ppd_size_t *pagesize; /* Current page size */
char *val; /* Option value */
const char *val; /* Option value */
ppd = ppdOpenFile(getenv("PPD"));
@@ -236,9 +236,11 @@ SetCommonOptions(int num_options, /* I - Number of options */
if ((val = cupsGetOption("sides", num_options, options)) != NULL &&
strncmp(val, "two-", 4) == 0)
Duplex = 1;
if ((val = cupsGetOption("Duplex", num_options, options)) != NULL &&
strcmp(val, "DuplexNoTumble") == 0)
else if ((val = cupsGetOption("Duplex", num_options, options)) != NULL &&
strcmp(val, "DuplexNoTumble") == 0)
Duplex = 1;
else if (ppdIsMarked(ppd, "Duplex", "DuplexNoTumble") ||
ppdIsMarked(ppd, "Duplex", "DuplexTumble"))
Duplex = 1;
return (ppd);
+1 -1
Ver Arquivo
@@ -135,7 +135,7 @@ main(int argc, /* I - Number of command-line arguments */
name; /* Name of command */
int num_options; /* Number of print options */
cups_option_t *options; /* Print options */
char *val; /* Option value */
const char *val; /* Option value */
int shading; /* -1 = black, 0 = grey, 1 = color */
float penwidth; /* Default pen width */
+2 -2
Ver Arquivo
@@ -80,9 +80,9 @@ OutputProlog(char *title, /* I - Job title */
else if (!ColorDevice) /* Greyscale */
puts("/setrgbcolor { 0.08 mul exch 0.61 mul add exch 0.31 mul add setgray } bind def\n");
if ((prolog = fopen(CUPS_DATADIR "/HPGLprolog", "r")) == NULL)
if ((prolog = fopen(CUPS_DATADIR "/data/HPGLprolog", "r")) == NULL)
{
perror("ERROR: Unable to open HPGL prolog \"" CUPS_DATADIR "/HPGLprolog\" for reading");
perror("ERROR: Unable to open HPGL prolog \"" CUPS_DATADIR "/data/HPGLprolog\" for reading");
exit(1);
}
-130
Ver Arquivo
@@ -1,130 +0,0 @@
# Microsoft Developer Studio Project File - Name="hpgltops" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=hpgltops - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "hpgltops.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "hpgltops.mak" CFG="hpgltops - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "hpgltops - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "hpgltops - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "hpgltops - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 ../cups/cups.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"hpgltops.exe"
!ELSEIF "$(CFG)" == "hpgltops - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "hpgltops___Win32_Debug"
# PROP BASE Intermediate_Dir "hpgltops___Win32_Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 ../cups/cupsd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"hpgltopsd.exe" /pdbtype:sept
!ENDIF
# Begin Target
# Name "hpgltops - Win32 Release"
# Name "hpgltops - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=".\hpgl-attr.c"
# End Source File
# Begin Source File
SOURCE=".\hpgl-char.c"
# End Source File
# Begin Source File
SOURCE=".\hpgl-config.c"
# End Source File
# Begin Source File
SOURCE=".\hpgl-input.c"
# End Source File
# Begin Source File
SOURCE=".\hpgl-main.c"
# End Source File
# Begin Source File
SOURCE=".\hpgl-polygon.c"
# End Source File
# Begin Source File
SOURCE=".\hpgl-prolog.c"
# End Source File
# Begin Source File
SOURCE=".\hpgl-vector.c"
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=.\hpgltops.h
# End Source File
# End Group
# End Target
# End Project
+4 -6
Ver Arquivo
@@ -284,11 +284,11 @@ ImageSetMaxTiles(image_t *img, /* I - Image to set */
*/
void
ImageSetProfile(float density, /* I - Ink/marker density */
ImageSetProfile(float d, /* I - Ink/marker density */
float g, /* I - Ink/marker gamma */
float matrix[3][3]) /* I - Color transform matrix */
{
int i, j, k; /* Looping vars */
float g; /* Gamma correction */
ImageHaveProfile = 1;
@@ -298,10 +298,8 @@ ImageSetProfile(float density, /* I - Ink/marker density */
for (k = 0; k < 256; k ++)
ImageMatrix[i][j][k] = (int)(k * matrix[i][j] + 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;
ImageDensity[k] = 255.0 * d * pow((float)k / 255.0, g) + 0.5;
}
@@ -701,7 +699,7 @@ flush_tile(image_t *img)
if (img->cachefile == NULL)
{
tmpnam(img->cachename);
cupsTempFile(img->cachename, sizeof(img->cachename));
#ifdef DEBUG
fprintf(stderr, "flush_tile: Creating cache file %s...\n", img->cachename);
+1 -1
Ver Arquivo
@@ -156,7 +156,7 @@ extern image_t *ImageOpen(char *filename, int primary, int secondary,
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 density, float matrix[3][3]);
extern void ImageSetProfile(float d, float g, float matrix[3][3]);
#define ImageGetDepth(img) ((img)->colorspace < 0 ? -(img)->colorspace : (img)->colorspace)
extern int ImageGetCol(image_t *img, int x, int y, int height, ib_t *pixels);
+7 -2
Ver Arquivo
@@ -84,13 +84,14 @@ main(int argc, /* I - Number of command-line arguments */
ppd_file_t *ppd; /* PPD file */
int num_options; /* Number of print options */
cups_option_t *options; /* Print options */
char *val; /* Option value */
const char *val; /* Option value */
int slowcollate; /* Collate copies the slow way */
float g; /* Gamma correction value */
float b; /* Brightness factor */
float zoom; /* Zoom facter */
int ppi; /* Pixels-per-inch */
int hue, sat; /* Hue and saturation adjustment */
int realcopies; /* Real copies being printed */
if (argc != 7)
@@ -258,8 +259,11 @@ main(int argc, /* I - Number of command-line arguments */
if (Copies > 1 && !slowcollate)
{
printf("/#copies %d def\n", Copies);
Copies = 1;
realcopies = Copies;
Copies = 1;
}
else
realcopies = 1;
/*
* Output the pages...
@@ -273,6 +277,7 @@ main(int argc, /* I - Number of command-line arguments */
for (xpage = 0; xpage < xpages; xpage ++)
for (ypage = 0; ypage < ypages; ypage ++, page ++)
{
fprintf(stderr, "PAGE: %d %d\n", page, realcopies);
fprintf(stderr, "INFO: Printing page %d...\n", page);
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
+6 -9
Ver Arquivo
@@ -169,7 +169,7 @@ main(int argc, /* I - Number of command-line arguments */
cups_page_header_t header; /* Page header */
int num_options; /* Number of print options */
cups_option_t *options; /* Print options */
char *val; /* Option value */
const char *val; /* Option value */
int slowcollate, /* Collate copies the slow way */
slowcopies; /* Make copies the "slow" way? */
float g; /* Gamma correction value */
@@ -400,10 +400,7 @@ main(int argc, /* I - Number of command-line arguments */
*/
if (i < ppd->num_profiles)
{
fputs("Setting color profile!\n", stderr);
ImageSetProfile(profile->density, profile->matrix);
}
ImageSetProfile(profile->density, profile->gamma, profile->matrix);
}
/*
@@ -554,6 +551,8 @@ main(int argc, /* I - Number of command-line arguments */
Copies = 1;
}
else
header.NumCopies = 1;
/*
* Create the dithering lookup tables...
@@ -2245,7 +2244,7 @@ format_KCMYcm(cups_page_header_t *header,/* I - Page header */
if (pk)
*ptr++ ^= 32; /* Black */
else if (pc && pm)
*ptr++ ^= 3; /* Blue (light cyan + light magenta) */
*ptr++ ^= 17; /* Blue (cyan + light magenta) */
else if (pc && py)
*ptr++ ^= 6; /* Green (light cyan + yellow) */
else if (pm && py)
@@ -2311,7 +2310,7 @@ format_KCMYcm(cups_page_header_t *header,/* I - Page header */
*kptr ^= bitmask; /* Black */
else if (pc && pm)
{
*lcptr ^= bitmask; /* Blue (light cyan + light magenta) */
*cptr ^= bitmask; /* Blue (cyan + light magenta) */
*lmptr ^= bitmask;
}
else if (pc && py)
@@ -2402,7 +2401,6 @@ format_KCMYcm(cups_page_header_t *header,/* I - Page header */
for (x = xsize; x > 0; x --, r0 += 4)
{
if (r0[0] > dither[x & 15] &&
r0[1] < dither[x & 15] &&
r0[2] < dither[x & 15])
*ptr ^= bitmask;
@@ -2456,7 +2454,6 @@ format_KCMYcm(cups_page_header_t *header,/* I - Page header */
for (x = xsize; x > 0; x --, r0 += 4)
{
if (r0[0] > dither[x & 15] &&
r0[1] < dither[x & 15] &&
r0[2] > dither[x & 15])
*ptr ^= bitmask;
+60 -38
Ver Arquivo
@@ -49,17 +49,17 @@
* Globals...
*/
int NumPages = 0; /* Number of pages in file */
long Pages[MAX_PAGES]; /* Offsets to each page */
char PageLabels[MAX_PAGES][64];
/* Page labels */
char *PageRanges = NULL; /* Range of pages selected */
char *PageSet = NULL; /* All, Even, Odd pages */
int Order = 0, /* 0 = normal, 1 = reverse pages */
Flip = 0, /* Flip/mirror pages */
NUp = 1, /* Number of pages on each sheet (1, 2, 4) */
Collate = 0, /* Collate copies? */
Copies = 1; /* Number of copies */
int NumPages = 0; /* Number of pages in file */
long Pages[MAX_PAGES]; /* Offsets to each page */
char PageLabels[MAX_PAGES][64];
/* Page labels */
const char *PageRanges = NULL; /* Range of pages selected */
const char *PageSet = NULL; /* All, Even, Odd pages */
int Order = 0, /* 0 = normal, 1 = reverse pages */
Flip = 0, /* Flip/mirror pages */
NUp = 1, /* Number of pages on each sheet (1, 2, 4) */
Collate = 0, /* Collate copies? */
Copies = 1; /* Number of copies */
/*
@@ -85,7 +85,7 @@ main(int argc, /* I - Number of command-line arguments */
ppd_file_t *ppd; /* PPD file */
int num_options; /* Number of print options */
cups_option_t *options; /* Print options */
char *val; /* Option value */
const char *val; /* Option value */
char tempfile[255]; /* Temporary file name */
FILE *temp; /* Temporary file */
int number; /* Page number */
@@ -97,6 +97,7 @@ main(int argc, /* I - Number of command-line arguments */
int level; /* Nesting level for embedded files */
int nbytes, /* Number of bytes read */
tbytes; /* Total bytes to read for binary data */
int page; /* Current page sequence number */
if (argc < 6 || argc > 7)
@@ -204,7 +205,7 @@ main(int argc, /* I - Number of command-line arguments */
if (sloworder || slowcollate)
{
temp = fopen(tmpnam(tempfile), "wb+");
temp = fopen(cupsTempFile(tempfile, sizeof(tempfile)), "wb+");
if (temp == NULL)
slowcollate = sloworder = 0;
@@ -276,7 +277,7 @@ main(int argc, /* I - Number of command-line arguments */
if (strncmp(line, "%%BeginDocument:", 16) == 0 ||
strncmp(line, "%%BeginDocument ", 16) == 0) /* Adobe Acrobat BUG */
level ++;
else if (strcmp(line, "%%EndDocument") == 0)
else if (strcmp(line, "%%EndDocument") == 0 && level > 0)
level --;
else if (strncmp(line, "%%Page:", 7) == 0 && level == 0)
break;
@@ -303,12 +304,12 @@ main(int argc, /* I - Number of command-line arguments */
* Then read all of the pages, filtering as needed...
*/
for (;;)
for (page = 1;;)
{
if (strncmp(line, "%%BeginDocument:", 16) == 0 ||
strncmp(line, "%%BeginDocument ", 16) == 0) /* Adobe Acrobat BUG */
level ++;
else if (strcmp(line, "%%EndDocument") == 0)
else if (strcmp(line, "%%EndDocument") == 0 && level > 0)
level --;
else if (strncmp(line, "%%Page:", 7) == 0 && level == 0)
{
@@ -320,7 +321,7 @@ main(int argc, /* I - Number of command-line arguments */
if (strncmp(line, "%%BeginDocument:", 16) == 0 ||
strncmp(line, "%%BeginDocument ", 16) == 0) /* Adobe Acrobat BUG */
level ++;
else if (strcmp(line, "%%EndDocument") == 0)
else if (strcmp(line, "%%EndDocument") == 0 && level > 0)
level --;
else if (strncmp(line, "%%Page:", 7) == 0 && level == 0)
break;
@@ -334,16 +335,22 @@ main(int argc, /* I - Number of command-line arguments */
if (slowcollate || sloworder)
Pages[NumPages] = ftell(temp);
NumPages ++;
if (!sloworder)
{
if (ppd == NULL || ppd->num_filters == 0)
fprintf(stderr, "PAGE: %d %d\n", NumPages, Copies);
if ((NumPages % NUp) == 0)
{
if (ppd == NULL || ppd->num_filters == 0)
fprintf(stderr, "PAGE: %d %d\n", page, Copies);
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
start_nup(NumPages - 1);
printf("%%%%Page: %d %d\n", page, page);
page ++;
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
}
start_nup(NumPages);
}
NumPages ++;
}
}
else if (strncmp(line, "%%BeginBinary:", 14) == 0 ||
@@ -390,19 +397,26 @@ main(int argc, /* I - Number of command-line arguments */
if (slowcollate || sloworder)
{
Pages[NumPages] = ftell(temp);
page = 1;
if (!sloworder)
{
while (Copies > 1)
while (Copies > 0)
{
rewind(temp);
for (number = 0; number < NumPages; number ++)
{
if (ppd == NULL || ppd->num_filters == 0)
fprintf(stderr, "PAGE: %d 1\n", number + 1);
if ((number % NUp) == 0)
{
if (ppd == NULL || ppd->num_filters == 0)
fprintf(stderr, "PAGE: %d 1\n", page);
printf("%%%%Page: %d %d\n", page, page);
page ++;
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
}
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
start_nup(number);
copy_bytes(temp, Pages[number + 1] - Pages[number]);
end_nup(number);
@@ -417,11 +431,17 @@ main(int argc, /* I - Number of command-line arguments */
{
for (number = NumPages - 1; number >= 0; number --)
{
if (ppd == NULL || ppd->num_filters == 0)
fprintf(stderr, "PAGE: %d %d\n", NumPages - number,
slowcollate ? 1 : Copies);
if ((number % NUp) == 0)
{
if (ppd == NULL || ppd->num_filters == 0)
fprintf(stderr, "PAGE: %d %d\n", page,
slowcollate ? 1 : Copies);
printf("%%%%Page: %d %d\n", page, page);
page ++;
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
}
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
start_nup(NumPages - 1 - number);
fseek(temp, Pages[number], SEEK_SET);
copy_bytes(temp, Pages[number + 1] - Pages[number]);
@@ -506,8 +526,8 @@ main(int argc, /* I - Number of command-line arguments */
static int /* O - 1 if selected, 0 otherwise */
check_range(int page) /* I - Page number */
{
char *range; /* Pointer into range string */
int lower, upper; /* Lower and upper page numbers */
const char *range; /* Pointer into range string */
int lower, upper; /* Lower and upper page numbers */
if (PageSet != NULL)
@@ -531,11 +551,11 @@ check_range(int page) /* I - Page number */
{
lower = 1;
range ++;
upper = strtol(range, &range, 10);
upper = strtol(range, (char **)&range, 10);
}
else
{
lower = strtol(range, &range, 10);
lower = strtol(range, (char **)&range, 10);
if (*range == '-')
{
@@ -543,7 +563,7 @@ check_range(int page) /* I - Page number */
if (!isdigit(*range))
upper = 65535;
else
upper = strtol(range, &range, 10);
upper = strtol(range, (char **)&range, 10);
}
else
upper = lower;
@@ -596,7 +616,8 @@ copy_bytes(FILE *fp, /* I - File to read from */
static void
end_nup(int number) /* I - Page number */
{
puts("grestore");
if (Flip || Orientation || NUp > 1)
puts("grestoreall");
switch (NUp)
{
@@ -683,7 +704,8 @@ start_nup(int number) /* I - Page number */
tx, ty; /* Translation values for subpage */
puts("gsave");
if (Flip || Orientation || NUp > 1)
puts("gsave");
if (Flip)
printf("%.0f 0 translate -1 1 scale\n", PageWidth);
-107
Ver Arquivo
@@ -1,107 +0,0 @@
# Microsoft Developer Studio Project File - Name="pstops" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=pstops - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "pstops.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "pstops.mak" CFG="pstops - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "pstops - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "pstops - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "pstops - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 ../cups/cups.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"pstops.exe"
!ELSEIF "$(CFG)" == "pstops - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "pstops___Win32_Debug"
# PROP BASE Intermediate_Dir "pstops___Win32_Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 ../cups/cups.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"pstopsd.exe" /pdbtype:sept
!ENDIF
# Begin Target
# Name "pstops - Win32 Release"
# Name "pstops - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\pstops.c
!IF "$(CFG)" == "pstops - Win32 Release"
!ELSEIF "$(CFG)" == "pstops - Win32 Debug"
# ADD CPP /Zi
!ENDIF
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# End Target
# End Project
+49 -11
Ver Arquivo
@@ -39,13 +39,14 @@
* Globals...
*/
int WrapLines = 0, /* Wrap text in lines */
int WrapLines = 1, /* Wrap text in lines */
SizeLines = 60, /* Number of lines on a page */
SizeColumns = 80, /* Number of columns on a line */
PageColumns = 1, /* Number of columns on a page */
ColumnGutter = 0, /* Number of characters between text columns */
ColumnWidth = 80, /* Width of each column */
PrettyPrint = 0; /* Do pretty code formatting */
PrettyPrint = 0, /* Do pretty code formatting */
Copies = 1; /* Number of copies */
lchar_t **Page = NULL; /* Page characters */
int NumPages = 0; /* Number of pages in document */
int CharsPerInch = 10; /* Number of character columns per inch */
@@ -53,28 +54,46 @@ int LinesPerInch = 6; /* Number of lines per inch */
int UTF8 = 0; /* Use UTF-8 encoding? */
char *Keywords[] = /* List of known keywords... */
{
"and",
"and_eq",
"asm",
"auto",
"bitand",
"bitor",
"bool",
"break",
"case",
"catch",
"char",
"class",
"compl",
"const",
"continue",
"default",
"delete",
"double",
"do",
"double",
"else",
"enum",
"explicit",
"extern",
"false",
"float",
"for",
"friend",
"goto",
"if",
"inline",
"int",
"long",
"mutable",
"namespace",
"new",
"not",
"not_eq",
"operator",
"or",
"or_eq",
"private",
"protected",
"public",
@@ -86,12 +105,21 @@ char *Keywords[] = /* List of known keywords... */
"static",
"struct",
"switch",
"template",
"this",
"throw",
"true",
"try",
"typedef",
"typename",
"union",
"unsigned",
"virtual",
"void",
"volatile",
"while"
"while",
"xor",
"xor_eq"
};
@@ -123,7 +151,7 @@ TextMain(char *name, /* I - Name of filter */
page_column; /* Current page column */
int num_options; /* Number of print options */
cups_option_t *options; /* Print options */
char *val; /* Option value */
const char *val; /* Option value */
char keyword[64], /* Keyword string */
*keyptr; /* Pointer into string */
int keycol; /* Column where keyword starts */
@@ -165,10 +193,21 @@ TextMain(char *name, /* I - Name of filter */
options = NULL;
num_options = cupsParseOptions(argv[5], 0, &options);
if ((val = cupsGetOption("prettyprint", num_options, options)) != NULL)
{
PrettyPrint = 1;
PageLeft = 72.0f;
PageRight = PageWidth - 36.0f;
PageBottom = PageBottom > 36.0f ? PageBottom : 36.0f;
PageTop = PageLength - 36.0f;
CharsPerInch = 12;
LinesPerInch = 8;
}
if ((ppd = SetCommonOptions(num_options, options, 1)) != NULL)
ppdClose(ppd);
WrapLines = cupsGetOption("wrap", num_options, options) != NULL;
WrapLines = cupsGetOption("nowrap", num_options, options) == NULL;
if ((val = cupsGetOption("columns", num_options, options)) != NULL)
PageColumns = atoi(val);
@@ -180,12 +219,11 @@ TextMain(char *name, /* I - Name of filter */
LinesPerInch = atoi(val);
if ((val = cupsGetOption("prettyprint", num_options, options)) != NULL)
{
PrettyPrint = 1;
PageTop -= 216.0f / LinesPerInch;
}
PageTop -= 216.0f / LinesPerInch;
WriteProlog(argv[3], argv[2]);
Copies = atoi(argv[4]);
WriteProlog(argv[3], argv[2], ppd);
/*
* Read text from the specified source and print it...
+3 -2
Ver Arquivo
@@ -64,7 +64,8 @@ extern int WrapLines, /* Wrap text in lines */
PageColumns, /* Number of columns on a page */
ColumnGutter, /* Number of characters between text columns */
ColumnWidth, /* Width of each column */
PrettyPrint; /* Do pretty code formatting */
PrettyPrint, /* Do pretty code formatting */
Copies; /* Number of copies to produce */
extern lchar_t **Page; /* Page characters */
extern int NumPages; /* Number of pages in document */
extern int CharsPerInch, /* Number of character columns per inch */
@@ -80,7 +81,7 @@ extern char *Keywords[]; /* List of known keywords... */
extern int TextMain(char *name, int argc, char *argv[]);
extern void WriteEpilogue(void);
extern void WritePage(void);
extern void WriteProlog(char *title, char *user);
extern void WriteProlog(char *title, char *user, ppd_file_t *ppd);
/*
+20 -21
Ver Arquivo
@@ -113,8 +113,9 @@ WritePage(void)
*/
void
WriteProlog(char *title, /* I - Title of job */
char *user) /* I - Username */
WriteProlog(char *title, /* I - Title of job */
char *user, /* I - Username */
ppd_file_t *ppd) /* I - PPD file info */
{
int line; /* Current output line */
char *charset; /* Character set string */
@@ -335,41 +336,43 @@ WriteProlog(char *title, /* I - Title of job */
printf("\t0 0 %.1f %.1f rectfill\n", PageRight - PageLeft,
144.0f / LinesPerInch);
puts("\tFN setfont");
puts("\tFB setfont");
puts("\t0 setgray");
if (Duplex)
{
puts("\tdup 2 mod 0 eq {");
printf("\t\tT stringwidth pop neg %.1f add %.1f } {\n",
PageRight - PageLeft - 36.0f / LinesPerInch, 54.0f / LinesPerInch);
PageRight - PageLeft - 36.0f / LinesPerInch,
(0.5f + 0.157f) * 72.0f / LinesPerInch);
printf("\t\t%.1f %.1f } ifelse\n", 36.0f / LinesPerInch,
54.0f / LinesPerInch);
(0.5f + 0.157f) * 72.0f / LinesPerInch);
}
else
printf("\t%.1f %.1f\n", 36.0f / LinesPerInch,
54.0f / LinesPerInch);
(0.5f + 0.157f) * 72.0f / LinesPerInch);
puts("\tmoveto T show");
printf("\t(%s)\n", curdate);
printf("\tdup stringwidth pop neg 2 div %.1f add %.1f\n",
(PageRight - PageLeft) * 0.5, 54.0f / LinesPerInch);
(PageRight - PageLeft) * 0.5,
(0.5f + 0.157f) * 72.0f / LinesPerInch);
puts("\tmoveto show");
if (Duplex)
{
puts("\tdup P cvs exch 2 mod 0 eq {");
printf("\t\t%.1f %.1f } {\n", 36.0f / LinesPerInch,
54.0f / LinesPerInch);
(0.5f + 0.157f) * 72.0f / LinesPerInch);
printf("\t\tdup stringwidth pop neg %.1f add %.1f } ifelse\n",
PageRight - PageLeft - 36.0f / LinesPerInch,
54.0f / LinesPerInch);
(0.5f + 0.157f) * 72.0f / LinesPerInch);
}
else
printf("\tP cvs dup stringwidth pop neg %.1f add %.1f\n",
PageRight - PageLeft - 36.0f / LinesPerInch,
54.0f / LinesPerInch);
(0.5f + 0.157f) * 72.0f / LinesPerInch);
puts("\tmoveto show");
puts("\tgrestore");
@@ -452,8 +455,8 @@ write_string(int col, /* I - Start column */
y = PageTop;
}
x += (float)col * 72.0 / (float)CharsPerInch;
y -= (float)(row + 1) * 72.0 / (float)LinesPerInch;
x += (float)col * 72.0f / (float)CharsPerInch;
y -= (float)(row + 0.843) * 72.0f / (float)LinesPerInch;
attr = s->attr;
@@ -506,15 +509,6 @@ write_string(int col, /* I - Start column */
}
putchar('>');
if (attr & ATTR_RED)
puts("r");
else if (attr & ATTR_GREEN)
puts("g");
else if (attr & ATTR_BLUE)
puts("b");
else
puts("S");
}
else
{
@@ -551,7 +545,10 @@ write_string(int col, /* I - Start column */
}
putchar(')');
}
if (PrettyPrint)
{
if (attr & ATTR_RED)
puts("r");
else if (attr & ATTR_GREEN)
@@ -561,6 +558,8 @@ write_string(int col, /* I - Start column */
else
puts("S");
}
else
puts("S");
}
-98
Ver Arquivo
@@ -1,98 +0,0 @@
# Microsoft Developer Studio Project File - Name="texttops" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=texttops - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "texttops.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "texttops.mak" CFG="texttops - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "texttops - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "texttops - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "texttops - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W1 /GX /O2 /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 ../cups/cups.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"texttops.exe"
!ELSEIF "$(CFG)" == "texttops - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W1 /Gm /GX /Zi /Od /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 ../cups/cupsd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"texttopsd.exe" /pdbtype:sept
!ENDIF
# Begin Target
# Name "texttops - Win32 Release"
# Name "texttops - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\texttops.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# End Target
# End Project
+2
Ver Arquivo
@@ -97,6 +97,8 @@ 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.
+2
Ver Arquivo
@@ -97,6 +97,8 @@ 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.
+2
Ver Arquivo
@@ -97,6 +97,8 @@ 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.
+2
Ver Arquivo
@@ -97,6 +97,8 @@ Priority
Copies
File Size
Pending
Output Mode
Resolution
400 Su browser envió una petición que este servidor no podría entender.
Este servidor no podría verificar que le autoricen a tener acceso al recurso.
Usted debe pagar tener acceso a este servidor.
+2
Ver Arquivo
@@ -97,6 +97,8 @@ Priority
Copies
File Size
Pending
Output Mode
Resolution
400 Votre browser a envoyé une demande que ce serveur ne pourrait pas comprendre.
Ce serveur ne pourrait pas vérifier que vous êtes autorisés à accéder à la ressource.
Vous devez payer pour accéder à ce serveur.
+2
Ver Arquivo
@@ -97,6 +97,8 @@ Priority
Copies
File Size
Pending
Output Mode
Resolution
400 Il vostro browser ha trasmesso una richiesta che questo server non potrebbe capire.
Questo server non potrebbe verificare che siete autorizzati ad accedere alla risorsa.
Dovete pagare accedere a questo server.
+4 -2
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: lp.1 380 1999-06-10 16:15:04Z mike $"
.\" "$Id: lp.1 491 1999-07-07 14:03:48Z mike $"
.\"
.\" lp/cancel man page for the Common UNIX Printing System (CUPS).
.\"
@@ -38,6 +38,8 @@ cancel \- cancel jobs
.I priority
] [ \-s ] [ \-t
.I title
] [
.I file(s)
]
.br
.B cancel
@@ -65,5 +67,5 @@ CUPS Software User's Manual
.SH COPYRIGHT
Copyright 1993-1999 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: lp.1 380 1999-06-10 16:15:04Z mike $".
.\" End of "$Id: lp.1 491 1999-07-07 14:03:48Z mike $".
.\"
BIN
Ver Arquivo
Arquivo binário não exibido.
+60 -5
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: lpr.1 327 1999-05-14 17:03:06Z mike $"
.\" "$Id: lpr.1 491 1999-07-07 14:03:48Z mike $"
.\"
.\" lpr man page for the Common UNIX Printing System (CUPS).
.\"
@@ -26,16 +26,71 @@
lpr \- print files
.SH SYNOPSIS
.B lpr
[ \-P
.I destination
] [ \-#
.I num-copies
[ \-l ] [ \-o
.I option
] [ \-p] [ \-r ] [ \-C/J/T
.I title
] [
.I file(s)
]
.SH DESCRIPTION
\fBlpr\fR
\fBlpr\fR submits files for printing. Files named on the command line are sent
to the named printer (or the system default destination if no destination is
specified). If no files are listed on the command-line \fBlpr\fR reads the
print file from the standard input.
.SH OPTIONS
The following options are recognized by \fBlpr\fR:
.TP 5
\-P \fIdestination\fR
.br
Prints files to the named printer.
.TP 5
\-# \fIcopies\fR
.br
Sets the number of copies to print from 1 to 100.
.TP 5
\-C \fIname\fR
.br
Sets the job name.
.TP 5
\-J \fIname\fR
.br
Sets the job name.
.TP 5
\-T \fIname\fR
.br
Sets the job name.
.TP 5
\-l
.br
Specifies that the print file is already formatted for the destination and
should be sent without filtering. This option is equivalent to "-oraw".
.TP 5
\-o \fIoption\fR
.br
Sets the job name.
.TP 5
\-p
.br
Specifies that the print file should be formatted with a shaded header with
the date, time, job name, and page number. This option is equivalent to
"-oprettyprint" and is only useful when printing text files.
.TP 5
\-r
.br
Specifies that the named print files should be deleted after printing them.
.SH COMPATIBILITY
The ... options are not supported by CUPS and will produce a warning message
if used.
The "c", "d", "f", "g", "i", "m", "n", "t", "v", and "w" options are not
supported by CUPS and will produce a warning message if used.
.SH SEE ALSO
cancel(1), lp(1), lpstat(1),
CUPS Software User's Manual
.SH COPYRIGHT
Copyright 1993-1999 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: lpr.1 327 1999-05-14 17:03:06Z mike $".
.\" End of "$Id: lpr.1 491 1999-07-07 14:03:48Z mike $".
.\"
BIN
Ver Arquivo
Arquivo binário não exibido.
+2 -2
Ver Arquivo
@@ -1,5 +1,5 @@
%
% "$Id: Fontmap 309 1999-05-10 21:34:54Z mike $"
% "$Id: Fontmap 569 1999-07-30 12:57:12Z mike $"
%
% Fontmap file for the Common UNIX Printing System (CUPS).
%
@@ -94,5 +94,5 @@
/Times /Times-Roman ;
%
% End of "$Id: Fontmap 309 1999-05-10 21:34:54Z mike $".
% End of "$Id: Fontmap 569 1999-07-30 12:57:12Z mike $".
%
+23 -8
Ver Arquivo
@@ -34,7 +34,7 @@ include ../Makedefs
# Object files...
#
OBJS = gconf.o gdevabuf.o gdevcups.o gdevddrw.o gdevdflt.o \
LIBOBJS = gconf.o gdevabuf.o gdevcups.o gdevddrw.o gdevdflt.o \
gdevemap.o gdevm1.o gdevm16.o gdevm2.o gdevm24.o \
gdevm32.o gdevm4.o gdevm8.o gdevmem.o gdevmpla.o \
gdevmrop.o gdevnfwd.o gdevpipe.o gdevprn.o gp_nofb.o \
@@ -58,7 +58,7 @@ OBJS = gconf.o gdevabuf.o gdevcups.o gdevddrw.o gdevdflt.o \
idparam.o igc.o igcref.o igcstr.o iinit.o ilocate.o \
imain.o iname.o interp.o iparam.o ireclaim.o isave.o \
iscan.o iscanbin.o iscannum.o iscantab.o istack.o \
iutil.o iutil2.o pstoraster.o sbcp.o sbhc.o sbwbs.o \
iutil.o iutil2.o sbcp.o sbhc.o sbwbs.o \
scfd.o scfdtab.o scfe.o scfetab.o sdctc.o sdctd.o \
sdcte.o seexec.o sfile.o sfilter1.o sfilter2.o shc.o \
shcgen.o siscale.o sjpegc.o sjpegd.o sjpege.o \
@@ -77,6 +77,7 @@ OBJS = gconf.o gdevabuf.o gdevcups.o gdevddrw.o gdevdflt.o \
zpacked.o zpaint.o zpath.o zpath1.o zpcolor.o zrelbit.o \
zstack.o zstring.o zsysvm.o ztoken.o ztype.o zupath.o \
zusparam.o zvmem.o zvmem2.o
OBJS = $(LIBOBJS) genarch.o pstoraster.o
#
# Data files...
@@ -98,7 +99,7 @@ DFILES = Fontmap gs_btokn.ps gs_ccfnt.ps gs_cidfn.ps gs_cmap.ps \
# Targets...
#
TARGETS = genarch arch.h pstoraster
TARGETS = genarch arch.h libgs.a pstoraster
#
# Make everything...
@@ -121,6 +122,7 @@ clean:
install: $(TARGETS)
-$(MKDIR) $(SERVERROOT)/filter
$(CP) pstoraster $(SERVERROOT)/filter
-$(LN) pstoraster $(SERVERROOT)/filter/pdftops
-$(MKDIR) $(DATADIR)/pstoraster
$(CP) $(DFILES) $(DATADIR)/pstoraster
@@ -136,16 +138,29 @@ arch.h: genarch
./genarch arch.h
#
# pstoraster - PostScript conversion filter.
# libgs.a - GhostScript interpreter library...
#
pstoraster: $(OBJS) ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o pstoraster $(OBJS) $(IMGLIBS)
libgs.a: $(LIBOBJS) ../Makedefs
echo Archiving $@...
$(RM) $@
$(AR) $(ARFLAGS) $@ $(LIBOBJS)
$(RANLIB) $@
gdevcups.o: ../cups/raster.h
$(OBJS): arch.h ../config.h ../Makedefs
gconf.o iconf.o gscdef.o: gconfig.h
$(LIBOBJS): arch.h ../config.h ../Makedefs
#
# pstoraster - PostScript RIP filter.
#
pstoraster: pstoraster.o libgs.a ../Makedefs ../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o pstoraster pstoraster.o libgs.a \
$(LIBJPEG) $(LIBZ) $(LIBS) -lm
pstoraster.o: arch.h ../config.h ../Makedefs
#
# End of "$Id$".
+28 -7
Ver Arquivo
@@ -102,6 +102,7 @@ private dev_proc_open_device(cups_open);
private int cups_print_pages(gx_device_printer *, FILE *, int);
private int cups_put_params(gx_device *, gs_param_list *);
private void cups_set_color_info(gx_device *);
private dev_proc_sync_output(cups_sync_output);
/*
* The device descriptors...
@@ -121,7 +122,7 @@ private gx_device_procs cups_procs =
{
cups_open,
cups_get_matrix,
gx_default_sync_output,
cups_sync_output,
gdev_prn_output_page,
cups_close,
cups_map_rgb_color,
@@ -937,7 +938,7 @@ cups_map_rgb_color(gx_device *pdev, /* I - Device info */
if (ik)
i = 32;
else if (ic && im)
i = 3;
i = 17;
else if (ic && iy)
i = 6;
else if (im && iy)
@@ -1113,7 +1114,14 @@ cups_print_pages(gx_device_printer *pdev, /* I - Device info */
*/
srcbytes = gdev_prn_raster(pdev);
src = (unsigned char *)gs_malloc(srcbytes, 1, "cups_print_pages");
#ifdef DEBUG
fprintf(stderr, "DEBUG: cupsBitsPerPixel = %d, cupsWidth = %d, cupsBytesPerLine = %d, srcbytes = %d\n",
cups->header.cupsBitsPerPixel, cups->header.cupsWidth,
cups->header.cupsBytesPerLine, srcbytes);
#endif /* DEBUG */
src = (unsigned char *)gs_malloc(srcbytes, 1, "cups_print_pages");
if (src == NULL) /* can't allocate input buffer */
return_error(gs_error_VMerror);
@@ -1243,7 +1251,7 @@ cups_put_params(gx_device *pdev, /* I - Device info */
else if (code == 0) \
{ \
strncpy(cups->header.name, (const char *)stringval.data, \
stringval.size); \
stringval.size); \
cups->header.name[stringval.size] = '\0'; \
}
@@ -1491,8 +1499,8 @@ cups_set_color_info(gx_device *pdev) /* I - Device info */
if (cups->header.cupsBitsPerColor == 1)
{
cups->header.cupsBitsPerPixel = 8;
cups->color_info.depth = 8;
cups->color_info.num_components = 6;
cups->color_info.depth = 4;
cups->color_info.num_components = 4;
break;
}
@@ -1602,7 +1610,7 @@ cups_set_color_info(gx_device *pdev) /* I - Device info */
}
d = profile->density;
g = 1.0 / profile->density;
g = profile->gamma;
for (k = 0; k <= gx_max_color_value; k ++)
{
@@ -1619,6 +1627,19 @@ cups_set_color_info(gx_device *pdev) /* I - Device info */
}
/*
* 'cups_sync_output()' - Keep the user informed of our status...
*/
private int /* O - Error status */
cups_sync_output(gx_device *pdev) /* I - Device info */
{
fprintf(stderr, "INFO: Processing page %d...\n", cups->page);
return (0);
}
/*
* 'cups_print_chunked()' - Print a page of chunked pixels.
*/
+2 -2
Ver Arquivo
@@ -61,8 +61,8 @@ const char gp_current_directory_name[] = ".";
FILE *
gp_open_scratch_file(const char *prefix, char *fname, const char *mode)
{ char *temp;
if ( (temp = getenv("TEMP")) == NULL )
strcpy(fname, "/tmp/");
if ( (temp = getenv("TMPDIR")) == NULL )
strcpy(fname, "/var/tmp/");
else
{ strcpy(fname, temp);
if ( strlen(fname) != 0 && fname[strlen(fname) - 1] != '/' )
+1 -1
Ver Arquivo
@@ -264,7 +264,7 @@ WRITEDICTS
currentdict /cntdict .undef
currentdict /w2dict .undef
/printobject { (%stdout) (w) file 3 1 roll writeobject } odef
/printobject { (%stderr) (w) file 3 1 roll writeobject } odef
/writeobject { exch 1 array astore .writeobjects } odef
% Implement binary error message output.
+6 -4
Ver Arquivo
@@ -206,7 +206,7 @@ userdict /=string 256 string put
revision 100 idiv ( )
product
counttomark
{ (%stdout) (w) file exch false .writecvp
{ (%stderr) (w) file exch false .writecvp
} repeat pop
} bind def
@@ -454,7 +454,7 @@ systemdict /internaldict .knownget not { 0 } if type /operatortype ne
/write=
{ 1 index exch write=only (\n) writestring
} bind def
/=only { (%stdout) (w) file exch write=only } bind def
/=only { (%stderr) (w) file exch write=only } bind def
/= { =only (\n) print } bind def
/=print /=only load def
% Temporarily define == as = for the sake of runlibfile0.
@@ -834,7 +834,7 @@ end
/write==only exch def
/write== {1 index exch write==only (\n) writestring} bind def
/==only { (%stdout) (w) file exch write==only } bind def
/==only { (%stderr) (w) file exch write==only } bind def
/== {==only (\n) print} bind def
% Define [write]===[only], an extension that prints dictionaries
@@ -866,7 +866,7 @@ end
/write===only exch def
/write=== {1 index exch write===only (\n) writestring} bind def
/===only { (%stdout) (w) file exch write===only } bind def
/===only { (%stderr) (w) file exch write===only } bind def
/=== { ===only (\n) print } bind def
(END PROCS) VMDEBUG
@@ -1183,6 +1183,8 @@ NOCACHE { 0 setcachelimit } if
>> sethalftone
} bind def
.setdefaultscreen
% Set a null transfer function...
{} bind settransfer
initgraphics
% The interpreter relies on there being at least 2 entries
% on the graphics stack. Establish the second one now.
+14 -3
Ver Arquivo
@@ -251,16 +251,27 @@ level2dict begin
% Define the keys used in input attribute matching.
/.inputattrkeys [
/PageSize /MediaColor /MediaWeight /MediaType /InsertSheet
%%%% MRS - The current CUPS backend driver does not register any of
%%%% these attributes with GhostScript from the PPD file. As
%%%% a result, we must comment out everything but PageSize
%%%% which is processed differently from all other attributes.
% /PageSize /MediaColor /MediaWeight /MediaType /InsertSheet
/PageSize
] readonly def
% Define other keys used in media selection.
/.inputselectionkeys [
/MediaPosition /Orientation
%%%% MRS - The current CUPS backend driver does not register any of
%%%% these attributes with GhostScript from the PPD file. As
%%%% a result, we must comment out everything.
% /MediaPosition /Orientation
] readonly def
% Define the keys used in output attribute matching.
/.outputattrkeys [
/OutputType
%%%% MRS - The current CUPS backend driver does not register any of
%%%% these attributes with GhostScript from the PPD file. As
%%%% a result, we must comment out everything.
% /OutputType
] readonly def
% Define all the parameters that should always be copied to the merged
+2 -2
Ver Arquivo
@@ -42,14 +42,14 @@ long gs_buildtime = GS_BUILDTIME;
#ifndef GS_COPYRIGHT
# define GS_COPYRIGHT\
"Copyright 1997-1999 Easy Software Products, All Rights Reserved.\n"\
"Copyright 1993-1999 Easy Software Products, All Rights Reserved.\n"\
"Copyright 1996 Aladdin Enterprises, Menlo Park, CA. All rights reserved."
#endif
const char *gs_copyright = GS_COPYRIGHT;
#ifndef GS_PRODUCT
# define GS_PRODUCT\
"ESP Print v4.0"
"ESP Print Pro v4.0"
#endif
const char *gs_product = GS_PRODUCT;
+1
Ver Arquivo
@@ -56,6 +56,7 @@ drawopdict begin
/j { j } def
/w { w } def
/M { M } def
/gs { pop } def
end
% ---------------- Color setting ---------------- %
+3 -2
Ver Arquivo
@@ -231,8 +231,9 @@ pdfdict begin
[ (%%Pages: (atend)) #dsc
[ (%%EndComments) #dsc
[ (%%BeginProlog) #dsc
[ (% This copyright applies to everything between here and the %%EndProlog:) #dsc
[ (% ) copyright #dsc
%%%% MRS - Sorry, because we have a two-line copyright now this doesn't work!
% [ (% This copyright applies to everything between here and the %%EndProlog:) #dsc
% [ (% ) copyright #dsc
(gs_pdf.ps) #dscfile
PSLevel1 { (gs_l2img.ps) #dscfile } if
[ (%%EndProlog) #dsc
+19 -1
Ver Arquivo
@@ -31,6 +31,8 @@
*
* Contents:
*
* main() - Main entry for pstoraster.
* define_string() - Define a string value...
*/
/*
@@ -38,6 +40,7 @@
*/
#include <cups/string.h>
#include <stdlib.h>
#include "ghost.h"
#include "imain.h"
#include "iminst.h"
@@ -67,8 +70,15 @@ main(int argc, /* I - Number of command-line arguments */
int code; /* Run status code */
int exit_code; /* Exit code */
ref error_object; /* Error object */
char *content_type; /* CONTENT_TYPE environment variable */
/*
* Force the locale to "C" to avoid bugs...
*/
putenv("LANG=C");
/*
* Create a PostScript interpreter instance...
*/
@@ -106,7 +116,15 @@ main(int argc, /* I - Number of command-line arguments */
gs_main_init1(minst);
initial_enter_name("QUIET", &vtrue);
initial_enter_name("NOPAUSE", &vtrue);
define_string("OutputFile", "-");
if ((content_type = getenv("CONTENT_TYPE")) != NULL &&
strcmp(content_type, "application/pdf") == 0)
{
fputs("INFO: Converting PDF file to PostScript...\n", stderr);
define_string("PSFile", "%stdout");
initial_enter_name("NODISPLAY", &vtrue);
}
else
define_string("OutputFile", "-");
define_string("FONTPATH", CUPS_DATADIR "/fonts");
/*
+2 -2
Ver Arquivo
@@ -485,7 +485,7 @@ zbytesavailable(register os_ptr op)
int
zflush(register os_ptr op)
{ stream *s;
int code = zget_stdout(&s);
int code = zget_stderr(&s);
if ( code < 0 )
return code;
sflush(s);
@@ -526,7 +526,7 @@ zprint(register os_ptr op)
ref rstdout;
int code;
check_read_type(*op, t_string);
code = zget_stdout(&s);
code = zget_stderr(&s);
if ( code < 0 )
return code;
status = write_string(op, s);
+2 -2
Ver Arquivo
@@ -57,7 +57,7 @@ install:
# Make the scheduler executable, "cupsd".
#
cupsd: $(CUPSDOBJS) ../cups/libcups.a
cupsd: $(CUPSDOBJS) ../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o cupsd $(CUPSDOBJS) $(LIBS)
@@ -69,7 +69,7 @@ $(CUPSDOBJS): auth.h classes.h client.h conf.h cupsd.h dirsvc.h job.h \
# Make the test program, "testspeed".
#
testspeed: testspeed.o ../cups/libcups.a
testspeed: testspeed.o ../cups/$(LIBCUPS)
echo Linking $@...
$(CC) $(LDFLAGS) -o testspeed testspeed.o $(LIBS)
+39 -17
Ver Arquivo
@@ -296,27 +296,42 @@ IsAuthorized(client_t *con) /* I - Connection */
address = ntohl(con->http.hostaddr.sin_addr.s_addr);
hostlen = strlen(con->http.hostname);
switch (auth)
if (address == 0x7f000001 || strcasecmp(con->http.hostname, "localhost") == 0)
{
case AUTH_ALLOW : /* Order Deny,Allow */
if (check_auth(address, con->http.hostname, hostlen,
best->num_deny, best->deny))
auth = AUTH_DENY;
/*
* Access from localhost (127.0.0.1) is always allowed...
*/
if (check_auth(address, con->http.hostname, hostlen,
best->num_allow, best->allow))
auth = AUTH_ALLOW;
break;
auth = AUTH_ALLOW;
}
else
{
/*
* Do authorization checks on the domain/address...
*/
case AUTH_DENY : /* Order Allow,Deny */
if (check_auth(address, con->http.hostname, hostlen,
best->num_allow, best->allow))
auth = AUTH_ALLOW;
switch (auth)
{
case AUTH_ALLOW : /* Order Deny,Allow */
if (check_auth(address, con->http.hostname, hostlen,
best->num_deny, best->deny))
auth = AUTH_DENY;
if (check_auth(address, con->http.hostname, hostlen,
best->num_deny, best->deny))
auth = AUTH_DENY;
break;
if (check_auth(address, con->http.hostname, hostlen,
best->num_allow, best->allow))
auth = AUTH_ALLOW;
break;
case AUTH_DENY : /* Order Allow,Deny */
if (check_auth(address, con->http.hostname, hostlen,
best->num_allow, best->allow))
auth = AUTH_ALLOW;
if (check_auth(address, con->http.hostname, hostlen,
best->num_deny, best->deny))
auth = AUTH_DENY;
break;
}
}
if (auth == AUTH_DENY)
@@ -429,6 +444,13 @@ IsAuthorized(client_t *con) /* I - Connection */
if (strcmp(con->username, grp->gr_mem[i]) == 0)
return (HTTP_OK);
/*
* Check to see if the default group ID matches for the user...
*/
if (grp->gr_gid == pw->pw_gid)
return (HTTP_OK);
/*
* The user isn't part of the specified group, so deny access...
*/

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