Date: Tuesday, November 22, 2016 @ 17:38:34 Author: anthraxx Revision: 196548
archrelease: copy trunk to community-i686, community-x86_64 Added: xv/repos/community-i686/PKGBUILD (from rev 196547, xv/trunk/PKGBUILD) xv/repos/community-i686/license.txt (from rev 196547, xv/trunk/license.txt) xv/repos/community-i686/xv-3.10a-libpng15.patch (from rev 196547, xv/trunk/xv-3.10a-libpng15.patch) xv/repos/community-x86_64/PKGBUILD (from rev 196547, xv/trunk/PKGBUILD) xv/repos/community-x86_64/license.txt (from rev 196547, xv/trunk/license.txt) xv/repos/community-x86_64/xv-3.10a-libpng15.patch (from rev 196547, xv/trunk/xv-3.10a-libpng15.patch) Deleted: xv/repos/community-i686/PKGBUILD xv/repos/community-i686/license.txt xv/repos/community-i686/xv-3.10a-libpng15.patch xv/repos/community-x86_64/PKGBUILD xv/repos/community-x86_64/license.txt xv/repos/community-x86_64/xv-3.10a-libpng15.patch ------------------------------------------+ /PKGBUILD | 92 ++ /license.txt | 278 +++++++ /xv-3.10a-libpng15.patch | 1040 +++++++++++++++++++++++++++++ community-i686/PKGBUILD | 46 - community-i686/license.txt | 139 --- community-i686/xv-3.10a-libpng15.patch | 520 -------------- community-x86_64/PKGBUILD | 46 - community-x86_64/license.txt | 139 --- community-x86_64/xv-3.10a-libpng15.patch | 520 -------------- 9 files changed, 1410 insertions(+), 1410 deletions(-) Deleted: community-i686/PKGBUILD =================================================================== --- community-i686/PKGBUILD 2016-11-22 17:38:21 UTC (rev 196547) +++ community-i686/PKGBUILD 2016-11-22 17:38:34 UTC (rev 196548) @@ -1,46 +0,0 @@ -# $Id$ -# Maintainer: Eric Bélanger <e...@archlinux.org> - -pkgname=xv -pkgver=3.10a -pkgrel=18 -pkgdesc="A nice image viewer" -arch=('i686' 'x86_64') -url="http://www.trilon.com/xv/" -license=('custom') -depends=('libpng' 'libx11' 'libtiff' 'jasper') -makedepends=('libxt') -options=('!emptydirs') -source=(ftp://ftp.trilon.com/pub/xv/${pkgname}-${pkgver}.tar.gz \ - http://downloads.sourceforge.net/sourceforge/png-mng/xv-3.10a-jumbo-patches-20070520.tar.gz \ - http://www.sonic.net/~roelofs/code/xv-3.10a-enhancements.20070520-20081216.diff \ - license.txt xv-3.10a-libpng15.patch) -sha1sums=('092f8eb100f16d6b91c88b126c2b2b998eb09b99' - 'd00308c1687d9d803d26ef40c73d19a0f593c626' - '40bfb0889b820e0f9d3bd7d771144ec3458acc66' - '4561344e8f2c30eee9c55b14a14f062d89d6e7b7' - '3d19aa0c6ecc8b554081906babe0b4f9a6946da3') - -prepare() { - tar -cJf xv-${pkgver}-source.tar.xz xv-${pkgver} - cd ${pkgname}-${pkgver} - patch -p1 -i "${srcdir}/xv-3.10a-jumbo-fix-enh-patch-20070520.txt" - patch -p1 -i "${srcdir}/xv-3.10a-enhancements.20070520-20081216.diff" - patch -p0 -i "${srcdir}/xv-3.10a-libpng15.patch" -} - -build() { - cd ${pkgname}-${pkgver} - make JP2KLIB=-ljasper -} - -package() { - cd ${pkgname}-${pkgver} - install -d "${pkgdir}"/usr/{bin,lib,share/man/man1} - make DESTDIR="${pkgdir}" PREFIX=/usr install - install -D -m644 "${srcdir}/license.txt" "${pkgdir}/usr/share/licenses/${pkgname}/license.txt" - -# installing source tarball (to comply with license) - install -D -m644 "${srcdir}/xv-${pkgver}-source.tar.xz" "${pkgdir}/usr/share/doc/xv/xv-${pkgver}-source.tar.xz" - ln -s "/usr/share/licenses/${pkgname}/license.txt" "${pkgdir}/usr/share/doc/xv/license.txt" -} Copied: xv/repos/community-i686/PKGBUILD (from rev 196547, xv/trunk/PKGBUILD) =================================================================== --- community-i686/PKGBUILD (rev 0) +++ community-i686/PKGBUILD 2016-11-22 17:38:34 UTC (rev 196548) @@ -0,0 +1,46 @@ +# $Id$ +# Maintainer: Eric Bélanger <e...@archlinux.org> + +pkgname=xv +pkgver=3.10a +pkgrel=20 +pkgdesc="A nice image viewer" +arch=('i686' 'x86_64') +url="http://www.trilon.com/xv/" +license=('custom') +depends=('libpng' 'libx11' 'libtiff' 'jasper') +makedepends=('libxt') +options=('!emptydirs') +source=(ftp://ftp.trilon.com/pub/xv/${pkgname}-${pkgver}.tar.gz \ + http://downloads.sourceforge.net/sourceforge/png-mng/xv-3.10a-jumbo-patches-20070520.tar.gz \ + http://www.sonic.net/~roelofs/code/xv-3.10a-enhancements.20070520-20081216.diff \ + license.txt xv-3.10a-libpng15.patch) +sha1sums=('092f8eb100f16d6b91c88b126c2b2b998eb09b99' + 'd00308c1687d9d803d26ef40c73d19a0f593c626' + '40bfb0889b820e0f9d3bd7d771144ec3458acc66' + '4561344e8f2c30eee9c55b14a14f062d89d6e7b7' + '3d19aa0c6ecc8b554081906babe0b4f9a6946da3') + +prepare() { + tar -cJf xv-${pkgver}-source.tar.xz xv-${pkgver} + cd ${pkgname}-${pkgver} + patch -p1 -i "${srcdir}/xv-3.10a-jumbo-fix-enh-patch-20070520.txt" + patch -p1 -i "${srcdir}/xv-3.10a-enhancements.20070520-20081216.diff" + patch -p0 -i "${srcdir}/xv-3.10a-libpng15.patch" +} + +build() { + cd ${pkgname}-${pkgver} + make JP2KLIB=-ljasper +} + +package() { + cd ${pkgname}-${pkgver} + install -d "${pkgdir}"/usr/{bin,lib,share/man/man1} + make DESTDIR="${pkgdir}" PREFIX=/usr install + install -D -m644 "${srcdir}/license.txt" "${pkgdir}/usr/share/licenses/${pkgname}/license.txt" + +# installing source tarball (to comply with license) + install -D -m644 "${srcdir}/xv-${pkgver}-source.tar.xz" "${pkgdir}/usr/share/doc/xv/xv-${pkgver}-source.tar.xz" + ln -s "/usr/share/licenses/${pkgname}/license.txt" "${pkgdir}/usr/share/doc/xv/license.txt" +} Deleted: community-i686/license.txt =================================================================== --- community-i686/license.txt 2016-11-22 17:38:21 UTC (rev 196547) +++ community-i686/license.txt 2016-11-22 17:38:34 UTC (rev 196548) @@ -1,139 +0,0 @@ -XV Licensing Information ------------------------- -XV IS SHAREWARE FOR PERSONAL USE ONLY. - -You may use XV for your own amusement, and if you find it nifty, -useful, generally cool, or of some value to you, your registration fee -would be greatly appreciated. $25 is the standard registration fee, -though of course, larger amounts are quite welcome. Folks who donate -$40 or more can receive a printed, bound copy of the XV manual for no -extra charge. If you want one, just ask. BE SURE TO SPECIFY THE -VERSION OF XV THAT YOU ARE USING! - -COMMERCIAL, GOVERNMENT, AND INSTITUTIONAL USERS MUST REGISTER THEIR -COPIES OF XV. - -This does *not* mean that you are required to register XV just because -you play with it on the workstation in your office. This falls under -the heading of 'personal use'. If you are a sysadmin, you can put XV -up in a public directory for your users amusement. Again, 'personal -use', albeit plural. - -On the other hand, if you use XV in the course of doing your work, -whatever your 'work' may happen to be, you *must* register your -copy of XV. (Note: If you are a student, and you use XV to do -classwork or research, you should get your professor/teacher/advisor -to purchase an appropriate number of copies.) - -XV licenses are $25 each. You should purchase one license per -workstation, or one per XV user, whichever is the smaller number. XV -is *not* sold on a 'number of concurrent users' basis. If XV was some -$1000 program, yes, that would be a reasonable request, but at $25, -it's not. Also, given that XV is completely unlocked, there is no way -to enforce any 'number of concurrent users' limits, so it isn't sold -that way. - -Printed and bound copies of the 100-odd page XV manual are available -for $15 each. Note that manuals are *only* sold with, at minimum, an -equal number of licenses. (e.g. if you purchase 5 licenses, you can -also purchase *up to* 5 copies of the manual) - -The source code to the program can be had (as a compressed 'tar' file -split over a couple 3.5" MS-DOS formatted floppies) for $15, for those -who don't have ftp capabilities. - -Orders outside the US and Canada must add an additional $5 per manual -ordered to cover the additional shipping charges. - -Checks, money orders, and purchase orders are accepted. Credit cards -are not. All forms of payment must be payable in US Funds. Checks -must be payable through a US bank (or a US branch of a non-US bank). -Purchase orders for less than $50, while still accepted, are not -encouraged. - -All payments should be payable to 'John Bradley', and mailed to: - John Bradley - 1053 Floyd Terrace - Bryn Mawr, PA 19010 - USA - - -Site Licenses -------------- -If you are planning to purchase 10 or more licenses, site licenses are -available, at a substantial discount. Site licenses let you run XV on -any and all computing equipment at the site, for any purpose -whatsoever. The site license covers the current version of XV, and -any versions released within one year of the licensing date. You are -also allowed to duplicate and distribute an unlimited number of copies -of the XV manual, but only for use within the site. Covered versions -of the software may be run in perpetuity. - -Also, it should be noted that a 'site' can be defined as anything -you'd like. It can be a physical location (a room, building, -location, etc.), an organizational grouping (a workgroup, department, -division, etc.) or any other logical grouping ("the seventeen -technical writers scattered about our company", etc.). - -The site license cost will be based on your estimate of the number of -XV users or workstations at your site, whichever is the smaller -number. - -If you are interested in obtaining a site license, please contact the -author via electronic mail or FAX (see below for details). Send -information regarding your site (the name or definition of the 'site', -a physical address, a fax number, and an estimate of the number of -users or workstations), and we'll get a site license out to you for -your examination. - - -Copyright Notice ----------------- -XV is Copyright 1989, 1994 by John Bradley - -Permission to copy and distribute XV in its entirety, for -non-commercial purposes, is hereby granted without fee, provided that -this license information and copyright notice appear in all copies. - -If you redistribute XV, the *entire* contents of this distribution -must be distributed, including the README, and INSTALL files, the -sources, and the complete contents of the 'docs' directory. - -Note that distributing XV 'bundled' in with any product is considered -to be a 'commercial purpose'. - -Also note that any copies of XV that are distributed MUST be built -and/or configured to be in their 'unregistered copy' mode, so that it -is made obvious to the user that XV is shareware, and that they should -consider registering, or at least reading this information. - -The software may be modified for your own purposes, but modified -versions may not be distributed without prior consent of the author. - -This software is provided 'as-is', without any express or implied -warranty. In no event will the author be held liable for any damages -arising from the use of this software. - -If you would like to do something with XV that this copyright -prohibits (such as distributing it with a commercial product, using -portions of the source in some other program, distributing registered -copies, etc.), please contact the author (preferably via email). -Arrangements can probably be worked out. - - -The author may be contacted via: - US Mail: John Bradley - 1053 Floyd Terrace - Bryn Mawr, PA 19010 - - FAX: (610) 520-2042 - -Electronic Mail regarding XV should be sent to one of these three addresses: - x...@devo.dccs.upenn.edu - general XV questions - xv...@devo.dccs.upenn.edu - all XV licensing questions - xvt...@devo.dccs.upenn.edu - bug reports, technical questions - -Please do *not* send electronic mail directly to the author, as he -gets more than enough as it is. - - Copied: xv/repos/community-i686/license.txt (from rev 196547, xv/trunk/license.txt) =================================================================== --- community-i686/license.txt (rev 0) +++ community-i686/license.txt 2016-11-22 17:38:34 UTC (rev 196548) @@ -0,0 +1,139 @@ +XV Licensing Information +------------------------ +XV IS SHAREWARE FOR PERSONAL USE ONLY. + +You may use XV for your own amusement, and if you find it nifty, +useful, generally cool, or of some value to you, your registration fee +would be greatly appreciated. $25 is the standard registration fee, +though of course, larger amounts are quite welcome. Folks who donate +$40 or more can receive a printed, bound copy of the XV manual for no +extra charge. If you want one, just ask. BE SURE TO SPECIFY THE +VERSION OF XV THAT YOU ARE USING! + +COMMERCIAL, GOVERNMENT, AND INSTITUTIONAL USERS MUST REGISTER THEIR +COPIES OF XV. + +This does *not* mean that you are required to register XV just because +you play with it on the workstation in your office. This falls under +the heading of 'personal use'. If you are a sysadmin, you can put XV +up in a public directory for your users amusement. Again, 'personal +use', albeit plural. + +On the other hand, if you use XV in the course of doing your work, +whatever your 'work' may happen to be, you *must* register your +copy of XV. (Note: If you are a student, and you use XV to do +classwork or research, you should get your professor/teacher/advisor +to purchase an appropriate number of copies.) + +XV licenses are $25 each. You should purchase one license per +workstation, or one per XV user, whichever is the smaller number. XV +is *not* sold on a 'number of concurrent users' basis. If XV was some +$1000 program, yes, that would be a reasonable request, but at $25, +it's not. Also, given that XV is completely unlocked, there is no way +to enforce any 'number of concurrent users' limits, so it isn't sold +that way. + +Printed and bound copies of the 100-odd page XV manual are available +for $15 each. Note that manuals are *only* sold with, at minimum, an +equal number of licenses. (e.g. if you purchase 5 licenses, you can +also purchase *up to* 5 copies of the manual) + +The source code to the program can be had (as a compressed 'tar' file +split over a couple 3.5" MS-DOS formatted floppies) for $15, for those +who don't have ftp capabilities. + +Orders outside the US and Canada must add an additional $5 per manual +ordered to cover the additional shipping charges. + +Checks, money orders, and purchase orders are accepted. Credit cards +are not. All forms of payment must be payable in US Funds. Checks +must be payable through a US bank (or a US branch of a non-US bank). +Purchase orders for less than $50, while still accepted, are not +encouraged. + +All payments should be payable to 'John Bradley', and mailed to: + John Bradley + 1053 Floyd Terrace + Bryn Mawr, PA 19010 + USA + + +Site Licenses +------------- +If you are planning to purchase 10 or more licenses, site licenses are +available, at a substantial discount. Site licenses let you run XV on +any and all computing equipment at the site, for any purpose +whatsoever. The site license covers the current version of XV, and +any versions released within one year of the licensing date. You are +also allowed to duplicate and distribute an unlimited number of copies +of the XV manual, but only for use within the site. Covered versions +of the software may be run in perpetuity. + +Also, it should be noted that a 'site' can be defined as anything +you'd like. It can be a physical location (a room, building, +location, etc.), an organizational grouping (a workgroup, department, +division, etc.) or any other logical grouping ("the seventeen +technical writers scattered about our company", etc.). + +The site license cost will be based on your estimate of the number of +XV users or workstations at your site, whichever is the smaller +number. + +If you are interested in obtaining a site license, please contact the +author via electronic mail or FAX (see below for details). Send +information regarding your site (the name or definition of the 'site', +a physical address, a fax number, and an estimate of the number of +users or workstations), and we'll get a site license out to you for +your examination. + + +Copyright Notice +---------------- +XV is Copyright 1989, 1994 by John Bradley + +Permission to copy and distribute XV in its entirety, for +non-commercial purposes, is hereby granted without fee, provided that +this license information and copyright notice appear in all copies. + +If you redistribute XV, the *entire* contents of this distribution +must be distributed, including the README, and INSTALL files, the +sources, and the complete contents of the 'docs' directory. + +Note that distributing XV 'bundled' in with any product is considered +to be a 'commercial purpose'. + +Also note that any copies of XV that are distributed MUST be built +and/or configured to be in their 'unregistered copy' mode, so that it +is made obvious to the user that XV is shareware, and that they should +consider registering, or at least reading this information. + +The software may be modified for your own purposes, but modified +versions may not be distributed without prior consent of the author. + +This software is provided 'as-is', without any express or implied +warranty. In no event will the author be held liable for any damages +arising from the use of this software. + +If you would like to do something with XV that this copyright +prohibits (such as distributing it with a commercial product, using +portions of the source in some other program, distributing registered +copies, etc.), please contact the author (preferably via email). +Arrangements can probably be worked out. + + +The author may be contacted via: + US Mail: John Bradley + 1053 Floyd Terrace + Bryn Mawr, PA 19010 + + FAX: (610) 520-2042 + +Electronic Mail regarding XV should be sent to one of these three addresses: + x...@devo.dccs.upenn.edu - general XV questions + xv...@devo.dccs.upenn.edu - all XV licensing questions + xvt...@devo.dccs.upenn.edu - bug reports, technical questions + +Please do *not* send electronic mail directly to the author, as he +gets more than enough as it is. + + Deleted: community-i686/xv-3.10a-libpng15.patch =================================================================== --- community-i686/xv-3.10a-libpng15.patch 2016-11-22 17:38:21 UTC (rev 196547) +++ community-i686/xv-3.10a-libpng15.patch 2016-11-22 17:38:34 UTC (rev 196548) @@ -1,520 +0,0 @@ ---- xvinfo.c -+++ xvinfo.c -@@ -26,7 +26,7 @@ - #define INFOHIGH 270 - - /* max length of an Info String */ --#define ISTRLEN 80 -+#define ISTRLEN 256 - - /* baseline of top line of text */ - #define TOPBASE (36 + penn_height/2 + 4 + 8 + ASCENT) ---- xvpng.c -+++ xvpng.c -@@ -31,6 +31,7 @@ - - #ifdef HAVE_PNG - -+#include "zlib.h" - #include "png.h" - - /*** Stuff for PNG Dialog box ***/ -@@ -41,7 +42,9 @@ - #define COMPRESSION 6 /* default zlib compression level, not max - (Z_BEST_COMPRESSION) */ - --#define HAVE_tRNS (info_ptr->valid & PNG_INFO_tRNS) -+/* old -+#define HAVE_tRNS (info_ptr->valid & PNG_INFO_tRNS) */ -+#define HAVE_tRNS png_get_valid(png_ptr,info_ptr,PNG_INFO_tRNS) - - #define DWIDE 86 - #define DHIGH 104 -@@ -444,6 +447,10 @@ - byte *p, *png_line; - char software[256]; - char *savecmnt; -+ /* for storing values until all are accumulated, so that the image header can be set in full */ -+ int _bit_depth,_color_type,_interlace_type,_compression_type,_filter_type; -+ png_uint_32 _width,_height; -+ png_time _mod_time; - - if ((png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, - png_xv_error, png_xv_warning)) == NULL) { -@@ -458,7 +465,7 @@ - FatalError(software); - } - -- if (setjmp(png_ptr->jmpbuf)) { -+ if (setjmp(png_jmpbuf(png_ptr))) { - png_destroy_write_struct(&png_ptr, &info_ptr); - return -1; - } -@@ -489,8 +496,8 @@ - png_set_filter(png_ptr, 0, filter); - } - -- info_ptr->width = w; -- info_ptr->height = h; -+ _width = w; -+ _height = h; - if (w <= 0 || h <= 0) { - SetISTR(ISTR_WARNING, "%s: image dimensions out of range (%dx%d)", - fbasename, w, h); -@@ -498,7 +505,7 @@ - return -1; - } - -- info_ptr->interlace_type = interCB.val ? 1 : 0; -+ _interlace_type = interCB.val ? PNG_INTERLACE_ADAM7 : PNG_INTERLACE_NONE; - - linesize = 0; /* quiet a compiler warning */ - -@@ -542,40 +549,44 @@ - png_destroy_write_struct(&png_ptr, &info_ptr); - return -1; - } -- info_ptr->color_type = PNG_COLOR_TYPE_RGB; -- info_ptr->bit_depth = 8; -+ _color_type = PNG_COLOR_TYPE_RGB; -+ _bit_depth = 8; - } else /* ptype == PIC8 */ { - linesize = w; -- info_ptr->color_type = PNG_COLOR_TYPE_PALETTE; -+ _color_type = PNG_COLOR_TYPE_PALETTE; - if (numuniqcols <= 2) -- info_ptr->bit_depth = 1; -+ _bit_depth = 1; - else - if (numuniqcols <= 4) -- info_ptr->bit_depth = 2; -+ _bit_depth = 2; - else - if (numuniqcols <= 16) -- info_ptr->bit_depth = 4; -+ _bit_depth = 4; - else -- info_ptr->bit_depth = 8; -+ _bit_depth = 8; - - for (i = 0; i < numuniqcols; i++) { - palette[i].red = r1[i]; - palette[i].green = g1[i]; - palette[i].blue = b1[i]; - } -- info_ptr->num_palette = numuniqcols; -- info_ptr->palette = palette; -+/* cannot find a setter for this, unsure if it is necessary anymore... - info_ptr->valid |= PNG_INFO_PLTE; -+*/ -+ /* set the header just in case it's needed */ -+ png_set_IHDR(png_ptr,info_ptr,_width,_height,_bit_depth,_color_type, -+ _interlace_type,PNG_COMPRESSION_TYPE_DEFAULT,PNG_FILTER_TYPE_DEFAULT); -+ png_set_PLTE(png_ptr,info_ptr,palette,numuniqcols); - } - } - - else if (colorType == F_GREYSCALE || colorType == F_BWDITHER) { -- info_ptr->color_type = PNG_COLOR_TYPE_GRAY; -+ _color_type = PNG_COLOR_TYPE_GRAY; - if (colorType == F_BWDITHER) { - /* shouldn't happen */ - if (ptype == PIC24) FatalError("PIC24 and B/W Stipple in WritePNG()"); - -- info_ptr->bit_depth = 1; -+ _bit_depth = 1; - if (MONO(r1[0], g1[0], b1[0]) > MONO(r1[1], g1[1], b1[1])) { - remap[0] = 1; - remap[1] = 0; -@@ -595,7 +606,7 @@ - png_destroy_write_struct(&png_ptr, &info_ptr); - return -1; - } -- info_ptr->bit_depth = 8; -+ _bit_depth = 8; - } - else /* ptype == PIC8 */ { - int low_precision; -@@ -617,7 +628,7 @@ - for (; i < 256; i++) - remap[i]=0; /* shouldn't be necessary, but... */ - -- info_ptr->bit_depth = 8; -+ _bit_depth = 8; - - /* Note that this fails most of the time because of gamma */ - /* (and that would be a bug: GRR FIXME) */ -@@ -636,7 +647,7 @@ - for (i = 0; i < numuniqcols; i++) { - remap[i] &= 0xf; - } -- info_ptr->bit_depth = 4; -+ _bit_depth = 4; - - /* try to adjust to 2-bit precision grayscale */ - -@@ -652,7 +663,7 @@ - for (i = 0; i < numuniqcols; i++) { - remap[i] &= 3; - } -- info_ptr->bit_depth = 2; -+ _bit_depth = 2; - - /* try to adjust to 1-bit precision grayscale */ - -@@ -668,7 +679,7 @@ - for (i = 0; i < numuniqcols; i++) { - remap[i] &= 1; - } -- info_ptr->bit_depth = 1; -+ _bit_depth = 1; - } - } - } -@@ -677,6 +688,9 @@ - else - png_error(png_ptr, "Unknown colorstyle in WritePNG"); - -+ png_set_IHDR(png_ptr,info_ptr,_width,_height,_bit_depth,_color_type, -+ _interlace_type,PNG_COMPRESSION_TYPE_DEFAULT,PNG_FILTER_TYPE_DEFAULT); -+ - if ((text = (png_textp)malloc(sizeof(png_text)))) { - sprintf(software, "XV %s", REVDATE); - -@@ -685,20 +699,22 @@ - text->text = software; - text->text_length = strlen(text->text); - -- info_ptr->max_text = 1; -- info_ptr->num_text = 1; -- info_ptr->text = text; -+/* max_text seems to be internal only now, do not set -+ info_ptr->max_text = 1; */ -+ png_set_text(png_ptr,info_ptr,text,1); - } - - Display_Gamma = gDial.val; /* Save the current gamma for loading */ - - // GRR FIXME: add .Xdefaults option to omit writing gamma (size, cumulative errors when editing)--alternatively, modify save box to include "omit" checkbox -- info_ptr->gamma = 1.0/gDial.val; -- info_ptr->valid |= PNG_INFO_gAMA; -+ png_set_gAMA(png_ptr,info_ptr,1.0/gDial.val); -+/* doesn't seem to be a way to set valid directly anymore, unnecessary maybe.. -+ info_ptr->valid |= PNG_INFO_gAMA; */ - -+/* might need to be png_write_info_before_PLTE() ... */ - png_write_info(png_ptr, info_ptr); - -- if (info_ptr->bit_depth < 8) -+ if (_bit_depth < 8) - png_set_packing(png_ptr); - - pass=png_set_interlace_handling(png_ptr); -@@ -711,13 +727,13 @@ - int j; - p = pic; - for (j = 0; j < h; ++j) { -- if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY) { -+ if (_color_type == PNG_COLOR_TYPE_GRAY) { - int k; - for (k = 0; k < w; ++k) - png_line[k] = ptype==PIC24 ? MONO(p[k*3], p[k*3+1], p[k*3+2]) : - remap[pc2nc[p[k]]]; - png_write_row(png_ptr, png_line); -- } else if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) { -+ } else if (_color_type == PNG_COLOR_TYPE_PALETTE) { - int k; - for (k = 0; k < w; ++k) - png_line[k] = pc2nc[p[k]]; -@@ -739,28 +755,31 @@ - (savecmnt = (char *)malloc((strlen(picComments) + 1)*sizeof(char)))) { - png_textp tp; - char *comment, *key; -+ int nt; -+ int mt; - - strcpy(savecmnt, picComments); - key = savecmnt; -+ png_get_text(png_ptr,info_ptr,&tp,&mt); /* to get 'max_text' */ - tp = text; -- info_ptr->num_text = 0; -+ nt = 0; - - comment = strchr(key, ':'); - - do { - /* Allocate a larger structure for comments if necessary */ -- if (info_ptr->num_text >= info_ptr->max_text) -+ if (nt >= mt) - { - if ((tp = -- realloc(text, (info_ptr->num_text + 2)*sizeof(png_text))) == NULL) -+ realloc(text, (nt + 2)*sizeof(png_text))) == NULL) - { - break; - } - else - { - text = tp; -- tp = &text[info_ptr->num_text]; -- info_ptr->max_text += 2; -+ tp = &text[nt]; -+ mt += 2; - } - } - -@@ -810,7 +829,7 @@ - } - - tp->compression = tp->text_length > 640 ? 0 : -1; -- info_ptr->num_text++; -+ nt++; - tp++; - } - } -@@ -834,27 +853,29 @@ - tp->text = key; - tp->text_length = q - key; - tp->compression = tp->text_length > 750 ? 0 : -1; -- info_ptr->num_text++; -+ nt++; - key = NULL; - } - } while (key && *key); -+ png_set_text(png_ptr,info_ptr,text,nt); - } - else { -- info_ptr->num_text = 0; -+ png_set_text(png_ptr,info_ptr,text,0); - } - } -- info_ptr->text = text; - -- png_convert_from_time_t(&(info_ptr->mod_time), time(NULL)); -- info_ptr->valid |= PNG_INFO_tIME; -+ png_convert_from_time_t(&_mod_time, time(NULL)); -+ png_set_tIME(png_ptr,info_ptr,&_mod_time); -+/* dunno how to set validity -+ info_ptr->valid |= PNG_INFO_tIME; */ - - png_write_end(png_ptr, info_ptr); - fflush(fp); /* just in case we core-dump before finishing... */ - - if (text) { - free(text); -- /* must do this or png_destroy_write_struct() 0.97+ will free text again: */ -- info_ptr->text = (png_textp)NULL; -+ /* must do this or png_destroy_write_struct() 0.97+ will free text again: -+ info_ptr->text = (png_textp)NULL; */ - if (savecmnt) - { - free(savecmnt); -@@ -886,6 +907,14 @@ - int pass; - int gray_to_rgb; - size_t commentsize; -+ /* temp storage vars for libpng15 migration */ -+ int _bit_depth,_color_type,_interlace_type,_compression_type,_filter_type,_num_text,_num_palette; -+ png_uint_32 _width,_height; -+ png_timep _mod_time; -+ double _gamma; -+ png_textp _text; -+ png_colorp _palette; -+ png_color_16p _background; - - fbasename = BaseName(fname); - -@@ -921,7 +950,7 @@ - FatalError("malloc failure in LoadPNG"); - } - -- if (setjmp(png_ptr->jmpbuf)) { -+ if (setjmp(png_jmpbuf(png_ptr))) { - fclose(fp); - png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); - if (!read_anything) { -@@ -945,8 +974,10 @@ - #endif - png_read_info(png_ptr, info_ptr); - -- pinfo->w = pinfo->normw = info_ptr->width; -- pinfo->h = pinfo->normh = info_ptr->height; -+ png_get_IHDR(png_ptr,info_ptr,&_width,&_height,&_bit_depth,&_color_type,&_interlace_type,NULL,NULL); -+ -+ pinfo->w = pinfo->normw = _width; -+ pinfo->h = pinfo->normh = _height; - if (pinfo->w <= 0 || pinfo->h <= 0) { - SetISTR(ISTR_WARNING, "%s: image dimensions out of range (%dx%d)", - fbasename, pinfo->w, pinfo->h); -@@ -957,9 +988,9 @@ - pinfo->frmType = F_PNG; - - sprintf(pinfo->fullInfo, "PNG, %d bit ", -- info_ptr->bit_depth * info_ptr->channels); -+ _bit_depth * png_get_channels(png_ptr,info_ptr)); - -- switch(info_ptr->color_type) { -+ switch(_color_type) { - case PNG_COLOR_TYPE_PALETTE: - strcat(pinfo->fullInfo, "palette color"); - break; -@@ -983,15 +1014,17 @@ - - sprintf(pinfo->fullInfo + strlen(pinfo->fullInfo), - ", %sinterlaced. (%d bytes)", -- info_ptr->interlace_type ? "" : "non-", filesize); -+ _interlace_type ? "" : "non-", filesize); - -- sprintf(pinfo->shrtInfo, "%lux%lu PNG", info_ptr->width, info_ptr->height); -+ sprintf(pinfo->shrtInfo, "%lux%lu PNG", _width, _height); - -- if (info_ptr->bit_depth < 8) -+ if (_bit_depth < 8) - png_set_packing(png_ptr); - -- if (info_ptr->valid & PNG_INFO_gAMA) -- png_set_gamma(png_ptr, Display_Gamma, info_ptr->gamma); -+ if (png_get_valid(png_ptr,info_ptr,PNG_INFO_gAMA)) { -+ png_get_gAMA(png_ptr,info_ptr,&_gamma); -+ png_set_gamma(png_ptr, Display_Gamma, _gamma); -+ } - /* - *else - * png_set_gamma(png_ptr, Display_Gamma, 0.45); -@@ -1000,7 +1033,7 @@ - gray_to_rgb = 0; /* quiet a compiler warning */ - - if (have_imagebg) { -- if (info_ptr->bit_depth == 16) { -+ if (_bit_depth == 16) { - my_background.red = imagebgR; - my_background.green = imagebgG; - my_background.blue = imagebgB; -@@ -1013,8 +1046,8 @@ - } - png_set_background(png_ptr, &my_background, PNG_BACKGROUND_GAMMA_SCREEN, - 0, Display_Gamma); -- if ((info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA || -- (info_ptr->color_type == PNG_COLOR_TYPE_GRAY && HAVE_tRNS)) && -+ if ((_color_type == PNG_COLOR_TYPE_GRAY_ALPHA || -+ (_color_type == PNG_COLOR_TYPE_GRAY && HAVE_tRNS)) && - (imagebgR != imagebgG || imagebgR != imagebgB)) /* i.e., colored bg */ - { - png_set_gray_to_rgb(png_ptr); -@@ -1022,8 +1055,9 @@ - gray_to_rgb = 1; - } - } else { -- if (info_ptr->valid & PNG_INFO_bKGD) { -- png_set_background(png_ptr, &info_ptr->background, -+ if (png_get_valid(png_ptr,info_ptr,PNG_INFO_bKGD)) { -+ png_get_bKGD(png_ptr,info_ptr,&_background); -+ png_set_background(png_ptr, _background, - PNG_BACKGROUND_GAMMA_FILE, 1, 1.0); - } else { - my_background.red = my_background.green = my_background.blue = -@@ -1033,13 +1067,13 @@ - } - } - -- if (info_ptr->bit_depth == 16) -+ if (_bit_depth == 16) - png_set_strip_16(png_ptr); - -- if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY || -- info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) -+ if (_color_type == PNG_COLOR_TYPE_GRAY || -+ _color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - { -- if (info_ptr->bit_depth == 1) -+ if (_bit_depth == 1) - pinfo->colType = F_BWDITHER; - else - pinfo->colType = F_GREYSCALE; -@@ -1049,9 +1083,11 @@ - pass=png_set_interlace_handling(png_ptr); - - png_read_update_info(png_ptr, info_ptr); -+ /* get HIDR again just in case the info_ptr changed */ -+ png_get_IHDR(png_ptr,info_ptr,&_width,&_height,&_bit_depth,&_color_type,&_interlace_type,NULL,NULL); - -- if (info_ptr->color_type == PNG_COLOR_TYPE_RGB || -- info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA || gray_to_rgb) -+ if (_color_type == PNG_COLOR_TYPE_RGB || -+ _color_type == PNG_COLOR_TYPE_RGB_ALPHA || gray_to_rgb) - { - linesize = 3 * pinfo->w; - if (linesize/3 < pinfo->w) { /* know pinfo->w > 0 (see above) */ -@@ -1065,16 +1101,17 @@ - } else { - linesize = pinfo->w; - pinfo->type = PIC8; -- if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY || -- info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) { -+ if (_color_type == PNG_COLOR_TYPE_GRAY || -+ _color_type == PNG_COLOR_TYPE_GRAY_ALPHA) { - for (i = 0; i < 256; i++) - pinfo->r[i] = pinfo->g[i] = pinfo->b[i] = i; - } else { - pinfo->colType = F_FULLCOLOR; -- for (i = 0; i < info_ptr->num_palette; i++) { -- pinfo->r[i] = info_ptr->palette[i].red; -- pinfo->g[i] = info_ptr->palette[i].green; -- pinfo->b[i] = info_ptr->palette[i].blue; -+ png_get_PLTE(png_ptr,info_ptr,&_palette,&_num_palette); -+ for (i = 0; i < _num_palette; i++) { -+ pinfo->r[i] = _palette[i].red; -+ pinfo->g[i] = _palette[i].green; -+ pinfo->b[i] = _palette[i].blue; - } - } - } -@@ -1092,7 +1129,7 @@ - png_error(png_ptr, "can't allocate space for PNG image"); - } - -- png_start_read_image(png_ptr); -+ /*png_start_read_image(png_ptr); -- causes a warning and seems to be unnecessary */ - - for (i = 0; i < pass; i++) { - byte *p = pinfo->pic; -@@ -1106,22 +1143,23 @@ - - png_read_end(png_ptr, info_ptr); - -- if (info_ptr->num_text > 0) { -+ png_get_text(png_ptr,info_ptr,&_text,&_num_text); -+ if (_num_text > 0) { - commentsize = 1; - -- for (i = 0; i < info_ptr->num_text; i++) -- commentsize += strlen(info_ptr->text[i].key) + 1 + -- info_ptr->text[i].text_length + 2; -+ for (i = 0; i < _num_text; i++) -+ commentsize += strlen(_text[i].key) + 1 + -+ _text[i].text_length + 2; - - if ((pinfo->comment = malloc(commentsize)) == NULL) { - png_warning(png_ptr,"can't allocate comment string"); - } - else { - pinfo->comment[0] = '\0'; -- for (i = 0; i < info_ptr->num_text; i++) { -- strcat(pinfo->comment, info_ptr->text[i].key); -+ for (i = 0; i < _num_text; i++) { -+ strcat(pinfo->comment, _text[i].key); - strcat(pinfo->comment, "::"); -- strcat(pinfo->comment, info_ptr->text[i].text); -+ strcat(pinfo->comment, _text[i].text); - strcat(pinfo->comment, "\n"); - } - } -@@ -1143,7 +1181,7 @@ - { - SetISTR(ISTR_WARNING,"%s: libpng error: %s", fbasename, message); - -- longjmp(png_ptr->jmpbuf, 1); -+ longjmp(png_jmpbuf(png_ptr), 1); - } - - Copied: xv/repos/community-i686/xv-3.10a-libpng15.patch (from rev 196547, xv/trunk/xv-3.10a-libpng15.patch) =================================================================== --- community-i686/xv-3.10a-libpng15.patch (rev 0) +++ community-i686/xv-3.10a-libpng15.patch 2016-11-22 17:38:34 UTC (rev 196548) @@ -0,0 +1,520 @@ +--- xvinfo.c ++++ xvinfo.c +@@ -26,7 +26,7 @@ + #define INFOHIGH 270 + + /* max length of an Info String */ +-#define ISTRLEN 80 ++#define ISTRLEN 256 + + /* baseline of top line of text */ + #define TOPBASE (36 + penn_height/2 + 4 + 8 + ASCENT) +--- xvpng.c ++++ xvpng.c +@@ -31,6 +31,7 @@ + + #ifdef HAVE_PNG + ++#include "zlib.h" + #include "png.h" + + /*** Stuff for PNG Dialog box ***/ +@@ -41,7 +42,9 @@ + #define COMPRESSION 6 /* default zlib compression level, not max + (Z_BEST_COMPRESSION) */ + +-#define HAVE_tRNS (info_ptr->valid & PNG_INFO_tRNS) ++/* old ++#define HAVE_tRNS (info_ptr->valid & PNG_INFO_tRNS) */ ++#define HAVE_tRNS png_get_valid(png_ptr,info_ptr,PNG_INFO_tRNS) + + #define DWIDE 86 + #define DHIGH 104 +@@ -444,6 +447,10 @@ + byte *p, *png_line; + char software[256]; + char *savecmnt; ++ /* for storing values until all are accumulated, so that the image header can be set in full */ ++ int _bit_depth,_color_type,_interlace_type,_compression_type,_filter_type; ++ png_uint_32 _width,_height; ++ png_time _mod_time; + + if ((png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, + png_xv_error, png_xv_warning)) == NULL) { +@@ -458,7 +465,7 @@ + FatalError(software); + } + +- if (setjmp(png_ptr->jmpbuf)) { ++ if (setjmp(png_jmpbuf(png_ptr))) { + png_destroy_write_struct(&png_ptr, &info_ptr); + return -1; + } +@@ -489,8 +496,8 @@ + png_set_filter(png_ptr, 0, filter); + } + +- info_ptr->width = w; +- info_ptr->height = h; ++ _width = w; ++ _height = h; + if (w <= 0 || h <= 0) { + SetISTR(ISTR_WARNING, "%s: image dimensions out of range (%dx%d)", + fbasename, w, h); +@@ -498,7 +505,7 @@ + return -1; + } + +- info_ptr->interlace_type = interCB.val ? 1 : 0; ++ _interlace_type = interCB.val ? PNG_INTERLACE_ADAM7 : PNG_INTERLACE_NONE; + + linesize = 0; /* quiet a compiler warning */ + +@@ -542,40 +549,44 @@ + png_destroy_write_struct(&png_ptr, &info_ptr); + return -1; + } +- info_ptr->color_type = PNG_COLOR_TYPE_RGB; +- info_ptr->bit_depth = 8; ++ _color_type = PNG_COLOR_TYPE_RGB; ++ _bit_depth = 8; + } else /* ptype == PIC8 */ { + linesize = w; +- info_ptr->color_type = PNG_COLOR_TYPE_PALETTE; ++ _color_type = PNG_COLOR_TYPE_PALETTE; + if (numuniqcols <= 2) +- info_ptr->bit_depth = 1; ++ _bit_depth = 1; + else + if (numuniqcols <= 4) +- info_ptr->bit_depth = 2; ++ _bit_depth = 2; + else + if (numuniqcols <= 16) +- info_ptr->bit_depth = 4; ++ _bit_depth = 4; + else +- info_ptr->bit_depth = 8; ++ _bit_depth = 8; + + for (i = 0; i < numuniqcols; i++) { + palette[i].red = r1[i]; + palette[i].green = g1[i]; + palette[i].blue = b1[i]; + } +- info_ptr->num_palette = numuniqcols; +- info_ptr->palette = palette; ++/* cannot find a setter for this, unsure if it is necessary anymore... + info_ptr->valid |= PNG_INFO_PLTE; ++*/ ++ /* set the header just in case it's needed */ ++ png_set_IHDR(png_ptr,info_ptr,_width,_height,_bit_depth,_color_type, ++ _interlace_type,PNG_COMPRESSION_TYPE_DEFAULT,PNG_FILTER_TYPE_DEFAULT); ++ png_set_PLTE(png_ptr,info_ptr,palette,numuniqcols); + } + } + + else if (colorType == F_GREYSCALE || colorType == F_BWDITHER) { +- info_ptr->color_type = PNG_COLOR_TYPE_GRAY; ++ _color_type = PNG_COLOR_TYPE_GRAY; + if (colorType == F_BWDITHER) { + /* shouldn't happen */ + if (ptype == PIC24) FatalError("PIC24 and B/W Stipple in WritePNG()"); + +- info_ptr->bit_depth = 1; ++ _bit_depth = 1; + if (MONO(r1[0], g1[0], b1[0]) > MONO(r1[1], g1[1], b1[1])) { + remap[0] = 1; + remap[1] = 0; +@@ -595,7 +606,7 @@ + png_destroy_write_struct(&png_ptr, &info_ptr); + return -1; + } +- info_ptr->bit_depth = 8; ++ _bit_depth = 8; + } + else /* ptype == PIC8 */ { + int low_precision; +@@ -617,7 +628,7 @@ + for (; i < 256; i++) + remap[i]=0; /* shouldn't be necessary, but... */ + +- info_ptr->bit_depth = 8; ++ _bit_depth = 8; + + /* Note that this fails most of the time because of gamma */ + /* (and that would be a bug: GRR FIXME) */ +@@ -636,7 +647,7 @@ + for (i = 0; i < numuniqcols; i++) { + remap[i] &= 0xf; + } +- info_ptr->bit_depth = 4; ++ _bit_depth = 4; + + /* try to adjust to 2-bit precision grayscale */ + +@@ -652,7 +663,7 @@ + for (i = 0; i < numuniqcols; i++) { + remap[i] &= 3; + } +- info_ptr->bit_depth = 2; ++ _bit_depth = 2; + + /* try to adjust to 1-bit precision grayscale */ + +@@ -668,7 +679,7 @@ + for (i = 0; i < numuniqcols; i++) { + remap[i] &= 1; + } +- info_ptr->bit_depth = 1; ++ _bit_depth = 1; + } + } + } +@@ -677,6 +688,9 @@ + else + png_error(png_ptr, "Unknown colorstyle in WritePNG"); + ++ png_set_IHDR(png_ptr,info_ptr,_width,_height,_bit_depth,_color_type, ++ _interlace_type,PNG_COMPRESSION_TYPE_DEFAULT,PNG_FILTER_TYPE_DEFAULT); ++ + if ((text = (png_textp)malloc(sizeof(png_text)))) { + sprintf(software, "XV %s", REVDATE); + +@@ -685,20 +699,22 @@ + text->text = software; + text->text_length = strlen(text->text); + +- info_ptr->max_text = 1; +- info_ptr->num_text = 1; +- info_ptr->text = text; ++/* max_text seems to be internal only now, do not set ++ info_ptr->max_text = 1; */ ++ png_set_text(png_ptr,info_ptr,text,1); + } + + Display_Gamma = gDial.val; /* Save the current gamma for loading */ + + // GRR FIXME: add .Xdefaults option to omit writing gamma (size, cumulative errors when editing)--alternatively, modify save box to include "omit" checkbox +- info_ptr->gamma = 1.0/gDial.val; +- info_ptr->valid |= PNG_INFO_gAMA; ++ png_set_gAMA(png_ptr,info_ptr,1.0/gDial.val); ++/* doesn't seem to be a way to set valid directly anymore, unnecessary maybe.. ++ info_ptr->valid |= PNG_INFO_gAMA; */ + ++/* might need to be png_write_info_before_PLTE() ... */ + png_write_info(png_ptr, info_ptr); + +- if (info_ptr->bit_depth < 8) ++ if (_bit_depth < 8) + png_set_packing(png_ptr); + + pass=png_set_interlace_handling(png_ptr); +@@ -711,13 +727,13 @@ + int j; + p = pic; + for (j = 0; j < h; ++j) { +- if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY) { ++ if (_color_type == PNG_COLOR_TYPE_GRAY) { + int k; + for (k = 0; k < w; ++k) + png_line[k] = ptype==PIC24 ? MONO(p[k*3], p[k*3+1], p[k*3+2]) : + remap[pc2nc[p[k]]]; + png_write_row(png_ptr, png_line); +- } else if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) { ++ } else if (_color_type == PNG_COLOR_TYPE_PALETTE) { + int k; + for (k = 0; k < w; ++k) + png_line[k] = pc2nc[p[k]]; +@@ -739,28 +755,31 @@ + (savecmnt = (char *)malloc((strlen(picComments) + 1)*sizeof(char)))) { + png_textp tp; + char *comment, *key; ++ int nt; ++ int mt; + + strcpy(savecmnt, picComments); + key = savecmnt; ++ png_get_text(png_ptr,info_ptr,&tp,&mt); /* to get 'max_text' */ + tp = text; +- info_ptr->num_text = 0; ++ nt = 0; + + comment = strchr(key, ':'); + + do { + /* Allocate a larger structure for comments if necessary */ +- if (info_ptr->num_text >= info_ptr->max_text) ++ if (nt >= mt) + { + if ((tp = +- realloc(text, (info_ptr->num_text + 2)*sizeof(png_text))) == NULL) ++ realloc(text, (nt + 2)*sizeof(png_text))) == NULL) + { + break; + } + else + { + text = tp; +- tp = &text[info_ptr->num_text]; +- info_ptr->max_text += 2; ++ tp = &text[nt]; ++ mt += 2; + } + } + +@@ -810,7 +829,7 @@ + } + + tp->compression = tp->text_length > 640 ? 0 : -1; +- info_ptr->num_text++; ++ nt++; + tp++; + } + } +@@ -834,27 +853,29 @@ + tp->text = key; + tp->text_length = q - key; + tp->compression = tp->text_length > 750 ? 0 : -1; +- info_ptr->num_text++; ++ nt++; + key = NULL; + } + } while (key && *key); ++ png_set_text(png_ptr,info_ptr,text,nt); + } + else { +- info_ptr->num_text = 0; ++ png_set_text(png_ptr,info_ptr,text,0); + } + } +- info_ptr->text = text; + +- png_convert_from_time_t(&(info_ptr->mod_time), time(NULL)); +- info_ptr->valid |= PNG_INFO_tIME; ++ png_convert_from_time_t(&_mod_time, time(NULL)); ++ png_set_tIME(png_ptr,info_ptr,&_mod_time); ++/* dunno how to set validity ++ info_ptr->valid |= PNG_INFO_tIME; */ + + png_write_end(png_ptr, info_ptr); + fflush(fp); /* just in case we core-dump before finishing... */ + + if (text) { + free(text); +- /* must do this or png_destroy_write_struct() 0.97+ will free text again: */ +- info_ptr->text = (png_textp)NULL; ++ /* must do this or png_destroy_write_struct() 0.97+ will free text again: ++ info_ptr->text = (png_textp)NULL; */ + if (savecmnt) + { + free(savecmnt); +@@ -886,6 +907,14 @@ + int pass; + int gray_to_rgb; + size_t commentsize; ++ /* temp storage vars for libpng15 migration */ ++ int _bit_depth,_color_type,_interlace_type,_compression_type,_filter_type,_num_text,_num_palette; ++ png_uint_32 _width,_height; ++ png_timep _mod_time; ++ double _gamma; ++ png_textp _text; ++ png_colorp _palette; ++ png_color_16p _background; + + fbasename = BaseName(fname); + +@@ -921,7 +950,7 @@ + FatalError("malloc failure in LoadPNG"); + } + +- if (setjmp(png_ptr->jmpbuf)) { ++ if (setjmp(png_jmpbuf(png_ptr))) { + fclose(fp); + png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); + if (!read_anything) { +@@ -945,8 +974,10 @@ + #endif + png_read_info(png_ptr, info_ptr); + +- pinfo->w = pinfo->normw = info_ptr->width; +- pinfo->h = pinfo->normh = info_ptr->height; ++ png_get_IHDR(png_ptr,info_ptr,&_width,&_height,&_bit_depth,&_color_type,&_interlace_type,NULL,NULL); ++ ++ pinfo->w = pinfo->normw = _width; ++ pinfo->h = pinfo->normh = _height; + if (pinfo->w <= 0 || pinfo->h <= 0) { + SetISTR(ISTR_WARNING, "%s: image dimensions out of range (%dx%d)", + fbasename, pinfo->w, pinfo->h); +@@ -957,9 +988,9 @@ + pinfo->frmType = F_PNG; + + sprintf(pinfo->fullInfo, "PNG, %d bit ", +- info_ptr->bit_depth * info_ptr->channels); ++ _bit_depth * png_get_channels(png_ptr,info_ptr)); + +- switch(info_ptr->color_type) { ++ switch(_color_type) { + case PNG_COLOR_TYPE_PALETTE: + strcat(pinfo->fullInfo, "palette color"); + break; +@@ -983,15 +1014,17 @@ + + sprintf(pinfo->fullInfo + strlen(pinfo->fullInfo), + ", %sinterlaced. (%d bytes)", +- info_ptr->interlace_type ? "" : "non-", filesize); ++ _interlace_type ? "" : "non-", filesize); + +- sprintf(pinfo->shrtInfo, "%lux%lu PNG", info_ptr->width, info_ptr->height); ++ sprintf(pinfo->shrtInfo, "%lux%lu PNG", _width, _height); + +- if (info_ptr->bit_depth < 8) ++ if (_bit_depth < 8) + png_set_packing(png_ptr); + +- if (info_ptr->valid & PNG_INFO_gAMA) +- png_set_gamma(png_ptr, Display_Gamma, info_ptr->gamma); ++ if (png_get_valid(png_ptr,info_ptr,PNG_INFO_gAMA)) { ++ png_get_gAMA(png_ptr,info_ptr,&_gamma); ++ png_set_gamma(png_ptr, Display_Gamma, _gamma); ++ } + /* + *else + * png_set_gamma(png_ptr, Display_Gamma, 0.45); +@@ -1000,7 +1033,7 @@ + gray_to_rgb = 0; /* quiet a compiler warning */ + + if (have_imagebg) { +- if (info_ptr->bit_depth == 16) { ++ if (_bit_depth == 16) { + my_background.red = imagebgR; + my_background.green = imagebgG; + my_background.blue = imagebgB; +@@ -1013,8 +1046,8 @@ + } + png_set_background(png_ptr, &my_background, PNG_BACKGROUND_GAMMA_SCREEN, + 0, Display_Gamma); +- if ((info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA || +- (info_ptr->color_type == PNG_COLOR_TYPE_GRAY && HAVE_tRNS)) && ++ if ((_color_type == PNG_COLOR_TYPE_GRAY_ALPHA || ++ (_color_type == PNG_COLOR_TYPE_GRAY && HAVE_tRNS)) && + (imagebgR != imagebgG || imagebgR != imagebgB)) /* i.e., colored bg */ + { + png_set_gray_to_rgb(png_ptr); +@@ -1022,8 +1055,9 @@ + gray_to_rgb = 1; + } + } else { +- if (info_ptr->valid & PNG_INFO_bKGD) { +- png_set_background(png_ptr, &info_ptr->background, ++ if (png_get_valid(png_ptr,info_ptr,PNG_INFO_bKGD)) { ++ png_get_bKGD(png_ptr,info_ptr,&_background); ++ png_set_background(png_ptr, _background, + PNG_BACKGROUND_GAMMA_FILE, 1, 1.0); + } else { + my_background.red = my_background.green = my_background.blue = +@@ -1033,13 +1067,13 @@ + } + } + +- if (info_ptr->bit_depth == 16) ++ if (_bit_depth == 16) + png_set_strip_16(png_ptr); + +- if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY || +- info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) ++ if (_color_type == PNG_COLOR_TYPE_GRAY || ++ _color_type == PNG_COLOR_TYPE_GRAY_ALPHA) + { +- if (info_ptr->bit_depth == 1) ++ if (_bit_depth == 1) + pinfo->colType = F_BWDITHER; + else + pinfo->colType = F_GREYSCALE; +@@ -1049,9 +1083,11 @@ + pass=png_set_interlace_handling(png_ptr); + + png_read_update_info(png_ptr, info_ptr); ++ /* get HIDR again just in case the info_ptr changed */ ++ png_get_IHDR(png_ptr,info_ptr,&_width,&_height,&_bit_depth,&_color_type,&_interlace_type,NULL,NULL); + +- if (info_ptr->color_type == PNG_COLOR_TYPE_RGB || +- info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA || gray_to_rgb) ++ if (_color_type == PNG_COLOR_TYPE_RGB || ++ _color_type == PNG_COLOR_TYPE_RGB_ALPHA || gray_to_rgb) + { + linesize = 3 * pinfo->w; + if (linesize/3 < pinfo->w) { /* know pinfo->w > 0 (see above) */ +@@ -1065,16 +1101,17 @@ + } else { + linesize = pinfo->w; + pinfo->type = PIC8; +- if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY || +- info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) { ++ if (_color_type == PNG_COLOR_TYPE_GRAY || ++ _color_type == PNG_COLOR_TYPE_GRAY_ALPHA) { + for (i = 0; i < 256; i++) + pinfo->r[i] = pinfo->g[i] = pinfo->b[i] = i; + } else { + pinfo->colType = F_FULLCOLOR; +- for (i = 0; i < info_ptr->num_palette; i++) { +- pinfo->r[i] = info_ptr->palette[i].red; +- pinfo->g[i] = info_ptr->palette[i].green; +- pinfo->b[i] = info_ptr->palette[i].blue; ++ png_get_PLTE(png_ptr,info_ptr,&_palette,&_num_palette); ++ for (i = 0; i < _num_palette; i++) { ++ pinfo->r[i] = _palette[i].red; ++ pinfo->g[i] = _palette[i].green; ++ pinfo->b[i] = _palette[i].blue; + } + } + } +@@ -1092,7 +1129,7 @@ + png_error(png_ptr, "can't allocate space for PNG image"); + } + +- png_start_read_image(png_ptr); ++ /*png_start_read_image(png_ptr); -- causes a warning and seems to be unnecessary */ + + for (i = 0; i < pass; i++) { + byte *p = pinfo->pic; +@@ -1106,22 +1143,23 @@ + + png_read_end(png_ptr, info_ptr); + +- if (info_ptr->num_text > 0) { ++ png_get_text(png_ptr,info_ptr,&_text,&_num_text); ++ if (_num_text > 0) { + commentsize = 1; + +- for (i = 0; i < info_ptr->num_text; i++) +- commentsize += strlen(info_ptr->text[i].key) + 1 + +- info_ptr->text[i].text_length + 2; ++ for (i = 0; i < _num_text; i++) ++ commentsize += strlen(_text[i].key) + 1 + ++ _text[i].text_length + 2; + + if ((pinfo->comment = malloc(commentsize)) == NULL) { + png_warning(png_ptr,"can't allocate comment string"); + } + else { + pinfo->comment[0] = '\0'; +- for (i = 0; i < info_ptr->num_text; i++) { +- strcat(pinfo->comment, info_ptr->text[i].key); ++ for (i = 0; i < _num_text; i++) { ++ strcat(pinfo->comment, _text[i].key); + strcat(pinfo->comment, "::"); +- strcat(pinfo->comment, info_ptr->text[i].text); ++ strcat(pinfo->comment, _text[i].text); + strcat(pinfo->comment, "\n"); + } + } +@@ -1143,7 +1181,7 @@ + { + SetISTR(ISTR_WARNING,"%s: libpng error: %s", fbasename, message); + +- longjmp(png_ptr->jmpbuf, 1); ++ longjmp(png_jmpbuf(png_ptr), 1); + } + + Deleted: community-x86_64/PKGBUILD =================================================================== --- community-x86_64/PKGBUILD 2016-11-22 17:38:21 UTC (rev 196547) +++ community-x86_64/PKGBUILD 2016-11-22 17:38:34 UTC (rev 196548) @@ -1,46 +0,0 @@ -# $Id$ -# Maintainer: Eric Bélanger <e...@archlinux.org> - -pkgname=xv -pkgver=3.10a -pkgrel=18 -pkgdesc="A nice image viewer" -arch=('i686' 'x86_64') -url="http://www.trilon.com/xv/" -license=('custom') -depends=('libpng' 'libx11' 'libtiff' 'jasper') -makedepends=('libxt') -options=('!emptydirs') -source=(ftp://ftp.trilon.com/pub/xv/${pkgname}-${pkgver}.tar.gz \ - http://downloads.sourceforge.net/sourceforge/png-mng/xv-3.10a-jumbo-patches-20070520.tar.gz \ - http://www.sonic.net/~roelofs/code/xv-3.10a-enhancements.20070520-20081216.diff \ - license.txt xv-3.10a-libpng15.patch) -sha1sums=('092f8eb100f16d6b91c88b126c2b2b998eb09b99' - 'd00308c1687d9d803d26ef40c73d19a0f593c626' - '40bfb0889b820e0f9d3bd7d771144ec3458acc66' - '4561344e8f2c30eee9c55b14a14f062d89d6e7b7' - '3d19aa0c6ecc8b554081906babe0b4f9a6946da3') - -prepare() { - tar -cJf xv-${pkgver}-source.tar.xz xv-${pkgver} - cd ${pkgname}-${pkgver} - patch -p1 -i "${srcdir}/xv-3.10a-jumbo-fix-enh-patch-20070520.txt" - patch -p1 -i "${srcdir}/xv-3.10a-enhancements.20070520-20081216.diff" - patch -p0 -i "${srcdir}/xv-3.10a-libpng15.patch" -} - -build() { - cd ${pkgname}-${pkgver} - make JP2KLIB=-ljasper -} - -package() { - cd ${pkgname}-${pkgver} - install -d "${pkgdir}"/usr/{bin,lib,share/man/man1} - make DESTDIR="${pkgdir}" PREFIX=/usr install - install -D -m644 "${srcdir}/license.txt" "${pkgdir}/usr/share/licenses/${pkgname}/license.txt" - -# installing source tarball (to comply with license) - install -D -m644 "${srcdir}/xv-${pkgver}-source.tar.xz" "${pkgdir}/usr/share/doc/xv/xv-${pkgver}-source.tar.xz" - ln -s "/usr/share/licenses/${pkgname}/license.txt" "${pkgdir}/usr/share/doc/xv/license.txt" -} Copied: xv/repos/community-x86_64/PKGBUILD (from rev 196547, xv/trunk/PKGBUILD) =================================================================== --- community-x86_64/PKGBUILD (rev 0) +++ community-x86_64/PKGBUILD 2016-11-22 17:38:34 UTC (rev 196548) @@ -0,0 +1,46 @@ +# $Id$ +# Maintainer: Eric Bélanger <e...@archlinux.org> + +pkgname=xv +pkgver=3.10a +pkgrel=20 +pkgdesc="A nice image viewer" +arch=('i686' 'x86_64') +url="http://www.trilon.com/xv/" +license=('custom') +depends=('libpng' 'libx11' 'libtiff' 'jasper') +makedepends=('libxt') +options=('!emptydirs') +source=(ftp://ftp.trilon.com/pub/xv/${pkgname}-${pkgver}.tar.gz \ + http://downloads.sourceforge.net/sourceforge/png-mng/xv-3.10a-jumbo-patches-20070520.tar.gz \ + http://www.sonic.net/~roelofs/code/xv-3.10a-enhancements.20070520-20081216.diff \ + license.txt xv-3.10a-libpng15.patch) +sha1sums=('092f8eb100f16d6b91c88b126c2b2b998eb09b99' + 'd00308c1687d9d803d26ef40c73d19a0f593c626' + '40bfb0889b820e0f9d3bd7d771144ec3458acc66' + '4561344e8f2c30eee9c55b14a14f062d89d6e7b7' + '3d19aa0c6ecc8b554081906babe0b4f9a6946da3') + +prepare() { + tar -cJf xv-${pkgver}-source.tar.xz xv-${pkgver} + cd ${pkgname}-${pkgver} + patch -p1 -i "${srcdir}/xv-3.10a-jumbo-fix-enh-patch-20070520.txt" + patch -p1 -i "${srcdir}/xv-3.10a-enhancements.20070520-20081216.diff" + patch -p0 -i "${srcdir}/xv-3.10a-libpng15.patch" +} + +build() { + cd ${pkgname}-${pkgver} + make JP2KLIB=-ljasper +} + +package() { + cd ${pkgname}-${pkgver} + install -d "${pkgdir}"/usr/{bin,lib,share/man/man1} + make DESTDIR="${pkgdir}" PREFIX=/usr install + install -D -m644 "${srcdir}/license.txt" "${pkgdir}/usr/share/licenses/${pkgname}/license.txt" + +# installing source tarball (to comply with license) + install -D -m644 "${srcdir}/xv-${pkgver}-source.tar.xz" "${pkgdir}/usr/share/doc/xv/xv-${pkgver}-source.tar.xz" + ln -s "/usr/share/licenses/${pkgname}/license.txt" "${pkgdir}/usr/share/doc/xv/license.txt" +} Deleted: community-x86_64/license.txt =================================================================== --- community-x86_64/license.txt 2016-11-22 17:38:21 UTC (rev 196547) +++ community-x86_64/license.txt 2016-11-22 17:38:34 UTC (rev 196548) @@ -1,139 +0,0 @@ -XV Licensing Information ------------------------- -XV IS SHAREWARE FOR PERSONAL USE ONLY. - -You may use XV for your own amusement, and if you find it nifty, -useful, generally cool, or of some value to you, your registration fee -would be greatly appreciated. $25 is the standard registration fee, -though of course, larger amounts are quite welcome. Folks who donate -$40 or more can receive a printed, bound copy of the XV manual for no -extra charge. If you want one, just ask. BE SURE TO SPECIFY THE -VERSION OF XV THAT YOU ARE USING! - -COMMERCIAL, GOVERNMENT, AND INSTITUTIONAL USERS MUST REGISTER THEIR -COPIES OF XV. - -This does *not* mean that you are required to register XV just because -you play with it on the workstation in your office. This falls under -the heading of 'personal use'. If you are a sysadmin, you can put XV -up in a public directory for your users amusement. Again, 'personal -use', albeit plural. - -On the other hand, if you use XV in the course of doing your work, -whatever your 'work' may happen to be, you *must* register your -copy of XV. (Note: If you are a student, and you use XV to do -classwork or research, you should get your professor/teacher/advisor -to purchase an appropriate number of copies.) - -XV licenses are $25 each. You should purchase one license per -workstation, or one per XV user, whichever is the smaller number. XV -is *not* sold on a 'number of concurrent users' basis. If XV was some -$1000 program, yes, that would be a reasonable request, but at $25, -it's not. Also, given that XV is completely unlocked, there is no way -to enforce any 'number of concurrent users' limits, so it isn't sold -that way. - -Printed and bound copies of the 100-odd page XV manual are available -for $15 each. Note that manuals are *only* sold with, at minimum, an -equal number of licenses. (e.g. if you purchase 5 licenses, you can -also purchase *up to* 5 copies of the manual) - -The source code to the program can be had (as a compressed 'tar' file -split over a couple 3.5" MS-DOS formatted floppies) for $15, for those -who don't have ftp capabilities. - -Orders outside the US and Canada must add an additional $5 per manual -ordered to cover the additional shipping charges. - -Checks, money orders, and purchase orders are accepted. Credit cards -are not. All forms of payment must be payable in US Funds. Checks -must be payable through a US bank (or a US branch of a non-US bank). -Purchase orders for less than $50, while still accepted, are not -encouraged. - -All payments should be payable to 'John Bradley', and mailed to: - John Bradley - 1053 Floyd Terrace - Bryn Mawr, PA 19010 - USA - - -Site Licenses -------------- -If you are planning to purchase 10 or more licenses, site licenses are -available, at a substantial discount. Site licenses let you run XV on -any and all computing equipment at the site, for any purpose -whatsoever. The site license covers the current version of XV, and -any versions released within one year of the licensing date. You are -also allowed to duplicate and distribute an unlimited number of copies -of the XV manual, but only for use within the site. Covered versions -of the software may be run in perpetuity. - -Also, it should be noted that a 'site' can be defined as anything -you'd like. It can be a physical location (a room, building, -location, etc.), an organizational grouping (a workgroup, department, -division, etc.) or any other logical grouping ("the seventeen -technical writers scattered about our company", etc.). - -The site license cost will be based on your estimate of the number of -XV users or workstations at your site, whichever is the smaller -number. - -If you are interested in obtaining a site license, please contact the -author via electronic mail or FAX (see below for details). Send -information regarding your site (the name or definition of the 'site', -a physical address, a fax number, and an estimate of the number of -users or workstations), and we'll get a site license out to you for -your examination. - - -Copyright Notice ----------------- -XV is Copyright 1989, 1994 by John Bradley - -Permission to copy and distribute XV in its entirety, for -non-commercial purposes, is hereby granted without fee, provided that -this license information and copyright notice appear in all copies. - -If you redistribute XV, the *entire* contents of this distribution -must be distributed, including the README, and INSTALL files, the -sources, and the complete contents of the 'docs' directory. - -Note that distributing XV 'bundled' in with any product is considered -to be a 'commercial purpose'. - -Also note that any copies of XV that are distributed MUST be built -and/or configured to be in their 'unregistered copy' mode, so that it -is made obvious to the user that XV is shareware, and that they should -consider registering, or at least reading this information. - -The software may be modified for your own purposes, but modified -versions may not be distributed without prior consent of the author. - -This software is provided 'as-is', without any express or implied -warranty. In no event will the author be held liable for any damages -arising from the use of this software. - -If you would like to do something with XV that this copyright -prohibits (such as distributing it with a commercial product, using -portions of the source in some other program, distributing registered -copies, etc.), please contact the author (preferably via email). -Arrangements can probably be worked out. - - -The author may be contacted via: - US Mail: John Bradley - 1053 Floyd Terrace - Bryn Mawr, PA 19010 - - FAX: (610) 520-2042 - -Electronic Mail regarding XV should be sent to one of these three addresses: - x...@devo.dccs.upenn.edu - general XV questions - xv...@devo.dccs.upenn.edu - all XV licensing questions - xvt...@devo.dccs.upenn.edu - bug reports, technical questions - -Please do *not* send electronic mail directly to the author, as he -gets more than enough as it is. - - Copied: xv/repos/community-x86_64/license.txt (from rev 196547, xv/trunk/license.txt) =================================================================== --- community-x86_64/license.txt (rev 0) +++ community-x86_64/license.txt 2016-11-22 17:38:34 UTC (rev 196548) @@ -0,0 +1,139 @@ +XV Licensing Information +------------------------ +XV IS SHAREWARE FOR PERSONAL USE ONLY. + +You may use XV for your own amusement, and if you find it nifty, +useful, generally cool, or of some value to you, your registration fee +would be greatly appreciated. $25 is the standard registration fee, +though of course, larger amounts are quite welcome. Folks who donate +$40 or more can receive a printed, bound copy of the XV manual for no +extra charge. If you want one, just ask. BE SURE TO SPECIFY THE +VERSION OF XV THAT YOU ARE USING! + +COMMERCIAL, GOVERNMENT, AND INSTITUTIONAL USERS MUST REGISTER THEIR +COPIES OF XV. + +This does *not* mean that you are required to register XV just because +you play with it on the workstation in your office. This falls under +the heading of 'personal use'. If you are a sysadmin, you can put XV +up in a public directory for your users amusement. Again, 'personal +use', albeit plural. + +On the other hand, if you use XV in the course of doing your work, +whatever your 'work' may happen to be, you *must* register your +copy of XV. (Note: If you are a student, and you use XV to do +classwork or research, you should get your professor/teacher/advisor +to purchase an appropriate number of copies.) + +XV licenses are $25 each. You should purchase one license per +workstation, or one per XV user, whichever is the smaller number. XV +is *not* sold on a 'number of concurrent users' basis. If XV was some +$1000 program, yes, that would be a reasonable request, but at $25, +it's not. Also, given that XV is completely unlocked, there is no way +to enforce any 'number of concurrent users' limits, so it isn't sold +that way. + +Printed and bound copies of the 100-odd page XV manual are available +for $15 each. Note that manuals are *only* sold with, at minimum, an +equal number of licenses. (e.g. if you purchase 5 licenses, you can +also purchase *up to* 5 copies of the manual) + +The source code to the program can be had (as a compressed 'tar' file +split over a couple 3.5" MS-DOS formatted floppies) for $15, for those +who don't have ftp capabilities. + +Orders outside the US and Canada must add an additional $5 per manual +ordered to cover the additional shipping charges. + +Checks, money orders, and purchase orders are accepted. Credit cards +are not. All forms of payment must be payable in US Funds. Checks +must be payable through a US bank (or a US branch of a non-US bank). +Purchase orders for less than $50, while still accepted, are not +encouraged. + +All payments should be payable to 'John Bradley', and mailed to: + John Bradley + 1053 Floyd Terrace + Bryn Mawr, PA 19010 + USA + + +Site Licenses +------------- +If you are planning to purchase 10 or more licenses, site licenses are +available, at a substantial discount. Site licenses let you run XV on +any and all computing equipment at the site, for any purpose +whatsoever. The site license covers the current version of XV, and +any versions released within one year of the licensing date. You are +also allowed to duplicate and distribute an unlimited number of copies +of the XV manual, but only for use within the site. Covered versions +of the software may be run in perpetuity. + +Also, it should be noted that a 'site' can be defined as anything +you'd like. It can be a physical location (a room, building, +location, etc.), an organizational grouping (a workgroup, department, +division, etc.) or any other logical grouping ("the seventeen +technical writers scattered about our company", etc.). + +The site license cost will be based on your estimate of the number of +XV users or workstations at your site, whichever is the smaller +number. + +If you are interested in obtaining a site license, please contact the +author via electronic mail or FAX (see below for details). Send +information regarding your site (the name or definition of the 'site', +a physical address, a fax number, and an estimate of the number of +users or workstations), and we'll get a site license out to you for +your examination. + + +Copyright Notice +---------------- +XV is Copyright 1989, 1994 by John Bradley + +Permission to copy and distribute XV in its entirety, for +non-commercial purposes, is hereby granted without fee, provided that +this license information and copyright notice appear in all copies. + +If you redistribute XV, the *entire* contents of this distribution +must be distributed, including the README, and INSTALL files, the +sources, and the complete contents of the 'docs' directory. + +Note that distributing XV 'bundled' in with any product is considered +to be a 'commercial purpose'. + +Also note that any copies of XV that are distributed MUST be built +and/or configured to be in their 'unregistered copy' mode, so that it +is made obvious to the user that XV is shareware, and that they should +consider registering, or at least reading this information. + +The software may be modified for your own purposes, but modified +versions may not be distributed without prior consent of the author. + +This software is provided 'as-is', without any express or implied +warranty. In no event will the author be held liable for any damages +arising from the use of this software. + +If you would like to do something with XV that this copyright +prohibits (such as distributing it with a commercial product, using +portions of the source in some other program, distributing registered +copies, etc.), please contact the author (preferably via email). +Arrangements can probably be worked out. + + +The author may be contacted via: + US Mail: John Bradley + 1053 Floyd Terrace + Bryn Mawr, PA 19010 + + FAX: (610) 520-2042 + +Electronic Mail regarding XV should be sent to one of these three addresses: + x...@devo.dccs.upenn.edu - general XV questions + xv...@devo.dccs.upenn.edu - all XV licensing questions + xvt...@devo.dccs.upenn.edu - bug reports, technical questions + +Please do *not* send electronic mail directly to the author, as he +gets more than enough as it is. + + Deleted: community-x86_64/xv-3.10a-libpng15.patch =================================================================== --- community-x86_64/xv-3.10a-libpng15.patch 2016-11-22 17:38:21 UTC (rev 196547) +++ community-x86_64/xv-3.10a-libpng15.patch 2016-11-22 17:38:34 UTC (rev 196548) @@ -1,520 +0,0 @@ ---- xvinfo.c -+++ xvinfo.c -@@ -26,7 +26,7 @@ - #define INFOHIGH 270 - - /* max length of an Info String */ --#define ISTRLEN 80 -+#define ISTRLEN 256 - - /* baseline of top line of text */ - #define TOPBASE (36 + penn_height/2 + 4 + 8 + ASCENT) ---- xvpng.c -+++ xvpng.c -@@ -31,6 +31,7 @@ - - #ifdef HAVE_PNG - -+#include "zlib.h" - #include "png.h" - - /*** Stuff for PNG Dialog box ***/ -@@ -41,7 +42,9 @@ - #define COMPRESSION 6 /* default zlib compression level, not max - (Z_BEST_COMPRESSION) */ - --#define HAVE_tRNS (info_ptr->valid & PNG_INFO_tRNS) -+/* old -+#define HAVE_tRNS (info_ptr->valid & PNG_INFO_tRNS) */ -+#define HAVE_tRNS png_get_valid(png_ptr,info_ptr,PNG_INFO_tRNS) - - #define DWIDE 86 - #define DHIGH 104 -@@ -444,6 +447,10 @@ - byte *p, *png_line; - char software[256]; - char *savecmnt; -+ /* for storing values until all are accumulated, so that the image header can be set in full */ -+ int _bit_depth,_color_type,_interlace_type,_compression_type,_filter_type; -+ png_uint_32 _width,_height; -+ png_time _mod_time; - - if ((png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, - png_xv_error, png_xv_warning)) == NULL) { -@@ -458,7 +465,7 @@ - FatalError(software); - } - -- if (setjmp(png_ptr->jmpbuf)) { -+ if (setjmp(png_jmpbuf(png_ptr))) { - png_destroy_write_struct(&png_ptr, &info_ptr); - return -1; - } -@@ -489,8 +496,8 @@ - png_set_filter(png_ptr, 0, filter); - } - -- info_ptr->width = w; -- info_ptr->height = h; -+ _width = w; -+ _height = h; - if (w <= 0 || h <= 0) { - SetISTR(ISTR_WARNING, "%s: image dimensions out of range (%dx%d)", - fbasename, w, h); -@@ -498,7 +505,7 @@ - return -1; - } - -- info_ptr->interlace_type = interCB.val ? 1 : 0; -+ _interlace_type = interCB.val ? PNG_INTERLACE_ADAM7 : PNG_INTERLACE_NONE; - - linesize = 0; /* quiet a compiler warning */ - -@@ -542,40 +549,44 @@ - png_destroy_write_struct(&png_ptr, &info_ptr); - return -1; - } -- info_ptr->color_type = PNG_COLOR_TYPE_RGB; -- info_ptr->bit_depth = 8; -+ _color_type = PNG_COLOR_TYPE_RGB; -+ _bit_depth = 8; - } else /* ptype == PIC8 */ { - linesize = w; -- info_ptr->color_type = PNG_COLOR_TYPE_PALETTE; -+ _color_type = PNG_COLOR_TYPE_PALETTE; - if (numuniqcols <= 2) -- info_ptr->bit_depth = 1; -+ _bit_depth = 1; - else - if (numuniqcols <= 4) -- info_ptr->bit_depth = 2; -+ _bit_depth = 2; - else - if (numuniqcols <= 16) -- info_ptr->bit_depth = 4; -+ _bit_depth = 4; - else -- info_ptr->bit_depth = 8; -+ _bit_depth = 8; - - for (i = 0; i < numuniqcols; i++) { - palette[i].red = r1[i]; - palette[i].green = g1[i]; - palette[i].blue = b1[i]; - } -- info_ptr->num_palette = numuniqcols; -- info_ptr->palette = palette; -+/* cannot find a setter for this, unsure if it is necessary anymore... - info_ptr->valid |= PNG_INFO_PLTE; -+*/ -+ /* set the header just in case it's needed */ -+ png_set_IHDR(png_ptr,info_ptr,_width,_height,_bit_depth,_color_type, -+ _interlace_type,PNG_COMPRESSION_TYPE_DEFAULT,PNG_FILTER_TYPE_DEFAULT); -+ png_set_PLTE(png_ptr,info_ptr,palette,numuniqcols); - } - } - - else if (colorType == F_GREYSCALE || colorType == F_BWDITHER) { -- info_ptr->color_type = PNG_COLOR_TYPE_GRAY; -+ _color_type = PNG_COLOR_TYPE_GRAY; - if (colorType == F_BWDITHER) { - /* shouldn't happen */ - if (ptype == PIC24) FatalError("PIC24 and B/W Stipple in WritePNG()"); - -- info_ptr->bit_depth = 1; -+ _bit_depth = 1; - if (MONO(r1[0], g1[0], b1[0]) > MONO(r1[1], g1[1], b1[1])) { - remap[0] = 1; - remap[1] = 0; -@@ -595,7 +606,7 @@ - png_destroy_write_struct(&png_ptr, &info_ptr); - return -1; - } -- info_ptr->bit_depth = 8; -+ _bit_depth = 8; - } - else /* ptype == PIC8 */ { - int low_precision; -@@ -617,7 +628,7 @@ - for (; i < 256; i++) - remap[i]=0; /* shouldn't be necessary, but... */ - -- info_ptr->bit_depth = 8; -+ _bit_depth = 8; - - /* Note that this fails most of the time because of gamma */ - /* (and that would be a bug: GRR FIXME) */ -@@ -636,7 +647,7 @@ - for (i = 0; i < numuniqcols; i++) { - remap[i] &= 0xf; - } -- info_ptr->bit_depth = 4; -+ _bit_depth = 4; - - /* try to adjust to 2-bit precision grayscale */ - -@@ -652,7 +663,7 @@ - for (i = 0; i < numuniqcols; i++) { - remap[i] &= 3; - } -- info_ptr->bit_depth = 2; -+ _bit_depth = 2; - - /* try to adjust to 1-bit precision grayscale */ - -@@ -668,7 +679,7 @@ - for (i = 0; i < numuniqcols; i++) { - remap[i] &= 1; - } -- info_ptr->bit_depth = 1; -+ _bit_depth = 1; - } - } - } -@@ -677,6 +688,9 @@ - else - png_error(png_ptr, "Unknown colorstyle in WritePNG"); - -+ png_set_IHDR(png_ptr,info_ptr,_width,_height,_bit_depth,_color_type, -+ _interlace_type,PNG_COMPRESSION_TYPE_DEFAULT,PNG_FILTER_TYPE_DEFAULT); -+ - if ((text = (png_textp)malloc(sizeof(png_text)))) { - sprintf(software, "XV %s", REVDATE); - -@@ -685,20 +699,22 @@ - text->text = software; - text->text_length = strlen(text->text); - -- info_ptr->max_text = 1; -- info_ptr->num_text = 1; -- info_ptr->text = text; -+/* max_text seems to be internal only now, do not set -+ info_ptr->max_text = 1; */ -+ png_set_text(png_ptr,info_ptr,text,1); - } - - Display_Gamma = gDial.val; /* Save the current gamma for loading */ - - // GRR FIXME: add .Xdefaults option to omit writing gamma (size, cumulative errors when editing)--alternatively, modify save box to include "omit" checkbox -- info_ptr->gamma = 1.0/gDial.val; -- info_ptr->valid |= PNG_INFO_gAMA; -+ png_set_gAMA(png_ptr,info_ptr,1.0/gDial.val); -+/* doesn't seem to be a way to set valid directly anymore, unnecessary maybe.. -+ info_ptr->valid |= PNG_INFO_gAMA; */ - -+/* might need to be png_write_info_before_PLTE() ... */ - png_write_info(png_ptr, info_ptr); - -- if (info_ptr->bit_depth < 8) -+ if (_bit_depth < 8) - png_set_packing(png_ptr); - - pass=png_set_interlace_handling(png_ptr); -@@ -711,13 +727,13 @@ - int j; - p = pic; - for (j = 0; j < h; ++j) { -- if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY) { -+ if (_color_type == PNG_COLOR_TYPE_GRAY) { - int k; - for (k = 0; k < w; ++k) - png_line[k] = ptype==PIC24 ? MONO(p[k*3], p[k*3+1], p[k*3+2]) : - remap[pc2nc[p[k]]]; - png_write_row(png_ptr, png_line); -- } else if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) { -+ } else if (_color_type == PNG_COLOR_TYPE_PALETTE) { - int k; - for (k = 0; k < w; ++k) - png_line[k] = pc2nc[p[k]]; -@@ -739,28 +755,31 @@ - (savecmnt = (char *)malloc((strlen(picComments) + 1)*sizeof(char)))) { - png_textp tp; - char *comment, *key; -+ int nt; -+ int mt; - - strcpy(savecmnt, picComments); - key = savecmnt; -+ png_get_text(png_ptr,info_ptr,&tp,&mt); /* to get 'max_text' */ - tp = text; -- info_ptr->num_text = 0; -+ nt = 0; - - comment = strchr(key, ':'); - - do { - /* Allocate a larger structure for comments if necessary */ -- if (info_ptr->num_text >= info_ptr->max_text) -+ if (nt >= mt) - { - if ((tp = -- realloc(text, (info_ptr->num_text + 2)*sizeof(png_text))) == NULL) -+ realloc(text, (nt + 2)*sizeof(png_text))) == NULL) - { - break; - } - else - { - text = tp; -- tp = &text[info_ptr->num_text]; -- info_ptr->max_text += 2; -+ tp = &text[nt]; -+ mt += 2; - } - } - -@@ -810,7 +829,7 @@ - } - - tp->compression = tp->text_length > 640 ? 0 : -1; -- info_ptr->num_text++; -+ nt++; - tp++; - } - } -@@ -834,27 +853,29 @@ - tp->text = key; - tp->text_length = q - key; - tp->compression = tp->text_length > 750 ? 0 : -1; -- info_ptr->num_text++; -+ nt++; - key = NULL; - } - } while (key && *key); -+ png_set_text(png_ptr,info_ptr,text,nt); - } - else { -- info_ptr->num_text = 0; -+ png_set_text(png_ptr,info_ptr,text,0); - } - } -- info_ptr->text = text; - -- png_convert_from_time_t(&(info_ptr->mod_time), time(NULL)); -- info_ptr->valid |= PNG_INFO_tIME; -+ png_convert_from_time_t(&_mod_time, time(NULL)); -+ png_set_tIME(png_ptr,info_ptr,&_mod_time); -+/* dunno how to set validity -+ info_ptr->valid |= PNG_INFO_tIME; */ - - png_write_end(png_ptr, info_ptr); - fflush(fp); /* just in case we core-dump before finishing... */ - - if (text) { - free(text); -- /* must do this or png_destroy_write_struct() 0.97+ will free text again: */ -- info_ptr->text = (png_textp)NULL; -+ /* must do this or png_destroy_write_struct() 0.97+ will free text again: -+ info_ptr->text = (png_textp)NULL; */ - if (savecmnt) - { - free(savecmnt); -@@ -886,6 +907,14 @@ - int pass; - int gray_to_rgb; - size_t commentsize; -+ /* temp storage vars for libpng15 migration */ -+ int _bit_depth,_color_type,_interlace_type,_compression_type,_filter_type,_num_text,_num_palette; -+ png_uint_32 _width,_height; -+ png_timep _mod_time; -+ double _gamma; -+ png_textp _text; -+ png_colorp _palette; -+ png_color_16p _background; - - fbasename = BaseName(fname); - -@@ -921,7 +950,7 @@ - FatalError("malloc failure in LoadPNG"); - } - -- if (setjmp(png_ptr->jmpbuf)) { -+ if (setjmp(png_jmpbuf(png_ptr))) { - fclose(fp); - png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); - if (!read_anything) { -@@ -945,8 +974,10 @@ - #endif - png_read_info(png_ptr, info_ptr); - -- pinfo->w = pinfo->normw = info_ptr->width; -- pinfo->h = pinfo->normh = info_ptr->height; -+ png_get_IHDR(png_ptr,info_ptr,&_width,&_height,&_bit_depth,&_color_type,&_interlace_type,NULL,NULL); -+ -+ pinfo->w = pinfo->normw = _width; -+ pinfo->h = pinfo->normh = _height; - if (pinfo->w <= 0 || pinfo->h <= 0) { - SetISTR(ISTR_WARNING, "%s: image dimensions out of range (%dx%d)", - fbasename, pinfo->w, pinfo->h); -@@ -957,9 +988,9 @@ - pinfo->frmType = F_PNG; - - sprintf(pinfo->fullInfo, "PNG, %d bit ", -- info_ptr->bit_depth * info_ptr->channels); -+ _bit_depth * png_get_channels(png_ptr,info_ptr)); - -- switch(info_ptr->color_type) { -+ switch(_color_type) { - case PNG_COLOR_TYPE_PALETTE: - strcat(pinfo->fullInfo, "palette color"); - break; -@@ -983,15 +1014,17 @@ - - sprintf(pinfo->fullInfo + strlen(pinfo->fullInfo), - ", %sinterlaced. (%d bytes)", -- info_ptr->interlace_type ? "" : "non-", filesize); -+ _interlace_type ? "" : "non-", filesize); - -- sprintf(pinfo->shrtInfo, "%lux%lu PNG", info_ptr->width, info_ptr->height); -+ sprintf(pinfo->shrtInfo, "%lux%lu PNG", _width, _height); - -- if (info_ptr->bit_depth < 8) -+ if (_bit_depth < 8) - png_set_packing(png_ptr); - -- if (info_ptr->valid & PNG_INFO_gAMA) -- png_set_gamma(png_ptr, Display_Gamma, info_ptr->gamma); -+ if (png_get_valid(png_ptr,info_ptr,PNG_INFO_gAMA)) { -+ png_get_gAMA(png_ptr,info_ptr,&_gamma); -+ png_set_gamma(png_ptr, Display_Gamma, _gamma); -+ } - /* - *else - * png_set_gamma(png_ptr, Display_Gamma, 0.45); -@@ -1000,7 +1033,7 @@ - gray_to_rgb = 0; /* quiet a compiler warning */ - - if (have_imagebg) { -- if (info_ptr->bit_depth == 16) { -+ if (_bit_depth == 16) { - my_background.red = imagebgR; - my_background.green = imagebgG; - my_background.blue = imagebgB; -@@ -1013,8 +1046,8 @@ - } - png_set_background(png_ptr, &my_background, PNG_BACKGROUND_GAMMA_SCREEN, - 0, Display_Gamma); -- if ((info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA || -- (info_ptr->color_type == PNG_COLOR_TYPE_GRAY && HAVE_tRNS)) && -+ if ((_color_type == PNG_COLOR_TYPE_GRAY_ALPHA || -+ (_color_type == PNG_COLOR_TYPE_GRAY && HAVE_tRNS)) && - (imagebgR != imagebgG || imagebgR != imagebgB)) /* i.e., colored bg */ - { - png_set_gray_to_rgb(png_ptr); -@@ -1022,8 +1055,9 @@ - gray_to_rgb = 1; - } - } else { -- if (info_ptr->valid & PNG_INFO_bKGD) { -- png_set_background(png_ptr, &info_ptr->background, -+ if (png_get_valid(png_ptr,info_ptr,PNG_INFO_bKGD)) { -+ png_get_bKGD(png_ptr,info_ptr,&_background); -+ png_set_background(png_ptr, _background, - PNG_BACKGROUND_GAMMA_FILE, 1, 1.0); - } else { - my_background.red = my_background.green = my_background.blue = -@@ -1033,13 +1067,13 @@ - } - } - -- if (info_ptr->bit_depth == 16) -+ if (_bit_depth == 16) - png_set_strip_16(png_ptr); - -- if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY || -- info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) -+ if (_color_type == PNG_COLOR_TYPE_GRAY || -+ _color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - { -- if (info_ptr->bit_depth == 1) -+ if (_bit_depth == 1) - pinfo->colType = F_BWDITHER; - else - pinfo->colType = F_GREYSCALE; -@@ -1049,9 +1083,11 @@ - pass=png_set_interlace_handling(png_ptr); - - png_read_update_info(png_ptr, info_ptr); -+ /* get HIDR again just in case the info_ptr changed */ -+ png_get_IHDR(png_ptr,info_ptr,&_width,&_height,&_bit_depth,&_color_type,&_interlace_type,NULL,NULL); - -- if (info_ptr->color_type == PNG_COLOR_TYPE_RGB || -- info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA || gray_to_rgb) -+ if (_color_type == PNG_COLOR_TYPE_RGB || -+ _color_type == PNG_COLOR_TYPE_RGB_ALPHA || gray_to_rgb) - { - linesize = 3 * pinfo->w; - if (linesize/3 < pinfo->w) { /* know pinfo->w > 0 (see above) */ -@@ -1065,16 +1101,17 @@ - } else { - linesize = pinfo->w; - pinfo->type = PIC8; -- if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY || -- info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) { -+ if (_color_type == PNG_COLOR_TYPE_GRAY || -+ _color_type == PNG_COLOR_TYPE_GRAY_ALPHA) { - for (i = 0; i < 256; i++) - pinfo->r[i] = pinfo->g[i] = pinfo->b[i] = i; - } else { - pinfo->colType = F_FULLCOLOR; -- for (i = 0; i < info_ptr->num_palette; i++) { -- pinfo->r[i] = info_ptr->palette[i].red; -- pinfo->g[i] = info_ptr->palette[i].green; -- pinfo->b[i] = info_ptr->palette[i].blue; -+ png_get_PLTE(png_ptr,info_ptr,&_palette,&_num_palette); -+ for (i = 0; i < _num_palette; i++) { -+ pinfo->r[i] = _palette[i].red; -+ pinfo->g[i] = _palette[i].green; -+ pinfo->b[i] = _palette[i].blue; - } - } - } -@@ -1092,7 +1129,7 @@ - png_error(png_ptr, "can't allocate space for PNG image"); - } - -- png_start_read_image(png_ptr); -+ /*png_start_read_image(png_ptr); -- causes a warning and seems to be unnecessary */ - - for (i = 0; i < pass; i++) { - byte *p = pinfo->pic; -@@ -1106,22 +1143,23 @@ - - png_read_end(png_ptr, info_ptr); - -- if (info_ptr->num_text > 0) { -+ png_get_text(png_ptr,info_ptr,&_text,&_num_text); -+ if (_num_text > 0) { - commentsize = 1; - -- for (i = 0; i < info_ptr->num_text; i++) -- commentsize += strlen(info_ptr->text[i].key) + 1 + -- info_ptr->text[i].text_length + 2; -+ for (i = 0; i < _num_text; i++) -+ commentsize += strlen(_text[i].key) + 1 + -+ _text[i].text_length + 2; - - if ((pinfo->comment = malloc(commentsize)) == NULL) { - png_warning(png_ptr,"can't allocate comment string"); - } - else { - pinfo->comment[0] = '\0'; -- for (i = 0; i < info_ptr->num_text; i++) { -- strcat(pinfo->comment, info_ptr->text[i].key); -+ for (i = 0; i < _num_text; i++) { -+ strcat(pinfo->comment, _text[i].key); - strcat(pinfo->comment, "::"); -- strcat(pinfo->comment, info_ptr->text[i].text); -+ strcat(pinfo->comment, _text[i].text); - strcat(pinfo->comment, "\n"); - } - } -@@ -1143,7 +1181,7 @@ - { - SetISTR(ISTR_WARNING,"%s: libpng error: %s", fbasename, message); - -- longjmp(png_ptr->jmpbuf, 1); -+ longjmp(png_jmpbuf(png_ptr), 1); - } - - Copied: xv/repos/community-x86_64/xv-3.10a-libpng15.patch (from rev 196547, xv/trunk/xv-3.10a-libpng15.patch) =================================================================== --- community-x86_64/xv-3.10a-libpng15.patch (rev 0) +++ community-x86_64/xv-3.10a-libpng15.patch 2016-11-22 17:38:34 UTC (rev 196548) @@ -0,0 +1,520 @@ +--- xvinfo.c ++++ xvinfo.c +@@ -26,7 +26,7 @@ + #define INFOHIGH 270 + + /* max length of an Info String */ +-#define ISTRLEN 80 ++#define ISTRLEN 256 + + /* baseline of top line of text */ + #define TOPBASE (36 + penn_height/2 + 4 + 8 + ASCENT) +--- xvpng.c ++++ xvpng.c +@@ -31,6 +31,7 @@ + + #ifdef HAVE_PNG + ++#include "zlib.h" + #include "png.h" + + /*** Stuff for PNG Dialog box ***/ +@@ -41,7 +42,9 @@ + #define COMPRESSION 6 /* default zlib compression level, not max + (Z_BEST_COMPRESSION) */ + +-#define HAVE_tRNS (info_ptr->valid & PNG_INFO_tRNS) ++/* old ++#define HAVE_tRNS (info_ptr->valid & PNG_INFO_tRNS) */ ++#define HAVE_tRNS png_get_valid(png_ptr,info_ptr,PNG_INFO_tRNS) + + #define DWIDE 86 + #define DHIGH 104 +@@ -444,6 +447,10 @@ + byte *p, *png_line; + char software[256]; + char *savecmnt; ++ /* for storing values until all are accumulated, so that the image header can be set in full */ ++ int _bit_depth,_color_type,_interlace_type,_compression_type,_filter_type; ++ png_uint_32 _width,_height; ++ png_time _mod_time; + + if ((png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, + png_xv_error, png_xv_warning)) == NULL) { +@@ -458,7 +465,7 @@ + FatalError(software); + } + +- if (setjmp(png_ptr->jmpbuf)) { ++ if (setjmp(png_jmpbuf(png_ptr))) { + png_destroy_write_struct(&png_ptr, &info_ptr); + return -1; + } +@@ -489,8 +496,8 @@ + png_set_filter(png_ptr, 0, filter); + } + +- info_ptr->width = w; +- info_ptr->height = h; ++ _width = w; ++ _height = h; + if (w <= 0 || h <= 0) { + SetISTR(ISTR_WARNING, "%s: image dimensions out of range (%dx%d)", + fbasename, w, h); +@@ -498,7 +505,7 @@ + return -1; + } + +- info_ptr->interlace_type = interCB.val ? 1 : 0; ++ _interlace_type = interCB.val ? PNG_INTERLACE_ADAM7 : PNG_INTERLACE_NONE; + + linesize = 0; /* quiet a compiler warning */ + +@@ -542,40 +549,44 @@ + png_destroy_write_struct(&png_ptr, &info_ptr); + return -1; + } +- info_ptr->color_type = PNG_COLOR_TYPE_RGB; +- info_ptr->bit_depth = 8; ++ _color_type = PNG_COLOR_TYPE_RGB; ++ _bit_depth = 8; + } else /* ptype == PIC8 */ { + linesize = w; +- info_ptr->color_type = PNG_COLOR_TYPE_PALETTE; ++ _color_type = PNG_COLOR_TYPE_PALETTE; + if (numuniqcols <= 2) +- info_ptr->bit_depth = 1; ++ _bit_depth = 1; + else + if (numuniqcols <= 4) +- info_ptr->bit_depth = 2; ++ _bit_depth = 2; + else + if (numuniqcols <= 16) +- info_ptr->bit_depth = 4; ++ _bit_depth = 4; + else +- info_ptr->bit_depth = 8; ++ _bit_depth = 8; + + for (i = 0; i < numuniqcols; i++) { + palette[i].red = r1[i]; + palette[i].green = g1[i]; + palette[i].blue = b1[i]; + } +- info_ptr->num_palette = numuniqcols; +- info_ptr->palette = palette; ++/* cannot find a setter for this, unsure if it is necessary anymore... + info_ptr->valid |= PNG_INFO_PLTE; ++*/ ++ /* set the header just in case it's needed */ ++ png_set_IHDR(png_ptr,info_ptr,_width,_height,_bit_depth,_color_type, ++ _interlace_type,PNG_COMPRESSION_TYPE_DEFAULT,PNG_FILTER_TYPE_DEFAULT); ++ png_set_PLTE(png_ptr,info_ptr,palette,numuniqcols); + } + } + + else if (colorType == F_GREYSCALE || colorType == F_BWDITHER) { +- info_ptr->color_type = PNG_COLOR_TYPE_GRAY; ++ _color_type = PNG_COLOR_TYPE_GRAY; + if (colorType == F_BWDITHER) { + /* shouldn't happen */ + if (ptype == PIC24) FatalError("PIC24 and B/W Stipple in WritePNG()"); + +- info_ptr->bit_depth = 1; ++ _bit_depth = 1; + if (MONO(r1[0], g1[0], b1[0]) > MONO(r1[1], g1[1], b1[1])) { + remap[0] = 1; + remap[1] = 0; +@@ -595,7 +606,7 @@ + png_destroy_write_struct(&png_ptr, &info_ptr); + return -1; + } +- info_ptr->bit_depth = 8; ++ _bit_depth = 8; + } + else /* ptype == PIC8 */ { + int low_precision; +@@ -617,7 +628,7 @@ + for (; i < 256; i++) + remap[i]=0; /* shouldn't be necessary, but... */ + +- info_ptr->bit_depth = 8; ++ _bit_depth = 8; + + /* Note that this fails most of the time because of gamma */ + /* (and that would be a bug: GRR FIXME) */ +@@ -636,7 +647,7 @@ + for (i = 0; i < numuniqcols; i++) { + remap[i] &= 0xf; + } +- info_ptr->bit_depth = 4; ++ _bit_depth = 4; + + /* try to adjust to 2-bit precision grayscale */ + +@@ -652,7 +663,7 @@ + for (i = 0; i < numuniqcols; i++) { + remap[i] &= 3; + } +- info_ptr->bit_depth = 2; ++ _bit_depth = 2; + + /* try to adjust to 1-bit precision grayscale */ + +@@ -668,7 +679,7 @@ + for (i = 0; i < numuniqcols; i++) { + remap[i] &= 1; + } +- info_ptr->bit_depth = 1; ++ _bit_depth = 1; + } + } + } +@@ -677,6 +688,9 @@ + else + png_error(png_ptr, "Unknown colorstyle in WritePNG"); + ++ png_set_IHDR(png_ptr,info_ptr,_width,_height,_bit_depth,_color_type, ++ _interlace_type,PNG_COMPRESSION_TYPE_DEFAULT,PNG_FILTER_TYPE_DEFAULT); ++ + if ((text = (png_textp)malloc(sizeof(png_text)))) { + sprintf(software, "XV %s", REVDATE); + +@@ -685,20 +699,22 @@ + text->text = software; + text->text_length = strlen(text->text); + +- info_ptr->max_text = 1; +- info_ptr->num_text = 1; +- info_ptr->text = text; ++/* max_text seems to be internal only now, do not set ++ info_ptr->max_text = 1; */ ++ png_set_text(png_ptr,info_ptr,text,1); + } + + Display_Gamma = gDial.val; /* Save the current gamma for loading */ + + // GRR FIXME: add .Xdefaults option to omit writing gamma (size, cumulative errors when editing)--alternatively, modify save box to include "omit" checkbox +- info_ptr->gamma = 1.0/gDial.val; +- info_ptr->valid |= PNG_INFO_gAMA; ++ png_set_gAMA(png_ptr,info_ptr,1.0/gDial.val); ++/* doesn't seem to be a way to set valid directly anymore, unnecessary maybe.. ++ info_ptr->valid |= PNG_INFO_gAMA; */ + ++/* might need to be png_write_info_before_PLTE() ... */ + png_write_info(png_ptr, info_ptr); + +- if (info_ptr->bit_depth < 8) ++ if (_bit_depth < 8) + png_set_packing(png_ptr); + + pass=png_set_interlace_handling(png_ptr); +@@ -711,13 +727,13 @@ + int j; + p = pic; + for (j = 0; j < h; ++j) { +- if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY) { ++ if (_color_type == PNG_COLOR_TYPE_GRAY) { + int k; + for (k = 0; k < w; ++k) + png_line[k] = ptype==PIC24 ? MONO(p[k*3], p[k*3+1], p[k*3+2]) : + remap[pc2nc[p[k]]]; + png_write_row(png_ptr, png_line); +- } else if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) { ++ } else if (_color_type == PNG_COLOR_TYPE_PALETTE) { + int k; + for (k = 0; k < w; ++k) + png_line[k] = pc2nc[p[k]]; +@@ -739,28 +755,31 @@ + (savecmnt = (char *)malloc((strlen(picComments) + 1)*sizeof(char)))) { + png_textp tp; + char *comment, *key; ++ int nt; ++ int mt; + + strcpy(savecmnt, picComments); + key = savecmnt; ++ png_get_text(png_ptr,info_ptr,&tp,&mt); /* to get 'max_text' */ + tp = text; +- info_ptr->num_text = 0; ++ nt = 0; + + comment = strchr(key, ':'); + + do { + /* Allocate a larger structure for comments if necessary */ +- if (info_ptr->num_text >= info_ptr->max_text) ++ if (nt >= mt) + { + if ((tp = +- realloc(text, (info_ptr->num_text + 2)*sizeof(png_text))) == NULL) ++ realloc(text, (nt + 2)*sizeof(png_text))) == NULL) + { + break; + } + else + { + text = tp; +- tp = &text[info_ptr->num_text]; +- info_ptr->max_text += 2; ++ tp = &text[nt]; ++ mt += 2; + } + } + +@@ -810,7 +829,7 @@ + } + + tp->compression = tp->text_length > 640 ? 0 : -1; +- info_ptr->num_text++; ++ nt++; + tp++; + } + } +@@ -834,27 +853,29 @@ + tp->text = key; + tp->text_length = q - key; + tp->compression = tp->text_length > 750 ? 0 : -1; +- info_ptr->num_text++; ++ nt++; + key = NULL; + } + } while (key && *key); ++ png_set_text(png_ptr,info_ptr,text,nt); + } + else { +- info_ptr->num_text = 0; ++ png_set_text(png_ptr,info_ptr,text,0); + } + } +- info_ptr->text = text; + +- png_convert_from_time_t(&(info_ptr->mod_time), time(NULL)); +- info_ptr->valid |= PNG_INFO_tIME; ++ png_convert_from_time_t(&_mod_time, time(NULL)); ++ png_set_tIME(png_ptr,info_ptr,&_mod_time); ++/* dunno how to set validity ++ info_ptr->valid |= PNG_INFO_tIME; */ + + png_write_end(png_ptr, info_ptr); + fflush(fp); /* just in case we core-dump before finishing... */ + + if (text) { + free(text); +- /* must do this or png_destroy_write_struct() 0.97+ will free text again: */ +- info_ptr->text = (png_textp)NULL; ++ /* must do this or png_destroy_write_struct() 0.97+ will free text again: ++ info_ptr->text = (png_textp)NULL; */ + if (savecmnt) + { + free(savecmnt); +@@ -886,6 +907,14 @@ + int pass; + int gray_to_rgb; + size_t commentsize; ++ /* temp storage vars for libpng15 migration */ ++ int _bit_depth,_color_type,_interlace_type,_compression_type,_filter_type,_num_text,_num_palette; ++ png_uint_32 _width,_height; ++ png_timep _mod_time; ++ double _gamma; ++ png_textp _text; ++ png_colorp _palette; ++ png_color_16p _background; + + fbasename = BaseName(fname); + +@@ -921,7 +950,7 @@ + FatalError("malloc failure in LoadPNG"); + } + +- if (setjmp(png_ptr->jmpbuf)) { ++ if (setjmp(png_jmpbuf(png_ptr))) { + fclose(fp); + png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); + if (!read_anything) { +@@ -945,8 +974,10 @@ + #endif + png_read_info(png_ptr, info_ptr); + +- pinfo->w = pinfo->normw = info_ptr->width; +- pinfo->h = pinfo->normh = info_ptr->height; ++ png_get_IHDR(png_ptr,info_ptr,&_width,&_height,&_bit_depth,&_color_type,&_interlace_type,NULL,NULL); ++ ++ pinfo->w = pinfo->normw = _width; ++ pinfo->h = pinfo->normh = _height; + if (pinfo->w <= 0 || pinfo->h <= 0) { + SetISTR(ISTR_WARNING, "%s: image dimensions out of range (%dx%d)", + fbasename, pinfo->w, pinfo->h); +@@ -957,9 +988,9 @@ + pinfo->frmType = F_PNG; + + sprintf(pinfo->fullInfo, "PNG, %d bit ", +- info_ptr->bit_depth * info_ptr->channels); ++ _bit_depth * png_get_channels(png_ptr,info_ptr)); + +- switch(info_ptr->color_type) { ++ switch(_color_type) { + case PNG_COLOR_TYPE_PALETTE: + strcat(pinfo->fullInfo, "palette color"); + break; +@@ -983,15 +1014,17 @@ + + sprintf(pinfo->fullInfo + strlen(pinfo->fullInfo), + ", %sinterlaced. (%d bytes)", +- info_ptr->interlace_type ? "" : "non-", filesize); ++ _interlace_type ? "" : "non-", filesize); + +- sprintf(pinfo->shrtInfo, "%lux%lu PNG", info_ptr->width, info_ptr->height); ++ sprintf(pinfo->shrtInfo, "%lux%lu PNG", _width, _height); + +- if (info_ptr->bit_depth < 8) ++ if (_bit_depth < 8) + png_set_packing(png_ptr); + +- if (info_ptr->valid & PNG_INFO_gAMA) +- png_set_gamma(png_ptr, Display_Gamma, info_ptr->gamma); ++ if (png_get_valid(png_ptr,info_ptr,PNG_INFO_gAMA)) { ++ png_get_gAMA(png_ptr,info_ptr,&_gamma); ++ png_set_gamma(png_ptr, Display_Gamma, _gamma); ++ } + /* + *else + * png_set_gamma(png_ptr, Display_Gamma, 0.45); +@@ -1000,7 +1033,7 @@ + gray_to_rgb = 0; /* quiet a compiler warning */ + + if (have_imagebg) { +- if (info_ptr->bit_depth == 16) { ++ if (_bit_depth == 16) { + my_background.red = imagebgR; + my_background.green = imagebgG; + my_background.blue = imagebgB; +@@ -1013,8 +1046,8 @@ + } + png_set_background(png_ptr, &my_background, PNG_BACKGROUND_GAMMA_SCREEN, + 0, Display_Gamma); +- if ((info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA || +- (info_ptr->color_type == PNG_COLOR_TYPE_GRAY && HAVE_tRNS)) && ++ if ((_color_type == PNG_COLOR_TYPE_GRAY_ALPHA || ++ (_color_type == PNG_COLOR_TYPE_GRAY && HAVE_tRNS)) && + (imagebgR != imagebgG || imagebgR != imagebgB)) /* i.e., colored bg */ + { + png_set_gray_to_rgb(png_ptr); +@@ -1022,8 +1055,9 @@ + gray_to_rgb = 1; + } + } else { +- if (info_ptr->valid & PNG_INFO_bKGD) { +- png_set_background(png_ptr, &info_ptr->background, ++ if (png_get_valid(png_ptr,info_ptr,PNG_INFO_bKGD)) { ++ png_get_bKGD(png_ptr,info_ptr,&_background); ++ png_set_background(png_ptr, _background, + PNG_BACKGROUND_GAMMA_FILE, 1, 1.0); + } else { + my_background.red = my_background.green = my_background.blue = +@@ -1033,13 +1067,13 @@ + } + } + +- if (info_ptr->bit_depth == 16) ++ if (_bit_depth == 16) + png_set_strip_16(png_ptr); + +- if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY || +- info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) ++ if (_color_type == PNG_COLOR_TYPE_GRAY || ++ _color_type == PNG_COLOR_TYPE_GRAY_ALPHA) + { +- if (info_ptr->bit_depth == 1) ++ if (_bit_depth == 1) + pinfo->colType = F_BWDITHER; + else + pinfo->colType = F_GREYSCALE; +@@ -1049,9 +1083,11 @@ + pass=png_set_interlace_handling(png_ptr); + + png_read_update_info(png_ptr, info_ptr); ++ /* get HIDR again just in case the info_ptr changed */ ++ png_get_IHDR(png_ptr,info_ptr,&_width,&_height,&_bit_depth,&_color_type,&_interlace_type,NULL,NULL); + +- if (info_ptr->color_type == PNG_COLOR_TYPE_RGB || +- info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA || gray_to_rgb) ++ if (_color_type == PNG_COLOR_TYPE_RGB || ++ _color_type == PNG_COLOR_TYPE_RGB_ALPHA || gray_to_rgb) + { + linesize = 3 * pinfo->w; + if (linesize/3 < pinfo->w) { /* know pinfo->w > 0 (see above) */ +@@ -1065,16 +1101,17 @@ + } else { + linesize = pinfo->w; + pinfo->type = PIC8; +- if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY || +- info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) { ++ if (_color_type == PNG_COLOR_TYPE_GRAY || ++ _color_type == PNG_COLOR_TYPE_GRAY_ALPHA) { + for (i = 0; i < 256; i++) + pinfo->r[i] = pinfo->g[i] = pinfo->b[i] = i; + } else { + pinfo->colType = F_FULLCOLOR; +- for (i = 0; i < info_ptr->num_palette; i++) { +- pinfo->r[i] = info_ptr->palette[i].red; +- pinfo->g[i] = info_ptr->palette[i].green; +- pinfo->b[i] = info_ptr->palette[i].blue; ++ png_get_PLTE(png_ptr,info_ptr,&_palette,&_num_palette); ++ for (i = 0; i < _num_palette; i++) { ++ pinfo->r[i] = _palette[i].red; ++ pinfo->g[i] = _palette[i].green; ++ pinfo->b[i] = _palette[i].blue; + } + } + } +@@ -1092,7 +1129,7 @@ + png_error(png_ptr, "can't allocate space for PNG image"); + } + +- png_start_read_image(png_ptr); ++ /*png_start_read_image(png_ptr); -- causes a warning and seems to be unnecessary */ + + for (i = 0; i < pass; i++) { + byte *p = pinfo->pic; +@@ -1106,22 +1143,23 @@ + + png_read_end(png_ptr, info_ptr); + +- if (info_ptr->num_text > 0) { ++ png_get_text(png_ptr,info_ptr,&_text,&_num_text); ++ if (_num_text > 0) { + commentsize = 1; + +- for (i = 0; i < info_ptr->num_text; i++) +- commentsize += strlen(info_ptr->text[i].key) + 1 + +- info_ptr->text[i].text_length + 2; ++ for (i = 0; i < _num_text; i++) ++ commentsize += strlen(_text[i].key) + 1 + ++ _text[i].text_length + 2; + + if ((pinfo->comment = malloc(commentsize)) == NULL) { + png_warning(png_ptr,"can't allocate comment string"); + } + else { + pinfo->comment[0] = '\0'; +- for (i = 0; i < info_ptr->num_text; i++) { +- strcat(pinfo->comment, info_ptr->text[i].key); ++ for (i = 0; i < _num_text; i++) { ++ strcat(pinfo->comment, _text[i].key); + strcat(pinfo->comment, "::"); +- strcat(pinfo->comment, info_ptr->text[i].text); ++ strcat(pinfo->comment, _text[i].text); + strcat(pinfo->comment, "\n"); + } + } +@@ -1143,7 +1181,7 @@ + { + SetISTR(ISTR_WARNING,"%s: libpng error: %s", fbasename, message); + +- longjmp(png_ptr->jmpbuf, 1); ++ longjmp(png_jmpbuf(png_ptr), 1); + } + +