Imported from libpng-1.0.7beta11.tar
diff --git a/ANNOUNCE b/ANNOUNCE
index 636caf0..59d5121 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,12 +1,10 @@
 
-Libpng 1.0.6j - May 4, 2000
+Libpng 1.0.7beta11 - May 6, 2000
 
-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.
+This is a public release of libpng, intended for use in production codes.
 
 Changes since the last public release (1.0.6):
 
-version 1.0.6d [April 8, 2000]
   Changed sprintf() to strcpy() in png_write_sCAL_s() to work without STDIO
   Added data_length parameter to png_decompress_chunk() function
   Revised documentation to remove reference to abandoned png_free_chnk functions
@@ -15,36 +13,33 @@
   Renamed makefile.ibmvac3 to makefile.ibmc, added libpng.icc IBM project file
   Added a check for info_ptr->free_me&PNG_FREE_TEXT when free'ing text in png.c
   Simplify png_sig_bytes() function to remove use of non-ISO-C strdup().
-version 1.0.6e [April 9, 2000]
   Added png_data_freer() function.
   In the code that checks for over-length tRNS chunks, added check of
     info_ptr->num_trans as well as png_ptr->num_trans (Matthias Benckmann)
-  Minor revisions of libpng.txt/libpng.3.
   Check for existing data and free it if the free_me flag is set, in png_set_*()
     and png_handle_*().
   Only define PNG_WEIGHTED_FILTERS_SUPPORTED when PNG_FLOATING_POINT_SUPPORTED
     is defined.
   Changed several instances of PNG_NO_CONSOLE_ID to PNG_NO_STDIO in pngrutil.c
     and mentioned the purposes of the two macros in libpng.txt/libpng.3.
-version 1.0.6f [April 14, 2000]
   Revised png_set_iCCP() and png_set_rows() to avoid prematurely freeing data.
   Add checks in png_set_text() for NULL members of the input text structure.
-  Revised libpng.txt/libpng.3.
   Removed superfluous prototype for png_set_itxt from png.h
   Removed "else" from pngread.c, after png_error(), and changed "0" to "length".
   Changed several png_errors about malformed ancillary chunks to png_warnings.
-version 1.0.6g [April 24, 2000]
   Added png_pass-* arrays to pnggccrd.c when PNG_USE_LOCAL_ARRAYS is defined.
   Relocated paragraph about png_set_background() in libpng.3/libpng.txt
     and other revisions (Matthias Benckmann)
+  Relocated info_ptr->free_me to restore binary compatibility with libpng-1.0.5
+    (breaks compatibility with libpng-1.0.6).
   Relocated info_ptr->free_me, png_ptr->free_me, and other info_ptr and
     png_ptr members to restore binary compatibility with libpng-1.0.5
     (breaks compatibility with libpng-1.0.6).
-version 1.0.6h [April 24, 2000]
-  Changed shared library so-number pattern from 2.x.y.z to xy.z (this builds
-    libpng.so.10 & libpng.so.10.6h instead of libpng.so.2 & libpng.so.2.1.0.6h)
-    This is a temporary change for test purposes.
-version 1.0.6i [May 3, 2000]
+  Rearranged some members at the end of png_info and png_struct, to put
+    unknown_chunks_num and free_me within the original size of the png_structs
+    and free_me, png_read_user_fn, and png_free_fn within the original png_info,
+    because some old applications allocate the structs directly instead of
+    using png_create_*().
   Added documentation of user memory functions in libpng.txt/libpng.3
   Modified png_read_png so that it will use user_allocated row_pointers
     if present, unless free_me directs that it be freed, and added description
@@ -56,14 +51,15 @@
     (new in version 1.0.2), rgb_to_gray (new in 1.0.5), iCCP, sCAL, sPLT,
     the high-level interface, and unknown chunks support (all new in 1.0.6).
     This was necessary because of old applications that allocate the structs
-    directly instead of using png_create_*(), as authors were instructed to
-    do in libpng-0.88 and earlier.
+    directly as authors were instructed to do in libpng-0.88 and earlier,
+    instead of using png_create_*(). 
   Added makefile.intel and updated makefile.watcom (Pawel Mrochen)
-version 1.0.6j [May 4, 2000]
   Overloaded png_read_init() and png_write_init() with macros that convert
     calls to png_read_init_2() or png_write_init_2() that check the version
     and structure sizes.
-  Restored original shared library so-number pattern (2.x.y.z)
+  In png_set_text, check if old application had allocated the png_text structure;
+    if so, only allow one text chunk to be processed to avoid memory overrun.
+  Added PNGAPI macro, and added it to the definitions of all exported functions.
 
 Send comments/corrections/commendations to
 png-implement@ccrc.wustl.edu or to randeg@alum.rpi.edu
diff --git a/CHANGES b/CHANGES
index b2d954f..297d6bf 100644
--- a/CHANGES
+++ b/CHANGES
@@ -717,19 +717,26 @@
     (new in version 1.0.2), rgb_to_gray (new in 1.0.5), iCCP, sCAL, sPLT,
     the high-level interface, and unknown chunks support (all new in 1.0.6).
     This was necessary because of old applications that allocate the structs
-    directly instead of using png_create_*(), as authors were instructed to
-    do in libpng-0.88 and earlier.
+    directly as authors were instructed to do in libpng-0.88 and earlier,
+    instead of using png_create_*(). 
   Added modes PNG_CREATED_READ_STRUCT and PNG_CREATED_WRITE_STRUCT which
     can be used to detect codes that directly allocate the structs, and
     code to check these modes in png_read_init() and png_write_init() and
     generate a libpng error if the modes aren't set and PNG_LEGACY_SUPPORTED
     was not defined.
   Added makefile.intel and updated makefile.watcom (Pawel Mrochen)
-version 1.0.6j [May 4, 2000]
+version 1.0.6j [May 3, 2000]
   Overloaded png_read_init() and png_write_init() with macros that convert
     calls to png_read_init_2() or png_write_init_2() that check the version
     and structure sizes.
-
+version 1.0.7beta11 [May 6, 2000]
+  Removed the new PNG_CREATED_READ_STRUCT and PNG_CREATED_WRITE_STRUCT modes
+    which are no longer used.
+  Eliminated the three new members of png_text when PNG_NO_iTXt_SUPPORTED
+    or PNG_LEGACY_SUPPORTED is defined.
+  In png_set_text, check if old application had allocated the png_text structure;
+    if so, only allow one text chunk to be processed to avoid memory overrun.
+  Added PNGAPI macro, and added it to the definitions of all exported functions.
 
 Send comments/corrections/commendations to
 png-implement@ccrc.wustl.edu or to randeg@alum.rpi.edu
diff --git a/INSTALL b/INSTALL
index b269b66..31bf267 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,5 +1,5 @@
 
-Installing libpng version 1.0.6j - May 4, 2000
+Installing libpng version 1.0.7beta11 - May 6, 2000
 
 Before installing libpng, you must first install zlib.  zlib
 can usually be found wherever you got libpng.  zlib can be
@@ -10,7 +10,7 @@
 version of zlib that's installed.
 
 You can rename the directories that you downloaded (they
-might be called "libpng-1.0.6j" or "lpng106" and "zlib-1.1.3"
+might be called "libpng-1.0.7beta11" or "lpng106" and "zlib-1.1.3"
 or "zlib113") so that you have directories called "zlib" and "libpng".
 
 Your directory structure should look like this:
@@ -47,8 +47,8 @@
 include
 
  makefile.std      =>  Generic UNIX makefile (cc, creates static libpng.a)
