[libpng10] Imported from libpng-1.0.17.tar
diff --git a/ANNOUNCE b/ANNOUNCE
index dd85cbc..b317fd6 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,116 +1,27 @@
 
-Libpng 1.0.16 - August 15, 2004
+Libpng 1.0.17 - September 12, 2004
 
 This is a public release of libpng, intended for use in production codes.
 
-Changes since the last public release (1.0.15):
+Changes since the last public release (1.0.16):
 
-  Commented out warning about uninitialized mmx_support in pnggccrd.c.
-  Changed "IBMCPP__" flag to "__IBMCPP__" in pngconf.h.
-  Relocated two more misplaced PNGAPI lines in pngtest.c
-  Fixed memory overrun bug in png_do_read_filler() with 16-bit datastreams,
-    introduced in version 1.0.2.
-  Fixed potential overrun in pngerror.c by using strncpy instead of memcpy.
-  Revised makefile.macosx, makefile.dec, makefile.aix, and makefile.32sunu.
-  Changed the one instance of "ln -sf" to "ln -f -s" in each Sun makefile.
-  Fixed potential overrun in pngerror.c by using strncpy instead of memcpy.
-  Added "#!/bin/sh" at the top of configure, for recognition of the
-    'x' flag under Cygwin (Cosmin).
-  Optimized vacuous tests that silence compiler warnings, in png.c (Cosmin).
-  Added support for PNG_USER_CONFIG, in pngconf.h (Cosmin).
-  Fixed the special memory handler for Borland C under DOS, in pngmem.c
-    (Cosmin).
-  Removed some spurious assignments in pngrutil.c (Cosmin).
-  Replaced 65536 with 65536L, and 0xffff with 0xffffL, to silence warnings
-    on 16-bit platforms (Cosmin).
-  Enclosed shift op expressions in parentheses, to silence warnings (Cosmin).
-  Used proper type png_fixed_point, to avoid problems on 16-bit platforms,
-    in png_handle_sRGB() (Cosmin).
-  Added compression_type to png_struct, and optimized the window size
-    inside the deflate stream (Cosmin).
-  Fixed definition of isnonalpha(), in pngerror.c and pngrutil.c (Cosmin).
-  Fixed handling of unknown chunks that come after IDAT (Cosmin).
-  Allowed png_error() and png_warning() to work even if png_ptr == NULL
-    (Cosmin).
-  Replaced row_info->rowbytes with row_bytes in png_write_find_filter()
-    (Cosmin).
-  Fixed definition of PNG_LIBPNG_VER_DLLNUM (Simon-Pierre).
-  Used PNG_LIBPNG_VER and PNG_LIBPNG_VER_STRING instead of the hardcoded
-    values in png.c (Simon-Pierre, Cosmin).
-  Initialized png_libpng_ver[] with PNG_LIBPNG_VER_STRING (Simon-Pierre).
-  Replaced PNG_LIBPNG_VER_MAJOR with PNG_LIBPNG_VER_DLLNUM in png.rc
-    (Simon-Pierre).
-  Moved the definition of PNG_HEADER_VERSION_STRING near the definitions
-    of the other PNG_LIBPNG_VER_... symbols in png.h (Cosmin).
-  Relocated #ifndef PNGAPI guards in pngconf.h (Simon-Pierre, Cosmin).
-  Updated scripts/makefile.vc(a)win32 (Cosmin).
-  Updated the MSVC project (Simon-Pierre, Cosmin).
-  Updated the Borland C++ Builder project (Cosmin).
-  Avoided access to asm_flags in pngvcrd.c, if PNG_1_0_X is defined (Cosmin).
-  Commented out warning about uninitialized mmx_support in pngvcrd.c (Cosmin).
-  Removed scripts/makefile.bd32 and scripts/pngdef.pas (Cosmin).
-  Added extra guard around inclusion of Turbo C memory headers, in pngconf.h
-    (Cosmin).
-  Renamed projects/msvc/ to projects/visualc6/, and projects/borland/ to
-    projects/cbuilder5/ (Cosmin).
-  Moved projects/visualc6/png32ms.def to scripts/pngw32.def,
-    and projects/visualc6/png.rc to scripts/pngw32.rc (Cosmin).
-  Added projects/visualc6/pngtest.dsp; removed contrib/msvctest/ (Cosmin).
-  Updated contrib/visupng/VisualPng.dsp (Cosmin).
-  Updated contrib/visupng/cexcept.h to version 2.0.0 (Cosmin).
-  Added a separate distribution with "configure" and supporting files (Junichi).
-  Added user ability to change png_size_t via a PNG_SIZE_T macro.
-  Added png_sizeof() and png_convert_size() functions.
-  Added PNG_SIZE_MAX (maximum value of a png_size_t variable.
-  Added check in png_malloc_default() for (size_t)size != (png_uint_32)size
-    which would indicate an overflow.
-  Changed sPLT failure action from png_error to png_warning and abandon chunk.
-  Changed sCAL and iCCP failures from png_error to png_warning and abandon.
-  Added png_get_uint_31(png_ptr, buf) function.
-  Added PNG_UINT_32_MAX macro.
-  Renamed PNG_MAX_UINT to PNG_UINT_31_MAX.
-  Made png_zalloc() issue a png_warning and return NULL on potential
-    overflow.
-  Turn on PNG_NO_ZALLOC_ZERO by default in version 1.2.x
-  Revised "clobber list" in pnggccrd.c so it will compile under gcc-3.4.
-  Revised Borland portion of png_malloc() to return NULL or issue
-    png_error() according to setting of PNG_FLAG_MALLOC_NULL_MEM_OK.
-  Added PNG_NO_SEQUENTIAL_READ_SUPPORTED macro to conditionally remove
-    sequential read support.
-  Added some "#if PNG_WRITE_SUPPORTED" blocks.
-  #ifdef'ed out some redundancy in png_malloc_default().
-  Use png_malloc instead of png_zalloc to allocate the pallete.
-  Rearranged order of processing of color types in png_handle_tRNS().
-  Added PNG_ROWBYTES macro to calculate rowbytes without integer overflow.
-  Updated makefile.darwin and removed makefile.macosx from scripts directory.
-  Imposed default one million column, one-million row limits on the image
-    dimensions, and added png_set_user_limits() function and
-    PNG_SET_USER_LIMITS_SUPPORTED macro to override them.
-  Fixed wrong cast of returns from png_get_user_width|height_max().
-  Fixed buffer overflow vulnerability in png_handle_tRNS()
-  Fixed integer arithmetic overflow vulnerability in png_read_png().
-  Fixed some harmless bugs in png_handle_sBIT, etc, that would cause
-    duplicate chunk types to go undetected.
-  Changed some "keep the compiler happy" from empty statements to returns,
-  Revised makefile.darwin and makefile.solaris.  Removed makefile.macosx.
-  Revised pngtest's png_debug_malloc() to use png_malloc() instead of
-     png_malloc_default() which is not supposed to be exported.
-  Fixed old bug in RGB to Gray transformation.
-  Fixed problem with 64-bit compilers by casting arguments to abs()
-    to png_int_32.
-  Changed "ln -sf" to "ln -f -s" in three makefiles (solaris, sco, so9).
-  Changed "HANDLE_CHUNK_*" to "PNG_HANDLE_CHUNK_*" (Cosmin)
-  Added "-@/bin/rm -f $(DL)/$(LIBNAME).so.$(PNGMAJ)" to 15 *NIX makefiles.
-  Added code to update the row_info->colortype in png_do_read_filler() (MSB).
-  Eliminated use of "abs()" in testing cHRM and gAMA values, to avoid
-    trouble with some 64-bit compilers.  Created PNG_OUT_OF_RANGE() macro.
-  Revised documentation of png_set_keep_unknown_chunks().
-  Check handle_as_unknown status in pngpread.c, as in pngread.c previously.
-  Moved  "PNG_HANDLE_CHUNK_*" macros out of PNG_INTERNAL section of png.h
-  Added "rim" definitions for CONST4 and CONST6 in pnggccrd.c
   Revised pngtest so memory allocation testing is only done when PNG_DEBUG==1.
+  Removed unused pngasmrd.h file.
+  Removed references to uu.net for archived files.  Added references to
+    PNG Spec (second edition) and the PNG ISO/IEC Standard.
+  Added "test-dd" target in 15 makefiles, to run pngtest in DESTDIR.
+  Fixed bug with "optimized window size" in the IDAT datastream, that
+    causes libpng to write PNG files with incorrect zlib header bytes.
+  Fixed bug with sCAL chunk and big-endian machines (David Munro).
+  Undid new code added in 1.2.6 to update the color_type in
+    png_set_filler().
+  Revised png_set_strip_filler() to not remove alpha if color_type has alpha.
+  Added makefile.hp64
+  Changed projects/msvc/png32ms.def to scripts/png32ms.def in makefile.cygwin
 
 Send comments/corrections/commendations to
-png-implement@ccrc.wustl.edu or to glennrp@users.sourceforge.net
+png-implement@ccrc.wustl.edu (subscription required; write to
+majordomo@ccrc.wustl.edu with "subscribe png-implement" in the message)
+or to glennrp@users.sourceforge.net
 
 Glenn R-P
diff --git a/CHANGES b/CHANGES
index 980538c..109583e 100644
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,7 @@
 version 0.2
   added reader into png.h
   fixed small problems in stub file
+
 version 0.3
   added pull reader
   split up pngwrite.c to several files
@@ -14,6 +15,7 @@
   interfaced with zlib 0.5
   added K&R support
   added check for 64 KB blocks for 16 bit machines
+
 version 0.4
   cleaned up code and commented code
   simplified time handling into png_time
@@ -24,23 +26,28 @@
   interfaced with zlib 0.71
   cleaned up zTXt reader and writer (using zlib's Reset functions)
   split transformations into pngrtran.c and pngwtran.c
+
 version 0.5
   interfaced with zlib 0.8
   fixed many reading and writing bugs
   saved using 3 spaces instead of tabs
+
 version 0.6
   added png_large_malloc() and png_large_free()
   added png_size_t
   cleaned up some compiler warnings
   added png_start_read_image()
+
 version 0.7
   cleaned up lots of bugs
   finished dithering and other stuff
   added test program
   changed name from pnglib to libpng
+
 version 0.71 [June, 1995]
   changed pngtest.png for zlib 0.93
   fixed error in libpng.txt and example.c
+
 version 0.8
   cleaned up some bugs
   added png_set_filler()
@@ -57,27 +64,34 @@
   enabled png_set_shift to work with paletted images on read
   added png_read_update_info() - updates info structure with
      transformations
+
 version 0.81 [August, 1995]
   incorporated Tim Wegner's medium model code (thanks, Tim)
+
 version 0.82 [September, 1995]
   [unspecified changes]
+
 version 0.85 [December, 1995]
   added more medium model code (almost everything's a far)
   added i/o, error, and memory callback functions
   fixed some bugs (16 bit, 4 bit interlaced, etc.)
   added first run progressive reader (barely tested)
+
 version 0.86 [January, 1996]
   fixed bugs
   improved documentation
+
 version 0.87 [January, 1996]
   fixed medium model bugs
   fixed other bugs introduced in 0.85 and 0.86
   added some minor documentation
+
 version 0.88 [January, 1996]
   fixed progressive bugs
   replaced tabs with spaces
   cleaned up documentation
   added callbacks for read/write and warning/error functions
+
 version 0.89 [July, 1996]
   added new initialization API to make libpng work better with shared libs
      we now have png_create_read_struct(), png_create_write_struct(),
@@ -104,6 +118,7 @@
      into a binary when only reading or writing functionality is used
   new pngtest image also has interlacing and zTXt
   updated documentation to reflect new API
+
 version 0.90 [January, 1997]
   made CRC errors/warnings on critical and ancillary chunks configurable
   libpng will use the zlib CRC routines by (compile-time) default
@@ -125,6 +140,7 @@
        be able to handle all chunks via a callback mechanism
   try to fix Linux "setjmp" buffer size problems
   removed png_large_malloc, png_large_free, and png_realloc functions.
+
 version 0.95 [March, 1997]
   fixed bug in pngwutil.c allocating "up_row" twice and "avg_row" never
   fixed bug in PNG file signature compares when start != 0
@@ -159,6 +175,7 @@
      functions in pngget.c to get infomation in info_ptr.  This isolates
      the application from the internal organization of png_info_struct
      (good for shared library implementations).
+
 version 0.96 [May, 1997]
   fixed serious bug with < 8bpp images introduced in 0.95
   fixed 256-color transparency bug (Greg Roelofs)
@@ -169,6 +186,7 @@
   added read of CRC after IEND chunk for embedded PNGs (Laszlo Nyul)
   added typecasts to quiet compiler errors
   added more debugging info
+
 version 0.97 [January, 1998]
   removed PNG_USE_OWN_CRC capability
   relocated png_set_crc_action from pngrutil.c to pngrtran.c
@@ -191,6 +209,7 @@
   added "-m" option and PNGTEST_DEBUG_MEMORY to pngtest (John Bowler)
   regularized version numbering scheme and bumped shared-library major
      version number to 2 to avoid problems with libpng 0.89 apps (Greg Roelofs)
+
 version 0.98 [January, 1998]
   cleaned up some typos in libpng.txt and in code documentation
   fixed memory leaks in pCAL chunk processing (Glenn R-P and John Bowler)
@@ -202,6 +221,7 @@
      PNG_TIME_RFC1152_SUPPORTED macro to PNG_TIME_RFC1123_SUPPORTED
   added png_invert_alpha capability (Glenn R-P -- suggestion by Jon Vincent)
   changed srgb_intent from png_byte to int to avoid compiler bugs
+
 version 0.99 [January 30, 1998]
   free info_ptr->text instead of end_info_ptr->text in pngread.c (John Bowler)
   fixed a longstanding "packswap" bug in pngtrans.c
@@ -262,6 +282,7 @@
   Changed PNG_READ_NOT_FULLY_SUPPORTED to PNG_READ_TRANSFORMS_NOT_SUPPORTED
   and added PNG_PROGRESSIVE_READ_NOT_SUPPORTED macro
   Added user transform capability
+
 version 1.00 [March 7, 1998]
   Changed several typedefs in pngrutil.c
   Added makefile.wat (Pawel Mrochen), updated makefile.tc3 (Willem van Schaik)
@@ -271,6 +292,7 @@
   changed some typedefs (s_start, etc.) in pngrutil.c
   fixed dimensions of "short_months" array in pngwrite.c
   Replaced ansi2knr.c with the one from jpeg-v6
+
 version 1.0.0 [March 8, 1998]
   Changed name from 1.00 to 1.0.0 (Adam Costello)
   Added smakefile.ppc (with SCOPTIONS.ppc) for Amiga PPC (Andreas Kleinert)
@@ -285,6 +307,7 @@
   Quieted compiler complaints about two empty "for" loops in pngrutil.c
   Minor changes to makefile.s2x
   Removed #ifdef/#endif around a png_free() in pngread.c
+
 version 1.0.1 [March 14, 1998]
   Changed makefile.s2x to reduce security risk of using a relative pathname
   Fixed some typos in the documentation (Greg).
@@ -353,6 +376,7 @@
     and revised pngtest.c to demonstrate their use, replacing the
     PNGTEST_DEBUG_MEM feature.
   Added makefile.w32, for Microsoft C++ 4.0 and later (Tim Wegner).
+
 version 1.0.2 [June 14, 1998]
   Fixed two bugs in makefile.bor .
 version 1.0.2a [December 30, 1998]
@@ -387,6 +411,7 @@
   Changed "check_if_png" function in example.c to return true (nonzero) if PNG.
   Changed libpng.txt to demonstrate png_sig_cmp() instead of png_check_sig()
     which is obsolete.
+
 version 1.0.3 [January 14, 1999]
   Added makefile.hux, for Hewlett Packard HPUX 10.20 and 11.00 (Jim Rice)
   Added a statement of Y2K compliance in png.h, libpng.3, and Y2KINFO.
@@ -439,6 +464,7 @@
   Fixed type casting of igamma in pngrutil.c
   Added new png_expand functions to scripts/pngdef.pas and pngos2.def
   Added a demo read_user_transform_fn that examines the row filters in pngtest.c
+
 version 1.0.4 [September 24, 1999]
   Define PNG_ALWAYS_EXTERN in pngconf.h if __STDC__ is defined
   Delete #define PNG_INTERNAL and include "png.h" from pngasmrd.h
@@ -477,6 +503,7 @@
   Added type casting mostly in pngrtran.c and pngwtran.c
   Removed some pointless "ptr = NULL" in pngmem.c
   Added a "contrib" directory containing the source code from Greg's book.
+
 version 1.0.5 [October 15, 1999]
   Minor editing of the INSTALL and README files.
 version 1.0.5a [October 23, 1999]
@@ -660,6 +687,7 @@
   Updated documentation of png_rgb_to_gray calculations in libpng.3/libpng.txt.
   Renamed makefile.borland,turboc3 back to makefile.bor,tc3 as in version 1.0.3,
     revised borland makefiles; added makefile.ibmvac3 and makefile.gcc (Cosmin)
+
 version 1.0.6 [March 20, 2000]
   Minor revisions of makefile.bor, libpng.txt, and gregbook/rpng2-win.c
   Added makefile.sggcc (SGI IRIX with gcc)
@@ -798,6 +826,7 @@
 version 1.0.7rc2 [June 28, 2000]
   Updated license to include disclaimers required by UCITA.
   Fixed "DJBPP" typo in pnggccrd.c introduced in beta18.
+
 version 1.0.7 [July 1, 2000]
   Revised the definition of "trans_values" in libpng.3/libpng.txt
 version 1.0.8beta1 [July 8, 2000]
@@ -822,6 +851,7 @@
   Added PNG_NO_ZALLOC_ZERO macro (makes png_zalloc skip zeroing memory)
 version 1.0.8rc1 [July 16, 2000]
   Revised png_debug() macros and statements to eliminate compiler warnings.
+
 version 1.0.8 [July 24, 2000]
   Added png_flush() in pngwrite.c, after png_write_IEND().
   Updated makefile.hpux to build a shared library.
@@ -892,6 +922,7 @@
     be re-enabled in version 1.2.0.
 version 1.0.9rc2 [January 22, 2001]
   Revised cygwin support.
+
 version 1.0.9 [January 31, 2001]
   Added check of cygwin's ALL_STATIC in pngconf.h
   Added "-nommx" parameter to contrib/gregbook/rpng2-win and rpng2-x demos.
@@ -913,6 +944,7 @@
     and png_strlen.
   Revised png_mmx_supported() function in pnggccrd.c to return proper value.
   Fixed bug in progressive reading (pngpread.c) with small images (height < 8).
+
 version 1.0.10 [March 30, 2001]
   Deleted extraneous space (introduced in 1.0.9) from line 42 of makefile.cygwin
   Added beos project files (Chris Herborth)
@@ -930,6 +962,7 @@
     from user's malloc_fn().
   Removed some useless type casts of the NULL pointer.
   Added makefile.netbsd
+
 version 1.0.11 [April 27, 2001]
   Revised makefile.netbsd
 version 1.0.12beta1 [May 14, 2001]
@@ -944,21 +977,15 @@
   Bumped DLLNUM to 2.
   Re-enabled PNG_MNG_FEATURES_SUPPORTED and enabled PNG_ASSEMBLER_CODE_SUPPORTED
     by default.
-  Added runtime selection of MMX features.
-  Added png_set_strip_error_numbers function and related macros.
 version 1.2.0beta2 [May 7, 2001]
   Finished merging 1.2.0beta1 with version 1.0.11
   Added a check for attempts to read or write PLTE in grayscale PNG datastreams.
 version 1.2.0beta3 [May 17, 2001]
-  Enabled user memory function by default.
   Modified png_create_struct so it passes user mem_ptr to user memory allocator.
   Increased png_mng_features flag from png_byte to png_uint_32.
-  Bumped shared-library (so-number) and dll-number to 3.
 version 1.2.0beta4 [June 23, 2001]
   Check for missing profile length field in iCCP chunk and free chunk_data
      in case of truncated iCCP chunk.
-  Bumped shared-library number to 3 in makefile.sgi and makefile.sggcc
-  Bumped dll-number from 2 to 3 in makefile.cygwin
   Revised contrib/gregbook/rpng*-x.c to avoid a memory leak and to exit cleanly
      if user attempts to run it on an 8-bit display.
   Updated contrib/gregbook
@@ -978,6 +1005,7 @@
   Revised makefile.sgi and makefile.sggcc
   Replaced calls to fprintf(stderr,...) with png_warning() in pnggccrd.c
   Removed restriction that do_invert_mono only operate on 1-bit opaque files
+
 version 1.2.0 [September 1, 2001]
   Changed a png_warning() to png_debug() in pnggccrd.c
   Fixed contrib/gregbook/rpng-x.c, rpng2-x.c to avoid crash with XFreeGC().
@@ -1011,6 +1039,7 @@
   Always allocate 256-entry internal palette, hist, and trans arrays, to
     avoid out-of-bounds memory reference caused by invalid PNG datastreams.
   Added a check for prefix_length > data_length in iCCP chunk handler.
+
 version 1.2.1 [December 7, 2001]
   None.
 version 1.2.2beta1 [February 22, 2002]
@@ -1035,7 +1064,6 @@
   Modified shared-library makefiles to install pkgconfig/libpngNN.pc.
   Export (with PNGAPI) png_zalloc, png_zfree, and png_handle_as_unknown
   Removed unused png_write_destroy_info prototype from png.h
-  Eliminated incorrect use of width_mmx from pnggccrd.c in pixel_bytes == 8 case
   Added install-shared target to all makefiles that make shared libraries.
   Stopped a double free of palette, hist, and trans when not using free_me.
   Added makefile.32sunu for Sun Ultra 32 and makefile.64sunu for Sun Ultra 64.
@@ -1064,6 +1092,7 @@
   Save the ebx register in pnggccrd.c (Sami Farin)
   Add "mem_ptr = png_ptr->mem_ptr" in png_destroy_write_struct() (Paul Gardner).
   Updated makefiles to put headers in include/libpng and remove old include/*.h.
+
 version 1.2.2 [April 15, 2002]
 version 1.0.13 [April 15, 2002]
   Revised description of png_set_filter() in libpng.3/libpng.txt.
@@ -1118,6 +1147,7 @@
   Changed "Gz" to "Gd" in projects/msvc/libpng.dsp and zlib.dsp.
   Removed leftover libpng-config "sed" script from four makefiles.
   Revised libpng-config creating script in 16 makefiles.
+
 version 1.2.3 [May 22, 2002]
   Revised libpng-config target in makefile.cygwin.
   Removed description of png_set_mem_fn() from documentation.
@@ -1147,6 +1177,7 @@
 version 1.2.4rc1 and 1.0.14rc1 [July 2, 2002]
   Added "test-installed" target to makefile.cygwin and makefile.sco.
   Revised pnggccrd.c to be able to back out version 1.0.x via PNG_1_0_X macro.
+
 version 1.2.4 and 1.0.14 [July 8, 2002]
   Changed png_warning() to png_error() when width is too large to process.
 version 1.2.4patch01 [July 20, 2002]
@@ -1173,6 +1204,7 @@
   Added missing "; fi" to makefile.32sunu.
 version 1.2.5rc3 and 1.0.15rc3 [September 18, 2002]
   Revised libpng-config script.
+
 version 1.2.5 and 1.0.15 [October 3, 2002]
   Revised makefile.macosx, makefile.darwin, makefile.hpgcc, and makefile.hpux,
     and makefile.aix.
@@ -1226,8 +1258,6 @@
   Updated scripts/makefile.vc(a)win32 (Cosmin).
   Updated the MSVC project (Simon-Pierre, Cosmin).
   Updated the Borland C++ Builder project (Cosmin).
-  Avoided access to asm_flags in pngvcrd.c, if PNG_1_0_X is defined (Cosmin).
-  Commented out warning about uninitialized mmx_support in pngvcrd.c (Cosmin).
   Removed scripts/makefile.bd32 and scripts/pngdef.pas (Cosmin).
   Added extra guard around inclusion of Turbo C memory headers, in pngconf.h
     (Cosmin).
@@ -1263,7 +1293,7 @@
   Added some "#if PNG_WRITE_SUPPORTED" blocks.
   #ifdef'ed out some redundancy in png_malloc_default().
   Use png_malloc instead of png_zalloc to allocate the pallete.
-version 1.2.6rc1 [August 4, 2004]
+version 1.0.16rc1 and 1.2.6rc1 [August 4, 2004]
   Fixed buffer overflow vulnerability in png_handle_tRNS()
   Fixed integer arithmetic overflow vulnerability in png_read_png().
   Fixed some harmless bugs in png_handle_sBIT, etc, that would cause
@@ -1277,7 +1307,8 @@
   Revised use of PNG_SET_USER_LIMITS_SUPPORTED macro.
   Fixed wrong cast of returns from png_get_user_width|height_max().
   Changed some "keep the compiler happy" from empty statements to returns,
-version 1.2.6rc2 [August 7, 2004]
+  Revised libpng.txt to remove 1.2.x stuff from the 1.0.x distribution
+version 1.0.16rc2 and 1.2.6rc2 [August 7, 2004]
   Revised makefile.darwin and makefile.solaris.  Removed makefile.macosx.
   Revised pngtest's png_debug_malloc() to use png_malloc() instead of
     png_malloc_default() which is not supposed to be exported.
@@ -1291,23 +1322,42 @@
   Changed "HANDLE_CHUNK_*" to "PNG_HANDLE_CHUNK_*" (Cosmin)
   Added "-@/bin/rm -f $(DL)/$(LIBNAME).so.$(PNGMAJ)" to 15 *NIX makefiles.
   Added code to update the row_info->colortype in png_do_read_filler() (MSB).
-version 1.2.6rc3 [August 9, 2004]
+version 1.0.16rc3 and 1.2.6rc3 [August 9, 2004]
   Eliminated use of "abs()" in testing cHRM and gAMA values, to avoid
     trouble with some 64-bit compilers.  Created PNG_OUT_OF_RANGE() macro.
   Revised documentation of png_set_keep_unknown_chunks().
   Check handle_as_unknown status in pngpread.c, as in pngread.c previously.
   Moved  "PNG_HANDLE_CHUNK_*" macros out of PNG_INTERNAL section of png.h
   Added "rim" definitions for CONST4 and CONST6 in pnggccrd.c
-version 1.2.6rc4 [August 10, 2004]
+version 1.0.16rc4 and 1.2.6rc4 [August 10, 2004]
   Fixed mistake in pngtest.c introduced in 1.2.6rc2 (declaration of
     "pinfo" was out of place).
-version 1.2.6rc5 [August 10, 2004]
+version 1.0.16rc5 and 1.2.6rc5 [August 10, 2004]
   Moved  "PNG_HANDLE_CHUNK_*" macros out of PNG_ASSEMBLER_CODE_SUPPORTED
      section of png.h where they were inadvertently placed in version rc3.
-version 1.2.6rc6 [August 15, 2004]
+
+version 1.0.16 and 1.2.6 [August 15, 2004]
   Revised pngtest so memory allocation testing is only done when PNG_DEBUG==1.
+version 1.2.7beta1 [August 26, 2004]
+  Removed unused pngasmrd.h file.
+  Removed references to uu.net for archived files.  Added references to
+    PNG Spec (second edition) and the PNG ISO/IEC Standard.
+  Added "test-dd" target in 15 makefiles, to run pngtest in DESTDIR.
+  Fixed bug with "optimized window size" in the IDAT datastream, that
+    causes libpng to write PNG files with incorrect zlib header bytes.
+version 1.2.7beta2 [August 28, 2004]
+  Fixed bug with sCAL chunk and big-endian machines (David Munro).
+  Undid new code added in 1.2.6rc2 to update the color_type in
+    png_set_filler().
+version 1.0.17rc1 and 1.2.7rc1 [September 4, 2004]
+  Revised png_set_strip_filler() to not remove alpha if color_type has alpha.
+version 1.0.17 and 1.2.7 [September 12, 2004]
+  Added makefile.hp64
+  Changed projects/msvc/png32ms.def to scripts/png32ms.def in makefile.cygwin
 
 Send comments/corrections/commendations to
-png-implement@ccrc.wustl.edu or to glennrp@users.sourceforge.net
+png-implement@ccrc.wustl.edu (subscription required; write to
+majordomo@ccrc.wustl.edu with "subscribe png-implement" in the message)
+or to glennrp@users.sourceforge.net
 
 Glenn R-P
diff --git a/INSTALL b/INSTALL
index 02895f8..d55c83a 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,5 +1,5 @@
 
-Installing libpng version 1.0.16 - August 15, 2004
+Installing libpng version 1.0.17 - September 12, 2004
 
 Before installing libpng, you must first install zlib.  zlib
 can usually be found wherever you got libpng.  zlib can be
@@ -10,8 +10,8 @@
 version of zlib that's installed.
 
 You can rename the directories that you downloaded (they
-might be called "libpng-1.0.16" or "lpng109" and "zlib-1.1.3"
-or "zlib113") so that you have directories called "zlib" and "libpng".
+might be called "libpng-1.0.17" or "lpng109" and "zlib-1.2.1"
+or "zlib121") so that you have directories called "zlib" and "libpng".
 
 Your directory structure should look like this:
 
@@ -23,14 +23,13 @@
           *.c
           contrib
              gregbook
-             msvctest
              pngminus
              pngsuite
              visupng
           projects
              beos
-             borland
-             msvc
+             c5builder (Borland)
+             visualc6 (msvc)
              netware.txt
              wince.txt
           scripts
@@ -48,13 +47,16 @@
 distribution of libpng.  It is available in both tar.gz (UNIX style line
 endings) and zip (DOS style line endings) formats.
 
-If you are building libpng with MSVC, you can enter the libpng\msvc directory
-and follow the instructions in msvc\README.txt.
 
-You can build libpng for WindowsCE by entering the downloading and installing
-the libpng\wince directory as instructed in the projects\wince.txt file, and
+If you are building libpng with MSVC, you can enter the
+libpng projects\visualc6 directory and follow the instructions in
+projects\visualc6\README.txt.
+
+You can build libpng for WindowsCE by downloading and installing
+the projects\wince directory as instructed in the projects\wince.txt file, and
 then following the instructions in the README* files.  Similarly, you can
-build libpng for Netware as instructed in projects\netware.txt.
+build libpng for Netware or Beos as instructed in projects\netware.txt
+or projects\beos.
 
 Else enter the zlib directory and follow the instructions in zlib/README,
 then come back here and choose the appropriate makefile.sys in the scripts
@@ -64,8 +66,10 @@
 include
 
  makefile.std      =>  Generic UNIX makefile (cc, creates static libpng.a)
- makefile.linux    =>  Linux/ELF makefile (gcc, creates libpng10.so.0.1.0.16)
- makefile.gcmmx    =>  Linux/ELF makefile (gcc, creates libpng10.so.0.1.0.16,
+ makefile.linux    =>  Linux/ELF makefile
+                       (gcc, creates libpng10.so.0.1.0.17)
+ makefile.gcmmx    =>  Linux/ELF makefile
+                       (gcc, creates libpng10.so.0.1.0.17,
                        uses assembler code tuned for Intel MMX platform)
  makefile.gcc      =>  Generic makefile (gcc, creates static libpng.a)
  makefile.knr      =>  Archaic UNIX Makefile that converts files with
@@ -75,20 +79,25 @@
  makefile.cygwin   =>  Cygwin/gcc makefile
  makefile.darwin   =>  Darwin makefile, can use on MacosX
  makefile.dec      =>  DEC Alpha UNIX makefile
- makefile.hpgcc    =>  FreeBSD makefile
+ makefile.freebsd  =>  FreeBSD makefile
  makefile.hpgcc    =>  HPUX makefile using gcc
  makefile.hpux     =>  HPUX (10.20 and 11.00) makefile
+ makefile.hp64     =>  HPUX (10.20 and 11.00) makefile, 64-bit
  makefile.ibmc     =>  IBM C/C++ version 3.x for Win32 and OS/2 (static)
  makefile.intel    =>  Intel C/C++ version 4.0 and later
  libpng.icc        =>  Project file for IBM VisualAge/C++ version 4.0 or later
  makefile.netbsd   =>  NetBSD/cc makefile, uses PNGGCCRD, makes libpng.so.
- makefile.ne0bsd  =>  NetBSD/cc makefile, uses PNGGCCRD, makes libpng0.so
+ makefile.ne10bsd  =>  NetBSD/cc makefile, uses PNGGCCRD,
+                       makes libpng10.so
  makefile.openbsd  =>  OpenBSD makefile
  makefile.sgi      =>  Silicon Graphics IRIX makefile (cc, creates static lib)
- makefile.sggcc    =>  Silicon Graphics (gcc, creates libpng10.so.0.1.0.16)
+ makefile.sggcc    =>  Silicon Graphics (gcc,
+                       creates libpng10.so.0.1.0.17)
  makefile.sunos    =>  Sun makefile
- makefile.solaris  =>  Solaris 2.X makefile (gcc, creates libpng10.so.0.1.0.16)
- makefile.so9      =>  Solaris 9 makefile (gcc, creates libpng10.so.0.1.0.16)
+ makefile.solaris  =>  Solaris 2.X makefile (gcc,
+                       creates libpng10.so.0.1.0.17)
+ makefile.so9      =>  Solaris 9 makefile (gcc,
+                       creates libpng10.so.0.1.0.17)
  makefile.32sunu   =>  Sun Ultra 32-bit makefile
  makefile.64sunu   =>  Sun Ultra 64-bit makefile
  makefile.sco      =>  For SCO OSr5  ELF and Unixware 7 with Native cc
@@ -101,7 +110,6 @@
  makefile.beos     =>  BEOS makefile for X86
  makefile.bor      =>  Borland makefile (uses bcc)
  makefile.bc32     =>  32-bit Borland C++ (all modules compiled in C mode)
- makefile.bd32     =>  To make a png32bd.dll with Borland C++ 4.5
  makefile.tc3      =>  Turbo C 3.0 makefile
  makefile.dj2      =>  DJGPP 2 makefile
  makefile.msc      =>  Microsoft C makefile
@@ -114,7 +122,6 @@
  makefile.watcom   =>  Watcom 10a+ Makefile, 32-bit flat memory model
  makevms.com       =>  VMS build script
  descrip.mms       =>  VMS makefile for MMS or MMK
- pngdef.pas        =>  Defines for a png32bd.dll with Borland C++ 4.5
  SCOPTIONS.ppc     =>  Used with smakefile.ppc
 
 Copy the file (or files) that you need from the
@@ -129,13 +136,13 @@
 Then read pngconf.h to see if you want to make any configuration
 changes.
 
-Then just run "make test" which will create the libpng library in
-this directory and run a quick test that reads the "pngtest.png"
-file and writes a "pngout.png" file that should be identical to it.
-Look for "9782 zero samples" in the output of the test.  For more
-confidence, you can run another test by typing "pngtest pngnow.png"
-and looking for "289 zero samples" in the output.  Also, you can
-run "pngtest -m *.png" in the "contrib/pngsuite" directory and compare
+Then just run "make" which will create the libpng library in
+this directory and "make test" which will run a quick test that reads
+the "pngtest.png" file and writes a "pngout.png" file that should be
+identical to it.  Look for "9782 zero samples" in the output of the
+test.  For more confidence, you can run another test by typing
+"pngtest pngnow.png" and looking for "289 zero samples" in the output.
+Also, you can run "pngtest -m contrib/pngsuite/*.png" and compare
 your output with the result shown in contrib/pngsuite/README.
 
 Most of the makefiles will allow you to run "make install" to
diff --git a/KNOWNBUG b/KNOWNBUG
index 9a2778d..9232aa5 100644
--- a/KNOWNBUG
+++ b/KNOWNBUG
@@ -1,5 +1,5 @@
 
-Known bugs in libpng version 1.0.16
+Known bugs in libpng version 1.0.17
 
 1. April 22, 2001: pnggccrd.c has been reported to crash on NetBSD when
    reading interlaced PNG files, when assembler code is enabled but running
diff --git a/LICENSE b/LICENSE
index 65c9d46..3e5a36a 100644
--- a/LICENSE
+++ b/LICENSE
@@ -8,7 +8,7 @@
 If you modify libpng you may insert additional notices immediately following
 this sentence.
 
-libpng version 1.2.6, August 15, 2004, is
+libpng version 1.2.6, September 12, 2004, is
 Copyright (c) 2004 Glenn Randers-Pehrson, and is
 distributed according to the same disclaimer and license as libpng-1.2.5
 with the following individual added to the list of Contributing Authors
@@ -106,4 +106,4 @@
 
 Glenn Randers-Pehrson
 glennrp@users.sourceforge.net
-August 15, 2004
+September 12, 2004
diff --git a/README b/README
index 32e4100..af74e71 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-README for libpng version 1.0.16 - August 15, 2004 (shared library 12.0)
+README for libpng version 1.0.17 - September 12, 2004 (shared library 10.0)
 See the note about version numbers near the top of png.h
 
 See INSTALL for instructions on how to install libpng.
@@ -54,7 +54,7 @@
 critical or an ancillary chunk.
 
 The changes made to the library, and bugs fixed are based on discussions
-on the PNG implementation mailing list <png-implement@ccrc.wustl.edu>
+on the PNG-implement mailing list
 and not on material submitted privately to Guy, Andreas, or Glenn.  They will
 forward any good suggestions to the list.
 
@@ -77,16 +77,15 @@
 You can use zlib as a drop-in replacement for fread() and fwrite() if
 you are so inclined.
 
-zlib should be available at the same place that libpng is.
-If not, it should be at ftp.uu.net in /graphics/png
-Eventually, it will be at ftp.uu.net in /pub/archiving/zip/zlib
+zlib should be available at the same place that libpng is, or at.
+ftp://ftp.info-zip.org/pub/infozip/zlib
 
 You may also want a copy of the PNG specification.  It is available
-as an RFC and a W3C Recommendation.  Failing
-these resources you can try ftp.uu.net in the /graphics/png directory.
+as an RFC, a W3C Recommendation, and an ISO/IEC Standard.  You can find
+these at http://www.libpng.org/pub/png/documents/
 
-This code is currently being archived at ftp.uu.net in the
-/graphics/png directory, and on CompuServe, Lib 20 (PNG SUPPORT)
+This code is currently being archived at libpng.sf.net in the
+[DOWNLOAD] area, and on CompuServe, Lib 20 (PNG SUPPORT)
 at GO GRAPHSUP.  If you can't find it in any of those places,
 e-mail me, and I'll help you find it.
 
@@ -105,16 +104,19 @@
 based in a large way on Guy's and Andreas' earlier work), and the PNG group.
 
 glennrp@users.sourceforge.net
-png-implement@ccrc.wustl.edu
+png-implement@ccrc.wustl.edu (subscription required; write to
+majordomo@ccrc.wustl.edu with "subscribe png-implement" in the message).
 
 You can't reach Guy, the original libpng author, at the addresses
 given in previous versions of this document.  He and Andreas will read mail
 addressed to the png-implement list, however.
 
 Please do not send general questions about PNG.  Send them to
-the address in the specification (png-group@w3.org).  At the same
-time, please do not send libpng questions to that address, send them to me
-or to png-implement@ccrc.wustl.edu.  I'll
+the (png-list@ccrc.wustl.edu, subscription required, write to
+majordomo@ccrc.wustl.edu with "subscribe png-list" in your message).
+On the other hand,
+please do not send libpng questions to that address, send them to me
+or to the png-implement list.  I'll
 get them in the end anyway.  If you have a question about something
 in the PNG specification that is related to using libpng, send it
 to me.  Send me any questions that start with "I was using libpng,
@@ -122,10 +124,10 @@
 to others, if necessary.
 
 Please do not send suggestions on how to change PNG.  We have
-been discussing PNG for three years now, and it is official and
+been discussing PNG for nine years now, and it is official and
 finished.  If you have suggestions for libpng, however, I'll
-gladly listen.  Even if your suggestion is not used for version
-1.0, it may be used later.
+gladly listen.  Even if your suggestion is not used immediately,
+it may be used later.
 
 Files in this distribution:
 
@@ -173,9 +175,9 @@
        visupng      =>  Contains a MSVC workspace for VisualPng
       projects      =>  Contains project files and workspaces for building DLL
        beos             =>  Contains a Beos workspace for building libpng
-       borland          =>  Contains a Borland workspace for building libpng
+       c5builder        =>  Contains a Borland workspace for building libpng
                             and zlib
-       msvc             =>  Contains a Microsoft Visual C++ (MSVC) workspace
+       visualc6         =>  Contains a Microsoft Visual C++ (MSVC) workspace
                             for building libpng and zlib
        netware.txt      =>  Contains instructions for downloading a set of
                             project files for building libpng and zlib on
@@ -187,10 +189,10 @@
        descrip.mms      =>  VMS makefile for MMS or MMK
        makefile.std     =>  Generic UNIX makefile (cc, creates static libpng.a)
        makefile.linux   =>  Linux/ELF makefile
-                            (gcc, creates libpng12.so.0.1.2.5)
-       makefile.gcmmx   =>  Linux/ELF makefile (gcc, creates
-                            libpng12.so.0.1.2.5, uses assembler code
-                            tuned for Intel MMX platform)
+                            (gcc, creates libpng10.so.0.1.0.17)
+       makefile.gcmmx   =>  Linux/ELF makefile
+                            (gcc, creates libpng10.so.0.1.0.17,
+                            uses assembler code tuned for Intel MMX platform)
        makefile.gcc     =>  Generic makefile (gcc, creates static libpng.a)
        makefile.knr     =>  Archaic UNIX Makefile that converts files with
                             ansi2knr (Requires ansi2knr.c from
@@ -202,20 +204,21 @@
        makefile.freebsd =>  FreeBSD makefile
        makefile.hpgcc   =>  HPUX makefile using gcc
        makefile.hpux    =>  HPUX (10.20 and 11.00) makefile
+       makefile.hp64    =>  HPUX (10.20 and 11.00) makefile, 64 bit
        makefile.ibmc    =>  IBM C/C++ version 3.x for Win32 and OS/2 (static)
        makefile.intel   =>  Intel C/C++ version 4.0 and later
        libpng.icc       =>  Project file, IBM VisualAge/C++ 4.0 or later
-       makefile.macosx  =>  MACOS X Makefile
        makefile.netbsd  =>  NetBSD/cc makefile, PNGGCCRD, makes libpng.so.
-       makefile.ne0bsd =>  NetBSD/cc makefile, PNGGCCRD, makes libpng0.so
+       makefile.ne10bsd  =>  NetBSD/cc makefile, PNGGCCRD, makes libpng10.so
        makefile.openbsd =>  OpenBSD makefile
        makefile.sgi     =>  Silicon Graphics IRIX (cc, creates static lib)
-       makefile.sggcc   =>  Silicon Graphics (gcc, creates libpng12.so.0.1.2.5)
+       makefile.sggcc   =>  Silicon Graphics
+                            (gcc, creates libpng10.so.0.1.0.17)
        makefile.sunos   =>  Sun makefile
        makefile.solaris =>  Solaris 2.X makefile
-                            (gcc, creates libpng12.so.0.1.2.5)
+                            (gcc, creates libpng10.so.0.1.0.17)
        makefile.so9     =>  Solaris 9 makefile
-                            (gcc, creates libpng12.so.0.1.2.5)
+                            (gcc, creates libpng10.so.0.1.0.17)
        makefile.32sunu  =>  Sun Ultra 32-bit makefile
        makefile.64sunu  =>  Sun Ultra 64-bit makefile
        makefile.sco     =>  For SCO OSr5  ELF and Unixware 7 with Native cc
@@ -229,11 +232,10 @@
        makefile.beos    =>  BEOS makefile for X86
        makefile.bor     =>  Borland makefile (uses bcc)
        makefile.bc32    =>  32-bit Borland C++ (all modules compiled in C mode)
-       makefile.bd32    =>  To make a png32bd.dll with Borland C++ 4.5
        makefile.tc3     =>  Turbo C 3.0 makefile
        makefile.dj2     =>  DJGPP 2 makefile
        makefile.msc     =>  Microsoft C makefile
-       makefile.vcawin32 => makefile for Microsoft Visual C++ 5.0 and
+       makefile.vcawin32=>  makefile for Microsoft Visual C++ 5.0 and
                             later (uses assembler code tuned for Intel MMX
                             platform)
        makefile.vcwin32 =>  makefile for Microsoft Visual C++ 4.0 and
@@ -242,28 +244,17 @@
        pngos2.def       =>  OS/2 module definition file used by makefile.os2
        makefile.watcom  =>  Watcom 10a+ Makefile, 32-bit flat memory model
        makevms.com      =>  VMS build script
-       pngdef.pas       =>  Defines for a png32bd.dll with Borland C++ 4.5
        SCOPTIONS.ppc    =>  Used with smakefile.ppc
-      mangle        =>  Directory containing scripts to build libpng12m.so:
-       mangle.in        =>  Function-decoration macros added to png.h by the
-                            makefiles.
-       makefile.linux   =>  Linux/ELF makefile
-                            (gcc, creates libpng12m.so.0.1.2.5)
-       makefile.gcmmx   =>  Linux/ELF makefile (gcc, creates
-                            libpng12.so.0m.1.2.5, uses assembler code
-                            tuned for Intel MMX platform)
-       makefile.sgi     =>  Silicon Graphics (cc, creates libpng12m.so)
-       makefile.sggcc   =>  Silicon Graphics (gcc, creates libpng12m.so)
 
 Good luck, and happy coding.
 
--Glenn Randers-Pehrson
- Internet: randeg@alum.rpi.edu
+-Glenn Randers-Pehrson (current maintainer)
+ Internet: glennrp@users.sourceforge.net
 
--Andreas Eric Dilger
+-Andreas Eric Dilger (former maintainer, 1996-1997)
  Internet: adilger@enel.ucalgary.ca
  Web: http://www-mddsp.enel.ucalgary.ca/People/adilger/
 
--Guy Eric Schalnat
+-Guy Eric Schalnat (original author and former maintainer, 1995-1996)
  (formerly of Group 42, Inc)
  Internet: gschal@infinet.com
diff --git a/Y2KINFO b/Y2KINFO
index 2d38f31..40338b0 100644
--- a/Y2KINFO
+++ b/Y2KINFO
@@ -1,13 +1,13 @@
    Y2K compliance in libpng:
    =========================
 
-      August 15, 2004
+      September 12, 2004
 
       Since the PNG Development group is an ad-hoc body, we can't make
       an official declaration.
 
       This is your unofficial assurance that libpng from version 0.71 and
-      upward through 1.0.16 are Y2K compliant.  It is my belief that earlier
+      upward through 1.0.17 are Y2K compliant.  It is my belief that earlier
       versions were also Y2K compliant.
 
       Libpng only has three year fields.  One is a 2-byte unsigned integer
diff --git a/configure b/configure
index 5925b6e..a505f46 100755
--- a/configure
+++ b/configure
@@ -1,13 +1,13 @@
 #!/bin/sh
 echo "
   There is no \"configure\" script in this distribution of
-  libpng-1.0.16.
+  libpng-1.0.17.
 
   Instead, please copy the appropriate makefile for your system from the
   \"scripts\" directory.  Read the INSTALL file for more details.
 
   Update, July 2004: you can get a "configure" based distribution
   from the libpng distribution sites.  Download the file
-  libpng-1.0.16-config.tar.gz
+  libpng-1.0.17-config.tar.gz
 "
 
diff --git a/example.c b/example.c
index fb1f5ed..ba0ecc5 100644
--- a/example.c
+++ b/example.c
@@ -742,6 +742,9 @@
    png_byte image[height][width*bytes_per_pixel];
    png_bytep row_pointers[height];
 
+   if (height > PNG_UINT_32_MAX/png_sizeof(png_bytep))
+     png_error (png_ptr, "Image is too tall to process in memory");
+
    for (k = 0; k < height; k++)
      row_pointers[k] = image + k*width*bytes_per_pixel;
 
diff --git a/libpng.3 b/libpng.3
index a27be76..b8d798c 100644
--- a/libpng.3
+++ b/libpng.3
@@ -1,6 +1,6 @@
-.TH LIBPNG 3 "August 15, 2004"
+.TH LIBPNG 3 "September 12, 2004"
 .SH NAME
-libpng \- Portable Network Graphics (PNG) Reference Library 1.0.16
+libpng \- Portable Network Graphics (PNG) Reference Library 1.0.17
 .SH SYNOPSIS
 \fI\fB
 
@@ -402,6 +402,14 @@
 
 \fI\fB
 
+\fB#if \fI!defined(PNG_1_0_X)
+
+\fBvoid png_set_add_alpha (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fP\fIfiller\fP\fB, int \fIflags\fP\fB);\fP
+
+\fI\fB#endif
+
+\fI\fB
+
 \fBvoid png_set_background (png_structp \fP\fIpng_ptr\fP\fB, png_color_16p \fP\fIbackground_color\fP\fB, int \fP\fIbackground_gamma_code\fP\fB, int \fP\fIneed_expand\fP\fB, double \fIbackground_gamma\fP\fB);\fP
 
 \fI\fB
@@ -773,7 +781,7 @@
 .SH LIBPNG.TXT
 libpng.txt - A description on how to use and modify libpng
 
- libpng version 1.0.16 - August 15, 2004
+ libpng version 1.0.17 - September 12, 2004
  Updated and distributed by Glenn Randers-Pehrson
  <glennrp@users.sourceforge.net>
  Copyright (c) 1998-2004 Glenn Randers-Pehrson
@@ -810,19 +818,23 @@
 of reducing the amount of time and effort it takes to support the PNG
 file format in application programs.
 
-The PNG-1.2 specification is available at <http://www.libpng.org/pub/png>
-and at <ftp://ftp.uu.net/graphics/png/documents/>.
+The PNG specification (second edition), November 2003, is available as
+a W3C Recommendation and as an ISO Standard (ISO/IEC 15948:2003 (E)) at
+<http://www.w3.org/TR/2003/REC-PNG-20031110/
+The W3C and ISO documents have identical technical content.
+
+The PNG-1.2 specification is available at
+<http://www.libpng.org/pub/png/documents/>
 
 The PNG-1.0 specification is available
-as RFC 2083 <ftp://ftp.uu.net/graphics/png/documents/> and as a
+as RFC 2083 <http://www.libpng.org/pub/png/documents/> and as a
 W3C Recommendation <http://www.w3.org/TR/REC.png.html>. Some
 additional chunks are described in the special-purpose public chunks
-documents at <ftp://ftp.uu.net/graphics/png/documents/>.
+documents at <http://www.libpng.org/pub/png/documents/>.
 
 Other information
 about PNG, and the latest version of libpng, can be found at the PNG home
-page, <http://www.libpng.org/pub/png/>
-and at <ftp://ftp.uu.net/graphics/png/>.
+page, <http://www.libpng.org/pub/png/>.
 
 Most users will not have to modify the library significantly; advanced
 users may want to modify it more.  All attempts were made to make it as
@@ -855,7 +867,6 @@
 by use of some of the MMX assembler code in pnggccrd.c, which is only
 compiled when the user defines PNG_THREAD_UNSAFE_OK.
 
-
 .SH II. Structures
 
 There are two main structures that are important to libpng, png_struct
@@ -1073,28 +1084,6 @@
 
     png_set_read_status_fn(png_ptr, read_row_callback);
 
-%-%.SS Width and height limits
-%-%
-%-%The PNG specification allows the width and height of an image to be as
-%-%large as 2^31-1 (0x7fffffff), or about 2.147 billion rows and columns.
-%-%Since very few applications really need to process such large images,
-%-%we have imposed an arbitrary 1-million limit on rows and columns.
-%-%Larger images will be rejected immediately with a png_error() call. If
-%-%you wish to override this limit, you can use
-%-%
-%-%   png_set_user_limits(png_ptr, width_max, height_max);
-%-%
-%-%to set your own limits, or use width_max = height_max = 0x7fffffffL
-%-%to allow all valid dimensions (libpng may reject some very large images
-%-%anyway because of potential buffer overflow conditions).
-%-%
-%-%You should put this statement after you create the PNG structure and
-%-%before calling png_read_info(), png_read_png(), or png_process_data().
-%-%If you need to retrieve the limits that are being applied, use
-%-%
-%-%   width_max = png_get_user_width_max(png_ptr);
-%-%   height_max = png_get_user_height_max(png_ptr);
-%-%
 .SS Unknown-chunk handling
 
 Now you get to set the way the library processes unknown chunks in the
@@ -1170,6 +1159,9 @@
 (The final parameter of this call is not yet used.  Someday it might point
 to transformation parameters required by some future input transform.)
 
+You must use png_transforms and not call any png_set_transform() functions
+when you use png_read_png().
+
 After you have called png_read_png(), you can retrieve the image data
 with
 
@@ -1534,14 +1526,14 @@
 For example, 4 bit/pixel paletted or grayscale data will be returned
 2 pixels/byte with the leftmost pixel in the high-order bits of the
 byte, unless png_set_packing() is called.  8-bit RGB data will be stored
-in RGB RGB RGB format unless png_set_filler() is called to insert filler
-bytes, either before or after each RGB triplet.  16-bit RGB data will
-be returned RRGGBB RRGGBB, with the most significant byte of the color
-value first, unless png_set_strip_16() is called to transform it to
-regular RGB RGB triplets, or png_set_filler() is called to insert
-filler bytes, either before or after each RRGGBB triplet.  Similarly,
-8-bit or 16-bit grayscale data can be modified with png_set_filler()
-or png_set_strip_16().
+in RGB RGB RGB format unless png_set_filler()
+is called to insert filler bytes, either before or after each RGB triplet.
+16-bit RGB data will be returned RRGGBB RRGGBB, with the most significant
+byte of the color value first, unless png_set_strip_16() is called to
+transform it to regular RGB RGB triplets, or png_set_filler|add alpha()
+is called to insert filler bytes, either before or after each RRGGBB
+triplet.  Similarly, 8-bit or 16-bit grayscale data can be modified with
+png_set_filler() or png_set_strip_16().
 
 The following code transforms grayscale images of less than 8 to 8 bits,
 changes paletted images to RGB, and adds a full alpha channel if there is
@@ -1626,6 +1618,7 @@
 opaque alpha channel, use filler=0xff or 0xffff and PNG_FILLER_AFTER which
 will generate RGBA pixels.
 
+           color_type == PNG_COLOR_TYPE_GRAY)
 If you are reading an image with an alpha channel, and you need the
 data as ARGB instead of the normal PNG format RGBA:
 
@@ -2770,6 +2763,9 @@
 (The final parameter of this call is not yet used.  Someday it might point
 to transformation parameters required by some future output transform.)
 
+You must use png_transforms and not call any png_set_transform() functions
+when you use png_write_png().
+
 .SS The low-level write interface
 
 If you are going the low-level route instead, you are now ready to
@@ -3462,125 +3458,6 @@
 having level = 0 will be printed.  There aren't any such statements in
 this version of libpng, but if you insert some they will be printed.
 
-%-%.SH VI.  Runtime optimization
-%-%
-%-%A new feature in libpng 1.2.0 is the ability to dynamically switch between
-%-%standard and optimized versions of some routines.  Currently these are
-%-%limited to three computationally intensive tasks when reading PNG files:
-%-%decoding row filters, expanding interlacing, and combining interlaced or
-%-%transparent row data with previous row data.  Currently the optimized
-%-%versions are available only for x86 (Intel, AMD, etc.) platforms with
-%-%MMX support, though this may change in future versions.  (For example,
-%-%the non-MMX assembler optimizations for zlib might become similarly
-%-%runtime-selectable in future releases, in which case libpng could be
-%-%extended to support them.  Alternatively, the compile-time choice of
-%-%floating-point versus integer routines for gamma correction might become
-%-%runtime-selectable.)
-%-%
-%-%Because such optimizations tend to be very platform- and compiler-dependent,
-%-%both in how they are written and in how they perform, the new runtime code
-%-%in libpng has been written to allow programs to query, enable, and disable
-%-%either specific optimizations or all such optimizations.  For example, to
-%-%enable all possible optimizations (bearing in mind that some "optimizations"
-%-%may actually run more slowly in rare cases):
-%-%
-%-%    #if defined(PNG_LIBPNG_VER) && (PNG_LIBPNG_VER >= 10200)
-%-%       png_uint_32 mask, flags;
-%-%
-%-%       flags = png_get_asm_flags(png_ptr);
-%-%       mask = png_get_asm_flagmask(PNG_SELECT_READ | PNG_SELECT_WRITE);
-%-%       png_set_asm_flags(png_ptr, flags | mask);
-%-%    #endif
-%-%
-%-%To enable only optimizations relevant to reading PNGs, use PNG_SELECT_READ
-%-%by itself when calling png_get_asm_flagmask(); similarly for optimizing
-%-%only writing.  To disable all optimizations:
-%-%
-%-%    #if defined(PNG_LIBPNG_VER) && (PNG_LIBPNG_VER >= 10200)
-%-%       flags = png_get_asm_flags(png_ptr);
-%-%       mask = png_get_asm_flagmask(PNG_SELECT_READ | PNG_SELECT_WRITE);
-%-%       png_set_asm_flags(png_ptr, flags & ~mask);
-%-%    #endif
-%-%
-%-%To enable or disable only MMX-related features, use png_get_mmx_flagmask()
-%-%in place of png_get_asm_flagmask().  The mmx version takes one additional
-%-%parameter:
-%-%
-%-%    #if defined(PNG_LIBPNG_VER) && (PNG_LIBPNG_VER >= 10200)
-%-%       int selection = PNG_SELECT_READ | PNG_SELECT_WRITE;
-%-%       int compilerID;
-%-%
-%-%       mask = png_get_mmx_flagmask(selection, &compilerID);
-%-%    #endif
-%-%
-%-%On return, compilerID will indicate which version of the MMX assembler
-%-%optimizations was compiled.  Currently two flavors exist:  Microsoft
-%-%Visual C++ (compilerID == 1) and GNU C (a.k.a. gcc/gas, compilerID == 2).
-%-%On non-x86 platforms or on systems compiled without MMX optimizations, a
-%-%value of -1 is used.
-%-%
-%-%Note that both png_get_asm_flagmask() and png_get_mmx_flagmask() return
-%-%all valid, settable optimization bits for the version of the library that's
-%-%currently in use.  In the case of shared (dynamically linked) libraries,
-%-%this may include optimizations that did not exist at the time the code was
-%-%written and compiled.  It is also possible, of course, to enable only known,
-%-%specific optimizations; for example:
-%-%
-%-%    #if defined(PNG_LIBPNG_VER) && (PNG_LIBPNG_VER >= 10200)
-%-%       flags = PNG_ASM_FLAG_MMX_READ_COMBINE_ROW  \
-%-%             | PNG_ASM_FLAG_MMX_READ_INTERLACE    \
-%-%             | PNG_ASM_FLAG_MMX_READ_FILTER_SUB   \
-%-%             | PNG_ASM_FLAG_MMX_READ_FILTER_UP    \
-%-%             | PNG_ASM_FLAG_MMX_READ_FILTER_AVG   \
-%-%             | PNG_ASM_FLAG_MMX_READ_FILTER_PAETH ;
-%-%       png_set_asm_flags(png_ptr, flags);
-%-%    #endif
-%-%
-%-%This method would enable only the MMX read-optimizations available at the
-%-%time of libpng 1.2.0's release, regardless of whether a later version of
-%-%the DLL were actually being used.  (Also note that these functions did not
-%-%exist in versions older than 1.2.0, so any attempt to run a dynamically
-%-%linked app on such an older version would fail.)
-%-%
-%-%To determine whether the processor supports MMX instructions at all, use
-%-%the png_mmx_support() function:
-%-%
-%-%    #if defined(PNG_LIBPNG_VER) && (PNG_LIBPNG_VER >= 10200)
-%-%       mmxsupport = png_mmx_support();
-%-%    #endif
-%-%
-%-%It returns -1 if MMX support is not compiled into libpng, 0 if MMX code
-%-%is compiled but MMX is not supported by the processor, or 1 if MMX support
-%-%is fully available.  Note that png_mmx_support(), png_get_mmx_flagmask(),
-%-%and png_get_asm_flagmask() all may be called without allocating and ini-
-%-%tializing any PNG structures (for example, as part of a usage screen or
-%-%"about" box).
-%-%
-%-%The following code can be used to prevent an application from using the
-%-%thread_unsafe features, even if libpng was built with PNG_THREAD_UNSAFE_OK
-%-%defined:
-%-%
-%-%#if defined(PNG_USE_PNGGCCRD) && defined(PNG_ASSEMBLER_CODE_SUPPORTED) \
-%-%  && defined(PNG_THREAD_UNSAFE_OK)
-%-%    /* Disable thread-unsafe features of pnggccrd */
-%-%    if (png_access_version() >= 10200)
-%-%    {
-%-%      png_uint_32 mmx_disable_mask = 0;
-%-%      png_uint_32 asm_flags;
-%-%
-%-%      mmx_disable_mask |= ( PNG_ASM_FLAG_MMX_READ_COMBINE_ROW  \
-%-%                          | PNG_ASM_FLAG_MMX_READ_FILTER_SUB   \
-%-%                          | PNG_ASM_FLAG_MMX_READ_FILTER_AVG   \
-%-%                          | PNG_ASM_FLAG_MMX_READ_FILTER_PAETH );
-%-%      asm_flags = png_get_asm_flags(png_ptr);
-%-%      png_set_asm_flags(png_ptr, asm_flags & ~mmx_disable_mask);
-%-%    }
-%-%#endif
-%-%
-%-%For more extensive examples of runtime querying, enabling and disabling
-%-%of optimized features, see contrib/gregbook/readpng2.c in the libpng
-%-%source-code distribution.
-%-%
 .SH VI.  MNG support
 
 The MNG specification (available at http://www.libpng.org/pub/mng) allows
@@ -3655,15 +3532,15 @@
 
    png_uint_32 application_vn = PNG_LIBPNG_VER;
 
-.SH VII. Y2K Compliance in libpng
+.SH VIII. Y2K Compliance in libpng
 
-August 15, 2004
+September 12, 2004
 
 Since the PNG Development group is an ad-hoc body, we can't make
 an official declaration.
 
 This is your unofficial assurance that libpng from version 0.71 and
-upward through 1.0.16 are Y2K compliant.  It is my belief that earlier
+upward through 1.0.17 are Y2K compliant.  It is my belief that earlier
 versions were also Y2K compliant.
 
 Libpng only has three year fields.  One is a 2-byte unsigned integer that
@@ -3806,6 +3683,11 @@
  1.2.6rc1-5          13    10206  12.so.0.1.2.6rc1-5
  1.0.16              10    10016  10.so.0.1.0.16
  1.2.6               13    10206  12.so.0.1.2.6
+ 1.2.7beta1-2        13    10207  12.so.0.1.2.7beta1-2
+ 1.0.17rc1           10    10017  12.so.0.1.0.17rc1
+ 1.2.7rc1            13    10207  12.so.0.1.2.7rc1
+ 1.0.17              10    10017  12.so.0.1.0.17
+ 1.2.7               13    10207  12.so.0.1.2.7
 
 Henceforth the source version will match the shared-library minor
 and patch numbers; the shared-library major version number will be
@@ -3822,7 +3704,7 @@
 .LP
 .IR libpng :
 .IP
-ftp://ftp.uu.net/graphics/png
+http://libpng.sourceforge.net (follow the [DOWNLOAD] link)
 http://www.libpng.org/pub/png
 
 .LP
@@ -3832,8 +3714,6 @@
 .I libpng
 or at
 .br
-ftp://ftp.uu.net/pub/archiving/zip/zlib
-.br
 ftp://ftp.info-zip.org/pub/infozip/zlib
 
 .LP
@@ -3863,13 +3743,14 @@
 
 Thanks to Frank J. T. Wojcik for helping with the documentation.
 
-Libpng version 1.0.16 - August 15, 2004:
+Libpng version 1.0.17 - September 12, 2004:
 Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc.
 Currently maintained by Glenn Randers-Pehrson (glennrp@users.sourceforge.net).
 
 Supported by the PNG development group
 .br
-(png-implement@ccrc.wustl.edu).
+png-implement@ccrc.wustl.edu (subscription required; write to
+majordomo@ccrc.wustl.edu with "subscribe png-implement" in the message).
 
 .SH COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
 
@@ -3880,7 +3761,7 @@
 If you modify libpng you may insert additional notices immediately following
 this sentence.
 
-libpng version 1.2.6, August 15, 2004, is
+libpng version 1.2.6, September 12, 2004, is
 Copyright (c) 2004 Glenn Randers-Pehrson, and is
 distributed according to the same disclaimer and license as libpng-1.2.5
 with the following individual added to the list of Contributing Authors
@@ -3979,7 +3860,7 @@
 
 Glenn Randers-Pehrson
 glennrp@users.sourceforge.net
-August 15, 2004
+September 12, 2004
 
 .\" end of man page
 
diff --git a/libpng.txt b/libpng.txt
index d1d3742..6029929 100644
--- a/libpng.txt
+++ b/libpng.txt
@@ -1,6 +1,6 @@
 libpng.txt - A description on how to use and modify libpng
 
- libpng version 1.0.16 - August 15, 2004
+ libpng version 1.0.17 - September 12, 2004
  Updated and distributed by Glenn Randers-Pehrson
  <glennrp@users.sourceforge.net>
  Copyright (c) 1998-2004 Glenn Randers-Pehrson
@@ -37,19 +37,23 @@
 of reducing the amount of time and effort it takes to support the PNG
 file format in application programs.
 
-The PNG-1.2 specification is available at <http://www.libpng.org/pub/png>
-and at <ftp://ftp.uu.net/graphics/png/documents/>.
+The PNG specification (second edition), November 2003, is available as
+a W3C Recommendation and as an ISO Standard (ISO/IEC 15948:2003 (E)) at
+<http://www.w3.org/TR/2003/REC-PNG-20031110/
+The W3C and ISO documents have identical technical content.
+
+The PNG-1.2 specification is available at
+<http://www.libpng.org/pub/png/documents/>
 
 The PNG-1.0 specification is available
-as RFC 2083 <ftp://ftp.uu.net/graphics/png/documents/> and as a
+as RFC 2083 <http://www.libpng.org/pub/png/documents/> and as a
 W3C Recommendation <http://www.w3.org/TR/REC.png.html>. Some
 additional chunks are described in the special-purpose public chunks
-documents at <ftp://ftp.uu.net/graphics/png/documents/>.
+documents at <http://www.libpng.org/pub/png/documents/>.
 
 Other information
 about PNG, and the latest version of libpng, can be found at the PNG home
-page, <http://www.libpng.org/pub/png/>
-and at <ftp://ftp.uu.net/graphics/png/>.
+page, <http://www.libpng.org/pub/png/>.
 
 Most users will not have to modify the library significantly; advanced
 users may want to modify it more.  All attempts were made to make it as
@@ -82,7 +86,6 @@
 by use of some of the MMX assembler code in pnggccrd.c, which is only
 compiled when the user defines PNG_THREAD_UNSAFE_OK.
 
-
 II. Structures
 
 There are two main structures that are important to libpng, png_struct
@@ -375,6 +378,9 @@
 (The final parameter of this call is not yet used.  Someday it might point
 to transformation parameters required by some future input transform.)
 
+You must use png_transforms and not call any png_set_transform() functions
+when you use png_read_png().
+
 After you have called png_read_png(), you can retrieve the image data
 with
 
@@ -739,14 +745,14 @@
 For example, 4 bit/pixel paletted or grayscale data will be returned
 2 pixels/byte with the leftmost pixel in the high-order bits of the
 byte, unless png_set_packing() is called.  8-bit RGB data will be stored
-in RGB RGB RGB format unless png_set_filler() is called to insert filler
-bytes, either before or after each RGB triplet.  16-bit RGB data will
-be returned RRGGBB RRGGBB, with the most significant byte of the color
-value first, unless png_set_strip_16() is called to transform it to
-regular RGB RGB triplets, or png_set_filler() is called to insert
-filler bytes, either before or after each RRGGBB triplet.  Similarly,
-8-bit or 16-bit grayscale data can be modified with png_set_filler()
-or png_set_strip_16().
+in RGB RGB RGB format unless png_set_filler()
+is called to insert filler bytes, either before or after each RGB triplet.
+16-bit RGB data will be returned RRGGBB RRGGBB, with the most significant
+byte of the color value first, unless png_set_strip_16() is called to
+transform it to regular RGB RGB triplets, or png_set_filler|add alpha()
+is called to insert filler bytes, either before or after each RRGGBB
+triplet.  Similarly, 8-bit or 16-bit grayscale data can be modified with
+png_set_filler() or png_set_strip_16().
 
 The following code transforms grayscale images of less than 8 to 8 bits,
 changes paletted images to RGB, and adds a full alpha channel if there is
@@ -831,6 +837,7 @@
 opaque alpha channel, use filler=0xff or 0xffff and PNG_FILLER_AFTER which
 will generate RGBA pixels.
 
+           color_type == PNG_COLOR_TYPE_GRAY)
 If you are reading an image with an alpha channel, and you need the
 data as ARGB instead of the normal PNG format RGBA:
 
@@ -1975,6 +1982,9 @@
 (The final parameter of this call is not yet used.  Someday it might point
 to transformation parameters required by some future output transform.)
 
+You must use png_transforms and not call any png_set_transform() functions
+when you use png_write_png().
+
 The low-level write interface
 
 If you are going the low-level route instead, you are now ready to
@@ -2741,15 +2751,15 @@
 
    png_uint_32 application_vn = PNG_LIBPNG_VER;
 
-VII. Y2K Compliance in libpng
+VIII. Y2K Compliance in libpng
 
-August 15, 2004
+September 12, 2004
 
 Since the PNG Development group is an ad-hoc body, we can't make
 an official declaration.
 
 This is your unofficial assurance that libpng from version 0.71 and
-upward through 1.0.16 are Y2K compliant.  It is my belief that earlier
+upward through 1.0.17 are Y2K compliant.  It is my belief that earlier
 versions were also Y2K compliant.
 
 Libpng only has three year fields.  One is a 2-byte unsigned integer that
diff --git a/libpngpf.3 b/libpngpf.3
index 6ca45c5..f0eaad4 100644
--- a/libpngpf.3
+++ b/libpngpf.3
@@ -1,6 +1,6 @@
-.TH LIBPNGPF 3 "August 15, 2004"
+.TH LIBPNGPF 3 "September 12, 2004"
 .SH NAME
-libpng \- Portable Network Graphics (PNG) Reference Library 1.0.16
+libpng \- Portable Network Graphics (PNG) Reference Library 1.0.17
 (private functions)
 .SH SYNOPSIS
 \fB\fB#include <png.h>\fP\fP
diff --git a/png.5 b/png.5
index e9e9bc7..1cc5ef4 100644
--- a/png.5
+++ b/png.5
@@ -1,4 +1,4 @@
-.TH PNG 5 "August 15, 2004"
+.TH PNG 5 "September 12, 2004"
 .SH NAME
 png \- Portable Network Graphics (PNG) format
 .SH DESCRIPTION
@@ -20,12 +20,14 @@
 .SH "SEE ALSO"
 .IR libpng(3), zlib(3), deflate(5), and zlib(5)
 .LP
+PNG specification (second edition), November 2003:
+.IP
+.br
+  <http://www.w3.org/TR/2003/REC-PNG-20031110/
 PNG 1.2 specification, July 1999:
 .IP
 .br
 http://www.libpng.org/pub/png
-.br
-or ftp://ftp.uu.net/graphics/png/documents
 .LP
 PNG 1.0 specification, October 1996:
 .IP
@@ -41,15 +43,27 @@
 .SH AUTHORS
 This man page: Glenn Randers-Pehrson
 .LP
+Portable Network Graphics (PNG) Specification (Second Edition)
+Information technology - Computer graphics and image processing -
+Portable Network Graphics (PNG): Functional specification.
+ISO/IEC 15948:2003 (E) (November 10, 2003): David Duce and others.
+.LP
 Portable Network Graphics (PNG) Specification Version 1.2 (July 8, 1999):
-Glenn Randers-Pehrson and others (png-list@ccrc.wustl.edu).
+Glenn Randers-Pehrson and others (png-list).
 .LP
 Portable Network Graphics (PNG) Specification Version 1.0 (October 1, 1996):
-Thomas Boutell and others (png-list@ccrc.wustl.edu).
+Thomas Boutell and others (png-list).
 .LP
 
 
 .SH COPYRIGHT NOTICE
+.LP
+This man page is Copyright (c) 1998-2004 Glenn Randers-Pehrson.  See png.h
+for conditions of use and distribution.
+.LP
+The PNG Specification (Second Edition) is
+Copyright (c) 2003 W3C. (MIT, ERCIM, Keio), All Rights Reserved.
+.LP
 The PNG-1.2 specification is copyright (c) 1999 Glenn Randers-Pehrson.
 See the specification for conditions of use and distribution.
 .LP
diff --git a/png.c b/png.c
index 1404181..3a9cae3 100644
--- a/png.c
+++ b/png.c
@@ -1,7 +1,7 @@
 
 /* png.c - location for general purpose libpng functions
  *
- * libpng version 1.0.16 - August 15, 2004
+ * libpng version 1.0.17 - September 12, 2004
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2004 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@@ -13,7 +13,7 @@
 #include "png.h"
 
 /* Generate a compiler error if there is an old png.h in the search path. */
-typedef version_1_0_16 Your_png_h_is_not_version_1_0_16;
+typedef version_1_0_17 Your_png_h_is_not_version_1_0_17;
 
 /* Version information for C files.  This had better match the version
  * string defined in png.h.  */
@@ -678,7 +678,7 @@
 png_get_copyright(png_structp png_ptr)
 {
    if (&png_ptr != NULL)  /* silence compiler warning about unused png_ptr */
-   return ((png_charp) "\n libpng version 1.0.16 - August 15, 2004\n\
+   return ((png_charp) "\n libpng version 1.0.17 - September 12, 2004\n\
    Copyright (c) 1998-2004 Glenn Randers-Pehrson\n\
    Copyright (c) 1996-1997 Andreas Dilger\n\
    Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.\n");
diff --git a/png.h b/png.h
index 648aa7e..322aef6 100644
--- a/png.h
+++ b/png.h
@@ -1,6 +1,6 @@
 /* png.h - header file for PNG reference library
  *
- * libpng version 1.0.16 - August 15, 2004
+ * libpng version 1.0.17 - September 12, 2004
  * Copyright (c) 1998-2004 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
  * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
@@ -8,7 +8,7 @@
  * Authors and maintainers:
  *  libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
  *  libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger
- *  libpng versions 0.97, January 1998, through 1.0.16 - August 15, 2004: Glenn
+ *  libpng versions 0.97, January 1998, through 1.0.17 - September 12, 2004: Glenn
  *  See also "Contributing Authors", below.
  *
  * Note about libpng version numbers:
@@ -101,6 +101,11 @@
  *    1.2.6beta1-4            13    10206  12.so.0.1.2.6beta1-4
  *    1.0.16                  10    10016  10.so.0.1.0.16
  *    1.2.6                   13    10206  12.so.0.1.2.6
+ *    1.2.7beta1-2            13    10207  12.so.0.1.2.7beta1-2
+ *    1.0.17rc1               10    10017  12.so.0.1.0.17rc1
+ *    1.2.7rc1                13    10207  12.so.0.1.2.7rc1
+ *    1.0.17                  10    10017  12.so.0.1.0.17
+ *    1.2.7                   13    10207  12.so.0.1.2.7
  *
  *    Henceforth the source version will match the shared-library major
  *    and minor numbers; the shared-library major version number will be
@@ -120,8 +125,8 @@
  *    in binary compatibility (e.g., when a new feature is added).
  *
  * See libpng.txt or libpng.3 for more information.  The PNG specification
- * is available as RFC 2083 <ftp://ftp.uu.net/graphics/png/documents/>
- * and as a W3C Recommendation <http://www.w3.org/TR/REC.png.html>
+ * is available as a W3C Recommendation and as an ISO Specification,
+ * <http://www.w3.org/TR/2003/REC-PNG-20031110/
  */
 
 /*
@@ -130,17 +135,17 @@
  * If you modify libpng you may insert additional notices immediately following
  * this sentence.
  *
- * libpng version 1.2.6, August 15, 2004, is
- * Copyright (c) 2004 Glenn Randers-Pehrson, and is
+ * libpng versions 1.2.6, August 15, 2004, through 1.0.17, September 12, 2004, are
+ * Copyright (c) 2004 Glenn Randers-Pehrson, and are
  * distributed according to the same disclaimer and license as libpng-1.2.5
- * with the following individual added to the list of Contributing Authors
+ * with the following individual added to the list of Contributing Authors:
  *
  *    Cosmin Truta
  *
- * libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are
+ * libpng versions 1.0.7, July 1, 2000, through 1.2.5, October 3, 2002, are
  * Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are
  * distributed according to the same disclaimer and license as libpng-1.0.6
- * with the following individuals added to the list of Contributing Authors
+ * with the following individuals added to the list of Contributing Authors:
  *
  *    Simon-Pierre Cadieux
  *    Eric S. Raymond
@@ -156,8 +161,8 @@
  *    the user.
  *
  * libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
- * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
- * Distributed according to the same disclaimer and license as libpng-0.96,
+ * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson, and are
+ * distributed according to the same disclaimer and license as libpng-0.96,
  * with the following individuals added to the list of Contributing Authors:
  *
  *    Tom Lane
@@ -242,13 +247,13 @@
  * Y2K compliance in libpng:
  * =========================
  *
- *    August 15, 2004
+ *    September 12, 2004
  *
  *    Since the PNG Development group is an ad-hoc body, we can't make
  *    an official declaration.
  *
  *    This is your unofficial assurance that libpng from version 0.71 and
- *    upward through 1.0.16 are Y2K compliant.  It is my belief that earlier
+ *    upward through 1.0.17 are Y2K compliant.  It is my belief that earlier
  *    versions were also Y2K compliant.
  *
  *    Libpng only has three year fields.  One is a 2-byte unsigned integer
@@ -304,9 +309,9 @@
  */
 
 /* Version information for png.h - this should match the version in png.c */
-#define PNG_LIBPNG_VER_STRING "1.0.16"
+#define PNG_LIBPNG_VER_STRING "1.0.17"
 #define PNG_HEADER_VERSION_STRING \
-   " libpng version 1.0.16 - August 15, 2004 (header)\n"
+   " libpng version 1.0.17 - September 12, 2004 (header)\n"
 
 #define PNG_LIBPNG_VER_SONUM   0
 #define PNG_LIBPNG_VER_DLLNUM  %DLLNUM%
@@ -314,7 +319,7 @@
 /* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */
 #define PNG_LIBPNG_VER_MAJOR   1
 #define PNG_LIBPNG_VER_MINOR   0
-#define PNG_LIBPNG_VER_RELEASE 16
+#define PNG_LIBPNG_VER_RELEASE 17
 /* This should match the numeric part of the final component of
  * PNG_LIBPNG_VER_STRING, omitting any leading zero: */
 
@@ -333,7 +338,7 @@
  * Versions 0.7 through 1.0.0 were in the range 0 to 100 here (only
  * version 1.0.0 was mis-numbered 100 instead of 10000).  From
  * version 1.0.1 it's    xxyyzz, where x=major, y=minor, z=release */
-#define PNG_LIBPNG_VER 10016 /* 1.0.16 */
+#define PNG_LIBPNG_VER 10017 /* 1.0.17 */
 
 #ifndef PNG_VERSION_INFO_ONLY
 
@@ -1310,7 +1315,7 @@
 /* This triggers a compiler error in png.c, if png.c and png.h
  * do not agree upon the version number.
  */
-typedef png_structp version_1_0_16;
+typedef png_structp version_1_0_17;
 
 typedef png_struct FAR * FAR * png_structpp;
 
@@ -1482,12 +1487,17 @@
 #endif
 
 #if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
-/* Add a filler byte to 24-bit RGB images. */
+/* Add a filler byte to 8-bit Gray or 24-bit RGB images. */
 extern PNG_EXPORT(void,png_set_filler) PNGARG((png_structp png_ptr,
    png_uint_32 filler, int flags));
 /* The values of the PNG_FILLER_ defines should NOT be changed */
 #define PNG_FILLER_BEFORE 0
 #define PNG_FILLER_AFTER 1
+/* Add an alpha byte to 8-bit Gray or 24-bit RGB images. */
+#if !defined(PNG_1_0_X)
+extern PNG_EXPORT(void,png_set_add_alpha) PNGARG((png_structp png_ptr,
+   png_uint_32 filler, int flags));
+#endif
 #endif /* PNG_READ_FILLER_SUPPORTED || PNG_WRITE_FILLER_SUPPORTED */
 
 #if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
@@ -2571,6 +2581,7 @@
 #define PNG_RGB_TO_GRAY_ERR  0x200000L
 #define PNG_RGB_TO_GRAY_WARN 0x400000L
 #define PNG_RGB_TO_GRAY      0x600000L  /* two bits, RGB_TO_GRAY_ERR|WARN */
+#define PNG_ADD_ALPHA       0x1000000L  /* Added to libpng-1.2.7 */
 
 /* flags for png_create_struct */
 #define PNG_STRUCT_PNG   0x0001
diff --git a/pngasmrd.h b/pngasmrd.h
deleted file mode 100644
index 335a682..0000000
--- a/pngasmrd.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/* pngasmrd.h - assembler version of utilities to read a PNG file
- *
- * libpng 1.0.16 - August 15, 2004
- * For conditions of distribution and use, see copyright notice in png.h
- * Copyright (c) 2002-2004 Glenn Randers-Pehrson
- *
- */
-
-/* This file is obsolete in libpng-1.0.9 and later; its contents now appear
- * at the end of pngconf.h.
- */
diff --git a/pngconf.h b/pngconf.h
index c81b87c..33154f3 100644
--- a/pngconf.h
+++ b/pngconf.h
@@ -1,7 +1,7 @@
 
 /* pngconf.h - machine configurable file for libpng
  *
- * libpng version 1.0.16 - August 15, 2004
+ * libpng version 1.0.17 - September 12, 2004
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2004 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@@ -17,9 +17,7 @@
 #ifndef PNGCONF_H
 #define PNGCONF_H
 
-#ifdef PNG_USER_CONFIG
-#include "pngusr.h"
-#endif
+#define PNG_1_0_X
 
 /* This is the size of the compression buffer, and thus the size of
  * an IDAT chunk.  Make this whatever size you feel is best for your
@@ -589,13 +587,6 @@
 #  endif
 #endif /* PNG_WRITE_TRANSFORMS_SUPPORTED */
 
-#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
-    defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
-#  ifndef PNG_NO_USER_TRANSFORM_PTR
-#    define PNG_USER_TRANSFORM_PTR_SUPPORTED
-#  endif
-#endif
-
 #define PNG_WRITE_INTERLACING_SUPPORTED  /* not required for PNG-compliant
                                             encoders, but can cause trouble
                                             if left undefined */
@@ -605,12 +596,6 @@
 #  define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
 #endif
 
-#ifndef PNG_1_0_X
-#ifndef PNG_NO_ERROR_NUMBERS
-#define PNG_ERROR_NUMBERS_SUPPORTED
-#endif
-#endif /* PNG_1_0_X */
-
 #ifndef PNG_NO_WRITE_FLUSH
 #  define PNG_WRITE_FLUSH_SUPPORTED
 #endif
@@ -622,6 +607,19 @@
 
 #endif /* PNG_WRITE_SUPPORTED */
 
+#ifndef PNG_1_0_X
+#  ifndef PNG_NO_ERROR_NUMBERS
+#    define PNG_ERROR_NUMBERS_SUPPORTED
+#  endif
+#endif /* PNG_1_0_X */
+
+#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
+    defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
+#  ifndef PNG_NO_USER_TRANSFORM_PTR
+#    define PNG_USER_TRANSFORM_PTR_SUPPORTED
+#  endif
+#endif
+
 #ifndef PNG_NO_STDIO
 #  define PNG_TIME_RFC1123_SUPPORTED
 #endif
diff --git a/pngerror.c b/pngerror.c
index da7453a..2e2a378 100644
--- a/pngerror.c
+++ b/pngerror.c
@@ -1,7 +1,7 @@
 
 /* pngerror.c - stub functions for i/o and memory allocation
  *
- * libpng version 1.0.16 - August 15, 2004
+ * libpng version 1.0.17 - September 12, 2004
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2004 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pnggccrd.c b/pnggccrd.c
index 2edf06a..4cfe070 100644
--- a/pnggccrd.c
+++ b/pnggccrd.c
@@ -6,7 +6,7 @@
  *     and http://www.intel.com/drg/pentiumII/appnotes/923/923.htm
  *     for Intel's performance analysis of the MMX vs. non-MMX code.
  *
- * libpng version 1.0.16 - August 15, 2004
+ * libpng version 1.0.17 - September 12, 2004
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2004 Glenn Randers-Pehrson
  * Copyright (c) 1998, Intel Corporation
diff --git a/pngget.c b/pngget.c
index db937f8..33dd04e 100644
--- a/pngget.c
+++ b/pngget.c
@@ -1,7 +1,7 @@
 
 /* pngget.c - retrieval of values from info struct
  *
- * libpng 1.0.16 - August 15, 2004
+ * libpng 1.0.17 - September 12, 2004
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2004 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pngmem.c b/pngmem.c
index 1be5157..ba50105 100644
--- a/pngmem.c
+++ b/pngmem.c
@@ -1,7 +1,7 @@
 
 /* pngmem.c - stub functions for memory allocation
  *
- * libpng version 1.0.16 - August 15, 2004
+ * libpng version 1.0.17 - September 12, 2004
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2004 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pngnow.png b/pngnow.png
index 174b5fa..82793eb 100644
--- a/pngnow.png
+++ b/pngnow.png
Binary files differ
diff --git a/pngpread.c b/pngpread.c
index 923df63..627da75 100644
--- a/pngpread.c
+++ b/pngpread.c
@@ -1,7 +1,7 @@
 
 /* pngpread.c - read a png file in push mode
  *
- * libpng version 1.0.16 - August 15, 2004
+ * libpng version 1.0.17 - September 12, 2004
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2004 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pngread.c b/pngread.c
index 123bfce..69337bd 100644
--- a/pngread.c
+++ b/pngread.c
@@ -1,7 +1,7 @@
 
 /* pngread.c - read a PNG file
  *
- * libpng 1.0.16 - August 15, 2004
+ * libpng 1.0.17 - September 12, 2004
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2004 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@@ -803,7 +803,7 @@
  * not called png_set_interlace_handling(), the display_row buffer will
  * be ignored, so pass NULL to it.
  *
- * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.16
+ * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.17
  */
 
 void PNGAPI
@@ -853,7 +853,7 @@
  * only call this function once.  If you desire to have an image for
  * each pass of a interlaced image, use png_read_rows() instead.
  *
- * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.16
+ * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.17
  */
 void PNGAPI
 png_read_image(png_structp png_ptr, png_bytepp image)
diff --git a/pngrio.c b/pngrio.c
index 7669ac2..b689410 100644
--- a/pngrio.c
+++ b/pngrio.c
@@ -1,7 +1,7 @@
 
 /* pngrio.c - functions for data input
  *
- * libpng 1.0.16 - August 15, 2004
+ * libpng 1.0.17 - September 12, 2004
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2004 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pngrtran.c b/pngrtran.c
index 7894e39..d6c483f 100644
--- a/pngrtran.c
+++ b/pngrtran.c
@@ -1,7 +1,7 @@
 
 /* pngrtran.c - transforms the data in a row for PNG readers
  *
- * libpng version 1.0.16 - August 15, 2004
+ * libpng version  1.0.17 - September 12, 2004
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2004 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@@ -1135,8 +1135,10 @@
        (info_ptr->color_type == PNG_COLOR_TYPE_GRAY)))
    {
       info_ptr->channels++;
-#if 0 /* if adding a true alpha channel not just filler */
-      info_ptr->color_type |= PNG_COLOR_MASK_ALPHA;
+      /* if adding a true alpha channel not just filler */
+#if !defined(PNG_1_0_X)
+      if (png_ptr->transformations & PNG_ADD_ALPHA)
+        info_ptr->color_type |= PNG_COLOR_MASK_ALPHA;
 #endif
    }
 #endif
@@ -1927,7 +1929,6 @@
             row_info->rowbytes = row_width * 4;
          }
       }
-      row_info->color_type |= PNG_COLOR_MASK_ALPHA;
    } /* COLOR_TYPE == GRAY */
    else if (row_info->color_type == PNG_COLOR_TYPE_RGB)
    {
@@ -2012,7 +2013,6 @@
             row_info->rowbytes = row_width * 8;
          }
       }
