Comparar commits
1 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| ed7523132b |
+337
-220
@@ -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 © 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
@@ -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
|
||||
|
||||
@@ -61,6 +61,7 @@ install:
|
||||
(cd data; make install)
|
||||
(cd doc; make install)
|
||||
(cd fonts; make install)
|
||||
(cd ppd; make install)
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
|
||||
+14
-116
@@ -4,21 +4,18 @@
|
||||
</HEAD>
|
||||
<BODY>
|
||||
|
||||
<H1>README - CUPS v1.0b1</H1>
|
||||
<H1>README - CUPS v1.0b3</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,128 +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 & 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>
|
||||
@@ -220,9 +118,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
|
||||
|
||||
+18
-97
@@ -1,19 +1,16 @@
|
||||
README - CUPS v1.0b1
|
||||
README - CUPS v1.0b3
|
||||
|
||||
CONTENTS
|
||||
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
|
||||
Introduction
|
||||
|
||||
The Common UNIX Printing System provides a portable printing layer for UNIX®
|
||||
operating systems. It has been developed by Easy Software Products to
|
||||
@@ -33,7 +30,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
|
||||
Requirements
|
||||
|
||||
You'll need an ANSI C compiler to build CUPS on your system. As its name
|
||||
implies, CUPS is designed to run on the UNIX operating system, however the
|
||||
@@ -49,98 +46,22 @@ nroff-like package.
|
||||
The documentation is formatted using the HTMLDOC software (again, not needed
|
||||
unless you make changes.)
|
||||
|
||||
COMPILING CUPS
|
||||
Using CUPS
|
||||
|
||||
CUPS uses GNU autoconf to configure the makefiles and source code for your
|
||||
system. To configure CUPS for your system type:
|
||||
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.
|
||||
|
||||
% ./configure ENTER
|
||||
Once you have installed CUPS, the Software Administrator's Manual and
|
||||
Software User's Manual are excellent places to start setting things up.
|
||||
|
||||
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:
|
||||
|
||||
% ./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
|
||||
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,13 +75,13 @@ 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
|
||||
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
|
||||
Other Resources
|
||||
|
||||
See the CUPS web site at "http://www.cups.org" for other site links.
|
||||
|
||||
@@ -169,15 +90,15 @@ 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
|
||||
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
|
||||
|
||||
+11
-2
@@ -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...
|
||||
@@ -59,6 +59,15 @@ lpc: lpc.o ../cups/libcups.a
|
||||
|
||||
lpc.o: ../cups/cups.h ../Makedefs
|
||||
|
||||
#
|
||||
# lpq
|
||||
#
|
||||
|
||||
lpq: lpq.o ../cups/libcups.a
|
||||
$(CC) $(LDFLAGS) -o lpq lpq.o $(LIBS)
|
||||
|
||||
lpq.o: ../cups/cups.h ../Makedefs
|
||||
|
||||
#
|
||||
# lpr
|
||||
#
|
||||
|
||||
+9
-9
@@ -225,7 +225,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 +257,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 +397,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);
|
||||
|
||||
|
||||
@@ -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("localhost", 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$".
|
||||
*/
|
||||
+2
-2
@@ -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);
|
||||
}
|
||||
|
||||
@@ -46,6 +46,8 @@ clean:
|
||||
#
|
||||
|
||||
install:
|
||||
-$(MKDIR) $(SERVERROOT)/cgi-bin
|
||||
$(CP) $(TARGETS) $(SERVERROOT)/cgi-bin
|
||||
|
||||
#
|
||||
# printers.cgi
|
||||
|
||||
+1
-1
@@ -54,7 +54,7 @@ install:
|
||||
else \
|
||||
$(CP) $$file $(SERVERROOT)/conf ; \
|
||||
fi ; \
|
||||
end
|
||||
done
|
||||
|
||||
#
|
||||
# End of "$Id$".
|
||||
|
||||
+9
-9
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: classes.conf 320 1999-05-13 20:40:14Z mike $"
|
||||
# "$Id: classes.conf 333 1999-05-17 18:03:40Z mike $"
|
||||
#
|
||||
# Sample class configuration file for the Common UNIX Printing System
|
||||
# (CUPS) scheduler.
|
||||
@@ -40,33 +40,33 @@
|
||||
# the default.
|
||||
#
|
||||
|
||||
<Class sample>
|
||||
#<Class sample>
|
||||
#
|
||||
# Info: the description for the class.
|
||||
#
|
||||
|
||||
Info Acme LaserPrint 1000 Printers
|
||||
#Info Acme LaserPrint 1000 Printers
|
||||
|
||||
#
|
||||
# MoreInfo: a URL for more information on the printer.
|
||||
#
|
||||
|
||||
MoreInfo http://www.acme.com/lp1000.html
|
||||
#MoreInfo http://www.acme.com/lp1000.html
|
||||
|
||||
#
|
||||
# Location: the location of the printer.
|
||||
#
|
||||
|
||||
Location Room 101 in the activities building
|
||||
#Location Room 101 in the activities building
|
||||
|
||||
#
|
||||
# Printer: adds a printer to the class.
|
||||
#
|
||||
|
||||
Printer sample@host1
|
||||
Printer sample@host2
|
||||
</Class>
|
||||
#Printer sample
|
||||
#Printer sample@host2
|
||||
#</Class>
|
||||
|
||||
#
|
||||
# End of "$Id: classes.conf 320 1999-05-13 20:40:14Z mike $".
|
||||
# End of "$Id: classes.conf 333 1999-05-17 18:03:40Z mike $".
|
||||
#
|
||||
|
||||
+15
-7
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: cupsd.conf 327 1999-05-14 17:03:06Z mike $"
|
||||
# "$Id: cupsd.conf 349 1999-05-21 20:53:02Z mike $"
|
||||
#
|
||||
# Sample configuration file for the Common UNIX Printing System (CUPS)
|
||||
# scheduler.
|
||||
@@ -92,7 +92,7 @@ SystemGroup sys
|
||||
# By default the compiled-in value.
|
||||
#
|
||||
|
||||
#ServerRoot /var/spool/cups
|
||||
#ServerRoot /var/cups
|
||||
|
||||
#
|
||||
# AccessLog: the access log file; if this does not start with a leading /
|
||||
@@ -110,6 +110,14 @@ SystemGroup sys
|
||||
|
||||
#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:
|
||||
@@ -121,21 +129,21 @@ SystemGroup sys
|
||||
# none Log nothing.
|
||||
#
|
||||
|
||||
LogLevel warn
|
||||
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
|
||||
#MaxLogSize 0
|
||||
|
||||
#
|
||||
# MaxRequestSize: controls the maximum size of print files. Set to 0 to
|
||||
# disable this feature (defaults to 0.)
|
||||
#
|
||||
|
||||
#MaxRequestSize: 0
|
||||
#MaxRequestSize 0
|
||||
|
||||
#
|
||||
# HostNameLookups: whether or not to do lookups on IP addresses to get a
|
||||
@@ -269,7 +277,7 @@ LogLevel warn
|
||||
# supported.
|
||||
#
|
||||
# AuthClass: the authorization class; currently only "Anonymous", "User",
|
||||
# "System" (valid user belonging to group SystemGroupName), and "Group"
|
||||
# "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.
|
||||
@@ -320,5 +328,5 @@ Allow From 127.0.0.1
|
||||
</Location>
|
||||
|
||||
#
|
||||
# End of "$Id: cupsd.conf 327 1999-05-14 17:03:06Z mike $".
|
||||
# End of "$Id: cupsd.conf 349 1999-05-21 20:53:02Z mike $".
|
||||
#
|
||||
|
||||
+8
-20
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# "$Id: printers.conf 320 1999-05-13 20:40:14Z mike $"
|
||||
# "$Id: printers.conf 334 1999-05-17 18:11:26Z mike $"
|
||||
#
|
||||
# Sample printer configuration file for the Common UNIX Printing System
|
||||
# (CUPS) scheduler.
|
||||
@@ -40,24 +40,24 @@
|
||||
# default.
|
||||
#
|
||||
|
||||
<Printer sample>
|
||||
#<Printer sample>
|
||||
#
|
||||
# Info: the description for the printer.
|
||||
#
|
||||
|
||||
Info Acme LaserPrint 1000
|
||||
#Info Acme LaserPrint 1000
|
||||
|
||||
#
|
||||
# MoreInfo: a URL for more information on the printer.
|
||||
#
|
||||
|
||||
MoreInfo http://www.acme.com/lp1000.html
|
||||
#MoreInfo http://www.acme.com/lp1000.html
|
||||
|
||||
#
|
||||
# Location: the location of the printer.
|
||||
#
|
||||
|
||||
Location Room 101 in the activities building
|
||||
#Location Room 101 in the activities building
|
||||
|
||||
#
|
||||
# DeviceURI: the device URI for this printer.
|
||||
@@ -73,18 +73,6 @@ Location Room 101 in the activities building
|
||||
#DeviceURI ipp://hostname/path
|
||||
#DeviceURI smb://hostname/printer
|
||||
|
||||
#
|
||||
# AddFilter: adds a filter for this printer. Format is:
|
||||
#
|
||||
# AddFilter from-type cost program
|
||||
#
|
||||
# Filter programs must accept the standard filter options outlined in
|
||||
# the CUPS documentation. A filter program of "-" means that the
|
||||
# two types are equivalent.
|
||||
#
|
||||
|
||||
AddFilter application/cups-postscript 0 -
|
||||
|
||||
#
|
||||
# State: sets the initial state of the printer. Can be one of the
|
||||
# following:
|
||||
@@ -93,9 +81,9 @@ AddFilter application/cups-postscript 0 -
|
||||
# Stopped - Printer is disabled but accepting new jobs.
|
||||
#
|
||||
|
||||
State Idle
|
||||
</Printer>
|
||||
#State Idle
|
||||
#</Printer>
|
||||
|
||||
#
|
||||
# End of "$Id: printers.conf 320 1999-05-13 20:40:14Z mike $".
|
||||
# End of "$Id: printers.conf 334 1999-05-17 18:11:26Z mike $".
|
||||
#
|
||||
|
||||
@@ -68,6 +68,12 @@
|
||||
|
||||
#undef HAVE_SHADOW_H
|
||||
|
||||
/*
|
||||
* Do we have <crypt.h>?
|
||||
*/
|
||||
|
||||
#undef HAVE_CRYPT_H
|
||||
|
||||
/*
|
||||
* Do we have the strXXX() functions?
|
||||
*/
|
||||
|
||||
+30
-20
@@ -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...
|
||||
@@ -60,6 +73,7 @@ fi
|
||||
|
||||
dnl Check for libraries...
|
||||
AC_CHECK_LIB(c,crypt,LIBS="$LIBS",AC_CHECK_LIB(crypt,crypt))
|
||||
AC_CHECK_HEADER(crypt.h, AC_DEFINE(HAVE_CRYPT_H))
|
||||
AC_CHECK_LIB(sec,getspent)
|
||||
AC_CHECK_LIB(socket,socket,
|
||||
if test "$uname" != "IRIX"; then
|
||||
@@ -76,22 +90,18 @@ fi)
|
||||
|
||||
IMGLIBS=""
|
||||
AC_SUBST(IMGLIBS)
|
||||
AC_CHECK_LIB(jpeg,jpeg_destroy_decompress,
|
||||
AC_CHECK_HEADER(jpeglib.h,
|
||||
AC_DEFINE(HAVE_LIBJPEG)
|
||||
IMGLIBS="$IMGLIBS -ljpeg"))
|
||||
AC_CHECK_LIB(png,png_read_info,
|
||||
AC_CHECK_HEADER(png.h,
|
||||
AC_DEFINE(HAVE_LIBPNG)
|
||||
IMGLIBS="$IMGLIBS -lpng"))
|
||||
AC_CHECK_LIB(tiff,TIFFGetField,
|
||||
AC_CHECK_HEADER(tiff.h,
|
||||
AC_DEFINE(HAVE_LIBTIFF)
|
||||
IMGLIBS="$IMGLIBS -ltiff"))
|
||||
AC_CHECK_LIB(z,deflate,
|
||||
AC_CHECK_HEADER(zlib.h,
|
||||
AC_DEFINE(HAVE_LIBZ)
|
||||
IMGLIBS="$IMGLIBS -lz"))
|
||||
AC_CHECK_HEADER(jpeglib.h,
|
||||
AC_DEFINE(HAVE_LIBJPEG)
|
||||
IMGLIBS="$IMGLIBS -ljpeg")
|
||||
AC_CHECK_HEADER(zlib.h,
|
||||
AC_DEFINE(HAVE_LIBZ)
|
||||
IMGLIBS="$IMGLIBS -lz")
|
||||
AC_CHECK_HEADER(png.h,
|
||||
AC_DEFINE(HAVE_LIBPNG)
|
||||
IMGLIBS="$IMGLIBS -lpng")
|
||||
AC_CHECK_HEADER(tiff.h,
|
||||
AC_DEFINE(HAVE_LIBTIFF)
|
||||
IMGLIBS="$IMGLIBS -ltiff")
|
||||
|
||||
dnl Checks for header files.
|
||||
AC_HEADER_STDC
|
||||
|
||||
+3
-2
@@ -105,8 +105,9 @@ typedef struct /**** Printer Options ****/
|
||||
*/
|
||||
|
||||
extern int cupsCancelJob(char *printer, int job);
|
||||
extern ipp_t *cupsDoRequest(http_t *http, ipp_t *request,
|
||||
char *resource);
|
||||
#define cupsDoRequest(http,request,resource) cupsDoFileRequest((http),(request),(resource),NULL)
|
||||
extern ipp_t *cupsDoFileRequest(http_t *http, ipp_t *request,
|
||||
char *resource, char *filename);
|
||||
extern int cupsGetClasses(char ***classes);
|
||||
extern char *cupsGetPPD(char *printer);
|
||||
extern char *cupsGetDefault(void);
|
||||
|
||||
+13
-45
@@ -27,38 +27,6 @@
|
||||
* mimeFilter() - Find the fastest way to convert from one type to another.
|
||||
* compare() - Compare two filter types...
|
||||
* lookup() - Lookup a filter...
|
||||
*
|
||||
* Revision History:
|
||||
*
|
||||
* $Log: filter.c,v $
|
||||
* Revision 1.6 1999/04/21 14:49:49 mike
|
||||
* cupsDoRequest() needed to retry requests when doing authorization.
|
||||
*
|
||||
* mimeFilter() didn't always return the least-cost filter.
|
||||
*
|
||||
* Revision 1.5 1999/03/01 20:51:51 mike
|
||||
* Code cleanup - removed extraneous semi-colons...
|
||||
*
|
||||
* Revision 1.4 1999/02/05 17:40:51 mike
|
||||
* Added IPP client read/write code.
|
||||
*
|
||||
* Added string functions missing from some UNIXs.
|
||||
*
|
||||
* Added option parsing functions.
|
||||
*
|
||||
* Added IPP convenience functions (not implemented yet).
|
||||
*
|
||||
* Updated source files to use local string.h as needed (for
|
||||
* missing string functions)
|
||||
*
|
||||
* Revision 1.3 1999/01/24 14:18:43 mike
|
||||
* Check-in prior to CVS use.
|
||||
*
|
||||
* Revision 1.2 1998/08/06 14:38:38 mike
|
||||
* Finished coding and testing for CUPS 1.0.
|
||||
*
|
||||
* Revision 1.1 1998/06/11 20:50:53 mike
|
||||
* Initial revision
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -165,12 +133,6 @@ mimeAddFilter(mime_t *mime, /* I - MIME database */
|
||||
|
||||
/*
|
||||
* 'mimeFilter()' - Find the fastest way to convert from one type to another.
|
||||
*
|
||||
* NOTE: Currently we do not use the "cost" field provided with each filter.
|
||||
* This will be addressed in a future version of this function. For
|
||||
* now all filters are assumed to be equally costly and we find the
|
||||
* smallest number of filters to run that satisfies the filter
|
||||
* requirements.
|
||||
*/
|
||||
|
||||
mime_filter_t * /* O - Array of filters to run */
|
||||
@@ -179,9 +141,11 @@ mimeFilter(mime_t *mime, /* I - MIME database */
|
||||
mime_type_t *dst, /* I - Destination file type */
|
||||
int *num_filters) /* O - Number of filters to run */
|
||||
{
|
||||
int i; /* Looping var */
|
||||
int num_temp, /* Number of temporary filters */
|
||||
num_mintemp; /* Current minimum */
|
||||
int i, j, /* Looping vars */
|
||||
num_temp, /* Number of temporary filters */
|
||||
num_mintemp, /* Number of filters in the minimum */
|
||||
cost, /* Current cost */
|
||||
mincost; /* Current minimum */
|
||||
mime_filter_t *temp, /* Temporary filter */
|
||||
*mintemp, /* Current minimum */
|
||||
*mincurrent, /* Current filter for minimum */
|
||||
@@ -220,8 +184,8 @@ mimeFilter(mime_t *mime, /* I - MIME database */
|
||||
* OK, now look for filters from the source type to any other type...
|
||||
*/
|
||||
|
||||
num_mintemp = 100000;
|
||||
mintemp = NULL;
|
||||
mincost = 9999999;
|
||||
mintemp = NULL;
|
||||
|
||||
for (i = mime->num_filters, current = mime->filters; i > 0; i --, current ++)
|
||||
if (current->src == src)
|
||||
@@ -239,13 +203,17 @@ mimeFilter(mime_t *mime, /* I - MIME database */
|
||||
* any...)
|
||||
*/
|
||||
|
||||
if (num_temp < num_mintemp)
|
||||
for (j = 0, cost = 0; j < num_temp; j ++)
|
||||
cost += temp->cost;
|
||||
|
||||
if (cost < mincost)
|
||||
{
|
||||
if (mintemp != NULL)
|
||||
free(mintemp);
|
||||
|
||||
num_mintemp = num_temp;
|
||||
mincost = cost;
|
||||
mintemp = temp;
|
||||
num_mintemp = num_temp;
|
||||
mincurrent = current;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -768,7 +768,6 @@ httpWrite(http_t *http, /* I - HTTP data */
|
||||
bytes = send(http->fd, buffer, length, 0);
|
||||
if (bytes < 0)
|
||||
{
|
||||
perror("httpWrite");
|
||||
DEBUG_puts("httpWrite: error writing data...\n");
|
||||
return (-1);
|
||||
}
|
||||
|
||||
+2
-1
@@ -191,7 +191,8 @@ typedef enum /**** IPP operations... ****/
|
||||
CUPS_ADD_CLASS,
|
||||
CUPS_DELETE_CLASS,
|
||||
CUPS_ACCEPT_JOBS,
|
||||
CUPS_REJECT_JOBS
|
||||
CUPS_REJECT_JOBS,
|
||||
CUPS_SET_DEFAULT
|
||||
} ipp_op_t;
|
||||
|
||||
typedef enum /**** IPP status codes... ****/
|
||||
|
||||
+16
-6
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
+13
-16
@@ -279,28 +279,18 @@ cupsMarkOptions(ppd_file_t *ppd, /* I - PPD file */
|
||||
{
|
||||
int i; /* Looping var */
|
||||
int conflict; /* Option conflicts */
|
||||
char media_size[64]; /* Updated media size */
|
||||
|
||||
|
||||
conflict = 0;
|
||||
|
||||
for (i = num_options; i > 0; i --, options ++)
|
||||
if (strcmp(options->name, "media-size") == 0)
|
||||
if (strcmp(options->name, "media") == 0)
|
||||
{
|
||||
strcpy(media_size, options->value);
|
||||
|
||||
if (strncmp(options->value, "us-", 3) == 0)
|
||||
{
|
||||
strcpy(media_size, media_size + 3);
|
||||
media_size[0] = toupper(media_size[0]);
|
||||
}
|
||||
else if (strncmp(options->value, "iso-", 4) == 0)
|
||||
{
|
||||
strcpy(media_size, media_size + 4);
|
||||
media_size[0] = toupper(media_size[0]);
|
||||
}
|
||||
|
||||
if (ppdMarkOption(ppd, "PageSize", media_size))
|
||||
if (ppdMarkOption(ppd, "PageSize", options->value))
|
||||
conflict = 1;
|
||||
if (ppdMarkOption(ppd, "InputSlot", options->value))
|
||||
conflict = 1;
|
||||
if (ppdMarkOption(ppd, "MediaType", options->value))
|
||||
conflict = 1;
|
||||
}
|
||||
else if (strcmp(options->name, "sides") == 0)
|
||||
@@ -321,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;
|
||||
|
||||
|
||||
+237
-34
@@ -40,6 +40,10 @@
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -75,6 +79,10 @@
|
||||
* 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);
|
||||
@@ -408,6 +416,7 @@ ppdOpen(FILE *fp) /* I - File to read from */
|
||||
float order; /* Order dependency number */
|
||||
ppd_section_t section; /* Order dependency section */
|
||||
ppd_profile_t *profile; /* Pointer to color profile */
|
||||
char **filter; /* Pointer to filter */
|
||||
|
||||
|
||||
/*
|
||||
@@ -590,6 +599,24 @@ ppdOpen(FILE *fp) /* I - File to read from */
|
||||
profile->matrix[2] + 0, profile->matrix[2] + 1,
|
||||
profile->matrix[2] + 2);
|
||||
}
|
||||
else if (strcmp(keyword, "cupsFilter") == 0)
|
||||
{
|
||||
if (ppd->num_filters == 0)
|
||||
filter = malloc(sizeof(char *));
|
||||
else
|
||||
filter = realloc(ppd->filters, sizeof(char *) * (ppd->num_filters + 1));
|
||||
|
||||
ppd->filters = filter;
|
||||
filter += ppd->num_filters;
|
||||
ppd->num_filters ++;
|
||||
|
||||
/*
|
||||
* Copy filter string and prevent it from being freed below...
|
||||
*/
|
||||
|
||||
*filter = string;
|
||||
string = NULL;
|
||||
}
|
||||
else if (strcmp(keyword, "VariablePaperSize") == 0 &&
|
||||
strcmp(string, "True") == 0)
|
||||
{
|
||||
@@ -754,40 +781,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, "Extra");
|
||||
else
|
||||
group = ppd_get_group(ppd, "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)
|
||||
{
|
||||
@@ -807,7 +830,19 @@ 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);
|
||||
else
|
||||
{
|
||||
if (strcmp(name, "PageSize") == 0)
|
||||
strcpy(option->text, "Media Size");
|
||||
else if (strcmp(name, "MediaType") == 0)
|
||||
strcpy(option->text, "Media Type");
|
||||
else if (strcmp(name, "InputSlot") == 0)
|
||||
strcpy(option->text, "Media Source");
|
||||
else
|
||||
strcpy(option->text, name);
|
||||
}
|
||||
|
||||
option->section = PPD_ORDER_ANY;
|
||||
}
|
||||
@@ -884,6 +919,7 @@ 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);
|
||||
group = ppd_get_group(ppd, string);
|
||||
}
|
||||
else if (strcmp(keyword, "CloseGroup") == 0)
|
||||
@@ -1053,13 +1089,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... */
|
||||
@@ -1130,24 +1170,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);
|
||||
@@ -1226,6 +1290,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.
|
||||
@@ -1476,8 +1681,6 @@ ppd_decode(char *string) /* I - String to decode */
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id$".
|
||||
*/
|
||||
|
||||
@@ -194,6 +194,8 @@ typedef struct /**** Files ****/
|
||||
char **fonts; /* Pre-loaded fonts */
|
||||
int num_profiles; /* Number of sRGB color profiles */
|
||||
ppd_profile_t *profiles; /* sRGB color profiles */
|
||||
int num_filters; /* Number of filters */
|
||||
char **filters; /* Filter strings... */
|
||||
} ppd_file_t;
|
||||
|
||||
|
||||
|
||||
+6
-1
@@ -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;
|
||||
|
||||
|
||||
|
||||
+167
-150
@@ -23,14 +23,14 @@
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* cupsCancelJob() - Cancel a print job.
|
||||
* cupsDoRequest() - Do an IPP request...
|
||||
* cupsGetClasses() - Get a list of printer classes.
|
||||
* cupsGetDefault() - Get the default printer or class.
|
||||
* cupsGetPPD() - Get the PPD file for a printer.
|
||||
* cupsGetPrinters() - Get a list of printers.
|
||||
* cupsPrintFile() - Print a file to a printer or class.
|
||||
* cups_connect() - Connect to the specified host...
|
||||
* cupsCancelJob() - Cancel a print job.
|
||||
* cupsDoFileRequest() - Do an IPP request...
|
||||
* cupsGetClasses() - Get a list of printer classes.
|
||||
* cupsGetDefault() - Get the default printer or class.
|
||||
* cupsGetPPD() - Get the PPD file for a printer.
|
||||
* cupsGetPrinters() - Get a list of printers.
|
||||
* cupsPrintFile() - Print a file to a printer or class.
|
||||
* cups_connect() - Connect to the specified host...
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -133,17 +133,22 @@ cupsCancelJob(char *name, /* I - Name of printer or class */
|
||||
|
||||
|
||||
/*
|
||||
* 'cupsDoRequest()' - Do an IPP request...
|
||||
* 'cupsDoFileRequest()' - Do an IPP request...
|
||||
*/
|
||||
|
||||
ipp_t * /* O - Response data */
|
||||
cupsDoRequest(http_t *http, /* I - HTTP connection to server */
|
||||
ipp_t *request, /* I - IPP request */
|
||||
char *resource) /* I - HTTP resource for POST */
|
||||
ipp_t * /* O - Response data */
|
||||
cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
|
||||
ipp_t *request, /* I - IPP request */
|
||||
char *resource, /* I - HTTP resource for POST */
|
||||
char *filename) /* I - File to send or NULL */
|
||||
{
|
||||
ipp_t *response; /* IPP response data */
|
||||
char length[255]; /* Content-Length field */
|
||||
http_status_t status; /* Status of HTTP request */
|
||||
FILE *file; /* File to send */
|
||||
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 */
|
||||
@@ -154,99 +159,178 @@ cupsDoRequest(http_t *http, /* I - HTTP connection to server */
|
||||
/* Authorization string */
|
||||
|
||||
|
||||
DEBUG_printf(("cupsDoRequest(%08x, %08s, \'%s\')\n", http, request, resource));
|
||||
DEBUG_printf(("cupsDoFileRequest(%08x, %08s, \'%s\', \'%s\')\n",
|
||||
http, request, resource, filename ? filename : "(null)"));
|
||||
|
||||
/*
|
||||
* Setup the HTTP variables needed...
|
||||
* See if we have a file to send...
|
||||
*/
|
||||
|
||||
sprintf(length, "%d", ippLength(request));
|
||||
httpClearFields(http);
|
||||
httpSetField(http, HTTP_FIELD_CONTENT_LENGTH, length);
|
||||
httpSetField(http, HTTP_FIELD_CONTENT_TYPE, "application/ipp");
|
||||
httpSetField(http, HTTP_FIELD_AUTHORIZATION, authstring);
|
||||
|
||||
/*
|
||||
* Try the request...
|
||||
*/
|
||||
|
||||
if (httpPost(http, resource))
|
||||
if (httpPost(http, resource))
|
||||
if (filename != NULL)
|
||||
{
|
||||
if (stat(filename, &fileinfo))
|
||||
{
|
||||
/*
|
||||
* Can't get file information!
|
||||
*/
|
||||
|
||||
ippDelete(request);
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Send the IPP data and wait for the response...
|
||||
*/
|
||||
|
||||
ippWrite(http, request);
|
||||
|
||||
if ((status = httpUpdate(http)) == HTTP_UNAUTHORIZED)
|
||||
{
|
||||
/*
|
||||
* Flush any error message...
|
||||
*/
|
||||
|
||||
httpFlush(http);
|
||||
|
||||
#if !defined(WIN32) && !defined(__EMX__)
|
||||
if ((password = getpass("Password:")) != NULL)
|
||||
if ((file = fopen(filename, "rb")) == NULL)
|
||||
{
|
||||
/*
|
||||
* Got a password; now send it to the server...
|
||||
* Can't open file!
|
||||
*/
|
||||
|
||||
sprintf(plain, "%s:%s", cuserid(NULL), password);
|
||||
httpEncode64(encode, plain);
|
||||
sprintf(authstring, "Basic %s", encode);
|
||||
|
||||
httpClearFields(http);
|
||||
httpSetField(http, HTTP_FIELD_CONTENT_LENGTH, length);
|
||||
httpSetField(http, HTTP_FIELD_CONTENT_TYPE, "application/ipp");
|
||||
httpSetField(http, HTTP_FIELD_AUTHORIZATION, authstring);
|
||||
|
||||
if (httpPost(http, resource))
|
||||
httpPost(http, resource);
|
||||
request->state = IPP_IDLE;
|
||||
ippWrite(http, request);
|
||||
status = httpUpdate(http);
|
||||
ippDelete(request);
|
||||
return (NULL);
|
||||
}
|
||||
#endif /* !WIN32 && !__EMX__ */
|
||||
}
|
||||
|
||||
if (status != HTTP_OK)
|
||||
/*
|
||||
* Loop until we can send the request without authorization problems.
|
||||
*/
|
||||
|
||||
response = NULL;
|
||||
|
||||
while (response == NULL)
|
||||
{
|
||||
DEBUG_puts("cupsDoFileRequest: setup...");
|
||||
|
||||
/*
|
||||
* Flush any error message...
|
||||
* Setup the HTTP variables needed...
|
||||
*/
|
||||
|
||||
httpFlush(http);
|
||||
if (filename != NULL)
|
||||
sprintf(length, "%u", ippLength(request) + fileinfo.st_size);
|
||||
else
|
||||
sprintf(length, "%u", ippLength(request));
|
||||
|
||||
httpClearFields(http);
|
||||
httpSetField(http, HTTP_FIELD_CONTENT_LENGTH, length);
|
||||
httpSetField(http, HTTP_FIELD_CONTENT_TYPE, "application/ipp");
|
||||
httpSetField(http, HTTP_FIELD_AUTHORIZATION, authstring);
|
||||
|
||||
response = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Read the response...
|
||||
* Try the request...
|
||||
*/
|
||||
|
||||
response = ippNew();
|
||||
DEBUG_puts("cupsDoFileRequest: post...");
|
||||
|
||||
if (ippRead(http, response) == IPP_ERROR)
|
||||
if (httpPost(http, resource))
|
||||
if (httpPost(http, resource))
|
||||
break;
|
||||
|
||||
/*
|
||||
* Send the IPP data and wait for the response...
|
||||
*/
|
||||
|
||||
DEBUG_puts("cupsDoFileRequest: ipp write...");
|
||||
|
||||
request->state = IPP_IDLE;
|
||||
if (ippWrite(http, request) != IPP_ERROR)
|
||||
if (filename != NULL)
|
||||
{
|
||||
DEBUG_puts("cupsDoFileRequest: file write...");
|
||||
|
||||
/*
|
||||
* Send the file...
|
||||
*/
|
||||
|
||||
rewind(file);
|
||||
|
||||
while ((bytes = fread(buffer, 1, sizeof(buffer), file)) > 0)
|
||||
if (httpWrite(http, buffer, bytes) < bytes)
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the server's return status...
|
||||
*/
|
||||
|
||||
DEBUG_puts("cupsDoFileRequest: update...");
|
||||
|
||||
while ((status = httpUpdate(http)) == HTTP_CONTINUE);
|
||||
|
||||
#if !defined(WIN32) && !defined(__EMX__)
|
||||
if (status == HTTP_UNAUTHORIZED)
|
||||
{
|
||||
ippDelete(response);
|
||||
response = NULL;
|
||||
DEBUG_puts("cupsDoFileRequest: unauthorized...");
|
||||
|
||||
/*
|
||||
* Flush any remaining data...
|
||||
* Flush any error message...
|
||||
*/
|
||||
|
||||
httpFlush(http);
|
||||
|
||||
if ((password = getpass("Password:")) != NULL)
|
||||
{
|
||||
/*
|
||||
* Got a password; send it to the server...
|
||||
*/
|
||||
|
||||
if (!password[0])
|
||||
break;
|
||||
sprintf(plain, "%s:%s", cuserid(NULL), password);
|
||||
httpEncode64(encode, plain);
|
||||
sprintf(authstring, "Basic %s", encode);
|
||||
|
||||
continue;
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
#endif /* !WIN32 && !__EMX__ */
|
||||
|
||||
if (status != HTTP_OK)
|
||||
{
|
||||
DEBUG_printf(("cupsDoFileRequest: error %d...\n", status));
|
||||
|
||||
/*
|
||||
* Flush any error message...
|
||||
*/
|
||||
|
||||
httpFlush(http);
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Read the response...
|
||||
*/
|
||||
|
||||
DEBUG_puts("cupsDoFileRequest: response...");
|
||||
|
||||
response = ippNew();
|
||||
|
||||
if (ippRead(http, response) == IPP_ERROR)
|
||||
{
|
||||
/*
|
||||
* Delete the response...
|
||||
*/
|
||||
|
||||
ippDelete(response);
|
||||
response = NULL;
|
||||
|
||||
/*
|
||||
* Flush any remaining data...
|
||||
*/
|
||||
|
||||
httpFlush(http);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Close the file if needed...
|
||||
*/
|
||||
|
||||
if (filename != NULL)
|
||||
fclose(file);
|
||||
|
||||
/*
|
||||
* Delete the original request and return the response...
|
||||
*/
|
||||
@@ -593,9 +677,6 @@ cupsPrintFile(char *name, /* I - Printer or class name */
|
||||
printer[HTTP_MAX_URI], /* Printer or class name */
|
||||
uri[HTTP_MAX_URI]; /* Printer URI */
|
||||
cups_lang_t *language; /* Language to use */
|
||||
struct stat filestats; /* File information */
|
||||
FILE *fp; /* File pointer */
|
||||
char buffer[8192]; /* Copy buffer */
|
||||
int jobid; /* New job ID */
|
||||
|
||||
|
||||
@@ -605,34 +686,17 @@ cupsPrintFile(char *name, /* I - Printer or class name */
|
||||
if (name == NULL || filename == NULL)
|
||||
return (0);
|
||||
|
||||
/*
|
||||
* See if the file exists and is readable...
|
||||
*/
|
||||
|
||||
if (stat(filename, &filestats))
|
||||
return (0);
|
||||
|
||||
if ((fp = fopen(filename, "rb")) == NULL)
|
||||
{
|
||||
DEBUG_puts("cupsPrintFile: Unable to open file!");
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Setup a connection and request data...
|
||||
*/
|
||||
|
||||
if ((request = ippNew()) == NULL)
|
||||
{
|
||||
fclose(fp);
|
||||
return (0);
|
||||
}
|
||||
|
||||
if (!cups_connect(name, printer, hostname))
|
||||
{
|
||||
DEBUG_printf(("cupsPrintFile: Unable to open connection - %s.\n",
|
||||
strerror(errno)));
|
||||
fclose(fp);
|
||||
ippDelete(request);
|
||||
return (0);
|
||||
}
|
||||
@@ -806,76 +870,29 @@ cupsPrintFile(char *name, /* I - Printer or class name */
|
||||
}
|
||||
|
||||
/*
|
||||
* Setup the necessary HTTP fields...
|
||||
*/
|
||||
|
||||
httpClearFields(cups_server);
|
||||
httpSetField(cups_server, HTTP_FIELD_CONTENT_TYPE, "application/ipp");
|
||||
|
||||
sprintf(buffer, "%u", (unsigned)(ippLength(request) + filestats.st_size));
|
||||
httpSetField(cups_server, HTTP_FIELD_CONTENT_LENGTH, buffer);
|
||||
|
||||
/*
|
||||
* Finally, issue a POST request for the printer and send the IPP data and
|
||||
* file.
|
||||
* Try printing the file...
|
||||
*/
|
||||
|
||||
sprintf(uri, "/printers/%s", printer);
|
||||
|
||||
response = ippNew();
|
||||
|
||||
if (httpPost(cups_server, uri))
|
||||
if ((response = cupsDoFileRequest(cups_server, request, uri, filename)) == NULL)
|
||||
jobid = 0;
|
||||
else if (response->request.status.status_code > IPP_OK_CONFLICT)
|
||||
{
|
||||
DEBUG_puts("httpPost() failed.");
|
||||
DEBUG_printf(("IPP response code was 0x%x!\n",
|
||||
response->request.status.status_code));
|
||||
jobid = 0;
|
||||
}
|
||||
else if (ippWrite(cups_server, request) == IPP_ERROR)
|
||||
else if ((attr = ippFindAttribute(response, "job-id", IPP_TAG_INTEGER)) == NULL)
|
||||
{
|
||||
DEBUG_puts("ippWrite() failed.");
|
||||
DEBUG_puts("No job ID!");
|
||||
jobid = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
while ((i = fread(buffer, 1, sizeof(buffer), fp)) > 0)
|
||||
if (httpWrite(cups_server, buffer, i) < i)
|
||||
{
|
||||
DEBUG_puts("httpWrite() failed.");
|
||||
jobid = attr->values[0].integer;
|
||||
|
||||
fclose(fp);
|
||||
ippDelete(request);
|
||||
ippDelete(response);
|
||||
httpClose(cups_server);
|
||||
return (0);
|
||||
}
|
||||
|
||||
if (httpUpdate(cups_server) == HTTP_ERROR)
|
||||
{
|
||||
DEBUG_puts("httpUpdate() failed.");
|
||||
jobid = 0;
|
||||
}
|
||||
else if ((ippRead(cups_server, response)) == IPP_ERROR)
|
||||
{
|
||||
DEBUG_puts("ippRead() failed.");
|
||||
jobid = 0;
|
||||
}
|
||||
else if (response->request.status.status_code > IPP_OK_CONFLICT)
|
||||
{
|
||||
DEBUG_printf(("IPP response code was 0x%x!\n",
|
||||
response->request.status.status_code));
|
||||
jobid = 0;
|
||||
}
|
||||
else if ((attr = ippFindAttribute(response, "job-id", IPP_TAG_INTEGER)) == NULL)
|
||||
{
|
||||
DEBUG_puts("No job ID!");
|
||||
jobid = 0;
|
||||
}
|
||||
else
|
||||
jobid = attr->values[0].integer;
|
||||
}
|
||||
|
||||
fclose(fp);
|
||||
ippDelete(request);
|
||||
ippDelete(response);
|
||||
if (response != NULL)
|
||||
ippDelete(response);
|
||||
|
||||
return (jobid);
|
||||
}
|
||||
|
||||
+25
-12
@@ -41,10 +41,11 @@ include ../Makedefs
|
||||
|
||||
DOCUMENTS = cmp.shtml idd.shtml sam.shtml sdd.shtml ssr.shtml \
|
||||
stp.shtml sum.shtml svd.shtml
|
||||
DOCIMAGES = images/navbar.gif
|
||||
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/navbar.gif images/printer-idle.gif \
|
||||
images/printer-processing.gif \
|
||||
WEBIMAGES = images/logo.gif images/navbar.gif \
|
||||
images/printer-idle.gif images/printer-processing.gif \
|
||||
images/printer-stopped.gif
|
||||
|
||||
#
|
||||
@@ -68,22 +69,34 @@ clean:
|
||||
#
|
||||
|
||||
install:
|
||||
-$(MKDIR) $(SERVERROOT)/doc
|
||||
$(CP) $(WEBPAGES) $(SERVERROOT)/doc
|
||||
$(CP) overview.html overview.pdf $(SERVERROOT)/doc
|
||||
$(CP) $(DOCUMENTS:.shtml=.html) $(SERVERROOT)/doc
|
||||
$(CP) $(DOCUMENTS:.shtml=.pdf) $(SERVERROOT)/doc
|
||||
-$(MKDIR) $(SERVERROOT)/doc/images
|
||||
$(CP) $(WEBIMAGES) $(SERVERROOT)/doc/images
|
||||
$(CP) $(DOCIMAGES) $(SERVERROOT)/doc/images
|
||||
-$(MKDIR) $(DATADIR)/doc
|
||||
$(CP) $(WEBPAGES) $(DATADIR)/doc
|
||||
$(CP) overview.html overview.pdf $(DATADIR)/doc
|
||||
$(CP) $(DOCUMENTS:.shtml=.html) $(DATADIR)/doc
|
||||
$(CP) $(DOCUMENTS:.shtml=.pdf) $(DATADIR)/doc
|
||||
-$(MKDIR) $(DATADIR)/doc/images
|
||||
$(CP) $(WEBIMAGES) $(DATADIR)/doc/images
|
||||
$(CP) $(DOCIMAGES) $(DATADIR)/doc/images
|
||||
|
||||
#
|
||||
# The overview PDF file gets special attention...
|
||||
# The overview, admin guide, and user's guide get special attention...
|
||||
#
|
||||
|
||||
overview.pdf: overview.html
|
||||
htmldoc --duplex --compression=9 --jpeg --webpage -f $@ $<
|
||||
|
||||
sam.html: sam.shtml
|
||||
htmldoc --title images/cups-large.gif -f $@ $<
|
||||
sam.pdf: sam.shtml
|
||||
htmldoc --title images/cups-large.gif --duplex --compression=9 \
|
||||
--jpeg -f $@ $<
|
||||
|
||||
sum.html: sum.shtml
|
||||
htmldoc --title images/cups-large.gif -f $@ $<
|
||||
sum.pdf: sum.shtml
|
||||
htmldoc --title images/cups-large.gif --duplex --compression=9 \
|
||||
--jpeg -f $@ $<
|
||||
|
||||
#
|
||||
# End of Makefile.
|
||||
#
|
||||
|
||||
+5
-2
@@ -118,6 +118,9 @@ with reduced functionality. </P>
|
||||
<P>CUPS adds network printer browsing and PostScript Printer
|
||||
Description ("PPD")-based printing options to support real world
|
||||
applications under UNIX. </P>
|
||||
<P>CUPS also includes a customized version of GNU GhostScript
|
||||
(currently based off GNU GhostScript 4.03) and an image file RIP that
|
||||
can be used to support non-PostScript printers. </P>
|
||||
<H2><A NAME=1_3>1.3 Document Overview</A></H2>
|
||||
This configuration management document is organized into the following
|
||||
sections:
|
||||
@@ -337,7 +340,7 @@ extension of ".h".
|
||||
the file, the purpose or nature of the source file, the copyright and
|
||||
licensing notice, and the functions contained in the file. The file
|
||||
name and revision information is provided by the CVS "$Id: cmp.shtml,v
|
||||
1.2 1999/05/13 20:40:40 mike Exp $" tag:
|
||||
1.3 1999/05/21 20:54:04 mike Exp $" tag:
|
||||
<UL>
|
||||
<PRE>
|
||||
/*
|
||||
@@ -373,7 +376,7 @@ name and revision information is provided by the CVS "$Id: cmp.shtml,v
|
||||
</PRE>
|
||||
</UL>
|
||||
The bottom of each source file shall contain a trailer giving the name
|
||||
of the file using the CVS "$Id: cmp.shtml,v 1.2 1999/05/13 20:40:40
|
||||
of the file using the CVS "$Id: cmp.shtml,v 1.3 1999/05/21 20:54:04
|
||||
mike Exp $" tag. The primary purpose of this is to mark the end of a
|
||||
source file; if the trailer is missing it is possible that code has
|
||||
been lost near the end of the file:
|
||||
|
||||
+139
-142
@@ -1,6 +1,6 @@
|
||||
%PDF-1.2
|
||||
%âãÏÓ
|
||||
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990514170117Z)/Title(CUPS Configuration Management Plan)/Author(Easy Software Products)>>endobj
|
||||
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990521210307Z)/Title(CUPS Configuration Management Plan)/Author(Easy Software Products)>>endobj
|
||||
2 0 obj<</Type/Encoding/BaseEncoding/WinAnsiEncoding>>endobj
|
||||
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
|
||||
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Roman/Encoding 2 0 R>>endobj
|
||||
@@ -16,9 +16,9 @@
|
||||
14 0 obj<</Subtype/Link/Rect[108.0 646.8 124.5 659.8]/Border[0 0 0]/Dest[198 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[198 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[198 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[198 0 R/XYZ null 474 0]>>endobj
|
||||
18 0 obj<</Subtype/Link/Rect[124.5 633.6 173.1 646.6]/Border[0 0 0]/Dest[198 0 R/XYZ null 474 0]>>endobj
|
||||
19 0 obj<</Subtype/Link/Rect[173.1 633.6 216.4 646.6]/Border[0 0 0]/Dest[198 0 R/XYZ null 474 0]>>endobj
|
||||
17 0 obj<</Subtype/Link/Rect[108.0 633.6 124.5 646.6]/Border[0 0 0]/Dest[198 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[198 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[198 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[204 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[204 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[204 0 R/XYZ null 737 0]>>endobj
|
||||
@@ -263,7 +263,7 @@
|
||||
138 0 obj<</D[198 0 R/XYZ null 818 null]>>endobj
|
||||
139 0 obj<</D[198 0 R/XYZ null 737 null]>>endobj
|
||||
140 0 obj<</D[198 0 R/XYZ null 658 null]>>endobj
|
||||
141 0 obj<</D[198 0 R/XYZ null 474 null]>>endobj
|
||||
141 0 obj<</D[198 0 R/XYZ null 434 null]>>endobj
|
||||
142 0 obj<</D[204 0 R/XYZ null 818 null]>>endobj
|
||||
143 0 obj<</D[204 0 R/XYZ null 737 null]>>endobj
|
||||
144 0 obj<</D[204 0 R/XYZ null 540 null]>>endobj
|
||||
@@ -380,12 +380,14 @@ endobj
|
||||
Õ;c`<k»ñΙ¡µ€±¯ïdŠÉÐP¶ÀƳ¿bY™>R°0qí{±;ÂçT®„4`6µƒ¢Y™Kz�ÉÐ|€#· &……Kæ`1 "Íë9ƒ‹ö ›òMÏRØê€…Ý…‚U˜«âµëU‹`4,}< | ||||