diff options
author | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2006-08-19 03:12:28 +0000 |
---|---|---|
committer | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2006-08-19 03:12:28 +0000 |
commit | 1fd361a1ea06e44286c213ca1f814f49306fdc43 (patch) | |
tree | 64c8c96cf54d8718847339a403e5e67b922e8c3f /doc | |
download | netpbm-mirror-1fd361a1ea06e44286c213ca1f814f49306fdc43.tar.gz netpbm-mirror-1fd361a1ea06e44286c213ca1f814f49306fdc43.tar.xz netpbm-mirror-1fd361a1ea06e44286c213ca1f814f49306fdc43.zip |
Create Subversion repository
git-svn-id: http://svn.code.sf.net/p/netpbm/code/trunk@1 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'doc')
-rw-r--r-- | doc/COPYRIGHT.PATENT | 125 | ||||
-rw-r--r-- | doc/GPL_LICENSE.txt | 340 | ||||
-rw-r--r-- | doc/HISTORY | 3385 | ||||
-rw-r--r-- | doc/INSTALL | 248 | ||||
-rw-r--r-- | doc/Netpbm.programming | 358 | ||||
-rw-r--r-- | doc/README.CYGWIN | 79 | ||||
-rw-r--r-- | doc/README.DJGPP | 65 | ||||
-rw-r--r-- | doc/USERDOC | 155 | ||||
-rw-r--r-- | doc/copyright_summary | 382 | ||||
-rw-r--r-- | doc/lgpl_v21.txt | 504 | ||||
-rw-r--r-- | doc/netpbm.1 | 4 | ||||
-rw-r--r-- | doc/netpbm.html | 3 |
12 files changed, 5648 insertions, 0 deletions
diff --git a/doc/COPYRIGHT.PATENT b/doc/COPYRIGHT.PATENT new file mode 100644 index 00000000..fe3c242a --- /dev/null +++ b/doc/COPYRIGHT.PATENT @@ -0,0 +1,125 @@ +Netpbm consists of code contributed by many authors. In most of the +source code files, there is a copyright notice and license, telling +you what you may or may not do with the code. All authors have granted +you the right to use and distribute their code without having to pay +them, as long as you meet some simple requirements. + +Most of the components require you to include a copy of their +copyright notices and warranty disclaimers in any copies or +derivations you distribute. + +Another restriction that some of the software has is that in order to +have permission to copy it (which includes writing anything derived +from it), you must distribute source code for your copy or derivation +and propagate the same restriction to people who would copy your +derivation. In other words, the price the author wants for the use of +his proprietary work is your contribution to the free software cause. + +One component prohibits you from selling it or using it in a +commercial way: hpcdtoppm. + +Some components are contributed to the public domain. + +The copyrights on individual components of this package are detailed +at appropriate places within the package. A slightly out of date +summary of all the copyrights is in the file 'doc/copyright_summary' +in the Netpbm source tree. + +As with most public open source software, no one really knows for sure +where the code came from. It is possible that a contributor copied it +without license to do so. That might mean any user of the code owes +someone royalties. The Netpbm maintainer in particular has received +no warranties regarding any of the code in the package. So consider +all the above to be modified by "to the best of the Netpbm +maintainer's knowledge." + + + +PATENTS +------- + +These are the patents the Netpbm maintainer knows about that relate to +Netpbm. It is basically just information the maintainer has stumbled +over at some point -- no search has been done. + +No licenses have been granted by patent owners to the maintainer of +Netpbm. Therefore, if you need a patent to use something in Netpbm, +you need your own license. + +A note about patents in general: A patent gives an inventor the +exclusive right to make, sell, or use the invention. If you +independently invent something without knowing that the patent holder +already did, that makes no difference -- the patent holder still has +the exclusive right. It makes no difference if you give the original +inventor credit. The patent applies to a method, not its expression, +so writing a program from scratch to implement a certain method is +still a patent infringement. Infringing a patent is not a crime per +se, but to the extent that it costs the patent holder money, the +infringer has to make it up. + +The original purpose of patents is probably perverted when patents are +applied to things you implement in computer programs. This is one of +the Free Software Foundation's causes. See +<http://www.gnu.org/philosophy.html#laws>. + + +Unisys owns patents on LZW compression, which is used by Ppmtogif, and +maybe on LZW decompression, which is used by Giftopnm. IBM also owns +a patent that may cover the GIF tools. Unisys offers a license of the +patent for trivial use for $5000. Its U.S. patent (Number 4,558,302) +EXPIRED June 20, 2003. In most of Europe, the patent expires June 18, +2004. In Japan, it's June 20, 2004 and in Canada, July 7, 2004. +IBM's U.S. patent expirs August 11, 2006. + +Neither company has ever enforced the patent against trivial users of +it. <http://news.cnet.com/news/0-1005-200-1713278.html> is an article +dated April 18, 2000 on the issue. +http://www.unisys.com/about__unisys/lzw/> is Unisys' view of the +matter. For information from another perspective, see +<http://burnallgifs.org>. + +The following Netpbm components may be restricted by these patents: +Ppmtogif, Giftopnm. + +A good substitute for GIF if the patents are a problem is PNG (see +pngtopnm, pnmtopng), which was developed with a primary purpose of not +using any patented technology. + +You can also use the -nolzw option on ppmtogif to avoid using the LZW +patent. The images so generated are larger than traditional +LZW-compressed GIFs, but any GIF decoder can decode them just the +same. + +I repeat: The Unisys U.S. patent has expired. It is not an issue +for any future use of Netpbm. + + +The Pnmtojpeg and possibly Jpegtopnm programs in some cases may use +the arithmetic coding patents owned by IBM, AT&T, and Mitsubishi. +There is difference of opinion on whether they do. + +Forgent owns a patent it believes covers JPEG compression. This +patent was virtually unknown before July 2002, when Forgent began to +enforce it. It has successfully enforced it against two companies +(Sony and an unnamed Japanese digital camera maker), but without court +ruling. This patent, U.S. Patent No. 4,698,672, expires in 2006. + +Philips and Lucent Technologies also own patents they claim cover +JPEG. + +The following Netpbm components may be restricted by these patents: +Jpegtopnm, Pnmtojpeg, Ppmtompeg, Tifftopnm, Pnmtotiff. These all +do their JPEG work via a JPEG library not distributed with Netpbm. +Your JPEG-related liability for using Netpbm is limited to your +liability for using your JPEG library. + +The next best alternative to JPEG is probably PNG and maybe JBIG for +bilevel (black and white) images. + +http://burnalljpegs.org contains information on this issue. + + +The Jbigtopnm and Pnmtojbig programs use arithmetic coding patents and +other patents covering various aspects of the "front end." + + diff --git a/doc/GPL_LICENSE.txt b/doc/GPL_LICENSE.txt new file mode 100644 index 00000000..c3c7a9ea --- /dev/null +++ b/doc/GPL_LICENSE.txt @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. 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. + + 5. 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. + + 6. 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. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. 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. + + 9. 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. + + 10. 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 + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/doc/HISTORY b/doc/HISTORY new file mode 100644 index 00000000..7098e887 --- /dev/null +++ b/doc/HISTORY @@ -0,0 +1,3385 @@ +Jef Poskanzer (jef@acme.com) invented the PBM format in the 1980s to +provide the computer graphics world with a common, trouble-free +format, a lingua-franca, for bitmaps. The format was designed to be +simple enough that it could transmitted within an email message +without any special encapsulating and survive any translations and +recoding that an email message might go through and be easily +extractable on the other end. + +In 1988, Jef distributed the forerunner of Netpbm, Pbmplus, which +gathered together the various tools he had developed to work with PBM +files. These were mainly tools to convert between PBM and other +existing graphics formats, making it possible to deal with the Tower +Of Babel situation that had arisen with the proliferation of graphics +formats. + +By the end of 1988, Jef had added the PGM and PPM formats and lots more +tools to Pbmplus. + +In 1991, Jef added a variety of programs and code contributed by the +user community, and then stopped maintaining Pbmplus. Jef never +formally renounced support for it, but simply didn't get around to +distributing any updates for over a year following his final December +10, 1991 release. + +In 1993, Netpbm was developed to replace Pbmplus. Netpbm was nothing +more than a new release of Pbmplus, and named for the fact that people +all over the world would maintain the package by submitting fixes and +enhancements over the Net. This was a time when such worldwide +collaboration was still novel. + +Then Netpbm apparently fell into neglect with the last release by its +regular maintainer in March 1994. In September of 1995 Anthony +Thyssen released an unofficial update of it called Netpbm-1mar1994.p1, +while disclaiming any responsibity for ongoing upkeep. + +The documentation in that 1995 release mentioned two different official +mailing lists concerning the package, but by April 1999, neither +existed anymore. + +In September 1999, Bryan Henderson needed some minor bugs fixed, and +wanted to clean up the mess of unsupported versions and outdated +documentation of these tools. After checking around to see if anyone +had any claims of ownership of the package, and finding none, Bryan +assumed control and responsibility for Netpbm. + +In November 1999, Thorbjoern Ravn Anderson <ravn@mip.sdu.dk> did the +same thing, for the same reason (apparently unaware of Bryan's work) +and made available an updated version (based on the 1994 release) as +described by http://sunsite.auc.dk/netpbm. Shortly thereafter, he +discontinued his effort in deference to the new Pbmplus effort +mentioned below. Bryan did not know about Anderson's work until March +2000. + +In August 2000, the PAM format appeared. But it took a long time +after that for there to be enough programs and library routines to +make it useful. It still is barely known and used; PAM is more of a +direction or philosophy than a practical tool. Along with PAM came a +whole new suite of library routines for processing both classic PNM +and PAM format images. The new "pam" routines are easier to use. + +In parallel, and unknown to Bryan, Jef was working on a new release +under the original name Pbmplus and claiming again (or maybe still) to +be maintaining Pbmplus. He did a limited release of a beta version of +it in November 1999. A mailing list pbmplus@acme.com was active. +Bryan learned of this effort's existence in March 2000. No widespread +distribution ever resulted from this. + +Pbmplus and Netpbm were once part of the body of X/Windows contributed +software, distributed on ftp.x.org (directory contrib/utilities). +Bryan didn't receive a response to an inquiry to the ftp.x.org owner +as to the prospect of cleaning up the Netpbm related files there. So +Bryan instead made Metalab the new home of the source code. But +Metalab had pretty low quality too, and in April 2000 Bryan moved the +package's home to Sourceforge. + +In June 2002, Bryan reorganized the package. Before, it was organized to +reflect the evolution of the package: first PBM only, then PGM was added, +then PPM, and then the multi-format PNM programs. There were four separate +subroutine libraries and each of the PBM, PGM, PPM, and PNM components was +independent of the components invented later. Documentation was in the form +of traditional man pages. In Release 10, the package was integrated into a +single monolithic package. There was one subroutine library and the source +tree was divided according to program function rather than what generation +of Netpbm it related to. All documentation was converted to HTML. + +In January 2004, Netpbm started to get the linear/gamma-adjusted +sample value thing right. Many programs had always used the gamma +adjusted values from Netpbm images as if they were linear, which +produced incorrect and rather terrible results. Netpbm 10.20 brought +the pm_[un]gamma709() library routines and pnm_readpamrown() etc. for +manipulating Netpbm images in floating point 0..1 sample values, both +linear and gamma-adjusted. + + +CHANGE HISTORY +-------------- + +06.08.19 BJH Release 10.35 + + Add pgmdeshadow. + + giftopnm: add -quitearly. + + pamfile: add -comments. + + ppmdraw: remove limitation on size of script. + + pnm_readpaminit(), pnm_writepaminit(): Add comment control. + + ppmtogif: do one row at a time. + + Pnmtopng: improve validation of -modtime option. + + Look in /usr/share/X11 instead of /usr/openwin/lib for + rgb.txt. + + ppmtompeg: die properly when frame is less than 16x16. + + ppmdraw: fix bug with semicolon in script not followed by + white space. + + libppmd (ppmdraw, ppmlabel): don't crash with horizontal + or vertical line that is entirely out of frame. + + picttoppm: Fix 32 bit per pixel conversion, broken in 10.34. + + pamthreshold: fix read from pipe. + + Fix typo in make file that makes svgtopam get built + when Libxml2 is not available. + + pnm_computetuplefreqhash(), pnm_computetuplefreqtable2(): + Don't crash on error without pm_setjmp(). + + Change memmem() to memmem_internal() in cameratopam/identify.c + to avoid collision with system library. + + Use __MINGW32__ to determine HAVE_MKSTEMP (instead of manual). + + Eliminate use of network functions for endianness computations. + + Use "inttypes_netpbm.h" on a system that doesn't have + the int_fast32_t, etc. types. Like Solaris 8. + + configure, installnetpbm: autoflush stdout. + + Build: Use libpng-config if it exists. + + Build: assume no Lex program if neither 'flex' or 'lex' shell + command verb exists. + + Remove test source file ppmdtexttest. Ppmdraw should be + sufficient now. + +06.06.18 BJH Release 10.34 + + Add pamthreshold. Thanks Erik Auerswald + <auerswal@unix-ag.uni-kl.de>. + + Add pamx. + + Add pamtoxvmini. + + pammasksharpen: Add -threshold. + + pnmtopng: make "N colors found" message verbose-only. + + pnmtopng: make "no room in palette" message non-verbose. + + picttoppm: Tolerate various PICT file corruptions. + + picttoppm: Don't issue warning message when file named + 'fontdir' doesn't exist. + + libnetpbm: Add ppm_bk_color_from_color(), + ppm_bk_color_from_name(), ppm_name_from_bk_color(). + Thanks "Kenan Kalajdzic" <kalajdzic@gmail.com>. + + libnetpbm: Add ppmd_fill_path(). + + ppmtobmp: Fix for PBM input. + + bmptopnm: Don't crash on BMP with no color map. + + bmptopnm: Fix wrong file name in error messages. + + ppmtogif: fix bug: always produces garbage output. + + ppmtompeg: fix input from Standard Input. + + pnmflip: fix bug: -rotate90, -rotate180, and -rotate270 + (and synonyms) don't work when followed by other rotation + options. + + ppmtoilbm: Fig bug: generates more planes than necessary. + + pamtofits: fix buffer overflow in asembling header. + + picttoppm: fix bug - interprets some images wrong because of + bogus "rowBytes" value. + + Redo asprintfN(), etc. so as not to use va_list in a way + that doesn't work on some machines. + + cameratopam: remove definition of memmem() so it doesn't collide + with same in some C libraries. Add memmemN() and MEMEQ to + libnetpbm. + + Fix build of filename.o. + + Build: Use local version of mkstemp() based on mktemp() when + mkstemp() isn't available. No automatic determination that + mkstemp() isn't available yet. + + Build: Include dummy pm_system() on a system that doesn't + have regular Unix process management. + + Add -Wundef to Gcc compile options. + +06.03.26 BJH Release 10.33 + + Add pamtosvg. + + g3topbm: Add -width, -paper_size. + + libnetpbm / most newer programs: Fix bug that produces + plain format output when it should be raw because + pnm_readpaminit() does not set 'plainformat' and most + programs just copy the input pam to the output pam. + + pamflip: fix bug with left/right flip of PBM that has + width an even multiple of 8 plus something less than 8. + + pnmquant: turn on autoflush when creating seekable file. + + install: fix symbolic link pnmdepth -> pamdepth. + + build: fix some importinc dependencies. + +06.02.25 BJH Release 10.32 + + Add rlatopam. Thanks Simon Walton <simonw@matteworld.com>. + + Add pgmmake. + + bmptopnm: Understands RLE4/RLE8 compressed BMP. Thanks + Prophet of the Way <afu@wta.att.ne.jp>. + + pnmgamma: Add -bt709tosrgb -srgbtobt709, -bt709tolinear, + -lineartobt709, -gamma, -rgamma, -ggamma, -bgamma (gammma + values were formerly specified as parameters). + + pnmgamma: Rename -cieramp to -bt709ramp. + + pnmnorm: add -maxexpand option. + + ppmdraw: work on multi-image streams. + + anytopnm: add mime time image/x-ms-bmp for BMP + + pamchannel: works on multi-image streams. + + pamstack: works on multi-image streams. + + Convert pnmdepth to pamdepth. Add multi-image stream + capability. + + pamcut: works on multi-image streams. + + pnmtops: allow -flate and -rle together. + + pnmtops: overhaul of -psfilter output. + Thanks Chapman Flack <chap@anastigmatix.net>. + + pnmrotate: fine adjustment to arithmetic (rounding, + pixel quantization). + + pbmtopsg3: Put currentfile ... in exec block. Thanks + Chapman Flack <chap@anastigmatix.net> + + pbmtopsg3: Add missing /EndOfBlock . Thanks + Chapman Flack <chap@anastigmatix.net> + + pnmtops: Don't claim EPSF if using setpagedevice. + Thanks Chapman Flack <chap@anastigmatix.net> + + giftopnm: do "reading image sequence N" message only if + being verbose. + + ppmtobmp, bmptopnm: major speed improvement for PBM. Thanks + Prophet of the Way <afu@wta.att.ne.jp>. + + pbmtog3: Use new GCC features instead of assembly language + for superspeed operations. Thanks + Prophet of the Way <afu@wta.att.ne.jp>. + + pm_make_tempfile(): Use TEMP and TMP environment variables if + TMPDIR not set. + + pm_make_tempfile(): improve error message. + + libpam: pnm_writepamrowmult() respects pam.plainformat. + + libpam: pnm_writepaminit() checks -plain option for PAM format + (recognizes the error). + + ppmtoglobe: Fix wild pointer bug. + + Fix wild pointer in REALLOCARRAY(). Affects ppmdraw, + escp2topbm, ppmtowinicon, ppmtompeg, pnmtopalm, + pnmtopng. Thanks Steve Summit <scs@eskimo.com>. + + pnmtopng: fix bug with undefined cmdline.modtimeSpec. + Thanks Mike Frysinger <vapier@gentoo.org>. + + pnmquant: Use Perl sysseek() instead of seek() to avoid + a mispositioned file disaster on some platforms. + + pamditherbw, pgmtopbm: fix bug: overly dark with cluster + methods because only 1/4 of the dither matrix is used. + Thanks Mark Williams <mark@aziraphale.homeip.net>. + + pnmrotate: fix bug: garbage in lower right corner of background + with -noantialias. + + pnmsmooth: change to regular Netpbm syntax. Replace -size + with -width and -height. + + pnmsmooth: fix bug: free of temp file name even when there + is no temp file (-dump option). + + pnm_scaletuplerow() fix bug: does nothing when old maxval == + new maxval. Affects pamedge only. + + ppmtompeg: Fix array/pointer degeneration mess with LumBlock + arguments; fix crash. + + pamstereogram: Fix crippling bugs. Thanks Scott Pakin + <scott@pakin.org>. + + giftopnm: Fix bug with interlaced GIF < 5 rows. + + giftopnm: Handle case of a clear code at the end of a block. + + ppmtogif: Fix bug with interlaced GIF < 5 rows. + + cameratopam: Fix segmentation fault from undefined 'ifp'. + Thanks Bernard Hatt <bmh@arkady.demon.co.uk>. + + xwdtopnm: Fix bug from 10.31: LSB-first XWDs convert to all + black. + + ppmglobe: fix bug: always says stripcount is zero + because it looks at the wrong argument. Thanks Urs Enke + <urs.enke@rwth-aachen.de>. + + pnmtotiffcmyk: Fix inttypes conflict on AIX. + + Stop exporting stripeq(). + + Add -lm to link of libnetpbm shared library, to express the + fact that code in libnetpbm requires it. Helps GNU Ld + --as-needed. + + Build: move symbolic links to header files into + 'importinc' directories to keep directories cleaner. Fully + populate 'importinc' in every directory so we don't have + to maintain a list of header files for each. + +05.12.23 BJH Release 10.31 + + Add pamgradient. + + libnetpbm/everything: speed up ppm_readppmrow() and + pgm_readpgmrow() by doing one fread per row instead of a + pgm_readrawsample() per sample. Thanks "Ariel Berkman" + <aberkm1@uic.edu>. + + libnetpbm: Make PGM, PPM, and PNM routines read suitable + PAM images. + + pnmsplit: upgrade to pamsplit. + + xwdtopnm: Add ability to work with bits per pixel > + bits per item. Replace whole pixel reader. + + pamtotiff: Use TIFFDefaultStripSize() for ROWSPERSTRIP default. + + pamtotiff: add -tag option. Thanks Gary Gorbet + <ggorbet@sdicgm.com>. + + ppmglobe: add -background, -closeok, filename argument. + + pnmcolormap: Work on multi-image stream (one map for all). + + pnmtopclxl: read/convert/write one row at a time. + Thanks Martin Buck <m@rtin-buck.de>. + + ppmtolj: read/convert/write one row at a time. + Thanks Martin Buck <m@rtin-buck.de>. + + ppmtoxpm: fix bug: produced incorrect output when number + of colors is a power of 92. Thanks Mark Weyer. + + pnmcolormap: fix bug: crashes with input depth > 3. + + pambayer: fix bug: doesn't actually read input file. + + ppmtompeg build: add missing const to work around TRU64 + compile failure. + + xwdtopnm: Fix handling of padding at end of XWD row. + + pamtotiff: fix bug with PAMs with > 3 planes. + + Remove PPM_PACKCOLORS. + + pnmremap: fix arithmetic overflow bug with maxval > 255 that + caused random pixels. + + remove global "cmdline" variables from all programs (4 had them). + + pnmtops: remove extra %%%%Page from 10.27. + + mkinstalldirs: remove chmod 755 to match Automake's + mkinstalldirs. + + libopt: add -quiet option + + ppmtojpeg: fix prototype mismatch when building without + the JPEG function. + + libnetpbm: fix: PPM_DISTANCE uses red twice instead of and green. + + pnmnlfilt: fix alpha ranges. + + cameratopam: replace setenv with putenv so it works on Solaris. + + cameratopam: put in workaround for Solaris header file bug. + + pngtopnm: fix bug: grayscale PNG produces PPM. s/b PGM. + + anytopnm: Use sed instead of Awk -- more universal. + + anytopnm: fix "INTERNAL ERROR" crash due to "filetype" variable + not set. + + rletopnm: fix crash when input file is empty or + there are various other problems reading its header. + + rletopnm: fix universal crash in option parser. + + tifftopnm: fix crash due to uninitialized variable. + + libnetpbm: Fix bug from 10.30: erroneously says a PAM header + line is missing. + +05.10.16 BJH Release 10.30 + + Add pambayer. + + Add pamrgbatopng. + + Add pamtilt. Thanks Gregg Townsend <gmt@cs.arizona.edu>. + + pamtotiff: create from pnmtotiff. + + pamtofits: create from pnmtofits. + + pamaddnoise: create from pnmaddnoise. + + pamarith: Add -divide. + + pammasksharpen: Add -sharpness. + + pnmtopng: add -comp_mem_level, -comp_strategy, -comp_method, + -comp_window_bits, -comp_buffer_size. + + pnmtopng: use Shhopt command line processor; replace + -chroma with -rgb, -phys with -size, -time with -modtime. + + pnmremap: Handle multiple image stream. + + xpmtoppm: Expand capacity from 2K character input lines to + 8K character input lines. + + libnetpbm: improved messages for "color xxx cannot be + represented precisely with maxval M" + + libnetpbm color specification parsing: Improve warning message + about rounding. + + libnetpbm/everything: speed up ppm_writeppmrow() and + pgm_writepgmrow() by doing one fwrite per row instead of + a pgm_writerawsample() per sample. + + pnmtopng: fix "meaningful bits" optimization of PGM so it + optimizes all the way instead of stopping at 4 bits. + + pnmtopng: fix crash when no -alpha option, due to dereferencing + of undefined alpha_mask. + + pnmtopng: fix bug: arbitrary color made transparent in + paletted PNG when nothing should be transparent. + + pnmtops: bug: selects wrong Postscript level. + + ppmtowinicon: use REALLOCARRAY instead of arithmetic-overflowing + realloc(). + + anytopnm: fix bug: fails when 'file' database doesn't + have mime type but does have human-readable type. + + manweb: recognize directory as not executable in search of PATH. + + pgm_allocrow(), ppm_allocrow(), pnm_allocrow(): cure + arithmetic overflow. + + libnetpbm: On plain formats, check for sample value exceeding + maxval. + + libnetpbm: reject maxval > 65535 in "pam" functions. + + pamarith: Use normalized libnetpbm facilities to get + proper accuracy. Thanks Thomas Henlich + <http://sourceforge.net/users/thenlich/>. + + pamarith: fix bug: shift functions don't work when maxvals + are not identical. + + pamarith: fix rounding error on multiply. + + pgmtexture: correct calculation of normalizing constants + for d > 1. Thanks Marc Breithecker + <Marc.Breithecker@informatik.uni-erlangen.de>. + + pnmnorm: fix divide by zero crash. + + pnmnorm: fix bug that doesn't let you specify + -luminosity, -colorvalue, or -saturation. + + ilbmtoppm: fix variable used before set. + + pnmtofits: fix 16 bit sample values > 2**15. + + pnmtopsnr: minor adjustments to messages. + + pnmnorm: don't crash when wvalue == bvalue. Thanks Thomas + Henlich <http://sourceforge.net/users/thenlich/>. + + pnmnorm: fix rounding of output values. Thanks Thomas + Henlich <http://sourceforge.net/users/thenlich/>. + + pnmhisteq: Fix external map to have width maxval + 1 instead + of maxval, so full intensity input pixels map properly. + + pnmhisteq: Fix -rmap. + + Fix typos in error messages in various programs. + + pgmmedian: change syntax to Netpbm standard. + + pammasksharpen: fix signedness bug that caused random bright + pixels at edges. + + pammasksharpen: fix bug with maxval != 255. + + Clean up a bunch of function prototypes so some broken + compilers don't complain about missing "const" in them. + + Remove dependency of pnmtops on basename(). It isn't in + some C libraries and we don't want to mess with linking + extra libraries. + + Build of ppmsvgalib: work properly when LINUXSVGALIB is + a "default path" value such as "libvga.so". + +05.08.15 BJH Release 10.29 + + Add ppmdraw. + + Add pammixinterlace. Thanks Bruce Guenter <bruceg@em.ca>. + + Add pgmmedian. + + Add pnmaddnoise. + + pnmtopclxl: add -rendergray option. + + pnmtopclxl: add -jobsetup option. + + pstopnm: add -dSAFER Ghostscript option. + + pnmcrop: add -margin option. + + pnmcrop: add -borderfile option. + + pnmnorm: add -luminosity (which was already default), + -colorvalue, and -saturation. + + pnmtopng: Don't include any alpha info if supplied alpha mask + is all opaque. + + ppmcie: Make white point mark more visible. + + pamdice: Remove restriction of 100 slices in each direction. + + pnmtopng: Fix bug: erroneous transparent pixels when supplied + alpha mask is all opaque. + + Fix bytesToWordInt(): converts incorrectly on a machine that + has pointer size != word size and uses the general case code. + + libnetpbm: fix basic pm_readlittleshort() bug introduced + in 10.27. Affects mdatopbm, rawtopgm, lispmtopgm, + pcxtoppm, winicontoppm, bmptopnm, sirtopnm, xwdtopnm, + cameratopam. + + pamlookup: fix universal crash. Thanks "Colley, Anthony + W." <Anthony.Colley@ngc.com> + + pbmtolj: fix bug from 10.28: crashes with a line which is + a multiple of 8 plus 7 pixels wide not counting white right + margin. + + ppmtompeg: fix uname() rc test (sometimes > 0 is success). + +05.06.06 BJH Release 10.28 + + Add cameratopam (Dave Coffin's dcraw). + + ppmtoxpm: ignore empty or similar malformed XPM line instead + of giving up. + + pbmtolj: do multi-image stream. + + pnmindex: rewrite in C. + + Fix Gcc 3 warnings. + + pamcomp: fix out of memory problem due to uninitialized + pam.allocation_depth. + + anytopnm: remove apparently redundant traps of signals. + + pnm_alloctupletable(): fix bug - returns random value. + (affects pnmcolormap, pnmremap, pnmquant, others). + + jpeg2ktopam: fix array bounds violation on 64 bit machines. + Thanks Frederic Devernay <Frederic.Devernay@inrialpes.fr>. + + rle_open: remove extraneous errno declaration. Thanks + Joerg Sonnenberger <joerg@britannica.bec.de>. + + pm_tmpfile, pm_make_tmpfile: rearrange code. + + ppmtompeg: fix insecure temp file. Thanks Alexey + Tourbin <at@altlinux.ru>. + + libnetpbm: fix basic readlittlelong() bug introduced in 10.27. + Affects xwdtopnm, bmptopnm, winicontoppm, lispmtopgm. + + pbmtext/libnetpbm: fix crash with -builtin=fixed. + + pbmtoppa: fix floating point exception always due to + undefined DPI. + + fix jpeg2000 build failure on system without inttypes.h, + etc. Build now excludes jpeg2000 if you don't have 64 + bit capability, which practically means you have + inttypes.h, etc. + + jpeg2000: don't do unsafe temporary files. + + ppmshadow: make it work with old Perl. + + pnmquant: remove use of Fcntl::seek, not available in + Perl 5.00503. + + pnmquant: make -quiet option work. + + pnmgamma: Correct math in -srgbramp. Add proper rounding. + Thanks Horst J. Wobig (hjw.fsw@wobig.de). + + ppmshadow: fix blurring of non-translucent shadow. + + ppmtoxpm: fix use of uninitialized variable that results + in invalid color map. + + Fix backward pnmtopnm - pamtopnm symlink. + +05.03.28 BJH Release 10.27 + + tifftopnm: do multi-image streams. + + pnmtotiff: add -append option. + + pnmtotiff: do multi-image streams. + + pnmtopclxl: fix bug with invalid palette in + SetColorSpace command. + + pnmtopng: don't accept -background without -mix. + + Eliminate pnmtopnm program -- install 'pnmtopnm' as an + alternate name for 'pamtopnm' instead. + + pamscale: refilter as part of resampling for better + quality downsampling. + + ppmcolormask: fix segfault with stdin input. + + Add pm_setjmpbuf(). + + pnmindex, ppmquantall: use pnmquant instead of ppmquant. + + pnmquant: add -quiet, -plain options + + ppmfade, pnmshadow, pnmindex, pamlookup: Use pamscale + instead of pnmscale. + + ppmtoxpm: Don't include superfluous entries for colors + of transparent pixels, or for transparency when there are + all colors are opaque, in the XPM color map. + + pnmquant: remove dependency on File::Temp, not available + before Perl 5.6.1. + + pamfunc: use multiplication instead of division for -divisor, + for speed. + + pamfunc: fix bug in -adder and -subtractor with signed + arithmetic. Thanks David Jones <drj@pobox.com>. + + pamscale: fix bug in converting negative floats to integers. + Thanks David Jones <drj@pobox.com>. + + pamscale: fix bug with -filter: scanbuf too small, thus + some output rows/columns can never be created and output raster + is invalid. + + build: fix build errors in ppmtompeg with OMIT_NETWORK. + + jpeg2ktopam: fix uninitialized memory problem in allocating + jasperCmptNo. + + pbmclean: fix -minneighbors so it isn't really -minneighbor. + + pnmremap: allow RGB map and BLACKANDWHITE/GRAYSCALE input. + + pamstereogram: fix bug with -eyesep (float/double). + + pamtojpeg2k: fix bug with -compression (float/double). + + pamtojpeg2k/jpeg2ktopam: work on 64 bit machine; fix + definition of int32fast_t, etc. in libjasper. + + libnetpbm: Respect plainness of specified format when writing. + + pnmremap: fix handling of arithmetic overflow in color + distance calculation. + + pnmremap: fix bug with palette of different depth from image. + + libnetpbm: fix 2 byte per pixel pnm_pamwriterow(), + pnm_formatpamrow(). + + pbmmake: fix bug: requires color option. (Introduced ca. + 10.23). + + -plain works with PAM write functions. + + common -plain option causes failure instead of wrong output + when used with PAM output. + + pnmremap: fix rounding error where map maxval is small and + unequal to image maxval. + + Add pnm_normalizeRow(), pnm_unnormalizeRow(), + pnm_creategammatransform(), pnm_createungammatransform(), + pnm_freegammatransform(), pnm_freeungammatransform(). + Idea and prototype from "Scott T. Smith" <scott@gelatinous.com>. + + pamscale: Use pnm_noramlizeRow() to speed up gamma adjustments. + + palmtopnm: Don't assume Palm Bitmap is valid. + Thanks Paul Bolle <pebolle@tiscali.nl>. + + giftopnm: fix crash with input that has bogus color indices + in the raster. + + giftopnm: fix crash with input that has a bogus minimum code + length field. Thanks deekoo@tentacle.net (Deekoo L.). + + pnm_readpamrown(): use pnm_readpamrow() instead of + pm_getraw() for speed. Similar for pnm_writepamrown(). + + pnm_readpamrown(): use multiplication instead of division + for speed. Thanks "Scott T. Smith" <scott@gelatinous.com>. + + pm_readbiglong(), etc.: pm_error() in case of failure. + + Add pm_readchar(), pm_writechar(), pm_readcharu(), + pm_writecharu(). + + pnmtopalm: Add packbits compression. + + pnmtopalm: Add version 3 capability (-density, -withdummy). + + pnmtopalm: fix bug: incorrect between-image pad amount. + + pnmtopalm: fix compressed images. use 0 compressed size + field - not totally correct, but passable. + + palmtopnm: fix incorrect handling of some combinations of + PALM_IS_COMPRESSED flag and compression type field. + Thanks Paul Bolle <pebolle@tiscali.nl>. + + palmtopnm: fix totally broken RLE and scanline compression. + Thanks Paul Bolle <pebolle@tiscali.nl>. + + palmtopnm: handle PackBits compression. Thanks Paul + Bolle <pebolle@tiscali.nl>. + + palmtopnm: handle Version 3 encoding. Thanks Paul Bolle + <pebolle@tiscali.nl>. + + Make makeman put in missing newline. Thanks Eric S. Raymond + <esr@thyrsus.com>. + + Include libz in build of programs that use TIFF library. + + palmtopnm: fix wrong check for disallowed combination of + -transparent and -rendition. + + pnmtops: Add -psfilter, -flate, -ascii85, -level options. + + pnmtops: Add -dict, -vmreclaim options. + + pnmtops: improve %%Title + + pamcomp: fix bug that duplicates last row of overlay image. + Thanks achurch@achurch.org (Andrew Church). + + pamcut: fix bug that fills the rightmost column with black. + Thanks achurch@achurch.org (Andrew Church). + + pnmtops: Add -noshowpage option. + + pnmtops: Add %%%%Page. (whoops, this actually added a second + %%%%Page. Removed in 10.31). + + pnmtopalm: fix bug with -offset option. + + xwdtopnm: recognize TrueColor visual class in header dump. + + ppmforge: fix bug: crash due to wild pointer with -night. + Thanks John Walker <kelvin@fourmilab.ch>. + +05.01.01 BJH Release 10.26 + + pnmhistmap: Add -dots, -nmax, -red, -green, -blue, -lval, + -rval, -height, and -width options. + Thanks "John H. DuBois III" <spcecdt@armory.com>. + + pnmnorm: accept -wpercent and -wvalue (or -bpercent and -bvalue) + together. Thanks Gregg Townsend <gmt@CS.Arizona.EDU>. + + xwdtopnm: Add -headerdump option. + + pnmtoxwd: Include 256 color color maps in direct color instead + of zero. Zero has a weird effect. + + pamtotga: recognize RGB_ALPHA instead of RGBA. + + palmtopnm: fix bug in determination of compression type. + + palmtopnm: fix bug in handling of multi-image streams. + Thanks Paul Bolle <pebolle@tiscali.nl>. + + pnmtopalm: fix bugs in computation of nextDepthOffset. + Thanks Paul Bolle <pebolle@tiscali.nl>. + + pamtotga: fix TGA pixel size for TGA with alpha. Don't do + colormap if input has transparency. + + pamtotga: fix crash due to uninitialized "id" field in TGA + header. + + pbm_writepbmrow(): Fix bug in MMX/SSE code that causes + segmentation fault. + + pnmhistmap: Fix bug: doesn't work with maxval != 255. + Thanks "John H. DuBois III" <spcecdt@armory.com>. + + pbmtext: fix crash with code point > 127. + + ppmtompeg: major cleanup. + + pnmtopng: fix "internal error" and crash bug with -transparent. + + pnmtoxwd: fix endianness on littleendian machines. + + pnmtoxwd: fix bug: doesn't work if you specify an option. + + jpegtopnm: fix bug: -dumpexif all wrong. + + jpegtopnm: fix bug: newline written to stdout instead of stderr + with -dumpexif. + + Add missing 'col' declaration so -msse compile works. + + pcdovtoppm: fix syntax error + + pnmtojbig/jbigtopnm: add newline to "usage" message. + + pamperspective: fix bugs with -frame_include, etc. + + build: Jpeg2k programs build properly with newer Jasper library. + + build: Fix bug: "no rule to build xxx.so" with external + Jasper or Jbig library. + + Add NAME and DESCRIPTION section to pointer man pages. + +04.10.16 BJH Release 10.25 + + Add pcxstd.ppm. + + Add pbmtoibm23xx. Thanks Jo Fahlke <jorrit@jorrit.de>. + + Add pamedge, replacement for pnmedge. + + pamperspective: add -frame_include, -*margin, -include. + + pamcomp: Handle RGB_ALPHA and GRAYSCALE_ALPHA images, + using the opacity plane. + + pamscale: do transparency pixel mixing properly. + + ppmtompeg: cleanups and additional verbosity. + + anytopnm: Use 'nawk' instead of 'awk' where available. + + anytopnm: Don't use -e. (not available everywhere). + + tifftopnm: Add warning when Whole Image method reduces + resolution to 8 bit. + + pamtopnm: accept extra planes (ignore them). + + pamcut: major speedup. Thanks Prophet of the Way + <afu@wta.att.ne.jp> (Akira Urushibata ("Douso")). + + Add pnm_getopacity(). + + libnetpbm: "pam" read and write routines much more + efficient. Thanks Prophet of the Way + <afu@wta.att.ne.jp> (Akira Urushibata ("Douso")). + + Add pnm_formatpamrow(), pnm_allocrowimage(), + pnm_freerowimage(). Thanks Thanks Prophet of the Way + <afu@wta.att.ne.jp> (Akira Urushibata ("Douso")). + + pnm_readpamrow(): Add option to have "tuplerow" argument + NULL and not get the row's contents. Thanks Thanks + Prophet of the Way <afu@wta.att.ne.jp> (Akira Urushibata + ("Douso")). + + Add pnm_writepamrowmult(). Thanks Thanks Prophet of the + Way <afu@wta.att.ne.jp> (Akira Urushibata ("Douso")). + + libnetpbm: format plain format images more nicely. + Thanks Thanks Prophet of the Way <afu@wta.att.ne.jp> + (Akira Urushibata ("Douso")). + + pamcut: fix bug: Blows up instead of failing cleanly + when you try to cut beyond the bounds of the image. + Thanks Thanks Prophet of the Way <afu@wta.att.ne.jp> + (Akira Urushibata ("Douso")). + + fix bug: MMX/SSE fast PBM writing (with gcc -msse) all wrong. + + pamscale; fix bug: -linear option sense reversed. + + pamscale: fix bug: everything too dark when using resampling + to enlarge. + + Speed up pbm_writepbmrow() (and all PBM output programs) + by going a byte at a time. Thanks Prophet of the Way + <afu@wta.att.ne.jp>. + + pamperspective: fix bug that can cause memory corruption + and crashes. Thanks Mark Weyer + <Mark.Weyer@math.uni-freiburg.de>. + + ppmtompeg: put in proper marshalling/unmarshalling so as not + to depend on a 32 bit integer type. + + ppmtopcx: add -palette option. + + pnmconvol: fix bug: green and blue convolution matrices + exchanged, gray exchanged with random. + + ppmtowinicon: fix bug: crashes on 32 bit images. + + Use <inttypes.h> or <types.h> where possible, dynamically + built "inttypes.h" where not. Eliminate uint32n. + + Handle BITS_PER_WORD=64 in wordaccess.h so it builds on + 64 bit platforms. + +04.08.11 BJH Release 10.24 + + g3topbm: Add -stop_error. + + Add makeman to build tools. Thanks Eric S. Raymond + <esr@thyrsus.com>. + + pamflip: Large speed, memory improvements for + non-diagonal flips. Thanks Prophet of the Way + <afu@wta.att.ne.jp>. + + jbigtopnm, pnmtojbig: Use packed PBM functions to speed up + greatly. Thanks Prophet of the Way <afu@wta.att.ne.jp>. + + g3topbm: Don't fail on premature EOF; produce partial + output instead. + + add pnm_maketuplergb(), pnm_makerowrgb(), pnm_makearrayrgb(). + + Fix a bunch of programs that, starting with 10.23, have too + large a "len" field in the pam structure, causing storage + overwrites. + + pbmtext: fix free of unallocated storage bug with stdin + input text. + + pnm_writepaminit(): deal correctly with pam structure that + doesn't contain tuple_type member. + + Fix pamP->allocation_depth == 0. + + pamstretch-gen: use pamscale instead of pnmscale. + + Generate pm_config.h at make time. Determine endianness + and word size stuff dynamically. Use uint32n instead of + uint32_t in infotopam.c. + + fitstopnm: fix MIN/MAX transposition in maxval bounding. + + Fix bug: "wordn" in place of "wordint" in wordaccess.h. + + Fix bug: -plain option on "pam" programs generated plain + header, but raw raster. + +04.07.17 BJH Release 10.23 + + Add pamgauss. + + Add pammasksharpen. + + Replace pnmtoplainpnm with pnmtopnm. + + pnmconvol: Add -nooffset. + + pamdice: add -hoverlap, -voverlap. Thanks Geoff + Kuenning <geoff@cs.hmc.edu>. + + pbmtoepson: Add -dpi, -adjacent, -noadjacent, and -protocol + options. + + pstopnm: recognize Encapsulated Postscript by presence of + "EPSF-" in the header instead of a whole specific header line. + Thanks Philip Hallstrom <philip.hallstrom@gilbarco.com>. + + pnmpad: Allow -left/-right along with -width, + -bottom/-top along with -height. Thanks David Jones + <drj@pobox.com>. + + pnmpad: round to nearest instead of lowest in interpretation + of -halign, -valign. + + pnmsplit: Add -padname option. + + pnmenlarge: work on multi-image streams. + + libnetpbm: add allocation_depth to PAM structure. Add + maketuplergb(), makerowrgb(), makearrayrgb(). + + pnminvert: much faster for PBMs. Thanks + Prophet of the Way <afu@wta.att.ne.jp>. + + pbmmake: use packed bits to speed up. Thanks Prophet of + the Way <afu@wta.att.ne.jp> (Akira Urushibata ("Douso")). + + pbmtog3: speedups. Thanks Prophet of the Way + <afu@wta.att.ne.jp> (Akira Urushibata ("Douso")). + + Fix gamma value (from .45 to 2.2) in pm_gamma709(), + pm_ungamma709(). + + pgmramp: Fix signedness bug with -rectangle, -ellipse. + + pnmtojpeg: fix bug with large exif files. (negative malloc) + + pnmtopng: Fix estimation of whether it's better to use a + colormap or not. + + Add pamditherbw, replacement for pgmtopbm. + + pamperspective: Fix bug. Incorrect output. Thanks + <Mark.Weyer@math.uni-freiburg.de>. + + ppmtompeg: fix crash with input that is not a multiple of + 16 pixels high and wide. + + pamtotga: fix crash due to freeing nonexistent color table. + + pamtotga: fix bug: invalid TGA when you use -rgb with a + non-color input. + + pgmtopbm: fix calculations that divide by maxval+1; should + divide by maxval. Thanks David Jones <drj@pobox.com>. + +04.05.01 BJH Release 10.22 + + Add pamperspective. Thanks Mark Weyer + <Mark.Weyer@math.uni-freiburg.de>. + + Add pamstereogram. Thanks Scott Pakin <scott@pakin.org>. + + Add pc1toppm. Thanks Roine Gustafsson + <roine@users.sourceforge.net>. + + Add pbmtodjvurle. Thanks Scott Pakin <scott@pakin.org>. + + Add infotopam. Thanks Rich Griswold <griswold@acm.org>. + + Add pamtopfm, pfmtopam. + + ppmtowinicon: Add -truetransparent. + + ppmtowinicon: remove old, wrong, undocumented -andppm synonym + of -andpgm. + + ppmtopcx: Add -stdpalette option. + + pamsumm: Add -brief, -normalize. + + All programs that interpret color specifiers (ppmchange, etc.): + warn if the specified color can't be represented, to the + precision specified, in the operative maxval. + + ppmchange: fail if the specified color can't be represented in + the maxval of the input image. + + pcxtoppm: Imply standard palette when palette in PCX header is + all black. This function apparently got lost some time since + it was added in 1994. + + pcxtoppm: Add the color palette to -verbose output. + + ppmtopcx: Fix bug: wrong 256 color PCX output. From + 10.21. Thanks Timothy Borgeaud + <timothy@borgeaud.freeserve.co.uk>. + + Convert ppmtodjvurle into pamtodjvurle. + + pngtopnm: Dump additional info about PNG with -verbose. + + pngtopnm: Use Netpbm command line parser. + + pbm_readpbmrowpacked(): Fix bug: ORs bits into return value + instead of setting them. Affects pbmtoescp2. + + ppmtopcx: Fix bug: don't add black to a palette if it's not + already there. + + pnm_tuplehashtotable(): fix allocsize (maxsize) = 0 case. + + pamflip: fix bug with random memory accesses due to + signed/unsigned comparison. + +04.03.28 BJH Release 10.21 + + Add pamsumm. + + Add pamsummcol. + + Add pamsharpness, pamsharpmap. + + Add ppmtodjvurle. Thanks Scott Pakin <scott@pakin.org>. + + pstopnm: add -dpi option. + + ppmtopcx: add -planes option. + + pbmtext: add -width option. + + replace pnmcomp with pamcomp, do transparency right wrt gamma. + + tifftopnm: Use better CMYK->RGB algorithm: y=1-(b+k) instead + of y=(1-k)*(1-b) in Row By Row mode. + + pbmtext/libnetpbm: Allow pbmfont fonts to have 96 characters + (32-128) instead of 95. + + pnmtopng: fix bug with -transparent. + + pcxtoppm: remove debugging footsteps. + + pnmflip: pass through -plain, etc. to pamflip. + + Include pm_system.h, pm_gamma.h in package. + + ppmtomap: Change #/bin/sh to #!/bin/sh. + + ppmtogif: Don't violate array bounds when GIF color map is + is larger than internal color map. + + yuvsplittoppm: Fix -ccir601 option; clean up. + + ppmtobmp: Fix bug: Generates invalid bits per pixel + (e.g. 3) when input image has small number of colors. + Thanks David Jones <drj@pobox.com>. + + pbmtog3: fix buffer overrun when image > 1728 columns. + Thanks Prophet of the Way <afu@wta.att.ne.jp>. + + pnmsvgalib: Correct error message - too wide -> too tall. + + pnmtotiffcmyk: Correct abs to fabs so -theta works. + + sldtoppm: Correct abs to fabs. + + pgmramp: Correct abs to fabs so -rectangle and -ellipse work. + + pgmramp: Don't crash with -rectangle and height or width = 1. + + ppmforge: Correct abs to fabs so the planet is more than + 2 pixels wide. Also recode much of program in high level C. + + pnmtojpeg: interpret "length" field in exif data as unsigned + 16 bit instead of signed. + + pnmrotate: fix bug: always crashes in memory free + + pnmrotate: remove debugging messages. + + Declare _XOPEN_SOURCE=500 in programs that use strdup() so + C libraries that don't have _BSD_SOURCE will declare it. + + Use FTELLO macro so things compile on a system that + doesn't have ftello. Don't assume _LARGE_FILE_API means + ftello is available -- _LARGE_FILE_API is input to libc, not + output from it. + +04.01.30 BJH Release 10.20 + + pamscale: derive from pnmscale. + + pamscale: Add resampling/convolution code. Thanks + Michael Reinelt <m.reinelt@steinhilberschwehr.at>. + + pamscale: Do math in linear intensities instead of + gamma-adjusted. + + pamscale: Add -xyfill. + + pnmtopng: Remove global variables. Solves a problem with + conflicting name with libc: "gamma". + + pbmtomda: make program identifier 'MicroDesignPCW'. Thanks + John Elliott <jce@seasip.demon.co.uk>. + + fitstopnm: Produce maxval 1 instead of 0 when input is all one + value. Use maxval 255 when samples are floating point. + + pamstretch-gen: be robust to invalid PNM input. + + anytopnm: do safe temporary files. + + ppmquantall: do safe temporary files. + + pnmindex: do safe temporary files. + + pnmmargin: do safe temporary files. + + pamstretch-gen: do safe temporary files. Thanks + Stefan Nordhausen <nordhaus@informatik.hu-berlin.de>. + + tifftopnm: Do better validation of number of channels. + + libnetpbm: Add "normalized" (floating point) read/write + routines: pnm_readpamrown(), pnm_writepamrown(), + pnm_allocpamrown(), pnm_freepamrown(). + + libnetpbm: Add pm_gamma709, pm_ungamma709(). + + libnetpbm: rename createBlackTuple() to pnm_createBlackTuple(). + + pm_openr_seekable(): use TMPFILE environment variable. + Thanks Kai Strieder <ska@pixelboxx.de>. + + libnetpbm: Fail when input maxval is 0. This wreaks havoc + with such things as rescaling to a new maxval. + + pnmquant: Fix bug wherein all options are rejected. + + ppmshadow: Fix crash in all invocations. + + pnmtopng: fix bug with array bounds violation with -alpha. + Usual symptom: "internal inconsistency" message. + + anytopnm: Remove "function" so it works on FreeBSD. + + configure: Do a better job of choosing between -R and -rpath. + + configure: Add test compile for PNG, Z libraries. + +03.11.15 BJH Release 10.19 + + ppmhist: Add -float option. + + ppmhist: speed up -colorname by reading color dictionary only + once. + + bmptopnm: fix bug with BMPs that end prematurely. + + giftopnm: Properly generate alpha mask when the same + color is both transparent and opaque in the GIF. Thanks + Karl Zilles <zilles@1969.ws>. + + rgb.txt: move D65 to the end, so "white" is preferred. + + xwdtopnm: change interpretation of bitmap_pad and bitmap_unit + to accomodate Xfree86 direct color 24 bit xwd. + + pbmtextps: fix bug where intermediate file gets truncated. + + pstopnm: fix bug in which Standard Input never works. + + ppmtobmp: change 'char' to 'unsigned char' to work around a + Solaris C library bug. + + ppmtobmp: handle maxval properly for maxval != 256 truecolor BMP. + Thanks Michael Buchholz <michael.buchholz@deu.mci.com>. + + ppmquant: replace with wrapper for pnmquant, because ppmquant + had some really hard bug in computing the new color set. + + Fix stack corruption in pXm_check() on systems that have + both 32 and 64 bit file offsets. + + Add 'makecat' build tool and description to USERDOC of + using lynx -dump to get man-able documentation. + + Make AIX shared library build work, with -qmkshrobj. + + configure: Add intelligence to default location for zlib, + libpng headers. + + configure: Make shared libraries work on AIX. + + Add netpbm-config. + + installnetpbm: don't crash on mkdir on old Perl. + +03.09.19 BJH Release 10.18 + + Add escp2topbm, pbmtoescp2. Thanks Ulrich Walcher + <u.walcher@gmx.de> + + Add pbmtomatrixorbital. + + Add ddbugtopbm by Russell Marks. + + bmptopnm: Handle transparency, arbitrary pixel format (rgba + masks in BMP header). + + bmptopnm: Handle top-down BMP. + + bmptopnm: Handle 32 bit BMP. Thanks Aaron Orenstein + <aorenste@grandvirtual.com>. + + ppmtopcx: add -8bit option. Thanks Holger Schemel + <holger.schemel@telefonica.de>. + + ilbmtoppm: recognize (and ignore) DPPS and TINY chunks. + + pbmpage: Add solid perimeter box to Pattern 1. + + anytopnm: use 'file --mime' where available to determine file + type more robustly. + + manweb: make 'webdir' a list of directories instead of just one. + + pnmpsnr: fix bug: Cr and Cb interchanged. Thanks + "Uwe Utecht" <uwe.utecht@bbc.co.uk>. + + pnmstitch: fix crash. Thanks "Paul" <pwilkins@lashwhip.com>. + + manweb: add ability to read info files. + + configure: missing lineends for Solaris. + + anytopnm, ppmquantall: remove non-POSIX tail -N and egrep. + + pgmtexture: Fix Measure of Correlation-2 so small values don't + turn into zero (replace abs() with fabs()). + + Add and use MALLOCVAR and MALLOCARRAY utility macros. + + Allocate rows individually if can't get all rows in a single + memory block. + + Remove hpcdtoppm from the main package because it isn't + licensed properly to be distributed on Sourceforge. + + Remove "magic" file -- the version that comes with Christos + Zoulas' 'file' package now contains everything that file had. + + configure: put space after -o in test compiles. + + Explicitly set SCRIPTS make variable to null so environment + variable of the same name doesn't screw things up. + + Remove -DALL_SOURCE from AIX compile; define it in files that + require it. + + Add -ffast-math option to recommended Gcc options. + + stamp_date: don't use LOGNAME as a variable (on AIX, you can't). + +03.07.05 BJH Release 10.17 + + Various code cleanups based on TRU64 compiler warnings. + + Configure: print message when $OSNAME not recognized. + + Fix Makefile.common so LIBS and LOADLIBES work. + + Fix make file for Ppmglobe so it links the math library. + + Fix bug in xxx_check(): function/prototype mismatch + causes bogus wrong-filesize error on systems where off_t + is sometimes not 64 bits. + +03.07.03 BJH Release 10.16 + + Add ppmglobe. Thanks Max Gensthaler <Max@Gensthaler.de>. + + bmptopnm: Add ability to convert 16 bits per pixel Windows BMP. + + giftopnm: add -image=all. + + pnmtiff: Add -resolutionunit option. + + pnmtopng: fix bugs, remove limitations with -text. + + pgmabel: Declare internal subroutines 'static'. + + pstopnm: fix bug: encapsulated postscript confused with + regular postscript, so all pages get overlaid as one page. + + pnmrotate: Use smaller real memory working set. + + winicontoppm: use standard option parser. + + pnmflip: fix bug causing -r180 and -r270 to be ignored. + Thanks YANO Hirokuni <hyano@ya-no.com>. + + configure: fix bug with missing space when using CFLAGS + environment variable. + + Add CPPFLAGS and LOADLIBES to rules and 'configure' test + compiles. + + Issue error message if you do 'make package' before 'make'. + + Add VERSION file to package. + + Use explicit library file name on a link instead of -L/-l + where possible. + +03.04.27 BJH Release 10.15 + + Add pamtohtmltbl. Thanks Alexander B. Ivanov <ssh@S-and-B.ru>. + + Add pampop9. Thanks Robert Tinsley, + <http://www.thepoacher.net/contact>. + + winicontoppm: Handle 24 bit direct color winicons. Thanks + Lee Benfield <lee@benf.org>. + + pnmrotate: add -background option. + + pnmtojpeg: Add -density option. + + pamtotga: Add alpha capability, via "RGBA" tuple type. + + libnetpbm: Add ppm_readcolornamefile(). + + Make library and programs work with files > 2GB. At least + on GNU and AIX. + + pbmtext: Add -momargin option. Thanks "Slaven Rezic" + <eserte@web.de>. + + pbmtoepsi: fix bug: non six-digit lines between + %%BeginPreview: ... and %%EndImage . Thanks + "K.Nakano" <ksk@seeds-man.com>. + + pnmrotate: fix bug: background color computed wrong. + + pnmrotate: fix bug: PBMs without -noantialias not properly + promoted to PGM. + + pnmtops: fix bug: 1 bit per sample output when maxval is 2 + or 3. Should be 4 bits per sample. + + pnmtops: fix bug: everything too dark when input maxval less + than Postscript maxval. + + pm_nextimage(): fix bug: doesn't read past white space at the + end of a plain-format raster. + + pnmremap: fix performance bug: don't put same color into hash + twice. Thanks Hannu Koivisto <Hannu.Koivisto@ionific.com>. + + ppmtoxpm: Add -hexonly. Default to system color dictionary. + Use standard library routines to access color dictionary. + + pnmcolormap: Keep only one row at a time in memory. + + bmptopnm: fix buffer overrun with wild ColorsUsed value. + + Change ordering of include files in parallel.c so it compiles + on AIX 5. + + configure: change -O2 to -O0 for broken gcc compiler. + + One more chop at the -R/-rpath issue: new defaults for Solaris. + +03.02.13 BJH Release 10.14 + + Add pamedge, adapted from pnmedge by Peter Kirchgessner, 1995. + + Add ppmwheel, adapted from ppmcirc by Peter Kirchgessner, 1995. + + Add ppmtoarbtxt, renamed from ppmtotxt by Peter Kirchgessner, + 1995. + + pnmflip: add pnmflip directory to search path for pamflip. + + picttoppm: Recognize DirectBitsRgn opcode. Thanks + <kabe@sra-tohoku.co.jp>. + + ppmbrighten: -normalize works with nonseekable input. + + jpegtopnm: Update exif stuff to match Jhead 1.9. + + bmptopnm: fix for the case of ColorsUsed != 0 in + non-colormapped (24 bit) image. + + pbmtopgm: limit the maxval to legal values. + + pamarith: minimum output maxval of 2 for -compare. + + rgb.txt: remove redundant lines, clean up. + + pnmgamma: fix bug in -ungamma -cieramp. 1/gamma vs gamma. + + pnmtopng: fix bug: background color = transparent color in + colormapped image causes transparent color not to be + transparent. Also make bilevel images with background color + use 1 bit per pixel instead of 2. + + pngtopnm: Fix bug: wrong exit code. + + Fix broken ISUPPER; affects sbigtopgm and color name functions + + pamflip: Use bundled strsepN() instead of strsep(). + + giftopnm: fix bug with GIFs that (invalidly) contain translation + cycles. Clean up LZW decompression so it is readable and more + robust. + + Add strsepN() to libnetpbm, because strsep() is not available + everywhere. + + Change --rpath to -rpath. + + Change LINKERISGCC to LINKERISCOMPILER and default to Y. + + configure: Handle explicit "none" response to svgalib prompt. + + Add merge.o (vs mergelist) method of doing merge build. + + Fix bug: jbig converters missing from merge build. + +03.01.09 BJH Release 10.13 + + Add pamlookup. + + Add pamflip: replacement of pnmflip. Does PAM images and has + -xform option. + + Add pm_system(). + + Ppmrainbow: Add -norepeat option. + + tifftopnm: handle 32 bits per sample -- Use upper 16 bits. + + tifftopnm: add -byrow. + + pamarith: Add -compare operator. + + ppmtompeg: Check for missing YUV_SIZE option with + -combine_frames and -combine_gops. + + ppmtompeg: fix buffer overrun with invalid message received + by slave processor. + + pamseq: Fix crash/memory corruption. + + pamseq: Remove debugging statement. + + Add some protection against Netpbm images that indicate + dimensions too big to process without arithmetic overflow. + + Replace isdigit() with ISDIGIT(), etc. + + pnmnorm: malloc histogram array instead of using stack + variable to avoid stack overflow. + + thinkjettopbm: works with Solaris Lex. + + Add PKGDIR_DEFAULT Makefile.config variable. + + Configure: Test for old JPEG library without jpeg_marker_struct. + + Configure: Add -I/usr/local/include and -I/usr/local/lib to + OpenBSD and NetBSD compiles and links. + + Change make variable from INCLUDE to INCLUDES to avoid collision + with Cygwin environment variable. + +02.11.09 BJH Release 10.12 + + Add pamtojpeg2k, jpeg2ktopam. + + pnmtotiff: add test for seekable output. + + pnmflip: use packed PBM format to save memory. Thanks + Ivan Karski <karski@nym.alias.net>. + + thinkjettopbm: replace getopt with shhopt to avoid header file + problem (getopt.h) on some systems. + + fix multiple definition problem with pm_plain_output. + + pgmminkowski, pgmmorphconv: fix bug: programs missing. These + were formally added in 10.0, but the code never actually went in. + + pbmtomda: fix crash with input image not multiple of 4 rows. + + tgatoppm: fix segfault in option processing from recent + option processor change. + + Slight correction to coefficients in pnm_YCbCrtuple. + + Add pnm_YCbCr_to_rgbtuple() to libnetpbm. + + ppmtompeg: fix build failure with NETWORKLD=NONE. + + ppmtompeg: fix build error due to broken C library header files + on SunOS. + + Fix missing alias symlinks in merge build. + +02.10.17 BJH Release 10.11 + + Fix nstring.h, ppmcmap.h dependency in analyzer/. + + pnmtojpeg: Add -rgb option. + + jpegtopnm: Handle a stream of consecutive JPEGs. + + tifftopnm: use TIFFRGBAImageGet() so it works on compressed + images. + + 'make distclean' deletes all symbolic links, even if I forget + to put them in HEADERLINKS so that 'make clean' gets them. + +02.10.10 BJH Release 10.10 + + Add -plain common option. Thanks "John H. DuBois III" + <spcecdt@armory.com>. + + ppmhist: Add -colorname option + + pnmcomp: Add -align=beyondleft, -align=beyondright, + -valign=above, -valign=below and make -xoff and -yoff work + in conjunction with -align and -valign. Idea from + "John H. DuBois III" <spcecdt@armory.com>. + + manweb: Add ability to search through PATH for documentation + so you can just say 'manweb bmptopnm'. + + bmptopnm: fix bug from 10.9: 24 bit truecolor should be + BGR, not RGB. + + ppmtobmp: fix bug from 10.9: 24 bit truecolor should be + BGR, not RGB. + + pamarith: Fix bug with mixed depth inputs. + + pamarith: Fix bug with -subtract of larger # from smaller. + + pnmstitch: fix bug causing segfault at end. + + pgmtopgm, ppmtoppm: Issue error message if arguments given. + + giftopnm: remove debugging messages. + + Fix line number in color dictionary error messages. + + Fix build errors on systems that don't do "echo -n" by using + cat /dev/null instead. + + Fix build errors that cause the data files not to get installed. + + Merge build: fix install of other/ programs and add NETWORKLD + to the link. + + Merge build: add missing backward compatibility 'pnmfile' link. + + Add SCO OpenServer to configure dialog. Thanks + John H. DuBois III <spcecdt@armory.com> + + Add FreeBSD to the configure dialog. + +02.09.21 BJH Release 10.9 + + Add pgmtopgm. + + Add ppmtoppm. + + Add ppmtoterm. Thanks Ero Carrera <ecarrera@lightforge.com>. + + Add ppmrough. Thanks Eckard Specht + <specht@hydra.nat.uni-magdeburg.de>. + + Add rgb.txt + + pnmquant: make it work with pipe input; fix crash due to + half-finished work accidentally released a few releases ago. + + bmptopnm: Use way less memory by inverting image while still + in the BMP raster format (as little as 1 bit per pixel), + instead of in the libnetpbm format (96 bits per pixel). + + ppmhist: Reads image into memory one row at a time instead + of entire image in memory at once. + + ppmshadow: make it work with non-PPM input. + + ppmshadow: Don't run a shell for every Netpbm program. + + xwdtopnm, pnmtoxwd: make them work on 64-bit-long machines. + + ppmdither: Fix subscript out of bounds bug which caused + random intensity values for the most intense pixels (and + very slightly too-intense values everywhere). + + ppmtobmp: Fix bug in 24 bit truecolor: was writing B, G, R + but standard appears to be R, G, B (per bmptopnm and xli). + + pamarith: restore pnmarith capability of having one of the + inputs be depth 1 while the other is not. + + pnmtopclxl: fine tuning of PBM input case. + + remove pnmfile; obsoleted by pamfile. + + ppmfade, ppmshadow: Change #!/bin/perl to #!/usr/bin/perl. + + Add a bunch of missing #include <string.h> and fix scanf type + mismatches, per gcc 3.2 compiler warnings. + + Add some missing -R options to links. + +02.08.16 BJH Release 10.8 + + Build: Fix Configure bug with JPEG headers in default path. + + Pnmtopclxl: fix bug with PBM input not multiple of 8 across. + +02.08.15 BJH Release 10.7 + + Pnmtopclxl: remove padBytesMultiple attribute, which doesn't + exist on old printers. + + Pnmtopclxl: fix MediaDestination parameter value. + + Pnmtopclxl: make options parsed by standard Netpbm + option parser; remove unconventional (and broken) + --output option. Fix crash with Standard Input input. + Check whole length given for option values. + + pnmflip: Add -memsize and -pagesize. Make other options + conventional - only one transformation allowed. + + Make 'configure' a Bourne Shell program that calls configure.pl. + + Add pnmstitch. Thanks Mark Salyzyn <salyzyn@cfl.rr.com>. + + Fix -R stuff to fix Solaris build. + + Add lots of consts, remove dead code, with the help of + GNU compiler warnings. + +02.07.29 BJH Release 10.6 + + Add pnmtopclxl. Thanks Jochen Karrer + <cip307@cip.physik.uni-wuerzburg.de>. + + Add pnmstitch code; not working yet. + + pnmmontage: add -data option. Thanks Ben + <bem@mad.scientist.com>. + + pnmtotga: put "image ID" in TGA output. + + ppmtotga: Correct name to pnmtotga. + + pnmcomp: Add -opacity option. + + pbmtog3: Add -nofixedwidth option. Vladimir Nadvornik + <nadvornik@suse.cz> + + ppmtopgm: upgrade to handle multi-image PPM file. + + icontopbm: fix bugs with invalid input formats. Thanks + Vladimir Nadvornik <nadvornik@suse.cz> + + ppmtompeg: fix crash with logarithmic psearch algorithm and + non-power-of-2 search range. + + configure: fix use of compiler other than cc. Thanks + Ben <bem@mad.scientist.com>. + + Fix Cygwin library build for default DLLVER. + + Fix file handle problem with Configure on old Perl. + + Don't use .defs file/run dlltool (Windows). + +02.07.14 BJH Release 10.5 + + Make library link on Solaris with GNU Ld work. Thanks + Russel Winder <russel@russel.org.uk>. + + Make Configure not depend on File::Temp. + +02.07.09 BJH Release 10.4 + + Fix space after -I bug in Makefile.common, lib/Makefile. + + Change a bunch of macros to upper case; avoid name collision + of round() with math library. + + Configure detects broken gcc, sets -O2. + + Configure detects jpeg headers not in default search path. + +02.07.02 BJH Release 10.3 + + Add pamfunc. + + Add pgmabel. Thanks Volker Schmidt <lefti@voyager.boerde.de>. + + pamslice: add -xmgr option. + + pgmslice: upgrade to pamslice. + + pamarith: add -mean option. + + pnmarith: upgrade to pamarith. + + pnmtopng: add -palette option. Functional copy from + "Pnmtopng" package. + + pbmtoepsi: Add -dpi option. Thanks Bill Cheng + <bill.cheng@acm.org> + + tifftopnm: make -respectfillorder work. + + pnmtopng: fix bugs in handling of text comment files. + Taken from "Pnmtopng" package. + + pnmtopng: fix -hist option. + + Cygwin build accomodations. Thanks Charles Wilson + <cwilson@ece.gatech.edu>. + + Fix ppmtompeg build failure when JPEGLIB = NONE + + Fix missing -R link options. + +02.06.14 BJH Release 10.2 + + Works with separate build directory. + + pnmnorm: fix precision error causes whites to become black + + Fix bug: Pbmpage needs math library + +02.06.07 BJH Release 10.1 + + ppmmake: add -maxval option + + pgmramp: add -maxval option + + Add pamseq. + + ppmcolors: base on pamseq. + + pnmtotiff: Fix bug in -indexbits. + + Fix runtime library paths for Darwin, Netbsd + + installnetpbm: Fix infinite loop when you refuse manweb.conf. + + installnetpbm: Add mode to mkdir for older Perl. + + installnetpbm: Use BSD option on Cp if not GNU. + +02.06.01 BJH Release 10.0 + + Man pages replaced by web pages -- either private copies + or straight from Netpbm Central. Documentation distributed + via Worldwide Web, not in the Netpbm source code tarball. + + Reorganize source tree. Combine 4 Netpbm libraries into 1. + Make merge build merge ALL programs into one. + + Add pamendian. + + Add pamstack. + + Add pamtohdiff, hdifftopam. + + Add pbmtextps. Thanks James McCann <jmccann@eskimo.com>. + + Add pgmminkowski, pgmmorphconv. Thanks Luuk van Dijk + <lvd@mndmttr.nl> + + pnmtotiff: Add -indexbits option to allow fewer than 8 bits + per sample in apletted image. Thanks Thomas Henlich. + <http://sourceforge.net/users/thenlich/>. + + pnmtotiff: put zeroes in unused colormap entries. Thanks + Thomas Henlich <http://sourceforge.net/users/thenlich/>. + + pbmtext: Add -lspace option. Thanks Denis <denism@cyberus.ca>. + + ppmqvga: remove; appears to be obsoleted by Pnmquant. + + pnmtops: remove setpagedevice by default. Add -setpage option. + + ppmtouil: rename to pamtouil, add transparency. + + pamchannel: Add -tupletype option. + + pstopnm: Add a showpage in case the EPS source doesn't have it. + Thanks "J. Milgram" <milgram@cgpp.com>. + + pstopnm: Run Ghostscript directly instead of via a shell. + Some Windows environments don't have a Bourne-compatible shell. + + pnmtotiff: Don't put bogus colormap in grayscale TIFF. + Thanks Thomas Henlich <http://sourceforge.net/users/thenlich/>. + + picttoppm, ppmtompeg, rletoppm: fix bug with invalid parameter + ("b" modes) on popen(). + + pnmtopng: fix bug with 'mayscale'. + + pnmnorm: Fix bug with bvalue == 0. Thanks "Blake, Chris" + <chris.blake@windriver.com> + + pnmtopng: restructure palette generation to make it + easier to read. + + configure: Add --help. + + Add Windows DLL versioning. Thanks Charles Wilson + <cwilson@ece.gatech.edu>. + + Add Nstring library, so Netpbm programs can use asprintf(), etc. + +02.03.15 BJH Release 9.25 + + Add pamdice. + + pnmgamma: add -srgbramp. + + ppmnorm, pgmnorm: replace with pnmnorm + + ppmnorm: Read only a row at a time into memory. + + ppmnorm: Add -keephues option. + + pnmtotiff: Add -miniswhite option. + + pnmtopsnr: Read only a row at a time into memory. + + Convert bmptoppm to bmptopnm. + + ppmtopcx: Add -xpos, -ypos options. + + pcxtoppm: Don't require seekable input. + + pcxtoppm: Improve messages; add some PCX header validation. + + ppmtowinicon: Use standard alpha mask (PGM image) instead of + PPM image (black/not black) for and file. + + pnmpad: Add -width, -height, -halign, -valign options. + Thanks M. van Beilen <mvb@iradis.org>. + + ppmhist: remove 100,000 color limit. + + pnmnlfilt: works with multi-image streams. Thanks + "Steven M. Schultz" <sms@2BSD.COM>. + + pcxtoppm: Fix bug with negative image position. + + pnmtopsnr: fix unsigned integer bug giving wrong results on PGMs. + + libpnm: fix bug: PAM functions write 16 bit samples wrong. + + Tifftopnm: fix bug: transparency mask all wrong. Thanks + Heikki Suonsivu <hsu@bbnetworks.net>. + + Makefile improvements for cross compiling. Thanks + "Maciej W. Rozycki" <macro@ds2.pg.gda.pl>. + + Allow build with existing JBIG library instead of the + bundled one. Thanks "Maciej W. Rozycki" + <macro@ds2.pg.gda.pl>. + + ppmtompeg Makefile: include -R option where needed. + Thanks Hans Werner Strube <strube@physik3.gwdg.de>. + + Add BSD/OS to configure program. + Thanks seebs@plethora.net (Peter Seebach) + + install uses supplied install.sh instead of an 'install program + it finds on your system. + + configure: Fix missing newline bug for IRIX. + +02.01.27 BJH Release 9.24 + + Add ppmsvgalib. + + pnmremap: Use full color resolution of input instead of that + of color map to do Floyd-Steinberg dithering. + + pnmremap: fix bug where Floyd-Steinberg dithering of very + dark areas creates spots of maximal brightness. + + ppmquant: fix same bug as pnmremap. + + pnmscale: add -nomix option + + rawtopgm: fix bug. Thanks Joe Krahn <krahn@niehs.nih.gov>. + + pnmquant: replace with a Perl program that calls + pnmcolormap and pnmremap. + + Fix bug: PAM library routines fail to read 2-byte samples. + + fix bug: install-dev doesn't install mappam.h. + + configure sets up install paths. + + make install does Ldconfig where required. + + pnmtops: Add "XxY" form of -dpi option. Thanks Vladimir + Nadvornik <nadvornik@suse.cz> + + ppmtomap: rewrite to call the new pnmcolormap. + + pnmscale: clean up code a little; now it appears to produce + somewhat better results -- don't know why. + + exif.h: remove C++ comments + + various fixes to please Irix compiler. + + Change some "long" to "uint32n" so it works on 64 bit + machines. + +02.01.04 BJH Release 9.23 + + tifftopnm: fix bug from 9.22: always crashes. + + xpmtoppm: fix bug from 9.21: XPM 3 files not recognized because + /* XPM */ comment read twice. + + xwdtopnm: Use bitmap_pad instead of bitmap_unit on X11 pixmap + files with depth > 1. Thanks "Ben Kelley" <ben_kelley@ubsw.com>. + + pnmtopalm: fix bug: crashes with -colormap and non-color input. + + ppmforge: fix bug: array subscripts out of bounds. Thanks + Rob Menke <robmenke@mac.com>. + + giftopnm: fix bug with extraneous "bogus character 0x00" message + + tifftopnm: add -respectfillorder option. Ignore FILLORDER + by default. + + make install-dev: install shared library stub files (symlinks). + + ppmtogif: Fix bug: color resolution in wrong bits in logical + screen descriptor. Thanks Elmue <elmue@gmx.de>. + + Add -lz to Tiff programs; libtiff requires it now. + + Add ppmcolors. + + Add pnmremap. + + Add pnmcolormap. + + pnmtops: Include setpagedevice directive in Postscript output. + Thanks A Braunsdorf <ab@eas.purdue.edu>. + + pnmtops: turn-to-fit logic works properly where paper is + wider than tall. Thanks A Braunsdorf <ab@eas.purdue.edu>. + + giftopnm: cleanup + +01.12.10 BJH Release 9.22 + + Fix bug: pnm_luminosity_factor must be "extern" in pam.h + + pbmtonokia: can create picture messages. -txt, -net options. + + tifftopnm: Accept invalid FILLORDER value - assume msb-to-lsb. + +01.12.01 BJH Release 9.21 + + Add pamdeinterlace. + + Add pnmquant. + + pnmtops: Accept maxval > 255 input. + + Rename pnminterp to the more informative pnmstretch. + + pnmstretch: convert from pnm to pam - pamstretch. + + pamstretch: add -xscale, -yscale options + + pbmtolj: Add -copies option + + ppmtogif: Add secret -h option to make Latex2html configure + program work. + + ppmquant: output maxval controlled by colormap maxval, + not input maxval. + + pbmclean: Add -black and -white options. Thanks + Michael Sternberg <sternberg@phys.uni-paderborn.de>. + + xpmtoppm: Don't require input to start with a comment. + Thanks MINAMI <minami@chem.s.u-tokyo.ac.jp>. + + xpmtoppm: Fix bug introduced with 9.20 with XPM 1 files. + + pnmcut, pamcut: fix bug with cut that begins past right edge + of image. + + pamcut: Same fix as in pnmcut in 9.9. Also fix black fill. + + pnmtotiff: Process one row at a time instead of reading + entire image into memory. Add -color, -truecolor. + +01.10.05 BJH Release 9.20 + + ppmtogif: Add -nolzw option. + + ppmntsc: do multiple images + + pnmtojpeg: fix bug from 9.19 causing crash on most images. + + ilbmtoppm: Correct cmyk -> rgb transformation. + + ppmtompeg: Fix bug due to missing "breaks". Thanks + Wolfgang Mueller <muellerw@pc7143.unige.ch> + + eyuvtoppm: fix memory leak, speed up by allocating working + storage only once. + + libopt.c: replace strtok_r() with strtok() so it compiles on + Mac OS X. + +01.09.18 BJH Release 9.19 + + pnmtotiff: fix bug from 9.17 causing compile to fail + with old Tiff library + + pnmtojpeg: Add -exif option. + + ppmtojpeg: Change to pnmtojpeg; PBM/PGM input causes grayscale + output. + + pnmtotiff: Handle LSB2MSB FILLORDER. + + pnmtotiff: Fix -msb2lsb, -lsb2msb. Used to do nothing but + set FILLORDER tag value. + + Make maxval of a PBM image read as a PGM image 255 instead of 1. + + libpbm: eliminate external data symbol pm_show_version + so it works with Windows. + + Use subplatform-specific prefixes on Windows shared libraries. + Thanks Charles Wilson <cwilson@ece.gatech.edu>. + +01.09.04 BJH Release 9.18 + + Fix bug from 9.17: -lm now needed in jpegtopnm link. + + jpegtopnm: Add -dumpexif and -exif options. + + pnmtotiff: Fix bug: 16 bit samples byte-swapped on little- + endian machines. + + Remove C++ comments from exif.c + +01.09.03 BJH Release 9.17 + + Add ppmtoneo, neotoppm. Thanks Teemu Hukkanen <tjhukkan@iki.fi>. + + pnmtotiff: Add -flate, -adobeflate. Thanks Peter Creath. + + pnmindex: Fix bug with -size option. Thanks + André Majorel <amajorel@teaser.fr> + + pnmflip: Fix memory leak, plus make special case for PBM + images that uses 12 times less memory. Thanks + Stefan Roellin <stefan.roellin@switzerland.org>. + + tifftopnm: Fix incorrect interpretation of FILLORDER tag + causing incorrect output with 16 bit samples and + FILLORDER not msb2lsb. Thanks Don Reid + <donr@cvs.agilent.com>. + + tifftopnm: Fix PHOTOMETRIC_MIN_IS_WHITE case. + Thanks Don Reid <donr@cvs.agilent.com>. + + giftopnm: Fix bug with malformed GIFs that end prematurely. + + pbmtonokia: Convert C++ style comments to C style so Sun C + compiler can handle them. Thanks Jon Parise <jon@csh.rit.edu>. + + Install development package (header files, static libraries) + by default. Add ability to build both static and shared + libraries. + + Add merge/nonmerge to Makefile.config/configure, in place + of special make targets. + + Fix Mac OSX build for gcc 3.0. Thanks m-sekino@mb.kcom.ne.jp + (Masanori Sekino) + + Fix make install.hdr. Thanks m-sekino@mb.kcom.ne.jp + (Masanori Sekino) + +01.07.24 BJH Release 9.16 + + Builds on Darwin/Mac OS. Thanks m-sekino@mb.kcom.ne.jp + (Masanori Sekino) + + Add pbmtopsg3. (Postscript G3 fax) Thanks Kristof Koehler + <kristof@fachschaft.physik.uni-karlsruhe.de> + + Add pbmtonokia. Thanks Tim.Ruehsen@OpenMediaSystem.de. + + Add ppmrainbow. Thanks Arjen Bax <arjen.bax@cmg.nl>. + + Add pamoil, as replacement for pgmoil. Based on ppmoil by + Chris <cesheppa@midnightsun.uwaterloo.ca>. + + ppmtogif: Add -alpha option. + + ppmtojpeg: fix bug: option takes as input filename. + + xpmtoppm: fix bug: Bogus EOF failure. Thanks + "Dr. Larry Pyeatt" <pyeatt@redwood.cs.ttu.edu>. + + pnmtopng/pngtopnm: update to Release 2.37.5 of the pnmtopng + package. Make -transparent option work like ppmtogif -- + you can add an "=" before the color to specify "exact". + fix bug with background color and maxval = 65535. Fix a + raft of bugs in pnmtopng from Netpbm 9.15. + + Remove Tiff library from the package. + + Proper naming of AIX and HP-UX shared libraries. + + giftopnm: Add color index to transparency message. + + Add some -R link options in make files. + + ppm3d: fix bug: ignores offset argument. + + tifftopnm: fix bug: shifted right one pixel. + + pnmshear: remove sscanf so it works better with Cygwin, + convert to shhopt, clean up. + + pgmcrater: Remove black vertical line at right + edge. Make craters wrap around the image (enables tiling + of image). Thanks Arjen Bax. + + pgmtopbm: remove sscanf so it works better with Cygwin. + Thanks Arjen Bax. + + Treat all white space, including DOS carriage returns, + in color name db file as white space; Thanks Arjen Bax. + +01.06.24 BJH Release 9.15 + + Change format specs to state that sample values are + nonlinear instead of linear. + + pnmtopalm/palmtopnm: Handle PalmOS 4.0 16 bit direct + color format. Thanks Bill Janssen <janssen@parc.xerox.com>. + + pnmgamma: Add CIE Rec 709 gamma correction option. + + pnmgamma: Add -ungamma option + + ppmcie: Add -rec709 color system option as default so + that it produces true PPM output (per the new spec) and + carefully document what the program generates. + + ppmcie (work done by Andrew Hamilton + <Andrew.Hamilton@colorado.edu> in May 1999 but not + distributed): + + 1. Corrected the XYZ -> RGB transformation; + 2. Eliminated the -interpwp option, a fudge which had been + necessitated by the incorrect XYZ -> RGB transformation; + 3. Added a Gamma correction, missing in the original; + 4. Added the option to plot u' v' chromaticity instead of x y; + 5. Added options to suppress labels and/or axes. + + pnmscale, pnmscalefixed: Fix bug with unwanted -verbose + behavior. + + pnmscale, pnmscalefixed: Add -reduce option. Thanks + Christopher W. Boyd <cboyd@pobox.com> + + ppmtoeyuv: Speed up by not freeing/reallocating storage for + each image. Thanks "Steven M. Schultz" <sms@moe.2bsd.com> + + ppmtoeyuv: Fix memory leak. + + Eliminate pgm_pbmmaxval, ppm_pbmmaxval, and pnm_pbmmaxval + from libpgm, libppm, and libpnm. 'maxval' argument to + pgm_readpgmrow() and ppm_readppmrow() already accomplishes + this. pnm_readpnmrow() changed to do same. external data + symbols like this do not work with Mingw. + + various changes to accomodate Mingw (native Windows) + and DLLs with Cygwin (Windows). + + eyuvtoppm: rewrite. Uses Netpbm libraries now. + + pstopnm: Remove gratuitous 5% margin. Add -equalpixels, + -imageheight, and -imagewidth options. + + pnmtopng: Read only one row at a time, not the whole image, + into memory. Do multiple passes through the (hopefully + fully cached) file. This saves memory because pnmtopng's + internal format may use 96 times as much space per pixel + as the file. + + libpbm: Add pm_openr_seekable(), pm_seek(), pm_tell(). + + libppm: Add ppm_computecolorhash2(), ppm_computecolorhist2(). + + configure: fix bug with Solaris/Sun compiler. + + Split pbmplus.h into pm_config.h and pbm/pm.h to prepare + for automatic generation of pm_config.h. Move pm_*() + subroutines from libpbm1.c to new libpm.c for clarity. + + Remove malloc.h from 411toppm. malloc is included by + pm_config.h, in platform-dependent way. + +01.05.13 BJH Release 9.14 + + fix bug in shhopt causing wild branches. + + winicontoppm: Make alpha mask ("and") output PBM instead + of PPM; correct sense so white is opaque, black transparent. + + ppmtoxpm: Add --alphamask option. Remove 256 color limit. + + xpmtoppm: Add --alphaout option + + ppmtogif: Add "=" to -transparent option to specify exact + color. + + configure: change /bin/perl to /usr/bin/perl. Red Hat Linux + doesn't have /bin/perl. + + pnm/Makefile: correct bugs in link. Thanks J Scott Berg + <jsberg@bnl.gov> + + Make it build on Unixware. + + Make it build on OpenBSD. + + document color indexing and histogram functions. + +01.04.22 BJH Release 9.13 + + ppmtogif: fix divide by zero + + move much of README file into a new master man page, netpbm.1. + + pnmcomp: add -align and -valign options. + + Add thinkjettopbm. Thanks Eric Norum <eric.norum@usask.ca>. + + Builds with Sun compiler. + +01.03.25 BJH Release 9.12 + + Add 411toppm. Thanks Steve Allen <sla@alumni.caltech.edu>. + + pnmcrop: add -sides option (does what was default + behavior until July 2000) + + ppmtoeyuv: Use netpbm libraries, deal with multi-image + input. + + Add color row color map and Floyd-Steinberg functions from + ilbm package to libppm. + + ilbmtoppm, ppmtoilbm: replace with Ingo Wilken's version from + April 13, 1995. + + jpegtopnm: fix crash with B&W JPEG input. + + pnmcomp: fix bug: invalid output image when overlay image + is "higher" format than underlying image. + + ppmchange: fix bug: wouldn't work with maxval != 255. + + pnmtojbig: fix bug: it always says invalid maxval. + Thanks Bill Davidsen. + + pbmtext: fix bug: output is sometimes "not implemented" + because of uninitialized variable. + + pnmpsnr: rewritten so as not to use Fiasco library. + Correctly handles maxval != 255. Works with PAM. + + Add IRIX to the configure program. Thanks Neil Franklin + <franklin@arch.ethz.ch>. + + make files: add ZLIB_DIR and ZHDR_DIR variables to + Makefile.config. Thanks Bill Janssen. + <janssen@parc.xerox.com> + + pcdindex: convert from csh to sh. Thanks Steve McIntyre. + +01.02.20 BJH Release 9.11 + + pnmtopalm: Handle 16 bit direct color format. + + pnmtotiff: Add -xresolution and -yresolution options. + Thanks Tim Ruehsen. + + Add error message to GNUMakefile for when GNU Make is too old. + + pnmpsnr: fix bug: PGM files always compared equal. + + libpbm: improve --version to reflect that libraries are + usually dynamically linked now, so it's the version of + libpbm, not the program itself. + + pbmtext: add -space option. + + asciitopgm: fix crash due to memcpy that should be memset. + Thanks Philipp Knirsch <pknirsch@redhat.com>. + + pktopbm: fix numerous bugs. Copied from Red Hat. By + jcn <janneke@gnu.org> 1998.09.22. + + pstopnm.csh: fix bomb when xres=yres. This program is + obsolete (use pstopnm.c instead), but the patch was free, + so why not? Copied from Red Hat. By Nalin Dahyabhai + <nalin@redhat.com> 2000.02.14. + + pnmtotiff: Make photometric for G3/G4 fax MINISWHITE + instead of MINISBLACK. Add -minisblack option. Thanks + Eric Smith <eric@brouhaha.com>. + + libppm/ppm_parsecolor: fix rounding error for very small + maxvals (e.g. PBM files -- maxval = 1). + + pnmtopalm, palmtopnm: minor updates + + bmptoppm: handle BMPs that use ColorsUsed instead of + bits per pixel to determine color map size. + + bmptoppm: add -verbose option. + + ppmquant: fix bug with maxval > 255 causing arithmetic + overflow and arbitrary colors in output. + +01.01.10 BJH Release 9.10 + + giftopnm: add -alphaout. + + ppmchange: Add -remainder option. + + Add pnmtopalm, palmtopnm. Thanks Bill Janssen + <bill@janssen.org>. + + Add pnmmontage. Thanks Ben Olmstead <bem@mad.scientist.com>. + + ppmtogif: Add -comment option. + + ppmtogif: fix bug: created GIF89 when it should have created + GIF87. + + giftopnm: fix bug in displaying of comment extensions. + + jpegtopnm: Add -comments option. + + ppmtojpeg: Add -comment option. + + ppmtompeg: fix crash. Thanks Roger Southwick + <rogers@mediaforte.com> + + More work on separating source and build directories. + GNU Make 3.77 or better now required. + +00.11.20 BJH Release 9.9 + + add ppmtolj: color HP Laserjet graphics (PCL). Thanks + Jonathan.Melvin@heywood.co.uk. + + ppmfade: add -mix option. + + ppmhist: add -noheader option. + + rawtopgm: Add --bpp, --maxval, and --littleendian options. + + pnmindex: Add -noquant, -title options. + + pnmtotiff: create 16 bits-per-sample Tiff files when + maxval > 255 instead of crash. + + tifftopnm: handle 16 bits-per-sample Tiff files. + + pnmscale: Use floating point arithmetic instead of 12 bit + fixed point to reduce distortion at right and bottom edge of + large images with weird scaling factors. Add pnmscalefixed, + which is the old fixed point pnmscale, which goes faster. But + also fix bug in the fixed point version so the distortion + isn't as bad. Add -verbose option. + + pnmcut: fix bug: right edge wrong or subscript out of bounds. + Thanks MURAKAMI Masahiko <muramasa@np.catv.ne.jp>, + Sven Over <sven.over@web.de>, Frederic Vivien + <vivien@lcs.mit.edu>, Pete Weisz <pete@pw34.resnet.cornell.edu>. + + xpmtoppm: fix reading of 4-character color codes; handles + "NONE" color (transparent background); add -v. Thanks + Martin Vermeer <martin.vermeer@hut.fi>. + + ppm/Makefile: fix bug: ppmtompeg, hpcdtoppm not installed. + Thanks Mike Castle <dalgoda@ix.netcom.com>. + + ppmpspread: fix bug: invalid memory reference crash. Thanks + digger <jfk666@poczta.onet.pl>, john joseph iii casey + <jjcasey@midway.uchicago.edu>. + + ppmchange: fix bug: every other argument pair ignored. + Thanks Sven Over <sven.over@web.de>. + + Fix error message in pXmmerge (no pm_error()). Thanks + Pete Weisz <pete@pw34.resnet.cornell.edu>, + <g031w503@soft.iwate-pu.ac.jp> + + libppm: add /usr/X11R6/lib/X11/rgb.txt as default rgb.txt file. + Thanks ceder@lysator.liu.se (Per Cederqvist). + + Replace hpcdtoppm version 0.3 (1992) with 0.6 (1994). Add + pcdindex. + + Build fixes for Tru64. Thanks Phil Benchoff <benchoff@vt.edu>. + + Makefile.config: option to not strip binaries on install. + +00.09.01 BJH Release 9.8 + + jpegtopnm: Add -adobe, -notadobe options. + + ppmchange: Add -closeness. + + giftopnm: report transparency information. + + jpegtopnm: Accept single-hyphen options. + + Make it build on DJGPP. + +00.08.12 BJH Release 9.7 + + Add PAM format, Pamchannel, Pamtopnm. + + sgitopnm: add -channel option to access more than 3 channels. + Thanks Smarasderagd. + + pnmcut: Add -pad option + + ppmtobmp: change default from -os2 to -windows. + + pnmcut: fix bug: height argument misinterpreted. + + ppmquantall: fix bug: don't crop white borders off images + + yuvtoppm: fix bugs: don't depend on bigendian representation + of integers. reject odd-width images. + + ppmtoyuv: fix bug: reject odd-width images. + + anytopnm: fix bug: required nonstandard shell feature. + + giftopnm: fix bug: when image consists of two gray colors, + program converted them to black or white and created PBM + file. Thanks Smarasderagd. Also fix memory leak. + + Make changes since 9.2 build on Cygwin. + +00.07.12 BJH Release 9.6 + + Add pnmtofiasco, fiascotopnm, psnpsnr. Thanks to Ullrich + Hafner. + + Make Pnmcrop use a temporary file instead of huge amounts + of memory. + + bmptoppm: fix crash when OS/2 BMP file has > 8 bits per pixel. + + anytopnm: fix bug (from 9.0) wherein program almost + always crashed. Add gzip, bzip, bzip2 capability. + Thanks Charles Howes. + + parallel.c: Work around SunOS libc problem. + + Define some newer libtiff macros so it compiles against + older libtiff. + +00.07.01 BJH Release 9.5 + + Extend formats to allow multiple images per file. Add + -allimages option to pnmfile. Add pnmsplit. Extend + pnmtops. + + Add pbmtowbmp, wbmptopbm. Thanks Terje Sannum. + + ppmtobmp: Add 24 bit (truecolor) capability. Remove Release 8.3 + colormap size update. + + pnmcut: easier, more expressive syntax for specifying what + to cut. + + pnminterp: handle maxval != 255, convert to use Netpbm + libraries. + + Translate pstopnm from Csh to C, eliminate dependency + on the 'bc' program. + + Fix bug in tiff library build which caused null soname. + + Add optParseopt2() to shhopt.a so you can use long options + with one hyphen instead of two. + + giftopnm: fix bug with variable used before set. Fix bug + (coding error -- 0=>i). Unknown impact. + + bmptoppm: fix bug with 24 bit (truecolor) Windows BMPs. + + xwdtopnm: fix one more bug with bits_per_item <> bits_per_pixel. + + Fix ppmtompeg build bug with static libraries. + + Make build clean with gcc -ansi (albeit with some files + that need extensions declaring the _BSD_SOURCE etc.). + +00.06.04 BJH Release 9.4 + + Rebase pnmtopng, pngtopnm on Pnmtopng 2.37.4. + + pbmtolj: fix bug where blank lines get discarded. Thanks + Charles Howes. + + ppmtompeg: fix bug with "PNM" format files with maxval != 255. + Get rid of built-in PPM file parsing. + + Fix 'make install' where mkinstalldirs is not found. + + Fix bug where rle_global.c would not compile with GNU C + Library 2. + +00.06.01 BJH Release 9.3 + + pnmfile: check for file size error. + + ppmhist: handle larger maxvals, image sizes + + xwdtopnm: Use color map with DirectColor to fix wrong color + bug on some DirectColor xwds. + + xwdtopnm: Correct bug with 24/32 DirectColor LSBfirst xwds. + + Add pXmcheck() library function. + + Add leaftoppm and ppmtoleaf. Thanks Bill O'Donnell. + + Add winicontoppm and ppmtowinicon. Thanks Lee Benfield + <lee@benf.org>. + + Add pgmslice. Thanks to Jos Dingjan. + + Include subset of RLE library in the package. + + stamp-date doesn't rely on whoami. + + Make file fixes to accomodate more install programs. + + Replace tmpnam() with mkstemp(). + + Add pXm_init() into all programs that didn't have it. + +00.05.15 BJH Release 9.2 + + Shared libraries now build properly for Solaris, SunOS, NetBSD. + + Add jbigtopnm, pnmtojbig. Thanks to Markus Kuhn. + + Add pnminterp, pnminterp-gen by Russell Marks. + + Add pbm_writepbmrow_packed() and pbm_readpbmrow_packed() to + libpbm. + + ppmdither: fix bug with input maxval != 255. Make output + maxval the LCM of the requested numbers of primary levels. + + xwdtopnm: works with files where there aren't an integeral + number of pixels per storage unit (e.g. 24 bits per pixel) + + Add some missing pXm_init() + + Make pXmmerge source code automatically generated. + +00.05.06 BJH Release 9.1 + + Add pbmtoppa (renamed from pbm2ppa, renamed from print-pbm). + Thanks Tim Norman. + + Add pbmpage. Thanks Tim Norman. + + Add pbmtomda, mdatopbm. Thanks John Elliott. + + Replace gemtopbm with gemtopnm. Thanks to John Elliott. + + Add ppmntsc: change colors to those acceptable for ntsc or pal. + + Rename old ppmntsc to ppmtv. + + pbmtolj: Add compression (-delta, -packbits, -compress) by + Dave Platt + + Look for both /usr/lib/X11/rgb.txt and /usr/openwin/lib/rgb.txt + by default. Improved error messages if file not found. + + pbmtext: renders character codes 0x80-0xff and 0x00-0x1f as + whatever the font says, rather than always blank. Thanks + Helge Oldach. + + Fix bug in parsing of rgb.txt file in ppm_colorname(). + + Add optional static library build to make files. + + Fix a bunch of build bugs for Solaris, SunOS. Still not all + the way there. Thanks Richard Curnow, Philippe Brieu, + Benjamin Kuit. + + Make it build on Cygwin. Thanks Pierre Humblet. + + Use rm -f;ls instead of ls -sf in make files; some systems don't + have ln -f. + +00.04.15 BJH Release 9.0 + + Add the 16-bit-per-sample format for maxval > 255. + Change size of samples in the library interface from 8 + bits to 32 bits. Library write routines now create the + new 16 bit format instead of plain format when you + request a maxval > 255 and not 'forceplain'. Make all + programs read the new format, and all programs that + convert to PNM from a >8 bit input generate it instead + of failing or normalizing. Make pnmdepth generate it. + + pnm_readpnminit(), etc. fails if you request a maxval > + 65535 and not 'forceplain'. It used to generate plain + format in that case, but you couldn't actually specify + a sample value > 255. + + Add pnmtorle and rletopnm from the Army High Performance + Computing Research Center. + + add ppmcolormask - creates a mask of areas of a certain + color in an image. + + anytopnm: fix infinite loop + + pbmtext: Ignore non-8-bit characters in bdf files instead + of crashing. + + ppmdither: fix crash with large dithering matrix dimensions. + + Rename ppmtompeg/headers/search.h to motion_search.h to avoid + possible confusion with the OSF system file search.h + + Fix erroneous shhopt.h dependency in build. + +00.04.03 BJH Release 8.4 + + Add ppmtompeg, adapted from Berkeley's mpeg_encode. + + Add eyuvtoppm and ppmtoeyuv, and vidtoppm, from Berkeley + mpeg tools. + + Add ppmfade, adapted from Wesley C. Barris' pbmfade. + + Add ability to extract the alpha channel to tifftopnm, + tgatoppm, and ximtoppm. (It's already in pngtoppm, + and still missing from ilbmtoppm). + + pnmtotiff: Change default compression to none, due to + removal of LZW capability from Tiff library. + + Make merge build use symbolic links instead of hard links. + + Include dependent libraries in the link of the + libraries. This is necessary on some systems, and a + good idea on others. + + Use strerror() instead of sys_errlist[] everywhere. If + some systems do not have the former, we need to do some + work, because strerror() was already used in some + places. We do have a report of a BeOS system with no + sys_errlist[]. + +00.03.24 BJH Release 8.3 + + Add ppmshadow, by John Walker <http://www.fourmilab.ch/>, + dated 1997.08.15. + + Add ppmlabel, by John Walker, dated June 1995. + + Add ppmcie by John Walker, dated September 1994. + + Add character drawing routines by John Walker to libppm. + + Add sbigtopgm by John Walker, dated January 1998. + + Handle BMP file color map size parameter in ppmtobmp, bmptoppm. + Thanks Marc Moorcroft. + + Rewrite make files, fix lots of make install bugs. + +00.03.20 BJH Release 8.2 + + Add ppmtojpeg and jpegtopnm. + + Rename pnmnoraw to pnmtoplainpnm. + + Add CMYK capability to tifftopnm. + + Major make file rewrite, especially making install work. + Pnmmerge is no longer the default. Shared libraries are. + + Add pnmtotiffcmyk. Written by Andrew Cooke (Jara Software) + jara@andrewcooke.free-online.co.uk + +00.03.02 BJH Release 8.1 + +00.03.02 BJH Add pnmtopng and pngtopnm. I got these from + ftp://ftp.au.netbsd.org/pub/NetBSD/packages/distfiles + today. Release 2.37.3. I added an "unsigned" and + changed the type of 'scaleval' to quiet compiler warnings. + +00.03.01 BJH Fix xwdtopnm interpretation of 16 bit TrueColor files. + Thanks to Martin Kroeker, mk@daveg.com. + +99.09.23 BJH Update xbmtopbm to recognize newer xbm format. + + + + +CHANGES TO NETPBM THROUGH MARCH 1994 +------------------------------------ + +Functional changes to Netpbm since 13 October 1993. +Minor bug fixes and compatibility fixes are not documented in this file. + +PBM + +libpbm1.c strstr() added to libpbm1.c. +libpbm5.c BDF font support added. +pbmtext BDF font support added. +pbmto4425 New filter. +pbmtoln03 Command line parsing changed to Pbmplus standard. + + +PGM + +pgmnoise New filter. + + +PPM + +picttoppm Updated +ppm3d New facility. +ppmchange New filter. +ppmdim New filter. +ppmflash New filter. +ppmmix New filter. +ppmntsc New filter. +ppmqvga Option parsing changed to Pbmplus standard. +ppmshift New filter. +ppmspread New filter. +ppmtoxpm Prototypes added. +xpmtoppm Prototypes added. +ilbmtoppm Updated. +ppmtoilbm Updated. + + +PNM + +pnmtoddif New filter. +pnmhistmap New facility. +pnmtops New option (-nocenter) added. + + +Functional changes to Netpbm since 7 December 1993. +Minor bug fixes and compatibility fixes are not documented in this file. + +PGM + +asciitopgm New filter. +fitstopgm Replaced by fitstopnm. +pgmtofits Replaced by pnmtofits. +pgmtopbm Upgraded. +pgmkernel New filter. + +PPM + +ppmchange Upgraded. +xvminitoppm New filter. + +PNM + +pnmalias New filter. +pnmtofits Replacement for pgmtofits. +fitstopnm Replacement for fitstopgm. +pnmtosgi New filter. +sgitopnm New filter. +pstopnm New filter. + + + +CHANGES BETWEEN PBMPLUS AND THE ORIGINAL NETPBM +----------------------------------------------- + +The following is new in Netpbm (compared to Pbmplus): + +PBM + +pbmtext BDF font support added. + +pbmto4425 Display on an AT&T 4425 Ascii terminal. + +pbmtoascii A new improved version. + +pbmtoln03 Convert to DEC LN03+. + +pbmtolps Fast PostScript creator. + +pbmtopk Conversion to/from a packed (PK) format font. +pktopbm + +pbmclean Flip isolated pixels. + +pbmpscale Enlarge pbm image with edge smoothing. + + +PGM + +asciitopgm Convert an ascii image into pgm. + +pbmtopgm Convert pbm to pgm by averaging areas. + +rawtopgm Handles input files without specification of the file size, + assuming the input image is quadratic. It also supports a + -tb (top bottom flip) option. + +bioradtopgm Conversion utility for files created by Biorad confocal + microscopes. + +spottopgm Convert SPOT satellite images to pgm. + +pgmkernel Generate a convolution kernel. + +pgmnoise Create a pgm file with random pixels. + + +PPM + +bmptoppm Conversion to/from windows bitmap format. +ppmtobmp + +ppmtogif Updated version. +giftoppm Removed (see giftopnm). + +ppmtoilbm Updated version. +ilbmtoppm + +picttoppm Updated version. +ppmtopict + +ppmtoxpm Updated version, which supports xpm version 3. +xpmtoppm + +ppmtomap Extract all colors from a ppm file. + +ppmtomitsu Convert to Mitsubishi S340-10 printer format. + +xvminitoppm Convert an XV thumbnail picture to ppm. + +ppmtoyuvsplit Conversion to/from YUV triplets. (MPEG / JPEG). +yuvsplittoppm + +ppm3d Create a red/blue stereo image. + +ppmbrighten Change image saturation and value on an HSV map. + +ppmchange Change all pixels of one color to another in a portable pixmap + +ppmdim Dim a ppm file down to total blackness. + +ppmdist Simplistic grayscale assignment for machine generated + color images. + +ppmflash Brighten a picture up to complete white-out + +ppmmix Blend together two portable pixmaps. + +ppmnorm Normalize the contrast in a portable pixmap. + +ppmntsc Make a portable pixmap look like taken from an American TV. + +ppmqvga Eight plane quantization. + +ppmshift Shift lines of a portable pixmap left or right by a random amount. + +ppmspread Displace a portable pixmap's pixels by a random amount. + +ppmtopjxl Convert a ppm file into an HP PaintJet XL PCL file. + + +PNM + +pnmtops New option (-nocenter) added. + +pnmtofits Replacement for pgmtofits/fitstopgm +fitstopnm + +pnmtosgi Conversion to/from sgi image format. +sgitopnm + +pnmtosir Conversion to/from Solitaire image recorder format. +sirtopnm + +giftopnm Replaces giftoppm. Examines the input image and produces + a pbm, pgm, or ppm output. + +pstopnm Convert PostScript to pnm. Requires Ghostscript. + +zeisstopnm Conversion utility for files created by Zeiss confocal + microscopes (the old standard). + +pnmalias Anti aliasing filter. + +pnmcomp Composite two portable anymaps together. + +pnmcrop New options added. + +pnmpad Add borders to anymap. + + +LIBTIFF + +A new release of libtiff is included. Please read its supporting +documentation. + + +CHANGE LOG FROM PBMPLUS +----------------------- + +Changes since the 30oct91 patch version: + + Fixed uninitialized variable in ppmtotga. (John Walker) + Added pgmcrater, ppmforge, ppmtoacad, sldtoppm. (John Walker) + Slight change to the p?mmerge.c front-ends to allow for main programs + that return instead of exitting. + Minor clarifications to the pnmconvol man page. + Fixed xwdtopnm to read some 16-bit True/Direct files. (David Elliott) + Fixed uninitialized variables in pnmtotiff. (Larry Rosenstein, Bayles Holt) + Added a couple of checks for \r while reading whitespace. (Larry Rosenstein) + Removed all the BROKENPUTC stuff. Now we ignore all return values from + putc(), and check ferror() in pm_close(). Added pm_close() calls to + many of the filters. + Fixed pnmdepth to check for too-large newmaxvals. Improved rounding + in pnmdepth and PPM_DEPTH macro. (Tom Lane) + Minor fix to ppmtouil. (Mohsen Banan) + Added new Imakefiles. (Rainer Klute) + +Changes since the 05oct91 X11R5 contrib tape version: + + Fixed minor SysV config error in pbmplus.h. (Tom Lane) + Fixed tifftopnm so that BITSPERSAMPLE and SAMPLESPERPIXEL default + correctly. Fixed possible bug in tgatoppm line-interleaving code. + (Arthur David Olson) + Fixed tifftopnm so that colormapped files are read correctly. + (PauL Drews, Mike Wade) + Corrected use of DefaultRGBDatabase / RGB_DB for imake sites. + (Randal L. Schwartz) + Bugfix to pnmtops color PostScript in -rle mode. (Angus Duggan) + Added auto-turning to pnmtops. + Added run-length encoding to ppmtotga. + Space optimization to pgmoil. + +Changes since the 27sep91 comp.sources.misc distribution: + + Fixed spelling error in giftoppm. Fixed ppmrelief to not shrink the + image by 2 rows and columns. Minor fix to pgmramp. Fixed off-by-one + error in pnmtoxwd. Man page fix for pnmgamma. (Arthur David Olson) + Converted ANSI trigraphs in ppmtosixel into good old octal. (Jeff Glover) + Fix to 24/32 bit case in rasttopnm. (Behr de Ruiter) + Float/double portability fix to libppm4. (Bruce Holmer, Ronald Khoo) + Fixed typo in compat.ksh. (Larry Virden) + Fixed int/short incompatibility in tifftopnm. (Salik Rafiq) + +Changes during the extended beta test period, starting on 15jan91: + + Lots of fixes from: Anthony A. Datri, Arthur David Olson, David Brooks, + David Elliott, Doug Claar, Duncan Sinclair, Francois Pinard, Gerard + Leurs, Jim Hanko, Ken Laprade, Klaus U. Schallhorn, Markus Bolz, Mike + Hench, Philip Gladstone, R C Smith, Selden E. Ball, Jr., Stephen Uitti, + Steve Allen, Tom Lane, update.kpj-jaakkola@athena.dsv.su.se, + Charles Karney, Unmesh Agarwala, Ed Pendzik, Juha Sarlin, Tom Tulinsky, + Phillip Smith, Lai-King Mau, David Koblas, Mark Donovan. + Added a global -version flag. + Added bunches of statics and prototypes. Now compiles with zero + warnings under gcc -ansi -pedantic. + Changed #ifdef __STDC__ to #if __STDC__, since some non-compliant + compilers define it as 0. + Changed pm_message and pm_error to be varargs routines. Added a + portable version of vfprintf for those systems which don't have it. + Removed the option of not compiling the pgm and ppm parts. Very few + people used it, and it added amazing complexity to the pnm programs, + turning them into maintenance nightmares. + Merged pbmpaste into pnmpaste. + Merged pgmtops and ppmtops into pnmtops. + Added auto-scaling and dpi / page size flags to pnmtops. + Changed the interpretation of bits in pbmlife to conform with other + tools. + Changed xwdtopnm to ignore the pixel number in the xwd color structure. + Added a -pseudodepth flag to pnmtoxwd. + Updated tifftopnm for libtiff 2.4. + Added many option flags to pnmtotiff. (J.T. Conklin) + Added support for X11R5's new color specifiers rgb: and rgbi:. + Added pgmtexture. (James Darrell McCauley) + Added ppmtopj, pjtoppm, and ppmdither. (Christos Zoulas) + Added ppmtotga. (Mark Shand) + Added ppmtosixel. (Rick Vinci) + Added pbmtoatk and atktopbm. (Bill Janssen) + Added ppmtoyuv and yuvtoppm. (Marc Boucher) + Fixes to picttoppm. (George Phillips) + Added 24-bit support to ilbmtoppm. (Mark Thompson) + +Changes since the X.V11R4 / comp.sources.misc distribution of 22nov89: + + Added pgmramp, pgmedge, pgmtoppm, rgb3toppm, ppmtoxpm, pnmgamma, + ximtoppm, pgmtofs, picttoppm, ppmtopict, ppmquantall, anytopnm, + pi1toppm, ppmtopi1, sputoppm, spctoppm, pbmto10x, ppmtoicr, ppmmake, + xpmtoppm, ppmtopuzz, ppmtouil, ybmtopbm, pbmtoybm, lispmtopgm, + pgmtolispm, pbmtogem, pi3topbm, pbmtopi3, pbmtoepson, pbmtoplot, + pbmtozinc, pbmtext, pnmnoraw, pnmmargin, pnmfile, pnmindex, + ppmtorgb3, gouldtoppm, pgmbentley, pgmoil, ppmrelief, pnmtotiff, + ppmtopcx. + Merged some filters: + rasttopbm and rasttoppm into rasttopnm; + pbmtorast and ppmtorast into pnmtorast; + xwdtopbm and xwdtoppm into xwdtopnm; + pbmtoxwd and ppmtoxwd into pnmtoxwd. + Promoted some filters: + pcxtopbm to pcxtoppm; + ppmarith to pnmarith; + ppmconvol to pnmconvol; + ppmcscale to pnmdepth; + ppmrotate to pnmrotate; + ppmscale to pnmscale; + ppmshear to pnmshear; + ppmsmooth to pnmsmooth; + tifftopgm to tifftopnm - new version based on Sam Leffler's libtiff. + Bugfixes to pbmtoicon, ppmtops. + The Makefiles now have a "merge" option. + All flags are now case-insensitive. + Added $(MAKE) stuff to Makefile. + Changed pnmsmooth from a csh script to a sh script. + Made macro use in pbmtox10bm and pbmtoxbm more portable. + Moved compataliases to compat.csh, and added compat.ksh. + Made ppmtoilbm less Amiga-specific. + Added -headerskip and -rowskip flags to rawtopgm. + Enhanced rasttopnm to interpret 8-bit rasters with no colormap as grayscale. + Changed sscanf %g to %f - some systems can't handle %g on input. + Added -expand flag to pbmmask. + Speedup to pnmflip - don't buffer if possible. + Added color-name-to-value routine to ppm - uses X11's rgb.txt if present. + Updated Imakefile support to reflect X.V11R4. + Removed picttopbm. + Improved pnmcut argument syntax so that negative coords work like pnmpaste. + Added "magic" file, for use with the "file" program. + 40% speedup for pgmnorm from Robert Stockton (rgs@cs.cmu.edu). + Fixed long-standing bug involving colormaps on SPARCstations when + compiled with gcc -- had to do with passing structs by value. + Removed the -x flag from pnmtorast -- it's not really needed. + Fixed subtle bug in the pnm reading code that caused pnmcat to blow + it on images that differed greatly in width or height. + New version of giftoppm that handles the GIF89a standard, and doesn't + use fseek. + Fixed fitstopgm to handle three-axis images, such as the Hubble pix. + Xwdtopnm and pnmtoxwd finally handle byte-order properly. + Added -xysize flag to pnmscale. + Added conditional ANSI function prototypes to library routines. + Added -noantialias flag to pnmrotate and pnmshear. + Removed the TIPS file. No one ever sent in any new tips, so I just + moved the few I had into the relevant man pages. That's probably + where they belonged in the first place. + Added justification flags to pnmcat. + Added -map flag to ppmquant - user-specifiable colormap. Also, the + Floyd-Steinberg error diffusion finally works right. + Added -map flag to pgmtoppm. + Added DirectColor support to xwdtopnm and pnmtoxwd. + Speedup to pgmtolj from Arthur David Olson: avoid sending whitespace. + Fix to pbmtogo from Bo Thide': 2D compression now works. + +Patch 1 to the X.V11R4 / comp.sources.misc distribution of 22nov89: + + Fixed bug in pgmtops -rle. + +Changes since the alt.sources distribution of 13sep89: + + Small corrections to ppmtorast, pgmtops. + Moved pbm/tifftopbm to pgm/tifftopgm - it now handles grayscale TIFF files. + Fixed tifftopgm to handle non-native byte order. + Changes to tifftopgm to handle bogus AppleScan TIFF files, to have + better command syntax, and to use stdio. + Optimizations to xbmtopbm, pbmtoxbm, and pbmtox10bm, courtesy of + Juha Sarlin, to make them go about three times as fast. + Optimization to pgmtops and ppmtops to make them go three times as fast. + Optimization to pnmcrop. + Added PBMPLUS_BROKENPUTC defines in pbmplus.h to handle systems (such as + ULTRIX) which have broken putc() macros. + Rewrote ppmscale, pnmcat, and pgmhist to operate line-by-line, instead + of reading in the whole image. + Rewrote pnmflip to keep only one copy of the image in memory. + Added pgmtofits, courtesy of Wilson H. Bent, plus bugfixes to fitstopgm + and a patch to giftoppm to handle black&white GIF files. + Added picttopbm and rawtopgm. + Fixes to xwdtoppm and ppmtoxwd so they compile with SunOS cc as well as gcc. + Another small change to ppmtoxwd having to do with colormap size. + Changed macptopbm's -headersize flag to be -extraskip. + Changed tgatoppm to read color values as BGRA instead of ARGB; the Targa + documentation is apparently wrong about the order. + Some changes to the Makefiles, partially to work around bugs in gnumake. + Got g3topbm working, and added pbmtog3, courtesy of Paul Haeberli. + Added some pixrect work-alike code so that rasttopbm, pbmtorast, rasttoppm, + and ppmtorast can be used on non-Sun systems. This also provides a + final solution to the persistent byte- and bit-order problems on 386's. + Moved the SYSV-checking #ifdefs to *after* the include of pbm.h, which + defines SYSV. + Made all the #else's and #endif's ANSI-compliant. + Added manual pages for libpbm, libpgm, libppm, and libpnm, courtesy + of Tony Hansen. + Changed man page installation so that pages from different sections + can go in different directories. + Fixed Imakefiles. + +Changes since the expo.lcs.mit.edu FTP distribution of 06sep89: + + Added #ifdefs to pnm/libpnm3.c to allow the PBM-PNM-only configuration. + Small corrections to TIPS, pnm/Makefile, pnm/Imakefile, ppm/ppmrotate.1, + ppm/ppmshear.1, ppm/ppmtoilbm.c, pbm/xwdtopbm.c, ppm/xwdtoppm.c, + ppm/ppmtoxwd.c, ppm/ppmtoxwd.1, pbm/x11wd.h. + +Changes since the comp.sources.misc distribution of 31oct88: + + Added pbmreduce, pbmlife, pbmmask, and pbmupc. + Added gemtopbm, tifftopbm, pcxtopbm, pbmtogo, mgrtopbm, pbmtomgr, + cmuwmtopbm, pbmtocmuwm, g3topbm, and pbmtobg. + Minor bugfix to pbmtolj. + Slight restructuring of most of the programs to use vastly less memory. + Various other minor optimizations. + Fixed pbmtorast and rasttopbm to handle byte-swapped big-endian 386 boxes. + Slight changes to argument syntax of pbmcrop, pbmmake, pbmreduce. + Moved to the new PGM package: pbmtops (which now produces Conforming PS). + Moved to the new PPM package: giftopbm. + Moved to the new PNM package: pbmcrop pbmcut pbmenlarge pbminvert. + Consolidated into a single pnmflip tool: pbmfliplr pbmfliptb pbmtrnspos. + Consolidated into a single pnmcat tool: pbmcatlr pbmcattb. + Added compataliases script for upward compatability with changed tools. + Removed xxxtopbm. + Added a -headersize flag to macptopbm, to help get around annoying + problems in MacPaint file format. + Added the RAWBITS compilation-time option, to use a more compact and + much faster (but less portable) external format. + Removed the CBM format - use compress(1) and / or RAWBITS instead. + Pbmpaste (and the new pnmpaste) now accepts negative x and y coords, + which are interpreted relative to the right and bottom sides. + Changed all programs to accept a "-" file argument as meaning standard + input. + Removed pbmtox10wd, since it was never very useful (X10 doesn't have xwud). + Added Imakefiles, for X11 types to use. + +Changes since the X.V11R3 distribution of 31aug88: + + The cbm format has been revised to support run-length encoding. + Pbmtops now does run-length encoding. + +Major changes since the X.V11R2 distribution of 28mar88: + + The pbm format now has a "magic number". + New conversion filters: brushtopbm, giftopbm, pbmtolj, pbmtomacp, + pbmtoxwd, and pbmtox10wd. + Icontopbm converter has a better parser -- it knows to skip over + any extraneous comments at the beginning of the icon file. + Pbmtops generates a different PostScript wrapper program -- it should + handle huge bitmaps better. + Xwdtopbm now handles byte-swapping correctly. + Pbmmake takes a flag to specify the color of the new bitmap. + Pbmpaste now implements 'or', 'and', and 'xor' operations as well + as the default 'replace'. diff --git a/doc/INSTALL b/doc/INSTALL new file mode 100644 index 00000000..78cf1ebf --- /dev/null +++ b/doc/INSTALL @@ -0,0 +1,248 @@ +HOW TO INSTALL NETPBM +--------------------- + +For most typical platforms, you can just do + + configure + +followed by + + make + +To build all the programs. Then + + make package + +to gather all the installable parts into a specified directory, and +finally + + installnetpbm + +to install it into your system. + +If you're building Latest Netpbm (as opposed to Stable Netpbm), there +are probably known bugs. Some may even prevent Netpbm from building. +These are listed in the release notes for the release on Sourceforge. +Check it out. + +The 'configure' program is not GNU Autoconf -- it is a simple program +specific to Netpbm that prompts you for information about your system. +If your system is not typical enough, you'll have to do a little more +work, as described below under "custom installation." + +You need to use GNU Make even if nothing else on your system is GNU, +because the Netpbm make files exploit many advanced features of GNU +Make. Often, systems have both GNU Make and a native Make. In this +case, GNU Make is named 'gmake'. If you don't have it yet, see +www.gnu.org/software. GNU Make is free, easy to install, and works +just about anywhere. + +The only tricky part about installing is setting up the shared +libraries that are part of Netpbm. Simply putting the library files +in place may not be enough. If you get mysterious "file not found" +kinds of errors and are not an expert with shared libraries, see the +section "SHARED LIBRARIES" below. + +The --keep-going option to Make is handy, because it causes Make to +make anything it can, as opposed to quitting as soon as something goes +wrong. With so many parts having so many requirements, it's not +unusual for a few things to fail to build, but that doesn't affect +everything else. You can work on the failed parts and repeat the make +and it will attempt to build whatever it hasn't successfully built +yet. + + +AUTOMATING THE BUILD +-------------------- + +The build is already as automatic as Netpbm developers know how to make +it without sacrificing your ability to build it a wide variety of ways. +But if you're building for a specific range of applications, e.g. a +particular standard system configuration, then you may want to write +programs to automate the build further. + +PLEASE don't do this by writing a program that invokes Netpbm's Configure +program and tries to maintain a dialogue with Configure. This is more work +than you need to do and you will be disappointed with Configure's +unpredictability, especially from one release to the next. Configure is +specifically intended to talk to an intelligent human being. + +Rather, just write a program to generate the file Makefile.config. That's +all Configure does in the end anyway. Like Configure, your program can +simply copy Makefile.config.in and add overrides to the bottom. Or you +can just package up a complete Makefile.config and not run any program at +all at build time. Comments in Makefile.config.in explain the entire +contents. You can also run Configure interactively and use its output +as an example. + + + +INSTALLATION - WINDOWS +---------------------- + +For notes on building Netpbm on Windows using Cygwin, see the file +README.CYGWIN. With Cygwin, you can build Netpbm programs that use +Cygwin or Netpbm programs that use Mingw. + +For notes on building Netpbm on Windows using Djgpp, see the file +README.DJGPP. + +See also the general installation instructions above. + + + +INSTALLATION - MAKING ONLY THE PARTS YOU NEED +--------------------------------------------- + +If you don't need the whole package, but just want one tool in it that you +heard about, you can make just that one. For example, to make Pnmtojpeg, +just do + + configure + cd converter/other + make pnmtojpeg + +It will build Pnmtojpeg and any of its dependencies, but nothing else. +You have to install it manually. + +When you build just one program, you should request static libraries +in the configure step, because for just one program, the shared +libraries would be pure masochism. + + +CUSTOM BUILDING +--------------- + +This section explains how to customize the installation in the case +that your platform is, or your requirements are, not among the simple +cases that 'configure' understands. 'configure' is really just a +convenient way to build the Makefile.config file, and in the most +general case, you build that file manually. + +Makefile.config contains settings for various things that vary from +one system to the next, like file paths. Start with the distributed +file Makefile.config.in. Copy it as Makefile.config, then edit it. +Search for your platform name (Solaris, SunOS, NetBSD, Cygwin, BeOS, +and Tru64 are among those mentioned) to see recommended settings for +your platform. + +If your system is even too exotic to accomodate with settings in +Makefile.config, you may need to modify things in the main make files +or pm_config.h. + +If you figure out how to install on other platforms, contact the +Netpbm maintainer to have the 'configure' program or these +instructions improved for the next person. + + +CUSTOM INSTALLATION +------------------- + +If the Installnetpbm program doesn't install the way you want, it is +easy to install it manually using the package that 'make package' +generates. That package is just a directory full of files, and you +should be able to tell by inspection what to do with those files (copy +to /bin, etc). If not, there will be a README file in the package to +explain everything. + + +INSTALLATION - SHARED LIBRARIES +------------------------------- + +There are over 240 programs in the Netpbm package and they do a lot of +common things. In order to avoid the expense of copying the code for +those common things into every program, Netpbm places them in a shared +library: libnetpbm. When you invoke a Netpbm program, your system +notices that it needs this library and accesses it too. + +The tricky part of installing the shared (runtime) library is telling +your system where to find it in the event that you invoke a Netpbm +program. And that varies from one system to the next. + +On a GNU libc system (essentially, any Linux system), if you put the +Netpbm shared library in a conventional spot (say, /lib) and reboot +your system, chances are you will have no trouble running Netpbm +programs. But if you want to fine tune things, read up on ld-linux.so +(GNU libc's dynamic linker) and Ldconfig and consider the +/etc/ld.so.conf file and LD_LIBRARY_PATH environment variables. Use +'ldd' to see if you have a shared library issue. If it shows any +shared library as "not found", you've got library trouble. + +On a Solaris system, use 'crle' to set the default search path for +shared libraries (which is kept in /var/ld/ld.config). Make sure that +path includes the directory in which you installed the Netpbm shared +library. You can also use the LD_LIBRARY_PATH environment variable. + +Besides the Netpbm shared library, libnetpbm, several of the converter +programs, e.g. Jpegtopnm, use separately distributed libraries that +understand the graphics format involved. You need to make sure your +system knows how to find those libraries at run time too (or cause the +Netpbm build to statically bind the libraries into the Netpbm programs). + +Another thing you can do is forget about library search paths and just +build into each Netpbm executable the location of the Netpbm shared +library. (I'm talking about the classic -R linker option) You set +this up with variables in Makefile.config. If you use Configure to +build Makefile.config, then for some platforms where this method is +common, the Configure dialog asks you what directory, if any, you want +built into Netpbm executables. + +One final note: New Netpbm executables often can run OK with an old +Netpbm shared library. This means if you don't correctly install +the new library, you may run what you think is a new Netpbm program, +but in actuality be accessing the old Netpbm library, and you may not +even notice a problem right away. But eventually, you may find some +things not working the way they should. Again, 'ldd' will give you +peace of mind. + + +INSTALLATION WITHOUT SHARED LIBRARIES +------------------------------------- + +Since shared libraries can be such a pain, and in fact some systems +don't even have them, you can build Netpbm with a static library +instead. Just answer "static" to the static/shared question when you +run 'configure' (if you don't use 'configure', set NETPBMLIBTYPE as +directed in Makefile.config.in). + +If you do this, you probably want to do a merge build instead of the +normal build (there's a question for that in the Configure program). +See below. + + +MERGE BUILD +----------- + +There are two ways to build Netpbm: the standard or nonmerge build, +and the merge build. There are different make file targets for them +and which one is default is controlled by the DEFAULT_TARGET make +variable in Makefile.config, and its value is one of the choices you +make via the Configure dialog. + +The standard build is the conventional one. The merge build is a way +to reduce disk space and other resource usage in some configurations. + +In the standard build, hundreds of separate programs get built: ppmtogif, +pamcomp, etc. + +But the merge build creates a single large program called 'netpbm' +instead. That single 'netpbm' program contains the functions of all +the individual programs that the standard build builds, and selects +one of them to execute based on what command name you use to invoke +'netpbm'. + +For example, if you install 'netpbm' with a symbolic link to it named +'ppmtogif' and you invoke the program by typing 'ppmtogif' at a shell +prompt, 'netpbm' executes Ppmtogif. + +Hence, 'make package' creates a package containing the one 'netpbm' +program and lots of symbolic links to it. With all these links +properly installed, a typical user cannot tell the merge build from the +standard build. + + +DOCUMENTATION +------------- + +Documentation is not packaged with the program source code. See the +file doc/USERDOC for information on installing documentation. diff --git a/doc/Netpbm.programming b/doc/Netpbm.programming new file mode 100644 index 00000000..14de8b08 --- /dev/null +++ b/doc/Netpbm.programming @@ -0,0 +1,358 @@ +This file is an attempt to give some basic guidelines for those who +wish to write new Netpbm programs. The guidelines ensure: + + A) Your program functions consistently with the rest of the package. + + B) Your program works in myriad environments on which you can't test it. + + C) You don't miss an important detail of the Netpbm formats. + + D) Your program is immune to small changes in the Netpbm formats. + +The easiest way to write your own Netpbm program is to take an +existing one, similar to the one you want to write, and to modify +it. This saves a lot of time, and ensures conformity with these rules. +But pick a recent one (check the file modification date and the +doc/HISTORY file), because many things you see in old programs are +grandfathered in. Pamtopnm is good example of a thoroughly modern +Netpbm program. Pamcut is another good one. + + +COLLECTION PARAMETERS +--------------------- + +The philosophy that guides what goes into Netpbm and what doesn't is +one of maximum distribution of function. Contributions to Netpbm are +refused very rarely, and usually because there is already some better +way to do what the contribution attempts to do, so that the +contribution would just make the package more confusing and thus +harder to use. The second most common reason for declining a +contribution is that it falls well outside Netpbm's scope. That too +would make the package more confusing and thus harder to use. + +"Nobody will use that" is not a reason for leaving something out of +Netpbm. + +"That's different from how other Netpbm programs work" is similarly +not an excuse for refusing distribution of a feature. (But it's a +good reason to accept a change to make a feature consistent!) + +The standard for adding something to Netpbm isn't that it be perfect, +or even a net improvement. The standard is that it not make Netpbm +worse. Poor quality additions are made all the time, because a +program that doesn't work well is usually no worse than no program at +all. + + +DEVELOPMENT PROCESS +------------------- + +Just email your code to the Netpbm maintainer. Base it on the most recent +Latest Netpbm release if possible. It's a good idea to ask the maintainer +before starting a big change to a file to make sure it doesn't conflict +with some other work that has been done since the last release. + +The preferred form for changes to existing files is a unified diff patch -- +the conventional Unix means of communicating code changes. + +You should update or create documentation too. The source files for +the documentation are the HTML files at +http://netpbm.sourceforge.net.doc/ . But if you don't, the Netpbm +maintainer will do the update before releasing your code. + +There are some automated tests in the package - shell scripts in files +named such as "pbmtog3.test". You can use those to verify your +changes. You should also add to these tests and create new ones. But +most developers don't. + + +CODING GUIDELINES +----------------- + +The Netpbm maintainer accepts programs that do not meet these guidelines, +so don't feel you need to hold back a contribution because you wrote it +before you read these. + +* See the Netpbm library documentation to see what library functions + you should be using and how. You can find it at: + + http://netpbm.sourceforge.net/doc/libnetpbm.html + +* See the specifications of the Netpbm formats at: + + http://netpbm.sourceforge.net/doc/pbm.html + http://netpbm.sourceforge.net/doc/pgm.html + http://netpbm.sourceforge.net/doc/ppm.html + http://netpbm.sourceforge.net/doc/pam.html + + but don't depend very much on these; use the library functions + instead to read and write the image files. + +* Your new program must belong to one of the four Netpbm classes, + which are loosely based on the Netpbm formats. They are defined as + follows: + + pbm: These programs take PBM (bitmap - pixels are black or white) + files as input or output or both. They never have PGM or PPM + primary input or output. They use the libpbm Netpbm + library. They have "pbm" in their names. + + pgm: These programs take PBM or PGM (grayscale) files as input, or + produce PGM files as output, or both. They treat PBM input + as if it were the equivalent PGM input. They never produce PBM + primary output and never have PPM primary input or output. + They use the libpbm and libpgm Netpbm libraries. They have + "pgm" in their names. + + ppm: These programs take PBM or PGM or PPM (color) files as input, + or produce PPM files as output, or both. They treat PBM and + PGM input as if it were the equivalent PPM input. They never + produce PBM or PGM primary output. They use the libpbm, + libpgm, and libppm Netpbm libraries. They have "ppm" in their + names. + + pnm: These are the most general programs. They handle all four + Netpbm formats (PBM, PGM, PPM, and PAM). They use all Netpbm + formats as input or output or both. They recognize the + difference between PBM, PGM, and PPM input, so a PBM input + might produce a different result than the equivalent PGM input. + These programs use the libpbm, libpgm, libppm, and libpnm + Netpbm libraries. They have "pnm" or "pam" in their names. + + Decide which one of these classes your program belongs to. Your choice + determines the proper naming of the program and which set of library + subroutines you should use. + +* If your program involves transparency (alpha masks), you have two + alternatives. The older method is to use a separate PGM file for the + alpha mask, in the style of Pngtopnm/Pnmtopng and Giftopnm/Pnmtogif, + and use command syntax like those programs. See the PGM format spec + for details. + + A newer method involves a PAM image with an alpha plane (tuple type + RGB_ALPHA, etc.). This is preferred because it's easier for users + to pipe stuff around. Pamtotga is an example of this. + +* Declare all your symbols except 'main' as static so that they won't + cause problems to other programs when you do a "merge build" of + Netpbm. + +* Declare main() with return type 'int', not 'void'. Some systems won't + compile void main(). + +* Always start the code in main() with a call to p?m_init(). + +* Use shhopt for option processing. i.e. call optParseOptions3(). + This is really easy if you just copy the parseCommandLine() function + and struct cmdlineInfo declaration from pamcut.c and adapt it to + your program. + + When you do this, you get a command line syntax consistent with all the + other Netpbm programs, you save coding time and debugging time, and it + is trivial to add options later on. + + Do not use shhopt's short option alternative unless you need to be + compatible with another program that has short options. Short + options are traditional one-character Unix options, which can be + stacked up like "foo -cderx myfile", and they are far too unfriendly + to be accepted by the Netpbm philosophy. Note that long options in + shhopt can always be abbreviated to the shortest unique prefix, even + one character. + + In messages and examples in documentation, always refer to an option + by its full name, not the abbreviation you usually use. E.g. if you have + a "-width" option which can be abbreviated "-w", don't use -w in + documentation. -width is far clearer. + +* Use pm_error() and pm_message() for error messages and other messages. + Note that the universal -quiet option (processed by p?m_init()) causes + messages issued via pm_message() to be suppressed. And that's what + Netpbm's architecture requires. + +* The argument to pm_error() and pm_message() is a string of text, not + a formatted message. Don't put newlines or other formatting characters + in it. These subroutines are designed to be flexible in how they issue + the messages. + +* Use MALLOCARRAY() to allocate space for an array and MALLOCVAR to allocate + space for a non-array variable. In fact, you usually want to save some + programming tedium and use the NOFAIL versions of these (they never fail + because they abort the program if memory is not available). These avoid + array bounds violations. + +* Use pm_tmpfile() to make a temporary file. This avoids races that can + be used to compromise security. + +* Properly use maxvals. As explained in the format specifications, every + sample value in an image must be interpreted relative to the image's + maxval. For example, a pixel with value 24 in an image with maxval 24 + is the same brightness as a pixel with value 255 in an image with a + maxval of 255. + + 255 is a popular maxval (use the PPM_MAXMAXVAL etc. macros) because it + makes samples fit in a single byte and at one time was the maximum + possible maxval in the format. + + Note that the Pnmdepth program converts an image from one maxval to + another. + +* Don't include extra function. If you can already do something by + piping the input or output of your program through another Netpbm + program, don't make an option on your program to do it. That's the + Netpbm philosophy -- simple building blocks. + + Similarly, if your program does two things which would be useful + separately, write two programs and advise users to pipe them + together. Or add a third program that simply calls the first two. + +* Your program should, if appropriate, allow the user to use Standard + Input and Output for images. This is because Netpbm users commonly + use pipes. + +* Don't forget to write a proper html documentation page. Get an + example to use as a template from + <http://netpbm.sourceforge.net/doc/directory.html>. + +* No Netpbm source code may contain tab characters. If you + generate such a file, the Netpbm maintainer will convert it to spaces + and possibly change all your indenting at the same time. Tabs are not + appropriate for code that multiple people must edit because they don't + necessarily look the same in every editing environment, and in most + editing environments, you can't even tell which spaces are actually in + the file and which came from the editor, expanding tabs. Spaces, on + the other hand, look the same for everyone. Modern editors let you + compose code just as easily with spaces as with tabs. + + + + +DISCONTINUED CODING GUIDELINES +------------------------------ + +Here are some things you will see in old Netpbm programs, but they are +obsolete and you shouldn't propagate them into a new program: + +* Tolerating non-standard C libraries. You may assume all users have + ANSI and POSIX compliant C libraries. E.g. use strrchr() and forget + about rindex(). + +* pm_keymatch() for option processing. Use shhopt instead, as described + above. + +* optParseOptions() and optParseOptions2(). These are obsoleted + by optParseOptions3(), which is easier to use and more powerful. + +* K&R C function declarations. Always use ANSI function declarations + exclusively (e.g. use + + void foo(int arg1){} + + instead of + + void foo(arg1) + int arg1; + {} + +* for (col=0, xP = row; col < cols; col++, xP++) + foo(*xP); + + This was done in the days before optimizing compilers because it ran faster + than the more readable: + + for (col=0; col < cols; col++) + foo(row[col]); + + Now, just use the latter. + + +CODING STYLE +------------ + +We do not generally mandate any basic coding style in these +guidelines. Where you put your braces is a matter of personal style +and other people working with your code will just have to live with +it. However, people working with your code might just recode it into +another style if it makes it easier for them to read the code and +have confidence in their changes. + +But if you have no preference, the following is what the Netpbm +maintainer currently prefers. Essentially, it is clean, elegant +computer science-type code rather than brute force engineering-type +code. Modular and structured above all. + +* No gotos. This includes all variations of goto: break, continue, leave, + mid-function return. An exception: aborting the entire program in the + middle of something is allowed. + +* No functions with side effects. This is a tough one, since + functions with side effects is highly traditional C. In fact, the + creators of C didn't even have a concept of a subroutine. However, + the average human brain, especially one trained in math, cannot + easily follow code where a function both computes a value and does + other stuff. + + For the purpose of this discussion, we say that a C function whose return + type is void is not a "function," but a "subroutine." + + So a function should never change anything in the program. All it does + is compute a value. + + Where you have to call an external function that has side effects (virtually + anything in the standard C library, for example), put it in a simple + assignment function that captures its return value and otherwise consider + it a subroutine: + + rc = fopen(...) + if (rc ...) + +* No reuse of variables. Most variables should be set at most once. + Don't say "A is 5" and then later on, "no, A is 6." A reader + should be able to take that first "A is 5" as a statement of fact + and not hunt for all the places it might be contradicted. A + variable that represents the state of execution of an algorithm is an + obvious exception. + + Use "const" everywhere you possibly can. + + Especially never modify the argument of a function. All function arguments + should be "const". + + Don't use initializers except for constants. If you're going to set + a variable twice, do it out in the open; don't hide one in the declaration + of the variable. + +* Avoid global variables. Sometimes, a value is truly global and + passing it as a parameter just muddies the code. But most of the + time, any external value to which a function refers should be one of + its arguments. + + Declare a variable in the most local scope possible. + +* Keep subroutines small. Generally under 50 lines. But if the + routine is a long sequence of simple, similar things, it's OK for it + run on ad infinitem. + +* Use the type "bool" for boolean variables. "bool" is defined in Netpbm + headers. Use TRUE and FALSE as its values. + +* Do not say "if (a)" when you mean "if (a != 0)". Use "if (a)" only if + a is a boolean variable. Or where it's defined so that a zero value + means ("doesn't exist"). + +* Do multiword variable names like this: "multiWordName". Underscores waste + valuable screen real estate. + +* If a variable's value is the address of something (a pointer to something), + it's name should reflect that, as opposed to lying and saying the value is + the thing pointed to. A "P" on the end is the conventional way to say + "address of." E.g. if a variable's value is the address of a color value, + name it "colorP", not "color". + +* Put "const" as close as possible to the thing that is constant. + "int const width", not "const int width". When pointers to + constants are involved, it makes it much easier to read. + +* Free something in the same subroutine that allocates it. Have exactly + one free per allocate (this comes naturally if you eliminate gotos). + + diff --git a/doc/README.CYGWIN b/doc/README.CYGWIN new file mode 100644 index 00000000..6c11ff35 --- /dev/null +++ b/doc/README.CYGWIN @@ -0,0 +1,79 @@ +Cygwin is a software package that sets up a Unix-like platform on a +Windows (win32) system. Here are some specific things you need in +that environment to build and use Netpbm. All these programs and +libraries are optional parts of the cygwin package. + + Programs: + 1) gcc suite + 2) binutils + 3) bash + 4) dlltool + 5) flex & byacc + 6) patch + 7) install + 8) rm, ln, cp and other file utilities + Libraries: + 1) libtiff (cygtiff3.dll) + 2) libpng (cygpng2.dll) + 3) libjpeg6b (cygjpeg6b.dll) + 4) libz (cygz.dll) + +Find Cygwin at http://sources.redhat.com/cygwin/ . + +One problem special to Windows is the common existence of directories +with space in their names (e.g. Windows 2000's "Documents and +Settings" directory. (Such filenames are possible on non-Windows +systems, but are highly unconventional). Don't try to build Netpbm in +such a directory or with files in such a directory. It ought to work, +but it just doesn't. And the error messages are far from helpful, +since those spaces completely change the nature of the commands that +include them. + +One way to deal with this is to use the Cygwin "mount" facility to map +the Windows path "c:/Documents and Settings/aaa/bbb/cccc/Distributions" to +something short and friendly, such as /Distributions. + + +MINGW +------ + +You can use Cygwin on Windows to build Netpbm to run on Windows, but +have the Netpbm programs use Mingw code instead of Cygwin code. + +Two reasons to do this: + + - We don't appear to have a way to statically link Cygwin library + routines into Netpbm, so you have to have a Cygwin library (DLL) + installed on a system as well as Netpbm to run Netpbm. + + - If you link Netpbm with a Cygwin library (some believe even if the + program links itself to a Cygwin library at run time), you cannot + distribute the resulting Netpbm, or any extension of your own, + unless you distribute it under GPL. That's because Cygwin is + publicly distributed under GPL, so you probably got your + permission to distribute Cygwin as part of Netpbm from GPL. A + condition of that permission was that you distribute everything you + wrap around Cygwin under GPL as well. + +Mingw is a small POSIX emulation library for Windows. See +<http://mingw.org>. + +Mingw comes with tools you can use to build Netpbm with the Mingw +library, but you can just use the Cygwin tools if you prefer. +<http://www.delorie.com/howto/cygwin/mno-cygwin-howto.html> tells how. +There isn't much to it -- it's just a matter of telling the compiler to +search for include files and link libraries in a different place, +which is basically just a -mno-cygwin option and -I and -L options. + +You can easily add the compiler options you need at the bottom of +Makefile.config after you create it with the automatic configurator +('configure'). + +Mingw does not have the Unix process management facilities (fork/wait, +etc.), so Netpbm will build without some of its function if you use +Mingw. Areas of Netpbm that require those facilities are so arcane you +probably will not miss them. + + + + diff --git a/doc/README.DJGPP b/doc/README.DJGPP new file mode 100644 index 00000000..773a22e7 --- /dev/null +++ b/doc/README.DJGPP @@ -0,0 +1,65 @@ +Warning: The Netpbm distribution uses long filenames, so you can only +build the package in a W9x environment, with LFN support. + +To build Netpbm with DJGPP v2.0x you need: + + - djgpp: gcc, make, and binutils + - bash + - fileutils + - sed + - groff (to convert man pages to cat format) + - man and less (to read the converted man pages) + +You can fetch all packages on Simtelnet in the DJGPP tree: +ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/ + +You need too four external libraries to add tiff, png and jpeg support +to Netpbm (you can build without them, modifying Makefile.config.djgpp +but I think it makes Netpbm useless). + + - Libtiff (www.libtiff.org) + - Libjpeg (www.ijg.org) + - Libpng (www.libpng.org/pub/png/libpng.html) + - Libz (www.info-zip.org/pub/infozip) + +All libraries come with guidelines to compile ok with DJGPP. At this time +you can get binary packages of libjpeg, libpng and libz on Simtelnet. + + +To build the Netpbm programs do the following: + + Copy Makefile.config.djgpp to Makefile.config + + Run "touch Makefile.config" to prevent Make from updating the file. + + Read the Makefile.config and make any changes you want + + Do "make merge" + + Do "make install-merge" to install binaries and man pages. + + Makefile.config.djgpp is set up to install these in TMPDIR/netpbm + (normally /dgjpp/tmp/netpbm). If everything worked OK, you can + move the contents of this directory to your DJGPP production tree. + + +WARNING + +There are some problems that have to be addressed if using the +binaries in pure DOS OS, without long file names, but it works OK +using "netpbm <utility>" (<utility> is the real Netpbm program to be +used, for example: + + netpbm ppmtobmp <testimg.ppm >testimg.bmp + +instead of the usual + + ppmtobmp <testimg.ppm >testimg.bmp). + + + +This procedure and the code to adapt Netpbm to DJGPP was contributed by +M.Alvarez <malfer@teleline.es> in August 2001. You can find his +current information on using Netpbm with DJGPP and prebuilt binaries +at <http://www.terra.es/personal/malfer/netpbm/netpbm.htm>. + diff --git a/doc/USERDOC b/doc/USERDOC new file mode 100644 index 00000000..3cd2b383 --- /dev/null +++ b/doc/USERDOC @@ -0,0 +1,155 @@ +Since May 2002, Netpbm does not have traditional man pages for +documentation. BUT YOU CAN CONFIGURE NETPBM, IF YOU WANT, SO YOU GET +ESSENTIALLY THE SAME 'MAN' FUNCTION AS WITH A TRADITIONAL UNIX PACKAGE. + +Netpbm's maintainer believes man pages are obsolete and too limiting, +and doesn't have time to maintain the documentation in multiple +formats. So instead of classic nroff man page format, the Netpbm +documentation is available as HTML, with one HTML file per program, +plus some others. The current user manual is accessible on the World +Wide Web at <http://netpbm.sourceforge.net/doc>, and if it's practical +for you, you should access it there instead of making a local copy. +This manual is always up to date. It is not maintained on a release +schedule like the source code is, but rather updated continuously. +The user manual describes past Netpbm function as well as the present, +so you can use the current manual with old Netpbm code. + + +INSTALLING A LOCAL COPY OF DOCUMENTATION +---------------------------------------- + +If accessing the manual on the World Wide Web is not convenient for +you (for example, if you want to access it from a computer that is not +always connected to the Internet), just make a local copy of the web +site files using GNU Wget: + + wget --recursive --relative http://netpbm.sourceforge.net/doc/ + +The above copies all the HTML files from the web site into your +current directory, under a subdirectory 'netpbm.sourceforge.net/doc' +that it creates. You can browse those files directly with a web +browser. If you don't have Wget, get it from +ftp://ftp.gnu.org/gnu/wget. It is very useful. + + +GETTING COMMAND HELP WITH A "MAN" COMMAND +----------------------------------------- + +You can get the same quick access to program documentation with this +HTML setup as with traditional man pages, using the Manweb program. +This works whether you use the www copy or a local copy of the HTML +files. Manweb is distributed with Netpbm. With Manweb and Netpbm +installed and configured appropriately (see below), you can type + + man netpbm + +and get the top level page of the Netpbm user manual (with hyperlinks to +all the other pages), or + + man netpbm ppmtogif + +or + + man ppmtogif + +to go straight to the Ppmtogif documentation. + +Installnetpbm normally installs Manweb and the netpbm.url file that +Manweb needs to find the Netpbm documentation. Through the Configure +dialog, or editing Makefile.config, you determine whether Manweb +accesses the master web copy or a local copy you installed. + +Installnetpbm installs the program as 'manweb'. If you want to invoke +it as 'man', you'll have to set that up yourself. Perhaps with a +symbolic link from 'man' to 'manweb'. Note that 'manweb' is mostly +backward compatible with 'man' so that this is a reasonable thing to +do. Manweb can find documentation on the web, in HTML files, in GNU +info files, and in traditional man pages. + + +In a standard installation of Netpbm, Installnetpbm also creates a +traditional man page for every Netpbm program it installs, but the man +page just tells you to go to the HTML file. This way, even if the "man" +program isn't capable of reading the HTML documentation and even if the +user doesn't know specifically where Netpbm documentation lives, he isn't +stranded without information. + + +VIEWING NETPBM DOC WITH TRADITIONAL MAN PROGRAM +----------------------------------------------- + +Some people want to be able to access the Netpbm documentation with an +existing man program that doesn't know HTML. You can install the +documentation that way, with some loss of quality. There are two +ways: + + 1) convert the HTML to troff with the 'makeman' program in the + 'buildtools' directory of the Netpbm source tree. This is a + Python program. + + 2) convert the HTML to formatted plain text (suitable as man "cat" + pages) with the 'makecat' program in the 'buildtools' directory + of the Netpbm source tree. This program just does a + 'lynx -dump'. + +The "loss of quality" mentioned above is because: + + - The classic Unix manual format isn't as expressive as the + worldwide web format; you can't convert down losslessly. + + - There is less maintenance effort put into maintaining the + secondary non-web format. It requires certain idioms to be + followed in the HTML source and lists of man pages to be + separately maintained. This maintenance is essentially done on a + fault basis -- when someone notices the Unix man pages aren't + right, he fixes something. + + Bear in mind that the person who writes most of the Netpbm + documentation updates never sees the troff versions; he uses + Manweb, which renders directly from the HTML. + +Also, these methods require manual effort, and technical +understanding, on your part to set up. Setting it up is too complex +for an automated process to do it for you with any significant +integrity. The examples are guidelines and you shouldn't expect them +to work literally in your situtation. + +Here is an example of making troff pages: + + mkdir netpbmdoc + cd netpbmdoc + wget --recursive --relative http://netpbm.sourceforge.net/doc/ + cd netpbm.sourceforge.net/doc + make MAKEMAN=/usr/src/netpbm/buildtools/makeman \ + -f /usr/src/netpbm/buildtools/Makefile.manpage manpages + make -f /usr/src/netpbm/buildtools/Makefile.manpage manpages + make -f /usr/src/netpbm/buildtools/Makefile.manpage installman + cd ../../.. + rm -r netpbmdoc + + man ppmtogif + +Here is an example of making "cat" pages: + + mkdir netpbmdoc + cd netpbmdoc + wget --recursive --relative http://netpbm.sourceforge.net/doc/ + cd netpbm.sourceforge.net/doc + /usr/src/netpbm/buildtools/makecat *.html + cp *.1 /usr/man/cat1/ + cd ../../.. + rm -r netpbmdoc + + man ppmtogif + + +DOCBOOK +------- + +You can turn the Netpbm user manual into Docbook XML pages using +Doclifter. Because Doclifter works on troff pages, you have to +convert the documentation down to troff first, which means the Docbook +pages are of lower quality than the main HTML documentation. + +To create Docbook XML, follow the example above for creating troff +pages, and use 'make xmlpages' instead of 'make manpages'. diff --git a/doc/copyright_summary b/doc/copyright_summary new file mode 100644 index 00000000..9ab3a784 --- /dev/null +++ b/doc/copyright_summary @@ -0,0 +1,382 @@ +Here is an analysys of Netpbm copyrights done by Steve McIntyre +<stevem@chiark.greenend.org.uk> finishing on October 7, 2001. + +It is based on Netpbm 9.20, so it doesn't cover material added since +then. + + + +Copyright: +========== + +Netpbm has a very complicated licensing setup, as it is a collection +of hundreds of small utility programs, each with an individual +copyright/license. From inspection of the source and documentation in +the package, I believe the following programs are DFSG-free. They have +a variety of licenses, which I have summarised below for convenience. + +A: The most common netpbm license - clearly the original from Jef Poskanzer: + + Permission to use, copy, modify, and distribute this software and its + documentation for any purpose and without fee is hereby granted, provided + that the above copyright notice appear in all copies and that both that + copyright notice and this permission notice appear in supporting + documentation. This software is provided "as is" without express or + implied warranty. + +The core libp[gbnp]m library code all also seems to follow this license. + +B: The standard BSD license. See /usr/share/common-licenses/BSD + +C: GNU General Public License v2. See /usr/share/common-licenses/GPL. + +D: The Independent JPEG Group license: + + Permission is hereby granted to use, copy, modify, and distribute + this software (or portions thereof) for any purpose, without fee, + subject to these conditions: (1) If any part of the source code + for this software is distributed, then this README file must be + included, with this copyright and no-warranty notice unaltered; + and any additions, deletions, or changes to the original files + must be clearly indicated in accompanying documentation. (2) If + only executable code is distributed, then the accompanying + documentation must state that "this software is based in part on + the work of the Independent JPEG Group". (3) Permission for use + of this software is granted only if the user accepts full + responsibility for any undesirable consequences; the authors + accept NO LIABILITY for damages of any kind. + + These conditions apply to any software derived from or based on + the IJG code, not just to the unmodified library. If you use our + work, you ought to acknowledge us. + + Permission is NOT granted for the use of any IJG author's name or + company name in advertising or publicity relating to this software + or products derived from it. This software may be referred to + only as "the Independent JPEG Group's software". + + We specifically permit and encourage the use of this software as + the basis of commercial products, provided that all warranty or + liability claims are assumed by the product vendor. + +E: This software is copyrighted as noted below. It may be freely copied, + modified, and redistributed, provided that the copyright notice is + preserved on all copies. + + There is no warranty or other guarantee of fitness for this software, + it is provided solely "as is". Bug reports or fixes may be sent + to the author, who may or may not act on them as he desires. + + You may not include this software in a program or other software product + without supplying the source, or without informing the end-user that the + source is available for no extra charge. + + If you modify this software, you should include a notice giving the + name of the person performing the modification, the date of modification, + and the reason for such modification. + +F: The program and documentation may be freely distributed by anyone in source + or binary format. Please clearly note any changes. + +G: Public domain: + + This software is in the public domain. Permission to use, copy, + modify, and distribute this software and its documentation for any + purpose and without fee is hereby granted, without any conditions or + restrictions. + +H: Public domain, slightly different wording: + + Permission to use, copy, modify, and distribute this software and + its documentation for any purpose and without fee is hereby + granted, without any conditions or restrictions. This software is + provided "as is" without express or implied warranty. + +I: A variation on the BSD license + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby + granted without fee, provided that the above copyright + notice appear in all copies and that both that copyright + notice and this permission notice appear in supporting documentation, + and that the name of the Smithsonian Astrophysical + Observatory not be used in advertising or publicity + pertaining to distribution of the software without specific, + written prior permission. The Smithsonian Astrophysical + Observatory makes no representations about the suitability + of this software for any purpose. It is provided "as is" + without express or implied warranty. + THE SMITHSONIAN ASTROPHYSICAL OBSERVATORY DISCLAIMS ALL + WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + EVENT SHALL THE SMITHSONIAN ASTROPHYSICAL OBSERVATORY BE + LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES + OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA + OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH + THE USE OR PERFORMANCE OF THIS SOFTWARE. + +411toppm: (B) 2001 Steve Allen <sla@alumni.caltech.edu> +anytopnm: (A) 1991 Jef Poskanzer +asciitopgm: (A) 1989 Wilson H. Bent, Jr +atktopbm: (A) 1991 Bill Janssen +bioradtopgm: (A) 1993 Oliver Trepte <oliver@fysik4.kth.se> +bmptoppm: (A) 1992 David W. Sanderson +brushtopbm: (A) 1988 Jef Poskanzer +cmuwmtopbm: (A) 1989 Jef Poskanzer +eyuvtoppm: (B) 1995 The Regents of the University of California +fiascotopnm: (C) 1994-2000 Ullrich Hafner <hafner@bigfoot.de> +fitstopnm: (A) 1989 Jef Poskanzer +fstopgm: (A) 1989 Jef Poskanzer +g3topbm: (A) 1989 Paul Haeberli <paul@manray.sgi.com> +gemtopbm: (A) 1988 Diomidis D. Spinellis +gemtopnm: (A) 1988 Diomidis D. Spinellis +giftopnm: (A) 1990-1993 David Koblas <koblas@netcom.com> +gouldtoppm: (A) 1990 Stephen P. Lesniewski +hipstopgm: (A) 1989 Jef Poskanzer +icontopbm: (A) 1988 Jef Poskanzer +ilbmtoppm: (A) 1989 Jef Poskanzer +imgtoppm: (A) 1989 Jef Poskanzer +jbigtopnm: (C) 2000 Markus Kuhn <mkuhn@acm.org> +jpegtopnm: (D) 1991-2000 Thomas G. Lane, Bryan Henderson +leaftoppm: (A) 1994 Bill O'Donnell +lispmtopgm: (A) 1988 Jef Poskanzer, Jamie Zawinski +macptopbm: (A) 1988 Jef Poskanzer +mdatopbm: (C) 1999 John Elliott <jce@seasip.demon.co.uk> +mgrtopbm: (A) 1989 Jef Poskanzer +mtvtoppm: (A) 1989 Jef Poskanzer +neotoppm: (D) 2001 Teemu Hukkanen <tjhukkan@iki.fi> +palmtopnm: (A) 1995-2000 Ian Goldberg, Bill Janssen +pamcut: (A) 1989 Jef Poskanzer +pamfile: (A) 1991 Jef Poskanzer +pamoil: (A) 1990 Wilson Bent <whb@hoh-2.att.com> +pbmclean: (A) 1989-1990 Jef Poskanzer, Angus Duggan +pbmlife: (A) 1988-1991 Jef Poskanzer +pbmmake: (A) 1988 Jef Poskanzer +pbmmask: (A) 1989-1991 Jef Poskanzer +pbmpage: (C) 1998 Tim Norman +pbmpscale: (A) 1989-1990 Jef Poskanzer, Angus Duggan +pbmreduce: (A) 1989 Jef Poskanzer +pbmtext: (A) 1991 Jef Poskanzer +pbmto10x: (A) 1990-1994 Ken Yap +pbmtoascii: (A) 1988-1992 Jef Poskanzer +pbmtoatk: (A) 1991 Bill Janssen +pbmtobbnbg: (A) 1989 Mike Parker +pbmtocmuwm: (A) 1989 Jef Poskanzer +pbmtoepsi: (A) 1988 Jef Poskanzer +pbmtoepson: (A) 1990 Jef Poskanzer, John Tiller <tiller@galois.msfc.nasa.gov> +pbmtog3: (A) 1989 Paul Haeberli <paul@manray.sgi.com> +pbmtogem: (A) 1988 Jef Poskanzer, David Beckemeyer +pbmtogo: (A) 1988-1989 Jef Poskanzer, Michael Haberler, Bo Thide' +pbmtoicon: (A) 1988 Jef Poskanzer +pbmtolj: (A) 1988 Jef Poskanzer, Michael Haberler +pbmtomacp: (A) 1988 Douwe vand der Schaaf +pbmtomda: (C) 1999 John Elliott <jce@seasip.demon.co.uk> +pbmtomgr: (A) 1989 Jef Poskanzer +pbmtonokia: (A) 2001 OMS Open Media System GmbH, Tim R<FC>hsen <tim.ruehsen@openmediasystem.de> +pbmtopgm: (A) 1989-1990 Jef Poskanzer, Angus Duggan +pbmtopi3: (A) 1988 David Beckemeyer and Jef Poskanzer +pbmtoplot: (A) 1990 Arthur David Olson +pbmtoppa: (C) 1998 Tim Norman +pbmtopsg3: (C) 2001 Kristof Koehler <kristof@fachschaft.physik.uni-karlsruhe.de> +pbmtoptx: (A) 1988 Jef Poskanzer +pbmtowbmp: (A) 1999 Terje Sannum <terje@looplab.com> +pbmtox10bm: (A) 1988 Jef Poskanzer +pbmtoxbm: (A) 1988 Jef Poskanzer +pbmtoybm: (A) 1991 Jamie Zawinski and Jef Poskanzer +pbmtozinc: (A) 1988 James Darrell McCauley <jdm5548@diamond.tamu.edu>, Jef Poskanzer +pbmupc: (A) 1988 Jef Poskanzer +pcxtoppm: (A) 1990 Michael Davidson +pgmbentley: (A) 1990 Wilson Bent <whb@hoh-2.att.com> +pgmcrater: (H) 1989 John Walker <kelvin@autodesk.com> +pgmedge: (A) 1989 Jef Poskanzer +pgmenhance: (A) 1989-1991 Jef Poskanzer +pgmhist: (A) 1989 Jef Poskanzer +pgmkernel: (A) 1992 Alberto Accomazzi, Smithsonian Astrophysical Observatory +pgmnoise: (A) 1993 Frank Neumann +pgmnorm: (A) 1989-1991 Jef Poskanzer +pgmramp: (A) 1989 Jef Poskanzer +pgmslice: (C) 2000 Jos Dingjan <jos@tuatha.org> +pgmtexture: (A) 1991 Texas Agricultural Experiment Station, James Darrell McCauley +pgmtofs: (A) 1991 Jef Poskanzer +pgmtolispm: (A) 1991 Jamie Zawinski and Jef Poskanzer +pgmtopbm: (A) 1989 Jef Poskanzer +pgmtoppm: (A) 1991 Jef Poskanzer +pi1toppm: (A) 1991 Steve Belczyk <seb3@gte.com> and Jef Poskanzer +pi3topbm: (A) 1988 David Beckemeyer and Diomidis D. Spinellis +picttoppm: (A) 1989-1993 George Phillips <phillips@cs.ubc.ca> +pjtoppm: (A) 1990 Christos Zoulas <christos@ee.cornell.edu> +pngtopnm: (A) 1995-1998 Alexander Lehmann <alex@hal.rhein-main.de>, Willem van Schaik <willem@schaik.com> +pnmalias: (A) 1992 Alberto Accomazzi, Smithsonian Astrophysical Observatory +pnmarith: (A) 1989-1991 Jef Poskanzer +pnmcat: (A) 1989-1991 Jef Poskanzer +pnmcomp: (A) 1992 David Koblas +pnmconvol: (A) 1989-1995 Jef Poskanzer, Mike Burns <burns@chem.psu.edu> +pnmcrop: (A) 1988 Jef Poskanzer +pnmcut: (A) 1989 Jef Poskanzer +pnmdepth: (A) 1989-1991 Jef Poskanzer +pnmenlarge: (A) 1989 Jef Poskanzer +pnmfile: (A) 1991 Jef Poskanzer +pnmflip: (A) 1989 Jef Poskanzer +pnmgamma: (A) 1991 Jef Poskanzer and Bill Davidson +pnmhisteq: (H) 1995 John Walker <kelvin@fourmalib.ch> +pnmhistmap: (A) 1993 Wilson H. Bent, Jr <whb@usc.edu> +pnmindex: (A) 1991 Jef Poskanzer +pnminterp: (C) 1998-2000 Russell Marks <russell.marks@ntlworld.com> +pnminterp-gen: (C) 1998-2000 Russell Marks <russell.marks@ntlworld.com> +pnminvert: (A) 1989 Jef Poskanzer +pnmmargin: (A) 1991 Jef Poskanzer +pnmmontage: (A) 2000 Ben Olmstead +pnmnlfilt: (A) 1993 Graeme W. Gill <graeme@labtam.oz.au> +pnmnoraw: (A) 1991 Jef Poskanzer +pnmpad: (A) 1989-1990 Jef Poskanzer, Angus Duggan +pnmpaste: (A) 1989 Jef Poskanzer +pnmpsnr: (C) 1994-2000 Ullrich Hafner <hafner@bigfoot.de> +pnmrotate: (A) 1989-1991 Jef Poskanzer +pnmscale: (A) 1989-1991 Jef Poskanzer +pnmscalefixed: (A) 1989-1991 Jef Poskanzer +pnmshear: (A) 1989-1991 Jef Poskanzer +pnmsmooth: (A) 1984 Mike Burns <burns@chem.psu.edu> +pnmsplit: (?) 2000 Bryan Henderson <bryanh@giraffe-data.com> +pnmtile: (A) 1989 Jef Poskanzer +pnmtoddif: (A) 1992 Digital Equipment Corporation, Burkhard Neidecker-Lutz +pnmtofiasco: (C) 1994-2000 Ullrich Hafner <hafner@bigfoot.de> +pnmtofits: (C) 1989 Wilson H. Bent <whb@hoh-2.att.com> +pnmtojbig: (C) 2000 Markus Kuhn <mkuhn@acm.org> +pnmtojpeg: (D) 1991-2001 Thomas G. Lane, Bryan Henderson +pnmtopalm: (A) 1995-2000 Ian Goldberg, Bill Janssen +pnmtoplainpnm: (A) 1991 Jef Poskanzer +pnmtopng: (A) 1995-1998 Alexander Lehmann <alex@hal.rhein-main.de>, Willem van Schaik <willem@schaik.com> +pnmtops: (A) 1989 Jef Poskanzer +pnmtorast: (A) 1989-1991 Jef Poskanzer +pnmtorle: (E) 1994 Minnesota Supercomputer Center, Inc, Wes Barris <wes@msc.edu> +pnmtosgi: (A) 1994 Ingo Wilken <Ingo.Wilken@informatik.uni-oldenburg.de> +pnmtosir: (A) 1991 Marvin Landis +pnmtotiff: (A) 1990 Sun Microsystems, Inc, Jef Poskanzer +pnmtotiffcmyk: (C) 1999 Andrew Cooke (Jara Software) <jara@andrewcooke.free-online.co.uk> +pnmtoxwd: (A) 1989-1991 Jef Poskanzer +ppm3d: (A) 1989 Jef Poskanzer +ppmbrighten: (A) 1989-1990 Jef Poskanzer, Brian Moffet +ppmchange: (A) 1991 Wilson H. Bent, Jr +ppmcie: (H) 1995 John Walker <kelvin@fourmilab.ch> +ppmcolormask: (?) 2000 Bryan Henderson <bryanh@giraffe-data.com> +ppmdim: (A) 1993 Frank Neumann +ppmdist: (A) 1993 Dan Stromberg +ppmdither: (A) 1991 Christos Zoulas +ppmfade: (?) 1994 Minnesota Supercomputer Center, Inc, Wes Barris <wes@msc.edu> +ppmflash: (A) 1993 Frank Neumann +ppmforge: (H) 1989 John Walker <kelvin@autodesk.com> +ppmhist: (A) 1989 Jef Poskanzer +ppmlabel: (H) 1995 John Walker <kelvin@fourmilab.ch> +ppmmake: (A) 1989 Jef Poskanzer +ppmmix: (A) 1993 Frank Neumann +ppmnorm: (A) 1989-1991 Jef Poskanzer, Wilson H. Bent, Jr <whb@usc.edu> +ppmntsc: (E) 1993 Minnesota Supercomputer Center, Inc, Wes Barris <wes@msc.edu> +ppmpat: (A) 1989-1991 Jef Poskanzer +ppmquant: (A) 1989-1991 Jef Poskanzer +ppmquantall: (A) 1991 Jef Poskanzer +ppmqvga: (F) 1991-1992 Bill Davidsen, Lyle Rains <lrains@netcom.com> +ppmrainbow: (A) 2001 Arjen Bax, Bryan Henderson +ppmrelief: (A) 1990 Wilson H. Bent, Jr +ppmshadow: (G) 1997 John Walker <kelvin@fourmilab.ch> +ppmshift: (A) 1993 Frank Neumann +ppmspread: (A) 1993 Frank Neumann +ppmtoacad: (H) 1991 John Walker <kelvin@autodesk.com> +ppmtobmp: (A) 1992 David W. Sanderson +ppmtoeyuv: (B) 1995 The Regents of the University of California +ppmtoicr: (A) 1990 Kanthan Pillay <svpillay@Princeton.EDU> +ppmtoilbm: (A) 1989 Jef Poskanzer +ppmtoleaf: (A) 1994 Bill O'Donnell +ppmtolj: (A) 2000 Jonathan Melvin <jonathan.melvin@heywood.co.uk> +ppmtomap: (A) 1989 Jef Poskanzer +ppmtomitsu: (A) 1992-1993 S.Petra Zeidler +ppmtompeg: (B) 1995 The Regents of the University of California +ppmtoneo: (D) 2001 Teemu Hukkanen <tjhukkan@iki.fi> +ppmtopcx: (B) 1994 Ingo Wilken <Ingo.Wilken@informatik.uni-oldenburg.de> +ppmtopgm: (A) 1989 Jef Poskanzer +ppmtopi1: (A) 1991 Jef Poskanzer and Steve Belczyk +ppmtopict: (A) 1990 Ken Yap <ken@cs.rochester.edu> +ppmtopj: (A) 1990 Christos Zoulas <christos@ee.cornell.edu> +ppmtopuzz: (A) 1991 Jef Poskanzer +ppmtorgb3: (A) 1991 Jef Poskanzer +ppmtosixel: (A) 1991 Rick Vinci +ppmtotga: (A) 1989-1991 Mark Shand and Jef Poskanzer +ppmtouil: (A) 1990 Mark W. Snitily, Jef Poskanzer +ppmtowinicon: (A) 2000 Lee Benfield <lee@recoil.org> +ppmtoxpm: (A) 1990 Mark W. Snitily +ppmtoyuv: (A) 1987-1991 Abekas Video Systems Inc, DHD PostImage Inc +ppmtoyuvsplit: (A) 1993 Andre Beck <Andre_Beck@IRS.Inf.TU-Dresden.de> +ppmtv: (A) 1993 Frank Neumann +psidtopgm: (A) 1989 Jef Poskanzer +pstopnm: (I) 1992 Smithsonian Astrophysical Observatory, Alberto Accomazzi +qrttoppm: (A) 1989 Jef Poskanzer +rasttopnm: (A) 1989-1991 Jef Poskanzer +rawtopgm: (A) 1989 Jef Poskanzer +rawtoppm: (A) 1991 Jef Poskanzer +rgb3toppm: (A) 1991 Jef Poskanzer +rletopnm: (E) 1994 Minnesota Supercomputer Center, Inc, Wes Barris <wes@msc.edu> +sbigtopgm: (A) 1998 John Walker +sgitopnm: (A) 1994 Ingo Wilken <Ingo.Wilken@informatik.uni-oldenburg.de> +sirtopnm: (A) 1991 Marvin Landis +sldtoppm: (H) 1991 John Walker <kelvin@autodesk.com> +spctoppm: (A) 1991 Jef Poskanzer and Steve Belczyk +sputoppm: (A) 1991 Jef Poskanzer and Steve Belczyk +tgatoppm: (A) 1989 Jef Poskanzer +tifftopnm: (A) 1990 Sun Microsystems, Inc, Jef Poskanzer +thinkjettopbm: (A) 2001 W. Eric Norum <eric.norum@usask.ca> +wbmptopbm: (A) 1999 Terje Sannum <terje@looplab.com> +winicontoppm: (A) 2000 Lee Benfield <lee@recoil.org> +xbmtopbm: (A) 1988 Jef Poskanzer +ximtoppm: (A) 1991 Jef Poskanzer +xpmtoppm: (A) 1991 Jef Poskanzer +xvminitoppm: (A) 1993 Ingo Wilken <Ingo.Wilken@informatik.uni-oldenburg.de> +xwdtopnm: (A) 1989-1991 Jef Poskanzer +ybmtopbm: (A) 1988 Jamie Zawinski and Jef Poskanzer +yuvsplittoppm: (A) 1993 Marcel Wijkstra <wijkstra@fwi.uva.nl> +yuvtoppm: (A) 1987-1991 Jef Poskanzer, Abekas Video Systems Inc., DHD PostImage Inc. +zeisstopnm: (A) 1993 Oliver Trepte <oliver@fysik4.kth.se> + +============================================================================== +NON-FREE: + +The following programs have restrictions on their use or source: + +hpcdtoppm package: +================== +hpcdtoppm pcdindex + +* Copyright (c) 1992, 1993, 1994 by Hadmut Danisch (danisch@ira.uka.de). +* Permission to use and distribute this software and its +* documentation for noncommercial use and without fee is hereby granted, +* provided that the above copyright notice appear in all copies and that +* both that copyright notice and this permission notice appear in +* supporting documentation. It is not allowed to sell this software in +* any way. This software is not public domain. + +Note that Hpcdtoppm and Pcdindex are not distributed in the main Netpbm +package on Sourceforge, as Sourceforge does not offer distribution services +for software licensed in this way. These programs are distributed in the +supplemental Netpbm package on Ibiblio. + +filter to create GIFs - patent restricted. (http://www.unisys.com/unisys/lzw/) +ppmtogif: (A) 1989 Jef Poskanzer + +The Unisys patent, at least in the US, expired in 2003. + +============================================================================= +UNKNOWN, SO NOT DISTRIBUTED: + +The following programs are in the upstream source package, but do not +have sufficient copyright and license information to be redistributed: + +pamchannel: No copyright / license text found +pamtopnm: No copyright / license text found +pbmto4425: No copyright / license text found +pbmtoln03: No copyright / license text found +pbmtolps: No copyright / license text found +pbmtopk: No copyright / license text found +pktopbm: No copyright / license text found +ppmtopjxl: No copyright / license text found +spottopgm: No copyright / license text found + + diff --git a/doc/lgpl_v21.txt b/doc/lgpl_v21.txt new file mode 100644 index 00000000..b1e3f5a2 --- /dev/null +++ b/doc/lgpl_v21.txt @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +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 and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/doc/netpbm.1 b/doc/netpbm.1 new file mode 100644 index 00000000..5bed86a9 --- /dev/null +++ b/doc/netpbm.1 @@ -0,0 +1,4 @@ +Are you looking for the man pages? + +Netpbm does not have man pages in the conventional Unix form. Please see +the file doc/USERDOC for a complete explanation of this. diff --git a/doc/netpbm.html b/doc/netpbm.html new file mode 100644 index 00000000..471c1d54 --- /dev/null +++ b/doc/netpbm.html @@ -0,0 +1,3 @@ +Are you looking for the Netpbm user manual? + +It's not in the source code package. Please see the file doc/USERDOC. |