svn commit: r375559 - in head/news/knews: . files

Antoine Brodin antoine at FreeBSD.org
Thu Dec 25 14:02:39 UTC 2014


Author: antoine
Date: Thu Dec 25 14:02:37 2014
New Revision: 375559
URL: https://svnweb.freebsd.org/changeset/ports/375559
QAT: https://qat.redports.org/buildarchive/r375559/

Log:
  Properly support png 1.5
  
  Obtained from:	pkgsrc

Modified:
  head/news/knews/Makefile
  head/news/knews/files/patch-Imakefile
  head/news/knews/files/patch-png.c

Modified: head/news/knews/Makefile
==============================================================================
--- head/news/knews/Makefile	Thu Dec 25 14:00:30 2014	(r375558)
+++ head/news/knews/Makefile	Thu Dec 25 14:02:37 2014	(r375559)
@@ -12,7 +12,7 @@ MAINTAINER=	dinoex at FreeBSD.org
 COMMENT=	Threaded nntp newsreader for X
 
 LIB_DEPENDS=	libjpeg.so:${PORTSDIR}/graphics/jpeg \
-		libpng15.so:${PORTSDIR}/graphics/png \
+		libpng.so:${PORTSDIR}/graphics/png \
 		libcompface.so:${PORTSDIR}/mail/faces
 RUN_DEPENDS=	newsp:${PORTSDIR}/print/mp-letter
 

Modified: head/news/knews/files/patch-Imakefile
==============================================================================
--- head/news/knews/files/patch-Imakefile	Thu Dec 25 14:00:30 2014	(r375558)
+++ head/news/knews/files/patch-Imakefile	Thu Dec 25 14:02:37 2014	(r375559)
@@ -5,7 +5,7 @@
  #endif
  
 -INCLUDES	= -I../Widgets $(REGEXP_INCLUDES) $(KNEWS_INCLUDES)
-+INCLUDES	= -I../Widgets $(REGEXP_INCLUDES) $(KNEWS_INCLUDES) -I${LOCALBASE}/include/libpng15
++INCLUDES	= -I../Widgets $(REGEXP_INCLUDES) $(KNEWS_INCLUDES) -I${LOCALBASE}/include
 +
  
  LOCAL_LIBRARIES	= \

