From 8069aeb88e236cec3360782984a5fe4a092c5077 Mon Sep 17 00:00:00 2001 From: Glenn Randers-Pehrson Date: Tue, 16 Mar 2010 08:07:22 -0500 Subject: [PATCH] [devel] Regenerated Makefile.in and configure; relocated libpng.def to scripts/symbols.def, added scripts/checksym.* --- Makefile.in | 20 +++- configure | 120 ++++++++++++++++++++--- scripts/checksym.awk | 152 ++++++++++++++++++++++++++++++ scripts/checksym.dfn | 102 ++++++++++++++++++++ libpng.def => scripts/symbols.def | 27 ++++-- 5 files changed, 394 insertions(+), 27 deletions(-) create mode 100644 scripts/checksym.awk create mode 100644 scripts/checksym.dfn rename libpng.def => scripts/symbols.def (90%) diff --git a/Makefile.in b/Makefile.in index 147d38231..632b6f215 100644 --- a/Makefile.in +++ b/Makefile.in @@ -329,13 +329,14 @@ EXTRA_DIST = \ ${srcdir}/contrib/pngsuite/* \ ${srcdir}/contrib/visupng/* \ $(TESTS) \ - CMakeLists.txt example.c libpng.def libpng-@PNGLIB_VERSION@.txt + CMakeLists.txt example.c libpng-@PNGLIB_VERSION@.txt CLEANFILES = dfn.c dfn?.out pngout.png libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@.pc \ - libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@-config libpng.vers libpng.sym + libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@-config libpng.vers libpng.sym \ + libpng.def checksym.lst symbols.new symbols.chk MAINTAINERCLEANFILES = Makefile.in aclocal.m4 config.guess config.h.in \ -config.sub configure depcomp install-sh ltmain.sh missing libpng.def +config.sub configure depcomp install-sh ltmain.sh missing SYMBOL_CFLAGS = -DPNGLIB_LIBNAME='PNG@PNGLIB_MAJOR@@PNGLIB_MINOR@_0'\ -DPNGLIB_VERSION='@PNGLIB_VERSION@'\ @@ -1215,15 +1216,24 @@ $(PNGLIB_BASENAME)-config: libpng-config libpng.sym: scripts/sym.dfn png.h pngconf.h libpng.vers: scripts/vers.dfn png.h pngconf.h libpng.def: scripts/def.dfn png.h pngconf.h +checksym.lst: scripts/checksym.dfn png.h pngconf.h -libpng.sym libpng.vers libpng.def: - $(RM) -f $@ dfn.c dfn?.out +libpng.sym libpng.vers libpng.def checksym.lst: + $(RM) $@ dfn.c dfn?.out echo '#include "$<"' >dfn.c $(CPP) @LIBPNG_DEFINES@ $(CPPFLAGS) $(SYMBOL_CFLAGS) dfn.c >dfn1.out $(SED) -n -e 's|^.*PNG_DEFN_MAGIC-\(.*\)-PNG_DEFN_END.*$$|\1|p' dfn1.out >dfn2.out $(SED) -e 's| *@@@ *||' -e 's| *$$||' dfn2.out >dfn3.out + $(RM) dfn.c dfn[12].out mv dfn3.out $@ +symbols.chk: scripts/checksym.awk scripts/symbols.def checksym.lst + $(RM) $@ symbols.new + $(AWK) -f $^ >&2 + mv symbols.new $@ + +dist: symbols.chk + test: check # install the .../include headers as links to the new ones diff --git a/configure b/configure index e31b820b4..4be10344b 100755 --- a/configure +++ b/configure @@ -4605,6 +4605,98 @@ else SED="$ac_cv_prog_SED" fi +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}awk", so it can be a program name with args. +set dummy ${ac_tool_prefix}awk; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_AWK+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AWK="${ac_tool_prefix}awk" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AWK"; then + ac_ct_AWK=$AWK + # Extract the first word of "awk", so it can be a program name with args. +set dummy awk; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_AWK+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AWK"; then + ac_cv_prog_ac_ct_AWK="$ac_ct_AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AWK="awk" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AWK=$ac_cv_prog_ac_ct_AWK +if test -n "$ac_ct_AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AWK" >&5 +$as_echo "$ac_ct_AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AWK" = x; then + AWK=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AWK=$ac_ct_AWK + fi +else + AWK="$ac_cv_prog_AWK" +fi + enable_win32_dll=yes case $host in @@ -5150,13 +5242,13 @@ if test "${lt_cv_nm_interface+set}" = set; then : else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:5153: $ac_compile\"" >&5) + (eval echo "\"\$as_me:5245: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 - (eval echo "\"\$as_me:5156: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval echo "\"\$as_me:5248: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 - (eval echo "\"\$as_me:5159: output\"" >&5) + (eval echo "\"\$as_me:5251: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" @@ -6348,7 +6440,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 6351 "configure"' > conftest.$ac_ext + echo '#line 6443 "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -7735,11 +7827,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7738: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7830: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:7742: \$? = $ac_status" >&5 + echo "$as_me:7834: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -8074,11 +8166,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8077: $lt_compile\"" >&5) + (eval echo "\"\$as_me:8169: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:8081: \$? = $ac_status" >&5 + echo "$as_me:8173: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -8179,11 +8271,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8182: $lt_compile\"" >&5) + (eval echo "\"\$as_me:8274: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:8186: \$? = $ac_status" >&5 + echo "$as_me:8278: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -8234,11 +8326,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8237: $lt_compile\"" >&5) + (eval echo "\"\$as_me:8329: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:8241: \$? = $ac_status" >&5 + echo "$as_me:8333: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -10601,7 +10693,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 10604 "configure" +#line 10696 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -10697,7 +10789,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 10700 "configure" +#line 10792 "configure" #include "confdefs.h" #if HAVE_DLFCN_H diff --git a/scripts/checksym.awk b/scripts/checksym.awk new file mode 100644 index 000000000..1d2755a12 --- /dev/null +++ b/scripts/checksym.awk @@ -0,0 +1,152 @@ +#!/bin/awk +# Check a list of symbols against the master definition +# (official) list. Arguments: +# +# awk -f checksym.awk official-def list-to-check +# +# Output is a file in the current directory called 'symbols.new', +# stdout holds error messages. Error code indicates success or +# failure. +# +# NOTE: this is a pure, old fashioned, awk script. It will +# work with any awk + +BEGIN{ + err=0 + master="" # master file + official[1] = "" # defined symbols from master file + symbol[1] = "" # defined symbols from png.h + removed[1] = "" # removed symbols from png.h + lasto = 0 # last ordinal value from png.h + mastero = 0 # highest ordinal in master file + symbolo = 0 # highest ordinal in png.h +} + +# Read existing definitions from the master file (the first +# file on the command line.) This must be a def file and it +# has definition lines (others are ignored) of the form: +# +# symbol @ordinal +# +master == "" { + master = FILENAME; +} +FILENAME==master && NF==2 && $2~/^@/ && $1!~/^;/ { + o=0+substr($2,2) + if (o >0) { + if (official[o] == "") { + official[o] = $1 + if (o > mastero) mastero = o + next + } else + print master ": duplicated symbol:", official[o] ":", $0 + } else + print master ": bad export line format:", $0 + err = 1 +} +FILENAME==master { + next +} + +# Read new definitions, these are free form but the lines must +# just be symbol definitions. Lines will be commented out for +# 'removed' symbols, introduced in png.h using PNG_REMOVED rather +# than PNG_EXPORT. Use checksym.dfn to generate the input file. +# +# symbol ordinal # two fields, exported symbol +# ; symbol ordinal # three fields, removed symbol +# ; ordinal # two fields, the last ordinal +NF==2 && $1 == ";" && $2 ~ /^[1-9][0-9]*$/ { # last ordinal + o = 0+$2 + if (lasto == 0 || lasto == o) + lasto=o + else { + print "png.h: duplicated last ordinal:", lasto, o + err = 1 + } + next +} +NF==3 && $1 == ";" && $3 ~ /^[1-9][0-9]*$/ { # removed symbol + o = 0+$3 + if (removed[o] == "" || removed[o] == $2) { + removed[o] = $2 + if (o > symbolo) symbolo = o + } else { + print "png.h: duplicated removed symbol", + o ": '" removed[o] "' != '" $2 "'" + err = 1 + } + next +} +NF==2 && $2 ~ /^[1-9][0-9]*$/ { # exported symbol + o = 0+$2 + if (symbol[o] == "" || symbol[o] == $1) { + symbol[o] = $1 + if (o > symbolo) symbolo = o + } else { + print "png.h: duplicated symbol", + o ": '" symbol[o] "' != '" $1 "'" + err = 1 + } +} +{ + next # skip all other lines +} + +# At the end check for symbols marked as both duplicated and removed +END{ + if (symbolo > lasto) { + print "highest symbol ordinal in png.h,", + symbolo ", exceeds last ordinal from png.h", lasto + err = 1 + } + if (mastero > lasto) { + print "highest symbol ordinal in", master ",", + mastero ", exceeds last ordinal from png.h", lasto + err = 1 + } + missing = 0 + for (o=1; o<=lasto; ++o) { + stop=0 + if (symbol[o] == "" && removed[o] == "") { + if (missing == 0) missing = o + if (o < lasto) continue + stop=1 + } + if (missing != 0) { + if (o-1 > missing) + print "png.h: missing symbol definitions:", missing "-" o-1 + else + print "png.h: missing symbol definition:", missing + missing = 0 + err = 1 + } + if (stop == 1) break; # lasto is missing + if (symbol[o] != "" && removed[o] != "") { + print "png.h: symbol", o, + "both exported as '" symbol[o] "' and removed as '" removed[o] "'" + err = 1 + } else if (symbol[o] != official[o]) { + # either master symbol not there or it changed + err = 1 + if (symbol[o] == "") + print "png.h: removed symbol", o, + "'" symbol[o] "' exported as '" official[o] "' in", master + else if (official[o] == "") + print "png.h: exported symbol", o, "'" symbol[o] "' not present in", + master + else + print "png.h: exported symbol", o, + "'" symbol[o] "' exists as '" official[o] "' in", master + } + + # Finally generate symbols.new + if (symbol[o] != "") + print " " symbol[o], "@" o > "symbols.new" + } + + if (err != 0) { + print "*** A new list is in symbols.new ***" + exit 1 + } +} diff --git a/scripts/checksym.dfn b/scripts/checksym.dfn new file mode 100644 index 000000000..4ae2b22ef --- /dev/null +++ b/scripts/checksym.dfn @@ -0,0 +1,102 @@ + +/* pngwin.dfn - find all exported symbols + * + * Last changed in libpng 1.5.0 [March 16, 2010] + * Copyright (c) 1998-2010 Glenn Randers-Pehrson + * + * This code is released under the libpng license. + * For conditions of distribution and use, see the disclaimer + * and license in png.h + */ + +#define PNG_EXPORT(type, name, args, attributes, ordinal)\ + PNG_DEFN_MAGIC-name ordinal-PNG_DEFN_END +#define PNG_REMOVED(type, name, args, attributes, ordinal)\ + PNG_DEFN_MAGIC-; name ordinal-PNG_DEFN_END +#define PNG_EXPORT_LAST_ORDINAL(ordinal)\ + PNG_DEFN_MAGIC-; ordinal-PNG_DEFN_END + +/* Turn on everything that we can turn on: */ +#define PNG_BENIGN_ERRORS_SUPPORTED +#define PNG_CONVERT_tIME_SUPPORTED +#define PNG_EASY_ACCESS_SUPPORTED +#define PNG_ERROR_NUMBERS_SUPPORTED +#undef PNG_FIXED_POINT_SUPPORTED /* Chose between floating and fixed */ +#define PNG_FLOATING_POINT_SUPPORTED +#define PNG_NO_USE_READ_MACROS /* Exposes no APIs if defined */ +#define PNG_GET_INT_32_SUPPORTED +#define PNG_HANDLE_AS_UNKNOWN_SUPPORTED +#define PNG_INCH_CONVERSIONS /* NOTE: no SUPPORTED! */ +#define PNG_INFO_IMAGE_SUPPORTED +#define PNG_IO_STATE_SUPPORTED +#define PNG_MNG_FEATURES_SUPPORTED +#define PNG_PROGRESSIVE_READ_SUPPORTED +#define PNG_READ_16_TO_8_SUPPORTED +#define PNG_READ_BACKGROUND_SUPPORTED +#define PNG_READ_BGR_SUPPORTED +#define PNG_READ_COMPOSITE_NODIV_SUPPORTED +#define PNG_READ_DITHER_SUPPORTED +#define PNG_READ_EXPAND_SUPPORTED +#define PNG_READ_FILLER_SUPPORTED +#define PNG_READ_GAMMA_SUPPORTED +#define PNG_READ_GRAY_TO_RGB_SUPPORTED +#define PNG_READ_INTERLACING_SUPPORTED +#define PNG_READ_INVERT_ALPHA_SUPPORTED +#define PNG_READ_INVERT_SUPPORTED +#define PNG_READ_PACKSWAP_SUPPORTED +#define PNG_READ_PACK_SUPPORTED +#define PNG_READ_RGB_TO_GRAY_SUPPORTED +#define PNG_READ_SHIFT_SUPPORTED +#define PNG_READ_STRIP_ALPHA_SUPPORTED +#define PNG_READ_SWAP_ALPHA_SUPPORTED +#define PNG_READ_SWAP_SUPPORTED +#define PNG_READ_USER_TRANSFORM_SUPPORTED +#define PNG_SEQUENTIAL_READ_SUPPORTED +#define PNG_SETJMP_SUPPORTED +#define PNG_SET_USER_LIMITS_SUPPORTED +#define PNG_STDIO_SUPPORTED +#define PNG_TEXT_SUPPORTED +#define PNG_TIME_RFC1123_SUPPORTED +#define PNG_UNKNOWN_CHUNKS_SUPPORTED +#define PNG_USER_CHUNKS_SUPPORTED +#define PNG_USER_MEM_SUPPORTED +#define PNG_NO_ERROR_TEXT /* NOTE: no supported */ +#define PNG_WRITE_BGR_SUPPORTED +#define PNG_WRITE_FILLER_SUPPORTED +#define PNG_WRITE_FLUSH_SUPPORTED +#define PNG_WRITE_INTERLACING_SUPPORTED +#define PNG_WRITE_INVERT_ALPHA_SUPPORTED +#define PNG_WRITE_INVERT_SUPPORTED +#define PNG_WRITE_PACKSWAP_SUPPORTED +#define PNG_WRITE_PACK_SUPPORTED +#define PNG_WRITE_SHIFT_SUPPORTED +#define PNG_WRITE_SWAP_ALPHA_SUPPORTED +#define PNG_WRITE_SWAP_SUPPORTED +#define PNG_WRITE_USER_TRANSFORM_SUPPORTED +#define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED +#define PNG_bKGD_SUPPORTED +#define PNG_cHRM_SUPPORTED +#define PNG_gAMA_SUPPORTED +#define PNG_hIST_SUPPORTED +#define PNG_iCCP_SUPPORTED +#define PNG_iTXt_SUPPORTED +#define PNG_oFFs_SUPPORTED +#define PNG_pCAL_SUPPORTED +#define PNG_pHYs_SUPPORTED +#define PNG_sBIT_SUPPORTED +#define PNG_sCAL_SUPPORTED +#define PNG_sPLT_SUPPORTED +#define PNG_sRGB_SUPPORTED +#define PNG_tIME_SUPPORTED +#define PNG_tRNS_SUPPORTED + +#include "../png.h" + +/* Now repeat, but toggle everything that has a #else clause */ +#define PNG_FIXED_POINT_SUPPORTED +#undef PNG_FLOATING_POINT_SUPPORTED +#define PNG_NO_FLOATING_POINT_SUPPORTED +#undef PNG_NO_ERROR_TEXT + +#undef PNG_H +#include "../png.h" diff --git a/libpng.def b/scripts/symbols.def similarity index 90% rename from libpng.def rename to scripts/symbols.def index f7e37f5ec..61ad6cc03 100644 --- a/libpng.def +++ b/scripts/symbols.def @@ -1,14 +1,8 @@ ;-------------------------------------------------------------- -; LIBPNG module definition file for Windows, WindowsCE and OS/2 -; On OS/2 uncomment lines preceded by ;0S2 +; LIBPNG symbol list as a WIn32 DEF file +; Contains all the symbols that can be exported from libpng ;-------------------------------------------------------------- - -; If you give the library an explicit name one or other files -; may need modifying to support the new name on one or more -; systems. LIBRARY -;OS2 DESCRIPTION "PNG image compression library" -;OS2 CODE PRELOAD MOVEABLE DISCARDABLE EXPORTS ;Version 1.5.0beta15 @@ -60,6 +54,7 @@ EXPORTS png_set_invert_mono @46 png_set_background @47 png_set_strip_16 @48 + png_set_dither @49 png_set_gamma @50 png_set_flush @51 png_write_flush @52 @@ -114,8 +109,12 @@ EXPORTS png_free_default @101 png_error @102 png_chunk_error @103 + png_err @104 png_warning @105 png_chunk_warning @106 + png_benign_error @107 + png_chunk_benign_error @108 + png_set_benign_errors @109 png_get_valid @110 png_get_rowbytes @111 png_get_rows @112 @@ -175,7 +174,9 @@ EXPORTS png_get_tRNS @166 png_set_tRNS @167 png_get_sCAL @168 + png_get_sCAL_s @169 png_set_sCAL @170 + png_set_sCAL_s @171 png_set_keep_unknown_chunks @172 png_handle_as_unknown @173 png_set_unknown_chunks @174 @@ -189,6 +190,7 @@ EXPORTS png_get_header_version @182 png_get_libpng_ver @183 png_permit_mng_features @184 + png_set_strip_error_numbers @185 png_set_user_limits @186 png_get_user_width_max @187 png_get_user_height_max @188 @@ -196,8 +198,17 @@ EXPORTS png_get_chunk_cache_max @190 png_set_chunk_malloc_max @191 png_get_chunk_malloc_max @192 + png_get_pixels_per_inch @193 + png_get_x_pixels_per_inch @194 + png_get_y_pixels_per_inch @195 + png_get_x_offset_inches @196 + png_get_y_offset_inches @197 + png_get_pHYs_dpi @198 png_get_io_state @199 png_get_io_chunk_name @200 + png_get_uint_32 @201 + png_get_uint_16 @202 + png_get_int_32 @203 png_get_uint_31 @204 png_save_uint_32 @205 png_save_int_32 @206