-      row_info->color_type |= PNG_COLOR_MASK_ALPHA;
    } /* COLOR_TYPE == RGB */
 }
 #endif
diff --git a/pngrutil.c b/pngrutil.c
index 158f17a..f22cab6 100644
--- a/pngrutil.c
+++ b/pngrutil.c
@@ -1,6 +1,6 @@
 /* pngrutil.c - utilities to read a PNG file
  *
- * libpng version 1.0.16 - August 15, 2004
+ * libpng version 1.0.17 - September 12, 2004
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2004 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pngset.c b/pngset.c
index 5927edb..b571cdd 100644
--- a/pngset.c
+++ b/pngset.c
@@ -1,7 +1,7 @@
 
 /* pngset.c - storage of image information into info struct
  *
- * libpng 1.0.16 - August 15, 2004
+ * libpng 1.0.17 - September 12, 2004
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2004 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pngtest.c b/pngtest.c
index ab08605..b705d49 100644
--- a/pngtest.c
+++ b/pngtest.c
@@ -1,7 +1,7 @@
 
 /* pngtest.c - a simple test program to test libpng
  *
- * libpng 1.0.16 - August 15, 2004
+ * libpng 1.0.17 - September 12, 2004
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2004 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@@ -1551,4 +1551,4 @@
 }
 
 /* Generate a compiler error if there is an old png.h in the search path. */
