Comparar commits

..

1 Commits

Autor SHA1 Mensagem Data
msweet c20b887ba5 Import cups.org releases
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/tags/release-1.0b4@4306 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-10 18:56:23 +00:00
144 arquivos alterados com 9149 adições e 4172 exclusões
+337 -220
Ver Arquivo
@@ -5,265 +5,382 @@
<BODY BGCOLOR=#ffffff>
<H1 ALIGN=CENTER><FONT FACE="Arial,HELVETICA">Aladdin Free Public License</FONT></H1>
<H2 ALIGN="CENTER">Common UNIX Printing System License Agreement</H2>
<P ALIGN=CENTER>(Version 6, June 17, 1997)</P>
<P ALIGN="CENTER">Copyright 1997-1999 by Easy Software Products<BR>
44141 AIRPORT VIEW DR STE 204<BR>
HOLLYWOOD, MARYLAND 20636-3111 USA<BR>
<BR>
Voice: +1.301.373.9603<BR>
Email: cups-info@cups.org<BR>
WWW: http://www.cups.org
<P ALIGN=CENTER>Copyright &copy; 1994, 1995, 1997 Aladdin Enterprises,<BR><BR>
Menlo Park, California, U.S.A. All rights reserved.</P>
<H3>Introduction</H3>
<BLOCKQUOTE>
NOTE: This License is not the same as any of the GNU Licenses published
by the Free Software Foundation. Its terms are substantially different
from those of the GNU Licenses. If you are familiar with the GNU
Licenses, please read this license with extra care.
<P>The Common UNIX Printing System<SUP>TM</SUP>, or CUPS<SUP>TM</SUP>,
is provided under the GNU General Public License, Version 2. A copy of
this license follows this introduction.
<P>For those not familiar with the GNU General Public License, the license
basically allows you to:
<UL>
<LI>Use the CUPS software at no charge.
<LI>Distribute verbatim copies of the software in source or
binary form.
<LI>Sell verbatim copies of the software for a media fee, or
sell support for the software.
<LI>Distribute or sell printer drivers and filters that use the
CUPS API so long as source code is made available under the GPL.
</UL>
<P>What this license <B>does not</B> allow you to do is make changes or
add features to CUPS and then sell a binary distribution without source
code. You have to provide source for any new drivers, changes, or
additions to the software, and all code must be provided under the GPL.
<P>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.
<H3>Binary Distribution Rights</H3>
<P>Easy Software Products also sells rights to the CUPS source code
under a binary distribution license for vendors that are unable to
release source code for their drivers or additions and modifications to
CUPS under the GPL. For pricing information please contact us at the
address shown above.
<P>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:
<BLOCKQUOTE>Miles Jones<BR>
Director of Marketing<BR>
Artifex Software Inc.<BR>
454 Las Gallinas Ave., Suite 108<BR>
San Rafael, CA 94903 USA<BR>
Voice: +1.415.492.9861<BR>
Fax: +1.415.492.9862<BR>
EMail: info@arsoft.com
</BLOCKQUOTE>
<P>Aladdin Enterprises hereby grants to anyone the permission to apply
this License to their own work, as long as the entire License
(including the above notices and this paragraph) is copied with no
changes, additions, or deletions except for changing the first
paragraph of Section 0 to include a suitable description of the work to
which the license is being applied and of the person or entity that
holds the copyright in the work, and, if the License is being applied
to a work created in a country other than the United States, replacing
the first paragraph of Section 6 with an appropriate reference to the
laws of the appropriate country.</P>
<H3>Support</H3>
<H2><FONT FACE="Arial,HELVETICA">0. Subject Matter</FONT></H2>
<P>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.
This License applies to the Common UNIX Printing System ("PROGRAM").
The Common UNIX Printing System is a copyrighted work whose copyright
is held by Easy Software Products (the "LICENSOR"). The Common UNIX
Printing System, CUPS, and the CUPS logo are the trademark property of
Easy Software Products.
<H3>Trademarks</H3>
<P>A "work based on the PROGRAM" means either the PROGRAM or any
derivative work of the PROGRAM, as defined in the United States
Copyright Act of 1976, such as a translation or a modification.
<P>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.
<P>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. NOTHING OTHER THAN THIS LICENSE GRANTS
YOU PERMISSION TO MODIFY OR DISTRIBUTE THE PROGRAM OR ITS DERIVATIVE
WORKS. THESE ACTIONS ARE PROHIBITED BY LAW. IF YOU DO NOT ACCEPT THESE
TERMS AND CONDITIONS, DO NOT MODIFY OR DISTRIBUTE THE PROGRAM.
<H2 ALIGN="CENTER">GNU General Public License</H2>
<H2><FONT FACE="Arial,HELVETICA">1. Licenses</FONT></H2>
<P ALIGN="CENTER">Version 2, June 1991<BR>
<BR>
Copyright 1989, 1991 Free Software Foundation, Inc.<BR>
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
LICENSOR hereby grants you the following rights, provided that you comply
with all of the restrictions set forth in this License and provided,
further, that you distribute an unmodified copy of this License with the
PROGRAM:
<P ALIGN="CENTER">Everyone is permitted to copy and distribute verbatim
copies of this license document, but changing it is not allowed.
<OL TYPE=a>
<H3>Preamble</H3>
<LI>You may copy and distribute literal (i.e., verbatim) copies
of the PROGRAM's source code as you receive it throughout the
world, in any medium.<BR><BR>
<P>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.
<LI>You may modify the PROGRAM, create works based on the
PROGRAM and distribute copies of such throughout the world, in
any medium.<BR><BR>
<P>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.
<P>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.
<P>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.
<P>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.
<P>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.
<P>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.
<P>The precise terms and conditions for copying, distribution and
modification follow.
<H3>GNU GENERAL PUBLIC LICENSE<BR>
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</H3>
<OL START="0">
<LI>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".
<P>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.
<LI>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.
<P>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.
<LI>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:
<OL TYPE="a">
<LI>You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
<LI>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.
<LI>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.)
</OL>
<H2><FONT FACE="Arial,HELVETICA">2. Restrictions</FONT></H2>
<P>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.
This license is subject to the following restrictions:
<P>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.
<OL TYPE=a>
<P>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.
<LI>Distribution of the PROGRAM or any work based on the
PROGRAM by a commercial organization to any third party is
prohibited if any payment is made in connection with such
distribution, whether directly (as in payment for a copy of the
PROGRAM) or indirectly (as in payment for some service related
to the PROGRAM, or payment for some product or service that
includes a copy of the PROGRAM "without charge"; these are only
examples, and not an exhaustive enumeration of prohibited
activities). The following methods of distribution involving
payment shall not in and of themselves be a violation of this
restriction:<BR><BR>
<LI>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:
<OL TYPE=i>
<OL TYPE="a">
<LI>Posting the PROGRAM on a public access information
storage and retrieval service for which a fee is
received for retrieving information (such as an on-line
service), provided that the fee is not
content-dependent (i.e., the fee would be the same for
retrieving the same volume of information consisting of
random data) and that access to the service and to the
PROGRAM is available independent of any other product
or service. An example of a service that does not fall
under this section is an on-line service that is
operated by a company and that is only available to
customers of that company. (This is not an exhaustive
enumeration.)<BR><BR>
<LI>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,
<LI>Distributing the PROGRAM on removable
computer-readable media, provided that the files
containing the PROGRAM are reproduced entirely and
verbatim on such media, that all information on such
media be redistributable for non-commercial purposes
without charge, and that such media are distributed by
themselves (except for accompanying documentation)
independent of any other product or service. Examples
of such media include CD-ROM, magnetic tape, and
optical storage media. (This is not intended to be an
exhaustive list.) An example of a distribution that
does not fall under this section is a CD-ROM included
in a book or magazine. (This is not an exhaustive
enumeration.)<BR><BR>
<LI>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,
</OL>
<LI>Activities other than copying, distribution and
modification of the PROGRAM are not subject to this License and
they are outside its scope. Functional use (running) of the
PROGRAM is not restricted, and any output produced through the
use of the PROGRAM is subject to this license only if its
contents constitute a work based on the PROGRAM (independent of
having been made by running the PROGRAM).<BR><BR>
<LI>You must meet all of the following conditions with respect to any work
that you distribute or publish that in whole or in part contains or is
derived from the PROGRAM or any part thereof ("the Work"):<BR><BR>
<OL TYPE=i>
<LI>If you have modified the PROGRAM, you must cause
the Work to carry prominent notices stating that you
have modified the PROGRAM's files and the date of any
change;<BR><BR>
<LI>You must cause the Work to be licensed as a whole
and at no charge to all third parties under the terms
of this License;<BR><BR>
<LI>If the Work normally reads commands interactively
when run, you must cause it, at each time the Work
commences operation, 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). Such notice must also
state that users may redistribute the Work only under
the conditions of this License and tell the user how to
view the copy of this License included with the Work.
(Exceptions: if the PROGRAM is interactive but normally
prints or displays such an announcement only at the
request of a user, such as in an "About box", the Work
is required to print or display the notice only under
the same circumstances; if the PROGRAM itself is
interactive but does not normally print such an
announcement, the Work is not required to print an
announcement.);<BR><BR>
<LI>You must accompany the Work with the complete
corresponding machine-readable source code, delivered
on a medium customarily used for software interchange.
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 code. If you distribute with the Work any
component 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, you must also distribute
the source code of that component if you have it and
are allowed to do so;<BR><BR>
<LI>If you distribute any written or printed material
at all with the Work, such material must include either
a written copy of this License, or a prominent written
indication that the Work is covered by this License and
written instructions for printing and/or displaying the
copy of the License on the distribution medium;<BR><BR>
<LI>You may not impose any further restrictions on the
recipient's exercise of the rights granted herein.<BR><BR>
</OL>
<LI>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.)
</OL>
If distribution of executable or object code is made by offering the
equivalent ability to copy from a designated place, then offering
equivalent ability 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 code along with the object code.
<P>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.
<H2><FONT FACE="Arial,HELVETICA">3. Reservation of Rights</FONT></H2>
<P>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.
No rights are granted to the PROGRAM except as expressly set forth
herein. 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.
<LI>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.
<H2><FONT FACE="Arial,HELVETICA">4. Other Restrictions</FONT></H2>
<LI>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.
If the distribution and/or use of the PROGRAM is restricted in certain
countries for any reason, LICENSOR 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.
<LI>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.
<H2><FONT FACE="Arial,HELVETICA">5. Limitations</FONT></H2>
<LI>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.
THE PROGRAM IS PROVIDED TO YOU "AS IS", WITHOUT WARRANTY. THERE IS NO
WARRANTY FOR THE PROGRAM, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
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.
<P>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.
<P>IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL LICENSOR, 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.
<P>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.
<H2><FONT FACE="Arial,HELVETICA">6. General</FONT></H2>
<P>This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
This License is governed by the laws of the State of Maryland, U.S.A.,
excluding choice of law rules.
<LI>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.
<P>If any part of this License is found to be in conflict with the law,
that part shall be interpreted in its broadest meaning consistent with
the law, and no other parts of the License shall be affected.
<LI>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.
<P>For United States Government users, the PROGRAM is provided with
RESTRICTED RIGHTS. If you are a unit or agency of the United States
Government or are acquiring the Software for any such unit or agency,
the following apply:
<P>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.
<BLOCKQUOTE>
If the unit or agency is the Department of Defense ("DOD"), the
Software and its documentation are classified as "commercial computer
software" and "commercial computer software documentation" respectively
and, pursuant to DFAR Section 227.7202, the Government is acquiring the
Software and its documentation in accordance with the terms of this
License. If the unit or agency is other than DOD, the Software and its
documentation are classified as "commercial computer software" and
"commercial computer software documentation" respectively and, pursuant
to FAR Section 12.212, the Government is acquiring the Software and its
documentation in accordance with the terms of this License.
</BLOCKQUOTE>
<LI>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.
</OL>
<H3>NO WARRANTY</H3>
<OL START="11">
<LI>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.
<LI>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.
</OL>
<H3>END OF TERMS AND CONDITIONS</H3>
</BODY>
</HTML>
+293 -184
Ver Arquivo
@@ -1,223 +1,332 @@
Aladdin Free Public License
Common UNIX Printing System License Agreement
(Version 6, June 17, 1997)
Copyright 1997-1999 by Easy Software Products
44141 AIRPORT VIEW DR STE 204
HOLLYWOOD, MARYLAND 20636-3111 USA
Copyright © 1994, 1995, 1997 Aladdin Enterprises,
Voice: +1.301.373.9603
Email: cups-info@cups.org
WWW: http://www.cups.org
Menlo Park, California, U.S.A. All rights reserved.
Introduction
NOTE: This License is not the same as any of the GNU Licenses
published by the Free Software Foundation. Its terms are
substantially different from those of the GNU Licenses. If you are
familiar with the GNU Licenses, please read this license with
extra care.
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.
Aladdin Enterprises hereby grants to anyone the permission to apply this
License to their own work, as long as the entire License (including the
above notices and this paragraph) is copied with no changes, additions, or
deletions except for changing the first paragraph of Section 0 to include a
suitable description of the work to which the license is being applied and
of the person or entity that holds the copyright in the work, and, if the
License is being applied to a work created in a country other than the
United States, replacing the first paragraph of Section 6 with an
appropriate reference to the laws of the appropriate country.
For those not familiar with the GNU General Public License, the license
basically allows you to:
0. Subject Matter
* 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.
This License applies to the Common UNIX Printing System ("PROGRAM"). The
Common UNIX Printing System is a copyrighted work whose copyright is held by
Easy Software Products (the "LICENSOR"). The Common UNIX Printing System,
CUPS, and the CUPS logo are the trademark property of Easy Software
Products.
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.
A "work based on the PROGRAM" means either the PROGRAM or any derivative
work of the PROGRAM, as defined in the United States Copyright Act of 1976,
such as a translation or a modification.
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.
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. NOTHING OTHER THAN THIS LICENSE GRANTS YOU PERMISSION TO MODIFY OR
DISTRIBUTE THE PROGRAM OR ITS DERIVATIVE WORKS. THESE ACTIONS ARE PROHIBITED
BY LAW. IF YOU DO NOT ACCEPT THESE TERMS AND CONDITIONS, DO NOT MODIFY OR
DISTRIBUTE THE PROGRAM.
Binary Distribution Rights
1. Licenses
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.
LICENSOR hereby grants you the following rights, provided that you comply
with all of the restrictions set forth in this License and provided,
further, that you distribute an unmodified copy of this License with the
PROGRAM:
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:
a. You may copy and distribute literal (i.e., verbatim) copies of the
PROGRAM's source code as you receive it throughout the world, in any
medium.
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
b. You may modify the PROGRAM, create works based on the PROGRAM and
distribute copies of such throughout the world, in any medium.
Support
2. Restrictions
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.
This license is subject to the following restrictions:
Trademarks
a. Distribution of the PROGRAM or any work based on the PROGRAM by a
commercial organization to any third party is prohibited if any payment
is made in connection with such distribution, whether directly (as in
payment for a copy of the PROGRAM) or indirectly (as in payment for
some service related to the PROGRAM, or payment for some product or
service that includes a copy of the PROGRAM "without charge"; these are
only examples, and not an exhaustive enumeration of prohibited
activities). The following methods of distribution involving payment
shall not in and of themselves be a violation of this restriction:
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.
i. Posting the PROGRAM on a public access information storage and
retrieval service for which a fee is received for retrieving
information (such as an on-line service), provided that the fee is
not content-dependent (i.e., the fee would be the same for
retrieving the same volume of information consisting of random
data) and that access to the service and to the PROGRAM is
available independent of any other product or service. An example
of a service that does not fall under this section is an on-line
service that is operated by a company and that is only available
to customers of that company. (This is not an exhaustive
enumeration.)
GNU General Public License
ii. Distributing the PROGRAM on removable computer-readable media,
provided that the files containing the PROGRAM are reproduced
entirely and verbatim on such media, that all information on such
media be redistributable for non-commercial purposes without
charge, and that such media are distributed by themselves (except
for accompanying documentation) independent of any other product
or service. Examples of such media include CD-ROM, magnetic tape,
and optical storage media. (This is not intended to be an
exhaustive list.) An example of a distribution that does not fall
under this section is a CD-ROM included in a book or magazine.
(This is not an exhaustive enumeration.)
Version 2, June 1991
b. Activities other than copying, distribution and modification of the
PROGRAM are not subject to this License and they are outside its scope.
Functional use (running) of the PROGRAM is not restricted, and any
output produced through the use of the PROGRAM is subject to this
license only if its contents constitute a work based on the PROGRAM
(independent of having been made by running the PROGRAM).
Copyright 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
c. You must meet all of the following conditions with respect to any work
that you distribute or publish that in whole or in part contains or is
derived from the PROGRAM or any part thereof ("the Work"):
Everyone is permitted to copy and distribute verbatim copies of this license
document, but changing it is not allowed.
i. If you have modified the PROGRAM, you must cause the Work to carry
prominent notices stating that you have modified the PROGRAM's
files and the date of any change;
Preamble
ii. You must cause the Work to be licensed as a whole and at no charge
to all third parties under the terms of this License;
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.
iii. If the Work normally reads commands interactively when run, you
must cause it, at each time the Work commences operation, 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). Such notice must also state that
users may redistribute the Work only under the conditions of this
License and tell the user how to view the copy of this License
included with the Work. (Exceptions: if the PROGRAM is interactive
but normally prints or displays such an announcement only at the
request of a user, such as in an "About box", the Work is required
to print or display the notice only under the same circumstances;
if the PROGRAM itself is interactive but does not normally print
such an announcement, the Work is not required to print an
announcement.);
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.
iv. You must accompany the Work with the complete corresponding
machine-readable source code, delivered on a medium customarily
used for software interchange. 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 code. If you distribute with the
Work any component 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, you
must also distribute the source code of that component if you have
it and are allowed to do so;
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.
v. If you distribute any written or printed material at all with the
Work, such material must include either a written copy of this
License, or a prominent written indication that the Work is
covered by this License and written instructions for printing
and/or displaying the copy of the License on the distribution
medium;
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.
vi. You may not impose any further restrictions on the recipient's
exercise of the rights granted herein.
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.
If distribution of executable or object code is made by offering the
equivalent ability to copy from a designated place, then offering equivalent
ability 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 code along with the object code.
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.
3. Reservation of Rights
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.
No rights are granted to the PROGRAM except as expressly set forth herein.
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.
The precise terms and conditions for copying, distribution and modification
follow.
4. Other Restrictions
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
If the distribution and/or use of the PROGRAM is restricted in certain
countries for any reason, LICENSOR 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.
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".
5. Limitations
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.
THE PROGRAM IS PROVIDED TO YOU "AS IS", WITHOUT WARRANTY. THERE IS NO
WARRANTY FOR THE PROGRAM, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. 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.
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.)
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
LICENSOR, 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.
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.
6. General
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.
This License is governed by the laws of the State of Maryland, U.S.A.,
excluding choice of law rules.
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.)
If any part of this License is found to be in conflict with the law, that
part shall be interpreted in its broadest meaning consistent with the law,
and no other parts of the License shall be affected.
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.
For United States Government users, the PROGRAM is provided with RESTRICTED
RIGHTS. If you are a unit or agency of the United States Government or are
acquiring the Software for any such unit or agency, the following apply:
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 the unit or agency is the Department of Defense ("DOD"), the
Software and its documentation are classified as "commercial
computer software" and "commercial computer software
documentation" respectively and, pursuant to DFAR Section
227.7202, the Government is acquiring the Software and its
documentation in accordance with the terms of this License. If the
unit or agency is other than DOD, the Software and its
documentation are classified as "commercial computer software" and
"commercial computer software documentation" respectively and,
pursuant to FAR Section 12.212, the Government is acquiring the
Software and its documentation in accordance with the terms of
this License.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made generous
contributions to the wide range of software distributed through that
system in reliance on consistent application of that system; it is up
to the author/donor to decide if he or she is willing to distribute
software through any other system and a licensee cannot impose that
choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
9. If the distribution and/or use of the Program is restricted in certain
countries either by patents or by copyrighted interfaces, the original
copyright holder who places the Program under this License may add an
explicit geographical distribution limitation excluding those
countries, so that distribution is permitted only in or among countries
not thus excluded. In such case, this License incorporates the
limitation as if written in the body of this License.
10. The Free Software Foundation may publish revised and/or new versions of
the General Public License from time to time. Such new versions will be
similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Program does not specify a version
number of this License, you may choose any version ever published by
the Free Software Foundation.
11. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the
author to ask for permission. For software which is copyrighted by the
Free Software Foundation, write to the Free Software Foundation; we
sometimes make exceptions for this. Our decision will be guided by the
two goals of preserving the free status of all derivatives of our free
software and of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
NECESSARY SERVICING, REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM
(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR
OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
+18 -6
Ver Arquivo
@@ -16,7 +16,7 @@
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44145 Airport View Drive, Suite 204
# 44141 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
@@ -31,14 +31,18 @@
AR = @AR@
AWK = @AWK@
CC = @CC@
CHMOD = @CHMOD@
CP = @CP@
HTMLDOC = @HTMLDOC@
LN = /bin/ln -sf
MKDIR = @MKDIR@ -p
NROFF = @GROFF@ -T ascii
NROFF = @NROFF@
PACK = @PACK@
RANLIB = @RANLIB@
RM = @RM@ -f
SED = @SED@
SHELL = /bin/sh
SMBCLIENT = @SMBCLIENT@
#
# Program options...
@@ -56,6 +60,12 @@ LIBS = @LIBS@ -L../cups -lcups
OPTIM = @OPTIM@
OPTIONS =
#
# Formatted man page extension...
#
CAT = @CAT@
#
# Directories...
#
@@ -98,13 +108,15 @@ SERVERROOT = @CUPS_SERVERROOT@
# Rules...
#
.SUFFIXES: .a .c .h .1 .2 .3 .4 .5 .6 .7 .8 .o .z
.SUFFIXES: .a .c .gz .h .o .z .1 .5 .8
.c.o:
echo Compiling $<...
$(CC) $(CFLAGS) -c $<
.1.z .2.z .3.z .4.z .5.z .6.z .7.z .8.z:
.1.z .5.z .8.z .1.gz .5.gz .8.gz:
echo Formatting $<...
$(NROFF) -man $< >t
pack -f t
mv t.z $@
$(PACK) t
-mv t.$(CAT) $@
#
# End of "$Id$"
+9 -1
Ver Arquivo
@@ -14,7 +14,7 @@
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44145 Airport View Drive, Suite 204
# 44141 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
@@ -37,6 +37,7 @@ DIRS = cups backend berkeley cgi-bin filter man pstoraster \
all:
for dir in $(DIRS); do\
echo Making all in $$dir... ;\
(cd $$dir; make);\
done
@@ -46,6 +47,7 @@ all:
clean:
for dir in $(DIRS); do\
echo Cleaning in $$dir... ;\
(cd $$dir; make clean);\
done
@@ -55,12 +57,18 @@ clean:
install:
for dir in $(DIRS); do\
echo Installing in $$dir... ;\
(cd $$dir; make install);\
done
echo Installing in conf...
(cd conf; make install)
echo Installing in data...
(cd data; make install)
echo Installing in doc...
(cd doc; make install)
echo Installing in fonts...
(cd fonts; make install)
echo Installing in ppd...
(cd ppd; make install)
#
+14 -118
Ver Arquivo
@@ -4,21 +4,18 @@
</HEAD>
<BODY>
<H1>README - CUPS v1.0b1</H1>
<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="#compile">Compiling CUPS</A>
<LI><A HREF="#config">Configuring the Software</A>
<LI><A HREF="#run">Running the Software</A>
<LI><A HREF="#use">Using the Software</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="#license">Legal Stuff</A>
<LI><A HREF="#legal">Legal Stuff</A>
</UL>
<H2><A NAME="intro">Introduction</A></H2>
@@ -58,130 +55,29 @@ nroff-like package.
<P>The documentation is formatted using the HTMLDOC software (again, not
needed unless you make changes.)
<H2><A NAME="compile">Compiling CUPS</A></H2>
<H2><A NAME="use">Using CUPS</A></H2>
CUPS uses GNU autoconf to configure the makefiles and source code for your
system. To configure CUPS for your system type:
<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.
<UL><PRE>
% ./configure ENTER
</PRE></UL>
The default installation will put the CUPS software in the <CODE>/usr</CODE>
and <CODE>/var</CODE> directories on your system, which will overwrite any
existing printing commands on your system. To install the CUPS software in
another location use the <CODE>--prefix</CODE> option:
<UL><PRE>
% ./configure --prefix=/usr/local ENTER
</PRE></UL>
Once you have configured things, just type:
<UL><PRE>
% make ENTER
</PRE></UL>
to build the software.
<H2><A NAME="install">Installing the Software</A></H2>
To install the software type:
<UL><PRE>
% make install ENTER
</PRE></UL>
<H2><A NAME="config">Configuring the Software</A></H2>
Before you run CUPS for the first time you'll need to edit the CUPS
configuration files which are normally located in /var/cups/conf.
<UL>
The <CODE>cupsd.conf</CODE> file configures all of the
"global" server settings and access control. The default
settings are usually appropriate for most environments.
<P>The <CODE>printers.conf</CODE> file configures each printer
queue. You'll need to add a listing for each printer on your
system.
<P>The <CODE>classes.conf</CODE> file configures each printer
class. You'll need to add a listing for each printer class you
want.
<P>The <CODE>mime.types</CODE> file defines all of the
recognized file types. You don't normally have to edit this
file.
<P>The <CODE>mime.convs</CODE> file defines all of the file
conversion filters. You don't normally have to edit this file.
</UL>
In addition to the files in the /var/cups/conf directory, you'll also need
to copy PPD files for each printer to the /var/cups/ppd directory. If you
don't have a PPD file for your printer, the drivers will still work, just
with reduced functionality.
<H2><A NAME="run">Running the Software</A></H2>
Once you have configured the software you can start the CUPS daemon by
typing:
<UL><PRE>
% /usr/sbin/cupsd &amp; ENTER
</PRE></UL>
<H2><A NAME="use">Using the Software</A></H2>
Once you have installed the software, you can use the normal lp or lpr
commands to print jobs. If you installed the software under /usr then
you shouldn't have to reconfigure any applications to recognize the new
printing system.
<P>One of the advantages of CUPS is that you don't always have to send
PostScript or Text files to your printers. If you have a JPEG file, you
can just type "lp filename.jpg" and CUPS will handle converting it for
you!
<P>You can monitor the status of jobs via the lpstat command or with your
web browser by pointing it at "http://localhost:631".
<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 second beta release of CUPS:
the fourth beta release of CUPS:
<UL>
<LI>Documentation is not completed.
<LI>The lpadmin command is currently not provided.
<LI>The lpq command is currently not provided.
<LI>The lpc command currently only supports the help and status
commands.
<LI>While both GNU GhostScript and the CUPS image RIP are
provided, no sample raster printer driver is provided. The
final release of CUPS will include a PCL printer driver.
<LI>Automatic classing is currently not supported.
<LI>The CUPS server should disable core dumps by filters, backends,
and CGI programs.
<LI>The CUPS server should increase the FD limit to the maximum
allowed on the system.
<LI>The CUPS server should close stdin, stdout, and stderr and
run in the background ("daemon" mode...)
<LI>The class and job CGIs are currently not provided.
</UL>
CUPS has been built and tested on the following operating systems:
@@ -220,9 +116,9 @@ 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">Aladdin Free Public License</A>
<A HREF="LICENSE.html">GNU General Public License</A>
which is located in the files "LICENSE.html" and "LICENSE.txt". For commercial
licensing information, please contact:
support and "binary-only" licensing information, please contact:
<UL>
Attn: CUPS Licensing Information
+17 -89
Ver Arquivo
@@ -1,18 +1,17 @@
README - CUPS v1.0b1
README - CUPS v1.0b4
--------------------
CONTENTS
* Introduction
* Requirements
* Compiling CUPS
* Configuring the Software
* Running the Software
* Using the Software
* Using CUPS
* Known Problems
* Reporting Problems
* Other Resources
* Legal Stuff
INTRODUCTION
The Common UNIX Printing System provides a portable printing layer for UNIX®
@@ -33,6 +32,7 @@ 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.
REQUIREMENTS
You'll need an ANSI C compiler to build CUPS on your system. As its name
@@ -49,99 +49,24 @@ nroff-like package.
The documentation is formatted using the HTMLDOC software (again, not needed
unless you make changes.)
COMPILING CUPS
CUPS uses GNU autoconf to configure the makefiles and source code for your
system. To configure CUPS for your system type:
USING CUPS
% ./configure ENTER
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 default installation will put the CUPS software in the /usr and /var
directories on your system, which will overwrite any existing printing
commands on your system. To install the CUPS software in another location
use the --prefix option:
Once you have installed CUPS, the Software Administrator's Manual and
Software User's Manual are excellent places to start setting things up.
% ./configure --prefix=/usr/local ENTER
Once you have configured things, just type:
% make ENTER
to build the software.
INSTALLING THE SOFTWARE
To install the software type:
% make install ENTER
CONFIGURING THE SOFTWARE
Before you run CUPS for the first time you'll need to edit the CUPS
configuration files which are normally located in /var/cups/conf.
The cupsd.conf file configures all of the "global" server settings and
access control. The default settings are usually appropriate for most
environments.
The printers.conf file configures each printer queue. You'll need to
add a listing for each printer on your system.
The classes.conf file configures each printer class. You'll need to add
a listing for each printer class you want.
The mime.types file defines all of the recognized file types. You don't
normally have to edit this file.
The mime.convs file defines all of the file conversion filters. You
don't normally have to edit this file.
In addition to the files in the /var/cups/conf directory, you'll also need
to copy PPD files for each printer to the /var/cups/ppd directory. If you
don't have a PPD file for your printer, the drivers will still work, just
with reduced functionality.
RUNNING THE SOFTWARE
Once you have configured the software you can start the CUPS daemon by
typing:
% /usr/sbin/cupsd & ENTER
USING THE SOFTWARE
Once you have installed the software, you can use the normal lp or lpr
commands to print jobs. If you installed the software under /usr then you
shouldn't have to reconfigure any applications to recognize the new printing
system.
One of the advantages of CUPS is that you don't always have to send
PostScript or Text files to your printers. If you have a JPEG file, you can
just type "lp filename.jpg" and CUPS will handle converting it for you!
You can monitor the status of jobs via the lpstat command or with your web
browser by pointing it at "http://localhost:631".
KNOWN PROBLEMS
The following known problems are being worked on and should be resolved for
the second beta release of CUPS:
the fourth beta release of CUPS:
* Documentation is not completed.
* The lpadmin command is currently not provided.
* The lpq command is currently not provided.
* The lpc command currently only supports the help and status commands.
* While both GNU GhostScript and the CUPS image RIP are provided, no
sample raster printer driver is provided. The final release of CUPS
will include a PCL printer driver.
* Automatic classing is currently not supported.
* The CUPS server should disable core dumps by filters, backends, and CGI
programs.
* The CUPS server should increase the FD limit to the maximum allowed on
the system.
* The CUPS server should close stdin, stdout, and stderr and run in the
background ("daemon" mode...)
* The class and job CGIs are currently not provided.
CUPS has been built and tested on the following operating systems:
@@ -154,12 +79,14 @@ CUPS has been built and tested on the following operating systems:
The client libraries and filters have been successfully compiled under
Microsoft Windows using Visual C++ 6.0.
REPORTING PROBLEMS
If you have problems, please send an email to cups-support@cups.org. Include
your operating system and version, compiler and version, and any errors or
problems you've run into.
OTHER RESOURCES
See the CUPS web site at "http://www.cups.org" for other site links.
@@ -169,15 +96,16 @@ You can subscribe to the CUPS mailing list by sending a message containing
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 provided under the terms of the Aladdin Free Public License which is
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
licensing information, please contact:
support and "binary-only" licensing information, please contact:
Attn: CUPS Licensing Information
Easy Software Products
+28 -7
Ver Arquivo
@@ -14,7 +14,7 @@
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44145 Airport View Drive, Suite 204
# 44141 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
@@ -24,8 +24,8 @@
include ../Makedefs
TARGETS = lpd parallel serial smb socket
OBJS = lpd.o parallel.o serial.o smb.o socket.o
TARGETS = ipp lpd parallel serial smb socket
OBJS = ipp.o lpd.o parallel.o serial.o socket.o
#
# Make all targets...
@@ -47,12 +47,26 @@ clean:
install:
-$(MKDIR) $(SERVERROOT)/backend
$(CP) $(TARGETS) $(SERVERROOT)/backend
$(LN) ipp $(SERVERROOT)/backend/http
$(CHMOD) u+s $(SERVERROOT)/backend/lpd
#
# ipp
#
ipp: ipp.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o ipp ipp.o $(LIBS)
$(LN) ipp http
ipp.o: ../cups/cups.h ../Makedefs
#
# lpd
#
lpd: lpd.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o lpd lpd.o $(LIBS)
lpd.o: ../cups/cups.h ../Makedefs
@@ -62,6 +76,7 @@ lpd.o: ../cups/cups.h ../Makedefs
#
parallel: parallel.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o parallel parallel.o $(LIBS)
parallel.o: ../cups/cups.h ../Makedefs
@@ -71,6 +86,7 @@ parallel.o: ../cups/cups.h ../Makedefs
#
serial: serial.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o serial serial.o $(LIBS)
serial.o: ../cups/cups.h ../Makedefs
@@ -78,17 +94,22 @@ serial.o: ../cups/cups.h ../Makedefs
#
# smb
#
# Note: reading through these commands is a good way to get a headache... :)
#
smb: smb.o ../cups/libcups.a
$(CC) $(LDFLAGS) -o smb smb.o $(LIBS)
smb.o: ../cups/cups.h ../Makedefs
smb: smb.sh ../Makedefs
echo Generating $@...
$(RM) smb
sedcmd="1,\$$s/^SMBCLIENT=.\*/SMBCLIENT=`echo $(SMBCLIENT) | sed -e '1,$$s/\\//\\\\\\//g'`/" ;\
$(SED) -e "$$sedcmd" <smb.sh >smb
$(CHMOD) +x smb
#
# socket
#
socket: socket.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o socket socket.o $(LIBS)
socket.o: ../cups/cups.h ../Makedefs
+391
Ver Arquivo
@@ -0,0 +1,391 @@
/*
* "$Id$"
*
* IPP backend 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
* property of Easy Software Products and are protected by Federal
* copyright law. Distribution and use rights are outlined in the file
* "LICENSE" 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
*
* Contents:
*
*/
/*
* Include necessary headers.
*/
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <cups/cups.h>
#include <cups/language.h>
#include <cups/string.h>
/*
* 'main()' - Send a file to the printer or server.
*
* Usage:
*
* printer-uri job-id user title copies options [file]
*/
int /* O - Exit status */
main(int argc, /* I - Number of command-line arguments (6 or 7) */
char *argv[]) /* I - Command-line arguments */
{
int i; /* Looping var */
int n, n2; /* Attribute values */
char *option, /* Name of option */
*val, /* Pointer to option value */
*s; /* Pointer into option value */
int num_options; /* Number of printer options */
cups_option_t *options; /* Printer options */
char method[255], /* Method in URI */
hostname[1024], /* Hostname */
username[255], /* Username info */
resource[1024], /* Resource info (printer name) */
filename[1024]; /* File to print */
int port; /* Port number (not used) */
char password[255], /* Password info */
uri[HTTP_MAX_URI];/* Updated URI without user/pass */
http_status_t status; /* Status of HTTP job */
FILE *fp; /* File to print */
http_t *http; /* HTTP connection */
ipp_t *request, /* IPP request */
*response; /* IPP response */
ipp_attribute_t *job_id; /* job-id attribute */
cups_lang_t *language; /* Default language */
struct stat fileinfo; /* File statistics */
size_t nbytes, /* Number of bytes written */
tbytes; /* Total bytes written */
char buffer[8192]; /* Output buffer */
if (argc < 6 || argc > 7)
{
fprintf(stderr, "Usage: %s job-id user title copies options [file]\n",
argv[0]);
return (1);
}
/*
* If we have 7 arguments, print the file named on the command-line.
* Otherwise, print stdin...
*/
if (argc == 6)
fp = stdin;
else if ((fp = fopen(argv[6], "rb")) == NULL)
{
perror("ERROR: Unable to open print file");
return (1);
}
else
stat(argv[6], &fileinfo);
/*
* Extract the hostname and printer name from the URI...
*/
httpSeparate(argv[0], method, username, hostname, &port, resource);
/*
* Try connecting to the remote server...
*/
fprintf(stderr, "INFO: Connecting to %s...\n", hostname);
if ((http = httpConnect(hostname, port)) == NULL)
{
perror("ERROR: Unable to connect to IPP host");
if (fp != stdin)
fclose(fp);
return (1);
}
/*
* Build a URI for the printer and fill the standard IPP attributes for
* an IPP_PRINT_FILE request...
*/
request = ippNew();
request->request.op.operation_id = IPP_PRINT_JOB;
request->request.op.request_id = 1;
sprintf(uri, "%s://%s:%d/%s", method, hostname, port, resource);
language = cupsLangDefault();
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL,
language != NULL ? language->language : "C");
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, uri);
ippAddString(request, IPP_TAG_JOB, 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]));
/*
* Handle options on the command-line...
*/
options = NULL;
num_options = cupsParseOptions(argv[5], 0, &options);
if (cupsGetOption("raw", num_options, options))
ippAddString(request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/vnd.cups-raw");
else
ippAddString(request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/octet-stream");
for (i = 0; i < num_options; i ++)
{
/*
* Skip the "raw" option - handled above...
*/
if (strcmp(options[i].name, "raw") == 0)
continue;
/*
* See what the option value is; for compatibility with older interface
* scripts, we have to support single-argument options as well as
* option=value, option=low-high, and option=MxN.
*/
option = options[i].name;
val = options[i].value;
if (*val == '\0')
val = NULL;
if (val != NULL)
{
if (strcasecmp(val, "true") == 0 ||
strcasecmp(val, "on") == 0 ||
strcasecmp(val, "yes") == 0)
{
/*
* Boolean value - true...
*/
n = 1;
val = "";
}
else if (strcasecmp(val, "false") == 0 ||
strcasecmp(val, "off") == 0 ||
strcasecmp(val, "no") == 0)
{
/*
* Boolean value - false...
*/
n = 0;
val = "";
}
n = strtol(val, &s, 0);
}
else
{
if (strncmp(option, "no", 2) == 0)
{
option += 2;
n = 0;
}
else
n = 1;
s = "";
}
if (*s != '\0' && *s != '-' && (*s != 'x' || s == val))
/*
* String value(s)...
*/
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, option, NULL, val);
else if (val != NULL)
{
/*
* Numeric value, range, or resolution...
*/
if (*s == '-')
{
n2 = strtol(s + 1, NULL, 0);
ippAddRange(request, IPP_TAG_JOB, option, n, n2);
}
else if (*s == 'x')
{
n2 = strtol(s + 1, &s, 0);
if (strcmp(s, "dpc") == 0)
ippAddResolution(request, IPP_TAG_JOB, option, IPP_RES_PER_CM, n, n2);
else if (strcmp(s, "dpi") == 0)
ippAddResolution(request, IPP_TAG_JOB, option, IPP_RES_PER_INCH, n, n2);
else
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, option, NULL, val);
}
else
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, option, n);
}
else
/*
* Boolean value...
*/
ippAddBoolean(request, IPP_TAG_JOB, option, (char)n);
}
/*
* Now fill in the HTTP request stuff...
*/
httpClearFields(http);
httpSetField(http, HTTP_FIELD_CONTENT_TYPE, "application/ipp");
httpEncode64(password, username);
httpSetField(http, HTTP_FIELD_AUTHORIZATION, password);
if (fp != stdin)
{
sprintf(buffer, "%u", ippLength(request) + (size_t)fileinfo.st_size);
httpSetField(http, HTTP_FIELD_CONTENT_LENGTH, buffer);
}
/*
* Do the request...
*/
for (;;)
{
/*
* POST the request, retrying as needed...
*/
if (httpPost(http, resource))
if (httpPost(http, resource))
{
fputs("INFO: Unable to POST print request; retrying...\n", stderr);
sleep(10);
continue;
}
/*
* Send the IPP request...
*/
request->state = IPP_IDLE;
if (ippWrite(http, request) != IPP_OK)
{
fputs("ERROR: Unable to send IPP request; retrying...\n", stderr);
status = HTTP_ERROR;
break;
}
/*
* Then send the file...
*/
tbytes = 0;
while ((nbytes = fread(buffer, 1, sizeof(buffer), fp)) > 0)
{
tbytes += nbytes;
fprintf(stderr, "INFO: Sending print file, %uk...\n", tbytes / 1024);
if (httpWrite(http, buffer, nbytes) < nbytes)
{
perror("ERROR: Unable to send print file to printer");
status = HTTP_ERROR;
break;
}
}
httpWrite(http, buffer, 0);
/*
* Finally, check the status from the HTTP server...
*/
while ((status = httpUpdate(http)) == HTTP_CONTINUE);
if (status == HTTP_OK)
{
response = ippNew();
ippRead(http, response);
if (response->request.status.status_code > IPP_OK_CONFLICT)
fprintf(stderr, "ERROR: Print file was not accepted (%04x)!\n",
response->request.status.status_code);
else if ((job_id = ippFindAttribute(response, "job-id", IPP_TAG_INTEGER)) == NULL)
fputs("INFO: Print file accepted - job ID unknown.\n", stderr);
else
fprintf(stderr, "INFO: Print file accepted - job ID %d.\n",
job_id->values[0].integer);
}
else
{
response = NULL;
httpFlush(http);
fprintf(stderr, "ERROR: Print request was not accepted (%d)!\n", status);
}
break;
}
/*
* Free memory...
*/
httpClose(http);
if (request != NULL)
ippDelete(request);
if (response != NULL)
ippDelete(response);
/*
* Close the print file as needed...
*/
if (fp != stdin)
fclose(fp);
/*
* Return the queue status...
*/
return (status != HTTP_OK);
}
/*
* End of "$Id$".
*/
+13 -14
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44145 Airport View Drive, Suite 204
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
@@ -109,14 +109,14 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
if ((fp = fopen(tmpnam(filename), "w")) == NULL)
{
perror("lpd: unable to create temporary file");
perror("ERROR: unable to create temporary file");
return (1);
}
while ((bytes = fread(buffer, 1, sizeof(buffer), stdin)) > 0)
if (fwrite(buffer, 1, bytes, fp) < bytes)
{
perror("lpd: unable to write to temporary file");
perror("ERROR: unable to write to temporary file");
fclose(fp);
unlink(filename);
return (1);
@@ -178,7 +178,7 @@ lpd_command(int fd, /* I - Socket connection to LPD host */
bytes = vsprintf(buf, format, ap);
va_end(ap);
fprintf(stderr, "lpd: lpd_command %02.2x %s", buf[0], buf + 1);
fprintf(stderr, "DEBUG: lpd_command %02.2x %s", buf[0], buf + 1);
/*
* Send the command...
@@ -194,7 +194,7 @@ lpd_command(int fd, /* I - Socket connection to LPD host */
if (recv(fd, &status, 1, 0) < 1)
return (-1);
fprintf(stderr, "lpd: lpd_command returning %d\n", status);
fprintf(stderr, "DEBUG: lpd_command returning %d\n", status);
return (status);
}
@@ -288,13 +288,13 @@ lpd_queue(char *hostname, /* I - Host to connect to */
if (stat(filename, &filestats))
{
perror("lpd: unable to stat print file");
perror("ERROR: unable to stat print file");
return (1);
}
if ((fp = fopen(filename, "rb")) == NULL)
{
perror("lpd: unable to open print file for reading");
perror("ERROR: unable to open print file for reading");
return (1);
}
@@ -306,8 +306,7 @@ lpd_queue(char *hostname, /* I - Host to connect to */
lpd_command(fd, "\002%s\n", printer); /* Receive print job(s) */
gethostname(localhost, sizeof(localhost));
if (strchr(localhost, '.') != NULL)
*strchr(localhost, '.') = '\0';
localhost[31] = '\0'; /* RFC 1179, Section 7.2 - host name < 32 chars */
sprintf(control, "H%s\nP%s\n", localhost, user);
cptr = control + strlen(control);
@@ -323,12 +322,12 @@ lpd_queue(char *hostname, /* I - Host to connect to */
getpid() % 1000, localhost,
getpid() % 1000, localhost);
fprintf(stderr, "lpd: Control file is:\n%s", control);
fprintf(stderr, "DEBUG: Control file is:\n%s", control);
lpd_command(fd, "\002%d cfA%03.3d%s\n", strlen(control), getpid() % 1000,
localhost);
fprintf(stderr, "lpd: Sending control file (%d bytes)\n", strlen(control));
fprintf(stderr, "INFO: Sending control file (%d bytes)\n", strlen(control));
if (send(fd, control, strlen(control) + 1, 0) < (strlen(control) + 1))
{
@@ -344,12 +343,12 @@ lpd_queue(char *hostname, /* I - Host to connect to */
* Send the print file...
*/
fputs("lpd: Control file sent successfully\n", stderr);
fputs("INFO: Control file sent successfully\n", stderr);
lpd_command(fd, "\003%d dfA%03.3d%s\n", filestats.st_size,
getpid() % 1000, localhost);
fprintf(stderr, "lpd: Sending data file (%u bytes)\n",
fprintf(stderr, "INFO: Sending data file (%u bytes)\n",
(unsigned)filestats.st_size);
tbytes = 0;
@@ -375,7 +374,7 @@ lpd_queue(char *hostname, /* I - Host to connect to */
fprintf(stderr, "ERROR: Remote host did not accept data file (%d)\n",
status);
else
fputs("lpd: Data file sent successfully\n", stderr);
fputs("INFO: Data file sent successfully\n", stderr);
}
/*
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44145 Airport View Drive, Suite 204
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44145 Airport View Drive, Suite 204
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
-66
Ver Arquivo
@@ -1,66 +0,0 @@
/*
* "$Id$"
*
* Server Message Block backend 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
* property of Easy Software Products and are protected by Federal
* copyright law. Distribution and use rights are outlined in the file
* "LICENSE" which should have been included with this file. If this
* file is missing or damaged please contact Easy Software Products
* at:
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
* EMail: cups-info@cups.org
* WWW: http://www.cups.org
*
* Contents:
*
*/
/*
* Include necessary headers.
*/
#include <cups/cups.h>
#include <stdio.h>
#include <stdlib.h>
#include <cups/string.h>
/*
* 'main()' - Send a file to the printer or server.
*
* Usage:
*
* printer-uri job-id user title copies options [file]
*/
int /* O - Exit status */
main(int argc, /* I - Number of command-line arguments (6 or 7) */
char *argv[]) /* I - Command-line arguments */
{
if (argc < 6 || argc > 7)
{
fprintf(stderr, "Usage: %s job-id user title copies options [file]\n",
argv[0]);
return (1);
}
fputs("ERROR: Backend not implemented yet!\n", stderr);
return (1);
}
/*
* End of "$Id$".
*/
Arquivo executável
+88
Ver Arquivo
@@ -0,0 +1,88 @@
#!/bin/sh
#
# "$Id$"
#
# SMB printing script for the Common UNIX Printing System (CUPS).
#
# Copyright 1993-1999 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
# property of Easy Software Products and are protected by Federal
# copyright law. Distribution and use rights are outlined in the file
# "LICENSE.txt" which should have been included with this file. If this
# file is missing or damaged please contact Easy Software Products
# at:
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44145 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
# EMail: cups-info@cups.org
# WWW: http://www.cups.org
#
SMBCLIENT=/usr/local/samba/bin/smbclient
#
# Usage:
#
# printer job user title copies options [filename]
#
if [ $# -lt 5 -o $# -gt 6 ]; then
# Too few or too many arguments
echo 'Usage: smb job-id user title copies options [file]' >&2
exit 1
fi
#
# If "filename" is not on the command-line, then we read the print
# data from stdin and write it to a temporary file.
#
if [ $# = 5 ]; then
# Collect all print data and put it in a temporary file...
if [ "$TMPDIR" = "" ]; then
TMPDIR=/var/tmp
fi
filename="$TMPDIR/$$.smb"
cat >$filename
else
# Use the file on the command-line...
filename="$6"
fi
#
# Take apart the URI in $0...
#
uri="$0"
host=`echo $uri | awk -F/ '{print substr($3, index($3, "@") + 1)}'`
user=`echo $uri | awk -F/ '{print substr($3, 0, index($3, "@") - 1)}'`
if [ "$user" != "" ]; then
user="-U $user"
fi
printer=`echo $uri | awk -F/ '{print $4}'`
#
# Send the file to the remote system...
#
$SMBCLIENT //$host/$printer $user -P -N <<EOF
print $filename
EOF
#
# Lastly, remove the temporary file as needed...
#
if [ $# = 5 ]; then
rm -f $filename
fi
#
# End of "$Id$".
#
+16 -3
Ver Arquivo
@@ -14,7 +14,7 @@
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44145 Airport View Drive, Suite 204
# 44141 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
@@ -24,8 +24,8 @@
include ../Makedefs
TARGETS = lpc lpr lprm
OBJS = lpc.o lpr.o lprm.o
TARGETS = lpc lpq lpr lprm
OBJS = lpc.o lpq.o lpr.o lprm.o
#
# Make all targets...
@@ -55,15 +55,27 @@ install:
#
lpc: lpc.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o lpc lpc.o $(LIBS)
lpc.o: ../cups/cups.h ../Makedefs
#
# lpq
#
lpq: lpq.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o lpq lpq.o $(LIBS)
lpq.o: ../cups/cups.h ../Makedefs
#
# lpr
#
lpr: lpr.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o lpr lpr.o $(LIBS)
lpr.o: ../cups/cups.h ../Makedefs
@@ -73,6 +85,7 @@ lpr.o: ../cups/cups.h ../Makedefs
#
lprm: lprm.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o lprm lprm.o $(LIBS)
lprm.o: ../cups/cups.h ../Makedefs
+17 -11
Ver Arquivo
@@ -70,7 +70,7 @@ main(int argc, /* I - Number of command-line arguments */
* Connect to the scheduler...
*/
http = httpConnect("localhost", ippPort());
http = httpConnect(cupsServer(), ippPort());
if (argc > 1)
{
@@ -87,8 +87,14 @@ main(int argc, /* I - Number of command-line arguments */
*/
printf("lpc> ");
while (gets(line) != NULL)
while (fgets(line, sizeof(line), stdin) != NULL)
{
/*
* Strip the trailing newline...
*/
line[strlen(line) - 1] = '\0';
/*
* Find any options in the string...
*/
@@ -225,7 +231,7 @@ show_status(http_t *http, /* I - HTTP connection to server */
/* Printer URI */
DEBUG_printf(("show_printers(%08x, %08x)\n", http, dests));
DEBUG_printf(("show_status(%08x, %08x)\n", http, dests));
if (http == NULL)
return;
@@ -257,7 +263,7 @@ show_status(http_t *http, /* I - HTTP connection to server */
if ((response = cupsDoRequest(http, request, "/printers/")) != NULL)
{
DEBUG_puts("show_printers: request succeeded...");
DEBUG_puts("show_status: request succeeded...");
/*
* Loop through the printers returned in the list and display
@@ -397,15 +403,15 @@ show_status(http_t *http, /* I - HTTP connection to server */
language = cupsLangDefault();
attr = ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL,
cupsLangEncoding(language));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL,
cupsLangEncoding(language));
attr = ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL,
language->language);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL,
language->language);
sprintf(printer_uri, "http://localhost/printers/%s", printer);
sprintf(printer_uri, "ipp://localhost/printers/%s", printer);
attr = ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, printer_uri);
+366
Ver Arquivo
@@ -0,0 +1,366 @@
/*
* "$Id$"
*
* "lpq" command for the Common UNIX Printing System (CUPS).
*
* Copyright 1997-1999 by 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
*
* Contents:
*
*/
/*
* Include necessary headers...
*/
/*
* Include necessary headers...
*/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <cups/cups.h>
#include <cups/language.h>
#include <cups/debug.h>
/*
* Local functions...
*/
static int show_jobs(http_t *, char *, char *, int, int);
/*
* 'main()' - Parse options and commands.
*/
int
main(int argc, /* I - Number of command-line arguments */
char *argv[]) /* I - Command-line arguments */
{
int i; /* Looping var */
http_t *http; /* Connection to server */
char *dest, /* Desired printer */
*user; /* Desired user */
int id, /* Desired job ID */
interval, /* Reporting interval */
longstatus; /* Show file details */
/*
* Connect to the scheduler...
*/
http = httpConnect(cupsServer(), ippPort());
/*
* Check for command-line options...
*/
dest = NULL;
user = NULL;
id = 0;
interval = 0;
longstatus = 0;
for (i = 1; i < argc; i ++)
if (argv[i][0] == '+')
interval = atoi(argv[i] + 1);
else if (argv[i][0] == '-')
{
switch (argv[i][1])
{
case 'P' : /* Printer */
if (argv[i][2])
dest = argv[i] + 2;
else
{
i ++;
dest = argv[i];
}
break;
case 'l' : /* Long status */
longstatus = 1;
break;
default :
fputs("Usage: lpq [-P dest] [-l] [+interval]\n", stderr);
return (1);
}
}
else if (isdigit(argv[i][0]))
id = atoi(argv[i]);
else
user = argv[i];
/*
* Show the status in a loop...
*/
for (;;)
{
i = show_jobs(http, dest, user, id, longstatus);
if (i && interval)
sleep(interval);
else
break;
}
/*
* Close the connection to the server and return...
*/
httpClose(http);
return (0);
}
/*
* 'show_jobs()' - Show printers.
*/
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 */
{
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 */
*jobuser, /* Pointer to job-originating-user-name */
*jobname; /* Pointer to job-name */
ipp_jstate_t jobstate; /* job-state */
int jobid, /* job-id */
jobsize, /* job-k-octets */
jobpriority, /* job-priority */
jobcount, /* Number of jobs */
rank; /* Rank of job */
char resource[1024]; /* Resource string */
static char *ranks[10] = /* Ranking strings */
{
"th",
"st",
"nd",
"rd",
"th",
"th",
"th",
"th",
"th",
"th"
};
DEBUG_printf(("show_jobs(%08x, %08x, %08x, %d, %d)\n", http, dest, user, id,
longstatus));
if (http == NULL)
return (0);
/*
* Build an IPP_GET_JOBS or IPP_GET_JOB_ATTRIBUTES request, which requires
* the following attributes:
*
* attributes-charset
* attributes-natural-language
* job-uri or printer-uri
* [
*/
request = ippNew();
request->request.op.operation_id = id ? IPP_GET_JOB_ATTRIBUTES : IPP_GET_JOBS;
request->request.op.request_id = 1;
language = cupsLangDefault();
attr = ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
attr = ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
if (dest == NULL)
{
if (id)
sprintf(resource, "ipp://localhost/jobs/%d", id);
else
strcpy(resource, "ipp://localhost/jobs");
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "job-uri",
NULL, resource);
}
else
{
sprintf(resource, "ipp://localhost/printers/%s", dest);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "job-uri",
NULL, resource);
}
if (user)
{
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
"requesting-user-name", NULL, user);
ippAddBoolean(request, IPP_TAG_OPERATION, "my-jobs", 1);
}
/*
* Do the request and get back a response...
*/
if (!longstatus)
puts("Rank\tPri Owner Job Files Total Size");
jobcount = 0;
if ((response = cupsDoRequest(http, request, "/jobs/")) != NULL)
{
rank = 1;
/*
* Loop through the job list and display them...
*/
for (attr = response->attrs; attr != NULL; attr = attr->next)
{
/*
* Skip leading attributes until we hit a job...
*/
while (attr != NULL && attr->group_tag != IPP_TAG_JOB)
attr = attr->next;
if (attr == NULL)
break;
/*
* Pull the needed attributes from this job...
*/
jobid = 0;
jobsize = 0;
jobpriority = 50;
jobstate = IPP_JOB_PENDING;
jobname = "untitled";
jobuser = NULL;
jobdest = NULL;
while (attr != NULL && attr->group_tag == IPP_TAG_JOB)
{
if (strcmp(attr->name, "job-id") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
jobid = attr->values[0].integer;
if (strcmp(attr->name, "job-k-octets") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
jobsize = attr->values[0].integer * 1024;
if (strcmp(attr->name, "job-priority") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
jobpriority = attr->values[0].integer;
if (strcmp(attr->name, "job-state") == 0 &&
attr->value_tag == IPP_TAG_ENUM)
jobstate = (ipp_jstate_t)attr->values[0].integer;
if (strcmp(attr->name, "job-printer-uri") == 0 &&
attr->value_tag == IPP_TAG_URI)
if ((jobdest = strrchr(attr->values[0].string.text, '/')) != NULL)
jobdest ++;
if (strcmp(attr->name, "job-originating-user-name") == 0 &&
attr->value_tag == IPP_TAG_NAME)
jobuser = attr->values[0].string.text;
if (strcmp(attr->name, "job-name") == 0 &&
attr->value_tag == IPP_TAG_NAME)
jobname = attr->values[0].string.text;
attr = attr->next;
}
/*
* See if we have everything needed...
*/
if (jobdest == NULL || jobid == 0)
{
if (attr == NULL)
break;
else
continue;
}
jobcount ++;
/*
* Display the job...
*/
if (longstatus)
{
puts("");
if (jobstate == IPP_JOB_PROCESSING)
printf("%s: active\t\t\t\t ", jobuser);
else
{
printf("%s: %d%s\t\t\t\t ", jobuser, rank, ranks[rank % 10]);
rank ++;
}
printf("[job %03dlocalhost]\n", jobid);
printf("\t%-33s%d bytes\n", jobname, jobsize);
}
else
{
if (jobstate == IPP_JOB_PROCESSING)
printf("active\t");
else
{
printf("%d%s\t", rank, ranks[rank % 10]);
rank ++;
}
printf(" %-5d%-7.7s%-7d%-19s%d bytes\n", jobpriority, jobuser, jobid,
jobname, jobsize);
}
if (attr == NULL)
break;
}
ippDelete(response);
}
return (jobcount);
}
/*
* End of "$Id$".
*/
+4 -4
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44145 Airport View Drive, Suite 204
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
@@ -70,7 +70,7 @@ main(int argc, /* I - Number of command-line arguments */
* Open a connection to the server...
*/
if ((http = httpConnect("localhost", ippPort())) == NULL)
if ((http = httpConnect(cupsServer(), ippPort())) == NULL)
{
fputs("lprm: Unable to contact server!\n", stderr);
return (1);
@@ -146,7 +146,7 @@ main(int argc, /* I - Number of command-line arguments */
if (dest)
{
sprintf(uri, "http://localhost/printers/%s", dest);
sprintf(uri, "ipp://localhost/printers/%s", dest);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, uri);
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "job-id",
@@ -154,7 +154,7 @@ main(int argc, /* I - Number of command-line arguments */
}
else
{
sprintf(uri, "http://localhost/jobs/%d", job_id);
sprintf(uri, "ipp://localhost/jobs/%d", job_id);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "job-uri", NULL,
uri);
}
+23 -3
Ver Arquivo
@@ -14,7 +14,7 @@
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44145 Airport View Drive, Suite 204
# 44141 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
@@ -24,8 +24,7 @@
include ../Makedefs
#TARGETS = classes.cgi jobs.cgi printers.cgi
TARGETS = printers.cgi
TARGETS = classes.cgi jobs.cgi printers.cgi
OBJS = classes.o jobs.o printers.o
#
@@ -49,11 +48,32 @@ install:
-$(MKDIR) $(SERVERROOT)/cgi-bin
$(CP) $(TARGETS) $(SERVERROOT)/cgi-bin
#
# classes.cgi
#
classes.cgi: classes.o ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ classes.o $(LIBS)
$(OBJS): ../Makedefs ../cups/cups.h ../cups/ipp.h ../cups/language.h
#
# jobs.cgi
#
jobs.cgi: jobs.o ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ jobs.o $(LIBS)
$(OBJS): ../Makedefs ../cups/cups.h ../cups/ipp.h ../cups/language.h
#
# printers.cgi
#
printers.cgi: printers.o ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ printers.o $(LIBS)
$(OBJS): ../Makedefs ../cups/cups.h ../cups/ipp.h ../cups/language.h
+471
Ver Arquivo
@@ -0,0 +1,471 @@
/*
* "$Id$"
*
* Class status CGI for the Common UNIX Printing System (CUPS).
*
* Copyright 1997-1999 by 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
*
* Contents:
*
* main() - Main entry for CGI.
* show_class_list() - Show a list of classes...
* show_class_info() - Show class information.
*/
/*
* Include necessary headers...
*/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <cups/cups.h>
#include <cups/language.h>
#include <cups/debug.h>
/*
* Local functions...
*/
static void show_class_list(http_t *http, cups_lang_t *language);
static void show_class_info(http_t *http, cups_lang_t *language,
char *name);
/*
* 'main()' - Main entry for CGI.
*/
int /* O - Exit status */
main(int argc, /* I - Number of command-line arguments */
char *argv[]) /* I - Command-line arguments */
{
cups_lang_t *language; /* Language information */
char *name; /* Class name */
http_t *http; /* Connection to the server */
/*
* Get the request language...
*/
language = cupsLangDefault();
/*
* Connect to the HTTP server...
*/
http = httpConnect("localhost", ippPort());
/*
* Tell the client to expect HTML...
*/
printf("Content-Type: text/html;charset=%s\n\n", cupsLangEncoding(language));
/*
* See if we need to show a list of classes or the status of a
* single class...
*/
name = argv[0];
if (strcmp(name, "/") == 0 || strcmp(name, "classes.cgi") == 0)
name = NULL;
/*
* Print the standard header...
*/
puts("<HTML>");
puts("<HEAD>");
if (name)
puts("<META HTTP-EQUIV=\"Refresh\" CONTENT=\"10\">");
else
puts("<META HTTP-EQUIV=\"Refresh\" CONTENT=\"30\">");
printf("<TITLE>%s on %s - Common UNIX Printing System</TITLE>\n",
name == NULL ? "Classes" : name, getenv("SERVER_NAME"));
puts("<LINK REL=STYLESHEET TYPE=\"text/css\" HREF=\"/cups.css\">");
puts("<MAP NAME=\"navbar\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"10,10,85,30\" HREF=\"/printers\" ALT=\"Current Printer Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"95,10,175,30\" HREF=\"/classes\" ALT=\"Current Printer Classes Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"185,10,235,30\" HREF=\"/jobs\" ALT=\"Current Jobs Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"245,10,395,30\" HREF=\"/documentation.html\" ALT=\"Read CUPS Documentation On-Line\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"405,10,490,30\" HREF=\"http://www.cups.org\" ALT=\"Download the Current CUPS Software\">");
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>");
puts("<IMG SRC=\"/images/navbar.gif\" WIDTH=\"540\" HEIGHT=\"40\" USEMAP=\"#navbar\" BORDER=0>");
printf("<H1>%s on %s</H1>\n", name == NULL ? "Classes" : name,
getenv("SERVER_NAME"));
fflush(stdout);
puts("<CENTER>");
puts("<TABLE WIDTH=\"90%\" BORDER=\"1\">");
puts("<TR>");
puts("<TH>Name</TH>");
puts("<TH WIDTH=\"50%\">Status</TH>");
puts("<TH WIDTH=\"25%\">Jobs</TH>");
puts("</TR>");
/*
* Show the information...
*/
if (name == NULL)
show_class_list(http, language);
else
show_class_info(http, language, name);
/*
* Write a standard trailer...
*/
puts("</TABLE>");
puts("</CENTER>");
puts("<HR>");
puts("<P>The Common UNIX Printing System, CUPS, and the CUPS logo are the");
puts("trademark property of <A HREF=\"http://www.easysw.com\">Easy Software");
puts("Products</A>. CUPS is copyright 1997-1999 by Easy Software Products,");
puts("All Rights Reserved.");
puts("</BODY>");
puts("</HTML>");
/*
* Close the HTTP server connection...
*/
httpClose(http);
cupsLangFree(language);
/*
* Return with no errors...
*/
return (0);
}
/*
* 'show_class_list()' - Show a list of classes...
*/
static void
show_class_list(http_t *http, /* I - HTTP connection */
cups_lang_t *language)/* I - Client's language */
{
ipp_t *request, /* IPP request */
*response; /* IPP response */
ipp_attribute_t *attr; /* IPP attribute */
/*
* Build a CUPS_GET_CLASSES request, which requires the following
* attributes:
*
* attributes-charset
* attributes-natural-language
*/
request = ippNew();
request->request.op.operation_id = CUPS_GET_CLASSES;
request->request.op.request_id = 1;
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
/*
* Do the request and get back a response...
*/
if ((response = cupsDoRequest(http, request, "/classes/")) != NULL)
{
/*
* Loop through the classes returned in the list and display
* their devices...
*/
for (attr = response->attrs; attr != NULL; attr = attr->next)
{
/*
* Skip leading attributes until we hit a job...
*/
while (attr != NULL && attr->group_tag != IPP_TAG_PRINTER)
attr = attr->next;
if (attr == NULL)
break;
/*
* Show the class status for each class...
*/
while (attr != NULL && attr->group_tag == IPP_TAG_PRINTER)
{
if (strcmp(attr->name, "printer-name") == 0 &&
attr->value_tag == IPP_TAG_NAME)
show_class_info(http, language, attr->values[0].string.text);
attr = attr->next;
}
if (attr == NULL)
break;
}
ippDelete(response);
}
}
/*
* 'show_class_info()' - Show class information.
*/
static void
show_class_info(http_t *http,
cups_lang_t *language,
char *name)
{
ipp_t *request, /* IPP request */
*response, /* IPP response */
*jobs; /* IPP Get Jobs response */
int jobcount; /* Number of jobs */
ipp_attribute_t *attr; /* IPP attribute */
char *message; /* Printer state message */
int accepting; /* Accepting requests? */
ipp_pstate_t pstate; /* Printer state */
char uri[HTTP_MAX_URI];/* Printer URI */
/*
* Build a IPP_GET_PRINTER_ATTRIBUTES request, which requires the following
* attributes:
*
* attributes-charset
* attributes-natural-language
* class-uri
*/
request = ippNew();
request->request.op.operation_id = IPP_GET_PRINTER_ATTRIBUTES;
request->request.op.request_id = 1;
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
sprintf(uri, "ipp://localhost/classes/%s", name);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "class-uri", NULL, uri);
/*
* Do the request and get back a response...
*/
if ((response = cupsDoRequest(http, request, uri + 15)) == NULL)
{
puts("<P>Unable to communicate with CUPS server!");
return;
}
if (response->request.status.status_code == IPP_NOT_FOUND)
{
puts("<P>Class does not exist.");
ippDelete(response);
return;
}
/*
* Grab the needed class attributes...
*/
if ((attr = ippFindAttribute(response, "class-state", IPP_TAG_ENUM)) != NULL)
pstate = (ipp_pstate_t)attr->values[0].integer;
else
pstate = IPP_PRINTER_IDLE;
if ((attr = ippFindAttribute(response, "class-state-message", IPP_TAG_TEXT)) != NULL)
message = attr->values[0].string.text;
else
message = NULL;
if ((attr = ippFindAttribute(response, "class-is-accepting-jobs",
IPP_TAG_BOOLEAN)) != NULL)
accepting = attr->values[0].boolean;
else
accepting = 1;
if ((attr = ippFindAttribute(response, "printer-uri", IPP_TAG_URI)) != NULL)
strcpy(uri, attr->values[0].string.text);
/*
* Display the class entry...
*/
puts("<TR>");
printf("<TD VALIGN=TOP><A HREF=\"/classes/%s\">%s</A></TD>\n", name, name);
puts("<TD VALIGN=TOP><IMG SRC=\"/images/classes.gif\" ALIGN=\"LEFT\">");
printf("%s: %s, %s<BR>\n",
cupsLangString(language, CUPS_MSG_PRINTER_STATE),
cupsLangString(language, pstate == IPP_PRINTER_IDLE ? CUPS_MSG_IDLE :
pstate == IPP_PRINTER_PROCESSING ?
CUPS_MSG_PROCESSING : CUPS_MSG_STOPPED),
cupsLangString(language, accepting ? CUPS_MSG_ACCEPTING_JOBS :
CUPS_MSG_NOT_ACCEPTING_JOBS));
if (message)
printf("<BR CLEAR=ALL><I>\"%s\"</I>\n", message);
else if (!accepting || pstate == IPP_PRINTER_STOPPED)
puts("<BR CLEAR=ALL><I>\"Reason Unknown\"</I>");
puts("</TD>");
/*
* Show a list of jobs as needed...
*/
if (pstate != IPP_PRINTER_IDLE)
{
/*
* Build an IPP_GET_JOBS request, which requires the following
* attributes:
*
* attributes-charset
* attributes-natural-language
* class-uri
*/
request = ippNew();
request->request.op.operation_id = IPP_GET_JOBS;
request->request.op.request_id = 1;
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL,
cupsLangEncoding(language));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL,
language->language);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"class-uri", NULL, uri);
jobs = cupsDoRequest(http, request, uri + 15);
}
else
jobs = NULL;
puts("<TD VALIGN=\"TOP\">");
jobcount = 0;
if (jobs != NULL)
{
char *username; /* Pointer to job-originating-user-name */
int jobid, /* job-id */
size; /* job-k-octets */
for (attr = jobs->attrs; attr != NULL; attr = attr->next)
{
/*
* Skip leading attributes until we hit a job...
*/
while (attr != NULL && attr->group_tag != IPP_TAG_JOB)
attr = attr->next;
if (attr == NULL)
break;
/*
* Pull the needed attributes from this job...
*/
jobid = 0;
size = 0;
username = NULL;
while (attr != NULL && attr->group_tag == IPP_TAG_JOB)
{
if (strcmp(attr->name, "job-id") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
jobid = attr->values[0].integer;
if (strcmp(attr->name, "job-k-octets") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
size = attr->values[0].integer;
if (strcmp(attr->name, "job-originating-user-name") == 0 &&
attr->value_tag == IPP_TAG_NAME)
username = attr->values[0].string.text;
attr = attr->next;
}
/*
* Display the job if it matches the current class...
*/
if (username != NULL)
{
jobcount ++;
printf("<A HREF=\"/jobs/%d\">%s-%d %s %dk</A><BR>\n", jobid, name,
jobid, username, size);
}
if (attr == NULL)
break;
}
ippDelete(jobs);
}
if (jobcount == 0)
puts("None");
puts("</TD>");
puts("</TR>");
ippDelete(response);
}
/*
* End of "$Id$".
*/
+577
Ver Arquivo
@@ -0,0 +1,577 @@
/*
* "$Id$"
*
* Job status CGI for the Common UNIX Printing System (CUPS).
*
* Copyright 1997-1999 by 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
*
* Contents:
*
* main() - Main entry for CGI.
* show_job_list() - Show a list of jobs...
* show_job_info() - Show job information.
*/
/*
* Include necessary headers...
*/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <cups/cups.h>
#include <cups/language.h>
#include <cups/debug.h>
/*
* Local functions...
*/
static void show_job_list(http_t *http, cups_lang_t *language);
static void show_job_info(http_t *http, cups_lang_t *language,
char *name);
/*
* 'main()' - Main entry for CGI.
*/
int /* O - Exit status */
main(int argc, /* I - Number of command-line arguments */
char *argv[]) /* I - Command-line arguments */
{
cups_lang_t *language; /* Language information */
char *job; /* Job name */
http_t *http; /* Connection to the server */
setbuf(stdout, NULL);
/*
* Get the request language...
*/
language = cupsLangDefault();
/*
* Connect to the HTTP server...
*/
http = httpConnect("localhost", ippPort());
/*
* Tell the client to expect HTML...
*/
printf("Content-Type: text/html;charset=%s\n\n", cupsLangEncoding(language));
/*
* See if we need to show a list of jobs or the status of a
* single job...
*/
job = argv[0];
if (strcmp(job, "/") == 0 || strcmp(job, "jobs.cgi") == 0)
job = NULL;
/*
* Print the standard header...
*/
puts("<HTML>");
puts("<HEAD>");
if (job)
puts("<META HTTP-EQUIV=\"Refresh\" CONTENT=\"10\">");
else
puts("<META HTTP-EQUIV=\"Refresh\" CONTENT=\"30\">");
printf("<TITLE>%s on %s - Common UNIX Printing System</TITLE>\n",
job == NULL ? "Jobs" : job, getenv("SERVER_NAME"));
puts("<LINK REL=STYLESHEET TYPE=\"text/css\" HREF=\"/cups.css\">");
puts("<MAP NAME=\"navbar\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"10,10,85,30\" HREF=\"/printers\" ALT=\"Current Printer Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"95,10,175,30\" HREF=\"/classes\" ALT=\"Current Printer Classes Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"185,10,235,30\" HREF=\"/jobs\" ALT=\"Current Jobs Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"245,10,395,30\" HREF=\"/documentation.html\" ALT=\"Read CUPS Documentation On-Line\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"405,10,490,30\" HREF=\"http://www.cups.org\" ALT=\"Download the Current CUPS Software\">");
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>");
puts("<IMG SRC=\"/images/navbar.gif\" WIDTH=\"540\" HEIGHT=\"40\" USEMAP=\"#navbar\" BORDER=0>");
fflush(stdout);
/*
* Show the information...
*/
if (job == NULL)
show_job_list(http, language);
else
show_job_info(http, language, job);
/*
* Write a standard trailer...
*/
puts("<HR>");
puts("<P>The Common UNIX Printing System, CUPS, and the CUPS logo are the");
puts("trademark property of <A HREF=\"http://www.easysw.com\">Easy Software");
puts("Products</A>. CUPS is copyright 1997-1999 by Easy Software Products,");
puts("All Rights Reserved.");
puts("</BODY>");
puts("</HTML>");
/*
* Close the HTTP server connection...
*/
httpClose(http);
cupsLangFree(language);
/*
* Return with no errors...
*/
return (0);
}
/*
* 'show_job_list()' - Show a list of jobs...
*/
static void
show_job_list(http_t *http, /* I - HTTP connection */
cups_lang_t *language) /* I - Client's language */
{
ipp_t *request, /* IPP request */
*response; /* IPP response */
ipp_attribute_t *attr; /* IPP attribute */
char *job_uri, /* job-uri */
*printer_uri, /* job-printer-uri */
*job_name, /* job-name */
*job_user; /* job-originating-user-name */
int job_id, /* job-id */
job_priority, /* job-priority */
job_k_octets, /* job-k-octets */
copies; /* copies */
ipp_jstate_t job_state; /* job-state */
printf("<H1>Jobs on %s</H1>\n", getenv("SERVER_NAME"));
/*
* Build an IPP_GET_JOBS request, which requires the following
* attributes:
*
* attributes-charset
* attributes-natural-language
* job-uri
*/
request = ippNew();
request->request.op.operation_id = IPP_GET_JOBS;
request->request.op.request_id = 1;
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "job-uri",
NULL, "ipp://localhost/jobs/");
/*
* Do the request and get back a response...
*/
if ((response = cupsDoRequest(http, request, "/jobs/")) != NULL)
{
/*
* Do a table for the jobs...
*/
puts("<CENTER>");
puts("<TABLE WIDTH=\"90%\" BORDER=\"1\">");
puts("<TR>");
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_PRINT_JOBS));
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_JOB_STATE));
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_JOB_NAME));
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_USER_NAME));
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_PRIORITY));
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_COPIES));
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_FILE_SIZE));
puts("</TR>");
/*
* Loop through the jobs returned in the list and display
* their devices...
*/
for (attr = response->attrs; attr != NULL; attr = attr->next)
{
/*
* Skip leading attributes until we hit a job...
*/
while (attr != NULL && attr->group_tag != IPP_TAG_JOB)
attr = attr->next;
if (attr == NULL)
break;
/*
* Show the job status for each job...
*/
job_uri = NULL;
printer_uri = NULL;
job_name = "unknown";
job_user = "unknown";
job_id = 0;
job_priority = 50;
job_k_octets = 0;
copies = 1;
job_state = IPP_JOB_PENDING;
while (attr != NULL && attr->group_tag == IPP_TAG_JOB)
{
if (strcmp(attr->name, "job-uri") == 0 &&
attr->value_tag == IPP_TAG_URI)
job_uri = attr->values[0].string.text;
if (strcmp(attr->name, "job-printer-uri") == 0 &&
attr->value_tag == IPP_TAG_URI)
printer_uri = attr->values[0].string.text;
if (strcmp(attr->name, "job-name") == 0 &&
attr->value_tag == IPP_TAG_NAME)
job_name = attr->values[0].string.text;
if (strcmp(attr->name, "job-originating-user-name") == 0 &&
attr->value_tag == IPP_TAG_NAME)
job_user = attr->values[0].string.text;
if (strcmp(attr->name, "job-id") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
job_id = attr->values[0].integer;
if (strcmp(attr->name, "job-priority") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
job_priority = attr->values[0].integer;
if (strcmp(attr->name, "job-k-octets") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
job_k_octets = attr->values[0].integer;
if (strcmp(attr->name, "copies") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
copies = attr->values[0].integer;
if (strcmp(attr->name, "job-state") == 0 &&
attr->value_tag == IPP_TAG_ENUM)
job_state = (ipp_jstate_t)attr->values[0].integer;
attr = attr->next;
}
/*
* See if we have everything needed...
*/
if (job_id && job_uri != NULL && printer_uri != NULL)
{
puts("<TR>");
printf("<TD><A HREF=\"http://%s:%s/jobs/%d\">%s-%d</A></TD>\n",
getenv("SERVER_NAME"), getenv("SERVER_PORT"), job_id,
strrchr(printer_uri, '/') + 1, job_id);
printf("<TD>%s</TD>\n", job_state == IPP_JOB_PROCESSING ?
cupsLangString(language, CUPS_MSG_PROCESSING) :
cupsLangString(language, CUPS_MSG_PENDING));
printf("<TD>%s</TD>\n", job_name);
printf("<TD>%s</TD>\n", job_user);
printf("<TD>%d</TD>\n", job_priority);
printf("<TD>%d</TD>\n", copies);
printf("<TD>%dk</TD>\n", job_k_octets);
puts("</TR>");
}
if (attr == NULL)
break;
}
ippDelete(response);
puts("</TABLE>");
puts("</CENTER>");
}
else
puts("<P>No jobs found.");
}
/*
* 'show_job_info()' - Show job information.
*/
static void
show_job_info(http_t *http, /* I - Server connection */
cups_lang_t *language, /* I - Language */
char *name) /* I - Job "name" */
{
int i; /* Looping var */
ipp_t *request, /* IPP request */
*response; /* IPP response */
ipp_attribute_t *attr; /* IPP attribute */
char uri[HTTP_MAX_URI];/* Real URI */
char *job_uri, /* job-uri */
*printer_uri, /* job-printer-uri */
*job_name, /* job-name */
*job_user; /* job-originating-user-name */
int job_id, /* job-id */
job_priority, /* job-priority */
job_k_octets; /* job-k-octets */
ipp_jstate_t job_state; /* job-state */
/*
* Build an IPP_GET_JOB_ATTRIBUTES request, which requires the following
* attributes:
*
* attributes-charset
* attributes-natural-language
* job-uri
*/
request = ippNew();
request->request.op.operation_id = IPP_GET_JOB_ATTRIBUTES;
request->request.op.request_id = 1;
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
sprintf(uri, "ipp://localhost/jobs/%s", name);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "job-uri", NULL, uri);
/*
* Do the request and get back a response...
*/
if ((response = cupsDoRequest(http, request, uri + 15)) == NULL)
{
puts("<P>Unable to communicate with CUPS server!");
return;
}
if (response->request.status.status_code == IPP_NOT_FOUND)
{
puts("<P>Job does not exist or has completed.");
ippDelete(response);
return;
}
/*
* Get the job status for this job...
*/
if ((attr = ippFindAttribute(response, "job-uri", IPP_TAG_URI)) != NULL)
job_uri = attr->values[0].string.text;
else
{
puts("<P>Missing job-uri attribute!");
ippDelete(request);
return;
}
if ((attr = ippFindAttribute(response, "job-printer-uri", IPP_TAG_URI)) != NULL)
printer_uri = attr->values[0].string.text;
else
{
puts("<P>Missing job-printer-uri attribute!");
ippDelete(request);
return;
}
if ((attr = ippFindAttribute(response, "job-name", IPP_TAG_NAME)) != NULL)
job_name = attr->values[0].string.text;
else
job_name = "unknown";
if ((attr = ippFindAttribute(response, "job-originating-user-name",
IPP_TAG_NAME)) != NULL)
job_user = attr->values[0].string.text;
else
job_user = "unknown";
if ((attr = ippFindAttribute(response, "job-id", IPP_TAG_INTEGER)) != NULL)
job_id = attr->values[0].integer;
else
{
puts("<P>Missing job-id attribute!");
ippDelete(request);
return;
}
if ((attr = ippFindAttribute(response, "job-priority", IPP_TAG_INTEGER)) != NULL)
job_priority = attr->values[0].integer;
else
job_priority = 50;
if ((attr = ippFindAttribute(response, "job-k-octets", IPP_TAG_INTEGER)) != NULL)
job_k_octets = attr->values[0].integer;
else
job_k_octets = 0;
if ((attr = ippFindAttribute(response, "job-state", IPP_TAG_ENUM)) != NULL)
job_state = (ipp_jstate_t)attr->values[0].integer;
else
job_state = IPP_JOB_PENDING;
/*
* Do a table for the job...
*/
printf("<H1><A HREF=\"http://%s:%s/printers/%s\">%s-%d</A></H1>\n",
getenv("SERVER_NAME"), getenv("SERVER_PORT"),
strrchr(printer_uri, '/') + 1, strrchr(printer_uri, '/') + 1, job_id);
puts("<CENTER>");
puts("<TABLE WIDTH=\"90%\" BORDER=\"1\">");
puts("<TR>");
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_JOB_STATE));
printf("<TD>%s</TD>\n", job_state == IPP_JOB_PROCESSING ?
cupsLangString(language, CUPS_MSG_PROCESSING) :
cupsLangString(language, CUPS_MSG_PENDING));
puts("</TR>");
puts("<TR>");
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_JOB_NAME));
printf("<TD>%s</TD>\n", job_name);
puts("</TR>");
puts("<TR>");
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_USER_NAME));
printf("<TD>%s</TD>\n", job_user);
puts("</TR>");
puts("<TR>");
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_PRIORITY));
printf("<TD>%d</TD>\n", job_priority);
puts("</TR>");
puts("<TR>");
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_FILE_SIZE));
printf("<TD>%dk</TD>\n", job_k_octets);
puts("</TR>");
puts("<TR VALIGN=\"TOP\">");
printf("<TH>%s</TH>\n", cupsLangString(language, CUPS_MSG_OPTIONS));
puts("<TD>");
for (attr = response->attrs; attr != NULL; attr = attr->next)
{
if (attr->group_tag != IPP_TAG_JOB &&
attr->group_tag != IPP_TAG_EXTENSION)
continue;
if (strcmp(attr->name, "job-uri") == 0 ||
strcmp(attr->name, "job-printer-uri") == 0 ||
strcmp(attr->name, "job-name") == 0 ||
strcmp(attr->name, "job-originating-user-name") == 0 ||
strcmp(attr->name, "job-id") == 0 ||
strcmp(attr->name, "job-priority") == 0 ||
strcmp(attr->name, "job-k-octets") == 0 ||
strcmp(attr->name, "job-state") == 0)
continue;
if (attr->value_tag != IPP_TAG_BOOLEAN)
printf("%s=", attr->name);
for (i = 0; i < attr->num_values; i ++)
{
if (i)
putchar(',');
switch (attr->value_tag)
{
case IPP_TAG_INTEGER :
case IPP_TAG_ENUM :
printf("%d", attr->values[i].integer);
break;
case IPP_TAG_BOOLEAN :
if (!attr->values[i].boolean)
printf("no");
case IPP_TAG_NOVALUE :
fputs(attr->name, stdout);
break;
case IPP_TAG_RANGE :
printf("%d-%d", attr->values[i].range.lower,
attr->values[i].range.upper);
break;
case IPP_TAG_RESOLUTION :
printf("%dx%d%s", attr->values[i].resolution.xres,
attr->values[i].resolution.yres,
attr->values[i].resolution.units == IPP_RES_PER_INCH ?
"dpi" : "dpc");
break;
case IPP_TAG_STRING :
case IPP_TAG_TEXT :
case IPP_TAG_NAME :
case IPP_TAG_KEYWORD :
case IPP_TAG_CHARSET :
case IPP_TAG_LANGUAGE :
case IPP_TAG_MIMETYPE :
case IPP_TAG_URI :
printf("\"%s\"", attr->values[i].string.text);
break;
}
}
puts("<BR>");
}
puts("</TD>");
puts("</TR>");
puts("</TABLE></CENTER>");
ippDelete(response);
}
/*
* End of "$Id$".
*/
+151 -139
Ver Arquivo
@@ -62,7 +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...
*/
@@ -104,11 +103,11 @@ main(int argc, /* I - Number of command-line arguments */
printer == NULL ? "Printers" : printer, getenv("SERVER_NAME"));
puts("<LINK REL=STYLESHEET TYPE=\"text/css\" HREF=\"/cups.css\">");
puts("<MAP NAME=\"navbar\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"10,10,100,35\" HREF=\"/printers\" ALT=\"Current Printer Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"115,10,205,35\" HREF=\"/classes\" ALT=\"Current Printer Classes Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"220,10,280,35\" HREF=\"/jobs\" ALT=\"Current Jobs Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"295,10,470,35\" HREF=\"/documentation.html\" ALT=\"Read CUPS Documentation On-Line\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"485,10,590,35\" HREF=\"http://www.cups.org\" ALT=\"Download the Current CUPS Software\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"10,10,85,30\" HREF=\"/printers\" ALT=\"Current Printer Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"95,10,175,30\" HREF=\"/classes\" ALT=\"Current Printer Classes Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"185,10,235,30\" HREF=\"/jobs\" ALT=\"Current Jobs Status\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"245,10,395,30\" HREF=\"/documentation.html\" ALT=\"Read CUPS Documentation On-Line\">");
puts("<AREA SHAPE=\"RECT\" COORDS=\"405,10,490,30\" HREF=\"http://www.cups.org\" ALT=\"Download the Current CUPS Software\">");
puts("</MAP>");
puts("</HEAD>");
puts("<BODY>");
@@ -197,11 +196,11 @@ show_printer_list(http_t *http, /* I - HTTP connection */
request->request.op.request_id = 1;
attr = ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL, cupsLangEncoding(language));
attr = ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
/*
* Do the request and get back a response...
@@ -265,7 +264,7 @@ show_printer_info(http_t *http,
char *message; /* Printer state message */
int accepting; /* Accepting requests? */
ipp_pstate_t pstate; /* Printer state */
char uri[1024]; /* Printer URI */
char uri[HTTP_MAX_URI];/* Printer URI */
/*
@@ -296,163 +295,176 @@ show_printer_info(http_t *http,
* Do the request and get back a response...
*/
if ((response = cupsDoRequest(http, request, uri + 15)) != NULL)
if ((response = cupsDoRequest(http, request, uri + 15)) == NULL)
{
puts("<P>Unable to communicate with CUPS server!");
return;
}
if (response->request.status.status_code == IPP_NOT_FOUND)
{
puts("<P>Printer does not exist.");
ippDelete(response);
return;
}
/*
* Grab the needed printer attributes...
*/
if ((attr = ippFindAttribute(response, "printer-state", IPP_TAG_ENUM)) != NULL)
pstate = (ipp_pstate_t)attr->values[0].integer;
else
pstate = IPP_PRINTER_IDLE;
if ((attr = ippFindAttribute(response, "printer-state-message", IPP_TAG_TEXT)) != NULL)
message = attr->values[0].string.text;
else
message = NULL;
if ((attr = ippFindAttribute(response, "printer-is-accepting-jobs",
IPP_TAG_BOOLEAN)) != NULL)
accepting = attr->values[0].boolean;
else
accepting = 1;
if ((attr = ippFindAttribute(response, "printer-uri", IPP_TAG_URI)) != NULL)
strcpy(uri, attr->values[0].string.text);
/*
* Display the printer entry...
*/
puts("<TR>");
printf("<TD VALIGN=TOP><A HREF=\"/printers/%s\">%s</A></TD>\n", name, name);
printf("<TD VALIGN=TOP><IMG SRC=\"/images/printer-%s.gif\" ALIGN=\"LEFT\">\n",
pstate == IPP_PRINTER_IDLE ? "idle" :
pstate == IPP_PRINTER_PROCESSING ? "processing" : "stopped");
printf("%s: %s, %s<BR>\n",
cupsLangString(language, CUPS_MSG_PRINTER_STATE),
cupsLangString(language, pstate == IPP_PRINTER_IDLE ? CUPS_MSG_IDLE :
pstate == IPP_PRINTER_PROCESSING ?
CUPS_MSG_PROCESSING : CUPS_MSG_STOPPED),
cupsLangString(language, accepting ? CUPS_MSG_ACCEPTING_JOBS :
CUPS_MSG_NOT_ACCEPTING_JOBS));
if (message)
printf("<BR CLEAR=ALL><I>\"%s\"</I>\n", message);
else if (!accepting || pstate == IPP_PRINTER_STOPPED)
puts("<BR CLEAR=ALL><I>\"Reason Unknown\"</I>");
puts("</TD>");
/*
* Show a list of jobs as needed...
*/
if (pstate != IPP_PRINTER_IDLE)
{
/*
* Grab the needed printer attributes...
* Build an IPP_GET_JOBS request, which requires the following
* attributes:
*
* attributes-charset
* attributes-natural-language
* printer-uri
*/
if ((attr = ippFindAttribute(response, "printer-state", IPP_TAG_ENUM)) != NULL)
pstate = (ipp_pstate_t)attr->values[0].integer;
else
pstate = IPP_PRINTER_IDLE;
request = ippNew();
if ((attr = ippFindAttribute(response, "printer-state-message", IPP_TAG_TEXT)) != NULL)
message = attr->values[0].string.text;
else
message = NULL;
request->request.op.operation_id = IPP_GET_JOBS;
request->request.op.request_id = 1;
if ((attr = ippFindAttribute(response, "printer-is-accepting-jobs",
IPP_TAG_BOOLEAN)) != NULL)
accepting = attr->values[0].boolean;
else
accepting = 1;
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL,
cupsLangEncoding(language));
/*
* Display the printer entry...
*/
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL,
language->language);
puts("<TR>");
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, uri);
printf("<TD VALIGN=TOP><A HREF=\"/printers/%s\">%s</A></TD>\n", name, name);
jobs = cupsDoRequest(http, request, uri + 15);
}
else
jobs = NULL;
printf("<TD VALIGN=TOP><IMG SRC=\"/images/printer-%s.gif\" ALIGN=\"LEFT\">\n",
pstate == IPP_PRINTER_IDLE ? "idle" :
pstate == IPP_PRINTER_PROCESSING ? "processing" : "stopped");
puts("<TD VALIGN=\"TOP\">");
jobcount = 0;
printf("%s: %s, %s<BR>\n",
cupsLangString(language, CUPS_MSG_PRINTER_STATE),
cupsLangString(language, pstate == IPP_PRINTER_IDLE ? CUPS_MSG_IDLE :
pstate == IPP_PRINTER_PROCESSING ?
CUPS_MSG_PROCESSING : CUPS_MSG_STOPPED),
cupsLangString(language, accepting ? CUPS_MSG_ACCEPTING_JOBS :
CUPS_MSG_NOT_ACCEPTING_JOBS));
if (jobs != NULL)
{
char *username; /* Pointer to job-originating-user-name */
int jobid, /* job-id */
size; /* job-k-octets */
if (message)
printf("<BR CLEAR=ALL><I>\"%s\"</I>\n", message);
else if (!accepting || pstate == IPP_PRINTER_STOPPED)
puts("<BR CLEAR=ALL><I>\"Reason Unknown\"</I>");
puts("</TD>");
/*
* Show a list of jobs as needed...
*/
if (pstate != IPP_PRINTER_IDLE)
for (attr = jobs->attrs; attr != NULL; attr = attr->next)
{
/*
* Build an IPP_GET_JOBS request, which requires the following
* attributes:
*
* attributes-charset
* attributes-natural-language
* printer-uri
* Skip leading attributes until we hit a job...
*/
request = ippNew();
while (attr != NULL && attr->group_tag != IPP_TAG_JOB)
attr = attr->next;
request->request.op.operation_id = IPP_GET_JOBS;
request->request.op.request_id = 1;
if (attr == NULL)
break;
attr = ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET,
"attributes-charset", NULL,
cupsLangEncoding(language));
/*
* Pull the needed attributes from this job...
*/
attr = ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL,
language->language);
jobid = 0;
size = 0;
username = NULL;
attr = ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, uri);
jobs = cupsDoRequest(http, request, uri + 15);
}
else
jobs = NULL;
puts("<TD VALIGN=\"TOP\">");
jobcount = 0;
if (jobs != NULL)
{
char *username; /* Pointer to job-originating-user-name */
int jobid, /* job-id */
size; /* job-k-octets */
for (attr = jobs->attrs; attr != NULL; attr = attr->next)
while (attr != NULL && attr->group_tag == IPP_TAG_JOB)
{
/*
* Skip leading attributes until we hit a job...
*/
if (strcmp(attr->name, "job-id") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
jobid = attr->values[0].integer;
while (attr != NULL && attr->group_tag != IPP_TAG_JOB)
attr = attr->next;
if (strcmp(attr->name, "job-k-octets") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
size = attr->values[0].integer;
if (attr == NULL)
break;
if (strcmp(attr->name, "job-originating-user-name") == 0 &&
attr->value_tag == IPP_TAG_NAME)
username = attr->values[0].string.text;
/*
* Pull the needed attributes from this job...
*/
jobid = 0;
size = 0;
username = NULL;
while (attr != NULL && attr->group_tag == IPP_TAG_JOB)
{
if (strcmp(attr->name, "job-id") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
jobid = attr->values[0].integer;
if (strcmp(attr->name, "job-k-octets") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
size = attr->values[0].integer;
if (strcmp(attr->name, "job-originating-user-name") == 0 &&
attr->value_tag == IPP_TAG_NAME)
username = attr->values[0].string.text;
attr = attr->next;
}
/*
* Display the job if it matches the current printer...
*/
if (username != NULL)
{
jobcount ++;
printf("<A HREF=\"/jobs/%d\">%s-%d %s %dk</A><BR>\n", jobid, name,
jobid, username, size);
}
if (attr == NULL)
break;
attr = attr->next;
}
ippDelete(jobs);
}
if (jobcount == 0)
puts("None");
puts("</TD>");
puts("</TR>");
/*
* Display the job if it matches the current printer...
*/
ippDelete(response);
if (username != NULL)
{
jobcount ++;
printf("<A HREF=\"/jobs/%d\">%s-%d %s %dk</A><BR>\n", jobid, name,
jobid, username, size);
}
if (attr == NULL)
break;
}
ippDelete(jobs);
}
if (jobcount == 0)
puts("None");
puts("</TD>");
puts("</TR>");
ippDelete(response);
}
+10 -2
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: cupsd.conf 349 1999-05-21 20:53:02Z mike $"
# "$Id: cupsd.conf 429 1999-06-21 19:43:22Z mike $"
#
# Sample configuration file for the Common UNIX Printing System (CUPS)
# scheduler.
@@ -269,6 +269,14 @@ LogLevel info
#RIPCache: 32m
#
# TempDir: the directory to put temporary files in. This directory must be
# writable by the user defined above! Defaults to "/var/tmp" or the value
# of the TMPDIR environment variable.
#
#TempDir /var/tmp
#
# Access permissions for each directory served by the scheduler.
# Locations are relative to DocumentRoot...
@@ -328,5 +336,5 @@ Allow From 127.0.0.1
</Location>
#
# End of "$Id: cupsd.conf 349 1999-05-21 20:53:02Z mike $".
# End of "$Id: cupsd.conf 429 1999-06-21 19:43:22Z mike $".
#
+250
Ver Arquivo
@@ -0,0 +1,250 @@
#
# "$Id: cupsd.conf-personal 407 1999-06-17 20:02:43Z mike $"
#
# Scheduler configuration file for ESP Print Personal.
#
########################################################################
# #
# This is the CUPS configuration file. If you are familiar with #
# Apache or any of the other popular web servers, we've followed the #
# same format. Any configuration variable used here has the same #
# semantics as the corresponding variable in Apache. If we need #
# different functionality then a different name is used to avoid #
# confusion... #
# #
########################################################################
#
# Ports/addresses that we listen to. The default port 631 is reserved
# for the Internet Printing Protocol (IPP) and is what we use here.
#
# You can have multiple Listen lines to listen to more than one
# port:
#
# Listen 127.0.0.1:80
# Listen 127.0.0.1:631
#
# For ESP Print Personal, we can only listen on the local host...
#
#Listen 127.0.0.1:80
Listen 127.0.0.1:631
#
# User/Group: the user and group the server runs under. Normally this
# must be lp and sys, however you can configure things for another user
# or group as needed.
#
# Note: the server must be run initially as root to support the
# default IPP port of 631. It changes users whenever an external
# program is run...
#
User lp
Group sys
#
# SystemGroup: the group name for "System" (printer administration)
# access.
#
SystemGroup sys
#
# ServerName: the hostname of your server, as advertised to the world.
# By default CUPS will use the hostname of the system.
#
#ServerName myhost.domain.com
#
# ServerAdmin: the email address to send all complaints/problems to.
# By default CUPS will use "root@hostname".
#
#ServerAdmin root@your.domain.com
#
# ServerRoot: the root directory for the scheduler.
# By default the compiled-in value.
#
#ServerRoot /var/cups
#
# AccessLog: the access log file; if this does not start with a leading /
# then it is assumed to be relative to ServerRoot. By default set to
# "logs/access_log"
#
#AccessLog logs/access_log
#
# ErrorLog: the error log file; if this does not start with a leading /
# then it is assumed to be relative to ServerRoot. By default set to
# "logs/error_log"
#
#ErrorLog logs/error_log
#
# PageLog: the page log file; if this does not start with a leading /
# then it is assumed to be relative to ServerRoot. By default set to
# "logs/page_log"
#
#PageLog logs/page_log
#
# LogLevel: controls the number of messages logged to the ErrorLog
# file and can be one of the following:
#
# debug Log everything.
# info Log all requests and state changes.
# warn Log errors and warnings.
# error Log only errors.
# none Log nothing.
#
LogLevel info
#
# MaxLogSize: controls the maximum size of each log file before they are
# rotated. Defaults to 1048576 (1MB). Set to 0 to disable log rotating.
#
#MaxLogSize 0
#
# MaxRequestSize: controls the maximum size of print files. Set to 0 to
# disable this feature (defaults to 0.)
#
#MaxRequestSize 0
#
# HostNameLookups: whether or not to do lookups on IP addresses to get a
# fully-qualified hostname. This defaults to Off for performance reasons...
#
#HostNameLookups On
#
# Timeout: the timeout before requests time out. Default is 300 seconds.
#
#Timeout 300
#
# KeepAlive: whether or not to support the Keep-Alive connection
# option. Default is on.
#
#KeepAlive On
#
# KeepAliveTimeout: the timeout before Keep-Alive connections are
# automatically closed. Default is 60 seconds.
#
#KeepAliveTimeout 60
#
# Browsing: not available in ESP Print Personal.
#
Browsing Off
#
# DocumentRoot: the root directory for HTTP documents that are served.
# By default the compiled in directory.
#
#DocumentRoot /usr/share/cups/doc
#
# DefaultLanguage: the default language if not specified by the browser.
# If not specified, the current locale is used.
#
#DefaultLanguage en
#
# DefaultCharset: the default character set to use. If not specified,
# defaults to iso-8859-1. Note that this can also be overridden in
# HTML documents...
#
#DefaultCharset iso-8859-1
#
# RIPCache: the amount of memory that each RIP should use to cache
# bitmaps. The value can be any real number followed by "k" for
# kilobytes, "m" for megabytes, "g" for gigabytes, or "t" for tiles
# (1 tile = 256x256 pixels.) Defaults to "32m" (32 megabytes).
#
#RIPCache: 32m
#
# Access permissions for each directory served by the scheduler.
# Locations are relative to DocumentRoot...
#
# AuthType: the authorization to use; currently only "Basic" authorization is
# supported.
#
# AuthClass: the authorization class; currently only "Anonymous", "User",
# "System" (valid user belonging to group SystemGroup), and "Group"
# (valid user belonging to the specified group) are supported.
#
# AuthGroupName: the group name for "Group" authorization.
#
# Order: the order of Allow/Deny processing.
#
# Allow: allows access from the specified hostname, domain, IP address, or
# network.
#
# Deny: denies access from the specified hostname, domain, IP address, or
# network.
#
<Location />
</Location>
<Location /printers>
#
# You may wish to limit access to printers and classes, either with Allow
# and Deny lines, or by requiring a username and password.
#
## Require a username and password
#AuthType Basic
#AuthClass User
## Restrict access to local domain
#Order Deny,Allow
#Deny From All
#Allow From .mydomain.com
</Location>
<Location /admin>
#
# 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.
#
AuthType Basic
AuthClass System
## Restrict access to local domain
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
</Location>
#
# End of "$Id: cupsd.conf-personal 407 1999-06-17 20:02:43Z mike $".
#
+313
Ver Arquivo
@@ -0,0 +1,313 @@
#
# "$Id: cupsd.conf-professional 407 1999-06-17 20:02:43Z mike $"
#
# Scheduler configuration file for ESP Print Professional.
#
########################################################################
# #
# This is the CUPS configuration file. If you are familiar with #
# Apache or any of the other popular web servers, we've followed the #
# same format. Any configuration variable used here has the same #
# semantics as the corresponding variable in Apache. If we need #
# different functionality then a different name is used to avoid #
# confusion... #
# #
########################################################################
#
# Ports/addresses that we listen to. The default port 631 is reserved
# for the Internet Printing Protocol (IPP) and is what we use here.
#
# You can have multiple Port/Listen lines to listen to more than one
# port or address, or to restrict access:
#
# Port 80
# Port 631
# Listen hostname
# Listen hostname:80
# Listen hostname:631
# Listen 1.2.3.4
# Listen 1.2.3.4:631
#
#Port 80
Port 631
#
# User/Group: the user and group the server runs under. Normally this
# must be lp and sys, however you can configure things for another user
# or group as needed.
#
# Note: the server must be run initially as root to support the
# default IPP port of 631. It changes users whenever an external
# program is run...
#
User lp
Group sys
#
# SystemGroup: the group name for "System" (printer administration)
# access.
#
SystemGroup sys
#
# ServerName: the hostname of your server, as advertised to the world.
# By default CUPS will use the hostname of the system.
#
#ServerName myhost.domain.com
#
# ServerAdmin: the email address to send all complaints/problems to.
# By default CUPS will use "root@hostname".
#
#ServerAdmin root@your.domain.com
#
# ServerRoot: the root directory for the scheduler.
# By default the compiled-in value.
#
#ServerRoot /var/cups
#
# AccessLog: the access log file; if this does not start with a leading /
# then it is assumed to be relative to ServerRoot. By default set to
# "logs/access_log"
#
#AccessLog logs/access_log
#
# ErrorLog: the error log file; if this does not start with a leading /
# then it is assumed to be relative to ServerRoot. By default set to
# "logs/error_log"
#
#ErrorLog logs/error_log
#
# PageLog: the page log file; if this does not start with a leading /
# then it is assumed to be relative to ServerRoot. By default set to
# "logs/page_log"
#
#PageLog logs/page_log
#
# LogLevel: controls the number of messages logged to the ErrorLog
# file and can be one of the following:
#
# debug Log everything.
# info Log all requests and state changes.
# warn Log errors and warnings.
# error Log only errors.
# none Log nothing.
#
LogLevel info
#
# MaxLogSize: controls the maximum size of each log file before they are
# rotated. Defaults to 1048576 (1MB). Set to 0 to disable log rotating.
#
#MaxLogSize 0
#
# MaxRequestSize: controls the maximum size of print files. Set to 0 to
# disable this feature (defaults to 0.)
#
#MaxRequestSize 0
#
# HostNameLookups: whether or not to do lookups on IP addresses to get a
# fully-qualified hostname. This defaults to Off for performance reasons...
#
#HostNameLookups On
#
# Timeout: the timeout before requests time out. Default is 300 seconds.
#
#Timeout 300
#
# KeepAlive: whether or not to support the Keep-Alive connection
# option. Default is on.
#
#KeepAlive On
#
# KeepAliveTimeout: the timeout before Keep-Alive connections are
# automatically closed. Default is 60 seconds.
#
#KeepAliveTimeout 60
#
# ImplicitClasses: whether or not to use implicit classes.
#
# Printer classes can be specified explicitly in the classes.conf
# file, implicitly based upon the printers available on the LAN, or
# both.
#
# When ImplicitClasses is On, printers on the LAN with the same name
# (e.g. Acme-LaserPrint-1000) will be put into a class with the same
# name. This allows you to setup multiple redundant queues on a LAN
# without a lot of administrative difficulties. If a user sends a
# job to Acme-LaserPrint-1000, the job will go to the first available
# queue.
#
# Enabled by default.
#
#ImplicitClasses On
#
# Browsing: whether or not to broadcast printer information to
# other CUPS servers. Enabled by default.
#
#Browsing On
#
# BrowseInterval: the time between browsing updates in seconds. Default
# is 30 seconds.
#
# Note that browsing information is sent whenever a printer's state changes
# as well, so this represents the maximum time between updates.
#
#BrowseInterval 30
#
# BrowseTimeout: the timeout for network printers - if we don't
# get an update within this time the printer will be removed
# from the printer list. This number definitely should not be
# less the BrowseInterval value for obvious reasons. Defaults
# to 300 seconds.
#
#BrowseTimeout 300
#
# BrowsePort: the port used for UDP broadcasts. By default this is
# the IPP port; if you change this you need to do it on all servers.
# Only one BrowsePort is recognized.
#
#BrowsePort 631
#
# BrowseAddress: specifies a broadcast address to be used. By
# default browsing information is broadcast to all active interfaces.
#
# Note: HP-UX 10.20 and earlier do not properly handle broadcast unless
# you have a Class A, B, C, or D netmask (i.e. no CIDR support).
#
#BrowseAddress x.y.z.255
#BrowseAddress x.y.255.255
#BrowseAddress x.255.255.255
#
# DocumentRoot: the root directory for HTTP documents that are served.
# By default the compiled in directory.
#
#DocumentRoot /usr/share/cups/doc
#
# DefaultLanguage: the default language if not specified by the browser.
# If not specified, the current locale is used.
#
#DefaultLanguage en
#
# DefaultCharset: the default character set to use. If not specified,
# defaults to iso-8859-1. Note that this can also be overridden in
# HTML documents...
#
#DefaultCharset iso-8859-1
#
# RIPCache: the amount of memory that each RIP should use to cache
# bitmaps. The value can be any real number followed by "k" for
# kilobytes, "m" for megabytes, "g" for gigabytes, or "t" for tiles
# (1 tile = 256x256 pixels.) Defaults to "32m" (32 megabytes).
#
#RIPCache: 32m
#
# Access permissions for each directory served by the scheduler.
# Locations are relative to DocumentRoot...
#
# AuthType: the authorization to use; currently only "Basic" authorization is
# supported.
#
# AuthClass: the authorization class; currently only "Anonymous", "User",
# "System" (valid user belonging to group SystemGroup), and "Group"
# (valid user belonging to the specified group) are supported.
#
# AuthGroupName: the group name for "Group" authorization.
#
# Order: the order of Allow/Deny processing.
#
# Allow: allows access from the specified hostname, domain, IP address, or
# network.
#
# Deny: denies access from the specified hostname, domain, IP address, or
# network.
#
<Location />
</Location>
<Location /printers>
#
# You may wish to limit access to printers and classes, either with Allow
# and Deny lines, or by requiring a username and password.
#
## Require a username and password
#AuthType Basic
#AuthClass User
## Restrict access to local domain
#Order Deny,Allow
#Deny From All
#Allow From .mydomain.com
</Location>
<Location /admin>
#
# 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.
#
AuthType Basic
AuthClass System
## Restrict access to local domain
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
</Location>
#
# End of "$Id: cupsd.conf-professional 407 1999-06-17 20:02:43Z mike $".
#
+1 -1
Ver Arquivo
@@ -16,7 +16,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44145 Airport View Drive, Suite 204
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+52 -8
Ver Arquivo
@@ -14,7 +14,7 @@ dnl at:
dnl
dnl Attn: CUPS Licensing Information
dnl Easy Software Products
dnl 44145 Airport View Drive, Suite 204
dnl 44141 Airport View Drive, Suite 204
dnl Hollywood, Maryland 20636-3111 USA
dnl
dnl Voice: (301) 373-9603
@@ -29,14 +29,27 @@ AC_PREFIX_DEFAULT(/usr)
dnl Clear default debugging options and set normal optimization by
dnl default unless the user asks for debugging specifically.
dnl CFLAGS="${CFLAGS:=}"
dnl CXXFLAGS="${CXXFLAGS:=}"
dnl OPTIM="-O"
dnl AC_SUBST(OPTIM)
dnl AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],
dnl if eval "test x$enable_debug = xyes"; then
dnl OPTIM="-g"
dnl fi)
dnl Clear default debugging options and set debugging by
dnl default unless the user asks for no debugging specifically.
CFLAGS="${CFLAGS:=}"
CXXFLAGS="${CXXFLAGS:=}"
OPTIM="-O"
OPTIM="-g"
AC_SUBST(OPTIM)
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],
if eval "test x$enable_debug = xyes"; then
OPTIM="-g"
AC_ARG_ENABLE(debug, [ --disable-debug turn off debugging [default=no]],
if eval "test x$disable_debug = xyes"; then
OPTIM="-O"
fi)
dnl Checks for programs...
@@ -45,11 +58,42 @@ AC_PROG_CC
AC_PROG_CPP
AC_PROG_RANLIB
AC_PATH_PROG(AR,ar)
AC_PATH_PROG(CHMOD,chmod)
AC_PATH_PROG(CP,cp)
AC_PATH_PROG(MKDIR,mkdir)
AC_PATH_PROG(RM,rm)
AC_PATH_PROG(GROFF,groff)
AC_PATH_PROG(NROFF,nroff)
if test "$NROFF" = ""; then
AC_PATH_PROG(NROFF,groff)
if test "$NROFF" = ""; then
NROFF="echo"
else
NROFF="$NROFF -T ascii"
fi
fi
AC_PATH_PROG(HTMLDOC,htmldoc)
AC_PATH_PROG(MKDIR,mkdir)
AC_PATH_PROG(PACK,pack)
if test "$PACK" = ""; then
AC_PATH_PROG(PACK,gzip)
if test "$PACK" = ""; then
PACK="echo"
CAT="dummy"
else
PACK="$PACK -fv9"
CAT="gz"
fi
else
PACK="$PACK -f"
CAT="z"
fi
AC_SUBST(CAT)
AC_PATH_PROG(RM,rm)
AC_PATH_PROG(SED,sed)
AC_PATH_PROG(SMBCLIENT,smbclient)
if test "$SMBCLIENT" = ""; then
echo "Looking for smbclient in standard locations..."
AC_PATH_PROG(SMBCLIENT,smbclient,samba_not_detected,
/usr/samba/bin:/usr/local/samba/bin:/usr/freeware/samba/bin:/opt/samba/bin)
fi
dnl Architecture checks...
AC_C_BIGENDIAN
+309
Ver Arquivo
@@ -0,0 +1,309 @@
#
# "$Id: cups.list 432 1999-06-21 20:14:24Z mike $"
#
# ESP Package Manager (EPM) file list for the Common UNIX Printing
# System (CUPS).
#
# EPM can be found in the "epm" subdirectory of this distribution.
# Please report problems and fixes to Michael Sweet (mike@easysw.com).
#
# Copyright 1997-1999 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
# property of Easy Software Products and are protected by Federal
# copyright law. Distribution and use rights are outlined in the file
# "LICENSE.txt" which should have been included with this file. If this
# file is missing or damaged please contact Easy Software Products
# at:
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44141 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
# EMail: cups-info@cups.org
# WWW: http://www.cups.org
#
%product Common UNIX Printing System
%copyright 1993-1999 by Easy Software Products, All Rights Reserved.
%vendor Easy Software Products
%license LICENSE.cups
%readme README.cups
%version 1.0b4
%system all
# Server files
f 0555 root sys /var/cups/backend/ipp backend/ipp
f 4555 root sys /var/cups/backend/lpd backend/lpd
f 0555 root sys /var/cups/backend/parallel backend/parallel
f 0555 root sys /var/cups/backend/serial backend/serial
f 0555 root sys /var/cups/backend/smb backend/smb
f 0555 root sys /var/cups/backend/socket backend/socket
f 0500 root sys /usr/sbin/cupsd scheduler/cupsd
f 0555 root sys /var/cups/cgi-bin/classes.cgi cgi-bin/classes.cgi
f 0555 root sys /var/cups/cgi-bin/jobs.cgi cgi-bin/jobs.cgi
f 0555 root sys /var/cups/cgi-bin/printers.cgi cgi-bin/printers.cgi
f 0555 root sys /var/cups/filter/pstoraster pstoraster/pstoraster
f 0555 root sys /var/cups/filter/imagetops filter/imagetops
f 0555 root sys /var/cups/filter/pstops filter/pstops
f 0555 root sys /var/cups/filter/texttops filter/texttops
f 0555 root sys /var/cups/filter/rastertohp filter/rastertohp
f 0555 root sys /var/cups/filter/hpgltops filter/hpgltops
f 0555 root sys /var/cups/filter/imagetoraster filter/imagetoraster
# User commands
f 0555 root sys /usr/bin/lp systemv/lp
f 0555 root sys /usr/bin/lpstat systemv/lpstat
f 0555 root sys /usr/lib/lpadmin systemv/lpadmin
f 0555 root sys /usr/lib/cancel systemv/cancel
f 0555 root sys /usr/lib/accept systemv/accept
l 0555 root sys /usr/lib/reject accept
l 0555 root sys /usr/bin/disable /usr/lib/accept
l 0555 root sys /usr/bin/enable /usr/lib/accept
f 0555 root sys /usr/sbin/lpc berkeley/lpc
f 0555 root sys /usr/bin/lpq berkeley/lpq
f 0555 root sys /usr/bin/lpr berkeley/lpr
f 0555 root sys /usr/bin/lprm berkeley/lprm
# Directories
d 0755 root sys /var/cups/interfaces
d 0755 root sys /var/cups/logs
d 0755 root sys /var/cups/ppd
d 0755 root sys /var/cups/requests
# Data files
f 0444 root sys /usr/lib/locale/C/cups_C locale/C/cups_C
f 0444 root sys /usr/lib/locale/de/cups_de locale/de/cups_de
f 0444 root sys /usr/lib/locale/en/cups_en locale/en/cups_en
f 0444 root sys /usr/lib/locale/es/cups_es locale/es/cups_es
f 0444 root sys /usr/lib/locale/fr/cups_fr locale/fr/cups_fr
f 0444 root sys /usr/lib/locale/it/cups_it locale/it/cups_it
f 0444 root sys /usr/share/cups/data/8859-1 data/8859-1
f 0444 root sys /usr/share/cups/data/8859-14 data/8859-14
f 0444 root sys /usr/share/cups/data/8859-15 data/8859-15
f 0444 root sys /usr/share/cups/data/8859-2 data/8859-2
f 0444 root sys /usr/share/cups/data/8859-3 data/8859-3
f 0444 root sys /usr/share/cups/data/8859-4 data/8859-4
f 0444 root sys /usr/share/cups/data/8859-5 data/8859-5
f 0444 root sys /usr/share/cups/data/8859-6 data/8859-6
f 0444 root sys /usr/share/cups/data/8859-7 data/8859-7
f 0444 root sys /usr/share/cups/data/8859-8 data/8859-8
f 0444 root sys /usr/share/cups/data/8859-9 data/8859-9
f 0444 root sys /usr/share/cups/data/HPGLprolog data/HPGLprolog
f 0444 root sys /usr/share/cups/data/psglyphs data/psglyphs
f 0444 root sys /usr/share/cups/fonts/AvantGarde-Book fonts/AvantGarde-Book
f 0444 root sys /usr/share/cups/fonts/AvantGarde-BookOblique fonts/AvantGarde-BookOblique
f 0444 root sys /usr/share/cups/fonts/AvantGarde-Demi fonts/AvantGarde-Demi
f 0444 root sys /usr/share/cups/fonts/AvantGarde-DemiOblique fonts/AvantGarde-DemiOblique
f 0444 root sys /usr/share/cups/fonts/Bookman-Demi fonts/Bookman-Demi
f 0444 root sys /usr/share/cups/fonts/Bookman-DemiItalic fonts/Bookman-DemiItalic
f 0444 root sys /usr/share/cups/fonts/Bookman-Light fonts/Bookman-Light
f 0444 root sys /usr/share/cups/fonts/Bookman-LightItalic fonts/Bookman-LightItalic
f 0444 root sys /usr/share/cups/fonts/Courier fonts/Courier
f 0444 root sys /usr/share/cups/fonts/Courier-Bold fonts/Courier-Bold
f 0444 root sys /usr/share/cups/fonts/Courier-BoldOblique fonts/Courier-BoldOblique
f 0444 root sys /usr/share/cups/fonts/Courier-Oblique fonts/Courier-Oblique
f 0444 root sys /usr/share/cups/fonts/Helvetica fonts/Helvetica
f 0444 root sys /usr/share/cups/fonts/Helvetica-Bold fonts/Helvetica-Bold
f 0444 root sys /usr/share/cups/fonts/Helvetica-BoldOblique fonts/Helvetica-BoldOblique
f 0444 root sys /usr/share/cups/fonts/Helvetica-Narrow fonts/Helvetica-Narrow
f 0444 root sys /usr/share/cups/fonts/Helvetica-Narrow-Bold fonts/Helvetica-Narrow-Bold
f 0444 root sys /usr/share/cups/fonts/Helvetica-Narrow-BoldOblique fonts/Helvetica-Narrow-BoldOblique
f 0444 root sys /usr/share/cups/fonts/Helvetica-Narrow-Oblique fonts/Helvetica-Narrow-Oblique
f 0444 root sys /usr/share/cups/fonts/Helvetica-Oblique fonts/Helvetica-Oblique
f 0444 root sys /usr/share/cups/fonts/NewCenturySchlbk-Bold fonts/NewCenturySchlbk-Bold
f 0444 root sys /usr/share/cups/fonts/NewCenturySchlbk-BoldItalic fonts/NewCenturySchlbk-BoldItalic
f 0444 root sys /usr/share/cups/fonts/NewCenturySchlbk-Italic fonts/NewCenturySchlbk-Italic
f 0444 root sys /usr/share/cups/fonts/NewCenturySchlbk-Roman fonts/NewCenturySchlbk-Roman
f 0444 root sys /usr/share/cups/fonts/Palatino-Bold fonts/Palatino-Bold
f 0444 root sys /usr/share/cups/fonts/Palatino-BoldItalic fonts/Palatino-BoldItalic
f 0444 root sys /usr/share/cups/fonts/Palatino-Italic fonts/Palatino-Italic
f 0444 root sys /usr/share/cups/fonts/Palatino-Roman fonts/Palatino-Roman
f 0444 root sys /usr/share/cups/fonts/Symbol fonts/Symbol
f 0444 root sys /usr/share/cups/fonts/Times-Bold fonts/Times-Bold
f 0444 root sys /usr/share/cups/fonts/Times-BoldItalic fonts/Times-BoldItalic
f 0444 root sys /usr/share/cups/fonts/Times-Italic fonts/Times-Italic
f 0444 root sys /usr/share/cups/fonts/Times-Roman fonts/Times-Roman
f 0444 root sys /usr/share/cups/fonts/Utopia-Bold fonts/Utopia-Bold
f 0444 root sys /usr/share/cups/fonts/Utopia-BoldItalic fonts/Utopia-BoldItalic
f 0444 root sys /usr/share/cups/fonts/Utopia-Italic fonts/Utopia-Italic
f 0444 root sys /usr/share/cups/fonts/Utopia-Regular fonts/Utopia-Regular
f 0444 root sys /usr/share/cups/fonts/ZapfChancery-MediumItalic fonts/ZapfChancery-MediumItalic
f 0444 root sys /usr/share/cups/fonts/ZapfDingbats fonts/ZapfDingbats
f 0444 root sys /usr/share/cups/pstoraster/Fontmap pstoraster/Fontmap
f 0444 root sys /usr/share/cups/pstoraster/gs_l2img.ps pstoraster/gs_l2img.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_pfile.ps pstoraster/gs_pfile.ps
f 0444 root sys /usr/share/cups/pstoraster/pfbtogs.ps pstoraster/pfbtogs.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_wl1_e.ps pstoraster/gs_wl1_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_wl2_e.ps pstoraster/gs_wl2_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_wl5_e.ps pstoraster/gs_wl5_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_wan_e.ps pstoraster/gs_wan_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_pdf_e.ps pstoraster/gs_pdf_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_sym_e.ps pstoraster/gs_sym_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_std_e.ps pstoraster/gs_std_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_dbt_e.ps pstoraster/gs_dbt_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_mex_e.ps pstoraster/gs_mex_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_mro_e.ps pstoraster/gs_mro_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_iso_e.ps pstoraster/gs_iso_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_ksb_e.ps pstoraster/gs_ksb_e.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_ttf.ps pstoraster/gs_ttf.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_pdf.ps pstoraster/gs_pdf.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_ccfnt.ps pstoraster/gs_ccfnt.ps
f 0444 root sys /usr/share/cups/pstoraster/pdf_sec.ps pstoraster/pdf_sec.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_res.ps pstoraster/gs_res.ps
f 0444 root sys /usr/share/cups/pstoraster/pdf_base.ps pstoraster/pdf_base.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_btokn.ps pstoraster/gs_btokn.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_diskf.ps pstoraster/gs_diskf.ps
f 0444 root sys /usr/share/cups/pstoraster/pdf_2ps.ps pstoraster/pdf_2ps.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_init.ps pstoraster/gs_init.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_kanji.ps pstoraster/gs_kanji.ps
f 0444 root sys /usr/share/cups/pstoraster/pdf_draw.ps pstoraster/pdf_draw.ps
f 0444 root sys /usr/share/cups/pstoraster/pdf_font.ps pstoraster/pdf_font.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_type1.ps pstoraster/gs_type1.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_fonts.ps pstoraster/gs_fonts.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_statd.ps pstoraster/gs_statd.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_lev2.ps pstoraster/gs_lev2.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_typ42.ps pstoraster/gs_typ42.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_pdfwr.ps pstoraster/gs_pdfwr.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_cidfn.ps pstoraster/gs_cidfn.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_cmdl.ps pstoraster/gs_cmdl.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_dps1.ps pstoraster/gs_dps1.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_setpd.ps pstoraster/gs_setpd.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_cmap.ps pstoraster/gs_cmap.ps
f 0444 root sys /usr/share/cups/pstoraster/gs_fform.ps pstoraster/gs_fform.ps
f 0444 root sys /usr/share/cups/pstoraster/pdf_main.ps pstoraster/pdf_main.ps
f 0444 root sys /usr/share/cups/model/deskjet.ppd ppd/deskjet.ppd
f 0444 root sys /usr/share/cups/model/laserjet.ppd ppd/laserjet.ppd
# Config files
c 0600 root sys /var/cups/conf/classes.conf conf/classes.conf
c 0600 root sys /var/cups/conf/cupsd.conf conf/cupsd.conf
c 0600 root sys /var/cups/conf/mime.convs conf/mime.convs
c 0600 root sys /var/cups/conf/mime.types conf/mime.types
c 0600 root sys /var/cups/conf/printers.conf conf/printers.conf
# Documentation files
f 0444 root sys /usr/share/cups/doc/cmp.html doc/cmp.html
f 0444 root sys /usr/share/cups/doc/cmp.pdf doc/cmp.pdf
f 0444 root sys /usr/share/cups/doc/cupsdoc.css doc/cupsdoc.css
f 0444 root sys /usr/share/cups/doc/cups.css doc/cups.css
f 0444 root sys /usr/share/cups/doc/documentation.html doc/documentation.html
f 0444 root sys /usr/share/cups/doc/idd.html doc/idd.html
f 0444 root sys /usr/share/cups/doc/idd.pdf doc/idd.pdf
f 0444 root sys /usr/share/cups/doc/images/classes.gif doc/images/classes.gif
f 0444 root sys /usr/share/cups/doc/images/cups-bar.gif doc/images/cups-bar.gif
f 0444 root sys /usr/share/cups/doc/images/cups-block-diagram.gif doc/images/cups-block-diagram.gif
f 0444 root sys /usr/share/cups/doc/images/cups-large.gif doc/images/cups-large.gif
f 0444 root sys /usr/share/cups/doc/images/cups-medium.gif doc/images/cups-medium.gif
f 0444 root sys /usr/share/cups/doc/images/cups-small.gif doc/images/cups-small.gif
f 0444 root sys /usr/share/cups/doc/images/logo.gif doc/images/logo.gif
f 0444 root sys /usr/share/cups/doc/images/navbar.gif doc/images/navbar.gif
f 0444 root sys /usr/share/cups/doc/images/printer-idle.gif doc/images/printer-idle.gif
f 0444 root sys /usr/share/cups/doc/images/printer-processing.gif doc/images/printer-processing.gif
f 0444 root sys /usr/share/cups/doc/images/printer-stopped.gif doc/images/printer-stopped.gif
f 0444 root sys /usr/share/cups/doc/index.html doc/index.html
f 0444 root sys /usr/share/cups/doc/overview.html doc/overview.html
f 0444 root sys /usr/share/cups/doc/overview.pdf doc/overview.pdf
f 0444 root sys /usr/share/cups/doc/sam.html doc/sam.html
f 0444 root sys /usr/share/cups/doc/sam.pdf doc/sam.pdf
f 0444 root sys /usr/share/cups/doc/sdd.html doc/sdd.html
f 0444 root sys /usr/share/cups/doc/sdd.pdf doc/sdd.pdf
f 0444 root sys /usr/share/cups/doc/ssr.html doc/ssr.html
f 0444 root sys /usr/share/cups/doc/ssr.pdf doc/ssr.pdf
f 0444 root sys /usr/share/cups/doc/stp.html doc/stp.html
f 0444 root sys /usr/share/cups/doc/stp.pdf doc/stp.pdf
f 0444 root sys /usr/share/cups/doc/sum.html doc/sum.html
f 0444 root sys /usr/share/cups/doc/sum.pdf doc/sum.pdf
f 0444 root sys /usr/share/cups/doc/svd.html doc/svd.html
f 0444 root sys /usr/share/cups/doc/svd.pdf doc/svd.pdf
# Man pages
%system irix irix64
f 0444 root sys /usr/share/catman/a_man/cat1/accept.z man/accept.z
l 0444 root sys /usr/share/catman/a_man/cat1/reject.z accept.z
f 0444 root sys /usr/share/catman/u_man/cat1/backend.z man/backend.z
f 0444 root sys /usr/share/catman/u_man/cat5/classes.conf.z man/classes.conf.z
f 0444 root sys /usr/share/catman/u_man/cat5/cupsd.conf.z man/cupsd.conf.z
f 0444 root sys /usr/share/catman/a_man/cat1/cupsd.z man/cupsd.z
f 0444 root sys /usr/share/catman/a_man/cat1/enable.z man/enable.z
l 0444 root sys /usr/share/catman/a_man/cat1/disable.z enable.z
f 0444 root sys /usr/share/catman/u_man/cat1/filter.z man/filter.z
f 0444 root sys /usr/share/catman/a_man/cat1/lpadmin.z man/lpadmin.z
f 0444 root sys /usr/share/catman/a_man/cat1/lpc.z man/lpc.z
f 0444 root sys /usr/share/catman/u_man/cat1/lprm.z man/lprm.z
f 0444 root sys /usr/share/catman/u_man/cat1/lpr.z man/lpr.z
f 0444 root sys /usr/share/catman/u_man/cat1/lpstat.z man/lpstat.z
f 0444 root sys /usr/share/catman/u_man/cat1/lp.z man/lp.z
l 0444 root sys /usr/share/catman/u_man/cat1/cancel.z lp.z
f 0444 root sys /usr/share/catman/u_man/cat5/mime.convs.z man/mime.convs.z
f 0444 root sys /usr/share/catman/u_man/cat5/mime.types.z man/mime.types.z
f 0444 root sys /usr/share/catman/u_man/cat5/printers.conf.z man/printers.conf.z
%system hpux linux dunix solaris sunos
f 0444 root sys /usr/man/man8/accept.8 man/accept.8
l 0444 root sys /usr/man/man8/reject.8 accept.8
f 0444 root sys /usr/man/man1/backend.1 man/backend.1
f 0444 root sys /usr/man/man1/classes.conf.5 man/classes.conf.5
f 0444 root sys /usr/man/man8/cupsd.8 man/cupsd.8
f 0444 root sys /usr/man/man5/cupsd.conf.5 man/cupsd.conf.5
f 0444 root sys /usr/man/man8/enable.8 man/enable.8
l 0444 root sys /usr/man/man8/disable.8 enable.8
f 0444 root sys /usr/man/man1/filter.1 man/filter.1
f 0444 root sys /usr/man/man8/lpadmin.8 man/lpadmin.8
f 0444 root sys /usr/man/man8/lpc.8 man/lpc.8
f 0444 root sys /usr/man/man1/lprm.1 man/lprm.1
f 0444 root sys /usr/man/man1/lpr.1 man/lpr.1
f 0444 root sys /usr/man/man1/lpstat.1 man/lpstat.1
f 0444 root sys /usr/man/man1/lp.1 man/lp.1
l 0444 root sys /usr/man/man1/cancel.1 lp.1
f 0444 root sys /usr/man/man5/mime.convs.5 man/mime.convs.5
f 0444 root sys /usr/man/man5/mime.types.5 man/mime.types.5
f 0444 root sys /usr/man/man5/printers.conf.5 man/printers.conf.5
# Startup scripts
%system hpux
%install /sbin/init.d/lp start
%remove /sbin/init.d/lp stop
%patch /sbin/init.d/lp stop
f 0555 root sys /sbin/init.d/lp cups.sh
l 0555 root sys /sbin/rc1.d/K280lp ../init.d/lp
l 0555 root sys /sbin/rc2.d/S720lp ../init.d/lp
%system irix irix64
%install /etc/init.d/lp start
%remove /etc/init.d/lp stop
%patch /etc/init.d/lp stop
f 0555 root sys /etc/init.d/lp cups.sh
l 0555 root sys /etc/rc0.d/K25lp ../init.d/lp
l 0555 root sys /etc/rc2.d/S60lp ../init.d/lp
%system linux
%install /etc/rc.d/init.d/lpd start
%remove /etc/rc.d/init.d/lpd stop
%patch /etc/rc.d/init.d/lpd stop
f 0555 root sys /etc/rc.d/init.d/lpd cups.sh
l 0555 root sys /etc/rc.d/rc2.d/S60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc3.d/S60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc4.d/S60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc5.d/S60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc0.d/K60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc1.d/K60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc6.d/K60lpd ../init.d/lpd
%system dunix
%install /sbin/init.d/lpd start
%remove /sbin/init.d/lpd stop
%patch /sbin/init.d/lpd stop
f 0555 root sys /sbin/init.d/lpd cups.sh
l 0555 root sys /sbin/rc0.d/K05lpd ../init.d/lpd
l 0555 root sys /sbin/rc2.d/K00lpd ../init.d/lpd
l 0555 root sys /sbin/rc3.d/S65lpd ../init.d/lpd
%system solaris sunos
%install /etc/init.d/lp start
%remove /etc/init.d/lp stop
%patch /etc/init.d/lp stop
f 0555 root sys /etc/init.d/lp cups.sh
l 0555 root sys /etc/rc0.d/K20lp ../init.d/lp
l 0555 root sys /etc/rc2.d/S80lp ../init.d/lp
#
# End of "$Id: cups.list 432 1999-06-21 20:14:24Z mike $".
#
Arquivo executável
+64
Ver Arquivo
@@ -0,0 +1,64 @@
#!/bin/sh
#
# "$Id$"
#
# 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
# 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
#
# See if the CUPS daemon is running, and if so stop it...
case "`uname`" in
IRIX* | HP-UX | SunOS)
pid=`ps -e | awk '{print $1,$4}' | grep cupsd | awk '{print $1}'`
;;
OSF1)
pid=`ps -e | awk '{print $1,$5}' | grep cupsd | awk '{print $1}'`
;;
Linux)
pid=`ps ax | awk '{print $1,$5}' | grep cupsd | awk '{print $1}'`
;;
*)
pid=""
;;
esac
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
;;
stop)
if test "$pid" != ""; then
echo "Stopping CUPS scheduler..."
kill $pid
sleep 1
fi
;;
esac
#
# End of "$Id$".
#
+10 -3
Ver Arquivo
@@ -14,7 +14,7 @@
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44145 Airport View Drive, Suite 204
# 44141 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
@@ -29,7 +29,8 @@ include ../Makedefs
#
OBJS = emit.o filter.o http.o ipp.o language.o mark.o mime.o \
options.o page.o ppd.o raster.o string.o type.o util.o
options.o page.o ppd.o raster.o string.o type.o usersys.o \
util.o
#
# Header files to install...
@@ -71,6 +72,7 @@ install: all
#
libcups.a: $(OBJS)
echo Archiving $@...
$(RM) $@
$(AR) $(ARFLAGS) $@ $(OBJS)
$(RANLIB) $@
@@ -80,6 +82,7 @@ libcups.a: $(OBJS)
#
cups_C.h: ../locale/C/cups_C
echo Generating $@...
$(RM) cups_C.h
$(AWK) '{print "\"" $$0 "\","}' < ../locale/C/cups_C > cups_C.h
@@ -92,10 +95,11 @@ mark.o: ppd.h ../config.h ../Makedefs
mime.o: mime.h ../config.h ../Makedefs
options.o: cups.h ../config.h ../Makedefs
page.o: ppd.h ../config.h ../Makedefs
ppd.o: ppd.h ../config.h ../Makedefs
ppd.o: language.h ppd.h ../config.h ../Makedefs
raster.o: raster.h ../config.h ../Makedefs
string.o: string.h ../config.h ../Makedefs
type.o: mime.h ../config.h ../Makedefs
usersys.o: cups.h ../config.h ../Makedefs
util.o: cups.h http.h ipp.h ../config.h ../Makedefs
#
@@ -103,6 +107,7 @@ util.o: cups.h http.h ipp.h ../config.h ../Makedefs
#
testhttp: testhttp.o libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ testhttp.o $(LIBS)
testhttp.o: http.h ../Makedefs
@@ -112,6 +117,7 @@ testhttp.o: http.h ../Makedefs
#
testmime: testmime.o libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ testmime.o $(LIBS)
testmime.o: mime.h ../Makedefs
@@ -121,6 +127,7 @@ testmime.o: mime.h ../Makedefs
#
testppd: testppd.o libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ testppd.o $(LIBS)
testppd.o: ppd.h ../Makedefs
+7 -1
Ver Arquivo
@@ -74,7 +74,9 @@ enum /* Not a typedef'd enum so we can OR */
CUPS_PRINTER_SMALL = 0x1000, /* Can do Letter/Legal/A4 */
CUPS_PRINTER_MEDIUM = 0x2000, /* Can do Tabloid/B/C/A3/A2 */
CUPS_PRINTER_LARGE = 0x4000, /* Can do D/E/A1/A0 */
CUPS_PRINTER_VARIABLE = 0x8000 /* Can do variable sizes */
CUPS_PRINTER_VARIABLE = 0x8000, /* Can do variable sizes */
CUPS_PRINTER_IMPLICIT = 0x10000, /* Implicit class */
CUPS_PRINTER_OPTIONS = 0xfffc /* ~(CLASS | REMOTE | IMPLICIT) */
};
@@ -125,6 +127,10 @@ extern int cupsParseOptions(char *arg, int num_options,
extern int cupsMarkOptions(ppd_file_t *ppd, int num_options,
cups_option_t *options);
extern char *cupsGetPassword(const char *prompt);
extern char *cupsServer();
extern char *cupsUser();
# ifdef __cplusplus
}
# endif /* __cplusplus */
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44145 Airport View Drive, Suite 204
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44145 Airport View Drive, Suite 204
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+8 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44145 Airport View Drive, Suite 204
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
@@ -1051,8 +1051,15 @@ httpUpdate(http_t *http) /* I - HTTP data */
/*
* Blank line means the start of the data section (if any). Return
* the result code, too...
*
* If we get status 100 (HTTP_CONTINUE), then we *don't* change states.
* Instead, we just return HTTP_CONTINUE to the caller and keep on
* tryin'...
*/
if (http->status == HTTP_CONTINUE)
return (http->status);
httpGetLength(http);
switch (http->state)
+3 -2
Ver Arquivo
@@ -15,7 +15,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44145 Airport View Drive, Suite 204
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
@@ -131,7 +131,8 @@ typedef enum
typedef enum
{
HTTP_ERROR = -1, /* An error response from httpXxxx() */
HTTP_CONTINUE, /* Everything OK, keep going... */
HTTP_CONTINUE = 100, /* Everything OK, keep going... */
HTTP_OK = 200, /* OPTIONS/GET/HEAD/POST/TRACE command was successful */
HTTP_CREATED, /* PUT command was successful */
+2
Ver Arquivo
@@ -512,6 +512,8 @@ ippDateToTime(ipp_uchar_t *date)/* I - RFC 1903 date info */
else
t -= date[9] * 3600 + date[10] * 60;
t -= timezone;
return (t);
}
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44145 Airport View Drive, Suite 204
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+26 -21
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44145 Airport View Drive, Suite 204
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
@@ -48,13 +48,11 @@ typedef enum /**** Message Indices ****/
CUPS_MSG_CLOSE,
CUPS_MSG_YES,
CUPS_MSG_NO,
CUPS_MSG_AUTO,
CUPS_MSG_ON,
CUPS_MSG_OFF,
CUPS_MSG_SAVE,
CUPS_MSG_DISCARD,
CUPS_MSG_DEFAULT,
CUPS_MSG_USER_DEFINED,
CUPS_MSG_OPTIONS,
CUPS_MSG_MORE_INFO,
CUPS_MSG_BLACK,
@@ -63,18 +61,14 @@ typedef enum /**** Message Indices ****/
CUPS_MSG_MAGENTA,
CUPS_MSG_YELLOW,
CUPS_MSG_COPYRIGHT,
CUPS_MSG_ALL_RIGHTS_RESERVED,
CUPS_MSG_GENERAL,
CUPS_MSG_PRINTER,
CUPS_MSG_POSTSCRIPT,
CUPS_MSG_IMAGE,
CUPS_MSG_TEXT,
CUPS_MSG_HPGL,
CUPS_MSG_ADVANCED,
CUPS_MSG_PRINT_BANNER_PAGE,
CUPS_MSG_VERBOSE_LOGGING,
CUPS_MSG_PRINT_PAGES,
CUPS_MSG_HPGL2,
CUPS_MSG_EXTRA,
CUPS_MSG_DOCUMENT,
CUPS_MSG_OTHER,
CUPS_MSG_PRINT_PAGES,
CUPS_MSG_ENTIRE_DOCUMENT,
CUPS_MSG_PAGE_RANGE,
CUPS_MSG_REVERSE_ORDER,
@@ -87,22 +81,16 @@ typedef enum /**** Message Indices ****/
CUPS_MSG_ZOOM_BY_PERCENT,
CUPS_MSG_ZOOM_BY_PPI,
CUPS_MSG_MIRROR_IMAGE,
CUPS_MSG_ROTATE_IMAGE,
CUPS_MSG_BEST_FIT,
CUPS_MSG_COLOR_SATURATION,
CUPS_MSG_COLOR_HUE,
CUPS_MSG_NUMBER_OF_COLUMNS,
CUPS_MSG_MARGINS,
CUPS_MSG_WRAP_TEXT,
CUPS_MSG_FIT_TO_PAGE,
CUPS_MSG_SHADING,
CUPS_MSG_DEFAULT_PEN_WIDTH,
CUPS_MSG_GAMMA_CORRECTION,
CUPS_MSG_BRIGHTNESS,
CUPS_MSG_COLOR_PROFILE,
CUPS_MSG_ADD_PRINTER,
CUPS_MSG_DELETE_PRINTER,
CUPS_MSG_MODIFY_PRINTER,
CUPS_MSG_ADD,
CUPS_MSG_DELETE,
CUPS_MSG_MODIFY,
CUPS_MSG_PRINTER_URI,
CUPS_MSG_PRINTER_NAME,
CUPS_MSG_PRINTER_LOCATION,
@@ -134,6 +122,23 @@ typedef enum /**** Message Indices ****/
CUPS_MSG_IDLE,
CUPS_MSG_PROCESSING,
CUPS_MSG_STOPPED,
CUPS_MSG_ALL,
CUPS_MSG_ODD,
CUPS_MSG_EVEN_PAGES,
CUPS_MSG_DARKER_LIGHTER,
CUPS_MSG_MEDIA_SIZE,
CUPS_MSG_MEDIA_TYPE,
CUPS_MSG_MEDIA_SOURCE,
CUPS_MSG_ORIENTATION,
CUPS_MSG_PORTRAIT,
CUPS_MSG_LANDSCAPE,
CUPS_MSG_JOB_STATE,
CUPS_MSG_JOB_NAME,
CUPS_MSG_USER_NAME,
CUPS_MSG_PRIORITY,
CUPS_MSG_COPIES,
CUPS_MSG_FILE_SIZE,
CUPS_MSG_PENDING,
CUPS_MSG_HTTP_BASE = 200,
CUPS_MSG_HTTP_END = 505,
CUPS_MSG_MAX
@@ -170,7 +175,7 @@ typedef struct cups_lang_str /**** Language Cache Structure ****/
* Prototypes...
*/
# define cupsLangDefault() cupsLangGet(setlocale(LC_ALL, 0))
# define cupsLangDefault() cupsLangGet(setlocale(LC_ALL, ""))
extern char *cupsLangEncoding(cups_lang_t *lang);
extern void cupsLangFlush(void);
extern void cupsLangFree(cups_lang_t *lang);
+16 -6
Ver Arquivo
@@ -59,9 +59,10 @@ static void ppd_default(ppd_option_t *o);
int /* O - Number of conflicts found */
ppdConflicts(ppd_file_t *ppd) /* I - PPD to check */
{
int i, j, /* Looping variables */
int i, j, k, /* Looping variables */
conflicts; /* Number of conflicts */
ppd_const_t *c; /* Current constraint */
ppd_group_t *g, *sg; /* Groups */
ppd_option_t *o1, *o2; /* Options */
ppd_choice_t *c1, *c2; /* Choices */
@@ -69,8 +70,22 @@ ppdConflicts(ppd_file_t *ppd) /* I - PPD to check */
if (ppd == NULL)
return (0);
/*
* Clear all conflicts...
*/
conflicts = 0;
for (i = ppd->num_groups, g = ppd->groups; i > 0; i --, g ++)
{
for (j = g->num_options, o1 = g->options; j > 0; j --, o1 ++)
o1->conflicted = 0;
for (j = g->num_subgroups, sg = g->subgroups; j > 0; j --, sg ++)
for (k = sg->num_options, o1 = sg->options; k > 0; k --, o1 ++)
o1->conflicted = 0;
}
/*
* Loop through all of the UI constraints and flag any options
* that conflict...
@@ -149,11 +164,6 @@ ppdConflicts(ppd_file_t *ppd) /* I - PPD to check */
o1->conflicted = 1;
o2->conflicted = 1;
}
else
{
o1->conflicted = 0;
o2->conflicted = 0;
}
}
/*
+4 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44145 Airport View Drive, Suite 204
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
@@ -33,6 +33,9 @@
* Revision History:
*
* $Log: mime.c,v $
* Revision 1.13 1999/06/18 18:36:10 mike
* Fixed address to 44141 Airport View Drive...
*
* Revision 1.12 1999/04/21 21:19:33 mike
* Changes for HP-UX.
*
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44145 Airport View Drive, Suite 204
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+7
Ver Arquivo
@@ -311,6 +311,13 @@ cupsMarkOptions(ppd_file_t *ppd, /* I - PPD file */
conflict = 1;
}
}
else if (strcmp(options->name, "resolution") == 0)
{
if (ppdMarkOption(ppd, "Resolution", options->value))
conflict = 1;
if (ppdMarkOption(ppd, "JCLResolution", options->value))
conflict = 1;
}
else if (ppdMarkOption(ppd, options->name, options->value))
conflict = 1;
+295 -43
Ver Arquivo
@@ -40,17 +40,22 @@
* ppdOpenFile() - Read a PPD file into memory.
* ppd_read() - Read a line from a PPD file, skipping comment lines
* as necessary.
* compare_strings() - Compare two strings.
* compare_groups() - Compare two groups.
* compare_options() - Compare two options.
* compare_choices() - Compare two choices.
*/
/*
* Include necessary headers.
*/
/*#define DEBUG*/
#include "ppd.h"
#include <stdlib.h>
#include <ctype.h>
#include "string.h"
#include "language.h"
#include "debug.h"
/*
@@ -75,9 +80,14 @@
* Local functions...
*/
static int compare_strings(char *s, char *t);
static int compare_groups(ppd_group_t *g0, ppd_group_t *g1);
static int compare_options(ppd_option_t *o0, ppd_option_t *o1);
static int compare_choices(ppd_choice_t *c0, ppd_choice_t *c1);
static int ppd_read(FILE *fp, char *keyword, char *option,
char *text, char **string);
static void ppd_decode(char *string);
static void ppd_fix(char *string);
static void ppd_free_group(ppd_group_t *group);
static void ppd_free_option(ppd_option_t *option);
static ppd_group_t *ppd_get_group(ppd_file_t *ppd, char *name);
@@ -409,8 +419,15 @@ ppdOpen(FILE *fp) /* I - File to read from */
ppd_section_t section; /* Order dependency section */
ppd_profile_t *profile; /* Pointer to color profile */
char **filter; /* Pointer to filter */
cups_lang_t *language; /* Default language */
/*
* Get the default language for the user...
*/
language = cupsLangDefault();
/*
* Range check input...
*/
@@ -624,7 +641,9 @@ ppdOpen(FILE *fp) /* I - File to read from */
* Add a "Custom" page size option...
*/
if ((group = ppd_get_group(ppd, "General")) == NULL)
if ((group = ppd_get_group(ppd,
cupsLangString(language,
CUPS_MSG_GENERAL))) == NULL)
{
ppdClose(ppd);
free(string);
@@ -645,7 +664,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
return (NULL);
}
strcpy(choice->text, "Custom Size");
strcpy(choice->text, cupsLangString(language, CUPS_MSG_VARIABLE));
group = NULL;
option = NULL;
}
@@ -672,7 +691,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
{
if ((option = ppdFindOption(ppd, "PageSize")) == NULL)
{
ppdClose(ppd);
ppdClose(ppd);
free(string);
return (NULL);
}
@@ -773,40 +792,36 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (subgroup != NULL)
option = ppd_get_option(subgroup, name);
else
else if (group == NULL)
{
if (strcmp(name, "Collate") != 0 &&
strcmp(name, "Duplex") != 0 &&
strcmp(name, "InputSlot") != 0 &&
strcmp(name, "ManualFeed") != 0 &&
strcmp(name, "MediaType") != 0 &&
strcmp(name, "MediaColor") != 0 &&
strcmp(name, "MediaWeight") != 0 &&
strcmp(name, "OutputBin") != 0 &&
strcmp(name, "OutputMode") != 0 &&
strcmp(name, "OutputOrder") != 0 &&
strcmp(name, "PageSize") != 0 &&
strcmp(name, "PageRegion") != 0)
group = ppd_get_group(ppd, cupsLangString(language, CUPS_MSG_EXTRA));
else
group = ppd_get_group(ppd, cupsLangString(language, CUPS_MSG_GENERAL));
if (group == NULL)
{
if (strcmp(name, "Collate") != 0 &&
strcmp(name, "Duplex") != 0 &&
strcmp(name, "InputSlot") != 0 &&
strcmp(name, "ManualFeed") != 0 &&
strcmp(name, "MediaType") != 0 &&
strcmp(name, "MediaColor") != 0 &&
strcmp(name, "MediaWeight") != 0 &&
strcmp(name, "OutputBin") != 0 &&
strcmp(name, "OutputMode") != 0 &&
strcmp(name, "OutputOrder") != 0 &&
strcmp(name, "PageSize") != 0 &&
strcmp(name, "PageRegion") != 0)
group = ppd_get_group(ppd, "Printer");
else
group = ppd_get_group(ppd, "General");
if (group == NULL)
{
ppdClose(ppd);
free(string);
return (NULL);
}
option = ppd_get_option(group, name);
group = NULL;
ppdClose(ppd);
free(string);
return (NULL);
}
else
option = ppd_get_option(group, name);
option = ppd_get_option(group, name);
group = NULL;
}
else
option = ppd_get_option(group, name);
if (option == NULL)
{
@@ -826,7 +841,22 @@ ppdOpen(FILE *fp) /* I - File to read from */
else
option->ui = PPD_UI_PICKONE;
strcpy(option->text, text);
if (text[0])
{
strcpy(option->text, text);
ppd_fix(option->text);
}
else
{
if (strcmp(name, "PageSize") == 0)
strcpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_SIZE));
else if (strcmp(name, "MediaType") == 0)
strcpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_TYPE));
else if (strcmp(name, "InputSlot") == 0)
strcpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_SOURCE));
else
strcpy(option->text, name);
}
option->section = PPD_ORDER_ANY;
}
@@ -836,13 +866,6 @@ ppdOpen(FILE *fp) /* I - File to read from */
* Find the JCL group, and add if needed...
*/
if (group != NULL)
{
ppdClose(ppd);
free(string);
return (NULL);
}
group = ppd_get_group(ppd, "JCL");
if (group == NULL)
@@ -903,6 +926,8 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (strchr(string, '/') != NULL) /* Just show human readable text */
strcpy(string, strchr(string, '/') + 1);
ppd_decode(string);
ppd_fix(string);
group = ppd_get_group(ppd, string);
}
else if (strcmp(keyword, "CloseGroup") == 0)
@@ -938,6 +963,8 @@ ppdOpen(FILE *fp) /* I - File to read from */
group->num_subgroups ++;
memset(subgroup, 0, sizeof(ppd_group_t));
ppd_decode(string);
ppd_fix(string);
strcpy(subgroup->text, string);
}
else if (strcmp(keyword, "CloseSubGroup") == 0)
@@ -997,6 +1024,9 @@ ppdOpen(FILE *fp) /* I - File to read from */
}
else if (strncmp(keyword, "Default", 7) == 0)
{
if (string == NULL)
continue;
if (strchr(string, '/') != NULL)
*strchr(string, '/') = '\0';
@@ -1072,13 +1102,17 @@ ppdOpen(FILE *fp) /* I - File to read from */
if (constraint->choice1[0] == '*')
{
strcpy(constraint->choice2, constraint->option2);
strcpy(constraint->option2, constraint->choice1 + 1);
constraint->choice1[0] = '\0';
}
else if (constraint->option2[0] == '*')
strcpy(constraint->option2, constraint->option2 + 1);
else
{
if (constraint->option2[0] == '*')
strcpy(constraint->option2, constraint->option2 + 1);
constraint->choice2[0] = '\0';
constraint->choice2[0] = '\0';
}
break;
case 4 : /* Two options, two choices... */
@@ -1121,7 +1155,10 @@ ppdOpen(FILE *fp) /* I - File to read from */
choice = ppd_add_choice(option, name);
if (mask & PPD_TEXT)
{
strcpy(choice->text, text);
ppd_fix(choice->text);
}
else if (strcmp(name, "True") == 0)
strcpy(choice->text, "Yes");
else if (strcmp(name, "False") == 0)
@@ -1149,24 +1186,48 @@ ppdOpen(FILE *fp) /* I - File to read from */
* Set the option back-pointer for each choice...
*/
qsort(ppd->groups, ppd->num_groups, sizeof(ppd_group_t),
(int (*)(const void *, const void *))compare_groups);
for (i = ppd->num_groups, group = ppd->groups;
i > 0;
i --, group ++)
{
qsort(group->options, group->num_options, sizeof(ppd_option_t),
(int (*)(const void *, const void *))compare_options);
for (j = group->num_options, option = group->options;
j > 0;
j --, option ++)
{
qsort(option->choices, option->num_choices, sizeof(ppd_choice_t),
(int (*)(const void *, const void *))compare_choices);
for (k = 0; k < option->num_choices; k ++)
option->choices[k].option = (void *)option;
}
qsort(group->subgroups, group->num_subgroups, sizeof(ppd_group_t),
(int (*)(const void *, const void *))compare_groups);
for (j = group->num_subgroups, subgroup = group->subgroups;
j > 0;
j --, subgroup ++)
{
qsort(subgroup->options, subgroup->num_options, sizeof(ppd_option_t),
(int (*)(const void *, const void *))compare_options);
for (k = group->num_options, option = group->options;
k > 0;
k --, option ++)
{
qsort(option->choices, option->num_choices, sizeof(ppd_choice_t),
(int (*)(const void *, const void *))compare_choices);
for (m = 0; m < option->num_choices; m ++)
option->choices[m].option = (void *)option;
}
}
}
return (ppd);
@@ -1245,6 +1306,147 @@ ppdOpenFile(char *filename) /* I - File to read from */
}
/*
* 'compare_strings()' - Compare two strings.
*/
int /* O - Result of comparison */
compare_strings(char *s, /* I - First string */
char *t) /* I - Second string */
{
int diff, /* Difference between digits */
digits; /* Number of digits */
/*
* Loop through both strings, returning only when a difference is
* seen. Also, compare whole numbers rather than just characters, too!
*/
while (*s && *t)
{
if (isdigit(*s) && isdigit(*t))
{
/*
* Got a number; start by skipping leading 0's...
*/
while (*s == '0')
s ++;
while (*t == '0')
t ++;
/*
* Skip equal digits...
*/
while (isdigit(*s) && *s == *t)
{
s ++;
t ++;
}
/*
* Bounce out if *s and *t aren't both digits...
*/
if (!isdigit(*s) || !isdigit(*t))
continue;
if (*s < *t)
diff = -1;
else
diff = 1;
/*
* Figure out how many more digits there are...
*/
digits = 0;
while (isdigit(*s))
{
digits ++;
s ++;
}
while (isdigit(*t))
{
digits --;
t ++;
}
/*
* Return if the number or value of the digits is different...
*/
if (digits < 0)
return (-1);
else if (digits > 0)
return (1);
else
return (diff);
}
else if (tolower(*s) < tolower(*t))
return (-1);
else if (tolower(*s) > tolower(*t))
return (1);
else
{
s ++;
t ++;
}
}
/*
* Return the results of the final comparison...
*/
if (*s)
return (1);
else if (*t)
return (-1);
else
return (0);
}
/*
* 'compare_groups()' - Compare two groups.
*/
static int /* O - Result of comparison */
compare_groups(ppd_group_t *g0, /* I - First group */
ppd_group_t *g1) /* I - Second group */
{
return (compare_strings(g0->text, g1->text));
}
/*
* 'compare_options()' - Compare two options.
*/
static int /* O - Result of comparison */
compare_options(ppd_option_t *o0,/* I - First option */
ppd_option_t *o1)/* I - Second option */
{
return (compare_strings(o0->text, o1->text));
}
/*
* 'compare_choices()' - Compare two choices.
*/
static int /* O - Result of comparison */
compare_choices(ppd_choice_t *c0,/* I - First choice */
ppd_choice_t *c1)/* I - Second choice */
{
return (compare_strings(c0->text, c1->text));
}
/*
* 'ppd_read()' - Read a line from a PPD file, skipping comment lines as
* necessary.
@@ -1495,6 +1697,56 @@ ppd_decode(char *string) /* I - String to decode */
}
/*
* 'ppd_fix()' - Fix WinANSI characters in the range 0x80 to 0x9f to be
* valid ISO-8859-1 characters...
*/
static void
ppd_fix(char *string) /* IO - String to fix */
{
unsigned char *p; /* Pointer into string */
static unsigned char lut[32] =/* Lookup table for characters */
{
0x20,
0x20,
0x20,
0x20,
0x20,
0x20,
0x20,
0x20,
0x20,
0x20,
0x20,
0x20,
0x20,
0x20,
0x20,
0x20,
'l',
'`',
'\'',
'^',
'~',
0x20, /* bar */
0x20, /* circumflex */
0x20, /* dot */
0x20, /* double dot */
0x20,
0x20, /* circle */
0x20, /* ??? */
0x20,
'\"', /* should be right quotes */
0x20, /* ??? */
0x20 /* accent */
};
for (p = (unsigned char *)string; *p; p ++)
if (*p >= 0x80 && *p < 0xa0)
*p = lut[*p - 0x80];
}
/*
+6 -1
Ver Arquivo
@@ -129,8 +129,13 @@ typedef enum
CUPS_CSPACE_CMYK, /* Cyan, magenta, yellow, black */
CUPS_CSPACE_YMCK, /* Yellow, magenta, cyan, black */
CUPS_CSPACE_KCMY, /* Black, cyan, magenta, yellow */
CUPS_CSPACE_KCMYcm /* Black, cyan, magenta, yellow, *
CUPS_CSPACE_KCMYcm, /* Black, cyan, magenta, yellow, *
* light-cyan, light-magenta */
CUPS_CSPACE_GMCK, /* Gold, magenta, yellow, black */
CUPS_CSPACE_GMCS, /* Gold, magenta, yellow, silver */
CUPS_CSPACE_WHITE, /* White ink (as black) */
CUPS_CSPACE_GOLD, /* Gold foil */
CUPS_CSPACE_SILVER /* Silver foil */
} cups_cspace_t;
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44145 Airport View Drive, Suite 204
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44145 Airport View Drive, Suite 204
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44145 Airport View Drive, Suite 204
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44145 Airport View Drive, Suite 204
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44145 Airport View Drive, Suite 204
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44145 Airport View Drive, Suite 204
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
+175
Ver Arquivo
@@ -0,0 +1,175 @@
/*
* "$Id$"
*
* User, system, and password routines for the Common UNIX Printing
* System (CUPS).
*
* Copyright 1997-1999 by 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
*
* Contents:
*
*/
/*
* Include necessary headers...
*/
#include "cups.h"
#include <config.h>
#include <stdlib.h>
#include <ctype.h>
#if defined(WIN32) || defined(__EMX__)
/*
* WIN32 and OS/2 username and password stuff...
*/
/*
* 'cupsUser()' - Return the current user's name.
*/
char * /* O - User name */
cupsUser(void)
{
return ("WindowsUser");
}
/*
* 'cupsGetPassword()' - Get a password from the user...
*/
char * /* O - Password */
cupsGetPassword(const char *prompt) /* I - Prompt string */
{
return (NULL);
}
#else
/*
* UNIX username and password stuff...
*/
# include <pwd.h>
/*
* 'cupsUser()' - Return the current user's name.
*/
char * /* O - User name */
cupsUser(void)
{
struct passwd *pwd; /* User/password entry */
/*
* Rewind the password file...
*/
setpwent();
/*
* Lookup the password entry for the current user.
*/
if ((pwd = getpwuid(getuid())) == NULL)
return ("unknown"); /* Unknown user! */
/*
* Rewind the password file again and return the username...
*/
setpwent();
return (pwd->pw_name);
}
/*
* 'cupsGetPassword()' - Get a password from the user...
*/
char * /* O - Password */
cupsGetPassword(const char *prompt) /* I - Prompt string */
{
return (getpass(prompt));
}
#endif /* WIN32 || __EMX__ */
/*
* 'cupsServer()' - Return the hostname of the default server...
*/
char * /* O - Server name */
cupsServer(void)
{
FILE *fp; /* cupsd.conf file */
char *server; /* Pointer to server name */
static char line[1024]; /* Line from file */
/*
* First see if the CUPS_SERVER environment variable is set...
*/
if ((server = getenv("CUPS_SERVER")) != NULL)
return (server);
/*
* Next check to see if we have a cupsd.conf file...
*/
if ((fp = fopen(CUPS_SERVERROOT "/conf/cupsd.conf", "r")) == NULL)
return ("localhost");
/*
* Read the cupsd.conf file and look for a ServerName line...
*/
while (fgets(line, sizeof(line), fp) != NULL)
if (strncmp(line, "ServerName ", 11) == 0)
{
/*
* Got it! Drop any trailing newline and find the name...
*/
server = line + strlen(line) - 1;
if (*server == '\n')
*server = '\0';
for (server = line + 11; isspace(*server); server ++);
if (*server)
return (server);
}
/*
* Didn't see a ServerName line, so return "localhost"...
*/
fclose(fp);
return ("localhost");
}
/*
* End of "$Id$".
*/
+5 -9
Ver Arquivo
@@ -14,7 +14,7 @@
*
* Attn: CUPS Licensing Information
* Easy Software Products
* 44145 Airport View Drive, Suite 204
* 44141 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
@@ -149,12 +149,10 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
struct stat fileinfo; /* File information */
int bytes; /* Number of bytes read/written */
char buffer[8192]; /* Output buffer */
#if !defined(WIN32) && !defined(__EMX__)
char *password, /* Password string */
plain[255], /* Plaintext username:password */
encode[255]; /* Encoded username:password */
char junk[8192]; /* Junk buffer for error data */
#endif /* !WIN32 && !__EMX__ */
static char authstring[255] = "";
/* Authorization string */
@@ -204,7 +202,7 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
*/
if (filename != NULL)
sprintf(length, "%u", ippLength(request) + fileinfo.st_size);
sprintf(length, "%u", ippLength(request) + (size_t)fileinfo.st_size);
else
sprintf(length, "%u", ippLength(request));
@@ -254,7 +252,6 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
while ((status = httpUpdate(http)) == HTTP_CONTINUE);
#if !defined(WIN32) && !defined(__EMX__)
if (status == HTTP_UNAUTHORIZED)
{
DEBUG_puts("cupsDoFileRequest: unauthorized...");
@@ -265,7 +262,7 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
httpFlush(http);
if ((password = getpass("Password:")) != NULL)
if ((password = cupsGetPassword("Password:")) != NULL)
{
/*
* Got a password; send it to the server...
@@ -273,7 +270,7 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
if (!password[0])
break;
sprintf(plain, "%s:%s", cuserid(NULL), password);
sprintf(plain, "%s:%s", cupsUser(), password);
httpEncode64(encode, plain);
sprintf(authstring, "Basic %s", encode);
@@ -282,7 +279,6 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
else
break;
}
#endif /* !WIN32 && !__EMX__ */
if (status != HTTP_OK)
{
@@ -917,7 +913,7 @@ cups_connect(char *name, /* I - Destination (printer[@host]) */
return (NULL);
if (sscanf(name, "%[^@]@%s", printerbuf, hostbuf) == 1)
strcpy(hostbuf, "localhost");
strcpy(hostbuf, cupsServer());
if (hostname != NULL)
strcpy(hostname, hostbuf);
+8 -1
Ver Arquivo
@@ -30,8 +30,10 @@ include ../Makedefs
.SUFFIXES: .html .pdf .shtml
.shtml.html:
echo Formatting $@...
htmldoc --title images/cups-large.gif --numbered -f $@ $<
.shtml.pdf:
echo Formatting $@...
htmldoc --title images/cups-large.gif --duplex --compression=9 \
--numbered --jpeg -f $@ $<
@@ -44,7 +46,7 @@ DOCUMENTS = cmp.shtml idd.shtml sam.shtml sdd.shtml ssr.shtml \
DOCIMAGES = images/cups-block-diagram.gif images/cups-large.gif \
images/cups-medium.gif images/cups-small.gif
WEBPAGES = cups.css cupsdoc.css index.html documentation.html
WEBIMAGES = images/logo.gif images/navbar.gif \
WEBIMAGES = images/classes.gif images/logo.gif images/navbar.gif \
images/printer-idle.gif images/printer-processing.gif \
images/printer-stopped.gif
@@ -83,17 +85,22 @@ install:
#
overview.pdf: overview.html
echo Formatting $@...
htmldoc --duplex --compression=9 --jpeg --webpage -f $@ $<
sam.html: sam.shtml
echo Formatting $@...
htmldoc --title images/cups-large.gif -f $@ $<
sam.pdf: sam.shtml
echo Formatting $@...
htmldoc --title images/cups-large.gif --duplex --compression=9 \
--jpeg -f $@ $<
sum.html: sum.shtml
echo Formatting $@...
htmldoc --title images/cups-large.gif -f $@ $<
sum.pdf: sum.shtml
echo Formatting $@...
htmldoc --title images/cups-large.gif --duplex --compression=9 \
--jpeg -f $@ $<
+7 -2
Ver Arquivo
@@ -202,6 +202,9 @@ operator := &quot;+&quot; | [ logical AND ]
&quot;!&quot; [ unary NOT ]
</PRE>
</UL>
<P>The <CODE>int</CODE> and <CODE>short</CODE> rules match look for
integers in network byte order (a.k.a. big-endian) with the
most-significant byte first. </P>
<H3><A NAME=3_3_2>3.3.2 mime.convs</A></H3>
<P>The mime.types file defines the recognized file filters and consists
of 1 or more lines of ASCII text. Comment lines start with the pound
@@ -227,7 +230,7 @@ source/type cost program
</UL>
<P>The destination type is assumed to the printer's type. If a printer
supports the source type directly the special filter program &quot;-&quot; may be
used. </P>
specified. </P>
<H4>3.4.1.2 cupsManualCopies</H4>
<P>This boolean attribute notifies the RIP filters that the destination
printer does not support copy generation in hardware. The default value
@@ -334,6 +337,7 @@ understood:
<TR><TD>ServerName</TD><TD></TR>
<TR><TD>ServerRoot</TD><TD></TR>
<TR><TD>SystemGroup</TD><TD></TR>
<TR><TD>TempDir</TD><TD></TR>
<TR><TD>Timeout</TD><TD></TR>
<TR><TD>User</TD><TD></TR>
</TABLE>
@@ -385,7 +389,8 @@ capability/type bits:
<TR><TD>0</TD><TD>0 = printer
<BR> 1 = class</TD></TR>
<TR><TD>1</TD><TD>0 = local
<BR> 1 = remote</TD></TR>
<BR> 1 = remote
<BR> (always 1)</TD></TR>
<TR><TD>2</TD><TD>1 = can print B</TD></TR>
<TR><TD>3</TD><TD>1 = can print color</TD></TR>
<TR><TD>4</TD><TD>1 = can duplex</TD></TR>
+173 -156
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:19990521210311Z)/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:19990624171515Z)/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
@@ -10,27 +10,27 @@
8 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica-Bold/Encoding 2 0 R>>endobj
9 0 obj<</Type/Font/Subtype/Type1/BaseFont/Symbol>>endobj
10 0 obj<</S/URI/URI(http://partners.adobe.com/supportservice/devrelations/PDFS/TN/5003.PPD_Spec_v4.3.pdf)>>endobj
11 0 obj<</Subtype/Link/Rect[336.6 205.2 368.7 216.2]/Border[0 0 0]/A 10 0 R>>endobj
11 0 obj<</Subtype/Link/Rect[336.6 152.4 368.7 163.4]/Border[0 0 0]/A 10 0 R>>endobj
12 0 obj<</S/URI/URI(http://partners.adobe.com/supportservice/devrelations/PDFS/TN/5003.PPD_Spec_v4.3.pdf)>>endobj
13 0 obj<</Subtype/Link/Rect[368.7 205.2 414.8 216.2]/Border[0 0 0]/A 12 0 R>>endobj
13 0 obj<</Subtype/Link/Rect[368.7 152.4 414.8 163.4]/Border[0 0 0]/A 12 0 R>>endobj
14 0 obj<</S/URI/URI(http://partners.adobe.com/supportservice/devrelations/PDFS/TN/5003.PPD_Spec_v4.3.pdf)>>endobj
15 0 obj<</Subtype/Link/Rect[414.8 205.2 448.1 216.2]/Border[0 0 0]/A 14 0 R>>endobj
15 0 obj<</Subtype/Link/Rect[414.8 152.4 448.1 163.4]/Border[0 0 0]/A 14 0 R>>endobj
16 0 obj<</S/URI/URI(http://partners.adobe.com/supportservice/devrelations/PDFS/TN/5003.PPD_Spec_v4.3.pdf)>>endobj
17 0 obj<</Subtype/Link/Rect[448.1 205.2 493.4 216.2]/Border[0 0 0]/A 16 0 R>>endobj
17 0 obj<</Subtype/Link/Rect[448.1 152.4 493.4 163.4]/Border[0 0 0]/A 16 0 R>>endobj
18 0 obj<</S/URI/URI(http://partners.adobe.com/supportservice/devrelations/PDFS/TN/5003.PPD_Spec_v4.3.pdf)>>endobj
19 0 obj<</Subtype/Link/Rect[36.0 192.0 68.7 203.0]/Border[0 0 0]/A 18 0 R>>endobj
19 0 obj<</Subtype/Link/Rect[36.0 139.2 68.7 150.2]/Border[0 0 0]/A 18 0 R>>endobj
20 0 obj<</S/URI/URI(http://partners.adobe.com/supportservice/devrelations/PDFS/TN/5003.PPD_Spec_v4.3.pdf)>>endobj
21 0 obj<</Subtype/Link/Rect[68.7 192.0 122.8 203.0]/Border[0 0 0]/A 20 0 R>>endobj
21 0 obj<</Subtype/Link/Rect[68.7 139.2 122.8 150.2]/Border[0 0 0]/A 20 0 R>>endobj
22 0 obj<</S/URI/URI(http://partners.adobe.com/supportservice/devrelations/PDFS/TN/5003.PPD_Spec_v4.3.pdf)>>endobj
23 0 obj<</Subtype/Link/Rect[122.8 192.0 142.6 203.0]/Border[0 0 0]/A 22 0 R>>endobj
23 0 obj<</Subtype/Link/Rect[122.8 139.2 142.6 150.2]/Border[0 0 0]/A 22 0 R>>endobj
24 0 obj<</S/URI/URI(http://partners.adobe.com/supportservice/devrelations/PDFS/TN/5003.PPD_Spec_v4.3.pdf)>>endobj
25 0 obj<</Subtype/Link/Rect[142.6 192.0 177.2 203.0]/Border[0 0 0]/A 24 0 R>>endobj
25 0 obj<</Subtype/Link/Rect[142.6 139.2 177.2 150.2]/Border[0 0 0]/A 24 0 R>>endobj
26 0 obj<</S/URI/URI(http://partners.adobe.com/supportservice/devrelations/PDFS/TN/5003.PPD_Spec_v4.3.pdf)>>endobj
27 0 obj<</Subtype/Link/Rect[177.2 192.0 238.0 203.0]/Border[0 0 0]/A 26 0 R>>endobj
27 0 obj<</Subtype/Link/Rect[177.2 139.2 238.0 150.2]/Border[0 0 0]/A 26 0 R>>endobj
28 0 obj<</S/URI/URI(http://partners.adobe.com/supportservice/devrelations/PDFS/TN/5003.PPD_Spec_v4.3.pdf)>>endobj
29 0 obj<</Subtype/Link/Rect[238.0 192.0 275.5 203.0]/Border[0 0 0]/A 28 0 R>>endobj
29 0 obj<</Subtype/Link/Rect[238.0 139.2 275.5 150.2]/Border[0 0 0]/A 28 0 R>>endobj
30 0 obj<</S/URI/URI(http://partners.adobe.com/supportservice/devrelations/PDFS/TN/5003.PPD_Spec_v4.3.pdf)>>endobj
31 0 obj<</Subtype/Link/Rect[275.5 192.0 289.3 203.0]/Border[0 0 0]/A 30 0 R>>endobj
31 0 obj<</Subtype/Link/Rect[275.5 139.2 289.3 150.2]/Border[0 0 0]/A 30 0 R>>endobj
32 0 obj[11 0 R
13 0 R
15 0 R
@@ -304,19 +304,19 @@
216 0 obj<</Subtype/Link/Rect[157.2 514.8 178.6 527.8]/Border[0 0 0]/Dest[427 0 R/XYZ null 249 0]>>endobj
217 0 obj<</Subtype/Link/Rect[144.0 501.6 168.8 514.6]/Border[0 0 0]/Dest[430 0 R/XYZ null 782 0]>>endobj
218 0 obj<</Subtype/Link/Rect[168.8 501.6 219.8 514.6]/Border[0 0 0]/Dest[430 0 R/XYZ null 782 0]>>endobj
219 0 obj<</Subtype/Link/Rect[144.0 488.4 168.8 501.4]/Border[0 0 0]/Dest[430 0 R/XYZ null 454 0]>>endobj
220 0 obj<</Subtype/Link/Rect[168.8 488.4 222.2 501.4]/Border[0 0 0]/Dest[430 0 R/XYZ null 454 0]>>endobj
221 0 obj<</Subtype/Link/Rect[108.0 475.2 124.5 488.2]/Border[0 0 0]/Dest[430 0 R/XYZ null 331 0]>>endobj
222 0 obj<</Subtype/Link/Rect[124.5 475.2 172.5 488.2]/Border[0 0 0]/Dest[430 0 R/XYZ null 331 0]>>endobj
223 0 obj<</Subtype/Link/Rect[172.5 475.2 205.2 488.2]/Border[0 0 0]/Dest[430 0 R/XYZ null 331 0]>>endobj
224 0 obj<</Subtype/Link/Rect[205.2 475.2 259.2 488.2]/Border[0 0 0]/Dest[430 0 R/XYZ null 331 0]>>endobj
225 0 obj<</Subtype/Link/Rect[259.2 475.2 280.6 488.2]/Border[0 0 0]/Dest[430 0 R/XYZ null 331 0]>>endobj
226 0 obj<</Subtype/Link/Rect[144.0 462.0 168.8 475.0]/Border[0 0 0]/Dest[430 0 R/XYZ null 224 0]>>endobj
227 0 obj<</Subtype/Link/Rect[168.8 462.0 199.0 475.0]/Border[0 0 0]/Dest[430 0 R/XYZ null 224 0]>>endobj
228 0 obj<</Subtype/Link/Rect[199.0 462.0 250.0 475.0]/Border[0 0 0]/Dest[430 0 R/XYZ null 224 0]>>endobj
229 0 obj<</Subtype/Link/Rect[250.0 462.0 261.3 475.0]/Border[0 0 0]/Dest[430 0 R/XYZ null 224 0]>>endobj
230 0 obj<</Subtype/Link/Rect[261.3 462.0 284.3 475.0]/Border[0 0 0]/Dest[430 0 R/XYZ null 224 0]>>endobj
231 0 obj<</Subtype/Link/Rect[284.3 462.0 305.7 475.0]/Border[0 0 0]/Dest[430 0 R/XYZ null 224 0]>>endobj
219 0 obj<</Subtype/Link/Rect[144.0 488.4 168.8 501.4]/Border[0 0 0]/Dest[430 0 R/XYZ null 401 0]>>endobj
220 0 obj<</Subtype/Link/Rect[168.8 488.4 222.2 501.4]/Border[0 0 0]/Dest[430 0 R/XYZ null 401 0]>>endobj
221 0 obj<</Subtype/Link/Rect[108.0 475.2 124.5 488.2]/Border[0 0 0]/Dest[430 0 R/XYZ null 278 0]>>endobj
222 0 obj<</Subtype/Link/Rect[124.5 475.2 172.5 488.2]/Border[0 0 0]/Dest[430 0 R/XYZ null 278 0]>>endobj
223 0 obj<</Subtype/Link/Rect[172.5 475.2 205.2 488.2]/Border[0 0 0]/Dest[430 0 R/XYZ null 278 0]>>endobj
224 0 obj<</Subtype/Link/Rect[205.2 475.2 259.2 488.2]/Border[0 0 0]/Dest[430 0 R/XYZ null 278 0]>>endobj
225 0 obj<</Subtype/Link/Rect[259.2 475.2 280.6 488.2]/Border[0 0 0]/Dest[430 0 R/XYZ null 278 0]>>endobj
226 0 obj<</Subtype/Link/Rect[144.0 462.0 168.8 475.0]/Border[0 0 0]/Dest[430 0 R/XYZ null 171 0]>>endobj
227 0 obj<</Subtype/Link/Rect[168.8 462.0 199.0 475.0]/Border[0 0 0]/Dest[430 0 R/XYZ null 171 0]>>endobj
228 0 obj<</Subtype/Link/Rect[199.0 462.0 250.0 475.0]/Border[0 0 0]/Dest[430 0 R/XYZ null 171 0]>>endobj
229 0 obj<</Subtype/Link/Rect[250.0 462.0 261.3 475.0]/Border[0 0 0]/Dest[430 0 R/XYZ null 171 0]>>endobj
230 0 obj<</Subtype/Link/Rect[261.3 462.0 284.3 475.0]/Border[0 0 0]/Dest[430 0 R/XYZ null 171 0]>>endobj
231 0 obj<</Subtype/Link/Rect[284.3 462.0 305.7 475.0]/Border[0 0 0]/Dest[430 0 R/XYZ null 171 0]>>endobj
232 0 obj<</Subtype/Link/Rect[108.0 448.8 124.5 461.8]/Border[0 0 0]/Dest[436 0 R/XYZ null 800 0]>>endobj
233 0 obj<</Subtype/Link/Rect[124.5 448.8 171.2 461.8]/Border[0 0 0]/Dest[436 0 R/XYZ null 800 0]>>endobj
234 0 obj<</Subtype/Link/Rect[171.2 448.8 235.7 461.8]/Border[0 0 0]/Dest[436 0 R/XYZ null 800 0]>>endobj
@@ -325,8 +325,8 @@
237 0 obj<</Subtype/Link/Rect[168.8 435.6 221.6 448.6]/Border[0 0 0]/Dest[436 0 R/XYZ null 547 0]>>endobj
238 0 obj<</Subtype/Link/Rect[144.0 422.4 168.8 435.4]/Border[0 0 0]/Dest[436 0 R/XYZ null 215 0]>>endobj
239 0 obj<</Subtype/Link/Rect[168.8 422.4 216.7 435.4]/Border[0 0 0]/Dest[436 0 R/XYZ null 215 0]>>endobj
240 0 obj<</Subtype/Link/Rect[144.0 409.2 168.8 422.2]/Border[0 0 0]/Dest[442 0 R/XYZ null 702 0]>>endobj
241 0 obj<</Subtype/Link/Rect[168.8 409.2 224.7 422.2]/Border[0 0 0]/Dest[442 0 R/XYZ null 702 0]>>endobj
240 0 obj<</Subtype/Link/Rect[144.0 409.2 168.8 422.2]/Border[0 0 0]/Dest[442 0 R/XYZ null 682 0]>>endobj
241 0 obj<</Subtype/Link/Rect[168.8 409.2 224.7 422.2]/Border[0 0 0]/Dest[442 0 R/XYZ null 682 0]>>endobj
242 0 obj<</Subtype/Link/Rect[72.0 382.8 80.2 395.8]/Border[0 0 0]/Dest[445 0 R/XYZ null 818 0]>>endobj
243 0 obj<</Subtype/Link/Rect[80.2 382.8 123.9 395.8]/Border[0 0 0]/Dest[445 0 R/XYZ null 818 0]>>endobj
244 0 obj<</Subtype/Link/Rect[123.9 382.8 171.0 395.8]/Border[0 0 0]/Dest[445 0 R/XYZ null 818 0]>>endobj
@@ -634,13 +634,13 @@
373 0 obj<</D[427 0 R/XYZ null 619 null]>>endobj
374 0 obj<</D[427 0 R/XYZ null 249 null]>>endobj
375 0 obj<</D[430 0 R/XYZ null 782 null]>>endobj
376 0 obj<</D[430 0 R/XYZ null 454 null]>>endobj
377 0 obj<</D[430 0 R/XYZ null 331 null]>>endobj
378 0 obj<</D[430 0 R/XYZ null 224 null]>>endobj
376 0 obj<</D[430 0 R/XYZ null 401 null]>>endobj
377 0 obj<</D[430 0 R/XYZ null 278 null]>>endobj
378 0 obj<</D[430 0 R/XYZ null 171 null]>>endobj
379 0 obj<</D[436 0 R/XYZ null 800 null]>>endobj
380 0 obj<</D[436 0 R/XYZ null 547 null]>>endobj
381 0 obj<</D[436 0 R/XYZ null 215 null]>>endobj
382 0 obj<</D[442 0 R/XYZ null 702 null]>>endobj
382 0 obj<</D[442 0 R/XYZ null 682 null]>>endobj
383 0 obj<</D[445 0 R/XYZ null 818 null]>>endobj
384 0 obj<</D[445 0 R/XYZ null 737 null]>>endobj
385 0 obj<</D[463 0 R/XYZ null 458 null]>>endobj
@@ -778,25 +778,32 @@ endobj
áÒw³P04TIS046V072PIÑp rt QÐUp
VðÌ+I-JKLNUpI-ÎLÏQÉE™%™ùyš!Y\º ºPF 3=30ßP!89¿ ÂÈV!õendstream
endobj
420 0 obj
120
endobj
421 0 obj<</Type/Page/Parent 408 0 R/Contents 422 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>>>endobj
420 0 obj
120
endobj
421 0 obj<</Type/Page/Parent 408 0 R/Contents 422 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>>>endobj
422 0 obj<</Length 423 0 R/Filter/FlateDecode>>stream
xÚ­•AsÚ0…ïüŠ=’™ØÁ†`Ãé0S&69qQ­5¨cKT“òï+!C ¥âf|°Á«ï­´ïÁ÷Vs…ÐíC^µ>e­‡§È
ó¦õ £íX Dž£ºË¾¹’G?vEÞcì»2?€ñ2Ia"ò]…\Íw zuywà÷my¶A(DYŠ7Æ×n!=_L<êRøº½1_k†œ×à0öCð¾keö#¸Tn[o<O¼Àï ÞXð‚­wÒéÍ 'k´lHJÂ/ù¦ñ k$þŸM&gðt¯4V0ãeAr„ *¶æö–K¶}?[$ÒÑÜJø?Ž"¢ÐoD"ŒhÅ8SÚìEHe÷²#eþåŽôi=™_C'R¬%©*k‚Æ]§‹kèódzoì»R7àfÉ5n†ª©EÒåæ·Tø?c{\Ǿªõöo“{O°ç¢cbY§8„g½AyбúÇsÁ½‹+°-|d†gÓé‚nù½ûcÀΜov74†b\Û~Vm*I¡Ww7ç,I3QÊ,‘”ð¼== “Qà{iš±§<ÔöH8…L®n6è‰5«¶åáWËèóŽQlÆ™ Šå¡¡+bŽ0W7Ocó
îá ãèÆ`]D°241×"µ·ãzQí½0
¡~ý§éÅ`„Í«®ý<ÍZ/­Ÿ²6Úbendstream
endobj
423 0 obj
529
ó¦õ £íX Dž£ºË¾¹’G?vEÞcì»2?€ñ2Ia"ò]…\Íw zuywà÷my¶A(DYŠ7Æ×n!=_L<êRøº½1_k†œ×à0öCð¾keö#¸Tn[o<O¼Àï ÞXð‚­wÒéÍ 'k´lHJÂ/ù¦ñ k$þŸM&gðt¯4V0ãeAr„ *¶æö–K¶}?[$ÒÑÜJø?Ž"¢ÐoD"ŒhÅ8SÚìEHe÷²#eþåŽôi=™_C'R¬%©*k‚Æ]§‹kèódzoì»R7àfÉ5n†ª©EÒåæ·Tø?c{\Ǿªõöo“{O°ç¢cbY§8„g½AyбúÇsÁ½‹+°-|d†gÓé‚nù½ûcÀΜov74†b\Û~Vm*I¡Ww7ç,I3QÊ,‘”ð¼== “Qà{iš±§<ÔöH8…L®n6è‰5«¶åáWËèóŽQlÆ™ Šå¡¡+bŽ0W7Ocó
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Ú-‹Á
423 0 obj
529
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
VÑn0}ÏW\õ©•
$!d{ÚªVŠ´jBß"MޱO`˜m¶t_¿k „ШÝP_\¸çÜ˹ǧý9 `Š?,C˜E@óɧdòîaÁ
426 0 obj
Žo¢å’ôzki˜’$sN(Ó7ÉW»ðcWí-bßÕû܈"‹aà <ˆ¬EÌ!šúÙÊl}r`@»zõÜÖCʸ ä¤,…ÜÃŽ™ßŒIˆ½0'ˆ"S0Èò$ØàˆbvìÌüÐö•$g)TÚR[ôzó´A.¢RU¾C¼›!^¨ºfÀ|O衞h!µÐFCÁ¡*Á."Èl
:ÜÜ­×`ر¥°ugæwv$)£"GáÝ8úC=JvB¡ƒµÏ¥}>h|.óözzœNí¬Ó#çÛ›ÛNHÍp˜tÐ⥺Í{Çsb²\þƒàƒ„ð™È}Eö켑µ¥g¶°á‘T™¸Ç~A5³ŒQ#
Yë‰ZCδFí´!¦c~Ã"»g(v=¶NÑFÙã­JýýÊ~v½UHS7ë­K\!µLÌßû
ŠÉ«ÛæÈ™¡þöfÐþ²½¬7ÐŽy¡Xg0èYª! #§vÒ9¦v™H™4v ýÒÐöKv ¯DÏñ­hµF@+¥Ÿ=ƒB‹ì¥øƒ¥¿HV!Ê÷Þ-’6‹ cüŽnm-á|Óוöˆ¦Bœãz\îÅÿ…ºðâx±ò‚q°pl66[ŒƒEã`Ëq°‘{[\÷H)ƒZKÏù·ŸEM0ڈѥŒ¥6Ü-lƒ©5>¬yÿ¹·¨(”¥.\H¤·¶òbl»[בœr¹*SbXÚwMO¸½Ïö×^!Þé×3yëÇû7òøîéëÆré:…j€KeŒTñÔýýD™¸ØWŠØnÇ'¾8~õ?y<õWX‡5õ&î“É·É__ˆ–endstream
@@ -823,20 +830,30 @@ endobj
jòó^µü€W‡G|íÕ| QÒ0éãÄ· ßFp
7£îˆÔ³'¢Æ™Æ k"Óù¥Fõ¿:ˆãÁI‹“gCÃò­Ï­€|”îᙸր’ŽFãt Pâ>bwÀÛà‡|^Þ‰o!JêãïÄ·À#evã[àÐ0[xÞ<6u÷\¢£ö]¦]û
L}_ø=†ïÃhàê÷ÉtÜlnowã"Y\iž­K†Û|]][[¹Y†Ž*ï0‹ Ÿ{É1¯§Këú9œå¶´®‹©Dójü9jT&ƒGnÜž~ŸO(ô]0
µª@/U8}Œd2¿UFÒ›NDµš¼˜\‘˜ÍÒÞ¼×PP7æ k€=³Þ#ð:ø6Ÿ%âkˆ‚ZAk“Éa|<Z¶s_CßaÖð¼(¸µùR›cçÛ>ºý—8Wøßm?²»w8X-mÃß7î nÛm´ŠÝ˜×ëc„fS@{o÷ÖA#·$‘¦ðSy·TŽƒæ«x“M–ƺ9IJ)mwÅDºVzº«)Ã(¢8ŠQLzu×»QÓ)ês¦ƈRd³²^ž£ÉÔæY+`fÌOÚ§¼ôOZö·“o1t=endstream
endobj
¹@k˜ImFXGÈ¢áa?fÉ¿:ãç~!iÛû¥ÿ·ùendstream
endobj
432 0 obj
1236
endobj
433 0 obj<</Type/Page/Parent 408 0 R/Contents 434 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
434 0 obj<</Length 435 0 R/Filter/FlateDecode>>stream
VMoã6½ûW r©·€Krœ¤@rHë¦Þ
endobj
ì…–(› ‰Ôò#¶ÿ}gHÑÚ4n à ߼y3Ô·Qüep›C1ƒ²ýº]?ÞC–Á²Æ7³»izËj\¤Ó4K3(]gEc¹þ°üŠ¦ÓƒiRܧ32]n„k`¯+g9tZ½ŠŠ`P*ùʵJv
UƒÝp¨•n
Q'pŸæA%YAëjL¯pÚ¯åtɯí¾ãÏXŠ¿Ö¬=G•ÿ`…d–öö¾ãZ^UF‡À1½Œ7Há©FÈýC0®ë”¶Æ[ !N%4/m³/:^
ÖDÀ=þÚÓÂUr-Ûê·¯¯ÒÿÈ’ÏÒé‘ÿÜóÿ̤c̓ê7ïWa¥TÙ<)ƒT–v
ì…–(› ‰Ôò#¶ÿ}gHI±•l܆!Jš¾yóf¨ï“ü¥pA>‡¢™ü¶š\ÞßBšÂªÂ7ó›Y|«ršÇ³8S(\kîEm¹þ¸ú†¦³Á4Êoã9™®¶Â€±ZÈ
0‹×µ³Z­žEÉ
0(”|æÚ%A»šƒªÀn9TJ7?‡¨ ÜÆ…EPQšÓºœÒ+܆ö+§F9]ðK{h9Æ3–âo4kNQEäÿ‚‹°B2K{{_„ÊŒq
¼<-  ¢{fýÃSŠbÚ•Btù#åÝÖ\r $»aºÚ2üÚkæ ¯¬qžóš5†_ʶÙªŠ7¿¹vuIru`ÉF^ͱ‚Iÿ¬„–â‚ô %F7P"cXgP«=úžWn)ʆU_ ì)g;gIËè7Ø uÞ£¸”ùÔg¾Ð
wæÿ±ÑN“.U£<nŠó¿úLs£G5½Vqi„ÝC;™à?Ãm†k4o3\ç¸ÎqçZ1¼žõ¯O6:÷“ÕИ  ͼ¶Ll)ê.ªLi±¿‘‰­hª5™ÂïÈÞ
É L„*×2[n@ÉÈQdç@yäæåQ"Ïç^ãg^ ¶|é¡V†CH”™¾4‹ÅœÄ:ãDoðÕâMú°”÷šµ-óÆÊ±¶\¢J,}û‡éÓø×º¨¿Œw_>ÀÏPÁ°‹^·TÞfthLÈ,»®³)¦4‰ñNô‘e7hñžDPsÃtíF+·Þ|g9TßA$¦Ø`5“†Ú! 1¼h±ó½KÅxxþ«o à÷ÓÙ™¤ó¤ëœåCL¬þîÐö9Gri<Üøñð9œ¡ïÍ¿9<šª“¾Ä%’±Ý¬{<‹ûñððiñ'<Íç°ÅÆñ30Õ |g‰%M:àáÁiÊÂsPØÐZ+ŽÄ0¦®²trÕ§w×CΊfÅMøÎ˜¿üò¸„¤GA³²fxÆÎ¹kI„ÞÅþKÈ5¹Í'j‚ßÇ?YÂY9½›¤÷A·tÿq9úcô7yѳ´endstream
endobj
435 0 obj
916
endobj
436 0 obj<</Type/Page/Parent 408 0 R/Contents 437 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F5 5 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
437 0 obj<</Length 438 0 R/Filter/FlateDecode>>stream
xÚí–ßoÚ0Çßù+NÝK+•4ŽCSU©£í„´I]ÉÞúâ&Nñlhÿûíñ«Ú'Pdì;?¾»œùÝ"â‡Mì7·¾d­‹»NÐ…¬Äµ$Mƒ²â”æ#^L+^C_ÉR<Okf„’p'*®Ï²_è!Þ³M{Þ3qÐKÏš³BƒÕœC¾¶KiwÁf à¥ÇØŒ‰Š=U†×úòŠiÍqÀdš×3‘sýÙ$
ž§%Al ûÀê­c¾·ÊFB;ˆF^«*P¥ÃhÄÒð"Õ\QnQ¿iÃÇÁ:@{`:ÑŇõíÞ.*çPˆšçFÕÂþ˜ Ã\չɘj^ÀÓ›gYDzÎ"”ÿ "ûB…DƒÈ©§DËR
Í [‹–‚Õ=àåiëÂEt
ìNÊFí¼7ô48ÒBmQ¨ƪæP9Bœºö0üÕX¨ã1—¦YÔ†ÕæÂŒüÔ èñôäÓÉã™e@eOŒ±šå¦‰c¸
Ê-ËG •l?UL¾¸ý¾zµ±dcnIØF‰û,ЦUU•šû´ t±jʰçõKB>o-1
x\DÇ襊¦ò;Mø’cצ¡Ç½YxY£÷J1¾vžë¼‹eWn³V„Ø
‡¯ÅA”tQŸÇQˆn1&q¸´¦]³vme‘Þ(:¶Ë¾M­‹ÖÕÆa//ÜÚÕ~¶¨c£òl”â÷²yk϶²F6$ŠÒÐWÜå
@@ -981,13 +998,13 @@ endobj
465 0 obj
864
endobj
ÇáéýúÌU‚«™ëáûJÝÌzæ¬óø
ñ]5
⃋ø Šw]ûB>Uâ»ÖQ½
466 0 obj<</Type/Page/Parent 408 0 R/Contents 467 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
467 0 obj<</Length 468 0 R/Filter/FlateDecode>>stream
xÚ-ŒÁ
‚@„ïûsÔƒ¶«’zèºB^*ý½ RÛ
i©‡¿6b>øæÅø7þÖT=XBl“GÔAø>BƒnVVîs‚ƒ´>U8Œ«ž»‹ÒÈôÒßG3jîŸk?6
Ì1¢ó7EdçEnˆÜÐQêA«Åt]ÐXæ¶-e!SjcRaþ8ÛØ’Ø™}ý^-
endobj
endstream
endobj
468 0 obj
154
@@ -1448,110 +1465,110 @@ xref
0000029168 00000 n
0000029274 00000 n
0000029380 00000 n
0000028426 00000 n
0000028532 00000 n
0000028638 00000 n
0000028744 00000 n
0000028850 00000 n
0000028956 00000 n
0000029062 00000 n
0000029168 00000 n
0000029274 00000 n
0000029380 00000 n
0000029486 00000 n
0000029592 00000 n
0000029698 00000 n
0000029804 00000 n
0000029910 00000 n
0000030016 00000 n
0000030122 00000 n
0000030228 00000 n
0000030334 00000 n
0000030440 00000 n
0000030546 00000 n
0000030652 00000 n
0000030758 00000 n
0000030864 00000 n
0000030970 00000 n
0000031076 00000 n
0000031182 00000 n
0000031288 00000 n
0000031394 00000 n
0000031500 00000 n
0000031606 00000 n
0000031712 00000 n
0000031818 00000 n
0000031924 00000 n
0000032030 00000 n
0000032136 00000 n
0000032242 00000 n
0000032348 00000 n
0000032454 00000 n
0000032560 00000 n
0000032666 00000 n
0000032769 00000 n
0000032872 00000 n
0000032975 00000 n
0000033079 00000 n
0000033181 00000 n
0000033284 00000 n
0000034654 00000 n
0000034758 00000 n
0000034863 00000 n
0000034967 00000 n
0000035072 00000 n
0000035122 00000 n
0000035156 00000 n
0000035190 00000 n
0000035785 00000 n
0000035834 00000 n
0000035883 00000 n
0000035932 00000 n
0000035981 00000 n
0000029486 00000 n
0000029592 00000 n
0000029698 00000 n
0000029804 00000 n
0000029910 00000 n
0000030016 00000 n
0000030122 00000 n
0000030228 00000 n
0000030334 00000 n
0000030440 00000 n
0000030546 00000 n
0000030652 00000 n
0000030758 00000 n
0000030864 00000 n
0000030970 00000 n
0000031076 00000 n
0000031182 00000 n
0000031288 00000 n
0000031394 00000 n
0000031500 00000 n
0000031606 00000 n
0000031712 00000 n
0000031818 00000 n
0000031924 00000 n
0000032030 00000 n
0000032136 00000 n
0000032242 00000 n
0000032348 00000 n
0000032454 00000 n
0000032560 00000 n
0000032666 00000 n
0000032769 00000 n
0000032872 00000 n
0000032975 00000 n
0000033079 00000 n
0000033181 00000 n
0000033284 00000 n
0000034654 00000 n
0000034758 00000 n
0000034863 00000 n
0000034967 00000 n
0000035072 00000 n
0000035122 00000 n
0000035156 00000 n
0000035190 00000 n
0000035785 00000 n
0000035834 00000 n
0000035883 00000 n
0000035932 00000 n
0000035981 00000 n
0000036030 00000 n
0000036079 00000 n
0000036128 00000 n
0000036177 00000 n
0000036226 00000 n
0000036275 00000 n
0000036324 00000 n
0000036373 00000 n
0000036422 00000 n
0000036471 00000 n
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
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
0000046557 00000 n
0000047157 00000 n
0000045003 00000 n
0000047178 00000 n
0000047291 00000 n
+11 -2
Ver Arquivo
@@ -156,6 +156,9 @@ operator := "+" | [ logical AND ]
"!" [ unary NOT ]
</PRE></UL>
<P>The <CODE>int</CODE> and <CODE>short</CODE> rules match look for integers
in network byte order (a.k.a. big-endian) with the most-significant byte first.
<H3>mime.convs</H3>
<P>The mime.types file defines the recognized file filters and consists
@@ -188,7 +191,8 @@ source/type cost program
</PRE></UL>
<P>The destination type is assumed to the printer's type. If a printer
supports the source type directly the special filter program "-" may be used.
supports the source type directly the special filter program "-" may be
specified.
<H4>cupsManualCopies</H4>
@@ -429,6 +433,10 @@ followed by its value. The following directives are understood:
<TD>SystemGroup</TD>
<TD></TD>
</TR>
<TR>
<TD>TempDir</TD>
<TD></TD>
</TR>
<TR>
<TD>Timeout</TD>
<TD></TD>
@@ -523,7 +531,8 @@ capability/type bits:
<TR>
<TD>1</TD>
<TD>0 = local<BR>
1 = remote</TD>
1 = remote<BR>
(always 1)</TD>
</TR>
<TR>
<TD>2</TD>
Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 591 B

+139 -44
Ver Arquivo
@@ -24,8 +24,11 @@ Copyright 1997-1999, All Rights Reserved<BR>
<UL>
<LI><A HREF=#2_1>The Printing Problem</A></LI>
<LI><A HREF=#2_2>The Technology</A></LI>
<LI><A HREF=#2_3>Filters</A></LI>
<LI><A HREF=#2_4>Printer Drivers</A></LI>
<LI><A HREF=#2_3>Jobs</A></LI>
<LI><A HREF=#2_4>Classes</A></LI>
<LI><A HREF=#2_5>Filters</A></LI>
<LI><A HREF=#2_6>Printer Drivers</A></LI>
<LI><A HREF=#2_7>Networking</A></LI>
</UL>
<B><A HREF=#3>2 - Building and Installing CUPS</A></B>
<UL>
@@ -48,31 +51,35 @@ Copyright 1997-1999, All Rights Reserved<BR>
<LI><A HREF=#4_3>Removing Printers</A></LI>
<LI><A HREF=#4_4>Printer Classes</A></LI>
<LI><A HREF=#4_5>Setting the Default Printer</A></LI>
<LI><A HREF=#4_6>Starting and Stopping Printers</A></LI>
<LI><A HREF=#4_7>Accepting and Rejecting Print Jobs</A></LI>
</UL>
<B><A HREF=#5>4 - Printing System Management</A></B>
<UL>
<LI><A HREF=#5_1>Network Configuration</A></LI>
<LI><A HREF=#5_1>Changing the Configuration Files</A></LI>
<LI><A HREF=#5_2>Temporary Files</A></LI>
<LI><A HREF=#5_3>Network Configuration</A></LI>
<UL>
<LI><A HREF=#5_1_1>Port</A></LI>
<LI><A HREF=#5_1_2>Listen</A></LI>
<LI><A HREF=#5_1_3>BrowsePort</A></LI>
<LI><A HREF=#5_1_4>BrowseAddress</A></LI>
<LI><A HREF=#5_3_1>Port</A></LI>
<LI><A HREF=#5_3_2>Listen</A></LI>
<LI><A HREF=#5_3_3>BrowsePort</A></LI>
<LI><A HREF=#5_3_4>BrowseAddress</A></LI>
</UL>
<LI><A HREF=#5_2>Printer Security</A></LI>
<LI><A HREF=#5_4>Printer Security</A></LI>
<UL>
<LI><A HREF=#5_2_1>Location</A></LI>
<LI><A HREF=#5_2_2>Order</A></LI>
<LI><A HREF=#5_2_3>Allow</A></LI>
<LI><A HREF=#5_2_4>Deny</A></LI>
<LI><A HREF=#5_2_5>AuthType</A></LI>
<LI><A HREF=#5_2_6>AuthClass</A></LI>
<LI><A HREF=#5_2_7>AuthGroupName</A></LI>
<LI><A HREF=#5_2_8>SystemGroup</A></LI>
<LI><A HREF=#5_4_1>Location</A></LI>
<LI><A HREF=#5_4_2>Order</A></LI>
<LI><A HREF=#5_4_3>Allow</A></LI>
<LI><A HREF=#5_4_4>Deny</A></LI>
<LI><A HREF=#5_4_5>AuthType</A></LI>
<LI><A HREF=#5_4_6>AuthClass</A></LI>
<LI><A HREF=#5_4_7>AuthGroupName</A></LI>
<LI><A HREF=#5_4_8>SystemGroup</A></LI>
</UL>
<LI><A HREF=#5_3>File Formats</A></LI>
<LI><A HREF=#5_5>File Formats</A></LI>
<UL>
<LI><A HREF=#5_3_1>mime.types</A></LI>
<LI><A HREF=#5_3_2>mime.convs</A></LI>
<LI><A HREF=#5_5_1>mime.types</A></LI>
<LI><A HREF=#5_5_2>mime.convs</A></LI>
</UL>
</UL>
<B><A HREF=#6>5 - Printer Accounting</A></B>
@@ -157,7 +164,17 @@ using their web browser. </P>
Basic authentication and domain or IP-based access control. Digest
authentication and TLS encryption will be available in future versions
of CUPS. </P>
<H2><A NAME=2_3>Filters</A></H2>
<H2><A NAME=2_3>Jobs</A></H2>
<P>Each file that is submitted for printing is called a <I>job</I>.
Jobs are identified by a unique number starting at 1 and are assigned
to a particular destination (usually a printer). Jobs can also have
options associated with them such as media size, number of copies, and
priority. </P>
<H2><A NAME=2_4>Classes</A></H2>
<P>CUPS supports collections of printers known as <I>classes</I>. Jobs
sent to a class are forwarded to the first available printer in the
class. </P>
<H2><A NAME=2_5>Filters</A></H2>
<P>Filters allow a user or application to print many types of files
without extra effort. Print jobs sent to a CUPS server are filtered
before sending them to a printer. Some filters convert job files to
@@ -173,12 +190,28 @@ printer. </P>
<P>CUPS provides backends for printing over parallel and serial ports,
and over the network via the JetDirect (AppSocket), Server Message
Block, and Line Printer Daemon protocols. </P>
<H2><A NAME=2_4>Printer Drivers</A></H2>
<H2><A NAME=2_6>Printer Drivers</A></H2>
<P>Printer drivers in CUPS consist of one of more filters specific to a
printer. CUPS includes a sample printer driver for Hewlett-Packard
LaserJet and DeskJet printers. While this driver does not generate
optimal output for different printer models, it does demonstrate how
you can write your own printer drivers and incorporate them into CUPS. </P>
<H2><A NAME=2_7>Networking</A></H2>
<P>Printers and classes on the local system are automatically shared
with other systems on the network. This allows you to setup one system
to print to a printer and use this system as a printer server or spool
host for all of the others. If there is only one occurrence of a
printer on a network, then that printer can be accessed using its name
alone. If more than one printer exists with the same name, users must
select the printer by specifying which server to use (e.g.
&quot;printer@host1&quot; or &quot;printer@host2&quot;.) </P>
<P>CUPS also provides <I>implicit classes</I>, which are collections of
printers and/or classes with the same name. This allows you to setup
multiple servers pointing to the same physical network printer, for
example, so that you aren't relying on a single system for printing.
Because this also works with printer classes, you can setup multiple
servers and printers and never worry about a &quot;single point of failure&quot;
unless all of the printers and servers goes down! </P>
<H1 ALIGN=RIGHT><A NAME=3>2 - Building and Installing CUPS</A></H1>
<P>This chapter shows how to build and install the Common UNIX Printing
System. If you are installing a binary distribution from the CUPS web
@@ -297,7 +330,7 @@ administration tasks from the command-line. Since <CODE>lpadmin</CODE>
command with the &quot;-p&quot; option: </P>
<UL>
<PRE>
% /usr/lib/lpadmin -p<I>printer</I> -v<I>device</I> -P<I>ppd</I> ENTER
% /usr/lib/lpadmin -p<I>printer</I> -E -v<I>device</I> -P<I>ppd</I> ENTER
</PRE>
</UL>
<P>Spaces between the option letter and value are optional. </P>
@@ -312,6 +345,7 @@ 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>
<DD>Sends all output to the specified IPP printer or server. The <I>
port</I> parameters defaults to 631. </DD>
@@ -345,7 +379,7 @@ files and interface scripts located in the <CODE>/usr/share/cups/model</CODE>
directory with the &quot;-m&quot; option: </P>
<UL>
<PRE>
% /usr/lib/lpadmin -p<I>printer</I> -v<I>device</I> -m<I>model</I> ENTER
% /usr/lib/lpadmin -p<I>printer</I> -E -v<I>device</I> -m<I>model</I> ENTER
</PRE>
</UL>
<P>The <I>model</I> argument specifies the name of the PPD file or
@@ -354,7 +388,7 @@ DeskJet series driver connected to parallel port 1 under Linux you
would use: </P>
<UL>
<PRE>
% /usr/lib/lpadmin -pDeskJet -vparallel:/dev/par1 -mdeskjet.ppd ENTER
% /usr/lib/lpadmin -pDeskJet -E -vparallel:/dev/par1 -mdeskjet.ppd ENTER
</PRE>
</UL>
<H2><A NAME=4_3>Removing Printers</A></H2>
@@ -392,21 +426,82 @@ remove a class just use the &quot;-x&quot; option: </P>
</PRE>
</UL>
<P>The <I>destination</I> argument is the name of the printer or class. </P>
<H2><A NAME=4_6>Starting and Stopping Printers</A></H2>
<P>The <CODE>enable</CODE> and <CODE>disable</CODE> commands start and
stop printer queues, respectively: </P>
<UL>
<PRE>
% /usr/bin/enable <I>printer</I> ENTER
% /usr/bin/disable <I>printer</I> ENTER
</PRE>
</UL>
<P>Printers that are disabled may still accept jobs for printing, but
won't actually print any files until they are restarted. This is useful
if the printer malfunctions and you need time to correct the problem.
Any queues jobs are printed after the printer is enabled (started). </P>
<H2><A NAME=4_7>Accepting and Rejecting Print Jobs</A></H2>
<P>The <CODE>accept</CODE> and <CODE>reject</CODE> commands accept and
reject print jobs for the named printer, respectively: </P>
<UL>
<PRE>
% /usr/lib/accept <I>printer</I> ENTER
% /usr/lib/reject <I>printer</I> ENTER
</PRE>
</UL>
<P>As noted above, a printer can be stopped but accepting new print
jobs. A printer can also be rejecting new print jobs while it finishes
those that have been queued. This is useful for when you must perform
maintenance on the printer and will not have it available to users for
a long period of time. </P>
<H1 ALIGN=RIGHT><A NAME=5>4 - Printing System Management</A></H1>
<P>This chapter shows how you can configure the CUPS server. </P>
<H2><A NAME=5_1>Network Configuration</A></H2>
<H2><A NAME=5_1>Changing the Configuration Files</A></H2>
<P>All of the server configuration files are located in the <CODE>
/var/cups/conf</CODE> directory. Once you have made a change to a file
you need to restart the CUPS server by sending it a HUP signal or using
the supplied script &quot;<CODE>cups.sh</CODE>&quot;: </P>
<UL>
<PRE>
% ./cups.sh restart ENTER
</PRE>
</UL>
<P>The binary distribution installs the script in the <CODE>init.d</CODE>
directory with the name <CODE>lp</CODE> or <CODE>lpd</CODE> depending
on the vendor-supplied printing system. </P>
<H2><A NAME=5_2>Temporary Files</A></H2>
<P>Normally CUPS puts all of its temporary files in <CODE>/var/tmp</CODE>
. If you'd like to change this directory you'll need to edit the <CODE>
/var/cups/conf/cupsd.conf</CODE> file. </P>
<P>Start by creating the new temporary directory and setting the
appropriate permissions: </P>
<UL>
<PRE>
% mkdir <I>/foo/bar/tmp</I> ENTER
% chmod a+rwxt <I>/foo/bar/tmp</I> ENTER
</PRE>
</UL>
<P>Then change the line containing the <CODE>TempDir</CODE> directive
in the <CODE>cupsd.conf</CODE> to the directory that you've created: </P>
<UL>
<PRE>
TempDir <I>/foo/bar/tmp</I>
</PRE>
</UL>
<P>Finally, restart the server as outlined in the first section of this
chapter. </P>
<H2><A NAME=5_3>Network Configuration</A></H2>
<P>The default configuration of the CUPS server listens for connections
from all network interfaces on port 631 (the standard IPP port).
Administration functions are limited to local connections with the
appropriate username and password. </P>
<P>If you'd like to limit access to your system you'll need to edit the <CODE>
/var/cups/conf/cupsd.conf</CODE> file. </P>
<H3><A NAME=5_1_1>Port</A></H3>
<H3><A NAME=5_3_1>Port</A></H3>
<P>The <CODE>Port</CODE> directive specifies a port to listen on for
all interfaces. Besides the standard IPP port (631) you can also setup
your server to listen on the HTTP port (80) to use your CUPS server as
a standard web server as well. </P>
<H3><A NAME=5_1_2>Listen</A></H3>
<H3><A NAME=5_3_2>Listen</A></H3>
<P>The <CODE>Listen</CODE> directive specifies a listening address and
port, extending the functionality of the <CODE>Port</CODE> directive.
If you want to allow connections only from the local machine you can
@@ -418,9 +513,9 @@ Listen 127.0.0.1:631
</UL>
<P>instead of the <CODE>Port</CODE> directive. </P>
<P>If you want to limit access to a specific network/subnet, make sure
you specific only the network address and not your system's network
you specify only the network address and not your system's network
address! </P>
<H3><A NAME=5_1_3>BrowsePort</A></H3>
<H3><A NAME=5_3_3>BrowsePort</A></H3>
<P>The <CODE>BrowsePort</CODE> directive controls which port is
monitored for remote printers. By default it is set to the IPP port
(631), however you can change it as needed. </P>
@@ -428,7 +523,7 @@ monitored for remote printers. By default it is set to the IPP port
<P>You must set the <CODE>BrowsePort</CODE> to the same value on all
of the systems that you want to see. </P>
</UL>
<H3><A NAME=5_1_4>BrowseAddress</A></H3>
<H3><A NAME=5_3_4>BrowseAddress</A></H3>
<P>The <CODE>BrowseAddress</CODE> directive specifies a broadcast
address to use when sending printer status updates over the network.
The default browse address is <CODE>255.255.255.255</CODE> which will
@@ -438,10 +533,10 @@ send printer information to all subnets. </P>
bits, printer browsing (and in fact all broadcast reception) will not
work. This problem appears to be fixed in HP-UX 11.0. </P>
</UL>
<H2><A NAME=5_2>Printer Security</A></H2>
<H2><A NAME=5_4>Printer Security</A></H2>
<P>CUPS provides IP and domain-name based access control and Basic
authentication for authentication. </P>
<H3><A NAME=5_2_1>Location</A></H3>
<H3><A NAME=5_4_1>Location</A></H3>
<P>The <CODE>Location</CODE> directive defines access control for a
specific HTTP directory. The following pseudo directories are provided
by the CUPS server: </P>
@@ -472,7 +567,7 @@ Allow From 127.0.0.1
&lt;/Location&gt;
</PRE>
</UL>
<H3><A NAME=5_2_2>Order</A></H3>
<H3><A NAME=5_4_2>Order</A></H3>
<P>The <CODE>Order</CODE> directive defines the default access control.
The following values are supported: </P>
<UL>
@@ -483,7 +578,7 @@ listed in an <CODE>Allow</CODE> directive. </LI>
</UL>
<P>The <CODE>Order</CODE> directive must appear inside a <CODE>Location</CODE>
directive. </P>
<H3><A NAME=5_2_3>Allow</A></H3>
<H3><A NAME=5_4_3>Allow</A></H3>
<P>The <CODE>Allow</CODE> directive specifies a hostname, IP address,
or network that is allowed access to the server: </P>
<UL>
@@ -506,7 +601,7 @@ Allow</CODE> directives can be used to allow access for multiple hosts
or networks. </P>
<P>The <CODE>Allow</CODE> directive must appear inside a <CODE>Location</CODE>
directive. </P>
<H3><A NAME=5_2_4>Deny</A></H3>
<H3><A NAME=5_4_4>Deny</A></H3>
<P>The <CODE>Deny</CODE> directive specifies a hostname, IP address, or
network that is allowed access to the server: </P>
<UL>
@@ -528,7 +623,7 @@ Deny from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
directives can be used to allow access for multiple hosts or networks. </P>
<P>The <CODE>Deny</CODE> directive must appear inside a <CODE>Location</CODE>
directive. </P>
<H3><A NAME=5_2_5>AuthType</A></H3>
<H3><A NAME=5_4_5>AuthType</A></H3>
<P>The <CODE>AuthType</CODE> directive defines the type of
authentication to perform: </P>
<UL>
@@ -539,7 +634,7 @@ using the UNIX password and group files. </LI>
</UL>
<P>The <CODE>AuthType</CODE> directive must appear inside a <CODE>
Location</CODE> directive. </P>
<H3><A NAME=5_2_6>AuthClass</A></H3>
<H3><A NAME=5_4_6>AuthClass</A></H3>
<P>The <CODE>AuthClass</CODE> directive defines what level of <CODE>
Basic</CODE> access is required: </P>
<UL>
@@ -555,21 +650,21 @@ AuthGroupName</CODE> directive. </LI>
</UL>
<P>The <CODE>AuthClass</CODE> directive must appear inside a <CODE>
Location</CODE> directive. </P>
<H3><A NAME=5_2_7>AuthGroupName</A></H3>
<H3><A NAME=5_4_7>AuthGroupName</A></H3>
<P>The <CODE>AuthGroupName</CODE> directive sets the group to use for <CODE>
Group</CODE> authentication. </P>
<P>The <CODE>AuthGroupName</CODE> directive must appear inside a <CODE>
Location</CODE> directive. </P>
<H3><A NAME=5_2_8>SystemGroup</A></H3>
<H3><A NAME=5_4_8>SystemGroup</A></H3>
<P>The <CODE>SystemGroup</CODE> directive sets the administration group
used when authenticating the <CODE>System</CODE> type. It defaults to
the &quot;sys&quot; group. </P>
<H2><A NAME=5_3>File Formats</A></H2>
<H2><A NAME=5_5>File Formats</A></H2>
<P>CUPS provides a MIME-based file typing and filtering mechanism to
convert files to a printable format for each printer. The <CODE>
mime.types</CODE> and <CODE>mime.convs</CODE> files define the file
type and filters that are available on the system. </P>
<H3><A NAME=5_3_1>mime.types</A></H3>
<H3><A NAME=5_5_1>mime.types</A></H3>
<P>The <CODE>mime.types</CODE> defines the known file types. Each line
of the file starts with the MIME type and may be followed by one or
more file type recognition rules. For example, the <CODE>text/html</CODE>
@@ -605,13 +700,13 @@ the file type based upon the contents of the file instead. </P>
to string </LI>
<LI><CODE>char(offset,value)</CODE> - True if byte is identical </LI>
<LI><CODE>short(offset,value)</CODE> - True if 16-bit integer is
identical </LI>
identical (network or &quot;big-endian&quot; byte order) </LI>
<LI><CODE>int(offset,value)</CODE> - True if 32-bit integer is
identical </LI>
identical (network or &quot;big-endian&quot; byte order) </LI>
<LI><CODE>locale(&quot;string&quot;)</CODE> - True if current locale matches
string </LI>
</UL>
<H3><A NAME=5_3_2>mime.convs</A></H3>
<H3><A NAME=5_5_2>mime.convs</A></H3>
<P>The <CODE>mime.convs</CODE> file defines all of the filter programs
that are known to the system. Each line consists of: </P>
<UL>
+771 -631
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+108 -6
Ver Arquivo
@@ -98,6 +98,19 @@ web browser.
authentication and domain or IP-based access control. Digest authentication
and TLS encryption will be available in future versions of CUPS.
<H2>Jobs</H2>
<P>Each file that is submitted for printing is called a <I>job</I>.
Jobs are identified by a unique number starting at 1 and are assigned
to a particular destination (usually a printer). Jobs can also have
options associated with them such as media size, number of copies, and
priority.
<H2>Classes</H2>
<P>CUPS supports collections of printers known as <I>classes</I>. Jobs sent
to a class are forwarded to the first available printer in the class.
<H2>Filters</H2>
<P>Filters allow a user or application to print many types of files
@@ -126,6 +139,24 @@ LaserJet and DeskJet printers. While this driver does not generate
optimal output for different printer models, it does demonstrate how
you can write your own printer drivers and incorporate them into CUPS.
<H2>Networking</H2>
<P>Printers and classes on the local system are automatically shared with
other systems on the network. This allows you to setup one system to print
to a printer and use this system as a printer server or spool host for all
of the others. If there is only one occurrence of a printer on a network,
then that printer can be accessed using its name alone. If more than one
printer exists with the same name, users must select the printer by specifying
which server to use (e.g. "printer@host1" or "printer@host2".)
<P>CUPS also provides <I>implicit classes</I>, which are collections of
printers and/or classes with the same name. This allows you to setup multiple
servers pointing to the same physical network printer, for example, so that
you aren't relying on a single system for printing. Because this also works
with printer classes, you can setup multiple servers and printers and never
worry about a "single point of failure" unless all of the printers and servers
goes down!
<H1 ALIGN=RIGHT>2 - Building and Installing CUPS</H1>
<P>This chapter shows how to build and install the Common UNIX Printing System.
@@ -264,7 +295,7 @@ is also a System V printing system command, it is located in the
with the "-p" option:
<UL><PRE>
% /usr/lib/lpadmin -p<I>printer</I> -v<I>device</I> -P<I>ppd</I> ENTER
% /usr/lib/lpadmin -p<I>printer</I> -E -v<I>device</I> -P<I>ppd</I> ENTER
</PRE></UL>
<P>Spaces between the option letter and value are optional.
@@ -284,6 +315,7 @@ CUPS:
<DT>/dev/filename
<DD>Sends all output to the specified file.
<DT>http://hostname[:port]/resource
<DT>ipp://hostname[:port]/resource
<DD>Sends all output to the specified IPP printer or server.
The <I>port</I> parameters defaults to 631.
@@ -328,7 +360,7 @@ and interface scripts located in the <CODE>/usr/share/cups/model</CODE>
directory with the "-m" option:
<UL><PRE>
% /usr/lib/lpadmin -p<I>printer</I> -v<I>device</I> -m<I>model</I> ENTER
% /usr/lib/lpadmin -p<I>printer</I> -E -v<I>device</I> -m<I>model</I> ENTER
</PRE></UL>
<P>The <I>model</I> argument specifies the name of the PPD file or interface
@@ -336,7 +368,7 @@ script. For example, to add a printer using the sample HP DeskJet series
driver connected to parallel port 1 under Linux you would use:
<UL><PRE>
% /usr/lib/lpadmin -pDeskJet -vparallel:/dev/par1 -mdeskjet.ppd ENTER
% /usr/lib/lpadmin -pDeskJet -E -vparallel:/dev/par1 -mdeskjet.ppd ENTER
</PRE></UL>
<H2>Removing Printers</H2>
@@ -379,10 +411,80 @@ command with the "-d" option:
<P>The <I>destination</I> argument is the name of the printer or class.
<H2>Starting and Stopping Printers</H2>
<P>The <CODE>enable</CODE> and <CODE>disable</CODE> commands start and stop
printer queues, respectively:
<UL><PRE>
% /usr/bin/enable <I>printer</I> ENTER
% /usr/bin/disable <I>printer</I> ENTER
</PRE></UL>
<P>Printers that are disabled may still accept jobs for printing, but won't
actually print any files until they are restarted. This is useful if the
printer malfunctions and you need time to correct the problem. Any queues
jobs are printed after the printer is enabled (started).
<H2>Accepting and Rejecting Print Jobs</H2>
<P>The <CODE>accept</CODE> and <CODE>reject</CODE> commands accept and reject
print jobs for the named printer, respectively:
<UL><PRE>
% /usr/lib/accept <I>printer</I> ENTER
% /usr/lib/reject <I>printer</I> ENTER
</PRE></UL>
<P>As noted above, a printer can be stopped but accepting new print
jobs. A printer can also be rejecting new print jobs while it finishes
those that have been queued. This is useful for when you must perform
maintenance on the printer and will not have it available to users for
a long period of time.
<H1 ALIGN=RIGHT>4 - Printing System Management</H1>
<P>This chapter shows how you can configure the CUPS server.
<H2>Changing the Configuration Files</H2>
<P>All of the server configuration files are located in the
<CODE>/var/cups/conf</CODE> directory. Once you have made a change to a
file you need to restart the CUPS server by sending it a HUP signal or
using the supplied script "<CODE>cups.sh</CODE>":
<UL><PRE>
% ./cups.sh restart ENTER
</PRE></UL>
<P>The binary distribution installs the script in the
<CODE>init.d</CODE> directory with the name <CODE>lp</CODE> or
<CODE>lpd</CODE> depending on the vendor-supplied printing system.
<H2>Temporary Files</H2>
<P>Normally CUPS puts all of its temporary files in <CODE>/var/tmp</CODE>.
If you'd like to change this directory you'll need to edit the
<CODE>/var/cups/conf/cupsd.conf</CODE> file.
<P>Start by creating the new temporary directory and setting the appropriate
permissions:
<UL><PRE>
% mkdir <I>/foo/bar/tmp</I> ENTER
% chmod a+rwxt <I>/foo/bar/tmp</I> ENTER
</PRE></UL>
<P>Then change the line containing the <CODE>TempDir</CODE> directive in
the <CODE>cupsd.conf</CODE> to the directory that you've created:
<UL><PRE>
TempDir <I>/foo/bar/tmp</I>
</PRE></UL>
<P>Finally, restart the server as outlined in the first section of this
chapter.
<H2>Network Configuration</H2>
<P>The default configuration of the CUPS server listens for connections from
@@ -413,7 +515,7 @@ Listen 127.0.0.1:631
<P>instead of the <CODE>Port</CODE> directive.
<P>If you want to limit access to a specific network/subnet, make sure you
specific only the network address and not your system's network address!
specify only the network address and not your system's network address!
<H3>BrowsePort</H3>
@@ -677,10 +779,10 @@ the file type based upon the contents of the file instead.
<LI><CODE>char(offset,value)</CODE> - True if byte is identical
<LI><CODE>short(offset,value)</CODE> - True if 16-bit integer
is identical
is identical (network or "big-endian" byte order)
<LI><CODE>int(offset,value)</CODE> - True if 32-bit integer is
identical
identical (network or "big-endian" byte order)
<LI><CODE>locale("string")</CODE> - True if current locale
matches string
+1 -1
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:19990521210321Z)/Title(DRAFT - CUPS Software Design Description)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990621185446Z)/Title(DRAFT - CUPS Software 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/Courier-Oblique/Encoding 2 0 R>>endobj
+81 -16
Ver Arquivo
@@ -26,17 +26,16 @@ Copyright 1997-1999, All Rights Reserved<BR>
<LI><A HREF=#2_1>2.1 CUPS Documentation</A></LI>
<LI><A HREF=#2_2>2.2 Other Documents</A></LI>
</UL>
<B><A HREF=#3>3 Risk Identification</A></B>
<B><A HREF=#3>3 3 - Local Access Risks</A></B>
<UL>
<LI><A HREF=#3_1>3.1 Local Access Risks</A></LI>
<LI><A HREF=#3_2>3.2 Remote Access Risks</A></LI>
</UL>
<B><A HREF=#4>4 Risk Assessment</A></B>
<LI><A HREF=#3_1>3.1 Security Breaches</A></LI>
<UL>
<LI><A HREF=#4_1>4.1 Local Access Risks</A></LI>
<LI><A HREF=#4_2>4.2 Remote Access Risks</A></LI>
<LI><A HREF=#4_0_1>4.0.1 Denial of Service Attacks</A></LI>
<LI><A HREF=#4_0_2>4.0.2 Security Breaches</A></LI>
</UL>
<B><A HREF=#5>A Glossary</A></B>
</UL>
<B><A HREF=#4>4 4 - Remote Access Risks</A></B><B><A HREF=#5>A Glossary</A>
</B>
<UL>
<LI><A HREF=#5_1>A.1 Terms</A></LI>
<LI><A HREF=#5_2>A.2 Acronyms</A></LI>
@@ -69,8 +68,8 @@ sections:</P>
<UL>
<LI>1 - Scope</LI>
<LI>2 - References</LI>
<LI>3 - Risk Identification</LI>
<LI>4 - Risk Assessment</LI>
<LI>3 - Local Access Risks</LI>
<LI>4 - Remote Access Risks</LI>
<LI>A - Glossary</LI>
</UL>
<H1><A NAME=2>2 References</A></H1>
@@ -97,12 +96,78 @@ sections:</P>
<LI>IPP/1.0: Model and Semantics </LI>
<LI>RFC 1179, Line Printer Daemon Protocol </LI>
</UL>
<H1><A NAME=3>3 Risk Identification</A></H1>
<H2><A NAME=3_1>3.1 Local Access Risks</A></H2>
<H2><A NAME=3_2>3.2 Remote Access Risks</A></H2>
<H1><A NAME=4>4 Risk Assessment</A></H1>
<H2><A NAME=4_1>4.1 Local Access Risks</A></H2>
<H2><A NAME=4_2>4.2 Remote Access Risks</A></H2>
<H1><A NAME=3>3 3 - Local Access Risks</A></H1>
<P>Local access risks are those that can be exploited only with a local
user account. This section does not address issues related to
dissemination of the root password or other security issues associated
with the UNIX operating system. </P>
<H2><A NAME=3_1>3.1 Security Breaches</A></H2>
<P>Since the default installation creates a world-readable request
directory, it is possible for local users to read the contents of print
files before they are printed. </P>
<P>This problem can be alleviated by making the request directory
readable only by the user specified in the CUPS configuration file. </P>
<H1><A NAME=4>4 4 - Remote Access Risks</A></H1>
<P>Remote access risks are those that can be exploited without a local
user account and/or from a remote system. This section does not address
issues related to network or firewall security. </P>
<H3><A NAME=4_0_1>4.0.1 Denial of Service Attacks</A></H3>
<P>Like all internet services, the CUPS server is vulnerable to denial
of service attacks, including: </P>
<OL>
<LI>Establishing multiple connections to the server until the server
will accept no more.
<P>This cannot be protected against by the current software. It is
possible that future versions of the CUPS software could be configured
to limit the number of connections allowed from a single host, however
that still would not prevent a determined attack. </P>
</LI>
<LI>Repeatedly opening and closing connections to the server as fast
as possible.
<P>There is no easy way of protecting against this in the CUPS
software. If the attack is coming from outside the local network it
might be possible to filter such an attack, however once the
connection request has been received by the server it must at least
accept the connection to find out who is connecting. </P>
</LI>
<LI>Flooding the network with broadcast packets on port 631.
<P>It might be possible to disable browsing if this condition is
detected by the CUPS software, however if there are large numbers of
printers available on the network such an algorithm might think that
an attack was occurring when instead a valid update was being
received. </P>
</LI>
<LI>Sending partial IPP requests; specifically, sending part of an
attribute value and then stopping transmission.
<P>The current code is structured to read and write the IPP request
data on-the-fly, so there is no easy way to protect against this for
large attribute values. </P>
</LI>
<LI>Sending large/long print jobs to printers, preventing other users
from printing.
<P>There are limited facilities for protecting against large print
jobs (the <CODE>MaxRequestSize</CODE> attribute), however this will
not protect printers from malicious users and print files that
generate hundreds or thousands of pages. In general, we recommend
restricting printer access to known hosts or networks, and adding
user-level access control as needed for expensive printers. </P>
</LI>
</OL>
<H3><A NAME=4_0_2>4.0.2 Security Breaches</A></H3>
<P>The current CUPS server only supports Basic authentication with
usernames and passwords. This essentially places the clear text of the
username and password on the network. Since CUPS uses the UNIX username
and password account information, the authentication information could
be used to gain access to accounts (possibly priviledged accounts) on
the server. </P>
<P>The default CUPS configuration disables remote administration. We do
not recommend that remote administration be enabled for all hosts,
however if you have a trusted network or subnet access can be
restricted accordingly. </P>
<P>The next minor release of CUPS will support Digest authentication of
the entire message body using separate MD5-based username and password
files. This will protect password information and prevent unauthorized
access due to compromised account passwords. </P>
<H1 TYPE=A VALUE=1><A NAME=5>A Glossary</A></H1>
<H2><A NAME=5_1>A.1 Terms</A></H2>
<DL>
+306 -307
Ver Arquivo
@@ -1,61 +1,62 @@
%PDF-1.2
%âãÏÓ
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990521210323Z)/Title(DRAFT - CUPS Software Security Report)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990624171525Z)/Title(DRAFT - CUPS Software Security Report)/Author(Easy Software Products)>>endobj
2 0 obj<</Type/Encoding/BaseEncoding/WinAnsiEncoding>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Roman/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Bold/Encoding 2 0 R>>endobj
5 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Italic/Encoding 2 0 R>>endobj
6 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica/Encoding 2 0 R>>endobj
7 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica-Bold/Encoding 2 0 R>>endobj
8 0 obj<</Type/Font/Subtype/Type1/BaseFont/Symbol>>endobj
9 0 obj<</Subtype/Link/Rect[72.0 673.2 80.2 686.2]/Border[0 0 0]/Dest[82 0 R/XYZ null 818 0]>>endobj
10 0 obj<</Subtype/Link/Rect[80.2 673.2 107.8 686.2]/Border[0 0 0]/Dest[82 0 R/XYZ null 818 0]>>endobj
11 0 obj<</Subtype/Link/Rect[108.0 660.0 124.5 673.0]/Border[0 0 0]/Dest[82 0 R/XYZ null 737 0]>>endobj
12 0 obj<</Subtype/Link/Rect[124.5 660.0 183.8 673.0]/Border[0 0 0]/Dest[82 0 R/XYZ null 737 0]>>endobj
13 0 obj<</Subtype/Link/Rect[108.0 646.8 124.5 659.8]/Border[0 0 0]/Dest[82 0 R/XYZ null 658 0]>>endobj
14 0 obj<</Subtype/Link/Rect[124.5 646.8 159.6 659.8]/Border[0 0 0]/Dest[82 0 R/XYZ null 658 0]>>endobj
15 0 obj<</Subtype/Link/Rect[159.6 646.8 203.0 659.8]/Border[0 0 0]/Dest[82 0 R/XYZ null 658 0]>>endobj
16 0 obj<</Subtype/Link/Rect[108.0 633.6 124.5 646.6]/Border[0 0 0]/Dest[82 0 R/XYZ null 434 0]>>endobj
17 0 obj<</Subtype/Link/Rect[124.5 633.6 173.1 646.6]/Border[0 0 0]/Dest[82 0 R/XYZ null 434 0]>>endobj
18 0 obj<</Subtype/Link/Rect[173.1 633.6 216.4 646.6]/Border[0 0 0]/Dest[82 0 R/XYZ null 434 0]>>endobj
19 0 obj<</Subtype/Link/Rect[72.0 607.2 80.2 620.2]/Border[0 0 0]/Dest[88 0 R/XYZ null 818 0]>>endobj
20 0 obj<</Subtype/Link/Rect[80.2 607.2 131.6 620.2]/Border[0 0 0]/Dest[88 0 R/XYZ null 818 0]>>endobj
21 0 obj<</Subtype/Link/Rect[108.0 594.0 124.5 607.0]/Border[0 0 0]/Dest[88 0 R/XYZ null 737 0]>>endobj
22 0 obj<</Subtype/Link/Rect[124.5 594.0 154.8 607.0]/Border[0 0 0]/Dest[88 0 R/XYZ null 737 0]>>endobj
23 0 obj<</Subtype/Link/Rect[154.8 594.0 222.6 607.0]/Border[0 0 0]/Dest[88 0 R/XYZ null 737 0]>>endobj
24 0 obj<</Subtype/Link/Rect[108.0 580.8 124.5 593.8]/Border[0 0 0]/Dest[88 0 R/XYZ null 540 0]>>endobj
25 0 obj<</Subtype/Link/Rect[124.5 580.8 152.3 593.8]/Border[0 0 0]/Dest[88 0 R/XYZ null 540 0]>>endobj
26 0 obj<</Subtype/Link/Rect[152.3 580.8 202.4 593.8]/Border[0 0 0]/Dest[88 0 R/XYZ null 540 0]>>endobj
27 0 obj<</Subtype/Link/Rect[72.0 554.4 80.2 567.4]/Border[0 0 0]/Dest[94 0 R/XYZ null 818 0]>>endobj
28 0 obj<</Subtype/Link/Rect[80.2 554.4 104.4 567.4]/Border[0 0 0]/Dest[94 0 R/XYZ null 818 0]>>endobj
29 0 obj<</Subtype/Link/Rect[104.4 554.4 168.0 567.4]/Border[0 0 0]/Dest[94 0 R/XYZ null 818 0]>>endobj
30 0 obj<</Subtype/Link/Rect[108.0 541.2 124.5 554.2]/Border[0 0 0]/Dest[94 0 R/XYZ null 737 0]>>endobj
31 0 obj<</Subtype/Link/Rect[124.5 541.2 152.3 554.2]/Border[0 0 0]/Dest[94 0 R/XYZ null 737 0]>>endobj
32 0 obj<</Subtype/Link/Rect[152.3 541.2 186.2 554.2]/Border[0 0 0]/Dest[94 0 R/XYZ null 737 0]>>endobj
33 0 obj<</Subtype/Link/Rect[186.2 541.2 210.7 554.2]/Border[0 0 0]/Dest[94 0 R/XYZ null 737 0]>>endobj
34 0 obj<</Subtype/Link/Rect[108.0 528.0 124.5 541.0]/Border[0 0 0]/Dest[94 0 R/XYZ null 679 0]>>endobj
35 0 obj<</Subtype/Link/Rect[124.5 528.0 161.5 541.0]/Border[0 0 0]/Dest[94 0 R/XYZ null 679 0]>>endobj
36 0 obj<</Subtype/Link/Rect[161.5 528.0 195.4 541.0]/Border[0 0 0]/Dest[94 0 R/XYZ null 679 0]>>endobj
37 0 obj<</Subtype/Link/Rect[195.4 528.0 219.8 541.0]/Border[0 0 0]/Dest[94 0 R/XYZ null 679 0]>>endobj
38 0 obj<</Subtype/Link/Rect[72.0 501.6 80.2 514.6]/Border[0 0 0]/Dest[100 0 R/XYZ null 818 0]>>endobj
39 0 obj<</Subtype/Link/Rect[80.2 501.6 104.4 514.6]/Border[0 0 0]/Dest[100 0 R/XYZ null 818 0]>>endobj
40 0 obj<</Subtype/Link/Rect[104.4 501.6 158.2 514.6]/Border[0 0 0]/Dest[100 0 R/XYZ null 818 0]>>endobj
41 0 obj<</Subtype/Link/Rect[108.0 488.4 124.5 501.4]/Border[0 0 0]/Dest[100 0 R/XYZ null 737 0]>>endobj
42 0 obj<</Subtype/Link/Rect[124.5 488.4 152.3 501.4]/Border[0 0 0]/Dest[100 0 R/XYZ null 737 0]>>endobj
43 0 obj<</Subtype/Link/Rect[152.3 488.4 186.2 501.4]/Border[0 0 0]/Dest[100 0 R/XYZ null 737 0]>>endobj
44 0 obj<</Subtype/Link/Rect[186.2 488.4 210.7 501.4]/Border[0 0 0]/Dest[100 0 R/XYZ null 737 0]>>endobj
45 0 obj<</Subtype/Link/Rect[108.0 475.2 124.5 488.2]/Border[0 0 0]/Dest[100 0 R/XYZ null 679 0]>>endobj
46 0 obj<</Subtype/Link/Rect[124.5 475.2 161.5 488.2]/Border[0 0 0]/Dest[100 0 R/XYZ null 679 0]>>endobj
47 0 obj<</Subtype/Link/Rect[161.5 475.2 195.4 488.2]/Border[0 0 0]/Dest[100 0 R/XYZ null 679 0]>>endobj
48 0 obj<</Subtype/Link/Rect[195.4 475.2 219.8 488.2]/Border[0 0 0]/Dest[100 0 R/XYZ null 679 0]>>endobj
49 0 obj<</Subtype/Link/Rect[72.0 448.8 82.7 461.8]/Border[0 0 0]/Dest[106 0 R/XYZ null 818 0]>>endobj
50 0 obj<</Subtype/Link/Rect[82.7 448.8 124.2 461.8]/Border[0 0 0]/Dest[106 0 R/XYZ null 818 0]>>endobj
51 0 obj<</Subtype/Link/Rect[108.0 435.6 126.9 448.6]/Border[0 0 0]/Dest[106 0 R/XYZ null 737 0]>>endobj
52 0 obj<</Subtype/Link/Rect[126.9 435.6 155.0 448.6]/Border[0 0 0]/Dest[106 0 R/XYZ null 737 0]>>endobj
53 0 obj<</Subtype/Link/Rect[108.0 422.4 126.9 435.4]/Border[0 0 0]/Dest[106 0 R/XYZ null 434 0]>>endobj
54 0 obj<</Subtype/Link/Rect[126.9 422.4 172.8 435.4]/Border[0 0 0]/Dest[106 0 R/XYZ null 434 0]>>endobj
55 0 obj[9 0 R
10 0 R
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
5 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Bold/Encoding 2 0 R>>endobj
6 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Italic/Encoding 2 0 R>>endobj
7 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica/Encoding 2 0 R>>endobj
8 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica-Bold/Encoding 2 0 R>>endobj
9 0 obj<</Type/Font/Subtype/Type1/BaseFont/Symbol>>endobj
10 0 obj<</Subtype/Link/Rect[72.0 673.2 80.2 686.2]/Border[0 0 0]/Dest[83 0 R/XYZ null 818 0]>>endobj
11 0 obj<</Subtype/Link/Rect[80.2 673.2 107.8 686.2]/Border[0 0 0]/Dest[83 0 R/XYZ null 818 0]>>endobj
12 0 obj<</Subtype/Link/Rect[108.0 660.0 124.5 673.0]/Border[0 0 0]/Dest[83 0 R/XYZ null 737 0]>>endobj
13 0 obj<</Subtype/Link/Rect[124.5 660.0 183.8 673.0]/Border[0 0 0]/Dest[83 0 R/XYZ null 737 0]>>endobj
14 0 obj<</Subtype/Link/Rect[108.0 646.8 124.5 659.8]/Border[0 0 0]/Dest[83 0 R/XYZ null 658 0]>>endobj
15 0 obj<</Subtype/Link/Rect[124.5 646.8 159.6 659.8]/Border[0 0 0]/Dest[83 0 R/XYZ null 658 0]>>endobj
16 0 obj<</Subtype/Link/Rect[159.6 646.8 203.0 659.8]/Border[0 0 0]/Dest[83 0 R/XYZ null 658 0]>>endobj
17 0 obj<</Subtype/Link/Rect[108.0 633.6 124.5 646.6]/Border[0 0 0]/Dest[83 0 R/XYZ null 434 0]>>endobj
18 0 obj<</Subtype/Link/Rect[124.5 633.6 173.1 646.6]/Border[0 0 0]/Dest[83 0 R/XYZ null 434 0]>>endobj
19 0 obj<</Subtype/Link/Rect[173.1 633.6 216.4 646.6]/Border[0 0 0]/Dest[83 0 R/XYZ null 434 0]>>endobj
20 0 obj<</Subtype/Link/Rect[72.0 607.2 80.2 620.2]/Border[0 0 0]/Dest[89 0 R/XYZ null 818 0]>>endobj
21 0 obj<</Subtype/Link/Rect[80.2 607.2 131.6 620.2]/Border[0 0 0]/Dest[89 0 R/XYZ null 818 0]>>endobj
22 0 obj<</Subtype/Link/Rect[108.0 594.0 124.5 607.0]/Border[0 0 0]/Dest[89 0 R/XYZ null 737 0]>>endobj
23 0 obj<</Subtype/Link/Rect[124.5 594.0 154.8 607.0]/Border[0 0 0]/Dest[89 0 R/XYZ null 737 0]>>endobj
24 0 obj<</Subtype/Link/Rect[154.8 594.0 222.6 607.0]/Border[0 0 0]/Dest[89 0 R/XYZ null 737 0]>>endobj
25 0 obj<</Subtype/Link/Rect[108.0 580.8 124.5 593.8]/Border[0 0 0]/Dest[89 0 R/XYZ null 540 0]>>endobj
26 0 obj<</Subtype/Link/Rect[124.5 580.8 152.3 593.8]/Border[0 0 0]/Dest[89 0 R/XYZ null 540 0]>>endobj
27 0 obj<</Subtype/Link/Rect[152.3 580.8 202.4 593.8]/Border[0 0 0]/Dest[89 0 R/XYZ null 540 0]>>endobj
28 0 obj<</Subtype/Link/Rect[72.0 554.4 80.2 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
29 0 obj<</Subtype/Link/Rect[80.2 554.4 88.5 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
30 0 obj<</Subtype/Link/Rect[88.5 554.4 97.5 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
31 0 obj<</Subtype/Link/Rect[97.5 554.4 126.5 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
32 0 obj<</Subtype/Link/Rect[126.5 554.4 160.5 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
33 0 obj<</Subtype/Link/Rect[160.5 554.4 186.1 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
34 0 obj<</Subtype/Link/Rect[108.0 541.2 124.5 554.2]/Border[0 0 0]/Dest[95 0 R/XYZ null 690 0]>>endobj
35 0 obj<</Subtype/Link/Rect[124.5 541.2 163.9 554.2]/Border[0 0 0]/Dest[95 0 R/XYZ null 690 0]>>endobj
36 0 obj<</Subtype/Link/Rect[163.9 541.2 204.2 554.2]/Border[0 0 0]/Dest[95 0 R/XYZ null 690 0]>>endobj
37 0 obj<</Subtype/Link/Rect[144.0 528.0 168.8 541.0]/Border[0 0 0]/Dest[101 0 R/XYZ null 689 0]>>endobj
38 0 obj<</Subtype/Link/Rect[168.8 528.0 200.8 541.0]/Border[0 0 0]/Dest[101 0 R/XYZ null 689 0]>>endobj
39 0 obj<</Subtype/Link/Rect[200.8 528.0 212.7 541.0]/Border[0 0 0]/Dest[101 0 R/XYZ null 689 0]>>endobj
40 0 obj<</Subtype/Link/Rect[212.7 528.0 248.5 541.0]/Border[0 0 0]/Dest[101 0 R/XYZ null 689 0]>>endobj
41 0 obj<</Subtype/Link/Rect[248.5 528.0 282.1 541.0]/Border[0 0 0]/Dest[101 0 R/XYZ null 689 0]>>endobj
42 0 obj<</Subtype/Link/Rect[144.0 514.8 168.8 527.8]/Border[0 0 0]/Dest[101 0 R/XYZ null 247 0]>>endobj
43 0 obj<</Subtype/Link/Rect[168.8 514.8 208.2 527.8]/Border[0 0 0]/Dest[101 0 R/XYZ null 247 0]>>endobj
44 0 obj<</Subtype/Link/Rect[208.2 514.8 248.5 527.8]/Border[0 0 0]/Dest[101 0 R/XYZ null 247 0]>>endobj
45 0 obj<</Subtype/Link/Rect[72.0 488.4 80.2 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
46 0 obj<</Subtype/Link/Rect[80.2 488.4 88.5 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
47 0 obj<</Subtype/Link/Rect[88.5 488.4 97.5 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
48 0 obj<</Subtype/Link/Rect[97.5 488.4 136.3 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
49 0 obj<</Subtype/Link/Rect[136.3 488.4 170.2 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
50 0 obj<</Subtype/Link/Rect[170.2 488.4 195.9 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
51 0 obj<</Subtype/Link/Rect[72.0 462.0 82.7 475.0]/Border[0 0 0]/Dest[107 0 R/XYZ null 818 0]>>endobj
52 0 obj<</Subtype/Link/Rect[82.7 462.0 124.2 475.0]/Border[0 0 0]/Dest[107 0 R/XYZ null 818 0]>>endobj
53 0 obj<</Subtype/Link/Rect[108.0 448.8 126.9 461.8]/Border[0 0 0]/Dest[107 0 R/XYZ null 737 0]>>endobj
54 0 obj<</Subtype/Link/Rect[126.9 448.8 155.0 461.8]/Border[0 0 0]/Dest[107 0 R/XYZ null 737 0]>>endobj
55 0 obj<</Subtype/Link/Rect[108.0 435.6 126.9 448.6]/Border[0 0 0]/Dest[107 0 R/XYZ null 434 0]>>endobj
56 0 obj<</Subtype/Link/Rect[126.9 435.6 172.8 448.6]/Border[0 0 0]/Dest[107 0 R/XYZ null 434 0]>>endobj
57 0 obj[10 0 R
11 0 R
12 0 R
13 0 R
@@ -100,43 +101,44 @@
52 0 R
53 0 R
54 0 R
55 0 R
56 0 R
]endobj
56 0 obj<</Dests 57 0 R>>endobj
57 0 obj<</Kids[58 0 R]>>endobj
58 0 obj<</Limits[(1)(5_2)]/Names[(1)59 0 R(1_1)60 0 R(1_2)61 0 R(1_3)62 0 R(2)63 0 R(2_1)64 0 R(2_2)65 0 R(3)66 0 R(3_1)67 0 R(3_2)68 0 R(4)69 0 R(4_1)70 0 R(4_2)71 0 R(5)72 0 R(5_1)73 0 R(5_2)74 0 R]>>endobj
59 0 obj<</D[82 0 R/XYZ null 818 null]>>endobj
60 0 obj<</D[82 0 R/XYZ null 737 null]>>endobj
61 0 obj<</D[82 0 R/XYZ null 658 null]>>endobj
62 0 obj<</D[82 0 R/XYZ null 434 null]>>endobj
63 0 obj<</D[88 0 R/XYZ null 818 null]>>endobj
64 0 obj<</D[88 0 R/XYZ null 737 null]>>endobj
65 0 obj<</D[88 0 R/XYZ null 540 null]>>endobj
66 0 obj<</D[94 0 R/XYZ null 818 null]>>endobj
67 0 obj<</D[94 0 R/XYZ null 737 null]>>endobj
68 0 obj<</D[94 0 R/XYZ null 679 null]>>endobj
69 0 obj<</D[100 0 R/XYZ null 818 null]>>endobj
70 0 obj<</D[100 0 R/XYZ null 737 null]>>endobj
71 0 obj<</D[100 0 R/XYZ null 679 null]>>endobj
72 0 obj<</D[106 0 R/XYZ null 818 null]>>endobj
73 0 obj<</D[106 0 R/XYZ null 737 null]>>endobj
74 0 obj<</D[106 0 R/XYZ null 434 null]>>endobj
75 0 obj<</Type/Pages/MediaBox[0 0 595 792]/Count 14/Kids[76 0 R
79 0 R
112 0 R
115 0 R
82 0 R
85 0 R
88 0 R
91 0 R
94 0 R
97 0 R
100 0 R
103 0 R
106 0 R
109 0 R
58 0 obj<</Dests 59 0 R>>endobj
59 0 obj<</Kids[60 0 R]>>endobj
60 0 obj<</Limits[(1)(5_2)]/Names[(1)61 0 R(1_1)62 0 R(1_2)63 0 R(1_3)64 0 R(2)65 0 R(2_1)66 0 R(2_2)67 0 R(3)68 0 R(3_1)69 0 R(4)70 0 R(4_0_1)71 0 R(4_0_2)72 0 R(5)73 0 R(5_1)74 0 R(5_2)75 0 R]>>endobj
61 0 obj<</D[83 0 R/XYZ null 818 null]>>endobj
62 0 obj<</D[83 0 R/XYZ null 737 null]>>endobj
63 0 obj<</D[83 0 R/XYZ null 658 null]>>endobj
64 0 obj<</D[83 0 R/XYZ null 434 null]>>endobj
65 0 obj<</D[89 0 R/XYZ null 818 null]>>endobj
66 0 obj<</D[89 0 R/XYZ null 737 null]>>endobj
67 0 obj<</D[89 0 R/XYZ null 540 null]>>endobj
68 0 obj<</D[95 0 R/XYZ null 818 null]>>endobj
69 0 obj<</D[95 0 R/XYZ null 690 null]>>endobj
70 0 obj<</D[101 0 R/XYZ null 818 null]>>endobj
71 0 obj<</D[101 0 R/XYZ null 689 null]>>endobj
72 0 obj<</D[101 0 R/XYZ null 247 null]>>endobj
73 0 obj<</D[107 0 R/XYZ null 818 null]>>endobj
74 0 obj<</D[107 0 R/XYZ null 737 null]>>endobj
75 0 obj<</D[107 0 R/XYZ null 434 null]>>endobj
76 0 obj<</Type/Pages/MediaBox[0 0 595 792]/Count 14/Kids[77 0 R
80 0 R
113 0 R
116 0 R
83 0 R
86 0 R
89 0 R
92 0 R
95 0 R
98 0 R
101 0 R
104 0 R
107 0 R
110 0 R
]>>endobj
76 0 obj<</Type/Page/Parent 75 0 R/Contents 77 0 R/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F4 3 0 R/F8 6 0 R/F9 7 0 R>>>>>>endobj
77 0 obj<</Length 78 0 R/Filter/FlateDecode>>stream
77 0 obj<</Type/Page/Parent 76 0 R/Contents 78 0 R/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
78 0 obj<</Length 79 0 R/Filter/FlateDecode>>stream
xÚíßÜ8rÇ%µúÅOšÙíwNH€ØîO{Ï@pgF›ì[I¢‡]_r‡ öÎë½`ÿûô¯éÖRª*R57<à°¶Én~Äâ·ŠdQý·W7b½ýßøîV¼ÿ ~üßW÷òU"_ýM¼_ÿîíwû|ÿáÃÛµøÝÇ··âööæíݾÖïòÿ|÷ûìßîÅæ_×ûò~_>ìËÇ}yØ—ï÷å÷ÿõîñõ˯Ÿßý‡¸{óîßÅæææÝ=<ˆ;ñÃã«âyxá2+òñv¹\^]ìÊö?–wSç’Ë‹ÈS•‹ËëÇirÉÛ+5R ny71.yÛÅôT.¯“©pᡎhwSàz¸òÈÅ_&ŽsÝG¯\næºåRÙ4Gpf¬ìŽ™e®á™—oǸò+ÏJñ¯âºõ¬•`ã žÍrí—±^Ø2K\òʳ^ü×£så‘×Gùfd®{¯§$crÝx½3—e´ncmËëQ¸däy.“BX-ßÎ5 &€Åƒ)`1ÀÀiÉà‹LËóVqõî·Ì4›k`¬-X2×Ú¼p}òF(³Þ¹2o”òmÏ\y4AÁ}…giLA
ÚÑ ê£såÞ¨eÓW4.rŠÁ2Ç‹Á4<Yì‰\r|,ÏïK8Àå…Ö¹2ω²±Ì%#7¸Ë\kÏ‘²°Ê•yΔÄ"—+Vˆrb®Øs¨l¬qå.auJLO4PQLP40QL*ÒÀk=–+u
«cÀ`z0˜ Æcœ3ŽKºˆÕ×Ã51Ã`z.5Ã`¸áº¸\._?îÊýîâC¿ƒ ùº9Éw÷ z¸ü–¤ùpÕÏ€AßÃuÙ¹Tº7@[p­ûªò¨-­‡õÐãpÒ%77xÃæb‡´tq&ÙŒËÅ
@@ -169,285 +171,282 @@ w
N#îâ2‰ç+ÿ gµ8M°¬š¤­ªKâšÇöÉ„Ãp¥ç?R` š¤­ªKâ
ËnnÆÕ‘~xúçüb[%±JJw¤ôuI\»û_§Ç´è•+ÐýÃŽ§”TܶÕçÇIº›Â«Þ¸"]:ÎñL9/ÁD-©;x®õñóvŸ¼éë n4qcP™FÚº$®ø(C;KOzã:žu^nÔÖ>“âIεuI\pÎ~õ‹Þ¸N!z£·‡~ˆJ¾X_WÉÕLìÜS¤Çùºs_ýq•òAj½Ÿ¼ÍÉëëR¸²£¬wlÆÕv®W®Wy/qÚÌ¢ÕÖ¥påÇ?îܲ!WÛ9l¬¼ÇQY'u)\Ò;½}ÞÎet¾,µ™¥¢‘Õ¢¯Kà*ŽŽyÿ·ýqÕ²hý¤1’!¢.…ëà˜÷n¹O®Ò‹¶ªª™ÓÕ¥ps¶÷ñ}r=]„mäR©’M[ë⸎9Û×7ãêÌûºT³F(Šº.Þ/ïÝ`²û¿ƒËF>ÛÃUsQ“j9ªº®to{·Ü?×¹·³Z(µAÕ%póÞ-Áõ$
vÒ´Õ%póÞ-raß-šµ‹A[]—|òbó¡¸Î‰×Ý\µº®ƒc>ˆd+—I>öîU2«ª+ÖrµÕ¥pmM0ÈÏû§½pUÝ+tnvêêR¸¶’ágÇhÈ•àö;¸ÚêR¸v#ÕõÆTlËoåÒÕ¥pÁá2¬ßÅerïFTþY´ê|[]
Wz¸Y˜s­Ú—_‹ò:d¦åj«KáÊÎN½7®´<žëÚ×Ô:ÛV—•ŸW­\&÷mý»ó¡ÖJËÕV·#ž¯¼mKVO
Wz¸Y˜s­Ú—_‹ò:d¦åj«KáÊÎN½7®´<žëÚ×Ô:ÛV—•ŸW­\&÷mý»ó¡ÖJËÕV·#ž¯¼mKVO
¸ç°çCHýb±­.…«ô^Øþ¸â–µZ«¥.‰Kฌîeç-Uë\-u\‰9×—nSý±Š¾.‰+nüM\¹^a\9w?ªJ§§ÒÊeôþê^Ì·E+—¾.‰K÷~V»\¥Î^\Úº$®ìäÓÛ¹Œ6²wÞè*Ò”˜Ô5*†ïí9ÊÏë
óS|†ïYr¶¾ë…kx®î×-O“+þ‡åJ&ÉÕ½Á±™$—É‚ù…kx.£…夹æ“ä’ÿ°\á$¹º`³gÊL“+z†¯áïq¼pÀµ~†/îw|V“ä‚gÊ•>ÃÑðwÍÆ*]/{]þÝX¥«Ë+Üï:H¥v¸œ ¤º¤.1ü]αJŒâŠ&pt…Øß½u-à]ö…üb×vÚ¢.=@þ®´k‡‡â‚©²Óß"ßܱ€#ÃqMî÷èÓÎaL´åœc†ÎisuÎ1¯;e0òâœn 0îÀ9 ø]s`Ýa ìÕ1–w« ôű•eÖ­Þ€òŽ9°´»³€zŽ9°¸Û¸e°Ž­ÀÖÝQ âHǘè9À §[Bè+àSBŸ#l p#ë”Ðg-œÂ8%ô€ÒWÕ)¡]äк$ôaZ€œŠ.EôQ·ûzâ’z‰‘n(°B?ŸŒ®J\b:‚˜bf C.‡1Æ(X¡÷¦"‡~™+›Ž ¢
´Ð;!樈
´Ð‡‘Ãy™ !ôŽ ì
´Ð;!樈
´Ð‡‘Ãy™ !ôŽ ì
´Ð;"k”Z=]ޱú*q¥‰¤:…àp”^èÃIÈFPåB}0 Ù«\ˆ­²1¯q‰iG„SÀ?'"‰|ø€7\'„#CzY ´pA8bd¡ ¢›Ù*0«s!Ñόݮ€‚"ˆs÷§×ªÁO`‚¡ï‚a?Ä
pŒ=ÁÐïh€‚$#O°îG?Sp ç'HÆ;ö[£'
w‚á# 9‡‘'X†_J)VyN¤¢#‡ˆ„Sp(ˆÂ1â£ÒmœG]ƒQ΀ØpÌMŽ˜Ð9 ê蘛”­v NÌ•>§L ŽôˆJOÚ‘jÓñ”^PºT%m·M4
¨Ss4CDØÒL˵v×iÛ/PÐ'ØÂQ3,ÇB@vé#bJ3$ ¯pF2Ä5íyÝŠG1DI ]¼ÄÇSâㆂ1ÁFˆqz@Á™`¡‹fXYiçÁ ¿XI©
¨Ss4CDØÒL˵v×iÛ/PÐ'ØÂQ3,ÇB@vé#bJ3$ ¯pF2Ä5íyÝŠG1DI ]¼ÄÇSâㆂ1ÁFˆqz@Á™`¡‹fXYiçÁ ¿XI©
Î|Õ,¨jk
œd™‘½¬ 6° ‹ÉsXC>°rHz€5EV
œåöÐ1‡ Ï àl sd Þ$Tê׌ ÌÇ3 ÔKÎcîç ÇÜi:Ü€±¦;peu°ÃõfŽàB*ý@±ž1ð?j˜c† ÀŸ©Ã ë€í°”éL/AƒÈ)Qà¸ÖX°•Ã5CreŽ ˜Œ¸A8F†Xû©¥qB
Õ*
3Cìuá,ùV…™!öªõا»@sá
±GéÈ l
SCô“‘5^)^`&°}Zâ'o†Z.ém‰¹‘tAalˆ=i¢0ò¡`<i{òÎh+TïŒñ¬íÇ;ç†Öƾ¾—)&#CÙOÌþŠemúHÁÂĵïÅî _\P¹RÒ€ÙÔŠf…d.é&#ó vŒÜ&˜¾,™ƒÅ€Š4¯ .Ú7lË7KaK¨vJVa®Š7vLl¬W-‚ѰôñXÙ_(¹“ÍXz©[QÚ ìõ@JØ~ µÉT=ÈX-·ÑÀžç?[ÏóˆúE!›«ˆ8`õ_:G•[ú×lø\)‹Ëó糖Űø¶8 ‹‹9`žw™ô<Xík£N®ØãüÎ?Ö4.L¸¤Ç/—(k̯xŸ¾2â2°Ý<»î2Ç&UÇò¡›ËdÀhúϾ؟»0ä¢.ÔyýØ7ù°ŒLWaÊ•{vÊÅår¹|ý¸-ËåUdøi c.f½tå?b¸¤ƒ\ \f’8Êpá¸Ü°•¬{ë Ç%§6\H.©Í±¡‡ä*"—¸6ö¸²i
š‹µÓÑ“Æ'6¹rg¸…M.g´ç’ÑT4žÆÅÝÂA4h\NHö¼—Â%'c…4.,}tHâÝñY4®|"VHå9þ%`¹FµDJî •kLïL9~¢rØ“’æÈ\£M1ZÚ k¤)FL,cp3ňg» ®Q¦5Ë€ÃEIC3Ø\ƒk=UŽÇ5°v02™\R¸+…&\CŠ"+u˜Ë5/“ŒÍÅHûÄqs
´cÞ80àÂ?ûÜ‹&\ý›"?KÓˆ«o0ƒäS3®~UÑ$YØ«Om”mÊÕ˜Y2¾19‡º§…‰}®>–-†éêv¸ìË¢ù½ +\…´k‹×æ=²ÃµµE{Cl
œåöÐ1‡ Ï àl sd Þ$Tê׌ ÌÇ3 ÔKÎcîç ÇÜi:Ü€±¦;peu°ÃõfŽàB*ý@±ž1ð?j˜c† ÀŸ©Ã ë€í°”éL/AƒÈ)Qà¸ÖX°•Ã5CreŽ ˜Œ¸A8F†Xû©¥qB
Õ*
3Cìuá,ùV…™!öªõا»@sá
±GéÈ l
SCô“‘5^)^`&°}Zâ'o†Z.ém‰¹‘tAalˆ=i¢0ò¡`<i{òÎh+TïŒñ¬íÇ;ç†Öƾ¾—)&#CÙOÌþŠemúHÁÂĵïÅî _\P¹RÒ€ÙÔŠf…d.é&#ó vŒÜ&˜¾,™ƒÅ€Š4¯ .Ú7lË7KaK¨vJVa®Š7vLl¬W-‚ѰôñXÙ_(¹“ÍXz©[QÚ ìõ@JØ~ µÉT=ÈX-·ÑÀžç?[ÏóˆúE!›«ˆ8`õ_:G•[ú×lø\)‹Ëó糖Űø¶8 ‹‹9`žw™ô<Xík£N®ØãüÎ?Ö4.L¸¤Ç/—(k̯xŸ¾2â2°Ý<»î2Ç&UÇò¡›ËdÀhúϾ؟»0ä¢.ÔyýØ7ù°ŒLWaÊ•{vÊÅår¹|ý¸-ËåUdøi c.f½tå?b¸¤ƒ\ \f’8Êpá¸Ü°•¬{ë Ç%§6\H.©Í±¡‡ä*"—¸6ö¸²i
yåÎ`Ùä²4d—›Â5®BÞËàk[}±ÉÅO­>R]Ûë‰].ƒôjDêö˜\\2»T}pqÈ._ÛîC\ļxÙÃ{.úáÚ–G\v¼y×Ë×÷Ƶµƒ¼X>öõÝ}rí‡ívy¡§ëÇ>¿·o®ÃÀín8,¯.vår¹¼~|ìý+á¡@òëôÕ½|õîûâæ£›ïÞ~wë·wBþôOÙ§ï¥x#
š‹µÓÑ“Æ'6¹rg¸…M.g´ç’ÑT4žÆÅÝÂA4h\NHö¼—Â%'c…4.,}tHâÝñY4®|"VHå9þ%`¹FµDJî •kLïL9~¢rØ“’æÈ\£M1ZÚ k¤)FL,cp3ňg» ®Q¦5Ë€ÃEIC3Ø\ƒk=UŽÇ5°v02™\R¸+…&\CŠ"+u˜Ë5/“ŒÍÅHûÄqs
´cÞ80àÂ?ûÜ‹&\ý›"?KÓˆ«o0ƒäS3®~UÑ$YØ«Om”mÊÕ˜Y2¾19‡º§…‰}®>–-†éêv¸ìË¢ù½ +\…´k‹×æ=²ÃµµE{Cl
w¸
78 0 obj
6308
yåÎ`Ùä²4d—›Â5®BÞËàk[}±ÉÅO­>R]Ûë‰].ƒôjDêö˜\\2»T}pqÈ._ÛîC\ļxÙÃ{.úáÚ–G\v¼y×Ë×÷Ƶµƒ¼X>öõÝ}rí‡ívy¡§ëÇ>¿·o®ÃÀín8,¯.vår¹¼~|ìý+á¡@òëôÕ½|õîûâæ£›ïÞ~wë·wBþôOÙ§ï¥x#
ÈEþó¿þß¾|ùçýò§¯¿‰ìó_þòõŸåŸ·íïÄÍÍ®ýÍÝGñææýÛÛ]û]»7yž½¹y»ÞU{s³Ù~ú›ÛOþðËoç…/?ÿôë_ÙW¼{ÿöCés~þëo_þôßÿóuÛÉß½ÙþßÇŸþò‘íþò—mG~ùüåïŸÚ5MäéÿiÁñ½endstream
endobj
79 0 obj
6308
endobj
ár
80 0 obj<</Type/Page/Parent 76 0 R/Contents 81 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
81 0 obj<</Length 82 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
endobj
81 0 obj
ár
á
äHendstream
endobj
82 0 obj
31
endobj
/f_[ëU2jíÝ«QÒz$)LrtÑF«h¼k¦[×Þ°u-
83 0 obj<</Type/Page/Parent 76 0 R/Contents 84 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>>>endobj
84 0 obj<</Length 85 0 R/Filter/FlateDecode>>stream
UKo1¾ó+F9%RÙfè-o!¥í6ª.Æ;œx=[Û ¢¿¾c/Bi«TpÁóú¾o|o¥pÊŸÎ;Ðíƒ,[—“ÖûÛ!¤C˜léŸ÷`’§0–TáÉä¹±ž%ƒÆÞ>$G’Â(GãU¡¤ðŠLã܃4]»vúëd®8*üRX‡²¶Ê¯ÀbEÖCei¡rt …^9ö¦*rNÍôN€$#ÑYðs„+*K2ðøiô-ç’i7é„’™UŒÌ<Áxå<–0=>ºzÌÆGÓøŠÖ1ZH“Óä¿îpï³ þ¼@»P¸ü ÁWX`¿ú–"Ê"°ª6>Z¬ÐFJ!vÚ9ë+oE4º˜À%0ò0nå Ñ@Ž Ô‘Ãl7­`¼‘:³”×Ò;ð0”ä‘!8/L.l¾…àHסƒ…кa±@““
emËb….÷Aú’Õ­‰5L@Ýs“†lù~‘¸Åð†¥oeÉ]k—ÄP(”l³îTlÒqê6ÕDüƽ˜Ì&zí-7sò0{ìN²ŒÛ©Z÷…’±ü\J½ŠC¾úEC¾ÕXsQàfÑù ¸š2܈{…ÒÇùù‡ìþ<?Þ¥éõx~ñ¦<lÿˆDêáÖzýÆnÓ·b•
7U5åGlfºÊ•¹
}É÷êÖŽ5L (ºå²æû5ÄÀ%ÚÔúV–üÐÖÊ pI´…è’uÖŠ1§nR‚ŸA¿“Ùx’¤¹™£›Ém{”eÜNѸÏD›€ŸK‰§àéÁ3Í"ø^cÍE›µGç>àŠe¸×C§Ç÷Ùõ;x¸½JÓóáôäŒyØþO—šä »?^k¨pQUc~Ä8Ó*Wæ6íh¯¤««0 Ü´¥òs^îÿ(j#C#„æy?¨Ès,Ë’ìKÃ1Í,-] PdäüXZUù-'tñAEbGYvÍ‹ÐfÉpg(ÚìÆÊ …®«sU¥×[ï 696Ã{1³ç®K]7 kç©T?¸öb½Š¼íwŸán¾…>=楷|^ô
 TüîÕKN»Ó“=¼A¾%ª m*ïÚÃ(ã!$¿Ï0 YvbÃÌiïȶ–Õýý<tášd]2Ä?öîÿû†{gŸ„‰špiŠ]Ö´Œë‰q(܇&¿\çï ˜ï/­§þ9¼ÀW¼½{ÇåØF«CQœ°@VŸ·ôM¡]½'Ésr!9ÖÁƒr/oKÑ‹Õã©úïœãNóÿ‡°«Æ4X›Úhé°Û4fç®78M†œ9¼†ß7“Ö—ÖOªÏ8˜endstream
endobj
85 0 obj
824
endobj
84 0 obj
86 0 obj<</Type/Page/Parent 76 0 R/Contents 87 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
87 0 obj<</Length 88 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
85 0 obj<</Type/Page/Parent 75 0 R/Contents 86 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 6 0 R>>>>>>endobj
86 0 obj<</Length 87 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS041T072PIÑp rt QÐUp
VÎO+)O,JUNM.-Ê,©TJ-È/*Ñ ÉâÒiÒ…ê2‰˜˜˜é™)€ù†
ÁÉù© Q×®@.ü7 £endstream
endobj
áÒw³P04TIS041T072PIÑp rt QÐUp
VÎO+)O,JUNM.-Ê,©TJ-È/*Ñ ÉâÒiÒ…ê2‰˜˜˜é™)€ù†
ÁÉù© Q×®@.ü7 £endstream
endobj
88 0 obj
118
endobj
118
endobj
89 0 obj<</Type/Page/Parent 76 0 R/Contents 90 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>>>endobj
89 0 obj<</Length 90 0 R/Filter/FlateDecode>>stream
xÚ­•OÚ0Åï|Š9²Ò&K 7
l…T´) {ââÆp•ØÔ6Úòíkc•V%]å@Æ¿7ö¼?ZÀ „nòªõ)k=½ÄÄæMЃŒ¶CX`yŽê!ûîJžýÈyÏ‘ïÊüÆË$…‰ÈwrM4Ü-èAËþ+Ï6…(KñÎøÚ-¤— )µ.…o{ÐóU]3tàü#?<³Wa×Êm«àç‰ø¡Ó ^°õN:½9ád
90 0 obj<</Length 91 0 R/Filter/FlateDecode>>stream
xÚ­•OÚ0Åï|Š9²Ò&K 7
l…T´) {ââÆp•ØÔ6Úòíkc•V%]å@Æ¿7ö¼?ZÀ „nòªõ)k=½ÄÄæMЃŒ¶CX`yŽê!ûîJžýÈyÏ‘ïÊüÆË$…‰ÈwrM4Ü-èAËþ+Ï6…(KñÎøÚ-¤— )µ.…o{ÐóU]3tàü#?<³Wa×Êm«àç‰ø¡Ó ^°õN:½9ád
IIø5ß4tÄßà³Éäžî•Æ
f\£,HŽ0AÅÖÜÞrɶ糹G"Í­„ÿ³…~'aD+Æ™Òf/B*»—)ð¯·PÓ?¤õd~ H±–¤ª¬ w.n¡SÌw’é½±ïVHÝ€›%·¸ª¦I—˜ßRáÿŒímrûf¨ÖÛ¿Mîœ`ÏE§×)áUoPžb¬þ1Â\pï*Æ
f\£,HŽ0AÅÖÜÞrɶ糹G"Í­„ÿ³…~'aD+Æ™Òf/B*»—)ð¯·PÓ?¤õd~ H±–¤ª¬ w.n¡SÌw’é½±ïVHÝ€›%·¸ª¦I—˜ßRáÿŒímrûf¨ÖÛ¿Mîœ`ÏE§×)áUoPžb¬þ1Â\pï*Æ
l ™áÙt:… 
l ™áÙt:… 
üÞc° ç›Ý
¡×¶ŸU›JRèÕÃ]ç9K’§ÃÌG”2K$%¼nOèdxÆ^fì)ϵ=N!“„«»
¡×¶ŸU›JRèÕÃ]ç9K’§ÃÌG”2K$%¼nOèdxÆ^fì)ϵ=N!“„«»
zbͪmyøÕ²ú¼c›qæ‚byh(ÅŠ˜#ÌÕ] ÅËØ<âGøÂ8º1X¬ŒM̵ÈÅÑÛÑqÑÑ{aßúŸéE?6²æU×~žf­¯­_Ð&Ùûendstream
endobj
90 0 obj
zbͪmyøÕ²ú¼c›qæ‚byh(ÅŠ˜#ÌÕ] ÅËØ<âGøÂ8º1X¬ŒM̵ÈÅÑÛÑqÑÑ{aßúŸéE?6²æU×~žf­¯­_Ð&Ùûendstream
endobj
91 0 obj
522
endobj
92 0 obj<</Type/Page/Parent 76 0 R/Contents 93 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
93 0 obj<</Length 94 0 R/Filter/FlateDecode>>stream
endobj
91 0 obj<</Type/Page/Parent 75 0 R/Contents 92 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 6 0 R>>>>>>endobj
xÚ-‹Í1…÷÷)Î’E™[Ͱ5˜5Óë¤n3TE¼½©È9›óó=ˆQb,êâp£FhÞ®À ‰`ÇXÚ
ržl»u+0Ø÷~ˆù}J
¯á•.ùƒNïCÊS¹’)ùS®4Îò¬Æ/Ûñ5iôY¦Ð¾­u"§endstream
xÚ-‹Í1…÷÷)Î’E™[Ͱ5˜5Óë¤n3TE¼½©È9›óó=ˆQb,êâp£FhÞ®À ‰`ÇXÚ
ržl»u+0Ø÷~ˆù}J
¯á•.ùƒNïCÊS¹’)ùS®4Îò¬Æ/Ûñ5iôY¦Ð¾­u"§endstream
endobj
93 0 obj
121
endobj
94 0 obj
121
endobj
94 0 obj<</Type/Page/Parent 75 0 R/Contents 95 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 6 0 R/F9 7 0 R>>>>>>endobj
95 0 obj<</Length 96 0 R/Filter/FlateDecode>>stream
95 0 obj<</Type/Page/Parent 76 0 R/Contents 96 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
96 0 obj<</Length 97 0 R/Filter/FlateDecode>>stream
xÚ}RMÓ0½çWÌ$6M7m, ! Y‰«kO¶f;ëqXòï™±·TªŠ)Λ÷5~ª¸á§íÚôXÝõÕÛ{höÐü§Ûn 7¯ZhaŸƒVÞiDðÝÒ#½î2|MSà«v_w2P ª@£@AE„t
Â0Ð}Nñ—º0mÚ¦I–
7–\ ¤)¤Ú©Á…2«Ï¼?Ì“0”iD…º…YÈI“¢S`
$o•@+Gü=¹`Þ-ðlÓ ¸<>³O5ô'K@¨“
L@`Ù¦­×"«Œ‰¢h‰fDtJ¨SÃG8Z¯òxØB !Á¤ˆžCdŸF™£MË™†AÛÌ”ýÉèý—O?®ÄÄ‘éýÐB Ǻ´ÃeÞÖ»K?¥ÐºÃYæ.¢Ò'üw›ë5fYƒƒš]ë))çJÍóI|çpfÅŸFçÃ'öŸ8|äÞB\Þ€åY)YA úR6IS2}•L”uð }"énŠÖ'¬cÑ#2G6·äçŠuWçíM1°èxÞ=À_¥×ã£z”îò^®}ÃßHù–0Z`ù~ЄÚ–9¬—Ó+ëïï¿Äû`æXêß/»Ù]ºÞl»2ñ¿»¾ÙÝÔ{F3ìV¾?ôÕ·êšU
cendstream
endobj
97 0 obj
96 0 obj
450
endobj
98 0 obj<</Type/Page/Parent 76 0 R/Contents 99 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
97 0 obj<</Type/Page/Parent 75 0 R/Contents 98 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 6 0 R>>>>>>endobj
98 0 obj<</Length 99 0 R/Filter/FlateDecode>>stream
99 0 obj<</Length 100 0 R/Filter/FlateDecode>>stream
xÚ-Œ»Â0C÷ûa4$
¬åщÒËT!•ÊC$ñ÷4Ù‹-?I¢%¡L±»ÓšiÞ¬ %¸‡ÔËE>O¶¶n›Ó¡Eúüî¢GëÝ+ùë!æ)_HHü)SeôLã—Ôø±®»¡vΧ;¤k*³Ó‘¾WM%Õendstream
endobj
100 0 obj
130
132
endobj
101 0 obj<</Type/Page/Parent 76 0 R/Contents 102 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
101 0 obj<</Length 102 0 R/Filter/FlateDecode>>stream
uα
Â0à=Oñ:˜65i’±‚\,y¬Æ"×÷Ç«ÁADn:þï?î)jÛ`Û"f± ¢ê=”G¸pÒZp^i Wº¡#JD9=æu¹1N+S<ÝÑÅÈü]¥¥ð… )OsúQUï Ô稱,ÿ} ]-=3Îí²ïƒ8Џý7Ýendstream
endobj
102 0 obj<</Length 103 0 R/Filter/FlateDecode>>stream
…WKo7¾ûWÌÑ$Å’;nOMÚ"µ´_¨]JbÌ%7$×õ×÷›!Wu"€KäÌ|Ž¿œÍéÿæt½ Ë+ªš³wg¯?ÜÐü†ÖøæêzIõù’–4¥;Ýø¤é—ªÒ1Ò‰OñÕÃgœ_Ò|žÏO/ofW|£œUùl೤‚¦´õ‘ªD•r´Ò¤¿¶Ö›¤kê
¾í)²¾R–º¨Ç®~í­ƒop äðq“nf\rÏ/g Îý°5‘¢®’ñŽj¯#9u¸c‡‚¶Š“&ON§Þ‡'âð&è^YË×»`Òn– ž1.2Æåìb6§ß´3(Ö¯é^‡gS ”Tõn~7O`IŒK: ;²ÉÍ83š~ýôñ^>| yî¬ÓA­¬æbë}ºr‰TN7A¸Êvµq›Ÿ8õâ
MW3Ño>#þèü}Lˆ‡¨él2-¢VÞ¹ÌVä \BÉâ=þ 7(EmH¥Æ- ã>™Ðq™tèÛ(U1Õj£Œ‹øp'!ApÐP6úuêáÝ&ÆÛú e—¬»ÔÁ7H¥@Çå‘â™±x:[sj[
®‹ÌÖ4&If×5+€A¨cèPÄ÷8Z,ÁŠ€_Ód”n‹s̆sÒKN†Ü|dž…T·1Ž¡‹FBÕ”¹"-Š0wºÕlG»#ßBaÈÃSe=—ñ…T¤µ§êÀÛ7Ñ`ÅpVqG½Ú1ø¢Œ$+Ò$Öθ#Äâ ŽVù†¯2]#~ÐÄÑÔZÎçVZ 4f³ÍÆØëìÑw\Qìª-€—$ˆö®ÊÑDŒRý]h "VZ;ôw¥Í3¨/nú tÌW"«…¸læÓà¹$Àã¨ßzÀåκÍKQ/‹¨¬÷ÜŽÙs…
§oS'ØÚèêrþB¿ÛïV(SÑz±‰YgQ\m~a"NdÝS<'‘Ø5ÜOV…ÍÐ41G&ZæY+5xwr/¤ÝxŒÑmS <÷”ûF%,Îê¡ ¯x80¤~ -ÙšZ¡‹èYYSS×Öh9¹Ò|jû¥ˢŽv"E«Bâùyûñ#ÏÄŸ)¶º2k§ÚÝV9œe¸ÙÁ¬:$E–æL\ZL¾mqxÐlÈ›‚r±Á[†÷é¨÷ïòµ´fL¡«Ò0ª‚ EŽäeçL@¯ÀøŸO×R±/rš|D.·<—–?í÷5¾¬ñf|É盟rïµõL»‚>ûUÌ™²G&Ã@äÓž«”w=æ1+§†&z9³Ä}<¶y,«ÊX¸Zç‚¿1¼2†£2Ï™¹ü_”wøüõõ.óxoþÕ§ôùÇWߟúàLÂ<î3£ûž\
|ZßÅ–µÌ…aÒtÀFó»²·ÃnRÃ÷ã>ä…(ârn;µ$tëÊM;¡^³÷}Ó@ü.2™“Rΰ€A'ç{'Ïç:5ŽQr¥X•8—>µÀl‡0,)x˯ӺfU
œvý·'áÅÖ4Åvy²7-°-å
‹ÞÁíÕV_:î—ãÝÈ;<—±kypFz§¢©HuÜ– ­,óO¦-ãpªÑE#×`R6àâ Üú#*Z«*Ñ
140
endobj
éñX@yý5•dô$æh ÎèÞðË%EãBŽõéÏÛÓÁ†Õ×8°Ü ¼ Ž@}Ø}@F ÷Æ‘ JÌñsöx^ Ö½¯ >¾eê¿5Ñj½VØ(3ØaóÊE•‡*k»ª±9˜U¾žÑß¸í¥›f–ÉçÇ=¹-B8ŸÍÈ{µ˜ü°=à1Ûù«ªƒ6ò<9Úúc·â-|0¹ü]’ÝøöàÆÅõìæÿZ¾½À© >wÍ¿¿8ûëì?ˆ€lendstream
endobj
103 0 obj
104 0 obj<</Length 105 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
1455
endobj
104 0 obj<</Type/Page/Parent 76 0 R/Contents 105 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R>>>>>>endobj
105 0 obj<</Length 106 0 R/Filter/FlateDecode>>stream
xÚ]PÁRÂ0¼÷+ö¨‡–*ô*"7gâ„䕯i“š¤"~½IadÆÉ;ä½ì¾ÝìgÆPÆÃ°X¦’}¶æÙl[1ð&¾,모ÁÕ#œ–„”Ö)mŽÝ¹¸çY‰|¾,ª„â-ÁÐw@¯upÔ‘ðÛàéýu“î:øq¬ ØècÜ 1†–LÐRmM‚Æ=y/Ž„ƒUgŒ>jÂÓ œtUfbž”_6ù!j©#gDOFaÞŸ¢[4º#_€·Ú_l Î’á†Ð¦±®¿¸˜¨Ž¾¢
ŽÅÅ©ÅŹ©y`®!\\g$‘endstream
Œ&Y´Nÿú'“ˆ¡FB°K{í¯æ¶ÝOIͶõ5YV1ÔS°›Ýã–#¿´·M8‰øñ=ÉÑépÆŽRX‰œ'N¾š—‰U§ÉbUFS_éúÇZ;²%ŸPÏ<{Ë~AΜüendstream
endobj
106 0 obj
127
endobj
106 0 obj<</Type/Page/Parent 75 0 R/Contents 107 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 3 0 R/F6 5 0 R/F8 6 0 R/F9 7 0 R>>>>>>endobj
107 0 obj<</Length 108 0 R/Filter/FlateDecode>>stream
T]o›0}çWÜÇíZÒ4…Ç %i¤ªcJ}uÍ
õâf;‹òïwZ©ÝŠ¥N „uçžã{ð¯$‡Kºr¸™ÁÕ¸J¾µÉꄼ„vG•ÅÍÚîË6Ò8Çìékûs\gÅI¯‹le9´h•1 Èó€ Þt¶!ÕXšPZ7j8x´ ™î¬Çì=Qú>0ˤD9MØ î„îÁX°ÈQü‹ŽyÊXÿÌ4Ýà…Š7ÆÔé‘ uЂ3/ŒvÀ©F OèˆüÑÀ`Mo™r±v­`ÿåîžœá{ô1W$÷ìJ“|c÷S‘RžÒ«ò53Xrkô)eSm·)Š6„ÓÈÏtÇl•é«é©ÎŠèñ]=ÔÍt«Š<ÕÃýöj+´[ÛœœGá\5ÕE=Mºª›ï÷ˆ?7@ë"Ìë6»¡µL»
72Âv[§›»i¾[<Jô>­ß¡ˆgÁܽü”ã§Å+uô¼  ÿsJ̋ˬ¤ó
eX¯ÚäGòE8%endstream
endobj
108 0 obj
426
endobj
109 0 obj<</Type/Page/Parent 75 0 R/Contents 110 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 3 0 R/F6 5 0 R/F8 6 0 R>>>>>>endobj
110 0 obj<</Length 111 0 R/Filter/FlateDecode>>stream
’MSÂ0†ïý{ÔC+ÅRË‘v„¡C¤ñÄj¤$˜½IU“œö}v÷Ý}õBè˜Âml?ÝxCìÝd1„!à•
ÅI$€—W÷ÈG£Ù5~1ztÖýnDÎÓÚG„®‰ZR\h¦`$…V²‚厔ì“ð]Á¿@˜Ó”˜Ê§ßà')ÎÚáLC*J.0©×IE\„~mšµL¤¤–TV.b1ÿ‰H4—‚TPh"–ÆŒæª$‚¿7‚ƒ=CãvöÌL~²uLØÆ‰Ê'yÚÎÊw•æ¶äN&ä„W¾Ñg³-—¥ÎKCfÍ9+äšÉZTñ­>ÏÍê&àö±È‡íÔ‚©½!嬮m³ÃJÒµƒ…3ì8!¬øž›Ug¼b€õʰ/Ï(ùÊ‹ûÐKúAlóÆ‹A†Á‡Ñ#* +} ŠAÁèNq}„ÛJ¥mºF!øwÝŽÍ
;6…IЃ&0º0 JŠã¦¶RнïõG%¿endstream
endobj
111 0 obj
320
endobj
107 0 obj<</Type/Page/Parent 76 0 R/Contents 108 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
108 0 obj<</Length 109 0 R/Filter/FlateDecode>>stream
T]o›0}çWÜÇíZÒ4…Ç %i¤ªcJ}uÍ
õâf;‹òïwZ©ÝŠ¥N „uçžã{ð¯$‡Kºr¸™ÁÕ¸J¾µÉꄼ„vG•ÅÍÚîË6Ò8Çìékûs\gÅI¯‹le9´h•1 Èó€ Þt¶!ÕXšPZ7j8x´ ™î¬Çì=Qú>0ˤD9MØ î„îÁX°ÈQü‹ŽyÊXÿÌ4Ýà…Š7ÆÔé‘ uЂ3/ŒvÀ©F OèˆüÑÀ`Mo™r±v­`ÿåîžœá{ô1W$÷ìJ“|c÷S‘RžÒ«ò53Xrkô)eSm·)Š6„ÓÈÏtÇl•é«é©ÎŠèñ]=ÔÍt«Š<ÕÃýöj+´[ÛœœGá\5ÕE=Mºª›ï÷ˆ?7@ë"Ìë6»¡µL»
72Âv[§›»i¾[<Jô>­ß¡ˆgÁܽü”ã§Å+uô¼  ÿsJ̋ˬ¤ó
eX¯ÚäGòE8%endstream
endobj
109 0 obj
426
endobj
110 0 obj<</Type/Page/Parent 76 0 R/Contents 111 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F6 6 0 R/F8 7 0 R>>>>>>endobj
111 0 obj<</Length 112 0 R/Filter/FlateDecode>>stream
’MSÂ0†ïý{ÔC+ÅRË‘v„¡C¤ñÄj¤$˜½IU“œö}v÷Ý}õBè˜Âml?ÝxCìÝd1„!à•
ÅI$€—W÷ÈG£Ù5~1ztÖýnDÎÓÚG„®‰ZR\h¦`$…V²‚厔ì“ð]Á¿@˜Ó”˜Ê§ßà')ÎÚáLC*J.0©×IE\„~mšµL¤¤–TV.b1ÿ‰H4—‚TPh"–ÆŒæª$‚¿7‚ƒ=CãvöÌL~²uLØÆ‰Ê'yÚÎÊw•æ¶äN&ä„W¾Ñg³-—¥ÎKCfÍ9+äšÉZTñ­>ÏÍê&àö±È‡íÔ‚©½!嬮m³ÃJÒµƒ…3ì8!¬øž›Ug¼b€õʰ/Ï(ùÊ‹ûÐKúAlóÆ‹A†Á‡Ñ#* +} ŠAÁèNq}„ÛJ¥mºF!øwÝŽÍ
;6…IЃ&0º0 JŠã¦¶RнïõG%¿endstream
endobj
112 0 obj
383
endobj
113 0 obj<</Type/Page/Parent 76 0 R/Contents 114 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F5 5 0 R/F8 7 0 R/F9 8 0 R>>>>/Annots 57 0 R>>endobj
114 0 obj<</Length 115 0 R/Filter/FlateDecode>>stream
xÚ͘ێÛ6†ïý¼l/V+žt¸Üd»AImç…nÜ®¬TVìÛg†Z¤³¢T ÈÚ "†ü¸šÃ?”þ]q–Ãg¥`²`M»zµ]Ý>ÔŒ×l»g¼™`E©áºýøËv÷áѰnÏ^wÇÁ‡Ó¯Û¿W¿mWy–//ë78`…¬`YËðêîÙùÓû¿Øíƒfœãޏ¬v»q6‰‘-“:«b¾³eÓtŸ
x/…>X‘²@fûU/Ÿ͈ºí:Z×ÿf~Â:±Yã²HŸä¾Í@IøÁ2•R@I•
{xœìf$-QÙÀ
œÀÐŽ°e*Ûã¼ÊNpa‚ÈÄo¡²©@‹|h§0ˆª¬ Ð]DZg J8&£™†_aK”a¨„cÚéÂ.:ôZ;Æ… 4ÝE¯¯¶E\m)‡3|î’Ø–É­Mq¶¿ýcÑ3}ò°éhFÎû§¦ëíóë~äz¥9ùèDå9üÍ$2ƒ…‚™Sl%QÁ°¶¢x¿a¨(0#ioÚz.g]¾¯Ò× ÿò²€†äÞ1âe‰zÕ©æª$·¾™ ÑPUÛœŸç<+„m3+ó¬÷éÍC‰Ùf5­ œc–Üooöä-ñÿÍìšãåס5dgªíéòL¶æ{ÓúS
®‘½-˜»zóïÍÿ®@endstream
endobj
114 0 obj
1058
endobj
115 0 obj<</Type/Page/Parent 75 0 R/Contents 116 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 6 0 R>>>>>>endobj
116 0 obj<</Length 117 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS041T072PIÑp rt QÐUp
VÎO+)O,JUNM.-Ê,©TJ-È/*Ñ ÉâÒiÒ…êÊÌ ¹†pr‡Âµendstream
endobj
117 0 obj
103
endobj
118 0 obj<</Count 6/First 119 0 R/Last 133 0 R>>endobj
119 0 obj<</Parent 118 0 R/Title(Table of Contents)/Dest[112 0 R/XYZ null 756 null]/Next 120 0 R>>endobj
120 0 obj<</Parent 118 0 R/Count -3/First 121 0 R/Last 123 0 R/Title(1 Scope)/Dest[82 0 R/XYZ null 743 null]/Prev 119 0 R/Next 124 0 R>>endobj
121 0 obj<</Parent 120 0 R/Title(1.1 Identification)/Dest[82 0 R/XYZ null 693 null]/Next 122 0 R>>endobj
122 0 obj<</Parent 120 0 R/Title(1.2 System Overview)/Dest[82 0 R/XYZ null 613 null]/Prev 121 0 R/Next 123 0 R>>endobj
123 0 obj<</Parent 120 0 R/Title(1.3 Document Overview)/Dest[82 0 R/XYZ null 389 null]/Prev 122 0 R>>endobj
124 0 obj<</Parent 118 0 R/Count -2/First 125 0 R/Last 126 0 R/Title(2 References)/Dest[88 0 R/XYZ null 743 null]/Prev 120 0 R/Next 127 0 R>>endobj
125 0 obj<</Parent 124 0 R/Title(2.1 CUPS Documentation)/Dest[88 0 R/XYZ null 693 null]/Next 126 0 R>>endobj
126 0 obj<</Parent 124 0 R/Title(2.2 Other Documents)/Dest[88 0 R/XYZ null 495 null]/Prev 125 0 R>>endobj
127 0 obj<</Parent 118 0 R/Count -2/First 128 0 R/Last 129 0 R/Title(3 Risk Identification)/Dest[94 0 R/XYZ null 743 null]/Prev 124 0 R/Next 130 0 R>>endobj
128 0 obj<</Parent 127 0 R/Title(3.1 Local Access Risks)/Dest[94 0 R/XYZ null 693 null]/Next 129 0 R>>endobj
129 0 obj<</Parent 127 0 R/Title(3.2 Remote Access Risks)/Dest[94 0 R/XYZ null 634 null]/Prev 128 0 R>>endobj
130 0 obj<</Parent 118 0 R/Count -2/First 131 0 R/Last 132 0 R/Title(4 Risk Assessment)/Dest[100 0 R/XYZ null 743 null]/Prev 127 0 R/Next 133 0 R>>endobj
131 0 obj<</Parent 130 0 R/Title(4.1 Local Access Risks)/Dest[100 0 R/XYZ null 693 null]/Next 132 0 R>>endobj
132 0 obj<</Parent 130 0 R/Title(4.2 Remote Access Risks)/Dest[100 0 R/XYZ null 634 null]/Prev 131 0 R>>endobj
133 0 obj<</Parent 118 0 R/Count -2/First 134 0 R/Last 135 0 R/Title(A Glossary)/Dest[106 0 R/XYZ null 743 null]/Prev 130 0 R>>endobj
134 0 obj<</Parent 133 0 R/Title(A.1 Terms)/Dest[106 0 R/XYZ null 693 null]/Next 135 0 R>>endobj
135 0 obj<</Parent 133 0 R/Title(A.2 Acronyms)/Dest[106 0 R/XYZ null 389 null]/Prev 134 0 R>>endobj
136 0 obj<</Type/Catalog/Pages 75 0 R/Names 56 0 R/ViewerPreferences<</PageLayout/TwoColumnRight>>/Outlines 118 0 R/PageMode/UseOutlines/OpenAction[82 0 R/XYZ null null null]>>endobj
xref
0 137
0000000000 65535 f
0000000015 00000 n
0000000221 00000 n
0000000282 00000 n
0000000360 00000 n
0000000437 00000 n
0000000516 00000 n
0000000592 00000 n
0000000673 00000 n
0000000731 00000 n
0000000832 00000 n
0000000935 00000 n
0000001039 00000 n
0000001143 00000 n
0000001247 00000 n
0000001351 00000 n
0000001455 00000 n
0000001559 00000 n
0000001663 00000 n
0000001767 00000 n
0000001869 00000 n
0000001972 00000 n
0000002076 00000 n
0000002180 00000 n
0000002284 00000 n
0000002388 00000 n
0000002492 00000 n
0000002596 00000 n
0000002698 00000 n
0000002801 00000 n
0000002905 00000 n
0000003009 00000 n
0000003113 00000 n
0000003217 00000 n
0000003321 00000 n
0000003425 00000 n
0000003529 00000 n
0000003633 00000 n
0000003737 00000 n
0000003840 00000 n
0000003944 00000 n
0000004049 00000 n
0000004154 00000 n
0000004259 00000 n
0000004364 00000 n
0000004469 00000 n
0000004574 00000 n
0000004679 00000 n
0000004784 00000 n
0000004889 00000 n
0000004992 00000 n
0000005096 00000 n
0000005201 00000 n
0000005306 00000 n
0000005411 00000 n
0000005516 00000 n
0000005854 00000 n
0000005886 00000 n
0000005918 00000 n
0000006128 00000 n
0000006175 00000 n
0000006222 00000 n
0000006269 00000 n
0000006316 00000 n
0000006363 00000 n
0000006410 00000 n
0000006457 00000 n
0000006504 00000 n
0000006551 00000 n
0000006598 00000 n
0000006646 00000 n
0000006694 00000 n
0000006742 00000 n
0000006790 00000 n
0000006838 00000 n
0000006886 00000 n
0000007058 00000 n
0000007207 00000 n
0000013584 00000 n
0000013605 00000 n
0000013715 00000 n
0000013815 00000 n
0000013834 00000 n
0000013971 00000 n
0000014864 00000 n
0000014884 00000 n
0000014994 00000 n
0000015181 00000 n
0000015201 00000 n
0000015338 00000 n
0000015929 00000 n
0000015949 00000 n
0000016059 00000 n
0000016249 00000 n
0000016269 00000 n
FJN»
ÛÁ”ìê²@O
×–i‘i$\­ÈÕïBÖÓYÂ×´…•½nAv úý#dÅahvá;>ïu]få5ù}ηö‰½oí`Ò·èQ.`†õ©˜ó)‘«2+b2™‰´y:
¦Mø$ùùŸöåàìD{ûÕô_æÛóÁQ<«¯"83QÑuEQqƒTTt]g”ér&*žÌs¬ŠMvBÝwÍ—Ò}š"¨T¦b Ÿ@Ä™ÐȨ
O
¾.ÅYðÝý"Á×¥tR-Ò‚ïñÝñ•(k³7½96æ4áÇúºô癟œI~ðÀYîÝ`™ÜëÂ>·˜•{¿C…¢íàÌŽóúý»M"dãZH~cÐB’³;’¯¥DÛ(Š—
Ú\L”Û„$INŽÅl›ðä*íŠÈd&ÒÛá“éá—c—ÈQ‹BÙ æ2]Câ*jH¦‰×ð˜$Hö~™ ô<œœ$Âóãò­u%XÙÂqôãÌžs3Í –B
ªKŽ3{Î]³{L$
XUuÉrfϺk@gO 7UŒs…í.rTÒÖ‡Ó?'pÛëQm=£yáZ•­P;X¨Ðy麘œ×hÚ£Æ#[´™‰´1Í—þ0<MãJJRÄ#;ñ^õf×|šê®›×§éÁÉ!“¶1Õ(xn0!x7VµMP•婸0p¤¨.Ñd·¨{s<¤Ê0\އÇN-ÌO°4x'Ÿ&kT¢¨Ä$š \ºÀ´1 \Ñâè‘Gœ@ î™*j‰G€Ÿ”,åL>”µíŒ.DvÌh—•Ï1—Äæ‹*‚;»‡Í—jˆ8Ç2ÒOL«Âؽ@±–É®­´<wmw¿¨k+­\Qé®íñ¶¹F|g§+©kG2«e]Ûs
篈Cfâ¬MÛ
‰² ÖCÿà;2«em»Ž%$èD«#W¥Ú¶¼–¦=“s¢têh•Ð&“gÛâºK½úŸ9ö b(™-åÍcw:íú§ ‰¬_¦DÿÛ¯N—îåHa"ÙÁ²ã£suò84bA5äyÃñÄZ¤­éÛ©d-^;úý›çîk˜}R;H½|ªœ»Nwɗφu
%B“Ý£š¾;>MyV¡ú\™g­Oo*Ê6Å¡$%¯œ¤Ý¯ï¶ì†ÙO›n?|Ûõ†ûóÚ|îúRIpÀM)ìÓÈ›®¾a•endstream
endobj
115 0 obj
1101
endobj
116 0 obj<</Type/Page/Parent 76 0 R/Contents 117 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
117 0 obj<</Length 118 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS041T072PIÑp rt QÐUp
VÎO+)O,JUNM.-Ê,©TJ-È/*Ñ ÉâÒiÒ…êÊÌ ¹†pr‡Âµendstream
endobj
118 0 obj
103
endobj
119 0 obj<</Count 6/First 120 0 R/Last 133 0 R>>endobj
120 0 obj<</Parent 119 0 R/Title(Table of Contents)/Dest[113 0 R/XYZ null 756 null]/Next 121 0 R>>endobj
121 0 obj<</Parent 119 0 R/Count -3/First 122 0 R/Last 124 0 R/Title(1 Scope)/Dest[83 0 R/XYZ null 743 null]/Prev 120 0 R/Next 125 0 R>>endobj
122 0 obj<</Parent 121 0 R/Title(1.1 Identification)/Dest[83 0 R/XYZ null 693 null]/Next 123 0 R>>endobj
123 0 obj<</Parent 121 0 R/Title(1.2 System Overview)/Dest[83 0 R/XYZ null 613 null]/Prev 122 0 R/Next 124 0 R>>endobj
124 0 obj<</Parent 121 0 R/Title(1.3 Document Overview)/Dest[83 0 R/XYZ null 389 null]/Prev 123 0 R>>endobj
125 0 obj<</Parent 119 0 R/Count -2/First 126 0 R/Last 127 0 R/Title(2 References)/Dest[89 0 R/XYZ null 743 null]/Prev 121 0 R/Next 128 0 R>>endobj
126 0 obj<</Parent 125 0 R/Title(2.1 CUPS Documentation)/Dest[89 0 R/XYZ null 693 null]/Next 127 0 R>>endobj
127 0 obj<</Parent 125 0 R/Title(2.2 Other Documents)/Dest[89 0 R/XYZ null 495 null]/Prev 126 0 R>>endobj
128 0 obj<</Parent 119 0 R/Count -1/First 129 0 R/Last 129 0 R/Title(3 3 - Local Access Risks)/Dest[95 0 R/XYZ null 743 null]/Prev 125 0 R/Next 132 0 R>>endobj
129 0 obj<</Parent 128 0 R/Count -2/First 130 0 R/Last 131 0 R/Title(3.1 Security Breaches)/Dest[95 0 R/XYZ null 646 null]>>endobj
130 0 obj<</Parent 129 0 R/Title(4.0.1 Denial of Service Attacks)/Dest[101 0 R/XYZ null 743 null]/Next 131 0 R>>endobj
131 0 obj<</Parent 129 0 R/Title(4.0.2 Security Breaches)/Dest[101 0 R/XYZ null 652 null]/Prev 130 0 R>>endobj
132 0 obj<</Parent 119 0 R/Title(4 4 - Remote Access Risks)/Dest[101 0 R/XYZ null 211 null]/Prev 128 0 R/Next 133 0 R>>endobj
133 0 obj<</Parent 119 0 R/Count -2/First 134 0 R/Last 135 0 R/Title(A Glossary)/Dest[107 0 R/XYZ null 743 null]/Prev 132 0 R>>endobj
134 0 obj<</Parent 133 0 R/Title(A.1 Terms)/Dest[107 0 R/XYZ null 693 null]/Next 135 0 R>>endobj
135 0 obj<</Parent 133 0 R/Title(A.2 Acronyms)/Dest[107 0 R/XYZ null 389 null]/Prev 134 0 R>>endobj
136 0 obj<</Type/Catalog/Pages 76 0 R/Names 58 0 R/ViewerPreferences<</PageLayout/TwoColumnRight>>/Outlines 119 0 R/PageMode/UseOutlines/OpenAction[83 0 R/XYZ null null null]>>endobj
xref
0 137
0000000000 65535 f
0000000015 00000 n
0000000221 00000 n
0000000282 00000 n
0000000356 00000 n
0000000434 00000 n
0000000511 00000 n
0000000590 00000 n
0000000666 00000 n
0000000747 00000 n
0000000805 00000 n
0000000907 00000 n
0000001010 00000 n
0000001114 00000 n
0000001218 00000 n
0000001322 00000 n
0000001426 00000 n
0000001530 00000 n
0000001634 00000 n
0000001738 00000 n
0000001842 00000 n
0000001944 00000 n
0000002047 00000 n
0000002151 00000 n
0000002255 00000 n
0000002359 00000 n
0000002463 00000 n
0000002567 00000 n
0000002671 00000 n
0000002773 00000 n
0000002875 00000 n
0000002977 00000 n
0000003080 00000 n
0000003184 00000 n
0000003288 00000 n
0000003392 00000 n
0000003496 00000 n
0000003600 00000 n
0000003705 00000 n
0000003810 00000 n
0000003915 00000 n
0000004020 00000 n
0000004125 00000 n
0000004230 00000 n
0000004335 00000 n
0000004440 00000 n
0000004543 00000 n
0000004646 00000 n
0000004749 00000 n
0000004853 00000 n
0000004958 00000 n
0000005063 00000 n
0000005166 00000 n
0000005270 00000 n
0000005375 00000 n
0000005480 00000 n
0000005585 00000 n
0000005690 00000 n
0000006036 00000 n
0000006068 00000 n
0000006100 00000 n
0000006303 00000 n
0000006350 00000 n
0000006397 00000 n
0000006444 00000 n
0000006491 00000 n
0000006538 00000 n
0000006585 00000 n
0000006632 00000 n
0000006679 00000 n
0000006726 00000 n
0000006774 00000 n
0000006822 00000 n
0000006870 00000 n
0000006918 00000 n
0000006966 00000 n
0000007014 00000 n
0000007186 00000 n
0000007335 00000 n
0000013712 00000 n
0000013733 00000 n
0000013843 00000 n
0000013943 00000 n
0000013962 00000 n
0000014099 00000 n
0000014992 00000 n
0000015012 00000 n
0000015122 00000 n
0000015309 00000 n
0000015329 00000 n
0000016733 00000 n
0000015466 00000 n
0000016057 00000 n
+90 -8
Ver Arquivo
@@ -41,8 +41,8 @@ can be used to support non-PostScript printers.
<UL>
<LI>1 - Scope</LI>
<LI>2 - References</LI>
<LI>3 - Risk Identification</LI>
<LI>4 - Risk Assessment</LI>
<LI>3 - Local Access Risks</LI>
<LI>4 - Remote Access Risks</LI>
<LI>A - Glossary</LI>
</UL>
@@ -77,17 +77,99 @@ The following non-CUPS documents are referenced by this document:
<LI>RFC 1179, Line Printer Daemon Protocol
</UL>
<H1>Risk Identification</H1>
<H1>3 - Local Access Risks</H1>
<H2>Local Access Risks</H2>
<P>Local access risks are those that can be exploited only with a local user
account. This section does not address issues related to dissemination of the
root password or other security issues associated with the UNIX operating
system.
<H2>Remote Access Risks</H2>
<H2>Security Breaches</H2>
<H1>Risk Assessment</H2>
<P>Since the default installation creates a world-readable request directory,
it is possible for local users to read the contents of print files before they
are printed.
<H2>Local Access Risks</H2>
<P>This problem can be alleviated by making the request directory readable only
by the user specified in the CUPS configuration file.
<H2>Remote Access Risks</H2>
<H1>4 - Remote Access Risks</H1>
<P>Remote access risks are those that can be exploited without a local user
account and/or from a remote system. This section does not address issues
related to network or firewall security.
<H3>Denial of Service Attacks</H3>
<P>Like all internet services, the CUPS server is vulnerable to denial of
service attacks, including:
<OL>
<LI>Establishing multiple connections to the server until the server
will accept no more.
<P>This cannot be protected against by the current software. It
is possible that future versions of the CUPS software could be
configured to limit the number of connections allowed from a
single host, however that still would not prevent a determined
attack.
<LI>Repeatedly opening and closing connections to the server as fast
as possible.
<P>There is no easy way of protecting against this in the CUPS
software. If the attack is coming from outside the local
network it might be possible to filter such an attack, however
once the connection request has been received by the server it
must at least accept the connection to find out who is
connecting.
<LI>Flooding the network with broadcast packets on port 631.
<P>It might be possible to disable browsing if this condition
is detected by the CUPS software, however if there are large
numbers of printers available on the network such an algorithm
might think that an attack was occurring when instead a valid
update was being received.
<LI>Sending partial IPP requests; specifically, sending part of an
attribute value and then stopping transmission.
<P>The current code is structured to read and write the IPP
request data on-the-fly, so there is no easy way to protect
against this for large attribute values.
<LI>Sending large/long print jobs to printers, preventing other users
from printing.
<P>There are limited facilities for protecting against large print
jobs (the <CODE>MaxRequestSize</CODE> attribute), however this will
not protect printers from malicious users and print files that
generate hundreds or thousands of pages. In general, we recommend
restricting printer access to known hosts or networks, and adding
user-level access control as needed for expensive printers.
</OL>
<H3>Security Breaches</H3>
<P>The current CUPS server only supports Basic authentication with
usernames and passwords. This essentially places the clear text of the
username and password on the network. Since CUPS uses the UNIX username
and password account information, the authentication information could
be used to gain access to accounts (possibly priviledged accounts) on
the server.
<P>The default CUPS configuration disables remote administration. We do
not recommend that remote administration be enabled for all hosts,
however if you have a trusted network or subnet access can be
restricted accordingly.
<P>The next minor release of CUPS will support Digest authentication of
the entire message body using separate MD5-based username and password
files. This will protect password information and prevent unauthorized
access due to compromised account passwords.
<H1 TYPE=A VALUE=1>Glossary</H1>
BIN
Ver Arquivo
Arquivo binário não exibido.
+33 -4
Ver Arquivo
@@ -24,8 +24,11 @@ Copyright 1997-1999, All Rights Reserved<BR>
<UL>
<LI><A HREF=#2_1>The Printing Problem</A></LI>
<LI><A HREF=#2_2>The Technology</A></LI>
<LI><A HREF=#2_3>Filters</A></LI>
<LI><A HREF=#2_4>Printer Drivers</A></LI>
<LI><A HREF=#2_3>Jobs</A></LI>
<LI><A HREF=#2_4>Classes</A></LI>
<LI><A HREF=#2_5>Filters</A></LI>
<LI><A HREF=#2_6>Printer Drivers</A></LI>
<LI><A HREF=#2_7>Networking</A></LI>
</UL>
<B><A HREF=#3>2 - Using the Printing System</A></B>
<UL>
@@ -136,7 +139,17 @@ using their web browser. </P>
Basic authentication and domain or IP-based access control. Digest
authentication and TLS encryption will be available in future versions
of CUPS. </P>
<H2><A NAME=2_3>Filters</A></H2>
<H2><A NAME=2_3>Jobs</A></H2>
<P>Each file that is submitted for printing is called a <I>job</I>.
Jobs are identified by a unique number starting at 1 and are assigned
to a particular destination (usually a printer). Jobs can also have
options associated with them such as media size, number of copies, and
priority. </P>
<H2><A NAME=2_4>Classes</A></H2>
<P>CUPS supports collections of printers known as <I>classes</I>. Jobs
sent to a class are forwarded to the first available printer in the
class. </P>
<H2><A NAME=2_5>Filters</A></H2>
<P>Filters allow a user or application to print many types of files
without extra effort. Print jobs sent to a CUPS server are filtered
before sending them to a printer. Some filters convert job files to
@@ -152,12 +165,28 @@ printer. </P>
<P>CUPS provides backends for printing over parallel and serial ports,
and over the network via the JetDirect (AppSocket), Server Message
Block, and Line Printer Daemon protocols. </P>
<H2><A NAME=2_4>Printer Drivers</A></H2>
<H2><A NAME=2_6>Printer Drivers</A></H2>
<P>Printer drivers in CUPS consist of one of more filters specific to a
printer. CUPS includes a sample printer driver for Hewlett-Packard
LaserJet and DeskJet printers. While this driver does not generate
optimal output for different printer models, it does demonstrate how
you can write your own printer drivers and incorporate them into CUPS. </P>
<H2><A NAME=2_7>Networking</A></H2>
<P>Printers and classes on the local system are automatically shared
with other systems on the network. This allows you to setup one system
to print to a printer and use this system as a printer server or spool
host for all of the others. If there is only one occurrence of a
printer on a network, then that printer can be accessed using its name
alone. If more than one printer exists with the same name, users must
select the printer by specifying which server to use (e.g.
&quot;printer@host1&quot; or &quot;printer@host2&quot;.) </P>
<P>CUPS also provides <I>implicit classes</I>, which are collections of
printers and/or classes with the same name. This allows you to setup
multiple servers pointing to the same physical network printer, for
example, so that you aren't relying on a single system for printing.
Because this also works with printer classes, you can setup multiple
servers and printers and never worry about a &quot;single point of failure&quot;
unless all of the printers and servers goes down! </P>
<H1 ALIGN=RIGHT><A NAME=3>2 - Using the Printing System</A></H1>
<P>This chapter shows you how to submit, query, and cancel print jobs
to different printers. </P>
+527 -456
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+31
Ver Arquivo
@@ -98,6 +98,19 @@ web browser.
authentication and domain or IP-based access control. Digest authentication
and TLS encryption will be available in future versions of CUPS.
<H2>Jobs</H2>
<P>Each file that is submitted for printing is called a <I>job</I>.
Jobs are identified by a unique number starting at 1 and are assigned
to a particular destination (usually a printer). Jobs can also have
options associated with them such as media size, number of copies, and
priority.
<H2>Classes</H2>
<P>CUPS supports collections of printers known as <I>classes</I>. Jobs sent
to a class are forwarded to the first available printer in the class.
<H2>Filters</H2>
<P>Filters allow a user or application to print many types of files
@@ -126,6 +139,24 @@ LaserJet and DeskJet printers. While this driver does not generate
optimal output for different printer models, it does demonstrate how
you can write your own printer drivers and incorporate them into CUPS.
<H2>Networking</H2>
<P>Printers and classes on the local system are automatically shared with
other systems on the network. This allows you to setup one system to print
to a printer and use this system as a printer server or spool host for all
of the others. If there is only one occurrence of a printer on a network,
then that printer can be accessed using its name alone. If more than one
printer exists with the same name, users must select the printer by specifying
which server to use (e.g. "printer@host1" or "printer@host2".)
<P>CUPS also provides <I>implicit classes</I>, which are collections of
printers and/or classes with the same name. This allows you to setup multiple
servers pointing to the same physical network printer, for example, so that
you aren't relying on a single system for printing. Because this also works
with printer classes, you can setup multiple servers and printers and never
worry about a "single point of failure" unless all of the printers and servers
goes down!
<H1 ALIGN=RIGHT>2 - Using the Printing System</H1>
<P>This chapter shows you how to submit, query, and cancel print jobs to
+8 -1
Ver Arquivo
@@ -14,7 +14,7 @@
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44145 Airport View Drive, Suite 204
# 44141 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
@@ -61,6 +61,7 @@ install:
#
hpgltops: $(HPGLOBJS) common.o ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ $(HPGLOBJS) common.o $(LIBS) -lm
$(HPGLOBJS): hpgltops.h
@@ -69,6 +70,7 @@ $(HPGLOBJS): hpgltops.h
#
image.a: $(IMAGEOBJS) ../Makedefs ../cups/libcups.a
echo Archiving $@...
$(RM) $@
$(AR) $(ARFLAGS) $@ $(IMAGEOBJS)
$(RANLIB) $@
@@ -79,6 +81,7 @@ $(IMAGEOBJS): image.h
#
imagetops: imagetops.o common.o image.a ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ imagetops.o common.o image.a $(IMGLIBS)
imagetops: common.h image.h
@@ -87,6 +90,7 @@ imagetops: common.h image.h
#
imagetoraster: imagetoraster.o common.o image.a ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ imagetoraster.o common.o image.a $(IMGLIBS)
imagetoraster: common.h image.h
@@ -95,6 +99,7 @@ imagetoraster: common.h image.h
#
pstops: pstops.o common.o ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ pstops.o common.o $(LIBS)
pstops.o: common.h
@@ -103,6 +108,7 @@ pstops.o: common.h
#
rastertohp: rastertohp.o ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ rastertohp.o $(LIBS)
rastertohp.o: ../cups/raster.h
@@ -111,6 +117,7 @@ rastertohp.o: ../cups/raster.h
#
texttops: texttops.o textcommon.o common.o ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ texttops.o textcommon.o common.o $(LIBS)
texttops.o: common.h textcommon.h
+7 -4
Ver Arquivo
@@ -110,6 +110,8 @@ main(int argc, /* I - Number of command-line arguments */
g = 1.0;
b = 1.0;
Copies = atoi(argv[4]);
options = NULL;
num_options = cupsParseOptions(argv[5], 0, &options);
@@ -118,9 +120,6 @@ main(int argc, /* I - Number of command-line arguments */
ppdMarkDefaults(ppd);
cupsMarkOptions(ppd, num_options, options);
if ((val = cupsGetOption("copies", num_options, options)) != NULL)
Copies = atoi(val);
if ((val = cupsGetOption("multiple-document-handling", num_options, options)) != NULL)
{
/*
@@ -245,12 +244,16 @@ main(int argc, /* I - Number of command-line arguments */
puts("%!");
if (ppd != NULL && ppd->patches != NULL)
puts(ppd->patches);
ppdEmit(ppd, stdout, PPD_ORDER_DOCUMENT);
ppdEmit(ppd, stdout, PPD_ORDER_ANY);
ppdEmit(ppd, stdout, PPD_ORDER_PROLOG);
if (g != 1.0 || b != 1.0)
printf("{ neg 1 add %.3f exp neg 1 add %.3f mul } bind settransfer\n", g, b);
printf("{ neg 1 add dup 0 lt { pop 1 } { %.3f exp neg 1 add } "
"ifelse %.3f mul } bind settransfer\n", g, b);
if (Copies > 1 && !slowcollate)
{
+11 -4
Ver Arquivo
@@ -114,7 +114,7 @@ int Floyd4x4[4][4] =
ib_t OnPixels[256], /* On-pixel LUT */
OffPixels[256]; /* Off-pixel LUT */
int Planes[] = /* Number of planes for each colorspace */
{ 1, 3, 4, 1, 3, 3, 4, 4, 4, 6 };
{ 1, 3, 4, 1, 3, 3, 4, 4, 4, 6, 4, 4, 1, 1, 1 };
/*
@@ -214,6 +214,8 @@ main(int argc, /* I - Number of command-line arguments */
g = 1.0;
b = 1.0;
Copies = atoi(argv[4]);
options = NULL;
num_options = cupsParseOptions(argv[5], 0, &options);
@@ -222,9 +224,6 @@ main(int argc, /* I - Number of command-line arguments */
ppdMarkDefaults(ppd);
cupsMarkOptions(ppd, num_options, options);
if ((val = cupsGetOption("copies", num_options, options)) != NULL)
Copies = atoi(val);
if ((val = cupsGetOption("multiple-document-handling", num_options, options)) != NULL)
{
/*
@@ -325,6 +324,9 @@ main(int argc, /* I - Number of command-line arguments */
break;
case CUPS_CSPACE_K :
case CUPS_CSPACE_WHITE :
case CUPS_CSPACE_GOLD :
case CUPS_CSPACE_SILVER :
primary = IMAGE_BLACK;
secondary = IMAGE_BLACK;
header.cupsBitsPerPixel = header.cupsBitsPerColor;
@@ -713,6 +715,9 @@ main(int argc, /* I - Number of command-line arguments */
yerr0, yerr1, r0, r1);
break;
case CUPS_CSPACE_K :
case CUPS_CSPACE_WHITE :
case CUPS_CSPACE_GOLD :
case CUPS_CSPACE_SILVER :
format_K(&header, row, y, plane, z->xsize, z->ysize,
yerr0, yerr1, r0, r1);
break;
@@ -729,6 +734,8 @@ main(int argc, /* I - Number of command-line arguments */
yerr0, yerr1, r0, r1);
break;
case CUPS_CSPACE_YMCK :
case CUPS_CSPACE_GMCK :
case CUPS_CSPACE_GMCS :
format_YMCK(&header, row, y, plane, z->xsize, z->ysize,
yerr0, yerr1, r0, r1);
break;
+69 -7
Ver Arquivo
@@ -94,6 +94,9 @@ main(int argc, /* I - Number of command-line arguments */
char line[8192]; /* Line buffer */
float g; /* Gamma correction value */
float b; /* Brightness factor */
int level; /* Nesting level for embedded files */
int nbytes, /* Number of bytes read */
tbytes; /* Total bytes to read for binary data */
if (argc < 6 || argc > 7)
@@ -129,6 +132,8 @@ main(int argc, /* I - Number of command-line arguments */
g = 1.0;
b = 1.0;
Copies = atoi(argv[4]);
ppd = ppdOpenFile(getenv("PPD"));
options = NULL;
@@ -145,9 +150,6 @@ main(int argc, /* I - Number of command-line arguments */
if ((val = cupsGetOption("page-set", num_options, options)) != NULL)
PageSet = val;
if ((val = cupsGetOption("copies", num_options, options)) != NULL)
Copies = atoi(val);
if ((val = cupsGetOption("multiple-document-handling", num_options, options)) != NULL)
{
/*
@@ -242,6 +244,9 @@ main(int argc, /* I - Number of command-line arguments */
puts(line);
if (ppd != NULL && ppd->patches != NULL)
puts(ppd->patches);
ppdEmit(ppd, stdout, PPD_ORDER_DOCUMENT);
ppdEmit(ppd, stdout, PPD_ORDER_ANY);
ppdEmit(ppd, stdout, PPD_ORDER_PROLOG);
@@ -253,7 +258,8 @@ main(int argc, /* I - Number of command-line arguments */
"end");
if (g != 1.0 || b != 1.0)
printf("{ neg 1 add %.3f exp neg 1 add %.3f mul } bind settransfer\n", g, b);
printf("{ neg 1 add dup 0 lt { pop 1 } { %.3f exp neg 1 add } "
"ifelse %.3f mul } bind settransfer\n", g, b);
if (Copies > 1 && (!Collate || !slowcollate))
printf("/#copies %d def\n", Copies);
@@ -264,9 +270,32 @@ main(int argc, /* I - Number of command-line arguments */
* OK, we have DSC comments; read until we find a %%Page comment...
*/
level = 0;
while (psgets(line, sizeof(line), fp) != NULL)
if (strncmp(line, "%%Page:", 7) == 0)
if (strncmp(line, "%%BeginDocument:", 16) == 0 ||
strncmp(line, "%%BeginDocument ", 16) == 0) /* Adobe Acrobat BUG */
level ++;
else if (strcmp(line, "%%EndDocument") == 0)
level --;
else if (strncmp(line, "%%Page:", 7) == 0 && level == 0)
break;
else if (strncmp(line, "%%BeginBinary:", 14) == 0 ||
(strncmp(line, "%%BeginData:", 12) == 0 &&
strstr(line, "Binary") != NULL))
{
/*
* Copy binary data...
*/
tbytes = atoi(strchr(line, ':') + 1);
while (tbytes > 0)
{
nbytes = fread(line, 1, sizeof(line), fp);
fwrite(line, 1, nbytes, stdout);
tbytes -= nbytes;
}
}
else
puts(line);
@@ -276,15 +305,26 @@ main(int argc, /* I - Number of command-line arguments */
for (;;)
{
if (strncmp(line, "%%Page:", 7) == 0)
if (strncmp(line, "%%BeginDocument:", 16) == 0 ||
strncmp(line, "%%BeginDocument ", 16) == 0) /* Adobe Acrobat BUG */
level ++;
else if (strcmp(line, "%%EndDocument") == 0)
level --;
else if (strncmp(line, "%%Page:", 7) == 0 && level == 0)
{
if (sscanf(line, "%*s%*s%d", &number) == 1)
{
if (!check_range(number))
{
while (psgets(line, sizeof(line), fp) != NULL)
if (strncmp(line, "%%Page:", 7) == 0)
if (strncmp(line, "%%BeginDocument:", 16) == 0 ||
strncmp(line, "%%BeginDocument ", 16) == 0) /* Adobe Acrobat BUG */
level ++;
else if (strcmp(line, "%%EndDocument") == 0)
level --;
else if (strncmp(line, "%%Page:", 7) == 0 && level == 0)
break;
continue;
}
@@ -306,6 +346,28 @@ main(int argc, /* I - Number of command-line arguments */
}
}
}
else if (strncmp(line, "%%BeginBinary:", 14) == 0 ||
(strncmp(line, "%%BeginData:", 12) == 0 &&
strstr(line, "Binary") != NULL))
{
/*
* Copy binary data...
*/
tbytes = atoi(strchr(line, ':') + 1);
while (tbytes > 0)
{
nbytes = fread(line, 1, sizeof(line), fp);
if (!sloworder)
fwrite(line, 1, nbytes, stdout);
if (slowcollate || sloworder)
fwrite(line, 1, nbytes, stdout);
tbytes -= nbytes;
}
}
else
{
if (!sloworder)
+38 -33
Ver Arquivo
@@ -6,13 +6,11 @@ Quit
Close
Yes
No
Auto
On
Off
Save
Discard
Default
User-Defined
Options
More Info
Black
@@ -20,47 +18,37 @@ Color
Cyan
Magenta
Yellow
Copyright
All Rights Reserved
Copyright 1993-1999 by Easy Software Products, All Rights Reserved.
General
Printer
PostScript
Image
Text
HPGL
Advanced
Print Banner Page
Verbose Logging
Print Pages
Image Options
HP-GL/2 Options
Extra
Document
Other
Print Pages:
Entire Document
Page Range
Reverse Order
Page Format
Page Range:
Reverse Order:
Page Format:
1-Up
2-Up
4-Up
Image Scaling
Image Scaling:
Use Natural Image Size
Zoom by Percent
Zoom by PPI
Mirror Image
Rotate Image
Best Fit
Color Saturation
Color Hue
Number of Columns
Margins
Wrap Text
Fit to Page
Shading
Default Pen Width
Gamma Correction
Brightness
Color Profile
Add Printer
Delete Printer
Modify Printer
Mirror Image:
Color Saturation:
Color Hue:
Fit to Page:
Shading:
Pen Width:
Gamma Correction:
Brightness:
Add
Delete
Modify
Printer URI
Printer Name
Printer Location
@@ -92,6 +80,23 @@ 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
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.
+14 -1
Ver Arquivo
@@ -34,7 +34,7 @@ LOCALES = C de en es fr it
# Make everything...
#
all:
all: translate
#
# Clean all config and object files...
@@ -55,6 +55,19 @@ install:
$(CP) cups_$$dir $(LIBDIR)/locale/$$dir ; \
done
#
# translate - a simple utility to use Bablefish to translate the POSIX message
# file to one of several languages.
#
# translate outfile language
#
translate: translate.o ../cups/libcups.a
echo Linking $<...
$(CC) $(LDFLAGS) -o translate translate.o $(LIBS)
translate.o: ../cups/http.h
#
# End of "$Id$".
#
+119 -114
Ver Arquivo
@@ -1,116 +1,121 @@
iso-8859-1
OK
Cancel
Help
Quit
Close
Yes
No
Auto
On
Off
Save
Discard
Default
User-Defined
Options
More Info
Black
Colour
Cyan
Magenta
Yellow
Copyright
All Rights Reserved
General
Printer
PostScript
Image
Text
HPGL
Advanced
Print Banner Page
Verbose Logging
Print Pages
Document
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
Rotate Image
Best Fit
Colour Saturation
Colour Hue
Number of Columns
Margins
Wrap Text
Fit to Page
Shading
Default Pen Width
Gamma Correction
Brightness
Colour Profile
Add Printer
Delete Printer
Modify Printer
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 241x356mm)
Medium (241x356mm to 330x483mm)
Large (330x483mm and larger)
Custom Size
Idle
Processing
Stopped
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.
Löschen
Hilfe
Beendet
Nah
Ja
Nein
Auf
Weg von
Außer
Ausschuß
Rückstellung
Optionen
Mehr INFO
Schwarzes
Farbe
Cyan-blau
Magenta
Gelb
Copyright 1993-1999 durch Easy Software Products, alle Rechte vorbehalten.
General
Drucker
BildOptionen
HP-GL/2 Optionen
Extrakosten
Dokument
Anderes
DruckSeiten:
Gesamtes Dokument
Seitenbereich:
RückOrdnung:
Seite Format:
1-Up
2-Up
4-Up
BildScaling:
Natürliche BildGröße Des Gebrauches
Zoom durch Percent
Zoom durch PPI
SpiegelBild:
Farbe Sättigung:
Farbe Farbe:
Passen Sie, um zu paginieren:
Schattierend:
FederBreite:
Gamma Korrektur:
Helligkeit:
Fügen Sie hinzu
Löschung
ändern Sie
DruckerURI
DruckerName
DruckerStandort
Drucker-cInfo
Drucker bilden und formen
EinheitURI
Formatierung Seite
Seite Druckend
InitialisierenDrucker
DruckerZustand
Jobs Annehmend
Jobs Nicht, Annehmend
Druckjobs
Kategorie
Lokal
Entfernte Station
Duplexing
Heftend
Schnelle Plattenkopierprogramme
Gemischte Exemplare
Bohrung Lochen
Bedeckung
Binden
Sortierend
Klein (bis 9.5x1în)
Medium (9.5x1în bis 13x19in)
Groß (13x19in und größeres)
Kundenspezifische Größe
Leerlauf
Verarbeitend
Gestoppt
Alles
Ungerade
Gleichmäßige Seiten
Dunkleres Heller
MediaGröße
MediaArt
MediaQuelle
Lagebestimmung:
Portrait
Landschaft
Job State
Job Name
User Name
Priority
Copies
File Size
Pending
400 Ihre Datenbanksuchroutine sendete einen Antrag, den dieser Server nicht verstehen könnte.
Dieser Server könnte nicht überprüfen, daß Sie autorisiert sind, das Hilfsmittel zuzugreifen.
Sie müssen zahlen, diesen Server zuzugreifen.
Sie haben nicht Erlaubnis, das Hilfsmittel auf diesem Server zuzugreifen.
Das erbetene Hilfsmittel wurde nicht auf diesem Server gefunden.
Die erbetene Methode wird nicht mit dem Hilfsmittel erlaubt.
Eine passende Darstellung für das Hilfsmittel wurde nicht auf diesem Server gefunden.
Sie haben nicht Erlaubnis, diesen Server als Proxyhauptrechner zu benutzen.
Der Antrag hat zu lang genommen, um durchzuführen und ist abgebrochen worden.
Das erbetene Hilfsmittel hat mehr als einen Wert.
Das erbetene Hilfsmittel wird gegangen und ist nicht ersetzt worden.
Die erbetene Methode benötigt ein gültiges Content-Length.
Die Vorbedingung auf dem Antrag wertete zu falschem aus.
Der Antrag ist zu groß, damit dieser Server verarbeitet.
Der AntragcUri ist zu groß, damit dieser Server verarbeitet.
Das Antragformat wird nicht durch diesen Server verstanden.
500 Der Server hat einen unrecoverable Fehler ermittelt und nicht Ihren Antrag verarbeiten kann.
Die erbetene Methode wird nicht durch diesen Server eingeführt.
Das proxy server empfing eine unzulässige Antwort von einem aufwärts gerichteten Server.
Das erbetene Hilfsmittel ist aktuell auf diesem Server nicht erreichbar.
Das proxy server hat zu lang genommen, um auf diesen Server zu reagieren.
Dieser Server unterstützt nicht die HTTP-Version, die durch Ihre Datenbanksuchroutine angefordert wird.
+41 -36
Ver Arquivo
@@ -6,13 +6,11 @@ Quit
Close
Yes
No
Auto
On
Off
Save
Discard
Default
User-Defined
Options
More Info
Black
@@ -20,47 +18,37 @@ Colour
Cyan
Magenta
Yellow
Copyright
All Rights Reserved
Copyright 1993-1999 by Easy Software Products, All Rights Reserved.
General
Printer
PostScript
Image
Text
HPGL
Advanced
Print Banner Page
Verbose Logging
Print Pages
Image Options
HP-GL/2 Options
Extra
Document
Other
Print Pages:
Entire Document
Page Range
Reverse Order
Page Format
Page Range:
Reverse Order:
Page Format:
1-Up
2-Up
4-Up
Image Scaling
Image Scaling:
Use Natural Image Size
Zoom by Percent
Zoom by PPI
Mirror Image
Rotate Image
Best Fit
Colour Saturation
Colour Hue
Number of Columns
Margins
Wrap Text
Fit to Page
Shading
Default Pen Width
Gamma Correction
Brightness
Colour Profile
Add Printer
Delete Printer
Modify Printer
Mirror Image:
Colour Saturation:
Colour Hue:
Fit to Page:
Shading:
Pen Width:
Gamma Correction:
Brightness:
Add
Delete
Modify
Printer URI
Printer Name
Printer Location
@@ -85,13 +73,30 @@ Hole Punching
Covering
Binding
Sorting
Small (up to 241x356mm)
Medium (241x356mm to 330x483mm)
Large (330x483mm and larger)
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
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.
+119 -114
Ver Arquivo
@@ -1,116 +1,121 @@
iso-8859-1
OK
Cancel
Help
Quit
Close
Yes
No
Auto
On
Off
Save
Discard
Default
User-Defined
Options
More Info
Black
Colour
Cyan
Magenta
Yellow
Copyright
All Rights Reserved
General
Printer
PostScript
Image
Text
HPGL
Advanced
Print Banner Page
Verbose Logging
Print Pages
Document
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
Rotate Image
Best Fit
Colour Saturation
Colour Hue
Number of Columns
Margins
Wrap Text
Fit to Page
Shading
Default Pen Width
Gamma Correction
Brightness
Colour Profile
Add Printer
Delete Printer
Modify Printer
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 241x356mm)
Medium (241x356mm to 330x483mm)
Large (330x483mm and larger)
Custom Size
Idle
Processing
Stopped
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.
Cancelación
Ayuda
Salido
Cercano
No
En
De
Excepto
Descarte
Valor por defecto
Opciones
Más Info
Negro
Color
Ciánico
Magenta
Amarillo
El copyright 1993-1999 por Easy Software Products, todos endereza reservado.
General
Impresora
Opciones De la Imagen
Opciones De HP-GL/2
Suplemento
Documento
Otro
Paginaciones De la Impresión:
Entero Documento
Rango De Paginación:
Orden Reversa:
Formato De la Paginación:
1-Up
2-Up
4-Up
Escalamiento De la Imagen:
Talla Natural De la Imagen Del Uso
Zoom de Percent
Zoom de PPI
Imagen Del Espejo:
Saturación Del Color:
Tonalidad Del Color:
Quepa para paginar:
Sombreando:
Anchura De la Pluma:
Corrección Gamma:
Brillo:
Agregue
Cancelación
Modifiqúese
URI De la Impresora
Nombre De la Impresora
Localización De la Impresora
Impresora Info
La impresora hace y modela
URI Del Dispositivo
Paginación Del Formato
Imprimiendo La Paginación
De Incialización Impresora
Estado De la Impresora
Validando Trabajos
No validando Trabajos
Trabajos De Impresión
Clase
Local
Telecontrol
Duplexing
Sujetando con grapa
Rápidas Copias
Clasificadas Copias
Perforación Del Agujero
Cubierta
Atando
Clasificando
Pequeño (los hasta 9.5x14in)
Media (los 9.5x14in a el 13x19in)
Grande (el 13x19in y más grande)
De encargo Talla
Marcha lenta
Procesando
Parado
Todo
Impar
Uniformes Paginaciones
Más Oscuro Más Brillante
Talla De Media
Tipo De Media
Fuente De los Media
Orientación:
Retrato
Paisaje
Job State
Job Name
User Name
Priority
Copies
File Size
Pending
400 Su browser envió una petición que este servidor no podría entender.
Este servidor no podría verificar que le autoricen a tener acceso al recurso.
Usted debe pagar tener acceso a este servidor.
Usted no tiene permiso de tener acceso al recurso en este servidor.
El recurso solicitado no fue encontrado en este servidor.
El método solicitado no se permite con el recurso.
Una representación apropiada para el recurso no fue encontrada en este servidor.
Usted no tiene permiso de utilizar este servidor como ordenador principal del poder.
La petición ha durado demasiado para terminar y se ha abortado.
El recurso solicitado tiene más de un valor.
Se va y no se ha substituido el recurso solicitado.
El método solicitado requiere un Content-Length válido.
La condición previa en la petición evaluó a falso.
La petición es demasiado grande para que este servidor procese.
El URI de la petición es demasiado grande para que este servidor procese.
El formato de la petición no es entendido por este servidor.
500 El servidor ha detectado un error irrecuperable y no puede procesar su petición.
El método solicitado no es puesto en ejecución por este servidor.
El proxy server recibió una respuesta inválida de un servidor por aguas arriba.
El recurso solicitado es actualmente inasequible en este servidor.
El proxy server ha durado demasiado para responder a este servidor.
Este servidor no utiliza la versión del HTTP requerida por su browser.
+115 -110
Ver Arquivo
@@ -1,116 +1,121 @@
iso-8859-1
OK
Cancel
Aide
Annulation
Aide
Quitté
Fin
Étroit
Oui
Non
Automatique
Sur
Outre
Enregistrent
Jettent
Défaut
User-Defined
Options
More Info
Black
Couleur
Cyan
Magenta
Yellow
Copyright
Tous droits réservés
General
Imprimante
PostScript
Image
Text
HPGL
Advanced
Page D'Accueil D'Impression
Bavard Enregistrement
La Copie Pagine
Document
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
Rotate Image
Best Fit
Saturation De Couleur
Tonalité De Couleur
Nombre de Colonnes
Margins
Wrap Text
Fit to Page
Shading
Default Pen Width
Gamma Correction
Brightness
Couleur Profile
Add Imprimante
Delete Imprimante
Modify Imprimante
URI D'Imprimante
Nom D'Imprimante
Emplacement D'Imprimante
L'Information D'Imprimante
L'imprimante Font et Modèlent
URI De Dispositif
Page de formatage
Imprimant la page
Imprimante D'Initialisation
Mode D'Imprimante
Les Travaux De Recevoir
Ne recevant pas Les Travaux
Print Jobs
Class
Local
Remote
Duplexing
Stapling
Fast Copies
Collated Copies
Hole Punching
Covering
Binding
Sorting
Petit (up to 241x356mm)
Moyenne (241x356mm to 330x483mm)
Grand (330x483mm and larger)
Faite sur Commande Taille
Idle
Processing
Stopped
400 Votre browser a envoyé une demande que ce serveur ne pourrait pas comprendre.
Ce serveur ne pourrait pas vérifier que vous êtes autorisés à accéder à la ressource.
You must pay to access this server.
You don't have permission to access the resource on this server.
La ressource demandée n'a pas été trouvée sur ce serveur.
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.
Outre de
Économiser
Écart
Défaut
Options
Plus D'Information
Noir
Couleur
Cyan
Magenta
Jaune
Copyright 1993-1999 par Easy Software Products, tous droits réservés.
Général
Imprimante
Options D'Image
Options D'HP-GL/2
Frais supplémentaires
Document
Autre
Pages D'Impression:
Entier Document
Chaîne De Page
Commande D'Inversion:
Format De Page:
1-Up
2-Up
4-Up
Graduation D'Image:
Taille Normale D'Image D'Utilisation
Zoom par Percent
Zoom par PPI
Image De Miroir:
Saturation De Couleur:
Tonalité De Couleur:
Adaptez pour paginer:
Ombrageant:
Largeur De Crayon lecteur:
Gamma Correction:
Éclat:
Ajoutez
Effacement
Modifiez
URI D'Imprimante
Nom D'Imprimante
Emplacement D'Imprimante
Information D'Imprimante
L'imprimante font et modèlent
URI De Dispositif
Page De Formatage
Imprimant La Page
D' Initialisation Imprimante
État D'Imprimante
Recevant Les Travaux
Ne recevant pas Les Travaux
Tirages
Classe
Local
Périphérique
Duplexage
Agrafant
Rapides Copies
Assemblées Copies
Poinçon De Trou
Bâche
Liant
Triant
Petit (jusqu'à 9.5x1în)
Support (9.5x1în à 13x19in)
Grand (13x19in et plus grand)
Faite sur commande Taille
Ralenti
Traitant
Arrêté
Tout
Impair
Même Pages
Plus foncé Plus Lumineux
Taille De Medias
Type De Supports
Source De Medias
Orientation:
Verticale
Horizontal
Job State
Job Name
User Name
Priority
Copies
File Size
Pending
400 Votre browser a envoyé une demande que ce serveur ne pourrait pas comprendre.
Ce serveur ne pourrait pas vérifier que vous êtes autorisés à accéder à la ressource.
Vous devez payer pour accéder à ce serveur.
Vous n'avez pas la permission d'accéder à la ressource sur ce serveur.
La ressource demandée n'a pas été trouvée sur ce serveur.
On ne permet pas la méthode demandée avec la ressource.
Une représentation appropriée pour la ressource n'a pas été trouvée sur ce serveur.
Vous n'avez pas la permission d'utiliser ce serveur comme centre serveur de procuration.
La demande a pris trop longtemps pour se terminer et a été interrompue.
La ressource demandée a plus d'une valeur.
La ressource demandée est allée et n'a pas été substituée.
La méthode demandée exige un Content-Length valide.
La condition préalable sur la demande a évalué à faux.
La demande est trop grande pour que ce serveur traite.
L'cUri de demande est trop grand pour que ce serveur traite.
Le format de demande n'est pas compris par ce serveur.
500 Le serveur a détecté une erreur irrémédiable et ne peut pas traiter votre demande.
La méthode demandée n'est pas appliquée par ce serveur.
Le proxy server a reçu une réponse incorrecte d'un serveur ascendant.
La ressource demandée est actuel indisponible sur ce serveur.
Le proxy server a pris trop longtemps pour répondre à ce serveur.
Ce serveur ne supporte pas la version de HTTP exigée par votre browser.
+120 -115
Ver Arquivo
@@ -1,116 +1,121 @@
iso-8859-1
OK
Cancel
Help
Quit
Close
Yes
No
Auto
On
Off
Save
Discard
Default
User-Defined
Options
More Info
Black
Colour
Cyan
Magenta
Yellow
Copyright
All Rights Reserved
General
Printer
PostScript
Image
Text
HPGL
Advanced
Print Banner Page
Verbose Logging
Print Pages
Document
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
Rotate Image
Best Fit
Colour Saturation
Colour Hue
Number of Columns
Margins
Wrap Text
Fit to Page
Shading
Default Pen Width
Gamma Correction
Brightness
Colour Profile
Add Printer
Delete Printer
Modify Printer
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 241x356mm)
Medium (241x356mm to 330x483mm)
Large (330x483mm and larger)
Custom Size
Idle
Processing
Stopped
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.
GIUSTO
Annullamento
Aiuto
Rinunciato
Vicino
No
Su
Fuori di
Risparmi
Scarto
Difetto
Opzioni
Più Info
Nero
Colore
Ciano
Fucsina
Colore giallo
Copyright 1993-1999 da di Easy Software Products, tutti radrizza riservato.
Generalità
Stampante
Opzioni Di Immagine
Opzioni Di HP-GL/2
Supplemento
Documento
Altro
Pagine Della Stampa:
Intero Documento
Gamma Di Pagina:
Ordine D'inversione:
Formato Della Pagina:
1-Up
2-Up
4-Up
Scaling Di Immagine:
Formato Naturale Di Immagine Di Uso
Zoom da Percent
Zoom da PPI
Immagine Dello Specchio:
Saturazione Di Colore:
Tonalità Di Colore:
Adattare per paginare:
Proteggendo:
Larghezza Della Penna:
Correzione Gamma:
Luminosità:
Aggiungere
Cancellazione
Modificare
URI Della Stampante
Nome Della Stampante
Posizione Della Stampante
Stampante Info
Stampante fa e modella
URI Del Dispositivo
Pagina Di Formattazione
Stampando Pagina
D' Inizializzazione Stampante
Condizione Della Stampante
Accettando I Lavori
Non accettando I Lavori
Lavori Di Stampa
Codice categoria
Locale
Periferico
Utilizzazione per due usi
Cucendo con punti metallici
Veloci Copie
Fascicolate Copie
Perforazione Del Foro
Covering
Legandosi
Ordinando
Piccolo (fino a 9.5x1în)
Media (9.5x1în - 13x19in)
Grande (13x19in e più grande)
Su ordinazione Formato
Idle
Elaborando
Arrestato
Tutto
Dispari
Anche Pagine
Più Scuro Più Luminoso
Formato Di Media
Tipo Di Media
Sorgente Di Media
Orientamento:
Portrait
Paesaggio
Job State
Job Name
User Name
Priority
Copies
File Size
Pending
400 Il vostro browser ha trasmesso una richiesta che questo server non potrebbe capire.
Questo server non potrebbe verificare che siete autorizzati ad accedere alla risorsa.
Dovete pagare accedere a questo server.
Non avete permesso accedere alla risorsa su questo server.
La risorsa chiesta non è stata trovata su questo server.
Il metodo chiesto non è permesso con la risorsa.
Una rappresentazione adatta per la risorsa non è stata trovata su questo server.
Non avete permesso utilizzare questo server come calcolatore centrale di procura.
La richiesta ha preso troppo lungamente per completare ed è stata abbandonata.
La risorsa chiesta ha più di un valore.
La risorsa chiesta è andata e non è stata sostituita.
Il metodo chiesto richiede un Content-Length valido.
Il presupposto sulla richiesta ha valutato a falso.
La richiesta è troppo grande affinchè questo server elabori.
Il URI di richiesta è troppo grande affinchè questo server elabori.
Il formato di richiesta non è capito da questo server.
500 Il server ha rilevato un errore unrecoverable e non può elaborare la vostra richiesta.
Il metodo chiesto non è effettuato da questo server.
Il proxy server ha ricevuto una risposta non valida da un server verso l'alto.
La risorsa chiesta è attualmente non disponibile su questo server.
Il proxy server ha preso troppo lungamente per rispondere a questo server.
Questo server non sostiene la versione del HTTP richiesta dal vostro browser.
+259
Ver Arquivo
@@ -0,0 +1,259 @@
/*
* "$Id$"
*
* HTTP-based translation program for the Common UNIX Printing System (CUPS).
*
* This program uses AltaVista's "babelfish" page to translate the POSIX
* message file (C/cups_C) to several different languages. The translation
* isn't perfect, but it's a good start (better than working from scratch.)
*
* Copyright 1997-1999 by 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
* 44145 Airport View Drive, Suite 204
* Hollywood, Maryland 20636-3111 USA
*
* Voice: (301) 373-9603
* EMail: cups-info@cups.org
* WWW: http://www.cups.org
*
* Contents:
*
* main() - Main entry.
*/
/*
* Include necessary headers...
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <cups/http.h>
/*
* 'main()' - Main entry.
*/
int /* O - Exit status */
main(int argc, /* I - Number of command-line arguments */
char *argv[]) /* I - Command-line arguments */
{
http_t *http; /* HTTP connection */
http_status_t status; /* Status of GET command */
char line[1024], /* Line from file */
*lineptr, /* Pointer into line */
buffer[2048], /* Input/output buffer */
*bufptr, /* Pointer into buffer */
length[16]; /* Content length */
int bytes; /* Number of bytes read */
FILE *in, /* Input file */
*out; /* Output file */
if (argc != 3)
{
fputs("Usage: translate outfile language\n", stderr);
return (1);
}
if ((in = fopen("C/cups_C", "r")) == NULL)
{
perror("translate: Unable to open input file");
return (1);
}
if ((out = fopen(argv[1], "w")) == NULL)
{
perror("translate: Unable to create output file");
fclose(in);
return (1);
}
/*
* Do character set...
*/
fgets(line, sizeof(line), in);
fputs("iso-8859-1\n", out); /* Right now that's all that Babelfish does */
/*
* Then strings...
*/
while (fgets(line, sizeof(line), in) != NULL)
{
/*
* Strip trailing newline if necessary...
*/
lineptr = line + strlen(line) - 1;
if (*lineptr == '\n')
*lineptr = '\0';
/*
* Skip leading numbers and whitespace...
*/
lineptr = line;
while (isdigit(*lineptr))
putc(*lineptr++, out);
while (isspace(*lineptr))
putc(*lineptr++, out);
if (*lineptr == '\0')
{
putc('\n', out);
continue;
}
/*
* Encode the line into the buffer...
*/
sprintf(buffer, "doit=done&lp=en_%s&urltext=[", argv[2]);
bufptr = buffer + strlen(buffer);
while (*lineptr)
{
if (*lineptr == ' ')
*bufptr++ = '+';
else if (*lineptr < ' ' || *lineptr == '%')
{
sprintf(bufptr, "%%%02X", *lineptr & 255);
bufptr += 3;
}
else
*bufptr++ = *lineptr;
lineptr ++;
}
*bufptr++ = '&';
*bufptr = '\0';
sprintf(length, "%d", bufptr - buffer);
/*
* Send the request...
*/
if ((http = httpConnect("dns.easysw.com", 80)) == NULL)
{
perror("translate: Unable to contact proxy server");
fclose(in);
fclose(out);
return (1);
}
lineptr = line;
while (isdigit(*lineptr))
lineptr ++;
while (isspace(*lineptr))
lineptr ++;
printf("%s = ", lineptr);
fflush(stdout);
http->version = HTTP_1_0;
httpClearFields(http);
httpSetField(http, HTTP_FIELD_CONTENT_TYPE,
"application/x-www-form-urlencoded");
httpSetField(http, HTTP_FIELD_CONTENT_LENGTH, length);
if (httpPost(http, "http://babelfish.altavista.digital.com/cgi-bin/translate?"))
httpPost(http, "http://babelfish.altavista.digital.com/cgi-bin/translate?");
httpWrite(http, buffer, bufptr - buffer);
while ((status = httpUpdate(http)) == HTTP_CONTINUE);
if (status == HTTP_OK)
{
int sawparen = 0;
int skipws = 1;
int sawbracket = 0;
while ((bytes = httpRead(http, buffer, sizeof(buffer))) > 0)
{
buffer[bytes] = '\0';
for (bufptr = buffer; *bufptr; bufptr ++)
{
if (*bufptr == '>')
sawbracket = 0;
else if (*bufptr == '<')
{
sawbracket = 1;
if (sawparen)
break;
}
else if (*bufptr == '[' && !sawbracket)
sawparen = 1;
else if (sawparen)
{
if (skipws)
{
if (!isspace(*bufptr))
{
skipws = 0;
*bufptr = toupper(*bufptr);
}
}
if (!skipws)
{
if (*bufptr == '\n')
{
putc(' ', out);
putchar(' ');
}
else
{
putc(*bufptr, out);
putchar(*bufptr);
}
}
}
}
if (sawparen && sawbracket)
break;
}
httpFlush(http);
putc('\n', out);
putchar('\n');
}
else
{
printf("HTTP error %d\n", status);
fprintf(out, "%s\n", lineptr);
httpFlush(http);
}
httpClose(http);
}
fclose(in);
fclose(out);
return (0);
}
/*
* End of "$Id$".
*/
+6 -6
Ver Arquivo
@@ -33,9 +33,9 @@ MAN5 = classes.conf.5 cupsd.conf.5 mime.convs.5 mime.types.5 \
printers.conf.5
MAN8 = accept.8 cupsd.8 enable.8 lpadmin.8 lpc.8
CAT1 = $(MAN1:.1=.z)
CAT5 = $(MAN5:.5=.z)
CAT8 = $(MAN8:.8=.z)
CAT1 = $(MAN1:.1=.$(CAT))
CAT5 = $(MAN5:.5=.$(CAT))
CAT8 = $(MAN8:.8=.$(CAT))
#
# Make everything...
@@ -65,13 +65,13 @@ install:
$(LN) enable.8 $(MANDIR)/man8/disable.8
-$(MKDIR) $(MANDIR)/cat1
$(CP) $(CAT1) $(MANDIR)/cat1
$(LN) lp.z $(MANDIR)/cat1/cancel.z
$(LN) lp.$(CAT) $(MANDIR)/cat1/cancel.$(CAT)
-$(MKDIR) $(MANDIR)/cat5
$(CP) $(CAT5) $(MANDIR)/cat5
-$(MKDIR) $(MANDIR)/cat8
$(CP) $(CAT8) $(MANDIR)/cat8
$(LN) accept.z $(MANDIR)/cat8/reject.z
$(LN) enable.z $(MANDIR)/cat8/disable.z
$(LN) accept.$(CAT) $(MANDIR)/cat8/reject.$(CAT)
$(LN) enable.$(CAT) $(MANDIR)/cat8/disable.$(CAT)
#
# End of "$Id$".
+7 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: accept.8 327 1999-05-14 17:03:06Z mike $"
.\" "$Id: accept.8 380 1999-06-10 16:15:04Z mike $"
.\"
.\" accept/reject man page for the Common UNIX Printing System (CUPS).
.\"
@@ -29,7 +29,11 @@ accept/reject \- accept/reject jobs sent to a destination
destination(s)
.br
.B reject
.I [ -r [ reason ] ]
[ -h
.I server
] [ -r [
.I reason
] ]
destination(s)
.SH DESCRIPTION
\fBaccept\fR instructs the printing system to accept print jobs to the
@@ -49,5 +53,5 @@ CUPS Software Administrator's Manual
.SH COPYRIGHT
Copyright 1993-1999 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: accept.8 327 1999-05-14 17:03:06Z mike $".
.\" End of "$Id: accept.8 380 1999-06-10 16:15:04Z mike $".
.\"
BIN
Ver Arquivo
Arquivo binário não exibido.
+7 -5
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: enable.8 327 1999-05-14 17:03:06Z mike $"
.\" "$Id: enable.8 380 1999-06-10 16:15:04Z mike $"
.\"
.\" enable/disable man page for the Common UNIX Printing System (CUPS).
.\"
@@ -29,9 +29,11 @@ disable, disable \- stop/start printers and classes
destination(s)
.br
.B disable
.I [ \-c ]
.I [ \-r [ reason ] ]
destination(s)
[ \-c ] [ -h
.I server
] [ \-r [
.I reason
] ] destination(s)
.SH DESCRIPTION
\fBenable\fR starts the named printers or classes.
.LP
@@ -58,5 +60,5 @@ CUPS Software Administrator's Manual
Copyright 1993-1999 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: enable.8 327 1999-05-14 17:03:06Z mike $".
.\" End of "$Id: enable.8 380 1999-06-10 16:15:04Z mike $".
.\"
BIN
Ver Arquivo
Arquivo binário não exibido.
+5 -3
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: lp.1 343 1999-05-20 16:16:48Z mike $"
.\" "$Id: lp.1 380 1999-06-10 16:15:04Z mike $"
.\"
.\" lp/cancel man page for the Common UNIX Printing System (CUPS).
.\"
@@ -41,7 +41,9 @@ cancel \- cancel jobs
]
.br
.B cancel
[ \-a ] [
[ \-a ] [ -h
.I server
] [
.I id
] [
.I destination
@@ -63,5 +65,5 @@ CUPS Software User's Manual
.SH COPYRIGHT
Copyright 1993-1999 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: lp.1 343 1999-05-20 16:16:48Z mike $".
.\" End of "$Id: lp.1 380 1999-06-10 16:15:04Z mike $".
.\"
BIN
Ver Arquivo
Arquivo binário não exibido.
+17 -6
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: lpadmin.8 343 1999-05-20 16:16:48Z mike $"
.\" "$Id: lpadmin.8 461 1999-06-24 17:44:19Z mike $"
.\"
.\" lpadmin man page for the Common UNIX Printing System (CUPS).
.\"
@@ -21,21 +21,27 @@
.\" EMail: cups-info@cups.org
.\" WWW: http://www.cups.org
.\"
.TH lpadmin 8 "Common UNIX Printing System" "14 May 1999" "Easy Software Products"
.TH lpadmin 8 "Common UNIX Printing System" "22 June 1999" "Easy Software Products"
.SH NAME
lpadmin \- configure cups printers and classes
.SH SYNOPSIS
.B lpadmin
\-d
[ -h
.I server
] \-d
.I destination
.br
.B lpadmin
\-p
[ -h
.I server
] \-p
.I printer
.I option(s)
.br
.B lpadmin
\-x
[ -h
.I server
] \-x
.I destination
.SH DESCRIPTION
\fBlpadmin\fR configures printer and class queues provided by CUPS. It can also
@@ -85,6 +91,11 @@ is a filename it is automatically converted to the form \fBfile:/file/name\fR.
.br
Provides a textual description of the printer.
.TP 5
\-E
.br
Enables the printer; this is the same as running the \fIaccept(8)\fR and
\fIenable(8)\fR programs on the printer.
.TP 5
\-L \fIlocation\fR
.br
Provides a textual location of the printer.
@@ -109,5 +120,5 @@ CUPS Software Administrator's Manual
.SH COPYRIGHT
Copyright 1993-1999 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: lpadmin.8 343 1999-05-20 16:16:48Z mike $".
.\" End of "$Id: lpadmin.8 461 1999-06-24 17:44:19Z mike $".
.\"
BIN
Ver Arquivo
Arquivo binário não exibido.
+78 -5
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: lpstat.1 327 1999-05-14 17:03:06Z mike $"
.\" "$Id: lpstat.1 461 1999-06-24 17:44:19Z mike $"
.\"
.\" lpstat man page for the Common UNIX Printing System (CUPS).
.\"
@@ -21,22 +21,95 @@
.\" EMail: cups-info@cups.org
.\" WWW: http://www.cups.org
.\"
.TH lpstat 1 "Common UNIX Printing System" "14 May 1999" "Easy Software Products"
.TH lpstat 1 "Common UNIX Printing System" "24 June 1999" "Easy Software Products"
.SH NAME
lpstat \- print cups status information
.SH SYNOPSIS
.B lpstat
[ -a [
.I destination(s)
] ] [ -c [
.I class(es)
] ] [ -d ] [ -h
.I server
] [ -o [
.I destination(s)
] ] [ -p [
.I printer(s)
] ] [ -r ] [ -s ] [ -t ] [ -u [
.I user(s)
] ] [ -v [
.I printer(s)
] ]
.SH DESCRIPTION
\fBlpstat\fR
\fBlpstat\fR displays status information about the current classes, jobs, and
printers. When run with no arguments, \fBlpstat\fR will list jobs queued by
the user. Other options include:
.TP 5
\-a [\fIprinter(s)\fR]
.br
Shows the accepting state of printer queues. If no printers are
specified then all printers are listed.
.TP 5
\-c [\fIclass(es)\fR]
.br
Shows the printer classes and the printers that belong to them. If no
classes are specified then all classes are listed.
.TP 5
\-d
.br
Shows the current default destination.
.TP 5
\-h \fIserver\fR
.br
Specifies the CUPS server to communicate with.
.TP 5
\-o [\fIdestination(s)\fR]
.br
Shows the jobs queue on the specified destinations. If no destinations are
specified all jobs are shown.
.TP 5
\-p [\fIprinter(s)\fR]
.br
Shows the printers and whether or not they are enabled for printing. If
no printers are specified then all printers are listed.
.TP 5
\-r
.br
Shows whether or not the CUPS server is running.
.TP 5
\-s
.br
Shows a status summary, including the system default destination, a
list of classes and their member printers, and a list of printers and
their associated devices. This is equivalent to using the "-d", "-c",
and "-p" options.
.TP 5
\-t
.br
Shows all status information. This is equivalent to using the "-r",
"-d", "-c", "-d", "-v", "-a", "-p", and "-o" options.
.TP 5
\-u [\fIuser(s)\fR]
.br
Shows a list of print jobs queued by the specified users. If no users
are specified, lists the jobs queued by the current user.
.TP 5
\-v [\fIprinter(s)\fR]
.br
Shows the printers and what device they are attached to. If no printers
are specified then all printers are listed.
.SH COMPATIBILITY
Unlike the System V printing system, CUPS allows printer names to contain
any printable character except SPACE and TAB. Also, printer and class names are
\fBnot\fR case-sensitive.
\fBnot\fR case-sensitive.
.LP
The "-h" option is not a standard System V option.
.SH SEE ALSO
cancel(1), lp(1),
CUPS Software User's Manual
.SH COPYRIGHT
Copyright 1993-1999 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: lpstat.1 327 1999-05-14 17:03:06Z mike $".
.\" End of "$Id: lpstat.1 461 1999-06-24 17:44:19Z mike $".
.\"
BIN
Ver Arquivo
Arquivo binário não exibido.
+2 -1
Ver Arquivo
@@ -52,6 +52,7 @@
*UIConstraints: *PageSize A4 *InputSlot Envelope
*UIConstraints: *PageSize A5 *InputSlot Envelope
*UIConstraints: *PageSize B5 *InputSlot Envelope
*UIConstraints: *Resolution 600dpi *ColorModel CMYK
*OpenUI *PageSize/Media Size: PickOne
*OrderDependency: 10 AnySetup *PageSize
@@ -137,7 +138,7 @@
*Resolution 600dpi/600 DPI: "<</HWResolution[600 600]/cupsColorSpace 3>>setpagedevice"
*CloseUI: *Resolution
*OpenUI *ColorModel/Output ColorModel: PickOne
*OpenUI *ColorModel/Output Mode: PickOne
*OrderDependency: 10 AnySetup *ColorModel
*DefaultColorModel: CMYK
*ColorModel CMYK/Color: "<</cupsColorOrder 1/cupsColorSpace 8/cupsCompression 2>>setpagedevice"
+1 -1
Ver Arquivo
@@ -125,7 +125,7 @@
*OpenUI *Resolution/Output Resolution: PickOne
*OrderDependency: 20 AnySetup *Resolution
*DefaultResolution: 600dpi
*DefaultResolution: 300dpi
*Resolution 150dpi/150 DPI: "<</HWResolution[150 150]/cupsColorOrder 0/cupsColorSpace 3/cupsCompression 2>>setpagedevice"
*Resolution 300dpi/300 DPI: "<</HWResolution[300 300]/cupsColorOrder 0/cupsColorSpace 3/cupsCompression 2>>setpagedevice"
*Resolution 600dpi/600 DPI: "<</HWResolution[600 600]/cupsColorOrder 0/cupsColorSpace 3/cupsCompression 2>>setpagedevice"
-482
Ver Arquivo
@@ -1,482 +0,0 @@
GNU LIBRARY GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 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.
[This is the first released version of the library GPL. It is
numbered 2 because it goes with version 2 of the ordinary GPL.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Library General Public License, applies to some
specially designated Free Software Foundation software, and to any
other libraries whose authors decide to use it. You can use it for
your libraries, 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 library, or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link a program with the library, you must provide
complete object files to the recipients so that they can relink them
with the library, after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
Our method of protecting your rights has two steps: (1) copyright
the library, and (2) offer you this license which gives you legal
permission to copy, distribute and/or modify the library.
Also, for each distributor's protection, we want to make certain
that everyone understands that there is no warranty for this free
library. If the library is modified by someone else and passed on, we
want its recipients to know that what they have is not the original
version, 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 companies distributing free
software will individually obtain patent licenses, thus in effect
transforming the program into proprietary software. To prevent this,
we have made it clear that any patent must be licensed for everyone's
free use or not licensed at all.
Most GNU software, including some libraries, is covered by the ordinary
GNU General Public License, which was designed for utility programs. This
license, the GNU Library General Public License, applies to certain
designated libraries. This license is quite different from the ordinary
one; be sure to read it in full, and don't assume that anything in it is
the same as in the ordinary license.
The reason we have a separate public license for some libraries is that
they blur the distinction we usually make between modifying or adding to a
program and simply using it. Linking a program with a library, without
changing the library, is in some sense simply using the library, and is
analogous to running a utility program or application program. However, in
a textual and legal sense, the linked executable is a combined work, a
derivative of the original library, and the ordinary General Public License
treats it as such.
Because of this blurred distinction, using the ordinary General
Public License for libraries did not effectively promote software
sharing, because most developers did not use the libraries. We
concluded that weaker conditions might promote sharing better.
However, unrestricted linking of non-free programs would deprive the
users of those programs of all benefit from the free status of the
libraries themselves. This Library General Public License is intended to
permit developers of non-free programs to use free libraries, while
preserving your freedom as a user of such programs to change the free
libraries that are incorporated in them. (We have not seen how to achieve
this as regards changes in header files, but we have achieved it as regards
changes in the actual functions of the Library.) The hope is that this
will lead to faster development of free libraries.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, while the latter only
works together with the library.
Note that it is possible for a library to be covered by the ordinary
General Public License rather than by this special one.
GNU LIBRARY GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library which
contains a notice placed by the copyright holder or other authorized
party saying it may be distributed under the terms of this Library
General Public License (also called "this License"). Each licensee is
addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, 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 library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete 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 distribute a copy of this License along with the
Library.
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.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, 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) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
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 Library, 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 Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you 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.
If distribution of 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 satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also compile or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
c) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
d) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. 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.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library 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.
9. 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 Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
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.
11. 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 Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library 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 Library.
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.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library 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.
13. The Free Software Foundation may publish revised and/or new
versions of the Library 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 Library
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 Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
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
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "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
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. 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 LIBRARY 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
LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!
+4
Ver Arquivo
@@ -129,8 +129,10 @@ install: $(TARGETS)
#
genarch: genarch.o
echo Linking $@...
$(CC) $(LDFLAGS) -o genarch genarch.o
arch.h: genarch
echo Generating $@...
./genarch arch.h
#
@@ -138,8 +140,10 @@ arch.h: genarch
#
pstoraster: $(OBJS) ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o pstoraster $(OBJS) $(IMGLIBS)
gdevcups.o: ../cups/raster.h
$(OBJS): arch.h ../config.h ../Makedefs
gconf.o iconf.o gscdef.o: gconfig.h
+16 -2
Ver Arquivo
@@ -461,6 +461,9 @@ cups_map_color_rgb(gx_device *pdev, /* I - Device info */
switch (cups->header.cupsColorSpace)
{
case CUPS_CSPACE_K :
case CUPS_CSPACE_WHITE :
case CUPS_CSPACE_GOLD :
case CUPS_CSPACE_SILVER :
prgb[0] =
prgb[1] =
prgb[2] = lut_color_rgb[c3];
@@ -531,6 +534,8 @@ cups_map_color_rgb(gx_device *pdev, /* I - Device info */
break;
case CUPS_CSPACE_YMCK :
case CUPS_CSPACE_GMCK :
case CUPS_CSPACE_GMCS :
k = lut_color_rgb[c3];
divk = gx_max_color_value - k;
if (divk == 0)
@@ -683,6 +688,9 @@ cups_map_rgb_color(gx_device *pdev, /* I - Device info */
break;
case CUPS_CSPACE_K :
case CUPS_CSPACE_WHITE :
case CUPS_CSPACE_GOLD :
case CUPS_CSPACE_SILVER :
i = lut_rgb_color[gx_max_color_value - (r * 31 + g * 61 + b * 8) / 100];
break;
@@ -838,6 +846,8 @@ cups_map_rgb_color(gx_device *pdev, /* I - Device info */
break;
case CUPS_CSPACE_YMCK :
case CUPS_CSPACE_GMCK :
case CUPS_CSPACE_GMCS :
ic = gx_max_color_value - r;
im = gx_max_color_value - g;
iy = gx_max_color_value - b;
@@ -1451,6 +1461,9 @@ cups_set_color_info(gx_device *pdev) /* I - Device info */
default :
case CUPS_CSPACE_W :
case CUPS_CSPACE_K :
case CUPS_CSPACE_WHITE :
case CUPS_CSPACE_GOLD :
case CUPS_CSPACE_SILVER :
cups->header.cupsBitsPerPixel = cups->header.cupsBitsPerColor;
cups->color_info.depth = cups->header.cupsBitsPerPixel;
cups->color_info.num_components = 1;
@@ -1486,6 +1499,8 @@ cups_set_color_info(gx_device *pdev) /* I - Device info */
case CUPS_CSPACE_CMYK :
case CUPS_CSPACE_YMCK :
case CUPS_CSPACE_KCMY :
case CUPS_CSPACE_GMCK :
case CUPS_CSPACE_GMCS :
if (cups->header.cupsColorOrder != CUPS_ORDER_CHUNKED)
cups->header.cupsBitsPerPixel = cups->header.cupsBitsPerColor;
else
@@ -1496,8 +1511,7 @@ cups_set_color_info(gx_device *pdev) /* I - Device info */
break;
}
if (cups->header.cupsColorSpace != CUPS_CSPACE_W &&
cups->header.cupsColorSpace != CUPS_CSPACE_K)
if (cups->color_info.num_components > 1)
{
cups->color_info.max_gray = (1 << cups->header.cupsBitsPerColor) - 1;
cups->color_info.max_color = (1 << cups->header.cupsBitsPerColor) - 1;
+18 -18
Ver Arquivo
@@ -119,7 +119,7 @@ mem_mono_strip_copy_rop(gx_device *dev,
const gx_strip_bitmap *textures, const gx_color_index *tcolors,
int x, int y, int width, int height,
int phase_x, int phase_y, gs_logical_operation_t lop)
{ gs_rop3_t rop = lop & lop_rop_mask;
{ gs_rop3_t rop = (gs_rop3_t)(lop & lop_rop_mask);
gx_strip_bitmap no_texture;
bool invert;
uint draster = mdev->raster;
@@ -163,17 +163,17 @@ mem_mono_strip_copy_rop(gx_device *dev,
*/
if ( invert )
rop = byte_reverse_bits[rop] ^ 0xff;
rop = (gs_rop3_t)(byte_reverse_bits[rop] ^ 0xff);
/* Modify the raster operation according to the source palette. */
if ( scolors != 0 )
{ /* Source with palette. */
switch ( (int)((scolors[1] << 1) + scolors[0]) )
{
case 0: rop = rop3_know_S_0(rop); break;
case 1: rop = rop3_invert_S(rop); break;
case 0: rop = (gs_rop3_t)rop3_know_S_0(rop); break;
case 1: rop = (gs_rop3_t)rop3_invert_S(rop); break;
case 2: break;
case 3: rop = rop3_know_S_1(rop); break;
case 3: rop = (gs_rop3_t)rop3_know_S_1(rop); break;
}
}
@@ -182,10 +182,10 @@ mem_mono_strip_copy_rop(gx_device *dev,
{ /* Texture with palette. */
switch ( (int)((tcolors[1] << 1) + tcolors[0]) )
{
case 0: rop = rop3_know_T_0(rop); break;
case 1: rop = rop3_invert_T(rop); break;
case 0: rop = (gs_rop3_t)rop3_know_T_0(rop); break;
case 1: rop = (gs_rop3_t)rop3_invert_T(rop); break;
case 2: break;
case 3: rop = rop3_know_T_1(rop); break;
case 3: rop = (gs_rop3_t)rop3_know_T_1(rop); break;
}
}
@@ -367,7 +367,7 @@ mem_gray8_rgb24_strip_copy_rop(gx_device *dev,
const gx_strip_bitmap *textures, const gx_color_index *tcolors,
int x, int y, int width, int height,
int phase_x, int phase_y, gs_logical_operation_t lop)
{ gs_rop3_t rop = lop & lop_rop_mask;
{ gs_rop3_t rop = (gs_rop3_t)(lop & lop_rop_mask);
gx_color_index const_source = gx_no_color_index;
gx_color_index const_texture = gx_no_color_index;
uint draster = mdev->raster;
@@ -386,9 +386,9 @@ mem_gray8_rgb24_strip_copy_rop(gx_device *dev,
{ /* Constant source */
const_source = scolors[0];
if ( const_source == 0 )
rop = rop3_know_S_0(rop);
rop = (gs_rop3_t)rop3_know_S_0(rop);
else if ( const_source == all_ones )
rop = rop3_know_S_1(rop);
rop = (gs_rop3_t)rop3_know_S_1(rop);
}
else if ( !rop3_uses_S(rop) )
const_source = 0; /* arbitrary */
@@ -398,9 +398,9 @@ mem_gray8_rgb24_strip_copy_rop(gx_device *dev,
{ /* Constant texture */
const_texture = tcolors[0];
if ( const_texture == 0 )
rop = rop3_know_T_0(rop);
rop = (gs_rop3_t)rop3_know_T_0(rop);
else if ( const_texture == all_ones )
rop = rop3_know_T_1(rop);
rop = (gs_rop3_t)rop3_know_T_1(rop);
}
else if ( !rop3_uses_T(rop) )
const_texture = 0; /* arbitrary */
@@ -684,7 +684,7 @@ gx_real_default_strip_copy_rop(gx_device *dev,
* pixels, the memory device implementation to do the operation,
* and copy_color to write the pixels back.
*/
gs_rop3_t rop = lop & lop_rop_mask;
gs_rop3_t rop = (gs_rop3_t)(lop & lop_rop_mask);
int depth = dev->color_info.depth;
const gx_device_memory *mdproto = gdev_mem_device_for_bits(depth);
gx_device_memory mdev;
@@ -1006,8 +1006,8 @@ gs_transparent_rop(gs_rop3_t rop, bool source_transparent,
#define So rop3_not(rop3_S)
#define Po rop3_not(rop3_T)
gs_rop3_t mask =
(source_transparent ?
(pattern_transparent ? So & Po : So) :
(pattern_transparent ? ~So | Po : rop3_1));
return (rop & mask) | (rop3_D & ~mask);
(gs_rop3_t)(source_transparent ?
(pattern_transparent ? So & Po : So) :
(pattern_transparent ? ~So | Po : rop3_1));
return (gs_rop3_t)((rop & mask) | (rop3_D & ~mask));
}
+1 -1
Ver Arquivo
@@ -96,7 +96,7 @@ public_st_const_string_element();
#define sptr ((gs_const_string *)vptr)
private ENUM_PTRS_BEGIN(const_string_enum_ptrs) return 0;
case 0: *pep = (void *)sptr; return ptr_const_string_type;
ENUM_PTRS_END
} }
private RELOC_PTRS_BEGIN(const_string_reloc_ptrs) {
gs_reloc_const_string(sptr, gcst);
} RELOC_PTRS_END
+1 -1
Ver Arquivo
@@ -70,7 +70,7 @@ private ENUM_PTRS_BEGIN(halftone_component_enum_ptrs) return 0;
if ( hptr->type != ht_type_threshold )
return 0;
ENUM_RETURN_CONST_STRING_PTR(gs_halftone_component, params.threshold.thresholds);
ENUM_PTRS_END
} }
private RELOC_PTRS_BEGIN(halftone_component_reloc_ptrs) {
if ( hptr->type == ht_type_threshold )
+1 -1
Ver Arquivo
@@ -139,7 +139,7 @@ gs_image_init(gs_image_enum *pie, const gs_image_t *pim, bool multi,
code = (*dev_proc(dev, begin_image))
(dev, (const gs_imager_state *)pgs, &image,
(multi ? gs_image_format_component_planar : gs_image_format_chunky),
gs_image_shape_rows | gs_image_shape_split_row,
(gs_image_shape_t)(gs_image_shape_rows | gs_image_shape_split_row),
pgs->dev_color, pgs->clip_path, pie->memory, &pie->info);
if ( code < 0 )
return code;
+2 -2
Ver Arquivo
@@ -185,7 +185,7 @@ fill_with_rule(gs_state *pgs, int rule)
/* into the parent's path. */
if ( pgs->in_charpath )
code = gx_path_add_char_path(pgs->show_gstate->path, pgs->path,
pgs->in_charpath);
(gs_char_path_mode)pgs->in_charpath);
else
{ int abits, acode;
@@ -231,7 +231,7 @@ gs_stroke(gs_state *pgs)
/* into the parent's path. */
if ( pgs->in_charpath )
code = gx_path_add_char_path(pgs->show_gstate->path, pgs->path,
pgs->in_charpath);
(gs_char_path_mode)pgs->in_charpath);
else
{ int abits, acode;
float orig_width;

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