Modified: head/news/knews/files/patch-png.c
==============================================================================
--- head/news/knews/files/patch-png.c	Thu Dec 25 14:00:30 2014	(r375558)
+++ head/news/knews/files/patch-png.c	Thu Dec 25 14:02:37 2014	(r375559)
@@ -1,147 +1,133 @@
---- src/png.c.orig	1998-11-21 15:55:13.000000000 +0100
-+++ src/png.c	2012-05-06 13:39:28.000000000 +0200
-@@ -20,6 +20,7 @@
- #else
- 
- #include <png.h>
-+#include <pngpriv.h>
- #include <setjmp.h>
- 
- static unsigned int	 p_cmap_inited = False;
-@@ -76,10 +77,16 @@
-     return fp;
- }
- 
-+static Pixmap rep_fail(const char *e) {
-+	ArtTextAddLine(main_widgets.text, e, ascii_font->body_font,
-+		global.alert_pixel);
-+	return None;
-+}
-+
+$NetBSD: patch-bd,v 1.3 2011/01/15 19:16:00 tron Exp $
+
+Fix build with png-1.5.
+
+--- src/png.c.orig	1998-11-21 14:55:13.000000000 +0000
++++ src/png.c	2011-01-15 19:09:09.000000000 +0000
+@@ -78,8 +78,8 @@
+ 
  Pixmap do_png(char *data, long len, long *wp, long *hp)
  {
 -    png_struct		p_str;
 -    png_info		p_info;
-+    png_structp		png_ptr;
-+    png_infop 		info_ptr;
++    png_struct		*p_str = NULL;
++    png_info		*p_info = NULL;
      Pixmap		pixmap;
      FILE *volatile	vol_fp  = NULL;
      void *volatile	vol_pic = NULL;
-@@ -92,13 +99,21 @@
- 
-     init_png_cmap();
- 
--    if (!(vol_fp = dump_for_png(data, len))) {
--	ArtTextAddLine(main_widgets.text, "[knews: temp file error.]",
--		       ascii_font->body_font, global.alert_pixel);
--	return None;
-+    if (!(vol_fp = dump_for_png(data, len)))
-+	return rep_fail("[knews: temp file error.]");
-+
-+    png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING,
-+	NULL, NULL, NULL);
-+    if (!png_ptr)
-+	return rep_fail("[knews: can't allocate PNG structure.]");
-+    info_ptr = png_create_info_struct(png_ptr);
-+    if (!info_ptr) {
-+	png_destroy_read_struct(&png_ptr,
-+		(png_infopp)NULL, (png_infopp)NULL);
-+	return rep_fail("[knews: can't PNG info structure.]");
+@@ -98,7 +98,11 @@
+ 	return None;
      }
  
 -    if (setjmp(p_str.jmpbuf))
-+    if (setjmp(png_jmpbuf(png_ptr)))
++    if ((p_str = (png_struct *) png_create_read_struct(PNG_LIBPNG_VER_STRING,
++		    NULL, NULL, NULL)))
++	p_info = (png_info *) png_create_info_struct(p_str);
++
++    if (p_str && p_info && setjmp(png_jmpbuf(p_str)))
  	ArtTextAddLine(main_widgets.text, "[knews: png error.]",
  		       ascii_font->body_font, global.alert_pixel);
      else {
-@@ -108,58 +123,55 @@
+@@ -107,59 +111,63 @@
+ 	int		did;
  	unsigned int	per_line = 0;
  	unsigned int	i, j, pass;
++	png_color_16p	background;
++        png_byte        color_type;
++	png_colorp	palette;
++	int		num_palette;
++
++	png_init_io(p_str, vol_fp);
++	png_read_info(p_str, p_info);
++
++	vol_w = w = png_get_image_width(p_str, p_info);
++	vol_h = h = png_get_image_height(p_str, p_info);
++
++	if (png_get_bit_depth(p_str, p_info) == 16)
++	    png_set_strip_16(p_str);
++	else if (png_get_bit_depth(p_str, p_info) < 8)
++	    png_set_packing(p_str);
  
 -	png_read_init(&p_str);
 -	png_info_init(&p_info);
 -
 -	png_init_io(&p_str, vol_fp);
 -	png_read_info(&p_str, &p_info);
-+	png_init_io(png_ptr, vol_fp);
-+	png_read_info(png_ptr, info_ptr);
- 
+-
 -	vol_w = w = p_info.width;
 -	vol_h = h = p_info.height;
-+	vol_w = w = info_ptr->width;
-+	vol_h = h = info_ptr->height;
- 
+-
 -	if (p_info.bit_depth == 16)
 -	    png_set_strip_16(&p_str);
 -	else if (p_info.bit_depth < 8)
 -	    png_set_packing(&p_str);
-+	if (info_ptr->bit_depth == 16)
-+	    png_set_strip_16(png_ptr);
-+	else if (info_ptr->bit_depth < 8)
-+	    png_set_packing(png_ptr);
- 
+-
 -	if (p_info.valid & PNG_INFO_bKGD)
 -	    png_set_background(&p_str, &p_info.background,
-+	if (info_ptr->valid & PNG_INFO_bKGD)
-+	    png_set_background(png_ptr, &info_ptr->background,
++	if (png_get_bKGD(p_str, p_info, &background) & PNG_INFO_bKGD)
++	    png_set_background(p_str, background,
  			       PNG_BACKGROUND_GAMMA_FILE, True, 1.0);
  	else {
  	    static png_color_16	bg = {0, };
 -	    png_set_background(&p_str, &bg,
-+	    png_set_background(png_ptr, &bg,
++	    png_set_background(p_str, &bg,
  			       PNG_BACKGROUND_GAMMA_SCREEN, False, 1.0);
  	}
  
  	per_line = w;
  
 -	if (!(p_info.color_type & PNG_COLOR_MASK_COLOR)) { /* grey image */
-+	if (!(info_ptr->color_type & PNG_COLOR_MASK_COLOR)) { /* grey image */
++        color_type = png_get_color_type(p_str, p_info);
++	if (!(color_type & PNG_COLOR_MASK_COLOR)) { /* grey image */
  	    grey = True;
 -	    png_set_expand(&p_str);
-+	    png_set_expand(png_ptr);
++	    png_set_expand(p_str);
  	} else if (!p_cmap) { /* true color visual */
 -	    if (p_info.color_type == PNG_COLOR_TYPE_PALETTE)
 -		png_set_expand(&p_str);
-+	    if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
-+		png_set_expand(png_ptr);
++	    if (color_type == PNG_COLOR_TYPE_PALETTE)
++		png_set_expand(p_str);
  	    per_line *= 3;
 -	} else if (p_info.color_type & PNG_COLOR_MASK_PALETTE) {
-+	} else if (info_ptr->color_type & PNG_COLOR_MASK_PALETTE) {
++	} else if (color_type & PNG_COLOR_MASK_PALETTE &&
++		   png_get_PLTE(p_str, p_info,
++				&palette, &num_palette) & PNG_INFO_PLTE) {
  	    CMAP_ENTRY	*pal;
  	    int		i, pn;
  
 -	    pn  = p_info.num_palette;
-+	    pn  = info_ptr->num_palette;
++	    pn  = num_palette;
  	    pal = (CMAP_ENTRY *)XtMalloc(pn * sizeof *pal);
  	    for (i = 0 ; i < pn ; i++) {
 -		pal[i].r = p_info.palette[i].red;
 -		pal[i].g = p_info.palette[i].green;
 -		pal[i].b = p_info.palette[i].blue;
-+		pal[i].r = info_ptr->palette[i].red;
-+		pal[i].g = info_ptr->palette[i].green;
-+		pal[i].b = info_ptr->palette[i].blue;
++		pal[i].r = palette[i].red;
++		pal[i].g = palette[i].green;
++		pal[i].b = palette[i].blue;
  	    }
  	    vol_pal = pal;
  	    vol_pn  = pn;
  	} else {
 -	    png_set_dither(&p_str, p_cmap, cmap_size,
-+	    png_set_quantize(png_ptr, p_cmap, cmap_size,
- 			   cmap_size, NULL, True);
+-			   cmap_size, NULL, True);
++	    png_set_quantize(p_str, p_cmap, cmap_size,
++			     cmap_size, NULL, True);
  	}
  
 -	pass = png_set_interlace_handling(&p_str);
 -	png_start_read_image(&p_str);
-+	pass = png_set_interlace_handling(png_ptr);
-+	png_start_read_image(png_ptr);
++	pass = png_set_interlace_handling(p_str);
++	png_start_read_image(p_str);
  
  	vol_pic = pic = (unsigned char *)XtMalloc(h * per_line);
  
-@@ -167,14 +179,14 @@
+@@ -167,14 +175,14 @@
  	for (i = 0 ; i < pass ; i++) {
  	    row = pic;
  	    for (j = 0 ; j < h ; j++) {
 -		png_read_row(&p_str, NULL, row);
-+		png_read_row(png_ptr, NULL, row);
++		png_read_row(p_str, NULL, row);
  		if (!did)
  		    vol_did = did = True;
  		row += per_line;
@@ -149,16 +135,19 @@
  	}
  
 -	png_read_end(&p_str, NULL);
-+	png_read_end(png_ptr, NULL);
++	png_read_end(p_str, NULL);
      }
  
      if (!vol_did)
-@@ -204,7 +216,7 @@
+@@ -204,7 +212,10 @@
  	}
      }
  
 -    png_read_destroy(&p_str, &p_info, NULL);
-+    png_read_destroy(png_ptr, info_ptr, NULL);
++    if (p_info)
++	png_destroy_read_struct(&p_str, &p_info, NULL);
++    else
++	png_destroy_read_struct(&p_str, NULL, NULL);
      fclose((FILE *)vol_fp);
      XtFree((char *)vol_pic);
      XtFree((char *)vol_pal);


More information about the svn-ports-head mailing list