-typedef version_1_0_16 your_png_h_is_not_version_1_0_16;
+typedef version_1_0_17 your_png_h_is_not_version_1_0_17;
diff --git a/pngtest.png b/pngtest.png
index ebea081..f3a6df4 100644
--- a/pngtest.png
+++ b/pngtest.png
Binary files differ
diff --git a/pngtrans.c b/pngtrans.c
index 7c5ba4f..1c6e876 100644
--- a/pngtrans.c
+++ b/pngtrans.c
@@ -1,7 +1,7 @@
 
 /* pngtrans.c - transforms the data in a row (used by both readers and writers)
  *
- * libpng 1.0.16 - August 15, 2004
+ * libpng  1.0.17 - September 12, 2004
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2004 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@@ -100,7 +100,7 @@
    else
       png_ptr->flags &= ~PNG_FLAG_FILLER_AFTER;
 
-   /* This should probably go in the "do_filler" routine.
+   /* This should probably go in the "do_read_filler" routine.
     * I attempted to do that in libpng-1.0.1a but that caused problems
     * so I restored it in libpng-1.0.2a
    */
@@ -118,6 +118,18 @@
       png_ptr->usr_channels = 2;
    }
 }
+
+#if !defined(PNG_1_0_X)
+/* Added to libpng-1.2.7 */
+void PNGAPI
+png_set_add_alpha(png_structp png_ptr, png_uint_32 filler, int filler_loc)
+{
+   png_debug(1, "in png_set_add_alpha\n");
+   png_set_filler(png_ptr, filler, filler_loc);
+   png_ptr->transformations |= PNG_ADD_ALPHA;
+}
+#endif
+
 #endif
 
 #if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \
