* Do not append a slash to the directory name if it already has one.
Changes 1.7.23:
* Ignore any attempt to use "-ow" with the "-d" or "-e" options, with warning.
* Include zlib.h if ZLIB_H is not defined (instead of checking the libpng
version; see entry below for pngcrush-1.7.14), and include string.h
if _STRING_H_ is not defined (because libpng-1.6 does not include string.h)
* Define SLASH = backslash on Windows platforms so the "-d" option will work.
This release adds the "-ow" option to overwrite the input file with the
compressed file. If an output filename is given on the command line, it will be
used as a temporary file and removed after compression. If not, "pngout.png" is
used as a temporary file
* Removed the call to png_read_transform_info() when the system libpng
is being used, so it can be built with a system libpng.
Changes 1.7.19:
* pngcrush-1.7.18 failed to read interlaced PNGs. Reverted the change
from calling png_read_transform_info() to png_read_update_info().
Since png_read_transform_info() is not exported we again cannot build
with the system libpng15.
Changes 1.7.18:
* This version will work with either a "system" libpng14 or libpng15, or with
the embedded libpng15. The deprecated usage of libpng png_struct members
and unexported functions has been removed.
* Revised the format of the time report (all on one line so you can get
a nice compact report by piping the output to "grep coding").
* Changed "#if !defined(PNG_NO_STDIO)" to "#ifdef PNG_STDIO_SUPPORTED"
as recommended in the libpng documentation.
* Added PNG_UINT_32_NAME macro and used it to simplify chunk_type integer
definitions.
* Force bit_depth to 1, 2, or 4 when -plte_len is <=2, <=4, or <=16 and
the -bit_depth option is not present, to avoid writing invalid palette
indexes.
* Built with libpng-1.5.1beta06 and zlib-1.2.5
* Removed WIN32_WCE support (libpng has dropped it already)
* Include zlib.h and define png_memcpy, etc., and revise the
png_get_iCCP() and png_set_iCCP() calls to be able to build
with bundled libpng-1.5.x. Pngcrush cannot be built yet with
a system libpng-1.5.x.
* Added missing "(...)" in png_get_uint_32().
* Only compile png_get_uint_32(), etc., when PNG_LIBPNG_VER < 1.2.9
* Revised help info for "-zitxt".
Changes 1.7.9:
* Defined TOO_FAR == 32767 in pngcrush.h (instead of in deflate.c)
* Revised the "nolib" Makefiles to remove reference to gzio.c and pnggccrd.c
Changes 1.7.8:
* Removed gzio.c
Changes 1.7.7:
* Updated bundled libpng to version 1.4.0.
* Check the "-plte_len n" option for out-of-range value of n.
* Changed local variable "write" to "z_write" in inffast.c (zlib-1.2.3.4)
to avoid shadowed declaration warning.
Changes 1.7.6:
* Change some "if defined(X)" to "ifdef X" according to libpng coding style.
* Added some defines to suppress pedantic warnings from libpng-1.2.41beta15
and later. A warning about deprecated access to png_ptr->zstream is
otherwise unavoidable. When building the embedded libpng, a warning
about png_default_error() returning is also otherwise unavoidable.
* Write premultiplied alpha if output extension is .ppng and
PNG_READ_PREMULTIPLIED_ALPHA_SUPPORTED is set (needs libpng-1.5.0).
* Check the "-m method" option for out-of-range method value.
Changes 1.7.4:
* Use unmodified pngconf.h from libpng-1.2.41beta05 or later.
* Revised some prototypes to eliminate "Shadowed Declaration" warnings.
* Moved warning about discarding APNG chunks to the end.
* Replaced *.tar.lzma with *.tar.xz in the distribution.
* Save (but do not recompress) APNG chunks if the output file has the
".apng" extension and the color_type and bit_depth are not changed.
Changes 1.6.20:
* Changed local variable "write" to "wwrite" in inffast.c (zlib) to avoid
shadowed declaration warning.
* Defined TOO_FAR == 32767 in deflate.c (again). The definition
has continually been inadvertently omitted during zlib updates
since pngcrush version 1.6.4.
* Revised handling of xcode files so at least we can get printout
of IHDR values with "pngcrush -fix -n -v xcode.png"
Changes 1.6.16:
* Added -newtimestamp and -oldtimestamp options and changed
default condition to timestamping the output file with
the current time (i.e., -newtimestamp is default)
* If the -oldtimestamp option is used then the output file
has the same timestamp as the input file.
* Added CgBI chunk detection.
Changes 1.6.15:
* Fixes some missing typecasts on png_malloc() calls, patch from
an anonymous reporter to the SourceForge bug tracker.
* Added -time_stamp option to change time stamping from default
condition.
* Added "-time_stamp" directive, to cause pngcrush to write a new timestamp
on the output file instead of replicating the timestame from the input file.
Moved PNG_UINT_CHNK and some other defines from pngcrush.h to pngcrush.c
Reject invalid color_type or bit_depth.
Changes 1.6.6:
Added dSIG support. Pngcrush will not rewrite an image containing
a dSIG chunk immediately following the IHDR chunk, unless the
dSIG is explicitly removed with "-rem dSIG" or explicitly kept
with "-keep dSIG". In the latter case the saved dSIG chunks will
become invalid if any changes are made to the datastream.
Fixed bug in writing unknown chunks from the end_info_ptr.
Changes 1.6.5:
Discontinued adding a new gAMA chunk when writing sRGB chunk.
Version 1.6.3 (built with libpng-1.2.9beta11 and zlib-1.2.3)
Fixed documentation of iTXt input (Shlomi Tal).
Removed #define PNG_INTERNAL and provided prototypes for some
internal libpng functions that are duplicated in pngcrush.c
* Fixed bug with "PNG_ROWBYTES" usage, introduced in version 1.6.1.
The bug could cause a crash and only affects the "nolib" builds.
* Converted C++ style (// ...) comments to C style (/* ... */).
* Defined TOO_FAR == 32767 in deflate.c (again). The definition was omitted
from version 1.6.0 when zlib was upgraded to version 1.2.3.
Changes 1.6.1:
* Copied non-exported libpng functions from libpng into pngcrush, to make
pngcrush play more nicely with shared libpng. These are ifdef'ed out when
a static library is being built with the bundled libpng and pngcrush.h is
included.
Changes 1.6.0:
* Moved ChangeLog out of pngcrush.c comments and into a separate file.
* Filtered pngcrush.c through "indent -kr" and "expand" for readability.
* Moved 550 lines of usage/help/copyright/license/version info to separate
function(s) and cleaned up significantly.
* Added some comments for ease of navigation and readability.
* Stripped out a bunch of ancient-libpng compatibility stuff.
* Defined PNG_UINT_* macros (pngcrush.h for now).
* Fixed unknown-chunk handling ("-rem alla" and "-rem gifx" now work).
* Created modified version of makefile that supports external zlib.
* Added support for methods using Z_RLE zlib strategy (zlib 1.2.x only).
* Documented -huffman option in usage screen.
* Added IDAT statistics to final per-file summary.
* Added utime() support to give output files same timestamps as input files.
in the process. (More information on tech-pkg.)
Bump PKGREVISION and BUILDLINK_DEPENDS of all packages using libtool and
installing .la files.
Bump PKGREVISION (only) of all packages depending directly on the above
via a buildlink3 include.
* Fixed bug, introduced in 1.5.9, that caused defaults for method 0 to be
used instead of copying the original image, when the original was already
smallest.
* Work around CPU timer wraparound at 2G microseconds.
* Upgraded zlib from 1.1.3 to 1.1.4. Pngcrush is believed not to be
vulnerable to the zlib-1.1.3 buffer-overflow bug.
* Choose the first instance of smallest IDAT instead of the last, for
faster final recompression, suggested by TSamuel.
* Added -trns_a option for entering a tRNS array.
* Version 1.5.7 (built with libpng-1.2.0)
* Added setargv.obj to Makefile.msc to expand wildcards, e.g., *.png
* Use constant string "pngcrush" instead of argv[0] when appropriate.
* Only check stats for infile==outfile once per input file, or not at
all if "-nofilecheck" option is present or if a directory was
created.
* Fixed bugs with changing bit_depth of grayscale images.
* Version 1.5.6 (built with libpng-1.0.12)
* Eliminated extra "Removed the cHNK chunk" messages generated by
version 1.5.5 when "-rem alla" or "-rem allb" is used.
* All unknown chunks including safe-to-copy chunks are now removed in
response to the "-rem alla" or "-rem allb" options.
* Issue a warning if the user tries "-cc" option when it is not
supported.
Reset reduce_to_gray and it_is_opaque flags prior to processing each image.
Enable removal of safe-to-copy chunks that are being handled as unknown
Added 262 to the length of uncompressed data when calculating
required_window_size, to account for zlib/deflate implementation.
Added "-bit_depth n" to the help screen.
Call png_set_packing() when increasing bit_depth to 2 or 4.
Added warning about not overwriting an existing tRNS chunk.
Reduced the memory usage
Write 500K IDAT chunks even when system libpng is being used.
Ignore all-zero gAMA and cHRM chunks, with a warning.
Added "-loco" option (writes MNG files with filter_method 64)
"-dir" and "-ext" options are no longer mutually exclusive, e.g.:
pngcrush -loco -dir Crushed -ext .mng *.png
Added "-iccp" option
Increased the zlib memory level to 9, which improves compression
Enabled the "-max max_idat_size" option, even when max_idat_size
exceeds the default 1/2 megabyte size.
Added missing "png_ptr" argument to png_error() call
Revised the "-help" output slightly and improved the "-version" output.
The "-already[_crushed]" option is now ignored if the "-force" option
is present or if chunks are being added, deleted, or modified.
Improved "things_have_changed" behavior (now, when set in a particular file, it is not set for all remaining files)