diff --git a/ANNOUNCE b/ANNOUNCE
index 4fb4613..53769da 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,5 +1,5 @@
 
-Libpng 1.4.0beta10 - July 12, 2006
+Libpng 1.4.0beta11 - August 19, 2006
 
 This is not intended to be a public release.  It will be replaced
 within a few weeks by a public version or by another test version.
@@ -9,27 +9,27 @@
 Source files with LF line endings (for Unix/Linux) and with a
 "configure" script
 
-   1.4.0beta10.tar.gz
-   1.4.0beta10.tar.bz2
+   1.4.0beta11.tar.gz
+   1.4.0beta11.tar.bz2
 
 Source files with LF line endings (for Unix/Linux) without the
 "configure" script
 
-   1.4.0beta10-no-config.tar.gz
-   1.4.0beta10-no-config.tar.bz2
+   1.4.0beta11-no-config.tar.gz
+   1.4.0beta11-no-config.tar.bz2
 
 Source files with CRLF line endings (for Windows), without the
 "configure" script
 
-   lp140b10.zip
-   lp140b10.tar.bz2
+   lp140b11.zip
+   lp140b11.tar.bz2
 
 Other information:
 
-   1.4.0beta10-README.txt
-   1.4.0beta10-KNOWNBUGS.txt
-   1.4.0beta10-LICENSE.txt
-   1.4.0beta10-Y2K-compliance.txt
+   1.4.0beta11-README.txt
+   1.4.0beta11-KNOWNBUGS.txt
+   1.4.0beta11-LICENSE.txt
+   1.4.0beta11-Y2K-compliance.txt
 
 Changes since the last public release (1.2.10):
 
@@ -156,15 +156,62 @@
   Removed ordinals from scripts/pngw32.def and removed png_info_int and
     png_set_gray_1_2_4_to_8 entries.
   Inline call of png_get_uint_32() in png_get_uint_31().
-  Use png_get_uint_31() to get vpAg width and heigh in pngtest.c
+  Use png_get_uint_31() to get vpAg width and height in pngtest.c
   Removed WINCE and Netware projects.
   Removed standalone Y2KINFO file.
 
 version 1.4.0beta10 [July 12, 2006]
   Added "all: pngconf.h.in pngconf.h" target to Makefile.am
 
+version 1.4.0beta11 [August 19, 2006]
+  Removed AC_FUNC_MALLOC from configure.ac.
+  Added a warning when writing iCCP profile with mismatched profile length.
+  Patched pnggccrd.c to assemble on x86_64 platforms.
+  Moved chunk header reading into a separate function png_read_chunk_header()
+    in pngrutil.c.  The chunk header (len+sig) is now serialized in a single
+    operation (Cosmin).
+  Implemented support for I/O states. Added png_ptr member io_state, and
+    functions png_get_io_chunk_name() and png_get_io_state() in pngget.c
+    (Cosmin).
+  Added png_get_io_chunk_name and png_get_io_state to scripts/*.def (Cosmin).
+  Renamed scripts/pngw32.* to scripts/pngwin.* (Cosmin).
+  Removed the include directories and libraries from CFLAGS and LDFLAGS
+    in scripts/makefile.gcc (Cosmin).
+  Used png_save_uint_32() to set vpAg width and height in pngtest.c (Cosmin).
+  Cast to proper type when getting/setting vpAg units in pngtest.c (Cosmin).
+  Added pngintrn.h to the Visual C++ projects (Cosmin).
+  Removed scripts/list (Cosmin).
+  Updated copyright year in scripts/pngwin.def (Cosmin).
+  Removed PNG_TYPECAST_NULL and used standard NULL consistently (Cosmin).
+  Disallowed the user to redefine png_size_t, and enforced a consistent use
+    of png_size_t across libpng (Cosmin).
+  Changed the type of png_ptr->rowbytes, PNG_ROWBYTES() and friends
+    to png_size_t (Cosmin).
+  Removed png_convert_size() and replaced png_sizeof with sizeof (Cosmin).
+  Removed some unnecessary type casts (Cosmin).
+  Changed prototype of png_get_compression_buffer_size() and
+    png_set_compression_buffer_size() to work with png_size_t instead of
+    png_uint_32 (Cosmin).
+  Removed png_memcpy_check() and png_memset_check() (Cosmin).
+  Fixed a typo (png_byte --> png_bytep) in libpng.3 and libpng.txt (Cosmin).
+  Clarified that png_zalloc() does not clear the allocated memory,
+    and png_zalloc() and png_zfree() cannot be PNGAPI (Cosmin).
+  Renamed png_mem_size_t to png_alloc_size_t, fixed its definition in
+    pngconf.h, and used it in all memory allocation functions (Cosmin).
+  Renamed pngintrn.h to pngpriv.h, added a comment at the top of the file
+    mentioning that the symbols declared in that file are private, and
+    updated the scripts and the Visual C++ projects accordingly (Cosmin).
+  Removed circular references between pngconf.h and pngconf.h.in in
+    scripts/makefile.vc*win32 (Cosmin).
+  Removing trailing '.' from the warning and error messages (Cosmin).
+  Added pngdefs.h that is built by makefile or configure, instead of
+    pngconf.h.in (Glenn).
+
+version 1.4.0betaN [future]
+  Build shared libraries with -lz and sometimes -lm.
+
 Send comments/corrections/commendations to png-mng-implement at lists.sf.net
-(subscription required; visit 
+(subscription required; visit
 https://lists.sourceforge.net/lists/listinfo/png-mng-implement
 to subscribe) or to glennrp at users.sourceforge.net
 
diff --git a/CHANGES b/CHANGES
index 4a08a15..d5d19da 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1655,7 +1655,7 @@
   Removed ordinals from scripts/pngw32.def and removed png_info_int and
     png_set_gray_1_2_4_to_8 entries.
   Inline call of png_get_uint_32() in png_get_uint_31().
-  Use png_get_uint_31() to get vpAg width and heigh in pngtest.c
+  Use png_get_uint_31() to get vpAg width and height in pngtest.c
   Removed WINCE and Netware projects.
   Removed standalone Y2KINFO file.
 
@@ -1666,8 +1666,51 @@
     makefiles to update pngconf.h from pngconf.h.in.
   Added pngconf.h to DEPENDENCIES in Makefile.am
 
+version 1.4.0beta11 [August 19, 2006]
+  Removed AC_FUNC_MALLOC from configure.ac.
+  Added a warning when writing iCCP profile with mismatched profile length.
+  Patched pnggccrd.c to assemble on x86_64 platforms.
+  Moved chunk header reading into a separate function png_read_chunk_header()
+    in pngrutil.c.  The chunk header (len+sig) is now serialized in a single
+    operation (Cosmin).
+  Implemented support for I/O states. Added png_ptr member io_state, and
+    functions png_get_io_chunk_name() and png_get_io_state() in pngget.c
+    (Cosmin).
+  Added png_get_io_chunk_name and png_get_io_state to scripts/*.def (Cosmin).
+  Renamed scripts/pngw32.* to scripts/pngwin.* (Cosmin).
+  Removed the include directories and libraries from CFLAGS and LDFLAGS
+    in scripts/makefile.gcc (Cosmin).
+  Used png_save_uint_32() to set vpAg width and height in pngtest.c (Cosmin).
+  Cast to proper type when getting/setting vpAg units in pngtest.c (Cosmin).
+  Added pngintrn.h to the Visual C++ projects (Cosmin).
+  Removed scripts/list (Cosmin).
+  Updated copyright year in scripts/pngwin.def (Cosmin).
+  Removed PNG_TYPECAST_NULL and used standard NULL consistently (Cosmin).
+  Disallowed the user to redefine png_size_t, and enforced a consistent use
+    of png_size_t across libpng (Cosmin).
+  Changed the type of png_ptr->rowbytes, PNG_ROWBYTES() and friends
+    to png_size_t (Cosmin).
+  Removed png_convert_size() and replaced png_sizeof with sizeof (Cosmin).
+  Removed some unnecessary type casts (Cosmin).
+  Changed prototype of png_get_compression_buffer_size() and
+    png_set_compression_buffer_size() to work with png_size_t instead of
+    png_uint_32 (Cosmin).
+  Removed png_memcpy_check() and png_memset_check() (Cosmin).
+  Fixed a typo (png_byte --> png_bytep) in libpng.3 and libpng.txt (Cosmin).
+  Clarified that png_zalloc() does not clear the allocated memory,
+    and png_zalloc() and png_zfree() cannot be PNGAPI (Cosmin).
+  Renamed png_mem_size_t to png_alloc_size_t, fixed its definition in
+    pngconf.h, and used it in all memory allocation functions (Cosmin).
+  Renamed pngintrn.h to pngpriv.h, added a comment at the top of the file
+    mentioning that the symbols declared in that file are private, and
+    updated the scripts and the Visual C++ projects accordingly (Cosmin).
+  Removed circular references between pngconf.h and pngconf.h.in in
+    scripts/makefile.vc*win32 (Cosmin).
+  Removing trailing '.' from the warning and error messages (Cosmin).
+  Added pngdefs.h that is built by makefile or configure, instead of
+    pngconf.h.in (Glenn).
+
 version 1.4.0betaN [future]
-  Cleaned up error and warning messages.
   Build shared libraries with -lz and sometimes -lm.
 
 Send comments/corrections/commendations to png-mng-implement at lists.sf.net
diff --git a/INSTALL b/INSTALL
index 1148491..35f879c 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,5 +1,5 @@
 
-Installing libpng version 1.4.0beta10 - July 12, 2006
+Installing libpng version 1.4.0beta11 - August 19, 2006
 
 On Unix/Linux and similar systems, you can simply type
 
@@ -37,7 +37,7 @@
 correspond to the version of zlib that's installed.
 
 You can rename the directories that you downloaded (they
-might be called "libpng-1.4.0beta10" or "lpng109" and "zlib-1.2.1"
+might be called "libpng-1.4.0beta11" 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:
@@ -87,11 +87,11 @@
 
  makefile.std      =>  Generic UNIX makefile (cc, creates static libpng.a)
  makefile.elf      =>  Linux/ELF makefile symbol versioning,
-                       gcc, creates libpng14.so.1.1.4.0beta10)
+                       gcc, creates libpng14.so.1.1.4.0beta11)
  makefile.linux    =>  Linux/ELF makefile
-                       (gcc, creates libpng14.so.1.1.4.0beta10)
+                       (gcc, creates libpng14.so.1.1.4.0beta11)
  makefile.gcmmx    =>  Linux/ELF makefile
-                       (gcc, creates libpng14.so.1.1.4.0beta10,
+                       (gcc, creates libpng14.so.1.1.4.0beta11,
                        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
@@ -114,12 +114,12 @@
  makefile.openbsd  =>  OpenBSD makefile
  makefile.sgi      =>  Silicon Graphics IRIX makefile (cc, creates static lib)
  makefile.sggcc    =>  Silicon Graphics (gcc,
-                       creates libpng14.so.1.1.4.0beta10)
+                       creates libpng14.so.1.1.4.0beta11)
  makefile.sunos    =>  Sun makefile
  makefile.solaris  =>  Solaris 2.X makefile (gcc,
-                       creates libpng14.so.1.1.4.0beta10)
+                       creates libpng14.so.1.1.4.0beta11)
  makefile.so9      =>  Solaris 9 makefile (gcc,
-                       creates libpng14.so.1.1.4.0beta10)
+                       creates libpng14.so.1.1.4.0beta11)
  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
@@ -204,6 +204,6 @@
 --with-pkgconfigdir=/usr/lib/pkgconfig --includedir=/usr/include
 
 You can alternatively specify --includedir=/usr/include, /usr/local/include,
-/usr/include/png%N%, or whatever.
+/usr/include/png14, or whatever.
 
 
diff --git a/INSTALL1 b/INSTALL1
deleted file mode 100644
index 45fa59c..0000000
--- a/INSTALL1
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-Using the ./configure script -- 16 December 2002.
-=================================================
-
-
-The ./configure script should work compatibly with what scripts/makefile.*
-did, however there are some options you need to add to configure explicitly,
-which previously was done semi-automatically (if you didn't edit
-scripts/makefile.* yourself, that is)
-
-
-CFLAGS="-Wall -O3 -funroll-loops \
--malign-loops=2 -malign-functions=2" ./configure --prefix=/usr/include \
---with-pkgconfigdir=/usr/lib/pkgconfig --includedir=/usr/include
-
-You can alternatively specify --includedir=/usr/include, /usr/local/include,
-/usr/include/png14, or whatever.
-
-
diff --git a/KNOWNBUG b/KNOWNBUG
index 1fd3984..2563993 100644
--- a/KNOWNBUG
+++ b/KNOWNBUG
@@ -1,5 +1,5 @@
 
-Known bugs in libpng version 1.4.0beta10
+Known bugs in libpng version 1.4.0beta11
 
 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 3765470..1a8ca07 100644
--- a/LICENSE
+++ b/LICENSE
@@ -8,7 +8,7 @@
 If you modify libpng you may insert additional notices immediately following
 this sentence.
 
-libpng versions 1.2.6, August 15, 2004, through 1.4.0beta10, July 12, 2006, are
+libpng versions 1.2.6, August 15, 2004, through 1.4.0beta11, August 19, 2006, are
 Copyright (c) 2004, 2006 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
@@ -106,4 +106,4 @@
 
 Glenn Randers-Pehrson
 glennrp at users.sourceforge.net
-July 12, 2006
+August 19, 2006
diff --git a/Makefile.am b/Makefile.am
index 4c604a8..32ab3b3 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -34,7 +34,7 @@
 libpng14_la_SOURCES = 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 pnggccrd.c \
-	png.h pngconf.h pngintrn.h
+	png.h pngconf.h pngdefs.h pngpriv.h
 libpng_la_SOURCES = $(libpng14_la_SOURCES)
 
 libpng_la_CPPFLAGS = @LIBPNG_DEFINES@
@@ -60,7 +60,7 @@
 
 #distribute headers in /usr/include/libpng/*
 pkgincludedir= $(includedir)/$(PNGLIB_BASENAME)
-pkginclude_HEADERS= png.h pngconf.h
+pkginclude_HEADERS= png.h pngconf.h pngdefs.h
 
 # pkg-config stuff, note that libpng.pc is always required in order
 # to get the correct library
@@ -87,17 +87,13 @@
 
 CLEANFILES= pngout.png libpng14.pc libpng14-config libpng.vers libpng.sym
 
-pngconf.h.in:
-	cat pngconf.h > pngconf.h.in
+all: pngdefs.h
 
-pngconf.h: pngconf.h.in
-	sed "/Makefile-supplied defines go here:/q" pngconf.h.in > pngconf.h
+pngdefs.h:
+	echo "/* pngdefs.h created by \"configure\". */" > pngdefs.h
 	@if test -n "@LIBPNG_NO_MMX@"; then \
-	echo "#define PNG_NO_MMX_CODE" >> pngconf.h; \
+	echo "#define PNG_NO_MMX_CODE" >> pngdefs.h; \
 	fi
-	sed "1,/Makefile-supplied defines go here:/d" pngconf.h.in >> pngconf.h
-
-all: pngconf.h.in pngconf.h
 
 $(PNGLIB_BASENAME).pc: libpng.pc
 	cp libpng.pc $@
@@ -105,7 +101,7 @@
 $(PNGLIB_BASENAME)-config: libpng-config
 	cp libpng-config $@
 
-libpng.sym: png.h pngconf.h
+libpng.sym: png.h pngconf.h pngdefs.h
 	rm -f $@ $@.new
 	$(CPP) @LIBPNG_DEFINES@ $(CPPFLAGS) -DPNG_BUILDSYMS $(srcdir)/png.h | \
 		$(SED) -n -e \
@@ -123,9 +119,10 @@
 
 # install the .../include headers as links to the new ones
 install-data-hook:
-	cd $(DESTDIR)$(includedir); rm -f png.h pngconf.h
+	cd $(DESTDIR)$(includedir); rm -f png.h pngconf.h pngdefs.h
 	cd $(DESTDIR)$(includedir); $(LN_S) $(PNGLIB_BASENAME)/png.h png.h
 	cd $(DESTDIR)$(includedir); $(LN_S) $(PNGLIB_BASENAME)/pngconf.h pngconf.h
+	cd $(DESTDIR)$(includedir); $(LN_S) $(PNGLIB_BASENAME)/pngdefs.h pngdefs.h
 	cd $(DESTDIR)$(pkgconfigdir); rm -f libpng.pc
 	cd $(DESTDIR)$(pkgconfigdir); $(LN_S) $(PNGLIB_BASENAME).pc libpng.pc
 
@@ -141,7 +138,7 @@
 	done
 
 uninstall-hook:
-	cd $(DESTDIR)$(includedir); rm -f png.h pngconf.h
+	cd $(DESTDIR)$(includedir); rm -f png.h pngconf.h pngdefs.h
 	rm -f $(DESTDIR)$(pkgconfigdir)/libpng.pc
 	rm -f $(DESTDIR)$(bindir)/libpng-config
 	@if test -n "@compatlib@"; then\
diff --git a/Makefile.in b/Makefile.in
index 2167a14..ab1594c 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# 2003, 2004  Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -27,6 +27,8 @@
 
 
 
+SOURCES = $(libpng_la_SOURCES) $(libpng14_la_SOURCES) $(pngtest_SOURCES)
+
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
 VPATH = @srcdir@
@@ -110,11 +112,11 @@
 am__depfiles_maybe = depfiles
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
 SOURCES = $(libpng_la_SOURCES) $(libpng14_la_SOURCES) \
 	$(pngtest_SOURCES)
@@ -281,7 +283,7 @@
 libpng14_la_SOURCES = 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 pnggccrd.c \
-	png.h pngconf.h pngintrn.h
+	png.h pngconf.h pngdefs.h pngpriv.h
 
 libpng_la_SOURCES = $(libpng14_la_SOURCES)
 libpng_la_CPPFLAGS = @LIBPNG_DEFINES@
@@ -297,7 +299,7 @@
 @HAVE_LD_VERSION_SCRIPT_FALSE@libpng14_la_DEPENDENCIES = libpng.sym
 @HAVE_LD_VERSION_SCRIPT_TRUE@libpng14_la_DEPENDENCIES = libpng.vers
 libpng_la_DEPENDENCIES = $(libpng14_la_DEPENDENCIES)
-pkginclude_HEADERS = png.h pngconf.h
+pkginclude_HEADERS = png.h pngconf.h pngdefs.h
 pkgconfig_DATA = libpng14.pc
 
 #extra source distribution files.
@@ -501,228 +503,228 @@
 @am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
 
 libpng_la-png.lo: png.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-png.lo -MD -MP -MF "$(DEPDIR)/libpng_la-png.Tpo" -c -o libpng_la-png.lo `test -f 'png.c' || echo '$(srcdir)/'`png.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-png.lo -MD -MP -MF "$(DEPDIR)/libpng_la-png.Tpo" -c -o libpng_la-png.lo `test -f 'png.c' || echo '$(srcdir)/'`png.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng_la-png.Tpo" "$(DEPDIR)/libpng_la-png.Plo"; else rm -f "$(DEPDIR)/libpng_la-png.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='png.c' object='libpng_la-png.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-png.lo `test -f 'png.c' || echo '$(srcdir)/'`png.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-png.lo `test -f 'png.c' || echo '$(srcdir)/'`png.c
 
 libpng_la-pngset.lo: pngset.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngset.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngset.Tpo" -c -o libpng_la-pngset.lo `test -f 'pngset.c' || echo '$(srcdir)/'`pngset.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngset.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngset.Tpo" -c -o libpng_la-pngset.lo `test -f 'pngset.c' || echo '$(srcdir)/'`pngset.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng_la-pngset.Tpo" "$(DEPDIR)/libpng_la-pngset.Plo"; else rm -f "$(DEPDIR)/libpng_la-pngset.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngset.c' object='libpng_la-pngset.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngset.lo `test -f 'pngset.c' || echo '$(srcdir)/'`pngset.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngset.lo `test -f 'pngset.c' || echo '$(srcdir)/'`pngset.c
 
 libpng_la-pngget.lo: pngget.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngget.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngget.Tpo" -c -o libpng_la-pngget.lo `test -f 'pngget.c' || echo '$(srcdir)/'`pngget.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngget.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngget.Tpo" -c -o libpng_la-pngget.lo `test -f 'pngget.c' || echo '$(srcdir)/'`pngget.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng_la-pngget.Tpo" "$(DEPDIR)/libpng_la-pngget.Plo"; else rm -f "$(DEPDIR)/libpng_la-pngget.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngget.c' object='libpng_la-pngget.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngget.lo `test -f 'pngget.c' || echo '$(srcdir)/'`pngget.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngget.lo `test -f 'pngget.c' || echo '$(srcdir)/'`pngget.c
 
 libpng_la-pngrutil.lo: pngrutil.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngrutil.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngrutil.Tpo" -c -o libpng_la-pngrutil.lo `test -f 'pngrutil.c' || echo '$(srcdir)/'`pngrutil.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngrutil.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngrutil.Tpo" -c -o libpng_la-pngrutil.lo `test -f 'pngrutil.c' || echo '$(srcdir)/'`pngrutil.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng_la-pngrutil.Tpo" "$(DEPDIR)/libpng_la-pngrutil.Plo"; else rm -f "$(DEPDIR)/libpng_la-pngrutil.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngrutil.c' object='libpng_la-pngrutil.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngrutil.lo `test -f 'pngrutil.c' || echo '$(srcdir)/'`pngrutil.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngrutil.lo `test -f 'pngrutil.c' || echo '$(srcdir)/'`pngrutil.c
 
 libpng_la-pngtrans.lo: pngtrans.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngtrans.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngtrans.Tpo" -c -o libpng_la-pngtrans.lo `test -f 'pngtrans.c' || echo '$(srcdir)/'`pngtrans.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngtrans.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngtrans.Tpo" -c -o libpng_la-pngtrans.lo `test -f 'pngtrans.c' || echo '$(srcdir)/'`pngtrans.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng_la-pngtrans.Tpo" "$(DEPDIR)/libpng_la-pngtrans.Plo"; else rm -f "$(DEPDIR)/libpng_la-pngtrans.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngtrans.c' object='libpng_la-pngtrans.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngtrans.lo `test -f 'pngtrans.c' || echo '$(srcdir)/'`pngtrans.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngtrans.lo `test -f 'pngtrans.c' || echo '$(srcdir)/'`pngtrans.c
 
 libpng_la-pngwutil.lo: pngwutil.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngwutil.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngwutil.Tpo" -c -o libpng_la-pngwutil.lo `test -f 'pngwutil.c' || echo '$(srcdir)/'`pngwutil.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngwutil.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngwutil.Tpo" -c -o libpng_la-pngwutil.lo `test -f 'pngwutil.c' || echo '$(srcdir)/'`pngwutil.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng_la-pngwutil.Tpo" "$(DEPDIR)/libpng_la-pngwutil.Plo"; else rm -f "$(DEPDIR)/libpng_la-pngwutil.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngwutil.c' object='libpng_la-pngwutil.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngwutil.lo `test -f 'pngwutil.c' || echo '$(srcdir)/'`pngwutil.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngwutil.lo `test -f 'pngwutil.c' || echo '$(srcdir)/'`pngwutil.c
 
 libpng_la-pngread.lo: pngread.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngread.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngread.Tpo" -c -o libpng_la-pngread.lo `test -f 'pngread.c' || echo '$(srcdir)/'`pngread.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngread.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngread.Tpo" -c -o libpng_la-pngread.lo `test -f 'pngread.c' || echo '$(srcdir)/'`pngread.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng_la-pngread.Tpo" "$(DEPDIR)/libpng_la-pngread.Plo"; else rm -f "$(DEPDIR)/libpng_la-pngread.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngread.c' object='libpng_la-pngread.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngread.lo `test -f 'pngread.c' || echo '$(srcdir)/'`pngread.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngread.lo `test -f 'pngread.c' || echo '$(srcdir)/'`pngread.c
 
 libpng_la-pngrio.lo: pngrio.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngrio.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngrio.Tpo" -c -o libpng_la-pngrio.lo `test -f 'pngrio.c' || echo '$(srcdir)/'`pngrio.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngrio.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngrio.Tpo" -c -o libpng_la-pngrio.lo `test -f 'pngrio.c' || echo '$(srcdir)/'`pngrio.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng_la-pngrio.Tpo" "$(DEPDIR)/libpng_la-pngrio.Plo"; else rm -f "$(DEPDIR)/libpng_la-pngrio.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngrio.c' object='libpng_la-pngrio.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngrio.lo `test -f 'pngrio.c' || echo '$(srcdir)/'`pngrio.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngrio.lo `test -f 'pngrio.c' || echo '$(srcdir)/'`pngrio.c
 
 libpng_la-pngwio.lo: pngwio.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngwio.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngwio.Tpo" -c -o libpng_la-pngwio.lo `test -f 'pngwio.c' || echo '$(srcdir)/'`pngwio.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngwio.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngwio.Tpo" -c -o libpng_la-pngwio.lo `test -f 'pngwio.c' || echo '$(srcdir)/'`pngwio.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng_la-pngwio.Tpo" "$(DEPDIR)/libpng_la-pngwio.Plo"; else rm -f "$(DEPDIR)/libpng_la-pngwio.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngwio.c' object='libpng_la-pngwio.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngwio.lo `test -f 'pngwio.c' || echo '$(srcdir)/'`pngwio.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngwio.lo `test -f 'pngwio.c' || echo '$(srcdir)/'`pngwio.c
 
 libpng_la-pngwrite.lo: pngwrite.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngwrite.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngwrite.Tpo" -c -o libpng_la-pngwrite.lo `test -f 'pngwrite.c' || echo '$(srcdir)/'`pngwrite.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngwrite.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngwrite.Tpo" -c -o libpng_la-pngwrite.lo `test -f 'pngwrite.c' || echo '$(srcdir)/'`pngwrite.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng_la-pngwrite.Tpo" "$(DEPDIR)/libpng_la-pngwrite.Plo"; else rm -f "$(DEPDIR)/libpng_la-pngwrite.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngwrite.c' object='libpng_la-pngwrite.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngwrite.lo `test -f 'pngwrite.c' || echo '$(srcdir)/'`pngwrite.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngwrite.lo `test -f 'pngwrite.c' || echo '$(srcdir)/'`pngwrite.c
 
 libpng_la-pngrtran.lo: pngrtran.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngrtran.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngrtran.Tpo" -c -o libpng_la-pngrtran.lo `test -f 'pngrtran.c' || echo '$(srcdir)/'`pngrtran.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngrtran.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngrtran.Tpo" -c -o libpng_la-pngrtran.lo `test -f 'pngrtran.c' || echo '$(srcdir)/'`pngrtran.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng_la-pngrtran.Tpo" "$(DEPDIR)/libpng_la-pngrtran.Plo"; else rm -f "$(DEPDIR)/libpng_la-pngrtran.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngrtran.c' object='libpng_la-pngrtran.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngrtran.lo `test -f 'pngrtran.c' || echo '$(srcdir)/'`pngrtran.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngrtran.lo `test -f 'pngrtran.c' || echo '$(srcdir)/'`pngrtran.c
 
 libpng_la-pngwtran.lo: pngwtran.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngwtran.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngwtran.Tpo" -c -o libpng_la-pngwtran.lo `test -f 'pngwtran.c' || echo '$(srcdir)/'`pngwtran.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngwtran.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngwtran.Tpo" -c -o libpng_la-pngwtran.lo `test -f 'pngwtran.c' || echo '$(srcdir)/'`pngwtran.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng_la-pngwtran.Tpo" "$(DEPDIR)/libpng_la-pngwtran.Plo"; else rm -f "$(DEPDIR)/libpng_la-pngwtran.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngwtran.c' object='libpng_la-pngwtran.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngwtran.lo `test -f 'pngwtran.c' || echo '$(srcdir)/'`pngwtran.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngwtran.lo `test -f 'pngwtran.c' || echo '$(srcdir)/'`pngwtran.c
 
 libpng_la-pngmem.lo: pngmem.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngmem.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngmem.Tpo" -c -o libpng_la-pngmem.lo `test -f 'pngmem.c' || echo '$(srcdir)/'`pngmem.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngmem.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngmem.Tpo" -c -o libpng_la-pngmem.lo `test -f 'pngmem.c' || echo '$(srcdir)/'`pngmem.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng_la-pngmem.Tpo" "$(DEPDIR)/libpng_la-pngmem.Plo"; else rm -f "$(DEPDIR)/libpng_la-pngmem.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngmem.c' object='libpng_la-pngmem.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngmem.lo `test -f 'pngmem.c' || echo '$(srcdir)/'`pngmem.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngmem.lo `test -f 'pngmem.c' || echo '$(srcdir)/'`pngmem.c
 
 libpng_la-pngerror.lo: pngerror.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngerror.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngerror.Tpo" -c -o libpng_la-pngerror.lo `test -f 'pngerror.c' || echo '$(srcdir)/'`pngerror.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngerror.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngerror.Tpo" -c -o libpng_la-pngerror.lo `test -f 'pngerror.c' || echo '$(srcdir)/'`pngerror.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng_la-pngerror.Tpo" "$(DEPDIR)/libpng_la-pngerror.Plo"; else rm -f "$(DEPDIR)/libpng_la-pngerror.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngerror.c' object='libpng_la-pngerror.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngerror.lo `test -f 'pngerror.c' || echo '$(srcdir)/'`pngerror.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngerror.lo `test -f 'pngerror.c' || echo '$(srcdir)/'`pngerror.c
 
 libpng_la-pngpread.lo: pngpread.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngpread.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngpread.Tpo" -c -o libpng_la-pngpread.lo `test -f 'pngpread.c' || echo '$(srcdir)/'`pngpread.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pngpread.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pngpread.Tpo" -c -o libpng_la-pngpread.lo `test -f 'pngpread.c' || echo '$(srcdir)/'`pngpread.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng_la-pngpread.Tpo" "$(DEPDIR)/libpng_la-pngpread.Plo"; else rm -f "$(DEPDIR)/libpng_la-pngpread.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngpread.c' object='libpng_la-pngpread.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngpread.lo `test -f 'pngpread.c' || echo '$(srcdir)/'`pngpread.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pngpread.lo `test -f 'pngpread.c' || echo '$(srcdir)/'`pngpread.c
 
 libpng_la-pnggccrd.lo: pnggccrd.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pnggccrd.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pnggccrd.Tpo" -c -o libpng_la-pnggccrd.lo `test -f 'pnggccrd.c' || echo '$(srcdir)/'`pnggccrd.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng_la-pnggccrd.lo -MD -MP -MF "$(DEPDIR)/libpng_la-pnggccrd.Tpo" -c -o libpng_la-pnggccrd.lo `test -f 'pnggccrd.c' || echo '$(srcdir)/'`pnggccrd.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng_la-pnggccrd.Tpo" "$(DEPDIR)/libpng_la-pnggccrd.Plo"; else rm -f "$(DEPDIR)/libpng_la-pnggccrd.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pnggccrd.c' object='libpng_la-pnggccrd.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pnggccrd.lo `test -f 'pnggccrd.c' || echo '$(srcdir)/'`pnggccrd.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng_la-pnggccrd.lo `test -f 'pnggccrd.c' || echo '$(srcdir)/'`pnggccrd.c
 
 libpng14_la-png.lo: png.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-png.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-png.Tpo" -c -o libpng14_la-png.lo `test -f 'png.c' || echo '$(srcdir)/'`png.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-png.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-png.Tpo" -c -o libpng14_la-png.lo `test -f 'png.c' || echo '$(srcdir)/'`png.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng14_la-png.Tpo" "$(DEPDIR)/libpng14_la-png.Plo"; else rm -f "$(DEPDIR)/libpng14_la-png.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='png.c' object='libpng14_la-png.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-png.lo `test -f 'png.c' || echo '$(srcdir)/'`png.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-png.lo `test -f 'png.c' || echo '$(srcdir)/'`png.c
 
 libpng14_la-pngset.lo: pngset.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngset.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngset.Tpo" -c -o libpng14_la-pngset.lo `test -f 'pngset.c' || echo '$(srcdir)/'`pngset.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngset.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngset.Tpo" -c -o libpng14_la-pngset.lo `test -f 'pngset.c' || echo '$(srcdir)/'`pngset.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng14_la-pngset.Tpo" "$(DEPDIR)/libpng14_la-pngset.Plo"; else rm -f "$(DEPDIR)/libpng14_la-pngset.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngset.c' object='libpng14_la-pngset.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngset.lo `test -f 'pngset.c' || echo '$(srcdir)/'`pngset.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngset.lo `test -f 'pngset.c' || echo '$(srcdir)/'`pngset.c
 
 libpng14_la-pngget.lo: pngget.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngget.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngget.Tpo" -c -o libpng14_la-pngget.lo `test -f 'pngget.c' || echo '$(srcdir)/'`pngget.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngget.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngget.Tpo" -c -o libpng14_la-pngget.lo `test -f 'pngget.c' || echo '$(srcdir)/'`pngget.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng14_la-pngget.Tpo" "$(DEPDIR)/libpng14_la-pngget.Plo"; else rm -f "$(DEPDIR)/libpng14_la-pngget.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngget.c' object='libpng14_la-pngget.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngget.lo `test -f 'pngget.c' || echo '$(srcdir)/'`pngget.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngget.lo `test -f 'pngget.c' || echo '$(srcdir)/'`pngget.c
 
 libpng14_la-pngrutil.lo: pngrutil.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngrutil.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngrutil.Tpo" -c -o libpng14_la-pngrutil.lo `test -f 'pngrutil.c' || echo '$(srcdir)/'`pngrutil.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngrutil.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngrutil.Tpo" -c -o libpng14_la-pngrutil.lo `test -f 'pngrutil.c' || echo '$(srcdir)/'`pngrutil.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng14_la-pngrutil.Tpo" "$(DEPDIR)/libpng14_la-pngrutil.Plo"; else rm -f "$(DEPDIR)/libpng14_la-pngrutil.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngrutil.c' object='libpng14_la-pngrutil.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngrutil.lo `test -f 'pngrutil.c' || echo '$(srcdir)/'`pngrutil.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngrutil.lo `test -f 'pngrutil.c' || echo '$(srcdir)/'`pngrutil.c
 
 libpng14_la-pngtrans.lo: pngtrans.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngtrans.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngtrans.Tpo" -c -o libpng14_la-pngtrans.lo `test -f 'pngtrans.c' || echo '$(srcdir)/'`pngtrans.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngtrans.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngtrans.Tpo" -c -o libpng14_la-pngtrans.lo `test -f 'pngtrans.c' || echo '$(srcdir)/'`pngtrans.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng14_la-pngtrans.Tpo" "$(DEPDIR)/libpng14_la-pngtrans.Plo"; else rm -f "$(DEPDIR)/libpng14_la-pngtrans.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngtrans.c' object='libpng14_la-pngtrans.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngtrans.lo `test -f 'pngtrans.c' || echo '$(srcdir)/'`pngtrans.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngtrans.lo `test -f 'pngtrans.c' || echo '$(srcdir)/'`pngtrans.c
 
 libpng14_la-pngwutil.lo: pngwutil.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngwutil.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngwutil.Tpo" -c -o libpng14_la-pngwutil.lo `test -f 'pngwutil.c' || echo '$(srcdir)/'`pngwutil.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngwutil.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngwutil.Tpo" -c -o libpng14_la-pngwutil.lo `test -f 'pngwutil.c' || echo '$(srcdir)/'`pngwutil.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng14_la-pngwutil.Tpo" "$(DEPDIR)/libpng14_la-pngwutil.Plo"; else rm -f "$(DEPDIR)/libpng14_la-pngwutil.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngwutil.c' object='libpng14_la-pngwutil.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngwutil.lo `test -f 'pngwutil.c' || echo '$(srcdir)/'`pngwutil.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngwutil.lo `test -f 'pngwutil.c' || echo '$(srcdir)/'`pngwutil.c
 
 libpng14_la-pngread.lo: pngread.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngread.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngread.Tpo" -c -o libpng14_la-pngread.lo `test -f 'pngread.c' || echo '$(srcdir)/'`pngread.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngread.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngread.Tpo" -c -o libpng14_la-pngread.lo `test -f 'pngread.c' || echo '$(srcdir)/'`pngread.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng14_la-pngread.Tpo" "$(DEPDIR)/libpng14_la-pngread.Plo"; else rm -f "$(DEPDIR)/libpng14_la-pngread.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngread.c' object='libpng14_la-pngread.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngread.lo `test -f 'pngread.c' || echo '$(srcdir)/'`pngread.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngread.lo `test -f 'pngread.c' || echo '$(srcdir)/'`pngread.c
 
 libpng14_la-pngrio.lo: pngrio.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngrio.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngrio.Tpo" -c -o libpng14_la-pngrio.lo `test -f 'pngrio.c' || echo '$(srcdir)/'`pngrio.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngrio.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngrio.Tpo" -c -o libpng14_la-pngrio.lo `test -f 'pngrio.c' || echo '$(srcdir)/'`pngrio.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng14_la-pngrio.Tpo" "$(DEPDIR)/libpng14_la-pngrio.Plo"; else rm -f "$(DEPDIR)/libpng14_la-pngrio.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngrio.c' object='libpng14_la-pngrio.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngrio.lo `test -f 'pngrio.c' || echo '$(srcdir)/'`pngrio.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngrio.lo `test -f 'pngrio.c' || echo '$(srcdir)/'`pngrio.c
 
 libpng14_la-pngwio.lo: pngwio.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngwio.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngwio.Tpo" -c -o libpng14_la-pngwio.lo `test -f 'pngwio.c' || echo '$(srcdir)/'`pngwio.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngwio.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngwio.Tpo" -c -o libpng14_la-pngwio.lo `test -f 'pngwio.c' || echo '$(srcdir)/'`pngwio.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng14_la-pngwio.Tpo" "$(DEPDIR)/libpng14_la-pngwio.Plo"; else rm -f "$(DEPDIR)/libpng14_la-pngwio.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngwio.c' object='libpng14_la-pngwio.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngwio.lo `test -f 'pngwio.c' || echo '$(srcdir)/'`pngwio.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngwio.lo `test -f 'pngwio.c' || echo '$(srcdir)/'`pngwio.c
 
 libpng14_la-pngwrite.lo: pngwrite.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngwrite.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngwrite.Tpo" -c -o libpng14_la-pngwrite.lo `test -f 'pngwrite.c' || echo '$(srcdir)/'`pngwrite.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngwrite.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngwrite.Tpo" -c -o libpng14_la-pngwrite.lo `test -f 'pngwrite.c' || echo '$(srcdir)/'`pngwrite.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng14_la-pngwrite.Tpo" "$(DEPDIR)/libpng14_la-pngwrite.Plo"; else rm -f "$(DEPDIR)/libpng14_la-pngwrite.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngwrite.c' object='libpng14_la-pngwrite.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngwrite.lo `test -f 'pngwrite.c' || echo '$(srcdir)/'`pngwrite.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngwrite.lo `test -f 'pngwrite.c' || echo '$(srcdir)/'`pngwrite.c
 
 libpng14_la-pngrtran.lo: pngrtran.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngrtran.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngrtran.Tpo" -c -o libpng14_la-pngrtran.lo `test -f 'pngrtran.c' || echo '$(srcdir)/'`pngrtran.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngrtran.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngrtran.Tpo" -c -o libpng14_la-pngrtran.lo `test -f 'pngrtran.c' || echo '$(srcdir)/'`pngrtran.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng14_la-pngrtran.Tpo" "$(DEPDIR)/libpng14_la-pngrtran.Plo"; else rm -f "$(DEPDIR)/libpng14_la-pngrtran.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngrtran.c' object='libpng14_la-pngrtran.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngrtran.lo `test -f 'pngrtran.c' || echo '$(srcdir)/'`pngrtran.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngrtran.lo `test -f 'pngrtran.c' || echo '$(srcdir)/'`pngrtran.c
 
 libpng14_la-pngwtran.lo: pngwtran.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngwtran.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngwtran.Tpo" -c -o libpng14_la-pngwtran.lo `test -f 'pngwtran.c' || echo '$(srcdir)/'`pngwtran.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngwtran.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngwtran.Tpo" -c -o libpng14_la-pngwtran.lo `test -f 'pngwtran.c' || echo '$(srcdir)/'`pngwtran.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng14_la-pngwtran.Tpo" "$(DEPDIR)/libpng14_la-pngwtran.Plo"; else rm -f "$(DEPDIR)/libpng14_la-pngwtran.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngwtran.c' object='libpng14_la-pngwtran.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngwtran.lo `test -f 'pngwtran.c' || echo '$(srcdir)/'`pngwtran.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngwtran.lo `test -f 'pngwtran.c' || echo '$(srcdir)/'`pngwtran.c
 
 libpng14_la-pngmem.lo: pngmem.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngmem.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngmem.Tpo" -c -o libpng14_la-pngmem.lo `test -f 'pngmem.c' || echo '$(srcdir)/'`pngmem.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngmem.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngmem.Tpo" -c -o libpng14_la-pngmem.lo `test -f 'pngmem.c' || echo '$(srcdir)/'`pngmem.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng14_la-pngmem.Tpo" "$(DEPDIR)/libpng14_la-pngmem.Plo"; else rm -f "$(DEPDIR)/libpng14_la-pngmem.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngmem.c' object='libpng14_la-pngmem.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngmem.lo `test -f 'pngmem.c' || echo '$(srcdir)/'`pngmem.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngmem.lo `test -f 'pngmem.c' || echo '$(srcdir)/'`pngmem.c
 
 libpng14_la-pngerror.lo: pngerror.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngerror.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngerror.Tpo" -c -o libpng14_la-pngerror.lo `test -f 'pngerror.c' || echo '$(srcdir)/'`pngerror.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngerror.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngerror.Tpo" -c -o libpng14_la-pngerror.lo `test -f 'pngerror.c' || echo '$(srcdir)/'`pngerror.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng14_la-pngerror.Tpo" "$(DEPDIR)/libpng14_la-pngerror.Plo"; else rm -f "$(DEPDIR)/libpng14_la-pngerror.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngerror.c' object='libpng14_la-pngerror.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngerror.lo `test -f 'pngerror.c' || echo '$(srcdir)/'`pngerror.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngerror.lo `test -f 'pngerror.c' || echo '$(srcdir)/'`pngerror.c
 
 libpng14_la-pngpread.lo: pngpread.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngpread.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngpread.Tpo" -c -o libpng14_la-pngpread.lo `test -f 'pngpread.c' || echo '$(srcdir)/'`pngpread.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pngpread.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pngpread.Tpo" -c -o libpng14_la-pngpread.lo `test -f 'pngpread.c' || echo '$(srcdir)/'`pngpread.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng14_la-pngpread.Tpo" "$(DEPDIR)/libpng14_la-pngpread.Plo"; else rm -f "$(DEPDIR)/libpng14_la-pngpread.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pngpread.c' object='libpng14_la-pngpread.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngpread.lo `test -f 'pngpread.c' || echo '$(srcdir)/'`pngpread.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pngpread.lo `test -f 'pngpread.c' || echo '$(srcdir)/'`pngpread.c
 
 libpng14_la-pnggccrd.lo: pnggccrd.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pnggccrd.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pnggccrd.Tpo" -c -o libpng14_la-pnggccrd.lo `test -f 'pnggccrd.c' || echo '$(srcdir)/'`pnggccrd.c; \
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpng14_la-pnggccrd.lo -MD -MP -MF "$(DEPDIR)/libpng14_la-pnggccrd.Tpo" -c -o libpng14_la-pnggccrd.lo `test -f 'pnggccrd.c' || echo '$(srcdir)/'`pnggccrd.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libpng14_la-pnggccrd.Tpo" "$(DEPDIR)/libpng14_la-pnggccrd.Plo"; else rm -f "$(DEPDIR)/libpng14_la-pnggccrd.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='pnggccrd.c' object='libpng14_la-pnggccrd.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pnggccrd.lo `test -f 'pnggccrd.c' || echo '$(srcdir)/'`pnggccrd.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpng14_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpng14_la-pnggccrd.lo `test -f 'pnggccrd.c' || echo '$(srcdir)/'`pnggccrd.c
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -1230,17 +1232,13 @@
 @HAVE_LD_VERSION_SCRIPT_TRUE@  # Versioned symbols and restricted exports
 @HAVE_LD_VERSION_SCRIPT_FALSE@  # Only restricted exports when possible
 
-pngconf.h.in:
-	cat pngconf.h > pngconf.h.in
+all: pngdefs.h
 
-pngconf.h: pngconf.h.in
-	sed "/Makefile-supplied defines go here:/q" pngconf.h.in > pngconf.h
+pngdefs.h:
+	echo "/* pngdefs.h created by \"configure\". */" > pngdefs.h
 	@if test -n "@LIBPNG_NO_MMX@"; then \
-	echo "#define PNG_NO_MMX_CODE" >> pngconf.h; \
+	echo "#define PNG_NO_MMX_CODE" >> pngdefs.h; \
 	fi
-	sed "1,/Makefile-supplied defines go here:/d" pngconf.h.in >> pngconf.h
-
-all: pngconf.h.in pngconf.h
 
 $(PNGLIB_BASENAME).pc: libpng.pc
 	cp libpng.pc $@
@@ -1248,7 +1246,7 @@
 $(PNGLIB_BASENAME)-config: libpng-config
 	cp libpng-config $@
 
-libpng.sym: png.h pngconf.h
+libpng.sym: png.h pngconf.h pngdefs.h
 	rm -f $@ $@.new
 	$(CPP) @LIBPNG_DEFINES@ $(CPPFLAGS) -DPNG_BUILDSYMS $(srcdir)/png.h | \
 		$(SED) -n -e \
@@ -1266,9 +1264,10 @@
 
 # install the .../include headers as links to the new ones
 install-data-hook:
-	cd $(DESTDIR)$(includedir); rm -f png.h pngconf.h
+	cd $(DESTDIR)$(includedir); rm -f png.h pngconf.h pngdefs.h
 	cd $(DESTDIR)$(includedir); $(LN_S) $(PNGLIB_BASENAME)/png.h png.h
 	cd $(DESTDIR)$(includedir); $(LN_S) $(PNGLIB_BASENAME)/pngconf.h pngconf.h
+	cd $(DESTDIR)$(includedir); $(LN_S) $(PNGLIB_BASENAME)/pngdefs.h pngdefs.h
 	cd $(DESTDIR)$(pkgconfigdir); rm -f libpng.pc
 	cd $(DESTDIR)$(pkgconfigdir); $(LN_S) $(PNGLIB_BASENAME).pc libpng.pc
 
@@ -1284,7 +1283,7 @@
 	done
 
 uninstall-hook:
-	cd $(DESTDIR)$(includedir); rm -f png.h pngconf.h
+	cd $(DESTDIR)$(includedir); rm -f png.h pngconf.h pngdefs.h
 	rm -f $(DESTDIR)$(pkgconfigdir)/libpng.pc
 	rm -f $(DESTDIR)$(bindir)/libpng-config
 	@if test -n "@compatlib@"; then\
diff --git a/README b/README
index 6372e69..5652fa3 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-README for libpng version 1.4.0beta10 - July 12, 2006 (shared library 14.0)
+README for libpng version 1.4.0beta11 - August 19, 2006 (shared library 14.0)
 See the note about version numbers near the top of png.h
 
 See INSTALL for instructions on how to install libpng.
@@ -184,11 +184,11 @@
        descrip.mms      =>  VMS makefile for MMS or MMK
        makefile.std     =>  Generic UNIX makefile (cc, creates static libpng.a)
        makefile.elf     =>  Linux/ELF makefile symbol versioning,
-                            gcc, creates libpng14.so.1.1.4.0beta10)
+                            gcc, creates libpng14.so.1.1.4.0beta11)
        makefile.linux   =>  Linux/ELF makefile
-                            (gcc, creates libpng14.so.1.1.4.0beta10)
+                            (gcc, creates libpng14.so.1.1.4.0beta11)
        makefile.gcmmx   =>  Linux/ELF makefile
-                            (gcc, creates libpng14.so.1.1.4.0beta10,
+                            (gcc, creates libpng14.so.1.1.4.0beta11,
                             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
@@ -210,12 +210,12 @@
        makefile.openbsd =>  OpenBSD makefile
        makefile.sgi     =>  Silicon Graphics IRIX (cc, creates static lib)
        makefile.sggcc   =>  Silicon Graphics
-                            (gcc, creates libpng14.so.1.1.4.0beta10)
+                            (gcc, creates libpng14.so.1.1.4.0beta11)
        makefile.sunos   =>  Sun makefile
        makefile.solaris =>  Solaris 2.X makefile
-                            (gcc, creates libpng14.so.1.1.4.0beta10)
+                            (gcc, creates libpng14.so.1.1.4.0beta11)
        makefile.so9     =>  Solaris 9 makefile
-                            (gcc, creates libpng14.so.1.1.4.0beta10)
+                            (gcc, creates libpng14.so.1.1.4.0beta11)
        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
diff --git a/configure b/configure
index 29373ca..7953900 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59 for libpng 1.4.0beta10.
+# Generated by GNU Autoconf 2.59 for libpng 1.4.0beta11.
 #
 # Report bugs to <png-mng-implement@lists.sourceforge.net>.
 #
@@ -423,8 +423,8 @@
 # Identity of this package.
 PACKAGE_NAME='libpng'
 PACKAGE_TARNAME='libpng'
-PACKAGE_VERSION='1.4.0beta10'
-PACKAGE_STRING='libpng 1.4.0beta10'
+PACKAGE_VERSION='1.4.0beta11'
+PACKAGE_STRING='libpng 1.4.0beta11'
 PACKAGE_BUGREPORT='png-mng-implement@lists.sourceforge.net'
 
 ac_unique_file="pngget.c"
@@ -954,7 +954,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures libpng 1.4.0beta10 to adapt to many kinds of systems.
+\`configure' configures libpng 1.4.0beta11 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1020,7 +1020,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libpng 1.4.0beta10:";;
+     short | recursive ) echo "Configuration of libpng 1.4.0beta11:";;
    esac
   cat <<\_ACEOF
 
@@ -1167,7 +1167,7 @@
 test -n "$ac_init_help" && exit 0
 if $ac_init_version; then
   cat <<\_ACEOF
-libpng configure 1.4.0beta10
+libpng configure 1.4.0beta11
 generated by GNU Autoconf 2.59
 
 Copyright (C) 2003 Free Software Foundation, Inc.
@@ -1181,7 +1181,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by libpng $as_me 1.4.0beta10, which was
+It was created by libpng $as_me 1.4.0beta11, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   $ $0 $@
@@ -1824,7 +1824,7 @@
 
 # Define the identity of the package.
  PACKAGE='libpng'
- VERSION='1.4.0beta10'
+ VERSION='1.4.0beta11'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -1979,7 +1979,7 @@
 
 
 
-PNGLIB_VERSION=1.4.0beta10
+PNGLIB_VERSION=1.4.0beta11
 PNGLIB_MAJOR=14
 PNGLIB_MINOR=0
 
@@ -19451,86 +19451,6 @@
 
 done
 
-echo "$as_me:$LINENO: checking for GNU libc compatible malloc" >&5
-echo $ECHO_N "checking for GNU libc compatible malloc... $ECHO_C" >&6
-if test "${ac_cv_func_malloc_0_nonnull+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test "$cross_compiling" = yes; then
-  ac_cv_func_malloc_0_nonnull=no
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#if STDC_HEADERS || HAVE_STDLIB_H
-# include <stdlib.h>
-#else
-char *malloc ();
-#endif
-
-int
-main ()
-{
-exit (malloc (0) ? 0 : 1);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_malloc_0_nonnull=yes
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_func_malloc_0_nonnull=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_malloc_0_nonnull" >&5
-echo "${ECHO_T}$ac_cv_func_malloc_0_nonnull" >&6
-if test $ac_cv_func_malloc_0_nonnull = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MALLOC 1
-_ACEOF
-
-else
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_MALLOC 0
-_ACEOF
-
-   case $LIBOBJS in
-    "malloc.$ac_objext"   | \
-  *" malloc.$ac_objext"   | \
-    "malloc.$ac_objext "* | \
-  *" malloc.$ac_objext "* ) ;;
-  *) LIBOBJS="$LIBOBJS malloc.$ac_objext" ;;
-esac
-
-
-cat >>confdefs.h <<\_ACEOF
-#define malloc rpl_malloc
-_ACEOF
-
-fi
-
-
 
 echo "$as_me:$LINENO: checking for working strtod" >&5
 echo $ECHO_N "checking for working strtod... $ECHO_C" >&6
@@ -20683,7 +20603,7 @@
 } >&5
 cat >&5 <<_CSEOF
 
-This file was extended by libpng $as_me 1.4.0beta10, which was
+This file was extended by libpng $as_me 1.4.0beta11, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -20746,7 +20666,7 @@
 
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-libpng config.status 1.4.0beta10
+libpng config.status 1.4.0beta11
 configured by $0, generated by GNU Autoconf 2.59,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
diff --git a/configure.ac b/configure.ac
index f300c28..dd6f8a7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -18,12 +18,12 @@
 
 dnl Version number stuff here:
 
-AC_INIT([libpng], [1.4.0beta10], [png-mng-implement@lists.sourceforge.net])
+AC_INIT([libpng], [1.4.0beta11], [png-mng-implement@lists.sourceforge.net])
 AM_INIT_AUTOMAKE
 dnl stop configure from automagically running automake
 AM_MAINTAINER_MODE
 
-PNGLIB_VERSION=1.4.0beta10
+PNGLIB_VERSION=1.4.0beta11
 PNGLIB_MAJOR=14
 PNGLIB_MINOR=0
 
@@ -52,7 +52,6 @@
 AC_STRUCT_TM
 
 # Checks for library functions.
-AC_FUNC_MALLOC
 AC_FUNC_STRTOD
 AC_CHECK_FUNCS([memset], , AC_ERROR([memset not found in libc]))
 AC_CHECK_FUNCS([pow], , AC_CHECK_LIB(m, pow, , AC_ERROR([cannot find pow])) )
diff --git a/example.c b/example.c
index fd7096e..4cd7148 100644
--- a/example.c
+++ b/example.c
@@ -70,7 +70,7 @@
    /* Compare the first PNG_BYTES_TO_CHECK bytes of the signature.
       Return nonzero (true) if they match */
 
-   return(!png_sig_cmp(buf, (png_size_t)0, PNG_BYTES_TO_CHECK));
+   return(!png_sig_cmp(buf, 0, PNG_BYTES_TO_CHECK));
 }
 
 /* Read a PNG file.  You may want to return an error code if the read
@@ -120,7 +120,7 @@
    if (info_ptr == NULL)
    {
       fclose(fp);
-      png_destroy_read_struct(&png_ptr, png_infopp_NULL, png_infopp_NULL);
+      png_destroy_read_struct(&png_ptr, NULL, NULL);
       return (ERROR);
    }
 
@@ -132,7 +132,7 @@
    if (setjmp(png_jmpbuf(png_ptr)))
    {
       /* Free all of the memory associated with the png_ptr and info_ptr */
-      png_destroy_read_struct(&png_ptr, &info_ptr, png_infopp_NULL);
+      png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
       fclose(fp);
       /* If we get here, we had a problem reading the file */
       return (ERROR);
@@ -163,7 +163,7 @@
     * adjustment), then you can read the entire image (including
     * pixels) into the info structure with this call:
     */
-   png_read_png(png_ptr, info_ptr, png_transforms, png_voidp_NULL);
+   png_read_png(png_ptr, info_ptr, png_transforms, NULL);
 #else
    /* OK, you're doing it the hard way, with the lower-level functions */
 
@@ -173,7 +173,7 @@
    png_read_info(png_ptr, info_ptr);
 
    png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type,
-       &interlace_type, int_p_NULL, int_p_NULL);
+       &interlace_type, NULL, NULL);
 
 /* Set up the data transformations you want.  Note that these are all
  * optional.  Only call them if you want/need them.  Many of the
@@ -283,7 +283,7 @@
          png_color std_color_cube[MAX_SCREEN_COLORS];
 
          png_set_dither(png_ptr, std_color_cube, MAX_SCREEN_COLORS,
-            MAX_SCREEN_COLORS, png_uint_16p_NULL, 0);
+            MAX_SCREEN_COLORS, NULL, 0);
       }
       /* This reduces the image to the palette supplied in the file */
       else if (png_get_PLTE(png_ptr, info_ptr, &palette, &num_palette))
@@ -360,18 +360,16 @@
 #ifdef single /* Read the image a single row at a time */
       for (y = 0; y < height; y++)
       {
-         png_read_rows(png_ptr, &row_pointers[y], png_bytepp_NULL, 1);
+         png_read_rows(png_ptr, &row_pointers[y], NULL, 1);
       }
 
 #else no_single /* Read the image several rows at a time */
       for (y = 0; y < height; y += number_of_rows)
       {
 #ifdef sparkle /* Read the image using the "sparkle" effect. */
-         png_read_rows(png_ptr, &row_pointers[y], png_bytepp_NULL,
-            number_of_rows);
+         png_read_rows(png_ptr, &row_pointers[y], NULL, number_of_rows);
 #else no_sparkle /* Read the image using the "rectangle" effect */
-         png_read_rows(png_ptr, png_bytepp_NULL, &row_pointers[y],
-            number_of_rows);
+         png_read_rows(png_ptr, NULL, &row_pointers[y], number_of_rows);
 #endif no_sparkle /* use only one of these two methods */
       }
 
@@ -388,7 +386,7 @@
    /* At this point you have read the entire image */
 
    /* clean up after the read, and free any memory allocated - REQUIRED */
-   png_destroy_read_struct(&png_ptr, &info_ptr, png_infopp_NULL);
+   png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
 
    /* close the file */
    fclose(fp);
@@ -421,13 +419,13 @@
 
    if (*info_ptr == NULL)
    {
-      png_destroy_read_struct(png_ptr, info_ptr, png_infopp_NULL);
+      png_destroy_read_struct(png_ptr, info_ptr, NULL);
       return (ERROR);
    }
 
    if (setjmp(png_jmpbuf((*png_ptr))))
    {
-      png_destroy_read_struct(png_ptr, info_ptr, png_infopp_NULL);
+      png_destroy_read_struct(png_ptr, info_ptr, NULL);
       return (ERROR);
    }
 
@@ -456,7 +454,7 @@
    if (setjmp(png_jmpbuf((*png_ptr))))
    {
       /* Free the png_ptr and info_ptr memory on error */
-      png_destroy_read_struct(png_ptr, info_ptr, png_infopp_NULL);
+      png_destroy_read_struct(png_ptr, info_ptr, NULL);
       return (ERROR);
    }
 
@@ -588,7 +586,7 @@
    if (info_ptr == NULL)
    {
       fclose(fp);
-      png_destroy_write_struct(&png_ptr,  png_infopp_NULL);
+      png_destroy_write_struct(&png_ptr,  NULL);
       return (ERROR);
    }
 
@@ -620,7 +618,7 @@
     * image info living info in the structure.  You could "|" many
     * PNG_TRANSFORM flags into the png_transforms integer here.
     */
-   png_write_png(png_ptr, info_ptr, png_transforms, png_voidp_NULL);
+   png_write_png(png_ptr, info_ptr, png_transforms, NULL);
 #else
    /* This is the hard way */
 
@@ -637,7 +635,7 @@
 
    /* set the palette if there is one.  REQUIRED for indexed-color images */
    palette = (png_colorp)png_malloc(png_ptr, PNG_MAX_PALETTE_LENGTH
-             * png_sizeof (png_color));
+             * sizeof (png_color));
    /* ... set palette colors ... */
    png_set_PLTE(png_ptr, info_ptr, palette, PNG_MAX_PALETTE_LENGTH);
    /* You must not free palette here, because png_set_PLTE only makes a link to
@@ -748,7 +746,7 @@
    png_byte image[height][width*bytes_per_pixel];
    png_bytep row_pointers[height];
 
-   if (height > PNG_UINT_32_MAX/png_sizeof(png_bytep))
+   if (height > PNG_UINT_32_MAX/sizeof(png_bytep))
      png_error (png_ptr, "Image is too tall to process in memory");
 
    for (k = 0; k < height; k++)
diff --git a/libpng.3 b/libpng.3
index bd8f598..e424b54 100644
--- a/libpng.3
+++ b/libpng.3
@@ -1,6 +1,6 @@
-.TH LIBPNG 3 "July 12, 2006"
+.TH LIBPNG 3 "August 19, 2006"
 .SH NAME
-libpng \- Portable Network Graphics (PNG) Reference Library 1.4.0beta10
+libpng \- Portable Network Graphics (PNG) Reference Library 1.4.0beta11
 .SH SYNOPSIS
 \fI\fB
 
@@ -350,19 +350,11 @@
 
 \fI\fB
 
-\fBDEPRECATED: void png_info_init (png_infop \fIinfo_ptr\fP\fB);\fP
+\fBpng_voidp png_malloc (png_structp \fP\fIpng_ptr\fP\fB, png_alloc_size_t \fIsize\fP\fB);\fP
 
 \fI\fB
 
-\fBDEPRECATED: void png_info_init_2 (png_infopp \fP\fIptr_ptr\fP\fB, png_size_t \fIpng_info_struct_size\fP\fB);\fP
-
-\fI\fB
-
-\fBpng_voidp png_malloc (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fIsize\fP\fB);\fP
-
-\fI\fB
-
-\fBpng_voidp png_malloc_default(png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fIsize\fP\fB);\fP
+\fBpng_voidp png_malloc_default(png_structp \fP\fIpng_ptr\fP\fB, png_alloc_size_t \fIsize\fP\fB);\fP
 
 \fI\fB
 
@@ -370,22 +362,10 @@
 
 \fI\fB
 
-\fBpng_voidp png_memcpy_check (png_structp \fP\fIpng_ptr\fP\fB, png_voidp \fP\fIs1\fP\fB, png_voidp \fP\fIs2\fP\fB, png_uint_32 \fIsize\fP\fB);\fP
-
-\fI\fB
-
 \fBvoidp png_memset (png_voidp \fP\fIs1\fP\fB, int \fP\fIvalue\fP\fB, png_size_t \fIsize\fP\fB);\fP
 
 \fI\fB
 
-\fBpng_voidp png_memset_check (png_structp \fP\fIpng_ptr\fP\fB, png_voidp \fP\fIs1\fP\fB, int \fP\fIvalue\fP\fB, png_uint_32 \fIsize\fP\fB);\fP
-
-\fI\fB
-
-\fBDEPRECATED: void png_permit_empty_plte (png_structp \fP\fIpng_ptr\fP\fB, int \fIempty_plte_permitted\fP\fB);\fP
-
-\fI\fB
-
 \fBvoid png_process_data (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_bytep \fP\fIbuffer\fP\fB, png_size_t \fIbuffer_size\fP\fB);\fP
 
 \fI\fB
@@ -406,14 +386,6 @@
 
 \fI\fB
 
-\fBDEPRECATED: void png_read_init (png_structp \fIpng_ptr\fP\fB);\fP
-
-\fI\fB
-
-\fBDEPRECATED: void png_read_init_2 (png_structpp \fP\fIptr_ptr\fP\fB, png_const_charp \fP\fIuser_png_ver\fP\fB, png_size_t \fP\fIpng_struct_size\fP\fB, png_size_t \fIpng_info_size\fP\fB);\fP
-
-\fI\fB
-
 \fBvoid png_read_info (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
 
 \fI\fB
@@ -782,14 +754,6 @@
 
 \fI\fB
 
-\fBDEPRECATED: void png_write_init (png_structp \fIpng_ptr\fP\fB);\fP
-
-\fI\fB
-
-\fBDEPRECATED: void png_write_init_2 (png_structpp \fP\fIptr_ptr\fP\fB, png_const_charp \fP\fIuser_png_ver\fP\fB, png_size_t \fP\fIpng_struct_size\fP\fB, png_size_t \fIpng_info_size\fP\fB);\fP
-
-\fI\fB
-
 \fBvoid png_write_info (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
 
 \fI\fB
@@ -833,7 +797,7 @@
 .SH LIBPNG.TXT
 libpng.txt - A description on how to use and modify libpng
 
- libpng version 1.4.0beta10 - July 12, 2006
+ libpng version 1.4.0beta11 - August 19, 2006
  Updated and distributed by Glenn Randers-Pehrson
  <glennrp at users.sourceforge.net>
  Copyright (c) 1998-2005 Glenn Randers-Pehrson
@@ -1248,14 +1212,14 @@
 If you know your image size and pixel size ahead of time, you can allocate
 row_pointers prior to calling png_read_png() with
 
-   if (height > PNG_UINT_32_MAX/png_sizeof(png_byte))
+   if (height > PNG_UINT_32_MAX/sizeof(png_bytep))
       png_error (png_ptr,
          "Image is too tall to process in memory");
    if (width > PNG_UINT_32_MAX/pixel_size)
       png_error (png_ptr,
          "Image is too wide to process in memory");
    row_pointers = png_malloc(png_ptr,
-      height*png_sizeof(png_bytep));
+      height*sizeof(png_bytep));
    for (int i=0; i<height, i++)
       row_pointers[i]=png_malloc(png_ptr,
          width*pixel_size);
@@ -3358,11 +3322,10 @@
 
 .SS Configuring for compiler xxx:
 
-All includes for libpng are in pngconf.h.  If you need to add/change/delete
-an include, this is the place to do it.  The includes that are not
-needed outside libpng are protected by the PNG_INTERNAL definition,
-which is only defined for those routines inside libpng itself.  The
-files in libpng proper only include png.h, which includes pngconf.h.
+All includes for libpng are in pngconf.h.  If you need to add, change
+or delete an include, this is the place to do it.  The includes that
+are not needed outside libpng are placed inside pngpriv.h, which is
+only used by the routines inside libpng itself.
 
 .SS Configuring zlib:
 
@@ -3748,13 +3711,13 @@
 
 .SH IX. Y2K Compliance in libpng
 
-July 12, 2006
+August 19, 2006
 
 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.4.0beta10 are Y2K compliant.  It is my belief that earlier
+upward through 1.4.0beta11 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
@@ -3919,7 +3882,7 @@
  1.4.0beta7-8        14    10400  14.so.0.0[.0]
  1.2.11              13    10211  12.so.0.10[.0]
  1.2.12              13    10212  12.so.0.10[.0]
- 1.4.0beta9-10       14    10400  14.so.0.0[.0]
+ 1.4.0beta9-11       14    10400  14.so.0.0[.0]
 
 Henceforth the source version will match the shared-library minor
 and patch numbers; the shared-library major version number will be
@@ -3975,7 +3938,7 @@
 
 Thanks to Frank J. T. Wojcik for helping with the documentation.
 
-Libpng version 1.4.0beta10 - July 12, 2006:
+Libpng version 1.4.0beta11 - August 19, 2006:
 Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc.
 Currently maintained by Glenn Randers-Pehrson (glennrp at users.sourceforge.net).
 
@@ -3996,7 +3959,7 @@
 If you modify libpng you may insert additional notices immediately following
 this sentence.
 
-libpng versions 1.2.6, August 15, 2004, through 1.4.0beta10, July 12, 2006, are
+libpng versions 1.2.6, August 15, 2004, through 1.4.0beta11, August 19, 2006, are
 Copyright (c) 2004-2006 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
@@ -4095,7 +4058,7 @@
 
 Glenn Randers-Pehrson
 glennrp at users.sourceforge.net
-July 12, 2006
+August 19, 2006
 
 .\" end of man page
 
diff --git a/libpng.txt b/libpng.txt
index 7b31448..484659b 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.4.0beta10 - July 12, 2006
+ libpng version 1.4.0beta11 - August 19, 2006
  Updated and distributed by Glenn Randers-Pehrson
  <glennrp at users.sourceforge.net>
  Copyright (c) 1998-2005 Glenn Randers-Pehrson
@@ -415,14 +415,14 @@
 If you know your image size and pixel size ahead of time, you can allocate
 row_pointers prior to calling png_read_png() with
 
-   if (height > PNG_UINT_32_MAX/png_sizeof(png_byte))
+   if (height > PNG_UINT_32_MAX/sizeof(png_bytep))
       png_error (png_ptr,
          "Image is too tall to process in memory");
    if (width > PNG_UINT_32_MAX/pixel_size)
       png_error (png_ptr,
          "Image is too wide to process in memory");
    row_pointers = png_malloc(png_ptr,
-      height*png_sizeof(png_bytep));
+      height*sizeof(png_bytep));
    for (int i=0; i<height, i++)
       row_pointers[i]=png_malloc(png_ptr,
          width*pixel_size);
@@ -2525,11 +2525,10 @@
 
 Configuring for compiler xxx:
 
-All includes for libpng are in pngconf.h.  If you need to add/change/delete
-an include, this is the place to do it.  The includes that are not
-needed outside libpng are protected by the PNG_INTERNAL definition,
-which is only defined for those routines inside libpng itself.  The
-files in libpng proper only include png.h, which includes pngconf.h.
+All includes for libpng are in pngconf.h.  If you need to add, change
+or delete an include, this is the place to do it.  The includes that
+are not needed outside libpng are placed inside pngpriv.h, which is
+only used by the routines inside libpng itself.
 
 Configuring zlib:
 
@@ -2915,13 +2914,13 @@
 
 IX. Y2K Compliance in libpng
 
-July 12, 2006
+August 19, 2006
 
 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.4.0beta10 are Y2K compliant.  It is my belief that earlier
+upward through 1.4.0beta11 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 b4b61a4..93a571d 100644
--- a/libpngpf.3
+++ b/libpngpf.3
@@ -1,6 +1,6 @@
-.TH LIBPNGPF 3 "July 12, 2006"
+.TH LIBPNGPF 3 "August 19, 2006"
 .SH NAME
-libpng \- Portable Network Graphics (PNG) Reference Library 1.4.0beta10
+libpng \- Portable Network Graphics (PNG) Reference Library 1.4.0beta11
 (private functions)
 .SH SYNOPSIS
 \fB#include <png.h>\fP
diff --git a/png.5 b/png.5
index 1a45598..8c6f2f9 100644
--- a/png.5
+++ b/png.5
@@ -1,4 +1,4 @@
-.TH PNG 5 "July 12, 2006"
+.TH PNG 5 "August 19, 2006"
 .SH NAME
 png \- Portable Network Graphics (PNG) format
 .SH DESCRIPTION
diff --git a/png.c b/png.c
index 2fe4edd..b48e377 100644
--- a/png.c
+++ b/png.c
@@ -10,10 +10,10 @@
 
 #define PNG_NO_EXTERN
 #include "png.h"
-#include "pngintrn.h"
+#include "pngpriv.h"
 
 /* Generate a compiler error if there is an old png.h in the search path. */
-typedef version_1_4_0beta10 Your_png_h_is_not_version_1_4_0beta10;
+typedef version_1_4_0beta11 Your_png_h_is_not_version_1_4_0beta11;
 
 /* Version information for C files.  This had better match the version
  * string defined in png.h.  */
@@ -99,7 +99,7 @@
 {
    png_debug(1, "in png_set_sig_bytes\n");
    if (num_bytes > 8)
-      png_error(png_ptr, "Too many bytes for PNG signature.");
+      png_error(png_ptr, "Too many bytes for PNG signature");
 
    png_ptr->sig_bytes = (png_byte)(num_bytes < 0 ? 0 : num_bytes);
 }
@@ -127,36 +127,37 @@
    if (start + num_to_check > 8)
       num_to_check = 8 - start;
 
-   return ((int)(png_memcmp(&sig[start], &png_signature[start], num_to_check)));
+   return (png_memcmp(&sig[start], &png_signature[start], num_to_check));
 }
 
 #endif /* PNG_READ_SUPPORTED */
 
 #if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
-/* Function to allocate memory for zlib and clear it to 0. */
+/* Function to allocate memory for zlib.
+ * Since libpng-1.2.x, this does NOT clear the allocated memory to 0.
+ */
 voidpf /* private */
 png_zalloc(voidpf png_ptr, uInt items, uInt size)
 {
-   png_voidp ptr;
-   png_structp p=png_ptr;
-   png_uint_32 save_flags=p->flags;
-   png_uint_32 num_bytes;
+   voidpf ptr;
+   png_structp p = png_ptr;
+   png_uint_32 save_flags = p->flags;
+   png_alloc_size_t num_bytes;
 
    if (items > PNG_UINT_32_MAX/size)
    {
-     png_warning (png_ptr, "Potential overflow in png_zalloc()");
-     return (NULL);
+      png_warning(p, "Potential overflow in png_zalloc()");
+      return NULL;
    }
-   num_bytes = (png_uint_32)items * size;
+   num_bytes = (png_alloc_size_t)items * size;
 
-   p->flags|=PNG_FLAG_MALLOC_NULL_MEM_OK;
-   ptr = (png_voidp)png_malloc((png_structp)png_ptr, num_bytes);
-   p->flags=save_flags;
+   p->flags |= PNG_FLAG_MALLOC_NULL_MEM_OK;
+   ptr = (voidpf)png_malloc(p, num_bytes);
+   p->flags = save_flags;
+   return ptr;
+  }
 
-   return ((voidpf)ptr);
-}
-
-/* function to free memory for zlib */
+/* Function to free memory for zlib. */
 void /* private */
 png_zfree(voidpf png_ptr, voidpf ptr)
 {
@@ -200,7 +201,7 @@
 
 /* Allocate the memory for an info_struct for the application.  We don't
  * really need the png_ptr, but it could potentially be useful in the
- * future.  This should be used in favour of malloc(png_sizeof(png_info))
+ * future.  This should be used in favour of malloc(sizeof(png_info))
  * and png_info_init() so that applications that want to use a shared
  * libpng don't have to be recompiled if png_info changes size.
  */
@@ -218,7 +219,7 @@
    info_ptr = (png_infop)png_create_struct(PNG_STRUCT_INFO);
 #endif
    if (info_ptr != NULL)
-      png_info_init_3(&info_ptr, png_sizeof(png_info));
+      png_info_init_3(&info_ptr, sizeof(png_info));
 
    return (info_ptr);
 }
@@ -262,7 +263,7 @@
 
    png_debug(1, "in png_info_init_3\n");
 
-   if(png_sizeof(png_info) > png_info_struct_size)
+   if (sizeof(png_info) > png_info_struct_size)
      {
        png_destroy_struct(info_ptr);
        info_ptr = (png_infop)png_create_struct(PNG_STRUCT_INFO);
@@ -270,7 +271,7 @@
      }
 
    /* set everything to 0 */
-   png_memset(info_ptr, 0, png_sizeof (png_info));
+   png_memset(info_ptr, 0, sizeof(png_info));
 }
 
 #ifdef PNG_FREE_ME_SUPPORTED
@@ -287,7 +288,7 @@
       info_ptr->free_me &= ~mask;
    else
       png_warning(png_ptr,
-         "Unknown freer parameter in png_data_freer.");
+         "Unknown freer parameter in png_data_freer");
 }
 #endif
 
@@ -556,7 +557,7 @@
    }
 #endif
 
-   png_info_init_3(&info_ptr, png_sizeof(png_info));
+   png_info_init_3(&info_ptr, sizeof(png_info));
 }
 #endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */
 
@@ -598,10 +599,7 @@
          "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
 
    if (png_ptr->time_buffer == NULL)
-   {
-      png_ptr->time_buffer = (png_charp)png_malloc(png_ptr, (png_uint_32)(29*
-         png_sizeof(char)));
-   }
+      png_ptr->time_buffer = (png_charp)png_malloc(png_ptr, 29*sizeof(char));
 
 #ifdef USE_FAR_KEYWORD
    {
@@ -611,7 +609,7 @@
           ptime->year, ptime->hour % 24, ptime->minute % 60,
           ptime->second % 61);
       png_memcpy(png_ptr->time_buffer, near_time_buf,
-          29*png_sizeof(char));
+          29*sizeof(char));
    }
 #else
    png_sprintf(png_ptr->time_buffer, "%d %s %d %02d:%02d:%02d +0000",
@@ -637,7 +635,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.4.0beta10 - July 12, 2006\n\
+   return ((png_charp) "\n libpng version 1.4.0beta11 - August 19, 2006\n\
    Copyright (c) 1998-2006 Glenn Randers-Pehrson\n\
    Copyright (c) 1996-1997 Andreas Dilger\n\
    Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.\n");
@@ -773,17 +771,3 @@
 }
 #endif
 #endif /* PNG_READ_SUPPORTED */
-
-#if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
-#ifdef PNG_SIZE_T
-/* Added at libpng version 1.2.6 */
-   PNG_EXTERN png_size_t PNGAPI png_convert_size PNGARG((size_t size));
-png_size_t PNGAPI
-png_convert_size(size_t size)
-{
-  if (size > (png_size_t)-1)
-     PNG_ABORT();  /* We haven't got access to png_ptr, so no png_error() */
-  return ((png_size_t)size);
-}
-#endif /* PNG_SIZE_T */
-#endif /* defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) */
diff --git a/png.h b/png.h
index 5ed5612..3ebf3f2 100644
--- a/png.h
+++ b/png.h
@@ -1,7 +1,7 @@
 
 /* png.h - header file for PNG reference library
  *
- * libpng version 1.4.0beta10 - July 12, 2006
+ * libpng version 1.4.0beta11 - August 19, 2006
  * Copyright (c) 1998-2006 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.)
@@ -9,7 +9,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.4.0beta10 - July 12, 2006: Glenn
+ *  libpng versions 0.97, January 1998, through 1.4.0beta11 - August 19, 2006: Glenn
  *  See also "Contributing Authors", below.
  *
  * Note about libpng version numbers:
@@ -124,7 +124,7 @@
  *    1.4.0beta7-8            14    10400  14.so.0.0[.0]
  *    1.2.11                  13    10211  12.so.0.10[.0]
  *    1.2.12                  13    10212  12.so.0.10[.0]
- *    1.4.0beta9-10           14    10400  14.so.0.0[.0]
+ *    1.4.0beta9-11           14    10400  14.so.0.0[.0]
  *
  *    Henceforth the source version will match the shared-library major
  *    and minor numbers; the shared-library major version number will be
@@ -154,7 +154,7 @@
  * If you modify libpng you may insert additional notices immediately following
  * this sentence.
  *
- * libpng versions 1.2.6, August 15, 2004, through 1.4.0beta10, July 12, 2006, are
+ * libpng versions 1.2.6, August 15, 2004, through 1.4.0beta11, August 19, 2006, are
  * Copyright (c) 2004, 2006 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:
@@ -266,13 +266,13 @@
  * Y2K compliance in libpng:
  * =========================
  *
- *    July 12, 2006
+ *    August 19, 2006
  *
  *    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.4.0beta10 are Y2K compliant.  It is my belief that earlier
+ *    upward through 1.4.0beta11 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
@@ -328,9 +328,9 @@
  */
 
 /* Version information for png.h - this should match the version in png.c */
-#define PNG_LIBPNG_VER_STRING "1.4.0beta10"
+#define PNG_LIBPNG_VER_STRING "1.4.0beta11"
 #define PNG_HEADER_VERSION_STRING \
-   " libpng version 1.4.0beta10 - July 12, 2006 (header)\n"
+   " libpng version 1.4.0beta11 - August 19, 2006 (header)\n"
 
 #define PNG_LIBPNG_VER_SONUM   1
 #define PNG_LIBPNG_VER_DLLNUM  14
@@ -342,7 +342,7 @@
 /* This should match the numeric part of the final component of
  * PNG_LIBPNG_VER_STRING, omitting any leading zero: */
 
-#define PNG_LIBPNG_VER_BUILD  10
+#define PNG_LIBPNG_VER_BUILD  11
 
 /* Release Status */
 #define PNG_LIBPNG_BUILD_ALPHA    1
@@ -350,7 +350,7 @@
 #define PNG_LIBPNG_BUILD_RC       3
 #define PNG_LIBPNG_BUILD_STABLE   4
 #define PNG_LIBPNG_BUILD_RELEASE_STATUS_MASK 7
-  
+
 /* Release-Specific Flags */
 #define PNG_LIBPNG_BUILD_PATCH    8 /* Can be OR'ed with
                                        PNG_LIBPNG_BUILD_STABLE only */
@@ -381,12 +381,12 @@
 /* Ref MSDN: Private as priority over Special
  * VS_FF_PRIVATEBUILD File *was not* built using standard release
  * procedures. If this value is given, the StringFileInfo block must
- * contain a PrivateBuild string. 
+ * contain a PrivateBuild string.
  *
  * VS_FF_SPECIALBUILD File *was* built by the original company using
  * standard release procedures but is a variation of the standard
  * file of the same version number. If this value is given, the
- * StringFileInfo block must contain a SpecialBuild string. 
+ * StringFileInfo block must contain a SpecialBuild string.
  */
 
 #if defined(PNG_USER_PRIVATEBUILD)
@@ -414,40 +414,6 @@
  * which applications aren't expected to use directly.
  */
 
-#ifndef PNG_NO_TYPECAST_NULL
-#define int_p_NULL                (int *)NULL
-#define png_bytep_NULL            (png_bytep)NULL
-#define png_bytepp_NULL           (png_bytepp)NULL
-#define png_doublep_NULL          (png_doublep)NULL
-#define png_error_ptr_NULL        (png_error_ptr)NULL
-#define png_flush_ptr_NULL        (png_flush_ptr)NULL
-#define png_free_ptr_NULL         (png_free_ptr)NULL
-#define png_infopp_NULL           (png_infopp)NULL
-#define png_malloc_ptr_NULL       (png_malloc_ptr)NULL
-#define png_read_status_ptr_NULL  (png_read_status_ptr)NULL
-#define png_rw_ptr_NULL           (png_rw_ptr)NULL
-#define png_structp_NULL          (png_structp)NULL
-#define png_uint_16p_NULL         (png_uint_16p)NULL
-#define png_voidp_NULL            (png_voidp)NULL
-#define png_write_status_ptr_NULL (png_write_status_ptr)NULL
-#else
-#define int_p_NULL                NULL
-#define png_bytep_NULL            NULL
-#define png_bytepp_NULL           NULL
-#define png_doublep_NULL          NULL
-#define png_error_ptr_NULL        NULL
-#define png_flush_ptr_NULL        NULL
-#define png_free_ptr_NULL         NULL
-#define png_infopp_NULL           NULL
-#define png_malloc_ptr_NULL       NULL
-#define png_read_status_ptr_NULL  NULL
-#define png_rw_ptr_NULL           NULL
-#define png_structp_NULL          NULL
-#define png_uint_16p_NULL         NULL
-#define png_voidp_NULL            NULL
-#define png_write_status_ptr_NULL NULL
-#endif
-
 /* variables declared in png.c - only it needs to define PNG_NO_EXTERN */
 #if !defined(PNG_NO_EXTERN) || defined(PNG_ALWAYS_EXTERN)
 /* Version information for C files, stored in png.c.  This had better match
@@ -669,7 +635,7 @@
    png_uint_32 width;       /* width of image in pixels (from IHDR) */
    png_uint_32 height;      /* height of image in pixels (from IHDR) */
    png_uint_32 valid;       /* valid chunk data (see PNG_INFO_ below) */
-   png_uint_32 rowbytes;    /* bytes needed to hold an untransformed row */
+   png_size_t rowbytes;     /* bytes needed to hold an untransformed row */
    png_colorp palette;      /* array of color values (valid & PNG_INFO_PLTE) */
    png_uint_16 num_palette; /* number of color entries in "palette" (PLTE) */
    png_uint_16 num_trans;   /* number of transparent palette color (tRNS) */
@@ -1004,7 +970,7 @@
 typedef struct png_row_info_struct
 {
    png_uint_32 width; /* width of row */
-   png_uint_32 rowbytes; /* number of bytes in row */
+   png_size_t rowbytes; /* number of bytes in row */
    png_byte color_type; /* color type of row */
    png_byte bit_depth; /* bit depth of row */
    png_byte channels; /* number of channels (1, 2, 3, or 4) */
@@ -1072,7 +1038,7 @@
 #define PNG_FLAG_MNG_FILTER_64      0x04
 #define PNG_ALL_MNG_FEATURES        0x05
 
-typedef png_voidp (*png_malloc_ptr) PNGARG((png_structp, png_size_t));
+typedef png_voidp (*png_malloc_ptr) PNGARG((png_structp, png_alloc_size_t));
 typedef void (*png_free_ptr) PNGARG((png_structp, png_voidp));
 
 /* The structure that holds the information to read and write PNG files.
@@ -1129,8 +1095,8 @@
    png_uint_32 height;        /* height of image in pixels */
    png_uint_32 num_rows;      /* number of rows in current pass */
    png_uint_32 usr_width;     /* width of row at start of write */
-   png_uint_32 rowbytes;      /* size of row in bytes */
-   png_uint_32 irowbytes;     /* size of current interlaced row in bytes */
+   png_size_t rowbytes;       /* size of row in bytes */
+   png_size_t irowbytes;      /* size of current interlaced row in bytes */
    png_uint_32 iwidth;        /* width of current interlaced row in pixels */
    png_uint_32 row_number;    /* current row in interlace pass */
    png_bytep prev_row;        /* buffer to save previous (unfiltered) row */
@@ -1360,13 +1326,18 @@
    png_uint_32 user_height_max;
 #endif
 
+/* New member added in libpng-1.4.0 */
+#if defined(PNG_IO_STATE_SUPPORTED)
+   png_uint_32 io_state;
+#endif
+
 };
 
 
 /* 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_4_0beta10;
+typedef png_structp version_1_4_0beta11;
 
 typedef png_struct FAR * FAR * png_structpp;
 
@@ -1404,13 +1375,13 @@
    png_error_ptr error_fn, png_error_ptr warn_fn));
 
 #ifdef PNG_WRITE_SUPPORTED
-extern PNG_EXPORT(png_uint_32,png_get_compression_buffer_size)
+extern PNG_EXPORT(png_size_t,png_get_compression_buffer_size)
    PNGARG((png_structp png_ptr));
 #endif
 
 #ifdef PNG_WRITE_SUPPORTED
 extern PNG_EXPORT(void,png_set_compression_buffer_size)
-   PNGARG((png_structp png_ptr, png_uint_32 size));
+   PNGARG((png_structp png_ptr, png_size_t size));
 #endif
 
 /* Reset the compression stream */
@@ -1916,13 +1887,13 @@
 #endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
 
 extern PNG_EXPORT(png_voidp,png_malloc) PNGARG((png_structp png_ptr,
-   png_uint_32 size));
+   png_alloc_size_t size));
 
 /* Added at libpng version 1.2.4 */
 extern PNG_EXPORT(png_voidp,png_malloc_warn) PNGARG((png_structp png_ptr,
-   png_uint_32 size));
+   png_alloc_size_t size));
 
-/* frees a pointer allocated by png_malloc() */
+/* Frees a pointer allocated by png_malloc() */
 extern PNG_EXPORT(void,png_free) PNGARG((png_structp png_ptr, png_voidp ptr));
 
 /* Free data that was allocated internally */
@@ -1955,17 +1926,11 @@
 
 #ifdef PNG_USER_MEM_SUPPORTED
 extern PNG_EXPORT(png_voidp,png_malloc_default) PNGARG((png_structp png_ptr,
-   png_uint_32 size));
+   png_alloc_size_t size));
 extern PNG_EXPORT(void,png_free_default) PNGARG((png_structp png_ptr,
    png_voidp ptr));
 #endif
 
-extern PNG_EXPORT(png_voidp,png_memcpy_check) PNGARG((png_structp png_ptr,
-   png_voidp s1, png_voidp s2, png_uint_32 size));
-
-extern PNG_EXPORT(png_voidp,png_memset_check) PNGARG((png_structp png_ptr,
-   png_voidp s1, int value, png_uint_32 size));
-
 #if defined(USE_FAR_KEYWORD)  /* memory model conversion function */
 extern void *png_far_to_near PNGARG((png_structp png_ptr,png_voidp ptr,
    int check));
@@ -2018,7 +1983,7 @@
 png_infop info_ptr, png_uint_32 flag));
 
 /* Returns number of bytes needed to hold a transformed row. */
-extern PNG_EXPORT(png_uint_32,png_get_rowbytes) PNGARG((png_structp png_ptr,
+extern PNG_EXPORT(png_size_t,png_get_rowbytes) PNGARG((png_structp png_ptr,
 png_infop info_ptr));
 
 #if defined(PNG_INFO_IMAGE_SUPPORTED)
@@ -2514,7 +2479,7 @@
 #endif
 
 
-/* Added at libpng-1.2.6 */
+/* Added in libpng-1.2.6 */
 #ifdef PNG_SET_USER_LIMITS_SUPPORTED
 extern PNG_EXPORT(void,png_set_user_limits) PNGARG((png_structp
    png_ptr, png_uint_32 user_width_max, png_uint_32 user_height_max));
@@ -2546,6 +2511,25 @@
 #endif /* PNG_pHYs_SUPPORTED */
 #endif  /* PNG_INCH_CONVERSIONS && PNG_FLOATING_POINT_SUPPORTED */
 
+/* Added in libpng-1.4.0 */
+#ifdef PNG_IO_STATE_SUPPORTED
+extern PNG_EXPORT(png_uint_32,png_get_io_state) PNGARG((png_structp png_ptr));
+
+extern PNG_EXPORT(png_bytep,png_get_io_chunk_name)
+   PNGARG((png_structp png_ptr));
+
+/* The flags returned by png_get_io_state() are the following: */
+#define PNG_IO_NONE        0x0000   /* no I/O at this moment */
+#define PNG_IO_READING     0x0001   /* currently reading */
+#define PNG_IO_WRITING     0x0002   /* currently writing */
+#define PNG_IO_SIGNATURE   0x0010   /* currently at the file signature */
+#define PNG_IO_CHUNK_HDR   0x0020   /* currently at the chunk header */
+#define PNG_IO_CHUNK_DATA  0x0040   /* currently at the chunk data */
+#define PNG_IO_CHUNK_CRC   0x0080   /* currently at the chunk crc */
+#define PNG_IO_MASK_OP     0x000f   /* current operation: reading/writing */
+#define PNG_IO_MASK_LOC    0x00f0   /* current location: sig/hdr/data/crc */
+#endif /* ?PNG_IO_STATE_SUPPORTED */
+
 /* Maintainer: Put new public prototypes here ^, in libpng.3, and project defs */
 
 #ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED
diff --git a/pngconf.h b/pngconf.h
index 0731e3a..27dd060 100644
--- a/pngconf.h
+++ b/pngconf.h
@@ -1,7 +1,7 @@
 
 /* pngconf.h - machine configurable file for libpng
  *
- * libpng version 1.4.0beta10 - July 12, 2006
+ * libpng version 1.4.0beta11 - August 19, 2006
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2006 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@@ -18,8 +18,8 @@
 #define PNGCONF_H
 
 /* Added at libpng-1.4.0 */
-/* Makefile-supplied defines go here: */
-/* End of Makefile-supplied defines. */
+/* pngdefs.h is created by the makefile or the "configure" script. */
+#include "pngdefs.h"
 
 #ifndef PNG_NO_LIMITS_H
 #include <limits.h>
@@ -27,7 +27,7 @@
 
 /* Added at libpng-1.2.9 */
 
-/* PNG_CONFIGURE_LIBPNG is set by the "configure" script. */
+/* config.h is created by and PNG_CONFIGURE_LIBPNG is set by the "configure" script. */
 #ifdef PNG_CONFIGURE_LIBPNG
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -285,9 +285,6 @@
 
 #ifdef _NO_PROTO
 #  define PNGARG(arglist) ()
-#  ifndef PNG_TYPECAST_NULL
-#     define PNG_TYPECAST_NULL
-#  endif
 #else
 #  define PNGARG(arglist) arglist
 #endif /* _NO_PROTO */
@@ -667,7 +664,7 @@
 #endif
 #endif
 
-/* Added at libpng-1.0.16 and 1.2.6.  To accept all valid PNGS no matter
+/* Added at libpng-1.0.16 and 1.2.6.  To accept all valid PNGs no matter
  * how large, set these limits to 0x7fffffffL
  */
 #ifndef PNG_USER_WIDTH_MAX
@@ -677,6 +674,11 @@
 #  define PNG_USER_HEIGHT_MAX 1000000L
 #endif
 
+/* Added at libpng-1.4.0 */
+#ifndef PNG_NO_IO_STATE
+#  define PNG_IO_STATE_SUPPORTED
+#endif
+
 /* These are currently experimental features, define them if you want */
 
 /* very little testing */
@@ -988,8 +990,7 @@
  * numbers suggest (a png_uint_32 must be at least 32 bits long), but they
  * don't have to be exactly that size.  Some compilers dislike passing
  * unsigned shorts as function parameters, so you may be better off using
- * unsigned int for png_uint_16.  Likewise, for 64-bit systems, you may
- * want to have unsigned int for png_uint_32 instead of unsigned long.
+ * unsigned int for png_uint_16.
  */
 
 #if defined(INT_MAX) && (INT_MAX > 0x7ffffffeL)
@@ -1003,14 +1004,10 @@
 typedef short png_int_16;
 typedef unsigned char png_byte;
 
-/* This is usually size_t.  It is typedef'ed just in case you need it to
-   change (I'm not sure if you will or not, so I thought I'd be safe) */
-#ifdef PNG_SIZE_T
-   typedef PNG_SIZE_T png_size_t;
-#  define png_sizeof(x) png_convert_size(sizeof (x))
+#ifdef PNG_NO_SIZE_T
+   typedef unsigned int png_size_t;
 #else
    typedef size_t png_size_t;
-#  define png_sizeof(x) sizeof (x)
 #endif
 
 /* The following is needed for medium model support.  It cannot be in the
@@ -1281,8 +1278,8 @@
 #  endif
 #endif
 
-/* User may want to use these so they are not in PNG_INTERNAL. Any library
- * functions that are passed far data must be model independent.
+/* Users may want to use these so they are not private.  Any library
+ * functions that are passed far data must be model-independent.
  */
 
 #ifdef PNG_SETJMP_SUPPORTED
@@ -1338,24 +1335,33 @@
 #  endif
 #endif
 
+/* png_alloc_size_t is guaranteed to be no smaller than png_size_t,
+ * and no smaller than png_uint_32.  Casts from png_size_t or png_uint_32
+ * to png_alloc_size_t are not necessary; in fact, it is recommended
+ * not to use them at all so that the compiler can complain when something
+ * turns out to be problematic.
+ * Casts in the other direction (from png_alloc_size_t to png_size_t or
+ * png_uint_32) should be explicitly applied; however, we do not expect
+ * to encounter practical situations that require such conversions.
+ */
 #if defined(__TURBOC__) && !defined(__FLAT__)
 #  define  png_mem_alloc farmalloc
 #  define  png_mem_free  farfree
-   typedef unsigned long png_mem_size_t;
+   typedef unsigned long png_alloc_size_t;
 #else
 #  if defined(_MSC_VER) && defined(MAXSEG_64K)
 #    define  png_mem_alloc(s) halloc(s, 1)
 #    define  png_mem_free     hfree
-     typedef unsigned long    png_mem_size_t;
-#else
-#    if defined(_WINDOWS_)
+     typedef unsigned long    png_alloc_size_t;
+#  else
+#    if defined(_WINDOWS_) && (!defined(INT_MAX) || INT_MAX <= 0x7ffffffeL)
 #      define  png_mem_alloc(s) HeapAlloc(GetProcessHeap(), 0, s)
 #      define  png_mem_free(p)  HeapFree(GetProcessHeap(), 0, p)
-       typedef SIZE_T           png_mem_size_t;
+       typedef DWORD            png_alloc_size_t;
 #    else
 #      define  png_mem_alloc malloc
 #      define  png_mem_free  free
-       typedef size_t        png_mem_size_t;
+       typedef png_size_t    png_alloc_size_t;
 #    endif
 #  endif
 #endif
diff --git a/pngerror.c b/pngerror.c
index 0acc754..97a5699 100644
--- a/pngerror.c
+++ b/pngerror.c
@@ -14,7 +14,7 @@
  */
 
 #include "png.h"
-#include "pngintrn.h"
+#include "pngpriv.h"
 
 #if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
 static void /* PRIVATE */
@@ -231,7 +231,7 @@
 #  ifdef USE_FAR_KEYWORD
    {
       jmp_buf jmpbuf;
-      png_memcpy(jmpbuf,png_ptr->jmpbuf,png_sizeof(jmp_buf));
+      png_memcpy(jmpbuf, png_ptr->jmpbuf, sizeof(jmp_buf));
       longjmp(jmpbuf, 1);
    }
 #  else
diff --git a/pnggccrd.c b/pnggccrd.c
index 4c4d028..2ed8e6b 100644
--- a/pnggccrd.c
+++ b/pnggccrd.c
@@ -7,7 +7,7 @@
  *     and http://www.intel.com/drg/pentiumII/appnotes/923/923.htm
  *     for Intel's performance analysis of the MMX vs. non-MMX code.
  *
- * Last changed in libpng 1.4.0 April 20, 2006
+ * Last changed in libpng 1.4.0 August 3, 2006
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2006 Glenn Randers-Pehrson
  * Copyright (c) 1998, Intel Corporation
@@ -228,6 +228,8 @@
  *   - more tinkering with clobber list at lines 4529 and 5033, to get
  *     it to compile on gcc-3.4.
  *
+ * 20060803: patch to compile on x86_64
+ *
  * STILL TO DO:
  *     - test png_do_read_interlace() 64-bit case (pixel_bytes == 8)
  *     - write MMX code for 48-bit case (pixel_bytes == 6)
@@ -243,7 +245,7 @@
  */
 
 #include "png.h"
-#include "pngintrn.h"
+#include "pngpriv.h"
 
 #if defined(PNG_USE_PNGGCCRD)
 
@@ -428,7 +430,7 @@
    {
       png_debug(2,"mask == 0xff:  doing single png_memcpy()\n");
       png_memcpy(row, png_ptr->row_buf + 1,
-       (png_size_t)PNG_ROWBYTES(png_ptr->row_info.pixel_depth,png_ptr->width));
+         PNG_ROWBYTES(png_ptr->row_info.pixel_depth,png_ptr->width));
    }
    else   /* (png_combine_row() is never called with mask == 0) */
    {
@@ -1711,7 +1713,7 @@
                      int dummy_value_c;   // fix 'forbidden register spilled'
                      int dummy_value_S;
                      int dummy_value_D;
-                     int dummy_value_a;
+                     long dummy_value_a;
 
                      __asm__ __volatile__ (
                         "subl $21, %%edi         \n\t"
@@ -1764,7 +1766,7 @@
                      int dummy_value_c;   // fix 'forbidden register spilled'
                      int dummy_value_S;
                      int dummy_value_D;
-                     int dummy_value_a;
+                     long dummy_value_a;
 
                      __asm__ __volatile__ (
                         "subl $9, %%edi          \n\t"
@@ -1818,8 +1820,8 @@
                         int dummy_value_c;  // fix 'forbidden register spilled'
                         int dummy_value_S;
                         int dummy_value_D;
-                        int dummy_value_a;
-                        int dummy_value_d;
+                        long dummy_value_a;
+                        long dummy_value_d;
 
                         __asm__ __volatile__ (
                            "subl $3, %%esi          \n\t"
@@ -2767,8 +2769,12 @@
    __asm__ __volatile__ (
       // initialize address pointers and offset
 #ifdef __PIC__
+#ifdef __x86_64__
+      "pushq %%rbx                 \n\t" // save index to Global Offset Table
+#else
       "pushl %%ebx                 \n\t" // save index to Global Offset Table
 #endif
+#endif
 //pre "movl row, %%edi             \n\t" // edi:  Avg(x)
       "xorl %%ebx, %%ebx           \n\t" // ebx:  x
       "movl %%edi, %%edx           \n\t"
@@ -2823,8 +2829,12 @@
       "subl %%eax, %%ecx           \n\t" // drop over bytes from original length
       "movl %%ecx, _MMXLength      \n\t"
 #ifdef __PIC__
+#ifdef __x86_64__
+      "popq %%rbx                  \n\t" // restore index to Global Offset Table
+#else
       "popl %%ebx                  \n\t" // restore index to Global Offset Table
 #endif
+#endif
 
       : "=c" (dummy_value_c),            // output regs (dummy)
         "=S" (dummy_value_S),
@@ -3199,8 +3209,12 @@
          __asm__ __volatile__ (
             // re-init address pointers and offset
 #ifdef __PIC__
+#ifdef __x86_64__
+            "pushq %%rbx                 \n\t" // save Global Offset Table index
+#else
             "pushl %%ebx                 \n\t" // save Global Offset Table index
 #endif
+#endif
             "movl _dif, %%ebx            \n\t" // ebx:  x = offset to alignment
                                                // boundary
 // preload  "movl row, %%edi             \n\t" // edi:  Avg(x)
@@ -3230,8 +3244,12 @@
 
          "avg_1end:                      \n\t"
 #ifdef __PIC__
+#ifdef __x86_64
+            "popq %%rbx                  \n\t" // Global Offset Table index
+#else
             "popl %%ebx                  \n\t" // Global Offset Table index
 #endif
+#endif
 
             : "=c" (dummy_value_c),            // output regs (dummy)
               "=S" (dummy_value_S),
@@ -3359,8 +3377,12 @@
       // MMX acceleration complete; now do clean-up
       // check if any remaining bytes left to decode
 #ifdef __PIC__
+#ifdef __x86_64__
+      "pushq %%rbx                 \n\t" // save index to Global Offset Table
+#else
       "pushl %%ebx                 \n\t" // save index to Global Offset Table
 #endif
+#endif
       "movl _MMXLength, %%ebx      \n\t" // ebx:  x == offset bytes after MMX
 //pre "movl row, %%edi             \n\t" // edi:  Avg(x)
       "cmpl _FullLength, %%ebx     \n\t" // test if offset at end of array
@@ -3389,8 +3411,12 @@
    "avg_end:                       \n\t"
       "EMMS                        \n\t" // end MMX; prep for poss. FP instrs.
 #ifdef __PIC__
+#ifdef __x86_64__
+      "popq %%rbx                  \n\t" // restore index to Global Offset Table
+#else
       "popl %%ebx                  \n\t" // restore index to Global Offset Table
 #endif
+#endif
 
       : "=c" (dummy_value_c),            // output regs (dummy)
         "=S" (dummy_value_S),
@@ -3434,8 +3460,12 @@
 
    __asm__ __volatile__ (
 #ifdef __PIC__
+#ifdef __x86_64__
+      "pushq %%rbx                 \n\t" // save index to Global Offset Table
+#else
       "pushl %%ebx                 \n\t" // save index to Global Offset Table
 #endif
+#endif
       "xorl %%ebx, %%ebx           \n\t" // ebx:  x offset
 //pre "movl row, %%edi             \n\t"
       "xorl %%edx, %%edx           \n\t" // edx:  x-bpp offset
@@ -3544,8 +3574,12 @@
       "subl %%eax, %%ecx           \n\t" // drop over bytes from original length
       "movl %%ecx, _MMXLength      \n\t"
 #ifdef __PIC__
+#ifdef __x86_64__
+      "popq %%rbx                  \n\t" // restore index to Global Offset Table
+#else
       "popl %%ebx                  \n\t" // restore index to Global Offset Table
 #endif
+#endif
 
       : "=c" (dummy_value_c),            // output regs (dummy)
         "=S" (dummy_value_S),
@@ -4244,8 +4278,12 @@
       {
          __asm__ __volatile__ (
 #ifdef __PIC__
+#ifdef __x86_64__
+            "pushq %%rbx                 \n\t" // save Global Offset Table index
+#else
             "pushl %%ebx                 \n\t" // save Global Offset Table index
 #endif
+#endif
             "movl _dif, %%ebx            \n\t"
             "cmpl _FullLength, %%ebx     \n\t"
             "jnb paeth_dend              \n\t"
@@ -4331,8 +4369,12 @@
 
          "paeth_dend:                    \n\t"
 #ifdef __PIC__
+#ifdef __x86_64__
+            "popq %%rbx                  \n\t" // index to Global Offset Table
+#else
             "popl %%ebx                  \n\t" // index to Global Offset Table
 #endif
+#endif
 
             : "=c" (dummy_value_c),            // output regs (dummy)
               "=S" (dummy_value_S),
@@ -4356,8 +4398,12 @@
       // MMX acceleration complete; now do clean-up
       // check if any remaining bytes left to decode
 #ifdef __PIC__
+#ifdef __x86_64__
+      "pushq %%rbx                 \n\t" // save index to Global Offset Table
+#else
       "pushl %%ebx                 \n\t" // save index to Global Offset Table
 #endif
+#endif
       "movl _MMXLength, %%ebx      \n\t"
       "cmpl _FullLength, %%ebx     \n\t"
       "jnb paeth_end               \n\t"
@@ -4443,8 +4489,12 @@
    "paeth_end:                     \n\t"
       "EMMS                        \n\t" // end MMX; prep for poss. FP instrs.
 #ifdef __PIC__
+#ifdef __x86_64__
+      "popq %%rbx                  \n\t" // restore index to Global Offset Table
+#else
       "popl %%ebx                  \n\t" // restore index to Global Offset Table
 #endif
+#endif
 
       : "=c" (dummy_value_c),            // output regs (dummy)
         "=S" (dummy_value_S),
@@ -4912,8 +4962,12 @@
 //pre "movl row, %%edi              \n\t"
       // get # of bytes to alignment
 #ifdef __PIC__
+#ifdef __x86_64__
+      "pushq %%rbx                  \n\t"
+#else
       "pushl %%ebx                  \n\t"
 #endif
+#endif
       "movl %%edi, %%ecx            \n\t"
       "xorl %%ebx, %%ebx            \n\t"
       "addl $0x7, %%ecx             \n\t"
@@ -5014,8 +5068,12 @@
    "up_end:                         \n\t"
       "EMMS                         \n\t" // conversion of filtered row complete
 #ifdef __PIC__
+#ifdef __x86_64__
+      "popq %%rbx                   \n\t"
+#else
       "popl %%ebx                   \n\t"
 #endif
+#endif
 
       : "=d" (dummy_value_d),   // 0      // output regs (dummy)
         "=S" (dummy_value_S),   // 1
@@ -5298,23 +5356,45 @@
 #if defined(PNG_MMX_CODE_SUPPORTED)
     int result;
     __asm__ __volatile__ (
+#ifdef __x86_64__
+        "pushq %%rbx          \n\t"  // rbx gets clobbered by CPUID instruction
+        "pushq %%rcx          \n\t"  // so does rcx...
+        "pushq %%rdx          \n\t"  // ...and rdx (but rcx & rdx safe on Linux)
+#else
         "pushl %%ebx          \n\t"  // ebx gets clobbered by CPUID instruction
         "pushl %%ecx          \n\t"  // so does ecx...
         "pushl %%edx          \n\t"  // ...and edx (but ecx & edx safe on Linux)
+#endif
 //      ".byte  0x66          \n\t"  // convert 16-bit pushf to 32-bit pushfd
 //      "pushf                \n\t"  // 16-bit pushf
+#ifdef __x86_64__
+        "pushfq               \n\t"  // save Eflag to stack
+        "popq %%rax           \n\t"  // get Eflag from stack into rax
+        "movq %%rax, %%rcx    \n\t"  // make another copy of Eflag in rcx
+        "xorl $0x200000, %%eax \n\t" // toggle ID bit in Eflag (i.e., bit 21)
+        "pushq %%rax          \n\t"  // save modified Eflag back to stack
+#else
         "pushfl               \n\t"  // save Eflag to stack
         "popl %%eax           \n\t"  // get Eflag from stack into eax
         "movl %%eax, %%ecx    \n\t"  // make another copy of Eflag in ecx
         "xorl $0x200000, %%eax \n\t" // toggle ID bit in Eflag (i.e., bit 21)
         "pushl %%eax          \n\t"  // save modified Eflag back to stack
+#endif
 //      ".byte  0x66          \n\t"  // convert 16-bit popf to 32-bit popfd
 //      "popf                 \n\t"  // 16-bit popf
+#ifdef __x86_64__
+        "popfq                \n\t"  // restore modified value to Eflag reg
+        "pushfq               \n\t"  // save Eflag to stack
+        "popq %%rax           \n\t"  // get Eflag from stack
+        "pushq %%rcx          \n\t"  // save original Eflag to stack
+        "popfq                \n\t"  // restore original Eflag
+#else
         "popfl                \n\t"  // restore modified value to Eflag reg
         "pushfl               \n\t"  // save Eflag to stack
         "popl %%eax           \n\t"  // get Eflag from stack
         "pushl %%ecx          \n\t"  // save original Eflag to stack
         "popfl                \n\t"  // restore original Eflag
+#endif
         "xorl %%ecx, %%eax    \n\t"  // compare new Eflag with original Eflag
         "jz 0f                \n\t"  // if same, CPUID instr. is not supported
 
@@ -5338,9 +5418,15 @@
     "0:                       \n\t"  // .NOT_SUPPORTED: target label for jump instructions
         "movl $0, %%eax       \n\t"  // set return value to 0
     "1:                       \n\t"  // .RETURN: target label for jump instructions
+#ifdef __x86_64__
+        "popq %%rdx           \n\t"  // restore rdx
+        "popq %%rcx           \n\t"  // restore rcx
+        "popq %%rbx           \n\t"  // restore rbx
+#else
         "popl %%edx           \n\t"  // restore edx
         "popl %%ecx           \n\t"  // restore ecx
         "popl %%ebx           \n\t"  // restore ebx
+#endif
 
 //      "ret                  \n\t"  // DONE:  no MMX support
                                      // (fall through to standard C "ret")
diff --git a/pngget.c b/pngget.c
index ccba640..bcc0dce 100644
--- a/pngget.c
+++ b/pngget.c
@@ -9,7 +9,7 @@
  */
 
 #include "png.h"
-#include "pngintrn.h"
+#include "pngpriv.h"
 
 #if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
 
@@ -22,7 +22,7 @@
       return(0);
 }
 
-png_uint_32 PNGAPI
+png_size_t PNGAPI
 png_get_rowbytes(png_structp png_ptr, png_infop info_ptr)
 {
    if (png_ptr != NULL && info_ptr != NULL)
@@ -571,7 +571,7 @@
                  - 8)       /* extra max_pixel_depth pad */
       {
          png_warning(png_ptr,
-            "Width too large for libpng to process image data.");
+            "Width too large for libpng to process image data");
       }
       return (1);
    }
@@ -822,10 +822,10 @@
 #endif
 
 #ifdef PNG_WRITE_SUPPORTED
-png_uint_32 PNGAPI
+png_size_t PNGAPI
 png_get_compression_buffer_size(png_structp png_ptr)
 {
-   return (png_uint_32)(png_ptr? png_ptr->zbuf_size : 0L);
+   return (png_ptr ? png_ptr->zbuf_size : 0);
 }
 #endif
 
@@ -933,4 +933,18 @@
 }
 #endif /* ?PNG_SET_USER_LIMITS_SUPPORTED */
 
+#ifdef PNG_IO_STATE_SUPPORTED
+png_uint_32 PNGAPI
+png_get_io_state (png_structp png_ptr)
+{
+    return png_ptr->io_state;
+}
+
+png_bytep PNGAPI
+png_get_io_chunk_name (png_structp png_ptr)
+{
+   return png_ptr->chunk_name;
+}
+#endif /* ?PNG_IO_STATE_SUPPORTED */
+
 #endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
diff --git a/pngmem.c b/pngmem.c
index be2431a..1c87f60 100644
--- a/pngmem.c
+++ b/pngmem.c
@@ -1,7 +1,7 @@
 
 /* pngmem.c - stub functions for memory allocation
  *
- * Last changed in libpng 1.4.0 April 20, 2006
+ * Last changed in libpng 1.4.0 July 13, 2006
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2006 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@@ -15,7 +15,7 @@
  */
 
 #include "png.h"
-#include "pngintrn.h"
+#include "pngpriv.h"
 
 #if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
 
@@ -29,7 +29,7 @@
 png_create_struct(int type)
 {
 #ifdef PNG_USER_MEM_SUPPORTED
-   return (png_create_struct_2(type, png_malloc_ptr_NULL, png_voidp_NULL));
+   return (png_create_struct_2(type, NULL, NULL));
 }
 
 /* Alternate version of png_create_struct, for use with user-defined malloc. */
@@ -41,9 +41,9 @@
    png_voidp struct_ptr;
 
    if (type == PNG_STRUCT_INFO)
-     size = png_sizeof(png_info);
+     size = sizeof(png_info);
    else if (type == PNG_STRUCT_PNG)
-     size = png_sizeof(png_struct);
+     size = sizeof(png_struct);
    else
      return (png_get_copyright(NULL));
 
@@ -53,7 +53,7 @@
       png_struct dummy_struct;
       png_structp png_ptr = &dummy_struct;
       png_ptr->mem_ptr=mem_ptr;
-      struct_ptr = (*(malloc_fn))(png_ptr, (png_uint_32)size);
+      struct_ptr = (*(malloc_fn))(png_ptr, size);
    }
    else
 #endif /* PNG_USER_MEM_SUPPORTED */
@@ -68,7 +68,7 @@
 png_destroy_struct(png_voidp struct_ptr)
 {
 #ifdef PNG_USER_MEM_SUPPORTED
-   png_destroy_struct_2(struct_ptr, png_free_ptr_NULL, png_voidp_NULL);
+   png_destroy_struct_2(struct_ptr, NULL, NULL);
 }
 
 /* Free memory allocated by a png_create_struct() call */
@@ -114,7 +114,7 @@
  */
 
 png_voidp PNGAPI
-png_malloc(png_structp png_ptr, png_uint_32 size)
+png_malloc(png_structp png_ptr, png_alloc_size_t size)
 {
    png_voidp ret;
 
@@ -123,22 +123,22 @@
 
 #ifdef PNG_USER_MEM_SUPPORTED
    if(png_ptr->malloc_fn != NULL)
-       ret = ((png_voidp)(*(png_ptr->malloc_fn))(png_ptr, (png_size_t)size));
+       ret = (*(png_ptr->malloc_fn))(png_ptr, size);
    else
-       ret = (png_malloc_default(png_ptr, size));
+       ret = png_malloc_default(png_ptr, size);
    if (ret == NULL && (png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
        png_error(png_ptr, "Out of memory!");
    return (ret);
 }
 
 png_voidp PNGAPI
-png_malloc_default(png_structp png_ptr, png_uint_32 size)
+png_malloc_default(png_structp png_ptr, png_alloc_size_t size)
 {
    png_voidp ret;
 #endif /* PNG_USER_MEM_SUPPORTED */
 
 #ifdef PNG_MAX_MALLOC_64K
-   if (size > (png_uint_32)65536L)
+   if (size > (png_alloc_size_t)65536L)
    {
       png_warning(png_ptr, "Cannot Allocate > 64K");
       ret = NULL;
@@ -146,9 +146,12 @@
    else
 #endif
 
+#if !defined(INT_MAX) || (INT_MAX <= 0x7ffffffeL)
    if (size != (size_t)size)
-     ret = NULL;
-   else if (size == (png_uint_32)65536L)
+      ret = NULL;
+   else
+#endif
+   if (size == (png_alloc_size_t)65536L)
    {
       if (png_ptr->offset_table == NULL)
       {
@@ -185,9 +188,9 @@
             {
 #ifndef PNG_USER_MEM_SUPPORTED
                if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
-                  png_error(png_ptr, "Out Of Memory."); /* Note "O" and "M" */
+                  png_error(png_ptr, "Out Of Memory"); /* Note "O" and "M" */
                else
-                  png_warning(png_ptr, "Out Of Memory.");
+                  png_warning(png_ptr, "Out Of Memory");
 #endif
                return (NULL);
             }
@@ -207,15 +210,15 @@
 
             png_ptr->offset_table = table;
             png_ptr->offset_table_ptr = farmalloc(num_blocks *
-               png_sizeof (png_bytep));
+               sizeof(png_bytep));
 
             if (png_ptr->offset_table_ptr == NULL)
             {
 #ifndef PNG_USER_MEM_SUPPORTED
                if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
-                  png_error(png_ptr, "Out Of memory."); /* Note "O" and "M" */
+                  png_error(png_ptr, "Out Of memory"); /* Note "O" and "M" */
                else
-                  png_warning(png_ptr, "Out Of memory.");
+                  png_warning(png_ptr, "Out Of memory");
 #endif
                return (NULL);
             }
@@ -242,9 +245,9 @@
       {
 #ifndef PNG_USER_MEM_SUPPORTED
          if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
-            png_error(png_ptr, "Out of Memory."); /* Note "o" and "M" */
+            png_error(png_ptr, "Out of Memory"); /* Note "o" and "M" */
          else
-            png_warning(png_ptr, "Out of Memory.");
+            png_warning(png_ptr, "Out of Memory");
 #endif
          return (NULL);
       }
@@ -258,9 +261,9 @@
    if (ret == NULL)
    {
       if ((png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
-         png_error(png_ptr, "Out of memory."); /* Note "o" and "m" */
+         png_error(png_ptr, "Out of memory"); /* Note "o" and "m" */
       else
-         png_warning(png_ptr, "Out of memory."); /* Note "o" and "m" */
+         png_warning(png_ptr, "Out of memory"); /* Note "o" and "m" */
    }
 #endif
 
@@ -327,7 +330,7 @@
 png_create_struct(int type)
 {
 #ifdef PNG_USER_MEM_SUPPORTED
-   return (png_create_struct_2(type, png_malloc_ptr_NULL, png_voidp_NULL));
+   return (png_create_struct_2(type, NULL, NULL));
 }
 
 /* Allocate memory for a png_struct or a png_info.  The malloc and
@@ -341,14 +344,14 @@
    png_voidp struct_ptr;
 
    if (type == PNG_STRUCT_INFO)
-      size = png_sizeof(png_info);
+      size = sizeof(png_info);
    else if (type == PNG_STRUCT_PNG)
-      size = png_sizeof(png_struct);
+      size = sizeof(png_struct);
    else
       return (NULL);
 
 #ifdef PNG_USER_MEM_SUPPORTED
-   if(malloc_fn != NULL)
+   if (malloc_fn != NULL)
    {
       png_struct dummy_struct;
       png_structp png_ptr = &dummy_struct;
@@ -373,7 +376,7 @@
 png_destroy_struct(png_voidp struct_ptr)
 {
 #ifdef PNG_USER_MEM_SUPPORTED
-   png_destroy_struct_2(struct_ptr, png_free_ptr_NULL, png_voidp_NULL);
+   png_destroy_struct_2(struct_ptr, NULL, NULL);
 }
 
 /* Free memory allocated by a png_create_struct() call */
@@ -405,7 +408,7 @@
    have the ability to do that. */
 
 png_voidp PNGAPI
-png_malloc(png_structp png_ptr, png_uint_32 size)
+png_malloc(png_structp png_ptr, png_alloc_size_t size)
 {
    png_voidp ret;
 
@@ -413,17 +416,17 @@
    if (png_ptr == NULL || size == 0)
       return (NULL);
 
-   if(png_ptr->malloc_fn != NULL)
-       ret = ((png_voidp)(*(png_ptr->malloc_fn))(png_ptr, (png_size_t)size));
+   if (png_ptr->malloc_fn != NULL)
+       ret = (*(png_ptr->malloc_fn))(png_ptr, size);
    else
-       ret = (png_malloc_default(png_ptr, size));
+       ret = png_malloc_default(png_ptr, size);
    if (ret == NULL && (png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
        png_error(png_ptr, "Out of Memory!");
    return (ret);
 }
 
 png_voidp PNGAPI
-png_malloc_default(png_structp png_ptr, png_uint_32 size)
+png_malloc_default(png_structp png_ptr, png_alloc_size_t size)
 {
    png_voidp ret;
 #endif /* PNG_USER_MEM_SUPPORTED */
@@ -432,7 +435,7 @@
       return (NULL);
 
 #ifdef PNG_MAX_MALLOC_64K
-   if (size > (png_uint_32)65536L)
+   if (size > (png_alloc_size_t)65536L)
    {
 #ifndef PNG_USER_MEM_SUPPORTED
       if(png_ptr->flags&PNG_FLAG_MALLOC_NULL_MEM_OK) == 0)
@@ -443,10 +446,6 @@
    }
 #endif
 
- /* Check for overflow */
- if (size != (png_mem_size_t)size)
-   ret = NULL;
- else
    ret = png_mem_alloc(size);
 
 #ifndef PNG_USER_MEM_SUPPORTED
@@ -491,7 +490,7 @@
  * memory.
  */
 png_voidp PNGAPI
-png_malloc_warn(png_structp png_ptr, png_uint_32 size)
+png_malloc_warn(png_structp png_ptr, png_alloc_size_t size)
 {
    png_voidp ptr;
    png_uint_32 save_flags=png_ptr->flags;
@@ -502,33 +501,6 @@
    return(ptr);
 }
 
-png_voidp PNGAPI
-png_memcpy_check (png_structp png_ptr, png_voidp s1, png_voidp s2,
-   png_uint_32 length)
-{
-   png_size_t size;
-
-   size = (png_size_t)length;
-   if ((png_uint_32)size != length)
-      png_error(png_ptr,"Overflow in png_memcpy_check.");
-
-   return(png_memcpy (s1, s2, size));
-}
-
-png_voidp PNGAPI
-png_memset_check (png_structp png_ptr, png_voidp s1, int value,
-   png_uint_32 length)
-{
-   png_size_t size;
-
-   size = (png_size_t)length;
-   if ((png_uint_32)size != length)
-      png_error(png_ptr,"Overflow in png_memset_check.");
-
-   return (png_memset (s1, value, size));
-
-}
-
 #ifdef PNG_USER_MEM_SUPPORTED
 /* This function is called when the application wants to use another method
  * of allocating and freeing memory.
@@ -552,4 +524,5 @@
    return ((png_voidp)png_ptr->mem_ptr);
 }
 #endif /* PNG_USER_MEM_SUPPORTED */
+
 #endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */
diff --git a/pngpread.c b/pngpread.c
index 1a41e63..6aaaf92 100644
--- a/pngpread.c
+++ b/pngpread.c
@@ -9,7 +9,7 @@
  */
 
 #include "png.h"
-#include "pngintrn.h"
+#include "pngpriv.h"
 
 #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
 
@@ -214,7 +214,7 @@
       png_ptr->mode |= PNG_HAVE_CHUNK_HEADER;
    }
 
-   if (!png_memcmp(png_ptr->chunk_name, (png_bytep)png_IDAT, 4))
+   if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
      if(png_ptr->mode & PNG_AFTER_IDAT)
         png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT;
 
@@ -271,7 +271,7 @@
       }
       png_handle_PLTE(png_ptr, info_ptr, png_ptr->push_length);
    }
-   else if (!png_memcmp(png_ptr->chunk_name, (png_bytep)png_IDAT, 4))
+   else if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
    {
       /* If we reach an IDAT chunk, this means we have read all of the
        * header chunks, and we can start reading the image (or if this
@@ -626,8 +626,7 @@
       }
       new_max = png_ptr->save_buffer_size + png_ptr->current_buffer_size + 256;
       old_buffer = png_ptr->save_buffer;
-      png_ptr->save_buffer = (png_bytep)png_malloc(png_ptr,
-         (png_uint_32)new_max);
+      png_ptr->save_buffer = (png_bytep)png_malloc(png_ptr, new_max);
       png_memcpy(png_ptr->save_buffer, old_buffer, png_ptr->save_buffer_size);
       png_free(png_ptr, old_buffer);
       png_ptr->save_buffer_max = new_max;
@@ -675,7 +674,7 @@
       png_crc_read(png_ptr, png_ptr->chunk_name, 4);
       png_ptr->mode |= PNG_HAVE_CHUNK_HEADER;
 
-      if (png_memcmp(png_ptr->chunk_name, (png_bytep)png_IDAT, 4))
+      if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
       {
          png_ptr->process_mode = PNG_READ_CHUNK_MODE;
          if (!(png_ptr->flags & PNG_FLAG_ZLIB_FINISHED))
@@ -817,8 +816,7 @@
       png_ptr->row_buf + 1, png_ptr->prev_row + 1,
       (int)(png_ptr->row_buf[0]));
 
-   png_memcpy_check(png_ptr, png_ptr->prev_row, png_ptr->row_buf,
-      png_ptr->rowbytes + 1);
+   png_memcpy(png_ptr->prev_row, png_ptr->row_buf, png_ptr->rowbytes + 1);
 
    if (png_ptr->transformations || (png_ptr->flags&PNG_FLAG_STRIP_ALPHA))
       png_do_read_transformations(png_ptr);
@@ -848,7 +846,7 @@
             {
                for (i = 0; i < 4 && png_ptr->pass == 2; i++)
                {
-                  png_push_have_row(png_ptr, png_bytep_NULL);
+                  png_push_have_row(png_ptr, NULL);
                   png_read_push_finish_row(png_ptr);
                }
             }
@@ -856,13 +854,13 @@
             {
                for (i = 0; i < 2 && png_ptr->pass == 4; i++)
                {
-                  png_push_have_row(png_ptr, png_bytep_NULL);
+                  png_push_have_row(png_ptr, NULL);
                   png_read_push_finish_row(png_ptr);
                }
             }
             if (png_ptr->pass == 6 && png_ptr->height <= 4)
             {
-                png_push_have_row(png_ptr, png_bytep_NULL);
+                png_push_have_row(png_ptr, NULL);
                 png_read_push_finish_row(png_ptr);
             }
             break;
@@ -879,7 +877,7 @@
             {
                for (i = 0; i < 4 && png_ptr->pass == 2; i++)
                {
-                  png_push_have_row(png_ptr, png_bytep_NULL);
+                  png_push_have_row(png_ptr, NULL);
                   png_read_push_finish_row(png_ptr);
                }
             }
@@ -895,14 +893,14 @@
             }
             for (i = 0; i < 4 && png_ptr->pass == 2; i++)
             {
-               png_push_have_row(png_ptr, png_bytep_NULL);
+               png_push_have_row(png_ptr, NULL);
                png_read_push_finish_row(png_ptr);
             }
             if (png_ptr->pass == 4) /* pass 3 might be empty */
             {
                for (i = 0; i < 2 && png_ptr->pass == 4; i++)
                {
-                  png_push_have_row(png_ptr, png_bytep_NULL);
+                  png_push_have_row(png_ptr, NULL);
                   png_read_push_finish_row(png_ptr);
                }
             }
@@ -920,7 +918,7 @@
             {
                for (i = 0; i < 2 && png_ptr->pass == 4; i++)
                {
-                  png_push_have_row(png_ptr, png_bytep_NULL);
+                  png_push_have_row(png_ptr, NULL);
                   png_read_push_finish_row(png_ptr);
                }
             }
@@ -936,12 +934,12 @@
             }
             for (i = 0; i < 2 && png_ptr->pass == 4; i++)
             {
-               png_push_have_row(png_ptr, png_bytep_NULL);
+               png_push_have_row(png_ptr, NULL);
                png_read_push_finish_row(png_ptr);
             }
             if (png_ptr->pass == 6) /* pass 5 might be empty */
             {
-               png_push_have_row(png_ptr, png_bytep_NULL);
+               png_push_have_row(png_ptr, NULL);
                png_read_push_finish_row(png_ptr);
             }
             break;
@@ -956,7 +954,7 @@
             }
             if (png_ptr->pass == 6) /* skip top generated row */
             {
-               png_push_have_row(png_ptr, png_bytep_NULL);
+               png_push_have_row(png_ptr, NULL);
                png_read_push_finish_row(png_ptr);
             }
             break;
@@ -967,7 +965,7 @@
             png_read_push_finish_row(png_ptr);
             if (png_ptr->pass != 6)
                break;
-            png_push_have_row(png_ptr, png_bytep_NULL);
+            png_push_have_row(png_ptr, NULL);
             png_read_push_finish_row(png_ptr);
          }
       }
@@ -1016,8 +1014,7 @@
    if (png_ptr->interlaced)
    {
       png_ptr->row_number = 0;
-      png_memset_check(png_ptr, png_ptr->prev_row, 0,
-         png_ptr->rowbytes + 1);
+      png_memset(png_ptr->prev_row, 0, png_ptr->rowbytes + 1);
       do
       {
          png_ptr->pass++;
@@ -1075,7 +1072,7 @@
 #endif
 
    png_ptr->current_text = (png_charp)png_malloc(png_ptr,
-         (png_uint_32)(length+1));
+      (png_size_t)(length + 1));
    png_ptr->current_text[length] = '\0';
    png_ptr->current_text_ptr = png_ptr->current_text;
    png_ptr->current_text_size = (png_size_t)length;
@@ -1126,8 +1123,7 @@
       if (text != key + png_ptr->current_text_size)
          text++;
 
-      text_ptr = (png_textp)png_malloc(png_ptr,
-         (png_uint_32)png_sizeof(png_text));
+      text_ptr = (png_textp)png_malloc(png_ptr, sizeof(png_text));
       text_ptr->compression = PNG_TEXT_COMPRESSION_NONE;
       text_ptr->key = key;
 #ifdef PNG_iTXt_SUPPORTED
@@ -1143,7 +1139,7 @@
       png_ptr->current_text = NULL;
 
       if (ret)
-        png_warning(png_ptr, "Insufficient memory to store text chunk.");
+        png_warning(png_ptr, "Insufficient memory to store text chunk");
    }
 }
 #endif
@@ -1174,7 +1170,7 @@
 #endif
 
    png_ptr->current_text = (png_charp)png_malloc(png_ptr,
-       (png_uint_32)(length+1));
+      (png_size_t)(length+1));
    png_ptr->current_text[length] = '\0';
    png_ptr->current_text_ptr = png_ptr->current_text;
    png_ptr->current_text_size = (png_size_t)length;
@@ -1265,8 +1261,8 @@
             if (text == NULL)
             {
                text = (png_charp)png_malloc(png_ptr,
-                  (png_uint_32)(png_ptr->zbuf_size - png_ptr->zstream.avail_out
-                     + key_size + 1));
+                  png_ptr->zbuf_size - png_ptr->zstream.avail_out
+                     + key_size + 1);
                png_memcpy(text + key_size, png_ptr->zbuf,
                   png_ptr->zbuf_size - png_ptr->zstream.avail_out);
                png_memcpy(text, key, key_size);
@@ -1280,8 +1276,7 @@
 
                tmp = text;
                text = (png_charp)png_malloc(png_ptr, text_size +
-                  (png_uint_32)(png_ptr->zbuf_size - png_ptr->zstream.avail_out
-                   + 1));
+                  png_ptr->zbuf_size - png_ptr->zstream.avail_out + 1);
                png_memcpy(text, tmp, text_size);
                png_free(png_ptr, tmp);
                png_memcpy(text + text_size, png_ptr->zbuf,
@@ -1320,8 +1315,7 @@
       key = text;
       text += key_size;
 
-      text_ptr = (png_textp)png_malloc(png_ptr,
-          (png_uint_32)png_sizeof(png_text));
+      text_ptr = (png_textp)png_malloc(png_ptr, sizeof(png_text));
       text_ptr->compression = PNG_TEXT_COMPRESSION_zTXt;
       text_ptr->key = key;
 #ifdef PNG_iTXt_SUPPORTED
@@ -1336,7 +1330,7 @@
       png_free(png_ptr, text_ptr);
 
       if (ret)
-        png_warning(png_ptr, "Insufficient memory to store text chunk.");
+        png_warning(png_ptr, "Insufficient memory to store text chunk");
    }
 }
 #endif
@@ -1365,7 +1359,7 @@
 #endif
 
    png_ptr->current_text = (png_charp)png_malloc(png_ptr,
-         (png_uint_32)(length+1));
+      (png_size_t)(length+1));
    png_ptr->current_text[length] = '\0';
    png_ptr->current_text_ptr = png_ptr->current_text;
    png_ptr->current_text_size = (png_size_t)length;
@@ -1433,8 +1427,7 @@
       if (text != key + png_ptr->current_text_size)
          text++;
 
-      text_ptr = (png_textp)png_malloc(png_ptr,
-         (png_uint_32)png_sizeof(png_text));
+      text_ptr = (png_textp)png_malloc(png_ptr, sizeof(png_text));
       text_ptr->compression = comp_flag + 2;
       text_ptr->key = key;
       text_ptr->lang = lang;
@@ -1449,7 +1442,7 @@
 
       png_free(png_ptr, text_ptr);
       if (ret)
-        png_warning(png_ptr, "Insufficient memory to store iTXt chunk.");
+        png_warning(png_ptr, "Insufficient memory to store iTXt chunk");
    }
 }
 #endif
diff --git a/pngintrn.h b/pngpriv.h
similarity index 95%
rename from pngintrn.h
rename to pngpriv.h
index d935a55..2525d0f 100644
--- a/pngintrn.h
+++ b/pngpriv.h
@@ -1,25 +1,34 @@
 
-/* pngintrn.h - internal header file for libpng
+/* pngpriv.h - private declarations for use inside libpng
  *
- * libpng version 1.4.0beta10 - July 12, 2006
+ * libpng version 1.4.0beta11 - August 19, 2006
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2006 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.)
  */
 
-#ifndef PNGINTRN_H
-#define PNGINTRN_H
+/* The symbols declared in this file (including the functions declared
+ * as PNG_EXTERN) are PRIVATE.  They are not part of the libpng public
+ * interface, and are not recommended for use by regular applications.
+ * Some of them may become public in the future; others may stay private,
+ * change in an incompatible way, or even disappear.
+ * Although the libpng users are not forbidden to include this header,
+ * they should be well aware of the issues that may arise from doing so.
+ */
+
+#ifndef PNGPRIV_H
+#define PNGPRIV_H
 
 #ifndef PNG_VERSION_INFO_ONLY
 
 #include <stdlib.h>
 
-/* The functions exported by PNG_EXTERN are PNG_INTERNAL functions, which
+/* The functions exported by PNG_EXTERN are internal functions, which
  * aren't usually used outside the library (as far as I know), so it is
- * debatable if they should be exported at all.  In the future, when it is
- * possible to have run-time registry of chunk-handling functions, some of
- * these will be made available again.
+ * debatable if they should be exported at all.  In the future, when it
+ * is possible to have run-time registry of chunk-handling functions,
+ * some of these will be made available again.
 #define PNG_EXTERN extern
  */
 #define PNG_EXTERN
@@ -213,8 +222,8 @@
 /* Added to libpng-1.2.6 JB */
 #define PNG_ROWBYTES(pixel_bits, width) \
     ((pixel_bits) >= 8 ? \
-    ((width) * (((png_uint_32)(pixel_bits)) >> 3)) : \
-    (( ((width) * ((png_uint_32)(pixel_bits))) + 7) >> 3) )
+    ((png_size_t)(width) * (((png_size_t)(pixel_bits)) >> 3)) : \
+    (( ((png_size_t)(width) * ((png_size_t)(pixel_bits))) + 7) >> 3) )
 
 /* PNG_OUT_OF_RANGE returns true if value is outside the range
    ideal-delta..ideal+delta.  Each argument is evaluated twice.
@@ -320,17 +329,12 @@
 PNG_EXTERN void png_info_destroy PNGARG((png_structp png_ptr,
    png_infop info_ptr));
 
-/* Function to allocate memory for zlib. */
+/* Function to allocate memory for zlib.  PNGAPI is disallowed. */
 PNG_EXTERN voidpf png_zalloc PNGARG((voidpf png_ptr, uInt items, uInt size));
 
-/* Function to free memory for zlib */
+/* Function to free memory for zlib.  PNGAPI is disallowed. */
 PNG_EXTERN void png_zfree PNGARG((voidpf png_ptr, voidpf ptr));
 
-#ifdef PNG_SIZE_T
-/* Function to convert a sizeof an item to png_sizeof item */
-   PNG_EXTERN png_size_t PNGAPI png_convert_size PNGARG((size_t size));
-#endif
-
 /* Next four functions are used internally as callbacks.  PNGAPI is required
  * but not PNG_EXPORT.  PNGAPI added at libpng version 1.2.3. */
 
@@ -354,10 +358,13 @@
 /* Reset the CRC variable */
 PNG_EXTERN void png_reset_crc PNGARG((png_structp png_ptr));
 
-/* Write the "data" buffer to whatever output you are using. */
+/* Write the "data" buffer to whatever output you are using */
 PNG_EXTERN void png_write_data PNGARG((png_structp png_ptr, png_bytep data,
    png_size_t length));
 
+/* Read the chunk header (length + type name) */
+PNG_EXTERN png_uint_32 png_read_chunk_header PNGARG((png_structp png_ptr));
+
 /* Read data from whatever input you are using into the "data" buffer */
 PNG_EXTERN void png_read_data PNGARG((png_structp png_ptr, png_bytep data,
    png_size_t length));
@@ -871,6 +878,7 @@
 /* png.c */ /* PRIVATE */
 PNG_EXTERN void png_init_mmx_flags PNGARG((png_structp png_ptr));
 #endif
+
 /* Maintainer: Put new private prototypes here ^ and in libpngpf.3 */
 
 #ifdef PNG_READ_SUPPORTED
@@ -917,4 +925,4 @@
 #endif
 
 #endif /* PNG_VERSION_INFO_ONLY */
-#endif /* PNGINTRN_H */
+#endif /* PNGPRIV_H */
diff --git a/pngread.c b/pngread.c
index 6448b39..ebde0cc 100644
--- a/pngread.c
+++ b/pngread.c
@@ -12,7 +12,7 @@
  */
 
 #include "png.h"
-#include "pngintrn.h"
+#include "pngpriv.h"
 
 #if defined(PNG_READ_SUPPORTED)
 
@@ -24,7 +24,7 @@
 
 #ifdef PNG_USER_MEM_SUPPORTED
    return (png_create_read_struct_2(user_png_ver, error_ptr, error_fn,
-      warn_fn, png_voidp_NULL, png_malloc_ptr_NULL, png_free_ptr_NULL));
+      warn_fn, NULL, NULL, NULL));
 }
 
 /* Alternate create PNG structure for reading, and allocate any memory needed. */
@@ -48,7 +48,7 @@
    png_debug(1, "in png_create_read_struct\n");
 #ifdef PNG_USER_MEM_SUPPORTED
    png_ptr = (png_structp)png_create_struct_2(PNG_STRUCT_PNG,
-      (png_malloc_ptr)malloc_fn, (png_voidp)mem_ptr);
+      malloc_fn, mem_ptr);
 #else
    png_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG);
 #endif
@@ -83,7 +83,7 @@
       return (NULL);
    }
 #ifdef USE_FAR_KEYWORD
-   png_memcpy(png_ptr->jmpbuf,jmpbuf,png_sizeof(jmp_buf));
+   png_memcpy(png_ptr->jmpbuf, jmpbuf, sizeof(jmp_buf));
 #endif
 #endif
 
@@ -133,8 +133,7 @@
 
    /* initialize zbuf - compression buffer */
    png_ptr->zbuf_size = PNG_ZBUF_SIZE;
-   png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
-     (png_uint_32)png_ptr->zbuf_size);
+   png_ptr->zbuf = (png_bytep)png_malloc(png_ptr, png_ptr->zbuf_size);
    png_ptr->zstream.zalloc = png_zalloc;
    png_ptr->zstream.zfree = png_zfree;
    png_ptr->zstream.opaque = (voidpf)png_ptr;
@@ -151,7 +150,7 @@
    png_ptr->zstream.next_out = png_ptr->zbuf;
    png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
 
-   png_set_read_fn(png_ptr, png_voidp_NULL, png_rw_ptr_NULL);
+   png_set_read_fn(png_ptr, NULL, NULL);
 
 #ifdef PNG_SETJMP_SUPPORTED
 /* Applications that neglect to set up their own setjmp() and then encounter
@@ -160,7 +159,7 @@
 #ifdef USE_FAR_KEYWORD
    if (setjmp(jmpbuf))
       PNG_ABORT();
-   png_memcpy(png_ptr->jmpbuf,jmpbuf,png_sizeof(jmp_buf));
+   png_memcpy(png_ptr->jmpbuf, jmpbuf, sizeof(jmp_buf));
 #else
    if (setjmp(png_ptr->jmpbuf))
       PNG_ABORT();
@@ -184,14 +183,14 @@
 
    do
    {
-     if(user_png_ver[i] != png_libpng_ver[i])
+     if (user_png_ver[i] != png_libpng_ver[i])
      {
 #ifdef PNG_LEGACY_SUPPORTED
        png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
 #else
        png_ptr->warning_fn=NULL;
        png_warning(png_ptr,
-        "Application uses deprecated png_read_init() and should be recompiled.");
+        "Application uses deprecated png_read_init() and should be recompiled");
        break;
 #endif
      }
@@ -201,22 +200,22 @@
 
 #ifdef PNG_SETJMP_SUPPORTED
    /* save jump buffer and error functions */
-   png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof (jmp_buf));
+   png_memcpy(tmp_jmp, png_ptr->jmpbuf, sizeof(jmp_buf));
 #endif
 
-   if(png_sizeof(png_struct) > png_struct_size)
-     {
-       png_destroy_struct(png_ptr);
-       *ptr_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG);
-       png_ptr = *ptr_ptr;
-     }
+   if (sizeof(png_struct) > png_struct_size)
+   {
+      png_destroy_struct(png_ptr);
+      *ptr_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG);
+      png_ptr = *ptr_ptr;
+   }
 
    /* reset all variables to 0 */
-   png_memset(png_ptr, 0, png_sizeof (png_struct));
+   png_memset(png_ptr, 0, sizeof(png_struct));
 
 #ifdef PNG_SETJMP_SUPPORTED
    /* restore jump buffer */
-   png_memcpy(png_ptr->jmpbuf, tmp_jmp, png_sizeof (jmp_buf));
+   png_memcpy(png_ptr->jmpbuf, tmp_jmp, sizeof(jmp_buf));
 #endif
 
    /* added at libpng-1.2.6 */
@@ -227,8 +226,7 @@
 
    /* initialize zbuf - compression buffer */
    png_ptr->zbuf_size = PNG_ZBUF_SIZE;
-   png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
-     (png_uint_32)png_ptr->zbuf_size);
+   png_ptr->zbuf = (png_bytep)png_malloc(png_ptr, png_ptr->zbuf_size);
    png_ptr->zstream.zalloc = png_zalloc;
    png_ptr->zstream.zfree = png_zfree;
    png_ptr->zstream.opaque = (voidpf)png_ptr;
@@ -245,7 +243,7 @@
    png_ptr->zstream.next_out = png_ptr->zbuf;
    png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
 
-   png_set_read_fn(png_ptr, png_voidp_NULL, png_rw_ptr_NULL);
+   png_set_read_fn(png_ptr, NULL, NULL);
 }
 
 #ifndef PNG_NO_SEQUENTIAL_READ_SUPPORTED
@@ -267,6 +265,9 @@
       png_size_t num_checked = png_ptr->sig_bytes,
                  num_to_check = 8 - num_checked;
 
+#ifdef PNG_IO_STATE_SUPPORTED
+      png_ptr->io_state = PNG_IO_READING | PNG_IO_SIGNATURE;
+#endif
       png_read_data(png_ptr, &(info_ptr->signature[num_checked]), num_to_check);
       png_ptr->sig_bytes = 8;
 
@@ -341,38 +342,29 @@
       PNG_zTXt;
 #endif
 #endif /* PNG_USE_LOCAL_ARRAYS */
-      png_byte chunk_length[4];
-      png_uint_32 length;
-
-      png_read_data(png_ptr, chunk_length, 4);
-      length = png_get_uint_31(png_ptr,chunk_length);
-
-      png_reset_crc(png_ptr);
-      png_crc_read(png_ptr, png_ptr->chunk_name, 4);
-
-      png_debug2(0, "Reading %s chunk, length=%lu.\n", png_ptr->chunk_name,
-         (unsigned long) length);
+      png_uint_32 length = png_read_chunk_header(png_ptr);
+      png_bytep chunk_name = png_ptr->chunk_name;
 
       /* This should be a binary subdivision search or a hash for
        * matching the chunk name rather than a linear search.
        */
-      if (!png_memcmp(png_ptr->chunk_name, (png_bytep)png_IDAT, 4))
-        if(png_ptr->mode & PNG_AFTER_IDAT)
+      if (!png_memcmp(chunk_name, png_IDAT, 4))
+        if (png_ptr->mode & PNG_AFTER_IDAT)
           png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT;
 
-      if (!png_memcmp(png_ptr->chunk_name, png_IHDR, 4))
+      if (!png_memcmp(chunk_name, png_IHDR, 4))
          png_handle_IHDR(png_ptr, info_ptr, length);
-      else if (!png_memcmp(png_ptr->chunk_name, png_IEND, 4))
+      else if (!png_memcmp(chunk_name, png_IEND, 4))
          png_handle_IEND(png_ptr, info_ptr, length);
 #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
-      else if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name))
+      else if (png_handle_as_unknown(png_ptr, chunk_name))
       {
-         if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
+         if (!png_memcmp(chunk_name, png_IDAT, 4))
             png_ptr->mode |= PNG_HAVE_IDAT;
          png_handle_unknown(png_ptr, info_ptr, length);
-         if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4))
+         if (!png_memcmp(chunk_name, png_PLTE, 4))
             png_ptr->mode |= PNG_HAVE_PLTE;
-         else if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
+         else if (!png_memcmp(chunk_name, png_IDAT, 4))
          {
             if (!(png_ptr->mode & PNG_HAVE_IHDR))
                png_error(png_ptr, "Missing IHDR before IDAT");
@@ -383,9 +375,9 @@
          }
       }
 #endif
-      else if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4))
+      else if (!png_memcmp(chunk_name, png_PLTE, 4))
          png_handle_PLTE(png_ptr, info_ptr, length);
-      else if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
+      else if (!png_memcmp(chunk_name, png_IDAT, 4))
       {
          if (!(png_ptr->mode & PNG_HAVE_IHDR))
             png_error(png_ptr, "Missing IHDR before IDAT");
@@ -398,71 +390,71 @@
          break;
       }
 #if defined(PNG_READ_bKGD_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_bKGD, 4))
+      else if (!png_memcmp(chunk_name, png_bKGD, 4))
          png_handle_bKGD(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_cHRM_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_cHRM, 4))
+      else if (!png_memcmp(chunk_name, png_cHRM, 4))
          png_handle_cHRM(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_gAMA_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_gAMA, 4))
+      else if (!png_memcmp(chunk_name, png_gAMA, 4))
          png_handle_gAMA(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_hIST_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_hIST, 4))
+      else if (!png_memcmp(chunk_name, png_hIST, 4))
          png_handle_hIST(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_oFFs_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_oFFs, 4))
+      else if (!png_memcmp(chunk_name, png_oFFs, 4))
          png_handle_oFFs(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_pCAL_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_pCAL, 4))
+      else if (!png_memcmp(chunk_name, png_pCAL, 4))
          png_handle_pCAL(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_sCAL_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_sCAL, 4))
+      else if (!png_memcmp(chunk_name, png_sCAL, 4))
          png_handle_sCAL(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_pHYs_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_pHYs, 4))
+      else if (!png_memcmp(chunk_name, png_pHYs, 4))
          png_handle_pHYs(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_sBIT_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_sBIT, 4))
+      else if (!png_memcmp(chunk_name, png_sBIT, 4))
          png_handle_sBIT(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_sRGB_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_sRGB, 4))
+      else if (!png_memcmp(chunk_name, png_sRGB, 4))
          png_handle_sRGB(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_iCCP_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_iCCP, 4))
+      else if (!png_memcmp(chunk_name, png_iCCP, 4))
          png_handle_iCCP(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_sPLT_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_sPLT, 4))
+      else if (!png_memcmp(chunk_name, png_sPLT, 4))
          png_handle_sPLT(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_tEXt_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_tEXt, 4))
+      else if (!png_memcmp(chunk_name, png_tEXt, 4))
          png_handle_tEXt(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_tIME_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_tIME, 4))
+      else if (!png_memcmp(chunk_name, png_tIME, 4))
          png_handle_tIME(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_tRNS_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_tRNS, 4))
+      else if (!png_memcmp(chunk_name, png_tRNS, 4))
          png_handle_tRNS(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_zTXt_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_zTXt, 4))
+      else if (!png_memcmp(chunk_name, png_zTXt, 4))
          png_handle_zTXt(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_iTXt_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_iTXt, 4))
+      else if (!png_memcmp(chunk_name, png_iTXt, 4))
          png_handle_iTXt(png_ptr, info_ptr, length);
 #endif
       else
@@ -518,31 +510,31 @@
    /* check for transforms that have been set but were defined out */
 #if defined(PNG_WRITE_INVERT_SUPPORTED) && !defined(PNG_READ_INVERT_SUPPORTED)
    if (png_ptr->transformations & PNG_INVERT_MONO)
-      png_warning(png_ptr, "PNG_READ_INVERT_SUPPORTED is not defined.");
+      png_warning(png_ptr, "PNG_READ_INVERT_SUPPORTED is not defined");
 #endif
 #if defined(PNG_WRITE_FILLER_SUPPORTED) && !defined(PNG_READ_FILLER_SUPPORTED)
    if (png_ptr->transformations & PNG_FILLER)
-      png_warning(png_ptr, "PNG_READ_FILLER_SUPPORTED is not defined.");
+      png_warning(png_ptr, "PNG_READ_FILLER_SUPPORTED is not defined");
 #endif
 #if defined(PNG_WRITE_PACKSWAP_SUPPORTED) && !defined(PNG_READ_PACKSWAP_SUPPORTED)
    if (png_ptr->transformations & PNG_PACKSWAP)
-      png_warning(png_ptr, "PNG_READ_PACKSWAP_SUPPORTED is not defined.");
+      png_warning(png_ptr, "PNG_READ_PACKSWAP_SUPPORTED is not defined");
 #endif
 #if defined(PNG_WRITE_PACK_SUPPORTED) && !defined(PNG_READ_PACK_SUPPORTED)
    if (png_ptr->transformations & PNG_PACK)
-      png_warning(png_ptr, "PNG_READ_PACK_SUPPORTED is not defined.");
+      png_warning(png_ptr, "PNG_READ_PACK_SUPPORTED is not defined");
 #endif
 #if defined(PNG_WRITE_SHIFT_SUPPORTED) && !defined(PNG_READ_SHIFT_SUPPORTED)
    if (png_ptr->transformations & PNG_SHIFT)
-      png_warning(png_ptr, "PNG_READ_SHIFT_SUPPORTED is not defined.");
+      png_warning(png_ptr, "PNG_READ_SHIFT_SUPPORTED is not defined");
 #endif
 #if defined(PNG_WRITE_BGR_SUPPORTED) && !defined(PNG_READ_BGR_SUPPORTED)
    if (png_ptr->transformations & PNG_BGR)
-      png_warning(png_ptr, "PNG_READ_BGR_SUPPORTED is not defined.");
+      png_warning(png_ptr, "PNG_READ_BGR_SUPPORTED is not defined");
 #endif
 #if defined(PNG_WRITE_SWAP_SUPPORTED) && !defined(PNG_READ_SWAP_SUPPORTED)
    if (png_ptr->transformations & PNG_SWAP_BYTES)
-      png_warning(png_ptr, "PNG_READ_SWAP_SUPPORTED is not defined.");
+      png_warning(png_ptr, "PNG_READ_SWAP_SUPPORTED is not defined");
 #endif
    }
 
@@ -634,15 +626,9 @@
       {
          while (!png_ptr->idat_size)
          {
-            png_byte chunk_length[4];
-
             png_crc_finish(png_ptr, 0);
 
-            png_read_data(png_ptr, chunk_length, 4);
-            png_ptr->idat_size = png_get_uint_31(png_ptr,chunk_length);
-
-            png_reset_crc(png_ptr);
-            png_crc_read(png_ptr, png_ptr->chunk_name, 4);
+            png_ptr->idat_size = png_read_chunk_header(png_ptr);
             if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
                png_error(png_ptr, "Not enough image data");
          }
@@ -683,8 +669,7 @@
       png_ptr->row_buf + 1, png_ptr->prev_row + 1,
       (int)(png_ptr->row_buf[0]));
 
-   png_memcpy_check(png_ptr, png_ptr->prev_row, png_ptr->row_buf,
-      png_ptr->rowbytes + 1);
+   png_memcpy(png_ptr->prev_row, png_ptr->row_buf, png_ptr->rowbytes + 1);
 
 #if defined(PNG_MNG_FEATURES_SUPPORTED)
    if((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) &&
@@ -695,7 +680,6 @@
    }
 #endif
 
-
    if (png_ptr->transformations || (png_ptr->flags&PNG_FLAG_STRIP_ALPHA))
       png_do_read_transformations(png_ptr);
 
@@ -781,14 +765,14 @@
       for (i = 0; i < num_rows; i++)
       {
          png_bytep rptr = *rp;
-         png_read_row(png_ptr, rptr, png_bytep_NULL);
+         png_read_row(png_ptr, rptr, NULL);
          rp++;
       }
    else if(dp != NULL)
       for (i = 0; i < num_rows; i++)
       {
          png_bytep dptr = *dp;
-         png_read_row(png_ptr, png_bytep_NULL, dptr);
+         png_read_row(png_ptr, NULL, dptr);
          dp++;
       }
 }
@@ -821,11 +805,10 @@
 #else
    if (png_ptr->interlaced)
       png_error(png_ptr,
-        "Cannot read interlaced image -- interlace handler disabled.");
+        "Cannot read interlaced image -- interlace handler disabled");
    pass = 1;
 #endif
 
-
    image_height=png_ptr->height;
    png_ptr->num_rows = image_height; /* Make sure this is set correctly */
 
@@ -834,7 +817,7 @@
       rp = image;
       for (i = 0; i < image_height; i++)
       {
-         png_read_row(png_ptr, *rp, png_bytep_NULL);
+         png_read_row(png_ptr, *rp, NULL);
          rp++;
       }
    }
@@ -849,7 +832,7 @@
 void PNGAPI
 png_read_end(png_structp png_ptr, png_infop info_ptr)
 {
-   png_byte chunk_length[4];
+   png_bytep chunk_name;
    png_uint_32 length;
 
    png_debug(1, "in png_read_end\n");
@@ -915,32 +898,27 @@
 #endif
 #endif /* PNG_USE_LOCAL_ARRAYS */
 
-      png_read_data(png_ptr, chunk_length, 4);
-      length = png_get_uint_31(png_ptr,chunk_length);
+      length = png_read_chunk_header(png_ptr);
+      chunk_name = png_ptr->chunk_name;
 
-      png_reset_crc(png_ptr);
-      png_crc_read(png_ptr, png_ptr->chunk_name, 4);
-
-      png_debug1(0, "Reading %s chunk.\n", png_ptr->chunk_name);
-
-      if (!png_memcmp(png_ptr->chunk_name, png_IHDR, 4))
+      if (!png_memcmp(chunk_name, png_IHDR, 4))
          png_handle_IHDR(png_ptr, info_ptr, length);
-      else if (!png_memcmp(png_ptr->chunk_name, png_IEND, 4))
+      else if (!png_memcmp(chunk_name, png_IEND, 4))
          png_handle_IEND(png_ptr, info_ptr, length);
 #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
-      else if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name))
+      else if (png_handle_as_unknown(png_ptr, chunk_name))
       {
-         if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
+         if (!png_memcmp(chunk_name, png_IDAT, 4))
          {
             if ((length > 0) || (png_ptr->mode & PNG_HAVE_CHUNK_AFTER_IDAT))
                png_benign_error(png_ptr, "Too many IDAT's found");
          }
          png_handle_unknown(png_ptr, info_ptr, length);
-         if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4))
+         if (!png_memcmp(chunk_name, png_PLTE, 4))
             png_ptr->mode |= PNG_HAVE_PLTE;
       }
 #endif
-      else if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
+      else if (!png_memcmp(chunk_name, png_IDAT, 4))
       {
          /* Zero length IDATs are legal after the last IDAT has been
           * read, but not after other chunks have been read.
@@ -949,74 +927,74 @@
             png_benign_error(png_ptr, "Too many IDAT's found");
          png_crc_finish(png_ptr, length);
       }
-      else if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4))
+      else if (!png_memcmp(chunk_name, png_PLTE, 4))
          png_handle_PLTE(png_ptr, info_ptr, length);
 #if defined(PNG_READ_bKGD_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_bKGD, 4))
+      else if (!png_memcmp(chunk_name, png_bKGD, 4))
          png_handle_bKGD(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_cHRM_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_cHRM, 4))
+      else if (!png_memcmp(chunk_name, png_cHRM, 4))
          png_handle_cHRM(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_gAMA_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_gAMA, 4))
+      else if (!png_memcmp(chunk_name, png_gAMA, 4))
          png_handle_gAMA(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_hIST_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_hIST, 4))
+      else if (!png_memcmp(chunk_name, png_hIST, 4))
          png_handle_hIST(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_oFFs_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_oFFs, 4))
+      else if (!png_memcmp(chunk_name, png_oFFs, 4))
          png_handle_oFFs(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_pCAL_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_pCAL, 4))
+      else if (!png_memcmp(chunk_name, png_pCAL, 4))
          png_handle_pCAL(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_sCAL_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_sCAL, 4))
+      else if (!png_memcmp(chunk_name, png_sCAL, 4))
          png_handle_sCAL(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_pHYs_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_pHYs, 4))
+      else if (!png_memcmp(chunk_name, png_pHYs, 4))
          png_handle_pHYs(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_sBIT_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_sBIT, 4))
+      else if (!png_memcmp(chunk_name, png_sBIT, 4))
          png_handle_sBIT(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_sRGB_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_sRGB, 4))
+      else if (!png_memcmp(chunk_name, png_sRGB, 4))
          png_handle_sRGB(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_iCCP_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_iCCP, 4))
+      else if (!png_memcmp(chunk_name, png_iCCP, 4))
          png_handle_iCCP(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_sPLT_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_sPLT, 4))
+      else if (!png_memcmp(chunk_name, png_sPLT, 4))
          png_handle_sPLT(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_tEXt_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_tEXt, 4))
+      else if (!png_memcmp(chunk_name, png_tEXt, 4))
          png_handle_tEXt(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_tIME_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_tIME, 4))
+      else if (!png_memcmp(chunk_name, png_tIME, 4))
          png_handle_tIME(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_tRNS_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_tRNS, 4))
+      else if (!png_memcmp(chunk_name, png_tRNS, 4))
          png_handle_tRNS(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_zTXt_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_zTXt, 4))
+      else if (!png_memcmp(chunk_name, png_zTXt, 4))
          png_handle_zTXt(png_ptr, info_ptr, length);
 #endif
 #if defined(PNG_READ_iTXt_SUPPORTED)
-      else if (!png_memcmp(png_ptr->chunk_name, png_iTXt, 4))
+      else if (!png_memcmp(chunk_name, png_iTXt, 4))
          png_handle_iTXt(png_ptr, info_ptr, length);
 #endif
       else
@@ -1215,7 +1193,7 @@
     * being used again.
     */
 #ifdef PNG_SETJMP_SUPPORTED
-   png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof (jmp_buf));
+   png_memcpy(tmp_jmp, png_ptr->jmpbuf, sizeof(jmp_buf));
 #endif
 
    error_fn = png_ptr->error_fn;
@@ -1225,7 +1203,7 @@
    free_fn = png_ptr->free_fn;
 #endif
 
-   png_memset(png_ptr, 0, png_sizeof (png_struct));
+   png_memset(png_ptr, 0, sizeof(png_struct));
 
    png_ptr->error_fn = error_fn;
    png_ptr->warning_fn = warning_fn;
@@ -1235,7 +1213,7 @@
 #endif
 
 #ifdef PNG_SETJMP_SUPPORTED
-   png_memcpy(png_ptr->jmpbuf, tmp_jmp, png_sizeof (jmp_buf));
+   png_memcpy(png_ptr->jmpbuf, tmp_jmp, sizeof(jmp_buf));
 #endif
 
 }
@@ -1267,7 +1245,7 @@
     * PNG file before the first IDAT (image data chunk).
     */
    png_read_info(png_ptr, info_ptr);
-   if (info_ptr->height > PNG_UINT_32_MAX/png_sizeof(png_bytep))
+   if (info_ptr->height > PNG_UINT_32_MAX/sizeof(png_bytep))
       png_error(png_ptr,"Image is too high to process with png_read_png()");
 
    /* -------------- image transformations start here ------------------- */
@@ -1378,7 +1356,7 @@
    if(info_ptr->row_pointers == NULL)
    {
       info_ptr->row_pointers = (png_bytepp)png_malloc(png_ptr,
-         info_ptr->height * png_sizeof(png_bytep));
+         info_ptr->height * sizeof(png_bytep));
 #ifdef PNG_FREE_ME_SUPPORTED
       info_ptr->free_me |= PNG_FREE_ROWS;
 #endif
diff --git a/pngrio.c b/pngrio.c
index e39ef80..7473579 100644
--- a/pngrio.c
+++ b/pngrio.c
@@ -16,7 +16,7 @@
  */
 
 #include "png.h"
-#include "pngintrn.h"
+#include "pngpriv.h"
 
 #if defined(PNG_READ_SUPPORTED)
 
@@ -49,8 +49,7 @@
    /* fread() returns 0 on error, so it is OK to store this in a png_size_t
     * instead of an int, which is what fread() actually returns.
     */
-   check = (png_size_t)fread(data, (png_size_t)1, length,
-      (png_FILE_p)png_ptr->io_ptr);
+   check = fread(data, 1, length, (png_FILE_p)png_ptr->io_ptr);
 
    if (check != length)
       png_error(png_ptr, "Read Error");
@@ -67,7 +66,7 @@
 static void PNGAPI
 png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
 {
-   int check;
+   png_size_t check;
    png_byte *n_data;
    png_FILE_p io_ptr;
 
@@ -87,7 +86,7 @@
       do
       {
          read = MIN(NEAR_BUF_SIZE, remaining);
-         err = fread(buf, (png_size_t)1, read, io_ptr);
+         err = fread(buf, 1, read, io_ptr);
          png_memcpy(data, buf, read); /* copy far buffer to near buffer */
          if(err != read)
             break;
@@ -139,7 +138,7 @@
       png_warning(png_ptr,
          "It's an error to set both read_data_fn and write_data_fn in the ");
       png_warning(png_ptr,
-         "same structure.  Resetting write_data_fn to NULL.");
+         "same structure.  Resetting write_data_fn to NULL");
    }
 
 #if defined(PNG_WRITE_FLUSH_SUPPORTED)
diff --git a/pngrtran.c b/pngrtran.c
index be33ee7..3f86232 100644
--- a/pngrtran.c
+++ b/pngrtran.c
@@ -14,7 +14,7 @@
  */
 
 #include "png.h"
-#include "pngintrn.h"
+#include "pngpriv.h"
 
 #if defined(PNG_READ_SUPPORTED)
 
@@ -38,7 +38,7 @@
                            PNG_FLAG_CRC_CRITICAL_IGNORE;
          break;
       case PNG_CRC_WARN_DISCARD:    /* not a valid action for critical data */
-         png_warning(png_ptr, "Can't discard critical data on CRC error.");
+         png_warning(png_ptr, "Can't discard critical data on CRC error");
       case PNG_CRC_ERROR_QUIT:                                /* error/quit */
       case PNG_CRC_DEFAULT:
       default:
@@ -87,8 +87,7 @@
    }
 
    png_ptr->transformations |= PNG_BACKGROUND;
-   png_memcpy(&(png_ptr->background), background_color,
-      png_sizeof(png_color_16));
+   png_memcpy(&(png_ptr->background), background_color, sizeof(png_color_16));
    png_ptr->background_gamma = (float)background_gamma;
    png_ptr->background_gamma_type = (png_byte)(background_gamma_code);
    png_ptr->transformations |= (need_expand ? PNG_BACKGROUND_EXPAND : 0);
@@ -157,7 +156,7 @@
       int i;
 
       png_ptr->dither_index = (png_bytep)png_malloc(png_ptr,
-         (png_uint_32)(num_palette * png_sizeof (png_byte)));
+         (png_size_t)(num_palette * sizeof(png_byte)));
       for (i = 0; i < num_palette; i++)
          png_ptr->dither_index[i] = (png_byte)i;
    }
@@ -173,7 +172,7 @@
 
          /* initialize an array to sort colors */
          png_ptr->dither_sort = (png_bytep)png_malloc(png_ptr,
-            (png_uint_32)(num_palette * png_sizeof (png_byte)));
+            (png_size_t)(num_palette * sizeof(png_byte)));
 
          /* initialize the dither_sort array */
          for (i = 0; i < num_palette; i++)
@@ -302,9 +301,9 @@
 
          /* initialize palette index arrays */
          png_ptr->index_to_palette = (png_bytep)png_malloc(png_ptr,
-            (png_uint_32)(num_palette * png_sizeof (png_byte)));
+            (png_size_t)(num_palette * sizeof(png_byte)));
          png_ptr->palette_to_index = (png_bytep)png_malloc(png_ptr,
-            (png_uint_32)(num_palette * png_sizeof (png_byte)));
+            (png_size_t)(num_palette * sizeof(png_byte)));
 
          /* initialize the sort array */
          for (i = 0; i < num_palette; i++)
@@ -313,11 +312,11 @@
             png_ptr->palette_to_index[i] = (png_byte)i;
          }
 
-         hash = (png_dsortpp)png_malloc(png_ptr, (png_uint_32)(769 *
-            png_sizeof (png_dsortp)));
+         hash = (png_dsortpp)png_malloc(png_ptr,
+            (png_size_t)(769 * sizeof(png_dsortp)));
          for (i = 0; i < 769; i++)
             hash[i] = NULL;
-/*         png_memset(hash, 0, 769 * png_sizeof (png_dsortp)); */
+/*         png_memset(hash, 0, 769 * sizeof(png_dsortp)); */
 
          num_new_palette = num_palette;
 
@@ -347,7 +346,7 @@
                   {
 
                      t = (png_dsortp)png_malloc_warn(png_ptr,
-                         (png_uint_32)(png_sizeof(png_dsort)));
+                         sizeof(png_dsort));
                      if (t == NULL)
                          break;
                      t->next = hash[d];
@@ -464,16 +463,14 @@
       int num_blue = (1 << PNG_DITHER_BLUE_BITS);
       png_size_t num_entries = ((png_size_t)1 << total_bits);
 
-      png_ptr->palette_lookup = (png_bytep )png_malloc(png_ptr,
-         (png_uint_32)(num_entries * png_sizeof (png_byte)));
+      png_ptr->palette_lookup = (png_bytep)png_malloc(png_ptr,
+         num_entries * sizeof(png_byte));
 
-      png_memset(png_ptr->palette_lookup, 0, num_entries *
-         png_sizeof (png_byte));
+      png_memset(png_ptr->palette_lookup, 0, num_entries * sizeof(png_byte));
 
-      distance = (png_bytep)png_malloc(png_ptr, (png_uint_32)(num_entries *
-         png_sizeof(png_byte)));
+      distance = (png_bytep)png_malloc(png_ptr, num_entries * sizeof(png_byte));
 
-      png_memset(distance, 0xff, num_entries * png_sizeof(png_byte));
+      png_memset(distance, 0xff, num_entries * sizeof(png_byte));
 
       for (i = 0; i < num_palette; i++)
       {
@@ -639,7 +636,7 @@
       png_ptr->transformations |= PNG_EXPAND;
 #else
    {
-      png_warning(png_ptr, "Cannot do RGB_TO_GRAY without EXPAND_SUPPORTED.");
+      png_warning(png_ptr, "Cannot do RGB_TO_GRAY without EXPAND_SUPPORTED");
       png_ptr->transformations &= ~PNG_RGB_TO_GRAY;
    }
 #endif
@@ -3944,8 +3941,7 @@
      else
         g = 1.0;
 
-     png_ptr->gamma_table = (png_bytep)png_malloc(png_ptr,
-        (png_uint_32)256);
+     png_ptr->gamma_table = (png_bytep)png_malloc(png_ptr, 256);
 
      for (i = 0; i < 256; i++)
      {
@@ -3960,8 +3956,7 @@
 
         g = 1.0 / (png_ptr->gamma);
 
-        png_ptr->gamma_to_1 = (png_bytep)png_malloc(png_ptr,
-           (png_uint_32)256);
+        png_ptr->gamma_to_1 = (png_bytep)png_malloc(png_ptr, 256);
 
         for (i = 0; i < 256; i++)
         {
@@ -3970,8 +3965,7 @@
         }
 
 
-        png_ptr->gamma_from_1 = (png_bytep)png_malloc(png_ptr,
-           (png_uint_32)256);
+        png_ptr->gamma_from_1 = (png_bytep)png_malloc(png_ptr, 256);
 
         if(png_ptr->screen_gamma > 0.000001)
            g = 1.0 / png_ptr->screen_gamma;
@@ -4033,7 +4027,7 @@
         g = 1.0;
 
      png_ptr->gamma_16_table = (png_uint_16pp)png_malloc(png_ptr,
-        (png_uint_32)(num * png_sizeof (png_uint_16p)));
+        (png_size_t)(num * sizeof(png_uint_16p)));
 
      if (png_ptr->transformations & (PNG_16_TO_8 | PNG_BACKGROUND))
      {
@@ -4043,7 +4037,7 @@
         for (i = 0; i < num; i++)
         {
            png_ptr->gamma_16_table[i] = (png_uint_16p)png_malloc(png_ptr,
-              (png_uint_32)(256 * png_sizeof (png_uint_16)));
+              256 * sizeof(png_uint_16));
         }
 
         g = 1.0 / g;
@@ -4073,7 +4067,7 @@
         for (i = 0; i < num; i++)
         {
            png_ptr->gamma_16_table[i] = (png_uint_16p)png_malloc(png_ptr,
-              (png_uint_32)(256 * png_sizeof (png_uint_16)));
+              256 * sizeof(png_uint_16));
 
            ig = (((png_uint_32)i * (png_uint_32)png_gamma_shift[shift]) >> 4);
            for (j = 0; j < 256; j++)
@@ -4093,12 +4087,12 @@
         g = 1.0 / (png_ptr->gamma);
 
         png_ptr->gamma_16_to_1 = (png_uint_16pp)png_malloc(png_ptr,
-           (png_uint_32)(num * png_sizeof (png_uint_16p )));
+           (png_size_t)(num * sizeof(png_uint_16p)));
 
         for (i = 0; i < num; i++)
         {
            png_ptr->gamma_16_to_1[i] = (png_uint_16p)png_malloc(png_ptr,
-              (png_uint_32)(256 * png_sizeof (png_uint_16)));
+              256 * sizeof(png_uint_16));
 
            ig = (((png_uint_32)i *
               (png_uint_32)png_gamma_shift[shift]) >> 4);
@@ -4116,12 +4110,12 @@
            g = png_ptr->gamma;   /* probably doing rgb_to_gray */
 
         png_ptr->gamma_16_from_1 = (png_uint_16pp)png_malloc(png_ptr,
-           (png_uint_32)(num * png_sizeof (png_uint_16p)));
+           (png_size_t)(num * sizeof(png_uint_16p)));
 
         for (i = 0; i < num; i++)
         {
            png_ptr->gamma_16_from_1[i] = (png_uint_16p)png_malloc(png_ptr,
-              (png_uint_32)(256 * png_sizeof (png_uint_16)));
+              256 * sizeof(png_uint_16));
 
            ig = (((png_uint_32)i *
               (png_uint_32)png_gamma_shift[shift]) >> 4);
diff --git a/pngrutil.c b/pngrutil.c
index 4a09c7f..b107895 100644
--- a/pngrutil.c
+++ b/pngrutil.c
@@ -12,7 +12,7 @@
  */
 
 #include "png.h"
-#include "pngintrn.h"
+#include "pngpriv.h"
 
 #if defined(PNG_READ_SUPPORTED)
 
@@ -29,7 +29,7 @@
       (png_uint_32)(*(buf + 3));
 #endif
    if (i > PNG_UINT_31_MAX)
-     png_error(png_ptr, "PNG unsigned integer out of range.");
+     png_error(png_ptr, "PNG unsigned integer out of range");
    return (i);
 }
 #ifndef PNG_READ_BIG_ENDIAN_SUPPORTED
@@ -72,7 +72,47 @@
 }
 #endif /* PNG_READ_BIG_ENDIAN_SUPPORTED */
 
-/* Read data, and (optionally) run it through the CRC. */
+/* Read the chunk header (length + type name).
+ * Put the type name into png_ptr->chunk_name, and return the length.
+ */
+png_uint_32 /* PRIVATE */
+png_read_chunk_header(png_structp png_ptr)
+{
+   png_byte buf[8];
+   png_uint_32 length;
+
+#ifdef PNG_IO_STATE_SUPPORTED
+   /* Inform the I/O callback that the chunk header is being read.
+    * PNG_IO_CHUNK_HDR requires a single I/O call.
+    */
+   png_ptr->io_state = PNG_IO_READING | PNG_IO_CHUNK_HDR;
+#endif
+
+   /* read the length and the chunk name */
+   png_read_data(png_ptr, buf, 8);
+   length = png_get_uint_31(png_ptr, buf);
+
+   /* put the chunk name into png_ptr->chunk_name */
+   png_memcpy(png_ptr->chunk_name, buf + 4, 4);
+
+   png_debug2(0, "Reading %s chunk, length = %lu\n",
+      png_ptr->chunk_name, length);
+
+   /* reset the crc and run it over the chunk name */
+   png_reset_crc(png_ptr);
+   png_calculate_crc(png_ptr, png_ptr->chunk_name, 4);
+
+#ifdef PNG_IO_STATE_SUPPORTED
+   /* Inform the I/O callback that chunk data will (possibly) be read.
+    * PNG_IO_CHUNK_DATA does NOT require a specific number of I/O calls.
+    */
+   png_ptr->io_state = PNG_IO_READING | PNG_IO_CHUNK_DATA;
+#endif
+
+   return length;
+}
+
+/* Read data and run it through the CRC. */
 void /* PRIVATE */
 png_crc_read(png_structp png_ptr, png_bytep buf, png_size_t length)
 {
@@ -94,16 +134,16 @@
    {
       png_crc_read(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size);
    }
-   if (i)
+   if (i > 0)
    {
       png_crc_read(png_ptr, png_ptr->zbuf, i);
    }
 
    if (png_crc_error(png_ptr))
    {
-      if (((png_ptr->chunk_name[0] & 0x20) &&                /* Ancillary */
+      if (((png_ptr->chunk_name[0] & 0x20) &&               /* Ancillary */
            !(png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN)) ||
-          (!(png_ptr->chunk_name[0] & 0x20) &&             /* Critical  */
+          (!(png_ptr->chunk_name[0] & 0x20) &&              /* Critical  */
           (png_ptr->flags & PNG_FLAG_CRC_CRITICAL_USE)))
       {
          png_chunk_warning(png_ptr, "CRC error");
@@ -140,6 +180,11 @@
          need_crc = 0;
    }
 
+#ifdef PNG_IO_STATE_SUPPORTED
+   /* inform the I/O callback that the chunk CRC is being read */
+   /* PNG_IO_CHUNK_CRC requires the I/O to be done at once */
+   png_ptr->io_state = PNG_IO_READING | PNG_IO_CHUNK_CRC;
+#endif
    png_read_data(png_ptr, crc_bytes, 4);
 
    if (need_crc)
@@ -194,7 +239,7 @@
 
             if (text ==  NULL)
             {
-               text_size = prefix_size + png_sizeof(msg) + 1;
+               text_size = prefix_size + sizeof(msg) + 1;
                text = (png_charp)png_malloc_warn(png_ptr, text_size);
                if (text ==  NULL)
                  {
@@ -208,8 +253,8 @@
 
             /* Copy what we can of the error message into the text chunk */
             text_size = (png_size_t)(chunklength - (text - chunkdata) - 1);
-            text_size = png_sizeof(msg) > text_size ? text_size :
-               png_sizeof(msg);
+            if (text_size > sizeof(msg))
+               text_size = sizeof(msg);
             png_memcpy(text + prefix_size, msg, text_size + 1);
             break;
          }
@@ -221,10 +266,10 @@
                    png_ptr->zbuf_size - png_ptr->zstream.avail_out;
                text = (png_charp)png_malloc_warn(png_ptr, text_size + 1);
                if (text ==  NULL)
-                 {
-                    png_free(png_ptr,chunkdata);
-                    png_error(png_ptr,"Not enough memory to decompress chunk.");
-                 }
+               {
+                  png_free(png_ptr,chunkdata);
+                  png_error(png_ptr, "Not enough memory to decompress chunk");
+               }
                png_memcpy(text + prefix_size, png_ptr->zbuf,
                     text_size - prefix_size);
                png_memcpy(text, chunkdata, prefix_size);
@@ -236,13 +281,13 @@
 
                tmp = text;
                text = (png_charp)png_malloc_warn(png_ptr,
-                  (png_uint_32)(text_size +
+                  (png_size_t)(text_size +
                   png_ptr->zbuf_size - png_ptr->zstream.avail_out + 1));
                if (text == NULL)
                {
                   png_free(png_ptr, tmp);
                   png_free(png_ptr, chunkdata);
-                  png_error(png_ptr,"Not enough memory to decompress chunk..");
+                  png_error(png_ptr,"Not enough memory to decompress chunk");
                }
                png_memcpy(text, tmp, text_size);
                png_free(png_ptr, tmp);
@@ -286,7 +331,7 @@
             if (text == NULL)
               {
                 png_free(png_ptr, chunkdata);
-                png_error(png_ptr,"Not enough memory for text.");
+                png_error(png_ptr, "Not enough memory for text");
               }
             png_memcpy(text, chunkdata, prefix_size);
          }
@@ -385,7 +430,7 @@
    png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth,png_ptr->width);
    png_debug1(3,"bit_depth = %d\n", png_ptr->bit_depth);
    png_debug1(3,"channels = %d\n", png_ptr->channels);
-   png_debug1(3,"rowbytes = %lu\n", (unsigned long) png_ptr->rowbytes);
+   png_debug1(3, "rowbytes = %lu\n", (unsigned long) png_ptr->rowbytes);
    png_set_IHDR(png_ptr, info_ptr, width, height, bit_depth,
       color_type, interlace_type, compression_type, filter_type);
 }
@@ -1044,7 +1089,7 @@
    if(profile_size > profile_length)
    {
       png_free(png_ptr, chunkdata);
-      png_warning(png_ptr, "Ignoring truncated iCCP profile.");
+      png_warning(png_ptr, "Ignoring truncated iCCP profile");
       return;
    }
 
@@ -1126,14 +1171,14 @@
    }
 
    new_palette.nentries = (png_int_32) ( data_length / entry_size);
-   if ((png_uint_32) new_palette.nentries > (png_uint_32) (PNG_SIZE_MAX /
-       png_sizeof(png_sPLT_entry)))
+   if ((png_uint_32) new_palette.nentries >
+       (png_uint_32) (PNG_SIZE_MAX / sizeof(png_sPLT_entry)))
    {
        png_warning(png_ptr, "sPLT chunk too long");
        return;
    }
    new_palette.entries = (png_sPLT_entryp)png_malloc_warn(
-       png_ptr, new_palette.nentries * png_sizeof(png_sPLT_entry));
+       png_ptr, new_palette.nentries * sizeof(png_sPLT_entry));
    if (new_palette.entries == NULL)
    {
        png_warning(png_ptr, "sPLT chunk requires too much memory");
@@ -1550,7 +1595,7 @@
    purpose = (png_charp)png_malloc_warn(png_ptr, length + 1);
    if (purpose == NULL)
      {
-       png_warning(png_ptr, "No memory for pCAL purpose.");
+       png_warning(png_ptr, "No memory for pCAL purpose");
        return;
      }
    slength = (png_size_t)length;
@@ -1607,12 +1652,12 @@
       /* Empty loop to move past the units string. */ ;
 
    png_debug(3, "Allocating pCAL parameters array\n");
-   params = (png_charpp)png_malloc_warn(png_ptr, (png_uint_32)(nparams
-      *png_sizeof(png_charp))) ;
+   params = (png_charpp)png_malloc_warn(png_ptr,
+      (png_size_t)(nparams * sizeof(png_charp)));
    if (params == NULL)
      {
        png_free(png_ptr, purpose);
-       png_warning(png_ptr, "No memory for pCAL params.");
+       png_warning(png_ptr, "No memory for pCAL params");
        return;
      }
 
@@ -1708,11 +1753,11 @@
 #ifdef PNG_FIXED_POINT_SUPPORTED
    swidth = (png_charp)png_malloc_warn(png_ptr, png_strlen(ep) + 1);
    if (swidth == NULL)
-     {
-       png_warning(png_ptr, "Out of memory while processing sCAL chunk width");
-       return;
-     }
-   png_memcpy(swidth, ep, (png_size_t)png_strlen(ep));
+   {
+      png_warning(png_ptr, "Out of memory while processing sCAL chunk width");
+      return;
+   }
+   png_memcpy(swidth, ep, png_strlen(ep));
 #endif
 #endif
 
@@ -1731,11 +1776,11 @@
 #ifdef PNG_FIXED_POINT_SUPPORTED
    sheight = (png_charp)png_malloc_warn(png_ptr, png_strlen(ep) + 1);
    if (swidth == NULL)
-     {
-       png_warning(png_ptr, "Out of memory while processing sCAL chunk height");
-       return;
-     }
-   png_memcpy(sheight, ep, (png_size_t)png_strlen(ep));
+   {
+      png_warning(png_ptr, "Out of memory while processing sCAL chunk height");
+      return;
+   }
+   png_memcpy(sheight, ep, png_strlen(ep));
 #endif
 #endif
 
@@ -1846,7 +1891,7 @@
    key = (png_charp)png_malloc_warn(png_ptr, length + 1);
    if (key == NULL)
    {
-     png_warning(png_ptr, "No memory to process text chunk.");
+     png_warning(png_ptr, "No memory to process text chunk");
      return;
    }
    slength = (png_size_t)length;
@@ -1866,11 +1911,10 @@
    if (text != key + slength)
       text++;
 
-   text_ptr = (png_textp)png_malloc_warn(png_ptr,
-      (png_uint_32)png_sizeof(png_text));
+   text_ptr = (png_textp)png_malloc_warn(png_ptr, sizeof(png_text));
    if (text_ptr == NULL)
    {
-     png_warning(png_ptr, "Not enough memory to process text chunk.");
+     png_warning(png_ptr, "Not enough memory to process text chunk");
      png_free(png_ptr, key);
      return;
    }
@@ -1889,7 +1933,7 @@
    png_free(png_ptr, key);
    png_free(png_ptr, text_ptr);
    if (ret)
-     png_warning(png_ptr, "Insufficient memory to process text chunk.");
+     png_warning(png_ptr, "Insufficient memory to process text chunk");
 }
 #endif
 
@@ -1926,7 +1970,7 @@
    chunkdata = (png_charp)png_malloc_warn(png_ptr, length + 1);
    if (chunkdata == NULL)
    {
-     png_warning(png_ptr,"Out of memory processing zTXt chunk.");
+     png_warning(png_ptr,"Out of memory processing zTXt chunk");
      return;
    }
    slength = (png_size_t)length;
@@ -1963,11 +2007,10 @@
    chunkdata = (png_charp)png_decompress_chunk(png_ptr, comp_type, chunkdata,
                                     (png_size_t)length, prefix_len, &data_len);
 
-   text_ptr = (png_textp)png_malloc_warn(png_ptr,
-     (png_uint_32)png_sizeof(png_text));
+   text_ptr = (png_textp)png_malloc_warn(png_ptr, sizeof(png_text));
    if (text_ptr == NULL)
    {
-     png_warning(png_ptr,"Not enough memory to process zTXt chunk.");
+     png_warning(png_ptr,"Not enough memory to process zTXt chunk");
      png_free(png_ptr, chunkdata);
      return;
    }
@@ -1986,7 +2029,7 @@
    png_free(png_ptr, text_ptr);
    png_free(png_ptr, chunkdata);
    if (ret)
-     png_error(png_ptr, "Insufficient memory to store zTXt chunk.");
+     png_error(png_ptr, "Insufficient memory to store zTXt chunk");
 }
 #endif
 
@@ -2025,7 +2068,7 @@
    chunkdata = (png_charp)png_malloc_warn(png_ptr, length + 1);
    if (chunkdata == NULL)
    {
-     png_warning(png_ptr, "No memory to process iTXt chunk.");
+     png_warning(png_ptr, "No memory to process iTXt chunk");
      return;
    }
    slength = (png_size_t)length;
@@ -2073,11 +2116,10 @@
           (size_t)length, prefix_len, &data_len);
    else
        data_len=png_strlen(chunkdata + prefix_len);
-   text_ptr = (png_textp)png_malloc_warn(png_ptr,
-      (png_uint_32)png_sizeof(png_text));
+   text_ptr = (png_textp)png_malloc_warn(png_ptr, sizeof(png_text));
    if (text_ptr == NULL)
    {
-     png_warning(png_ptr,"Not enough memory to process iTXt chunk.");
+     png_warning(png_ptr,"Not enough memory to process iTXt chunk");
      png_free(png_ptr, chunkdata);
      return;
    }
@@ -2094,7 +2136,7 @@
    png_free(png_ptr, text_ptr);
    png_free(png_ptr, chunkdata);
    if (ret)
-     png_error(png_ptr, "Insufficient memory to store iTXt chunk.");
+     png_error(png_ptr, "Insufficient memory to store iTXt chunk");
 }
 #endif
 
@@ -2800,7 +2842,7 @@
    if (png_ptr->interlaced)
    {
       png_ptr->row_number = 0;
-      png_memset_check(png_ptr, png_ptr->prev_row, 0, png_ptr->rowbytes + 1);
+      png_memset(png_ptr->prev_row, 0, png_ptr->rowbytes + 1);
       do
       {
          png_ptr->pass++;
@@ -2855,7 +2897,7 @@
                png_ptr->idat_size = png_get_uint_31(png_ptr, chunk_length);
                png_reset_crc(png_ptr);
                png_crc_read(png_ptr, png_ptr->chunk_name, 4);
-               if (png_memcmp(png_ptr->chunk_name, (png_bytep)png_IDAT, 4))
+               if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4))
                   png_error(png_ptr, "Not enough image data");
 
             }
@@ -2882,7 +2924,7 @@
 
          if (!(png_ptr->zstream.avail_out))
          {
-            png_warning(png_ptr, "Extra compressed data.");
+            png_warning(png_ptr, "Extra compressed data");
             png_ptr->mode |= PNG_AFTER_IDAT;
             png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED;
             break;
@@ -2920,7 +2962,7 @@
 #endif
 
    int max_pixel_depth;
-   png_uint_32 row_bytes;
+   png_size_t row_bytes;
 
    png_debug(1, "in png_read_start_row\n");
    png_ptr->zstream.avail_in = 0;
@@ -2937,12 +2979,8 @@
          png_pass_inc[png_ptr->pass] - 1 -
          png_pass_start[png_ptr->pass]) /
          png_pass_inc[png_ptr->pass];
-
-         row_bytes = PNG_ROWBYTES(png_ptr->pixel_depth,png_ptr->iwidth) + 1;
-
-         png_ptr->irowbytes = (png_size_t)row_bytes;
-         if((png_uint_32)png_ptr->irowbytes != row_bytes)
-            png_error(png_ptr, "Rowbytes overflow in png_read_start_row");
+         png_ptr->irowbytes =
+            PNG_ROWBYTES(png_ptr->pixel_depth, png_ptr->iwidth) + 1;
    }
    else
    {
@@ -3074,11 +3112,10 @@
       png_error(png_ptr, "This image requires a row greater than 64KB");
 #endif
    if ((png_uint_32)png_ptr->rowbytes > PNG_SIZE_MAX - 1)
-      png_error(png_ptr, "Row has too many bytes to allocate in memory.");
-   png_ptr->prev_row = (png_bytep)png_malloc(png_ptr, (png_uint_32)(
-      png_ptr->rowbytes + 1));
+      png_error(png_ptr, "Row has too many bytes to allocate in memory");
+   png_ptr->prev_row = (png_bytep)png_malloc(png_ptr, png_ptr->rowbytes + 1);
 
-   png_memset_check(png_ptr, png_ptr->prev_row, 0, png_ptr->rowbytes + 1);
+   png_memset(png_ptr->prev_row, 0, png_ptr->rowbytes + 1);
 
    png_debug1(3, "width = %lu,\n", (unsigned long) png_ptr->width);
    png_debug1(3, "height = %lu,\n", (unsigned long) png_ptr->height);
diff --git a/pngset.c b/pngset.c
index a23b1c3..ecef521 100644
--- a/pngset.c
+++ b/pngset.c
@@ -14,7 +14,7 @@
  */
 
 #include "png.h"
-#include "pngintrn.h"
+#include "pngpriv.h"
 
 #if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
 
@@ -26,7 +26,7 @@
    if (png_ptr == NULL || info_ptr == NULL)
       return;
 
-   png_memcpy(&(info_ptr->background), background, png_sizeof(png_color_16));
+   png_memcpy(&(info_ptr->background), background, sizeof(png_color_16));
    info_ptr->valid |= PNG_INFO_bKGD;
 }
 #endif
@@ -226,7 +226,7 @@
        > PNG_MAX_PALETTE_LENGTH)
    {
        png_warning(png_ptr,
-          "Invalid palette size, hIST allocation skipped.");
+          "Invalid palette size, hIST allocation skipped");
        return;
    }
 
@@ -236,10 +236,10 @@
    /* Changed from info->num_palette to PNG_MAX_PALETTE_LENGTH in version
       1.2.1 */
    png_ptr->hist = (png_uint_16p)png_malloc_warn(png_ptr,
-      (png_uint_32)(PNG_MAX_PALETTE_LENGTH * png_sizeof (png_uint_16)));
+      PNG_MAX_PALETTE_LENGTH * sizeof(png_uint_16));
    if (png_ptr->hist == NULL)
      {
-       png_warning(png_ptr, "Insufficient memory for hIST chunk data.");
+       png_warning(png_ptr, "Insufficient memory for hIST chunk data");
        return;
      }
 
@@ -353,13 +353,13 @@
    info_ptr->pixel_depth = (png_byte)(info_ptr->channels * info_ptr->bit_depth);
 
    /* check for potential overflow */
-   if ( width > (PNG_UINT_32_MAX
+   if (width > (PNG_UINT_32_MAX
                  >> 3)      /* 8-byte RGBA pixels */
                  - 64       /* bigrowbuf hack */
                  - 1        /* filter byte */
                  - 7*8      /* rounding of width to multiple of 8 pixels */
                  - 8)       /* extra max_pixel_depth pad */
-      info_ptr->rowbytes = (png_size_t)0;
+      info_ptr->rowbytes = 0;
    else
       info_ptr->rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth,width);
 }
@@ -386,7 +386,7 @@
    png_charp purpose, png_int_32 X0, png_int_32 X1, int type, int nparams,
    png_charp units, png_charpp params)
 {
-   png_uint_32 length;
+   png_size_t length;
    int i;
 
    png_debug1(1, "in %s storage function\n", "pCAL");
@@ -398,11 +398,11 @@
      (unsigned long) length);
    info_ptr->pcal_purpose = (png_charp)png_malloc_warn(png_ptr, length);
    if (info_ptr->pcal_purpose == NULL)
-     {
-       png_warning(png_ptr, "Insufficient memory for pCAL purpose.");
-       return;
-     }
-   png_memcpy(info_ptr->pcal_purpose, purpose, (png_size_t)length);
+   {
+      png_warning(png_ptr, "Insufficient memory for pCAL purpose");
+      return;
+   }
+   png_memcpy(info_ptr->pcal_purpose, purpose, length);
 
    png_debug(3, "storing X0, X1, type, and nparams in info\n");
    info_ptr->pcal_X0 = X0;
@@ -415,19 +415,19 @@
      (unsigned long)length);
    info_ptr->pcal_units = (png_charp)png_malloc_warn(png_ptr, length);
    if (info_ptr->pcal_units == NULL)
-     {
-       png_warning(png_ptr, "Insufficient memory for pCAL units.");
-       return;
-     }
-   png_memcpy(info_ptr->pcal_units, units, (png_size_t)length);
+   {
+      png_warning(png_ptr, "Insufficient memory for pCAL units");
+      return;
+   }
+   png_memcpy(info_ptr->pcal_units, units, length);
 
    info_ptr->pcal_params = (png_charpp)png_malloc_warn(png_ptr,
-      (png_uint_32)((nparams + 1) * png_sizeof(png_charp)));
+      (png_size_t)((nparams + 1) * sizeof(png_charp)));
    if (info_ptr->pcal_params == NULL)
-     {
-       png_warning(png_ptr, "Insufficient memory for pCAL params.");
-       return;
-     }
+   {
+      png_warning(png_ptr, "Insufficient memory for pCAL params");
+      return;
+   }
 
    info_ptr->pcal_params[nparams] = NULL;
 
@@ -438,11 +438,11 @@
         (unsigned long) length);
       info_ptr->pcal_params[i] = (png_charp)png_malloc_warn(png_ptr, length);
       if (info_ptr->pcal_params[i] == NULL)
-        {
-          png_warning(png_ptr, "Insufficient memory for pCAL parameter.");
-          return;
-        }
-      png_memcpy(info_ptr->pcal_params[i], params[i], (png_size_t)length);
+      {
+         png_warning(png_ptr, "Insufficient memory for pCAL parameter");
+         return;
+      }
+      png_memcpy(info_ptr->pcal_params[i], params[i], length);
    }
 
    info_ptr->valid |= PNG_INFO_pCAL;
@@ -474,7 +474,7 @@
 png_set_sCAL_s(png_structp png_ptr, png_infop info_ptr,
              int unit, png_charp swidth, png_charp sheight)
 {
-   png_uint_32 length;
+   png_size_t length;
 
    png_debug1(1, "in %s storage function\n", "sCAL");
    if (png_ptr == NULL || info_ptr == NULL)
@@ -483,23 +483,25 @@
    info_ptr->scal_unit = (png_byte)unit;
 
    length = png_strlen(swidth) + 1;
-   png_debug1(3, "allocating unit for info (%d bytes)\n", length);
+   png_debug1(3, "allocating unit for info (%u bytes)\n",
+      (unsigned int)length);
    info_ptr->scal_s_width = (png_charp)png_malloc_warn(png_ptr, length);
    if (info_ptr->scal_s_width == NULL)
    {
-      png_warning(png_ptr, "Memory allocation failed while processing sCAL.");
+      png_warning(png_ptr, "Memory allocation failed while processing sCAL");
    }
-   png_memcpy(info_ptr->scal_s_width, swidth, (png_size_t)length);
+   png_memcpy(info_ptr->scal_s_width, swidth, length);
 
    length = png_strlen(sheight) + 1;
-   png_debug1(3, "allocating unit for info (%d bytes)\n", length);
+   png_debug1(3, "allocating unit for info (%u bytes)\n",
+      (unsigned int)length);
    info_ptr->scal_s_height = (png_charp)png_malloc_warn(png_ptr, length);
    if (info_ptr->scal_s_height == NULL)
    {
       png_free (png_ptr, info_ptr->scal_s_width);
-      png_warning(png_ptr, "Memory allocation failed while processing sCAL.");
+      png_warning(png_ptr, "Memory allocation failed while processing sCAL");
    }
-   png_memcpy(info_ptr->scal_s_height, sheight, (png_size_t)length);
+   png_memcpy(info_ptr->scal_s_height, sheight, length);
 
    info_ptr->valid |= PNG_INFO_sCAL;
 #ifdef PNG_FREE_ME_SUPPORTED
@@ -559,10 +561,10 @@
       of num_palette entries,
       in case of an invalid PNG file that has too-large sample values. */
    png_ptr->palette = (png_colorp)png_malloc(png_ptr,
-      PNG_MAX_PALETTE_LENGTH * png_sizeof(png_color));
+      PNG_MAX_PALETTE_LENGTH * sizeof(png_color));
    png_memset(png_ptr->palette, 0, PNG_MAX_PALETTE_LENGTH *
-      png_sizeof(png_color));
-   png_memcpy(png_ptr->palette, palette, num_palette * png_sizeof (png_color));
+      sizeof(png_color));
+   png_memcpy(png_ptr->palette, palette, num_palette * sizeof(png_color));
    info_ptr->palette = png_ptr->palette;
    info_ptr->num_palette = png_ptr->num_palette = (png_uint_16)num_palette;
 
@@ -584,7 +586,7 @@
    if (png_ptr == NULL || info_ptr == NULL)
       return;
 
-   png_memcpy(&(info_ptr->sig_bit), sig_bit, png_sizeof (png_color_8));
+   png_memcpy(&(info_ptr->sig_bit), sig_bit, sizeof(png_color_8));
    info_ptr->valid |= PNG_INFO_sBIT;
 }
 #endif
@@ -688,7 +690,7 @@
    new_iccp_name = (png_charp)png_malloc_warn(png_ptr, png_strlen(name)+1);
    if (new_iccp_name == NULL)
    {
-      png_warning(png_ptr, "Insufficient memory to process iCCP chunk.");
+      png_warning(png_ptr, "Insufficient memory to process iCCP chunk");
       return;
    }
    png_strcpy(new_iccp_name, name);
@@ -696,7 +698,7 @@
    if (new_iccp_profile == NULL)
    {
       png_free (png_ptr, new_iccp_name);
-      png_warning(png_ptr, "Insufficient memory to process iCCP profile.");
+      png_warning(png_ptr, "Insufficient memory to process iCCP profile");
       return;
    }
    png_memcpy(new_iccp_profile, profile, (png_size_t)proflen);
@@ -753,14 +755,14 @@
          info_ptr->max_text = info_ptr->num_text + num_text + 8;
          old_text = info_ptr->text;
          info_ptr->text = (png_textp)png_malloc_warn(png_ptr,
-            (png_uint_32)(info_ptr->max_text * png_sizeof (png_text)));
+            (png_size_t)(info_ptr->max_text * sizeof(png_text)));
          if (info_ptr->text == NULL)
            {
              png_free(png_ptr, old_text);
              return(1);
            }
          png_memcpy(info_ptr->text, old_text, (png_size_t)(old_max *
-            png_sizeof(png_text)));
+            sizeof(png_text)));
          png_free(png_ptr, old_text);
       }
       else
@@ -768,7 +770,7 @@
          info_ptr->max_text = num_text + 8;
          info_ptr->num_text = 0;
          info_ptr->text = (png_textp)png_malloc_warn(png_ptr,
-            (png_uint_32)(info_ptr->max_text * png_sizeof (png_text)));
+            (png_uint_32)(info_ptr->max_text * sizeof(png_text)));
          if (info_ptr->text == NULL)
            return(1);
 #ifdef PNG_FREE_ME_SUPPORTED
@@ -809,7 +811,7 @@
       }
 #else
       {
-        png_warning(png_ptr, "iTXt chunk not supported.");
+        png_warning(png_ptr, "iTXt chunk not supported");
         continue;
       }
 #endif
@@ -831,7 +833,7 @@
       }
 
       textp->key = (png_charp)png_malloc_warn(png_ptr,
-         (png_uint_32)(key_len + text_length + lang_len + lang_key_len + 4));
+         (png_size_t)(key_len + text_length + lang_len + lang_key_len + 4));
       if (textp->key == NULL)
         return(1);
       png_debug2(2, "Allocated %lu bytes at %x in png_set_text\n",
@@ -898,7 +900,7 @@
        (png_ptr->mode & PNG_WROTE_tIME))
       return;
 
-   png_memcpy(&(info_ptr->mod_time), mod_time, png_sizeof (png_time));
+   png_memcpy(&(info_ptr->mod_time), mod_time, sizeof(png_time));
    info_ptr->valid |= PNG_INFO_tIME;
 }
 #endif
@@ -924,7 +926,7 @@
 #endif
        /* Changed from num_trans to PNG_MAX_PALETTE_LENGTH in version 1.2.1 */
        png_ptr->trans = info_ptr->trans = (png_bytep)png_malloc(png_ptr,
-           (png_uint_32)PNG_MAX_PALETTE_LENGTH);
+           PNG_MAX_PALETTE_LENGTH);
        if (num_trans <= PNG_MAX_PALETTE_LENGTH)
          png_memcpy(info_ptr->trans, trans, (png_size_t)num_trans);
 #ifdef PNG_FREE_ME_SUPPORTED
@@ -937,7 +939,7 @@
    if (trans_values != NULL)
    {
       png_memcpy(&(info_ptr->trans_values), trans_values,
-         png_sizeof(png_color_16));
+         sizeof(png_color_16));
       if (num_trans == 0)
         num_trans = 1;
    }
@@ -958,15 +960,15 @@
        return;
 
     np = (png_sPLT_tp)png_malloc_warn(png_ptr,
-        (info_ptr->splt_palettes_num + nentries) * png_sizeof(png_sPLT_t));
+        (info_ptr->splt_palettes_num + nentries) * sizeof(png_sPLT_t));
     if (np == NULL)
     {
-      png_warning(png_ptr, "No memory for sPLT palettes.");
+      png_warning(png_ptr, "No memory for sPLT palettes");
       return;
     }
 
     png_memcpy(np, info_ptr->splt_palettes,
-           info_ptr->splt_palettes_num * png_sizeof(png_sPLT_t));
+           info_ptr->splt_palettes_num * sizeof(png_sPLT_t));
     png_free(png_ptr, info_ptr->splt_palettes);
     info_ptr->splt_palettes=NULL;
 
@@ -975,15 +977,14 @@
         png_sPLT_tp to = np + info_ptr->splt_palettes_num + i;
         png_sPLT_tp from = entries + i;
 
-        to->name = (png_charp)png_malloc(png_ptr,
-            png_strlen(from->name) + 1);
+        to->name = (png_charp)png_malloc(png_ptr, png_strlen(from->name) + 1);
         /* TODO: use png_malloc_warn */
         png_strcpy(to->name, from->name);
         to->entries = (png_sPLT_entryp)png_malloc(png_ptr,
-            from->nentries * png_sizeof(png_sPLT_t));
+            from->nentries * sizeof(png_sPLT_t));
         /* TODO: use png_malloc_warn */
         png_memcpy(to->entries, from->entries,
-            from->nentries * png_sizeof(png_sPLT_t));
+            from->nentries * sizeof(png_sPLT_t));
         to->nentries = from->nentries;
         to->depth = from->depth;
     }
@@ -1010,15 +1011,15 @@
 
     np = (png_unknown_chunkp)png_malloc_warn(png_ptr,
         (info_ptr->unknown_chunks_num + num_unknowns) *
-        png_sizeof(png_unknown_chunk));
+        sizeof(png_unknown_chunk));
     if (np == NULL)
     {
-       png_warning(png_ptr, "Out of memory while processing unknown chunk.");
+       png_warning(png_ptr, "Out of memory while processing unknown chunk");
        return;
     }
 
     png_memcpy(np, info_ptr->unknown_chunks,
-           info_ptr->unknown_chunks_num * png_sizeof(png_unknown_chunk));
+           info_ptr->unknown_chunks_num * sizeof(png_unknown_chunk));
     png_free(png_ptr, info_ptr->unknown_chunks);
     info_ptr->unknown_chunks=NULL;
 
@@ -1031,7 +1032,7 @@
         to->data = (png_bytep)png_malloc_warn(png_ptr, from->size);
         if (to->data == NULL)
         {
-           png_warning(png_ptr, "Out of memory processing unknown chunk.");
+           png_warning(png_ptr, "Out of memory processing unknown chunk");
         }
         else
         {
@@ -1098,7 +1099,7 @@
       return;
     old_num_chunks=png_ptr->num_chunk_list;
     new_list=(png_bytep)png_malloc(png_ptr,
-       (png_uint_32)(5*(num_chunks+old_num_chunks)));
+       (png_size_t)(5*(num_chunks+old_num_chunks)));
     if(png_ptr->chunk_list != NULL)
     {
        png_memcpy(new_list, png_ptr->chunk_list,
@@ -1150,13 +1151,13 @@
 
 #ifdef PNG_WRITE_SUPPORTED
 void PNGAPI
-png_set_compression_buffer_size(png_structp png_ptr, png_uint_32 size)
+png_set_compression_buffer_size(png_structp png_ptr, png_size_t size)
 {
     if (png_ptr == NULL)
        return;
     if(png_ptr->zbuf)
        png_free(png_ptr, png_ptr->zbuf);
-    png_ptr->zbuf_size = (png_size_t)size;
+    png_ptr->zbuf_size = size;
     png_ptr->zbuf = (png_bytep)png_malloc(png_ptr, size);
     png_ptr->zstream.next_out = png_ptr->zbuf;
     png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
diff --git a/pngtest.c b/pngtest.c
index 851da7b..cb41479 100644
--- a/pngtest.c
+++ b/pngtest.c
@@ -32,7 +32,7 @@
 
 #if defined(_WIN32_WCE)
 #  if _WIN32_WCE < 211
-     __error__ "(f|w)printf functions are not supported on old WindowsCE.";
+     __error__ "(f|w)printf functions are not supported on old WindowsCE";
 #  endif
 #endif
 
@@ -262,7 +262,7 @@
    /* fread() returns 0 on error, so it is OK to store this in a png_size_t
     * instead of an int, which is what fread() actually returns.
     */
-   check = (png_size_t)fread(data, 1, length, (png_FILE_p)png_ptr->io_ptr);
+   check = fread(data, 1, length, (png_FILE_p)png_ptr->io_ptr);
    if (check != length)
    {
       png_error(png_ptr, "Read Error!");
@@ -280,7 +280,7 @@
 static void
 pngtest_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
 {
-   int check;
+   png_size_t check;
    png_byte *n_data;
    png_FILE_p io_ptr;
 
@@ -289,7 +289,7 @@
    io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);
    if ((png_bytep)n_data == data)
    {
-      check = (png_size_t)fread(n_data, 1, length, io_ptr);
+      check = fread(n_data, 1, length, io_ptr);
    }
    else
    {
@@ -300,7 +300,7 @@
       do
       {
          read = MIN(NEAR_BUF_SIZE, remaining);
-         err = (png_size_t)fread(buf, 1, 1, io_ptr);
+         err = fread(buf, 1, 1, io_ptr);
          png_memcpy(data, buf, read); /* copy far buffer to near buffer */
          if(err != read)
             break;
@@ -337,9 +337,9 @@
 static void
 pngtest_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
 {
-   png_uint_32 check;
+   png_size_t check;
 
-   check = (png_size_t)fwrite(data, 1, length, (png_FILE_p)png_ptr->io_ptr);
+   check = fwrite(data, 1, length, (png_FILE_p)png_ptr->io_ptr);
    if (check != length)
    {
       png_error(png_ptr, "Write Error");
@@ -357,7 +357,7 @@
 static void
 pngtest_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
 {
-   png_uint_32 check;
+   png_size_t check;
    png_byte *near_data;  /* Needs to be "png_byte *" instead of "png_bytep" */
    png_FILE_p io_ptr;
 
@@ -366,7 +366,7 @@
    io_ptr = (png_FILE_p)CVT_PTR(png_ptr->io_ptr);
    if ((png_bytep)near_data == data)
    {
-      check = (png_size_t)fwrite(near_data, 1, length, io_ptr);
+      check = fwrite(near_data, 1, length, io_ptr);
    }
    else
    {
@@ -378,7 +378,7 @@
       {
          written = MIN(NEAR_BUF_SIZE, remaining);
          png_memcpy(buf, data, written); /* copy far buffer to near buffer */
-         err = (png_size_t)fwrite(buf, 1, written, io_ptr);
+         err = fwrite(buf, 1, written, io_ptr);
          if (err != written)
             break;
          else
@@ -438,7 +438,7 @@
    by setting MAXSEG_64K in zlib zconf.h *or* PNG_MAX_MALLOC_64K. */
 typedef struct memory_information
 {
-   png_uint_32               size;
+   png_alloc_size_t          size;
    png_voidp                 pointer;
    struct memory_information FAR *next;
 } memory_information;
@@ -450,13 +450,13 @@
 static int total_allocation = 0;
 static int num_allocations = 0;
 
-png_voidp png_debug_malloc PNGARG((png_structp png_ptr, png_uint_32 size));
+png_voidp png_debug_malloc
+   PNGARG((png_structp png_ptr, png_alloc_size_t size));
 void png_debug_free PNGARG((png_structp png_ptr, png_voidp ptr));
 
 png_voidp
-png_debug_malloc(png_structp png_ptr, png_uint_32 size)
+png_debug_malloc(png_structp png_ptr, png_alloc_size_t size)
 {
-
    /* png_malloc has already tested for NULL; png_create_struct calls
       png_debug_malloc directly, with png_ptr == NULL which is OK */
 
@@ -469,31 +469,29 @@
       /* Disable malloc_fn and free_fn */
       memory_infop pinfo;
       png_set_mem_fn(png_ptr, NULL, NULL, NULL);
-      pinfo = (memory_infop)png_malloc(png_ptr,
-         (png_uint_32)png_sizeof (*pinfo));
+      pinfo = (memory_infop)png_malloc(png_ptr, sizeof(*pinfo));
       pinfo->size = size;
       current_allocation += size;
       total_allocation += size;
       num_allocations ++;
       if (current_allocation > maximum_allocation)
          maximum_allocation = current_allocation;
-      pinfo->pointer = (png_voidp)png_malloc(png_ptr, size);
+      pinfo->pointer = png_malloc(png_ptr, size);
       /* Restore malloc_fn and free_fn */
-      png_set_mem_fn(png_ptr, png_voidp_NULL, (png_malloc_ptr)png_debug_malloc,
-         (png_free_ptr)png_debug_free);
+      png_set_mem_fn(png_ptr, NULL, png_debug_malloc, png_debug_free);
       if (size != 0 && pinfo->pointer == NULL)
       {
          current_allocation -= size;
          total_allocation -= size;
          png_error(png_ptr,
-           "out of memory in pngtest->png_debug_malloc.");
+           "out of memory in pngtest->png_debug_malloc");
       }
       pinfo->next = pinformation;
       pinformation = pinfo;
       /* Make sure the caller isn't assuming zeroed memory. */
       png_memset(pinfo->pointer, 0xdd, pinfo->size);
-      if(verbose)
-         printf("png_malloc %lu bytes at %x\n",(unsigned long) size,
+      if (verbose)
+         printf("png_malloc %lu bytes at %x\n", (unsigned long)size,
             pinfo->pointer);
       return (png_voidp)(pinfo->pointer);
    }
@@ -611,7 +609,7 @@
 
   user_chunk_data[1]=png_get_uint_31(png_ptr,chunk->data);
   user_chunk_data[2]=png_get_uint_31(png_ptr,chunk->data + 4);
-  user_chunk_data[3]=(unsigned long) chunk->data[8];
+  user_chunk_data[3]=(png_uint_32)chunk->data[8];
 
   return (1);
 
@@ -666,12 +664,11 @@
 
    png_debug(0, "Allocating read and write structures\n");
 #if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
-   read_ptr = png_create_read_struct_2(PNG_LIBPNG_VER_STRING, png_voidp_NULL,
-      png_error_ptr_NULL, png_error_ptr_NULL, png_voidp_NULL,
-      (png_malloc_ptr)png_debug_malloc, (png_free_ptr)png_debug_free);
+   read_ptr = png_create_read_struct_2(PNG_LIBPNG_VER_STRING,
+      NULL, NULL, NULL, NULL,
+      png_debug_malloc, png_debug_free);
 #else
-   read_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, png_voidp_NULL,
-      png_error_ptr_NULL, png_error_ptr_NULL);
+   read_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
 #endif
 #if defined(PNG_NO_STDIO)
    png_set_error_fn(read_ptr, (png_voidp)inname, pngtest_error,
@@ -689,12 +686,12 @@
 
 #ifdef PNG_WRITE_SUPPORTED
 #if defined(PNG_USER_MEM_SUPPORTED) && PNG_DEBUG
-   write_ptr = png_create_write_struct_2(PNG_LIBPNG_VER_STRING, png_voidp_NULL,
-      png_error_ptr_NULL, png_error_ptr_NULL, png_voidp_NULL,
-      (png_malloc_ptr)png_debug_malloc, (png_free_ptr)png_debug_free);
+   write_ptr = png_create_write_struct_2(PNG_LIBPNG_VER_STRING,
+      NULL, NULL, NULL, NULL,
+      png_debug_malloc, png_debug_free);
 #else
-   write_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, png_voidp_NULL,
-      png_error_ptr_NULL, png_error_ptr_NULL);
+   write_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING,
+      NULL, NULL, NULL);
 #endif
 #if defined(PNG_NO_STDIO)
    png_set_error_fn(write_ptr, (png_voidp)inname, pngtest_error,
@@ -730,7 +727,7 @@
       return (1);
    }
 #ifdef USE_FAR_KEYWORD
-   png_memcpy(png_jmpbuf(read_ptr),jmpbuf,png_sizeof(jmp_buf));
+   png_memcpy(png_jmpbuf(read_ptr), jmpbuf, sizeof(jmp_buf));
 #endif
 
 #ifdef PNG_WRITE_SUPPORTED
@@ -752,7 +749,7 @@
       return (1);
    }
 #ifdef USE_FAR_KEYWORD
-   png_memcpy(png_jmpbuf(write_ptr),jmpbuf,png_sizeof(jmp_buf));
+   png_memcpy(png_jmpbuf(write_ptr), jmpbuf, sizeof(jmp_buf));
 #endif
 #endif
 #endif
@@ -784,9 +781,9 @@
    else
    {
 #ifdef PNG_WRITE_SUPPORTED
-      png_set_write_status_fn(write_ptr, png_write_status_ptr_NULL);
+      png_set_write_status_fn(write_ptr, NULL);
 #endif
-      png_set_read_status_fn(read_ptr, png_read_status_ptr_NULL);
+      png_set_read_status_fn(read_ptr, NULL);
    }
 
 #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
@@ -806,15 +803,13 @@
 #  ifndef PNG_HANDLE_CHUNK_ALWAYS
 #    define PNG_HANDLE_CHUNK_ALWAYS       3
 #  endif
-   png_set_keep_unknown_chunks(read_ptr, PNG_HANDLE_CHUNK_ALWAYS,
-      png_bytep_NULL, 0);
+   png_set_keep_unknown_chunks(read_ptr, PNG_HANDLE_CHUNK_ALWAYS, NULL, 0);
 #endif
 #if defined(PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED)
 #  ifndef PNG_HANDLE_CHUNK_IF_SAFE
 #    define PNG_HANDLE_CHUNK_IF_SAFE      2
 #  endif
-   png_set_keep_unknown_chunks(write_ptr, PNG_HANDLE_CHUNK_IF_SAFE,
-      png_bytep_NULL, 0);
+   png_set_keep_unknown_chunks(write_ptr, PNG_HANDLE_CHUNK_IF_SAFE, NULL, 0);
 #endif
 
    png_debug(0, "Reading info struct\n");
@@ -1110,16 +1105,10 @@
           (unsigned long)user_chunk_data[1],
           (unsigned long)user_chunk_data[2],
           (unsigned long)user_chunk_data[3]);
-     vpag_chunk_data[0]=(user_chunk_data[1]>>24) & 0xff;
-     vpag_chunk_data[1]=(user_chunk_data[1]>>16) & 0xff;
-     vpag_chunk_data[2]=(user_chunk_data[1]>>8 ) & 0xff;
-     vpag_chunk_data[3]=(user_chunk_data[1]    ) & 0xff;
-     vpag_chunk_data[4]=(user_chunk_data[2]>>24) & 0xff;
-     vpag_chunk_data[5]=(user_chunk_data[2]>>16) & 0xff;
-     vpag_chunk_data[6]=(user_chunk_data[2]>>8 ) & 0xff;
-     vpag_chunk_data[7]=(user_chunk_data[2]    ) & 0xff;
-     vpag_chunk_data[8]=(user_chunk_data[3]    ) & 0xff;
-     png_write_chunk(write_ptr, png_vpAg,vpag_chunk_data,9);
+     png_save_uint_32(vpag_chunk_data, user_chunk_data[1]);
+     png_save_uint_32(vpag_chunk_data + 4, user_chunk_data[2]);
+     vpag_chunk_data[8] = (unsigned char)(user_chunk_data[3] & 0xff);
+     png_write_chunk(write_ptr, png_vpAg, vpag_chunk_data, 9);
    }
 
 #endif
@@ -1160,7 +1149,7 @@
          png_debug2(0, "0x%08lx (%ld bytes)\n", (unsigned long)row_buf,
             png_get_rowbytes(read_ptr, read_info_ptr));
 #endif /* !SINGLE_ROWBUF_ALLOC */
-         png_read_rows(read_ptr, (png_bytepp)&row_buf, png_bytepp_NULL, 1);
+         png_read_rows(read_ptr, (png_bytepp)&row_buf, NULL, 1);
 
 #ifdef PNG_WRITE_SUPPORTED
 #ifdef PNGTEST_TIMING
@@ -1290,18 +1279,18 @@
       return (1);
    }
 
-   for(;;)
+   for (;;)
    {
       png_size_t num_in, num_out;
 
-      num_in = (png_size_t)fread(inbuf, 1, 1, fpin);
-      num_out = (png_size_t)fread(outbuf, 1, 1, fpout);
+      num_in = fread(inbuf, 1, 1, fpin);
+      num_out = fread(outbuf, 1, 1, fpout);
 
       if (num_in != num_out)
       {
          fprintf(STDERR, "\nFiles %s and %s are of a different size\n",
                  inname, outname);
-         if(wrote_question == 0)
+         if (wrote_question == 0)
          {
             fprintf(STDERR,
          "   Was %s written with the same maximum IDAT chunk size (%d bytes),",
@@ -1373,8 +1362,8 @@
    /* Show the version of libpng used in building the application */
    fprintf(STDERR," pngtest (%lu):%s", (unsigned long)PNG_LIBPNG_VER,
       PNG_HEADER_VERSION_STRING);
-   fprintf(STDERR," png_sizeof(png_struct)=%ld, png_sizeof(png_info)=%ld\n",
-                    (long)png_sizeof(png_struct), (long)png_sizeof(png_info));
+   fprintf(STDERR," sizeof(png_struct)=%ld, sizeof(png_info)=%ld\n",
+                    (long)sizeof(png_struct), (long)sizeof(png_info));
 
    /* Do some consistency checking on the memory allocation settings, I'm
       not sure this matters, but it is nice to know, the first of these
@@ -1609,4 +1598,4 @@
 }
 
 /* Generate a compiler error if there is an old png.h in the search path. */
-typedef version_1_4_0beta10 your_png_h_is_not_version_1_4_0beta10;
+typedef version_1_4_0beta11 your_png_h_is_not_version_1_4_0beta11;
diff --git a/pngtrans.c b/pngtrans.c
index 75f2a72..6f2bc56 100644
--- a/pngtrans.c
+++ b/pngtrans.c
@@ -9,7 +9,7 @@
  */
 
 #include "png.h"
-#include "pngintrn.h"
+#include "pngpriv.h"
 
 #if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
 #if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
diff --git a/pngvcrd.c b/pngvcrd.c
index 7e009f3..27f3d22 100644
--- a/pngvcrd.c
+++ b/pngvcrd.c
@@ -25,7 +25,7 @@
  */
 
 #include "png.h"
-#include "pngintrn.h"
+#include "pngpriv.h"
 
 #if defined(PNG_MMX_CODE_SUPPORTED) && defined(PNG_USE_PNGVCRD)
 
@@ -124,8 +124,7 @@
    if (mask == 0xff)
    {
       png_memcpy(row, png_ptr->row_buf + 1,
-       (png_size_t)PNG_ROWBYTES(png_ptr->row_info.pixel_depth,
-       png_ptr->width));
+         PNG_ROWBYTES(png_ptr->row_info.pixel_depth, png_ptr->width));
    }
    /* GRR:  add "else if (mask == 0)" case?
     *       or does png_combine_row() not even get called in that case? */
diff --git a/pngwio.c b/pngwio.c
index 7056ba0..9ba6185 100644
--- a/pngwio.c
+++ b/pngwio.c
@@ -17,7 +17,7 @@
 
 #include "png.h"
 #ifdef PNG_WRITE_SUPPORTED
-#include "pngintrn.h"
+#include "pngpriv.h"
 
 /* Write the data to whatever output you are using.  The default routine
    writes to a file pointer.  Note that this routine sometimes gets called
@@ -177,7 +177,7 @@
       png_warning(png_ptr,
          "Attempted to set both read_data_fn and write_data_fn in");
       png_warning(png_ptr,
-         "the same structure.  Resetting read_data_fn to NULL.");
+         "the same structure.  Resetting read_data_fn to NULL");
    }
 }
 
diff --git a/pngwrite.c b/pngwrite.c
index ebfeb2d..09573e8 100644
--- a/pngwrite.c
+++ b/pngwrite.c
@@ -11,7 +11,7 @@
 /* get internal access to png.h */
 #include "png.h"
 #ifdef PNG_WRITE_SUPPORTED
-#include "pngintrn.h"
+#include "pngpriv.h"
 
 /* Writes all the PNG information.  This is the suggested way to use the
  * library.  If you have a new chunk to add, make a function to write it,
@@ -188,7 +188,7 @@
           info_ptr->scal_s_width, info_ptr->scal_s_height);
 #else
       png_warning(png_ptr,
-          "png_write_sCAL not supported; sCAL chunk not written.");
+          "png_write_sCAL not supported; sCAL chunk not written");
 #endif
 #endif
 #endif
@@ -430,7 +430,7 @@
 {
 #ifdef PNG_USER_MEM_SUPPORTED
    return (png_create_write_struct_2(user_png_ver, error_ptr, error_fn,
-      warn_fn, png_voidp_NULL, png_malloc_ptr_NULL, png_free_ptr_NULL));
+      warn_fn, NULL, NULL, NULL));
 }
 
 /* Alternate initialize png_ptr structure, and allocate any memory needed */
@@ -450,7 +450,7 @@
    png_debug(1, "in png_create_write_struct\n");
 #ifdef PNG_USER_MEM_SUPPORTED
    png_ptr = (png_structp)png_create_struct_2(PNG_STRUCT_PNG,
-      (png_malloc_ptr)malloc_fn, (png_voidp)mem_ptr);
+      malloc_fn, mem_ptr);
 #else
    png_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG);
 #endif /* PNG_USER_MEM_SUPPORTED */
@@ -480,7 +480,7 @@
       return (NULL);
    }
 #ifdef USE_FAR_KEYWORD
-   png_memcpy(png_ptr->jmpbuf,jmpbuf,png_sizeof(jmp_buf));
+   png_memcpy(png_ptr->jmpbuf, jmpbuf, sizeof(jmp_buf));
 #endif
 #endif
 
@@ -529,15 +529,13 @@
 
    /* initialize zbuf - compression buffer */
    png_ptr->zbuf_size = PNG_ZBUF_SIZE;
-   png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
-      (png_uint_32)png_ptr->zbuf_size);
+   png_ptr->zbuf = (png_bytep)png_malloc(png_ptr, png_ptr->zbuf_size);
 
-   png_set_write_fn(png_ptr, png_voidp_NULL, png_rw_ptr_NULL,
-      png_flush_ptr_NULL);
+   png_set_write_fn(png_ptr, NULL, NULL, NULL);
 
 #if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED)
    png_set_filter_heuristics(png_ptr, PNG_FILTER_HEURISTIC_DEFAULT,
-      1, png_doublep_NULL, png_doublep_NULL);
+      1, NULL, NULL);
 #endif
 
 #ifdef PNG_SETJMP_SUPPORTED
@@ -547,7 +545,7 @@
 #ifdef USE_FAR_KEYWORD
    if (setjmp(jmpbuf))
       PNG_ABORT();
-   png_memcpy(png_ptr->jmpbuf,jmpbuf,png_sizeof(jmp_buf));
+   png_memcpy(png_ptr->jmpbuf, jmpbuf, sizeof(jmp_buf));
 #else
    if (setjmp(png_ptr->jmpbuf))
       PNG_ABORT();
@@ -579,7 +577,7 @@
 #else
        png_ptr->warning_fn=NULL;
        png_warning(png_ptr,
-     "Application uses deprecated png_write_init() and should be recompiled.");
+      "Application uses deprecated png_write_init() and should be recompiled");
        break;
 #endif
      }
@@ -589,10 +587,10 @@
 
 #ifdef PNG_SETJMP_SUPPORTED
    /* save jump buffer and error functions */
-   png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof (jmp_buf));
+   png_memcpy(tmp_jmp, png_ptr->jmpbuf, sizeof(jmp_buf));
 #endif
 
-   if (png_sizeof(png_struct) > png_struct_size)
+   if (sizeof(png_struct) > png_struct_size)
      {
        png_destroy_struct(png_ptr);
        png_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG);
@@ -600,7 +598,7 @@
      }
 
    /* reset all variables to 0 */
-   png_memset(png_ptr, 0, png_sizeof (png_struct));
+   png_memset(png_ptr, 0, sizeof(png_struct));
 
    /* added at libpng-1.2.6 */
 #ifdef PNG_SET_USER_LIMITS_SUPPORTED
@@ -614,20 +612,18 @@
 
 #ifdef PNG_SETJMP_SUPPORTED
    /* restore jump buffer */
-   png_memcpy(png_ptr->jmpbuf, tmp_jmp, png_sizeof (jmp_buf));
+   png_memcpy(png_ptr->jmpbuf, tmp_jmp, sizeof(jmp_buf));
 #endif
 
-   png_set_write_fn(png_ptr, png_voidp_NULL, png_rw_ptr_NULL,
-      png_flush_ptr_NULL);
+   png_set_write_fn(png_ptr, NULL, NULL, NULL);
 
    /* initialize zbuf - compression buffer */
    png_ptr->zbuf_size = PNG_ZBUF_SIZE;
-   png_ptr->zbuf = (png_bytep)png_malloc(png_ptr,
-      (png_uint_32)png_ptr->zbuf_size);
+   png_ptr->zbuf = (png_bytep)png_malloc(png_ptr, png_ptr->zbuf_size);
 
 #if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED)
    png_set_filter_heuristics(png_ptr, PNG_FILTER_HEURISTIC_DEFAULT,
-      1, png_doublep_NULL, png_doublep_NULL);
+      1, NULL, NULL);
 #endif
 }
 
@@ -702,36 +698,36 @@
    /* make sure we wrote the header info */
    if (!(png_ptr->mode & PNG_WROTE_INFO_BEFORE_PLTE))
       png_error(png_ptr,
-         "png_write_info was never called before png_write_row.");
+         "png_write_info was never called before png_write_row");
 
    /* check for transforms that have been set but were defined out */
 #if !defined(PNG_WRITE_INVERT_SUPPORTED) && defined(PNG_READ_INVERT_SUPPORTED)
    if (png_ptr->transformations & PNG_INVERT_MONO)
-      png_warning(png_ptr, "PNG_WRITE_INVERT_SUPPORTED is not defined.");
+      png_warning(png_ptr, "PNG_WRITE_INVERT_SUPPORTED is not defined");
 #endif
 #if !defined(PNG_WRITE_FILLER_SUPPORTED) && defined(PNG_READ_FILLER_SUPPORTED)
    if (png_ptr->transformations & PNG_FILLER)
-      png_warning(png_ptr, "PNG_WRITE_FILLER_SUPPORTED is not defined.");
+      png_warning(png_ptr, "PNG_WRITE_FILLER_SUPPORTED is not defined");
 #endif
 #if !defined(PNG_WRITE_PACKSWAP_SUPPORTED) && defined(PNG_READ_PACKSWAP_SUPPORTED)
    if (png_ptr->transformations & PNG_PACKSWAP)
-      png_warning(png_ptr, "PNG_WRITE_PACKSWAP_SUPPORTED is not defined.");
+      png_warning(png_ptr, "PNG_WRITE_PACKSWAP_SUPPORTED is not defined");
 #endif
 #if !defined(PNG_WRITE_PACK_SUPPORTED) && defined(PNG_READ_PACK_SUPPORTED)
    if (png_ptr->transformations & PNG_PACK)
-      png_warning(png_ptr, "PNG_WRITE_PACK_SUPPORTED is not defined.");
+      png_warning(png_ptr, "PNG_WRITE_PACK_SUPPORTED is not defined");
 #endif
 #if !defined(PNG_WRITE_SHIFT_SUPPORTED) && defined(PNG_READ_SHIFT_SUPPORTED)
    if (png_ptr->transformations & PNG_SHIFT)
-      png_warning(png_ptr, "PNG_WRITE_SHIFT_SUPPORTED is not defined.");
+      png_warning(png_ptr, "PNG_WRITE_SHIFT_SUPPORTED is not defined");
 #endif
 #if !defined(PNG_WRITE_BGR_SUPPORTED) && defined(PNG_READ_BGR_SUPPORTED)
    if (png_ptr->transformations & PNG_BGR)
-      png_warning(png_ptr, "PNG_WRITE_BGR_SUPPORTED is not defined.");
+      png_warning(png_ptr, "PNG_WRITE_BGR_SUPPORTED is not defined");
 #endif
 #if !defined(PNG_WRITE_SWAP_SUPPORTED) && defined(PNG_READ_SWAP_SUPPORTED)
    if (png_ptr->transformations & PNG_SWAP_BYTES)
-      png_warning(png_ptr, "PNG_WRITE_SWAP_SUPPORTED is not defined.");
+      png_warning(png_ptr, "PNG_WRITE_SWAP_SUPPORTED is not defined");
 #endif
 
       png_write_start_row(png_ptr);
@@ -817,8 +813,7 @@
      (unsigned long) png_ptr->row_info.rowbytes);
 
    /* Copy user's row into buffer, leaving room for filter byte. */
-   png_memcpy_check(png_ptr, png_ptr->row_buf + 1, row,
-      png_ptr->row_info.rowbytes);
+   png_memcpy(png_ptr->row_buf + 1, row, png_ptr->row_info.rowbytes);
 
 #if defined(PNG_WRITE_INTERLACING_SUPPORTED)
    /* handle interlacing */
@@ -1032,7 +1027,7 @@
 
 #ifdef PNG_SETJMP_SUPPORTED
    /* reset structure */
-   png_memcpy(tmp_jmp, png_ptr->jmpbuf, png_sizeof (jmp_buf));
+   png_memcpy(tmp_jmp, png_ptr->jmpbuf, sizeof(jmp_buf));
 #endif
 
    error_fn = png_ptr->error_fn;
@@ -1042,7 +1037,7 @@
    free_fn = png_ptr->free_fn;
 #endif
 
-   png_memset(png_ptr, 0, png_sizeof (png_struct));
+   png_memset(png_ptr, 0, sizeof(png_struct));
 
    png_ptr->error_fn = error_fn;
    png_ptr->warning_fn = warning_fn;
@@ -1052,7 +1047,7 @@
 #endif
 
 #ifdef PNG_SETJMP_SUPPORTED
-   png_memcpy(png_ptr->jmpbuf, tmp_jmp, png_sizeof (jmp_buf));
+   png_memcpy(png_ptr->jmpbuf, tmp_jmp, sizeof(jmp_buf));
 #endif
 }
 
@@ -1198,7 +1193,7 @@
       if (png_ptr->prev_filters == NULL)
       {
          png_ptr->prev_filters = (png_bytep)png_malloc(png_ptr,
-            (png_uint_32)(png_sizeof(png_byte) * num_weights));
+            (png_size_t)(sizeof(png_byte) * num_weights));
 
          /* To make sure that the weighting starts out fairly */
          for (i = 0; i < num_weights; i++)
@@ -1210,10 +1205,10 @@
       if (png_ptr->filter_weights == NULL)
       {
          png_ptr->filter_weights = (png_uint_16p)png_malloc(png_ptr,
-            (png_uint_32)(png_sizeof(png_uint_16) * num_weights));
+            (png_size_t)(sizeof(png_uint_16) * num_weights));
 
          png_ptr->inv_filter_weights = (png_uint_16p)png_malloc(png_ptr,
-            (png_uint_32)(png_sizeof(png_uint_16) * num_weights));
+            (png_size_t)(sizeof(png_uint_16) * num_weights));
          for (i = 0; i < num_weights; i++)
          {
             png_ptr->inv_filter_weights[i] =
@@ -1244,10 +1239,10 @@
    if (png_ptr->filter_costs == NULL)
    {
       png_ptr->filter_costs = (png_uint_16p)png_malloc(png_ptr,
-         (png_uint_32)(png_sizeof(png_uint_16) * PNG_FILTER_VALUE_LAST));
+         (sizeof(png_uint_16) * PNG_FILTER_VALUE_LAST));
 
       png_ptr->inv_filter_costs = (png_uint_16p)png_malloc(png_ptr,
-         (png_uint_32)(png_sizeof(png_uint_16) * PNG_FILTER_VALUE_LAST));
+         (sizeof(png_uint_16) * PNG_FILTER_VALUE_LAST));
 
       for (i = 0; i < PNG_FILTER_VALUE_LAST; i++)
       {
diff --git a/pngwtran.c b/pngwtran.c
index 2b9d701..3f5f675 100644
--- a/pngwtran.c
+++ b/pngwtran.c
@@ -10,7 +10,7 @@
 
 #include "png.h"
 #ifdef PNG_WRITE_SUPPORTED
-#include "pngintrn.h"
+#include "pngpriv.h"
 
 /* Transform the data according to the user's wishes.  The order of
  * transformations is significant.
diff --git a/pngwutil.c b/pngwutil.c
index e02d738..10eac10 100644
--- a/pngwutil.c
+++ b/pngwutil.c
@@ -1,7 +1,7 @@
 
 /* pngwutil.c - utilities to write a PNG file
  *
- * Last changed in libpng 1.4.0 April 20, 2006
+ * Last changed in libpng 1.4.0 July 20, 2006
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2006 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@@ -10,7 +10,7 @@
 
 #include "png.h"
 #ifdef PNG_WRITE_SUPPORTED
-#include "pngintrn.h"
+#include "pngpriv.h"
 
 /* Place a 32-bit number into a buffer in PNG byte order.  We work
  * with unsigned numbers for convenience, although one supported
@@ -61,9 +61,15 @@
 png_write_sig(png_structp png_ptr)
 {
    png_byte png_signature[8] = {137, 80, 78, 71, 13, 10, 26, 10};
+
+#ifdef PNG_IO_STATE_SUPPORTED
+   /* inform the I/O callback that the signature is being written */
+   png_ptr->io_state = PNG_IO_WRITING | PNG_IO_SIGNATURE;
+#endif
+
    /* write the rest of the 8 byte signature */
    png_write_data(png_ptr, &png_signature[png_ptr->sig_bytes],
-      (png_size_t)8 - png_ptr->sig_bytes);
+      (png_size_t)(8 - png_ptr->sig_bytes));
    if(png_ptr->sig_bytes < 3)
       png_ptr->mode |= PNG_HAVE_PNG_SIGNATURE;
 }
@@ -94,19 +100,35 @@
 png_write_chunk_start(png_structp png_ptr, png_bytep chunk_name,
    png_uint_32 length)
 {
-   png_byte buf[4];
-   png_debug2(0, "Writing %s chunk (%lu bytes)\n", chunk_name,
-     (unsigned long) length);
+   png_byte buf[8];
+   png_debug2(0, "Writing %s chunk, length = %lu\n", chunk_name,
+      (unsigned long)length);
 
-   /* write the length */
+#ifdef PNG_IO_STATE_SUPPORTED
+   /* Inform the I/O callback that the chunk header is being written.
+    * PNG_IO_CHUNK_HDR requires a single I/O call.
+    */
+   png_ptr->io_state = PNG_IO_WRITING | PNG_IO_CHUNK_HDR;
+#endif
+
+   /* write the length and the chunk name */
    png_save_uint_32(buf, length);
-   png_write_data(png_ptr, buf, (png_size_t)4);
+   png_memcpy(buf + 4, chunk_name, 4);
+   png_write_data(png_ptr, buf, 8);
 
-   /* write the chunk name */
-   png_write_data(png_ptr, chunk_name, (png_size_t)4);
+   /* put the chunk name into png_ptr->chunk_name */
+   png_memcpy(png_ptr->chunk_name, chunk_name, 4);
+
    /* reset the crc and run it over the chunk name */
    png_reset_crc(png_ptr);
-   png_calculate_crc(png_ptr, chunk_name, (png_size_t)4);
+   png_calculate_crc(png_ptr, chunk_name, 4);
+
+#ifdef PNG_IO_STATE_SUPPORTED
+   /* Inform the I/O callback that chunk data will (possibly) be written.
+    * PNG_IO_CHUNK_DATA does NOT require a specific number of I/O calls.
+    */
+   png_ptr->io_state = PNG_IO_WRITING | PNG_IO_CHUNK_DATA;
+#endif
 }
 
 /* Write the data of a PNG chunk started with png_write_chunk_start().
@@ -120,8 +142,11 @@
    /* write the data, and run the CRC over it */
    if (data != NULL && length > 0)
    {
-      png_calculate_crc(png_ptr, data, length);
       png_write_data(png_ptr, data, length);
+      /* update the CRC after writing the data,
+       * in case that the user I/O routine alters it.
+       */
+      png_calculate_crc(png_ptr, data, length);
    }
 }
 
@@ -131,10 +156,17 @@
 {
    png_byte buf[4];
 
-   /* write the crc */
+#ifdef PNG_IO_STATE_SUPPORTED
+   /* Inform the I/O callback that the chunk CRC is being written.
+    * PNG_IO_CHUNK_CRC requires a single I/O function call.
+    */
+   png_ptr->io_state = PNG_IO_WRITING | PNG_IO_CHUNK_CRC;
+#endif
+
+   /* write the crc in a single operation */
    png_save_uint_32(buf, png_ptr->crc);
 
-   png_write_data(png_ptr, buf, (png_size_t)4);
+   png_write_data(png_ptr, buf, 4);
 }
 
 #if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_iCCP_SUPPORTED)
@@ -237,21 +269,19 @@
 
                old_ptr = comp->output_ptr;
                comp->output_ptr = (png_charpp)png_malloc(png_ptr,
-                  (png_uint_32)(comp->max_output_ptr *
-                  png_sizeof (png_charpp)));
+                  (png_size_t)(comp->max_output_ptr * sizeof(png_charpp)));
                png_memcpy(comp->output_ptr, old_ptr, old_max
-                  * png_sizeof (png_charp));
+                  * sizeof(png_charp));
                png_free(png_ptr, old_ptr);
             }
             else
                comp->output_ptr = (png_charpp)png_malloc(png_ptr,
-                  (png_uint_32)(comp->max_output_ptr *
-                  png_sizeof (png_charp)));
+                  (png_size_t)(comp->max_output_ptr * sizeof(png_charp)));
          }
 
          /* save the data */
-         comp->output_ptr[comp->num_output_ptr] = (png_charp)png_malloc(png_ptr,
-            (png_uint_32)png_ptr->zbuf_size);
+         comp->output_ptr[comp->num_output_ptr] =
+            (png_charp)png_malloc(png_ptr, png_ptr->zbuf_size);
          png_memcpy(comp->output_ptr[comp->num_output_ptr], png_ptr->zbuf,
             png_ptr->zbuf_size);
          comp->num_output_ptr++;
@@ -288,21 +318,19 @@
                   old_ptr = comp->output_ptr;
                   /* This could be optimized to realloc() */
                   comp->output_ptr = (png_charpp)png_malloc(png_ptr,
-                     (png_uint_32)(comp->max_output_ptr *
-                     png_sizeof (png_charpp)));
+                     (png_size_t)(comp->max_output_ptr * sizeof(png_charpp)));
                   png_memcpy(comp->output_ptr, old_ptr,
-                     old_max * png_sizeof (png_charp));
+                     old_max * sizeof(png_charp));
                   png_free(png_ptr, old_ptr);
                }
                else
                   comp->output_ptr = (png_charpp)png_malloc(png_ptr,
-                     (png_uint_32)(comp->max_output_ptr *
-                     png_sizeof (png_charp)));
+                     (png_size_t)(comp->max_output_ptr * sizeof(png_charp)));
             }
 
             /* save off the data */
             comp->output_ptr[comp->num_output_ptr] =
-               (png_charp)png_malloc(png_ptr, (png_uint_32)png_ptr->zbuf_size);
+               (png_charp)png_malloc(png_ptr, png_ptr->zbuf_size);
             png_memcpy(comp->output_ptr[comp->num_output_ptr], png_ptr->zbuf,
                png_ptr->zbuf_size);
             comp->num_output_ptr++;
@@ -492,7 +520,7 @@
    buf[12] = (png_byte)interlace_type;
 
    /* write the chunk */
-   png_write_chunk(png_ptr, (png_bytep)png_IHDR, buf, (png_size_t)13);
+   png_write_chunk(png_ptr, (png_bytep)png_IHDR, buf, 13);
 
    /* initialize zlib with PNG info */
    png_ptr->zstream.zalloc = png_zalloc;
@@ -582,7 +610,7 @@
       buf[0] = pal_ptr->red;
       buf[1] = pal_ptr->green;
       buf[2] = pal_ptr->blue;
-      png_write_chunk_data(png_ptr, buf, (png_size_t)3);
+      png_write_chunk_data(png_ptr, buf, 3);
    }
 #else
    /* This is a little slower but some buggy compilers need to do this instead */
@@ -592,7 +620,7 @@
       buf[0] = pal_ptr[i].red;
       buf[1] = pal_ptr[i].green;
       buf[2] = pal_ptr[i].blue;
-      png_write_chunk_data(png_ptr, buf, (png_size_t)3);
+      png_write_chunk_data(png_ptr, buf, 3);
    }
 #endif
    png_write_chunk_end(png_ptr);
@@ -659,8 +687,7 @@
    PNG_IEND;
 #endif
    png_debug(1, "in png_write_IEND\n");
-   png_write_chunk(png_ptr, (png_bytep)png_IEND, png_bytep_NULL,
-     (png_size_t)0);
+   png_write_chunk(png_ptr, (png_bytep)png_IEND, NULL, 0);
    png_ptr->mode |= PNG_HAVE_IEND;
 }
 
@@ -680,7 +707,7 @@
    /* file_gamma is saved in 1/100,000ths */
    igamma = (png_uint_32)(file_gamma * 100000.0 + 0.5);
    png_save_uint_32(buf, igamma);
-   png_write_chunk(png_ptr, (png_bytep)png_gAMA, buf, (png_size_t)4);
+   png_write_chunk(png_ptr, (png_bytep)png_gAMA, buf, 4);
 }
 #endif
 #ifdef PNG_FIXED_POINT_SUPPORTED
@@ -695,7 +722,7 @@
    png_debug(1, "in png_write_gAMA\n");
    /* file_gamma is saved in 1/100,000ths */
    png_save_uint_32(buf, (png_uint_32)file_gamma);
-   png_write_chunk(png_ptr, (png_bytep)png_gAMA, buf, (png_size_t)4);
+   png_write_chunk(png_ptr, (png_bytep)png_gAMA, buf, 4);
 }
 #endif
 #endif
@@ -715,7 +742,7 @@
          png_warning(png_ptr,
             "Invalid sRGB rendering intent specified");
    buf[0]=(png_byte)srgb_intent;
-   png_write_chunk(png_ptr, (png_bytep)png_sRGB, buf, (png_size_t)1);
+   png_write_chunk(png_ptr, (png_bytep)png_sRGB, buf, 1);
 }
 #endif
 
@@ -731,6 +758,7 @@
    png_size_t name_len;
    png_charp new_name;
    compression_state comp;
+   int embedded_profile_len = 0;
 
    png_debug(1, "in png_write_iCCP\n");
 
@@ -753,9 +781,27 @@
    if (profile == NULL)
       profile_len = 0;
 
+   if (profile_len > 3)
+      embedded_profile_len = ((*(profile  ))<<24) | ((*(profile+1))<<16) |
+          ((*(profile+2))<< 8) | ((*(profile+3))    );
+
+   if (profile_len < embedded_profile_len)
+     {
+        png_warning(png_ptr,
+          "Embedded profile length too large in iCCP chunk");
+        return;
+     }
+
+   if (profile_len > embedded_profile_len)
+     {
+        png_warning(png_ptr,
+          "Truncating profile to actual length in iCCP chunk");
+        profile_len = embedded_profile_len;
+     }
+
    if (profile_len)
-       profile_len = png_text_compress(png_ptr, profile, (png_size_t)profile_len,
-          PNG_COMPRESSION_TYPE_BASE, &comp);
+       profile_len = png_text_compress(png_ptr, profile,
+          (png_size_t)profile_len, PNG_COMPRESSION_TYPE_BASE, &comp);
 
    /* make sure we include the NULL after the name and the compression type */
    png_write_chunk_start(png_ptr, (png_bytep)png_iCCP,
@@ -782,8 +828,8 @@
    png_size_t name_len;
    png_charp new_name;
    png_byte entrybuf[10];
-   int entry_size = (spalette->depth == 8 ? 6 : 10);
-   int palette_size = entry_size * spalette->nentries;
+   png_size_t entry_size = (spalette->depth == 8 ? 6 : 10);
+   png_size_t palette_size = entry_size * spalette->nentries;
    png_sPLT_entryp ep;
 #ifdef PNG_NO_POINTER_INDEXING
    int i;
@@ -799,7 +845,7 @@
 
    /* make sure we include the NULL after the name */
    png_write_chunk_start(png_ptr, (png_bytep)png_sPLT,
-          (png_uint_32)(name_len + 2 + palette_size));
+      (png_uint_32)(name_len + 2 + palette_size));
    png_write_chunk_data(png_ptr, (png_bytep)new_name, name_len + 1);
    png_write_chunk_data(png_ptr, (png_bytep)&spalette->depth, 1);
 
@@ -807,45 +853,45 @@
 #ifndef PNG_NO_POINTER_INDEXING
    for (ep = spalette->entries; ep<spalette->entries+spalette->nentries; ep++)
    {
-       if (spalette->depth == 8)
-       {
-           entrybuf[0] = (png_byte)ep->red;
-           entrybuf[1] = (png_byte)ep->green;
-           entrybuf[2] = (png_byte)ep->blue;
-           entrybuf[3] = (png_byte)ep->alpha;
-           png_save_uint_16(entrybuf + 4, ep->frequency);
-       }
-       else
-       {
-           png_save_uint_16(entrybuf + 0, ep->red);
-           png_save_uint_16(entrybuf + 2, ep->green);
-           png_save_uint_16(entrybuf + 4, ep->blue);
-           png_save_uint_16(entrybuf + 6, ep->alpha);
-           png_save_uint_16(entrybuf + 8, ep->frequency);
-       }
-       png_write_chunk_data(png_ptr, entrybuf, (png_size_t)entry_size);
+      if (spalette->depth == 8)
+      {
+          entrybuf[0] = (png_byte)ep->red;
+          entrybuf[1] = (png_byte)ep->green;
+          entrybuf[2] = (png_byte)ep->blue;
+          entrybuf[3] = (png_byte)ep->alpha;
+          png_save_uint_16(entrybuf + 4, ep->frequency);
+      }
+      else
+      {
+          png_save_uint_16(entrybuf + 0, ep->red);
+          png_save_uint_16(entrybuf + 2, ep->green);
+          png_save_uint_16(entrybuf + 4, ep->blue);
+          png_save_uint_16(entrybuf + 6, ep->alpha);
+          png_save_uint_16(entrybuf + 8, ep->frequency);
+      }
+      png_write_chunk_data(png_ptr, entrybuf, entry_size);
    }
 #else
    ep=spalette->entries;
    for (i=0; i>spalette->nentries; i++)
    {
-       if (spalette->depth == 8)
-       {
-           entrybuf[0] = (png_byte)ep[i].red;
-           entrybuf[1] = (png_byte)ep[i].green;
-           entrybuf[2] = (png_byte)ep[i].blue;
-           entrybuf[3] = (png_byte)ep[i].alpha;
-           png_save_uint_16(entrybuf + 4, ep[i].frequency);
-       }
-       else
-       {
-           png_save_uint_16(entrybuf + 0, ep[i].red);
-           png_save_uint_16(entrybuf + 2, ep[i].green);
-           png_save_uint_16(entrybuf + 4, ep[i].blue);
-           png_save_uint_16(entrybuf + 6, ep[i].alpha);
-           png_save_uint_16(entrybuf + 8, ep[i].frequency);
-       }
-       png_write_chunk_data(png_ptr, entrybuf, entry_size);
+      if (spalette->depth == 8)
+      {
+          entrybuf[0] = (png_byte)ep[i].red;
+          entrybuf[1] = (png_byte)ep[i].green;
+          entrybuf[2] = (png_byte)ep[i].blue;
+          entrybuf[3] = (png_byte)ep[i].alpha;
+          png_save_uint_16(entrybuf + 4, ep[i].frequency);
+      }
+      else
+      {
+          png_save_uint_16(entrybuf + 0, ep[i].red);
+          png_save_uint_16(entrybuf + 2, ep[i].green);
+          png_save_uint_16(entrybuf + 4, ep[i].blue);
+          png_save_uint_16(entrybuf + 6, ep[i].alpha);
+          png_save_uint_16(entrybuf + 8, ep[i].frequency);
+      }
+      png_write_chunk_data(png_ptr, entrybuf, entry_size);
    }
 #endif
 
@@ -970,7 +1016,7 @@
    itemp = (png_uint_32)(blue_y * 100000.0 + 0.5);
    png_save_uint_32(buf + 28, itemp);
 
-   png_write_chunk(png_ptr, (png_bytep)png_cHRM, buf, (png_size_t)32);
+   png_write_chunk(png_ptr, (png_bytep)png_cHRM, buf, 32);
 }
 #endif
 #ifdef PNG_FIXED_POINT_SUPPORTED
@@ -1023,7 +1069,7 @@
    png_save_uint_32(buf + 24, (png_uint_32)blue_x);
    png_save_uint_32(buf + 28, (png_uint_32)blue_y);
 
-   png_write_chunk(png_ptr, (png_bytep)png_cHRM, buf, (png_size_t)32);
+   png_write_chunk(png_ptr, (png_bytep)png_cHRM, buf, 32);
 }
 #endif
 #endif
@@ -1048,7 +1094,8 @@
          return;
       }
       /* write the chunk out as it is */
-      png_write_chunk(png_ptr, (png_bytep)png_tRNS, trans, (png_size_t)num_trans);
+      png_write_chunk(png_ptr, (png_bytep)png_tRNS,
+         trans, (png_size_t)num_trans);
    }
    else if (color_type == PNG_COLOR_TYPE_GRAY)
    {
@@ -1060,7 +1107,7 @@
          return;
       }
       png_save_uint_16(buf, tran->gray);
-      png_write_chunk(png_ptr, (png_bytep)png_tRNS, buf, (png_size_t)2);
+      png_write_chunk(png_ptr, (png_bytep)png_tRNS, buf, 2);
    }
    else if (color_type == PNG_COLOR_TYPE_RGB)
    {
@@ -1069,12 +1116,12 @@
       png_save_uint_16(buf + 2, tran->green);
       png_save_uint_16(buf + 4, tran->blue);
       if(png_ptr->bit_depth == 8 && (buf[0] | buf[2] | buf[4]))
-         {
-            png_warning(png_ptr,
-              "Ignoring attempt to write 16-bit tRNS chunk when bit_depth is 8");
-            return;
-         }
-      png_write_chunk(png_ptr, (png_bytep)png_tRNS, buf, (png_size_t)6);
+      {
+         png_warning(png_ptr,
+            "Ignoring attempt to write 16-bit tRNS chunk when bit_depth is 8");
+         return;
+      }
+      png_write_chunk(png_ptr, (png_bytep)png_tRNS, buf, 6);
    }
    else
    {
@@ -1107,7 +1154,7 @@
          return;
       }
       buf[0] = back->index;
-      png_write_chunk(png_ptr, (png_bytep)png_bKGD, buf, (png_size_t)1);
+      png_write_chunk(png_ptr, (png_bytep)png_bKGD, buf, 1);
    }
    else if (color_type & PNG_COLOR_MASK_COLOR)
    {
@@ -1115,12 +1162,12 @@
       png_save_uint_16(buf + 2, back->green);
       png_save_uint_16(buf + 4, back->blue);
       if(png_ptr->bit_depth == 8 && (buf[0] | buf[2] | buf[4]))
-         {
-            png_warning(png_ptr,
-              "Ignoring attempt to write 16-bit bKGD chunk when bit_depth is 8");
-            return;
-         }
-      png_write_chunk(png_ptr, (png_bytep)png_bKGD, buf, (png_size_t)6);
+      {
+         png_warning(png_ptr,
+           "Ignoring attempt to write 16-bit bKGD chunk when bit_depth is 8");
+         return;
+      }
+      png_write_chunk(png_ptr, (png_bytep)png_bKGD, buf, 6);
    }
    else
    {
@@ -1131,7 +1178,7 @@
          return;
       }
       png_save_uint_16(buf, back->gray);
-      png_write_chunk(png_ptr, (png_bytep)png_bKGD, buf, (png_size_t)2);
+      png_write_chunk(png_ptr, (png_bytep)png_bKGD, buf, 2);
    }
 }
 #endif
@@ -1156,11 +1203,12 @@
       return;
    }
 
-   png_write_chunk_start(png_ptr, (png_bytep)png_hIST, (png_uint_32)(num_hist * 2));
+   png_write_chunk_start(png_ptr, (png_bytep)png_hIST,
+      (png_uint_32)(num_hist * 2));
    for (i = 0; i < num_hist; i++)
    {
       png_save_uint_16(buf, hist[i]);
-      png_write_chunk_data(png_ptr, buf, (png_size_t)2);
+      png_write_chunk_data(png_ptr, buf, 2);
    }
    png_write_chunk_end(png_ptr);
 }
@@ -1192,16 +1240,16 @@
    if (key == NULL || (key_len = png_strlen(key)) == 0)
    {
       png_warning(png_ptr, "zero length keyword");
-      return ((png_size_t)0);
+      return 0;
    }
 
    png_debug1(2, "Keyword to be checked is '%s'\n", key);
 
-   *new_key = (png_charp)png_malloc_warn(png_ptr, (png_uint_32)(key_len + 2));
+   *new_key = (png_charp)png_malloc_warn(png_ptr, key_len + 2);
    if (*new_key == NULL)
    {
       png_warning(png_ptr, "Out of memory while procesing keyword");
-      return ((png_size_t)0);
+      return 0;
    }
 
    /* Replace non-printing characters with a blank and print a warning */
@@ -1320,7 +1368,8 @@
       text_len = png_strlen(text);
 
    /* make sure we include the 0 after the key */
-   png_write_chunk_start(png_ptr, (png_bytep)png_tEXt, (png_uint_32)key_len+text_len+1);
+   png_write_chunk_start(png_ptr, (png_bytep)png_tEXt,
+      (png_uint_32)key_len+text_len+1);
    /*
     * We leave it to the application to meet PNG-1.0 requirements on the
     * contents of the text.  PNG-1.0 through PNG-1.2 discourage the use of
@@ -1366,7 +1415,7 @@
 
    if (text == NULL || *text == '\0' || compression==PNG_TEXT_COMPRESSION_NONE)
    {
-      png_write_tEXt(png_ptr, new_key, text, (png_size_t)0);
+      png_write_tEXt(png_ptr, new_key, text, 0);
       png_free(png_ptr, new_key);
       return;
    }
@@ -1386,7 +1435,7 @@
    png_write_chunk_data(png_ptr, (png_bytep)key, key_len + 1);
    buf[0] = (png_byte)compression;
    /* write compression */
-   png_write_chunk_data(png_ptr, (png_bytep)buf, (png_size_t)1);
+   png_write_chunk_data(png_ptr, (png_bytep)buf, 1);
    /* write the compressed data */
    png_write_compressed_data_out(png_ptr, &comp);
 
@@ -1503,7 +1552,7 @@
    png_save_int_32(buf + 4, y_offset);
    buf[8] = (png_byte)unit_type;
 
-   png_write_chunk(png_ptr, (png_bytep)png_oFFs, buf, (png_size_t)9);
+   png_write_chunk(png_ptr, (png_bytep)png_oFFs, buf, 9);
 }
 #endif
 
@@ -1532,8 +1581,8 @@
    png_debug1(3, "pCAL units length = %d\n", (int)units_len);
    total_len = purpose_len + units_len + 10;
 
-   params_len = (png_uint_32p)png_malloc(png_ptr, (png_uint_32)(nparams
-      *png_sizeof(png_uint_32)));
+   params_len = (png_uint_32p)png_malloc(png_ptr,
+      (png_size_t)(nparams * sizeof(png_uint_32)));
 
    /* Find the length of each parameter, making sure we don't count the
       null terminator for the last parameter. */
@@ -1552,8 +1601,8 @@
    png_save_int_32(buf + 4, X1);
    buf[8] = (png_byte)type;
    buf[9] = (png_byte)nparams;
-   png_write_chunk_data(png_ptr, buf, (png_size_t)10);
-   png_write_chunk_data(png_ptr, (png_bytep)units, (png_size_t)units_len);
+   png_write_chunk_data(png_ptr, buf, 10);
+   png_write_chunk_data(png_ptr, (png_bytep)units, units_len);
 
    png_free(png_ptr, new_purpose);
 
@@ -1645,7 +1694,7 @@
    png_save_uint_32(buf + 4, y_pixels_per_unit);
    buf[8] = (png_byte)unit_type;
 
-   png_write_chunk(png_ptr, (png_bytep)png_pHYs, buf, (png_size_t)9);
+   png_write_chunk(png_ptr, (png_bytep)png_pHYs, buf, 9);
 }
 #endif
 
@@ -1677,7 +1726,7 @@
    buf[5] = mod_time->minute;
    buf[6] = mod_time->second;
 
-   png_write_chunk(png_ptr, (png_bytep)png_tIME, buf, (png_size_t)7);
+   png_write_chunk(png_ptr, (png_bytep)png_tIME, buf, 7);
 }
 #endif
 
@@ -1704,11 +1753,11 @@
    png_size_t buf_size;
 
    png_debug(1, "in png_write_start_row\n");
-   buf_size = (png_size_t)(PNG_ROWBYTES(
-      png_ptr->usr_channels*png_ptr->usr_bit_depth,png_ptr->width)+1);
+   buf_size = (PNG_ROWBYTES(
+      png_ptr->usr_channels*png_ptr->usr_bit_depth, png_ptr->width) + 1);
 
    /* set up row buffer */
-   png_ptr->row_buf = (png_bytep)png_malloc(png_ptr, (png_uint_32)buf_size);
+   png_ptr->row_buf = (png_bytep)png_malloc(png_ptr, buf_size);
    png_ptr->row_buf[0] = PNG_FILTER_VALUE_NONE;
 
    /* set up filtering buffer, if using this filter */
@@ -1723,12 +1772,12 @@
    if (png_ptr->do_filter & (PNG_FILTER_AVG | PNG_FILTER_UP | PNG_FILTER_PAETH))
    {
      /* set up previous row buffer */
-      png_ptr->prev_row = (png_bytep)png_malloc(png_ptr, (png_uint_32)buf_size);
+      png_ptr->prev_row = (png_bytep)png_malloc(png_ptr, buf_size);
       png_memset(png_ptr->prev_row, 0, buf_size);
 
       if (png_ptr->do_filter & PNG_FILTER_UP)
       {
-         png_ptr->up_row = (png_bytep )png_malloc(png_ptr,
+         png_ptr->up_row = (png_bytep)png_malloc(png_ptr,
             (png_ptr->rowbytes + 1));
          png_ptr->up_row[0] = PNG_FILTER_VALUE_UP;
       }
@@ -1742,7 +1791,7 @@
 
       if (png_ptr->do_filter & PNG_FILTER_PAETH)
       {
-         png_ptr->paeth_row = (png_bytep )png_malloc(png_ptr,
+         png_ptr->paeth_row = (png_bytep)png_malloc(png_ptr,
             (png_ptr->rowbytes + 1));
          png_ptr->paeth_row[0] = PNG_FILTER_VALUE_PAETH;
       }
@@ -1841,8 +1890,8 @@
       {
          if (png_ptr->prev_row != NULL)
             png_memset(png_ptr->prev_row, 0,
-               (png_size_t)(PNG_ROWBYTES(png_ptr->usr_channels*
-               png_ptr->usr_bit_depth,png_ptr->width))+1);
+               (PNG_ROWBYTES(png_ptr->usr_channels*
+               png_ptr->usr_bit_depth, png_ptr->width)) + 1);
          return;
       }
    }
diff --git a/projects/visualc6/libpng.dsp b/projects/visualc6/libpng.dsp
index 57b516e..20bcb0a 100644
--- a/projects/visualc6/libpng.dsp
+++ b/projects/visualc6/libpng.dsp
@@ -8,16 +8,16 @@
 CFG=libpng - Win32 DLL Release
 !MESSAGE This is not a valid makefile. To build this project using NMAKE,
 !MESSAGE use the Export Makefile command and run
-!MESSAGE
+!MESSAGE 
 !MESSAGE NMAKE /f "libpng.mak".
-!MESSAGE
+!MESSAGE 
 !MESSAGE You can specify a configuration when running NMAKE
 !MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
+!MESSAGE 
 !MESSAGE NMAKE /f "libpng.mak" CFG="libpng - Win32 DLL Release"
-!MESSAGE
+!MESSAGE 
 !MESSAGE Possible choices for configuration are:
-!MESSAGE
+!MESSAGE 
 !MESSAGE "libpng - Win32 DLL Release" (based on "Win32 (x86) Dynamic-Link Library")
 !MESSAGE "libpng - Win32 DLL Debug" (based on "Win32 (x86) Dynamic-Link Library")
 !MESSAGE "libpng - Win32 DLL ASM Release" (based on "Win32 (x86) Dynamic-Link Library")
@@ -27,7 +27,7 @@
 !MESSAGE "libpng - Win32 LIB Debug" (based on "Win32 (x86) Static Library")
 !MESSAGE "libpng - Win32 LIB ASM Release" (based on "Win32 (x86) Static Library")
 !MESSAGE "libpng - Win32 LIB ASM Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
+!MESSAGE 
 
 # Begin Project
 # PROP AllowPerConfigDependencies 0
@@ -303,7 +303,7 @@
 # ADD BASE LIB32 /nologo
 # ADD LIB32 /nologo /out:"Win32_LIB_ASM_Debug\libpngd.lib"
 
-!ENDIF
+!ENDIF 
 
 # Begin Target
 
@@ -395,12 +395,12 @@
 
 !ELSEIF  "$(CFG)" == "libpng - Win32 LIB ASM Debug"
 
-!ENDIF
+!ENDIF 
 
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\scripts\pngw32.def
+SOURCE=..\..\scripts\pngwin.def
 
 !IF  "$(CFG)" == "libpng - Win32 DLL Release"
 
@@ -430,7 +430,7 @@
 
 # PROP Exclude_From_Build 1
 
-!ENDIF
+!ENDIF 
 
 # End Source File
 # Begin Source File
@@ -461,13 +461,17 @@
 
 SOURCE=..\..\pngconf.h
 # End Source File
+# Begin Source File
+
+SOURCE=..\..\pngpriv.h
+# End Source File
 # End Group
 # Begin Group "Resource Files"
 
 # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
 # Begin Source File
 
-SOURCE=..\..\scripts\pngw32.rc
+SOURCE=..\..\scripts\pngwin.rc
 
 !IF  "$(CFG)" == "libpng - Win32 DLL Release"
 
@@ -495,7 +499,7 @@
 
 # PROP Exclude_From_Build 1
 
-!ENDIF
+!ENDIF 
 
 # End Source File
 # End Group
diff --git a/projects/visualc71/PRJ0041.mak b/projects/visualc71/PRJ0041.mak
index 3a597b0..e15e12b 100644
--- a/projects/visualc71/PRJ0041.mak
+++ b/projects/visualc71/PRJ0041.mak
@@ -1,5 +1,5 @@
 # Prevent "Cannot find missing dependency..." warnings while compiling
-# pngw32.rc (PRJ0041).
+# pngwin.rc (PRJ0041).
 
 all: $(IntDir)\alloc.h \
 	 $(IntDir)\fp.h \
diff --git a/projects/visualc71/libpng.vcproj b/projects/visualc71/libpng.vcproj
index 06582ec..f1e7bec 100644
--- a/projects/visualc71/libpng.vcproj
+++ b/projects/visualc71/libpng.vcproj
@@ -32,7 +32,7 @@
 				Name="VCLinkerTool"
 				OutputFile="$(OutDir)/libpng14.dll"
 				LinkIncremental="1"
-				ModuleDefinitionFile="..\..\scripts\pngw32.def"/>
+				ModuleDefinitionFile="..\..\scripts\pngwin.def"/>
 			<Tool
 				Name="VCMIDLTool"/>
 			<Tool
@@ -79,7 +79,7 @@
 			<Tool
 				Name="VCLinkerTool"
 				OutputFile="$(OutDir)/libpng14d.dll"
-				ModuleDefinitionFile="..\..\scripts\pngw32.def"
+				ModuleDefinitionFile="..\..\scripts\pngwin.def"
 				GenerateDebugInformation="TRUE"/>
 			<Tool
 				Name="VCMIDLTool"/>
@@ -128,7 +128,7 @@
 				Name="VCLinkerTool"
 				OutputFile="$(OutDir)/libpng14.dll"
 				LinkIncremental="1"
-				ModuleDefinitionFile="..\..\scripts\pngw32.def"/>
+				ModuleDefinitionFile="..\..\scripts\pngwin.def"/>
 			<Tool
 				Name="VCMIDLTool"/>
 			<Tool
@@ -176,7 +176,7 @@
 			<Tool
 				Name="VCLinkerTool"
 				OutputFile="$(OutDir)/libpng14d.dll"
-				ModuleDefinitionFile="..\..\scripts\pngw32.def"
+				ModuleDefinitionFile="..\..\scripts\pngwin.def"
 				GenerateDebugInformation="TRUE"/>
 			<Tool
 				Name="VCMIDLTool"/>
@@ -597,7 +597,7 @@
 				</FileConfiguration>
 			</File>
 			<File
-				RelativePath="..\..\scripts\pngw32.def">
+				RelativePath="..\..\scripts\pngwin.def">
 				<FileConfiguration
 					Name="DLL VB|Win32"
 					ExcludedFromBuild="TRUE">
@@ -651,12 +651,15 @@
 			<File
 				RelativePath="..\..\pngconf.h">
 			</File>
+			<File
+				RelativePath="..\..\pngpriv.h">
+			</File>
 		</Filter>
 		<Filter
 			Name="Resource Files"
 			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
 			<File
-				RelativePath="..\..\scripts\pngw32.rc">
+				RelativePath="..\..\scripts\pngwin.rc">
 				<FileConfiguration
 					Name="LIB Release|Win32"
 					ExcludedFromBuild="TRUE">
diff --git a/scripts/descrip.mms b/scripts/descrip.mms
index 3584b0d..bb38aac 100644
--- a/scripts/descrip.mms
+++ b/scripts/descrip.mms
@@ -15,9 +15,12 @@
 
 CFLAGS= $(C_DEB) $(CC_DEFS) $(PREF)
 
-all : pngtest.exe libpng.olb
+all : pngtest.exe libpng.olb pngdefs.h
 		@ write sys$output " pngtest available"
 
+pngdefs.h:
+	echo "/* pngdefs.h was built by MMS */" > pngdefs.h
+
 libpng.olb : libpng.olb($(OBJS))
 	@ write sys$output " Libpng available"
 
@@ -29,24 +32,23 @@
    run pngtest
 
 clean :
-	delete *.obj;*,*.exe;*
+	delete *.obj;*,*.exe;*,pngdefs.h
 
 
 # Other dependencies.
-png.obj : png.h, pngconf.h
-pngpread.obj : png.h, pngconf.h
-pngset.obj : png.h, pngconf.h
-pngget.obj : png.h, pngconf.h
-pngread.obj : png.h, pngconf.h
-pngrtran.obj : png.h, pngconf.h
-pngrutil.obj : png.h, pngconf.h
-pngerror.obj : png.h, pngconf.h
-pngmem.obj : png.h, pngconf.h
-pngrio.obj : png.h, pngconf.h
-pngwio.obj : png.h, pngconf.h
-pngtest.obj : png.h, pngconf.h
-pngtrans.obj : png.h, pngconf.h
-pngwrite.obj : png.h, pngconf.h
-pngwtran.obj : png.h, pngconf.h
-pngwutil.obj : png.h, pngconf.h
-
+png.obj : png.h, pngconf.h, pngdefs.h, pngpriv.h
+pngpread.obj : png.h, pngconf.h, pngdefs.h, pngpriv.h
+pngset.obj : png.h, pngconf.h, pngdefs.h, pngpriv.h
+pngget.obj : png.h, pngconf.h, pngdefs.h, pngpriv.h
+pngread.obj : png.h, pngconf.h, pngdefs.h, pngpriv.h
+pngrtran.obj : png.h, pngconf.h, pngdefs.h, pngpriv.h
+pngrutil.obj : png.h, pngconf.h, pngdefs.h, pngpriv.h
+pngerror.obj : png.h, pngconf.h, pngdefs.h, pngpriv.h
+pngmem.obj : png.h, pngconf.h, pngdefs.h, pngpriv.h
+pngrio.obj : png.h, pngconf.h, pngdefs.h, pngpriv.h
+pngwio.obj : png.h, pngconf.h, pngdefs.h, pngpriv.h
+pngtrans.obj : png.h, pngconf.h, pngdefs.h, pngpriv.h
+pngwrite.obj : png.h, pngconf.h, pngdefs.h, pngpriv.h
+pngwtran.obj : png.h, pngconf.h, pngdefs.h, pngpriv.h
+pngwutil.obj : png.h, pngconf.h, pngdefs.h, pngpriv.h
+pngtest.obj : png.h, pngconf.h, pngdefs.h
diff --git a/scripts/libpng-config-head.in b/scripts/libpng-config-head.in
index 23371fe..c47c295 100755
--- a/scripts/libpng-config-head.in
+++ b/scripts/libpng-config-head.in
@@ -8,7 +8,7 @@
 
 # Modeled after libxml-config.
 
-version=1.4.0beta10
+version=1.4.0beta11
 prefix=""
 libdir=""
 libs=""
diff --git a/scripts/libpng.pc.in b/scripts/libpng.pc.in
index 722fafa..c3f5d20 100644
--- a/scripts/libpng.pc.in
+++ b/scripts/libpng.pc.in
@@ -5,6 +5,6 @@
 
 Name: libpng
 Description: Loads and saves PNG files
-Version: 1.4.0beta10
+Version: 1.4.0beta11
 Libs: -L${libdir} -lpng14
 Cflags: -I${includedir}
diff --git a/scripts/makefile.32sunu b/scripts/makefile.32sunu
index 2773d11..94356a1 100644
--- a/scripts/makefile.32sunu
+++ b/scripts/makefile.32sunu
@@ -8,7 +8,7 @@
 # Library name:
 LIBNAME=libpng14
 PNGMAJ = 1
-PNGMIN = 1.4.0beta10
+PNGMIN = 1.4.0beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
@@ -79,7 +79,10 @@
 .c.pic.o:
 	$(CC) -c $(CFLAGS) -KPIC -o $@ $*.c
 
-all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config
+all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.32sunu */" > pngdefs.h
 
 libpng.a: $(OBJS)
 	$(AR_RC) $@ $(OBJS)
@@ -129,12 +132,13 @@
 test: pngtest
 	./pngtest
 
-install-headers: png.h pngconf.h
+install-headers: png.h pngconf.h pngdefs.h
 	-@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi
 	-@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi
-	cp png.h pngconf.h $(DI)/$(LIBNAME)
+	cp png.h pngconf.h pngdefs.h $(DI)/$(LIBNAME)
 	chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h
-	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h
+	chmod 644 $(DI)/$(LIBNAME)/pngdefs.h
+	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pngdefs.h
 	-@$(RM_F) $(DI)/libpng
 	(cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .)
 
@@ -210,7 +214,7 @@
 clean:
 	$(RM_F) *.o libpng.a pngtest pngtesti pngout.png \
 	libpng-config $(LIBSO) $(LIBSOMAJ)* \
-	libpng.pc
+	libpng.pc pngdefs.h
 
 DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
 writelock:
@@ -218,20 +222,20 @@
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-png.o png.pic.o: png.h pngconf.h pngintrn.h
-pngerror.o pngerror.pic.o: png.h pngconf.h pngintrn.h
-pngrio.o pngrio.pic.o: png.h pngconf.h pngintrn.h
-pngwio.o pngwio.pic.o: png.h pngconf.h pngintrn.h
-pngmem.o pngmem.pic.o: png.h pngconf.h pngintrn.h
-pngset.o pngset.pic.o: png.h pngconf.h pngintrn.h
-pngget.o pngget.pic.o: png.h pngconf.h pngintrn.h
-pngread.o pngread.pic.o: png.h pngconf.h pngintrn.h
-pngrtran.o pngrtran.pic.o: png.h pngconf.h pngintrn.h
-pngrutil.o pngrutil.pic.o: png.h pngconf.h pngintrn.h
-pngtrans.o pngtrans.pic.o: png.h pngconf.h pngintrn.h
-pngwrite.o pngwrite.pic.o: png.h pngconf.h pngintrn.h
-pngwtran.o pngwtran.pic.o: png.h pngconf.h pngintrn.h
-pngwutil.o pngwutil.pic.o: png.h pngconf.h pngintrn.h
-pngpread.o pngpread.pic.o: png.h pngconf.h pngintrn.h
+png.o png.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngerror.o pngerror.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrio.o pngrio.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwio.o pngwio.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngmem.o pngmem.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngset.o pngset.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngget.o pngget.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngread.o pngread.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran.o pngrtran.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil.o pngrutil.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans.o pngtrans.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite.o pngwrite.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran.o pngwtran.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil.o pngwutil.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngpread.o pngpread.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
 
-pngtest.o: png.h pngconf.h pngintrn.h
+pngtest.o: png.h pngconf.h pngdefs.h
diff --git a/scripts/makefile.64sunu b/scripts/makefile.64sunu
index 1ed505f..ab68f2e 100644
--- a/scripts/makefile.64sunu
+++ b/scripts/makefile.64sunu
@@ -8,7 +8,7 @@
 # Library name:
 LIBNAME=libpng14
 PNGMAJ = 1
-PNGMIN = 1.4.0beta10
+PNGMIN = 1.4.0beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
@@ -79,7 +79,10 @@
 .c.pic.o:
 	$(CC) -c $(CFLAGS) -KPIC -o $@ $*.c
 
-all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config
+all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.64sunu */" > pngdefs.h
 
 libpng.a: $(OBJS)
 	$(AR_RC) $@ $(OBJS)
@@ -129,12 +132,13 @@
 test: pngtest
 	./pngtest
 
-install-headers: png.h pngconf.h
+install-headers: png.h pngconf.h pngdefs.h
 	-@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi
 	-@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi
-	cp png.h pngconf.h $(DI)/$(LIBNAME)
+	cp png.h pngconf.h pngdefs.h $(DI)/$(LIBNAME)
 	chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h
-	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h
+	chmod 644 $(DI)/$(LIBNAME)/pngdefs.h
+	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pngdefs.h
 	-@$(RM_F) $(DI)/libpng
 	(cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .)
 
@@ -210,7 +214,7 @@
 clean:
 	$(RM_F) *.o libpng.a pngtest pngtesti pngout.png \
 	libpng-config $(LIBSO) $(LIBSOMAJ)* \
-	libpng.pc
+	libpng.pc pngdefs.h
 
 DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
 writelock:
@@ -218,20 +222,20 @@
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-png.o png.pic.o: png.h pngconf.h pngintrn.h
-pngerror.o pngerror.pic.o: png.h pngconf.h pngintrn.h
-pngrio.o pngrio.pic.o: png.h pngconf.h pngintrn.h
-pngwio.o pngwio.pic.o: png.h pngconf.h pngintrn.h
-pngmem.o pngmem.pic.o: png.h pngconf.h pngintrn.h
-pngset.o pngset.pic.o: png.h pngconf.h pngintrn.h
-pngget.o pngget.pic.o: png.h pngconf.h pngintrn.h
-pngread.o pngread.pic.o: png.h pngconf.h pngintrn.h
-pngrtran.o pngrtran.pic.o: png.h pngconf.h pngintrn.h
-pngrutil.o pngrutil.pic.o: png.h pngconf.h pngintrn.h
-pngtrans.o pngtrans.pic.o: png.h pngconf.h pngintrn.h
-pngwrite.o pngwrite.pic.o: png.h pngconf.h pngintrn.h
-pngwtran.o pngwtran.pic.o: png.h pngconf.h pngintrn.h
-pngwutil.o pngwutil.pic.o: png.h pngconf.h pngintrn.h
-pngpread.o pngpread.pic.o: png.h pngconf.h pngintrn.h
+png.o png.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngerror.o pngerror.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrio.o pngrio.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwio.o pngwio.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngmem.o pngmem.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngset.o pngset.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngget.o pngget.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngread.o pngread.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran.o pngrtran.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil.o pngrutil.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans.o pngtrans.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite.o pngwrite.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran.o pngwtran.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil.o pngwutil.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngpread.o pngpread.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
 
-pngtest.o: png.h pngconf.h pngintrn.h
+pngtest.o: png.h pngconf.h pngdefs.h
diff --git a/scripts/makefile.acorn b/scripts/makefile.acorn
index ec39ff2..3f050a3 100644
--- a/scripts/makefile.acorn
+++ b/scripts/makefile.acorn
@@ -36,6 +36,11 @@
 @.pngtest:   @.o.pngtest @.libpng-lib C:o.Stubs Zlib:zlib_lib
 	Link $(Linkflags) @.o.pngtest @.libpng-lib C:o.Stubs Zlib:zlib_lib
 
+all: pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.acorn */" > pngdefs.h
+
 .SUFFIXES: .o .mm .c
 
 .c.mm:
@@ -46,5 +51,4 @@
 
 # Static dependencies:
 
-
 # Dynamic dependencies:
diff --git a/scripts/makefile.aix b/scripts/makefile.aix
index 71c975d..33410ed 100644
--- a/scripts/makefile.aix
+++ b/scripts/makefile.aix
@@ -20,7 +20,7 @@
 
 LIBNAME=libpng14
 PNGMAJ = 1
-PNGMIN = 1.4.0beta10
+PNGMIN = 1.4.0beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 prefix=/usr/local
@@ -60,7 +60,10 @@
 	pnggccrd$(O)
 
 # Targets
-all: $(LIBNAME)$(A) pngtest$(E)
+all: $(LIBNAME)$(A) pngtest$(E) pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.aix */" > pngdefs.h
 
 $(LIBNAME)$(A): $(OBJS)
 	$(AR_RC) $@ $(OBJS)
@@ -95,21 +98,21 @@
 clean:
 	$(RM_F) *.o $(LIBNAME)$(A) pngtest pngout.png
 
-png$(O): png.h pngconf.h pngintrn.h
-pngerror$(O): png.h pngconf.h pngintrn.h
-pnggccrd$(O): png.h pngconf.h pngintrn.h
-pngget$(O): png.h pngconf.h pngintrn.h
-pngmem$(O): png.h pngconf.h pngintrn.h
-pngpread$(O): png.h pngconf.h pngintrn.h
-pngread$(O): png.h pngconf.h pngintrn.h
-pngrio$(O): png.h pngconf.h pngintrn.h
-pngrtran$(O): png.h pngconf.h pngintrn.h
-pngrutil$(O): png.h pngconf.h pngintrn.h
-pngset$(O): png.h pngconf.h pngintrn.h
-pngtest$(O): png.h pngconf.h pngintrn.h
-pngtrans$(O): png.h pngconf.h pngintrn.h
-pngwio$(O): png.h pngconf.h pngintrn.h
-pngwrite$(O): png.h pngconf.h pngintrn.h
-pngwtran$(O): png.h pngconf.h pngintrn.h
-pngwutil$(O): png.h pngconf.h pngintrn.h
-
+png$(O):      png.h pngconf.h pngpriv.h
+pngerror$(O): png.h pngconf.h pngpriv.h
+pnggccrd$(O): png.h pngconf.h pngpriv.h
+pngget$(O):   png.h pngconf.h pngpriv.h
+pngmem$(O):   png.h pngconf.h pngpriv.h
+pngpread$(O): png.h pngconf.h pngpriv.h
+pngread$(O):  png.h pngconf.h pngpriv.h
+pngrio$(O):   png.h pngconf.h pngpriv.h
+pngrtran$(O): png.h pngconf.h pngpriv.h
+pngrutil$(O): png.h pngconf.h pngpriv.h
+pngset$(O):   png.h pngconf.h pngpriv.h
+pngtest$(O):  png.h pngconf.h pngpriv.h
+pngtrans$(O): png.h pngconf.h pngpriv.h
+pngwio$(O):   png.h pngconf.h pngpriv.h
+pngwrite$(O): png.h pngconf.h pngpriv.h
+pngwtran$(O): png.h pngconf.h pngpriv.h
+pngwutil$(O): png.h pngconf.h pngpriv.h
+pngtest$(O):  png.h pngconf.h
diff --git a/scripts/makefile.amiga b/scripts/makefile.amiga
index 79cb424..a578bca 100644
--- a/scripts/makefile.amiga
+++ b/scripts/makefile.amiga
@@ -32,7 +32,10 @@
 	pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
 	pngwtran.o pngmem.o pngerror.o pngpread.o
 
-all: libpng.lib pngtest
+all: libpng.lib pngtest pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.amiga */" > pngdefs.h
 
 libpng.lib: $(OBJS)
 -$(RM) libpng.lib
diff --git a/scripts/makefile.atari b/scripts/makefile.atari
index 9566d5d..462732a 100644
--- a/scripts/makefile.atari
+++ b/scripts/makefile.atari
@@ -30,7 +30,10 @@
 	$(LBR)(pngrtran.o) $(LBR)(pngwtran.o)\
 	$(LBR)(pngmem.o) $(LBR)(pngrio.o) $(LBR)(pngwio.o) $(LBR)(pngpread.o)
 
-all: $(LBR) pngtest.ttp
+all: $(LBR) pngtest.ttp pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.atari */" > pngdefs.h
 
 $(LBR): $(OBJS)
 
@@ -43,9 +46,12 @@
 	-@mkdir $(DESTDIR)$(LIBPATH)
 	-@rm -f $(DESTDIR)$(INCPATH)/png.h
 	-@rm -f $(DESTDIR)$(INCPATH)/pngconf.h
+	-@rm -f $(DESTDIR)$(INCPATH)/pngdefs.h
 	cp png.h $(DESTDIR)$(INCPATH)/libpng
 	cp pngconf.h $(DESTDIR)$(INCPATH)/libpng
+	cp pngdefs.h $(DESTDIR)$(INCPATH)/libpng
 	chmod 644 $(DESTDIR)$(INCPATH)/libpng/png.h
 	chmod 644 $(DESTDIR)$(INCPATH)/libpng/pngconf.h
+	chmod 644 $(DESTDIR)$(INCPATH)/libpng/pngdefs.h
 	(cd $(DESTDIR)$(INCPATH); ln -f -s $(LIBNAME) libpng; \
 	ln -f -s $(LIBNAME)/* .)
diff --git a/scripts/makefile.bc32 b/scripts/makefile.bc32
index 04407dd..65fba61 100644
--- a/scripts/makefile.bc32
+++ b/scripts/makefile.bc32
@@ -100,9 +100,11 @@
 .obj.exe:
 	$(LD) $(LDFLAGS) $*.obj $(LIBNAME) zlib.lib $(NOEHLIB)
 
-
 ## Major targets
-all: libpng pngtest
+all: libpng pngtest pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.bc32 */" > pngdefs.h
 
 libpng: $(LIBNAME)
 
@@ -111,24 +113,23 @@
 test: pngtest.exe
 	pngtest
 
-
 ## Minor Targets
 
-png.obj: png.c
-pngerror.obj: pngerror.c
-pngget.obj: pngget.c
-pngmem.obj: pngmem.c
-pngpread.obj: pngpread.c
-pngread.obj: pngread.c
-pngrio.obj: pngrio.c
-pngrtran.obj: pngrtran.c
-pngrutil.obj: pngrutil.c
-pngset.obj: pngset.c
-pngtrans.obj: pngtrans.c
-pngwio.obj: pngwio.c
-pngwrite.obj: pngwrite.c
-pngwtran.obj: pngwtran.c
-pngwutil.obj: pngwutil.c
+png.obj: png.c png.h pngconf.h pngdefs.h pngpriv.h
+pngerror.obj: pngerror.c png.h pngconf.h pngdefs.h pngpriv.h
+pngget.obj: pngget.c png.h pngconf.h pngdefs.h pngpriv.h
+pngmem.obj: pngmem.c png.h pngconf.h pngdefs.h pngpriv.h
+pngpread.obj: pngpread.c png.h pngconf.h pngdefs.h pngpriv.h
+pngread.obj: pngread.c png.h pngconf.h pngdefs.h pngpriv.h
+pngrio.obj: pngrio.c png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran.obj: pngrtran.c png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil.obj: pngrutil.c png.h pngconf.h pngdefs.h pngpriv.h
+pngset.obj: pngset.c png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans.obj: pngtrans.c png.h pngconf.h pngdefs.h pngpriv.h
+pngwio.obj: pngwio.c png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite.obj: pngwrite.c png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran.obj: pngwtran.c png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil.obj: pngwutil.c png.h pngconf.h pngdefs.h pngpriv.h
 
 
 $(LIBNAME): $(OBJS)
@@ -147,6 +148,7 @@
 	-del *.map
 	-del *.tds
 	-del pngout.png
+	-del pngdefs.h
 
 
 # End of makefile for libpng
diff --git a/scripts/makefile.beos b/scripts/makefile.beos
index a30a5f6..27228f8 100644
--- a/scripts/makefile.beos
+++ b/scripts/makefile.beos
@@ -8,7 +8,7 @@
 # Library name:
 LIBNAME=libpng14
 PNGMAJ = 1
-PNGMIN = 1.4.0beta10
+PNGMIN = 1.4.0beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
@@ -75,7 +75,10 @@
 
 .SUFFIXES:      .c .o
 
-all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config
+all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.beos */" > pngdefs.h
 
 libpng.a: $(OBJS)
 	$(AR_RC) $@ $(OBJS)
@@ -109,12 +112,13 @@
 test: pngtest
 	./pngtest
 
-install-headers: png.h pngconf.h
+install-headers: png.h pngconf.h pngdefs.h
 	-@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi
 	-@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi
-	cp png.h pngconf.h $(DI)/$(LIBNAME)
+	cp png.h pngconf.h pngdefs.h $(DI)/$(LIBNAME)
 	chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h
-	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h
+	chmod 644 $(DI)/$(LIBNAME)/pngdefs.h
+	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pngdefs.h
 	-@$(RM_F) $(DI)/libpng
 	(cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .)
 
@@ -187,23 +191,23 @@
 clean:
 	$(RM_F) *.o libpng.a pngtest pngout.png libpng-config \
 	$(LIBSO) $(LIBSOMAJ)* pngtesti \
-	libpng.pc
+	libpng.pc pngdefs.h
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-png.o png.pic.o: png.h pngconf.h pngintrn.h
-pngerror.o pngerror.pic.o: png.h pngconf.h pngintrn.h
-pngrio.o pngrio.pic.o: png.h pngconf.h pngintrn.h
-pngwio.o pngwio.pic.o: png.h pngconf.h pngintrn.h
-pngmem.o pngmem.pic.o: png.h pngconf.h pngintrn.h
-pngset.o pngset.pic.o: png.h pngconf.h pngintrn.h
-pngget.o pngget.pic.o: png.h pngconf.h pngintrn.h
-pngread.o pngread.pic.o: png.h pngconf.h pngintrn.h
-pngrtran.o pngrtran.pic.o: png.h pngconf.h pngintrn.h
-pngrutil.o pngrutil.pic.o: png.h pngconf.h pngintrn.h
-pngtrans.o pngtrans.pic.o: png.h pngconf.h pngintrn.h
-pngwrite.o pngwrite.pic.o: png.h pngconf.h pngintrn.h
-pngwtran.o pngwtran.pic.o: png.h pngconf.h pngintrn.h
-pngwutil.o pngwutil.pic.o: png.h pngconf.h pngintrn.h
-pngpread.o pngpread.pic.o: png.h pngconf.h pngintrn.h
-pngtest.o: png.h pngconf.h pngintrn.h
+png.o png.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngerror.o pngerror.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrio.o pngrio.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwio.o pngwio.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngmem.o pngmem.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngset.o pngset.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngget.o pngget.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngread.o pngread.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran.o pngrtran.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil.o pngrutil.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans.o pngtrans.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite.o pngwrite.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran.o pngwtran.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil.o pngwutil.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngpread.o pngpread.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtest.o: png.h pngconf.h pngdefs.h
diff --git a/scripts/makefile.bor b/scripts/makefile.bor
index a5651aa..74f2278 100644
--- a/scripts/makefile.bor
+++ b/scripts/makefile.bor
@@ -107,7 +107,10 @@
 
 
 ## Major targets
-all: libpng pngtest
+all: libpng pngtest pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.bor */" > pngdefs.h
 
 libpng: $(LIBNAME)
 
@@ -119,22 +122,21 @@
 
 ## Minor Targets
 
-png.obj: png.c
-pngerror.obj: pngerror.c
-pngget.obj: pngget.c
-pngmem.obj: pngmem.c
-pngpread.obj: pngpread.c
-pngread.obj: pngread.c
-pngrio.obj: pngrio.c
-pngrtran.obj: pngrtran.c
-pngrutil.obj: pngrutil.c
-pngset.obj: pngset.c
-pngtrans.obj: pngtrans.c
-pngwio.obj: pngwio.c
-pngwrite.obj: pngwrite.c
-pngwtran.obj: pngwtran.c
-pngwutil.obj: pngwutil.c
-
+png.obj: png.c png.h pngconf.h pngdefs.h pngpriv.h
+pngerror.obj: pngerror.c png.h pngconf.h pngdefs.h pngpriv.h
+pngget.obj: pngget.c png.h pngconf.h pngdefs.h pngpriv.h
+pngmem.obj: pngmem.c png.h pngconf.h pngdefs.h pngpriv.h
+pngpread.obj: pngpread.c png.h pngconf.h pngdefs.h pngpriv.h
+pngread.obj: pngread.c png.h pngconf.h pngdefs.h pngpriv.h
+pngrio.obj: pngrio.c png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran.obj: pngrtran.c png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil.obj: pngrutil.c png.h pngconf.h pngdefs.h pngpriv.h
+pngset.obj: pngset.c png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans.obj: pngtrans.c png.h pngconf.h pngdefs.h pngpriv.h
+pngwio.obj: pngwio.c png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite.obj: pngwrite.c png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran.obj: pngwtran.c png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil.obj: pngwutil.c png.h pngconf.h pngdefs.h pngpriv.h
 
 $(LIBNAME): $(OBJS)
 	-del $(LIBNAME)
@@ -157,6 +159,7 @@
 	-del *.lib
 	-del *.lst
 	-del *.map
+	-del pngdefs.h
 
 
 # End of makefile for libpng
diff --git a/scripts/makefile.cygwin b/scripts/makefile.cygwin
index b384637..f6a91f3 100644
--- a/scripts/makefile.cygwin
+++ b/scripts/makefile.cygwin
@@ -65,7 +65,7 @@
 LIBNAME = libpng14
 PNGMAJ = 1
 CYGDLL = 14
-PNGMIN = 1.4.0beta10
+PNGMIN = 1.4.0beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 SHAREDLIB=cygpng$(CYGDLL).dll
@@ -113,21 +113,10 @@
 	$(CC) -c $(CFLAGS) -o $@ $<
 
 all: all-static all-shared libpng.pc libpng-config libpng.pc libpng-config \
-	pngconf.h
+	pngconf.h pngdefs.h
 
-pngconf.h.in: pngconf.h
-	cat pngconf.h > pngconf.h.in
-
-pngconf.h: pngconf.h.in
-	sed "/Makefile-supplied defines go here:/q" pngconf.h.in > pngconf.h
-
-	/* if you don't want to use the intel MMX code, uncomment this */
-	# echo "#define PNG_NO_MMX_CODE" >> pngconf.h
-
-	/* if you don't need thread safety you can uncomment this */
-	# echo "#define PNG_THREAD_UNSAFE_OK" >> pngconf.h
-
-	sed "1,/Makefile-supplied defines go here:/d" pngconf.h.in >> pngconf.h
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.cygwin */" > pngdefs.h
 
 # Make this to verify that "make [...] install" will do what you want.
 buildsetup-tell:
@@ -159,14 +148,14 @@
 all-static: $(STATLIB) pngtest-stat$(EXE)
 all-shared: $(SHAREDLIB) pngtest$(EXE)
 
-pnggccrd.o: pnggccrd.c png.h pngconf.h
+pnggccrd.o: pnggccrd.c png.h pngconf.h pngdefs.h pngpriv.h
 	@echo ""
 	@echo '    You can ignore the "control reaches end of non-void function"'
 	@echo '    warning and "<variable> defined but not used" warnings:'
 	@echo ""
 	$(CC) -c $(CFLAGS) -o $@ $<
 
-pnggccrd.pic.o:	pnggccrd.c png.h pngconf.h
+pnggccrd.pic.o:	pnggccrd.c png.h pngconf.h pngdefs.h pngpriv.h
 	@echo ""
 	@echo '    You can ignore the "control reaches end of non-void function"'
 	@echo '    warning and "<variable> defined but not used" warnings:'
@@ -177,7 +166,7 @@
 	ar rc $@ $(OBJS)
 	$(RANLIB) $@
 
-$(SHAREDDEF): scripts/pngw32.def
+$(SHAREDDEF): scripts/pngwin.def
 	cat $< | sed -e '1{G;s/^\(.*\)\(\n\)/EXPORTS/;};2,/^EXPORTS/d' | \
 	sed -e 's/\([^;]*\);/;/' > $@
 
@@ -190,10 +179,10 @@
 pngtest-stat$(EXE): pngtest.o $(STATLIB)
 	$(CC) -static $(CFLAGS) $< $(LDFLAGS) -o $@
 
-pngtest.pic.o: pngtest.c
+pngtest.pic.o: pngtest.c pngconf.h pngdefs.h
 	$(CC) $(CFLAGS) -c $< -o $@
 
-pngtest.o: pngtest.c
+pngtest.o: pngtest.c pngconf.h pngdefs.h
 	$(CC) $(CFLAGS) -c $< -o $@
 
 test: test-static test-shared
@@ -228,7 +217,8 @@
 	-@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi
 	-@rm -f $(DI)/png.h
 	-@rm -f $(DI)/pngconf.h
-	install -m 644 $(S)/png.h $(S)/pngconf.h $(DI)/$(LIBNAME)
+	-@rm -f $(DI)/pngdefs.h
+	install -m 644 $(S)/png.h $(S)/pngconf.h $(S)/pngdefs.h $(DI)/$(LIBNAME)
 	-@rm -f $(DI)/libpng
 	(cd $(DI); ln -sf $(LIBNAME) libpng; ln -sf $(LIBNAME)/* .)
 
@@ -283,7 +273,7 @@
 clean:
 	/bin/rm -f *.pic.o *.o $(STATLIB) $(IMPLIB) $(SHAREDLIB) \
 	pngtest-stat$(EXE) pngtest$(EXE) pngout.png $(SHAREDDEF) \
-	libpng-config libpng.pc pngtesti$(EXE)
+	libpng-config libpng.pc pngtesti$(EXE) pngdefs.h
 
 DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
 writelock:
@@ -293,25 +283,22 @@
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-png.o png.pic.o:		png.h pngconf.h pngintrn.h png.c
-pngerror.o pngerror.pic.o:	png.h pngconf.h pngintrn.h pngerror.c
-pngrio.o pngrio.pic.o:		png.h pngconf.h pngintrn.h pngrio.c
-pngwio.o pngwio.pic.o:		png.h pngconf.h pngintrn.h pngwio.c
-pngmem.o pngmem.pic.o:		png.h pngconf.h pngintrn.h pngmem.c
-pngset.o pngset.pic.o:		png.h pngconf.h pngintrn.h pngset.c
-pnggccrd.o pnggccrd.pic.o:	png.h pngconf.h pngintrn.h pngget.c
-pngget.o pngget.pic.o:		png.h pngconf.h pngintrn.h pngget.c
-pngread.o pngread.pic.o:	png.h pngconf.h pngintrn.h pngread.c
-pngrtran.o pngrtran.pic.o:	png.h pngconf.h pngintrn.h pngrtran.c
-pngrutil.o pngrutil.pic.o:	png.h pngconf.h pngintrn.h pngrutil.c
-pngtrans.o pngtrans.pic.o:	png.h pngconf.h pngintrn.h pngtrans.c
-pngwrite.o pngwrite.pic.o:	png.h pngconf.h pngintrn.h pngwrite.c
-pngwtran.o pngwtran.pic.o:	png.h pngconf.h pngintrn.h pngwtran.c
-pngwutil.o pngwutil.pic.o:	png.h pngconf.h pngintrn.h pngwutil.c
-pngpread.o pngpread.pic.o:	png.h pngconf.h pngintrn.h pngpread.c
+png.o png.pic.o:		png.h pngconf.h pngdefs.h pngpriv.h png.c
+pngerror.o pngerror.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngerror.c
+pngrio.o pngrio.pic.o:		png.h pngconf.h pngdefs.h pngpriv.h pngrio.c
+pngwio.o pngwio.pic.o:		png.h pngconf.h pngdefs.h pngpriv.h pngwio.c
+pngmem.o pngmem.pic.o:		png.h pngconf.h pngdefs.h pngpriv.h pngmem.c
+pngset.o pngset.pic.o:		png.h pngconf.h pngdefs.h pngpriv.h pngset.c
+pnggccrd.o pnggccrd.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngget.c
+pngget.o pngget.pic.o:		png.h pngconf.h pngdefs.h pngpriv.h pngget.c
+pngread.o pngread.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngread.c
+pngrtran.o pngrtran.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngrtran.c
+pngrutil.o pngrutil.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngrutil.c
+pngtrans.o pngtrans.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngtrans.c
+pngwrite.o pngwrite.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngwrite.c
+pngwtran.o pngwtran.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngwtran.c
+pngwutil.o pngwutil.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngwutil.c
+pngpread.o pngpread.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngpread.c
 
-pngtest.o:			png.h pngconf.h pngintrn.h pngtest.c
-pngtest-stat.o:			png.h pngconf.h pngintrn.h pngtest.c
-
-
-
+pngtest.o:			png.h pngconf.h pngdefs.h pngtest.c
+pngtest-stat.o:			png.h pngconf.h pngdefs.h pngtest.c
diff --git a/scripts/makefile.darwin b/scripts/makefile.darwin
index ba2bf18..cae0d8a 100644
--- a/scripts/makefile.darwin
+++ b/scripts/makefile.darwin
@@ -19,7 +19,7 @@
 # Library name:
 LIBNAME = libpng14
 PNGMAJ = 1
-PNGMIN = 1.4.0beta10
+PNGMIN = 1.4.0beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
@@ -70,7 +70,10 @@
 .c.pic.o:
 	$(CC) -c $(CFLAGS) -fno-common -o $@ $*.c
 
-all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config
+all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.darwin */" > pngdefs.h
 
 libpng.a: $(OBJS)
 	$(AR_RC) $@ $(OBJS)
@@ -108,12 +111,13 @@
 test: pngtest
 	./pngtest
 
-install-headers: png.h pngconf.h
+install-headers: png.h pngconf.h pngdefs.h
 	-@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi
 	-@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi
-	cp png.h pngconf.h $(DI)/$(LIBNAME)
+	cp png.h pngconf.h pngdefs.h $(DI)/$(LIBNAME)
 	chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h
-	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h
+	chmod 644 $(DI)/$(LIBNAME)/pngdefs.h
+	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pngdefs.h
 	-@$(RM_F) $(DI)/libpng
 	(cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .)
 
@@ -188,7 +192,7 @@
 
 clean:
 	$(RM_F) *.o libpng.a pngtest pngout.png libpng-config \
-	libpng.pc $(LIBNAME).*dylib pngtesti
+	libpng.pc $(LIBNAME).*dylib pngtesti pngdefs.h
 
 DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
 writelock:
@@ -196,20 +200,20 @@
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-png.o png.pic.o: png.h pngconf.h pngintrn.h
-pngerror.o pngerror.pic.o: png.h pngconf.h pngintrn.h
-pngrio.o pngrio.pic.o: png.h pngconf.h pngintrn.h
-pngwio.o pngwio.pic.o: png.h pngconf.h pngintrn.h
-pngmem.o pngmem.pic.o: png.h pngconf.h pngintrn.h
-pngset.o pngset.pic.o: png.h pngconf.h pngintrn.h
-pngget.o pngget.pic.o: png.h pngconf.h pngintrn.h
-pngread.o pngread.pic.o: png.h pngconf.h pngintrn.h
-pngrtran.o pngrtran.pic.o: png.h pngconf.h pngintrn.h
-pngrutil.o pngrutil.pic.o: png.h pngconf.h pngintrn.h
-pngtrans.o pngtrans.pic.o: png.h pngconf.h pngintrn.h
-pngwrite.o pngwrite.pic.o: png.h pngconf.h pngintrn.h
-pngwtran.o pngwtran.pic.o: png.h pngconf.h pngintrn.h
-pngwutil.o pngwutil.pic.o: png.h pngconf.h pngintrn.h
-pngpread.o pngpread.pic.o: png.h pngconf.h pngintrn.h
+png.o png.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngerror.o pngerror.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrio.o pngrio.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwio.o pngwio.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngmem.o pngmem.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngset.o pngset.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngget.o pngget.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngread.o pngread.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran.o pngrtran.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil.o pngrutil.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans.o pngtrans.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite.o pngwrite.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran.o pngwtran.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil.o pngwutil.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngpread.o pngpread.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
 
-pngtest.o: png.h pngconf.h pngintrn.h
+pngtest.o: png.h pngconf.h pngdefs.h
diff --git a/scripts/makefile.dec b/scripts/makefile.dec
index 950b6f9..db43350 100644
--- a/scripts/makefile.dec
+++ b/scripts/makefile.dec
@@ -5,7 +5,7 @@
 
 # Library name:
 PNGMAJ = 1
-PNGMIN = 1.4.0beta10
+PNGMIN = 1.4.0beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 LIBNAME = libpng14
 
@@ -59,7 +59,10 @@
 	pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
 	pngwtran.o pngmem.o pngerror.o pngpread.o
 
-all: $(LIBSO) libpng.a pngtest libpng.pc libpng-config
+all: $(LIBSO) libpng.a pngtest libpng.pc libpng-config pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.dec */" > pngdefs.h
 
 libpng.a: $(OBJS)
 	$(AR_RC) $@  $(OBJS)
@@ -94,12 +97,13 @@
 test: pngtest
 	./pngtest
 
-install-headers: png.h pngconf.h
+install-headers: png.h pngconf.h pngdefs.h
 	-@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi
 	-@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi
-	cp png.h pngconf.h $(DI)/$(LIBNAME)
+	cp png.h pngconf.h pngdefs.h $(DI)/$(LIBNAME)
 	chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h
-	-@/bin/rm -f $(DI)/png.h $(DI)/pngconf.h
+	chmod 644 $(DI)/$(LIBNAME)/pngdefs.h
+	-@/bin/rm -f $(DI)/png.h $(DI)/pngconf.h $(DI)/pngdefs.h
 	-@/bin/rm -f $(DI)/libpng
 	(cd $(DI); $(LN_SF)(LIBNAME) libpng; $(LN_SF)(LIBNAME)/* .)
 
@@ -174,24 +178,24 @@
 clean:
 	/bin/rm -f *.o libpng.a pngtest pngtesti pngout.png \
 	libpng-config $(LIBSO) $(LIBSOMAJ)* \
-	libpng.pc
+	libpng.pc pngdefs.h
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-png.o: png.h pngconf.h pngintrn.h
-pngerror.o: png.h pngconf.h pngintrn.h
-pngrio.o: png.h pngconf.h pngintrn.h
-pngwio.o: png.h pngconf.h pngintrn.h
-pngmem.o: png.h pngconf.h pngintrn.h
-pngset.o: png.h pngconf.h pngintrn.h
-pngget.o: png.h pngconf.h pngintrn.h
-pngread.o: png.h pngconf.h pngintrn.h
-pngrtran.o: png.h pngconf.h pngintrn.h
-pngrutil.o: png.h pngconf.h pngintrn.h
-pngtest.o: png.h pngconf.h pngintrn.h
-pngtrans.o: png.h pngconf.h pngintrn.h
-pngwrite.o: png.h pngconf.h pngintrn.h
-pngwtran.o: png.h pngconf.h pngintrn.h
-pngwutil.o: png.h pngconf.h pngintrn.h
-pngpread.o: png.h pngconf.h pngintrn.h
+png.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngerror.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrio.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwio.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngmem.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngset.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngget.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngread.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngpread.o: png.h pngconf.h pngdefs.h pngpriv.h
 
+pngtest.o: png.h pngconf.h pngdefs.h
diff --git a/scripts/makefile.dj2 b/scripts/makefile.dj2
index 6dc9d4a..2240012 100644
--- a/scripts/makefile.dj2
+++ b/scripts/makefile.dj2
@@ -20,7 +20,10 @@
 	pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o pngwtran.o \
 	pngmem.o pngerror.o pngpread.o
 
-all: libpng.a pngtest
+all: libpng.a pngtest pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.dj2 */" > pngdefs.h
 
 libpng.a: $(OBJS)
 	ar rc $@  $(OBJS)
@@ -33,25 +36,25 @@
 test: pngtest
 	./pngtest
 clean:
-	rm -f *.o libpng.a pngtest pngout.png
+	rm -f *.o libpng.a pngtest pngout.png pngdefs.h
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-png.o: png.h pngconf.h pngintrn.h
-pngerror.o: png.h pngconf.h pngintrn.h
-pngrio.o: png.h pngconf.h pngintrn.h
-pngwio.o: png.h pngconf.h pngintrn.h
-pngmem.o: png.h pngconf.h pngintrn.h
-pngset.o: png.h pngconf.h pngintrn.h
-pnggccrd.o: png.h pngconf.h pngintrn.h
-pngget.o: png.h pngconf.h pngintrn.h
-pngread.o: png.h pngconf.h pngintrn.h
-pngpread.o: png.h pngconf.h pngintrn.h
-pngrtran.o: png.h pngconf.h pngintrn.h
-pngrutil.o: png.h pngconf.h pngintrn.h
-pngtest.o: png.h pngconf.h pngintrn.h
-pngtrans.o: png.h pngconf.h pngintrn.h
-pngwrite.o: png.h pngconf.h pngintrn.h
-pngwtran.o: png.h pngconf.h pngintrn.h
-pngwutil.o: png.h pngconf.h pngintrn.h
+png.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngerror.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrio.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwio.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngmem.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngset.o: png.h pngconf.h pngdefs.h pngpriv.h
+pnggccrd.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngget.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngread.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngpread.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil.o: png.h pngconf.h pngdefs.h pngpriv.h
 
+pngtest.o: png.h pngconf.h pngdefs.h
diff --git a/scripts/makefile.elf b/scripts/makefile.elf
index a60f686..25c40dc 100644
--- a/scripts/makefile.elf
+++ b/scripts/makefile.elf
@@ -12,7 +12,7 @@
 # Library name:
 LIBNAME = libpng14
 PNGMAJ = 1
-PNGMIN = 1.4.0beta10
+PNGMIN = 1.4.0beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
@@ -90,7 +90,10 @@
 .c.pic.o:
 	$(CC) -c $(CFLAGS) -fPIC -o $@ $*.c
 
-all: libpng.a $(LIBSO) pngtest pngtest-static libpng.pc libpng-config
+all: libpng.a $(LIBSO) pngtest pngtest-static libpng.pc libpng-config pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.elf */" > pngdefs.h
 
 libpng.a: $(OBJS)
 	$(AR_RC) $@ $(OBJS)
@@ -101,7 +104,7 @@
 
 libpng.syms: png.h pngconf.h
 	$(CC) $(CFLAGS) -E -DPNG_BUILDSYMS -DPNG_INTERNAL png.h |\
-	awk -F '[\t [\\]();]' -v PNGMAJ=$(PNGMAJ) 'BEGIN{printf("PNG14_%s {global:\n",PNGMAJ)}\
+	awk -F '[\t [\\]();]' -v PNGMAJ=$(PNGMAJ) 'BEGIN{printf("PNG14%s {global:\n",PNGMAJ)}\
 	{ for (i=1;i+2<=NF;++i)\
 		if ($$(i)=="PNG_FUNCTION_EXPORT" && $$(i+2)=="END")\
 			print $$(i+1) ";";\
@@ -151,12 +154,13 @@
 	@echo ""
 	./pngtest-static
 
-install-headers: png.h pngconf.h
+install-headers: png.h pngconf.h pngdefs.h
 	-@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi
 	-@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi
-	cp png.h pngconf.h $(DI)/$(LIBNAME)
+	cp png.h pngconf.h pngdefs.h $(DI)/$(LIBNAME)
 	chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h
-	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h
+	chmod 644 $(DI)/$(LIBNAME)/pngdefs.h
+	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pngdefs.h
 	-@$(RM_F) $(DI)/libpng
 	(cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .)
 
@@ -229,7 +233,7 @@
 clean:
 	$(RM_F) *.o libpng.a libpng.syms pngtest pngout.png libpng-config \
 	$(LIBSO) $(LIBSOMAJ)* pngtest-static pngtesti \
-	libpng.pc
+	libpng.pc pngdefs.h
 
 DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
 writelock:
@@ -237,20 +241,20 @@
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-png.o png.pic.o: png.h pngconf.h pngintrn.h
-pngerror.o pngerror.pic.o: png.h pngconf.h pngintrn.h
-pngrio.o pngrio.pic.o: png.h pngconf.h pngintrn.h
-pngwio.o pngwio.pic.o: png.h pngconf.h pngintrn.h
-pngmem.o pngmem.pic.o: png.h pngconf.h pngintrn.h
-pngset.o pngset.pic.o: png.h pngconf.h pngintrn.h
-pngget.o pngget.pic.o: png.h pngconf.h pngintrn.h
-pngread.o pngread.pic.o: png.h pngconf.h pngintrn.h
-pngrtran.o pngrtran.pic.o: png.h pngconf.h pngintrn.h
-pngrutil.o pngrutil.pic.o: png.h pngconf.h pngintrn.h
-pngtrans.o pngtrans.pic.o: png.h pngconf.h pngintrn.h
-pngwrite.o pngwrite.pic.o: png.h pngconf.h pngintrn.h
-pngwtran.o pngwtran.pic.o: png.h pngconf.h pngintrn.h
-pngwutil.o pngwutil.pic.o: png.h pngconf.h pngintrn.h
-pngpread.o pngpread.pic.o: png.h pngconf.h pngintrn.h
+png.o png.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngerror.o pngerror.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrio.o pngrio.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwio.o pngwio.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngmem.o pngmem.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngset.o pngset.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngget.o pngget.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngread.o pngread.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran.o pngrtran.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil.o pngrutil.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans.o pngtrans.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite.o pngwrite.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran.o pngwtran.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil.o pngwutil.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngpread.o pngpread.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
 
-pngtest.o: png.h pngconf.h pngintrn.h
+pngtest.o: png.h pngconf.h pngdefs.h
diff --git a/scripts/makefile.freebsd b/scripts/makefile.freebsd
index da5cf6d..5fb77aa 100644
--- a/scripts/makefile.freebsd
+++ b/scripts/makefile.freebsd
@@ -14,31 +14,27 @@
 # where make install puts libpng.a and png.h
 DESTDIR=	${PREFIX}
 LIBDIR=		/lib
-INCS=		png.h pngconf.h
+INCS=		png.h pngconf.h pngdefs.h
 INCSDIR=	/include/libpng
 INCDIR=		${INCSDIR}		# for 4.x bsd.lib.mk
 MAN=		libpng.3 libpngpf.3 png.5
 MANDIR=		/man/man
 SYMLINKS=       libpng/png.h ${INCSDIR}/../png.h \
 		libpng/pngconf.h ${INCSDIR}/../pngconf.h
+		libpng/pngdefs.h ${INCSDIR}/../pngdefs.h
 LDADD+=         -lm -lz
 DPADD+=         ${LIBM} ${LIBZ}
 
-all: pngconf.h
+all: pngdefs.h
 
-pngconf.h.in: pngconf.h
-	cat pngconf.h > pngconf.h.in
-
-pngconf.h:	pngconf.h.in
-	sed "/Makefile-supplied defines go here:/q" pngconf.h.in > pngconf.h
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.freebsd */" > pngdefs.h
 .if (${MACHINE_ARCH} != "i386")
-	/* uncoment this if you don't need thread safety */
-	# echo "#define PNG_THREAD_UNSAFE_OK" >> pngconf.h
+	/* uncomment this if you don't need thread safety */
+	# echo "#define PNG_THREAD_UNSAFE_OK" >> pngdefs.h
 .else
-	echo "#define PNG_NO_MMX_CODE" >> pngconf.h
+	echo "#define PNG_NO_MMX_CODE" >> pngdefs.h
 .endif
-	sed "1,/Makefile-supplied defines go here:/d" pngconf.h.in >> pngconf.h
-
 
 SRCS=	png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
 	pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
diff --git a/scripts/makefile.gcc b/scripts/makefile.gcc
index 3f26cc8..c68b6aa 100644
--- a/scripts/makefile.gcc
+++ b/scripts/makefile.gcc
@@ -19,50 +19,67 @@
 LDDEBUG =
 CRELEASE = -O2
 LDRELEASE = -s
-CFLAGS = -I$(ZLIBINC) -Wall $(CRELEASE)
-LDFLAGS = -L. -L$(ZLIBLIB) -lpng -lz -lm $(LDRELEASE)
+#CFLAGS = -Wall $(CDEBUG)
+CFLAGS = -Wall $(CRELEASE)
+#LDFLAGS = $(LDDEBUG)
+LDFLAGS = $(LDRELEASE)
+LIBS = -lz -lm
 
 # File extensions
 O=.o
 A=.a
-E=
+EXE=
 
 # Variables
 OBJS = png$(O) pngerror$(O) pngget$(O) pngmem$(O) pngpread$(O) \
 	pngread$(O) pngrio$(O) pngrtran$(O) pngrutil$(O) pngset$(O) \
-	pngtrans$(O) pngwio$(O) pngwrite$(O) pngwtran$(O) pngwutil$(O)
+	pngtrans$(O) pngwio$(O) pngwrite$(O) pngwtran$(O) pngwutil$(O) \
+	pnggccrd$(O)
 
 # Targets
-all: libpng$(A) pngtest$(E)
+all: static pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.gcc */" > pngdefs.h
+
+.c$(O):
+	$(CC) -c $(CFLAGS) -I$(ZLIBINC) $<
+
+static: libpng$(A) pngtest$(EXE)
+
+shared:
+	@echo This is a generic makefile that cannot create shared libraries.
+	@echo Please use a configuration that is specific to your platform.
+	@false
 
 libpng$(A): $(OBJS)
 	$(AR_RC) $@ $(OBJS)
 	$(RANLIB) $@
 
-test: pngtest$(E)
-	./pngtest$(E)
+test: pngtest$(EXE)
+	./pngtest$(EXE)
 
-pngtest$(E): pngtest$(O) libpng$(A)
-	$(LD) -o $@ pngtest$(O) $(LDFLAGS)
+pngtest$(EXE): pngtest$(O) libpng$(A)
+	$(LD) $(LDFLAGS) -L$(ZLIBLIB) -o $@ pngtest$(O) libpng$(A) $(LIBS)
 
 clean:
-	$(RM_F) *$(O) libpng$(A) pngtest$(E) pngout.png
+	$(RM_F) *$(O) libpng$(A) pngtest$(EXE) pngout.png pngdefs.h
 
-png$(O): png.h pngconf.h pngintrn.h
-pngerror$(O): png.h pngconf.h pngintrn.h
-pnggccrd$(O): png.h pngconf.h pngintrn.h
-pngget$(O): png.h pngconf.h pngintrn.h
-pngmem$(O): png.h pngconf.h pngintrn.h
-pngpread$(O): png.h pngconf.h pngintrn.h
-pngread$(O): png.h pngconf.h pngintrn.h
-pngrio$(O): png.h pngconf.h pngintrn.h
-pngrtran$(O): png.h pngconf.h pngintrn.h
-pngrutil$(O): png.h pngconf.h pngintrn.h
-pngset$(O): png.h pngconf.h pngintrn.h
-pngtest$(O): png.h pngconf.h pngintrn.h
-pngtrans$(O): png.h pngconf.h pngintrn.h
-pngwio$(O): png.h pngconf.h pngintrn.h
-pngwrite$(O): png.h pngconf.h pngintrn.h
-pngwtran$(O): png.h pngconf.h pngintrn.h
-pngwutil$(O): png.h pngconf.h pngintrn.h
-
+png$(O):      png.h pngconf.h pngdefs.h pngpriv.h
+pngerror$(O): png.h pngconf.h pngdefs.h pngpriv.h
+pnggccrd$(O): png.h pngconf.h pngdefs.h pngpriv.h
+pngget$(O):   png.h pngconf.h pngdefs.h pngpriv.h
+pngmem$(O):   png.h pngconf.h pngdefs.h pngpriv.h
+pngpread$(O): png.h pngconf.h pngdefs.h pngpriv.h
+pngread$(O):  png.h pngconf.h pngdefs.h pngpriv.h
+pngrio$(O):   png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran$(O): png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil$(O): png.h pngconf.h pngdefs.h pngpriv.h
+pngset$(O):   png.h pngconf.h pngdefs.h pngpriv.h
+pngtest$(O):  png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans$(O): png.h pngconf.h pngdefs.h pngpriv.h
+pngwio$(O):   png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite$(O): png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran$(O): png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil$(O): png.h pngconf.h pngdefs.h pngpriv.h
+pngtest$(O):  png.h pngconf.h pngdefs.h
diff --git a/scripts/makefile.gcmmx b/scripts/makefile.gcmmx
index 88adaf3..e24195b 100644
--- a/scripts/makefile.gcmmx
+++ b/scripts/makefile.gcmmx
@@ -16,7 +16,7 @@
 # Library name:
 LIBNAME = libpng14
 PNGMAJ = 1
-PNGMIN = 1.4.0beta10
+PNGMIN = 1.4.0beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
@@ -104,18 +104,13 @@
 	$(CC) -c $(CFLAGS) -fPIC -o $@ $*.c
 
 all: libpng.a $(LIBSO) pngtest pngtest-static libpng.pc libpng-config \
-	pngconf.h
+	pngconf.h pngdefs.h
 
-pngconf.h.in: pngconf.h
-	cat pngconf.h > pngconf.h.in
-
-# Remove the line with #define PNG_THREAD_UNSAFE_OK if you need thread safety
-### for generic gcc:
-pngconf.h:	pngconf.h.in
-	sed "/Makefile-supplied defines go here:/q" pngconf.h.in > pngconf.h
-	echo "#define PNG_THREAD_UNSAFE_OK" >> pngconf.h
-	echo "#define PNG_USE_PNGGCCRD" >> pngconf.h
-	sed "1,/Makefile-supplied defines go here:/d" pngconf.h.in >> pngconf.h
+# Use makefile.gcmmx if you don't want to use the MMX assembler code.
+# If you don't need thread safety you can uncomment the define.
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.gcmmx */" > pngdefs.h
+	# echo "#define PNG_THREAD_UNSAFE_OK" >> pngdefs.h
 
 libpng.a: $(OBJS)
 	$(AR_RC) $@ $(OBJS)
@@ -168,12 +163,13 @@
 	@echo ""
 	./pngtest-static
 
-install-headers: png.h pngconf.h
+install-headers: png.h pngconf.h pngdefs.h
 	-@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi
 	-@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi
-	cp png.h pngconf.h $(DI)/$(LIBNAME)
-	chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h
-	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h
+	cp png.h pngconf.h pngdefs.h $(DI)/$(LIBNAME)
+	chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h \
+		$(DI)/$(LIBNAME)/pngdefs.h
+	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pngdefs.h
 	-@$(RM_F) $(DI)/libpng
 	(cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .)
 
@@ -244,7 +240,7 @@
 	./pngtesti pngtest.png
 
 clean:
-	$(RM_F) *.o libpng.a pngtest pngout.png libpng-config \
+	$(RM_F) *.o libpng.a pngtest pngout.png libpng-config pngdefs.h \
 	$(LIBSO) $(LIBSOMAJ)* pngtest-static pngtesti \
 	libpng.pc
 
@@ -252,20 +248,20 @@
 writelock:
 	chmod a-w *.[ch35] $(DOCS) scripts/*
 
-png.o png.pic.o:		png.h pngconf.h pngintrn.h png.c
-pngerror.o pngerror.pic.o:	png.h pngconf.h pngintrn.h pngerror.c
-pngrio.o pngrio.pic.o:		png.h pngconf.h pngintrn.h pngrio.c
-pngwio.o pngwio.pic.o:		png.h pngconf.h pngintrn.h pngwio.c
-pngmem.o pngmem.pic.o:		png.h pngconf.h pngintrn.h pngmem.c
-pngset.o pngset.pic.o:		png.h pngconf.h pngintrn.h pngset.c
-pngget.o pngget.pic.o:		png.h pngconf.h pngintrn.h pngget.c
-pngread.o pngread.pic.o:	png.h pngconf.h pngintrn.h pngread.c
-pngrtran.o pngrtran.pic.o:	png.h pngconf.h pngintrn.h pngrtran.c
-pngrutil.o pngrutil.pic.o:	png.h pngconf.h pngintrn.h pngrutil.c
-pngtrans.o pngtrans.pic.o:	png.h pngconf.h pngintrn.h pngtrans.c
-pngwrite.o pngwrite.pic.o:	png.h pngconf.h pngintrn.h pngwrite.c
-pngwtran.o pngwtran.pic.o:	png.h pngconf.h pngintrn.h pngwtran.c
-pngwutil.o pngwutil.pic.o:	png.h pngconf.h pngintrn.h pngwutil.c
-pngpread.o pngpread.pic.o:	png.h pngconf.h pngintrn.h pngpread.c
+png.o png.pic.o:		png.h pngconf.h pngdefs.h pngpriv.h png.c
+pngerror.o pngerror.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngerror.c
+pngrio.o pngrio.pic.o:		png.h pngconf.h pngdefs.h pngpriv.h pngrio.c
+pngwio.o pngwio.pic.o:		png.h pngconf.h pngdefs.h pngpriv.h pngwio.c
+pngmem.o pngmem.pic.o:		png.h pngconf.h pngdefs.h pngpriv.h pngmem.c
+pngset.o pngset.pic.o:		png.h pngconf.h pngdefs.h pngpriv.h pngset.c
+pngget.o pngget.pic.o:		png.h pngconf.h pngdefs.h pngpriv.h pngget.c
+pngread.o pngread.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngread.c
+pngrtran.o pngrtran.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngrtran.c
+pngrutil.o pngrutil.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngrutil.c
+pngtrans.o pngtrans.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngtrans.c
+pngwrite.o pngwrite.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngwrite.c
+pngwtran.o pngwtran.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngwtran.c
+pngwutil.o pngwutil.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngwutil.c
+pngpread.o pngpread.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngpread.c
 
-pngtest.o:			png.h pngconf.h pngintrn.h pngtest.c
+pngtest.o:			png.h pngconf.h pngdefs.h pngtest.c
diff --git a/scripts/makefile.hp64 b/scripts/makefile.hp64
index 4fca2c1..36a14cd 100644
--- a/scripts/makefile.hp64
+++ b/scripts/makefile.hp64
@@ -18,7 +18,7 @@
 # Library name:
 LIBNAME = libpng14
 PNGMAJ = 1
-PNGMIN = 1.4.0beta10
+PNGMIN = 1.4.0beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
@@ -77,7 +77,10 @@
 .c.pic.o:
 	$(CC) -c $(CFLAGS) +z -o $@ $*.c
 
-all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config
+all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.hp64 */" > pngdefs.h
 
 libpng.a: $(OBJS)
 	$(AR_RC) $@ $(OBJS)
@@ -112,12 +115,13 @@
 test: pngtest
 	./pngtest
 
-install-headers: png.h pngconf.h
+install-headers: png.h pngconf.h pngdefs.h
 	-@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi
 	-@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi
-	cp png.h pngconf.h $(DI)/$(LIBNAME)
+	cp png.h pngconf.h pngdefs.h $(DI)/$(LIBNAME)
 	chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h
-	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h
+	chmod 644 $(DI)/$(LIBNAME)/pngdefs.h
+	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pngdefs.h
 	-@$(RM_F) $(DI)/libpng
 	(cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .)
 
@@ -192,7 +196,7 @@
 clean:
 	$(RM_F) *.o libpng.a pngtest pngtesti pngout.png \
 	libpng-config $(LIBSO) $(LIBSOMAJ)* \
-	libpng.pc
+	libpng.pc pngdefs.h
 
 DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
 writelock:
@@ -200,19 +204,19 @@
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-png.o: png.h pngconf.h pngintrn.h
-pngerror.o: png.h pngconf.h pngintrn.h
-pngrio.o: png.h pngconf.h pngintrn.h
-pngwio.o: png.h pngconf.h pngintrn.h
-pngmem.o: png.h pngconf.h pngintrn.h
-pngset.o: png.h pngconf.h pngintrn.h
-pngget.o: png.h pngconf.h pngintrn.h
-pngread.o: png.h pngconf.h pngintrn.h
-pngrtran.o: png.h pngconf.h pngintrn.h
-pngrutil.o: png.h pngconf.h pngintrn.h
-pngtest.o: png.h pngconf.h pngintrn.h
-pngtrans.o: png.h pngconf.h pngintrn.h
-pngwrite.o: png.h pngconf.h pngintrn.h
-pngwtran.o: png.h pngconf.h pngintrn.h
-pngwutil.o: png.h pngconf.h pngintrn.h
-pngpread.o: png.h pngconf.h pngintrn.h
+png.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngerror.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrio.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwio.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngmem.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngset.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngget.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngread.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngpread.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtest.o: png.h pngconf.h pngdefs.h
diff --git a/scripts/makefile.hpgcc b/scripts/makefile.hpgcc
index bf39cda..9ce5507 100644
--- a/scripts/makefile.hpgcc
+++ b/scripts/makefile.hpgcc
@@ -8,7 +8,7 @@
 # Library name:
 LIBNAME = libpng14
 PNGMAJ = 1
-PNGMIN = 1.4.0beta10
+PNGMIN = 1.4.0beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
@@ -87,7 +87,10 @@
 .c.pic.o:
 	$(CC) -c $(CFLAGS) -fPIC -o $@ $*.c
 
-all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config
+all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.hpgcc */" > pngdefs.h
 
 libpng.a: $(OBJS)
 	$(AR_RC) $@ $(OBJS)
@@ -121,12 +124,13 @@
 	./pngtest
 
 
-install-headers: png.h pngconf.h
+install-headers: png.h pngconf.h pngdefs.h
 	-@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi
 	-@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi
-	cp png.h pngconf.h $(DI)/$(LIBNAME)
+	cp png.h pngconf.h pngdefs.h $(DI)/$(LIBNAME)
 	chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h
-	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h
+	chmod 644 $(DI)/$(LIBNAME)/pngdefs.h
+	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pngdefs.h
 	-@$(RM_F) $(DI)/libpng
 	(cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .)
 
@@ -201,7 +205,7 @@
 clean:
 	$(RM_F) *.o libpng.a pngtest pngtesti pngout.png \
 	libpng-config $(LIBSO) $(LIBSOMAJ)* \
-	libpng.pc
+	libpng.pc pngdefs.h
 
 DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
 writelock:
@@ -209,20 +213,20 @@
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-png.o png.pic.o: png.h pngconf.h pngintrn.h
-pngerror.o pngerror.pic.o: png.h pngconf.h pngintrn.h
-pngrio.o pngrio.pic.o: png.h pngconf.h pngintrn.h
-pngwio.o pngwio.pic.o: png.h pngconf.h pngintrn.h
-pngmem.o pngmem.pic.o: png.h pngconf.h pngintrn.h
-pngset.o pngset.pic.o: png.h pngconf.h pngintrn.h
-pngget.o pngget.pic.o: png.h pngconf.h pngintrn.h
-pngread.o pngread.pic.o: png.h pngconf.h pngintrn.h
-pngrtran.o pngrtran.pic.o: png.h pngconf.h pngintrn.h
-pngrutil.o pngrutil.pic.o: png.h pngconf.h pngintrn.h
-pngtrans.o pngtrans.pic.o: png.h pngconf.h pngintrn.h
-pngwrite.o pngwrite.pic.o: png.h pngconf.h pngintrn.h
-pngwtran.o pngwtran.pic.o: png.h pngconf.h pngintrn.h
-pngwutil.o pngwutil.pic.o: png.h pngconf.h pngintrn.h
-pngpread.o pngpread.pic.o: png.h pngconf.h pngintrn.h
+png.o png.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngerror.o pngerror.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrio.o pngrio.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwio.o pngwio.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngmem.o pngmem.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngset.o pngset.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngget.o pngget.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngread.o pngread.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran.o pngrtran.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil.o pngrutil.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans.o pngtrans.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite.o pngwrite.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran.o pngwtran.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil.o pngwutil.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngpread.o pngpread.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
 
-pngtest.o: png.h pngconf.h pngintrn.h
+pngtest.o: png.h pngconf.h pngdefs.h
diff --git a/scripts/makefile.hpux b/scripts/makefile.hpux
index ba37f39..7e8e2e9 100644
--- a/scripts/makefile.hpux
+++ b/scripts/makefile.hpux
@@ -18,7 +18,7 @@
 # Library name:
 LIBNAME = libpng14
 PNGMAJ = 1
-PNGMIN = 1.4.0beta10
+PNGMIN = 1.4.0beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
@@ -74,7 +74,10 @@
 .c.pic.o:
 	$(CC) -c $(CFLAGS) +z -o $@ $*.c
 
-all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config
+all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.hpux */" > pngdefs.h
 
 libpng.a: $(OBJS)
 	$(AR_RC) $@ $(OBJS)
@@ -109,12 +112,13 @@
 test: pngtest
 	./pngtest
 
-install-headers: png.h pngconf.h
+install-headers: png.h pngconf.h pngdefs.h
 	-@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi
 	-@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi
-	cp png.h pngconf.h $(DI)/$(LIBNAME)
+	cp png.h pngconf.h pngdefs.h $(DI)/$(LIBNAME)
 	chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h
-	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h
+	chmod 644 $(DI)/$(LIBNAME)/pngdefs.h
+	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pngdefs.h
 	-@$(RM_F) $(DI)/libpng
 	(cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .)
 
@@ -162,7 +166,7 @@
 	chmod 755 $(DB)/$(LIBNAME)-config
 	(cd $(DB); $(LN_SF) $(LIBNAME)-config libpng-config)
 
-install: install-static install-shared install-man install-config
+install: install-static install-shared install-man install-config pngdefs.h
 
 # 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
@@ -189,7 +193,7 @@
 clean:
 	$(RM_F) *.o libpng.a pngtest pngtesti pngout.png \
 	libpng-config $(LIBSO) $(LIBSOMAJ)* \
-	libpng.pc
+	libpng.pc pngdefs.h
 
 DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
 writelock:
@@ -197,19 +201,19 @@
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-png.o: png.h pngconf.h pngintrn.h
-pngerror.o: png.h pngconf.h pngintrn.h
-pngrio.o: png.h pngconf.h pngintrn.h
-pngwio.o: png.h pngconf.h pngintrn.h
-pngmem.o: png.h pngconf.h pngintrn.h
-pngset.o: png.h pngconf.h pngintrn.h
-pngget.o: png.h pngconf.h pngintrn.h
-pngread.o: png.h pngconf.h pngintrn.h
-pngrtran.o: png.h pngconf.h pngintrn.h
-pngrutil.o: png.h pngconf.h pngintrn.h
-pngtest.o: png.h pngconf.h pngintrn.h
-pngtrans.o: png.h pngconf.h pngintrn.h
-pngwrite.o: png.h pngconf.h pngintrn.h
-pngwtran.o: png.h pngconf.h pngintrn.h
-pngwutil.o: png.h pngconf.h pngintrn.h
-pngpread.o: png.h pngconf.h pngintrn.h
+png.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngerror.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrio.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwio.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngmem.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngset.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngget.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngread.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngpread.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtest.o: png.h pngconf.h pngdefs.h
diff --git a/scripts/makefile.ibmc b/scripts/makefile.ibmc
index 48ebb5f..054bec0 100644
--- a/scripts/makefile.ibmc
+++ b/scripts/makefile.ibmc
@@ -30,12 +30,16 @@
 # Variables
 OBJS = png$(O) pngerror$(O) pngget$(O) pngmem$(O) pngpread$(O) \
 	pngread$(O) pngrio$(O) pngrtran$(O) pngrutil$(O) pngset$(O) \
-	pngtrans$(O) pngwio$(O) pngwrite$(O) pngwtran$(O) pngwutil$(O)
+	pngtrans$(O) pngwio$(O) pngwrite$(O) pngwtran$(O) pngwutil$(O) \
+	pnggccrd$(O)
 
 LIBS = libpng$(A) $(ZLIBLIB)/zlib$(A)
 
 # Targets
-all: libpng$(A) pngtest$(E)
+all: libpng$(A) pngtest$(E) pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.ibmc */" > pngdefs.h
 
 libpng$(A): $(OBJS)
 	$(AR) -out:$@ $(OBJS)
@@ -53,21 +57,23 @@
 	$(RM) libpng$(A)
 	$(RM) pngtest$(E)
 	$(RM) pngout.png
+	$(RM) pngdefs.h
 
-png$(O): png.h pngconf.h pngintrn.h
-pngerror$(O): png.h pngconf.h pngintrn.h
-pnggccrd$(O): png.h pngconf.h pngintrn.h
-pngget$(O): png.h pngconf.h pngintrn.h
-pngmem$(O): png.h pngconf.h pngintrn.h
-pngpread$(O): png.h pngconf.h pngintrn.h
-pngread$(O): png.h pngconf.h pngintrn.h
-pngrio$(O): png.h pngconf.h pngintrn.h
-pngrtran$(O): png.h pngconf.h pngintrn.h
-pngrutil$(O): png.h pngconf.h pngintrn.h
-pngset$(O): png.h pngconf.h pngintrn.h
-pngtest$(O): png.h pngconf.h pngintrn.h
-pngtrans$(O): png.h pngconf.h pngintrn.h
-pngwio$(O): png.h pngconf.h pngintrn.h
-pngwrite$(O): png.h pngconf.h pngintrn.h
-pngwtran$(O): png.h pngconf.h pngintrn.h
-pngwutil$(O): png.h pngconf.h pngintrn.h
+png$(O):      png.h pngconf.h pngdefs.h pngpriv.h
+pngerror$(O): png.h pngconf.h pngdefs.h pngpriv.h
+pnggccrd$(O): png.h pngconf.h pngdefs.h pngpriv.h
+pngget$(O):   png.h pngconf.h pngdefs.h pngpriv.h
+pngmem$(O):   png.h pngconf.h pngdefs.h pngpriv.h
+pngpread$(O): png.h pngconf.h pngdefs.h pngpriv.h
+pngread$(O):  png.h pngconf.h pngdefs.h pngpriv.h
+pngrio$(O):   png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran$(O): png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil$(O): png.h pngconf.h pngdefs.h pngpriv.h
+pngset$(O):   png.h pngconf.h pngdefs.h pngpriv.h
+pngtest$(O):  png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans$(O): png.h pngconf.h pngdefs.h pngpriv.h
+pngwio$(O):   png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite$(O): png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran$(O): png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil$(O): png.h pngconf.h pngdefs.h pngpriv.h
+pngtest$(O):  png.h pngconf.h pngdefs.h
diff --git a/scripts/makefile.intel b/scripts/makefile.intel
index ae3a0e0..93dff86 100644
--- a/scripts/makefile.intel
+++ b/scripts/makefile.intel
@@ -46,67 +46,61 @@
 pngrtran$(O) pngwtran$(O) pngrio$(O) pngwio$(O) pngvcrd$(O)
 
 
-all: test pngconf.h
+all: test pngconf.h pngdefs.h
 
-pngconf.h.in: pngconf.h
-	cat pngconf.h > pngconf.h.in
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.intel */" > pngdefs.h
+	echo "#define PNG_USE_PNGVCRD" >> pngdefs.h
 
-# Remove the line with #define PNG_THREAD_UNSAFE_OK if you need thread safety
-### for generic gcc:
-pngconf.h:	pngconf.h.in
-	sed "/Makefile-supplied defines go here:/q" pngconf.h.in > pngconf.h
-	echo "#define PNG_USE_PNGVCRD" >> pngconf.h
-	sed "1,/Makefile-supplied defines go here:/d" pngconf.h.in >> pngconf.h
-
-png$(O): png.h pngconf.h pngintrn.h
+png$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngset$(O): png.h pngconf.h pngintrn.h
+pngset$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngget$(O): png.h pngconf.h pngintrn.h
+pngget$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngread$(O): png.h pngconf.h pngintrn.h
+pngread$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngpread$(O): png.h pngconf.h pngintrn.h
+pngpread$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngrtran$(O): png.h pngconf.h pngintrn.h
+pngrtran$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngrutil$(O): png.h pngconf.h pngintrn.h
+pngrutil$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngvcrd$(O): png.h pngconf.h pngintrn.h
+pngvcrd$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngerror$(O): png.h pngconf.h pngintrn.h
+pngerror$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngmem$(O): png.h pngconf.h pngintrn.h
+pngmem$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngrio$(O): png.h pngconf.h pngintrn.h
+pngrio$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngwio$(O): png.h pngconf.h pngintrn.h
+pngwio$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngtest$(O): png.h pngconf.h pngintrn.h
+pngtest$(O): png.h pngconf.h pngdefs.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngtrans$(O): png.h pngconf.h pngintrn.h
+pngtrans$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngwrite$(O): png.h pngconf.h pngintrn.h
+pngwrite$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngwtran$(O): png.h pngconf.h pngintrn.h
+pngwtran$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngwutil$(O): png.h pngconf.h pngintrn.h
+pngwutil$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
 libpng.lib: $(OBJS)
diff --git a/scripts/makefile.knr b/scripts/makefile.knr
index f7e53cd..b28eaff 100644
--- a/scripts/makefile.knr
+++ b/scripts/makefile.knr
@@ -36,7 +36,10 @@
 	pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
 	pngwtran.o pngmem.o pngerror.o pngpread.o
 
-all: ansi2knr libpng.a pngtest
+all: ansi2knr libpng.a pngtest pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.knr */" > pngdefs.h
 
 # general rule to allow ansi2knr to work
 .c.o:
@@ -58,22 +61,25 @@
 test: pngtest
 	./pngtest
 
-install: libpng.a
+install: libpng.a png.h pngconf.h pngdefs.h
 	-@mkdir $(DESTDIR)$(INCPATH)
 	-@mkdir $(DESTDIR)$(INCPATH)/libpng
 	-@mkdir $(DESTDIR)$(LIBPATH)
 	-@rm -f $(DESTDIR)$(INCPATH)/png.h
 	-@rm -f $(DESTDIR)$(INCPATH)/pngconf.h
+	-@rm -f $(DESTDIR)$(INCPATH)/pngdefs.h
 	cp png.h $(DESTDIR)$(INCPATH)/libpng
 	cp pngconf.h $(DESTDIR)$(INCPATH)/libpng
+	cp pngdefs.h $(DESTDIR)$(INCPATH)/libpng
 	chmod 644 $(DESTDIR)$(INCPATH)/libpng/png.h
 	chmod 644 $(DESTDIR)$(INCPATH)/libpng/pngconf.h
+	chmod 644 $(DESTDIR)$(INCPATH)/libpng/pngdefs.h
 	(cd $(DESTDIR)$(INCPATH); ln -f -s libpng/* .)
 	cp libpng.a $(DESTDIR)$(LIBPATH)
 	chmod 644 $(DESTDIR)$(LIBPATH)/libpng.a
 
 clean:
-	rm -f *.o libpng.a pngtest pngout.png ansi2knr
+	rm -f *.o libpng.a pngtest pngout.png ansi2knr pngdefs.h
 
 DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
 writelock:
@@ -81,20 +87,20 @@
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-png.o: png.h pngconf.h pntintrn.h
-pngerror.o: png.h pngconf.h pntintrn.h
-pngrio.o: png.h pngconf.h pntintrn.h
-pngwio.o: png.h pngconf.h pntintrn.h
-pngmem.o: png.h pngconf.h pntintrn.h
-pngset.o: png.h pngconf.h pntintrn.h
-pnggccrd.o: png.h pngconf.h pntintrn.h
-pngget.o: png.h pngconf.h pntintrn.h
-pngread.o: png.h pngconf.h pntintrn.h
-pngpread.o: png.h pngconf.h pntintrn.h
-pngrtran.o: png.h pngconf.h pntintrn.h
-pngrutil.o: png.h pngconf.h pntintrn.h
-pngtest.o: png.h pngconf.h pntintrn.h
-pngtrans.o: png.h pngconf.h pntintrn.h
-pngwrite.o: png.h pngconf.h pntintrn.h
-pngwtran.o: png.h pngconf.h pntintrn.h
-pngwutil.o: png.h pngconf.h pntintrn.h
+png.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngerror.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrio.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwio.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngmem.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngset.o: png.h pngconf.h pngdefs.h pngpriv.h
+pnggccrd.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngget.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngread.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngpread.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtest.o: png.h pngconf.h pngdefs.h
diff --git a/scripts/makefile.linux b/scripts/makefile.linux
index e87329d..f459ef1 100644
--- a/scripts/makefile.linux
+++ b/scripts/makefile.linux
@@ -6,7 +6,7 @@
 # Library name:
 LIBNAME = libpng14
 PNGMAJ = 1
-PNGMIN = 1.4.0beta10
+PNGMIN = 1.4.0beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
@@ -82,7 +82,14 @@
 .c.pic.o:
 	$(CC) -c $(CFLAGS) -fPIC -o $@ $*.c
 
-all: libpng.a $(LIBSO) pngtest pngtest-static libpng.pc libpng-config
+all: libpng.a $(LIBSO) pngtest pngtest-static libpng.pc libpng-config pngdefs.h
+
+# Use makefile.gcmmx if you want to use the MMX assembler code.
+# If you don't need thread safety you can uncomment the define.
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.linux */" > pngdefs.h
+	echo "#define PNG_NO_MMX_CODE" >> pngdefs.h
+	# echo "#define PNG_THREAD_UNSAFE_OK" >> pngdefs.h
 
 libpng.a: $(OBJS)
 	$(AR_RC) $@ $(OBJS)
@@ -126,12 +133,13 @@
 	@echo ""
 	./pngtest-static
 
-install-headers: png.h pngconf.h
+install-headers: png.h pngconf.h pngdefs.h
 	-@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi
 	-@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi
-	cp png.h pngconf.h $(DI)/$(LIBNAME)
-	chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h
-	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h
+	cp png.h pngconf.h pngdefs.h $(DI)/$(LIBNAME)
+	chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h \
+	          $(DI)/$(LIBNAME)/pngdefs.h
+	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pngdefs.h
 	-@$(RM_F) $(DI)/libpng
 	(cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .)
 
@@ -202,7 +210,7 @@
 	./pngtesti pngtest.png
 
 clean:
-	$(RM_F) *.o libpng.a pngtest pngout.png libpng-config \
+	$(RM_F) *.o libpng.a pngtest pngout.png libpng-config pngdefs.h \
 	$(LIBSO) $(LIBSOMAJ)* pngtest-static pngtesti \
 	libpng.pc
 
@@ -212,20 +220,20 @@
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-png.o png.pic.o: png.h pngconf.h pngintrn.h
-pngerror.o pngerror.pic.o: png.h pngconf.h pngintrn.h
-pngrio.o pngrio.pic.o: png.h pngconf.h pngintrn.h
-pngwio.o pngwio.pic.o: png.h pngconf.h pngintrn.h
-pngmem.o pngmem.pic.o: png.h pngconf.h pngintrn.h
-pngset.o pngset.pic.o: png.h pngconf.h pngintrn.h
-pngget.o pngget.pic.o: png.h pngconf.h pngintrn.h
-pngread.o pngread.pic.o: png.h pngconf.h pngintrn.h
-pngrtran.o pngrtran.pic.o: png.h pngconf.h pngintrn.h
-pngrutil.o pngrutil.pic.o: png.h pngconf.h pngintrn.h
-pngtrans.o pngtrans.pic.o: png.h pngconf.h pngintrn.h
-pngwrite.o pngwrite.pic.o: png.h pngconf.h pngintrn.h
-pngwtran.o pngwtran.pic.o: png.h pngconf.h pngintrn.h
-pngwutil.o pngwutil.pic.o: png.h pngconf.h pngintrn.h
-pngpread.o pngpread.pic.o: png.h pngconf.h pngintrn.h
+png.o png.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngerror.o pngerror.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrio.o pngrio.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwio.o pngwio.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngmem.o pngmem.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngset.o pngset.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngget.o pngget.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngread.o pngread.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran.o pngrtran.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil.o pngrutil.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans.o pngtrans.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite.o pngwrite.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran.o pngwtran.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil.o pngwutil.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngpread.o pngpread.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
 
-pngtest.o: png.h pngconf.h pngintrn.h
+pngtest.o: png.h pngconf.h pngdefs.h
diff --git a/scripts/makefile.mingw b/scripts/makefile.mingw
index 1edc2c2..a8dade3 100644
--- a/scripts/makefile.mingw
+++ b/scripts/makefile.mingw
@@ -66,7 +66,7 @@
 LIBNAME = libpng14
 PNGMAJ = 1
 MINGDLL = 14
-PNGMIN = 1.4.0beta10
+PNGMIN = 1.4.0beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 SHAREDLIB=libpng$(MINGDLL).dll
@@ -114,21 +114,14 @@
 	$(CC) -c $(CFLAGS) -o $@ $<
 
 all: all-static all-shared libpng.pc libpng-config libpng.pc libpng-config \
-	pngconf.h
+	pngdefs.h
 
-pngconf.h.in: pngconf.h
-	cat pngconf.h > pngconf.h.in
-
-pngconf.h:	pngconf.h.in
-	sed "/Makefile-supplied defines go here:/q" pngconf.h.in > pngconf.h
-
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.mingw */" > pngdefs.h
 	/* if you don't want to use the intel MMX code, uncomment this */
-	# echo "#define PNG_NO_MMX_CODE" >> pngconf.h
-
+	# echo "#define PNG_NO_MMX_CODE" >> pngdefs.h
 	/* if you don't need thread safety you can uncomment this */
-	# echo "#define PNG_THREAD_UNSAFE_OK" >> pngconf.h
-
-	sed "1,/Makefile-supplied defines go here:/d" pngconf.h.in >> pngconf.h
+	# echo "#define PNG_THREAD_UNSAFE_OK" >> pngdefs.h
 
 # Make this to verify that "make [...] install" will do what you want.
 buildsetup-tell:
@@ -160,14 +153,14 @@
 all-static: $(STATLIB) pngtest-stat$(EXE)
 all-shared: $(SHAREDLIB) pngtest$(EXE)
 
-pnggccrd.o: pnggccrd.c png.h pngconf.h pngintrn.h
+pnggccrd.o: pnggccrd.c png.h pngconf.h pngdefs.h pngpriv.h
 	@echo ""
 	@echo '    You can ignore the "control reaches end of non-void function"'
 	@echo '    warning and "<variable> defined but not used" warnings:'
 	@echo ""
 	$(CC) -c $(CFLAGS) -o $@ $<
 
-pnggccrd.pic.o:	pnggccrd.c png.h pngconf.h pngintrn.h
+pnggccrd.pic.o:	pnggccrd.c png.h pngconf.h pngdefs.h pngpriv.h
 	@echo ""
 	@echo '    You can ignore the "control reaches end of non-void function"'
 	@echo '    warning and "<variable> defined but not used" warnings:'
@@ -178,7 +171,7 @@
 	ar rc $@ $(OBJS)
 	$(RANLIB) $@
 
-$(SHAREDDEF): scripts/pngw32.def
+$(SHAREDDEF): scripts/pngwin.def
 	cat $< | sed -e '1{G;s/^\(.*\)\(\n\)/EXPORTS/;};2,/^EXPORTS/d' | \
 	sed -e 's/\([^;]*\);/;/' > $@
 
@@ -229,7 +222,8 @@
 	-@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi
 	-@rm -f $(DI)/png.h
 	-@rm -f $(DI)/pngconf.h
-	install -m 644 $(S)/png.h $(S)/pngconf.h $(DI)/$(LIBNAME)
+	-@rm -f $(DI)/pngdefs.h
+	install -m 644 $(S)/png.h $(S)/pngconf.h $(S)/pngdefs.h $(DI)/$(LIBNAME)
 	-@rm -f $(DI)/libpng
 	(cd $(DI); ln -sf $(LIBNAME) libpng; ln -sf $(LIBNAME)/* .)
 
@@ -284,7 +278,7 @@
 clean:
 	/bin/rm -f *.pic.o *.o $(STATLIB) $(IMPLIB) $(SHAREDLIB) \
 	pngtest-stat$(EXE) pngtest$(EXE) pngout.png $(SHAREDDEF) \
-	libpng-config libpng.pc pngtesti$(EXE)
+	libpng-config libpng.pc pngtesti$(EXE) pngdefs.h
 
 DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
 writelock:
@@ -294,25 +288,23 @@
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-png.o png.pic.o:		png.h pngconf.h pngintrn.h png.c
-pngerror.o pngerror.pic.o:	png.h pngconf.h pngintrn.h pngerror.c
-pngrio.o pngrio.pic.o:		png.h pngconf.h pngintrn.h pngrio.c
-pngwio.o pngwio.pic.o:		png.h pngconf.h pngintrn.h pngwio.c
-pngmem.o pngmem.pic.o:		png.h pngconf.h pngintrn.h pngmem.c
-pngset.o pngset.pic.o:		png.h pngconf.h pngintrn.h pngset.c
-pnggcrd.o pnggcrd.pic.o:	png.h pngconf.h pngintrn.h pngget.c
-pngget.o pngget.pic.o:		png.h pngconf.h pngintrn.h pngget.c
-pngread.o pngread.pic.o:	png.h pngconf.h pngintrn.h pngread.c
-pngrtran.o pngrtran.pic.o:	png.h pngconf.h pngintrn.h pngrtran.c
-pngrutil.o pngrutil.pic.o:	png.h pngconf.h pngintrn.h pngrutil.c
-pngtrans.o pngtrans.pic.o:	png.h pngconf.h pngintrn.h pngtrans.c
-pngwrite.o pngwrite.pic.o:	png.h pngconf.h pngintrn.h pngwrite.c
-pngwtran.o pngwtran.pic.o:	png.h pngconf.h pngintrn.h pngwtran.c
-pngwutil.o pngwutil.pic.o:	png.h pngconf.h pngintrn.h pngwutil.c
-pngpread.o pngpread.pic.o:	png.h pngconf.h pngintrn.h pngpread.c
+png.o png.pic.o:		png.h pngconf.h pngdefs.h pngpriv.h png.c
+pngerror.o pngerror.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngerror.c
+pngrio.o pngrio.pic.o:		png.h pngconf.h pngdefs.h pngpriv.h pngrio.c
+pngwio.o pngwio.pic.o:		png.h pngconf.h pngdefs.h pngpriv.h pngwio.c
+pngmem.o pngmem.pic.o:		png.h pngconf.h pngdefs.h pngpriv.h pngmem.c
+pngset.o pngset.pic.o:		png.h pngconf.h pngdefs.h pngpriv.h pngset.c
+pnggcrd.o pnggcrd.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngget.c
+pngget.o pngget.pic.o:		png.h pngconf.h pngdefs.h pngpriv.h pngget.c
+pngread.o pngread.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngread.c
+pngrtran.o pngrtran.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngrtran.c
+pngrutil.o pngrutil.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngrutil.c
+pngtrans.o pngtrans.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngtrans.c
+pngwrite.o pngwrite.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngwrite.c
+pngwtran.o pngwtran.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngwtran.c
+pngwutil.o pngwutil.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngwutil.c
+pngpread.o pngpread.pic.o:	png.h pngconf.h pngdefs.h pngpriv.h pngpread.c
 
-pngtest.o:			png.h pngconf.h pngintrn.h pngtest.c
-pngtest-stat.o:			png.h pngconf.h pngintrn.h pngtest.c
-
-
+pngtest.o:			png.h pngconf.h pngdefs.h pngtest.c
+pngtest-stat.o:			png.h pngconf.h pngdefs.h pngtest.c
 
diff --git a/scripts/makefile.mips b/scripts/makefile.mips
index 61fd339..06308fd 100644
--- a/scripts/makefile.mips
+++ b/scripts/makefile.mips
@@ -30,7 +30,10 @@
 	pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
 	pngwtran.o pngmem.o pngerror.o pngpread.o
 
-all: libpng.a pngtest
+all: libpng.a pngtest pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.mips */" > pngdefs.h
 
 libpng.a: $(OBJS)
 	ar rc $@  $(OBJS)
@@ -48,16 +51,19 @@
 	-@mkdir $(DESTDIR)$(LIBPATH)
 	-@rm -f $(DESTDIR)$(INCPATH)/png.h
 	-@rm -f $(DESTDIR)$(INCPATH)/pngconf.h
+	-@rm -f $(DESTDIR)$(INCPATH)/pngdefs.h
 	cp png.h $(DESTDIR)$(INCPATH)/libpng
 	cp pngconf.h $(DESTDIR)$(INCPATH)/libpng
+	cp pngdefs.h $(DESTDIR)$(INCPATH)/libpng
 	chmod 644 $(DESTDIR)$(INCPATH)/libpng/png.h
 	chmod 644 $(DESTDIR)$(INCPATH)/libpng/pngconf.h
+	chmod 644 $(DESTDIR)$(INCPATH)/libpng/pngdefs.h
 	(cd $(DESTDIR)$(INCPATH); ln -f -s libpng/* .)
 	cp libpng.a $(DESTDIR)$(LIBPATH)
 	chmod 644 $(DESTDIR)$(LIBPATH)/libpng.a
 
 clean:
-	rm -f *.o libpng.a pngtest pngout.png
+	rm -f *.o libpng.a pngtest pngout.png pngdefs.h
 
 DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
 writelock:
@@ -65,19 +71,19 @@
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-png.o: png.h pngconf.h pngintrn.h
-pngerror.o: png.h pngconf.h pngintrn.h
-pngrio.o: png.h pngconf.h pngintrn.h
-pngwio.o: png.h pngconf.h pngintrn.h
-pngmem.o: png.h pngconf.h pngintrn.h
-pngset.o: png.h pngconf.h pngintrn.h
-pngget.o: png.h pngconf.h pngintrn.h
-pngread.o: png.h pngconf.h pngintrn.h
-pngpread.o: png.h pngconf.h pngintrn.h
-pngrtran.o: png.h pngconf.h pngintrn.h
-pngrutil.o: png.h pngconf.h pngintrn.h
-pngtest.o: png.h pngconf.h pngintrn.h
-pngtrans.o: png.h pngconf.h pngintrn.h
-pngwrite.o: png.h pngconf.h pngintrn.h
-pngwtran.o: png.h pngconf.h pngintrn.h
-pngwutil.o: png.h pngconf.h pngintrn.h
+png.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngerror.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrio.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwio.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngmem.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngset.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngget.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngread.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngpread.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtest.o: png.h pngconf.h pngdefs.h
diff --git a/scripts/makefile.msc b/scripts/makefile.msc
index e739ba0..8d013c1 100644
--- a/scripts/makefile.msc
+++ b/scripts/makefile.msc
@@ -21,57 +21,60 @@
 OBJS2 = pngmem$(O) pngpread$(O) pngread$(O) pngerror$(O) pngwrite$(O)
 OBJS3 = pngrtran$(O) pngwtran$(O) pngrio$(O) pngwio$(O)
 
-all: libpng.lib
+all: libpng.lib pngdefs.h
 
-png$(O): png.h pngconf.h pngintrn.h
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.msc */" > pngdefs.h
+
+png$(O): png.h pngconf.h pngdefs.h pngpriv.h
 		  $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngset$(O): png.h pngconf.h pngintrn.h
+pngset$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pnggccrd$(O): png.h pngconf.h pngintrn.h
+pnggccrd$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngget$(O): png.h pngconf.h pngintrn.h
+pngget$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngread$(O): png.h pngconf.h pngintrn.h
+pngread$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngpread$(O): png.h pngconf.h pngintrn.h
+pngpread$(O): png.h pngconf.h pngdefs.h pngpriv.h
 		  $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngrtran$(O): png.h pngconf.h pngintrn.h
+pngrtran$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngrutil$(O): png.h pngconf.h pngintrn.h
+pngrutil$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngerror$(O): png.h pngconf.h pngintrn.h
+pngerror$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngmem$(O): png.h pngconf.h pngintrn.h
+pngmem$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngrio$(O): png.h pngconf.h pngintrn.h
+pngrio$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngwio$(O): png.h pngconf.h pngintrn.h
+pngwio$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngtest$(O): png.h pngconf.h pngintrn.h
+pngtest$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngtrans$(O): png.h pngconf.h pngintrn.h
+pngtrans$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngwrite$(O): png.h pngconf.h pngintrn.h
+pngwrite$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngwtran$(O): png.h pngconf.h pngintrn.h
+pngwtran$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngwutil$(O): png.h pngconf.h pngintrn.h
+pngwutil$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
 libpng.lib: $(OBJS1) $(OBJS2) $(OBJS3)
diff --git a/scripts/makefile.ne12bsd b/scripts/makefile.ne12bsd
index 0bd0c88..e7e9e17 100644
--- a/scripts/makefile.ne12bsd
+++ b/scripts/makefile.ne12bsd
@@ -12,45 +12,37 @@
 MANDIR= ${LOCALBASE}/man
 INCSDIR=${LOCALBASE}/include/libpng14
 
-LIB=	png12
+LIB=	png14
 SHLIB_MAJOR=	0
-SHLIB_MINOR=	1.4.0beta10
+SHLIB_MINOR=	1.4.0beta11
 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
-INCS=	png.h pngconf.h
+INCS=	png.h pngconf.h pngpriv.h
 MAN=	libpng.3 libpngpf.3 png.5
 
 CPPFLAGS+=-I${.CURDIR}
 
 CLEANFILES+=pngtest.o pngtest
 
-all: pngconf.h
+all: pngconf.h pngdefs.h
 
-pngconf.h.in: pngconf.h
-	cat pngconf.h > pngconf.h.in
-
-pngconf.h:	pngconf.h.in
-	sed "/Makefile-supplied defines go here:/q" pngconf.h.in > pngconf.h
-
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.netbsd */" > pngdefs.h
 	/* if you don't want to use the intel MMX code, uncomment this */
-	# echo "#define PNG_NO_MMX_CODE" >> pngconf.h
-
+	# echo "#define PNG_NO_MMX_CODE" >> pngdefs.h
 	/* if you don't need thread safety you can uncomment this */
-	# echo "#define PNG_THREAD_UNSAFE_OK" >> pngconf.h
+	# echo "#define PNG_THREAD_UNSAFE_OK" >> pngdefs.h
 
 # We should be able to do something like this instead of the manual
 # uncommenting, but it core dumps for me at the moment:
 # .if ${MACHINE_ARCH} == "i386"
-#   echo "#define PNG_THREAD_UNSAFE_OK" >> pngconf.h
+#   echo "#define PNG_THREAD_UNSAFE_OK" >> pngdefs.h
 #   MKLINT= no
 # .else
-#   echo "#define PNG_NO_MMX_CODE" >> pngconf.h
+#   echo "#define PNG_NO_MMX_CODE" >> pngdefs.h
 # .endif
 
-	sed "1,/Makefile-supplied defines go here:/d" pngconf.h.in >> pngconf.h
-
-
 pngtest.o:	pngtest.c
 	${CC} -c ${CPPFLAGS} ${CFLAGS} ${.ALLSRC} -o ${.TARGET}
 
diff --git a/scripts/makefile.netbsd b/scripts/makefile.netbsd
index 3242717..9cec5b7 100644
--- a/scripts/makefile.netbsd
+++ b/scripts/makefile.netbsd
@@ -13,42 +13,35 @@
 
 LIB=	png
 SHLIB_MAJOR=	3
-SHLIB_MINOR=	1.4.0beta10
+SHLIB_MINOR=	1.4.0beta11
 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
-INCS=	png.h pngconf.h
+INCS=	png.h pngconf.h pngpriv.h
 MAN=	libpng.3 libpngpf.3 png.5
 
 CPPFLAGS+=-I${.CURDIR}
 
 CLEANFILES+=pngtest.o pngtest
 
-all: pngconf.h
+all: pngconf.h pngdefs.h
 
-pngconf.h.in: pngconf.h
-	cat pngconf.h > pngconf.h.in
-
-pngconf.h: pngconf.h.in
-	sed "/Makefile-supplied defines go here:/q" pngconf.h.in > pngconf.h
-
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.netbsd */" > pngdefs.h
 	/* if you don't want to use the intel MMX code, uncomment this */
-	# echo "#define PNG_NO_MMX_CODE" >> pngconf.h
-
+	# echo "#define PNG_NO_MMX_CODE" >> pngdefs.h
 	/* if you don't need thread safety you can uncomment this */
-	# echo "#define PNG_THREAD_UNSAFE_OK" >> pngconf.h
+	# echo "#define PNG_THREAD_UNSAFE_OK" >> pngdefs.h
 
 # We should be able to do something like this instead of the manual
 # uncommenting, but it core dumps for me at the moment:
 # .if ${MACHINE_ARCH} == "i386"
-#   echo "#define PNG_THREAD_UNSAFE_OK" >> pngconf.h
+#   echo "#define PNG_THREAD_UNSAFE_OK" >> pngdefs.h
 #   MKLINT= no
 # .else
-#   echo "#define PNG_NO_MMX_CODE" >> pngconf.h
+#   echo "#define PNG_NO_MMX_CODE" >> pngdefs.h
 # .endif
 
-	sed "1,/Makefile-supplied defines go here:/d" pngconf.h.in >> pngconf.h
-
 pngtest.o:	pngtest.c
 	${CC} -c ${CPPFLAGS} ${CFLAGS} ${.ALLSRC} -o ${.TARGET}
 
diff --git a/scripts/makefile.openbsd b/scripts/makefile.openbsd
index e22e72b..05b0e4a 100644
--- a/scripts/makefile.openbsd
+++ b/scripts/makefile.openbsd
@@ -8,35 +8,23 @@
 MANDIR= ${PREFIX}/man/cat
 
 SHLIB_MAJOR=	0
-SHLIB_MINOR=	1.4.0beta10
+SHLIB_MINOR=	1.4.0beta11
 
 LIB=	png
 SRCS=	png.c pngerror.c pnggccrd.c pngget.c pngmem.c pngpread.c \
 	pngread.c pngrio.c pngrtran.c pngrutil.c pngset.c pngtrans.c \
 	pngwio.c pngwrite.c pngwtran.c pngwutil.c
 
-HDRS=	png.h pngconf.h
+HDRS=	png.h pngconf.h pngpriv.h pngdefs.h
 
 CFLAGS+= -Wall
 CPPFLAGS+= -I${.CURDIR}
 
-all: pngconf.h
+all: pngconf.h pngdefs.h
 
-pngconf.h.in: pngconf.h
-	cat pngconf.h > pngconf.h.in
-
-pngconf.h: pngconf.h.in
-	sed "/Makefile-supplied defines go here:/q" pngconf.h.in > pngconf.h
-
-	/* if you want to use the intel assembler code, remove this */
-	echo "#define PNG_NO_MMX_CODE" >> pngconf.h
-	/* if you want to use the intel MMX code, also remove this */
-	echo "#define PNG_NO_ASSEMBLER_CODE" >> pngconf.h
-
-	/* if you don't need thread safety you can uncomment this */
-	# echo "#define PNG_THREAD_UNSAFE_OK" >> pngconf.h
-
-	sed "1,/Makefile-supplied defines go here:/d" pngconf.h.in >> pngconf.h
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.openbsd */" > pngdefs.h
+	echo "#define PNG_NO_ASSEMBLER_CODE" >> pngdefs.h
 
 NOPROFILE= Yes
 
@@ -80,6 +68,7 @@
 	@rm -f ${DESTDIR}${LIBDIR}/debug/libpng.a
 	@rm -f ${DESTDIR}${PREFIX}/include/png.h
 	@rm -f ${DESTDIR}${PREFIX}/include/pngconf.h
+	@rm -f ${DESTDIR}${PREFIX}/include/pngdefs.h
 	@rmdir ${DESTDIR}${LIBDIR}/debug 2>/dev/null || true
 	${INSTALL} ${INSTALL_COPY} -o ${SHAREOWN} -g ${SHAREGRP} \
 		-m ${NONBINMODE} ${HDRS} ${DESTDIR}${PREFIX}/include/libpng
diff --git a/scripts/makefile.os2 b/scripts/makefile.os2
index afcd315..d1f0823 100644
--- a/scripts/makefile.os2
+++ b/scripts/makefile.os2
@@ -28,7 +28,10 @@
 
 .SUFFIXES:      .c .o
 
-all: $(PNGLIB) $(SHAREDLIB) $(SHAREDLIBIMP)
+all: $(PNGLIB) $(SHAREDLIB) $(SHAREDLIBIMP) pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.os2 */" > pngdefs.h
 
 $(PNGLIB): $(OBJS)
 	$(AR) rc $@ $(OBJS)
@@ -50,20 +53,20 @@
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-png.o png.pic.o: png.h pngconf.h pngintrn.h
-pngerror.o pngerror.pic.o: png.h pngconf.h pngintrn.h
-pngrio.o pngrio.pic.o: png.h pngconf.h pngintrn.h
-pngwio.o pngwio.pic.o: png.h pngconf.h pngintrn.h
-pngmem.o pngmem.pic.o: png.h pngconf.h pngintrn.h
-pngset.o pngset.pic.o: png.h pngconf.h pngintrn.h
-pngget.o pngget.pic.o: png.h pngconf.h pngintrn.h
-pngread.o pngread.pic.o: png.h pngconf.h pngintrn.h
-pngrtran.o pngrtran.pic.o: png.h pngconf.h pngintrn.h
-pngrutil.o pngrutil.pic.o: png.h pngconf.h pngintrn.h
-pngtrans.o pngtrans.pic.o: png.h pngconf.h pngintrn.h
-pngwrite.o pngwrite.pic.o: png.h pngconf.h pngintrn.h
-pngwtran.o pngwtran.pic.o: png.h pngconf.h pngintrn.h
-pngwutil.o pngwutil.pic.o: png.h pngconf.h pngintrn.h
-pngpread.o pngpread.pic.o: png.h pngconf.h pngintrn.h
+png.o png.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngerror.o pngerror.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrio.o pngrio.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwio.o pngwio.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngmem.o pngmem.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngset.o pngset.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngget.o pngget.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngread.o pngread.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran.o pngrtran.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil.o pngrutil.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans.o pngtrans.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite.o pngwrite.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran.o pngwtran.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil.o pngwutil.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngpread.o pngpread.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
 
-pngtest.o: png.h pngconf.h pngintrn.h
+pngtest.o: png.h pngconf.h pngdefs.h
diff --git a/scripts/makefile.sco b/scripts/makefile.sco
index 28dd424..da22c1e 100644
--- a/scripts/makefile.sco
+++ b/scripts/makefile.sco
@@ -9,7 +9,7 @@
 # Library name:
 LIBNAME = libpng14
 PNGMAJ = 1
-PNGMIN = 1.4.0beta10
+PNGMIN = 1.4.0beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
@@ -70,7 +70,10 @@
 .c.pic.o:
 	$(CC) -c $(CFLAGS) -KPIC -o $@ $*.c
 
-all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config
+all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.sco */" > pngdefs.h
 
 libpng.a: $(OBJS)
 	$(AR_RC) $@ $(OBJS)
@@ -110,9 +113,11 @@
 	-@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi
 	-@$(RM_F) $(DI)/png.h
 	-@$(RM_F) $(DI)/pngconf.h
-	cp png.h pngconf.h $(DI)/$(LIBNAME)
+	-@$(RM_F) $(DI)/pngdefs.h
+	cp png.h pngconf.h pngdefs.h $(DI)/$(LIBNAME)
 	chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h
-	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h
+	chmod 644 $(DI)/$(LIBNAME)/pngdefs.h
+	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pngdefs.h
 	-@$(RM_F) $(DI)/libpng
 	(cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .)
 
@@ -185,7 +190,7 @@
 clean:
 	$(RM_F) *.o libpng.a pngtest pngout.png libpng-config \
 	$(LIBSO) $(LIBSOMAJ)* pngtest-static pngtesti \
-	libpng.pc
+	libpng.pc pngdefs.h
 
 DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
 writelock:
@@ -193,20 +198,20 @@
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-png.o png.pic.o: png.h pngconf.h pngintrn.h
-pngerror.o pngerror.pic.o: png.h pngconf.h pngintrn.h
-pngrio.o pngrio.pic.o: png.h pngconf.h pngintrn.h
-pngwio.o pngwio.pic.o: png.h pngconf.h pngintrn.h
-pngmem.o pngmem.pic.o: png.h pngconf.h pngintrn.h
-pngset.o pngset.pic.o: png.h pngconf.h pngintrn.h
-pngget.o pngget.pic.o: png.h pngconf.h pngintrn.h
-pngread.o pngread.pic.o: png.h pngconf.h pngintrn.h
-pngrtran.o pngrtran.pic.o: png.h pngconf.h pngintrn.h
-pngrutil.o pngrutil.pic.o: png.h pngconf.h pngintrn.h
-pngtrans.o pngtrans.pic.o: png.h pngconf.h pngintrn.h
-pngwrite.o pngwrite.pic.o: png.h pngconf.h pngintrn.h
-pngwtran.o pngwtran.pic.o: png.h pngconf.h pngintrn.h
-pngwutil.o pngwutil.pic.o: png.h pngconf.h pngintrn.h
-pngpread.o pngpread.pic.o: png.h pngconf.h pngintrn.h
+png.o png.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngerror.o pngerror.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrio.o pngrio.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwio.o pngwio.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngmem.o pngmem.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngset.o pngset.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngget.o pngget.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngread.o pngread.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran.o pngrtran.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil.o pngrutil.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans.o pngtrans.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite.o pngwrite.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran.o pngwtran.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil.o pngwutil.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngpread.o pngpread.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
 
-pngtest.o: png.h pngconf.h pngintrn.h
+pngtest.o: png.h pngconf.h pngdefs.h
diff --git a/scripts/makefile.sggcc b/scripts/makefile.sggcc
index e796745..49646d6 100644
--- a/scripts/makefile.sggcc
+++ b/scripts/makefile.sggcc
@@ -6,7 +6,7 @@
 # Library name:
 LIBNAME=libpng14
 PNGMAJ = 1
-PNGMIN = 1.4.0beta10
+PNGMIN = 1.4.0beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
@@ -73,7 +73,11 @@
 	pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
 	pngwtran.o pngmem.o pngerror.o pngpread.o
 
-all: libpng.a pngtest shared libpng.pc libpng-config
+all: libpng.a pngtest shared libpng.pc libpng-config pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.sggcc */" > pngdefs.h
+	echo "#define PNG_NO_MMX_CODE" >> pngdefs.h
 
 libpng.a: $(OBJS)
 	$(AR_RC) $@ $(OBJS)
@@ -114,12 +118,13 @@
 	echo Testing local static library.
 	./pngtest
 
-install-headers: png.h pngconf.h
+install-headers: png.h pngconf.h pngdefs.h
 	-@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi
 	-@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi
 	cp png.h pngconf.h $(DI)/$(LIBNAME)
 	chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h
-	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h
+	chmod 644 $(DI)/$(LIBNAME)/pngdefs.h
+	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pngdefs.h
 	-@$(RM_F) $(DI)/libpng
 	(cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .)
 
@@ -196,7 +201,7 @@
 clean:
 	$(RM_F) libpng.a pngtest pngtesti pngout.png libpng.pc libpng-config \
 	$(LIBSO) $(LIBSOMAJ)* \
-	so_locations
+	so_locations pngdefs.h
 
 DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
 writelock:
@@ -204,21 +209,21 @@
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-png.o: png.h pngconf.h pngintrn.h
-pngerror.o: png.h pngconf.h pngintrn.h
-pngrio.o: png.h pngconf.h pngintrn.h
-pngwio.o: png.h pngconf.h pngintrn.h
-pngmem.o: png.h pngconf.h pngintrn.h
-pngset.o: png.h pngconf.h pngintrn.h
-pngget.o: png.h pngconf.h pngintrn.h
-pngread.o: png.h pngconf.h pngintrn.h
-pngrtran.o: png.h pngconf.h pngintrn.h
-pngrutil.o: png.h pngconf.h pngintrn.h
-pngtest.o: png.h pngconf.h pngintrn.h
-pngtrans.o: png.h pngconf.h pngintrn.h
-pngwrite.o: png.h pngconf.h pngintrn.h
-pngwtran.o: png.h pngconf.h pngintrn.h
-pngwutil.o: png.h pngconf.h pngintrn.h
-pngpread.o: png.h pngconf.h pngintrn.h
-pnggccrd.o: png.h pngconf.h pngintrn.h
+png.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngerror.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrio.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwio.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngmem.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngset.o: png.h pngconf.h pngdefs.h pngpriv.h
+pnggccrd.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngget.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngread.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngpread.o: png.h pngconf.h pngdefs.h pngpriv.h
 
+pngtest.o: png.h pngconf.h pngdefs.h
diff --git a/scripts/makefile.sgi b/scripts/makefile.sgi
index 7aed15e..3700d4c 100644
--- a/scripts/makefile.sgi
+++ b/scripts/makefile.sgi
@@ -6,7 +6,7 @@
 # Library name:
 LIBNAME=libpng14
 PNGMAJ = 1
-PNGMIN = 1.4.0beta10
+PNGMIN = 1.4.0beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
@@ -76,21 +76,11 @@
 	pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
 	pngwtran.o pngmem.o pngerror.o pngpread.o
 
-all: libpng.a pngtest shared libpng.pc libpng-config pngconf.h
+all: libpng.a pngtest shared libpng.pc libpng-config pngconf.h pngdefs.h
 
-pngconf.h.in: pngconf.h
-	cat pngconf.h > pngconf.h.in
-
-pngconf.h: pngconf.h.in
-	sed "/Makefile-supplied defines go here:/q" pngconf.h.in > pngconf.h
-
-	/* if you don't want to use the intel MMX code, uncomment this */
-	echo "#define PNG_NO_MMX_CODE" >> pngconf.h
-
-	/* if you don't need thread safety you can uncomment this */
-	# echo "#define PNG_THREAD_UNSAFE_OK" >> pngconf.h
-
-	sed "1,/Makefile-supplied defines go here:/d" pngconf.h.in >> pngconf.h
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.sgi */" > pngdefs.h
+	echo "#define PNG_NO_MMX_CODE" >> pngdefs.h
 
 libpng.a: $(OBJS)
 	$(AR_RC) $@ $(OBJS)
@@ -132,12 +122,13 @@
 	echo Testing local static library.
 	./pngtest
 
-install-headers: png.h pngconf.h
+install-headers: png.h pngconf.h pngdefs.h
 	-@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi
 	-@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi
-	cp png.h pngconf.h $(DI)/$(LIBNAME)
+	cp png.h pngconf.h pngdefs.h $(DI)/$(LIBNAME)
 	chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h
-	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h
+	chmod 644 $(DI)/$(LIBNAME)/pngdefs.h
+	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pngdefs.h
 	-@$(RM_F) $(DI)/libpng
 	(cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .)
 
@@ -213,7 +204,7 @@
 
 clean:
 	$(RM_F) *.o libpng.a pngtest pngtesti pngout.png libpng.pc
-	 libpng-config  $(LIBSO) $(LIBSOMAJ)*  so_locations
+	 libpng-config  $(LIBSO) $(LIBSOMAJ)*  so_locations pngdefs.h
 
 DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
 writelock:
@@ -221,21 +212,21 @@
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-png.o: png.h pngconf.h pngintrn.h
-pngerror.o: png.h pngconf.h pngintrn.h
-pngrio.o: png.h pngconf.h pngintrn.h
-pngwio.o: png.h pngconf.h pngintrn.h
-pngmem.o: png.h pngconf.h pngintrn.h
-pngset.o: png.h pngconf.h pngintrn.h
-pngget.o: png.h pngconf.h pngintrn.h
-pnggccrd.o: png.h pngconf.h pngintrn.h
-pngread.o: png.h pngconf.h pngintrn.h
-pngrtran.o: png.h pngconf.h pngintrn.h
-pngrutil.o: png.h pngconf.h pngintrn.h
-pngtest.o: png.h pngconf.h pngintrn.h
-pngtrans.o: png.h pngconf.h pngintrn.h
-pngwrite.o: png.h pngconf.h pngintrn.h
-pngwtran.o: png.h pngconf.h pngintrn.h
-pngwutil.o: png.h pngconf.h pngintrn.h
-pngpread.o: png.h pngconf.h pngintrn.h
+png.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngerror.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrio.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwio.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngmem.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngset.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngget.o: png.h pngconf.h pngdefs.h pngpriv.h
+pnggccrd.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngread.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngpread.o: png.h pngconf.h pngdefs.h pngpriv.h
 
+pngtest.o: png.h pngconf.h pngdefs.h
diff --git a/scripts/makefile.so9 b/scripts/makefile.so9
index 67d4964..2b617ec 100644
--- a/scripts/makefile.so9
+++ b/scripts/makefile.so9
@@ -8,7 +8,7 @@
 
 # Library name:
 PNGMAJ = 1
-PNGMIN = 1.4.0beta10
+PNGMIN = 1.4.0beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 LIBNAME = libpng14
 
@@ -80,7 +80,10 @@
 .c.pic.o:
 	$(CC) -c $(CFLAGS) -KPIC -o $@ $*.c
 
-all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config
+all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.so9 */" > pngdefs.h
 
 libpng.a: $(OBJS)
 	$(AR_RC) $@ $(OBJS)
@@ -127,12 +130,13 @@
 test: pngtest
 	./pngtest
 
-install-headers: png.h pngconf.h
+install-headers: png.h pngconf.h pngdefs.h
 	-@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi
 	-@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi
-	cp png.h pngconf.h $(DI)/$(LIBNAME)
+	cp png.h pngconf.h pngdefs.h $(DI)/$(LIBNAME)
 	chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h
-	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h
+	chmod 644 $(DI)/$(LIBNAME)/pngdefs.h
+	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pngdefs.h
 	-@$(RM_F) $(DI)/libpng
 	(cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .)
 
@@ -207,7 +211,7 @@
 clean:
 	$(RM_F) *.o libpng.a pngtest pngtesti pngout.png \
 	libpng-config $(LIBSO) $(LIBSOMAJ)* \
-	libpng.pc
+	libpng.pc pngdefs.h
 
 DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
 writelock:
@@ -215,20 +219,20 @@
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-png.o png.pic.o: png.h pngconf.h pngintrn.h
-pngerror.o pngerror.pic.o: png.h pngconf.h pngintrn.h
-pngrio.o pngrio.pic.o: png.h pngconf.h pngintrn.h
-pngwio.o pngwio.pic.o: png.h pngconf.h pngintrn.h
-pngmem.o pngmem.pic.o: png.h pngconf.h pngintrn.h
-pngset.o pngset.pic.o: png.h pngconf.h pngintrn.h
-pngget.o pngget.pic.o: png.h pngconf.h pngintrn.h
-pngread.o pngread.pic.o: png.h pngconf.h pngintrn.h
-pngrtran.o pngrtran.pic.o: png.h pngconf.h pngintrn.h
-pngrutil.o pngrutil.pic.o: png.h pngconf.h pngintrn.h
-pngtrans.o pngtrans.pic.o: png.h pngconf.h pngintrn.h
-pngwrite.o pngwrite.pic.o: png.h pngconf.h pngintrn.h
-pngwtran.o pngwtran.pic.o: png.h pngconf.h pngintrn.h
-pngwutil.o pngwutil.pic.o: png.h pngconf.h pngintrn.h
-pngpread.o pngpread.pic.o: png.h pngconf.h pngintrn.h
+png.o png.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngerror.o pngerror.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrio.o pngrio.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwio.o pngwio.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngmem.o pngmem.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngset.o pngset.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngget.o pngget.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngread.o pngread.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran.o pngrtran.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil.o pngrutil.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans.o pngtrans.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite.o pngwrite.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran.o pngwtran.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil.o pngwutil.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngpread.o pngpread.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
 
-pngtest.o: png.h pngconf.h pngintrn.h
+pngtest.o: png.h pngconf.h pngdefs.h
diff --git a/scripts/makefile.solaris b/scripts/makefile.solaris
index c15bced..8630362 100644
--- a/scripts/makefile.solaris
+++ b/scripts/makefile.solaris
@@ -8,7 +8,7 @@
 # Library name:
 LIBNAME = libpng14
 PNGMAJ = 1
-PNGMIN = 1.4.0beta10
+PNGMIN = 1.4.0beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
@@ -76,15 +76,11 @@
 .c.pic.o:
 	$(CC) -c $(CFLAGS) -fPIC -o $@ $*.c
 
-all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config pngconf.h
+all: libpng.a $(LIBSO) pngtest libpng.pc libpng-config pngconf.h pngdefs.h
 
-pngconf.h.in: pngconf.h
-	cat pngconf.h > pngconf.h.in
-
-pngconf.h: pngconf.h.in
-	sed "/Makefile-supplied defines go here:/q" pngconf.h.in > pngconf.h
-	echo "#define PNG_NO_MMX_CODE" >> pngconf.h
-	sed "1,/Makefile-supplied defines go here:/d" pngconf.h.in >> pngconf.h
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.solaris */" > pngdefs.h
+	echo "#define PNG_NO_MMX_CODE" >> pngdefs.h
 
 libpng.a: $(OBJS)
 	$(AR_RC) $@ $(OBJS)
@@ -132,12 +128,13 @@
 test: pngtest
 	./pngtest
 
-install-headers: png.h pngconf.h
+install-headers: png.h pngconf.h pngdefs.h
 	-@if [ ! -d $(DI) ]; then $(MKDIR_P) $(DI); fi
 	-@if [ ! -d $(DI)/$(LIBNAME) ]; then $(MKDIR_P) $(DI)/$(LIBNAME); fi
-	cp png.h pngconf.h $(DI)/$(LIBNAME)
+	cp png.h pngconf.h pngdefs.h $(DI)/$(LIBNAME)
 	chmod 644 $(DI)/$(LIBNAME)/png.h $(DI)/$(LIBNAME)/pngconf.h
-	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h
+	chmod 644 $(DI)/$(LIBNAME)/pngdefs.h
+	-@$(RM_F) $(DI)/png.h $(DI)/pngconf.h $(DI)/pngdefs.h
 	-@$(RM_F) $(DI)/libpng
 	(cd $(DI); $(LN_SF) $(LIBNAME) libpng; $(LN_SF) $(LIBNAME)/* .)
 
@@ -212,7 +209,7 @@
 clean:
 	$(RM_F) *.o libpng.a pngtest pngtesti pngout.png \
 	libpng-config $(LIBSO) $(LIBSOMAJ)* \
-	libpng.pc
+	libpng.pc pngdefs.h
 
 DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
 writelock:
@@ -220,22 +217,22 @@
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-png.o png.pic.o: png.h pngconf.h pngintrn.h
-pngerror.o pngerror.pic.o: png.h pngconf.h pngintrn.h
-pngrio.o pngrio.pic.o: png.h pngconf.h pngintrn.h
-pngwio.o pngwio.pic.o: png.h pngconf.h pngintrn.h
-pngmem.o pngmem.pic.o: png.h pngconf.h pngintrn.h
-pngset.o pngset.pic.o: png.h pngconf.h pngintrn.h
-pnggccrd.o pnggccrd.pic.o: png.h pngconf.h pngintrn.h
-pngget.o pngget.pic.o: png.h pngconf.h pngintrn.h
-pnggccrd.o pngget.pic.o: png.h pngconf.h pngintrn.h
-pngread.o pngread.pic.o: png.h pngconf.h pngintrn.h
-pngrtran.o pngrtran.pic.o: png.h pngconf.h pngintrn.h
-pngrutil.o pngrutil.pic.o: png.h pngconf.h pngintrn.h
-pngtrans.o pngtrans.pic.o: png.h pngconf.h pngintrn.h
-pngwrite.o pngwrite.pic.o: png.h pngconf.h pngintrn.h
-pngwtran.o pngwtran.pic.o: png.h pngconf.h pngintrn.h
-pngwutil.o pngwutil.pic.o: png.h pngconf.h pngintrn.h
-pngpread.o pngpread.pic.o: png.h pngconf.h pngintrn.h
+png.o png.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngerror.o pngerror.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrio.o pngrio.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwio.o pngwio.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngmem.o pngmem.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngset.o pngset.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pnggccrd.o pnggccrd.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngget.o pngget.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pnggccrd.o pngget.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngread.o pngread.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran.o pngrtran.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil.o pngrutil.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans.o pngtrans.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite.o pngwrite.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran.o pngwtran.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil.o pngwutil.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngpread.o pngpread.pic.o: png.h pngconf.h pngdefs.h pngpriv.h
 
-pngtest.o: png.h pngconf.h pngintrn.h
+pngtest.o: png.h pngconf.h pngdefs.h
diff --git a/scripts/makefile.std b/scripts/makefile.std
index 12f9af1..2e7a7a8 100644
--- a/scripts/makefile.std
+++ b/scripts/makefile.std
@@ -40,6 +40,9 @@
 
 all: libpng.a pngtest
 
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.std */" > pngdefs.h
+
 libpng.a: $(OBJS)
 	$(AR_RC) $@  $(OBJS)
 	$(RANLIB) $@
@@ -56,16 +59,19 @@
 	-@$(MKDIR_P) $(DESTDIR)$(LIBPATH)
 	-@$(RM_F) $(DESTDIR)$(INCPATH)/png.h
 	-@$(RM_F) $(DESTDIR)$(INCPATH)/pngconf.h
+	-@$(RM_F) $(DESTDIR)$(INCPATH)/pngdefs.h
 	cp png.h $(DESTDIR)$(INCPATH)/libpng
 	cp pngconf.h $(DESTDIR)$(INCPATH)/libpng
+	cp pngdefs.h $(DESTDIR)$(INCPATH)/libpng
 	chmod 644 $(DESTDIR)$(INCPATH)/libpng/png.h
 	chmod 644 $(DESTDIR)$(INCPATH)/libpng/pngconf.h
+	chmod 644 $(DESTDIR)$(INCPATH)/libpng/pngdefs.h
 	(cd $(DESTDIR)$(INCPATH); ln -f -s libpng/* .)
 	cp libpng.a $(DESTDIR)$(LIBPATH)
 	chmod 644 $(DESTDIR)$(LIBPATH)/libpng.a
 
 clean:
-	$(RM_F) *.o libpng.a pngtest pngout.png
+	$(RM_F) *.o libpng.a pngtest pngout.png pngdefs.h
 
 DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
 writelock:
@@ -73,20 +79,20 @@
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-png.o: png.h pngconf.h pngintrn.h
-pngerror.o: png.h pngconf.h pngintrn.h
-pngrio.o: png.h pngconf.h pngintrn.h
-pngwio.o: png.h pngconf.h pngintrn.h
-pngmem.o: png.h pngconf.h pngintrn.h
-pngset.o: png.h pngconf.h pngintrn.h
-pngget.o: png.h pngconf.h pngintrn.h
-pngread.o: png.h pngconf.h pngintrn.h
-pngrtran.o: png.h pngconf.h pngintrn.h
-pngrutil.o: png.h pngconf.h pngintrn.h
-pngtest.o: png.h pngconf.h pngintrn.h
-pngtrans.o: png.h pngconf.h pngintrn.h
-pngwrite.o: png.h pngconf.h pngintrn.h
-pngwtran.o: png.h pngconf.h pngintrn.h
-pngwutil.o: png.h pngconf.h pngintrn.h
-pngpread.o: png.h pngconf.h pngintrn.h
+png.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngerror.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrio.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwio.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngmem.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngset.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngget.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngread.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngpread.o: png.h pngconf.h pngdefs.h pngpriv.h
 
+pngtest.o: png.h pngconf.h pngdefs.h
diff --git a/scripts/makefile.sunos b/scripts/makefile.sunos
index 5cf7299..e2dca4b 100644
--- a/scripts/makefile.sunos
+++ b/scripts/makefile.sunos
@@ -43,7 +43,10 @@
 	pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \
 	pngwtran.o pngmem.o pngerror.o pngpread.o pnggccrd.o
 
-all: libpng.a pngtest
+all: libpng.a pngtest pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.elf */" > pngdefs.h
 
 libpng.a: $(OBJS)
 	$(AR_RC) $@  $(OBJS)
@@ -61,16 +64,18 @@
 	-@$(MKDIR_P) $(DESTDIR)$(LIBPATH)
 	-@$(RM_F) $(DESTDIR)$(INCPATH)/png.h
 	-@$(RM_F) $(DESTDIR)$(INCPATH)/pngconf.h
+	-@$(RM_F) $(DESTDIR)$(INCPATH)/pngdefs.h
 	cp png.h $(DESTDIR)$(INCPATH)/libpng
 	cp pngconf.h $(DESTDIR)$(INCPATH)/libpng
 	chmod 644 $(DESTDIR)$(INCPATH)/libpng/png.h
 	chmod 644 $(DESTDIR)$(INCPATH)/libpng/pngconf.h
+	chmod 644 $(DESTDIR)$(INCPATH)/libpng/pngdefs.h
 	(cd $(DESTDIR)$(INCPATH); $(LN_SF) libpng/* .)
 	cp libpng.a $(DESTDIR)$(LIBPATH)
 	chmod 644 $(DESTDIR)$(LIBPATH)/libpng.a
 
 clean:
-	$(RM_F) *.o libpng.a pngtest pngout.png
+	$(RM_F) *.o libpng.a pngtest pngout.png pngdefs.h
 
 DOCS = ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO
 writelock:
@@ -78,20 +83,20 @@
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
-png.o: png.h pngconf.h pngintrn.h
-pngerror.o: png.h pngconf.h pngintrn.h
-pngrio.o: png.h pngconf.h pngintrn.h
-pngwio.o: png.h pngconf.h pngintrn.h
-pngmem.o: png.h pngconf.h pngintrn.h
-pngset.o: png.h pngconf.h pngintrn.h
-pngget.o: png.h pngconf.h pngintrn.h
-pngread.o: png.h pngconf.h pngintrn.h
-pngrtran.o: png.h pngconf.h pngintrn.h
-pngrutil.o: png.h pngconf.h pngintrn.h
-pngtest.o: png.h pngconf.h pngintrn.h
-pngtrans.o: png.h pngconf.h pngintrn.h
-pngwrite.o: png.h pngconf.h pngintrn.h
-pngwtran.o: png.h pngconf.h pngintrn.h
-pngwutil.o: png.h pngconf.h pngintrn.h
-pngpread.o: png.h pngconf.h pngintrn.h
+png.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngerror.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrio.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwio.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngmem.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngset.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngget.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngread.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrtran.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngrutil.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngtrans.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwrite.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwtran.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngwutil.o: png.h pngconf.h pngdefs.h pngpriv.h
+pngpread.o: png.h pngconf.h pngdefs.h pngpriv.h
 
+pngtest.o: png.h pngconf.h pngdefs.h
diff --git a/scripts/makefile.tc3 b/scripts/makefile.tc3
index 060ce69..49a6d80 100644
--- a/scripts/makefile.tc3
+++ b/scripts/makefile.tc3
@@ -25,57 +25,60 @@
 
 all: libpng$(MODEL).lib pngtest$(E)
 
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.tc3 */" > pngdefs.h
+
 pngtest: pngtest$(E)
 
 test: pngtest$(E)
 	pngtest$(E)
 
-png$(O): png.h pngconf.h pngintrn.h
+png$(O): png.h pngconf.h pngdefs.h pngpriv.h
 		  $(CC) -c $(CFLAGS) $*.c
 
-pngset$(O): png.h pngconf.h pngintrn.h
+pngset$(O): png.h pngconf.h pngdefs.h pngpriv.h
 		  $(CC) -c $(CFLAGS) $*.c
 
-pngget$(O): png.h pngconf.h pngintrn.h
+pngget$(O): png.h pngconf.h pngdefs.h pngpriv.h
 		  $(CC) -c $(CFLAGS) $*.c
 
-pngread$(O): png.h pngconf.h pngintrn.h
+pngread$(O): png.h pngconf.h pngdefs.h pngpriv.h
 		  $(CC) -c $(CFLAGS) $*.c
 
-pngpread$(O): png.h pngconf.h pngintrn.h
+pngpread$(O): png.h pngconf.h pngdefs.h pngpriv.h
 		  $(CC) -c $(CFLAGS) $*.c
 
-pngrtran$(O): png.h pngconf.h pngintrn.h
+pngrtran$(O): png.h pngconf.h pngdefs.h pngpriv.h
 		  $(CC) -c $(CFLAGS) $*.c
 
-pngrutil$(O): png.h pngconf.h pngintrn.h
+pngrutil$(O): png.h pngconf.h pngdefs.h pngpriv.h
 		  $(CC) -c $(CFLAGS) $*.c
 
-pngerror$(O): png.h pngconf.h pngintrn.h
+pngerror$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c
 
-pngmem$(O): png.h pngconf.h pngintrn.h
+pngmem$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c
 
-pngrio$(O): png.h pngconf.h pngintrn.h
+pngrio$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c
 
-pngwio$(O): png.h pngconf.h pngintrn.h
+pngwio$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c
 
-pngtest$(O): png.h pngconf.h pngintrn.h
+pngtest$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c
 
-pngtrans$(O): png.h pngconf.h pngintrn.h
+pngtrans$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c
 
-pngwrite$(O): png.h pngconf.h pngintrn.h
+pngwrite$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c
 
-pngwtran$(O): png.h pngconf.h pngintrn.h
+pngwtran$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c
 
-pngwutil$(O): png.h pngconf.h pngintrn.h
+pngwutil$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c
 
 libpng$(MODEL).lib: $(OBJS1) $(OBJS2) $(OBJS3)
diff --git a/scripts/makefile.vcawin32 b/scripts/makefile.vcawin32
index 030f295..d9583ba 100644
--- a/scripts/makefile.vcawin32
+++ b/scripts/makefile.vcawin32
@@ -31,65 +31,61 @@
 OBJS  = $(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4)
 
 # Targets
-all: libpng.lib pngconf.h
+all: libpng.lib pngdefs.h
 
-pngconf.h.in: pngconf.h
-	cat pngconf.h > pngconf.h.in
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.vcawin32 */" > pngdefs.h
+	echo "#define PNG_USE_PNGVCRD" >> pngdefs.h
 
-pngconf.h: pngconf.h.in
-	sed "/Makefile-supplied defines go here:/q" pngconf.h.in > pngconf.h
-	echo "#define PNG_USE_PNGVCRD" >> pngconf.h
-	sed "1,/Makefile-supplied defines go here:/d" pngconf.h.in >> pngconf.h
-
-png$(O): png.h pngconf.h pngintrn.h
+png$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngset$(O): png.h pngconf.h pngintrn.h
+pngset$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngget$(O): png.h pngconf.h pngintrn.h
+pngget$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngread$(O): png.h pngconf.h pngintrn.h
+pngread$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngpread$(O): png.h pngconf.h pngintrn.h
+pngpread$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngrtran$(O): png.h pngconf.h pngintrn.h
+pngrtran$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngrutil$(O): png.h pngconf.h pngintrn.h
+pngrutil$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngerror$(O): png.h pngconf.h pngintrn.h
+pngerror$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngmem$(O): png.h pngconf.h pngintrn.h
+pngmem$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngrio$(O): png.h pngconf.h pngintrn.h
+pngrio$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngwio$(O): png.h pngconf.h pngintrn.h
+pngwio$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngtest$(O): png.h pngconf.h pngintrn.h
+pngtest$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngtrans$(O): png.h pngconf.h pngintrn.h
+pngtrans$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngwrite$(O): png.h pngconf.h pngintrn.h
+pngwrite$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngwtran$(O): png.h pngconf.h pngintrn.h
+pngwtran$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngwutil$(O): png.h pngconf.h pngintrn.h
+pngwutil$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngvcrd$(O): png.h pngconf.h pngintrn.h
+pngvcrd$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
 libpng.lib: $(OBJS)
diff --git a/scripts/makefile.vcwin32 b/scripts/makefile.vcwin32
index a59779a..9258cab 100644
--- a/scripts/makefile.vcwin32
+++ b/scripts/makefile.vcwin32
@@ -30,65 +30,61 @@
 OBJS  = $(OBJS1) $(OBJS2) $(OBJS3)
 
 # Targets
-all: libpng.lib pngconf.h
+all: libpng.lib pngdefs.h
 
-pngconf.h.in: pngconf.h
-	cat pngconf.h > pngconf.h.in
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.vcwin32 */" > pngdefs.h
+	echo "#define PNG_NO_MMX_CODE" >> pngdefs.h
 
-pngconf.h: pngconf.h.in
-	sed "/Makefile-supplied defines go here:/q" pngconf.h.in > pngconf.h
-	echo "#define PNG_NO_MMX_CODE" >> pngconf.h
-	sed "1,/Makefile-supplied defines go here:/d" pngconf.h.in >> pngconf.h
-
-png$(O): png.h pngconf.h pngintrn.h
+png$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngset$(O): png.h pngconf.h pngintrn.h
+pngset$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pnggccrd$(O): png.h pngconf.h pngintrn.h
+pnggccrd$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngget$(O): png.h pngconf.h pngintrn.h
+pngget$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngread$(O): png.h pngconf.h pngintrn.h
+pngread$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngpread$(O): png.h pngconf.h pngintrn.h
+pngpread$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngrtran$(O): png.h pngconf.h pngintrn.h
+pngrtran$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngrutil$(O): png.h pngconf.h pngintrn.h
+pngrutil$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngerror$(O): png.h pngconf.h pngintrn.h
+pngerror$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngmem$(O): png.h pngconf.h pngintrn.h
+pngmem$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngrio$(O): png.h pngconf.h pngintrn.h
+pngrio$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngwio$(O): png.h pngconf.h pngintrn.h
+pngwio$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngtest$(O): png.h pngconf.h pngintrn.h
+pngtest$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngtrans$(O): png.h pngconf.h pngintrn.h
+pngtrans$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngwrite$(O): png.h pngconf.h pngintrn.h
+pngwrite$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngwtran$(O): png.h pngconf.h pngintrn.h
+pngwtran$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
-pngwutil$(O): png.h pngconf.h pngintrn.h
+pngwutil$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) -c $(CFLAGS) $*.c $(ERRFILE)
 
 libpng.lib: $(OBJS)
diff --git a/scripts/makefile.watcom b/scripts/makefile.watcom
index c0b1f4b..569a141 100644
--- a/scripts/makefile.watcom
+++ b/scripts/makefile.watcom
@@ -44,54 +44,57 @@
 OBJS3=pngrtran$(O) pngwtran$(O) pngrio$(O) pngwio$(O)
 
 
-all: test
+all: test pngdefs.h
 
-png$(O): png.h pngconf.h pngintrn.h
+pngdefs.h:
+	echo "/* pngdefs.h was built by makefile.watcam */" > pngdefs.h
+
+png$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngset$(O): png.h pngconf.h pngintrn.h
+pngset$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngget$(O): png.h pngconf.h pngintrn.h
+pngget$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngread$(O): png.h pngconf.h pngintrn.h
+pngread$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngpread$(O): png.h pngconf.h pngintrn.h
+pngpread$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngrtran$(O): png.h pngconf.h pngintrn.h
+pngrtran$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngrutil$(O): png.h pngconf.h pngintrn.h
+pngrutil$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngerror$(O): png.h pngconf.h pngintrn.h
+pngerror$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngmem$(O): png.h pngconf.h pngintrn.h
+pngmem$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngrio$(O): png.h pngconf.h pngintrn.h
+pngrio$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngwio$(O): png.h pngconf.h pngintrn.h
+pngwio$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngtest$(O): png.h pngconf.h pngintrn.h
+pngtest$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngtrans$(O): png.h pngconf.h pngintrn.h
+pngtrans$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngwrite$(O): png.h pngconf.h pngintrn.h
+pngwrite$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngwtran$(O): png.h pngconf.h pngintrn.h
+pngwtran$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
-pngwutil$(O): png.h pngconf.h pngintrn.h
+pngwutil$(O): png.h pngconf.h pngdefs.h pngpriv.h
 	$(CC) $(CFLAGS) $*.c $(ERRFILE)
 
 libpng.lib: $(OBJS1) $(OBJS2) $(OBJS3)
diff --git a/scripts/makevms.com b/scripts/makevms.com
index b9e3895..c81a156 100644
--- a/scripts/makevms.com
+++ b/scripts/makevms.com
@@ -52,44 +52,45 @@
 $ write sys$output "Compiling Libpng sources ..."
 $ if make.eqs.""
 $  then
+$   echo "" > pngdefs.h
 $   dele pngtest.obj;*
 $   CALL MAKE png.OBJ "cc ''CCOPT' png" -
-	png.c png.h pngconf.h
+	png.c png.h pngconf.h pngdefs.h pngpriv.h
 $   CALL MAKE pngpread.OBJ "cc ''CCOPT' pngpread" -
-					 pngpread.c png.h pngconf.h
+	pngpread.c png.h pngconf.h pngdefs.h pngpriv.h
 $   CALL MAKE pngset.OBJ "cc ''CCOPT' pngset" -
-	pngset.c png.h pngconf.h
+	pngset.c png.h pngconf.h pngdefs.h pngpriv.h
 $   CALL MAKE pngget.OBJ "cc ''CCOPT' pngget" -
-	pngget.c png.h pngconf.h
+	pngget.c png.h pngconf.h pngdefs.h pngpriv.h
 $   CALL MAKE pngread.OBJ "cc ''CCOPT' pngread" -
-	pngread.c png.h pngconf.h
+	pngread.c png.h pngconf.h pngdefs.h pngpriv.h
 $   CALL MAKE pngpread.OBJ "cc ''CCOPT' pngpread" -
-					 pngpread.c png.h pngconf.h
+	pngpread.c png.h pngconf.h pngdefs.h pngpriv.h
 $   CALL MAKE pngrtran.OBJ "cc ''CCOPT' pngrtran" -
-	pngrtran.c png.h pngconf.h
+	pngrtran.c png.h pngconf.h pngdefs.h pngpriv.h
 $   CALL MAKE pngrutil.OBJ "cc ''CCOPT' pngrutil" -
-	pngrutil.c png.h pngconf.h
+	pngrutil.c png.h pngconf.h pngdefs.h pngpriv.h
 $   CALL MAKE pngerror.OBJ "cc ''CCOPT' pngerror" -
-	pngerror.c png.h pngconf.h
+	pngerror.c png.h pngconf.h pngdefs.h pngpriv.h
 $   CALL MAKE pngmem.OBJ "cc ''CCOPT' pngmem" -
-	pngmem.c png.h pngconf.h
+	pngmem.c png.h pngconf.h pngdefs.h pngpriv.h
 $   CALL MAKE pngrio.OBJ "cc ''CCOPT' pngrio" -
-	pngrio.c png.h pngconf.h
+	pngrio.c png.h pngconf.h pngdefs.h pngpriv.h
 $   CALL MAKE pngwio.OBJ "cc ''CCOPT' pngwio" -
-	pngwio.c png.h pngconf.h
+	pngwio.c png.h pngconf.h pngdefs.h pngpriv.h
 $   CALL MAKE pngtrans.OBJ "cc ''CCOPT' pngtrans" -
-	pngtrans.c png.h pngconf.h
+	pngtrans.c png.h pngconf.h pngdefs.h pngpriv.h
 $   CALL MAKE pngwrite.OBJ "cc ''CCOPT' pngwrite" -
-	pngwrite.c png.h pngconf.h
+	pngwrite.c png.h pngconf.h pngdefs.h pngpriv.h
 $   CALL MAKE pngwtran.OBJ "cc ''CCOPT' pngwtran" -
-	pngwtran.c png.h pngconf.h
+	pngwtran.c png.h pngconf.h pngdefs.h pngpriv.h
 $   CALL MAKE pngwutil.OBJ "cc ''CCOPT' pngwutil" -
-	pngwutil.c png.h pngconf.h
+	pngwutil.c png.h pngconf.h pngdefs.h pngpriv.h
 $   write sys$output "Building Libpng ..."
 $   CALL MAKE libpng.OLB "lib/crea libpng.olb *.obj" *.OBJ
 $   write sys$output "Building pngtest..."
 $   CALL MAKE pngtest.OBJ "cc ''CCOPT' pngtest" -
-	pngtest.c png.h pngconf.h
+	pngtest.c png.h pngconf.h pngdefs.h
 $   call make pngtest.exe -
 	"LINK pngtest,libpng.olb/lib,''zlibsrc'libz.olb/lib" -
 	pngtest.obj libpng.olb
diff --git a/scripts/pngos2.def b/scripts/pngos2.def
index 8a5c879..9580082 100644
--- a/scripts/pngos2.def
+++ b/scripts/pngos2.def
@@ -2,7 +2,7 @@
 ; PNG.LIB module definition file for OS/2
 ;----------------------------------------
 
-; Version 1.4.0beta10
+; Version 1.4.0beta11
 
 LIBRARY		PNG
 DESCRIPTION	"PNG image compression library for OS/2"
@@ -219,6 +219,9 @@
   png_save_int_32
   png_get_uint_31
   png_set_expand_gray_1_2_4_to_8
+; Added at version 1.4.0
+  png_get_io_chunk_name
+  png_get_io_state
 
 ; These are not present when libpng is compiled with PNG_NO_GLOBAL_ARRAYS
   png_libpng_ver
diff --git a/scripts/pngw32.def b/scripts/pngwin.def
similarity index 98%
rename from scripts/pngw32.def
rename to scripts/pngwin.def
index 2ffe67a..9b5d3c7 100644
--- a/scripts/pngw32.def
+++ b/scripts/pngwin.def
@@ -5,7 +5,7 @@
 LIBRARY
 
 EXPORTS
-;Version 1.4.0beta10
+;Version 1.4.0beta11
   png_build_grayscale_palette
   png_chunk_error
   png_chunk_warning
@@ -223,3 +223,5 @@
 ; png_benign_error
 ; png_benign_chunk_error
 ; png_set_benign_error
+  png_get_io_chunk_name
+  png_get_io_state
diff --git a/scripts/pngw32.rc b/scripts/pngwin.rc
similarity index 98%
rename from scripts/pngw32.rc
rename to scripts/pngwin.rc
index 02e30e2..46c8921 100644
--- a/scripts/pngw32.rc
+++ b/scripts/pngwin.rc
@@ -90,7 +90,7 @@
       VALUE "FileDescription", "PNG image compression library\000"
       VALUE "FileVersion", PNG_LIBPNG_VER_STRING "\000"
       VALUE "InternalName", PNG_LIBPNG_DLLFNAME QUOTE(PNG_LIBPNG_VER_DLLNUM) PNG_LIBPNG_DLLFNAME_POSTFIX " (Windows 32 bit)\000"
-      VALUE "LegalCopyright", "\251 1998-2004 Glenn Randers-Pehrson et al.\000"
+      VALUE "LegalCopyright", "\251 1998-2006 Glenn Randers-Pehrson et al.\000"
 #ifdef PNG_USER_VERSIONINFO_LEGALTRADEMARKS
       VALUE "LegalTrademarks", PNG_USER_VERSIONINFO_LEGALTRADEMARKS "\000"
 #endif /* PNG_USER_VERSIONINFO_LEGALTRADEMARKS */
diff --git a/scripts/smakefile.ppc b/scripts/smakefile.ppc
index e5c0278..a5fc6eb 100644
--- a/scripts/smakefile.ppc
+++ b/scripts/smakefile.ppc
@@ -19,7 +19,10 @@
 OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o pngread.o \
 pngerror.o pngpread.o pngwrite.o pngrtran.o pngwtran.o pngrio.o pngwio.o pngmem.o
 
-all: $(LIBNAME) pngtest
+all: $(LIBNAME) pngtest pngdefs.h
+
+pngdefs.h:
+	echo "/* pngdefs.h was built by smakefile.ppc */" > pngdefs.h
 
 $(LIBNAME): $(OBJS)
             $(AR) $(AR_FLAGS) $@ $(OBJS)