@@ -375,16 +387,13 @@
    if (row != NULL && row_info != NULL)
 #endif
    {
-/*
-      if (row_info->color_type == PNG_COLOR_TYPE_RGB ||
-          row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
-*/
       png_bytep sp=row;
       png_bytep dp=row;
       png_uint_32 row_width=row_info->width;
       png_uint_32 i;
 
-      if (row_info->channels == 4)
+      if (row_info->color_type == PNG_COLOR_TYPE_RGB &&
+         row_info->channels == 4)
       {
          if (row_info->bit_depth == 8)
          {
@@ -461,13 +470,9 @@
             row_info->rowbytes = row_width * 6;
          }
          row_info->channels = 3;
-         row_info->color_type &= ~PNG_COLOR_MASK_ALPHA;
       }
-/*
-      else if (row_info->color_type == PNG_COLOR_TYPE_GRAY ||
-               row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
-*/
-      else if (row_info->channels == 2)
+      else if (row_info->color_type == PNG_COLOR_TYPE_GRAY &&
+          row_info->channels == 2)
       {
          if (row_info->bit_depth == 8)
          {
@@ -519,7 +524,6 @@
             row_info->rowbytes = row_width * 2;
          }
          row_info->channels = 1;
-         row_info->color_type &= ~PNG_COLOR_MASK_ALPHA;
       }
    }
 }
