Comparar commits

..

1 Commits

Autor SHA1 Mensagem Data
msweet ef3d238e0b Import cups.org releases
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/tags/release-1.0b8@4306 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-10 18:56:23 +00:00
94 arquivos alterados com 2212 adições e 3668 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
+2 -1
Ver Arquivo
@@ -69,7 +69,8 @@ CFLAGS = @CFLAGS@ $(OPTIM) -I.. $(OPTIONS)
DSOLIBS = @DSOLIBS@
IMGLIBS = @IMGLIBS@ -lm
LDFLAGS = @LDFLAGS@ $(OPTIM)
LIBS = -L../cups -lcups @LIBS@
LIBS = -L../cups -lcups $(NETLIBS) @LIBS@
NETLIBS = @NETLIBS@
OPTIM = @OPTIM@
OPTIONS =
-139
Ver Arquivo
@@ -1,139 +0,0 @@
<HTML>
<HEAD>
<TITLE>README - Common UNIX Printing System</TITLE>
</HEAD>
<BODY>
<H1>README - CUPS v1.0b4</H1>
<H2>Contents</H2>
<UL>
<LI><A HREF="#intro">Introduction</A>
<LI><A HREF="#require">Requirements</A>
<LI><A HREF="#use">Using CUPS</A>
<LI><A HREF="#known">Known Problems</A>
<LI><A HREF="#report">Reporting Problems</A>
<LI><A HREF="#resources">Other Resources</A>
<LI><A HREF="#legal">Legal Stuff</A>
</UL>
<H2><A NAME="intro">Introduction</A></H2>
The Common UNIX Printing System provides a portable printing layer for
UNIX&reg; operating systems. It has been developed by Easy Software
Products to promote a standard printing solution for all UNIX vendors
and users. CUPS provides the System V and Berkeley command-line
interfaces.
<P>CUPS uses the Internet Printing Protocol (IETF-IPP) as the basis
for managing print jobs and queues. The Line Printer Daemon (LPD,
RFC1179), Server Message Block (SMB), and AppSocket protocols are also
supported with reduced functionality.
<P>CUPS adds network printer browsing and PostScript Printer
Description (&quot;PPD&quot;)-based printing options to support real
world applications under UNIX.
<P>CUPS also includes a customized version of GNU GhostScript (currently
based off GNU GhostScript 4.03) and an image file RIP that can be used to
support non-PostScript printers.
<H2><A NAME="require">Requirements</A></H2>
You'll need an ANSI C compiler to build CUPS on your system. As its name
implies, CUPS is designed to run on the UNIX operating system, however
the CUPS interface library and most of the filters and backends supplied
with CUPS should also run under Microsoft&reg; Windows&reg;.
<P>For the image file filters you'll need the JPEG, PNG, TIFF, and ZLIB
libraries. CUPS will build without these, but with reduced functionality.
<P>If you make changes to the man pages you'll need GNU groff or another
nroff-like package.
<P>The documentation is formatted using the HTMLDOC software (again, not
needed unless you make changes.)
<H2><A NAME="use">Using CUPS</A></H2>
<P>Pre-compiled binary distributions are available for CUPS from our
web site at
<A HREF="http://www.cups.org/software.html">http://www.cups.org/software.html</A>.
If you'd like to build CUPS from the source, please read the Software
Administrator's Manual.
<P>Once you have installed CUPS, the Software Administrator's Manual and
Software User's Manual are excellent places to start setting things up.
<H2><A NAME="known">Known Problems</A></H2>
The following known problems are being worked on and should be resolved for
the fourth beta release of CUPS:
<UL>
<LI>Documentation is not completed.
<LI>The lpc command currently only supports the help and status
commands.
</UL>
CUPS has been built and tested on the following operating systems:
<UL>
<LI>Digital UNIX 4.0d
<LI>HP-UX 10.20 and 11.0
<LI>IRIX 5.3, 6.2, 6.5.3
<LI>Linux (RedHat 5.2)
<LI>Solaris 2.5.1, 2.6, 2.7 (aka 7)
</UL>
The client libraries and filters have been successfully compiled under
Microsoft Windows using Visual C++ 6.0.
<H2><A NAME="report">Reporting Problems</A></H2>
If you have problems, please send an email to
<A HREF="mailto:cups-support@cups.org">cups-support@cups.org</A>. Include
your operating system and version, compiler and version, and any errors
or problems you've run into.
<H2><A NAME="resources">Other Resources</A></H2>
See the CUPS web site at "http://www.cups.org" for other site links.
<P>You can subscribe to the CUPS mailing list by sending a message containing
"subscribe cups" to <A HREF="mailto:majordomo@cups.org">majordomo@cups.org</A>.
This list is provided to discuss problems, questions, and improvements to
the CUPS software. New releases of CUPS are announced to this list as well.
<H2><A NAME="legal">Legal Stuff</A></H2>
CUPS is Copyright 1993-1999 by Easy Software Products. CUPS, the CUPS logo,
and the Common UNIX Printing System are the trademark property of Easy Software
Products.
<P>CUPS is provided under the terms of the
<A HREF="LICENSE.html">GNU General Public License</A>
which is located in the files "LICENSE.html" and "LICENSE.txt". For commercial
support and "binary-only" licensing information, please contact:
<UL>
Attn: CUPS Licensing Information
<BR>Easy Software Products
<BR>44141 Airport View Drive, Suite 204
<BR>Hollywood, Maryland 20636-3111 USA
<P>Voice: +1.301.373.9603
<BR>Email: <A HREF="mailto:cups-info@cups.org">cups-info@cups.org</A>
<BR>WWW: <A HREF="http://www.cups.org">http://www.cups.org</A>
</UL>
<P>If you're interested in a complete, commercial printing solution for UNIX,
check out our ESP Print software at <A HREF="http://www.easysw.com/print.html">
http://www.easysw.com/print.html</A>.
</BODY>
</HTML>
+150 -75
Ver Arquivo
@@ -1,120 +1,195 @@
README - CUPS v1.0b4
--------------------
README - CUPS v1.0b8 - 08/31/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 with glibc2 or higher (tested with RedHat 5.2)
- Solaris 2.5 or higher (SPARC or Intel)
KNOWN PROBLEMS
INSTALLING CUPS
The following known problems are being worked on and should be resolved for
the fourth beta release of CUPS:
We are currently distributing CUPS binary distributions in TAR format
with installation and removal scripts generated by our ESP Package
Manager (EPM) software, which is also included with the source
distribution.
* Documentation is not completed.
* The lpc command currently only supports the help and status commands.
WARNING: Installing CUPS will overwrite your existing printing system.
Backup files are made by the installation script and restored by the
removal script, so if you experience problems you should be able to
remove the CUPS software to restore your previous configuration.
However, Easy Software Products makes no warranty for this and will not
be liable for any lost revenues, etc.
CUPS has been built and tested on the following operating systems:
To install the CUPS software you will need to be logged in as root
(doing an "su" is good enough). Once you are the root user, run the
installation script with:
* Digital UNIX 4.0d
* HP-UX 10.20 and 11.0
* IRIX 5.3, 6.2, 6.5.3
* Linux (RedHat 5.2)
* Solaris 2.5.1, 2.6, 2.7 (aka 7)
./cups.install ENTER
The client libraries and filters have been successfully compiled under
Microsoft Windows using Visual C++ 6.0.
After asking you a few yes/no questions the CUPS software will be
installed and the scheduler will be started automatically.
SETTING UP PRINTER QUEUES
CUPS works best with PPD (PostScript Printer Description) files. In a
pinch you can also use System V style printer interface scripts.
Two sample PPD files are provided with this distribution that utilize
the PostScript and image file RIPs and the sample HP printer driver.
To add the sample DeskJet driver to the system for a printer connected
to the parallel port, use one of the following commands:
Digital UNIX:
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/lp0 -E
HP-UX:
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/c2t0d0_lp -E
IRIX:
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/plp -E
Linux:
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/par0 -E
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/par1 -E
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/par2 -E
Solaris:
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/bpp0 -E
/usr/lib/lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/ecpp0 -E
Similarly, for the sample LaserJet driver you can use "LaserJet" and
"laserjet.ppd".
For other printers and interfaces see the CUPS System Administator's
Manual included with this software.
If you're interested in a complete, commercial printing solution for
UNIX, check out our ESP Print Pro software at:
http://www.easysw.com/printpro
PRINTING FILES
CUPS provides both the System V "lp" and Berkeley "lpr" commands for
printing:
lp filename
lpr filename
Both the "lp" and "lpr" commands support printing options for the
driver:
lp -omedia=A4 -oresolution=600dpi filename
lpr -omedia=A4 -oresolution=600dpi filename
CUPS recognizes many types of images files as well as PostScript, HP-GL/2,
and text files, so you can print those files directly rather than through
an application.
If you have an application that generates output specifically for your
printer then you need to use the "-oraw" or "-l" options:
lp -oraw filename
lpr -l filename
This will prevent the filters from misinterpreting your print file.
REPORTING PROBLEMS
If you have problems, please send an email to cups-support@cups.org. Include
your operating system and version, compiler and version, and any errors or
problems you've run into.
If you have problems, please send an email to cups-support@cups.org.
Include your operating system and version, compiler and version, and
any errors or problems you've run into.
OTHER RESOURCES
See the CUPS web site at "http://www.cups.org" for other site links.
You can subscribe to the CUPS mailing list by sending a message containing
"subscribe cups" to majordomo@cups.org. This list is provided to discuss
problems, questions, and improvements to the CUPS software. New releases of
CUPS are announced to this list as well.
You can subscribe to the CUPS mailing list by sending a message
containing "subscribe cups" to majordomo@cups.org. This list is
provided to discuss problems, questions, and improvements to the CUPS
software. New releases of CUPS are announced to this list as well.
LEGAL STUFF
CUPS is Copyright 1993-1999 by Easy Software Products. CUPS, the CUPS logo,
and the Common UNIX Printing System are the trademark property of Easy
Software Products.
CUPS is Copyright 1993-1999 by Easy Software Products. CUPS, the CUPS
logo, and the Common UNIX Printing System are the trademark property of
Easy Software Products.
CUPS is provided under the terms of the GNU General Public License which is
located in the files "LICENSE.html" and "LICENSE.txt". For commercial
support and "binary-only" licensing information, please contact:
CUPS is provided under the terms of the GNU General Public License
which is located in the files "LICENSE.html" and "LICENSE.txt" (or the
file "cups.license" for a binary distribution.) For commercial
licensing information, please contact:
Attn: CUPS Licensing Information
Easy Software Products
44141 Airport View Drive, Suite 204
Hollywood, Maryland 20636-3111 USA
Attn: CUPS Licensing Information
Easy Software Products
44141 Airport View Drive, Suite 204
Hollywood, Maryland 20636-3111 USA
Voice: +1.301.373.9603
Email: cups-info@cups.org
WWW: http://www.cups.org
If you're interested in a complete, commercial printing solution for UNIX,
check out our ESP Print software at http://www.easysw.com/print.html.
Voice: +1.301.373.9603
Email: cups-info@cups.org
WWW: http://www.cups.org
+16 -15
Ver Arquivo
@@ -23,6 +23,7 @@
*
* Contents:
*
* main() - Send a file to the printer or server.
*/
/*
@@ -146,12 +147,10 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, uri);
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "requesting-user-name",
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
NULL, argv[2]);
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL, argv[3]);
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "copies", atoi(argv[4]));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL, argv[3]);
/*
* Handle options on the command-line...
@@ -161,12 +160,14 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
num_options = cupsParseOptions(argv[5], 0, &options);
if (cupsGetOption("raw", num_options, options))
ippAddString(request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format",
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/vnd.cups-raw");
else
ippAddString(request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format",
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/octet-stream");
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "copies", atoi(argv[4]));
for (i = 0; i < num_options; i ++)
{
/*
@@ -279,7 +280,9 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
sprintf(buffer, "%u", ippLength(request) + (size_t)fileinfo.st_size);
httpSetField(http, HTTP_FIELD_CONTENT_LENGTH, buffer);
}
else
httpSetField(http, HTTP_FIELD_TRANSFER_ENCODING, "chunked");
/*
* Do the request...
*/
@@ -291,12 +294,12 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
*/
if (httpPost(http, resource))
if (httpPost(http, resource))
{
fputs("INFO: Unable to POST print request; retrying...\n", stderr);
sleep(10);
continue;
}
{
fputs("INFO: Unable to POST print request; retrying...\n", stderr);
sleep(10);
httpReconnect(http);
continue;
}
fputs("INFO: POST successful, sending IPP request...\n", stderr);
@@ -333,8 +336,6 @@ 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);
/*
+1 -1
Ver Arquivo
@@ -107,7 +107,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
int bytes; /* Number of bytes read */
if ((fp = fopen(tmpnam(filename), "w")) == NULL)
if ((fp = fopen(cupsTempFile(filename, sizeof(filename)), "w")) == NULL)
{
perror("ERROR: unable to create temporary file");
return (1);
+14 -11
Ver Arquivo
@@ -23,6 +23,8 @@
*
* Contents:
*
* main() - Parse options and commands.
* show_jobs() - Show jobs.
*/
/*
@@ -45,7 +47,8 @@
* Local functions...
*/
static int show_jobs(http_t *, char *, char *, int, int);
static int show_jobs(http_t *, const char *, const char *, const int,
const int);
/*
@@ -58,7 +61,7 @@ main(int argc, /* I - Number of command-line arguments */
{
int i; /* Looping var */
http_t *http; /* Connection to server */
char *dest, /* Desired printer */
const char *dest, /* Desired printer */
*user; /* Desired user */
int id, /* Desired job ID */
interval, /* Reporting interval */
@@ -74,7 +77,7 @@ main(int argc, /* I - Number of command-line arguments */
* Check for command-line options...
*/
dest = NULL;
dest = cupsGetDefault();
user = NULL;
id = 0;
interval = 0;
@@ -136,21 +139,21 @@ main(int argc, /* I - Number of command-line arguments */
/*
* 'show_jobs()' - Show printers.
* 'show_jobs()' - Show jobs.
*/
static int /* O - Number of jobs in queue */
show_jobs(http_t *http, /* I - HTTP connection to server */
char *dest, /* I - Destination */
char *user, /* I - User */
int id, /* I - Job ID */
int longstatus) /* I - 1 if long report desired */
show_jobs(http_t *http, /* I - HTTP connection to server */
const char *dest, /* I - Destination */
const char *user, /* I - User */
const int id, /* I - Job ID */
const int longstatus)/* I - 1 if long report desired */
{
ipp_t *request, /* IPP Request */
*response; /* IPP Response */
ipp_attribute_t *attr; /* Current attribute */
cups_lang_t *language; /* Default language */
char *jobdest, /* Pointer into job-printer-uri */
const char *jobdest, /* Pointer into job-printer-uri */
*jobuser, /* Pointer to job-originating-user-name */
*jobname; /* Pointer to job-name */
ipp_jstate_t jobstate; /* job-state */
@@ -160,7 +163,7 @@ show_jobs(http_t *http, /* I - HTTP connection to server */
jobcount, /* Number of jobs */
rank; /* Rank of job */
char resource[1024]; /* Resource string */
static char *ranks[10] = /* Ranking strings */
static const char *ranks[10] =/* Ranking strings */
{
"th",
"st",
+6 -4
Ver Arquivo
@@ -46,7 +46,7 @@ main(int argc, /* I - Number of command-line arguments */
int i; /* Looping var */
int job_id; /* Job ID */
const char *dest; /* Destination printer */
char *title; /* Job title */
const char *title; /* Job title */
int priority; /* Job priority (1-100) */
int num_copies; /* Number of copies per file */
int num_files; /* Number of files printed */
@@ -209,7 +209,7 @@ main(int argc, /* I - Number of command-line arguments */
return (1);
}
temp = fopen(tmpnam(tempfile), "w");
temp = fopen(cupsTempFile(tempfile, sizeof(tempfile)), "w");
if (temp == NULL)
{
@@ -225,7 +225,7 @@ main(int argc, /* I - Number of command-line arguments */
if (i == 0)
{
fputs("lpr: stdin is empty, so no job has been sent.\n", stderr);
fputs("lpr: standard input is empty, so no job has been sent.\n", stderr);
return (1);
}
@@ -234,9 +234,11 @@ main(int argc, /* I - Number of command-line arguments */
else
job_id = cupsPrintFile(dest, tempfile, "(stdin)", num_options, options);
unlink(tempfile);
if (job_id < 1)
{
fprintf(stderr, "lpr: unable to print file \'%s\'.\n", argv[i]);
fputs("lpr: unable to print standard input.\n", stderr);
return (1);
}
}
+7
Ver Arquivo
@@ -169,7 +169,14 @@ main(int argc, /* I - Number of command-line arguments */
response = cupsDoRequest(http, request, "/jobs/");
if (response != NULL)
{
if (response->request.status.status_code == IPP_NOT_FOUND)
fputs("lprm: Job or printer not found!\n", stderr);
else if (response->request.status.status_code > IPP_OK_CONFLICT)
fputs("lprm: Unable to cancel job(s)!\n", stderr);
ippDelete(response);
}
else
{
fputs("lprm: Unable to cancel job(s)!\n", stderr);
+9
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"));
+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);
+9
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"));
+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$".
+30 -8
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: cupsd.conf 510 1999-07-09 14:20:15Z mike $"
# "$Id: cupsd.conf 628 1999-08-23 15:24:48Z mike $"
#
# Sample configuration file for the Common UNIX Printing System (CUPS)
# scheduler.
@@ -70,20 +70,25 @@ Port 631
# program is run...
#
User lp
Group sys
#User lp
#Group sys
#
# SystemGroup: the group name for "System" (printer administration)
# access.
# access. The default varies depending on the operating system, but
# will be "sys", "system", or "root" (checked for in that order.)
#
SystemGroup sys
#SystemGroup sys
#
# ServerName: the hostname of your server, as advertised to the world.
# By default CUPS will use the hostname of the system.
#
# This is also the name used by clients when connecting to the local
# server, so you can use this to configure a client machine without
# a local server running.
#
#ServerName myhost.domain.com
@@ -305,6 +310,23 @@ LogLevel info
# Deny: denies access from the specified hostname, domain, IP address, or
# network.
#
# Both "Allow" and "Deny" accept the following notations for addresses:
#
# All
# None
# *.domain.com
# .domain.com
# host.domain.com
# nnn.*
# nnn.nnn.*
# nnn.nnn.nnn.*
# nnn.nnn.nnn.nnn
# nnn.nnn.nnn.nnn/mm
# nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
#
# The host and domain address require that you enable hostname lookups
# with "HostNameLookups On" above.
#
<Location />
</Location>
@@ -329,8 +351,8 @@ LogLevel info
#
# You definitely will want to limit access to the administration tools.
# The default configuration requires a local connection from a user who
# is a member of group "sys" to do any admin tasks. You can change the
# group name using the SystemGroup directive.
# is a member of the system group to do any admin tasks. You can change
# the group name using the SystemGroup directive.
#
AuthType Basic
@@ -343,5 +365,5 @@ Allow From 127.0.0.1
</Location>
#
# End of "$Id: cupsd.conf 510 1999-07-09 14:20:15Z mike $".
# End of "$Id: cupsd.conf 628 1999-08-23 15:24:48Z mike $".
#
+3 -3
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: mime.convs 530 1999-07-13 14:11:17Z mike $"
# "$Id: mime.convs 575 1999-07-30 13:57:16Z mike $"
#
# MIME converts file for the Common UNIX Printing System (CUPS).
#
@@ -42,7 +42,7 @@
#
#application/msword application/postscript 50 mswordtops
#application/pdf application/postscript 50 pdftops
application/pdf application/postscript 50 pdftops
application/postscript application/vnd.cups-postscript 50 pstops
application/vnd.hp-HPGL application/postscript 50 hpgltops
image/* application/vnd.cups-postscript 50 imagetops
@@ -58,5 +58,5 @@ image/* application/vnd.cups-raster 50 imagetoraster
application/vnd.cups-postscript application/vnd.cups-raster 50 pstoraster
#
# End of "$Id: mime.convs 530 1999-07-13 14:11:17Z mike $".
# End of "$Id: mime.convs 575 1999-07-30 13:57:16Z mike $".
#
+4 -5
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: mime.types 487 1999-06-30 21:07:52Z mike $"
# "$Id: mime.types 575 1999-07-30 13:57:16Z mike $"
#
# MIME types file for the Common UNIX Printing System (CUPS).
#
@@ -92,10 +92,9 @@ image/x-sgi-rgb rgb sgi bw icon short(0,474)
image/x-xbitmap xbm
image/x-xpixmap xpm ascii(0,1024) + string(3,"XPM")
image/x-xwindowdump xwd
# TODO: Add Sun Raster, Alias, SoftImage, GIMP??? files
image/x-sun-raster ras
# TODO: Add Alias, SoftImage, GIMP??? files
#image/x-alias pix
#image/x-softimage
#image/x-gimp-xcf xcf xcf.gz
@@ -119,5 +118,5 @@ application/vnd.cups-raster string(0,"RaSt") string(0,"tSaR")
application/vnd.cups-raw
#
# End of "$Id: mime.types 487 1999-06-30 21:07:52Z mike $".
# End of "$Id: mime.types 575 1999-07-30 13:57:16Z mike $".
#
+1 -1
Ver Arquivo
@@ -28,7 +28,7 @@
* Version of software...
*/
#define CUPS_SVERSION "CUPS v1.0"
#define CUPS_SVERSION "CUPS v1.0b8"
/*
* Where are files stored?
+31 -13
Ver Arquivo
@@ -46,12 +46,7 @@ AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],
OPTIM="-g "
fi])
AC_ARG_ENABLE(shared, [ --disable-shared turn off shared libraries [default=no]])
if eval "test x$disable_shared = xyes"; then
PICFLAG=0
LIBCUPS="libcups.a"
LIBCUPSIMAGE="libcupsimage.a"
DSO=":"
else
if test "$disable_shared" != "yes"; then
case "$uname" in
SunOS* | UNIX_S*)
LIBCUPS="libcups.so.1"
@@ -63,7 +58,7 @@ else
LIBCUPSIMAGE="libcupsimage.sl.1"
DSO="ld -b -z +h \$@ -o"
;;
OSF1* | Linux*)
OSF1* | Linux* | FreeBSD*)
LIBCUPS="libcups.so.1"
LIBCUPSIMAGE="libcupsimage.so.1"
DSO="\$(CC) -Wl,-soname,\$@ -shared \$(OPTIM) -o"
@@ -81,6 +76,11 @@ else
DSO="\$(CC) -Wl,-soname,\$@ -shared \$(OPTIM) -o"
;;
esac
else
PICFLAG=0
LIBCUPS="libcups.a"
LIBCUPSIMAGE="libcupsimage.a"
DSO=":"
fi
dnl Checks for programs...
@@ -91,13 +91,14 @@ AC_PROG_RANLIB
AC_PATH_PROG(AR,ar)
AC_PATH_PROG(CHMOD,chmod)
AC_PATH_PROG(CP,cp)
AC_PATH_PROG(MV,mv)
AC_PATH_PROG(NROFF,nroff)
if test "$NROFF" = ""; then
AC_PATH_PROG(NROFF,groff)
if test "$NROFF" = ""; then
AC_PATH_PROG(GROFF,groff)
if test "$GROFF" = ""; then
NROFF="echo"
else
NROFF="$NROFF -T ascii"
NROFF="$GROFF -T ascii"
fi
fi
AC_PATH_PROG(HTMLDOC,htmldoc)
@@ -133,15 +134,18 @@ dnl Check for libraries...
AC_CHECK_LIB(c,crypt,LIBS="$LIBS",AC_CHECK_LIB(crypt,crypt))
AC_CHECK_HEADER(crypt.h, AC_DEFINE(HAVE_CRYPT_H))
AC_CHECK_LIB(sec,getspent)
NETLIBS=""
AC_SUBST(NETLIBS)
AC_CHECK_LIB(socket,socket,
if test "$uname" != "IRIX"; then
LIBS="$LIBS -lsocket"
NETLIBS="-lsocket"
else
echo "Not using -lsocket since you are running IRIX."
fi)
AC_CHECK_LIB(nsl,gethostbyaddr,
if test "$uname" != "IRIX"; then
LIBS="$LIBS -lnsl"
NETLIBS="$NETLIBS -lnsl"
else
echo "Not using -lnsl since you are running IRIX."
fi)
@@ -209,6 +213,7 @@ else
if test -z "$OPTIM"; then
OPTIM="+O2"
fi
OPTIM="-Ae $OPTIM"
;;
SunOS*)
# Solaris
@@ -238,6 +243,19 @@ if test "$DSO" != ":"; then
# a single DSO rather than a bunch...
DSOLIBS="\$(LIBJPEG) \$(LIBPNG) \$(LIBTIFF) \$(LIBZ)"
IMGLIBS=""
# The HP-UX and Solaris run-time linkers are EXTREMELY stupid when
# it comes to deciding where to find a DSO. Add linker options to
# tell them where to find the DSO (usually in /usr/lib... duh!)
case $uname in
HP-UX*)
LDFLAGS="$LDFLAGS -Wl,+b,$libdir,+fb"
;;
SunOS*)
# Solaris
LDFLAGS="-R$libdir"
;;
esac
else
DSOLIBS=""
IMGLIBS="\$(LIBJPEG) \$(LIBPNG) \$(LIBTIFF) \$(LIBZ)"
@@ -255,7 +273,7 @@ if test "$prefix" = "NONE"; then
fi
dnl Fix "libdir" variable for IRIX 6.x...
if test "$uname" = "IRIX" -a $uversion -ge 62; then
if test "$uname" = "IRIX" -a $uversion -ge 65; then
libdir="/usr/lib32"
fi
-345
Ver Arquivo
@@ -1,345 +0,0 @@
#
# "$Id: cups.list 529 1999-07-13 14:11:00Z mike $"
#
# ESP Package Manager (EPM) file list for the Common UNIX Printing
# System (CUPS).
#
# EPM can be found in the "epm" subdirectory of this distribution.
# Please report problems and fixes to Michael Sweet (mike@easysw.com).
#
# Copyright 1997-1999 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
# property of Easy Software Products and are protected by Federal
# copyright law. Distribution and use rights are outlined in the file
# "LICENSE.txt" which should have been included with this file. If this
# file is missing or damaged please contact Easy Software Products
# at:
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44141 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
# EMail: cups-info@cups.org
# WWW: http://www.cups.org
#
%product Common UNIX Printing System
%copyright 1993-1999 by Easy Software Products, All Rights Reserved.
%vendor Easy Software Products
%license LICENSE.cups
%readme README.cups
%version 1.0b5
%incompat printpro
%system all
# Server files
f 0555 root sys /var/cups/backend/ipp backend/ipp
f 4555 root sys /var/cups/backend/lpd backend/lpd
f 0555 root sys /var/cups/backend/parallel backend/parallel
f 0555 root sys /var/cups/backend/serial backend/serial
f 0555 root sys /var/cups/backend/smb backend/smb
f 0555 root sys /var/cups/backend/socket backend/socket
f 0500 root sys /usr/sbin/cupsd scheduler/cupsd
f 0555 root sys /var/cups/cgi-bin/classes.cgi cgi-bin/classes.cgi
f 0555 root sys /var/cups/cgi-bin/jobs.cgi cgi-bin/jobs.cgi
f 0555 root sys /var/cups/cgi-bin/printers.cgi cgi-bin/printers.cgi
f 0555 root sys /var/cups/filter/pstoraster pstoraster/pstoraster
f 0555 root sys /var/cups/filter/imagetops filter/imagetops
f 0555 root sys /var/cups/filter/pstops filter/pstops
f 0555 root sys /var/cups/filter/texttops filter/texttops
f 0555 root sys /var/cups/filter/rastertohp filter/rastertohp
f 0555 root sys /var/cups/filter/hpgltops filter/hpgltops
f 0555 root sys /var/cups/filter/imagetoraster filter/imagetoraster
# User commands
f 0555 root sys /usr/bin/lp systemv/lp
f 0555 root sys /usr/bin/lpstat systemv/lpstat
f 0555 root sys /usr/lib/lpadmin systemv/lpadmin
f 0555 root sys /usr/bin/cancel systemv/cancel
f 0555 root sys /usr/lib/accept systemv/accept
l 0555 root sys /usr/lib/reject accept
l 0555 root sys /usr/bin/disable /usr/lib/accept
l 0555 root sys /usr/bin/enable /usr/lib/accept
f 0555 root sys /usr/sbin/lpc berkeley/lpc
f 0555 root sys /usr/bin/lpq berkeley/lpq
f 0555 root sys /usr/bin/lpr berkeley/lpr
f 0555 root sys /usr/bin/lprm berkeley/lprm
# DSOs
%system hpux
f 0555 root sys /usr/lib/libcups.sl.1 cups/libcups.sl.1
l 0555 root sys /usr/lib/libcups.sl libcups.sl.1
f 0555 root sys /usr/lib/libcupsimage.sl.1 filter/libcupsimage.sl.1
l 0555 root sys /usr/lib/libcupsimage.sl libcupsimage.sl.1
%system irix irix64
f 0555 root sys /usr/lib32/libcups.so.1 cups/libcups.so.1
l 0555 root sys /usr/lib32/libcups.so libcups.so.1
f 0555 root sys /usr/lib32/libcupsimage.so.1 filter/libcupsimage.so.1
l 0555 root sys /usr/lib32/libcupsimage.so libcupsimage.so.1
%system dunix linux solaris sunos
f 0555 root sys /usr/lib/libcups.so.1 cups/libcups.so.1
l 0555 root sys /usr/lib/libcups.so libcups.so.1
f 0555 root sys /usr/lib/libcupsimage.so.1 filter/libcupsimage.so.1
l 0555 root sys /usr/lib/libcupsimage.so libcupsimage.so.1
%system all
# Directories
d 0755 root sys /var/cups/interfaces
d 0755 root sys /var/cups/logs
d 0755 root sys /var/cups/ppd
d 0755 root sys /var/cups/requests
# Data files
f 0444 root sys /usr/lib/locale/C/cups_C locale/C/cups_C
f 0444 root sys /usr/lib/locale/de/cups_de locale/de/cups_de
f 0444 root sys /usr/lib/locale/en/cups_en locale/en/cups_en
f 0444 root sys /usr/lib/locale/es/cups_es locale/es/cups_es
f 0444 root sys /usr/lib/locale/fr/cups_fr locale/fr/cups_fr
f 0444 root sys /usr/lib/locale/it/cups_it locale/it/cups_it
f 0444 root sys /usr/share/cups/data/8859-1 data/8859-1
f 0444 root sys /usr/share/cups/data/8859-14 data/8859-14
f 0444 root sys /usr/share/cups/data/8859-15 data/8859-15
f 0444 root sys /usr/share/cups/data/8859-2 data/8859-2
f 0444 root sys /usr/share/cups/data/8859-3 data/8859-3
f 0444 root sys /usr/share/cups/data/8859-4 data/8859-4
f 0444 root sys /usr/share/cups/data/8859-5 data/8859-5
f 0444 root sys /usr/share/cups/data/8859-6 data/8859-6
f 0444 root sys /usr/share/cups/data/8859-7 data/8859-7
f 0444 root sys /usr/share/cups/data/8859-8 data/8859-8
f 0444 root sys /usr/share/cups/data/8859-9 data/8859-9
f 0444 root sys /usr/share/cups/data/HPGLprolog data/HPGLprolog
f 0444 root sys /usr/share/cups/data/psglyphs data/psglyphs
f 0444 root sys /usr/share/cups/fonts/AvantGarde-Book fonts/AvantGarde-Book
f 0444 root sys /usr/share/cups/fonts/AvantGarde-BookOblique fonts/AvantGarde-BookOblique
f 0444 root sys /usr/share/cups/fonts/AvantGarde-Demi fonts/AvantGarde-Demi
f 0444 root sys /usr/share/cups/fonts/AvantGarde-DemiOblique fonts/AvantGarde-DemiOblique
f 0444 root sys /usr/share/cups/fonts/Bookman-Demi fonts/Bookman-Demi
f 0444 root sys /usr/share/cups/fonts/Bookman-DemiItalic fonts/Bookman-DemiItalic
f 0444 root sys /usr/share/cups/fonts/Bookman-Light fonts/Bookman-Light
f 0444 root sys /usr/share/cups/fonts/Bookman-LightItalic fonts/Bookman-LightItalic
f 0444 root sys /usr/share/cups/fonts/Courier fonts/Courier
f 0444 root sys /usr/share/cups/fonts/Courier-Bold fonts/Courier-Bold
f 0444 root sys /usr/share/cups/fonts/Courier-BoldOblique fonts/Courier-BoldOblique
f 0444 root sys /usr/share/cups/fonts/Courier-Oblique fonts/Courier-Oblique
f 0444 root sys /usr/share/cups/fonts/Helvetica fonts/Helvetica
f 0444 root sys /usr/share/cups/fonts/Helvetica-Bold fonts/Helvetica-Bold
f 0444 root sys /usr/share/cups/fonts/Helvetica-BoldOblique fonts/Helvetica-BoldOblique
f 0444 root sys /usr/share/cups/fonts/Helvetica-Narrow fonts/Helvetica-Narrow
f 0444 root sys /usr/share/cups/fonts/Helvetica-Narrow-Bold fonts/Helvetica-Narrow-Bold
f 0444 root sys /usr/share/cups/fonts/Helvetica-Narrow-BoldOblique fonts/Helvetica-Narrow-BoldOblique
f 0444 root sys /usr/share/cups/fonts/Helvetica-Narrow-Oblique fonts/Helvetica-Narrow-Oblique
f 0444 root sys /usr/share/cups/fonts/Helvetica-Oblique fonts/Helvetica-Oblique
f 0444 root sys /usr/share/cups/fonts/NewCenturySchlbk-Bold fonts/NewCenturySchlbk-Bold
f 0444 root sys /usr/share/cups/fonts/NewCenturySchlbk-BoldItalic fonts/NewCenturySchlbk-BoldItalic
f 0444 root sys /usr/share/cups/fonts/NewCenturySchlbk-Italic fonts/NewCenturySchlbk-Italic
f 0444 root sys /usr/share/cups/fonts/NewCenturySchlbk-Roman fonts/NewCenturySchlbk-Roman
f 0444 root sys /usr/share/cups/fonts/Palatino-Bold fonts/Palatino-Bold
f 0444 root sys /usr/share/cups/fonts/Palatino-BoldItalic fonts/Palatino-BoldItalic
f 0444 root sys /usr/share/cups/fonts/Palatino-Italic fonts/Palatino-Italic
f 0444 root sys /usr/share/cups/fonts/Palatino-Roman fonts/Palatino-Roman
f 0444 root sys /usr/share/cups/fonts/Symbol fonts/Symbol
f 0444 root sys /usr/share/cups/fonts/Times-Bold fonts/Times-Bold
f 0444 root sys /usr/share/cups/fonts/Times-BoldItalic fonts/Times-BoldItalic
f 0444 root sys /usr/share/cups/fonts/Times-Italic fonts/Times-Italic
f 0444 root sys /usr/share/cups/fonts/Times-Roman fonts/Times-Roman
f 0444 root sys /usr/share/cups/fonts/Utopia-Bold fonts/Utopia-Bold
f 0444 root sys /usr/share/cups/fonts/Utopia-BoldItalic fonts/Utopia-BoldItalic
f 0444 root sys /usr/share/cups/fonts/Utopia-Italic fonts/Utopia-Italic
f 0444 root sys /usr/share/cups/fonts/Utopia-Regular fonts/Utopia-Regular
f 0444 root sys /usr/share/cups/fonts/ZapfChancery-MediumItalic fonts/ZapfChancery-MediumItalic
f 0444 root sys /usr/share/cups/fonts/ZapfDingbats fonts/ZapfDingbats
f 0444 root sys /usr/share/cups/pstoraster/Fontmap pstoraster/Fontmap
f 0444 root sys /usr/share/cups/pstoraster/gs_l2img.ps pstoraster/gs_l2img.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_pfile.ps pstoraster/gs_pfile.ps
f 0444 root sys /usr/share/cups/pstoraster/pfbtogs.ps pstoraster/pfbtogs.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_wl1_e.ps pstoraster/gs_wl1_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_wl2_e.ps pstoraster/gs_wl2_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_wl5_e.ps pstoraster/gs_wl5_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_wan_e.ps pstoraster/gs_wan_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_pdf_e.ps pstoraster/gs_pdf_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_sym_e.ps pstoraster/gs_sym_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_std_e.ps pstoraster/gs_std_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_dbt_e.ps pstoraster/gs_dbt_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_mex_e.ps pstoraster/gs_mex_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_mro_e.ps pstoraster/gs_mro_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_iso_e.ps pstoraster/gs_iso_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_ksb_e.ps pstoraster/gs_ksb_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_ttf.ps pstoraster/gs_ttf.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_pdf.ps pstoraster/gs_pdf.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_ccfnt.ps pstoraster/gs_ccfnt.ps
f 0444 root sys /usr/share/cups/pstoraster/pdf_sec.ps pstoraster/pdf_sec.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_res.ps pstoraster/gs_res.ps
f 0444 root sys /usr/share/cups/pstoraster/pdf_base.ps pstoraster/pdf_base.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_btokn.ps pstoraster/gs_btokn.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_diskf.ps pstoraster/gs_diskf.ps
f 0444 root sys /usr/share/cups/pstoraster/pdf_2ps.ps pstoraster/pdf_2ps.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_init.ps pstoraster/gs_init.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_kanji.ps pstoraster/gs_kanji.ps
f 0444 root sys /usr/share/cups/pstoraster/pdf_draw.ps pstoraster/pdf_draw.ps
f 0444 root sys /usr/share/cups/pstoraster/pdf_font.ps pstoraster/pdf_font.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_type1.ps pstoraster/gs_type1.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_fonts.ps pstoraster/gs_fonts.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_statd.ps pstoraster/gs_statd.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_lev2.ps pstoraster/gs_lev2.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_typ42.ps pstoraster/gs_typ42.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_pdfwr.ps pstoraster/gs_pdfwr.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_cidfn.ps pstoraster/gs_cidfn.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_cmdl.ps pstoraster/gs_cmdl.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_dps1.ps pstoraster/gs_dps1.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_setpd.ps pstoraster/gs_setpd.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_cmap.ps pstoraster/gs_cmap.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_fform.ps pstoraster/gs_fform.ps
f 0444 root sys /usr/share/cups/pstoraster/pdf_main.ps pstoraster/pdf_main.ps
f 0444 root sys /usr/share/cups/model/deskjet.ppd ppd/deskjet.ppd
f 0444 root sys /usr/share/cups/model/laserjet.ppd ppd/laserjet.ppd
# Config files
c 0600 root sys /var/cups/conf/classes.conf conf/classes.conf
c 0600 root sys /var/cups/conf/cupsd.conf conf/cupsd.conf
c 0600 root sys /var/cups/conf/mime.convs conf/mime.convs
c 0600 root sys /var/cups/conf/mime.types conf/mime.types
c 0600 root sys /var/cups/conf/printers.conf conf/printers.conf
# Developer files
f 0444 root sys /usr/include/cups/cups.h cups/cups.h
f 0444 root sys /usr/include/cups/http.h cups/http.h
f 0444 root sys /usr/include/cups/ipp.h cups/ipp.h
f 0444 root sys /usr/include/cups/language.h cups/language.h
f 0444 root sys /usr/include/cups/mime.h cups/mime.h
f 0444 root sys /usr/include/cups/ppd.h cups/ppd.h
f 0444 root sys /usr/include/cups/raster.h cups/raster.h
# This should only be done for IRIX 6.x (-n32)
%system irix irix64
f 0444 root sys /usr/lib32/libcups.a cups/libcups.a
%system hpux solaris sunos dunix linux
f 0444 root sys /usr/lib/libcups.a cups/libcups.a
%system all
# Documentation files
f 0444 root sys /usr/share/cups/doc/cmp.html doc/cmp.html
f 0444 root sys /usr/share/cups/doc/cmp.pdf doc/cmp.pdf
f 0444 root sys /usr/share/cups/doc/cupsdoc.css doc/cupsdoc.css
f 0444 root sys /usr/share/cups/doc/cups.css doc/cups.css
f 0444 root sys /usr/share/cups/doc/documentation.html doc/documentation.html
f 0444 root sys /usr/share/cups/doc/idd.html doc/idd.html
f 0444 root sys /usr/share/cups/doc/idd.pdf doc/idd.pdf
f 0444 root sys /usr/share/cups/doc/images/classes.gif doc/images/classes.gif
f 0444 root sys /usr/share/cups/doc/images/cups-bar.gif doc/images/cups-bar.gif
f 0444 root sys /usr/share/cups/doc/images/cups-block-diagram.gif doc/images/cups-block-diagram.gif
f 0444 root sys /usr/share/cups/doc/images/cups-large.gif doc/images/cups-large.gif
f 0444 root sys /usr/share/cups/doc/images/cups-medium.gif doc/images/cups-medium.gif
f 0444 root sys /usr/share/cups/doc/images/cups-small.gif doc/images/cups-small.gif
f 0444 root sys /usr/share/cups/doc/images/logo.gif doc/images/logo.gif
f 0444 root sys /usr/share/cups/doc/images/navbar.gif doc/images/navbar.gif
f 0444 root sys /usr/share/cups/doc/images/printer-idle.gif doc/images/printer-idle.gif
f 0444 root sys /usr/share/cups/doc/images/printer-processing.gif doc/images/printer-processing.gif
f 0444 root sys /usr/share/cups/doc/images/printer-stopped.gif doc/images/printer-stopped.gif
f 0444 root sys /usr/share/cups/doc/index.html doc/index.html
f 0444 root sys /usr/share/cups/doc/overview.html doc/overview.html
f 0444 root sys /usr/share/cups/doc/overview.pdf doc/overview.pdf
f 0444 root sys /usr/share/cups/doc/sam.html doc/sam.html
f 0444 root sys /usr/share/cups/doc/sam.pdf doc/sam.pdf
f 0444 root sys /usr/share/cups/doc/sdd.html doc/sdd.html
f 0444 root sys /usr/share/cups/doc/sdd.pdf doc/sdd.pdf
f 0444 root sys /usr/share/cups/doc/ssr.html doc/ssr.html
f 0444 root sys /usr/share/cups/doc/ssr.pdf doc/ssr.pdf
f 0444 root sys /usr/share/cups/doc/stp.html doc/stp.html
f 0444 root sys /usr/share/cups/doc/stp.pdf doc/stp.pdf
f 0444 root sys /usr/share/cups/doc/sum.html doc/sum.html
f 0444 root sys /usr/share/cups/doc/sum.pdf doc/sum.pdf
f 0444 root sys /usr/share/cups/doc/svd.html doc/svd.html
f 0444 root sys /usr/share/cups/doc/svd.pdf doc/svd.pdf
# Man pages
%system irix irix64
f 0444 root sys /usr/share/catman/a_man/cat1/accept.z man/accept.z
l 0444 root sys /usr/share/catman/a_man/cat1/reject.z accept.z
f 0444 root sys /usr/share/catman/u_man/cat1/backend.z man/backend.z
f 0444 root sys /usr/share/catman/u_man/cat5/classes.conf.z man/classes.conf.z
f 0444 root sys /usr/share/catman/u_man/cat5/cupsd.conf.z man/cupsd.conf.z
f 0444 root sys /usr/share/catman/a_man/cat1/cupsd.z man/cupsd.z
f 0444 root sys /usr/share/catman/a_man/cat1/enable.z man/enable.z
l 0444 root sys /usr/share/catman/a_man/cat1/disable.z enable.z
f 0444 root sys /usr/share/catman/u_man/cat1/filter.z man/filter.z
f 0444 root sys /usr/share/catman/a_man/cat1/lpadmin.z man/lpadmin.z
f 0444 root sys /usr/share/catman/a_man/cat1/lpc.z man/lpc.z
f 0444 root sys /usr/share/catman/u_man/cat1/lprm.z man/lprm.z
f 0444 root sys /usr/share/catman/u_man/cat1/lpr.z man/lpr.z
f 0444 root sys /usr/share/catman/u_man/cat1/lpstat.z man/lpstat.z
f 0444 root sys /usr/share/catman/u_man/cat1/lp.z man/lp.z
l 0444 root sys /usr/share/catman/u_man/cat1/cancel.z lp.z
f 0444 root sys /usr/share/catman/u_man/cat5/mime.convs.z man/mime.convs.z
f 0444 root sys /usr/share/catman/u_man/cat5/mime.types.z man/mime.types.z
f 0444 root sys /usr/share/catman/u_man/cat5/printers.conf.z man/printers.conf.z
%system hpux linux dunix solaris sunos
f 0444 root sys /usr/man/man8/accept.8 man/accept.8
l 0444 root sys /usr/man/man8/reject.8 accept.8
f 0444 root sys /usr/man/man1/backend.1 man/backend.1
f 0444 root sys /usr/man/man1/classes.conf.5 man/classes.conf.5
f 0444 root sys /usr/man/man8/cupsd.8 man/cupsd.8
f 0444 root sys /usr/man/man5/cupsd.conf.5 man/cupsd.conf.5
f 0444 root sys /usr/man/man8/enable.8 man/enable.8
l 0444 root sys /usr/man/man8/disable.8 enable.8
f 0444 root sys /usr/man/man1/filter.1 man/filter.1
f 0444 root sys /usr/man/man8/lpadmin.8 man/lpadmin.8
f 0444 root sys /usr/man/man8/lpc.8 man/lpc.8
f 0444 root sys /usr/man/man1/lprm.1 man/lprm.1
f 0444 root sys /usr/man/man1/lpr.1 man/lpr.1
f 0444 root sys /usr/man/man1/lpstat.1 man/lpstat.1
f 0444 root sys /usr/man/man1/lp.1 man/lp.1
l 0444 root sys /usr/man/man1/cancel.1 lp.1
f 0444 root sys /usr/man/man5/mime.convs.5 man/mime.convs.5
f 0444 root sys /usr/man/man5/mime.types.5 man/mime.types.5
f 0444 root sys /usr/man/man5/printers.conf.5 man/printers.conf.5
# Startup scripts
%system hpux
%install /sbin/init.d/cups start
%remove /sbin/init.d/cups stop
%patch /sbin/init.d/cups stop
f 0555 root sys /sbin/init.d/cups cups.sh
l 0555 root sys /sbin/rc1.d/K280cups ../init.d/cups
l 0555 root sys /sbin/rc2.d/S720cups ../init.d/cups
%system irix irix64
%install /sbin/chkconfig -f cups on
%install /etc/init.d/cups start
%remove /etc/init.d/cups stop
%patch /etc/init.d/cups stop
f 0555 root sys /etc/init.d/cups cups.sh
l 0555 root sys /etc/rc0.d/K25cups ../init.d/cups
l 0555 root sys /etc/rc2.d/S60cups ../init.d/cups
%system linux
%install /etc/rc.d/init.d/cups start
%remove /etc/rc.d/init.d/cups stop
%patch /etc/rc.d/init.d/cups stop
f 0555 root sys /etc/rc.d/init.d/cups cups.sh
l 0555 root sys /etc/rc.d/rc2.d/S60cups ../init.d/cups
l 0555 root sys /etc/rc.d/rc3.d/S60cups ../init.d/cups
l 0555 root sys /etc/rc.d/rc4.d/S60cups ../init.d/cups
l 0555 root sys /etc/rc.d/rc5.d/S60cups ../init.d/cups
l 0555 root sys /etc/rc.d/rc0.d/K60cups ../init.d/cups
l 0555 root sys /etc/rc.d/rc1.d/K60cups ../init.d/cups
l 0555 root sys /etc/rc.d/rc6.d/K60cups ../init.d/cups
%system dunix
%install /sbin/init.d/cups start
%remove /sbin/init.d/cups stop
%patch /sbin/init.d/cups stop
f 0555 root sys /sbin/init.d/cups cups.sh
l 0555 root sys /sbin/rc0.d/K05cups ../init.d/cups
l 0555 root sys /sbin/rc2.d/K00cups ../init.d/cups
l 0555 root sys /sbin/rc3.d/S65cups ../init.d/cups
%system sunos solaris
%install /etc/init.d/cups start
%remove /etc/init.d/cups stop
%patch /etc/init.d/cups stop
f 0555 root sys /etc/init.d/cups cups.sh
l 0555 root sys /etc/rc0.d/K20cups ../init.d/cups
l 0555 root sys /etc/rc2.d/S80cups ../init.d/cups
#
# End of "$Id: cups.list 529 1999-07-13 14:11:00Z mike $".
#
+64 -16
Ver Arquivo
@@ -4,6 +4,12 @@
#
# Startup/shutdown script for the Common UNIX Printing System (CUPS).
#
# Linux chkconfig stuff:
#
# chkconfig: 2345 60 60
# description: Startup/shutdown script for the Common UNIX \
# Printing System (CUPS).
#
# Copyright 1997-1999 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
@@ -23,7 +29,26 @@
# WWW: http://www.cups.org
#
# See if the CUPS daemon is running, and if so stop it...
# See what program to use for configuration stuff...
case "`uname`" in
IRIX*)
IS_ON=/sbin/chkconfig
;;
*)
IS_ON=/bin/true
;;
esac
# The verbose flag controls the printing of the names of
# daemons as they are started.
if $IS_ON verbose; then
ECHO=echo
else
ECHO=:
fi
# See if the CUPS server is running...
case "`uname`" in
IRIX* | HP-UX | SunOS)
pid=`ps -e | awk '{print $1,$4}' | grep cupsd | awk '{print $1}'`
@@ -39,26 +64,49 @@ case "`uname`" in
;;
esac
# Start or stop the CUPS server based upon the first argument to the script.
case $1 in
start | restart)
if test "$pid" != ""; then
echo "Restarting CUPS scheduler..."
kill -HUP $pid
else
echo "Starting CUPS scheduler..."
/usr/sbin/cupsd 2>&1 >/dev/null &
fi
;;
start | restart | reload)
if test "$pid" != ""; then
if $IS_ON cups; then
kill -HUP $pid
$ECHO "cups: scheduler restarted."
else
kill $pid
$ECHO "cups: scheduler stopped."
fi
else
if $IS_ON cups; then
/usr/sbin/cupsd 2>&1 >/dev/null &
$ECHO "cups: scheduler started."
fi
fi
;;
stop)
if test "$pid" != ""; then
echo "Stopping CUPS scheduler..."
kill $pid
sleep 1
fi
;;
if test "$pid" != ""; then
kill $pid
$ECHO "cups: scheduler stopped."
fi
;;
status)
if test "$pid" != ""; then
echo "cups: Scheduler is running."
else
echo "cups: Scheduler is not running."
fi
;;
*)
echo "Usage: cups {reload|restart|start|status|stop}"
exit 1
;;
esac
exit 0
#
# End of "$Id$".
#
-307
Ver Arquivo
@@ -1,307 +0,0 @@
#
# "$Id: cups.spec 505 1999-07-08 15:00:20Z mike $"
#
# RPM "spec" file for the Common UNIX Printing System (CUPS).
#
# Original version by Jason McMullan <jmcc@ontv.com>.
#
# Copyright 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
#
Summary: Common Unix Printing System
Name: cups
Version: 1.0b5
Release: 0
Copyright: GPL
Group: System Environment/Daemons
Source: ftp://ftp.easysw.com/pub/cups/beta/cups-1.0b5-source.tar.gz
Url: http://www.cups.org
Packager: Michael Sweet <mike@easysw.com>
Vendor: Easy Software Products
# use buildroot so as not to disturb the version already installed
BuildRoot: /tmp/rpmbuild
Conflicts: lpr
%package devel
Summary: Common Unix Printing System - development environment
Group: Development/Libraries
%description
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.
%description devel
The Common UNIX Printing System provides a portable printing layer for
UNIX® operating systems. This is the development package for creating
additional printer drivers, and other CUPS services.
%prep
%setup
%build
./configure
# If we got this far, all prerequisite libraries must be here.
make
%install
# these lines just make sure the directory structure in the
# RPM_BUILD_ROOT exists
rm -rf $RPM_BUILD_ROOT
mkdir $RPM_BUILD_ROOT/etc
mkdir $RPM_BUILD_ROOT/etc/rc.d
mkdir $RPM_BUILD_ROOT/etc/rc.d/init.d
mkdir $RPM_BUILD_ROOT/usr
mkdir $RPM_BUILD_ROOT/usr/bin
mkdir $RPM_BUILD_ROOT/usr/lib
mkdir $RPM_BUILD_ROOT/usr/man
mkdir $RPM_BUILD_ROOT/usr/man/man1
mkdir $RPM_BUILD_ROOT/usr/man/man5
mkdir $RPM_BUILD_ROOT/usr/man/man8
mkdir $RPM_BUILD_ROOT/usr/share/locale
mkdir $RPM_BUILD_ROOT/var/cups
mkdir $RPM_BUILD_ROOT/var/cups/conf
mkdir $RPM_BUILD_ROOT/var/cups/logs
mkdir $RPM_BUILD_ROOT/var/logs
ln -sf /var/cups/logs $RPM_BUILD_ROOT/var/logs/cups
ln -sf /var/cups/conf $RPM_BUILD_ROOT/etc/cups
make prefix=$RPM_BUILD_ROOT/usr DATADIR=$RPM_BUILD_ROOT/usr/share/cups LOCALEDIR=$RPM_BUILD_ROOT/usr/share/locale SERVERROOT=$RPM_BUILD_ROOT/var/cups install
install -m 755 -o root -g root $RPM_SOURCE_DIR/cups.sh $RPM_BUILD_ROOT/etc/rc.d/init.d/cups
%post
/sbin/chkconfig --add cups
%preun
/sbin/chkconfig --del cups
%clean
rm -rf $RPM_BUILD_ROOT
%files
/etc/rc.d/init.d/cups
%config /var/cups/conf/classes.conf
%config /var/cups/conf/cupsd.conf
%config /var/cups/conf/mime.convs
%config /var/cups/conf/mime.types
%config /var/cups/conf/printers.conf
/usr/lib/accept
/usr/lib/lpadmin
/usr/lib/reject
/usr/bin/lpr
/usr/bin/lprm
/usr/bin/disable
/usr/bin/enable
/usr/bin/cancel
/usr/bin/lp
/usr/bin/lpstat
/usr/man/man1/backend.1
/usr/man/man1/filter.1
/usr/man/man1/lprm.1
/usr/man/man1/lpr.1
/usr/man/man1/lpstat.1
/usr/man/man1/lp.1
/usr/man/man1/cancel.1
/usr/man/man5/classes.conf.5
/usr/man/man5/cupsd.conf.5
/usr/man/man5/mime.convs.5
/usr/man/man5/mime.types.5
/usr/man/man5/printers.conf.5
/usr/man/man8/accept.8
/usr/man/man8/cupsd.8
/usr/man/man8/enable.8
/usr/man/man8/lpadmin.8
/usr/man/man8/lpc.8
/usr/man/man8/reject.8
/usr/man/man8/disable.8
/usr/sbin/lpc
/usr/sbin/cupsd
/usr/lib/libcups.so.1
/usr/lib/libcupsimage.so.1
%dir /usr/share/cups
/usr/share/cups/8859-1
/usr/share/cups/8859-14
/usr/share/cups/8859-15
/usr/share/cups/8859-2
/usr/share/cups/8859-3
/usr/share/cups/8859-4
/usr/share/cups/8859-5
/usr/share/cups/8859-6
/usr/share/cups/8859-7
/usr/share/cups/8859-8
/usr/share/cups/8859-9
/usr/share/cups/HPGLprolog
/usr/share/cups/doc/cmp.html
/usr/share/cups/doc/cmp.pdf
/usr/share/cups/doc/cups.css
/usr/share/cups/doc/cupsdoc.css
/usr/share/cups/doc/documentation.html
/usr/share/cups/doc/idd.html
/usr/share/cups/doc/idd.pdf
/usr/share/cups/doc/images/classes.gif
/usr/share/cups/doc/images/cups-block-diagram.gif
/usr/share/cups/doc/images/cups-large.gif
/usr/share/cups/doc/images/cups-medium.gif
/usr/share/cups/doc/images/cups-small.gif
/usr/share/cups/doc/images/logo.gif
/usr/share/cups/doc/images/navbar.gif
/usr/share/cups/doc/images/printer-idle.gif
/usr/share/cups/doc/images/printer-processing.gif
/usr/share/cups/doc/images/printer-stopped.gif
/usr/share/cups/doc/index.html
/usr/share/cups/doc/overview.html
/usr/share/cups/doc/overview.pdf
/usr/share/cups/doc/sam.html
/usr/share/cups/doc/sam.pdf
/usr/share/cups/doc/sdd.html
/usr/share/cups/doc/sdd.pdf
/usr/share/cups/doc/ssr.html
/usr/share/cups/doc/ssr.pdf
/usr/share/cups/doc/stp.html
/usr/share/cups/doc/stp.pdf
/usr/share/cups/doc/sum.html
/usr/share/cups/doc/sum.pdf
/usr/share/cups/doc/svd.html
/usr/share/cups/doc/svd.pdf
/usr/share/cups/fonts/AvantGarde-Book
/usr/share/cups/fonts/AvantGarde-BookOblique
/usr/share/cups/fonts/AvantGarde-Demi
/usr/share/cups/fonts/AvantGarde-DemiOblique
/usr/share/cups/fonts/Bookman-Demi
/usr/share/cups/fonts/Bookman-DemiItalic
/usr/share/cups/fonts/Bookman-Light
/usr/share/cups/fonts/Bookman-LightItalic
/usr/share/cups/fonts/Courier
/usr/share/cups/fonts/Courier-Bold
/usr/share/cups/fonts/Courier-BoldOblique
/usr/share/cups/fonts/Courier-Oblique
/usr/share/cups/fonts/Helvetica
/usr/share/cups/fonts/Helvetica-Bold
/usr/share/cups/fonts/Helvetica-BoldOblique
/usr/share/cups/fonts/Helvetica-Narrow
/usr/share/cups/fonts/Helvetica-Narrow-Bold
/usr/share/cups/fonts/Helvetica-Narrow-BoldOblique
/usr/share/cups/fonts/Helvetica-Narrow-Oblique
/usr/share/cups/fonts/Helvetica-Oblique
/usr/share/cups/fonts/NewCenturySchlbk-Bold
/usr/share/cups/fonts/NewCenturySchlbk-BoldItalic
/usr/share/cups/fonts/NewCenturySchlbk-Italic
/usr/share/cups/fonts/NewCenturySchlbk-Roman
/usr/share/cups/fonts/Palatino-Bold
/usr/share/cups/fonts/Palatino-BoldItalic
/usr/share/cups/fonts/Palatino-Italic
/usr/share/cups/fonts/Palatino-Roman
/usr/share/cups/fonts/Symbol
/usr/share/cups/fonts/Times-Bold
/usr/share/cups/fonts/Times-BoldItalic
/usr/share/cups/fonts/Times-Italic
/usr/share/cups/fonts/Times-Roman
/usr/share/cups/fonts/Utopia-Bold
/usr/share/cups/fonts/Utopia-BoldItalic
/usr/share/cups/fonts/Utopia-Italic
/usr/share/cups/fonts/Utopia-Regular
/usr/share/cups/fonts/ZapfChancery-MediumItalic
/usr/share/cups/fonts/ZapfDingbats
/usr/share/cups/model/deskjet.ppd
/usr/share/cups/model/laserjet.ppd
/usr/share/cups/pstoraster/Fontmap
/usr/share/cups/pstoraster/gs_btokn.ps
/usr/share/cups/pstoraster/gs_ccfnt.ps
/usr/share/cups/pstoraster/gs_cidfn.ps
/usr/share/cups/pstoraster/gs_cmap.ps
/usr/share/cups/pstoraster/gs_cmdl.ps
/usr/share/cups/pstoraster/gs_dbt_e.ps
/usr/share/cups/pstoraster/gs_diskf.ps
/usr/share/cups/pstoraster/gs_dps1.ps
/usr/share/cups/pstoraster/gs_fform.ps
/usr/share/cups/pstoraster/gs_fonts.ps
/usr/share/cups/pstoraster/gs_init.ps
/usr/share/cups/pstoraster/gs_iso_e.ps
/usr/share/cups/pstoraster/gs_kanji.ps
/usr/share/cups/pstoraster/gs_ksb_e.ps
/usr/share/cups/pstoraster/gs_l2img.ps
/usr/share/cups/pstoraster/gs_lev2.ps
/usr/share/cups/pstoraster/gs_mex_e.ps
/usr/share/cups/pstoraster/gs_mro_e.ps
/usr/share/cups/pstoraster/gs_pdf.ps
/usr/share/cups/pstoraster/gs_pdf_e.ps
/usr/share/cups/pstoraster/gs_pdfwr.ps
/usr/share/cups/pstoraster/gs_pfile.ps
/usr/share/cups/pstoraster/gs_res.ps
/usr/share/cups/pstoraster/gs_setpd.ps
/usr/share/cups/pstoraster/gs_statd.ps
/usr/share/cups/pstoraster/gs_std_e.ps
/usr/share/cups/pstoraster/gs_sym_e.ps
/usr/share/cups/pstoraster/gs_ttf.ps
/usr/share/cups/pstoraster/gs_typ42.ps
/usr/share/cups/pstoraster/gs_type1.ps
/usr/share/cups/pstoraster/gs_wan_e.ps
/usr/share/cups/pstoraster/gs_wl1_e.ps
/usr/share/cups/pstoraster/gs_wl2_e.ps
/usr/share/cups/pstoraster/gs_wl5_e.ps
/usr/share/cups/pstoraster/pdf_2ps.ps
/usr/share/cups/pstoraster/pdf_base.ps
/usr/share/cups/pstoraster/pdf_draw.ps
/usr/share/cups/pstoraster/pdf_font.ps
/usr/share/cups/pstoraster/pdf_main.ps
/usr/share/cups/pstoraster/pdf_sec.ps
/usr/share/cups/pstoraster/pfbtogs.ps
%dir /var/cups
/var/cups/backend/http
/var/cups/backend/ipp
/var/cups/backend/lpd
/var/cups/backend/parallel
/var/cups/backend/serial
/var/cups/backend/smb
/var/cups/backend/socket
/var/cups/cgi-bin/classes.cgi
/var/cups/cgi-bin/jobs.cgi
/var/cups/cgi-bin/printers.cgi
/var/cups/conf
/var/cups/filter/hpgltops
/var/cups/filter/imagetops
/var/cups/filter/imagetoraster
/var/cups/filter/pstops
/var/cups/filter/pstoraster
/var/cups/filter/rastertohp
/var/cups/filter/texttops
%dir /var/cups/interfaces
%dir /var/cups/logs
%dir /var/cups/ppd
%dir /var/cups/requests
%files devel
%dir /usr/include/cups
/usr/include/cups/cups.h
/usr/include/cups/http.h
/usr/include/cups/ipp.h
/usr/include/cups/language.h
/usr/include/cups/mime.h
/usr/include/cups/ppd.h
/usr/include/cups/raster.h
/usr/lib/libcups.so
/usr/lib/libcupsimage.so
#
# End of "$Id: cups.spec 505 1999-07-08 15:00:20Z mike $".
#
+12 -11
Ver Arquivo
@@ -28,9 +28,10 @@ include ../Makedefs
# Object files...
#
OBJS = emit.o filter.o http.o ipp.o language.o mark.o mime.o \
LIBOBJS = emit.o filter.o http.o ipp.o language.o mark.o mime.o \
options.o page.o ppd.o raster.o string.o type.o usersys.o \
util.o
OBJS = $(LIBOBJS) testhttp.o testmime.o testppd.o
#
# Header files to install...
@@ -42,7 +43,7 @@ HEADERS = cups.h http.h ipp.h language.h mime.h ppd.h raster.h
# Targets in this directory...
#
TARGETS = $(LIBCUPS) testmime testppd testhttp
TARGETS = $(LIBCUPS) testhttp testmime testppd
#
# Make all targets...
@@ -67,26 +68,26 @@ install: all
-$(MKDIR) $(LIBDIR)
$(CP) $(LIBCUPS) $(LIBDIR)
if test $(LIBCUPS) != "libcups.a"; then \
$(LN) $(LIBCUPS) `basename $(LIBCUPS) .1` \
$(LN) $(LIBCUPS) `basename $(LIBCUPS) .1`; \
fi
#
# libcups.so.1, libcups.sl.1
#
libcups.so.1 libcups.sl.1: $(OBJS) ../Makedefs
libcups.so.1 libcups.sl.1: $(LIBOBJS) ../Makedefs
echo Linking $@...
$(DSO) $@ $(OBJS)
$(LN) $@ `basename $@ .1`
$(DSO) $@ $(LIBOBJS)
-$(LN) $@ `basename $@ .1`
#
# libcups.a
#
libcups.a: $(OBJS)
libcups.a: $(LIBOBJS)
echo Archiving $@...
$(RM) $@
$(AR) $(ARFLAGS) $@ $(OBJS)
$(AR) $(ARFLAGS) $@ $(LIBOBJS)
$(RANLIB) $@
#
@@ -120,7 +121,7 @@ util.o: cups.h http.h ipp.h ../config.h ../Makedefs
testhttp: testhttp.o libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ testhttp.o libcups.a $(LIBS)
$(CC) $(LDFLAGS) -o $@ testhttp.o libcups.a $(NETLIBS)
testhttp.o: http.h ../Makedefs
@@ -130,7 +131,7 @@ testhttp.o: http.h ../Makedefs
testmime: testmime.o libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ testmime.o libcups.a $(LIBS)
$(CC) $(LDFLAGS) -o $@ testmime.o libcups.a
testmime.o: mime.h ../Makedefs
@@ -140,7 +141,7 @@ testmime.o: mime.h ../Makedefs
testppd: testppd.o libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ testppd.o libcups.a $(LIBS)
$(CC) $(LDFLAGS) -o $@ testppd.o libcups.a $(NETLIBS)
testppd.o: ppd.h ../Makedefs
+176
Ver Arquivo
@@ -0,0 +1,176 @@
# Microsoft Developer Studio Project File - Name="cups" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
CFG=cups - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "cups.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "cups.mak" CFG="cups - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "cups - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "cups - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "cups - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\visualc" /I ".." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"cups.lib"
!ELSEIF "$(CFG)" == "cups - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\visualc" /I ".." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"cupsd.lib"
!ENDIF
# Begin Target
# Name "cups - Win32 Release"
# Name "cups - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\emit.c
# End Source File
# Begin Source File
SOURCE=.\filter.c
# End Source File
# Begin Source File
SOURCE=.\http.c
# End Source File
# Begin Source File
SOURCE=.\ipp.c
# End Source File
# Begin Source File
SOURCE=.\language.c
# End Source File
# Begin Source File
SOURCE=.\mark.c
# End Source File
# Begin Source File
SOURCE=.\mime.c
# End Source File
# Begin Source File
SOURCE=.\options.c
# End Source File
# Begin Source File
SOURCE=.\page.c
# End Source File
# Begin Source File
SOURCE=.\ppd.c
# End Source File
# Begin Source File
SOURCE=.\raster.c
# End Source File
# Begin Source File
SOURCE=.\string.c
# End Source File
# Begin Source File
SOURCE=.\type.c
# End Source File
# Begin Source File
SOURCE=.\util.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=.\cups.h
# End Source File
# Begin Source File
SOURCE=.\http.h
# End Source File
# Begin Source File
SOURCE=.\ipp.h
# End Source File
# Begin Source File
SOURCE=.\language.h
# End Source File
# Begin Source File
SOURCE=.\mime.h
# End Source File
# Begin Source File
SOURCE=.\ppd.h
# End Source File
# Begin Source File
SOURCE=.\raster.h
# End Source File
# End Group
# End Target
# End Project
+1 -1
Ver Arquivo
@@ -117,7 +117,7 @@ extern int cupsGetPrinters(char ***printers);
extern int cupsPrintFile(const char *printer, const char *filename,
const char *title, int num_options,
cups_option_t *options);
extern char *cupsTempFile(char *filename, int len);
extern int cupsAddOption(const char *name, const char *value,
int num_options, cups_option_t **options);
extern void cupsFreeOptions(int num_options, cups_option_t *options);
+123
Ver Arquivo
@@ -0,0 +1,123 @@
"us-ascii",
"OK",
"Cancel",
"Help",
"Quit",
"Close",
"Yes",
"No",
"On",
"Off",
"Save",
"Discard",
"Default",
"Options",
"More Info",
"Black",
"Color",
"Cyan",
"Magenta",
"Yellow",
"Copyright 1993-1999 by Easy Software Products, All Rights Reserved.",
"General",
"Printer",
"Image Options",
"HP-GL/2 Options",
"Extra",
"Document",
"Other",
"Print Pages: ",
"Entire Document",
"Page Range:",
"Reverse Order: ",
"Page Format: ",
" 1-Up",
" 2-Up",
" 4-Up",
"Image Scaling: ",
"Use Natural Image Size",
"Zoom by Percent",
"Zoom by PPI",
"Mirror Image: ",
"Color Saturation: ",
"Color Hue: ",
"Fit to Page: ",
"Shading: ",
"Pen Width: ",
"Gamma Correction: ",
"Brightness: ",
"Add",
"Delete",
"Modify",
"Printer URI",
"Printer Name",
"Printer Location",
"Printer Info",
"Printer Make and Model",
"Device URI",
"Formatting Page",
"Printing Page",
"Initializing Printer",
"Printer State",
"Accepting Jobs",
"Not Accepting Jobs",
"Print Jobs",
"Class",
"Local",
"Remote",
"Duplexing",
"Stapling",
"Fast Copies",
"Collated Copies",
"Hole Punching",
"Covering",
"Binding",
"Sorting",
"Small (up to 9.5x14in)",
"Medium (9.5x14in to 13x19in)",
"Large (13x19in and larger)",
"Custom Size",
"Idle",
"Processing",
"Stopped",
"All",
"Odd",
"Even Pages",
"Darker Lighter",
"Media Size",
"Media Type",
"Media Source",
"Orientation: ",
"Portrait",
"Landscape",
"Job State",
"Job Name",
"User Name",
"Priority",
"Copies",
"File Size",
"Pending",
"Output Mode",
"Resolution",
"400 Your browser sent a request that this server could not understand.",
"This server could not verify that you are authorized to access the resource.",
"You must pay to access this server.",
"You don't have permission to access the resource on this server.",
"The requested resource was not found on this server.",
"The requested method is not allowed with the resource.",
"An appropriate representation for the resource was not found on this server.",
"You don't have permission to use this server as a proxy host.",
"The request has taken too long to complete and has been aborted.",
"The requested resource has more than one value.",
"The requested resource is gone and has not been replaced.",
"The requested method requires a valid Content-Length.",
"The precondition on the request evaluated to false.",
"The request is too large for this server to process.",
"The request URI is too large for this server to process.",
"The request format is not understood by this server.",
"500 The server has detected an unrecoverable error and cannot process your request.",
"The requested method is not implemented by this server.",
"The proxy server received an invalid response from an upstream server.",
"The requested resource is currently unavailable on this server.",
"The proxy server has taken too long to respond to this server.",
"This server does not support the HTTP version required by your browser.",
+111 -25
Ver Arquivo
@@ -25,6 +25,8 @@
*
* httpInitialize() - Initialize the HTTP interface library and set the
* default HTTP proxy (if any).
* httpCheck() - Check to see if there is a pending response from
* the server.
* httpClose() - Close an HTTP connection...
* httpConnect() - Connect to a HTTP server.
* httpReconnect() - Reconnect to a HTTP server...
@@ -66,6 +68,7 @@
#include <ctype.h>
#include "string.h"
#include <fcntl.h>
#include <errno.h>
#include "http.h"
#include "ipp.h"
@@ -189,6 +192,41 @@ httpInitialize(void)
}
/*
* 'httpCheck()' - Check to see if there is a pending response from the server.
*/
int /* O - 0 = no data, 1 = data available */
httpCheck(http_t *http) /* I - HTTP connection */
{
fd_set input; /* Input set for select() */
struct timeval timeout; /* Timeout */
/*
* First see if there is data in the buffer...
*/
if (http == NULL)
return (0);
if (http->used)
return (1);
/*
* Then try doing a select() to poll the socket...
*/
FD_ZERO(&input);
FD_SET(http->fd, &input);
timeout.tv_sec = 0;
timeout.tv_usec = 0;
return (select(http->fd + 1, &input, NULL, NULL, &timeout) > 0);
}
/*
* 'httpClose()' - Close an HTTP connection...
*/
@@ -647,6 +685,11 @@ httpRead(http_t *http, /* I - HTTP data */
* data, go idle...
*/
if (http->data_encoding == HTTP_ENCODE_CHUNKED &&
(http->state == HTTP_GET_SEND || http->state == HTTP_POST_RECV ||
http->state == HTTP_POST_SEND || http->state == HTTP_PUT_RECV))
httpGets(len, sizeof(len), http);
if (http->state == HTTP_POST_RECV)
http->state ++;
else
@@ -682,12 +725,20 @@ httpRead(http_t *http, /* I - HTTP data */
if (bytes > 0)
http->data_remaining -= bytes;
if (http->data_remaining == 0 && http->data_encoding != HTTP_ENCODE_CHUNKED)
if (http->data_remaining == 0)
{
if (http->state == HTTP_POST_RECV)
http->state ++;
else
http->state = HTTP_WAITING;
if (http->data_encoding == HTTP_ENCODE_CHUNKED &&
(http->state == HTTP_GET_SEND || http->state == HTTP_POST_RECV ||
http->state == HTTP_POST_SEND || http->state == HTTP_PUT_RECV))
httpGets(len, sizeof(len), http);
if (http->data_encoding != HTTP_ENCODE_CHUNKED)
{
if (http->state == HTTP_POST_RECV)
http->state ++;
else
http->state = HTTP_WAITING;
}
}
return (bytes);
@@ -716,11 +767,8 @@ httpWrite(http_t *http, /* I - HTTP data */
if (http->data_encoding == HTTP_ENCODE_CHUNKED &&
(http->state == HTTP_GET_SEND || http->state == HTTP_POST_RECV ||
http->state == HTTP_POST_SEND || http->state == HTTP_PUT_RECV))
{
sprintf(len, "%x\r\n", length);
if (send(http->fd, len, strlen(len), 0) < 3)
if (httpPrintf(http, "%x\r\n", length) < 0)
return (-1);
}
if (length == 0)
{
@@ -745,6 +793,7 @@ httpWrite(http_t *http, /* I - HTTP data */
if (bytes < 0)
{
DEBUG_puts("httpWrite: error writing data...\n");
return (-1);
}
@@ -755,6 +804,12 @@ httpWrite(http_t *http, /* I - HTTP data */
http->data_remaining -= bytes;
}
if (http->data_encoding == HTTP_ENCODE_CHUNKED &&
(http->state == HTTP_GET_SEND || http->state == HTTP_POST_RECV ||
http->state == HTTP_POST_SEND || http->state == HTTP_PUT_RECV))
if (httpPrintf(http, "\r\n") < 0)
return (-1);
if (http->data_remaining == 0 && http->data_encoding == HTTP_ENCODE_LENGTH)
{
/*
@@ -786,6 +841,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));
@@ -797,6 +853,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;
@@ -814,23 +873,31 @@ 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)
{
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);
@@ -858,6 +925,7 @@ httpGets(char *line, /* I - Line to read into */
if (http->used > 0)
memcpy(http->buffer, bufptr, http->used);
DEBUG_printf(("httpGets(): Returning \"%s\"\n", line));
return (line);
}
else if (*bufptr == 0x0d)
@@ -866,6 +934,8 @@ httpGets(char *line, /* I - Line to read into */
*lineptr++ = *bufptr++;
}
DEBUG_puts("httpGets(): No new line available!");
return (NULL);
}
@@ -879,8 +949,11 @@ httpPrintf(http_t *http, /* I - HTTP data */
const char *format, /* I - printf-style format string */
...) /* I - Additional args as needed */
{
int bytes; /* Number of bytes to write */
char buf[HTTP_MAX_BUFFER]; /* Buffer for formatted string */
int bytes, /* Number of bytes to write */
nbytes, /* Number of bytes written */
tbytes; /* Number of bytes all together */
char buf[HTTP_MAX_BUFFER], /* Buffer for formatted string */
*bufptr; /* Pointer into buffer */
va_list ap; /* Variable argument pointer */
@@ -890,7 +963,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);
}
@@ -1092,6 +1169,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...
*/
@@ -1334,7 +1418,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...
@@ -1347,7 +1433,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);
}
@@ -1357,11 +1443,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);
+1
Ver Arquivo
@@ -245,6 +245,7 @@ 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);
+17 -17
Ver Arquivo
@@ -65,7 +65,7 @@
*/
static ipp_attribute_t *add_attr(ipp_t *ipp, int num_values);
static int ipp_read(http_t *http, char *buffer, int length);
static int ipp_read(http_t *http, unsigned char *buffer, int length);
/*
@@ -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;
}
@@ -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);
@@ -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;
/*
+2 -1
Ver Arquivo
@@ -87,11 +87,12 @@ typedef enum /**** Format tags for attribute formats... ****/
IPP_TAG_DATE,
IPP_TAG_RESOLUTION,
IPP_TAG_RANGE,
IPP_TAG_COLLECTION,
IPP_TAG_TEXTLANG,
IPP_TAG_NAMELANG,
IPP_TAG_TEXT = 0x41,
IPP_TAG_NAME,
IPP_TAG_KEYWORD,
IPP_TAG_KEYWORD = 0x44,
IPP_TAG_URI,
IPP_TAG_URISCHEME,
IPP_TAG_CHARSET,
+2 -1
Ver Arquivo
@@ -149,7 +149,8 @@ cupsLangGet(const char *language) /* I - Language or locale */
* operating systems.
*/
if (language == NULL || language[0] == '\0')
if (language == NULL || language[0] == '\0' ||
strcmp(language, "POSIX") == 0)
strcpy(langname, "C");
else
strcpy(langname, language);
+6 -1
Ver Arquivo
@@ -177,7 +177,12 @@ typedef struct cups_lang_str /**** Language Cache Structure ****/
* Prototypes...
*/
# define cupsLangDefault() cupsLangGet(setlocale(LC_ALL, ""))
# ifdef WIN32
# define cupsLangDefault() cupsLangGet(setlocale(LC_ALL, ""))
# else /* This fix works around bugs in the Linux and HP-UX setlocale() */
# define cupsLangDefault() cupsLangGet(getenv("LANG"))
# endif /* WIN32 */
extern char *cupsLangEncoding(cups_lang_t *lang);
extern void cupsLangFlush(void);
extern void cupsLangFree(cups_lang_t *lang);
+6 -34
Ver Arquivo
@@ -33,7 +33,6 @@
* ppdMarkDefaults() - Mark all default options in the PPD file.
* ppdMarkOption() - Mark an option in a PPD file.
* ppd_defaults() - Set the defaults for this group and all sub-groups.
* ppd_default() - Set the default choice for an option.
*/
/*
@@ -48,8 +47,7 @@
* Local functions...
*/
static void ppd_defaults(ppd_group_t *g);
static void ppd_default(ppd_option_t *o);
static void ppd_defaults(ppd_file_t *ppd, ppd_group_t *g);
/*
@@ -296,12 +294,7 @@ ppdMarkDefaults(ppd_file_t *ppd)/* I - PPD file record */
return;
for (i = ppd->num_groups, g = ppd->groups; i > 0; i --, g ++)
ppd_defaults(g);
o = ppdFindOption(ppd, "PageSize");
for (i = 0; i < ppd->num_sizes; i ++)
ppd->sizes[i].marked = strcmp(ppd->sizes[i].name, o->defchoice) == 0;
ppd_defaults(ppd, g);
}
@@ -394,7 +387,8 @@ ppdMarkOption(ppd_file_t *ppd, /* I - PPD file record */
*/
static void
ppd_defaults(ppd_group_t *g) /* I - Group to default */
ppd_defaults(ppd_file_t *ppd, /* I - PPD file */
ppd_group_t *g) /* I - Group to default */
{
int i; /* Looping var */
ppd_option_t *o; /* Current option */
@@ -406,32 +400,10 @@ ppd_defaults(ppd_group_t *g) /* I - Group to default */
for (i = g->num_options, o = g->options; i > 0; i --, o ++)
if (strcmp(o->keyword, "PageRegion") != 0)
ppd_default(o);
ppdMarkOption(ppd, o->keyword, o->defchoice);
for (i = g->num_subgroups, sg = g->subgroups; i > 0; i --, sg ++)
ppd_defaults(sg);
}
/*
* 'ppd_default()' - Set the default choice for an option.
*/
static void
ppd_default(ppd_option_t *o) /* I - Option to default */
{
int i; /* Looping var */
ppd_choice_t *c; /* Current choice */
if (o == NULL)
return;
for (i = o->num_choices, c = o->choices; i > 0; i --, c ++)
if (strcmp(c->choice, o->defchoice) == 0)
c->marked = 1;
else
c->marked = 0;
ppd_defaults(ppd, sg);
}
+80 -67
Ver Arquivo
@@ -70,6 +70,8 @@
# define WRITE_BINARY "w" /* Open a binary file for writing */
#endif /* WIN32 || __EMX__ */
#define safe_free(p) if (p) free(p) /* Safe free macro */
#define PPD_KEYWORD 1 /* Line contained a keyword */
#define PPD_OPTION 2 /* Line contained an option name */
#define PPD_TEXT 4 /* Line contained human-readable text */
@@ -119,14 +121,14 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
* Free all strings at the top level...
*/
free(ppd->lang_encoding);
free(ppd->lang_version);
free(ppd->modelname);
free(ppd->ttrasterizer);
free(ppd->manufacturer);
free(ppd->product);
free(ppd->nickname);
free(ppd->shortnickname);
safe_free(ppd->lang_encoding);
safe_free(ppd->lang_version);
safe_free(ppd->modelname);
safe_free(ppd->ttrasterizer);
safe_free(ppd->manufacturer);
safe_free(ppd->product);
safe_free(ppd->nickname);
safe_free(ppd->shortnickname);
/*
* Free any emulations...
@@ -136,11 +138,11 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
{
for (i = ppd->num_emulations, emul = ppd->emulations; i > 0; i --, emul ++)
{
free(emul->start);
free(emul->stop);
safe_free(emul->start);
safe_free(emul->stop);
}
free(ppd->emulations);
safe_free(ppd->emulations);
}
/*
@@ -152,7 +154,7 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
for (i = ppd->num_groups, group = ppd->groups; i > 0; i --, group ++)
ppd_free_group(group);
free(ppd->groups);
safe_free(ppd->groups);
}
/*
@@ -160,14 +162,14 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
*/
if (ppd->num_sizes > 0)
free(ppd->sizes);
safe_free(ppd->sizes);
/*
* Free any constraints...
*/
if (ppd->num_consts > 0)
free(ppd->consts);
safe_free(ppd->consts);
/*
* Free any fonts...
@@ -176,9 +178,9 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
if (ppd->num_fonts > 0)
{
for (i = ppd->num_fonts, font = ppd->fonts; i > 0; i --, font ++)
free(*font);
safe_free(*font);
free(ppd->fonts);
safe_free(ppd->fonts);
}
/*
@@ -186,13 +188,13 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
*/
if (ppd->num_profiles > 0)
free(ppd->profiles);
safe_free(ppd->profiles);
/*
* Free the whole record...
*/
free(ppd);
safe_free(ppd);
}
@@ -215,7 +217,7 @@ ppd_free_group(ppd_group_t *group) /* I - Group to free */
i --, option ++)
ppd_free_option(option);
free(group->options);
safe_free(group->options);
}
if (group->num_subgroups > 0)
@@ -225,7 +227,7 @@ ppd_free_group(ppd_group_t *group) /* I - Group to free */
i --, subgroup ++)
ppd_free_group(subgroup);
free(group->subgroups);
safe_free(group->subgroups);
}
}
@@ -246,9 +248,9 @@ ppd_free_option(ppd_option_t *option) /* I - Option to free */
for (i = option->num_choices, choice = option->choices;
i > 0;
i --, choice ++)
free(choice->code);
safe_free(choice->code);
free(option->choices);
safe_free(option->choices);
}
}
@@ -285,7 +287,7 @@ ppd_get_group(ppd_file_t *ppd, /* I - PPD file */
ppd->num_groups ++;
memset(group, 0, sizeof(ppd_group_t));
strcpy(group->text, name);
strncpy(group->text, name, sizeof(group->text) - 1);
}
return (group);
@@ -324,7 +326,7 @@ ppd_get_option(ppd_group_t *group, /* I - Group */
group->num_options ++;
memset(option, 0, sizeof(ppd_option_t));
strcpy(option->keyword, name);
strncpy(option->keyword, name, sizeof(option->keyword) - 1);
}
return (option);
@@ -356,7 +358,7 @@ ppd_add_choice(ppd_option_t *option, /* I - Option */
option->num_choices ++;
memset(choice, 0, sizeof(ppd_choice_t));
strcpy(choice->choice, name);
strncpy(choice->choice, name, sizeof(choice->choice) - 1);
return (choice);
}
@@ -386,7 +388,7 @@ ppd_add_size(ppd_file_t *ppd, /* I - PPD file */
ppd->num_sizes ++;
memset(size, 0, sizeof(ppd_size_t));
strcpy(size->name, name);
strncpy(size->name, name, sizeof(size->name) - 1);
return (size);
}
@@ -449,14 +451,14 @@ ppdOpen(FILE *fp) /* I - File to read from */
* Either this is not a PPD file, or it is not a 4.x PPD file.
*/
if (string != NULL)
free(string);
safe_free(string);
return (NULL);
}
if (string != NULL)
free(string);
DEBUG_printf(("ppdOpen: keyword = %s, string = %08x\n", keyword, string));
safe_free(string);
/*
* Allocate memory for the PPD file record...
@@ -599,9 +601,10 @@ ppdOpen(FILE *fp) /* I - File to read from */
ppd->num_profiles ++;
memset(profile, 0, sizeof(ppd_profile_t));
strcpy(profile->resolution, name);
strcpy(profile->media_type, text);
sscanf(string, "%f%f%f%f%f%f%f%f%f%f", &(profile->density),
strncpy(profile->resolution, name, sizeof(profile->resolution) - 1);
strncpy(profile->media_type, text, sizeof(profile->media_type) - 1);
sscanf(string, "%f%f%f%f%f%f%f%f%f%f%f", &(profile->density),
&(profile->gamma),
profile->matrix[0] + 0, profile->matrix[0] + 1,
profile->matrix[0] + 2, profile->matrix[1] + 0,
profile->matrix[1] + 1, profile->matrix[1] + 2,
@@ -646,25 +649,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 +696,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 +817,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (group == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -826,7 +830,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (option == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -843,23 +847,28 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (text[0])
{
strcpy(option->text, text);
strncpy(option->text, text, sizeof(option->text) - 1);
ppd_fix(option->text);
}
else
{
if (strcmp(name, "PageSize") == 0)
strcpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_SIZE));
strncpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_SIZE),
sizeof(option->text) - 1);
else if (strcmp(name, "MediaType") == 0)
strcpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_TYPE));
strncpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_TYPE),
sizeof(option->text) - 1);
else if (strcmp(name, "InputSlot") == 0)
strcpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_SOURCE));
strncpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_SOURCE),
sizeof(option->text) - 1);
else if (strcmp(name, "ColorModel") == 0)
strcpy(option->text, cupsLangString(language, CUPS_MSG_OUTPUT_MODE));
strncpy(option->text, cupsLangString(language, CUPS_MSG_OUTPUT_MODE),
sizeof(option->text) - 1);
else if (strcmp(name, "Resolution") == 0)
strcpy(option->text, cupsLangString(language, CUPS_MSG_RESOLUTION));
strncpy(option->text, cupsLangString(language, CUPS_MSG_RESOLUTION),
sizeof(option->text) - 1);
else
strcpy(option->text, name);
strncpy(option->text, name, sizeof(option->text) - 1);
}
option->section = PPD_ORDER_ANY;
@@ -875,7 +884,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (group == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -891,7 +900,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (option == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -906,7 +915,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
else
option->ui = PPD_UI_PICKONE;
strcpy(option->text, text);
strncpy(option->text, text, sizeof(option->text) - 1);
option->section = PPD_ORDER_JCL;
group = NULL;
@@ -923,7 +932,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (group != NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -945,7 +954,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (group == NULL || subgroup != NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -958,7 +967,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (subgroup == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -969,7 +978,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
memset(subgroup, 0, sizeof(ppd_group_t));
ppd_decode(string);
ppd_fix(string);
strcpy(subgroup->text, string);
strncpy(subgroup->text, string, sizeof(subgroup->text) - 1);
}
else if (strcmp(keyword, "CloseSubGroup") == 0)
subgroup = NULL;
@@ -979,7 +988,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (sscanf(string, "%f%s%s", &order, name, keyword) != 3)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -1048,14 +1057,15 @@ ppdOpen(FILE *fp) /* I - File to read from */
for (i = 0; i < group->num_options; i ++)
if (strcmp(keyword, group->options[i].keyword) == 0)
{
strcpy(group->options[i].defchoice, string);
strncpy(group->options[i].defchoice, string,
sizeof(group->options[i].defchoice) - 1);
break;
}
group = NULL;
}
else
strcpy(option->defchoice, string);
strncpy(option->defchoice, string, sizeof(option->defchoice) - 1);
}
else if (strcmp(keyword, "UIConstraints") == 0 ||
strcmp(keyword, "NonUIConstraints") == 0)
@@ -1069,7 +1079,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (constraint == NULL)
{
ppdClose(ppd);
free(string);
safe_free(string);
return (NULL);
}
@@ -1077,14 +1087,14 @@ ppdOpen(FILE *fp) /* I - File to read from */
constraint += ppd->num_consts;
ppd->num_consts ++;
switch (sscanf(string, "%s%s%s%s", constraint->option1,
switch (sscanf(string, "%40s%40s%40s%40s", constraint->option1,
constraint->choice1, constraint->option2,
constraint->choice2))
{
case 0 : /* Error */
case 1 : /* Error */
ppdClose(ppd);
free(string);
safe_free(string);
break;
case 2 : /* Two options... */
@@ -1160,7 +1170,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (mask & PPD_TEXT)
{
strcpy(choice->text, text);
strncpy(choice->text, text, sizeof(choice->text) - 1);
ppd_fix(choice->text);
}
else if (strcmp(name, "True") == 0)
@@ -1168,7 +1178,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
else if (strcmp(name, "False") == 0)
strcpy(choice->text, "No");
else
strcpy(choice->text, name);
strncpy(choice->text, name, sizeof(choice->text) - 1);
if (strncmp(keyword, "JCL", 3) == 0)
ppd_decode(string); /* Decode quoted string */
@@ -1177,8 +1187,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
string = NULL; /* Don't free this string below */
}
if (string != NULL)
free(string);
safe_free(string);
}
#ifdef DEBUG
@@ -1266,7 +1275,7 @@ ppdOpenFd(int fd) /* I - File to read from */
ppd = ppdOpen(fp);
free(fp);
safe_free(fp);
}
else
ppd = NULL;
@@ -1354,7 +1363,11 @@ compare_strings(char *s, /* I - First string */
* Bounce out if *s and *t aren't both digits...
*/
if (!isdigit(*s) || !isdigit(*t))
if (isdigit(*s) && !isdigit(*t))
return (1);
else if (!isdigit(*s) && isdigit(*t))
return (-1);
else if (!isdigit(*s) || !isdigit(*t))
continue;
if (*s < *t)
+1
Ver Arquivo
@@ -153,6 +153,7 @@ typedef struct /**** sRGB Color Profiles ****/
char resolution[41], /* Resolution or "-" */
media_type[41]; /* Media type of "-" */
float density, /* Ink density to use */
gamma, /* Gamma correction to use */
matrix[3][3]; /* Transform matrix */
} ppd_profile_t;
+4 -4
Ver Arquivo
@@ -686,8 +686,8 @@ checkrules(const char *filename, /* I - Filename */
bufptr = buffer + rules->offset - bufoffset;
while (n > 0)
if ((*bufptr >= 32 && *bufptr <= 126) ||
(*bufptr >= 8 && *bufptr <= 10) ||
*bufptr == 13 || *bufptr == 26)
(*bufptr >= 8 && *bufptr <= 13) ||
*bufptr == 26 || *bufptr == 27)
{
n --;
bufptr ++;
@@ -729,8 +729,8 @@ checkrules(const char *filename, /* I - Filename */
while (n > 0)
if ((*bufptr >= 160 && *bufptr <= 254) ||
(*bufptr >= 32 && *bufptr <= 126) ||
(*bufptr >= 8 && *bufptr <= 10) ||
*bufptr == 13 || *bufptr == 26)
(*bufptr >= 8 && *bufptr <= 13) ||
*bufptr == 26 || *bufptr == 27)
{
n --;
bufptr ++;
+64 -18
Ver Arquivo
@@ -118,7 +118,7 @@ cupsCancelJob(const char *name, /* I - Name of printer or class */
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, uri);
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-id", job);
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "job-id", job);
/*
* Do the request...
@@ -152,7 +152,6 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
const char *password; /* Password string */
char plain[255], /* Plaintext username:password */
encode[255]; /* Encoded username:password */
char junk[8192]; /* Junk buffer for error data */
static char authstring[255] = "";
/* Authorization string */
@@ -218,8 +217,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...
@@ -501,7 +502,6 @@ cupsGetPPD(const char *name) /* I - Printer name */
resource[HTTP_MAX_URI]; /* Resource name */
static char filename[HTTP_MAX_URI]; /* Local filename */
char *tempdir; /* Temporary file directory */
struct stat fileinfo; /* File information */
/*
@@ -517,33 +517,29 @@ cupsGetPPD(const char *name) /* I - Printer name */
#if defined(WIN32) || defined(__EMX__)
tempdir = "C:/WINDOWS/TEMP";
sprintf(filename, "%s/%s.ppd", tempdir, printer);
#else
if ((tempdir = getenv("TMPDIR")) == NULL)
tempdir = "/tmp";
sprintf(filename, "%s/%d.%s.ppd", tempdir, getuid(), printer);
#endif /* WIN32 || __EMX__ */
sprintf(filename, "%s/%s.ppd", tempdir, printer);
if (stat(filename, &fileinfo))
memset(&fileinfo, 0, sizeof(fileinfo));
/*
* And send a request to the HTTP server using "if-modified-since"...
* And send a request to the HTTP server...
*/
sprintf(resource, "/printers/%s.ppd", printer);
httpClearFields(cups_server);
httpSetField(cups_server, HTTP_FIELD_HOST, hostname);
httpSetField(cups_server, HTTP_FIELD_IF_MODIFIED_SINCE,
httpGetDateString(fileinfo.st_mtime));
httpGet(cups_server, resource);
switch (httpUpdate(cups_server))
{
case HTTP_OK : /* New file - get it! */
break;
case HTTP_NOT_MODIFIED : /* File hasn't been modified; use the current copy */
return (filename);
default :
return (NULL);
}
@@ -724,17 +720,17 @@ cupsPrintFile(const char *name, /* I - Printer or class name */
*/
if (cupsGetOption("raw", num_options, options))
ippAddString(request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format",
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/vnd.cups-raw");
else
ippAddString(request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format",
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/octet-stream");
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "requesting-user-name",
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
NULL, cupsUser());
if (title)
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL, title);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name", NULL, title);
/*
* Then add all options on the command-line...
@@ -889,6 +885,56 @@ cupsPrintFile(const char *name, /* I - Printer or class name */
}
/*
* 'cupsTempFile()' - Generate a temporary filename.
*/
char * /* O - Filename */
cupsTempFile(char *filename, /* I - Pointer to buffer */
int len) /* I - Size of buffer */
{
char *tmpdir; /* TMPDIR environment var */
static char buf[1024] = ""; /* Buffer if you pass in NULL and 0 */
/*
* See if a filename was specified...
*/
if (filename == NULL)
{
filename = buf;
len = sizeof(buf);
}
/*
* See if TMPDIR is defined...
*/
if ((tmpdir = getenv("TMPDIR")) == NULL)
tmpdir = "/var/tmp";
if ((strlen(tmpdir) + 8) > len)
{
/*
* The specified directory exceeds the size of the buffer; default it...
*/
strcpy(buf, "/var/tmp/XXXXXX");
return (mktemp(buf));
}
else
{
/*
* Make the temporary name using the specified directory...
*/
sprintf(filename, "%s/XXXXXX", tmpdir);
return (mktemp(filename));
}
}
/*
* 'cups_connect()' - Connect to the specified host...
*/
-62
Ver Arquivo
@@ -1,62 +0,0 @@
%%BeginResource: procset hpgltops 1.0 0
%
% "$Id: HPGLprolog 312 1999-05-11 19:45:40Z mike $"
%
% HP-GL/2 filter procset for the Common UNIX Printing System (CUPS).
%
% This procset contains the basic drawing commands that are used to
% reduce output size. Note the 'MP' (make newpath) definition - this
% should be called 'NP' (newpath), but GhostScript uses the 'NP' name
% for 'noaccess put' in some of its font files...
%
% Copyright 1993-1999 Easy Software Products
%
% These coded instructions, statements, and computer programs are the
% property of Easy Software Products and are protected by Federal
% copyright law. Distribution and use rights are outlined in the file
% "LICENSE.txt" which should have been included with this file. If this
% file is missing or damaged please contact Easy Software Products
% at:
%
% Attn: CUPS Licensing Information
% Easy Software Products
% 44141 Airport View Drive, Suite 204
% Hollywood, Maryland 20636-3111 USA
%
% Voice: (301) 373-9603
% EMail: cups-info@cups.org
% WWW: http://www.cups.org
%
/MO { moveto } bind def
/LI { lineto } bind def
/FI { fill } bind def
/ST { stroke } bind def
/CP { closepath } bind def
/MP { newpath } bind def
%
% If you have more than 8 pens defined for your HP-GL/2 output you'll
% need to add P# definitions (# = pen number) to set the appropriate color.
% If you don't you'll get errors. The default 8 pens cover the primary
% colors (white, black, red, green, yellow, blue, magenta, cyan). Ditto
% for pen widths (W#).
%
% PC and PW commands in the input stream will define/redefine these
% appropriately, but some packages don't generate them...
%
/P0 { 1.0 1.0 1.0 setrgbcolor } bind def
/P1 { 0.0 0.0 0.0 setrgbcolor } bind def
/P2 { 1.0 0.0 0.0 setrgbcolor } bind def
/P3 { 0.0 1.0 0.0 setrgbcolor } bind def
/P4 { 1.0 1.0 0.0 setrgbcolor } bind def
/P5 { 0.0 0.0 1.0 setrgbcolor } bind def
/P6 { 1.0 0.0 1.0 setrgbcolor } bind def
/P7 { 0.0 1.0 1.0 setrgbcolor } bind def
/W0 { DefaultPenWidth PenScaling mul setlinewidth } bind def
/W1 { DefaultPenWidth PenScaling mul setlinewidth } bind def
/W2 { DefaultPenWidth PenScaling mul setlinewidth } bind def
/W3 { DefaultPenWidth PenScaling mul setlinewidth } bind def
/W4 { DefaultPenWidth PenScaling mul setlinewidth } bind def
/W5 { DefaultPenWidth PenScaling mul setlinewidth } bind def
/W6 { DefaultPenWidth PenScaling mul setlinewidth } bind def
/W7 { DefaultPenWidth PenScaling mul setlinewidth } bind def
%%EndResource
+2 -2
Ver Arquivo
@@ -48,8 +48,8 @@ clean:
#
install:
-$(MKDIR) $(DATADIR)
$(CP) $(FILES) $(DATADIR)
-$(MKDIR) $(DATADIR)/data
$(CP) $(FILES) $(DATADIR)/data
#
# End of "$Id$".
-1051
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+6 -4
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
@@ -662,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>
+77 -77
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:19990709142832Z)/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
@@ -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\õ©•
@@ -929,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
@@ -1507,71 +1507,71 @@ xref
0000032975 00000 n
0000033079 00000 n
0000033181 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
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
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
0000046417 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
0000047291 00000 n
0000046417 00000 n
0000046557 00000 n
+7 -4
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
@@ -1091,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.
BIN
Ver Arquivo
Arquivo binário não exibido.
+4 -4
Ver Arquivo
@@ -57,8 +57,8 @@ install:
$(CP) $(TARGETS) $(SERVERROOT)/filter
-$(MKDIR) $(LIBDIR)
$(CP) $(LIBCUPSIMAGE) $(LIBDIR)
if test $(LIBCUPSIMAGE) != "libcupsimage.a"; then \
$(LN) $(LIBCUPSIMAGE) `basename $(LIBCUPSIMAGE) .1` \
-if test $(LIBCUPSIMAGE) != "libcupsimage.a"; then \
$(LN) $(LIBCUPSIMAGE) `basename $(LIBCUPSIMAGE) .1`; \
fi
#
@@ -76,8 +76,8 @@ $(HPGLOBJS): hpgltops.h
libcupsimage.so.1 libcupsimage.sl.1: $(IMAGEOBJS) ../Makedefs
echo Linking $@...
$(DSO) $@ $(IMAGEOBJS) $(DSOLIBS)
$(LN) $@ `basename $@ .1`
$(DSO) $@ $(IMAGEOBJS) $(DSOLIBS) -lm
-$(LN) $@ `basename $@ .1`
#
# libcupsimage.a
+5 -3
Ver Arquivo
@@ -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);
+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
+35 -35
Ver Arquivo
@@ -84,9 +84,9 @@ static void zshear(float [3][3], float, float);
*/
void
ImageWhiteToWhite(ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageWhiteToWhite(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
{
if (ImageHaveProfile)
while (count > 0)
@@ -104,9 +104,9 @@ ImageWhiteToWhite(ib_t *in, /* I - Input pixels */
*/
void
ImageWhiteToRGB(ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageWhiteToRGB(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
{
if (ImageHaveProfile)
while (count > 0)
@@ -133,9 +133,9 @@ ImageWhiteToRGB(ib_t *in, /* I - Input pixels */
*/
void
ImageWhiteToBlack(ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageWhiteToBlack(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
{
if (ImageHaveProfile)
while (count > 0)
@@ -157,9 +157,9 @@ ImageWhiteToBlack(ib_t *in, /* I - Input pixels */
*/
void
ImageWhiteToCMY(ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageWhiteToCMY(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
{
if (ImageHaveProfile)
while (count > 0)
@@ -186,9 +186,9 @@ ImageWhiteToCMY(ib_t *in, /* I - Input pixels */
*/
void
ImageWhiteToCMYK(ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageWhiteToCMYK(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
{
if (ImageHaveProfile)
while (count > 0)
@@ -216,9 +216,9 @@ ImageWhiteToCMYK(ib_t *in, /* I - Input pixels */
*/
void
ImageRGBToBlack(ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageRGBToBlack(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
{
if (ImageHaveProfile)
while (count > 0)
@@ -242,9 +242,9 @@ ImageRGBToBlack(ib_t *in, /* I - Input pixels */
*/
void
ImageRGBToCMY(ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageRGBToCMY(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
{
int c, m, y, k; /* CMYK values */
int cc, cm, cy; /* Calibrated CMY values */
@@ -316,9 +316,9 @@ ImageRGBToCMY(ib_t *in, /* I - Input pixels */
*/
void
ImageRGBToCMYK(ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageRGBToCMYK(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count)/* I - Number of pixels */
{
int c, m, y, k, /* CMYK values */
diff, /* Color differences */
@@ -385,7 +385,7 @@ ImageRGBToCMYK(ib_t *in, /* I - Input pixels */
else if (cy > 255)
*out++ = ImageDensity[255];
else
*out++ = cy;
*out++ = ImageDensity[cy];
*out++ = ImageDensity[k];
@@ -433,9 +433,9 @@ ImageRGBToCMYK(ib_t *in, /* I - Input pixels */
*/
void
ImageRGBToWhite(ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageRGBToWhite(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
{
if (ImageHaveProfile)
while (count > 0)
@@ -459,9 +459,9 @@ ImageRGBToWhite(ib_t *in, /* I - Input pixels */
*/
void
ImageRGBToRGB(ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
ImageRGBToRGB(const ib_t *in, /* I - Input pixels */
ib_t *out, /* I - Output pixels */
int count) /* I - Number of pixels */
{
int c, m, y, k; /* CMYK values */
int cr, cg, cb; /* Calibrated RGB values */
@@ -521,9 +521,9 @@ ImageRGBToRGB(ib_t *in, /* I - Input pixels */
*/
void
ImageLut(ib_t *pixels, /* I - Input/output pixels */
int count, /* I - Number of pixels/bytes to adjust */
ib_t *lut) /* I - Lookup table */
ImageLut(ib_t *pixels, /* IO - Input/output pixels */
int count, /* I - Number of pixels/bytes to adjust */
const ib_t *lut) /* I - Lookup table */
{
while (count > 0)
{
@@ -539,7 +539,7 @@ ImageLut(ib_t *pixels, /* I - Input/output pixels */
*/
void
ImageRGBAdjust(ib_t *pixels, /* I - Input/output pixels */
ImageRGBAdjust(ib_t *pixels, /* IO - Input/output pixels */
int count, /* I - Number of pixels to adjust */
int saturation, /* I - Color saturation (%) */
int hue) /* I - Color hue (degrees) */
+14 -14
Ver Arquivo
@@ -72,14 +72,14 @@ static int gif_read_image(FILE *fp, image_t *img, gif_cmap_t cmap,
* 'ImageReadGIF()' - Read a GIF image file.
*/
int /* O - Read status */
ImageReadGIF(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation,/* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
ib_t *lut) /* I - Lookup table for gamma/brightness */
int /* O - Read status */
ImageReadGIF(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation, /* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
const ib_t *lut) /* I - Lookup table for gamma/brightness */
{
unsigned char buf[1024]; /* Input buffer */
gif_cmap_t cmap; /* Colormap */
@@ -236,13 +236,13 @@ ImageReadGIF(image_t *img, /* IO - Image */
* 'gif_read_cmap()' - Read the colormap from a GIF file...
*/
static int
gif_read_cmap(FILE *fp,
int ncolors,
gif_cmap_t cmap,
int *gray)
static int /* O - -1 on error, 0 on success */
gif_read_cmap(FILE *fp, /* I - File to read from */
int ncolors, /* I - Number of colors in file */
gif_cmap_t cmap, /* O - Colormap information */
int *gray) /* IO - Is the image grayscale? */
{
int i;
int i; /* Looping var */
/*
+7 -7
Ver Arquivo
@@ -41,13 +41,13 @@
*/
int /* O - Read status */
ImageReadJPEG(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation, /* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
ib_t *lut) /* I - Lookup table for gamma/brightness */
ImageReadJPEG(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation, /* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
const ib_t *lut) /* I - Lookup table for gamma/brightness */
{
struct jpeg_decompress_struct cinfo; /* Decompressor info */
struct jpeg_error_mgr jerr; /* Error handler info */
+7 -7
Ver Arquivo
@@ -44,13 +44,13 @@
*/
int /* O - Read status */
ImageReadPhotoCD(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation, /* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
ib_t *lut) /* I - Lookup table for gamma/brightness */
ImageReadPhotoCD(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation, /* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
const ib_t *lut) /* I - Lookup table for gamma/brightness */
{
int x, y; /* Looping vars */
int xdir, /* X direction */
+8 -8
Ver Arquivo
@@ -40,14 +40,14 @@
* 'ImageReadPNG()' - Read a PNG image file.
*/
int /* O - Read status */
ImageReadPNG(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation,/* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
ib_t *lut) /* I - Lookup table for gamma/brightness */
int /* O - Read status */
ImageReadPNG(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation, /* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
const ib_t *lut) /* I - Lookup table for gamma/brightness */
{
int y; /* Looping var */
png_structp pp; /* PNG read pointer */
+8 -8
Ver Arquivo
@@ -38,14 +38,14 @@
* 'ImageReadPNM()' - Read a PNM image file.
*/
int /* O - Read status */
ImageReadPNM(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation,/* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
ib_t *lut) /* I - Lookup table for gamma/brightness */
int /* O - Read status */
ImageReadPNM(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation, /* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
const ib_t *lut) /* I - Lookup table for gamma/brightness */
{
int x, y; /* Looping vars */
int bpp; /* Bytes per pixel */
+8 -8
Ver Arquivo
@@ -38,14 +38,14 @@
* 'ImageReadSGI()' - Read a SGI image file.
*/
int /* O - Read status */
ImageReadSGI(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation,/* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
ib_t *lut) /* I - Lookup table for gamma/brightness */
int /* O - Read status */
ImageReadSGI(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation, /* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
const ib_t *lut) /* I - Lookup table for gamma/brightness */
{
int i, y; /* Looping vars */
int bpp; /* Bytes per pixel */
+7 -7
Ver Arquivo
@@ -75,13 +75,13 @@ static unsigned read_unsigned(FILE *fp);
*/
int /* O - Read status */
ImageReadSunRaster(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation, /* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
ib_t *lut) /* I - Lookup table for gamma/brightness */
ImageReadSunRaster(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary,/* I - Secondary choice for colorspace */
int saturation,/* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
const ib_t *lut) /* I - Lookup table for gamma/brightness */
{
int i, x, y,
bpp, /* Bytes per pixel */
+7 -7
Ver Arquivo
@@ -42,13 +42,13 @@
*/
int /* O - Read status */
ImageReadTIFF(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation, /* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
ib_t *lut) /* I - Lookup table for gamma/brightness */
ImageReadTIFF(image_t *img, /* IO - Image */
FILE *fp, /* I - Image file */
int primary, /* I - Primary choice for colorspace */
int secondary, /* I - Secondary choice for colorspace */
int saturation, /* I - Color saturation (%) */
int hue, /* I - Color hue (degrees) */
const ib_t *lut) /* I - Lookup table for gamma/brightness */
{
TIFF *tif; /* TIFF file */
uint32 width, height; /* Size of image */
+135 -120
Ver Arquivo
@@ -67,12 +67,12 @@ static void flush_tile(image_t *img);
*/
image_t * /* O - New image */
ImageOpen(char *filename, /* I - Filename of image */
int primary, /* I - Primary colorspace needed */
int secondary, /* I - Secondary colorspace if primary no good */
int saturation, /* I - Color saturation level */
int hue, /* I - Color hue adjustment */
ib_t *lut) /* I - RGB gamma/brightness LUT */
ImageOpen(char *filename, /* I - Filename of image */
int primary, /* I - Primary colorspace needed */
int secondary, /* I - Secondary colorspace if primary no good */
int saturation,/* I - Color saturation level */
int hue, /* I - Color hue adjustment */
const ib_t *lut) /* I - RGB gamma/brightness LUT */
{
FILE *fp; /* File pointer */
unsigned char header[16], /* First 16 bytes of file */
@@ -105,6 +105,7 @@ ImageOpen(char *filename, /* I - Filename of image */
memset(header2, 0, sizeof(header2));
fread(header2, 1, sizeof(header2), fp);
fseek(fp, 0, SEEK_SET);
lseek(fileno(fp), 0, SEEK_SET); /* Avoid standard C library bugs */
/*
* Allocate memory...
@@ -178,33 +179,46 @@ ImageClose(image_t *img) /* I - Image to close */
*next; /* Next cached tile */
/*
* Free the image cache...
*/
for (current = img->first; current != NULL; current = next)
{
next = current->next;
free(current);
}
/*
* Wipe the tile cache file (if any)...
*/
if (img->cachefile != NULL)
{
fprintf(stderr, "DEBUG: Closing and removing swap file \"%s\"...\n",
img->cachename);
fclose(img->cachefile);
unlink(img->cachename);
}
/*
* Free the image cache...
*/
fputs("DEBUG: Freeing memory...\n", stderr);
for (current = img->first; current != NULL; current = next)
{
fprintf(stderr, "DEBUG: Freeing cache (%08lx, next = %08lx)...\n",
current, next);
next = current->next;
free(current);
}
/*
* Free the rest of memory...
*/
if (img->tiles != NULL)
{
fprintf(stderr, "DEBUG: Freeing tiles (%08lx)...\n", img->tiles[0]);
free(img->tiles[0]);
fprintf(stderr, "DEBUG: Freeing tile pointers (%08lx)...\n", img->tiles);
free(img->tiles);
}
@@ -216,7 +230,7 @@ ImageClose(image_t *img) /* I - Image to close */
* 'ImageSetMaxTiles()' - Set the maximum number of tiles to cache.
*
* If the "max_tiles" argument is 0 then the maximum number of tiles is
* computed from the image size.
* computed from the image size or the RIP_CACHE environment variable.
*/
void
@@ -273,9 +287,7 @@ ImageSetMaxTiles(image_t *img, /* I - Image to set */
img->max_ics = max_tiles;
#ifdef DEBUG
fprintf(stderr, "ImageSetMaxTiles: max_ics=%d...\n", img->max_ics);
#endif /* DEBUG */
fprintf(stderr, "DEBUG: max_ics=%d...\n", img->max_ics);
}
@@ -284,24 +296,23 @@ ImageSetMaxTiles(image_t *img, /* I - Image to set */
*/
void
ImageSetProfile(float density, /* I - Ink/marker density */
ImageSetProfile(float d, /* I - Ink/marker density */
float g, /* I - Ink/marker gamma */
float matrix[3][3]) /* I - Color transform matrix */
{
int i, j, k; /* Looping vars */
float g; /* Gamma correction */
int i, j, k; /* Looping vars */
float m; /* Current matrix value */
int *im; /* Pointer into ImageMatrix */
ImageHaveProfile = 1;
for (i = 0; i < 3; i ++)
for (i = 0, im = ImageMatrix[0][0]; i < 3; i ++)
for (j = 0; j < 3; j ++)
for (k = 0; k < 256; k ++)
ImageMatrix[i][j][k] = (int)(k * matrix[i][j] + 0.5);
for (k = 0, m = matrix[i][j]; k < 256; k ++)
*im++ = (int)(k * m + 0.5);
g = 1.0 / density;
for (k = 0; k < 256; k ++)
ImageDensity[k] = 255.0 * density * pow((float)k / 255.0, g) + 0.5;
for (k = 0, im = ImageDensity; k < 256; k ++)
*im++ = 255.0 * d * pow((float)k / 255.0, g) + 0.5;
}
@@ -309,17 +320,17 @@ ImageSetProfile(float density, /* I - Ink/marker density */
* 'ImageGetCol()' - Get a column of pixels from an image.
*/
int
ImageGetCol(image_t *img,
int x,
int y,
int height,
ib_t *pixels)
int /* O - -1 on error, 0 on success */
ImageGetCol(image_t *img, /* I - Image */
int x, /* I - Column */
int y, /* I - Start row */
int height, /* I - Column height */
ib_t *pixels) /* O - Pixel data */
{
int bpp,
twidth,
count;
ib_t *ib;
int bpp, /* Bytes per pixel */
twidth, /* Tile width */
count; /* Number of pixels to get */
const ib_t *ib; /* Pointer into tile */
if (img == NULL || x < 0 || x >= img->xsize || y >= img->ysize)
@@ -376,16 +387,16 @@ ImageGetCol(image_t *img,
* 'ImageGetRow()' - Get a row of pixels from an image.
*/
int
ImageGetRow(image_t *img,
int x,
int y,
int width,
ib_t *pixels)
int /* O - -1 on error, 0 on success */
ImageGetRow(image_t *img, /* I - Image */
int x, /* I - Start column */
int y, /* I - Row */
int width, /* I - Width of row */
ib_t *pixels) /* O - Pixel data */
{
int bpp,
count;
ib_t *ib;
int bpp, /* Bytes per pixel */
count; /* Number of pixels to get */
const ib_t *ib; /* Pointer to pixels */
if (img == NULL || y < 0 || y >= img->ysize || x >= img->xsize)
@@ -429,19 +440,19 @@ ImageGetRow(image_t *img,
* 'ImagePutCol()' - Put a column of pixels to an image.
*/
int
ImagePutCol(image_t *img,
int x,
int y,
int height,
ib_t *pixels)
int /* O - -1 on error, 0 on success */
ImagePutCol(image_t *img, /* I - Image */
int x, /* I - Column */
int y, /* I - Start row */
int height, /* I - Column height */
const ib_t *pixels) /* I - Pixels to put */
{
int bpp,
twidth,
count;
int tilex,
tiley;
ib_t *ib;
int bpp, /* Bytes per pixel */
twidth, /* Width of tile */
count; /* Number of pixels to put */
int tilex, /* Column within tile */
tiley; /* Row within tile */
ib_t *ib; /* Pointer to pixels in tile */
if (img == NULL || x < 0 || x >= img->xsize || y >= img->ysize)
@@ -503,18 +514,18 @@ ImagePutCol(image_t *img,
* 'ImagePutRow()' - Put a row of pixels to an image.
*/
int
ImagePutRow(image_t *img,
int x,
int y,
int width,
ib_t *pixels)
int /* O - -1 on error, 0 on success */
ImagePutRow(image_t *img, /* I - Image */
int x, /* I - Start column */
int y, /* I - Row */
int width, /* I - Row width */
const ib_t *pixels) /* I - Pixel data */
{
int bpp,
count;
int tilex,
tiley;
ib_t *ib;
int bpp, /* Bytes per pixel */
count; /* Number of pixels to put */
int tilex, /* Column within tile */
tiley; /* Row within tile */
ib_t *ib; /* Pointer to pixels in tile */
if (img == NULL || y < 0 || y >= img->ysize || x >= img->xsize)
@@ -563,28 +574,33 @@ ImagePutRow(image_t *img,
* 'get_tile()' - Get a cached tile.
*/
static ib_t *
get_tile(image_t *img,
int x,
int y)
static ib_t * /* O - Pointer to tile or NULL */
get_tile(image_t *img, /* I - Image */
int x, /* I - Column in image */
int y) /* I - Row in image */
{
int bpp,
tilex,
tiley,
xtiles,
ytiles;
ic_t *ic;
itile_t *tile;
int bpp, /* Bytes per pixel */
tilex, /* Column within tile */
tiley, /* Row within tile */
xtiles, /* Number of tiles horizontally */
ytiles; /* Number of tiles vertically */
ic_t *ic; /* Cache pointer */
itile_t *tile; /* Tile pointer */
if (x >= img->xsize || y >= img->ysize)
{
fprintf(stderr, "ERROR: Internal image RIP error - %d,%d is outside of %dx%d\n",
x, y, img->xsize, img->ysize);
return (NULL);
}
if (img->tiles == NULL)
{
xtiles = (img->xsize + TILE_SIZE - 1) / TILE_SIZE;
ytiles = (img->ysize + TILE_SIZE - 1) / TILE_SIZE;
#ifdef DEBUG
fprintf(stderr, "get_tile: Creating tile array (%dx%d)\n", xtiles, ytiles);
#endif /* DEBUG */
fprintf(stderr, "DEBUG: Creating tile array (%dx%d)\n", xtiles, ytiles);
img->tiles = calloc(sizeof(itile_t *), ytiles);
tile = calloc(sizeof(itile_t), xtiles * ytiles);
@@ -609,20 +625,18 @@ get_tile(image_t *img,
{
if (img->num_ics < img->max_ics)
{
#ifdef DEBUG
fputs("get_tile: Allocating new cache tile...\n", stderr);
#endif /* DEBUG */
ic = calloc(sizeof(ic_t) + bpp * TILE_SIZE * TILE_SIZE, 1);
ic->pixels = ((ib_t *)ic) + sizeof(ic_t);
img->num_ics ++;
fprintf(stderr, "DEBUG: Allocated cache tile %d (%08lx)...\n",
img->num_ics, ic);
}
else
{
#ifdef DEBUG
fputs("get_tile: Flushing old cache tile...\n", stderr);
#endif /* DEBUG */
fprintf(stderr, "DEBUG: Flushing old cache tile (%08lx)...\n",
img->first);
flush_tile(img);
ic = img->first;
@@ -633,10 +647,8 @@ get_tile(image_t *img,
if (tile->pos >= 0)
{
#ifdef DEBUG
fprintf(stderr, "get_tile: loading cache tile from file position %d...\n",
fprintf(stderr, "DEBUG: Loading cache tile from file position %d...\n",
tile->pos);
#endif /* DEBUG */
if (ftell(img->cachefile) != tile->pos)
if (fseek(img->cachefile, tile->pos, SEEK_SET))
@@ -646,9 +658,7 @@ get_tile(image_t *img,
}
else
{
#ifdef DEBUG
fputs("get_tile: Clearing cache tile...\n", stderr);
#endif /* DEBUG */
fputs("DEBUG: Clearing cache tile...\n", stderr);
memset(ic->pixels, 0, bpp * TILE_SIZE * TILE_SIZE);
}
@@ -679,17 +689,13 @@ get_tile(image_t *img,
*/
static void
flush_tile(image_t *img)
flush_tile(image_t *img) /* I - Image */
{
int bpp;
itile_t *tile;
int bpp; /* Bytes per pixel */
itile_t *tile; /* Pointer to tile */
#ifdef DEBUG
fprintf(stderr, "flush_tile(%08x)...\n", img);
#endif /* DEBUG */
bpp = ImageGetDepth(img);
tile = img->first->tile;
@@ -701,16 +707,15 @@ flush_tile(image_t *img)
if (img->cachefile == NULL)
{
tmpnam(img->cachename);
cupsTempFile(img->cachename, sizeof(img->cachename));
#ifdef DEBUG
fprintf(stderr, "flush_tile: Creating cache file %s...\n", img->cachename);
#endif /* DEBUG */
fprintf(stderr, "DEBUG: Creating swap file \"%s\"...\n", img->cachename);
if ((img->cachefile = fopen(img->cachename, "wb+")) == NULL)
{
fprintf(stderr, "flush_tile: Unable to create swap file - %s\n",
strerror(errno));
perror("ERROR: Unable to create image swap file");
tile->ic = NULL;
tile->dirty = 0;
return;
}
}
@@ -719,22 +724,32 @@ flush_tile(image_t *img)
{
if (ftell(img->cachefile) != tile->pos)
if (fseek(img->cachefile, tile->pos, SEEK_SET))
perror("flush_tile:");
{
perror("ERROR: Unable to seek in swap file");
tile->ic = NULL;
tile->dirty = 0;
return;
}
}
else
{
if (fseek(img->cachefile, 0, SEEK_END))
perror("flush_tile:");
{
perror("ERROR: Unable to append to swap file");
tile->ic = NULL;
tile->dirty = 0;
return;
}
tile->pos = ftell(img->cachefile);
}
#ifdef DEBUG
fprintf(stderr, "flush_tile: Wrote tile cache at position %d...\n",
tile->pos);
#endif /* DEBUG */
fwrite(tile->ic->pixels, bpp, TILE_SIZE * TILE_SIZE, img->cachefile);
if (fwrite(tile->ic->pixels, bpp, TILE_SIZE * TILE_SIZE, img->cachefile) < 1)
perror("ERROR: Unable to write tile to swap file");
else
fprintf(stderr, "DEBUG: Wrote tile at position %d...\n", tile->pos);
tile->ic = NULL;
tile->dirty = 0;
}
+25 -23
Ver Arquivo
@@ -153,57 +153,59 @@ typedef struct
*/
extern image_t *ImageOpen(char *filename, int primary, int secondary,
int saturation, int hue, ib_t *lut);
int saturation, int hue, const ib_t *lut);
extern void ImageClose(image_t *img);
extern void ImageSetMaxTiles(image_t *img, int max_tiles);
extern void ImageSetProfile(float density, float matrix[3][3]);
extern void ImageSetProfile(float d, float g, float matrix[3][3]);
#define ImageGetDepth(img) ((img)->colorspace < 0 ? -(img)->colorspace : (img)->colorspace)
extern int ImageGetCol(image_t *img, int x, int y, int height, ib_t *pixels);
extern int ImageGetRow(image_t *img, int x, int y, int width, ib_t *pixels);
extern int ImagePutCol(image_t *img, int x, int y, int height, ib_t *pixels);
extern int ImagePutRow(image_t *img, int x, int y, int width, ib_t *pixels);
extern int ImagePutCol(image_t *img, int x, int y, int height, const ib_t *pixels);
extern int ImagePutRow(image_t *img, int x, int y, int width, const ib_t *pixels);
/*
* File formats...
*/
extern int ImageReadGIF(image_t *img, FILE *fp, int primary, int secondary,
int saturation, int hue, ib_t *lut);
int saturation, int hue, const ib_t *lut);
extern int ImageReadJPEG(image_t *img, FILE *fp, int primary, int secondary,
int saturation, int hue, ib_t *lut);
int saturation, int hue, const ib_t *lut);
extern int ImageReadPNG(image_t *img, FILE *fp, int primary, int secondary,
int saturation, int hue, ib_t *lut);
int saturation, int hue, const ib_t *lut);
extern int ImageReadPNM(image_t *img, FILE *fp, int primary, int secondary,
int saturation, int hue, ib_t *lut);
int saturation, int hue, const ib_t *lut);
extern int ImageReadPhotoCD(image_t *img, FILE *fp, int primary,
int secondary, int saturation, int hue, ib_t *lut);
int secondary, int saturation, int hue,
const ib_t *lut);
extern int ImageReadSGI(image_t *img, FILE *fp, int primary, int secondary,
int saturation, int hue, ib_t *lut);
int saturation, int hue, const ib_t *lut);
extern int ImageReadSunRaster(image_t *img, FILE *fp, int primary,
int secondary, int saturation, int hue, ib_t *lut);
int secondary, int saturation, int hue,
const ib_t *lut);
extern int ImageReadTIFF(image_t *img, FILE *fp, int primary, int secondary,
int saturation, int hue, ib_t *lut);
int saturation, int hue, const ib_t *lut);
/*
* Colorspace conversions...
*/
extern void ImageWhiteToWhite(ib_t *in, ib_t *out, int count);
extern void ImageWhiteToRGB(ib_t *in, ib_t *out, int count);
extern void ImageWhiteToBlack(ib_t *in, ib_t *out, int count);
extern void ImageWhiteToCMY(ib_t *in, ib_t *out, int count);
extern void ImageWhiteToCMYK(ib_t *in, ib_t *out, int count);
extern void ImageWhiteToWhite(const ib_t *in, ib_t *out, int count);
extern void ImageWhiteToRGB(const ib_t *in, ib_t *out, int count);
extern void ImageWhiteToBlack(const ib_t *in, ib_t *out, int count);
extern void ImageWhiteToCMY(const ib_t *in, ib_t *out, int count);
extern void ImageWhiteToCMYK(const ib_t *in, ib_t *out, int count);
extern void ImageRGBToWhite(ib_t *in, ib_t *out, int count);
extern void ImageRGBToRGB(ib_t *in, ib_t *out, int count);
extern void ImageRGBToBlack(ib_t *in, ib_t *out, int count);
extern void ImageRGBToCMY(ib_t *in, ib_t *out, int count);
extern void ImageRGBToCMYK(ib_t *in, ib_t *out, int count);
extern void ImageRGBToWhite(const ib_t *in, ib_t *out, int count);
extern void ImageRGBToRGB(const ib_t *in, ib_t *out, int count);
extern void ImageRGBToBlack(const ib_t *in, ib_t *out, int count);
extern void ImageRGBToCMY(const ib_t *in, ib_t *out, int count);
extern void ImageRGBToCMYK(const ib_t *in, ib_t *out, int count);
extern void ImageRGBAdjust(ib_t *pixels, int count, int saturation, int hue);
extern void ImageLut(ib_t *pixels, int count, ib_t *lut);
extern void ImageLut(ib_t *pixels, int count, const ib_t *lut);
/*
* Image scaling operations...
+6 -1
Ver Arquivo
@@ -91,6 +91,7 @@ main(int argc, /* I - Number of command-line arguments */
float zoom; /* Zoom facter */
int ppi; /* Pixels-per-inch */
int hue, sat; /* Hue and saturation adjustment */
int realcopies; /* Real copies being printed */
if (argc != 7)
@@ -258,8 +259,11 @@ main(int argc, /* I - Number of command-line arguments */
if (Copies > 1 && !slowcollate)
{
printf("/#copies %d def\n", Copies);
Copies = 1;
realcopies = Copies;
Copies = 1;
}
else
realcopies = 1;
/*
* Output the pages...
@@ -273,6 +277,7 @@ main(int argc, /* I - Number of command-line arguments */
for (xpage = 0; xpage < xpages; xpage ++)
for (ypage = 0; ypage < ypages; ypage ++, page ++)
{
fprintf(stderr, "PAGE: %d %d\n", page, realcopies);
fprintf(stderr, "INFO: Printing page %d...\n", page);
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
+20 -10
Ver Arquivo
@@ -296,7 +296,7 @@ main(int argc, /* I - Number of command-line arguments */
resolution = "";
/*
* Choose the appropriate colorspace and color profile...
* Choose the appropriate colorspace...
*/
switch (header.cupsColorSpace)
@@ -388,22 +388,32 @@ main(int argc, /* I - Number of command-line arguments */
if (ppd != NULL)
{
fprintf(stderr, "DEBUG: Searching for profile \"%s/%s\"...\n",
resolution, media_type);
for (i = 0, profile = ppd->profiles; i < ppd->num_profiles; i ++, profile ++)
{
fprintf(stderr, "DEBUG: \"%s/%s\" = ", profile->resolution,
profile->media_type);
if ((strcmp(profile->resolution, resolution) == 0 ||
profile->resolution[0] == '-') &&
(strcmp(profile->media_type, media_type) == 0 ||
profile->media_type[0] == '-'))
{
fputs("MATCH!\n", stderr);
break;
}
else
fputs("no.\n", stderr);
}
/*
* If we found a color profile, use it!
*/
if (i < ppd->num_profiles)
{
fputs("Setting color profile!\n", stderr);
ImageSetProfile(profile->density, profile->matrix);
}
ImageSetProfile(profile->density, profile->gamma, profile->matrix);
}
/*
@@ -554,6 +564,8 @@ main(int argc, /* I - Number of command-line arguments */
Copies = 1;
}
else
header.NumCopies = 1;
/*
* Create the dithering lookup tables...
@@ -597,7 +609,7 @@ main(int argc, /* I - Number of command-line arguments */
fprintf(stderr, "DEBUG: cupsColorSpace = %d\n", header.cupsColorSpace);
fprintf(stderr, "DEBUG: img->colorspace = %d\n", img->colorspace);
row = malloc(header.cupsBytesPerLine);
row = malloc(2 * header.cupsBytesPerLine);
ras = cupsRasterOpen(1, CUPS_RASTER_WRITE);
blank = img->colorspace < 0 ? 0 : ~0;
@@ -2245,7 +2257,7 @@ format_KCMYcm(cups_page_header_t *header,/* I - Page header */
if (pk)
*ptr++ ^= 32; /* Black */
else if (pc && pm)
*ptr++ ^= 3; /* Blue (light cyan + light magenta) */
*ptr++ ^= 17; /* Blue (cyan + light magenta) */
else if (pc && py)
*ptr++ ^= 6; /* Green (light cyan + yellow) */
else if (pm && py)
@@ -2311,7 +2323,7 @@ format_KCMYcm(cups_page_header_t *header,/* I - Page header */
*kptr ^= bitmask; /* Black */
else if (pc && pm)
{
*lcptr ^= bitmask; /* Blue (light cyan + light magenta) */
*cptr ^= bitmask; /* Blue (cyan + light magenta) */
*lmptr ^= bitmask;
}
else if (pc && py)
@@ -2402,7 +2414,6 @@ format_KCMYcm(cups_page_header_t *header,/* I - Page header */
for (x = xsize; x > 0; x --, r0 += 4)
{
if (r0[0] > dither[x & 15] &&
r0[1] < dither[x & 15] &&
r0[2] < dither[x & 15])
*ptr ^= bitmask;
@@ -2456,7 +2467,6 @@ format_KCMYcm(cups_page_header_t *header,/* I - Page header */
for (x = xsize; x > 0; x --, r0 += 4)
{
if (r0[0] > dither[x & 15] &&
r0[1] < dither[x & 15] &&
r0[2] > dither[x & 15])
*ptr ^= bitmask;
+43 -21
Ver Arquivo
@@ -97,6 +97,7 @@ main(int argc, /* I - Number of command-line arguments */
int level; /* Nesting level for embedded files */
int nbytes, /* Number of bytes read */
tbytes; /* Total bytes to read for binary data */
int page; /* Current page sequence number */
if (argc < 6 || argc > 7)
@@ -204,7 +205,7 @@ main(int argc, /* I - Number of command-line arguments */
if (sloworder || slowcollate)
{
temp = fopen(tmpnam(tempfile), "wb+");
temp = fopen(cupsTempFile(tempfile, sizeof(tempfile)), "wb+");
if (temp == NULL)
slowcollate = sloworder = 0;
@@ -276,7 +277,7 @@ main(int argc, /* I - Number of command-line arguments */
if (strncmp(line, "%%BeginDocument:", 16) == 0 ||
strncmp(line, "%%BeginDocument ", 16) == 0) /* Adobe Acrobat BUG */
level ++;
else if (strcmp(line, "%%EndDocument") == 0)
else if (strcmp(line, "%%EndDocument") == 0 && level > 0)
level --;
else if (strncmp(line, "%%Page:", 7) == 0 && level == 0)
break;
@@ -303,12 +304,12 @@ main(int argc, /* I - Number of command-line arguments */
* Then read all of the pages, filtering as needed...
*/
for (;;)
for (page = 1;;)
{
if (strncmp(line, "%%BeginDocument:", 16) == 0 ||
strncmp(line, "%%BeginDocument ", 16) == 0) /* Adobe Acrobat BUG */
level ++;
else if (strcmp(line, "%%EndDocument") == 0)
else if (strcmp(line, "%%EndDocument") == 0 && level > 0)
level --;
else if (strncmp(line, "%%Page:", 7) == 0 && level == 0)
{
@@ -320,7 +321,7 @@ main(int argc, /* I - Number of command-line arguments */
if (strncmp(line, "%%BeginDocument:", 16) == 0 ||
strncmp(line, "%%BeginDocument ", 16) == 0) /* Adobe Acrobat BUG */
level ++;
else if (strcmp(line, "%%EndDocument") == 0)
else if (strcmp(line, "%%EndDocument") == 0 && level > 0)
level --;
else if (strncmp(line, "%%Page:", 7) == 0 && level == 0)
break;
@@ -334,16 +335,22 @@ main(int argc, /* I - Number of command-line arguments */
if (slowcollate || sloworder)
Pages[NumPages] = ftell(temp);
NumPages ++;
if (!sloworder)
{
if (ppd == NULL || ppd->num_filters == 0)
fprintf(stderr, "PAGE: %d %d\n", NumPages, Copies);
if ((NumPages % NUp) == 0)
{
if (ppd == NULL || ppd->num_filters == 0)
fprintf(stderr, "PAGE: %d %d\n", page, Copies);
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
start_nup(NumPages - 1);
printf("%%%%Page: %d %d\n", page, page);
page ++;
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
}
start_nup(NumPages);
}
NumPages ++;
}
}
else if (strncmp(line, "%%BeginBinary:", 14) == 0 ||
@@ -390,19 +397,26 @@ main(int argc, /* I - Number of command-line arguments */
if (slowcollate || sloworder)
{
Pages[NumPages] = ftell(temp);
page = 1;
if (!sloworder)
{
while (Copies > 1)
while (Copies > 0)
{
rewind(temp);
for (number = 0; number < NumPages; number ++)
{
if (ppd == NULL || ppd->num_filters == 0)
fprintf(stderr, "PAGE: %d 1\n", number + 1);
if ((number % NUp) == 0)
{
if (ppd == NULL || ppd->num_filters == 0)
fprintf(stderr, "PAGE: %d 1\n", page);
printf("%%%%Page: %d %d\n", page, page);
page ++;
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
}
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
start_nup(number);
copy_bytes(temp, Pages[number + 1] - Pages[number]);
end_nup(number);
@@ -417,11 +431,17 @@ main(int argc, /* I - Number of command-line arguments */
{
for (number = NumPages - 1; number >= 0; number --)
{
if (ppd == NULL || ppd->num_filters == 0)
fprintf(stderr, "PAGE: %d %d\n", NumPages - number,
slowcollate ? 1 : Copies);
if ((number % NUp) == 0)
{
if (ppd == NULL || ppd->num_filters == 0)
fprintf(stderr, "PAGE: %d %d\n", page,
slowcollate ? 1 : Copies);
printf("%%%%Page: %d %d\n", page, page);
page ++;
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
}
ppdEmit(ppd, stdout, PPD_ORDER_PAGE);
start_nup(NumPages - 1 - number);
fseek(temp, Pages[number], SEEK_SET);
copy_bytes(temp, Pages[number + 1] - Pages[number]);
@@ -596,7 +616,8 @@ copy_bytes(FILE *fp, /* I - File to read from */
static void
end_nup(int number) /* I - Page number */
{
puts("grestore");
if (Flip || Orientation || NUp > 1)
puts("grestoreall");
switch (NUp)
{
@@ -683,7 +704,8 @@ start_nup(int number) /* I - Page number */
tx, ty; /* Translation values for subpage */
puts("gsave");
if (Flip || Orientation || NUp > 1)
puts("gsave");
if (Flip)
printf("%.0f 0 translate -1 1 scale\n", PageWidth);
-107
Ver Arquivo
@@ -1,107 +0,0 @@
# Microsoft Developer Studio Project File - Name="pstops" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=pstops - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "pstops.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "pstops.mak" CFG="pstops - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "pstops - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "pstops - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "pstops - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 ../cups/cups.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"pstops.exe"
!ELSEIF "$(CFG)" == "pstops - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "pstops___Win32_Debug"
# PROP BASE Intermediate_Dir "pstops___Win32_Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 ../cups/cups.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"pstopsd.exe" /pdbtype:sept
!ENDIF
# Begin Target
# Name "pstops - Win32 Release"
# Name "pstops - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\pstops.c
!IF "$(CFG)" == "pstops - Win32 Release"
!ELSEIF "$(CFG)" == "pstops - Win32 Debug"
# ADD CPP /Zi
!ENDIF
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# End Target
# End Project
+48 -10
Ver Arquivo
@@ -39,13 +39,14 @@
* Globals...
*/
int WrapLines = 0, /* Wrap text in lines */
int WrapLines = 1, /* Wrap text in lines */
SizeLines = 60, /* Number of lines on a page */
SizeColumns = 80, /* Number of columns on a line */
PageColumns = 1, /* Number of columns on a page */
ColumnGutter = 0, /* Number of characters between text columns */
ColumnWidth = 80, /* Width of each column */
PrettyPrint = 0; /* Do pretty code formatting */
PrettyPrint = 0, /* Do pretty code formatting */
Copies = 1; /* Number of copies */
lchar_t **Page = NULL; /* Page characters */
int NumPages = 0; /* Number of pages in document */
int CharsPerInch = 10; /* Number of character columns per inch */
@@ -53,28 +54,46 @@ int LinesPerInch = 6; /* Number of lines per inch */
int UTF8 = 0; /* Use UTF-8 encoding? */
char *Keywords[] = /* List of known keywords... */
{
"and",
"and_eq",
"asm",
"auto",
"bitand",
"bitor",
"bool",
"break",
"case",
"catch",
"char",
"class",
"compl",
"const",
"continue",
"default",
"delete",
"double",
"do",
"double",
"else",
"enum",
"explicit",
"extern",
"false",
"float",
"for",
"friend",
"goto",
"if",
"inline",
"int",
"long",
"mutable",
"namespace",
"new",
"not",
"not_eq",
"operator",
"or",
"or_eq",
"private",
"protected",
"public",
@@ -86,12 +105,21 @@ char *Keywords[] = /* List of known keywords... */
"static",
"struct",
"switch",
"template",
"this",
"throw",
"true",
"try",
"typedef",
"typename",
"union",
"unsigned",
"virtual",
"void",
"volatile",
"while"
"while",
"xor",
"xor_eq"
};
@@ -165,10 +193,21 @@ TextMain(char *name, /* I - Name of filter */
options = NULL;
num_options = cupsParseOptions(argv[5], 0, &options);
if ((val = cupsGetOption("prettyprint", num_options, options)) != NULL)
{
PrettyPrint = 1;
PageLeft = 72.0f;
PageRight = PageWidth - 36.0f;
PageBottom = PageBottom > 36.0f ? PageBottom : 36.0f;
PageTop = PageLength - 36.0f;
CharsPerInch = 12;
LinesPerInch = 8;
}
if ((ppd = SetCommonOptions(num_options, options, 1)) != NULL)
ppdClose(ppd);
WrapLines = cupsGetOption("wrap", num_options, options) != NULL;
WrapLines = cupsGetOption("nowrap", num_options, options) == NULL;
if ((val = cupsGetOption("columns", num_options, options)) != NULL)
PageColumns = atoi(val);
@@ -180,12 +219,11 @@ TextMain(char *name, /* I - Name of filter */
LinesPerInch = atoi(val);
if ((val = cupsGetOption("prettyprint", num_options, options)) != NULL)
{
PrettyPrint = 1;
PageTop -= 216.0f / LinesPerInch;
}
PageTop -= 216.0f / LinesPerInch;
WriteProlog(argv[3], argv[2]);
Copies = atoi(argv[4]);
WriteProlog(argv[3], argv[2], ppd);
/*
* Read text from the specified source and print it...
+3 -2
Ver Arquivo
@@ -64,7 +64,8 @@ extern int WrapLines, /* Wrap text in lines */
PageColumns, /* Number of columns on a page */
ColumnGutter, /* Number of characters between text columns */
ColumnWidth, /* Width of each column */
PrettyPrint; /* Do pretty code formatting */
PrettyPrint, /* Do pretty code formatting */
Copies; /* Number of copies to produce */
extern lchar_t **Page; /* Page characters */
extern int NumPages; /* Number of pages in document */
extern int CharsPerInch, /* Number of character columns per inch */
@@ -80,7 +81,7 @@ extern char *Keywords[]; /* List of known keywords... */
extern int TextMain(char *name, int argc, char *argv[]);
extern void WriteEpilogue(void);
extern void WritePage(void);
extern void WriteProlog(char *title, char *user);
extern void WriteProlog(char *title, char *user, ppd_file_t *ppd);
/*
+20 -21
Ver Arquivo
@@ -113,8 +113,9 @@ WritePage(void)
*/
void
WriteProlog(char *title, /* I - Title of job */
char *user) /* I - Username */
WriteProlog(char *title, /* I - Title of job */
char *user, /* I - Username */
ppd_file_t *ppd) /* I - PPD file info */
{
int line; /* Current output line */
char *charset; /* Character set string */
@@ -335,41 +336,43 @@ WriteProlog(char *title, /* I - Title of job */
printf("\t0 0 %.1f %.1f rectfill\n", PageRight - PageLeft,
144.0f / LinesPerInch);
puts("\tFN setfont");
puts("\tFB setfont");
puts("\t0 setgray");
if (Duplex)
{
puts("\tdup 2 mod 0 eq {");
printf("\t\tT stringwidth pop neg %.1f add %.1f } {\n",
PageRight - PageLeft - 36.0f / LinesPerInch, 54.0f / LinesPerInch);
PageRight - PageLeft - 36.0f / LinesPerInch,
(0.5f + 0.157f) * 72.0f / LinesPerInch);
printf("\t\t%.1f %.1f } ifelse\n", 36.0f / LinesPerInch,
54.0f / LinesPerInch);
(0.5f + 0.157f) * 72.0f / LinesPerInch);
}
else
printf("\t%.1f %.1f\n", 36.0f / LinesPerInch,
54.0f / LinesPerInch);
(0.5f + 0.157f) * 72.0f / LinesPerInch);
puts("\tmoveto T show");
printf("\t(%s)\n", curdate);
printf("\tdup stringwidth pop neg 2 div %.1f add %.1f\n",
(PageRight - PageLeft) * 0.5, 54.0f / LinesPerInch);
(PageRight - PageLeft) * 0.5,
(0.5f + 0.157f) * 72.0f / LinesPerInch);
puts("\tmoveto show");
if (Duplex)
{
puts("\tdup P cvs exch 2 mod 0 eq {");
printf("\t\t%.1f %.1f } {\n", 36.0f / LinesPerInch,
54.0f / LinesPerInch);
(0.5f + 0.157f) * 72.0f / LinesPerInch);
printf("\t\tdup stringwidth pop neg %.1f add %.1f } ifelse\n",
PageRight - PageLeft - 36.0f / LinesPerInch,
54.0f / LinesPerInch);
(0.5f + 0.157f) * 72.0f / LinesPerInch);
}
else
printf("\tP cvs dup stringwidth pop neg %.1f add %.1f\n",
PageRight - PageLeft - 36.0f / LinesPerInch,
54.0f / LinesPerInch);
(0.5f + 0.157f) * 72.0f / LinesPerInch);
puts("\tmoveto show");
puts("\tgrestore");
@@ -452,8 +455,8 @@ write_string(int col, /* I - Start column */
y = PageTop;
}
x += (float)col * 72.0 / (float)CharsPerInch;
y -= (float)(row + 1) * 72.0 / (float)LinesPerInch;
x += (float)col * 72.0f / (float)CharsPerInch;
y -= (float)(row + 0.843) * 72.0f / (float)LinesPerInch;
attr = s->attr;
@@ -506,15 +509,6 @@ write_string(int col, /* I - Start column */
}
putchar('>');
if (attr & ATTR_RED)
puts("r");
else if (attr & ATTR_GREEN)
puts("g");
else if (attr & ATTR_BLUE)
puts("b");
else
puts("S");
}
else
{
@@ -551,7 +545,10 @@ write_string(int col, /* I - Start column */
}
putchar(')');
}
if (PrettyPrint)
{
if (attr & ATTR_RED)
puts("r");
else if (attr & ATTR_GREEN)
@@ -561,6 +558,8 @@ write_string(int col, /* I - Start column */
else
puts("S");
}
else
puts("S");
}
-98
Ver Arquivo
@@ -1,98 +0,0 @@
# Microsoft Developer Studio Project File - Name="texttops" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=texttops - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "texttops.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "texttops.mak" CFG="texttops - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "texttops - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "texttops - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "texttops - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W1 /GX /O2 /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 ../cups/cups.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"texttops.exe"
!ELSEIF "$(CFG)" == "texttops - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W1 /Gm /GX /Zi /Od /I ".." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 ../cups/cupsd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"texttopsd.exe" /pdbtype:sept
!ENDIF
# Begin Target
# Name "texttops - Win32 Release"
# Name "texttops - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\texttops.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# End Target
# End Project
BIN
Ver Arquivo
Arquivo binário não exibido.
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)
echo Linking $@...
$(CC) $(LDFLAGS) -o pstoraster $(OBJS) $(LIBJPEG) $(LIBZ) $(LIBS) -lm
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$".
+27 -6
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);
@@ -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.
+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);
+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...
*/
+11 -12
Ver Arquivo
@@ -433,11 +433,9 @@ ReadClient(client_t *con) /* I - Client to read from */
}
else if ((status = IsAuthorized(con)) != HTTP_OK)
{
if (!SendError(con, status))
{
CloseClient(con);
return (0);
}
SendError(con, status);
CloseClient(con);
return (0);
}
else switch (con->http.state)
{
@@ -723,7 +721,7 @@ ReadClient(client_t *con) /* I - Client to read from */
LogRequest(con, HTTP_OK);
}
if (send(con->http.fd, "\r\n", 2, 0) < 0)
if (httpPrintf(HTTP(con), "\r\n") < 0)
{
CloseClient(con);
return (0);
@@ -924,7 +922,7 @@ int /* O - 1 if successful, 0 otherwise */
SendError(client_t *con, /* I - Connection */
http_status_t code) /* I - Error code */
{
char message[1024]; /* Text version of error code */
char message[1024]; /* Message for user */
/*
@@ -971,7 +969,8 @@ SendError(client_t *con, /* I - Connection */
sprintf(message, "<HTML><HEAD><TITLE>%d %s</TITLE></HEAD>"
"<BODY><H1>%s</H1>%s</BODY></HTML>\n",
code, httpStatus(code), httpStatus(code),
con->language ? con->language->messages[code] : httpStatus(code));
con->language ? con->language->messages[code] :
httpStatus(code));
if (httpPrintf(HTTP(con), "Content-Type: text/html\r\n") < 0)
return (0);
@@ -979,7 +978,7 @@ SendError(client_t *con, /* I - Connection */
return (0);
if (httpPrintf(HTTP(con), "\r\n") < 0)
return (0);
if (send(con->http.fd, message, strlen(message), 0) < 0)
if (httpPrintf(HTTP(con), "%s", message) < 0)
return (0);
}
else if (httpPrintf(HTTP(con), "\r\n") < 0)
@@ -1239,10 +1238,10 @@ decode_basic_auth(client_t *con) /* I - Client to decode to */
httpDecode64(value, s);
LogMessage(LOG_DEBUG, "decode_basic_auth() %d Authorization=\"%s\"",
con->http.fd, value);
sscanf(value, "%[^:]:%[^\n]", con->username, con->password);
LogMessage(LOG_DEBUG, "decode_basic_auth() %d username=\"%s\"",
con->http.fd, con->username);
}
+26 -2
Ver Arquivo
@@ -138,6 +138,7 @@ ReadConfiguration(void)
int status; /* Return status */
char directory[1024];/* Configuration directory */
struct rlimit limit; /* Runtime limit */
char *language; /* Language string */
/*
@@ -187,10 +188,16 @@ ReadConfiguration(void)
sprintf(ServerAdmin, "root@%s", ServerName);
strcpy(ServerRoot, CUPS_SERVERROOT);
strcpy(DocumentRoot, CUPS_DATADIR "/doc");
strcpy(SystemGroup, DEFAULT_GROUP);
strcpy(AccessLog, "logs/access_log");
strcpy(ErrorLog, "logs/error_log");
strcpy(DefaultLanguage, DEFAULT_LANGUAGE);
if ((language = DEFAULT_LANGUAGE) == NULL)
language = "en";
else if (strcmp(language, "C") == 0 || strcmp(language, "POSIX") == 0)
language = "en";
strcpy(DefaultLanguage, language);
strcpy(DefaultCharset, DEFAULT_CHARSET);
strcpy(RIPCache, "8m");
if (getenv("TMPDIR") == NULL)
@@ -198,6 +205,23 @@ ReadConfiguration(void)
else
strcpy(TempDir, getenv("TMPDIR"));
/*
* Find the default system group: "sys", "system", or "root"...
*/
if (getgrnam("sys") != NULL)
strcpy(SystemGroup, "sys");
else
{
endgrent();
if (getgrnam("system") != NULL)
strcpy(SystemGroup, "system");
else
strcpy(SystemGroup, "root");
}
endgrent();
User = DEFAULT_UID;
Group = DEFAULT_GID;
LogLevel = LOG_ERROR;
+1 -1
Ver Arquivo
@@ -49,7 +49,7 @@ VAR char ConfigurationFile[256] VALUE(CUPS_SERVERROOT "/conf/cupsd.conf"),
/* Root directory for scheduler */
DocumentRoot[1024] VALUE(CUPS_DATADIR "/doc"),
/* Root directory for documents */
SystemGroup[32] VALUE(DEFAULT_GROUP),
SystemGroup[32],
/* System group name */
AccessLog[1024] VALUE("logs/access_log"),
/* Access log filename */
+26 -4
Ver Arquivo
@@ -81,13 +81,35 @@
#define DEFAULT_TIMEOUT 300 /* Timeout during requests/updates */
#define DEFAULT_KEEPALIVE 60 /* Timeout between requests */
#define DEFAULT_INTERVAL 30 /* Interval between browse updates */
#define DEFAULT_LANGUAGE setlocale(LC_ALL,NULL)
#ifdef WIN32 /* Fix for broken Linux setlocale() */
# define DEFAULT_LANGUAGE setlocale(LC_ALL,"")
/* Default language encoding */
#else
# define DEFAULT_LANGUAGE getenv("LANG")
/* Default language encoding */
#endif /* !WIN32 */
#define DEFAULT_CHARSET "iso-8859-1"
/* Default charset */
#define DEFAULT_GROUP "sys" /* Default system group */
#define DEFAULT_UID 9 /* Default user ID */
#define DEFAULT_GID 0 /* Default group ID */
#ifdef __sgi
# define DEFAULT_UID 9 /* Default user ID */
# define DEFAULT_GID 0 /* Default group ID */
#elif defined(__hpux)
# define DEFAULT_UID 9 /* Default user ID */
# define DEFAULT_GID 0 /* Default group ID */
#elif defined(__sun)
# define DEFAULT_UID 71 /* Default user ID */
# define DEFAULT_GID 0 /* Default group ID */
#elif defined(__linux)
# define DEFAULT_UID 4 /* Default user ID */
# define DEFAULT_GID 0 /* Default group ID */
#elif defined(__osf__)
# define DEFAULT_UID 8 /* Default user ID */
# define DEFAULT_GID 0 /* Default group ID */
#else
# define DEFAULT_UID 9 /* Default user ID */
# define DEFAULT_GID 0 /* Default group ID */
#endif /* __sgi */
/*
+7 -5
Ver Arquivo
@@ -90,7 +90,7 @@ StartBrowsing(void)
addr.sin_family = AF_INET;
addr.sin_port = htons(BrowsePort);
if (bind(BrowseSocket, &addr, sizeof(addr)))
if (bind(BrowseSocket, (struct sockaddr *)&addr, sizeof(addr)))
{
LogMessage(LOG_ERROR, "StartBrowsing: Unable to bind broadcast socket - %s.",
strerror(errno));
@@ -177,7 +177,8 @@ UpdateBrowseList(void)
len = sizeof(addr);
if ((bytes = recvfrom(BrowseSocket, packet, sizeof(packet), 0, &addr, &len)) <= 0)
if ((bytes = recvfrom(BrowseSocket, packet, sizeof(packet), 0,
(struct sockaddr *)&addr, &len)) <= 0)
{
LogMessage(LOG_ERROR, "UpdateBrowseList: recv failed - %s.",
strerror(errno));
@@ -351,7 +352,8 @@ UpdateBrowseList(void)
p->browse_time = time(NULL);
/*
* See if we have a default printer...
* See if we have a default printer... If not, make the first printer the
* default.
*/
if (DefaultPrinter == NULL && Printers != NULL)
@@ -528,8 +530,8 @@ SendBrowseList(void)
*/
for (i = 0; i < NumBrowsers; i ++)
if (sendto(BrowseSocket, packet, bytes, 0, Browsers + i,
sizeof(Browsers[0])) <= 0)
if (sendto(BrowseSocket, packet, bytes, 0,
(struct sockaddr *)Browsers + i, sizeof(Browsers[0])) <= 0)
LogMessage(LOG_ERROR, "SendBrowseList: sendto failed for browser %d - %s.",
i + 1, strerror(errno));
}
+118 -20
Ver Arquivo
@@ -422,7 +422,42 @@ add_class(client_t *con, /* I - Client connection */
*/
if ((pclass = FindClass(resource + 9)) == NULL)
{
/*
* Class doesn't exist; see if we have a printer of the same name...
*/
if (FindPrinter(resource + 9) != NULL)
{
/*
* Yes, return an error...
*/
send_ipp_error(con, IPP_NOT_POSSIBLE);
return;
}
else
{
/*
* No, add the pclass...
*/
pclass = AddClass(resource + 9);
}
}
else if (pclass->type & CUPS_PRINTER_REMOTE)
{
/*
* We found a remote class; rename it and then add the pclass.
*/
strcat(pclass->name, "@");
strcat(pclass->name, pclass->hostname);
SetPrinterAttrs(pclass);
SortPrinters();
pclass = AddClass(resource + 9);
}
/*
* Look for attributes and copy them over as needed...
@@ -434,6 +469,38 @@ add_class(client_t *con, /* I - Client connection */
strcpy(pclass->info, attr->values[0].string.text);
if ((attr = ippFindAttribute(con->request, "printer-more-info", IPP_TAG_URI)) != NULL)
strcpy(pclass->more_info, attr->values[0].string.text);
if ((attr = ippFindAttribute(con->request, "printer-is-accepting-jobs", IPP_TAG_BOOLEAN)) != NULL)
{
LogMessage(LOG_INFO, "Setting %s printer-is-accepting-jobs to %d (was %d.)",
pclass->name, attr->values[0].boolean, pclass->accepting);
pclass->accepting = attr->values[0].boolean;
}
if ((attr = ippFindAttribute(con->request, "printer-state", IPP_TAG_ENUM)) != NULL)
{
LogMessage(LOG_INFO, "Setting %s printer-state to %d (was %d.)", pclass->name,
attr->values[0].integer, pclass->state);
if (pclass->state == IPP_PRINTER_STOPPED &&
attr->values[0].integer != IPP_PRINTER_STOPPED)
pclass->state = IPP_PRINTER_IDLE;
else if (pclass->state != IPP_PRINTER_STOPPED &&
attr->values[0].integer == IPP_PRINTER_STOPPED)
{
if (pclass->state == IPP_PRINTER_PROCESSING)
StopJob(((job_t *)pclass->job)->id);
pclass->state = IPP_PRINTER_STOPPED;
}
pclass->browse_time = 0;
}
if ((attr = ippFindAttribute(con->request, "printer-state-message", IPP_TAG_TEXT)) != NULL)
{
strncpy(pclass->state_message, attr->values[0].string.text,
sizeof(pclass->state_message) - 1);
pclass->state_message[sizeof(pclass->state_message) - 1] = '\0';
}
if ((attr = ippFindAttribute(con->request, "member-uris", IPP_TAG_URI)) != NULL)
{
@@ -483,20 +550,6 @@ add_class(client_t *con, /* I - Client connection */
}
}
/*
* See if we have all required attributes...
*/
if (pclass->num_printers == 0)
{
/*
* Nope, return an error...
*/
send_ipp_error(con, IPP_ATTRIBUTES);
return;
}
/*
* Update the printer class attributes and return...
*/
@@ -568,7 +621,42 @@ add_printer(client_t *con, /* I - Client connection */
*/
if ((printer = FindPrinter(resource + 10)) == NULL)
{
/*
* Printer doesn't exist; see if we have a class of the same name...
*/
if (FindClass(resource + 10) != NULL)
{
/*
* Yes, return an error...
*/
send_ipp_error(con, IPP_NOT_POSSIBLE);
return;
}
else
{
/*
* No, add the printer...
*/
printer = AddPrinter(resource + 10);
}
}
else if (printer->type & CUPS_PRINTER_REMOTE)
{
/*
* We found a remote printer; rename it and then add the printer.
*/
strcat(printer->name, "@");
strcat(printer->name, printer->hostname);
SetPrinterAttrs(printer);
SortPrinters();
printer = AddPrinter(resource + 10);
}
/*
* Look for attributes and copy them over as needed...
@@ -691,6 +779,13 @@ add_printer(client_t *con, /* I - Client connection */
}
}
/*
* Make this printer the default if there is none...
*/
if (DefaultPrinter == NULL)
DefaultPrinter = printer;
/*
* Update the printer attributes and return...
*/
@@ -1687,13 +1782,16 @@ print_job(client_t *con, /* I - Client connection */
DEBUG_puts("print_job: auto-typing request using magic rules.");
filetype = mimeFileType(MimeDatabase, con->filename);
/*
* Replace the document-format attribute value with the auto-typed one.
*/
if (filetype != NULL)
{
/*
* Replace the document-format attribute value with the auto-typed one.
*/
free(format->values[0].string.text);
sprintf(mimetype, "%s/%s", filetype->super, filetype->type);
format->values[0].string.text = strdup(mimetype);
free(format->values[0].string.text);
sprintf(mimetype, "%s/%s", filetype->super, filetype->type);
format->values[0].string.text = strdup(mimetype);
}
}
else
filetype = mimeType(MimeDatabase, super, type);
+21 -4
Ver Arquivo
@@ -301,9 +301,10 @@ StartJob(int id, /* I - Job ID */
/* Job title string */
copies[255], /* # copies string */
options[16384], /* Full list of options */
*envp[12], /* Environment variables */
*envp[13], /* Environment variables */
language[255], /* LANG environment variable */
charset[255], /* CHARSET environment variable */
content_type[255],/* CONTENT_TYPE environment variable */
ppd[1024], /* PPD environment variable */
root[1024], /* SERVER_ROOT environment variable */
cache[255], /* RIP_MAX_CACHE environment variable */
@@ -532,6 +533,8 @@ StartJob(int id, /* I - Job ID */
sprintf(root, "SERVER_ROOT=%s", ServerRoot);
sprintf(cache, "RIP_MAX_CACHE=%s", RIPCache);
sprintf(tmpdir, "TMPDIR=%s", TempDir);
sprintf(content_type, "CONTENT_TYPE=%s/%s", current->filetype->super,
current->filetype->type);
envp[0] = "PATH=/bin:/usr/bin";
envp[1] = "SOFTWARE=CUPS/1.0";
@@ -544,7 +547,8 @@ StartJob(int id, /* I - Job ID */
envp[8] = root;
envp[9] = cache;
envp[10] = tmpdir;
envp[11] = NULL;
envp[11] = content_type;
envp[12] = NULL;
DEBUG_puts(envp[0]);
DEBUG_puts(envp[1]);
@@ -557,6 +561,7 @@ StartJob(int id, /* I - Job ID */
DEBUG_puts(envp[8]);
DEBUG_puts(envp[9]);
DEBUG_puts(envp[10]);
DEBUG_puts(envp[11]);
/*
* Now create processes for all of the filters...
@@ -566,12 +571,16 @@ StartJob(int id, /* I - Job ID */
{
LogMessage(LOG_ERROR, "StartJob: unable to create status pipes - %s.",
strerror(errno));
StopPrinter(printer);
sprintf(printer->state_message, "Unable to create status pipes - %s.",
strerror(errno));
return;
}
DEBUG_printf(("statusfds = %d, %d\n", statusfds[0], statusfds[1]));
current->pipe = statusfds[0];
current->pipe = statusfds[0];
current->status = 0;
memset(current->procs, 0, sizeof(current->procs));
if (num_filters > 0 && strcmp(filters[num_filters - 1].filter, "-") == 0)
@@ -620,7 +629,11 @@ StartJob(int id, /* I - Job ID */
if (pid == 0)
{
LogMessage(LOG_ERROR, "Unable to start filter \"%s\" - %s.",
filters[i].filter, strerror(errno));
StopPrinter(current->printer);
sprintf(printer->state_message, "Unable to start filter \"%s\" - %s.",
filters[i].filter, strerror(errno));
return;
}
else
@@ -664,7 +677,11 @@ StartJob(int id, /* I - Job ID */
if (pid == 0)
{
LogMessage(LOG_ERROR, "Unable to start backend \"%s\" - %s.",
method, strerror(errno));
StopPrinter(current->printer);
sprintf(printer->state_message, "Unable to start backend \"%s\" - %s.",
method, strerror(errno));
return;
}
else
@@ -831,7 +848,7 @@ UpdateJob(job_t *job) /* I - Job to check */
if (loglevel != LOG_INFO)
LogMessage(loglevel, "%s", message);
if ((loglevel <= LOG_INFO && !job->state) ||
if ((loglevel >= LOG_INFO && !job->state) ||
loglevel == LOG_ERROR)
strncpy(job->printer->state_message, message,
sizeof(job->printer->state_message) - 1);
+7 -4
Ver Arquivo
@@ -47,10 +47,13 @@ clean:
install:
-$(MKDIR) $(BINDIR)
-$(MKDIR) $(LIBDIR)
$(CP) accept lpadmin $(LIBDIR)
-$(LN) accept $(LIBDIR)/reject
-$(LN) $(LIBDIR)/accept $(BINDIR)/disable
-$(LN) $(LIBDIR)/accept $(BINDIR)/enable
$(CP) accept lpadmin $(SBINDIR)
-$(LN) accept $(SBINDIR)/reject
-$(LN) $(SBINDIR)/lpadmin $(LIBDIR)
-$(LN) $(SBINDIR)/accept $(LIBDIR)
-$(LN) $(SBINDIR)/accept $(LIBDIR)/reject
-$(LN) $(SBINDIR)/accept $(BINDIR)/disable
-$(LN) $(SBINDIR)/accept $(BINDIR)/enable
$(CP) cancel lp lpstat $(BINDIR)
#
+7
Ver Arquivo
@@ -196,7 +196,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("cancel: Job or printer not found!\n", stderr);
else if (response->request.status.status_code > IPP_OK_CONFLICT)
fputs("cancel: Unable to cancel job(s)!\n", stderr);
ippDelete(response);
}
else
{
fputs("cancel: Unable to cancel job(s)!\n", stderr);
+3 -1
Ver Arquivo
@@ -201,7 +201,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)
{
@@ -226,6 +226,8 @@ main(int argc, /* I - Number of command-line arguments */
else
job_id = cupsPrintFile(dest, tempfile, "(stdin)", num_options, options);
unlink(tempfile);
if (job_id < 1)
{
fputs("lp: unable to print stdin.\n", stderr);
+1 -1
Ver Arquivo
@@ -945,7 +945,7 @@ set_printer_file(http_t *http, /* I - Server connection */
* Yes, the file is compressed; uncompress to a temp file...
*/
if ((fp = fopen(tmpnam(tempfile), "wb")) == NULL)
if ((fp = fopen(cupsTempFile(tempfile, sizeof(tempfile)), "wb")) == NULL)
{
perror("lpadmin: Unable to create temporary file");
return;
+29 -29
Ver Arquivo
@@ -49,12 +49,12 @@
* Local functions...
*/
static void show_accepting(http_t *, char *);
static void show_classes(http_t *, char *);
static void show_accepting(http_t *, const char *);
static void show_classes(http_t *, const char *);
static void show_default(http_t *);
static void show_devices(http_t *, char *);
static void show_jobs(http_t *, char *, char *);
static void show_printers(http_t *, char *);
static void show_devices(http_t *, const char *);
static void show_jobs(http_t *, const char *, const char *);
static void show_printers(http_t *, const char *);
static void show_scheduler(http_t *);
@@ -202,7 +202,7 @@ main(int argc, /* I - Number of command-line arguments */
}
if (argc == 1)
show_jobs(http, NULL, cuserid(NULL));
show_jobs(http, NULL, cupsUser());
return (0);
}
@@ -213,17 +213,17 @@ main(int argc, /* I - Number of command-line arguments */
*/
static void
show_accepting(http_t *http, /* I - HTTP connection to server */
char *dests) /* I - Destinations */
show_accepting(http_t *http, /* I - HTTP connection to server */
const char *dests) /* I - Destinations */
{
ipp_t *request, /* IPP Request */
*response; /* IPP Response */
ipp_attribute_t *attr; /* Current attribute */
cups_lang_t *language; /* Default language */
char *printer, /* Printer name */
const char *printer, /* Printer name */
*message; /* Printer device URI */
int accepting; /* Accepting requests? */
char *dptr, /* Pointer into destination list */
const char *dptr, /* Pointer into destination list */
*ptr; /* Pointer into printer name */
int match; /* Non-zero if this job matches */
@@ -391,17 +391,17 @@ show_accepting(http_t *http, /* I - HTTP connection to server */
*/
static void
show_classes(http_t *http, /* I - HTTP connection to server */
char *dests) /* I - Destinations */
show_classes(http_t *http, /* I - HTTP connection to server */
const char *dests) /* I - Destinations */
{
int i; /* Looping var */
ipp_t *request, /* IPP Request */
*response; /* IPP Response */
ipp_attribute_t *attr; /* Current attribute */
cups_lang_t *language; /* Default language */
char *printer; /* Printer class name */
const char *printer; /* Printer class name */
ipp_attribute_t *members; /* Printer members */
char *dptr, /* Pointer into destination list */
const char *dptr, /* Pointer into destination list */
*ptr; /* Pointer into printer name */
int match; /* Non-zero if this job matches */
@@ -619,16 +619,16 @@ show_default(http_t *http) /* I - HTTP connection to server */
*/
static void
show_devices(http_t *http, /* I - HTTP connection to server */
char *dests) /* I - Destinations */
show_devices(http_t *http, /* I - HTTP connection to server */
const char *dests) /* I - Destinations */
{
ipp_t *request, /* IPP Request */
*response; /* IPP Response */
ipp_attribute_t *attr; /* Current attribute */
cups_lang_t *language; /* Default language */
char *printer, /* Printer name */
*device; /* Printer device URI */
char *dptr, /* Pointer into destination list */
const char *printer, /* Printer name */
*device, /* Printer device URI */
*dptr, /* Pointer into destination list */
*ptr; /* Pointer into printer name */
int match; /* Non-zero if this job matches */
@@ -790,19 +790,19 @@ show_devices(http_t *http, /* I - HTTP connection to server */
*/
static void
show_jobs(http_t *http, /* I - HTTP connection to server */
char *dests, /* I - Destinations */
char *users) /* I - Users */
show_jobs(http_t *http, /* I - HTTP connection to server */
const char *dests, /* I - Destinations */
const char *users) /* I - Users */
{
ipp_t *request, /* IPP Request */
*response; /* IPP Response */
ipp_attribute_t *attr; /* Current attribute */
cups_lang_t *language; /* Default language */
char *dest, /* Pointer into job-printer-uri */
const char *dest, /* Pointer into job-printer-uri */
*username; /* Pointer to job-originating-user-name */
int jobid, /* job-id */
size; /* job-k-octets */
char *dptr, /* Pointer into destination list */
const char *dptr, /* Pointer into destination list */
*ptr; /* Pointer into printer name */
int match; /* Non-zero if this job matches */
@@ -1014,19 +1014,19 @@ show_jobs(http_t *http, /* I - HTTP connection to server */
*/
static void
show_printers(http_t *http, /* I - HTTP connection to server */
char *dests) /* I - Destinations */
show_printers(http_t *http, /* I - HTTP connection to server */
const char *dests)/* I - Destinations */
{
ipp_t *request, /* IPP Request */
*response, /* IPP Response */
*jobs; /* IPP Get Jobs response */
ipp_attribute_t *attr; /* Current attribute */
cups_lang_t *language; /* Default language */
char *printer, /* Printer name */
const char *printer, /* Printer name */
*message; /* Printer state message */
ipp_pstate_t pstate; /* Printer state */
int jobid; /* Job ID of current job */
char *dptr, /* Pointer into destination list */
const char *dptr, /* Pointer into destination list */
*ptr; /* Pointer into printer name */
int match; /* Non-zero if this job matches */
char printer_uri[HTTP_MAX_URI];
@@ -1208,7 +1208,7 @@ show_printers(http_t *http, /* I - HTTP connection to server */
"attributes-natural-language", NULL,
language->language);
sprintf(printer_uri, "ipp://localhost/printers/%s", printer);
sprintf(printer_uri, "ipp://%s/printers/%s", http->hostname, printer);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, printer_uri);