- makefile.linux    =>  Linux/ELF makefile (gcc, creates libpng.so.2.1.0.6j)
- makefile.gcmmx    =>  Linux/ELF makefile (gcc, creates libpng.so.2.1.0.6j,
+ makefile.linux    =>  Linux/ELF makefile (gcc, creates libpng.so.2.1.0.7beta11)
+ makefile.gcmmx    =>  Linux/ELF makefile (gcc, creates libpng.so.2.1.0.7beta11,
                        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
@@ -59,9 +59,9 @@
  makefile.ibmc     =>  IBM C/C++ version 3.x for Win32 and OS/2 (static)
  libpng.icc        =>  Project file for IBM VisualAge/C++ version 4.0 or later
  makefile.sgi      =>  Silicon Graphics IRIX makefile (cc, creates static lib)
- makefile.sggcc    =>  Silicon Graphics (gcc, creates libpng.so.2.1.0.6j)
+ makefile.sggcc    =>  Silicon Graphics (gcc, creates libpng.so.2.1.0.7beta11)
  makefile.sunos    =>  Sun makefile
- makefile.solaris  =>  Solaris 2.X makefile (gcc, creates libpng.so.2.1.0.6j)
+ makefile.solaris  =>  Solaris 2.X makefile (gcc, creates libpng.so.2.1.0.7beta11)
  makefile.sco      =>  For SCO OSr5  ELF and Unixware 7 with Native cc
  makefile.mips     =>  MIPS makefile
  makefile.acorn    =>  Acorn makefile
diff --git a/LICENSE b/LICENSE
index 0ee8fe3..6306d87 100644
--- a/LICENSE
+++ b/LICENSE
@@ -5,7 +5,7 @@
 Copyright (c) 1996, 1997 Andreas Dilger
 (libpng versions 0.90, December 1996, through 0.96, May 1997)
 Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
-(libpng versions 0.97, January 1998, through 1.0.6j, May 4, 2000)
+(libpng versions 0.97, January 1998, through 1.0.7beta11, May 6, 2000)
 
 For the purposes of this copyright and license, "Contributing Authors"
 is defined as the following set of individuals:
@@ -68,4 +68,4 @@
 
 Glenn Randers-Pehrson
 randeg@alum.rpi.edu
-May 4, 2000
+May 6, 2000
diff --git a/README b/README
index f2da192..4cd5a12 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-README for libpng 1.0.6j - May 4, 2000 (shared library 2.1)
+README for libpng 1.0.7beta11 - May 6, 2000 (shared library 2.1)
 See the note about version numbers near the top of png.h
 
 See INSTALL for instructions on how to install libpng.
@@ -172,9 +172,9 @@
        descrip.mms      =>  VMS makefile for MMS or MMK
        makefile.std     =>  Generic UNIX makefile (cc, creates static libpng.a)
        makefile.linux   =>  Linux/ELF makefile
-                            (gcc, creates libpng.so.2.1.0.6j)
+                            (gcc, creates libpng.so.2.1.0.7beta11)
        makefile.gcmmx   =>  Linux/ELF makefile (gcc, creates
-                            libpng.so.2.1.0.6j, uses assembler code
+                            libpng.so.2.1.0.7beta11, 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
@@ -185,10 +185,10 @@
        makefile.ibmc    =>  IBM C/C++ version 3.x for Win32 and OS/2 (static)
        libpng.icc       =>  Project file, IBM VisualAge/C++ 4.0 or later
        makefile.sgi     =>  Silicon Graphics IRIX (cc, creates static lib)
-       makefile.sggcc   =>  Silicon Graphics (gcc, creates libpng.so.2.1.0.6j)
+       makefile.sggcc   =>  Silicon Graphics (gcc, creates libpng.so.2.1.0.7beta11)
        makefile.sunos   =>  Sun makefile
        makefile.solaris =>  Solaris 2.X makefile
-                            (gcc, creates libpng.so.2.1.0.6j)
+                            (gcc, creates libpng.so.2.1.0.7beta11)
        makefile.sco     =>  For SCO OSr5  ELF and Unixware 7 with Native cc
        makefile.mips    =>  MIPS makefile
        makefile.acorn   =>  Acorn makefile
diff --git a/TODO b/TODO
index 58c11e7..e1de86c 100644
--- a/TODO
+++ b/TODO
@@ -1,6 +1,7 @@
 TODO - list of things to do for libpng:
 
 Final bug fixes.
+Improve API by hiding the png_struct and png_info structs.
 Finish work on the no-floating-point version (including gamma compensation)
 Better C++ wrapper/full C++ implementation?
 Fix problem with C++ and EXTERN "C".
@@ -16,4 +17,3 @@
    (counting huffman bits/precompression?  filter inertia?  filter costs?).
 Histogram creation.
 Text conversion between different code pages (Latin-1 -> Mac and DOS).
-Improve API by hiding the info_ptr.
diff --git a/Y2KINFO b/Y2KINFO
index 71f5f30..ffa82c1 100644
--- a/Y2KINFO
+++ b/Y2KINFO
@@ -1,13 +1,13 @@
    Y2K compliance in libpng:
    =========================
 
-      May 4, 2000
+      May 6, 2000
 
       Since the PNG Development group is an ad-hoc body, we can't make
       an official declaration.
 
       This is your unofficial assurance that libpng from version 0.71 and
-      upward through 1.0.6j are Y2K compliant.  It is my belief that earlier
+      upward through 1.0.7beta11 are Y2K compliant.  It is my belief that earlier
       versions were also Y2K compliant.
 
       Libpng only has three year fields.  One is a 2-byte unsigned integer
diff --git a/configure b/configure
index 363ac61..c7d2002 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 echo "
-  There is no \"configure\" script for Libpng-1.0.6j.  Instead, please
+  There is no \"configure\" script for Libpng-1.0.7beta11.  Instead, please
   copy the appropriate makefile for your system from the \"scripts\"
   directory.  Read the INSTALL file for more details.
 "
diff --git a/libpng.3 b/libpng.3
index 1d6c34b..2906875 100644
--- a/libpng.3
+++ b/libpng.3
@@ -1,6 +1,6 @@
-.TH LIBPNG 3 "May 4, 2000"
+.TH LIBPNG 3 "May 6, 2000"
 .SH NAME
-libpng \- Portable Network Graphics (PNG) Reference Library 1.0.6j
+libpng \- Portable Network Graphics (PNG) Reference Library 1.0.7beta11
 .SH SYNOPSIS
 \fI\fB
 
@@ -354,6 +354,12 @@
 
 \fI\fB
 
+\fBDEPRECATED: void png_read_init (png_structp \fIpng_ptr\fP\fB);\fP
+
+\fI\fB
+
+\fBDEPRECATED: void png_read_init_2 (png_structp \fP\fIpng_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
+
 \fBvoid png_read_info (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
 
 \fI\fB
@@ -694,6 +700,14 @@
 
 \fI\fB
 
+\fBDEPRECATED: void png_write_init (png_structp \fIpng_ptr\fP\fB);\fP
+
+\fI\fB
+
+\fBDEPRECATED: void png_write_init_2 (png_structp \fP\fIpng_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
@@ -725,7 +739,7 @@
 .SH LIBPNG.TXT
 libpng.txt - A description on how to use and modify libpng
 
- libpng version 1.0.6j - May 4, 2000
+ libpng version 1.0.7beta11 - May 6, 2000
  Updated and distributed by Glenn Randers-Pehrson
  <randeg@alum.rpi.edu>
  Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
@@ -819,9 +833,20 @@
 PNG file.  At one time, the fields of png_info were intended to be
 directly accessible to the user.  However, this tended to cause problems
 with applications using dynamically loaded libraries, and as a result
-a set of interface functions for png_info was developed.  The fields
-of png_info are still available for older applications, but it is
-suggested that applications use the new interfaces if at all possible.
+a set of interface functions for png_info (the png_get_*() and png_set_*()
+functions) was developed.  The fields of png_info are still available for
+older applications, but it is suggested that applications use the new
+interfaces if at all possible.
+
+Applications that do make direct access to the members of png_struct (except
+for png_ptr->jmpbuf) must be recompiled whenever the library is updated,
+and applications that make direct access to the members of png_info must
+be recompiled if they were compiled or loaded with libpng version 1.0.6,
+in which the members were in a different order.  In version 1.0.7, the
+members of the png_info structure reverted to the old order, as they were
+in versions 0.97c through 1.0.5.  Starting with version 2.0.0, both
+structures are going to be hidden, and the contents of the structures will
+only be accessible through the png_get/png_set functions.
 
 The png.h header file is an invaluable reference for programming with libpng.
 And while I'm on the topic, make sure you include the libpng header file:
@@ -3263,8 +3288,10 @@
 
 The old libpng functions png_read_init(), png_write_init(),
 png_info_init(), png_read_destroy(), and png_write_destory() have been
-moved to PNG_INTERNAL in version 0.95 to discourage their use.  The
-preferred method of creating and initializing the libpng structures is
+moved to PNG_INTERNAL in version 0.95 to discourage their use.  These
+functions will be removed from libpng version 2.0.0.
+
+The preferred method of creating and initializing the libpng structures is
 via the png_create_read_struct(), png_create_write_struct(), and
 png_create_info_struct() because they isolate the size of the structures
 from the application, allow version error checking, and also allow the
@@ -3281,19 +3308,19 @@
 because this caused applications that do not use custom error functions
 to fail if the png_ptr was not initialized to zero.  It is still possible
 to set the error callbacks AFTER png_read_init(), or to change them with
-png_set_error_fn(), which is essentially the same function, but with a
-new name to force compilation errors with applications that try to use
-the old method.
+png_set_error_fn(), which is essentially the same function, but with a new
+name to force compilation errors with applications that try to use the old
+method.
 
 .SH VII. Y2K Compliance in libpng
 
-May 4, 2000
+May 6, 2000
 
 Since the PNG Development group is an ad-hoc body, we can't make
 an official declaration.
 
 This is your unofficial assurance that libpng from version 0.71 and
-upward through 1.0.6j are Y2K compliant.  It is my belief that earlier
+upward through 1.0.7beta11 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
@@ -3434,7 +3461,7 @@
 
 Thanks to Frank J. T. Wojcik for helping with the documentation.
 
-Libpng version 1.0.6j - May 4, 2000:
+Libpng version 1.0.7beta11 - May 6, 2000:
 Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc.
 Currently maintained by Glenn Randers-Pehrson (randeg@alum.rpi.edu).
 
@@ -3449,7 +3476,7 @@
 Copyright (c) 1996, 1997 Andreas Dilger
 (libpng versions 0.89c, May 1996, through 0.96, May 1997)
 Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
-(libpng versions 0.97, January 1998, through 1.0.6j, May 4, 2000)
+(libpng versions 0.97, January 1998, through 1.0.7beta11, May 6, 2000)
 
 For the purposes of this copyright and license, "Contributing Authors"
 is defined as the following set of individuals:
diff --git a/libpng.txt b/libpng.txt
index 1739737..c223561 100644
--- a/libpng.txt
+++ b/libpng.txt
@@ -1,6 +1,6 @@
 libpng.txt - A description on how to use and modify libpng
 
- libpng version 1.0.6j - May 4, 2000
+ libpng version 1.0.7beta11 - May 6, 2000
  Updated and distributed by Glenn Randers-Pehrson
  <randeg@alum.rpi.edu>
  Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
@@ -94,9 +94,20 @@
 PNG file.  At one time, the fields of png_info were intended to be
 directly accessible to the user.  However, this tended to cause problems
 with applications using dynamically loaded libraries, and as a result
-a set of interface functions for png_info was developed.  The fields
-of png_info are still available for older applications, but it is
-suggested that applications use the new interfaces if at all possible.
+a set of interface functions for png_info (the png_get_*() and png_set_*()
+functions) was developed.  The fields of png_info are still available for
+older applications, but it is suggested that applications use the new
+interfaces if at all possible.
+
+Applications that do make direct access to the members of png_struct (except
+for png_ptr->jmpbuf) must be recompiled whenever the library is updated,
+and applications that make direct access to the members of png_info must
+be recompiled if they were compiled or loaded with libpng version 1.0.6,
+in which the members were in a different order.  In version 1.0.7, the
+members of the png_info structure reverted to the old order, as they were
+in versions 0.97c through 1.0.5.  Starting with version 2.0.0, both
+structures are going to be hidden, and the contents of the structures will
+only be accessible through the png_get/png_set functions.
 
 The png.h header file is an invaluable reference for programming with libpng.
 And while I'm on the topic, make sure you include the libpng header file:
@@ -2538,8 +2549,10 @@
 
 The old libpng functions png_read_init(), png_write_init(),
 png_info_init(), png_read_destroy(), and png_write_destory() have been
-moved to PNG_INTERNAL in version 0.95 to discourage their use.  The
-preferred method of creating and initializing the libpng structures is
+moved to PNG_INTERNAL in version 0.95 to discourage their use.  These
+functions will be removed from libpng version 2.0.0.
+
+The preferred method of creating and initializing the libpng structures is
 via the png_create_read_struct(), png_create_write_struct(), and
 png_create_info_struct() because they isolate the size of the structures
 from the application, allow version error checking, and also allow the
@@ -2556,19 +2569,19 @@
 because this caused applications that do not use custom error functions
 to fail if the png_ptr was not initialized to zero.  It is still possible
 to set the error callbacks AFTER png_read_init(), or to change them with
-png_set_error_fn(), which is essentially the same function, but with a
-new name to force compilation errors with applications that try to use
-the old method.
+png_set_error_fn(), which is essentially the same function, but with a new
+name to force compilation errors with applications that try to use the old
+method.
 
 VII. Y2K Compliance in libpng
 
-May 4, 2000
+May 6, 2000
 
 Since the PNG Development group is an ad-hoc body, we can't make
 an official declaration.
 
 This is your unofficial assurance that libpng from version 0.71 and
-upward through 1.0.6j are Y2K compliant.  It is my belief that earlier
+upward through 1.0.7beta11 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 210d504..79c54aa 100644
--- a/libpngpf.3
+++ b/libpngpf.3
@@ -1,6 +1,6 @@
-.TH LIBPNGPF 3 "May 4, 2000"
+.TH LIBPNGPF 3 "May 6, 2000"
 .SH NAME
-libpng \- Portable Network Graphics (PNG) Reference Library 1.0.6j
+libpng \- Portable Network Graphics (PNG) Reference Library 1.0.7beta11
 (private functions)
 .SH SYNOPSIS
 \fB#include <png.h>\fP
@@ -383,10 +383,6 @@
 
 \fI\fB
 
-\fBvoid png_read_init (png_structp \fIpng_ptr\fP\fB);\fP
-
-\fI\fB
-
 \fBvoid png_read_push_finish_row (png_structp \fIpng_ptr\fP\fB);\fP
 
 \fI\fB
@@ -469,10 +465,6 @@
 
 \fI\fB
 
-\fBvoid png_write_init (png_structp \fIpng_ptr\fP\fB);\fP
-
-\fI\fB
-
 \fBvoid png_write_iTXt (png_structp \fP\fIpng_ptr\fP\fB, int \fP\fIcompression\fP\fB, png_charp \fP\fIkey\fP\fB, png_charp \fP\fIlang\fP\fB, png_charp \fP\fItranslated_key\fP\fB, png_charp \fItext)\fP\fB);\fP
 
 \fI\fB
diff --git a/png.5 b/png.5
index 5118788..479cf00 100644
--- a/png.5
+++ b/png.5
@@ -1,4 +1,4 @@
-.TH PNG 5 "May 4, 2000"
+.TH PNG 5 "May 6, 2000"
 .SH NAME
 png \- Portable Network Graphics (PNG) format
 .SH DESCRIPTION
diff --git a/png.c b/png.c
index 1daccd7..0b4cc05 100644
--- a/png.c
+++ b/png.c
@@ -1,7 +1,7 @@
 
 /* png.c - location for general purpose libpng functions
  *
- * libpng version 1.0.6j - May 4, 2000
+ * libpng version 1.0.7beta11 - May 6, 2000
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
@@ -14,14 +14,14 @@
 #include "png.h"
 
 /* Generate a compiler error if there is an old png.h in the search path. */
-typedef version_1_0_6j Your_png_h_is_not_version_1_0_6j;
+typedef version_1_0_7beta11 Your_png_h_is_not_version_1_0_7beta11;
 
 /* Version information for C files.  This had better match the version
  * string defined in png.h.  */
 
 #ifdef PNG_USE_GLOBAL_ARRAYS
 /* png_libpng_ver was changed to a function in version 1.0.5c */
-char png_libpng_ver[12] = "1.0.6j";
+char png_libpng_ver[12] = "1.0.7beta11";
 
 /* png_sig was changed to a function in version 1.0.5c */
 /* Place to hold the signature string for a PNG file. */
@@ -88,7 +88,7 @@
  * or write any of the magic bytes before it starts on the IHDR.
  */
 
-void
+void PNGAPI
 png_set_sig_bytes(png_structp png_ptr, int num_bytes)
 {
    png_debug(1, "in png_set_sig_bytes\n");
@@ -106,7 +106,7 @@
  * respectively, to be less than, to match, or be greater than the correct
  * PNG signature (this is the same behaviour as strcmp, memcmp, etc).
  */
-int
+int PNGAPI
 png_sig_cmp(png_bytep sig, png_size_t start, png_size_t num_to_check)
 {
    png_byte png_signature[8] = {137, 80, 78, 71, 13, 10, 26, 10};
@@ -128,14 +128,14 @@
  * to check a partial signature.  This function might be removed in the
  * future - use png_sig_cmp().  Returns true (nonzero) if the file is a PNG.
  */
-int
+int PNGAPI
 png_check_sig(png_bytep sig, int num)
 {
   return ((int)!png_sig_cmp(sig, (png_size_t)0, (png_size_t)num));
 }
 
 /* Function to allocate memory for zlib and clear it to 0. */
-voidpf
+voidpf PNGAPI
 png_zalloc(voidpf png_ptr, uInt items, uInt size)
 {
    png_uint_32 num_bytes = (png_uint_32)items * size;
@@ -155,7 +155,7 @@
 }
 
 /* function to free memory for zlib */
-void
+void PNGAPI
 png_zfree(voidpf png_ptr, voidpf ptr)
 {
    png_free((png_structp)png_ptr, (png_voidp)ptr);
@@ -164,7 +164,7 @@
 /* Reset the CRC variable to 32 bits of 1's.  Care must be taken
  * in case CRC is > 32 bits to leave the top bits 0.
  */
-void
+void /* PRIVATE */
 png_reset_crc(png_structp png_ptr)
 {
    png_ptr->crc = crc32(0, Z_NULL, 0);
@@ -175,7 +175,7 @@
  * also check that this data will actually be used before going to the
  * trouble of calculating it.
  */
-void
+void /* PRIVATE */
 png_calculate_crc(png_structp png_ptr, png_bytep ptr, png_size_t length)
 {
    int need_crc = 1;
@@ -202,7 +202,7 @@
  * 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.
  */
-png_infop
+png_infop PNGAPI
 png_create_info_struct(png_structp png_ptr)
 {
    png_infop info_ptr;
@@ -227,7 +227,7 @@
  * png_destroy_write_struct() to free an info struct, but this may be
  * useful for some applications.
  */
-void
+void PNGAPI
 png_destroy_info_struct(png_structp png_ptr, png_infopp info_ptr_ptr)
 {
    png_infop info_ptr = NULL;
@@ -253,7 +253,7 @@
  * and applications using it are urged to use png_create_info_struct()
  * instead.
  */
-void
+void PNGAPI
 png_info_init(png_infop info_ptr)
 {
    png_debug(1, "in png_info_init\n");
@@ -262,7 +262,7 @@
 }
 
 #ifdef PNG_FREE_ME_SUPPORTED
-void
+void PNGAPI
 png_data_freer(png_structp png_ptr, png_infop info_ptr,
    int freer, png_uint_32 mask)
 {
@@ -279,7 +279,7 @@
 }
 #endif
 
-void
+void PNGAPI
 png_free_data(png_structp png_ptr, png_infop info_ptr, png_uint_32 mask, int num)
 {
    png_debug(1, "in png_free_data\n");
@@ -490,7 +490,7 @@
  * pointing to before re-using it or freeing the struct itself.  Recall
  * that png_free() checks for NULL pointers for us.
  */
-void
+void /* PRIVATE */
 png_info_destroy(png_structp png_ptr, png_infop info_ptr)
 {
    png_debug(1, "in png_info_destroy\n");
@@ -512,7 +512,7 @@
  * functions.  The application should free any memory associated with this
  * pointer before png_write_destroy() or png_read_destroy() are called.
  */
-png_voidp
+png_voidp PNGAPI
 png_get_io_ptr(png_structp png_ptr)
 {
    return (png_ptr->io_ptr);
@@ -525,7 +525,7 @@
  * PNG_NO_STDIO, you must use a function of your own because "FILE *" isn't
  * necessarily available.
  */
-void
+void PNGAPI
 png_init_io(png_structp png_ptr, FILE *fp)
 {
    png_debug(1, "in png_init_io\n");
@@ -537,7 +537,7 @@
 /* Convert the supplied time into an RFC 1123 string suitable for use in
  * a "Creation Time" or other text-based time string.
  */
-png_charp
+png_charp PNGAPI
 png_convert_to_rfc1123(png_structp png_ptr, png_timep ptime)
 {
    static PNG_CONST char short_months[12][4] =
@@ -572,18 +572,18 @@
 
 #if 0
 /* Signature string for a PNG file. */
-png_bytep
+png_bytep PNGAPI
 png_sig_bytes(void)
 {
    return ((png_bytep)"\211\120\116\107\015\012\032\012");
 }
 #endif
 
-png_charp
+png_charp PNGAPI
 png_get_copyright(png_structp png_ptr)
 {
    if (png_ptr != NULL || png_ptr == NULL)  /* silence compiler warning */
-   return ("\n libpng version 1.0.6j - May 4, 2000\n\
+   return ("\n libpng version 1.0.7beta11 - May 6, 2000\n\
    Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.\n\
    Copyright (c) 1996, 1997 Andreas Dilger\n\
    Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson\n");
@@ -596,16 +596,16 @@
  * in png.h.
  */
 
-png_charp
+png_charp PNGAPI
 png_get_libpng_ver(png_structp png_ptr)
 {
    /* Version of *.c files used when building libpng */
    if(png_ptr != NULL) /* silence compiler warning about unused png_ptr */
-      return("1.0.6j");
-   return("1.0.6j");
+      return("1.0.7beta11");
+   return("1.0.7beta11");
 }
 
-png_charp
+png_charp PNGAPI
 png_get_header_ver(png_structp png_ptr)
 {
    /* Version of *.h files used when building libpng */
@@ -614,7 +614,7 @@
    return(PNG_LIBPNG_VER_STRING);
 }
 
-png_charp
+png_charp PNGAPI
 png_get_header_version(png_structp png_ptr)
 {
    /* Returns longer string containing both version and date */
@@ -624,7 +624,7 @@
 }
 
 #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
-int
+int PNGAPI
 png_handle_as_unknown(png_structp png_ptr, png_bytep chunk_name)
 {
    /* check chunk_name and return "keep" value if it's on the list, else 0 */
@@ -641,7 +641,7 @@
 #endif
 
 /* This function, added to libpng-1.0.6g, is untested. */
-int
+int PNGAPI
 png_reset_zstream(png_structp png_ptr)
 {
    return (inflateReset(&png_ptr->zstream));
diff --git a/png.h b/png.h
index 4799709..09af919 100644
--- a/png.h
+++ b/png.h
@@ -1,7 +1,7 @@
 
 /* png.h - header file for PNG reference library
  *
- * libpng version 1.0.6j - May 4, 2000
+ * libpng version 1.0.7beta11 - May 6, 2000
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
  * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
@@ -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.0.6j - May 4, 2000: Glenn
+ *  libpng versions 0.97, January 1998, through 1.0.7beta11 - May 6, 2000: Glenn
  *  See also "Contributing Authors", below.
  *
  * Note about libpng version numbers:
@@ -20,40 +20,43 @@
  *    The following table summarizes matters since version 0.89c, which was
  *    the first widely used release:
  *
- *    source                 png.h    png.h  shared-lib
- *    version                string     int  version
- *    -------                ------   -----  ----------
- *    0.89c "1.0 beta 3"     0.89        89  1.0.89
- *    0.90  "1.0 beta 4"     0.90        90  0.90  [should have been 2.0.90]
- *    0.95  "1.0 beta 5"     0.95        95  0.95  [should have been 2.0.95]
- *    0.96  "1.0 beta 6"     0.96        96  0.96  [should have been 2.0.96]
- *    0.97b "1.00.97 beta 7" 1.00.97     97  1.0.1 [should have been 2.0.97]
- *    0.97c                  0.97        97  2.0.97
- *    0.98                   0.98        98  2.0.98
- *    0.99                   0.99        98  2.0.99
- *    0.99a-m                0.99        99  2.0.99
- *    1.00                   1.00       100  2.1.0 [100 should be 10000]
- *    1.0.0                  1.0.0      100  2.1.0 [100 should be 10000]
- *    1.0.1                  1.0.1    10001  2.1.0
- *    1.0.1a-e               1.0.1a-e 10002  2.1.0.1a-e
- *    1.0.2                  1.0.2    10002  2.1.0.2
- *    1.0.2a-b               1.0.2a-b 10003  2.1.0.2a-b
- *    1.0.3                  1.0.3    10003  2.1.0.3
- *    1.0.3a-d               1.0.3a-d 10004  2.1.0.3a-d
- *    1.0.4                  1.0.4    10004  2.1.0.4
- *    1.0.4a-f               1.0.4a-f 10005  2.1.0.4a-f
- *    1.0.5 (+ 2 patches)    1.0.5    10005  2.1.0.5
- *    1.0.5a-d               1.0.5a-d 10006  2.1.0.5a-d
- *    1.0.5e-r               1.0.5e-r 10100  2.1.0.5e-r (not source compatible)
- *    1.0.5s-v               1.0.5s-v 10006  2.1.0.5s-v (not binary compatible)
- *    1.0.6 (+ 3 patches)    1.0.6    10006  2.1.0.6    (still binary incompat)
- *    1.0.6d-f               1.0.6d-f 10007  2.1.0.6d-f (still binary incompat)
- *    1.0.6g                 1.0.6g   10007  2.1.0.6g
- *    1.0.6h                 1.0.6h   10007  10.6h  (testing xy.z so-numbering)
- *    1.0.6i                 1.0.6i   10007  10.6i (can be compatible w/ 1.0.0)
- *    1.0.6j                 1.0.6j   10007  2.1.0.6j   (compatible with 1.0.0)
- *    1.0.6 (+ 4 patches)    1.0.6    10006  2.1.0.6ad  (compatible with 1.0.0)
- *    1.0.7                  1.0.7    10007  2.1.0.7    (still compatible)
+ *    source                 png.h  png.h  shared-lib
+ *    version                string   int  version
+ *    -------                ------ -----  ----------
+ *    0.89c "1.0 beta 3"     0.89      89  1.0.89
+ *    0.90  "1.0 beta 4"     0.90      90  0.90  [should have been 2.0.90]
+ *    0.95  "1.0 beta 5"     0.95      95  0.95  [should have been 2.0.95]
+ *    0.96  "1.0 beta 6"     0.96      96  0.96  [should have been 2.0.96]
+ *    0.97b "1.00.97 beta 7" 1.00.97   97  1.0.1 [should have been 2.0.97]
+ *    0.97c                  0.97      97  2.0.97
+ *    0.98                   0.98      98  2.0.98
+ *    0.99                   0.99      98  2.0.99
+ *    0.99a-m                0.99      99  2.0.99
+ *    1.00                   1.00     100  2.1.0 [100 should be 10000]
+ *    1.0.0      (from here on, the   100  2.1.0 [100 should be 10000]
+ *    1.0.1       png.h string is   10001  2.1.0
+ *    1.0.1a-e    identical to the  10002  from here on, the shared library
+ *    1.0.2       source version)   10002  is 2.V where V is the source code
+ *    1.0.2a-b                      10003  version, except as noted.
+ *    1.0.3                         10003
+ *    1.0.3a-d                      10004
+ *    1.0.4                         10004
+ *    1.0.4a-f                      10005
+ *    1.0.5 (+ 2 patches)           10005
+ *    1.0.5a-d                      10006
+ *    1.0.5e-r                      10100 (not source compatible)
+ *    1.0.5s-v                      10006 (not binary compatible)
+ *    1.0.6 (+ 3 patches)           10006 (still binary incompatible)
+ *    1.0.6d-f                      10007 (still binary incompatible)
+ *    1.0.6g                        10007
+ *    1.0.6h                        10007  10.6h (testing xy.z so-numbering)
+ *    1.0.6i                        10007  10.6i
+ *    1.0.6j                        10007  2.1.0.6j (incompatible with 1.0.0)
+ *    1.0.7beta11                   10007  2.1.0.7beta11 (still compatible)
+ *    planned:
+ *    1.0.7prep00                   10007  2.1.0.7prep00 (still compatible)
+ *    1.0.6ptch04 (w/4 patches)     10006  2.1.0.6 (binary compatible)
+ *    1.0.7                         10007  (still compatible)
  *
  *    Henceforth the source version will match the shared-library major
  *    and minor numbers; the shared-library major version number will be
@@ -61,7 +64,9 @@
  *    PNG_PNGLIB_VER macro, which is not used within libpng but is available
  *    for applications, is an unsigned integer of the form xyyzz corresponding
  *    to the source version x.y.z (leading zeros in y and z).  Beta versions
- *    are given the previous public release number plus a letter or two.
+ *    were given the previous public release number plus a letter, until
+ *    version 1.0.6j; from then on they were given the upcoming public
+ *    release number plus "-beta-nn" or "-pre-nn".
  *
  *    Binary incompatibility exists only when applications make direct access
  *    to the info_ptr or png_ptr members through png.h, and the compiled
@@ -82,7 +87,7 @@
  * Copyright (c) 1996, 1997 Andreas Dilger
  * (libpng versions 0.89c, June 1996, through 0.96, May 1997)
  * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
- * (libpng versions 0.97, January 1998, through 1.0.6j, May 4, 2000)
+ * (libpng versions 0.97, January 1998, through 1.0.7beta11, May 6, 2000)
  *
  * For the purposes of this copyright and license, "Contributing Authors"
  * is defined as the following set of individuals:
@@ -157,13 +162,13 @@
  * Y2K compliance in libpng:
  * =========================
  *
- *    May 4, 2000
+ *    May 6, 2000
  *
  *    Since the PNG Development group is an ad-hoc body, we can't make
  *    an official declaration.
  *
  *    This is your unofficial assurance that libpng from version 0.71 and
- *    upward through 1.0.6j are Y2K compliant.  It is my belief that earlier
+ *    upward through 1.0.7beta11 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
@@ -241,7 +246,7 @@
  */
 
 /* Version information for png.h - this should match the version in png.c */
-#define PNG_LIBPNG_VER_STRING "1.0.6j"
+#define PNG_LIBPNG_VER_STRING "1.0.7beta11"
 
 /* Careful here.  At one time, Guy wanted to use 082, but that would be octal.
  * We must not include leading zeros.
@@ -258,7 +263,8 @@
  * the version above.
  */
 #ifdef PNG_USE_GLOBAL_ARRAYS
-PNG_EXPORT_VAR (char) png_libpng_ver[12];   /* need room for 99.99.99aa */
+PNG_EXPORT_VAR (char) png_libpng_ver[12]; /* need room for 99.99.99-patch-aa0*/
+  /* Note to maintainer: increase to 18 at the next opportunity */
 #else
 #define png_libpng_ver png_get_header_ver(NULL)
 #endif
@@ -367,11 +373,13 @@
    png_charp text;         /* comment, may be an empty string (ie "")
                               or a NULL pointer */
    png_size_t text_length; /* length of the text string */
+#ifdef PNG_iTXt_SUPPORTED
    png_size_t itxt_length; /* length of the itxt string */
    png_charp lang;         /* language code, 0-79 characters
                               or a NULL pointer */
    png_charp lang_key;     /* keyword translated UTF-8 string, 0 or more
                               chars or a NULL pointer */
+#endif
 } png_text;
 typedef png_text FAR * png_textp;
 typedef png_text FAR * FAR * png_textpp;
@@ -814,31 +822,33 @@
 typedef struct png_struct_def png_struct;
 typedef png_struct FAR * png_structp;
 
-typedef void (*png_error_ptr) PNGARG((png_structp, png_const_charp));
-typedef void (*png_rw_ptr) PNGARG((png_structp, png_bytep, png_size_t));
-typedef void (*png_flush_ptr) PNGARG((png_structp));
-typedef void (*png_read_status_ptr) PNGARG((png_structp, png_uint_32, int));
-typedef void (*png_write_status_ptr) PNGARG((png_structp, png_uint_32, int));
+typedef void (PNGAPI *png_error_ptr) PNGARG((png_structp, png_const_charp));
+typedef void (PNGAPI *png_rw_ptr) PNGARG((png_structp, png_bytep, png_size_t));
+typedef void (PNGAPI *png_flush_ptr) PNGARG((png_structp));
+typedef void (PNGAPI *png_read_status_ptr) PNGARG((png_structp, png_uint_32,
+   int));
+typedef void (PNGAPI *png_write_status_ptr) PNGARG((png_structp, png_uint_32,
+   int));
 
 #ifdef PNG_PROGRESSIVE_READ_SUPPORTED
-typedef void (*png_progressive_info_ptr) PNGARG((png_structp, png_infop));
-typedef void (*png_progressive_end_ptr) PNGARG((png_structp, png_infop));
-typedef void (*png_progressive_row_ptr) PNGARG((png_structp, png_bytep,
+typedef void (PNGAPI *png_progressive_info_ptr) PNGARG((png_structp, png_infop));
+typedef void (PNGAPI *png_progressive_end_ptr) PNGARG((png_structp, png_infop));
+typedef void (PNGAPI *png_progressive_row_ptr) PNGARG((png_structp, png_bytep,
    png_uint_32, int));
 #endif
 
 #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
     defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \
     defined(PNG_LEGACY_SUPPORTED)
-typedef void (*png_user_transform_ptr) PNGARG((png_structp,
+typedef void (PNGAPI *png_user_transform_ptr) PNGARG((png_structp,
     png_row_infop, png_bytep));
 #endif
 
 #if defined(PNG_READ_USER_CHUNKS_SUPPORTED)
-typedef int (*png_user_chunk_ptr) PNGARG((png_structp, png_unknown_chunkp));
+typedef int (PNGAPI *png_user_chunk_ptr) PNGARG((png_structp, png_unknown_chunkp));
 #endif
 #if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)
-typedef void (*png_unknown_chunk_ptr) PNGARG((png_structp));
+typedef void (PNGAPI *png_unknown_chunk_ptr) PNGARG((png_structp));
 #endif
 
 /* Transform masks for the high-level interface */
@@ -1101,9 +1111,9 @@
 };
 
 /* This prevents a compiler error in png_get_copyright() in png.c if png.c
-and png.h are both at * version 1.0.6j
+and png.h are both at * version 1.0.7beta11
  */
-typedef png_structp version_1_0_6j;
+typedef png_structp version_1_0_7beta11;
 
 typedef png_struct FAR * FAR * png_structpp;
 
@@ -2103,7 +2113,7 @@
 extern PNG_EXPORT(png_charp,png_get_libpng_ver) PNGARG((png_structp png_ptr));
 
 #define PNG_HEADER_VERSION_STRING \
-   " libpng version 1.0.6j - May 4, 2000 (header)\n"
+   " libpng version 1.0.7beta11 - May 6, 2000 (header)\n"
 
 #ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED
 /* With these routines we avoid an integer divide, which will be slower on
@@ -2169,8 +2179,6 @@
 #define PNG_WROTE_tIME             0x200
 #define PNG_WROTE_INFO_BEFORE_PLTE 0x400
 #define PNG_BACKGROUND_IS_GRAY     0x800
-#define PNG_CREATED_READ_STRUCT   0x1000
-#define PNG_CREATED_WRITE_STRUCT  0x2000
 
 /* flags for the transformations the PNG library does on the image data */
 #define PNG_BGR                0x0001
@@ -2226,6 +2234,7 @@
 #define PNG_FLAG_FREE_HIST                0x4000
 #define PNG_FLAG_KEEP_UNKNOWN_CHUNKS      0x8000L
 #define PNG_FLAG_KEEP_UNSAFE_CHUNKS       0x10000L
+#define PNG_FLAG_LIBRARY_MISMATCH         0x20000L
 
 /* For use in png_set_keep_unknown, png_handle_as_unknown */
 #define HANDLE_CHUNK_AS_DEFAULT   0
@@ -2331,22 +2340,22 @@
 #endif /* !PNG_READ_BIG_ENDIAN_SUPPORTED */
 
 /* Initialize png_ptr struct for reading, and allocate any other memory.
- * (old interface - NOT DLL EXPORTED).
+ * (old interface - DEPRECATED).
  */
-extern void png_read_init PNGARG((png_structp png_ptr));
+extern PNG_EXPORT(void,png_read_init) PNGARG((png_structp png_ptr));
 #define png_read_init(png_ptr) png_read_init_2(png_ptr, \
     PNG_LIBPNG_VER_STRING,  sizeof(png_struct), sizeof(png_info));
-extern void png_read_init_2 PNGARG((png_structp png_ptr,
+extern PNG_EXPORT(void,png_read_init_2) PNGARG((png_structp png_ptr,
     png_const_charp user_png_ver, png_size_t png_struct_size, png_size_t
     png_info_size));
 
 /* Initialize png_ptr struct for writing, and allocate any other memory.
- * (old interface - NOT DLL EXPORTED).
+ * (old interface - DEPRECATED).
  */
-extern void png_write_init PNGARG((png_structp png_ptr));
+extern PNG_EXPORT(void,png_write_init) PNGARG((png_structp png_ptr));
 #define png_write_init(png_ptr) png_write_init_2(png_ptr, \
     PNG_LIBPNG_VER_STRING, sizeof(png_struct), sizeof(png_info));
-extern void png_write_init_2 PNGARG((png_structp png_ptr,
+extern PNG_EXPORT(void,png_write_init_2) PNGARG((png_structp png_ptr,
     png_const_charp user_png_ver, png_size_t png_struct_size, png_size_t
     png_info_size));
 
diff --git a/png_ptr.h b/png_ptr.h
deleted file mode 100644
index bfd319a..0000000
--- a/png_ptr.h
+++ /dev/null
@@ -1,221 +0,0 @@
-struct png_struct_def
-{
-#ifdef PNG_SETJMP_SUPPORTED
-   jmp_buf jmpbuf;            /* used in png_error */
-#endif
-   png_error_ptr error_fn;    /* function for printing errors and aborting */
-   png_error_ptr warning_fn;  /* function for printing warnings */
-   png_voidp error_ptr;       /* user supplied struct for error functions */
-   png_rw_ptr write_data_fn;  /* function for writing output data */
-   png_rw_ptr read_data_fn;   /* function for reading input data */
-   png_voidp io_ptr;          /* ptr to application struct for I/O functions*/
-
-#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED)
-   png_user_transform_ptr read_user_transform_fn; /* user read transform */
-#endif
-
-#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
-   png_user_transform_ptr write_user_transform_fn; /* user write transform */
-#endif
-
-#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
-    defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
-   png_voidp user_transform_ptr; /* user supplied struct for user transform */
-   png_byte user_transform_depth;    /* bit depth of user transformed pixels */
-   png_byte user_transform_channels; /* channels in user transformed pixels */
-#endif
-
-#if defined(PNG_READ_USER_CHUNKS_SUPPORTED)
-   png_voidp user_chunk_ptr;
-   png_user_chunk_ptr read_user_chunk_fn; /* user read chunk handler */
-#endif
-
-   png_uint_32 mode;          /* tells us where we are in the PNG file */
-   png_uint_32 flags;         /* flags indicating various things to libpng */
-   png_uint_32 transformations; /* which transformations to perform */
-
-   z_stream zstream;          /* pointer to decompression structure (below) */
-   png_bytep zbuf;            /* buffer for zlib */
-   png_size_t zbuf_size;      /* size of zbuf */
-   int zlib_level;            /* holds zlib compression level */
-   int zlib_method;           /* holds zlib compression method */
-   int zlib_window_bits;      /* holds zlib compression window bits */
-   int zlib_mem_level;        /* holds zlib compression memory level */
-   int zlib_strategy;         /* holds zlib compression strategy */
-
-   png_uint_32 width;         /* width of image in pixels */
-   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_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 */
-   png_bytep row_buf;         /* buffer to save current (unfiltered) row */
-   png_bytep sub_row;         /* buffer to save "sub" row when filtering */
-   png_bytep up_row;          /* buffer to save "up" row when filtering */
-   png_bytep avg_row;         /* buffer to save "avg" row when filtering */
-   png_bytep paeth_row;       /* buffer to save "Paeth" row when filtering */
-   png_row_info row_info;     /* used for transformation routines */
-
-   png_uint_32 idat_size;     /* current IDAT size for read */
-   png_uint_32 crc;           /* current chunk CRC value */
-   png_colorp palette;        /* palette from the input file */
-   png_uint_16 num_palette;   /* number of color entries in palette */
-   png_uint_16 num_trans;     /* number of transparency values */
-   png_byte chunk_name[5];    /* null-terminated name of current chunk */
-   png_byte compression;      /* file compression type (always 0) */
-   png_byte filter;           /* file filter type (always 0) */
-   png_byte interlaced;       /* PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */
-   png_byte pass;             /* current interlace pass (0 - 6) */
-   png_byte do_filter;        /* row filter flags (see PNG_FILTER_ below ) */
-   png_byte color_type;       /* color type of file */
-   png_byte bit_depth;        /* bit depth of file */
-   png_byte usr_bit_depth;    /* bit depth of users row */
-   png_byte pixel_depth;      /* number of bits per pixel */
-   png_byte channels;         /* number of channels in file */
-   png_byte usr_channels;     /* channels at start of write */
-   png_byte sig_bytes;        /* magic bytes read/written from start of file */
-
-#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED)
-   png_uint_16 filler;           /* filler bytes for pixel expansion */
-#endif
-
-#if defined(PNG_READ_bKGD_SUPPORTED)
-   png_byte background_gamma_type;
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-   float background_gamma;
-#endif
-   png_color_16 background;   /* background color in screen gamma space */
-#  if defined(PNG_READ_GAMMA_SUPPORTED)
-     png_color_16 background_1; /* background normalized to gamma 1.0 */
-#  endif /* PNG_READ_GAMMA && PNG_READ_bKGD_SUPPORTED */
-#endif /* PNG_READ_bKGD_SUPPORTED */
-
-#if defined(PNG_WRITE_FLUSH_SUPPORTED)
-   png_flush_ptr output_flush_fn;/* Function for flushing output */
-   png_uint_32 flush_dist;    /* how many rows apart to flush, 0 - no flush */
-   png_uint_32 flush_rows;    /* number of rows written since last flush */
-#endif
-
-#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
-   int gamma_shift;      /* number of "insignificant" bits 16-bit gamma */
-#ifdef PNG_FLOATING_POINT_SUPPORTED
-   float gamma;          /* file gamma value */
-   float screen_gamma;   /* screen gamma value (display_exponent) */
-#endif
-#endif
-
-#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
-   png_bytep gamma_table;     /* gamma table for 8-bit depth files */
-   png_bytep gamma_from_1;    /* converts from 1.0 to screen */
-   png_bytep gamma_to_1;      /* converts from file to 1.0 */
-   png_uint_16pp gamma_16_table; /* gamma table for 16-bit depth files */
-   png_uint_16pp gamma_16_from_1; /* converts from 1.0 to screen */
-   png_uint_16pp gamma_16_to_1; /* converts from file to 1.0 */
-#endif
-
-#if defined(PNG_READ_GAMMA_SUPPORTED) || defined (PNG_READ_sBIT_SUPPORTED)
-   png_color_8 sig_bit;       /* significant bits in each available channel */
-#endif
-
-#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
-   png_color_8 shift;         /* shift for significant bit tranformation */
-#endif
-
-#if defined(PNG_READ_tRNS_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) \
- || defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
-   png_bytep trans;           /* transparency values for paletted files */
-   png_color_16 trans_values; /* transparency values for non-paletted files */
-#endif
-
-   png_read_status_ptr read_row_fn;   /* called after each row is decoded */
-   png_write_status_ptr write_row_fn; /* called after each row is encoded */
-#ifdef PNG_PROGRESSIVE_READ_SUPPORTED
-   png_progressive_info_ptr info_fn; /* called after header data fully read */
-   png_progressive_row_ptr row_fn;   /* called after each prog. row is decoded */
-   png_progressive_end_ptr end_fn;   /* called after image is complete */
-   png_bytep save_buffer_ptr;        /* current location in save_buffer */
-   png_bytep save_buffer;            /* buffer for previously read data */
-   png_bytep current_buffer_ptr;     /* current location in current_buffer */
-   png_bytep current_buffer;         /* buffer for recently used data */
-   png_uint_32 push_length;          /* size of current input chunk */
-   png_uint_32 skip_length;          /* bytes to skip in input data */
-   png_size_t save_buffer_size;      /* amount of data now in save_buffer */
-   png_size_t save_buffer_max;       /* total size of save_buffer */
-   png_size_t buffer_size;           /* total amount of available input data */
-   png_size_t current_buffer_size;   /* amount of data now in current_buffer */
-   int process_mode;                 /* what push library is currently doing */
-   int cur_palette;                  /* current push library palette index */
-
-#  if defined(PNG_READ_TEXT_SUPPORTED)
-     png_size_t current_text_size;   /* current size of text input data */
-     png_size_t current_text_left;   /* how much text left to read in input */
-     png_charp current_text;         /* current text chunk buffer */
-     png_charp current_text_ptr;     /* current location in current_text */
-#  endif /* PNG_PROGRESSIVE_READ_SUPPORTED && PNG_READ_TEXT_SUPPORTED */
-
-#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */
-
-#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__)
-/* for the Borland special 64K segment handler */
-   png_bytepp offset_table_ptr;
-   png_bytep offset_table;
-   png_uint_16 offset_table_number;
-   png_uint_16 offset_table_count;
-   png_uint_16 offset_table_count_free;
-#endif
-
-#if defined(PNG_READ_DITHER_SUPPORTED)
-   png_bytep palette_lookup;         /* lookup table for dithering */
-   png_bytep dither_index;           /* index translation for palette files */
-#endif
-
-#if defined(PNG_READ_DITHER_SUPPORTED) || defined(PNG_READ_hIST_SUPPORTED)
-   png_uint_16p hist;                /* histogram */
-#endif
-
-#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED)
-   png_byte heuristic_method;        /* heuristic for row filter selection */
-   png_byte num_prev_filters;        /* number of weights for previous rows */
-   png_bytep prev_filters;           /* filter type(s) of previous row(s) */
-   png_uint_16p filter_weights;      /* weight(s) for previous line(s) */
-   png_uint_16p inv_filter_weights;  /* 1/weight(s) for previous line(s) */
-   png_uint_16p filter_costs;        /* relative filter calculation cost */
-   png_uint_16p inv_filter_costs;    /* 1/relative filter calculation cost */
-#endif
-
-#if defined(PNG_TIME_RFC1123_SUPPORTED)
-   png_charp time_buffer;            /* String to hold RFC 1123 time text */
-#endif
-
-#ifdef PNG_USER_MEM_SUPPORTED
-   png_voidp mem_ptr;                /* user supplied struct for mem functions */
-   png_malloc_ptr malloc_fn;         /* function for allocating memory */
-   png_free_ptr free_fn;             /* function for freeing memory */
-#endif
-
-#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
-   png_byte rgb_to_gray_status;
-   png_uint_16 rgb_to_gray_red_coeff;
-   png_uint_16 rgb_to_gray_green_coeff;
-   png_uint_16 rgb_to_gray_blue_coeff;
-#endif
-
-#if defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \
-    defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED)
-   png_byte empty_plte_permitted;
-#endif
-
-#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
-   int num_chunk_list;
-   png_bytep chunk_list;
-#endif
-
-#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED)
-   png_fixed_point int_gamma;
-#endif
-
-   png_uint_32 free_me;       /* flags items libpng is responsible for freeing */
-};
diff --git a/pngasmrd.h b/pngasmrd.h
index f7c1e5b..8275c86 100644
--- a/pngasmrd.h
+++ b/pngasmrd.h
@@ -1,6 +1,6 @@
 /* pngasmrd.h - assembler version of utilities to read a PNG file
  *
- * libpng 1.0.6j - May 4, 2000
+ * libpng 1.0.7beta11 - May 6, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1999, 2000 Glenn Randers-Pehrson
  *
diff --git a/pngconf.h b/pngconf.h
index d134f61..ae738ee 100644
--- a/pngconf.h
+++ b/pngconf.h
@@ -1,7 +1,6 @@
-
 /* pngconf.h - machine configurable file for libpng
  *
- * libpng 1.0.6j - May 4, 2000
+ * libpng 1.0.7beta11 - May 6, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -258,15 +257,31 @@
 /* Any features you will not be using can be undef'ed here */
 
 /* GR-P, 0.96a: Set "*TRANSFORMS_SUPPORTED as default but allow user
-   to turn it off with "*TRANSFORMS_NOT_SUPPORTED" or *PNG_NO_*_TRANSFORMS
-   on the compile line, then pick and choose which ones to define without
-   having to edit this file. It is safe to use the *TRANSFORMS_NOT_SUPPORTED
-   if you only want to have a png-compliant reader/writer but don't need
-   any of the extra transformations.  This saves about 80 kbytes in a
-   typical installation of the library. (PNG_NO_* form added in version
-   1.0.1c, for consistency)
+ * to turn it off with "*TRANSFORMS_NOT_SUPPORTED" or *PNG_NO_*_TRANSFORMS
+ * on the compile line, then pick and choose which ones to define without
+ * having to edit this file. It is safe to use the *TRANSFORMS_NOT_SUPPORTED
+ * if you only want to have a png-compliant reader/writer but don't need
+ * any of the extra transformations.  This saves about 80 kbytes in a
+ * typical installation of the library. (PNG_NO_* form added in version
+ * 1.0.1c, for consistency)
  */
 
+/* The size of the png_text structure changed in libpng-1.0.6 when
+ * iTXt is supported.  It is turned off by default, to support old apps
+ * that malloc the png_text structure instead of calling png_set_text()
+ * and letting libpng malloc it.  It will be turned on by default in
+ * libpng-2.0.0.
+ */
+
+#ifndef PNG_iTXt_SUPPORTED
+#  ifndef PNG_READ_iTXt_SUPPORTED
+#    define PNG_NO_READ_iTXt
+#  endif
+#  ifndef PNG_WRITE_iTXt_SUPPORTED
+#    define PNG_NO_WRITE_iTXt
+#  endif
+#endif
+
 /* The following support, added after version 1.0.0, can be turned off here en
  * masse by defining PNG_LEGACY_SUPPORTED in case you need binary compatibility
  * with old applications that require the length of png_struct and png_info
@@ -280,6 +295,8 @@
 #define PNG_NO_READ_USER_CHUNKS
 #define PNG_NO_READ_iCCP
 #define PNG_NO_WRITE_iCCP
+#define PNG_NO_READ_iTXt
+#define PNG_NO_WRITE_iTXt
 #define PNG_NO_READ_sCAL
 #define PNG_NO_WRITE_sCAL
 #define PNG_NO_READ_sPLT
@@ -290,6 +307,7 @@
 #define PNG_NO_WRITE_USER_TRANSFORM
 #define PNG_NO_USER_MEM
 #define PNG_NO_READ_EMPTY_PLTE
+#define PNG_NO_FIXED_POINT_SUPPORTED
 #endif
 
 #ifndef PNG_NO_FLOATING_POINT_SUPPORTED 
@@ -298,7 +316,8 @@
 
 /* Ignore attempt to turn off both floating and fixed point support */
 
-#ifndef PNG_FLOATING_POINT_SUPPORTED
+#if !defined(PNG_FLOATING_POINT_SUPPORTED) || \
+ !defined(PNG_NO_FIXED_POINT_SUPPORTED)
 #define PNG_FIXED_POINT_SUPPORTED
 #endif
 
@@ -612,7 +631,7 @@
 #  endif
 #endif
 #if !defined (PNG_NO_READ_USER_CHUNKS) && \
-defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)
+     defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)
 #  define PNG_READ_USER_CHUNKS_SUPPORTED
 #  define PNG_USER_CHUNKS_SUPPORTED
 #  ifdef PNG_NO_READ_UNKNOWN_CHUNKS
@@ -895,32 +914,77 @@
 typedef charf * FAR *   png_zcharpp;
 typedef z_stream FAR *  png_zstreamp;
 
+/*
+ * Define PNG_BUILD_DLL if the module being built is a Windows
+ * LIBPNG DLL.
+ *
+ * Define PNG_DLL if you want to *link* to the Windows LIBPNG DLL.
+ * It is equivalent to Microsoft predefined macro _DLL which is
+ * automatically defined when you compile using the share
+ * version of the CRT (C Run-Time library)
+ */
+
+#if !defined(PNG_DLL) && defined(PNG_BUILD_DLL)
+#  define PNG_DLL
+#endif
+
+#if defined(PNG_BUILD_DLL) && !defined(PNG_NO_MODULEDEF)
+#  define PNG_IMPEXP
+#endif
+
+#if defined(PNG_DLL) || defined(_DLL) || defined(__DLL__ ) || \
+    defined(_Windows) || defined(_WINDOWS) || \
+    defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
+
+#  define PNGAPI _cdecl
+
+#  if !defined(PNG_IMPEXP) && (!defined(PNG_DLL) || \
+       0 /* WINCOMPILER_WITH_NO_SUPPORT_FOR_DECLIMPEXP */)
+#     define PNG_IMPEXP
+#  endif
+
+#  if !defined(PNG_IMPEXP)
+
+#     define PNG_EXPORT_TYPE1(type,symbol)  PNG_IMPEXP type PNGAPI symbol
+#     define PNG_EXPORT_TYPE2(type,symbol)  type PNG_IMPEXP PNGAPI symbol
+
+      /* Borland/Microsoft */
+#     if defined(_MSC_VER) || defined(__BORLANDC__)
+#        if (_MSC_VER >= 800) || (__BORLANDC__ >= 0x500)
+#           define PNG_EXPORT PNG_EXPORT_TYPE1
+#        else
+#           define PNG_EXPORT PNG_EXPORT_TYPE2
+#           if defined(PNG_BUILD_DLL)
+#              define PNG_IMPEXP __export
+#           else
+#              define PNG_IMPEXP /*__import*/ /* doesn't exist AFAIK in
+                                                 VC++*/
+#           endif                             /* Exists in Borland C++ for
+                                                 C++ classes (== huge) */
+#        endif
+#     endif
+
+#     if !defined(PNG_IMPEXP)
+#        if defined(PNG_BUILD_DLL)
+#           define PNG_IMPEXP __declspec(dllexport)
+#        else
+#           define PNG_IMPEXP __declspec(dllimport)
+#        endif
+#     endif
+#  endif  /* PNG_IMPEXP */
+#else
+#  if 0 /* ... other platforms, with other meanings */
+#  else
+#     define PNGAPI
+#  endif
+#endif
 
 #ifndef PNG_EXPORT
-   /* GRR 20000206:  based on zconf.h and MSVC 5.0 docs */
-#  if defined(_MSC_VER) && defined(_DLL)
-#    define PNG_EXPORT(type,symbol)        type __declspec(dllexport) symbol
-#  endif
+#  define PNG_EXPORT(type,symbol) type PNGAPI symbol
+#endif
 
-   /* allow for compilation as a DLL under MS Windows */
-#  ifdef __WIN32DLL__	/* Borland? */
-#    define PNG_EXPORT(type,symbol) __declspec(dllexport) type symbol
-#  endif
-
-   /* this variant is used in Mozilla; may correspond to MSVC++ 6.0 changes */
-#  ifdef ALT_WIN32_DLL
-#    define PNG_EXPORT(type,symbol) type __attribute__((dllexport)) symbol
-#  endif
-
-   /* allow for compilation as a DLL with Borland C++ 5.0 */
-#  if defined(__BORLANDC__) && defined(_Windows) && defined(__DLL__)
-#    define PNG_EXPORT(type,symbol) type _export symbol
-#  endif
-
-   /* allow for compilation as shared lib under BeOS */
-#  ifdef __BEOSDLL__
-#    define PNG_EXPORT(type,symbol) __declspec(export) type symbol
-#  endif
+#if defined(__MINGW32__) || defined(__CYGWIN32__)
+#  define PNG_ATTR_DLLIMP
 #endif
 
 #ifndef PNG_EXPORT
@@ -931,8 +995,9 @@
 #  define PNG_ATTR_DLLIMP
 #endif
 
+#ifdef PNG_USE_GLOBAL_ARRAYS
 #ifndef PNG_EXPORT_VAR
-#  if defined(_MSC_VER) && defined(_DLL)	/* GRR 20000206 */
+#  if defined(_MSC_VER) && defined(_DLL)   /* GRR 20000206 */
 #    define PNG_EXPORT_VAR(type) extern type __declspec(dllexport)
 #  endif
 #  ifdef PNG_DECL_DLLEXP
@@ -948,13 +1013,13 @@
 #    define PNG_EXPORT_VAR(type) extern type __attribute__((dllimport))
 #  endif
 #endif
-
 #ifndef PNG_EXPORT_VAR
 #    define PNG_EXPORT_VAR(type) extern type
 #endif
+#endif
 
-/* User may want to use these so not in PNG_INTERNAL. Any library functions
- * that are passed far data must be model independent.
+/* 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.
  */
 
 #ifndef PNG_ABORT
diff --git a/pngerror.c b/pngerror.c
index 45f3dcf..0555ae7 100644
--- a/pngerror.c
+++ b/pngerror.c
@@ -1,7 +1,7 @@
 
 /* pngerror.c - stub functions for i/o and memory allocation
  *
- * libpng 1.0.6j - May 4, 2000
+ * libpng 1.0.7beta11 - May 6, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -16,9 +16,11 @@
 #define PNG_INTERNAL
 #include "png.h"
 
-static void png_default_error PNGARG((png_structp png_ptr,
+static void /* PRIVATE */
+png_default_error PNGARG((png_structp png_ptr,
                                       png_const_charp message));
-static void png_default_warning PNGARG((png_structp png_ptr,
+static void /* PRIVATE */
+png_default_warning PNGARG((png_structp png_ptr,
                                         png_const_charp message));
 
 /* This function is called whenever there is a fatal error.  This function
@@ -26,7 +28,7 @@
  * you should supply a replacement error function and use png_set_error_fn()
  * to replace the error function at run-time.
  */
-void
+void PNGAPI
 png_error(png_structp png_ptr, png_const_charp message)
 {
    if (png_ptr->error_fn != NULL)
@@ -42,7 +44,7 @@
  * you should supply a replacement warning function and use
  * png_set_error_fn() to replace the warning function at run-time.
  */
-void
+void PNGAPI
 png_warning(png_structp png_ptr, png_const_charp message)
 {
    if (png_ptr->warning_fn != NULL)
@@ -62,7 +64,7 @@
    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
 };
 
-static void
+static void /* PRIVATE */
 png_format_buffer(png_structp png_ptr, png_charp buffer, png_const_charp message)
 {
    int iout = 0, iin = 0;
@@ -94,7 +96,7 @@
    }
 }
 
-void
+void PNGAPI
 png_chunk_error(png_structp png_ptr, png_const_charp message)
 {
    char msg[16+64];
@@ -102,7 +104,7 @@
    png_error(png_ptr, msg);
 }
 
-void
+void PNGAPI
 png_chunk_warning(png_structp png_ptr, png_const_charp message)
 {
    char msg[16+64];
@@ -115,7 +117,7 @@
  * function is used by default, or if the program supplies NULL for the
  * error function pointer in png_set_error_fn().
  */
-static void
+static void /* PRIVATE */
 png_default_error(png_structp png_ptr, png_const_charp message)
 {
 #ifndef PNG_NO_CONSOLE_IO
@@ -144,7 +146,7 @@
  * here if you don't want them to.  In the default configuration, png_ptr is
  * not used, but it is passed in case it may be useful.
  */
-static void
+static void /* PRIVATE */
 png_default_warning(png_structp png_ptr, png_const_charp message)
 {
 #ifndef PNG_NO_CONSOLE_IO
@@ -159,7 +161,7 @@
  * return to the calling routine or serious problems will occur.  The return
  * method used in the default routine calls longjmp(png_ptr->jmpbuf, 1)
  */
-void
+void PNGAPI
 png_set_error_fn(png_structp png_ptr, png_voidp error_ptr,
    png_error_ptr error_fn, png_error_ptr warning_fn)
 {
@@ -173,7 +175,7 @@
  * functions.  The application should free any memory associated with this
  * pointer before png_write_destroy and png_read_destroy are called.
  */
-png_voidp
+png_voidp PNGAPI
 png_get_error_ptr(png_structp png_ptr)
 {
    return ((png_voidp)png_ptr->error_ptr);
diff --git a/pnggccrd.c b/pnggccrd.c
index 309b93b..afd3f8c 100644
--- a/pnggccrd.c
+++ b/pnggccrd.c
@@ -6,7 +6,7 @@
  *     and http://www.intel.com/drg/pentiumII/appnotes/923/923.htm
  *     for Intel's performance analysis of the MMX vs. non-MMX code.
  *
- * libpng 1.0.6j - May 4, 2000
+ * libpng 1.0.7beta11 - May 6, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998, Intel Corporation
  * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
@@ -209,7 +209,7 @@
 static int          _dif;
 
 
-void
+void /* PRIVATE */
 png_read_filter_row_c(png_structp png_ptr, png_row_infop row_info,
    png_bytep row, png_bytep prev_row, int filter);
 
@@ -230,7 +230,7 @@
 /* Use this routine for the x86 platform - it uses a faster MMX routine
    if the machine supports MMX. */
 
-void
+void PNGAPI
 png_combine_row(png_structp png_ptr, png_bytep row, int mask)
 {
    png_debug(1,"in png_combine_row_asm\n");
@@ -1210,7 +1210,7 @@
  * has taken place.  [GRR: what other steps come before and/or after?]
  */
 
-void
+void /* PRIVATE */
 png_do_read_interlace(png_row_infop row_info, png_bytep row, int pass,
    png_uint_32 transformations)
 {
@@ -2401,7 +2401,7 @@
 
 
 // Optimized code for PNG Average filter decoder
-void
+void /* PRIVATE */
 png_read_filter_row_mmx_avg(png_row_infop row_info, png_bytep row,
                             png_bytep prev_row)
 {
@@ -2901,7 +2901,7 @@
 }
 
 // Optimized code for PNG Paeth filter decoder
-void
+void /* PRIVATE */
 png_read_filter_row_mmx_paeth(png_row_infop row_info, png_bytep row,
                               png_bytep prev_row)
 {
@@ -3833,7 +3833,7 @@
 }
 
 // Optimized code for PNG Sub filter decoder
-void
+void /* PRIVATE */
 png_read_filter_row_mmx_sub(png_row_infop row_info, png_bytep row)
 {
 #ifdef GRR_GCC_MMX_CONVERTED
@@ -4183,7 +4183,7 @@
 }
 
 // Optimized code for PNG Up filter decoder
-void
+void /* PRIVATE */
 png_read_filter_row_mmx_up(png_row_infop row_info, png_bytep row,
                            png_bytep prev_row)
 {
@@ -4310,7 +4310,7 @@
 
 // Optimized png_read_filter_row routines
 
-void
+void PNGAPI
 png_read_filter_row(png_structp png_ptr, png_row_infop row_info, png_bytep
    row, png_bytep prev_row, int filter)
 {
diff --git a/pngget.c b/pngget.c
index c7a6403..548adb6 100644
--- a/pngget.c
+++ b/pngget.c
@@ -1,7 +1,7 @@
 
 /* pngget.c - retrieval of values from info struct
  *
- * libpng 1.0.6j - May 4, 2000
+ * libpng 1.0.7beta11 - May 6, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -11,7 +11,7 @@
 #define PNG_INTERNAL
 #include "png.h"
 
-png_uint_32
+png_uint_32 PNGAPI
 png_get_valid(png_structp png_ptr, png_infop info_ptr, png_uint_32 flag)
 {
    if (png_ptr != NULL && info_ptr != NULL)
@@ -20,7 +20,7 @@
       return(0);
 }
 
-png_uint_32
+png_uint_32 PNGAPI
 png_get_rowbytes(png_structp png_ptr, png_infop info_ptr)
 {
    if (png_ptr != NULL && info_ptr != NULL)
@@ -30,7 +30,7 @@
 }
 
 #if defined(PNG_INFO_IMAGE_SUPPORTED)
-png_bytepp
+png_bytepp PNGAPI
 png_get_rows(png_structp png_ptr, png_infop info_ptr)
 {
    if (png_ptr != NULL && info_ptr != NULL)
@@ -42,7 +42,7 @@
 
 #ifdef PNG_EASY_ACCESS_SUPPORTED
 /* easy access to info, added in libpng-0.99 */
-png_uint_32
+png_uint_32 PNGAPI
 png_get_image_width(png_structp png_ptr, png_infop info_ptr)
 {
    if (png_ptr != NULL && info_ptr != NULL)
@@ -52,7 +52,7 @@
    return (0);
 }
 
-png_uint_32
+png_uint_32 PNGAPI
 png_get_image_height(png_structp png_ptr, png_infop info_ptr)
 {
    if (png_ptr != NULL && info_ptr != NULL)
@@ -62,7 +62,7 @@
    return (0);
 }
 
-png_byte
+png_byte PNGAPI
 png_get_bit_depth(png_structp png_ptr, png_infop info_ptr)
 {
    if (png_ptr != NULL && info_ptr != NULL)
@@ -72,7 +72,7 @@
    return (0);
 }
 
-png_byte
+png_byte PNGAPI
 png_get_color_type(png_structp png_ptr, png_infop info_ptr)
 {
    if (png_ptr != NULL && info_ptr != NULL)
@@ -82,7 +82,7 @@
    return (0);
 }
 
-png_byte
+png_byte PNGAPI
 png_get_filter_type(png_structp png_ptr, png_infop info_ptr)
 {
    if (png_ptr != NULL && info_ptr != NULL)
@@ -92,7 +92,7 @@
    return (0);
 }
 
-png_byte
+png_byte PNGAPI
 png_get_interlace_type(png_structp png_ptr, png_infop info_ptr)
 {
    if (png_ptr != NULL && info_ptr != NULL)
@@ -102,7 +102,7 @@
    return (0);
 }
 
-png_byte
+png_byte PNGAPI
 png_get_compression_type(png_structp png_ptr, png_infop info_ptr)
 {
    if (png_ptr != NULL && info_ptr != NULL)
@@ -112,7 +112,7 @@
    return (0);
 }
 
-png_uint_32
+png_uint_32 PNGAPI
 png_get_x_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
 {
 #if defined(PNG_pHYs_SUPPORTED)
@@ -128,7 +128,7 @@
    return (0);
 }
 
-png_uint_32
+png_uint_32 PNGAPI
 png_get_y_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
 {
 #if defined(PNG_pHYs_SUPPORTED)
@@ -144,7 +144,7 @@
    return (0);
 }
 
-png_uint_32
+png_uint_32 PNGAPI
 png_get_pixels_per_meter(png_structp png_ptr, png_infop info_ptr)
 {
 #if defined(PNG_pHYs_SUPPORTED)
@@ -162,7 +162,7 @@
 }
 
 #ifdef PNG_FLOATING_POINT_SUPPORTED
-float
+float PNGAPI
 png_get_pixel_aspect_ratio(png_structp png_ptr, png_infop info_ptr)
    {
 #if defined(PNG_pHYs_SUPPORTED)
@@ -181,7 +181,7 @@
 }
 #endif
 
-png_uint_32
+png_uint_32 PNGAPI
 png_get_x_offset_microns(png_structp png_ptr, png_infop info_ptr)
 {
 #if defined(PNG_oFFs_SUPPORTED)
@@ -197,7 +197,7 @@
    return (0);
 }
 
-png_uint_32
+png_uint_32 PNGAPI
 png_get_y_offset_microns(png_structp png_ptr, png_infop info_ptr)
 {
 #if defined(PNG_oFFs_SUPPORTED)
@@ -213,7 +213,7 @@
    return (0);
 }
 
-png_uint_32
+png_uint_32 PNGAPI
 png_get_x_offset_pixels(png_structp png_ptr, png_infop info_ptr)
 {
 #if defined(PNG_oFFs_SUPPORTED)
@@ -229,7 +229,7 @@
    return (0);
 }
 
-png_uint_32
+png_uint_32 PNGAPI
 png_get_y_offset_pixels(png_structp png_ptr, png_infop info_ptr)
 {
 #if defined(PNG_oFFs_SUPPORTED)
@@ -246,35 +246,35 @@
 }
 
 #if defined(PNG_INCH_CONVERSIONS) && defined(PNG_FLOATING_POINT_SUPPORTED)
-png_uint_32
+png_uint_32 PNGAPI
 png_get_pixels_per_inch(png_structp png_ptr, png_infop info_ptr)
 {
    return ((png_uint_32)((float)png_get_pixels_per_meter(png_ptr, info_ptr)
      *.0254 +.5);
 }
 
-png_uint_32
+png_uint_32 PNGAPI
 png_get_x_pixels_per_inch(png_structp png_ptr, png_infop info_ptr)
 {
    return ((png_uint_32)((float)png_get_x_pixels_per_meter(png_ptr, info_ptr)
      *.0254 +.5);
 }
 
-png_uint_32
+png_uint_32 PNGAPI
 png_get_y_pixels_per_inch(png_structp png_ptr, png_infop info_ptr)
 {
    return ((png_uint_32)((float)png_get_y_pixels_per_meter(png_ptr, info_ptr)
      *.0254 +.5);
 }
 
-float
+float PNGAPI
 png_get_x_offset_inches(png_structp png_ptr, png_infop info_ptr)
 {
    return ((float)png_get_x_offset_microns(png_ptr, info_ptr)
      *.00003937);
 }
 
-float
+float PNGAPI
 png_get_y_offset_inches(png_structp png_ptr, png_infop info_ptr)
 {
    return ((float)png_get_y_offset_microns(png_ptr, info_ptr)
@@ -282,7 +282,7 @@
 }
 
 #if defined(PNG_READ_pHYs_SUPPORTED)
-png_uint_32
+png_uint_32 PNGAPI
 png_get_pHYs_dpi(png_structp png_ptr, png_infop info_ptr,
    png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)
 {
@@ -321,7 +321,7 @@
 
 #endif  /* PNG_EASY_ACCESS_SUPPORTED */
 
-png_byte
+png_byte PNGAPI
 png_get_channels(png_structp png_ptr, png_infop info_ptr)
 {
    if (png_ptr != NULL && info_ptr != NULL)
@@ -330,7 +330,7 @@
       return (0);
 }
 
-png_bytep
+png_bytep PNGAPI
 png_get_signature(png_structp png_ptr, png_infop info_ptr)
 {
    if (png_ptr != NULL && info_ptr != NULL)
@@ -340,7 +340,7 @@
 }
 
 #if defined(PNG_READ_bKGD_SUPPORTED)
-png_uint_32
+png_uint_32 PNGAPI
 png_get_bKGD(png_structp png_ptr, png_infop info_ptr,
    png_color_16p *background)
 {
@@ -357,7 +357,7 @@
 
 #if defined(PNG_READ_cHRM_SUPPORTED)
 #ifdef PNG_FLOATING_POINT_SUPPORTED
-png_uint_32
+png_uint_32 PNGAPI
 png_get_cHRM(png_structp png_ptr, png_infop info_ptr,
    double *white_x, double *white_y, double *red_x, double *red_y,
    double *green_x, double *green_y, double *blue_x, double *blue_y)
@@ -387,7 +387,7 @@
 }
 #endif
 #ifdef PNG_FIXED_POINT_SUPPORTED
-png_uint_32
+png_uint_32 PNGAPI
 png_get_cHRM_fixed(png_structp png_ptr, png_infop info_ptr,
    png_fixed_point *white_x, png_fixed_point *white_y, png_fixed_point *red_x,
    png_fixed_point *red_y, png_fixed_point *green_x, png_fixed_point *green_y,
@@ -421,7 +421,7 @@
 
 #if defined(PNG_READ_gAMA_SUPPORTED)
 #ifdef PNG_FLOATING_POINT_SUPPORTED
-png_uint_32
+png_uint_32 PNGAPI
 png_get_gAMA(png_structp png_ptr, png_infop info_ptr, double *file_gamma)
 {
    if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA)
@@ -435,7 +435,7 @@
 }
 #endif
 #ifdef PNG_FIXED_POINT_SUPPORTED
-png_uint_32
+png_uint_32 PNGAPI
 png_get_gAMA_fixed(png_structp png_ptr, png_infop info_ptr,
     png_fixed_point *int_file_gamma)
 {
@@ -452,7 +452,7 @@
 #endif
 
 #if defined(PNG_READ_sRGB_SUPPORTED)
-png_uint_32
+png_uint_32 PNGAPI
 png_get_sRGB(png_structp png_ptr, png_infop info_ptr, int *file_srgb_intent)
 {
    if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_sRGB)
@@ -467,7 +467,7 @@
 #endif
 
 #if defined(PNG_READ_iCCP_SUPPORTED)
-png_uint_32
+png_uint_32 PNGAPI
 png_get_iCCP(png_structp png_ptr, png_infop info_ptr,
              png_charpp name, int *compression_type,
              png_charpp profile, png_uint_32 *proflen)
@@ -489,7 +489,7 @@
 #endif
 
 #if defined(PNG_READ_sPLT_SUPPORTED)
-png_uint_32
+png_uint_32 PNGAPI
 png_get_sPLT(png_structp png_ptr, png_infop info_ptr,
              png_sPLT_tpp spalettes)
 {
@@ -500,7 +500,7 @@
 #endif
 
 #if defined(PNG_READ_hIST_SUPPORTED)
-png_uint_32
+png_uint_32 PNGAPI
 png_get_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_16p *hist)
 {
    if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_hIST)
@@ -514,7 +514,7 @@
 }
 #endif
 
-png_uint_32
+png_uint_32 PNGAPI
 png_get_IHDR(png_structp png_ptr, png_infop info_ptr,
    png_uint_32 *width, png_uint_32 *height, int *bit_depth,
    int *color_type, int *interlace_type, int *compression_type,
@@ -561,7 +561,7 @@
 }
 
 #if defined(PNG_READ_oFFs_SUPPORTED)
-png_uint_32
+png_uint_32 PNGAPI
 png_get_oFFs(png_structp png_ptr, png_infop info_ptr,
    png_int_32 *offset_x, png_int_32 *offset_y, int *unit_type)
 {
@@ -579,7 +579,7 @@
 #endif
 
 #if defined(PNG_READ_pCAL_SUPPORTED)
-png_uint_32
+png_uint_32 PNGAPI
 png_get_pCAL(png_structp png_ptr, png_infop info_ptr,
    png_charp *purpose, png_int_32 *X0, png_int_32 *X1, int *type, int *nparams,
    png_charp *units, png_charpp *params)
@@ -604,7 +604,7 @@
 
 #if defined(PNG_READ_sCAL_SUPPORTED) || defined(PNG_WRITE_sCAL_SUPPORTED)
 #ifdef PNG_FLOATING_POINT_SUPPORTED
-png_uint_32
+png_uint_32 PNGAPI
 png_get_sCAL(png_structp png_ptr, png_infop info_ptr,
              int *unit, double *width, double *height)
 {
@@ -620,7 +620,7 @@
 }
 #else
 #ifdef PNG_FIXED_POINT_SUPPORTED
-png_uint_32
+png_uint_32 PNGAPI
 png_get_sCAL_s(png_structp png_ptr, png_infop info_ptr,
              int *unit, png_charpp width, png_charpp height)
 {
@@ -639,7 +639,7 @@
 #endif
 
 #if defined(PNG_READ_pHYs_SUPPORTED)
-png_uint_32
+png_uint_32 PNGAPI
 png_get_pHYs(png_structp png_ptr, png_infop info_ptr,
    png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)
 {
@@ -669,7 +669,7 @@
 }
 #endif
 
-png_uint_32
+png_uint_32 PNGAPI
 png_get_PLTE(png_structp png_ptr, png_infop info_ptr, png_colorp *palette,
    int *num_palette)
 {
@@ -686,7 +686,7 @@
 }
 
 #if defined(PNG_READ_sBIT_SUPPORTED)
-png_uint_32
+png_uint_32 PNGAPI
 png_get_sBIT(png_structp png_ptr, png_infop info_ptr, png_color_8p *sig_bit)
 {
    if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_sBIT)
@@ -701,7 +701,7 @@
 #endif
 
 #if defined(PNG_READ_TEXT_SUPPORTED)
-png_uint_32
+png_uint_32 PNGAPI
 png_get_text(png_structp png_ptr, png_infop info_ptr, png_textp *text_ptr,
    int *num_text)
 {
@@ -723,7 +723,7 @@
 #endif
 
 #if defined(PNG_READ_tIME_SUPPORTED)
-png_uint_32
+png_uint_32 PNGAPI
 png_get_tIME(png_structp png_ptr, png_infop info_ptr, png_timep *mod_time)
 {
    if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_tIME)
@@ -738,7 +738,7 @@
 #endif
 
 #if defined(PNG_READ_tRNS_SUPPORTED)
-png_uint_32
+png_uint_32 PNGAPI
 png_get_tRNS(png_structp png_ptr, png_infop info_ptr,
    png_bytep *trans, int *num_trans, png_color_16p *trans_values)
 {
@@ -777,7 +777,7 @@
 #endif
 
 #if defined(PNG_READ_UNKNOWN_CHUNKS_SUPPORTED)
-png_uint_32
+png_uint_32 PNGAPI
 png_get_unknown_chunks(png_structp png_ptr, png_infop info_ptr,
              png_unknown_chunkpp unknowns)
 {
@@ -788,7 +788,7 @@
 #endif
 
 #if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED)
-png_byte
+png_byte PNGAPI
 png_get_rgb_to_gray_status (png_structp png_ptr)
 {
    return png_ptr->rgb_to_gray_status;
@@ -796,7 +796,7 @@
 #endif
 
 #if defined(PNG_READ_USER_CHUNKS_SUPPORTED)
-png_voidp
+png_voidp PNGAPI
 png_get_user_chunk_ptr(png_structp png_ptr)
 {
    return (png_ptr->user_chunk_ptr);
@@ -804,7 +804,7 @@
 #endif
 
 
-png_uint_32
+png_uint_32 PNGAPI
 png_get_compression_buffer_size(png_structp png_ptr)
 {
    return(png_ptr->zbuf_size);
diff --git a/pngmem.c b/pngmem.c
index ff12605..66f83f2 100644
--- a/pngmem.c
+++ b/pngmem.c
@@ -1,7 +1,7 @@
 
 /* pngmem.c - stub functions for memory allocation
  *
- * libpng 1.0.6j - May 4, 2000
+ * libpng 1.0.7beta11 - May 6, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -23,7 +23,7 @@
 
 /* Allocate memory for a png_struct.  The malloc and memset can be replaced
    by a single call to calloc() if this is thought to improve performance. */
-png_voidp
+png_voidp /* PRIVATE */
 png_create_struct(int type)
 {
 #ifdef PNG_USER_MEM_SUPPORTED
@@ -31,7 +31,7 @@
 }
 
 /* Alternate version of png_create_struct, for use with user-defined malloc. */
-png_voidp
+png_voidp /* PRIVATE */
 png_create_struct_2(int type, png_malloc_ptr malloc_fn)
 {
 #endif /* PNG_USER_MEM_SUPPORTED */
@@ -62,7 +62,7 @@
 
 
 /* Free memory allocated by a png_create_struct() call */
-void
+void /* PRIVATE */
 png_destroy_struct(png_voidp struct_ptr)
 {
 #ifdef PNG_USER_MEM_SUPPORTED
@@ -70,7 +70,7 @@
 }
 
 /* Free memory allocated by a png_create_struct() call */
-void
+void /* PRIVATE */
 png_destroy_struct_2(png_voidp struct_ptr, png_free_ptr free_fn)
 {
 #endif
@@ -108,7 +108,7 @@
  * result, we would be truncating potentially larger memory requests
  * (which should cause a fatal error) and introducing major problems.
  */
-png_voidp
+png_voidp PNGAPI
 png_malloc(png_structp png_ptr, png_uint_32 size)
 {
 #ifndef PNG_USER_MEM_SUPPORTED
@@ -124,7 +124,7 @@
        return png_malloc_default(png_ptr, size);
 }
 
-png_voidp
+png_voidp PNGAPI
 png_malloc_default(png_structp png_ptr, png_uint_32 size)
 {
    png_voidp ret;
@@ -224,7 +224,7 @@
 /* free a pointer allocated by png_malloc().  In the default
    configuration, png_ptr is not used, but is passed in case it
    is needed.  If ptr is NULL, return without taking any action. */
-void
+void PNGAPI
 png_free(png_structp png_ptr, png_voidp ptr)
 {
    if (png_ptr == NULL || ptr == NULL)
@@ -239,7 +239,7 @@
    else png_free_default(png_ptr, ptr);
 }
 
-void
+void PNGAPI
 png_free_default(png_structp png_ptr, png_voidp ptr)
 {
 #endif /* PNG_USER_MEM_SUPPORTED */
@@ -277,7 +277,7 @@
 /* Allocate memory for a png_struct or a png_info.  The malloc and
    memset can be replaced by a single call to calloc() if this is thought
    to improve performance noticably.*/
-png_voidp
+png_voidp /* PRIVATE */
 png_create_struct(int type)
 {
 #ifdef PNG_USER_MEM_SUPPORTED
@@ -287,7 +287,7 @@
 /* Allocate memory for a png_struct or a png_info.  The malloc and
    memset can be replaced by a single call to calloc() if this is thought
    to improve performance noticably.*/
-png_voidp
+png_voidp /* PRIVATE */
 png_create_struct_2(int type, png_malloc_ptr malloc_fn)
 {
 #endif /* PNG_USER_MEM_SUPPORTED */
@@ -328,7 +328,7 @@
 
 
 /* Free memory allocated by a png_create_struct() call */
-void
+void /* PRIVATE */
 png_destroy_struct(png_voidp struct_ptr)
 {
 #ifdef PNG_USER_MEM_SUPPORTED
@@ -336,7 +336,7 @@
 }
 
 /* Free memory allocated by a png_create_struct() call */
-void
+void /* PRIVATE */
 png_destroy_struct_2(png_voidp struct_ptr, png_free_ptr free_fn)
 {
 #endif /* PNG_USER_MEM_SUPPORTED */
@@ -370,7 +370,7 @@
    need to allocate exactly 64K, so whatever you call here must
    have the ability to do that. */
 
-png_voidp
+png_voidp PNGAPI
 png_malloc(png_structp png_ptr, png_uint_32 size)
 {
 #ifndef PNG_USER_MEM_SUPPORTED
@@ -385,7 +385,7 @@
    else
        return (png_malloc_default(png_ptr, size));
 }
-png_voidp
+png_voidp /* PRIVATE */
 png_malloc_default(png_structp png_ptr, png_uint_32 size)
 {
    png_voidp ret;
@@ -416,7 +416,7 @@
 
 /* Free a pointer allocated by png_malloc().  If ptr is NULL, return
    without taking any action. */
-void
+void PNGAPI
 png_free(png_structp png_ptr, png_voidp ptr)
 {
    if (png_ptr == NULL || ptr == NULL)
@@ -430,7 +430,7 @@
    }
    else png_free_default(png_ptr, ptr);
 }
-void
+void /* PRIVATE */
 png_free_default(png_structp png_ptr, png_voidp ptr)
 {
    if (png_ptr == NULL || ptr == NULL)
@@ -451,7 +451,7 @@
 
 #endif /* Not Borland DOS special memory handler */
 
-png_voidp
+png_voidp /* PRIVATE */
 png_memcpy_check (png_structp png_ptr, png_voidp s1, png_voidp s2,
    png_uint_32 length)
 {
@@ -464,7 +464,7 @@
    return(png_memcpy (s1, s2, size));
 }
 
-png_voidp
+png_voidp /* PRIVATE */
 png_memset_check (png_structp png_ptr, png_voidp s1, int value,
    png_uint_32 length)
 {
@@ -482,7 +482,7 @@
 /* This function is called when the application wants to use another method
  * of allocating and freeing memory.
  */
-void
+void PNGAPI
 png_set_mem_fn(png_structp png_ptr, png_voidp mem_ptr, png_malloc_ptr
   malloc_fn, png_free_ptr free_fn)
 {
@@ -495,7 +495,7 @@
  * functions.  The application should free any memory associated with this
  * pointer before png_write_destroy and png_read_destroy are called.
  */
-png_voidp
+png_voidp PNGAPI
 png_get_mem_ptr(png_structp png_ptr)
 {
    return ((png_voidp)png_ptr->mem_ptr);
diff --git a/pngpread.c b/pngpread.c
index 91afd98..0532bf9 100644
--- a/pngpread.c
+++ b/pngpread.c
@@ -1,7 +1,7 @@
 
 /* pngpread.c - read a png file in push mode
  *
- * libpng 1.0.6j - May 4, 2000
+ * libpng 1.0.7beta11 - May 6, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -24,7 +24,7 @@
 #define PNG_READ_iTXt_MODE  7
 #define PNG_ERROR_MODE      8
 
-void
+void PNGAPI
 png_process_data(png_structp png_ptr, png_infop info_ptr,
    png_bytep buffer, png_size_t buffer_size)
 {
@@ -39,7 +39,7 @@
 /* What we do with the incoming data depends on what we were previously
  * doing before we ran out of data...
  */
-void
+void /* PRIVATE */
 png_process_some_data(png_structp png_ptr, png_infop info_ptr)
 {
    switch (png_ptr->process_mode)
@@ -99,7 +99,7 @@
  * checked by the calling application, or because of multiple calls to this
  * routine.
  */
-void
+void /* PRIVATE */
 png_push_read_sig(png_structp png_ptr, png_infop info_ptr)
 {
    png_size_t num_checked = png_ptr->sig_bytes,
@@ -131,7 +131,7 @@
    }
 }
 
-void
+void /* PRIVATE */
 png_push_read_chunk(png_structp png_ptr, png_infop info_ptr)
 {
 #ifdef PNG_USE_LOCAL_ARRAYS
@@ -463,14 +463,14 @@
    png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER;
 }
 
-void
+void /* PRIVATE */
 png_push_crc_skip(png_structp png_ptr, png_uint_32 skip)
 {
    png_ptr->process_mode = PNG_SKIP_MODE;
    png_ptr->skip_length = skip;
 }
 
-void
+void /* PRIVATE */
 png_push_crc_finish(png_structp png_ptr)
 {
    if (png_ptr->skip_length && png_ptr->save_buffer_size)
@@ -518,7 +518,7 @@
    }
 }
 
-void
+void /* PRIVATE */
 png_push_fill_buffer(png_structp png_ptr, png_bytep buffer, png_size_t length)
 {
    png_bytep ptr;
@@ -556,7 +556,7 @@
    }
 }
 
-void
+void /* PRIVATE */
 png_push_save_buffer(png_structp png_ptr)
 {
    if (png_ptr->save_buffer_size)
@@ -600,7 +600,7 @@
    png_ptr->buffer_size = 0;
 }
 
-void
+void /* PRIVATE */
 png_push_restore_buffer(png_structp png_ptr, png_bytep buffer,
    png_size_t buffer_length)
 {
@@ -610,7 +610,7 @@
    png_ptr->current_buffer_ptr = png_ptr->current_buffer;
 }
 
-void
+void /* PRIVATE */
 png_push_read_IDAT(png_structp png_ptr)
 {
 #ifdef PNG_USE_LOCAL_ARRAYS
@@ -700,7 +700,7 @@
    }
 }
 
-void
+void /* PRIVATE */
 png_process_IDAT_data(png_structp png_ptr, png_bytep buffer,
    png_size_t buffer_length)
 {
@@ -742,7 +742,7 @@
    }
 }
 
-void
+void /* PRIVATE */
 png_push_process_row(png_structp png_ptr)
 {
    png_ptr->row_info.color_type = png_ptr->color_type;
@@ -884,7 +884,7 @@
    }
 }
 
-void
+void /* PRIVATE */
 png_read_push_finish_row(png_structp png_ptr)
 {
 #ifdef PNG_USE_LOCAL_ARRAYS
@@ -949,7 +949,7 @@
 }
 
 #if defined(PNG_READ_tEXt_SUPPORTED)
-void
+void /* PRIVATE */
 png_push_handle_tEXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 {
    if (!(png_ptr->mode & PNG_HAVE_IHDR) || (png_ptr->mode & PNG_HAVE_IEND))
@@ -979,7 +979,7 @@
    png_ptr->process_mode = PNG_READ_tEXt_MODE;
 }
 
-void
+void /* PRIVATE */
 png_push_read_tEXt(png_structp png_ptr, png_infop info_ptr)
 {
    if (png_ptr->buffer_size && png_ptr->current_text_left)
@@ -1024,9 +1024,11 @@
 
       text_ptr = (png_textp)png_malloc(png_ptr, (png_uint_32)sizeof(png_text));
       text_ptr->compression = PNG_TEXT_COMPRESSION_NONE;
-      text_ptr->lang = (char *)NULL;
       text_ptr->key = key;
+#ifdef PNG_iTXt_SUPPORTED
+      text_ptr->lang = (char *)NULL;
       text_ptr->lang_key = (char *)NULL;
+#endif
       text_ptr->text = text;
 
       png_set_text(png_ptr, info_ptr, text_ptr, 1);
@@ -1037,7 +1039,7 @@
 #endif
 
 #if defined(PNG_READ_zTXt_SUPPORTED)
-void
+void /* PRIVATE */
 png_push_handle_zTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 {
    if (!(png_ptr->mode & PNG_HAVE_IHDR) || (png_ptr->mode & PNG_HAVE_IEND))
@@ -1069,7 +1071,7 @@
    png_ptr->process_mode = PNG_READ_zTXt_MODE;
 }
 
-void
+void /* PRIVATE */
 png_push_read_zTXt(png_structp png_ptr, png_infop info_ptr)
 {
    if (png_ptr->buffer_size && png_ptr->current_text_left)
@@ -1206,8 +1208,10 @@
       text_ptr = (png_textp)png_malloc(png_ptr, (png_uint_32)sizeof(png_text));
       text_ptr->compression = PNG_TEXT_COMPRESSION_zTXt;
       text_ptr->key = key;
+#ifdef PNG_iTXt_SUPPORTED
       text_ptr->lang = (char *)NULL;
       text_ptr->lang_key = (char *)NULL;
+#endif
       text_ptr->text = text;
 
       png_set_text(png_ptr, info_ptr, text_ptr, 1);
@@ -1218,7 +1222,7 @@
 #endif
 
 #if defined(PNG_READ_iTXt_SUPPORTED)
-void
+void /* PRIVATE */
 png_push_handle_iTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 {
    if (!(png_ptr->mode & PNG_HAVE_IHDR) || (png_ptr->mode & PNG_HAVE_IEND))
@@ -1248,7 +1252,7 @@
    png_ptr->process_mode = PNG_READ_iTXt_MODE;
 }
 
-void
+void /* PRIVATE */
 png_push_read_iTXt(png_structp png_ptr, png_infop info_ptr)
 {
 
@@ -1328,7 +1332,7 @@
  * chunk.  If there isn't a problem with the chunk itself (ie a bad chunk
  * name or a critical chunk), the chunk is (currently) silently ignored.
  */
-void
+void /* PRIVATE */
 png_push_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 {
    png_uint_32 skip=0;
@@ -1393,21 +1397,21 @@
    png_push_crc_skip(png_ptr, skip);
 }
 
-void
+void /* PRIVATE */
 png_push_have_info(png_structp png_ptr, png_infop info_ptr)
 {
    if (png_ptr->info_fn != NULL)
       (*(png_ptr->info_fn))(png_ptr, info_ptr);
 }
 
-void
+void /* PRIVATE */
 png_push_have_end(png_structp png_ptr, png_infop info_ptr)
 {
    if (png_ptr->end_fn != NULL)
       (*(png_ptr->end_fn))(png_ptr, info_ptr);
 }
 
-void
+void /* PRIVATE */
 png_push_have_row(png_structp png_ptr, png_bytep row)
 {
    if (png_ptr->row_fn != NULL)
@@ -1415,7 +1419,7 @@
          (int)png_ptr->pass);
 }
 
-void
+void PNGAPI
 png_progressive_combine_row (png_structp png_ptr,
    png_bytep old_row, png_bytep new_row)
 {
@@ -1426,7 +1430,7 @@
       png_combine_row(png_ptr, old_row, png_pass_dsp_mask[png_ptr->pass]);
 }
 
-void
+void PNGAPI
 png_set_progressive_read_fn(png_structp png_ptr, png_voidp progressive_ptr,
    png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn,
    png_progressive_end_ptr end_fn)
@@ -1438,7 +1442,7 @@
    png_set_read_fn(png_ptr, progressive_ptr, png_push_fill_buffer);
 }
 
-png_voidp
+png_voidp PNGAPI
 png_get_progressive_ptr(png_structp png_ptr)
 {
    return png_ptr->io_ptr;
diff --git a/pngread.c b/pngread.c
index 96b6cab..2931089 100644
--- a/pngread.c
+++ b/pngread.c
@@ -1,7 +1,7 @@
 
 /* pngread.c - read a PNG file
  *
- * libpng 1.0.6j - May 4, 2000
+ * libpng 1.0.7beta11 - May 6, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -15,7 +15,7 @@
 #include "png.h"
 
 /* Create a PNG structure for reading, and allocate any memory needed. */
-png_structp
+png_structp PNGAPI
 png_create_read_struct(png_const_charp user_png_ver, png_voidp error_ptr,
    png_error_ptr error_fn, png_error_ptr warn_fn)
 {
@@ -26,7 +26,7 @@
 }
 
 /* Alternate create PNG structure for reading, and allocate any memory needed. */
-png_structp
+png_structp PNGAPI
 png_create_read_struct_2(png_const_charp user_png_ver, png_voidp error_ptr,
    png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr,
    png_malloc_ptr malloc_fn, png_free_ptr free_fn)
@@ -41,6 +41,8 @@
 #endif
 #endif
 
+   int i;
+
    png_debug(1, "in png_create_read_struct\n");
 #ifdef PNG_USER_MEM_SUPPORTED
    if ((png_ptr = (png_structp)png_create_struct_2(PNG_STRUCT_PNG,
@@ -74,28 +76,38 @@
 
    png_set_error_fn(png_ptr, error_ptr, error_fn, warn_fn);
 
-   /* Libpng 0.90 and later are binary incompatible with libpng 0.89, so
-    * we must recompile any applications that use any older library version.
-    * For versions after libpng 1.0, we will be compatible, so we need
-    * only check the first digit.
-    */
-   if (user_png_ver == NULL || user_png_ver[0] != png_libpng_ver[0] ||
-       (user_png_ver[0] == '0' && user_png_ver[2] < '9'))
+   i=0;
+   do
    {
-      png_error(png_ptr,
-         "Incompatible libpng version in application and library");
-   }
+     if(user_png_ver[i] != png_libpng_ver[i])
+        png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
+   } while (png_libpng_ver[i++]);
 
-   /* Libpng 1.0.6 was not binary compatible, due to insertion of the
-      info_ptr->free_me member.  Note to maintainer: this test can be
-      removed from version 2.0.0 and beyond because the previous test
-      would have already rejected it. */
-
-   if (user_png_ver[4] == '6' && user_png_ver[2] == '0' && 
-       user_png_ver[0] == '1' && user_png_ver[5] == '\0')
+   if (png_ptr->flags & PNG_FLAG_LIBRARY_MISMATCH)
    {
-      png_error(png_ptr,
-         "Application must be recompiled; version 1.0.6 was incompatible");
+     /* Libpng 0.90 and later are binary incompatible with libpng 0.89, so
+      * we must recompile any applications that use any older library version.
+      * For versions after libpng 1.0, we will be compatible, so we need
+      * only check the first digit.
+      */
+     if (user_png_ver == NULL || user_png_ver[0] != png_libpng_ver[0] ||
+         (user_png_ver[0] == '0' && user_png_ver[2] < '9'))
+     {
+        png_error(png_ptr,
+           "Incompatible libpng version in application and library");
+     }
+
+     /* Libpng 1.0.6 was not binary compatible, due to insertion of the
+        info_ptr->free_me member.  Note to maintainer: this test can be
+        removed from version 2.0.0 and beyond because the previous test
+        would have already rejected it. */
+
+     if (user_png_ver[4] == '6' && user_png_ver[2] == '0' && 
+         user_png_ver[0] == '1' && user_png_ver[5] == '\0')
+     {
+        png_error(png_ptr,
+           "Application must be recompiled; version 1.0.6 was incompatible");
+     }
    }
 
    /* initialize zbuf - compression buffer */
@@ -120,8 +132,6 @@
 
    png_set_read_fn(png_ptr, NULL, NULL);
 
-   png_ptr->mode |= PNG_CREATED_READ_STRUCT;
-
    return (png_ptr);
 }
 
@@ -129,14 +139,14 @@
    This interface is deprecated in favour of the png_create_read_struct(),
    and it will eventually disappear. */
 #undef png_read_init
-void
+void PNGAPI
 png_read_init(png_structp png_ptr)
 {
    /* We only come here via pre-1.0.7-compiled applications */
    png_read_init_2(png_ptr, "1.0.0", 10000, 10000);
 }
 
-void
+void PNGAPI
 png_read_init_2(png_structp png_ptr, png_const_charp user_png_ver,
    png_size_t png_struct_size, png_size_t png_info_size)
 {
@@ -144,18 +154,20 @@
    jmp_buf tmp_jmp;  /* to save current jump buffer */
 #endif
 
-#ifndef PNG_LEGACY_SUPPORTED
    int i=0;
    do
    {
      if(user_png_ver[i] != png_libpng_ver[i])
      {
+#ifdef PNG_LEGACY_SUPPORTED
+       png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
+#else
        png_ptr->error_fn=(png_error_ptr)NULL;
        png_error(png_ptr,
         "Application uses deprecated png_read_init() and must be recompiled.");
+#endif
      }
    } while (png_libpng_ver[i++]);
-#endif
 
    if(sizeof(png_struct) > png_struct_size ||
       sizeof(png_info) > png_info_size)
@@ -201,11 +213,6 @@
    png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size;
 
    png_set_read_fn(png_ptr, NULL, NULL);
-
-#ifdef PNG_LEGACY_SUPPORTED
-   if (user_png_ver)
-      return;
-#endif
 }
 
 /* Read the information before the actual image data.  This has been
@@ -216,7 +223,7 @@
  * here.  The application can then have access to the signature bytes we
  * read if it is determined that this isn't a valid PNG file.
  */
-void
+void PNGAPI
 png_read_info(png_structp png_ptr, png_infop info_ptr)
 {
    png_debug(1, "in png_read_info\n");
@@ -425,7 +432,7 @@
 }
 
 /* optional call to update the users info_ptr structure */
-void
+void PNGAPI
 png_read_update_info(png_structp png_ptr, png_infop info_ptr)
 {
    png_debug(1, "in png_read_update_info\n");
@@ -440,7 +447,7 @@
  * the user to obtain a gamma-corrected palette, for example.
  * If the user doesn't call this, we will do it ourselves.
  */
-void
+void PNGAPI
 png_start_read_image(png_structp png_ptr)
 {
    png_debug(1, "in png_start_read_image\n");
@@ -449,7 +456,7 @@
       png_read_start_row(png_ptr);
 }
 
-void
+void PNGAPI
 png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row)
 {
 #ifdef PNG_USE_LOCAL_ARRAYS
@@ -690,10 +697,10 @@
  * not called png_set_interlace_handling(), the display_row buffer will
  * be ignored, so pass NULL to it.
  *
- * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.6j.
+ * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.7beta11
  */
 
-void
+void PNGAPI
 png_read_rows(png_structp png_ptr, png_bytepp row,
    png_bytepp display_row, png_uint_32 num_rows)
 {
@@ -739,9 +746,9 @@
  * only call this function once.  If you desire to have an image for
  * each pass of a interlaced image, use png_read_rows() instead.
  *
- * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.6j.
+ * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.7beta11
  */
-void
+void PNGAPI
 png_read_image(png_structp png_ptr, png_bytepp image)
 {
    png_uint_32 i,image_height;
@@ -779,7 +786,7 @@
  * file, will verify the end is accurate, and will read any comments
  * or time information at the end of the file, if info is not NULL.
  */
-void
+void PNGAPI
 png_read_end(png_structp png_ptr, png_infop info_ptr)
 {
    png_byte chunk_length[4];
@@ -961,7 +968,7 @@
 }
 
 /* free all memory used by the read */
-void
+void PNGAPI
 png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr,
    png_infopp end_info_ptr_ptr)
 {
@@ -1027,7 +1034,7 @@
 }
 
 /* free all memory used by the read (old method) */
-void
+void PNGAPI
 png_read_destroy(png_structp png_ptr, png_infop info_ptr, png_infop end_info_ptr)
 {
 #ifdef PNG_SETJMP_SUPPORTED
@@ -1166,14 +1173,15 @@
 
 }
 
-void
+void PNGAPI
 png_set_read_status_fn(png_structp png_ptr, png_read_status_ptr read_row_fn)
 {
    png_ptr->read_row_fn = read_row_fn;
 }
 
 #if defined(PNG_INFO_IMAGE_SUPPORTED)
-void png_read_png(png_structp png_ptr, png_infop info_ptr,
+void PNGAPI
+png_read_png(png_structp png_ptr, png_infop info_ptr,
                            int transforms,
                            voidp params)
 {
diff --git a/pngrio.c b/pngrio.c
index 4ff4d51..a8024a4 100644
--- a/pngrio.c
+++ b/pngrio.c
@@ -1,7 +1,7 @@
 
 /* pngrio.c - functions for data input
  *
- * libpng 1.0.6j - May 4, 2000
+ * libpng 1.0.7beta11 - May 6, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -23,7 +23,7 @@
    with very small lengths, so you should implement some kind of simple
    buffering if you are using unbuffered reads.  This should never be asked
    to read more then 64K on a 16 bit machine. */
-void
+void /* PRIVATE */
 png_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
 {
    png_debug1(4,"reading %d bytes\n", length);
@@ -39,7 +39,7 @@
    read_data function and use it at run time with png_set_read_fn(), rather
    than changing the library. */
 #ifndef USE_FAR_KEYWORD
-static void
+static void /* PRIVATE */
 png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
 {
    png_size_t check;
@@ -64,7 +64,7 @@
 #define NEAR_BUF_SIZE 1024
 #define MIN(a,b) (a <= b ? a : b)
 
-static void
+static void /* PRIVATE */
 png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
 {
    int check;
@@ -119,7 +119,7 @@
                   unsigned int that is the number of bytes to be read.
                   To exit and output any fatal error messages the new write
                   function should call png_error(png_ptr, "Error msg"). */
-void
+void PNGAPI
 png_set_read_fn(png_structp png_ptr, png_voidp io_ptr,
    png_rw_ptr read_data_fn)
 {
diff --git a/pngrtran.c b/pngrtran.c
index 9ed58aa..3c262e7 100644
--- a/pngrtran.c
+++ b/pngrtran.c
@@ -1,7 +1,7 @@
 
 /* pngrtran.c - transforms the data in a row for PNG readers
  *
- * libpng 1.0.6j - May 4, 2000
+ * libpng 1.0.7beta11 - May 6, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -17,7 +17,7 @@
 #include "png.h"
 
 /* Set the action on getting a CRC error for an ancillary or critical chunk. */
-void
+void PNGAPI
 png_set_crc_action(png_structp png_ptr, int crit_action, int ancil_action)
 {
    png_debug(1, "in png_set_crc_action\n");
@@ -72,7 +72,7 @@
 #if defined(PNG_READ_BACKGROUND_SUPPORTED) && \
     defined(PNG_FLOATING_POINT_SUPPORTED)
 /* handle alpha and tRNS via a background color */
-void
+void PNGAPI
 png_set_background(png_structp png_ptr,
    png_color_16p background_color, int background_gamma_code,
    int need_expand, double background_gamma)
@@ -105,7 +105,7 @@
 
 #if defined(PNG_READ_16_TO_8_SUPPORTED)
 /* strip 16 bit depth files to 8 bit depth */
-void
+void PNGAPI
 png_set_strip_16(png_structp png_ptr)
 {
    png_debug(1, "in png_set_strip_16\n");
@@ -114,7 +114,7 @@
 #endif
 
 #if defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
-void
+void PNGAPI
 png_set_strip_alpha(png_structp png_ptr)
 {
    png_debug(1, "in png_set_strip_alpha\n");
@@ -141,7 +141,7 @@
 typedef png_dsort FAR *       png_dsortp;
 typedef png_dsort FAR * FAR * png_dsortpp;
 
-void
+void PNGAPI
 png_set_dither(png_structp png_ptr, png_colorp palette,
    int num_palette, int maximum_colors, png_uint_16p histogram,
    int full_dither)
@@ -511,7 +511,7 @@
  * are not close reciprocals, otherwise it slows things down slightly, and
  * also needlessly introduces small errors.
  */
-void
+void PNGAPI
 png_set_gamma(png_structp png_ptr, double scrn_gamma, double file_gamma)
 {
    png_debug(1, "in png_set_gamma\n");
@@ -527,7 +527,7 @@
  * less than 8-bit depth to 8-bit depth, and expand tRNS chunks
  * to alpha channels.
  */
-void
+void PNGAPI
 png_set_expand(png_structp png_ptr)
 {
    png_debug(1, "in png_set_expand\n");
@@ -549,7 +549,7 @@
  */
 
 /* Expand paletted images to RGB. */
-void
+void PNGAPI
 png_set_palette_to_rgb(png_structp png_ptr)
 {
    png_debug(1, "in png_set_expand\n");
@@ -557,7 +557,7 @@
 }
 
 /* Expand grayscale images of less than 8-bit depth to 8 bits. */
-void
+void PNGAPI
 png_set_gray_1_2_4_to_8(png_structp png_ptr)
 {
    png_debug(1, "in png_set_expand\n");
@@ -565,7 +565,7 @@
 }
 
 /* Expand tRNS chunks to alpha channels. */
-void
+void PNGAPI
 png_set_tRNS_to_alpha(png_structp png_ptr)
 {
    png_debug(1, "in png_set_expand\n");
@@ -574,7 +574,7 @@
 #endif /* defined(PNG_READ_EXPAND_SUPPORTED) */
 
 #if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED)
-void
+void PNGAPI
 png_set_gray_to_rgb(png_structp png_ptr)
 {
    png_debug(1, "in png_set_gray_to_rgb\n");
@@ -588,7 +588,7 @@
  * for example, to convert a 24 bpp RGB image into an 8 bpp grayscale image.
  */
 
-void
+void PNGAPI
 png_set_rgb_to_gray(png_structp png_ptr, int error_action, double red,
    double green)
 {
@@ -598,7 +598,7 @@
 }
 #endif
 
-void
+void PNGAPI
 png_set_rgb_to_gray_fixed(png_structp png_ptr, int error_action,
    png_fixed_point red, png_fixed_point green)
 {
@@ -648,7 +648,7 @@
 #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
     defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \
     defined(PNG_LEGACY_SUPPORTED)
-void
+void PNGAPI
 png_set_read_user_transform_fn(png_structp png_ptr, png_user_transform_ptr
    read_user_transform_fn)
 {
@@ -668,7 +668,7 @@
 /* Initialize everything needed for the read.  This includes modifying
  * the palette.
  */
-void
+void /* PRIVATE */
 png_init_read_transformations(png_structp png_ptr)
 {
    png_debug(1, "in png_init_read_transformations\n");
@@ -985,7 +985,7 @@
  * info should be updated so a PNG file could be written with it,
  * assuming the transformations result in valid PNG data.
  */
-void
+void /* PRIVATE */
 png_read_transform_info(png_structp png_ptr, png_infop info_ptr)
 {
    png_debug(1, "in png_read_transform_info\n");
@@ -1109,7 +1109,7 @@
  * and is very touchy.  If you add a transformation, take care to
  * decide how it fits in with the other transformations here.
  */
-void
+void /* PRIVATE */
 png_do_read_transformations(png_structp png_ptr)
 {
    png_debug(1, "in png_do_read_transformations\n");
@@ -1339,7 +1339,7 @@
  * the numbers 0 or 1.  If you would rather they contain 0 and 255, use
  * png_do_shift() after this.
  */
-void
+void /* PRIVATE */
 png_do_unpack(png_row_infop row_info, png_bytep row)
 {
    png_debug(1, "in png_do_unpack\n");
@@ -1429,7 +1429,7 @@
  * a row of bit depth 8, but only 5 are significant, this will shift
  * the values back to 0 through 31.
  */
-void
+void /* PRIVATE */
 png_do_unshift(png_row_infop row_info, png_bytep row, png_color_8p sig_bits)
 {
    png_debug(1, "in png_do_unshift\n");
@@ -1535,7 +1535,7 @@
 
 #if defined(PNG_READ_16_TO_8_SUPPORTED)
 /* chop rows of bit depth 16 down to 8 */
-void
+void /* PRIVATE */
 png_do_chop(png_row_infop row_info, png_bytep row)
 {
    png_debug(1, "in png_do_chop\n");
@@ -1589,7 +1589,7 @@
 #endif
 
 #if defined(PNG_READ_SWAP_ALPHA_SUPPORTED)
-void
+void /* PRIVATE */
 png_do_read_swap_alpha(png_row_infop row_info, png_bytep row)
 {
    png_debug(1, "in png_do_read_swap_alpha\n");
@@ -1681,7 +1681,7 @@
 #endif
 
 #if defined(PNG_READ_INVERT_ALPHA_SUPPORTED)
-void
+void /* PRIVATE */
 png_do_read_invert_alpha(png_row_infop row_info, png_bytep row)
 {
    png_debug(1, "in png_do_read_invert_alpha\n");
@@ -1780,7 +1780,7 @@
 
 #if defined(PNG_READ_FILLER_SUPPORTED)
 /* Add filler channel if we have RGB color */
-void
+void /* PRIVATE */
 png_do_read_filler(png_row_infop row_info, png_bytep row,
    png_uint_32 filler, png_uint_32 flags)
 {
@@ -1956,7 +1956,7 @@
 
 #if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED)
 /* expand grayscale files to RGB, with or without alpha */
-void
+void /* PRIVATE */
 png_do_gray_to_rgb(png_row_infop row_info, png_bytep row)
 {
    png_uint_32 i;
@@ -2058,7 +2058,7 @@
  *
  *  Other integer coefficents can be used via png_set_rgb_to_gray().
  */
-int
+int /* PRIVATE */
 png_do_rgb_to_gray(png_structp png_ptr, png_row_infop row_info, png_bytep row)
 
 {
@@ -2298,7 +2298,7 @@
  * paletted.  Most useful for gamma correction and simplification
  * of code.
  */
-void
+void /* PRIVATE */
 png_build_grayscale_palette(int bit_depth, png_colorp palette)
 {
    int num_palette;
@@ -2344,7 +2344,7 @@
 
 /* This function is currently unused.  Do we really need it? */
 #if defined(PNG_READ_DITHER_SUPPORTED) && defined(PNG_CORRECT_PALETTE_SUPPORTED)
-void
+void /* PRIVATE */
 png_correct_palette(png_structp png_ptr, png_colorp palette,
    int num_palette)
 {
@@ -2529,7 +2529,7 @@
  * "background" is already in the screen gamma, while "background_1" is
  * at a gamma of 1.0.  Paletted files have already been taken care of.
  */
-void
+void /* PRIVATE */
 png_do_background(png_row_infop row_info, png_bytep row,
    png_color_16p trans_values, png_color_16p background,
    png_color_16p background_1,
@@ -3200,7 +3200,7 @@
  * is 16, use gamma_16_table and gamma_shift.  Build these with
  * build_gamma_table().
  */
-void
+void /* PRIVATE */
 png_do_gamma(png_row_infop row_info, png_bytep row,
    png_bytep gamma_table, png_uint_16pp gamma_16_table,
    int gamma_shift)
@@ -3382,7 +3382,7 @@
 /* Expands a palette row to an RGB or RGBA row depending
  * upon whether you supply trans and num_trans.
  */
-void
+void /* PRIVATE */
 png_do_expand_palette(png_row_infop row_info, png_bytep row,
    png_colorp palette, png_bytep trans, int num_trans)
 {
@@ -3525,7 +3525,7 @@
 /* If the bit depth < 8, it is expanded to 8.  Also, if the
  * transparency value is supplied, an alpha channel is built.
  */
-void
+void /* PRIVATE */
 png_do_expand(png_row_infop row_info, png_bytep row,
    png_color_16p trans_value)
 {
@@ -3724,7 +3724,7 @@
 #endif
 
 #if defined(PNG_READ_DITHER_SUPPORTED)
-void
+void /* PRIVATE */
 png_do_dither(png_row_infop row_info, png_bytep row,
     png_bytep palette_lookup, png_bytep dither_lookup)
 {
@@ -3826,7 +3826,7 @@
  * the future.  Note also how the gamma_16 tables are segmented so that
  * we don't need to allocate > 64K chunks for a full 16-bit table.
  */
-void
+void /* PRIVATE */
 png_build_gamma_table(png_structp png_ptr)
 {
   png_debug(1, "in png_build_gamma_table\n");
diff --git a/pngrutil.c b/pngrutil.c
index 50e6037..c28e69d 100644
--- a/pngrutil.c
+++ b/pngrutil.c
@@ -1,7 +1,7 @@
 
 /* pngrutil.c - utilities to read a PNG file
  *
- * libpng 1.0.6j - May 4, 2000
+ * libpng 1.0.7beta11 - May 6, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -16,7 +16,7 @@
 
 #ifndef PNG_READ_BIG_ENDIAN_SUPPORTED
 /* Grab an unsigned 32-bit integer from a buffer in big-endian format. */
-png_uint_32
+png_uint_32 /* PRIVATE */
 png_get_uint_32(png_bytep buf)
 {
    png_uint_32 i = ((png_uint_32)(*buf) << 24) +
@@ -31,7 +31,7 @@
 /* Grab a signed 32-bit integer from a buffer in big-endian format.  The
  * data is stored in the PNG file in two's complement format, and it is
  * assumed that the machine format for signed integers is the same. */
-png_int_32
+png_int_32 /* PRIVATE */
 png_get_int_32(png_bytep buf)
 {
    png_int_32 i = ((png_int_32)(*buf) << 24) +
@@ -44,7 +44,7 @@
 #endif /* PNG_READ_pCAL_SUPPORTED */
 
 /* Grab an unsigned 16-bit integer from a buffer in big-endian format. */
-png_uint_16
+png_uint_16 /* PRIVATE */
 png_get_uint_16(png_bytep buf)
 {
    png_uint_16 i = (png_uint_16)(((png_uint_16)(*buf) << 8) +
@@ -55,7 +55,7 @@
 #endif /* PNG_READ_BIG_ENDIAN_SUPPORTED */
 
 /* Read data, and (optionally) run it through the CRC. */
-void
+void /* PRIVATE */
 png_crc_read(png_structp png_ptr, png_bytep buf, png_size_t length)
 {
    png_read_data(png_ptr, buf, length);
@@ -66,7 +66,7 @@
    are reading a ancillary or critical chunk, and how the program has set
    things up, we may calculate the CRC on the data and print a message.
    Returns '1' if there was a CRC error, '0' otherwise. */
-int
+int /* PRIVATE */
 png_crc_finish(png_structp png_ptr, png_uint_32 skip)
 {
    png_size_t i;
@@ -102,7 +102,7 @@
 
 /* Compare the CRC stored in the PNG file with that calculated by libpng from
    the data it has read thus far. */
-int
+int /* PRIVATE */
 png_crc_error(png_structp png_ptr)
 {
    png_byte crc_bytes[4];
@@ -141,7 +141,8 @@
  * holding the original prefix part and an uncompressed version of the
  * trailing part (the malloc area passed in is freed).
  */
-png_charp png_decompress_chunk(png_structp png_ptr, int comp_type,
+png_charp /* PRIVATE */
+png_decompress_chunk(png_structp png_ptr, int comp_type,
                               png_charp chunkdata, png_size_t chunklength,
                               png_size_t prefix_size, png_size_t *newlength)
 {
@@ -251,7 +252,7 @@
 #endif
 
 /* read and check the IDHR chunk */
-void
+void /* PRIVATE */
 png_handle_IHDR(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 {
    png_byte buf[13];
@@ -348,7 +349,7 @@
 }
 
 /* read and check the palette */
-void
+void /* PRIVATE */
 png_handle_PLTE(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 {
    png_colorp palette;
@@ -475,7 +476,7 @@
 
 }
 
-void
+void /* PRIVATE */
 png_handle_IEND(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 {
    png_debug(1, "in png_handle_IEND\n");
@@ -499,7 +500,7 @@
 }
 
 #if defined(PNG_READ_gAMA_SUPPORTED)
-void
+void /* PRIVATE */
 png_handle_gAMA(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 {
    png_fixed_point igamma;
@@ -576,7 +577,7 @@
 #endif
 
 #if defined(PNG_READ_sBIT_SUPPORTED)
-void
+void /* PRIVATE */
 png_handle_sBIT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 {
    png_size_t truelen;
@@ -642,7 +643,7 @@
 #endif
 
 #if defined(PNG_READ_cHRM_SUPPORTED)
-void
+void /* PRIVATE */
 png_handle_cHRM(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 {
    png_byte buf[4];
@@ -799,7 +800,7 @@
 #endif
 
 #if defined(PNG_READ_sRGB_SUPPORTED)
-void
+void /* PRIVATE */
 png_handle_sRGB(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 {
    int intent;
@@ -907,7 +908,7 @@
 #endif /* PNG_READ_sRGB_SUPPORTED */
 
 #if defined(PNG_READ_iCCP_SUPPORTED)
-void
+void /* PRIVATE */
 png_handle_iCCP(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 /* Note: this does not properly handle chunks that are > 64K under DOS */
 {
@@ -986,7 +987,7 @@
 #endif /* PNG_READ_iCCP_SUPPORTED */
 
 #if defined(PNG_READ_sPLT_SUPPORTED)
-void
+void /* PRIVATE */
 png_handle_sPLT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 /* Note: this does not properly handle chunks that are > 64K under DOS */
 {
@@ -1088,7 +1089,7 @@
 #endif /* PNG_READ_sPLT_SUPPORTED */
 
 #if defined(PNG_READ_tRNS_SUPPORTED)
-void
+void /* PRIVATE */
 png_handle_tRNS(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 {
    png_debug(1, "in png_handle_tRNS\n");
@@ -1186,7 +1187,7 @@
 #endif
 
 #if defined(PNG_READ_bKGD_SUPPORTED)
-void
+void /* PRIVATE */
 png_handle_bKGD(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 {
    png_size_t truelen;
@@ -1276,7 +1277,7 @@
 #endif
 
 #if defined(PNG_READ_hIST_SUPPORTED)
-void
+void /* PRIVATE */
 png_handle_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 {
    int num, i;
@@ -1336,7 +1337,7 @@
 #endif
 
 #if defined(PNG_READ_pHYs_SUPPORTED)
-void
+void /* PRIVATE */
 png_handle_pHYs(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 {
    png_byte buf[9];
@@ -1379,7 +1380,7 @@
 #endif
 
 #if defined(PNG_READ_oFFs_SUPPORTED)
-void
+void /* PRIVATE */
 png_handle_oFFs(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 {
    png_byte buf[9];
@@ -1423,7 +1424,7 @@
 
 #if defined(PNG_READ_pCAL_SUPPORTED)
 /* read the pCAL chunk (png-scivis-19970203) */
-void
+void /* PRIVATE */
 png_handle_pCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 {
    png_charp purpose;
@@ -1540,7 +1541,7 @@
 
 #if defined(PNG_READ_sCAL_SUPPORTED)
 /* read the sCAL chunk */
-void
+void /* PRIVATE */
 png_handle_sCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 {
    png_charp buffer, ep;
@@ -1652,7 +1653,7 @@
 #endif
 
 #if defined(PNG_READ_tIME_SUPPORTED)
-void
+void /* PRIVATE */
 png_handle_tIME(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 {
    png_byte buf[7];
@@ -1696,7 +1697,7 @@
 
 #if defined(PNG_READ_tEXt_SUPPORTED)
 /* Note: this does not properly handle chunks that are > 64K under DOS */
-void
+void /* PRIVATE */
 png_handle_tEXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 {
    png_textp text_ptr;
@@ -1743,11 +1744,13 @@
    text_ptr = (png_textp)png_malloc(png_ptr, (png_uint_32)sizeof(png_text));
    text_ptr->compression = PNG_TEXT_COMPRESSION_NONE;
    text_ptr->key = key;
+#ifdef PNG_iTXt_SUPPORTED
    text_ptr->lang = NULL;
    text_ptr->lang_key = NULL;
+   text_ptr->itxt_length = 0;
+#endif
    text_ptr->text = text;
    text_ptr->text_length = png_strlen(text);
-   text_ptr->itxt_length = 0;
 
    png_set_text(png_ptr, info_ptr, text_ptr, 1);
 
@@ -1758,7 +1761,7 @@
 
 #if defined(PNG_READ_zTXt_SUPPORTED)
 /* note: this does not correctly handle chunks that are > 64K under DOS */
-void
+void /* PRIVATE */
 png_handle_zTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 {
    png_textp text_ptr;
@@ -1817,12 +1820,14 @@
 
    text_ptr = (png_textp)png_malloc(png_ptr, (png_uint_32)sizeof(png_text));
    text_ptr->compression = comp_type;
-   text_ptr->lang = NULL;
    text_ptr->key = chunkdata;
+#ifdef PNG_iTXt_SUPPORTED
+   text_ptr->lang = NULL;
    text_ptr->lang_key = NULL;
+   text_ptr->itxt_length = 0;
+#endif
    text_ptr->text = chunkdata + prefix_len;
    text_ptr->text_length = data_len;
-   text_ptr->itxt_length = 0;
 
    png_set_text(png_ptr, info_ptr, text_ptr, 1);
 
@@ -1833,7 +1838,7 @@
 
 #if defined(PNG_READ_iTXt_SUPPORTED)
 /* note: this does not correctly handle chunks that are > 64K under DOS */
-void
+void /* PRIVATE */
 png_handle_iTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 {
    png_textp text_ptr;
@@ -1912,10 +1917,10 @@
    text_ptr->compression = (int)comp_flag + 1;
    text_ptr->lang_key = chunkdata+(lang_key-key);
    text_ptr->lang = chunkdata+(lang-key);
+   text_ptr->itxt_length = data_len;
+   text_ptr->text_length = 0;
    text_ptr->key = chunkdata;
    text_ptr->text = chunkdata + prefix_len;
-   text_ptr->text_length = 0;
-   text_ptr->itxt_length = data_len;
 
    png_set_text(png_ptr, info_ptr, text_ptr, 1);
 
@@ -1929,7 +1934,7 @@
    chunk name, CRC, or a critical chunk), the chunk is silently ignored
    -- unless the PNG_FLAG_UNKNOWN_CHUNKS_SUPPORTED flag is on in which
    case it will be saved away to be written out later. */
-void
+void /* PRIVATE */
 png_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
 {
    png_uint_32 skip = 0;
@@ -2015,7 +2020,7 @@
 
 #define isnonalpha(c) ((c) < 41 || (c) > 122 || ((c) > 90 && (c) < 97))
 
-void
+void /* PRIVATE */
 png_check_chunk_name(png_structp png_ptr, png_bytep chunk_name)
 {
    png_debug(1, "in png_check_chunk_name\n");
@@ -2036,11 +2041,11 @@
    a zero indicates the pixel is to be skipped.  This is in addition
    to any alpha or transparency value associated with the pixel.  If
    you want all pixels to be combined, pass 0xff (255) in mask.  */
-void
+void /* PRIVATE */
 #ifdef PNG_HAVE_ASSEMBLER_COMBINE_ROW
-png_combine_row_c
+png_combine_row_c /* PRIVATE */
 #else
-png_combine_row
+png_combine_row /* PRIVATE */
 #endif /* PNG_HAVE_ASSEMBLER_COMBINE_ROW */
    (png_structp png_ptr, png_bytep row, int mask)
 {
@@ -2244,7 +2249,7 @@
 }
 
 #if defined(PNG_READ_INTERLACING_SUPPORTED)
-void
+void /* PRIVATE */
 #ifdef PNG_HAVE_ASSEMBLER_READ_INTERLACE
 png_do_read_interlace_c
 #else
@@ -2467,7 +2472,7 @@
 }
 #endif
 
-void
+void /* PRIVATE */
 #ifdef PNG_HAVE_ASSEMBLER_READ_FILTER_ROW
 png_read_filter_row_c
 #else
@@ -2595,7 +2600,7 @@
    }
 }
 
-void
+void /* PRIVATE */
 png_read_finish_row(png_structp png_ptr)
 {
 #ifdef PNG_USE_LOCAL_ARRAYS
@@ -2717,7 +2722,7 @@
    png_ptr->mode |= PNG_AFTER_IDAT;
 }
 
-void
+void /* PRIVATE */
 png_read_start_row(png_structp png_ptr)
 {
 #ifdef PNG_USE_LOCAL_ARRAYS
diff --git a/pngset.c b/pngset.c
index 9894aec..971c335 100644
--- a/pngset.c
+++ b/pngset.c
@@ -1,7 +1,7 @@
 
 /* pngset.c - storage of image information into info struct
  *
- * libpng 1.0.6j - May 4, 2000
+ * libpng 1.0.7beta11 - May 6, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -17,7 +17,7 @@
 #include "png.h"
 
 #if defined(PNG_bKGD_SUPPORTED)
-void
+void PNGAPI
 png_set_bKGD(png_structp png_ptr, png_infop info_ptr, png_color_16p background)
 {
    png_debug1(1, "in %s storage function\n", "bKGD");
@@ -31,7 +31,7 @@
 
 #if defined(PNG_cHRM_SUPPORTED)
 #ifdef PNG_FLOATING_POINT_SUPPORTED
-void
+void PNGAPI
 png_set_cHRM(png_structp png_ptr, png_infop info_ptr,
    double white_x, double white_y, double red_x, double red_y,
    double green_x, double green_y, double blue_x, double blue_y)
@@ -62,7 +62,7 @@
 }
 #endif
 #ifdef PNG_FIXED_POINT_SUPPORTED
-void
+void PNGAPI
 png_set_cHRM_fixed(png_structp png_ptr, png_infop info_ptr,
    png_fixed_point white_x, png_fixed_point white_y, png_fixed_point red_x,
    png_fixed_point red_y, png_fixed_point green_x, png_fixed_point green_y,
@@ -97,7 +97,7 @@
 
 #if defined(PNG_gAMA_SUPPORTED)
 #ifdef PNG_FLOATING_POINT_SUPPORTED
-void
+void PNGAPI
 png_set_gAMA(png_structp png_ptr, png_infop info_ptr, double file_gamma)
 {
    png_debug1(1, "in %s storage function\n", "gAMA");
@@ -112,7 +112,7 @@
 }
 #endif
 #endif
-void
+void PNGAPI
 png_set_gAMA_fixed(png_structp png_ptr, png_infop info_ptr, png_fixed_point
    int_gamma)
 {
@@ -130,7 +130,7 @@
 }
 
 #if defined(PNG_hIST_SUPPORTED)
-void
+void PNGAPI
 png_set_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_16p hist)
 {
    png_debug1(1, "in %s storage function\n", "hIST");
@@ -142,7 +142,7 @@
 }
 #endif
 
-void
+void PNGAPI
 png_set_IHDR(png_structp png_ptr, png_infop info_ptr,
    png_uint_32 width, png_uint_32 height, int bit_depth,
    int color_type, int interlace_type, int compression_type,
@@ -183,7 +183,7 @@
 }
 
 #if defined(PNG_oFFs_SUPPORTED)
-void
+void PNGAPI
 png_set_oFFs(png_structp png_ptr, png_infop info_ptr,
    png_int_32 offset_x, png_int_32 offset_y, int unit_type)
 {
@@ -199,7 +199,7 @@
 #endif
 
 #if defined(PNG_pCAL_SUPPORTED)
-void
+void PNGAPI
 png_set_pCAL(png_structp png_ptr, png_infop info_ptr,
    png_charp purpose, png_int_32 X0, png_int_32 X1, int type, int nparams,
    png_charp units, png_charpp params)
@@ -245,7 +245,7 @@
 
 #if defined(PNG_READ_sCAL_SUPPORTED) || defined(PNG_WRITE_sCAL_SUPPORTED)
 #ifdef PNG_FLOATING_POINT_SUPPORTED
-void
+void PNGAPI
 png_set_sCAL(png_structp png_ptr, png_infop info_ptr,
              int unit, double width, double height)
 {
@@ -261,7 +261,7 @@
 }
 #else
 #ifdef PNG_FIXED_POINT_SUPPORTED
-void
+void PNGAPI
 png_set_sCAL_s(png_structp png_ptr, png_infop info_ptr,
              int unit, png_charp swidth, png_charp sheight)
 {
@@ -290,7 +290,7 @@
 #endif
 
 #if defined(PNG_pHYs_SUPPORTED)
-void
+void PNGAPI
 png_set_pHYs(png_structp png_ptr, png_infop info_ptr,
    png_uint_32 res_x, png_uint_32 res_y, int unit_type)
 {
@@ -305,7 +305,7 @@
 }
 #endif
 
-void
+void PNGAPI
 png_set_PLTE(png_structp png_ptr, png_infop info_ptr,
    png_colorp palette, int num_palette)
 {
@@ -321,7 +321,7 @@
 }
 
 #if defined(PNG_sBIT_SUPPORTED)
-void
+void PNGAPI
 png_set_sBIT(png_structp png_ptr, png_infop info_ptr,
    png_color_8p sig_bit)
 {
@@ -335,7 +335,7 @@
 #endif
 
 #if defined(PNG_sRGB_SUPPORTED)
-void
+void PNGAPI
 png_set_sRGB(png_structp png_ptr, png_infop info_ptr, int intent)
 {
    png_debug1(1, "in %s storage function\n", "sRGB");
@@ -346,7 +346,7 @@
    info_ptr->valid |= PNG_INFO_sRGB;
 }
 
-void
+void PNGAPI
 png_set_sRGB_gAMA_and_cHRM(png_structp png_ptr, png_infop info_ptr,
    int intent)
 {
@@ -418,7 +418,7 @@
 
 
 #if defined(PNG_iCCP_SUPPORTED)
-void
+void PNGAPI
 png_set_iCCP(png_structp png_ptr, png_infop info_ptr,
              png_charp name, int compression_type,
              png_charp profile, png_uint_32 proflen)
@@ -451,7 +451,7 @@
 #endif
 
 #if defined(PNG_TEXT_SUPPORTED)
-void
+void PNGAPI
 png_set_text(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr,
    int num_text)
 {
@@ -492,10 +492,12 @@
       png_debug1(3, "allocated %d entries for info_ptr->text\n",
          info_ptr->max_text);
    }
-
    for (i = 0; i < num_text; i++)
    {
-      png_size_t text_length,key_len,lang_len,lang_key_len;
+      png_size_t text_length,key_len;
+#ifdef PNG_iTXt_SUPPORTED
+      png_size_t lang_len,lang_key_len;
+#endif
       png_textp textp = &(info_ptr->text[info_ptr->num_text]);
 
       if (text_ptr[i].key == (png_charp)NULL)
@@ -504,6 +506,7 @@
       key_len = png_strlen(text_ptr[i].key);
 
       if(text_ptr[i].compression > 0)
+#ifdef PNG_iTXt_SUPPORTED
       {
         /* set iTXt data */
         if (text_ptr[i].key != (png_charp)NULL)
@@ -520,13 +523,21 @@
         lang_len = 0;
         lang_key_len = 0;
       }
+#else
+      {
+        png_warning(png_ptr, "iTXt chunk not supported.");
+        continue;
+      }
+#endif
 
       if (text_ptr[i].text == (png_charp)NULL || text_ptr[i].text[0] == '\0')
       {
          text_length = 0;
+#ifdef PNG_iTXt_SUPPORTED
          if(text_ptr[i].compression > 0)
             textp->compression = PNG_ITXT_COMPRESSION_NONE;
          else
+#endif
             textp->compression = PNG_TEXT_COMPRESSION_NONE;
       }
       else
@@ -536,13 +547,22 @@
       }
 
       textp->key = (png_charp)png_malloc(png_ptr,
-         (png_uint_32)(key_len + lang_len + lang_key_len + text_length + 4));
+         (png_uint_32)(key_len +
+#ifdef PNG_iTXt_SUPPORTED
+            lang_len + lang_key_len +
+#endif
+            text_length + 4));
       png_debug2(2, "Allocated %d bytes at %x in png_set_text\n",
-         key_len + lang_len + lang_key_len + text_length + 4, textp->key);
+         key_len + 
+#ifdef PNG_iTXt_SUPPORTED
+         lang_len + lang_key_len +
+#endif
+         text_length + 4, textp->key);
 
       png_memcpy(textp->key, text_ptr[i].key,
          (png_size_t)(key_len));
       *(textp->key+key_len) = '\0';
+#ifdef PNG_iTXt_SUPPORTED
       if (text_ptr[i].compression > 0)
       {
          textp->lang=textp->key + key_len + 1;
@@ -554,28 +574,33 @@
          textp->text=textp->lang_key + lang_key_len + 1;
       }
       else
+#endif
       {
+#ifdef PNG_iTXt_SUPPORTED
          textp->lang=(png_charp)NULL;
          textp->lang_key=(png_charp)NULL;
+#endif
          textp->text=textp->key + key_len + 1;
       }
-
       if(text_length)
          png_memcpy(textp->text, text_ptr[i].text,
             (png_size_t)(text_length));
       *(textp->text+text_length) = '\0';
 
+#ifdef PNG_iTXt_SUPPORTED
       if(textp->compression > 0)
       {
          textp->text_length = 0;
          textp->itxt_length = text_length;
       }
       else
+#endif
       {
          textp->text_length = text_length;
+#ifdef PNG_iTXt_SUPPORTED
          textp->itxt_length = 0;
+#endif
       }
-
       info_ptr->text[info_ptr->num_text]= *textp;
       info_ptr->num_text++;
 #ifdef PNG_FREE_ME_SUPPORTED
@@ -587,7 +612,7 @@
 #endif
 
 #if defined(PNG_tIME_SUPPORTED)
-void
+void PNGAPI
 png_set_tIME(png_structp png_ptr, png_infop info_ptr, png_timep mod_time)
 {
    png_debug1(1, "in %s storage function\n", "tIME");
@@ -601,7 +626,7 @@
 #endif
 
 #if defined(PNG_tRNS_SUPPORTED)
-void
+void PNGAPI
 png_set_tRNS(png_structp png_ptr, png_infop info_ptr,
    png_bytep trans, int num_trans, png_color_16p trans_values)
 {
@@ -625,7 +650,7 @@
 #endif
 
 #if defined(PNG_sPLT_SUPPORTED)
-void
+void PNGAPI
 png_set_sPLT(png_structp png_ptr,
              png_infop info_ptr, png_sPLT_tp entries, int nentries)
 {
@@ -665,7 +690,7 @@
 #endif /* PNG_sPLT_SUPPORTED */
 
 #if defined(PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED)
-void
+void PNGAPI
 png_set_unknown_chunks(png_structp png_ptr,
    png_infop info_ptr, png_unknown_chunkp unknowns, int num_unknowns)
 {
@@ -703,7 +728,7 @@
     info_ptr->free_me |= PNG_FREE_UNKN;
 #endif
 }
-void
+void PNGAPI
 png_set_unknown_chunk_location(png_structp png_ptr, png_infop info_ptr,
    int chunk, int location)
 {
@@ -715,7 +740,7 @@
 
 #if defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \
     defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED)
-void
+void PNGAPI
 png_permit_empty_plte (png_structp png_ptr, int empty_plte_permitted)
 {
    png_debug1(1, "in png_permit_empty_plte\n", "");
@@ -726,7 +751,7 @@
 #endif
 
 #if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
-void
+void PNGAPI
 png_set_keep_unknown_chunks(png_structp png_ptr, int keep, png_bytep
    chunk_list, int num_chunks)
 {
@@ -766,7 +791,7 @@
 #endif
 
 #if defined(PNG_READ_USER_CHUNKS_SUPPORTED)
-void
+void PNGAPI
 png_set_read_user_chunk_fn(png_structp png_ptr, png_voidp user_chunk_ptr,
    png_user_chunk_ptr read_user_chunk_fn)
 {
@@ -777,7 +802,7 @@
 #endif
 
 #if defined(PNG_INFO_IMAGE_SUPPORTED)
-void
+void PNGAPI
 png_set_rows(png_structp png_ptr, png_infop info_ptr, png_bytepp row_pointers)
 {
    png_debug1(1, "in %s storage function\n", "rows");
@@ -792,7 +817,7 @@
 }
 #endif
 
-void
+void PNGAPI
 png_set_compression_buffer_size(png_structp png_ptr, png_uint_32 size)
 {
     if(png_ptr->zbuf)
diff --git a/pngtest.c b/pngtest.c
index e4b23b9..08ff399 100644
--- a/pngtest.c
+++ b/pngtest.c
@@ -1,7 +1,7 @@
 
 /* pngtest.c - a simple test program to test libpng
  *
- * libpng 1.0.6j - May 4, 2000
+ * libpng 1.0.7beta11 - May 6, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -1378,4 +1378,4 @@
 }
 
 /* Generate a compiler error if there is an old png.h in the search path. */
-typedef version_1_0_6j your_png_h_is_not_version_1_0_6j;
+typedef version_1_0_7beta11 your_png_h_is_not_version_1_0_7beta11;
diff --git a/pngtrans.c b/pngtrans.c
index 3b68b7d..f4bd1f3 100644
--- a/pngtrans.c
+++ b/pngtrans.c
@@ -1,7 +1,7 @@
 
 /* pngtrans.c - transforms the data in a row (used by both readers and writers)
  *
- * libpng 1.0.6j - May 4, 2000
+ * libpng 1.0.7beta11 - May 6, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -13,7 +13,7 @@
 
 #if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
 /* turn on BGR-to-RGB mapping */
-void
+void PNGAPI
 png_set_bgr(png_structp png_ptr)
 {
    png_debug(1, "in png_set_bgr\n");
@@ -23,7 +23,7 @@
 
 #if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
 /* turn on 16 bit byte swapping */
-void
+void PNGAPI
 png_set_swap(png_structp png_ptr)
 {
    png_debug(1, "in png_set_swap\n");
@@ -34,7 +34,7 @@
 
 #if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED)
 /* turn on pixel packing */
-void
+void PNGAPI
 png_set_packing(png_structp png_ptr)
 {
    png_debug(1, "in png_set_packing\n");
@@ -48,7 +48,7 @@
 
 #if defined(PNG_READ_PACKSWAP_SUPPORTED)||defined(PNG_WRITE_PACKSWAP_SUPPORTED)
 /* turn on packed pixel swapping */
-void
+void PNGAPI
 png_set_packswap(png_structp png_ptr)
 {
    png_debug(1, "in png_set_packswap\n");
@@ -58,7 +58,7 @@
 #endif
 
 #if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED)
-void
+void PNGAPI
 png_set_shift(png_structp png_ptr, png_color_8p true_bits)
 {
    png_debug(1, "in png_set_shift\n");
@@ -69,7 +69,7 @@
 
 #if defined(PNG_READ_INTERLACING_SUPPORTED) || \
     defined(PNG_WRITE_INTERLACING_SUPPORTED)
-int
+int PNGAPI
 png_set_interlace_handling(png_structp png_ptr)
 {
    png_debug(1, "in png_set_interlace handling\n");
@@ -89,7 +89,7 @@
  * for 48-bit input data, as well as to avoid problems with some compilers
  * that don't like bytes as parameters.
  */
-void
+void PNGAPI
 png_set_filler(png_structp png_ptr, png_uint_32 filler, int filler_loc)
 {
    png_debug(1, "in png_set_filler\n");
@@ -122,7 +122,7 @@
 
 #if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \
     defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED)
-void
+void PNGAPI
 png_set_swap_alpha(png_structp png_ptr)
 {
    png_debug(1, "in png_set_swap_alpha\n");
@@ -132,7 +132,7 @@
 
 #if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \
     defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
-void
+void PNGAPI
 png_set_invert_alpha(png_structp png_ptr)
 {
    png_debug(1, "in png_set_invert_alpha\n");
@@ -141,7 +141,7 @@
 #endif
 
 #if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED)
-void
+void PNGAPI
 png_set_invert_mono(png_structp png_ptr)
 {
    png_debug(1, "in png_set_invert_mono\n");
@@ -149,7 +149,7 @@
 }
 
 /* invert monochrome grayscale data */
-void
+void /* PRIVATE */
 png_do_invert(png_row_infop row_info, png_bytep row)
 {
    png_debug(1, "in png_do_invert\n");
@@ -174,7 +174,7 @@
 
 #if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED)
 /* swaps byte order on 16 bit depth images */
-void
+void /* PRIVATE */
 png_do_swap(png_row_infop row_info, png_bytep row)
 {
    png_debug(1, "in png_do_swap\n");
@@ -305,7 +305,7 @@
 };
 
 /* swaps pixel packing order within bytes */
-void
+void /* PRIVATE */
 png_do_packswap(png_row_infop row_info, png_bytep row)
 {
    png_debug(1, "in png_do_packswap\n");
@@ -337,7 +337,7 @@
 #if defined(PNG_WRITE_FILLER_SUPPORTED) || \
     defined(PNG_READ_STRIP_ALPHA_SUPPORTED)
 /* remove filler or alpha byte(s) */
-void
+void /* PRIVATE */
 png_do_strip_filler(png_row_infop row_info, png_bytep row, png_uint_32 flags)
 {
    png_debug(1, "in png_do_strip_filler\n");
@@ -495,7 +495,7 @@
 
 #if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED)
 /* swaps red and blue bytes within a pixel */
-void
+void /* PRIVATE */
 png_do_bgr(png_row_infop row_info, png_bytep row)
 {
    png_debug(1, "in png_do_bgr\n");
@@ -573,7 +573,7 @@
 #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \
     defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) || \
     defined(PNG_LEGACY_SUPPORTED)
-void
+void PNGAPI
 png_set_user_transform_info(png_structp png_ptr, png_voidp
    user_transform_ptr, int user_transform_depth, int user_transform_channels)
 {
@@ -595,7 +595,7 @@
  * associated with this pointer before png_write_destroy and png_read_destroy
  * are called.
  */
-png_voidp
+png_voidp PNGAPI
 png_get_user_transform_ptr(png_structp png_ptr)
 {
 #if defined(PNG_USER_TRANSFORM_PTR_SUPPORTED)
diff --git a/pngvcrd.c b/pngvcrd.c
index 820d7fc..9633852 100644
--- a/pngvcrd.c
+++ b/pngvcrd.c
@@ -2,7 +2,7 @@
  *
  * For Intel x86 CPU and Microsoft Visual C++ compiler
  *
- * libpng 1.0.6j - May 4, 2000
+ * libpng 1.0.7beta11 - May 6, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998, Intel Corporation
  * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson
@@ -25,7 +25,7 @@
 
 static int mmx_supported=2;
 
-void
+void /* PRIVATE */
 png_read_filter_row_c(png_structp png_ptr, png_row_infop row_info,
    png_bytep row, png_bytep prev_row, int filter);
 
@@ -98,7 +98,7 @@
 /* Use this routine for x86 platform - uses faster MMX routine if machine
    supports MMX */
 
-void
+void /* PRIVATE */
 png_combine_row(png_structp png_ptr, png_bytep row, int mask)
 {
 #ifdef PNG_USE_LOCAL_ARRAYS
@@ -970,7 +970,7 @@
 
 #if defined(PNG_READ_INTERLACING_SUPPORTED)
 
-void
+void /* PRIVATE */
 png_do_read_interlace(png_row_infop row_info, png_bytep row, int pass,
    png_uint_32 transformations)
 {
@@ -1903,7 +1903,7 @@
 
 
 // Optimized code for PNG Average filter decoder
-void
+void /* PRIVATE */
 png_read_filter_row_mmx_avg(png_row_infop row_info, png_bytep row
                             , png_bytep prev_row)
 {
@@ -2336,7 +2336,7 @@
 }
 
 // Optimized code for PNG Paeth filter decoder
-void
+void /* PRIVATE */
 png_read_filter_row_mmx_paeth(png_row_infop row_info, png_bytep row,
                               png_bytep prev_row)
 {
@@ -3232,7 +3232,7 @@
 }
 
 // Optimized code for PNG Sub filter decoder
-void
+void /* PRIVATE */
 png_read_filter_row_mmx_sub(png_row_infop row_info, png_bytep row)
 {
    //int test;
@@ -3536,7 +3536,7 @@
 }
 
 // Optimized code for PNG Up filter decoder
-void
+void /* PRIVATE */
 png_read_filter_row_mmx_up(png_row_infop row_info, png_bytep row,
    png_bytep prev_row)
 {
@@ -3651,7 +3651,7 @@
 
 
 // Optimized png_read_filter_row routines
-void
+void /* PRIVATE */
 png_read_filter_row(png_structp png_ptr, png_row_infop row_info, png_bytep
    row, png_bytep prev_row, int filter)
 {
diff --git a/pngwio.c b/pngwio.c
index 6322624..0dae25e 100644
--- a/pngwio.c
+++ b/pngwio.c
@@ -1,7 +1,7 @@
 
 /* pngwio.c - functions for data output
  *
- * libpng 1.0.6j - May 4, 2000
+ * libpng 1.0.7beta11 - May 6, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -24,7 +24,7 @@
    buffering if you are using unbuffered writes.  This should never be asked
    to write more than 64K on a 16 bit machine.  */
 
-void
+void /* PRIVATE */
 png_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
 {
    if (png_ptr->write_data_fn != NULL )
@@ -39,7 +39,7 @@
    write_data function and use it at run time with png_set_write_fn(), rather
    than changing the library. */
 #ifndef USE_FAR_KEYWORD
-static void
+static void /* PRIVATE */
 png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
 {
    png_uint_32 check;
@@ -59,7 +59,7 @@
 #define NEAR_BUF_SIZE 1024
 #define MIN(a,b) (a <= b ? a : b)
 
-static void
+static void /* PRIVATE */
 png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
 {
    png_uint_32 check;
@@ -106,7 +106,7 @@
    to disk).  After png_flush is called, there should be no data pending
    writing in any buffers. */
 #if defined(PNG_WRITE_FLUSH_SUPPORTED)
-void
+void /* PRIVATE */
 png_flush(png_structp png_ptr)
 {
    if (png_ptr->output_flush_fn != NULL)
@@ -114,7 +114,7 @@
 }
 
 #if !defined(PNG_NO_STDIO)
-static void
+static void /* PRIVATE */
 png_default_flush(png_structp png_ptr)
 {
    FILE *io_ptr;
@@ -147,7 +147,7 @@
                    PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile
                    time, output_flush_fn will be ignored, although it must be
                    supplied for compatibility. */
-void
+void PNGAPI
 png_set_write_fn(png_structp png_ptr, png_voidp io_ptr,
    png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)
 {
diff --git a/pngwrite.c b/pngwrite.c
index a90c816..30bd1ee 100644
--- a/pngwrite.c
+++ b/pngwrite.c
@@ -1,7 +1,7 @@
 
 /* pngwrite.c - general routines to write a PNG file
  *
- * libpng 1.0.6j - May 4, 2000
+ * libpng 1.0.7beta11 - May 6, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -21,7 +21,7 @@
  * write a plain PNG file.  If you have long comments, I suggest writing
  * them in png_write_end(), and compressing them.
  */
-void
+void PNGAPI
 png_write_info_before_PLTE(png_structp png_ptr, png_infop info_ptr)
 {
    png_debug(1, "in png_write_info_before_PLTE\n");
@@ -110,7 +110,7 @@
    }
 }
 
-void
+void PNGAPI
 png_write_info(png_structp png_ptr, png_infop info_ptr)
 {
 #if defined(PNG_WRITE_TEXT_SUPPORTED) || defined(PNG_WRITE_sPLT_SUPPORTED)
@@ -277,7 +277,7 @@
  * in png_write_info(), do not write them again here.  If you have long
  * comments, I suggest writing them here, and compressing them.
  */
-void
+void PNGAPI
 png_write_end(png_structp png_ptr, png_infop info_ptr)
 {
    png_debug(1, "in png_write_end\n");
@@ -378,7 +378,7 @@
 }
 
 #if defined(PNG_WRITE_tIME_SUPPORTED)
-void
+void PNGAPI
 png_convert_from_struct_tm(png_timep ptime, struct tm FAR * ttime)
 {
    png_debug(1, "in png_convert_from_struct_tm\n");
@@ -390,7 +390,7 @@
    ptime->second = (png_byte)ttime->tm_sec;
 }
 
-void
+void PNGAPI
 png_convert_from_time_t(png_timep ptime, time_t ttime)
 {
    struct tm *tbuf;
@@ -402,7 +402,7 @@
 #endif
 
 /* Initialize png_ptr structure, and allocate any memory needed */
-png_structp
+png_structp PNGAPI
 png_create_write_struct(png_const_charp user_png_ver, png_voidp error_ptr,
    png_error_ptr error_fn, png_error_ptr warn_fn)
 {
@@ -412,7 +412,7 @@
 }
 
 /* Alternate initialize png_ptr structure, and allocate any memory needed */
-png_structp
+png_structp PNGAPI
 png_create_write_struct_2(png_const_charp user_png_ver, png_voidp error_ptr,
    png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr,
    png_malloc_ptr malloc_fn, png_free_ptr free_fn)
@@ -424,6 +424,7 @@
    jmp_buf jmpbuf;
 #endif
 #endif
+   int i;
    png_debug(1, "in png_create_write_struct\n");
 #ifdef PNG_USER_MEM_SUPPORTED
    if ((png_ptr = (png_structp)png_create_struct_2(PNG_STRUCT_PNG,
@@ -456,30 +457,39 @@
 #endif /* PNG_USER_MEM_SUPPORTED */
    png_set_error_fn(png_ptr, error_ptr, error_fn, warn_fn);
 
-   /* Libpng 0.90 and later are binary incompatible with libpng 0.89, so
-    * we must recompile any applications that use any older library version.
-    * For versions after libpng 1.0, we will be compatible, so we need
-    * only check the first digit.
-    */
-   if (user_png_ver == NULL || user_png_ver[0] != png_libpng_ver[0] ||
-       (png_libpng_ver[0] == '0' && user_png_ver[2] < '9'))
+   i=0;
+   do
    {
-      png_error(png_ptr,
-         "Incompatible libpng version in application and library");
-   }
+     if(user_png_ver[i] != png_libpng_ver[i])
+        png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
+   } while (png_libpng_ver[i++]);
 
-   /* Libpng 1.0.6 was not binary compatible, due to insertion of the
-      info_ptr->free_me member.  Note to maintainer: this test can be
-      removed from version 2.0.0 and beyond because the previous test
-      would have already rejected it. */
-
-   if (user_png_ver[4] == '6' && user_png_ver[2] == '0' && 
-       user_png_ver[0] == '1' && user_png_ver[5] == '\0')
+   if (png_ptr->flags & PNG_FLAG_LIBRARY_MISMATCH)
    {
-      png_error(png_ptr,
-         "Application must be recompiled; version 1.0.6 was incompatible");
-   }
+     /* Libpng 0.90 and later are binary incompatible with libpng 0.89, so
+      * we must recompile any applications that use any older library version.
+      * For versions after libpng 1.0, we will be compatible, so we need
+      * only check the first digit.
+      */
+     if (user_png_ver == NULL || user_png_ver[0] != png_libpng_ver[0] ||
+         (user_png_ver[0] == '0' && user_png_ver[2] < '9'))
+     {
+        png_error(png_ptr,
+           "Incompatible libpng version in application and library");
+     }
 
+     /* Libpng 1.0.6 was not binary compatible, due to insertion of the
+        info_ptr->free_me member.  Note to maintainer: this test can be
+        removed from version 2.0.0 and beyond because the previous test
+        would have already rejected it. */
+
+     if (user_png_ver[4] == '6' && user_png_ver[2] == '0' && 
+         user_png_ver[0] == '1' && user_png_ver[5] == '\0')
+     {
+        png_error(png_ptr,
+           "Application must be recompiled; version 1.0.6 was incompatible");
+     }
+   }
 
    /* initialize zbuf - compression buffer */
    png_ptr->zbuf_size = PNG_ZBUF_SIZE;
@@ -493,39 +503,40 @@
       1, NULL, NULL);
 #endif
 
-   png_ptr->mode |= PNG_CREATED_WRITE_STRUCT;
-
    return ((png_structp)png_ptr);
 }
 
 /* Initialize png_ptr structure, and allocate any memory needed */
 #undef png_write_init
-void
+void PNGAPI
 png_write_init(png_structp png_ptr)
 {
    /* We only come here via pre-1.0.7-compiled applications */
    png_write_init_2(png_ptr, "1.0.0", 10000, 10000);
 }
 
-void
+void PNGAPI
 png_write_init_2(png_structp png_ptr, png_const_charp user_png_ver,
    png_size_t png_struct_size, png_size_t png_info_size)
 {
 #ifdef PNG_SETJMP_SUPPORTED
    jmp_buf tmp_jmp; /* to save current jump buffer */
 #endif
-#ifndef PNG_LEGACY_SUPPORTED
    int i = 0;
    do
    {
      if (user_png_ver[i] != png_libpng_ver[i])
      {
+#ifdef PNG_LEGACY_SUPPORTED
+       png_ptr->flags |= PNG_FLAG_LIBRARY_MISMATCH;
+#else
        png_ptr->error_fn=(png_error_ptr)NULL;
        png_error(png_ptr,
        "Application uses deprecated png_write_init() and must be recompiled.");
+#endif
      }
    } while (png_libpng_ver[i++]);
-#endif
+
    if (sizeof(png_struct) > png_struct_size ||
       sizeof(png_info) > png_info_size)
      {
@@ -559,11 +570,6 @@
    png_set_filter_heuristics(png_ptr, PNG_FILTER_HEURISTIC_DEFAULT,
       1, NULL, NULL);
 #endif
-
-#ifdef PNG_LEGACY_SUPPORTED
-   if (user_png_ver)
-      return;
-#endif
 }
 
 /* Write a few rows of image data.  If the image is interlaced,
@@ -571,7 +577,7 @@
  * have called png_set_interlace_handling(), you will have to
  * "write" the image seven times.
  */
-void
+void PNGAPI
 png_write_rows(png_structp png_ptr, png_bytepp row,
    png_uint_32 num_rows)
 {
@@ -589,7 +595,7 @@
 /* Write the image.  You only need to call this function once, even
  * if you are writing an interlaced image.
  */
-void
+void PNGAPI
 png_write_image(png_structp png_ptr, png_bytepp image)
 {
    png_uint_32 i; /* row index */
@@ -616,7 +622,7 @@
 }
 
 /* called by user to write a row of image data */
-void
+void PNGAPI
 png_write_row(png_structp png_ptr, png_bytep row)
 {
    png_debug2(1, "in png_write_row (row %ld, pass %d)\n",
@@ -767,7 +773,7 @@
 
 #if defined(PNG_WRITE_FLUSH_SUPPORTED)
 /* Set the automatic flush interval or 0 to turn flushing off */
-void
+void PNGAPI
 png_set_flush(png_structp png_ptr, int nrows)
 {
    png_debug(1, "in png_set_flush\n");
@@ -775,7 +781,7 @@
 }
 
 /* flush the current output buffers now */
-void
+void PNGAPI
 png_write_flush(png_structp png_ptr)
 {
    int wrote_IDAT;
@@ -828,7 +834,7 @@
 #endif /* PNG_WRITE_FLUSH_SUPPORTED */
 
 /* free all memory used by the write */
-void
+void PNGAPI
 png_destroy_write_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr)
 {
    png_structp png_ptr = NULL;
@@ -883,7 +889,7 @@
 
 
 /* Free any memory used in png_ptr struct (old method) */
-void
+void PNGAPI
 png_write_destroy(png_structp png_ptr)
 {
 #ifdef PNG_SETJMP_SUPPORTED
@@ -948,7 +954,7 @@
 }
 
 /* Allow the application to select one or more row filters to use. */
-void
+void PNGAPI
 png_set_filter(png_structp png_ptr, int method, int filters)
 {
    png_debug(1, "in png_set_filter\n");
@@ -1048,7 +1054,7 @@
  * better compression.
  */
 #if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED)      /* GRR 970116 */
-void
+void PNGAPI
 png_set_filter_heuristics(png_structp png_ptr, int heuristic_method,
    int num_weights, png_doublep filter_weights,
    png_doublep filter_costs)
@@ -1165,7 +1171,7 @@
 }
 #endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */
 
-void
+void PNGAPI
 png_set_compression_level(png_structp png_ptr, int level)
 {
    png_debug(1, "in png_set_compression_level\n");
@@ -1173,7 +1179,7 @@
    png_ptr->zlib_level = level;
 }
 
-void
+void PNGAPI
 png_set_compression_mem_level(png_structp png_ptr, int mem_level)
 {
    png_debug(1, "in png_set_compression_mem_level\n");
@@ -1181,7 +1187,7 @@
    png_ptr->zlib_mem_level = mem_level;
 }
 
-void
+void PNGAPI
 png_set_compression_strategy(png_structp png_ptr, int strategy)
 {
    png_debug(1, "in png_set_compression_strategy\n");
@@ -1189,7 +1195,7 @@
    png_ptr->zlib_strategy = strategy;
 }
 
-void
+void PNGAPI
 png_set_compression_window_bits(png_structp png_ptr, int window_bits)
 {
    if (window_bits > 15)
@@ -1208,7 +1214,7 @@
    png_ptr->zlib_window_bits = window_bits;
 }
 
-void
+void PNGAPI
 png_set_compression_method(png_structp png_ptr, int method)
 {
    png_debug(1, "in png_set_compression_method\n");
@@ -1218,14 +1224,14 @@
    png_ptr->zlib_method = method;
 }
 
-void
+void PNGAPI
 png_set_write_status_fn(png_structp png_ptr, png_write_status_ptr write_row_fn)
 {
    png_ptr->write_row_fn = write_row_fn;
 }
 
 #if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED)
-void
+void PNGAPI
 png_set_write_user_transform_fn(png_structp png_ptr, png_user_transform_ptr
    write_user_transform_fn)
 {
@@ -1237,7 +1243,8 @@
 
 
 #if defined(PNG_INFO_IMAGE_SUPPORTED)
-void png_write_png(png_structp png_ptr, png_infop info_ptr,
+void PNGAPI
+png_write_png(png_structp png_ptr, png_infop info_ptr,
                            int transforms,
                            voidp params)
 {
diff --git a/pngwtran.c b/pngwtran.c
index 6e4385b..f5ae900 100644
--- a/pngwtran.c
+++ b/pngwtran.c
@@ -1,7 +1,7 @@
 
 /* pngwtran.c - transforms the data in a row for PNG writers
  *
- * libpng 1.0.6j - May 4, 2000
+ * libpng 1.0.7beta11 - May 6, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -14,7 +14,7 @@
 /* Transform the data according to the user's wishes.  The order of
  * transformations is significant.
  */
-void
+void /* PRIVATE */
 png_do_write_transformations(png_structp png_ptr)
 {
    png_debug(1, "in png_do_write_transformations\n");
@@ -82,7 +82,7 @@
  * row_info bit depth should be 8 (one pixel per byte).  The channels
  * should be 1 (this only happens on grayscale and paletted images).
  */
-void
+void /* PRIVATE */
 png_do_pack(png_row_infop row_info, png_bytep row, png_uint_32 bit_depth)
 {
    png_debug(1, "in png_do_pack\n");
@@ -208,7 +208,7 @@
  * would pass 3 as bit_depth, and this routine would translate the
  * data to 0 to 15.
  */
-void
+void /* PRIVATE */
 png_do_shift(png_row_infop row_info, png_bytep row, png_color_8p bit_depth)
 {
    png_debug(1, "in png_do_shift\n");
@@ -332,7 +332,7 @@
 #endif
 
 #if defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED)
-void
+void /* PRIVATE */
 png_do_write_swap_alpha(png_row_infop row_info, png_bytep row)
 {
    png_debug(1, "in png_do_write_swap_alpha\n");
@@ -420,7 +420,7 @@
 #endif
 
 #if defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED)
-void
+void /* PRIVATE */
 png_do_write_invert_alpha(png_row_infop row_info, png_bytep row)
 {
    png_debug(1, "in png_do_write_invert_alpha\n");
diff --git a/pngwutil.c b/pngwutil.c
index c178d71..b1273e5 100644
--- a/pngwutil.c
+++ b/pngwutil.c
@@ -1,7 +1,7 @@
 
 /* pngwutil.c - utilities to write a PNG file
  *
- * libpng 1.0.6j - May 4, 2000
+ * libpng 1.0.7beta11 - May 6, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -15,7 +15,7 @@
  * with unsigned numbers for convenience, although one supported
  * ancillary chunk uses signed (two's complement) numbers.
  */
-void
+void /* PRIVATE */
 png_save_uint_32(png_bytep buf, png_uint_32 i)
 {
    buf[0] = (png_byte)((i >> 24) & 0xff);
@@ -29,7 +29,7 @@
  * complement format.  If this isn't the case, then this routine needs to
  * be modified to write data in two's complement format.
  */
-void
+void /* PRIVATE */
 png_save_int_32(png_bytep buf, png_int_32 i)
 {
    buf[0] = (png_byte)((i >> 24) & 0xff);
@@ -43,7 +43,7 @@
  * The parameter is declared unsigned int, not png_uint_16,
  * just to avoid potential problems on pre-ANSI C compilers.
  */
-void
+void /* PRIVATE */
 png_save_uint_16(png_bytep buf, unsigned int i)
 {
    buf[0] = (png_byte)((i >> 8) & 0xff);
@@ -59,7 +59,7 @@
  * png_write_chunk_start(), png_write_chunk_data(), and png_write_chunk_end()
  * functions instead.
  */
-void
+void PNGAPI
 png_write_chunk(png_structp png_ptr, png_bytep chunk_name,
    png_bytep data, png_size_t length)
 {
@@ -72,7 +72,7 @@
  * The total_length is the sum of the lengths of all the data you will be
  * passing in png_write_chunk_data().
  */
-void
+void PNGAPI
 png_write_chunk_start(png_structp png_ptr, png_bytep chunk_name,
    png_uint_32 length)
 {
@@ -95,7 +95,7 @@
  * sum of the lengths from these calls *must* add up to the total_length
  * given to png_write_chunk_start().
  */
-void
+void PNGAPI
 png_write_chunk_data(png_structp png_ptr, png_bytep data, png_size_t length)
 {
    /* write the data, and run the CRC over it */
@@ -107,7 +107,7 @@
 }
 
 /* Finish a chunk started with png_write_chunk_start(). */
-void
+void PNGAPI
 png_write_chunk_end(png_structp png_ptr)
 {
    png_byte buf[4];
@@ -124,7 +124,7 @@
  * we should call png_set_sig_bytes() to tell libpng how many of the
  * bytes have already been written.
  */
-void
+void /* PRIVATE */
 png_write_sig(png_structp png_ptr)
 {
    png_byte png_signature[8] = {137, 80, 78, 71, 13, 10, 26, 10};
@@ -151,7 +151,7 @@
 } compression_state;
 
 /* compress given text into storage in the png_ptr structure */
-static int
+static int /* PRIVATE */
 png_text_compress(png_structp png_ptr,
         png_charp text, png_size_t text_len, int compression,
         compression_state *comp)
@@ -318,7 +318,7 @@
 }
 
 /* ship the compressed text out via chunk writes */
-static void
+static void /* PRIVATE */
 png_write_compressed_data_out(png_structp png_ptr, compression_state *comp)
 {
    int i;
@@ -354,7 +354,7 @@
  * information.  Note that the rest of this code depends upon this
  * information being correct.
  */
-void
+void /* PRIVATE */
 png_write_IHDR(png_structp png_ptr, png_uint_32 width, png_uint_32 height,
    int bit_depth, int color_type, int compression_type, int filter_type,
    int interlace_type)
@@ -497,7 +497,7 @@
  * correct order for PNG, so people can redefine it to any convenient
  * structure.
  */
-void
+void /* PRIVATE */
 png_write_PLTE(png_structp png_ptr, png_colorp palette, png_uint_32 num_pal)
 {
 #ifdef PNG_USE_LOCAL_ARRAYS
@@ -541,7 +541,7 @@
 }
 
 /* write an IDAT chunk */
-void
+void /* PRIVATE */
 png_write_IDAT(png_structp png_ptr, png_bytep data, png_size_t length)
 {
 #ifdef PNG_USE_LOCAL_ARRAYS
@@ -553,7 +553,7 @@
 }
 
 /* write an IEND chunk */
-void
+void /* PRIVATE */
 png_write_IEND(png_structp png_ptr)
 {
 #ifdef PNG_USE_LOCAL_ARRAYS
@@ -567,7 +567,7 @@
 #if defined(PNG_WRITE_gAMA_SUPPORTED)
 /* write a gAMA chunk */
 #ifdef PNG_FLOATING_POINT_SUPPORTED
-void
+void /* PRIVATE */
 png_write_gAMA(png_structp png_ptr, double file_gamma)
 {
 #ifdef PNG_USE_LOCAL_ARRAYS
@@ -584,7 +584,7 @@
 }
 #endif
 #ifdef PNG_FIXED_POINT_SUPPORTED
-void
+void /* PRIVATE */
 png_write_gAMA_fixed(png_structp png_ptr, png_fixed_point file_gamma)
 {
 #ifdef PNG_USE_LOCAL_ARRAYS
@@ -602,7 +602,7 @@
 
 #if defined(PNG_WRITE_sRGB_SUPPORTED)
 /* write a sRGB chunk */
-void
+void /* PRIVATE */
 png_write_sRGB(png_structp png_ptr, int srgb_intent)
 {
 #ifdef PNG_USE_LOCAL_ARRAYS
@@ -621,7 +621,7 @@
 
 #if defined(PNG_WRITE_iCCP_SUPPORTED)
 /* write an iCCP chunk */
-void
+void /* PRIVATE */
 png_write_iCCP(png_structp png_ptr, png_charp name, int compression_type,
    png_charp profile, int profile_len)
 {
@@ -665,7 +665,7 @@
 
 #if defined(PNG_WRITE_sPLT_SUPPORTED)
 /* write a sPLT chunk */
-void
+void /* PRIVATE */
 png_write_sPLT(png_structp png_ptr, png_sPLT_tp spalette)
 {
 #ifdef PNG_USE_LOCAL_ARRAYS
@@ -721,7 +721,7 @@
 
 #if defined(PNG_WRITE_sBIT_SUPPORTED)
 /* write the sBIT chunk */
-void
+void /* PRIVATE */
 png_write_sBIT(png_structp png_ptr, png_color_8p sbit, int color_type)
 {
 #ifdef PNG_USE_LOCAL_ARRAYS
@@ -778,7 +778,7 @@
 #if defined(PNG_WRITE_cHRM_SUPPORTED)
 /* write the cHRM chunk */
 #ifdef PNG_FLOATING_POINT_SUPPORTED
-void
+void /* PRIVATE */
 png_write_cHRM(png_structp png_ptr, double white_x, double white_y,
    double red_x, double red_y, double green_x, double green_y,
    double blue_x, double blue_y)
@@ -842,7 +842,7 @@
 }
 #endif
 #ifdef PNG_FIXED_POINT_SUPPORTED
-void
+void /* PRIVATE */
 png_write_cHRM_fixed(png_structp png_ptr, png_fixed_point white_x,
    png_fixed_point white_y, png_fixed_point red_x, png_fixed_point red_y,
    png_fixed_point green_x, png_fixed_point green_y, png_fixed_point blue_x,
@@ -897,7 +897,7 @@
 
 #if defined(PNG_WRITE_tRNS_SUPPORTED)
 /* write the tRNS chunk */
-void
+void /* PRIVATE */
 png_write_tRNS(png_structp png_ptr, png_bytep trans, png_color_16p tran,
    int num_trans, int color_type)
 {
@@ -940,7 +940,7 @@
 
 #if defined(PNG_WRITE_bKGD_SUPPORTED)
 /* write the background chunk */
-void
+void /* PRIVATE */
 png_write_bKGD(png_structp png_ptr, png_color_16p back, int color_type)
 {
 #ifdef PNG_USE_LOCAL_ARRAYS
@@ -981,7 +981,7 @@
 
 #if defined(PNG_WRITE_hIST_SUPPORTED)
 /* write the histogram */
-void
+void /* PRIVATE */
 png_write_hIST(png_structp png_ptr, png_uint_16p hist, int num_hist)
 {
 #ifdef PNG_USE_LOCAL_ARRAYS
@@ -1021,7 +1021,7 @@
  * by the calling routine.  This avoids problems with trying to write to
  * static keywords without having to have duplicate copies of the strings.
  */
-png_size_t
+png_size_t /* PRIVATE */
 png_check_keyword(png_structp png_ptr, png_charp key, png_charpp new_key)
 {
    png_size_t key_len;
@@ -1131,7 +1131,7 @@
 
 #if defined(PNG_WRITE_tEXt_SUPPORTED)
 /* write a tEXt chunk */
-void
+void /* PRIVATE */
 png_write_tEXt(png_structp png_ptr, png_charp key, png_charp text,
    png_size_t text_len)
 {
@@ -1172,7 +1172,7 @@
 
 #if defined(PNG_WRITE_zTXt_SUPPORTED)
 /* write a compressed text chunk */
-void
+void /* PRIVATE */
 png_write_zTXt(png_structp png_ptr, png_charp key, png_charp text,
    png_size_t text_len, int compression)
 {
@@ -1225,7 +1225,7 @@
 
 #if defined(PNG_WRITE_iTXt_SUPPORTED)
 /* write an iTXt chunk */
-void
+void /* PRIVATE */
 png_write_iTXt(png_structp png_ptr, int compression, png_charp key,
     png_charp lang, png_charp lang_key, png_charp text)
 {
@@ -1303,7 +1303,7 @@
 
 #if defined(PNG_WRITE_oFFs_SUPPORTED)
 /* write the oFFs chunk */
-void
+void /* PRIVATE */
 png_write_oFFs(png_structp png_ptr, png_uint_32 x_offset,
    png_uint_32 y_offset,
    int unit_type)
@@ -1327,7 +1327,7 @@
 
 #if defined(PNG_WRITE_pCAL_SUPPORTED)
 /* write the pCAL chunk (png-scivis-19970203) */
-void
+void /* PRIVATE */
 png_write_pCAL(png_structp png_ptr, png_charp purpose, png_int_32 X0,
    png_int_32 X1, int type, int nparams, png_charp units, png_charpp params)
 {
@@ -1388,7 +1388,7 @@
 #if defined(PNG_WRITE_sCAL_SUPPORTED)
 /* write the sCAL chunk */
 #if defined(PNG_FLOATING_POINT_SUPPORTED) && !defined(PNG_NO_STDIO)
-void
+void /* PRIVATE */
 png_write_sCAL(png_structp png_ptr, int unit, double width,double height)
 {
 #ifdef PNG_USE_LOCAL_ARRAYS
@@ -1413,7 +1413,7 @@
 }
 #else
 #ifdef PNG_FIXED_POINT_SUPPORTED
-void
+void /* PRIVATE */
 png_write_sCAL_s(png_structp png_ptr, int unit, png_charp width,
    png_charp height)
 {
@@ -1443,7 +1443,7 @@
 
 #if defined(PNG_WRITE_pHYs_SUPPORTED)
 /* write the pHYs chunk */
-void
+void /* PRIVATE */
 png_write_pHYs(png_structp png_ptr, png_uint_32 x_pixels_per_unit,
    png_uint_32 y_pixels_per_unit,
    int unit_type)
@@ -1469,7 +1469,7 @@
 /* Write the tIME chunk.  Use either png_convert_from_struct_tm()
  * or png_convert_from_time_t(), or fill in the structure yourself.
  */
-void
+void /* PRIVATE */
 png_write_tIME(png_structp png_ptr, png_timep mod_time)
 {
 #ifdef PNG_USE_LOCAL_ARRAYS
@@ -1498,7 +1498,7 @@
 #endif
 
 /* initializes the row writing capability of libpng */
-void
+void /* PRIVATE */
 png_write_start_row(png_structp png_ptr)
 {
 #ifdef PNG_USE_LOCAL_ARRAYS
@@ -1592,7 +1592,7 @@
 }
 
 /* Internal use only.  Called when finished processing a row of data. */
-void
+void /* PRIVATE */
 png_write_finish_row(png_structp png_ptr)
 {
 #ifdef PNG_USE_LOCAL_ARRAYS
@@ -1706,7 +1706,7 @@
  * sp will always be >= dp, so we should never overwrite anything.
  * See the default: case for the easiest code to understand.
  */
-void
+void /* PRIVATE */
 png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass)
 {
 #ifdef PNG_USE_LOCAL_ARRAYS
@@ -1877,7 +1877,7 @@
 #define PNG_HISHIFT 10
 #define PNG_LOMASK ((png_uint_32)0xffffL)
 #define PNG_HIMASK ((png_uint_32)(~PNG_LOMASK >> PNG_HISHIFT))
-void
+void /* PRIVATE */
 png_write_find_filter(png_structp png_ptr, png_row_infop row_info)
 {
    png_bytep prev_row, best_row, row_buf;
@@ -2489,7 +2489,7 @@
 
 
 /* Do the actual writing of a previously filtered row. */
-void
+void /* PRIVATE */
 png_write_filtered_row(png_structp png_ptr, png_bytep filtered_row)
 {
    png_debug(1, "in png_write_filtered_row\n");
diff --git a/scripts/makefile.beos b/scripts/makefile.beos
index 34250b1..a007939 100644
--- a/scripts/makefile.beos
+++ b/scripts/makefile.beos
@@ -31,7 +31,7 @@
 # read libpng.txt or png.h to see why PNGMAJ is 2.  You should not
 # have to change it.
 PNGMAJ = 2
-PNGMIN = 1.0.6j
+PNGMIN = 1.0.7beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # where make install puts libpng.a, libpng.so*, and png.h
diff --git a/scripts/makefile.dec b/scripts/makefile.dec
index 429353b..5c3d423 100644
--- a/scripts/makefile.dec
+++ b/scripts/makefile.dec
@@ -14,7 +14,7 @@
 # read libpng.txt or png.h to see why PNGMAJ is 2.  You should not
 # have to change it.
 PNGMAJ = 2
-PNGMIN = 1.0.6j
+PNGMIN = 1.0.7beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 CC=cc
diff --git a/scripts/makefile.gcmmx b/scripts/makefile.gcmmx
index e1468f8..cb20398 100644
--- a/scripts/makefile.gcmmx
+++ b/scripts/makefile.gcmmx
@@ -34,7 +34,7 @@
 # read libpng.txt or png.h to see why PNGMAJ is 2.  You should not
 # have to change it.
 PNGMAJ = 2
-PNGMIN = 1.0.6j
+PNGMIN = 1.0.7beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 INCPATH=$(prefix)/include
diff --git a/scripts/makefile.linux b/scripts/makefile.linux
index 37d875f..6aaaecc 100644
--- a/scripts/makefile.linux
+++ b/scripts/makefile.linux
@@ -34,7 +34,7 @@
 # read libpng.txt or png.h to see why PNGMAJ is 2.  You should not
 # have to change it.
 PNGMAJ = 2
-PNGMIN = 1.0.6j
+PNGMIN = 1.0.7beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 INCPATH=$(prefix)/include
diff --git a/scripts/makefile.sco b/scripts/makefile.sco
index 0d69b2d..43b4712 100644
--- a/scripts/makefile.sco
+++ b/scripts/makefile.sco
@@ -25,7 +25,7 @@
 # read libpng.txt or png.h to see why PNGMAJ is 2.  You should not
 # have to change it.
 PNGMAJ = 2
-PNGMIN = 1.0.6j
+PNGMIN = 1.0.7beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 INCPATH=$(prefix)/include
diff --git a/scripts/makefile.sggcc b/scripts/makefile.sggcc
index 90bafdc..7a15823 100644
--- a/scripts/makefile.sggcc
+++ b/scripts/makefile.sggcc
@@ -19,8 +19,8 @@
 LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -lm
 LDSHARED=gcc -shared
 
-VER=1.0.6j
-LIBS=libpng.so.1.0.6j
+VER=1.0.7beta11
+LIBS=libpng.so.1.0.7beta11
 SHAREDLIB=libpng.so
 libdir=$(prefix)/lib32
 
diff --git a/scripts/makefile.solaris b/scripts/makefile.solaris
index b35cd92..c52abcf 100644
--- a/scripts/makefile.solaris
+++ b/scripts/makefile.solaris
@@ -31,7 +31,7 @@
 # read libpng.txt or png.h to see why PNGMAJ is 2.  You should not
 # have to change it.
 PNGMAJ = 2
-PNGMIN = 1.0.6j
+PNGMIN = 1.0.7beta11
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 INCPATH=$(prefix)/include
diff --git a/scripts/pngdef.pas b/scripts/pngdef.pas
index 8363ac4..2991c54 100644
--- a/scripts/pngdef.pas
+++ b/scripts/pngdef.pas
@@ -3,7 +3,7 @@
 interface
 
 const
-  PNG_LIBPNG_VER_STRING = '1.0.6j';
+  PNG_LIBPNG_VER_STRING = '1.0.7beta11';
   PNG_LIBPNG_VER        =  10007;
 
 type