diff options
-rw-r--r-- | package/jpeg/Makefile | 4 | ||||
-rw-r--r-- | package/libpng/Makefile | 4 | ||||
-rw-r--r-- | package/libpng/patches/libpng-1.5.12-apng.patch (renamed from package/libpng/patches/001-apng.patch) | 1371 | ||||
-rw-r--r-- | package/libpng/patches/patch-ltmain_sh | 11 | ||||
-rw-r--r-- | package/pango/Makefile | 8 | ||||
-rw-r--r-- | package/pango/patches/patch-configure | 346 | ||||
-rw-r--r-- | package/pango/patches/patch-ltmain_sh | 11 | ||||
-rw-r--r-- | package/pango/patches/patch-tests_runtests_sh | 8 |
8 files changed, 699 insertions, 1064 deletions
diff --git a/package/jpeg/Makefile b/package/jpeg/Makefile index d91f59ea4..6354371b7 100644 --- a/package/jpeg/Makefile +++ b/package/jpeg/Makefile @@ -4,9 +4,9 @@ include ${TOPDIR}/rules.mk PKG_NAME:= jpeg -PKG_VERSION:= 8c +PKG_VERSION:= 8d PKG_RELEASE:= 1 -PKG_MD5SUM:= a2c10c04f396a9ce72894beb18b4e1f9 +PKG_MD5SUM:= 52654eb3b2e60c35731ea8fc87f1bd29 PKG_DESCR:= The Independent JPEG Groups JPEG runtime library PKG_SECTION:= libs PKG_URL:= http://www.ijg.org/ diff --git a/package/libpng/Makefile b/package/libpng/Makefile index f1d420899..e69db0ba0 100644 --- a/package/libpng/Makefile +++ b/package/libpng/Makefile @@ -4,9 +4,9 @@ include ${TOPDIR}/rules.mk PKG_NAME:= libpng -PKG_VERSION:= 1.2.44 +PKG_VERSION:= 1.5.12 PKG_RELEASE:= 1 -PKG_MD5SUM:= 89b62f8daaeeab1342e307d6d1411ff1 +PKG_MD5SUM:= 8ea7f60347a306c5faf70b977fa80e28 PKG_DESCR:= A library for reading/writing PNG images PKG_SECTION:= libs PKG_DEPENDS:= zlib diff --git a/package/libpng/patches/001-apng.patch b/package/libpng/patches/libpng-1.5.12-apng.patch index 3af4a0547..fcfbc998f 100644 --- a/package/libpng/patches/001-apng.patch +++ b/package/libpng/patches/libpng-1.5.12-apng.patch @@ -1,61 +1,159 @@ -diff -Nur libpng-1.2.44.orig/png.c libpng-1.2.44/png.c ---- libpng-1.2.44.orig/png.c 2010-06-26 02:31:14.000000000 +0200 -+++ libpng-1.2.44/png.c 2010-07-08 21:21:33.745873377 +0200 -@@ -56,6 +56,11 @@ - PNG_tIME; - PNG_tRNS; - PNG_zTXt; +diff -Naru libpng-1.5.12.org/png.h libpng-1.5.12/png.h +--- libpng-1.5.12.org/png.h 2012-07-16 19:01:19.000000000 +0900 ++++ libpng-1.5.12/png.h 2012-07-16 19:01:20.000000000 +0900 +@@ -439,6 +439,10 @@ + # include "pnglibconf.h" + #endif + ++#define PNG_APNG_SUPPORTED ++#define PNG_READ_APNG_SUPPORTED ++#define PNG_WRITE_APNG_SUPPORTED ++ + #ifndef PNG_VERSION_INFO_ONLY + # ifndef PNG_BUILDING_SYMBOL_TABLE + /* +@@ -546,6 +550,17 @@ + * See pngconf.h for base types that vary by machine/system + */ + +#ifdef PNG_APNG_SUPPORTED -+PNG_acTL; -+PNG_fcTL; -+PNG_fdAT; ++/* dispose_op flags from inside fcTL */ ++#define PNG_DISPOSE_OP_NONE 0x00 ++#define PNG_DISPOSE_OP_BACKGROUND 0x01 ++#define PNG_DISPOSE_OP_PREVIOUS 0x02 ++ ++/* blend_op flags from inside fcTL */ ++#define PNG_BLEND_OP_SOURCE 0x00 ++#define PNG_BLEND_OP_OVER 0x01 ++#endif /* PNG_APNG_SUPPORTED */ ++ + /* This triggers a compiler error in png.c, if png.c and png.h + * do not agree upon the version number. + */ +@@ -829,6 +844,10 @@ + #define PNG_INFO_sPLT 0x2000 /* ESR, 1.0.6 */ + #define PNG_INFO_sCAL 0x4000 /* ESR, 1.0.6 */ + #define PNG_INFO_IDAT 0x8000 /* ESR, 1.0.6 */ ++#ifdef PNG_APNG_SUPPORTED ++#define PNG_INFO_acTL 0x10000 ++#define PNG_INFO_fcTL 0x20000 +#endif - #ifdef PNG_READ_SUPPORTED - /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ -diff -Nur libpng-1.2.44.orig/pngconf.h libpng-1.2.44/pngconf.h ---- libpng-1.2.44.orig/pngconf.h 2010-06-26 02:31:14.000000000 +0200 -+++ libpng-1.2.44/pngconf.h 2010-07-08 21:21:33.906029659 +0200 -@@ -951,6 +951,10 @@ - # define PNG_NO_READ_tEXt - # define PNG_NO_READ_zTXt - #endif -+#ifndef PNG_NO_READ_APNG -+# define PNG_READ_APNG_SUPPORTED -+# define PNG_APNG_SUPPORTED + /* This is used for the transformation routines, as some of them + * change these values for the row. It also should enable using +@@ -874,6 +893,10 @@ + #ifdef PNG_PROGRESSIVE_READ_SUPPORTED + typedef PNG_CALLBACK(void, *png_progressive_info_ptr, (png_structp, png_infop)); + typedef PNG_CALLBACK(void, *png_progressive_end_ptr, (png_structp, png_infop)); ++#ifdef PNG_APNG_SUPPORTED ++typedef PNG_CALLBACK(void, *png_progressive_frame_ptr, (png_structp, ++ png_uint_32)); +#endif - #ifndef PNG_NO_READ_bKGD - # define PNG_READ_bKGD_SUPPORTED - # define PNG_bKGD_SUPPORTED -@@ -1177,6 +1181,14 @@ - # define PNG_TEXT_SUPPORTED - # endif + + /* The following callback receives png_uint_32 row_number, int pass for the + * png_bytep data of the row. When transforming an interlaced image the +@@ -2650,6 +2673,75 @@ + int allowed)); #endif -+#ifndef PNG_NO_WRITE_APNG -+# ifndef PNG_WRITE_APNG_SUPPORTED -+# define PNG_WRITE_APNG_SUPPORTED -+# endif -+# ifndef PNG_APNG_SUPPORTED -+# define PNG_APNG_SUPPORTED -+# endif -+#endif - #ifdef PNG_WRITE_tIME_SUPPORTED - # ifndef PNG_NO_CONVERT_tIME -diff -Nur libpng-1.2.44.orig/pngget.c libpng-1.2.44/pngget.c ---- libpng-1.2.44.orig/pngget.c 2010-06-26 02:31:14.000000000 +0200 -+++ libpng-1.2.44/pngget.c 2010-07-08 21:21:33.676118515 +0200 -@@ -842,6 +842,167 @@ - } ++#ifdef PNG_APNG_SUPPORTED ++PNG_EXPORT(235, png_uint_32, png_get_acTL, (png_structp png_ptr, ++ png_infop info_ptr, png_uint_32 *num_frames, png_uint_32 *num_plays)); ++ ++PNG_EXPORT(236, png_uint_32, png_set_acTL, (png_structp png_ptr, ++ png_infop info_ptr, png_uint_32 num_frames, png_uint_32 num_plays)); ++ ++PNG_EXPORT(237, png_uint_32, png_get_num_frames, (png_structp png_ptr, ++ png_infop info_ptr)); ++ ++PNG_EXPORT(238, png_uint_32, png_get_num_plays, (png_structp png_ptr, ++ png_infop info_ptr)); ++ ++PNG_EXPORT(239, png_uint_32, png_get_next_frame_fcTL, ++ (png_structp png_ptr, png_infop info_ptr, png_uint_32 *width, ++ png_uint_32 *height, png_uint_32 *x_offset, png_uint_32 *y_offset, ++ png_uint_16 *delay_num, png_uint_16 *delay_den, png_byte *dispose_op, ++ png_byte *blend_op)); ++ ++PNG_EXPORT(240, png_uint_32, png_set_next_frame_fcTL, ++ (png_structp png_ptr, png_infop info_ptr, png_uint_32 width, ++ png_uint_32 height, png_uint_32 x_offset, png_uint_32 y_offset, ++ png_uint_16 delay_num, png_uint_16 delay_den, png_byte dispose_op, ++ png_byte blend_op)); ++ ++PNG_EXPORT(241, png_uint_32, png_get_next_frame_width, ++ (png_structp png_ptr, png_infop info_ptr)); ++PNG_EXPORT(242, png_uint_32, png_get_next_frame_height, ++ (png_structp png_ptr, png_infop info_ptr)); ++PNG_EXPORT(243, png_uint_32, png_get_next_frame_x_offset, ++ (png_structp png_ptr, png_infop info_ptr)); ++PNG_EXPORT(244, png_uint_32, png_get_next_frame_y_offset, ++ (png_structp png_ptr, png_infop info_ptr)); ++PNG_EXPORT(245, png_uint_16, png_get_next_frame_delay_num, ++ (png_structp png_ptr, png_infop info_ptr)); ++PNG_EXPORT(246, png_uint_16, png_get_next_frame_delay_den, ++ (png_structp png_ptr, png_infop info_ptr)); ++PNG_EXPORT(247, png_byte, png_get_next_frame_dispose_op, ++ (png_structp png_ptr, png_infop info_ptr)); ++PNG_EXPORT(248, png_byte, png_get_next_frame_blend_op, ++ (png_structp png_ptr, png_infop info_ptr)); ++PNG_EXPORT(249, png_byte, png_get_first_frame_is_hidden, ++ (png_structp png_ptr, png_infop info_ptr)); ++PNG_EXPORT(250, png_uint_32, png_set_first_frame_is_hidden, ++ (png_structp png_ptr, png_infop info_ptr, png_byte is_hidden)); ++ ++#ifdef PNG_READ_APNG_SUPPORTED ++PNG_EXPORT(251, void, png_read_frame_head, (png_structp png_ptr, ++ png_infop info_ptr)); ++#ifdef PNG_PROGRESSIVE_READ_SUPPORTED ++PNG_EXPORT(252, void, png_set_progressive_frame_fn, (png_structp png_ptr, ++ png_progressive_frame_ptr frame_info_fn, ++ png_progressive_frame_ptr frame_end_fn)); ++#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ ++#endif /* PNG_READ_APNG_SUPPORTED */ ++ ++#ifdef PNG_WRITE_APNG_SUPPORTED ++PNG_EXPORT(253, void, png_write_frame_head, (png_structp png_ptr, ++ png_infop info_ptr, png_bytepp row_pointers, ++ png_uint_32 width, png_uint_32 height, ++ png_uint_32 x_offset, png_uint_32 y_offset, ++ png_uint_16 delay_num, png_uint_16 delay_den, png_byte dispose_op, ++ png_byte blend_op)); ++ ++PNG_EXPORT(254, void, png_write_frame_tail, (png_structp png_ptr, ++ png_infop info_ptr)); ++#endif /* PNG_WRITE_APNG_SUPPORTED */ ++#endif /* PNG_APNG_SUPPORTED */ ++ + /* Maintainer: Put new public prototypes here ^, in libpng.3, and project + * defs + */ +@@ -2659,7 +2751,11 @@ + * scripts/symbols.def as well. + */ + #ifdef PNG_EXPORT_LAST_ORDINAL ++#ifdef PNG_APNG_SUPPORTED ++ PNG_EXPORT_LAST_ORDINAL(254); ++#else + PNG_EXPORT_LAST_ORDINAL(234); ++#endif /* PNG_APNG_SUPPORTED */ #endif + #ifdef __cplusplus +diff -Naru libpng-1.5.12.org/pngget.c libpng-1.5.12/pngget.c +--- libpng-1.5.12.org/pngget.c 2012-07-16 19:01:19.000000000 +0900 ++++ libpng-1.5.12/pngget.c 2012-07-16 19:01:20.000000000 +0900 +@@ -1121,4 +1121,166 @@ + } + #endif /* ?PNG_IO_STATE_SUPPORTED */ + +#ifdef PNG_APNG_SUPPORTED +png_uint_32 PNGAPI +png_get_acTL(png_structp png_ptr, png_infop info_ptr, + png_uint_32 *num_frames, png_uint_32 *num_plays) +{ + png_debug1(1, "in %s retrieval function", "acTL"); -+ ++ + if (png_ptr != NULL && info_ptr != NULL && + (info_ptr->valid & PNG_INFO_acTL) && + num_frames != NULL && num_plays != NULL) @@ -64,7 +162,7 @@ diff -Nur libpng-1.2.44.orig/pngget.c libpng-1.2.44/pngget.c + *num_plays = info_ptr->num_plays; + return (1); + } -+ ++ + return (0); +} + @@ -72,7 +170,7 @@ diff -Nur libpng-1.2.44.orig/pngget.c libpng-1.2.44/pngget.c +png_get_num_frames(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_get_num_frames()"); -+ ++ + if (png_ptr != NULL && info_ptr != NULL) + return (info_ptr->num_frames); + return (0); @@ -82,7 +180,7 @@ diff -Nur libpng-1.2.44.orig/pngget.c libpng-1.2.44/pngget.c +png_get_num_plays(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_get_num_plays()"); -+ ++ + if (png_ptr != NULL && info_ptr != NULL) + return (info_ptr->num_plays); + return (0); @@ -96,11 +194,11 @@ diff -Nur libpng-1.2.44.orig/pngget.c libpng-1.2.44/pngget.c + png_byte *dispose_op, png_byte *blend_op) +{ + png_debug1(1, "in %s retrieval function", "fcTL"); -+ ++ + if (png_ptr != NULL && info_ptr != NULL && + (info_ptr->valid & PNG_INFO_fcTL) && -+ width != NULL && height != NULL && -+ x_offset != NULL && x_offset != NULL && ++ width != NULL && height != NULL && ++ x_offset != NULL && x_offset != NULL && + delay_num != NULL && delay_den != NULL && + dispose_op != NULL && blend_op != NULL) + { @@ -114,7 +212,7 @@ diff -Nur libpng-1.2.44.orig/pngget.c libpng-1.2.44/pngget.c + *blend_op = info_ptr->next_frame_blend_op; + return (1); + } -+ ++ + return (0); +} + @@ -122,7 +220,7 @@ diff -Nur libpng-1.2.44.orig/pngget.c libpng-1.2.44/pngget.c +png_get_next_frame_width(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_get_next_frame_width()"); -+ ++ + if (png_ptr != NULL && info_ptr != NULL) + return (info_ptr->next_frame_width); + return (0); @@ -132,7 +230,7 @@ diff -Nur libpng-1.2.44.orig/pngget.c libpng-1.2.44/pngget.c +png_get_next_frame_height(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_get_next_frame_height()"); -+ ++ + if (png_ptr != NULL && info_ptr != NULL) + return (info_ptr->next_frame_height); + return (0); @@ -142,7 +240,7 @@ diff -Nur libpng-1.2.44.orig/pngget.c libpng-1.2.44/pngget.c +png_get_next_frame_x_offset(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_get_next_frame_x_offset()"); -+ ++ + if (png_ptr != NULL && info_ptr != NULL) + return (info_ptr->next_frame_x_offset); + return (0); @@ -152,7 +250,7 @@ diff -Nur libpng-1.2.44.orig/pngget.c libpng-1.2.44/pngget.c +png_get_next_frame_y_offset(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_get_next_frame_y_offset()"); -+ ++ + if (png_ptr != NULL && info_ptr != NULL) + return (info_ptr->next_frame_y_offset); + return (0); @@ -162,7 +260,7 @@ diff -Nur libpng-1.2.44.orig/pngget.c libpng-1.2.44/pngget.c +png_get_next_frame_delay_num(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_get_next_frame_delay_num()"); -+ ++ + if (png_ptr != NULL && info_ptr != NULL) + return (info_ptr->next_frame_delay_num); + return (0); @@ -172,7 +270,7 @@ diff -Nur libpng-1.2.44.orig/pngget.c libpng-1.2.44/pngget.c +png_get_next_frame_delay_den(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_get_next_frame_delay_den()"); -+ ++ + if (png_ptr != NULL && info_ptr != NULL) + return (info_ptr->next_frame_delay_den); + return (0); @@ -182,7 +280,7 @@ diff -Nur libpng-1.2.44.orig/pngget.c libpng-1.2.44/pngget.c +png_get_next_frame_dispose_op(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_get_next_frame_dispose_op()"); -+ ++ + if (png_ptr != NULL && info_ptr != NULL) + return (info_ptr->next_frame_dispose_op); + return (0); @@ -192,7 +290,7 @@ diff -Nur libpng-1.2.44.orig/pngget.c libpng-1.2.44/pngget.c +png_get_next_frame_blend_op(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_get_next_frame_blend_op()"); -+ ++ + if (png_ptr != NULL && info_ptr != NULL) + return (info_ptr->next_frame_blend_op); + return (0); @@ -202,22 +300,21 @@ diff -Nur libpng-1.2.44.orig/pngget.c libpng-1.2.44/pngget.c +png_get_first_frame_is_hidden(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_first_frame_is_hidden()"); -+ ++ + if (png_ptr != NULL) + return (png_byte)(png_ptr->apng_flags & PNG_FIRST_FRAME_HIDDEN); -+ ++ ++ PNG_UNUSED(info_ptr) ++ + return 0; +} +#endif /* PNG_APNG_SUPPORTED */ -+ - #ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED - png_uint_32 PNGAPI - png_get_unknown_chunks(png_structp png_ptr, png_infop info_ptr, -diff -Nur libpng-1.2.44.orig/png.h libpng-1.2.44/png.h ---- libpng-1.2.44.orig/png.h 2010-06-26 02:31:14.000000000 +0200 -+++ libpng-1.2.44/png.h 2010-07-08 21:21:33.796029652 +0200 -@@ -1041,6 +1041,19 @@ - png_fixed_point int_y_blue PNG_DEPSTRUCT; + #endif /* PNG_READ_SUPPORTED || PNG_WRITE_SUPPORTED */ +diff -Naru libpng-1.5.12.org/pnginfo.h libpng-1.5.12/pnginfo.h +--- libpng-1.5.12.org/pnginfo.h 2012-07-16 19:01:19.000000000 +0900 ++++ libpng-1.5.12/pnginfo.h 2012-07-16 19:01:20.000000000 +0900 +@@ -265,5 +265,18 @@ + png_bytepp row_pointers; /* the image bits */ #endif +#ifdef PNG_APNG_SUPPORTED @@ -233,353 +330,100 @@ diff -Nur libpng-1.2.44.orig/png.h libpng-1.2.44/png.h + png_byte next_frame_blend_op; +#endif + - } png_info; - - typedef png_info FAR * png_infop; -@@ -1142,6 +1155,10 @@ - #define PNG_INFO_sPLT 0x2000 /* ESR, 1.0.6 */ - #define PNG_INFO_sCAL 0x4000 /* ESR, 1.0.6 */ - #define PNG_INFO_IDAT 0x8000L /* ESR, 1.0.6 */ -+#ifdef PNG_APNG_SUPPORTED -+#define PNG_INFO_acTL 0x10000L -+#define PNG_INFO_fcTL 0x20000L -+#endif - - /* This is used for the transformation routines, as some of them - * change these values for the row. It also should enable using -@@ -1182,6 +1199,10 @@ - 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)); -+#ifdef PNG_APNG_SUPPORTED -+typedef void (PNGAPI *png_progressive_frame_ptr) PNGARG((png_structp, -+ png_uint_32)); -+#endif - #endif - - #if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ -@@ -1527,6 +1548,39 @@ - png_uint_32 user_height_max PNG_DEPSTRUCT; - #endif - -+#ifdef PNG_APNG_SUPPORTED -+ png_uint_32 apng_flags; -+ png_uint_32 next_seq_num; /* next fcTL/fdAT chunk sequence number */ -+ png_uint_32 first_frame_width; -+ png_uint_32 first_frame_height; -+ -+#ifdef PNG_READ_APNG_SUPPORTED -+ png_uint_32 num_frames_read; /* incremented after all image data of */ -+ /* a frame is read */ -+#ifdef PNG_PROGRESSIVE_READ_SUPPORTED -+ png_progressive_frame_ptr frame_info_fn; /* frame info read callback */ -+ png_progressive_frame_ptr frame_end_fn; /* frame data read callback */ -+#endif -+#endif -+ -+#ifdef PNG_WRITE_APNG_SUPPORTED -+ png_uint_32 num_frames_to_write; -+ png_uint_32 num_frames_written; -+#endif -+ -+/* For png_struct.apng_flags: */ -+#define PNG_FIRST_FRAME_HIDDEN 0x0001 -+ -+/* dispose_op flags from inside fcTL */ -+#define PNG_DISPOSE_OP_NONE 0x00 -+#define PNG_DISPOSE_OP_BACKGROUND 0x01 -+#define PNG_DISPOSE_OP_PREVIOUS 0x02 -+ -+/* blend_op flags from inside fcTL */ -+#define PNG_BLEND_OP_SOURCE 0x00 -+#define PNG_BLEND_OP_OVER 0x01 -+#endif /* PNG_APNG_SUPPORTED */ -+ - /* New member added in libpng-1.0.25 and 1.2.17 */ - #ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED - /* Storage for unknown chunk that the library doesn't recognize. */ -@@ -1861,6 +1915,18 @@ - extern PNG_EXPORT(void,png_write_image) PNGARG((png_structp png_ptr, - png_bytepp image)); - -+#ifdef PNG_WRITE_APNG_SUPPORTED -+extern PNG_EXPORT (void,png_write_frame_head) PNGARG((png_structp png_ptr, -+ png_infop png_info, png_bytepp row_pointers, -+ png_uint_32 width, png_uint_32 height, -+ png_uint_32 x_offset, png_uint_32 y_offset, -+ png_uint_16 delay_num, png_uint_16 delay_den, png_byte dispose_op, -+ png_byte blend_op)); -+ -+extern PNG_EXPORT (void,png_write_frame_tail) PNGARG((png_structp png_ptr, -+ png_infop png_info)); -+#endif -+ - /* Writes the end of the PNG file. */ - extern PNG_EXPORT(void,png_write_end) PNGARG((png_structp png_ptr, - png_infop info_ptr)); -@@ -2114,6 +2180,11 @@ - png_voidp progressive_ptr, - png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn, - png_progressive_end_ptr end_fn)); -+#ifdef PNG_READ_APNG_SUPPORTED -+extern PNG_EXPORT(void,png_set_progressive_frame_fn) PNGARG((png_structp png_ptr, -+ png_progressive_frame_ptr frame_info_fn, -+ png_progressive_frame_ptr frame_end_fn)); -+#endif - - /* Returns the user pointer associated with the push read functions */ - extern PNG_EXPORT(png_voidp,png_get_progressive_ptr) -@@ -2554,6 +2625,59 @@ - #endif - #endif /* PNG_sCAL_SUPPORTED || PNG_WRITE_sCAL_SUPPORTED */ - -+#ifdef PNG_APNG_SUPPORTED -+extern PNG_EXPORT(png_uint_32,png_get_acTL) PNGARG((png_structp png_ptr, -+ png_infop info_ptr, png_uint_32 *num_frames, png_uint_32 *num_plays)); -+extern PNG_EXPORT(png_uint_32,png_set_acTL) PNGARG((png_structp png_ptr, -+ png_infop info_ptr, png_uint_32 num_frames, png_uint_32 num_plays)); -+extern PNG_EXPORT(png_uint_32,png_get_num_frames) PNGARG((png_structp png_ptr, -+ png_infop info_ptr)); -+extern PNG_EXPORT(png_uint_32,png_get_num_plays) -+ PNGARG((png_structp png_ptr, png_infop info_ptr)); -+ -+extern PNG_EXPORT(png_uint_32,png_get_next_frame_fcTL) -+ PNGARG((png_structp png_ptr, png_infop info_ptr, png_uint_32 *width, -+ png_uint_32 *height, png_uint_32 *x_offset, png_uint_32 *y_offset, -+ png_uint_16 *delay_num, png_uint_16 *delay_den, png_byte *dispose_op, -+ png_byte *blend_op)); -+extern PNG_EXPORT(png_uint_32,png_set_next_frame_fcTL) -+ PNGARG((png_structp png_ptr, png_infop info_ptr, png_uint_32 width, -+ png_uint_32 height, png_uint_32 x_offset, png_uint_32 y_offset, -+ png_uint_16 delay_num, png_uint_16 delay_den, png_byte dispose_op, -+ png_byte blend_op)); -+extern PNG_EXPORT(void,png_ensure_fcTL_is_valid) -+ PNGARG((png_structp png_ptr, -+ png_uint_32 width, png_uint_32 height, -+ png_uint_32 x_offset, png_uint_32 y_offset, -+ png_uint_16 delay_num, png_uint_16 delay_den, -+ png_byte dispose_op, png_byte blend_op)); -+extern PNG_EXPORT(png_uint_32,png_get_next_frame_width) -+ PNGARG((png_structp png_ptr, png_infop info_ptr)); -+extern PNG_EXPORT(png_uint_32,png_get_next_frame_height) -+ PNGARG((png_structp png_ptr, png_infop info_ptr)); -+extern PNG_EXPORT(png_uint_32,png_get_next_frame_x_offset) -+ PNGARG((png_structp png_ptr, png_infop info_ptr)); -+extern PNG_EXPORT(png_uint_32,png_get_next_frame_y_offset) -+ PNGARG((png_structp png_ptr, png_infop info_ptr)); -+extern PNG_EXPORT(png_uint_16,png_get_next_frame_delay_num) -+ PNGARG((png_structp png_ptr, png_infop info_ptr)); -+extern PNG_EXPORT(png_uint_16,png_get_next_frame_delay_den) -+ PNGARG((png_structp png_ptr, png_infop info_ptr)); -+extern PNG_EXPORT(png_byte,png_get_next_frame_dispose_op) -+ PNGARG((png_structp png_ptr, png_infop info_ptr)); -+extern PNG_EXPORT(png_byte,png_get_next_frame_blend_op) -+ PNGARG((png_structp png_ptr, png_infop info_ptr)); -+extern PNG_EXPORT(png_byte,png_get_first_frame_is_hidden) -+ PNGARG((png_structp png_ptr, png_infop info_ptr)); -+extern PNG_EXPORT(png_uint_32,png_set_first_frame_is_hidden) -+ PNGARG((png_structp png_ptr, png_infop info_ptr, png_byte is_hidden)); -+#endif /* PNG_APNG_SUPPORTED */ -+ -+#ifdef PNG_READ_APNG_SUPPORTED -+extern PNG_EXPORT(void,png_read_frame_head) PNGARG((png_structp png_ptr, -+ png_infop info_ptr)); -+#endif -+ - #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED - /* Provide a list of chunks and how they are to be handled, if the built-in - handling or default unknown chunk handling is not desired. Any chunks not -@@ -2918,6 +3042,10 @@ - #define PNG_BACKGROUND_IS_GRAY 0x800 - #define PNG_HAVE_PNG_SIGNATURE 0x1000 - #define PNG_HAVE_CHUNK_AFTER_IDAT 0x2000 /* Have another chunk after IDAT */ -+#ifdef PNG_APNG_SUPPORTED -+#define PNG_HAVE_acTL 0x4000 -+#define PNG_HAVE_fcTL 0x8000L -+#endif - - /* Flags for the transformations the PNG library does on the image data */ - #define PNG_BGR 0x0001 -@@ -3060,6 +3188,11 @@ - #define PNG_tIME png_byte png_tIME[5] = {116, 73, 77, 69, '\0'} - #define PNG_tRNS png_byte png_tRNS[5] = {116, 82, 78, 83, '\0'} - #define PNG_zTXt png_byte png_zTXt[5] = {122, 84, 88, 116, '\0'} -+#ifdef PNG_APNG_SUPPORTED -+#define PNG_acTL png_byte png_acTL[5] = { 97, 99, 84, 76, '\0'} -+#define PNG_fcTL png_byte png_fcTL[5] = {102, 99, 84, 76, '\0'} -+#define PNG_fdAT png_byte png_fdAT[5] = {102, 100, 65, 84, '\0'} -+#endif - - #ifdef PNG_USE_GLOBAL_ARRAYS - PNG_EXPORT_VAR (png_byte FARDATA) png_IHDR[5]; -@@ -3083,6 +3216,11 @@ - PNG_EXPORT_VAR (png_byte FARDATA) png_tIME[5]; - PNG_EXPORT_VAR (png_byte FARDATA) png_tRNS[5]; - PNG_EXPORT_VAR (png_byte FARDATA) png_zTXt[5]; -+#ifdef PNG_APNG_SUPPORTED -+PNG_EXPORT_VAR (png_byte FARDATA) png_acTL[5]; -+PNG_EXPORT_VAR (png_byte FARDATA) png_fcTL[5]; -+PNG_EXPORT_VAR (png_byte FARDATA) png_fdAT[5]; -+#endif - #endif /* PNG_USE_GLOBAL_ARRAYS */ - - #if defined(PNG_1_0_X) || defined (PNG_1_2_X) -@@ -3365,6 +3503,17 @@ - #endif - #endif - -+#ifdef PNG_WRITE_APNG_SUPPORTED -+PNG_EXTERN void png_write_acTL PNGARG((png_structp png_ptr, -+ png_uint_32 num_frames, png_uint_32 num_plays)); -+ -+PNG_EXTERN void png_write_fcTL PNGARG((png_structp png_ptr, -+ png_uint_32 width, png_uint_32 height, -+ png_uint_32 x_offset, png_uint_32 y_offset, -+ png_uint_16 delay_num, png_uint_16 delay_den, -+ png_byte dispose_op, png_byte blend_op)); -+#endif -+ - /* Called when finished processing a row of data */ - PNG_EXTERN void png_write_finish_row PNGARG((png_structp png_ptr)) PNG_PRIVATE; + }; + #endif /* PNGINFO_H */ +diff -Naru libpng-1.5.12.org/pngpread.c libpng-1.5.12/pngpread.c +--- libpng-1.5.12.org/pngpread.c 2012-07-16 19:01:19.000000000 +0900 ++++ libpng-1.5.12/pngpread.c 2012-07-16 19:01:20.000000000 +0900 +@@ -215,6 +215,109 @@ -@@ -3417,6 +3566,20 @@ - PNG_EXTERN void png_read_transform_info PNGARG((png_structp png_ptr, - png_infop info_ptr)) PNG_PRIVATE; + chunk_name = png_ptr->chunk_name; +#ifdef PNG_READ_APNG_SUPPORTED -+/* Private, reset some things to become ready for reading next frame */ -+PNG_EXTERN void png_read_reset PNGARG((png_structp png_ptr)); -+PNG_EXTERN void png_read_reinit PNGARG((png_structp png_ptr, -+ png_infop info_ptr)); -+PNG_EXTERN void png_progressive_read_reset PNGARG((png_structp png_ptr)); -+#endif -+#ifdef PNG_WRITE_APNG_SUPPORTED -+/* Private, reset some things to become ready for writing next frame */ -+PNG_EXTERN void png_write_reset PNGARG((png_structp png_ptr)); -+PNG_EXTERN void png_write_reinit PNGARG((png_structp png_ptr, -+ png_infop info_ptr, png_uint_32 width, png_uint_32 height)); -+#endif -+ - /* These are the functions that do the transformations */ - #ifdef PNG_READ_FILLER_SUPPORTED - PNG_EXTERN void png_do_read_filler PNGARG((png_row_infop row_info, -@@ -3640,6 +3803,18 @@ - png_uint_32 length)) PNG_PRIVATE; - #endif - -+#ifdef PNG_READ_APNG_SUPPORTED -+PNG_EXTERN void png_handle_acTL PNGARG((png_structp png_ptr, png_infop info_ptr, -+ png_uint_32 length)); -+PNG_EXTERN void png_handle_fcTL PNGARG((png_structp png_ptr, png_infop info_ptr, -+ png_uint_32 length)); -+PNG_EXTERN void png_have_info PNGARG((png_structp png_ptr, png_infop info_ptr)); -+PNG_EXTERN void png_handle_fdAT PNGARG((png_structp png_ptr, png_infop info_ptr, -+ png_uint_32 length)); -+PNG_EXTERN void png_ensure_sequence_number PNGARG((png_structp png_ptr, -+ png_uint_32 length)); -+#endif -+ - PNG_EXTERN void png_handle_unknown PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 length)) PNG_PRIVATE; - -diff -Nur libpng-1.2.44.orig/pngpread.c libpng-1.2.44/pngpread.c ---- libpng-1.2.44.orig/pngpread.c 2010-06-26 02:31:14.000000000 +0200 -+++ libpng-1.2.44/pngpread.c 2010-07-08 21:21:33.947205863 +0200 -@@ -206,6 +206,11 @@ - #ifdef PNG_READ_zTXt_SUPPORTED - PNG_CONST PNG_zTXt; - #endif -+#ifdef PNG_READ_APNG_SUPPORTED -+ PNG_CONST PNG_acTL; -+ PNG_CONST PNG_fcTL; -+ PNG_CONST PNG_fdAT; -+#endif - #endif /* PNG_USE_LOCAL_ARRAYS */ - - /* First we make sure we have enough data for the 4 byte chunk name -@@ -232,6 +237,103 @@ - png_ptr->mode |= PNG_HAVE_CHUNK_HEADER; - } - -+#ifdef PNG_READ_APNG_SUPPORTED -+ if (png_ptr->num_frames_read > 0 && ++ if (png_ptr->num_frames_read > 0 && + png_ptr->num_frames_read < info_ptr->num_frames) + { -+ if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) ++ if (chunk_name == png_IDAT) + { + /* Discard trailing IDATs for the first frame */ + if (png_ptr->mode & PNG_HAVE_fcTL || png_ptr->num_frames_read > 1) + png_error(png_ptr, "out of place IDAT"); -+ ++ + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } ++ + png_push_crc_skip(png_ptr, png_ptr->push_length); + png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER; + return; + } -+ else if (!png_memcmp(png_ptr->chunk_name, png_fdAT, 4)) ++ else if (chunk_name == png_fdAT) + { + if (png_ptr->buffer_size < 4) + { + png_push_save_buffer(png_ptr); + return; + } ++ + png_ensure_sequence_number(png_ptr, 4); -+ ++ + if (!(png_ptr->mode & PNG_HAVE_fcTL)) + { + /* Discard trailing fdATs for frames other than the first */ + if (png_ptr->num_frames_read < 2) + png_error(png_ptr, "out of place fdAT"); -+ ++ + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } ++ + png_push_crc_skip(png_ptr, png_ptr->push_length); + png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER; + return; + } ++ + else + { + /* frame data follows */ + png_ptr->idat_size = png_ptr->push_length - 4; + png_ptr->mode |= PNG_HAVE_IDAT; + png_ptr->process_mode = PNG_READ_IDAT_MODE; -+ ++ + return; + } + } -+ else if(!png_memcmp(png_ptr->chunk_name, png_fcTL, 4)) ++ ++ else if (chunk_name == png_fcTL) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } -+ ++ + png_read_reset(png_ptr); + png_ptr->mode &= ~PNG_HAVE_fcTL; -+ ++ + png_handle_fcTL(png_ptr, info_ptr, png_ptr->push_length); -+ ++ + if (!(png_ptr->mode & PNG_HAVE_fcTL)) + png_error(png_ptr, "missing required fcTL chunk"); -+ ++ + png_read_reinit(png_ptr, info_ptr); + png_progressive_read_reset(png_ptr); -+ ++ + if (png_ptr->frame_info_fn != NULL) + (*(png_ptr->frame_info_fn))(png_ptr, png_ptr->num_frames_read); -+ ++ + png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER; -+ ++ + return; + } ++ + else + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) @@ -593,91 +437,72 @@ diff -Nur libpng-1.2.44.orig/pngpread.c libpng-1.2.44/pngpread.c + png_ptr->mode &= ~PNG_HAVE_CHUNK_HEADER; + return; + } -+ ++ + return; + } +#endif /* PNG_READ_APNG_SUPPORTED */ + - if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) - if (png_ptr->mode & PNG_AFTER_IDAT) - png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT; -@@ -327,6 +429,9 @@ - png_error(png_ptr, "Too many IDAT's found"); + if (chunk_name == png_IDAT) + { + /* This is here above the if/else case statement below because if the +@@ -318,6 +421,10 @@ + png_benign_error(png_ptr, "Too many IDATs found"); } +#ifdef PNG_READ_APNG_SUPPORTED + png_have_info(png_ptr, info_ptr); +#endif ++ png_ptr->idat_size = png_ptr->push_length; png_ptr->mode |= PNG_HAVE_IDAT; png_ptr->process_mode = PNG_READ_IDAT_MODE; -@@ -559,6 +664,38 @@ - } +@@ -551,6 +658,28 @@ #endif + +#ifdef PNG_READ_APNG_SUPPORTED -+ else if (!png_memcmp(png_ptr->chunk_name, png_acTL, 4)) ++ else if (chunk_name == png_acTL) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } -+ + png_handle_acTL(png_ptr, info_ptr, png_ptr->push_length); + } -+ else if (!png_memcmp(png_ptr->chunk_name, png_fcTL, 4)) -+ { -+ if (png_ptr->push_length + 4 > png_ptr->buffer_size) -+ { -+ png_push_save_buffer(png_ptr); -+ return; -+ } + -+ png_handle_fcTL(png_ptr, info_ptr, png_ptr->push_length); -+ } -+ else if (!png_memcmp(png_ptr->chunk_name, png_fdAT, 4)) ++ else if (chunk_name == png_fcTL) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } -+ -+ png_handle_fdAT(png_ptr, info_ptr, png_ptr->push_length); ++ png_handle_fcTL(png_ptr, info_ptr, png_ptr->push_length); + } +#endif /* PNG_READ_APNG_SUPPORTED */ ++ else { if (png_ptr->push_length + 4 > png_ptr->buffer_size) -@@ -738,13 +875,17 @@ - png_push_read_IDAT(png_structp png_ptr) - { - #ifdef PNG_USE_LOCAL_ARRAYS -- PNG_CONST PNG_IDAT; -+ PNG_IDAT; -+#ifdef PNG_READ_APNG_SUPPORTED -+ PNG_fdAT; -+ PNG_IEND; -+#endif - #endif - if (!(png_ptr->mode & PNG_HAVE_CHUNK_HEADER)) - { - png_byte chunk_length[4]; +@@ -758,7 +887,11 @@ + png_byte chunk_tag[4]; -- if (png_ptr->buffer_size < 8) + /* TODO: this code can be commoned up with the same code in push_read */ ++#ifdef PNG_READ_APNG_SUPPORTED + if (png_ptr->buffer_size < 12) ++#else + if (png_ptr->buffer_size < 8) ++#endif { png_push_save_buffer(png_ptr); return; -@@ -756,15 +897,62 @@ - png_crc_read(png_ptr, png_ptr->chunk_name, 4); +@@ -771,17 +904,64 @@ + png_ptr->chunk_name = PNG_CHUNK_FROM_STRING(chunk_tag); png_ptr->mode |= PNG_HAVE_CHUNK_HEADER; -- if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) +#ifdef PNG_READ_APNG_SUPPORTED -+ if (png_memcmp(png_ptr->chunk_name, (png_bytep)png_fdAT, 4) -+ && png_ptr->num_frames_read > 0) ++ if (png_ptr->chunk_name != png_fdAT && png_ptr->num_frames_read > 0) + { + if (png_ptr->flags & PNG_FLAG_ZLIB_FINISHED) + { @@ -689,7 +514,7 @@ diff -Nur libpng-1.2.44.orig/pngpread.c libpng-1.2.44/pngpread.c + } + else + { -+ if (!png_memcmp(png_ptr->chunk_name, png_IEND, 4)) ++ if (png_ptr->chunk_name == png_IEND) + png_error(png_ptr, "Not enough image data"); + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { @@ -703,22 +528,25 @@ diff -Nur libpng-1.2.44.orig/pngpread.c libpng-1.2.44/pngpread.c + return; + } + } -+ else ++ else +#endif -+ if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4) +#ifdef PNG_READ_APNG_SUPPORTED -+ && (png_ptr->num_frames_read == 0) ++ if (png_ptr->chunk_name != png_IDAT && png_ptr->num_frames_read == 0) ++#else + if (png_ptr->chunk_name != png_IDAT) +#endif -+ ) { png_ptr->process_mode = PNG_READ_CHUNK_MODE; + if (!(png_ptr->flags & PNG_FLAG_ZLIB_FINISHED)) png_error(png_ptr, "Not enough compressed data"); + +#ifdef PNG_READ_APNG_SUPPORTED + if (png_ptr->frame_end_fn != NULL) + (*(png_ptr->frame_end_fn))(png_ptr, png_ptr->num_frames_read); + png_ptr->num_frames_read++; +#endif ++ return; } @@ -732,9 +560,25 @@ diff -Nur libpng-1.2.44.orig/pngpread.c libpng-1.2.44/pngpread.c + } +#endif } + if (png_ptr->idat_size && png_ptr->save_buffer_size) - { -@@ -1763,6 +1951,17 @@ +@@ -859,6 +1039,15 @@ + if (!(buffer_length > 0) || buffer == NULL) + png_error(png_ptr, "No IDAT data (internal error)"); + ++#ifdef PNG_READ_APNG_SUPPORTED ++ /* If the app is not APNG-aware, decode only the first frame */ ++ if (!(png_ptr->apng_flags & PNG_APNG_APP) && png_ptr->num_frames_read > 0) ++ { ++ png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED; ++ return; ++ } ++#endif ++ + /* This routine must process all the data it has been given + * before returning, calling the row callback as required to + * handle the uncompressed results. +@@ -1304,6 +1493,18 @@ png_set_read_fn(png_ptr, progressive_ptr, png_push_fill_buffer); } @@ -746,29 +590,95 @@ diff -Nur libpng-1.2.44.orig/pngpread.c libpng-1.2.44/pngpread.c +{ + png_ptr->frame_info_fn = frame_info_fn; + png_ptr->frame_end_fn = frame_end_fn; ++ png_ptr->apng_flags |= PNG_APNG_APP; +} +#endif + png_voidp PNGAPI - png_get_progressive_ptr(png_structp png_ptr) + png_get_progressive_ptr(png_const_structp png_ptr) { -diff -Nur libpng-1.2.44.orig/pngread.c libpng-1.2.44/pngread.c ---- libpng-1.2.44.orig/pngread.c 2010-06-26 02:31:14.000000000 +0200 -+++ libpng-1.2.44/pngread.c 2010-07-08 21:21:33.676118515 +0200 -@@ -437,6 +437,11 @@ - #ifdef PNG_READ_zTXt_SUPPORTED - PNG_CONST PNG_zTXt; +diff -Naru libpng-1.5.12.org/pngpriv.h libpng-1.5.12/pngpriv.h +--- libpng-1.5.12.org/pngpriv.h 2012-07-16 19:01:19.000000000 +0900 ++++ libpng-1.5.12/pngpriv.h 2012-07-16 19:01:20.000000000 +0900 +@@ -467,6 +467,10 @@ + #define PNG_HAVE_PNG_SIGNATURE 0x1000 + #define PNG_HAVE_CHUNK_AFTER_IDAT 0x2000 /* Have another chunk after IDAT */ + #define PNG_HAVE_iCCP 0x4000 ++#ifdef PNG_APNG_SUPPORTED ++#define PNG_HAVE_acTL 0x8000 ++#define PNG_HAVE_fcTL 0x10000 ++#endif + + /* Flags for the transformations the PNG library does on the image data */ + #define PNG_BGR 0x0001 +@@ -662,6 +666,16 @@ + #define png_tRNS PNG_CHUNK(116, 82, 78, 83) + #define png_zTXt PNG_CHUNK(122, 84, 88, 116) + ++#ifdef PNG_APNG_SUPPORTED ++#define png_acTL PNG_CHUNK( 97, 99, 84, 76) ++#define png_fcTL PNG_CHUNK(102, 99, 84, 76) ++#define png_fdAT PNG_CHUNK(102, 100, 65, 84) ++ ++/* For png_struct.apng_flags: */ ++#define PNG_FIRST_FRAME_HIDDEN 0x0001 ++#define PNG_APNG_APP 0x0002 ++#endif ++ + /* The following will work on (signed char*) strings, whereas the get_uint_32 + * macro will fail on top-bit-set values because of the sign extension. + */ +@@ -1343,6 +1357,45 @@ + png_bytep row)); #endif + ++#ifdef PNG_APNG_SUPPORTED ++PNG_EXTERN void png_ensure_fcTL_is_valid PNGARG((png_structp png_ptr, ++ png_uint_32 width, png_uint_32 height, ++ png_uint_32 x_offset, png_uint_32 y_offset, ++ png_uint_16 delay_num, png_uint_16 delay_den, ++ png_byte dispose_op, png_byte blend_op)); ++ +#ifdef PNG_READ_APNG_SUPPORTED -+ PNG_CONST PNG_acTL; -+ PNG_CONST PNG_fcTL; -+ PNG_CONST PNG_fdAT; -+#endif - #endif /* PNG_USE_LOCAL_ARRAYS */ - png_uint_32 length = png_read_chunk_header(png_ptr); - PNG_CONST png_bytep chunk_name = png_ptr->chunk_name; -@@ -481,6 +486,9 @@ - !(png_ptr->mode & PNG_HAVE_PLTE)) ++PNG_EXTERN void png_handle_acTL PNGARG((png_structp png_ptr, png_infop info_ptr, ++ png_uint_32 length)); ++PNG_EXTERN void png_handle_fcTL PNGARG((png_structp png_ptr, png_infop info_ptr, ++ png_uint_32 length)); ++PNG_EXTERN void png_handle_fdAT PNGARG((png_structp png_ptr, png_infop info_ptr, ++ png_uint_32 length)); ++PNG_EXTERN void png_have_info PNGARG((png_structp png_ptr, png_infop info_ptr)); ++PNG_EXTERN void png_ensure_sequence_number PNGARG((png_structp png_ptr, ++ png_uint_32 length)); ++PNG_EXTERN void png_read_reset PNGARG((png_structp png_ptr)); ++PNG_EXTERN void png_read_reinit PNGARG((png_structp png_ptr, ++ png_infop info_ptr)); ++#ifdef PNG_PROGRESSIVE_READ_SUPPORTED ++PNG_EXTERN void png_progressive_read_reset PNGARG((png_structp png_ptr)); ++#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ ++#endif /* PNG_READ_APNG_SUPPORTED */ ++ ++#ifdef PNG_WRITE_APNG_SUPPORTED ++PNG_EXTERN void png_write_acTL PNGARG((png_structp png_ptr, ++ png_uint_32 num_frames, png_uint_32 num_plays)); ++PNG_EXTERN void png_write_fcTL PNGARG((png_structp png_ptr, ++ png_uint_32 width, png_uint_32 height, ++ png_uint_32 x_offset, png_uint_32 y_offset, ++ png_uint_16 delay_num, png_uint_16 delay_den, ++ png_byte dispose_op, png_byte blend_op)); ++PNG_EXTERN void png_write_reset PNGARG((png_structp png_ptr)); ++PNG_EXTERN void png_write_reinit PNGARG((png_structp png_ptr, ++ png_infop info_ptr, png_uint_32 width, png_uint_32 height)); ++#endif /* PNG_WRITE_APNG_SUPPORTED */ ++#endif /* PNG_APNG_SUPPORTED */ ++ + /* Added at libpng version 1.4.0 */ + #ifdef PNG_CHECK_cHRM_SUPPORTED + PNG_EXTERN int png_check_cHRM_fixed PNGARG((png_structp png_ptr, +diff -Naru libpng-1.5.12.org/pngread.c libpng-1.5.12/pngread.c +--- libpng-1.5.12.org/pngread.c 2012-07-16 19:01:19.000000000 +0900 ++++ libpng-1.5.12/pngread.c 2012-07-16 19:01:20.000000000 +0900 +@@ -240,6 +240,9 @@ + !(png_ptr->mode & PNG_HAVE_PLTE)) png_error(png_ptr, "Missing PLTE before IDAT"); +#ifdef PNG_READ_APNG_SUPPORTED @@ -777,18 +687,21 @@ diff -Nur libpng-1.2.44.orig/pngread.c libpng-1.2.44/pngread.c png_ptr->idat_size = length; png_ptr->mode |= PNG_HAVE_IDAT; break; -@@ -553,12 +561,97 @@ - else if (!png_memcmp(chunk_name, png_iTXt, 4)) +@@ -330,12 +333,90 @@ png_handle_iTXt(png_ptr, info_ptr, length); #endif + +#ifdef PNG_READ_APNG_SUPPORTED -+ else if (!png_memcmp(chunk_name, png_acTL, 4)) ++ else if (chunk_name == png_acTL) + png_handle_acTL(png_ptr, info_ptr, length); -+ else if (!png_memcmp(chunk_name, png_fcTL, 4)) ++ ++ else if (chunk_name == png_fcTL) + png_handle_fcTL(png_ptr, info_ptr, length); -+ else if (!png_memcmp(chunk_name, png_fdAT, 4)) ++ ++ else if (chunk_name == png_fdAT) + png_handle_fdAT(png_ptr, info_ptr, length); +#endif ++ else png_handle_unknown(png_ptr, info_ptr, length); } @@ -800,55 +713,45 @@ diff -Nur libpng-1.2.44.orig/pngread.c libpng-1.2.44/pngread.c +png_read_frame_head(png_structp png_ptr, png_infop info_ptr) +{ + png_byte have_chunk_after_DAT; /* after IDAT or after fdAT */ -+ ++ + png_debug(0, "Reading frame head"); -+ ++ + if (!(png_ptr->mode & PNG_HAVE_acTL)) + png_error(png_ptr, "attempt to png_read_frame_head() but " + "no acTL present"); -+ ++ + /* do nothing for the main IDAT */ + if (png_ptr->num_frames_read == 0) + return; -+ ++ + png_crc_finish(png_ptr, 0); /* CRC from last IDAT or fdAT chunk */ -+ ++ + png_read_reset(png_ptr); + png_ptr->mode &= ~PNG_HAVE_fcTL; -+ ++ + have_chunk_after_DAT = 0; + for (;;) + { -+#ifdef PNG_USE_LOCAL_ARRAYS -+ PNG_IDAT; -+ PNG_fdAT; -+ PNG_fcTL; -+#endif -+ png_byte chunk_length[4]; -+ png_uint_32 length; -+ -+ png_read_data(png_ptr, chunk_length, 4); -+ length = png_get_uint_31(png_ptr, chunk_length); -+ -+ png_reset_crc(png_ptr); -+ png_crc_read(png_ptr, png_ptr->chunk_name, 4); -+ -+ if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) ++ png_uint_32 length = png_read_chunk_header(png_ptr); ++ ++ if (png_ptr->chunk_name == png_IDAT) + { + /* discard trailing IDATs for the first frame */ + if (have_chunk_after_DAT || png_ptr->num_frames_read > 1) + png_error(png_ptr, "png_read_frame_head(): out of place IDAT"); + png_crc_finish(png_ptr, length); + } -+ else if (!png_memcmp(png_ptr->chunk_name, png_fcTL, 4)) ++ ++ else if (png_ptr->chunk_name == png_fcTL) + { + png_handle_fcTL(png_ptr, info_ptr, length); + have_chunk_after_DAT = 1; + } -+ else if (!png_memcmp(png_ptr->chunk_name, png_fdAT, 4)) ++ ++ else if (png_ptr->chunk_name == png_fdAT) + { + png_ensure_sequence_number(png_ptr, length); -+ ++ + /* discard trailing fdATs for frames other than the first */ + if (!have_chunk_after_DAT && png_ptr->num_frames_read > 1) + png_crc_finish(png_ptr, length - 4); @@ -856,7 +759,7 @@ diff -Nur libpng-1.2.44.orig/pngread.c libpng-1.2.44/pngread.c + { + png_ptr->idat_size = length - 4; + png_ptr->mode |= PNG_HAVE_IDAT; -+ ++ + break; + } + else @@ -875,61 +778,55 @@ diff -Nur libpng-1.2.44.orig/pngread.c libpng-1.2.44/pngread.c /* Optional call to update the users info_ptr structure */ void PNGAPI png_read_update_info(png_structp png_ptr, png_infop info_ptr) -@@ -599,6 +692,10 @@ - png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row) - { - PNG_CONST PNG_IDAT; -+#ifdef PNG_READ_APNG_SUPPORTED -+ PNG_CONST PNG_fdAT; -+ PNG_CONST PNG_IEND; -+#endif - PNG_CONST int png_pass_dsp_mask[7] = {0xff, 0x0f, 0xff, 0x33, 0xff, 0x55, - 0xff}; - PNG_CONST int png_pass_mask[7] = {0x80, 0x08, 0x88, 0x22, 0xaa, 0x55, 0xff}; -@@ -734,13 +831,39 @@ +@@ -537,6 +618,38 @@ { if (!(png_ptr->zstream.avail_in)) { -- while (!png_ptr->idat_size) ++#ifdef PNG_READ_APNG_SUPPORTED + png_uint_32 bytes_to_skip = 0; + + while (!png_ptr->idat_size || bytes_to_skip != 0) - { -- png_crc_finish(png_ptr, 0); ++ { + png_crc_finish(png_ptr, bytes_to_skip); + bytes_to_skip = 0; - - png_ptr->idat_size = png_read_chunk_header(png_ptr); -+#ifdef PNG_READ_APNG_SUPPORTED ++ ++ png_ptr->idat_size = png_read_chunk_header(png_ptr); + if (png_ptr->num_frames_read == 0) + { -+#endif - if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) - png_error(png_ptr, "Not enough image data"); -+#ifdef PNG_READ_APNG_SUPPORTED ++ if (png_ptr->chunk_name != png_IDAT) ++ png_error(png_ptr, "Not enough image data"); + } + else + { -+ if (!png_memcmp(png_ptr->chunk_name, png_IEND, 4)) ++ if (png_ptr->chunk_name == png_IEND) + png_error(png_ptr, "Not enough image data"); -+ if (png_memcmp(png_ptr->chunk_name, png_fdAT, 4)) ++ if (png_ptr->chunk_name != png_fdAT) + { + png_warning(png_ptr, "Skipped (ignored) a chunk " + "between APNG chunks"); + bytes_to_skip = png_ptr->idat_size; + continue; + } -+ ++ + png_ensure_sequence_number(png_ptr, png_ptr->idat_size); -+ ++ + png_ptr->idat_size -= 4; + } -+#endif ++ } ++#else + while (!png_ptr->idat_size) + { + png_crc_finish(png_ptr, 0); +@@ -545,6 +658,7 @@ + if (png_ptr->chunk_name != png_IDAT) + png_error(png_ptr, "Not enough image data"); } ++#endif png_ptr->zstream.avail_in = (uInt)png_ptr->zbuf_size; png_ptr->zstream.next_in = png_ptr->zbuf; -@@ -758,6 +881,9 @@ - png_error(png_ptr, "Extra compressed data"); + if (png_ptr->zbuf_size > png_ptr->idat_size) +@@ -563,6 +677,9 @@ + png_benign_error(png_ptr, "Extra compressed data"); png_ptr->mode |= PNG_AFTER_IDAT; png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED; +#ifdef PNG_READ_APNG_SUPPORTED @@ -937,50 +834,11 @@ diff -Nur libpng-1.2.44.orig/pngread.c libpng-1.2.44/pngread.c +#endif break; } - if (ret != Z_OK) -@@ -1015,6 +1141,11 @@ - #ifdef PNG_READ_zTXt_SUPPORTED - PNG_CONST PNG_zTXt; - #endif -+#ifdef PNG_READ_APNG_SUPPORTED -+ PNG_CONST PNG_acTL; -+ PNG_CONST PNG_fcTL; -+ PNG_CONST PNG_fdAT; -+#endif - #endif /* PNG_USE_LOCAL_ARRAYS */ - png_uint_32 length = png_read_chunk_header(png_ptr); - PNG_CONST png_bytep chunk_name = png_ptr->chunk_name; -@@ -1115,6 +1246,14 @@ - else if (!png_memcmp(chunk_name, png_iTXt, 4)) - png_handle_iTXt(png_ptr, info_ptr, length); - #endif -+#ifdef PNG_READ_APNG_SUPPORTED -+ else if (!png_memcmp(chunk_name, png_acTL, 4)) -+ png_handle_acTL(png_ptr, info_ptr, length); -+ else if (!png_memcmp(chunk_name, png_fcTL, 4)) -+ png_handle_fcTL(png_ptr, info_ptr, length); -+ else if (!png_memcmp(chunk_name, png_fdAT, 4)) -+ png_handle_fdAT(png_ptr, info_ptr, length); -+#endif - else - png_handle_unknown(png_ptr, info_ptr, length); - } while (!(png_ptr->mode & PNG_HAVE_IEND)); -diff -Nur libpng-1.2.44.orig/pngrtran.c libpng-1.2.44/pngrtran.c ---- libpng-1.2.44.orig/pngrtran.c 2010-06-26 02:31:14.000000000 +0200 -+++ libpng-1.2.44/pngrtran.c 2010-07-08 21:21:34.149609181 +0200 -@@ -1352,7 +1352,7 @@ - * pixels. This check added to libpng-1.2.19 - */ - #if (PNG_WARN_UNINITIALIZED_ROW==1) -- png_error(png_ptr, "Uninitialized row"); -+ png_warning(png_ptr, "Uninitialized row"); - #else - png_warning(png_ptr, "Uninitialized row"); - #endif -diff -Nur libpng-1.2.44.orig/pngrutil.c libpng-1.2.44/pngrutil.c ---- libpng-1.2.44.orig/pngrutil.c 2010-06-26 02:31:14.000000000 +0200 -+++ libpng-1.2.44/pngrutil.c 2010-07-08 21:21:34.045873588 +0200 -@@ -460,6 +460,11 @@ + +diff -Naru libpng-1.5.12.org/pngrutil.c libpng-1.5.12/pngrutil.c +--- libpng-1.5.12.org/pngrutil.c 2012-07-16 19:01:19.000000000 +0900 ++++ libpng-1.5.12/pngrutil.c 2012-07-16 19:01:20.000000000 +0900 +@@ -547,6 +547,11 @@ filter_type = buf[11]; interlace_type = buf[12]; @@ -992,7 +850,7 @@ diff -Nur libpng-1.2.44.orig/pngrutil.c libpng-1.2.44/pngrutil.c /* Set internal variables */ png_ptr->width = width; png_ptr->height = height; -@@ -2348,6 +2353,172 @@ +@@ -2614,6 +2619,179 @@ } #endif @@ -1004,7 +862,7 @@ diff -Nur libpng-1.2.44.orig/pngrutil.c libpng-1.2.44/pngrutil.c + png_uint_32 num_frames; + png_uint_32 num_plays; + png_uint_32 didSet; -+ ++ + png_debug(1, "in png_handle_acTL"); + + if (!(png_ptr->mode & PNG_HAVE_IHDR)) @@ -1029,13 +887,13 @@ diff -Nur libpng-1.2.44.orig/pngrutil.c libpng-1.2.44/pngrutil.c + png_crc_finish(png_ptr, length); + return; + } -+ ++ + png_crc_read(png_ptr, data, 8); + png_crc_finish(png_ptr, 0); -+ ++ + num_frames = png_get_uint_31(png_ptr, data); + num_plays = png_get_uint_31(png_ptr, data + 4); -+ ++ + /* the set function will do error checking on num_frames */ + didSet = png_set_acTL(png_ptr, info_ptr, num_frames, num_plays); + if(didSet) @@ -1098,24 +956,30 @@ diff -Nur libpng-1.2.44.orig/pngrutil.c libpng-1.2.44/pngrutil.c + blend_op = data[21]; + + if (png_ptr->num_frames_read == 0 && (x_offset != 0 || y_offset != 0)) -+ png_error(png_ptr, "fcTL for the first frame must have zero offset"); ++ { ++ png_warning(png_ptr, "fcTL for the first frame must have zero offset"); ++ return; ++ } + + if (info_ptr != NULL) + { + if (png_ptr->num_frames_read == 0 && + (width != info_ptr->width || height != info_ptr->height)) -+ png_error(png_ptr, "size in first frame's fcTL must match " ++ { ++ png_warning(png_ptr, "size in first frame's fcTL must match " + "the size in IHDR"); ++ return; ++ } + -+ /* the set function will do more error checking */ ++ /* The set function will do more error checking */ + png_set_next_frame_fcTL(png_ptr, info_ptr, width, height, + x_offset, y_offset, delay_num, delay_den, + dispose_op, blend_op); + + png_read_reinit(png_ptr, info_ptr); -+ } + -+ png_ptr->mode |= PNG_HAVE_fcTL; ++ png_ptr->mode |= PNG_HAVE_fcTL; ++ } +} + +void /* PRIVATE */ @@ -1132,14 +996,15 @@ diff -Nur libpng-1.2.44.orig/pngrutil.c libpng-1.2.44/pngrutil.c +png_handle_fdAT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) +{ + png_ensure_sequence_number(png_ptr, length); -+ -+ /* This function is only called from png_read_end(), png_read_info(), ++ ++ /* This function is only called from png_read_end(), png_read_info(), + * and png_push_read_chunk() which means that: + * - the user doesn't want to read this frame + * - or this is an out-of-place fdAT + * in either case it is safe to ignore the chunk with a warning */ + png_warning(png_ptr, "ignoring fdAT chunk"); + png_crc_finish(png_ptr, length - 4); ++ PNG_UNUSED(info_ptr) +} + +void /* PRIVATE */ @@ -1147,25 +1012,25 @@ diff -Nur libpng-1.2.44.orig/pngrutil.c libpng-1.2.44/pngrutil.c +{ + png_byte data[4]; + png_uint_32 sequence_number; -+ ++ + if (length < 4) + png_error(png_ptr, "invalid fcTL or fdAT chunk found"); -+ ++ + png_crc_read(png_ptr, data, 4); + sequence_number = png_get_uint_31(png_ptr, data); -+ ++ + if (sequence_number != png_ptr->next_seq_num) + png_error(png_ptr, "fcTL or fdAT chunk with out-of-order sequence " + "number found"); -+ ++ + png_ptr->next_seq_num++; +} +#endif /* PNG_READ_APNG_SUPPORTED */ + /* This function is called when we haven't found a handler for a - chunk. If there isn't a problem with the chunk itself (ie bad - chunk name, CRC, or a critical chunk), the chunk is silently ignored -@@ -3379,4 +3550,75 @@ + * chunk. If there isn't a problem with the chunk itself (ie bad + * chunk name, CRC, or a critical chunk), the chunk is silently ignored +@@ -4156,4 +4334,81 @@ png_ptr->flags |= PNG_FLAG_ROW_INIT; } @@ -1190,35 +1055,39 @@ diff -Nur libpng-1.2.44.orig/pngrutil.c libpng-1.2.44/pngrutil.c + png_ptr->width = info_ptr->next_frame_width; + png_ptr->height = info_ptr->next_frame_height; + png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth,png_ptr->width); ++ png_ptr->info_rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth, ++ png_ptr->width); + if (png_ptr->prev_row) -+ png_memset_check(png_ptr, png_ptr->prev_row, 0, png_ptr->rowbytes + 1); ++ png_memset(png_ptr->prev_row, 0, png_ptr->rowbytes + 1); +} + ++#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +/* same as png_read_reset() but for the progressive reader */ +void /* PRIVATE */ +png_progressive_read_reset(png_structp png_ptr) +{ -+#ifdef PNG_USE_LOCAL_ARRAYS -+ /* start of interlace block */ ++#ifdef PNG_READ_INTERLACING_SUPPORTED ++ /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */ ++ ++ /* Start of interlace block */ + const int FARDATA png_pass_start[] = {0, 4, 0, 2, 0, 1, 0}; + -+ /* offset to next interlace block */ ++ /* Offset to next interlace block */ + const int FARDATA png_pass_inc[] = {8, 8, 4, 4, 2, 2, 1}; + -+ /* start of interlace block in the y direction */ ++ /* Start of interlace block in the y direction */ + const int FARDATA png_pass_ystart[] = {0, 0, 4, 0, 2, 0, 1}; + -+ /* offset to next interlace block in the y direction */ ++ /* Offset to next interlace block in the y direction */ + const int FARDATA png_pass_yinc[] = {8, 8, 8, 4, 4, 2, 2}; -+#endif -+ ++ + if (png_ptr->interlaced) + { + if (!(png_ptr->transformations & PNG_INTERLACE)) + png_ptr->num_rows = (png_ptr->height + png_pass_yinc[0] - 1 - + png_pass_ystart[0]) / png_pass_yinc[0]; + else -+ png_ptr->num_rows = png_ptr->height; ++ png_ptr->num_rows = png_ptr->height; + + png_ptr->iwidth = (png_ptr->width + + png_pass_inc[png_ptr->pass] - 1 - @@ -1226,6 +1095,7 @@ diff -Nur libpng-1.2.44.orig/pngrutil.c libpng-1.2.44/pngrutil.c + png_pass_inc[png_ptr->pass]; + } + else ++#endif /* PNG_READ_INTERLACING_SUPPORTED */ + { + png_ptr->num_rows = png_ptr->height; + png_ptr->iwidth = png_ptr->width; @@ -1239,30 +1109,31 @@ diff -Nur libpng-1.2.44.orig/pngrutil.c libpng-1.2.44/pngrutil.c + png_ptr->zstream.avail_out = (uInt)PNG_ROWBYTES(png_ptr->pixel_depth, + png_ptr->iwidth) + 1; +} ++#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ +#endif /* PNG_READ_APNG_SUPPORTED */ #endif /* PNG_READ_SUPPORTED */ -diff -Nur libpng-1.2.44.orig/pngset.c libpng-1.2.44/pngset.c ---- libpng-1.2.44.orig/pngset.c 2010-06-26 02:31:14.000000000 +0200 -+++ libpng-1.2.44/pngset.c 2010-07-08 21:21:33.996027603 +0200 -@@ -266,6 +266,11 @@ - info_ptr->rowbytes = (png_size_t)0; +diff -Naru libpng-1.5.12.org/pngset.c libpng-1.5.12/pngset.c +--- libpng-1.5.12.org/pngset.c 2012-07-16 19:01:19.000000000 +0900 ++++ libpng-1.5.12/pngset.c 2012-07-16 19:01:20.000000000 +0900 +@@ -262,6 +262,11 @@ + info_ptr->rowbytes = 0; else info_ptr->rowbytes = PNG_ROWBYTES(info_ptr->pixel_depth, width); + +#ifdef PNG_APNG_SUPPORTED -+ /* for non-animated png. this may be overritten from an acTL chunk later */ ++ /* for non-animated png. this may be overwritten from an acTL chunk later */ + info_ptr->num_frames = 1; +#endif } #ifdef PNG_oFFs_SUPPORTED -@@ -960,6 +965,142 @@ +@@ -1022,6 +1027,147 @@ } #endif /* PNG_sPLT_SUPPORTED */ +#ifdef PNG_APNG_SUPPORTED +png_uint_32 PNGAPI -+png_set_acTL(png_structp png_ptr, png_infop info_ptr, ++png_set_acTL(png_structp png_ptr, png_infop info_ptr, + png_uint_32 num_frames, png_uint_32 num_plays) +{ + png_debug1(1, "in %s storage function", "acTL"); @@ -1293,18 +1164,18 @@ diff -Nur libpng-1.2.44.orig/pngset.c libpng-1.2.44/pngset.c + "> 2^31-1"); + return (0); + } -+ ++ + info_ptr->num_frames = num_frames; + info_ptr->num_plays = num_plays; -+ ++ + info_ptr->valid |= PNG_INFO_acTL; -+ ++ + return (1); +} + +/* delay_num and delay_den can hold any 16-bit values including zero */ +png_uint_32 PNGAPI -+png_set_next_frame_fcTL(png_structp png_ptr, png_infop info_ptr, ++png_set_next_frame_fcTL(png_structp png_ptr, png_infop info_ptr, + png_uint_32 width, png_uint_32 height, + png_uint_32 x_offset, png_uint_32 y_offset, + png_uint_16 delay_num, png_uint_16 delay_den, @@ -1319,10 +1190,10 @@ diff -Nur libpng-1.2.44.orig/pngset.c libpng-1.2.44/pngset.c + "ignored"); + return (0); + } -+ -+ png_ensure_fcTL_is_valid(png_ptr, width, height, x_offset, y_offset, ++ ++ png_ensure_fcTL_is_valid(png_ptr, width, height, x_offset, y_offset, + delay_num, delay_den, dispose_op, blend_op); -+ ++ + if (blend_op == PNG_BLEND_OP_OVER) + { + if (!(png_ptr->color_type & PNG_COLOR_MASK_ALPHA) && @@ -1342,20 +1213,20 @@ diff -Nur libpng-1.2.44.orig/pngset.c libpng-1.2.44/pngset.c + info_ptr->next_frame_delay_den = delay_den; + info_ptr->next_frame_dispose_op = dispose_op; + info_ptr->next_frame_blend_op = blend_op; -+ ++ + info_ptr->valid |= PNG_INFO_fcTL; -+ ++ + return (1); +} + -+void PNGAPI -+png_ensure_fcTL_is_valid(png_structp png_ptr, ++void /* PRIVATE */ ++png_ensure_fcTL_is_valid(png_structp png_ptr, + png_uint_32 width, png_uint_32 height, + png_uint_32 x_offset, png_uint_32 y_offset, + png_uint_16 delay_num, png_uint_16 delay_den, + png_byte dispose_op, png_byte blend_op) +{ -+ if (width + x_offset > png_ptr->first_frame_width || ++ if (width + x_offset > png_ptr->first_frame_width || + height + y_offset > png_ptr->first_frame_height) + png_error(png_ptr, "dimensions of a frame are greater than" + "the ones in IHDR"); @@ -1376,6 +1247,9 @@ diff -Nur libpng-1.2.44.orig/pngset.c libpng-1.2.44/pngset.c + if (blend_op != PNG_BLEND_OP_SOURCE && + blend_op != PNG_BLEND_OP_OVER) + png_error(png_ptr, "invalid blend_op in fcTL"); ++ ++ PNG_UNUSED(delay_num) ++ PNG_UNUSED(delay_den) +} + +png_uint_32 PNGAPI @@ -1383,15 +1257,17 @@ diff -Nur libpng-1.2.44.orig/pngset.c libpng-1.2.44/pngset.c + png_byte is_hidden) +{ + png_debug(1, "in png_first_frame_is_hidden()"); -+ ++ + if (png_ptr == NULL) + return 0; -+ -+ if(is_hidden) ++ ++ if (is_hidden) + png_ptr->apng_flags |= PNG_FIRST_FRAME_HIDDEN; + else + png_ptr->apng_flags &= ~PNG_FIRST_FRAME_HIDDEN; -+ ++ ++ PNG_UNUSED(info_ptr) ++ + return 1; +} +#endif /* PNG_APNG_SUPPORTED */ @@ -1399,10 +1275,166 @@ diff -Nur libpng-1.2.44.orig/pngset.c libpng-1.2.44/pngset.c #ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED void PNGAPI png_set_unknown_chunks(png_structp png_ptr, -diff -Nur libpng-1.2.44.orig/pngwrite.c libpng-1.2.44/pngwrite.c ---- libpng-1.2.44.orig/pngwrite.c 2010-06-26 02:31:14.000000000 +0200 -+++ libpng-1.2.44/pngwrite.c 2010-07-08 21:21:33.847089331 +0200 -@@ -57,6 +57,10 @@ +diff -Naru libpng-1.5.12.org/pngstruct.h libpng-1.5.12/pngstruct.h +--- libpng-1.5.12.org/pngstruct.h 2012-07-16 19:01:19.000000000 +0900 ++++ libpng-1.5.12/pngstruct.h 2012-07-16 19:01:20.000000000 +0900 +@@ -293,6 +293,27 @@ + png_byte filter_type; + #endif + ++#ifdef PNG_APNG_SUPPORTED ++ png_uint_32 apng_flags; ++ png_uint_32 next_seq_num; /* next fcTL/fdAT chunk sequence number */ ++ png_uint_32 first_frame_width; ++ png_uint_32 first_frame_height; ++ ++#ifdef PNG_READ_APNG_SUPPORTED ++ png_uint_32 num_frames_read; /* incremented after all image data of */ ++ /* a frame is read */ ++#ifdef PNG_PROGRESSIVE_READ_SUPPORTED ++ png_progressive_frame_ptr frame_info_fn; /* frame info read callback */ ++ png_progressive_frame_ptr frame_end_fn; /* frame data read callback */ ++#endif ++#endif ++ ++#ifdef PNG_WRITE_APNG_SUPPORTED ++ png_uint_32 num_frames_to_write; ++ png_uint_32 num_frames_written; ++#endif ++#endif /* PNG_APNG_SUPPORTED */ ++ + /* New members added in libpng-1.2.0 */ + + /* New members added in libpng-1.0.2 but first enabled by default in 1.2.0 */ +diff -Naru libpng-1.5.12.org/pngtest.c libpng-1.5.12/pngtest.c +--- libpng-1.5.12.org/pngtest.c 2012-07-16 19:01:19.000000000 +0900 ++++ libpng-1.5.12/pngtest.c 2012-07-16 19:01:20.000000000 +0900 +@@ -785,6 +785,10 @@ + jmp_buf tmp_jmpbuf; + #endif + #endif ++#ifdef PNG_APNG_SUPPORTED ++ png_uint_32 num_frames; ++ png_uint_32 num_plays; ++#endif + + char inbuf[256], outbuf[256]; + +@@ -1215,6 +1219,20 @@ + } + } + #endif ++#ifdef PNG_APNG_SUPPORTED ++ if (png_get_valid(read_ptr, read_info_ptr, PNG_INFO_acTL)) ++ { ++ if (png_get_acTL(read_ptr, read_info_ptr, &num_frames, &num_plays)) ++ { ++ png_byte is_hidden; ++ pngtest_debug2("Handling acTL chunks (frames %ld, plays %ld)", ++ num_frames, num_plays); ++ png_set_acTL(write_ptr, write_info_ptr, num_frames, num_plays); ++ is_hidden = png_get_first_frame_is_hidden(read_ptr, read_info_ptr); ++ png_set_first_frame_is_hidden(write_ptr, write_info_ptr, is_hidden); ++ } ++ } ++#endif + #ifdef PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED + { + png_unknown_chunkp unknowns; +@@ -1307,6 +1325,89 @@ + t_misc += (t_stop - t_start); + t_start = t_stop; + #endif ++#ifdef PNG_APNG_SUPPORTED ++ if (png_get_valid(read_ptr, read_info_ptr, PNG_INFO_acTL)) ++ { ++ png_uint_32 frame; ++ for (frame = 0; frame < num_frames; frame++) ++ { ++ png_uint_32 frame_width; ++ png_uint_32 frame_height; ++ png_uint_32 x_offset; ++ png_uint_32 y_offset; ++ png_uint_16 delay_num; ++ png_uint_16 delay_den; ++ png_byte dispose_op; ++ png_byte blend_op; ++ png_read_frame_head(read_ptr, read_info_ptr); ++ if (png_get_valid(read_ptr, read_info_ptr, PNG_INFO_fcTL)) ++ { ++ png_get_next_frame_fcTL(read_ptr, read_info_ptr, ++ &frame_width, &frame_height, ++ &x_offset, &y_offset, ++ &delay_num, &delay_den, ++ &dispose_op, &blend_op); ++ } ++ else ++ { ++ frame_width = width; ++ frame_height = height; ++ x_offset = 0; ++ y_offset = 0; ++ delay_num = 1; ++ delay_den = 1; ++ dispose_op = PNG_DISPOSE_OP_NONE; ++ blend_op = PNG_BLEND_OP_SOURCE; ++ } ++#ifdef PNG_WRITE_APNG_SUPPORTED ++ png_write_frame_head(write_ptr, write_info_ptr, (png_bytepp)&row_buf, ++ frame_width, frame_height, ++ x_offset, y_offset, ++ delay_num, delay_den, ++ dispose_op, blend_op); ++#endif ++ for (pass = 0; pass < num_pass; pass++) ++ { ++ pngtest_debug1("Writing row data for pass %d", pass); ++ for (y = 0; y < frame_height; y++) ++ { ++#ifndef SINGLE_ROWBUF_ALLOC ++ pngtest_debug2("Allocating row buffer (pass %d, y = %ld)...", pass, y); ++ row_buf = (png_bytep)png_malloc(read_ptr, ++ png_get_rowbytes(read_ptr, read_info_ptr)); ++ pngtest_debug2("0x%08lx (%ld bytes)", (unsigned long)row_buf, ++ png_get_rowbytes(read_ptr, read_info_ptr)); ++#endif /* !SINGLE_ROWBUF_ALLOC */ ++ png_read_rows(read_ptr, (png_bytepp)&row_buf, NULL, 1); ++ ++#ifdef PNG_WRITE_SUPPORTED ++#ifdef PNGTEST_TIMING ++ t_stop = (float)clock(); ++ t_decode += (t_stop - t_start); ++ t_start = t_stop; ++#endif ++ png_write_rows(write_ptr, (png_bytepp)&row_buf, 1); ++#ifdef PNGTEST_TIMING ++ t_stop = (float)clock(); ++ t_encode += (t_stop - t_start); ++ t_start = t_stop; ++#endif ++#endif /* PNG_WRITE_SUPPORTED */ ++ ++#ifndef SINGLE_ROWBUF_ALLOC ++ pngtest_debug2("Freeing row buffer (pass %d, y = %ld)", pass, y); ++ png_free(read_ptr, row_buf); ++ row_buf = NULL; ++#endif /* !SINGLE_ROWBUF_ALLOC */ ++ } ++ } ++#ifdef PNG_WRITE_APNG_SUPPORTED ++ png_write_frame_tail(write_ptr, write_info_ptr); ++#endif ++ } ++ } ++ else ++#endif + for (pass = 0; pass < num_pass; pass++) + { + pngtest_debug1("Writing row data for pass %d", pass); +diff -Naru libpng-1.5.12.org/pngwrite.c libpng-1.5.12/pngwrite.c +--- libpng-1.5.12.org/pngwrite.c 2012-07-16 19:01:19.000000000 +0900 ++++ libpng-1.5.12/pngwrite.c 2012-07-16 19:01:20.000000000 +0900 +@@ -58,6 +58,10 @@ /* The rest of these check to see if the valid field has the appropriate * flag set, and if it does, writes the chunk. */ @@ -1412,64 +1444,68 @@ diff -Nur libpng-1.2.44.orig/pngwrite.c libpng-1.2.44/pngwrite.c +#endif #ifdef PNG_WRITE_gAMA_SUPPORTED if (info_ptr->valid & PNG_INFO_gAMA) - { -@@ -319,6 +323,10 @@ - return; - if (!(png_ptr->mode & PNG_HAVE_IDAT)) - png_error(png_ptr, "No IDATs written into file"); + png_write_gAMA_fixed(png_ptr, info_ptr->gamma); +@@ -310,6 +314,11 @@ + png_benign_error(png_ptr, "Wrote palette index exceeding num_palette"); + #endif + +#ifdef PNG_WRITE_APNG_SUPPORTED + if (png_ptr->num_frames_written != png_ptr->num_frames_to_write) + png_error(png_ptr, "Not enough frames written"); +#endif - ++ /* See if user wants us to write information chunks */ if (info_ptr != NULL) -@@ -1589,4 +1597,39 @@ - params = params; + { +@@ -1665,4 +1674,42 @@ + PNG_UNUSED(params) } #endif + +#ifdef PNG_WRITE_APNG_SUPPORTED +void PNGAPI +png_write_frame_head(png_structp png_ptr, png_infop info_ptr, -+ png_bytepp row_pointers, png_uint_32 width, png_uint_32 height, -+ png_uint_32 x_offset, png_uint_32 y_offset, ++ png_bytepp row_pointers, png_uint_32 width, png_uint_32 height, ++ png_uint_32 x_offset, png_uint_32 y_offset, + png_uint_16 delay_num, png_uint_16 delay_den, png_byte dispose_op, + png_byte blend_op) +{ + png_debug(1, "in png_write_frame_head"); -+ ++ + /* there is a chance this has been set after png_write_info was called, + * so it would be set but not written. is there a way to be sure? */ + if (!(info_ptr->valid & PNG_INFO_acTL)) + png_error(png_ptr, "png_write_frame_head(): acTL not set"); -+ ++ + png_write_reset(png_ptr); -+ ++ + png_write_reinit(png_ptr, info_ptr, width, height); -+ -+ if ( !(png_ptr->num_frames_written == 0 && ++ ++ if ( !(png_ptr->num_frames_written == 0 && + (png_ptr->apng_flags & PNG_FIRST_FRAME_HIDDEN) ) ) -+ png_write_fcTL(png_ptr, width, height, x_offset, y_offset, ++ png_write_fcTL(png_ptr, width, height, x_offset, y_offset, + delay_num, delay_den, dispose_op, blend_op); ++ ++ PNG_UNUSED(row_pointers) +} + +void PNGAPI -+png_write_frame_tail(png_structp png_ptr, png_infop png_info) ++png_write_frame_tail(png_structp png_ptr, png_infop info_ptr) +{ + png_debug(1, "in png_write_frame_tail"); -+ ++ + png_ptr->num_frames_written++; ++ ++ PNG_UNUSED(info_ptr) +} +#endif /* PNG_WRITE_APNG_SUPPORTED */ -+ #endif /* PNG_WRITE_SUPPORTED */ -diff -Nur libpng-1.2.44.orig/pngwutil.c libpng-1.2.44/pngwutil.c ---- libpng-1.2.44.orig/pngwutil.c 2010-06-26 02:31:14.000000000 +0200 -+++ libpng-1.2.44/pngwutil.c 2010-07-08 21:21:34.095873630 +0200 -@@ -516,6 +516,11 @@ +diff -Naru libpng-1.5.12.org/pngwutil.c libpng-1.5.12/pngwutil.c +--- libpng-1.5.12.org/pngwutil.c 2012-07-16 19:01:19.000000000 +0900 ++++ libpng-1.5.12/pngwutil.c 2012-07-16 19:01:20.000000000 +0900 +@@ -821,6 +821,11 @@ /* Write the chunk */ - png_write_chunk(png_ptr, (png_bytep)png_IHDR, buf, (png_size_t)13); + png_write_complete_chunk(png_ptr, png_IHDR, buf, (png_size_t)13); +#ifdef PNG_WRITE_APNG_SUPPORTED + png_ptr->first_frame_width = width; @@ -1479,109 +1515,93 @@ diff -Nur libpng-1.2.44.orig/pngwutil.c libpng-1.2.44/pngwutil.c /* Initialize zlib with PNG info */ png_ptr->zstream.zalloc = png_zalloc; png_ptr->zstream.zfree = png_zfree; -@@ -641,6 +646,9 @@ - { - #ifdef PNG_USE_LOCAL_ARRAYS - PNG_IDAT; -+#ifdef PNG_WRITE_APNG_SUPPORTED -+ PNG_fdAT; -+#endif - #endif - - png_debug(1, "in png_write_IDAT"); -@@ -686,7 +694,28 @@ - "Invalid zlib compression method or flags in IDAT"); +@@ -1035,7 +1040,28 @@ } + #endif /* PNG_WRITE_OPTIMIZE_CMF_SUPPORTED */ +#ifdef PNG_WRITE_APNG_SUPPORTED -+ if(png_ptr->num_frames_written == 0) ++ if (png_ptr->num_frames_written == 0) +#endif - png_write_chunk(png_ptr, (png_bytep)png_IDAT, data, length); + png_write_complete_chunk(png_ptr, png_IDAT, data, length); +#ifdef PNG_WRITE_APNG_SUPPORTED + else + { + png_byte buf[4]; -+ -+ png_write_chunk_start(png_ptr, (png_bytep)png_fdAT, 4 + length); -+ ++ ++ png_write_chunk_header(png_ptr, png_fdAT, 4 + length); ++ + png_save_uint_32(buf, png_ptr->next_seq_num); + png_write_chunk_data(png_ptr, buf, 4); -+ ++ + png_write_chunk_data(png_ptr, data, length); -+ ++ + png_write_chunk_end(png_ptr); -+ ++ + png_ptr->next_seq_num++; + } -+#endif ++#endif /* PNG_WRITE_APNG_SUPPORTED */ + png_ptr->mode |= PNG_HAVE_IDAT; - } -@@ -1754,6 +1783,70 @@ + /* Prior to 1.5.4 this code was replicated in every caller (except at the +@@ -1997,6 +2023,64 @@ } #endif +#ifdef PNG_WRITE_APNG_SUPPORTED +void /* PRIVATE */ +png_write_acTL(png_structp png_ptr, -+ png_uint_32 num_frames, png_uint_32 num_plays) ++ png_uint_32 num_frames, png_uint_32 num_plays) +{ -+#ifdef PNG_USE_LOCAL_ARRAYS -+ PNG_acTL; -+#endif -+ png_byte data[16]; -+ ++ png_byte buf[8]; ++ + png_debug(1, "in png_write_acTL"); -+ ++ + png_ptr->num_frames_to_write = num_frames; -+ ++ + if (png_ptr->apng_flags & PNG_FIRST_FRAME_HIDDEN) + num_frames--; -+ -+ png_save_uint_32(data, num_frames); -+ png_save_uint_32(data + 4, num_plays); -+ -+ png_write_chunk(png_ptr, (png_bytep)png_acTL, data, (png_size_t)8); ++ ++ png_save_uint_32(buf, num_frames); ++ png_save_uint_32(buf + 4, num_plays); ++ ++ png_write_complete_chunk(png_ptr, png_acTL, buf, (png_size_t)8); +} + +void /* PRIVATE */ -+png_write_fcTL(png_structp png_ptr, png_uint_32 width, png_uint_32 height, ++png_write_fcTL(png_structp png_ptr, png_uint_32 width, png_uint_32 height, + png_uint_32 x_offset, png_uint_32 y_offset, -+ png_uint_16 delay_num, png_uint_16 delay_den, png_byte dispose_op, ++ png_uint_16 delay_num, png_uint_16 delay_den, png_byte dispose_op, + png_byte blend_op) +{ -+#ifdef PNG_USE_LOCAL_ARRAYS -+ PNG_fcTL; -+#endif -+ png_byte data[26]; -+ ++ png_byte buf[26]; ++ + png_debug(1, "in png_write_fcTL"); -+ ++ + if (png_ptr->num_frames_written == 0 && (x_offset != 0 || y_offset != 0)) + png_error(png_ptr, "x and/or y offset for the first frame aren't 0"); -+ if (png_ptr->num_frames_written == 0 && -+ (width != png_ptr->first_frame_width || ++ if (png_ptr->num_frames_written == 0 && ++ (width != png_ptr->first_frame_width || + height != png_ptr->first_frame_height)) + png_error(png_ptr, "width and/or height in the first frame's fcTL " + "don't match the ones in IHDR"); -+ ++ + /* more error checking */ -+ png_ensure_fcTL_is_valid(png_ptr, width, height, x_offset, y_offset, ++ png_ensure_fcTL_is_valid(png_ptr, width, height, x_offset, y_offset, + delay_num, delay_den, dispose_op, blend_op); -+ -+ png_save_uint_32(data, png_ptr->next_seq_num); -+ png_save_uint_32(data + 4, width); -+ png_save_uint_32(data + 8, height); -+ png_save_uint_32(data + 12, x_offset); -+ png_save_uint_32(data + 16, y_offset); -+ png_save_uint_16(data + 20, delay_num); -+ png_save_uint_16(data + 22, delay_den); -+ data[24] = dispose_op; -+ data[25] = blend_op; -+ -+ png_write_chunk(png_ptr, (png_bytep)png_fcTL, data, (png_size_t)26); -+ ++ ++ png_save_uint_32(buf, png_ptr->next_seq_num); ++ png_save_uint_32(buf + 4, width); ++ png_save_uint_32(buf + 8, height); ++ png_save_uint_32(buf + 12, x_offset); ++ png_save_uint_32(buf + 16, y_offset); ++ png_save_uint_16(buf + 20, delay_num); ++ png_save_uint_16(buf + 22, delay_den); ++ buf[24] = dispose_op; ++ buf[25] = blend_op; ++ ++ png_write_complete_chunk(png_ptr, png_fcTL, buf, (png_size_t)26); ++ + png_ptr->next_seq_num++; +} +#endif /* PNG_WRITE_APNG_SUPPORTED */ @@ -1589,18 +1609,7 @@ diff -Nur libpng-1.2.44.orig/pngwutil.c libpng-1.2.44/pngwutil.c /* Initializes the row writing capability of libpng */ void /* PRIVATE */ png_write_start_row(png_structp png_ptr) -@@ -2159,8 +2252,8 @@ - #ifndef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED - if (png_ptr->row_number == 0 && filter_to_do == PNG_ALL_FILTERS) - { -- /* These will never be selected so we need not test them. */ -- filter_to_do &= ~(PNG_FILTER_UP | PNG_FILTER_PAETH); -+ /* These use previous row */ -+ filter_to_do &= ~(PNG_FILTER_UP | PNG_FILTER_AVG | PNG_FILTER_PAETH); - } - #endif - -@@ -2829,4 +2922,39 @@ +@@ -3176,4 +3260,39 @@ } #endif } @@ -1615,28 +1624,28 @@ diff -Nur libpng-1.2.44.orig/pngwutil.c libpng-1.2.44/pngwutil.c +} + +void /* PRIVATE */ -+png_write_reinit(png_structp png_ptr, png_infop info_ptr, ++png_write_reinit(png_structp png_ptr, png_infop info_ptr, + png_uint_32 width, png_uint_32 height) +{ -+ if (png_ptr->num_frames_written == 0 && -+ (width != png_ptr->first_frame_width || ++ if (png_ptr->num_frames_written == 0 && ++ (width != png_ptr->first_frame_width || + height != png_ptr->first_frame_height)) + png_error(png_ptr, "width and/or height in the first frame's fcTL " + "don't match the ones in IHDR"); -+ if (width > png_ptr->first_frame_width || ++ if (width > png_ptr->first_frame_width || + height > png_ptr->first_frame_height) + png_error(png_ptr, "width and/or height for a frame greater than" + "the ones in IHDR"); -+ -+ png_set_IHDR(png_ptr, info_ptr, width, height, -+ info_ptr->bit_depth, info_ptr->color_type, ++ ++ png_set_IHDR(png_ptr, info_ptr, width, height, ++ info_ptr->bit_depth, info_ptr->color_type, + info_ptr->interlace_type, info_ptr->compression_type, + info_ptr->filter_type); -+ ++ + png_ptr->width = width; + png_ptr->height = height; + png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, width); + png_ptr->usr_width = png_ptr->width; +} -+#endif ++#endif /* PNG_WRITE_APNG_SUPPORTED */ #endif /* PNG_WRITE_SUPPORTED */ diff --git a/package/libpng/patches/patch-ltmain_sh b/package/libpng/patches/patch-ltmain_sh deleted file mode 100644 index 3dc47967e..000000000 --- a/package/libpng/patches/patch-ltmain_sh +++ /dev/null @@ -1,11 +0,0 @@ ---- libpng-1.2.44.orig/ltmain.sh 2009-11-22 15:45:24.000000000 +0100 -+++ libpng-1.2.44/ltmain.sh 2011-01-14 00:13:24.000000000 +0100 -@@ -4765,7 +4765,7 @@ func_mode_link () - # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC - # @file GCC response files - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -- -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) -+ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-fstack-protector*|-flto) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - func_append compile_command " $arg" diff --git a/package/pango/Makefile b/package/pango/Makefile index efa57159b..40e4c0fc3 100644 --- a/package/pango/Makefile +++ b/package/pango/Makefile @@ -4,16 +4,18 @@ include ${TOPDIR}/rules.mk PKG_NAME:= pango -PKG_VERSION:= 1.28.3 +PKG_VERSION:= 1.30.1 PKG_RELEASE:= 1 -PKG_MD5SUM:= 22ad1c8d3fda7e73b0798035f3dd96bc +PKG_MD5SUM:= ec3c1f236ee9bd4a982a5f46fcaff7b9 PKG_DESCR:= pango library PKG_SECTION:= libs PKG_BUILDDEP:= libXft glib cairo PKG_URL:= http://www.pango.org/ -PKG_SITES:= ${MASTER_SITE_GNOME:=pango/1.28/} +PKG_SITES:= ${MASTER_SITE_GNOME:=pango/1.30/} PKG_NEED_CXX:= 1 +DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz + PKG_SUBPKGS:= PANGO PANGO_DEV PKGSC_PANGO_DEV:= devel PKGSD_PANGO_DEV:= pango headers diff --git a/package/pango/patches/patch-configure b/package/pango/patches/patch-configure deleted file mode 100644 index f8581e376..000000000 --- a/package/pango/patches/patch-configure +++ /dev/null @@ -1,346 +0,0 @@ ---- pango-1.28.3.orig/configure 2010-09-29 13:02:33.000000000 +0200 -+++ pango-1.28.3/configure 2011-04-21 19:03:45.000000000 +0200 -@@ -5426,8 +5426,8 @@ $as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - --{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 --$as_echo_n "checking for egrep... " >&6; } -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep -E" >&5 -+$as_echo_n "checking for grep -E... " >&6; } - if test "${ac_cv_path_EGREP+set}" = set; then : - $as_echo_n "(cached) " >&6 - else -@@ -5442,7 +5442,7 @@ for as_dir in $PATH$PATH_SEPARATOR/usr/x - do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. -- for ac_prog in egrep; do -+ for ac_prog in grep -E; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue -@@ -5480,7 +5480,7 @@ esac - done - IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then -- as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 -+ as_fn_error $? "no acceptable grep -E could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi - else - ac_cv_path_EGREP=$EGREP -@@ -19159,7 +19159,7 @@ for module in $included_modules; do - done - IFS="$pango_save_ifs" - -- if echo $included_modules | egrep '(^|,)arabic-fc($|,)' > /dev/null; then -+ if echo $included_modules | grep -E '(^|,)arabic-fc($|,)' > /dev/null; then - INCLUDE_ARABIC_FC_TRUE= - INCLUDE_ARABIC_FC_FALSE='#' - else -@@ -19167,7 +19167,7 @@ else - INCLUDE_ARABIC_FC_FALSE= - fi - -- if echo $included_modules | egrep '(^|,)arabic-lang($|,)' > /dev/null; then -+ if echo $included_modules | grep -E '(^|,)arabic-lang($|,)' > /dev/null; then - INCLUDE_ARABIC_LANG_TRUE= - INCLUDE_ARABIC_LANG_FALSE='#' - else -@@ -19175,7 +19175,7 @@ else - INCLUDE_ARABIC_LANG_FALSE= - fi - -- if echo $included_modules | egrep '(^|,)basic-fc($|,)' > /dev/null; then -+ if echo $included_modules | grep -E '(^|,)basic-fc($|,)' > /dev/null; then - INCLUDE_BASIC_FC_TRUE= - INCLUDE_BASIC_FC_FALSE='#' - else -@@ -19183,7 +19183,7 @@ else - INCLUDE_BASIC_FC_FALSE= - fi - -- if echo $included_modules | egrep '(^|,)basic-win32($|,)' > /dev/null; then -+ if echo $included_modules | grep -E '(^|,)basic-win32($|,)' > /dev/null; then - INCLUDE_BASIC_WIN32_TRUE= - INCLUDE_BASIC_WIN32_FALSE='#' - else -@@ -19191,7 +19191,7 @@ else - INCLUDE_BASIC_WIN32_FALSE= - fi - -- if echo $included_modules | egrep '(^|,)basic-x($|,)' > /dev/null; then -+ if echo $included_modules | grep -E '(^|,)basic-x($|,)' > /dev/null; then - INCLUDE_BASIC_X_TRUE= - INCLUDE_BASIC_X_FALSE='#' - else -@@ -19199,7 +19199,7 @@ else - INCLUDE_BASIC_X_FALSE= - fi - -- if echo $included_modules | egrep '(^|,)basic-atsui($|,)' > /dev/null; then -+ if echo $included_modules | grep -E '(^|,)basic-atsui($|,)' > /dev/null; then - INCLUDE_BASIC_ATSUI_TRUE= - INCLUDE_BASIC_ATSUI_FALSE='#' - else -@@ -19207,7 +19207,7 @@ else - INCLUDE_BASIC_ATSUI_FALSE= - fi - -- if echo $included_modules | egrep '(^|,)hangul-fc($|,)' > /dev/null; then -+ if echo $included_modules | grep -E '(^|,)hangul-fc($|,)' > /dev/null; then - INCLUDE_HANGUL_FC_TRUE= - INCLUDE_HANGUL_FC_FALSE='#' - else -@@ -19215,7 +19215,7 @@ else - INCLUDE_HANGUL_FC_FALSE= - fi - -- if echo $included_modules | egrep '(^|,)hebrew-fc($|,)' > /dev/null; then -+ if echo $included_modules | grep -E '(^|,)hebrew-fc($|,)' > /dev/null; then - INCLUDE_HEBREW_FC_TRUE= - INCLUDE_HEBREW_FC_FALSE='#' - else -@@ -19223,7 +19223,7 @@ else - INCLUDE_HEBREW_FC_FALSE= - fi - -- if echo $included_modules | egrep '(^|,)indic-fc($|,)' > /dev/null; then -+ if echo $included_modules | grep -E '(^|,)indic-fc($|,)' > /dev/null; then - INCLUDE_INDIC_FC_TRUE= - INCLUDE_INDIC_FC_FALSE='#' - else -@@ -19231,7 +19231,7 @@ else - INCLUDE_INDIC_FC_FALSE= - fi - -- if echo $included_modules | egrep '(^|,)indic-lang($|,)' > /dev/null; then -+ if echo $included_modules | grep -E '(^|,)indic-lang($|,)' > /dev/null; then - INCLUDE_INDIC_LANG_TRUE= - INCLUDE_INDIC_LANG_FALSE='#' - else -@@ -19239,7 +19239,7 @@ else - INCLUDE_INDIC_LANG_FALSE= - fi - -- if echo $included_modules | egrep '(^|,)khmer-fc($|,)' > /dev/null; then -+ if echo $included_modules | grep -E '(^|,)khmer-fc($|,)' > /dev/null; then - INCLUDE_KHMER_FC_TRUE= - INCLUDE_KHMER_FC_FALSE='#' - else -@@ -19247,7 +19247,7 @@ else - INCLUDE_KHMER_FC_FALSE= - fi - -- if echo $included_modules | egrep '(^|,)syriac-fc($|,)' > /dev/null; then -+ if echo $included_modules | grep -E '(^|,)syriac-fc($|,)' > /dev/null; then - INCLUDE_SYRIAC_FC_TRUE= - INCLUDE_SYRIAC_FC_FALSE='#' - else -@@ -19255,7 +19255,7 @@ else - INCLUDE_SYRIAC_FC_FALSE= - fi - -- if echo $included_modules | egrep '(^|,)thai-fc($|,)' > /dev/null; then -+ if echo $included_modules | grep -E '(^|,)thai-fc($|,)' > /dev/null; then - INCLUDE_THAI_FC_TRUE= - INCLUDE_THAI_FC_FALSE='#' - else -@@ -19263,7 +19263,7 @@ else - INCLUDE_THAI_FC_FALSE= - fi - -- if echo $included_modules | egrep '(^|,)thai-lang($|,)' > /dev/null; then -+ if echo $included_modules | grep -E '(^|,)thai-lang($|,)' > /dev/null; then - INCLUDE_THAI_LANG_TRUE= - INCLUDE_THAI_LANG_FALSE='#' - else -@@ -19271,7 +19271,7 @@ else - INCLUDE_THAI_LANG_FALSE= - fi - -- if echo $included_modules | egrep '(^|,)tibetan-fc($|,)' > /dev/null; then -+ if echo $included_modules | grep -E '(^|,)tibetan-fc($|,)' > /dev/null; then - INCLUDE_TIBETAN_FC_TRUE= - INCLUDE_TIBETAN_FC_FALSE='#' - else -@@ -19280,7 +19280,7 @@ else - fi - - -- if echo $dynamic_modules | egrep '(^|,)arabic-fc($|,)' > /dev/null; then -+ if echo $dynamic_modules | grep -E '(^|,)arabic-fc($|,)' > /dev/null; then - DYNAMIC_ARABIC_FC_TRUE= - DYNAMIC_ARABIC_FC_FALSE='#' - else -@@ -19288,7 +19288,7 @@ else - DYNAMIC_ARABIC_FC_FALSE= - fi - -- if echo $dynamic_modules | egrep '(^|,)arabic-lang($|,)' > /dev/null; then -+ if echo $dynamic_modules | grep -E '(^|,)arabic-lang($|,)' > /dev/null; then - DYNAMIC_ARABIC_LANG_TRUE= - DYNAMIC_ARABIC_LANG_FALSE='#' - else -@@ -19296,7 +19296,7 @@ else - DYNAMIC_ARABIC_LANG_FALSE= - fi - -- if echo $dynamic_modules | egrep '(^|,)basic-fc($|,)' > /dev/null; then -+ if echo $dynamic_modules | grep -E '(^|,)basic-fc($|,)' > /dev/null; then - DYNAMIC_BASIC_FC_TRUE= - DYNAMIC_BASIC_FC_FALSE='#' - else -@@ -19304,7 +19304,7 @@ else - DYNAMIC_BASIC_FC_FALSE= - fi - -- if echo $dynamic_modules | egrep '(^|,)basic-win32($|,)' > /dev/null; then -+ if echo $dynamic_modules | grep -E '(^|,)basic-win32($|,)' > /dev/null; then - DYNAMIC_BASIC_WIN32_TRUE= - DYNAMIC_BASIC_WIN32_FALSE='#' - else -@@ -19312,7 +19312,7 @@ else - DYNAMIC_BASIC_WIN32_FALSE= - fi - -- if echo $dynamic_modules | egrep '(^|,)basic-x($|,)' > /dev/null; then -+ if echo $dynamic_modules | grep -E '(^|,)basic-x($|,)' > /dev/null; then - DYNAMIC_BASIC_X_TRUE= - DYNAMIC_BASIC_X_FALSE='#' - else -@@ -19320,7 +19320,7 @@ else - DYNAMIC_BASIC_X_FALSE= - fi - -- if echo $dynamic_modules | egrep '(^|,)basic-atsui($|,)' > /dev/null; then -+ if echo $dynamic_modules | grep -E '(^|,)basic-atsui($|,)' > /dev/null; then - DYNAMIC_BASIC_ATSUI_TRUE= - DYNAMIC_BASIC_ATSUI_FALSE='#' - else -@@ -19328,7 +19328,7 @@ else - DYNAMIC_BASIC_ATSUI_FALSE= - fi - -- if echo $dynamic_modules | egrep '(^|,)hangul-fc($|,)' > /dev/null; then -+ if echo $dynamic_modules | grep -E '(^|,)hangul-fc($|,)' > /dev/null; then - DYNAMIC_HANGUL_FC_TRUE= - DYNAMIC_HANGUL_FC_FALSE='#' - else -@@ -19336,7 +19336,7 @@ else - DYNAMIC_HANGUL_FC_FALSE= - fi - -- if echo $dynamic_modules | egrep '(^|,)hebrew-fc($|,)' > /dev/null; then -+ if echo $dynamic_modules | grep -E '(^|,)hebrew-fc($|,)' > /dev/null; then - DYNAMIC_HEBREW_FC_TRUE= - DYNAMIC_HEBREW_FC_FALSE='#' - else -@@ -19344,7 +19344,7 @@ else - DYNAMIC_HEBREW_FC_FALSE= - fi - -- if echo $dynamic_modules | egrep '(^|,)indic-fc($|,)' > /dev/null; then -+ if echo $dynamic_modules | grep -E '(^|,)indic-fc($|,)' > /dev/null; then - DYNAMIC_INDIC_FC_TRUE= - DYNAMIC_INDIC_FC_FALSE='#' - else -@@ -19352,7 +19352,7 @@ else - DYNAMIC_INDIC_FC_FALSE= - fi - -- if echo $dynamic_modules | egrep '(^|,)indic-lang($|,)' > /dev/null; then -+ if echo $dynamic_modules | grep -E '(^|,)indic-lang($|,)' > /dev/null; then - DYNAMIC_INDIC_LANG_TRUE= - DYNAMIC_INDIC_LANG_FALSE='#' - else -@@ -19360,7 +19360,7 @@ else - DYNAMIC_INDIC_LANG_FALSE= - fi - -- if echo $dynamic_modules | egrep '(^|,)khmer-fc($|,)' > /dev/null; then -+ if echo $dynamic_modules | grep -E '(^|,)khmer-fc($|,)' > /dev/null; then - DYNAMIC_KHMER_FC_TRUE= - DYNAMIC_KHMER_FC_FALSE='#' - else -@@ -19368,7 +19368,7 @@ else - DYNAMIC_KHMER_FC_FALSE= - fi - -- if echo $dynamic_modules | egrep '(^|,)syriac-fc($|,)' > /dev/null; then -+ if echo $dynamic_modules | grep -E '(^|,)syriac-fc($|,)' > /dev/null; then - DYNAMIC_SYRIAC_FC_TRUE= - DYNAMIC_SYRIAC_FC_FALSE='#' - else -@@ -19376,7 +19376,7 @@ else - DYNAMIC_SYRIAC_FC_FALSE= - fi - -- if echo $dynamic_modules | egrep '(^|,)thai-fc($|,)' > /dev/null; then -+ if echo $dynamic_modules | grep -E '(^|,)thai-fc($|,)' > /dev/null; then - DYNAMIC_THAI_FC_TRUE= - DYNAMIC_THAI_FC_FALSE='#' - else -@@ -19384,7 +19384,7 @@ else - DYNAMIC_THAI_FC_FALSE= - fi - -- if echo $dynamic_modules | egrep '(^|,)thai-lang($|,)' > /dev/null; then -+ if echo $dynamic_modules | grep -E '(^|,)thai-lang($|,)' > /dev/null; then - DYNAMIC_THAI_LANG_TRUE= - DYNAMIC_THAI_LANG_FALSE='#' - else -@@ -19392,7 +19392,7 @@ else - DYNAMIC_THAI_LANG_FALSE= - fi - -- if echo $dynamic_modules | egrep '(^|,)tibetan-fc($|,)' > /dev/null; then -+ if echo $dynamic_modules | grep -E '(^|,)tibetan-fc($|,)' > /dev/null; then - DYNAMIC_TIBETAN_FC_TRUE= - DYNAMIC_TIBETAN_FC_FALSE='#' - else -@@ -23041,7 +23041,7 @@ EOTEXT - - IFS="${IFS= }"; pango_save_ifs="$IFS"; IFS="," - for module in $included_modules; do -- if echo $module | egrep -- "-x($|,)" > /dev/null; then -+ if echo $module | grep -E -- "-x($|,)" > /dev/null; then - module_c=`echo $module | sed s/-/_/` - cat >> pango/module-defs-x.c <<EOTEXT - { _pango_${module_c}_script_engine_list, _pango_${module_c}_script_engine_init, _pango_${module_c}_script_engine_exit, _pango_${module_c}_script_engine_create }, -@@ -23068,7 +23068,7 @@ EOTEXT - - IFS="${IFS= }"; pango_save_ifs="$IFS"; IFS="," - for module in $included_modules; do -- if echo $module | egrep -- "-fc($|,)" > /dev/null; then -+ if echo $module | grep -E -- "-fc($|,)" > /dev/null; then - module_c=`echo $module | sed s/-/_/` - cat >> pango/module-defs-fc.c <<EOTEXT - { _pango_${module_c}_script_engine_list, _pango_${module_c}_script_engine_init, _pango_${module_c}_script_engine_exit, _pango_${module_c}_script_engine_create }, -@@ -23095,7 +23095,7 @@ EOTEXT - - IFS="${IFS= }"; pango_save_ifs="$IFS"; IFS="," - for module in $included_modules; do -- if echo $module | egrep -- "-win32($|,)" > /dev/null; then -+ if echo $module | grep -E -- "-win32($|,)" > /dev/null; then - module_c=`echo $module | sed s/-/_/` - cat >> pango/module-defs-win32.c <<EOTEXT - { _pango_${module_c}_script_engine_list, _pango_${module_c}_script_engine_init, _pango_${module_c}_script_engine_exit, _pango_${module_c}_script_engine_create }, -@@ -23122,7 +23122,7 @@ EOTEXT - - IFS="${IFS= }"; pango_save_ifs="$IFS"; IFS="," - for module in $included_modules; do -- if echo $module | egrep -- "-atsui($|,)" > /dev/null; then -+ if echo $module | grep -E -- "-atsui($|,)" > /dev/null; then - module_c=`echo $module | sed s/-/_/` - cat >> pango/module-defs-atsui.c <<EOTEXT - { _pango_${module_c}_script_engine_list, _pango_${module_c}_script_engine_init, _pango_${module_c}_script_engine_exit, _pango_${module_c}_script_engine_create }, -@@ -23149,7 +23149,7 @@ EOTEXT - - IFS="${IFS= }"; pango_save_ifs="$IFS"; IFS="," - for module in $included_modules; do -- if echo $module | egrep -- "-lang($|,)" > /dev/null; then -+ if echo $module | grep -E -- "-lang($|,)" > /dev/null; then - module_c=`echo $module | sed s/-/_/` - cat >> pango/module-defs-lang.c <<EOTEXT - { _pango_${module_c}_script_engine_list, _pango_${module_c}_script_engine_init, _pango_${module_c}_script_engine_exit, _pango_${module_c}_script_engine_create }, diff --git a/package/pango/patches/patch-ltmain_sh b/package/pango/patches/patch-ltmain_sh deleted file mode 100644 index 79b73df6f..000000000 --- a/package/pango/patches/patch-ltmain_sh +++ /dev/null @@ -1,11 +0,0 @@ ---- pango-1.28.3.orig/ltmain.sh 2010-09-29 13:02:28.000000000 +0200 -+++ pango-1.28.3/ltmain.sh 2011-01-14 23:41:25.000000000 +0100 -@@ -4765,7 +4765,7 @@ func_mode_link () - # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC - # @file GCC response files - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -- -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) -+ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-fstack-protector*|-flto) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - func_append compile_command " $arg" diff --git a/package/pango/patches/patch-tests_runtests_sh b/package/pango/patches/patch-tests_runtests_sh deleted file mode 100644 index c4675af7a..000000000 --- a/package/pango/patches/patch-tests_runtests_sh +++ /dev/null @@ -1,8 +0,0 @@ ---- pango-1.28.3.orig/tests/runtests.sh 2010-09-29 13:02:41.000000000 +0200 -+++ pango-1.28.3/tests/runtests.sh 2011-01-14 23:40:32.000000000 +0100 -@@ -1,4 +1,4 @@ --#! /bin/sh -+#! /bin/bash - - LOGFILE=runtests.log - POTENTIAL_TESTS='testboundaries testcolor testboundaries_ucd' |