diff --git a/pngvcrd.c b/pngvcrd.c
index 4818667..d709f1d 100644
--- a/pngvcrd.c
+++ b/pngvcrd.c
@@ -2,7 +2,7 @@
  *
  * For Intel x86 CPU and Microsoft Visual C++ compiler
  *
- * libpng version 1.0.16 - August 15, 2004
+ * libpng version 1.0.17 - September 12, 2004
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2004 Glenn Randers-Pehrson
  * Copyright (c) 1998, Intel Corporation
diff --git a/pngwio.c b/pngwio.c
index 77daa88..cbb6aae 100644
--- a/pngwio.c
+++ b/pngwio.c
@@ -1,7 +1,7 @@
 
 /* pngwio.c - functions for data output
  *
- * libpng 1.0.16 - August 15, 2004
+ * libpng 1.0.17 - September 12, 2004
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2004 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pngwrite.c b/pngwrite.c
index 5cbd151..1e00dcf 100644
--- a/pngwrite.c
+++ b/pngwrite.c
@@ -1,7 +1,7 @@
 
 /* pngwrite.c - general routines to write a PNG file
  *
- * libpng 1.0.16 - August 15, 2004
+ * libpng 1.0.17 - September 12, 2004
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2004 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pngwtran.c b/pngwtran.c
index a7031e8..b20a0be 100644
--- a/pngwtran.c
+++ b/pngwtran.c
@@ -1,7 +1,7 @@
 
 /* pngwtran.c - transforms the data in a row for PNG writers
  *
- * libpng version 1.0.16 - August 15, 2004
+ * libpng version 1.0.17 - September 12, 2004
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2004 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pngwutil.c b/pngwutil.c
index 00dbb01..edf972e 100644
--- a/pngwutil.c
+++ b/pngwutil.c
@@ -1,7 +1,7 @@
 
 /* pngwutil.c - utilities to write a PNG file
  *
- * libpng version 1.0.16 - August 15, 2004
+ * libpng version 1.0.17 - September 12, 2004
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2004 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@@ -617,8 +617,8 @@
              png_ptr->height < 16384 && png_ptr->width < 16384)
          {
             png_uint_32 uncompressed_idat_size = png_ptr->height *
-               (PNG_ROWBYTES(png_ptr->channels*png_ptr->bit_depth,
-                  png_ptr->channels * png_ptr->bit_depth + 15) >> 3);
+               ((png_ptr->width *
+               png_ptr->channels * png_ptr->bit_depth + 15) >> 3);
             unsigned int z_cinfo = z_cmf >> 4;
             unsigned int half_z_window_size = 1 << (z_cinfo + 7);
             while (uncompressed_idat_size <= half_z_window_size &&
@@ -1556,6 +1556,7 @@
 #endif
    png_size_t total_len;
    char wbuf[32], hbuf[32];
+   png_byte bunit = unit;
 
    png_debug(1, "in png_write_sCAL\n");
 
@@ -1576,7 +1577,7 @@
 
    png_debug1(3, "sCAL total length = %d\n", (int)total_len);
    png_write_chunk_start(png_ptr, (png_bytep)png_sCAL, (png_uint_32)total_len);
-   png_write_chunk_data(png_ptr, (png_bytep)&unit, 1);
+   png_write_chunk_data(png_ptr, (png_bytep)&bunit, 1);
    png_write_chunk_data(png_ptr, (png_bytep)wbuf, png_strlen(wbuf)+1);
    png_write_chunk_data(png_ptr, (png_bytep)hbuf, png_strlen(hbuf));
 
@@ -1593,6 +1594,7 @@
 #endif
    png_size_t total_len;
    char wbuf[32], hbuf[32];
+   png_byte bunit = unit;
 
    png_debug(1, "in png_write_sCAL_s\n");
 
@@ -1602,7 +1604,7 @@
 
    png_debug1(3, "sCAL total length = %d\n", total_len);
    png_write_chunk_start(png_ptr, (png_bytep)png_sCAL, (png_uint_32)total_len);
-   png_write_chunk_data(png_ptr, (png_bytep)&unit, 1);
+   png_write_chunk_data(png_ptr, (png_bytep)&bunit, 1);
    png_write_chunk_data(png_ptr, (png_bytep)wbuf, png_strlen(wbuf)+1);
    png_write_chunk_data(png_ptr, (png_bytep)hbuf, png_strlen(hbuf));
 
diff --git a/scripts/libpng-config-head.in b/scripts/libpng-config-head.in
index eb1e678..afca9a9 100755
--- a/scripts/libpng-config-head.in
+++ b/scripts/libpng-config-head.in
@@ -8,7 +8,7 @@
 
 # Modeled after libxml-config.
 
-version=1.0.16
+version=1.0.17
 prefix=""
 libdir=""
 libs=""
diff --git a/scripts/libpng.pc.in b/scripts/libpng.pc.in
index e7705f9..f28ad66 100644
--- a/scripts/libpng.pc.in
+++ b/scripts/libpng.pc.in
@@ -6,6 +6,6 @@
 
 Name: libpng10
 Description: Loads and saves PNG files
-Version: 1.0.16
+Version: 1.0.17
 Libs: -L${libdir} -lpng10 -lz -lm
 Cflags: -I${includedir}/libpng10
diff --git a/scripts/makefile.32sunu b/scripts/makefile.32sunu
index fbcc6cc..2b5e930 100644
--- a/scripts/makefile.32sunu
+++ b/scripts/makefile.32sunu
@@ -33,7 +33,7 @@
 
 LIBNAME=libpng10
 PNGMAJ = 0
-PNGMIN = 1.0.16
+PNGMIN = 1.0.17
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 INCPATH=$(prefix)/include
@@ -183,7 +183,17 @@
 install: install-static install-shared install-man install-config
 
 # If you installed in $(DESTDIR), test-installed won't work until you
-# move the library to its final location.
+# move the library to its final location.  Use test-dd to test it
+# before then.
+
+test-dd:
+	echo
+	echo Testing installed dynamic shared library in $(DL).
+	$(CC) $(SUN_CC_FLAGS) -I$(DI) -I$(ZLIBINC) \
+	   `$(BINPATH)/libpng10-config --cflags` pngtest.c \
+	   -o pngtestd -L$(DL) -R$(DL) `$(BINPATH)/libpng10-config --ldflags` \
+	   $(SUN_LD_FLAGS) -L$(ZLIBLIB) -R$(ZLIBLIB)
+	./pngtestd pngtest.png
 
 test-installed:
 	echo
diff --git a/scripts/makefile.64sunu b/scripts/makefile.64sunu
index bc24eb3..2ce8a80 100644
--- a/scripts/makefile.64sunu
+++ b/scripts/makefile.64sunu
@@ -33,7 +33,7 @@
 
 LIBNAME=libpng10
 PNGMAJ = 0
-PNGMIN = 1.0.16
+PNGMIN = 1.0.17
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 INCPATH=$(prefix)/include
@@ -184,7 +184,17 @@
 install: install-static install-shared install-man install-config
 
 # If you installed in $(DESTDIR), test-installed won't work until you
-# move the library to its final location.
+# move the library to its final location.  Use test-dd to test it
+# before then.
+
+test-dd:
+	echo
+	echo Testing installed dynamic shared library in $(DL).
+	$(CC) $(SUN_CC_FLAGS) -I$(DI) -I$(ZLIBINC) \
+	   `$(BINPATH)/libpng10-config --cflags` pngtest.c \
+	   -o pngtestd -L$(DL) -R$(DL) `$(BINPATH)/libpng10-config --ldflags` \
+	   $(SUN_LD_FLAGS) -L$(ZLIBLIB) -R$(ZLIBLIB)
+	./pngtestd pngtest.png
 
 test-installed:
 	echo
diff --git a/scripts/makefile.aix b/scripts/makefile.aix
index bda1c13..f1f32c0 100644
--- a/scripts/makefile.aix
+++ b/scripts/makefile.aix
@@ -18,7 +18,7 @@
 
 LIBNAME=libpng10
 PNGMAJ = 0
-PNGMIN = 1.0.16
+PNGMIN = 1.0.17
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 prefix=/usr/local
diff --git a/scripts/makefile.beos b/scripts/makefile.beos
index 9799a34..e49d1e5 100644
--- a/scripts/makefile.beos
+++ b/scripts/makefile.beos
@@ -12,7 +12,7 @@
 ZLIBINC=/usr/local/include
 
 PNGMAJ = 0
-PNGMIN = 1.0.16
+PNGMIN = 1.0.17
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 ALIGN=
@@ -165,7 +165,17 @@
 install: install-static install-shared install-man install-config
 
 # If you installed in $(DESTDIR), test-installed won't work until you
-# move the library to its final location.
+# move the library to its final location.  Use test-dd to test it
+# before then.
+
+test-dd:
+	echo
+	echo Testing installed dynamic shared library in $(DL).
+	$(CC) -I$(DI) $(CFLAGS) \
+	   `$(BINPATH)/libpng10-config --cflags` pngtest.c \
+	   -L$(DL) -L$(ZLIBLIB) -W1,-rpath $(ZLIBLIB):$(DL) \
+	   -o pngtestd `$(BINPATH)/libpng10-config --ldflags`
+	./pngtestd pngtest.png
 
 test-installed:
 	$(CC) $(CFLAGS) \
diff --git a/scripts/makefile.cygwin b/scripts/makefile.cygwin
index 7c43dc9..1646d35 100644
--- a/scripts/makefile.cygwin
+++ b/scripts/makefile.cygwin
@@ -79,7 +79,7 @@
 LIBNAME = libpng10
 PNGMAJ = 0
 CYGDLL = 12
-PNGMIN = 1.0.16
+PNGMIN = 1.0.17
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 SHAREDLIB=cygpng$(CYGDLL).dll
@@ -176,7 +176,7 @@
 	ar rc $@ $(OBJS)
 	$(RANLIB) $@
 
-$(SHAREDDEF): projects/msvc/png32ms.def
+$(SHAREDDEF): scripts/png32ms.def
 	cat $< | sed -e '1{G;s/^\(.*\)\(\n\)/EXPORTS/;};2,/^EXPORTS/d' | \
 	sed -e 's/\([^;]*\);/;/' > $@
 
@@ -260,7 +260,17 @@
 install: install-static install-shared install-man install-config
 
 # If you installed in $(DESTDIR), test-installed won't work until you
-# move the library to its final location.
+# move the library to its final location.  Use test-dd to test it
+# before then.
+
+test-dd:
+	echo
+	echo Testing installed dynamic shared library in $(DL).
+	$(CC) -I$(DI) $(CFLAGS) \
+	   `$(BINPATH)/libpng10-config --cflags` pngtest.c \
+	   -L$(DL) -L$(ZLIBLIB) \
+	   -o pngtestd `$(BINPATH)/libpng10-config --ldflags`
+	./pngtestd pngtest.png
 
 test-installed:
 	$(CC) $(CFLAGS) \
diff --git a/scripts/makefile.darwin b/scripts/makefile.darwin
index 6ab05b4..1ae6d03 100644
--- a/scripts/makefile.darwin
+++ b/scripts/makefile.darwin
@@ -23,7 +23,7 @@
 RANLIB=ranlib
 
 PNGMAJ = 0
-PNGMIN = 1.0.16
+PNGMIN = 1.0.17
 PNGVER = $(PNGMAJ).$(PNGMIN)
 LIBNAME = libpng10
 
@@ -167,7 +167,17 @@
 install: install-static install-shared install-man install-config
 
 # If you installed in $(DESTDIR), test-installed won't work until you
-# move the library to its final location.
+# move the library to its final location.  Use test-dd to test it
+# before then.
+
+test-dd:
+	echo
+	echo Testing installed dynamic shared library in $(DL).
+	$(CC) -I$(DI) -I$(ZLIBINC) \
+	   `$(BINPATH)/libpng10-config --cflags` pngtest.c \
+	   -L$(DL) -L$(ZLIBLIB) \
+	   -o pngtestd `$(BINPATH)/libpng10-config --ldflags`
+	./pngtestd pngtest.png
 
 test-installed:
 	$(CC) $(CFLAGS) \
diff --git a/scripts/makefile.dec b/scripts/makefile.dec
index ff88f0f..8f736d7 100644
--- a/scripts/makefile.dec
+++ b/scripts/makefile.dec
@@ -32,7 +32,7 @@
 ZLIBINC=../zlib
 
 PNGMAJ = 0
-PNGMIN = 1.0.16
+PNGMIN = 1.0.17
 PNGVER = $(PNGMAJ).$(PNGMIN)
 LIBNAME = libpng10
 
@@ -148,7 +148,17 @@
 install: install-static install-shared install-man install-config
 
 # If you installed in $(DESTDIR), test-installed won't work until you
-# move the library to its final location.
+# move the library to its final location.  Use test-dd to test it
+# before then.
+
+test-dd:
+	echo
+	echo Testing installed dynamic shared library in $(DL).
+	$(CC) -w1 -I$(DI) -I$(ZLIBINC) \
+	   `$(BINPATH)/libpng10-config --cflags` pngtest.c \
+	   -L$(DL) -L$(ZLIBLIB)  -R$(ZLIBLIB) -R$(DL) \
+	   -o pngtestd `$(BINPATH)/libpng10-config --ldflags`
+	./pngtestd pngtest.png
 
 test-installed:
 	echo
diff --git a/scripts/makefile.gcmmx b/scripts/makefile.gcmmx
index 3a1ad03..0a1ad6c 100644
--- a/scripts/makefile.gcmmx
+++ b/scripts/makefile.gcmmx
@@ -15,7 +15,7 @@
 
 LIBNAME = libpng10
 PNGMAJ = 0
-PNGMIN = 1.0.16
+PNGMIN = 1.0.17
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 CC=gcc
@@ -212,7 +212,17 @@
 install: install-static install-shared install-man install-config
 
 # If you installed in $(DESTDIR), test-installed won't work until you
-# move the library to its final location.
+# move the library to its final location.  Use test-dd to test it
+# before then.
+
+test-dd:
+	echo
+	echo Testing installed dynamic shared library in $(DL).
+	$(CC) -I$(DI) -I$(ZLIBINC) \
+	   `$(BINPATH)/libpng10-config --cflags` pngtest.c \
+	   -L$(DL) -L$(ZLIBLIB) -W1, -rpath,$(DL) -Wl,-rpath,$(ZLIBLIB) \
+	   -o pngtestd `$(BINPATH)/libpng10-config --ldflags`
+	./pngtestd pngtest.png
 
 test-installed:
 	$(CC) -I$(ZLIBINC) \
diff --git a/scripts/makefile.hp64 b/scripts/makefile.hp64
new file mode 100644
index 0000000..5dc6e4c
--- /dev/null
+++ b/scripts/makefile.hp64
@@ -0,0 +1,216 @@
+# makefile for libpng, HPUX (10.20 and 11.00) using the ANSI/C product.
+# Copyright (C) 1999-2002 Glenn Randers-Pehrson
+# Copyright (C) 1995 Guy Eric Schalnat, Group 42
+# contributed by Jim Rice and updated by Chris Schleicher, Hewlett Packard
+# For conditions of distribution and use, see copyright notice in png.h
+
+# Where the zlib library and include files are located
+ZLIBLIB=/opt/zlib/lib
+ZLIBINC=/opt/zlib/include
+
+# Note that if you plan to build a libpng shared library, zlib must also
+# be a shared library, which zlib's configure does not do.  After running
+# zlib's configure, edit the appropriate lines of makefile to read:
+#   CFLAGS=-O1 -DHAVE_UNISTD -DUSE_MAP -fPIC \
+#   LDSHARED=ld -b
+#   SHAREDLIB=libz.sl
+
+CC=cc
+CFLAGS=-I$(ZLIBINC) -O -Ae -Wl,+vnocompatwarnings +DD64 \
+-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +Z -DHAVE_UNISTD_H -DUSE_MMAP
+# Caution: be sure you have built zlib with the same CFLAGS.
+CCFLAGS=-I$(ZLIBINC) -O -Ae -Wl,+vnocompatwarnings +DD64 \
+-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +Z -DHAVE_UNISTD_H -DUSE_MMAP
+
+LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -lm
+
+RANLIB=ranlib
+
+PNGMAJ = 0
+PNGMIN = 1.0.17
+PNGVER = $(PNGMAJ).$(PNGMIN)
+LIBNAME = libpng10
+
+# where make install puts libpng.a, libpng10.sl, and png.h
+prefix=/opt/libpng
+INCPATH=$(prefix)/include
+LIBPATH=$(prefix)/lib
+MANPATH=$(prefix)/man
+BINPATH=$(prefix)/bin
+
+# override DESTDIR= on the make install command line to easily support
+# installing into a temporary location.  Example:
+#
+#    make install DESTDIR=/tmp/build/libpng
+#
+# If you're going to install into a temporary location
+# via DESTDIR, $(DESTDIR)$(prefix) must already exist before
+# you execute make install.
+DESTDIR=
+
+DB=$(DESTDIR)$(BINPATH)
+DI=$(DESTDIR)$(INCPATH)
+DL=$(DESTDIR)$(LIBPATH)
+DM=$(DESTDIR)$(MANPATH)
+
+OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \
+	pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
+	pngwtran.o pngmem.o pngerror.o pngpread.o
+
+OBJSDLL = $(OBJS:.o=.pic.o)
+
+.SUFFIXES:	.c .o .pic.o
+
+.c.pic.o:
+	$(CC) -c $(CFLAGS) +z -o $@ $*.c
+
+all: libpng.a $(LIBNAME).sl pngtest libpng.pc libpng-config
+
+libpng.a: $(OBJS)
+	ar rc $@ $(OBJS)
+	$(RANLIB) $@
+
+libpng.pc:
+	cat scripts/libpng.pc.in | sed -e s\!@PREFIX@!$(prefix)! > libpng.pc
+
+libpng-config:
+	( cat scripts/libpng-config-head.in; \
+	echo prefix=\"$(prefix)\"; \
+	echo I_opts=\"-I$(INCPATH)/$(LIBNAME)\"; \
+	echo ccopts=\"-Ae +DA1.1 +DS2.0\"; \
+	echo L_opts=\"-L$(LIBPATH)\"; \
+	echo libs=\"-lpng10 -lz -lm\"; \
+	cat scripts/libpng-config-body.in ) > libpng-config
+	chmod +x libpng-config
+
+$(LIBNAME).sl: $(LIBNAME).sl.$(PNGMAJ)
+	ln -sf $(LIBNAME).sl.$(PNGMAJ) $(LIBNAME).sl
+
+$(LIBNAME).sl.$(PNGMAJ): $(LIBNAME).sl.$(PNGVER)
+	ln -sf $(LIBNAME).sl.$(PNGVER) $(LIBNAME).sl.$(PNGMAJ)
+
+$(LIBNAME).sl.$(PNGVER): $(OBJSDLL)
+	$(LD) -b +s \
+	+h $(LIBNAME).sl.$(PNGMAJ) -o $(LIBNAME).sl.$(PNGVER) $(OBJSDLL)
+
+libpng.sl.3.$(PNGMIN): $(OBJSDLL)
+	$(LD) -b +s \
+	+h libpng.sl.3 -o libpng.sl.3.$(PNGMIN) $(OBJSDLL)
+
+pngtest: pngtest.o libpng.a
+	$(CC) -o pngtest $(CCFLAGS) pngtest.o $(LDFLAGS)
+
+test: pngtest
+	./pngtest
+
+install-headers: png.h pngconf.h
+	-@if [ ! -d $(DI) ]; then mkdir $(DI); fi
+	-@if [ ! -d $(DI)/$(LIBNAME) ]; then mkdir $(DI)/$(LIBNAME); fi
+	cp png.h pngconf.h $(DI)/$(LIBNAME)
+	chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h
+	-@/bin/rm -f $(DI)/png.h $(DI)/pngconf.h
+	-@/bin/rm -f $(DI)/libpng
+	(cd $(DI); ln -sf $(LIBNAME) libpng; ln -sf $(LIBNAME)/* .)
+
+install-static: install-headers libpng.a
+	-@if [ ! -d $(DL) ]; then mkdir $(DL); fi
+	cp libpng.a $(DL)/$(LIBNAME).a
+	chmod 644 $(DL)/$(LIBNAME).a
+	-@/bin/rm -f $(DL)/libpng.a
+	(cd $(DL); ln -sf $(LIBNAME).a libpng.a)
+
+install-shared: install-headers $(LIBNAME).sl.$(PNGVER) libpng.pc \
+	libpng.sl.3.$(PNGMIN)
+	-@if [ ! -d $(DL) ]; then mkdir $(DL); fi
+	-@/bin/rm -f $(DL)/$(LIBNAME).sl.$(PNGVER)* $(DL)/$(LIBNAME).sl
+	-@/bin/rm -f $(DL)/$(LIBNAME).sl.$(PNGMAJ)
+	-@/bin/rm -f $(DL)/libpng.sl
+	-@/bin/rm -f $(DL)/libpng.sl.3
+	-@/bin/rm -f $(DL)/libpng.sl.3.$(PNGMIN)*
+	cp $(LIBNAME).sl.$(PNGVER) $(DL)
+	cp libpng.sl.3.$(PNGMIN) $(DL)
+	chmod 755 $(DL)/$(LIBNAME).sl.$(PNGVER)
+	chmod 755 $(DL)/libpng.sl.3.$(PNGMIN)
+	(cd $(DL); \
+	ln -sf libpng.sl.3.$(PNGMIN) libpng.sl.3; \
+	ln -sf libpng.sl.3 libpng.sl; \
+	ln -sf $(LIBNAME).sl.$(PNGVER) $(LIBNAME).sl.$(PNGMAJ); \
+	ln -sf $(LIBNAME).sl.$(PNGMAJ) $(LIBNAME).sl)
+	-@if [ ! -d $(DL)/pkgconfig ]; then mkdir $(DL)/pkgconfig; fi
+	-@/bin/rm -f $(DL)/pkgconfig/$(LIBNAME).pc
+	-@/bin/rm -f $(DL)/pkgconfig/libpng.pc
+	cp libpng.pc $(DL)/pkgconfig/$(LIBNAME).pc
+	chmod 644 $(DL)/pkgconfig/$(LIBNAME).pc
+	(cd $(DL)/pkgconfig; ln -sf $(LIBNAME).pc libpng.pc)
+
+install-man: libpng.3 libpngpf.3 png.5
+	-@if [ ! -d $(DM) ]; then mkdir $(DM); fi
+	-@if [ ! -d $(DM)/man3 ]; then mkdir $(DM)/man3; fi
+	-@/bin/rm -f $(DM)/man3/libpng.3
+	-@/bin/rm -f $(DM)/man3/libpngpf.3
+	cp libpng.3 $(DM)/man3
+	cp libpngpf.3 $(DM)/man3
+	-@if [ ! -d $(DM)/man5 ]; then mkdir $(DM)/man5; fi
+	-@/bin/rm -f $(DM)/man5/png.5
+	cp png.5 $(DM)/man5
+
+install-config: libpng-config
+	-@if [ ! -d $(DB) ]; then mkdir $(DB); fi
+	-@/bin/rm -f $(DB)/libpng-config
+	-@/bin/rm -f $(DB)/$(LIBNAME)-config
+	cp libpng-config $(DB)/$(LIBNAME)-config
+	chmod 755 $(DB)/$(LIBNAME)-config
+	(cd $(DB); ln -sf $(LIBNAME)-config libpng-config)
+
+install: install-static install-shared install-man install-config
+
+# If you installed in $(DESTDIR), test-installed won't work until you
+# move the library to its final location.  Use test-dd to test it
+# before then.
+
+test-dd:
+	echo
+	echo Testing installed dynamic shared library in $(DL).
+	$(CC) -I$(DI) -I$(ZLIBINC) $(CCFLAGS) \
+	   `$(BINPATH)/libpng10-config --cflags` pngtest.c \
+	   -L$(DL) -L$(ZLIBLIB) \
+	   -o pngtestd `$(BINPATH)/libpng10-config --ldflags`
+	./pngtestd pngtest.png
+
+test-installed:
+	echo
+	echo Testing installed dynamic shared library.
+	$(CC) $(CCFLAGS) \
+	   `$(BINPATH)/libpng10-config --cflags` pngtest.c \
+	   -L$(ZLIBLIB) \
+	   -o pngtesti `$(BINPATH)/libpng10-config --ldflags`
+	./pngtesti pngtest.png
+
+clean:
+	/bin/rm -f *.o libpng.a pngtest pngtesti pngout.png \
+	libpng-config $(LIBNAME).sl $(LIBNAME).sl.$(PNGMAJ)* \
+	libpng.sl.3.$(PNGMIN) \
+	libpng.pc
+
+DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
+writelock:
+	chmod a-w *.[ch35] $(DOCS) scripts/*
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+
+png.o: png.h pngconf.h
+pngerror.o: png.h pngconf.h
+pngrio.o: png.h pngconf.h
+pngwio.o: png.h pngconf.h
+pngmem.o: png.h pngconf.h
+pngset.o: png.h pngconf.h
+pngget.o: png.h pngconf.h
+pngread.o: png.h pngconf.h
+pngrtran.o: png.h pngconf.h
+pngrutil.o: png.h pngconf.h
+pngtest.o: png.h pngconf.h
+pngtrans.o: png.h pngconf.h
+pngwrite.o: png.h pngconf.h
+pngwtran.o: png.h pngconf.h
+pngwutil.o: png.h pngconf.h
+pngpread.o: png.h pngconf.h
diff --git a/scripts/makefile.hpgcc b/scripts/makefile.hpgcc
index 7c496ef..21ea870 100644
--- a/scripts/makefile.hpgcc
+++ b/scripts/makefile.hpgcc
@@ -41,7 +41,7 @@
 #RANLIB=echo
 
 PNGMAJ = 0
-PNGMIN = 1.0.16
+PNGMIN = 1.0.17
 PNGVER = $(PNGMAJ).$(PNGMIN)
 LIBNAME = libpng10
 
@@ -176,7 +176,17 @@
 install: install-static install-shared install-man install-config
 
 # If you installed in $(DESTDIR), test-installed won't work until you
-# move the library to its final location.
+# move the library to its final location.  Use test-dd to test it
+# before then.
+
+test-dd:
+	echo
+	echo Testing installed dynamic shared library in $(DL).
+	$(CC) -I$(DI) -I$(ZLIBINC) \
+	   `$(BINPATH)/libpng10-config --cflags` pngtest.c \
+	   -L$(DL) -L$(ZLIBLIB) -W1,-rpath,$(DL) -Wl,-rpath,$(ZLIBLIB) \
+	   -o pngtestd `$(BINPATH)/libpng10-config --ldflags`
+	./pngtestd pngtest.png
 
 test-installed:
 	echo
diff --git a/scripts/makefile.hpux b/scripts/makefile.hpux
index e4daba7..e0a53d4 100644
--- a/scripts/makefile.hpux
+++ b/scripts/makefile.hpux
@@ -24,7 +24,7 @@
 RANLIB=ranlib
 
 PNGMAJ = 0
-PNGMIN = 1.0.16
+PNGMIN = 1.0.17
 PNGVER = $(PNGMAJ).$(PNGMIN)
 LIBNAME = libpng10
 
@@ -162,7 +162,17 @@
 install: install-static install-shared install-man install-config
 
 # If you installed in $(DESTDIR), test-installed won't work until you
-# move the library to its final location.
+# move the library to its final location.  Use test-dd to test it
+# before then.
+
+test-dd:
+	echo
+	echo Testing installed dynamic shared library in $(DL).
+	$(CC) -I$(DI) -I$(ZLIBINC) $(CCFLAGS) \
+	   `$(BINPATH)/libpng10-config --cflags` pngtest.c \
+	   -L$(DL) -L$(ZLIBLIB) \
+	   -o pngtestd `$(BINPATH)/libpng10-config --ldflags`
+	./pngtestd pngtest.png
 
 test-installed:
 	echo
diff --git a/scripts/makefile.linux b/scripts/makefile.linux
index 5e60ac8..e689e71 100644
--- a/scripts/makefile.linux
+++ b/scripts/makefile.linux
@@ -5,7 +5,7 @@
 
 LIBNAME = libpng10
 PNGMAJ = 0
-PNGMIN = 1.0.16
+PNGMIN = 1.0.17
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 CC=gcc
@@ -184,7 +184,17 @@
 install: install-static install-shared install-man install-config
 
 # If you installed in $(DESTDIR), test-installed won't work until you
-# move the library to its final location.
+# move the library to its final location.  Use test-dd to test it
+# before then.
+
+test-dd:
+	echo
+	echo Testing installed dynamic shared library in $(DL).
+	$(CC) -I$(DI) -I$(ZLIBINC) \
+	   `$(BINPATH)/libpng10-config --cflags` pngtest.c \
+	   -L$(DL) -L$(ZLIBLIB) -W1, -rpath,$(DL) -Wl,-rpath,$(ZLIBLIB) \
+	   -o pngtestd `$(BINPATH)/libpng10-config --ldflags`
+	./pngtestd pngtest.png
 
 test-installed:
 	$(CC) -I$(ZLIBINC) \
diff --git a/scripts/makefile.ne12bsd b/scripts/makefile.ne12bsd
index 782f939..9a17f02 100644
--- a/scripts/makefile.ne12bsd
+++ b/scripts/makefile.ne12bsd
@@ -13,7 +13,7 @@
 
 LIB=	png12
 SHLIB_MAJOR=	0
-SHLIB_MINOR=	1.0.16
+SHLIB_MINOR=	1.0.17
 SRCS=	pnggccrd.c png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
 		pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
 		pngwtran.c pngmem.c pngerror.c pngpread.c
diff --git a/scripts/makefile.netbsd b/scripts/makefile.netbsd
index 86c3568..0bc126c 100644
--- a/scripts/makefile.netbsd
+++ b/scripts/makefile.netbsd
@@ -13,7 +13,7 @@
 
 LIB=	png
 SHLIB_MAJOR=	3
-SHLIB_MINOR=	1.0.16
+SHLIB_MINOR=	1.0.17
 SRCS=	pnggccrd.c png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
 		pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
 		pngwtran.c pngmem.c pngerror.c pngpread.c
diff --git a/scripts/makefile.openbsd b/scripts/makefile.openbsd
index a357e7a..c08e66c 100644
--- a/scripts/makefile.openbsd
+++ b/scripts/makefile.openbsd
@@ -7,7 +7,7 @@
 MANDIR= ${PREFIX}/man/cat
 
 SHLIB_MAJOR=	0
-SHLIB_MINOR=	1.0.16
+SHLIB_MINOR=	1.0.17
 
 LIB=	png
 SRCS=	png.c pngerror.c pnggccrd.c pngget.c pngmem.c pngpread.c \
diff --git a/scripts/makefile.sco b/scripts/makefile.sco
index 9548585..61ace9f 100644
--- a/scripts/makefile.sco
+++ b/scripts/makefile.sco
@@ -24,7 +24,7 @@
 RANLIB=echo
 
 PNGMAJ = 0
-PNGMIN = 1.0.16
+PNGMIN = 1.0.17
 PNGVER = $(PNGMAJ).$(PNGMIN)
 LIBNAME = libpng10
 
@@ -162,7 +162,17 @@
 install: install-static install-shared install-man install-config
 
 # If you installed in $(DESTDIR), test-installed won't work until you
-# move the library to its final location.
+# move the library to its final location.  Use test-dd to test it
+# before then.
+
+test-dd:
+	echo
+	echo Testing installed dynamic shared library in $(DL).
+	$(CC) -I$(DI) $(CFLAGS) \
+	   `$(BINPATH)/libpng10-config --cflags` pngtest.c \
+	   -L$(DL) -L$(ZLIBLIB) \
+	   -o pngtestd `$(BINPATH)/libpng10-config --ldflags`
+	./pngtestd pngtest.png
 
 test-installed:
 	$(CC) $(CFLAGS) \
diff --git a/scripts/makefile.sggcc b/scripts/makefile.sggcc
index ce4444f..e6f5fb5 100644
--- a/scripts/makefile.sggcc
+++ b/scripts/makefile.sggcc
@@ -18,7 +18,7 @@
 
 LIBNAME=libpng10
 PNGMAJ = 0
-PNGMIN = 1.0.16
+PNGMIN = 1.0.17
 PNGVER = $(PNGMAJ).$(PNGMIN)
 CC=gcc
 
@@ -169,14 +169,26 @@
 install: install-static install-shared install-man install-config
 
 # If you installed in $(DESTDIR), test-installed won't work until you
-# move the library to its final location.
+# move the library to its final location.  Use test-dd to test it
+# before then.
+
+test-dd:
+	echo
+	echo Testing installed dynamic shared library in $(DL).
+	$(CC) -I$(DI) -I$(ZLIBINC) \
+	   `$(BINPATH)/libpng10-config --cflags` pngtest.c \
+	   -L$(DL) -L$(ZLIBLIB) \
+           -rpath $(ZLIBLIB):$(DL)\
+	   -o pngtestd `$(BINPATH)/libpng10-config --ldflags`
+	./pngtestd pngtest.png
 
 test-installed:
 	echo
 	echo Testing installed dynamic shared library.
 	$(CC) -I$(ZLIBINC) \
 	   `$(BINPATH)/libpng10-config --cflags` pngtest.c \
-	   -L$(ZLIBLIB) -rpath $(ZLIBLIB):`$(BINPATH)/libpng10-config --libdir` \
+	   -L$(ZLIBLIB) \
+           -rpath $(ZLIBLIB):`$(BINPATH)/libpng10-config --libdir` \
 	   -o pngtesti `$(BINPATH)/libpng10-config --ldflags`
 	./pngtesti pngtest.png
 
diff --git a/scripts/makefile.sgi b/scripts/makefile.sgi
index 2b3df66..dc3460b 100644
--- a/scripts/makefile.sgi
+++ b/scripts/makefile.sgi
@@ -5,7 +5,7 @@
 
 LIBNAME=libpng10
 PNGMAJ = 0
-PNGMIN = 1.0.16
+PNGMIN = 1.0.17
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Where make install puts libpng.a, libpng10.so, and libpng10/png.h
@@ -175,14 +175,26 @@
 install: install-static install-shared install-man install-config
 
 # If you installed in $(DESTDIR), test-installed won't work until you
-# move the library to its final location.
+# move the library to its final location.  Use test-dd to test it
+# before then.
+
+test-dd:
+	echo
+	echo Testing installed dynamic shared library in $(DL).
+	$(CC) -I$(DI) -I$(ZLIBINC) \
+	   `$(BINPATH)/libpng10-config --cflags` pngtest.c \
+	   -L$(DL) -L$(ZLIBLIB) \
+           -rpath $(ZLIBLIB):$(DL) \
+	   -o pngtestd `$(BINPATH)/libpng10-config --ldflags`
+	./pngtestd pngtest.png
 
 test-installed:
 	echo
 	echo Testing installed dynamic shared library.
 	$(CC) -I$(ZLIBINC) \
 	   `$(BINPATH)/libpng10-config --cflags` pngtest.c \
-	   -L$(ZLIBLIB) -rpath $(ZLIBLIB):`$(BINPATH)/libpng10-config --libdir` \
+	   -L$(ZLIBLIB) \
+           -rpath $(ZLIBLIB):`$(BINPATH)/libpng10-config --libdir` \
 	   -o pngtesti `$(BINPATH)/libpng10-config --ldflags`
 	./pngtesti pngtest.png
 
diff --git a/scripts/makefile.so9 b/scripts/makefile.so9
index 80c803b..d35bb05 100644
--- a/scripts/makefile.so9
+++ b/scripts/makefile.so9
@@ -34,7 +34,7 @@
 RANLIB=echo
 
 PNGMAJ = 0
-PNGMIN = 1.0.16
+PNGMIN = 1.0.17
 PNGVER = $(PNGMAJ).$(PNGMIN)
 LIBNAME = libpng10
 
@@ -182,7 +182,17 @@
 install: install-static install-shared install-man install-config
 
 # If you installed in $(DESTDIR), test-installed won't work until you
-# move the library to its final location.
+# move the library to its final location.  Use test-dd to test it
+# before then.
+
+test-dd:
+	echo
+	echo Testing installed dynamic shared library in $(DL).
+	$(CC) -I$(DI) -I$(ZLIBINC) \
+	   `$(BINPATH)/libpng10-config --cflags` pngtest.c \
+	   -o pngtestd `$(BINPATH)/libpng10-config --ldflags` \
+	   -L$(DL) -L$(ZLIBLIB)  -R$(ZLIBLIB) -R$(DL)
+	./pngtestd pngtest.png
 
 test-installed:
 	echo
diff --git a/scripts/makefile.solaris b/scripts/makefile.solaris
index 91fbe9e..01ac64f 100644
--- a/scripts/makefile.solaris
+++ b/scripts/makefile.solaris
@@ -30,7 +30,7 @@
 RANLIB=echo
 
 PNGMAJ = 0
-PNGMIN = 1.0.16
+PNGMIN = 1.0.17
 PNGVER = $(PNGMAJ).$(PNGMIN)
 LIBNAME = libpng10
 
@@ -179,7 +179,17 @@
 install: install-static install-shared install-man install-config
 
 # If you installed in $(DESTDIR), test-installed won't work until you
-# move the library to its final location.
+# move the library to its final location.  Use test-dd to test it
+# before then.
+
+test-dd:
+	echo
+	echo Testing installed dynamic shared library in $(DL).
+	$(CC) -I$(DI) -I$(ZLIBINC) \
+	   `$(BINPATH)/libpng10-config --cflags` pngtest.c \
+	   -o pngtestd `$(BINPATH)/libpng10-config --ldflags` \
+	   -L$(DL) -L$(ZLIBLIB) -R$(ZLIBLIB) -R$(DL)
+	./pngtestd pngtest.png
 
 test-installed:
 	echo
diff --git a/scripts/pngos2.def b/scripts/pngos2.def
index 6c806f5..0046450 100644
--- a/scripts/pngos2.def
+++ b/scripts/pngos2.def
@@ -2,7 +2,7 @@
 ; PNG.LIB module definition file for OS/2
 ;----------------------------------------
 
-; Version 1.0.16
+; Version 1.0.17
 
 LIBRARY		PNG
 DESCRIPTION	"PNG image compression library for OS/2"
@@ -184,32 +184,6 @@
   png_convert_to_rfc1123
   png_set_invalid
 
-; Added at version 1.2.0:
-  png_mmx_support
-  png_permit_empty_plte
-  png_permit_mng_features
-  png_get_mmx_flagmask
-  png_get_asm_flagmask
-  png_get_asm_flags
-  png_get_mmx_bitdepth_threshold
-  png_get_mmx_rowbytes_threshold
-  png_set_asm_flags
-  png_init_mmx_flags
-
-; Added at version 1.2.2:
-  png_handle_as_unknown
-
-; Added at version 1.2.2 and deleted from 1.2.3:
-; png_zalloc
-; png_zfree
-
-; Added at version 1.2.4
-  png_malloc_warn
-
-; Added at version 1.2.6
-  png_set_user_limits
-  png_get_user_height_max
-  png_get_user_width_max
 
 ; These are not present when libpng is compiled with PNG_NO_GLOBAL_ARRAYS
   png_libpng_ver
diff --git a/scripts/pngw32.def b/scripts/pngw32.def
index 60843dc..7420653 100644
--- a/scripts/pngw32.def
+++ b/scripts/pngw32.def
@@ -6,7 +6,7 @@
 DESCRIPTION "PNG image compression library for Windows"
 
 EXPORTS
-;Version 1.0.16
+;Version 1.0.17
   png_build_grayscale_palette  @1
   png_check_sig        @2
   png_chunk_error      @3
@@ -191,35 +191,3 @@
   png_write_init_3    @176
   png_info_init_3 @177
   png_destroy_struct  @178
-; Added at version 1.2.0
-; For use with PNG_USER_MEM_SUPPORTED
-  png_destroy_struct_2  @179
-  png_create_read_struct_2 @180
-  png_create_write_struct_2 @181
-  png_malloc_default @182
-  png_free_default @183
-; MNG features
-  png_permit_mng_features  @184
-; MMX support
-  png_mmx_support  @185
-  png_get_mmx_flagmask  @186
-  png_get_asm_flagmask  @187
-  png_get_asm_flags  @188
-  png_get_mmx_bitdepth_threshold  @189
-  png_get_mmx_rowbytes_threshold  @190
-  png_set_asm_flags  @191
-  png_init_mmx_flags  @192
-; Strip error numbers
-  png_set_strip_error_numbers @193
-; Added at version 1.2.2
-  png_handle_as_unknown @194
-; Added at version 1.2.2 and deleted from 1.2.3
-; png_zalloc @195
-; png_zfree @196
-; Added at version 1.2.4
-  png_malloc_warn @195
-; Added at version 1.2.6
-  png_malloc_warn @195
-  png_get_user_height_max @196
-  png_get_user_width_max @197
-  png_set_user_limits @198