summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick J Volkerding <volkerdi@slackware.com>2019-07-22 22:09:56 +0000
committerEric Hameleers <alien@slackware.com>2019-07-23 08:59:47 +0200
commitbcec1638cf64c4ac465f27e434435f983aa1b1cf (patch)
treec0bfc0874f19ec65a2f08ecb3a4bc72c3f33a62e
parent9f4ecf6a5f87f2f8eb2401c45d1dff7ca806bba5 (diff)
downloadcurrent-bcec1638cf64c4ac465f27e434435f983aa1b1cf.tar.gz
Mon Jul 22 22:09:56 UTC 201920190722220956
a/aaa_terminfo-6.1_20190720-x86_64-1.txz: Upgraded. ap/squashfs-tools-20190721_95230e2-x86_64-1.txz: Upgraded. l/ncurses-6.1_20190720-x86_64-1.txz: Upgraded. l/netpbm-10.87.00-x86_64-1.txz: Upgraded. n/net-tools-20181103_0eebece-x86_64-1.txz: Upgraded.
-rw-r--r--ChangeLog.rss19
-rw-r--r--ChangeLog.txt7
-rw-r--r--FILELIST.TXT143
-rwxr-xr-xrecompress.sh2
-rw-r--r--source/l/netpbm/netpbm-CAN-2005-2471.patch14
-rw-r--r--source/l/netpbm/netpbm-bmptopnm.patch10
-rw-r--r--source/l/netpbm/netpbm-libdir-so.patch48
-rw-r--r--source/l/netpbm/netpbm-manual-pages.patch41
-rw-r--r--source/l/netpbm/netpbm-pamtojpeg2k.patch237
-rw-r--r--source/l/netpbm/netpbm-security-code.patch1619
-rw-r--r--source/l/netpbm/netpbm-userguide.patch9
-rwxr-xr-xsource/l/netpbm/netpbm.SlackBuild7
-rwxr-xr-xsource/n/net-tools/net-tools.SlackBuild2
-rw-r--r--source/n/tin/tin.url1
14 files changed, 1703 insertions, 456 deletions
diff --git a/ChangeLog.rss b/ChangeLog.rss
index a2511e81..d5a09c43 100644
--- a/ChangeLog.rss
+++ b/ChangeLog.rss
@@ -11,10 +11,25 @@
<description>Tracking Slackware development in git.</description>
<language>en-us</language>
<id xmlns="http://www.w3.org/2005/Atom">urn:uuid:c964f45e-6732-11e8-bbe5-107b4450212f</id>
- <pubDate>Mon, 22 Jul 2019 03:05:48 GMT</pubDate>
- <lastBuildDate>Mon, 22 Jul 2019 06:59:42 GMT</lastBuildDate>
+ <pubDate>Mon, 22 Jul 2019 22:09:56 GMT</pubDate>
+ <lastBuildDate>Tue, 23 Jul 2019 06:59:43 GMT</lastBuildDate>
<generator>maintain_current_git.sh v 1.11</generator>
<item>
+ <title>Mon, 22 Jul 2019 22:09:56 GMT</title>
+ <pubDate>Mon, 22 Jul 2019 22:09:56 GMT</pubDate>
+ <link>https://git.slackware.nl/current/tag/?h=20190722220956</link>
+ <guid isPermaLink="false">20190722220956</guid>
+ <description>
+ <![CDATA[<pre>
+a/aaa_terminfo-6.1_20190720-x86_64-1.txz: Upgraded.
+ap/squashfs-tools-20190721_95230e2-x86_64-1.txz: Upgraded.
+l/ncurses-6.1_20190720-x86_64-1.txz: Upgraded.
+l/netpbm-10.87.00-x86_64-1.txz: Upgraded.
+n/net-tools-20181103_0eebece-x86_64-1.txz: Upgraded.
+ </pre>]]>
+ </description>
+ </item>
+ <item>
<title>Mon, 22 Jul 2019 03:05:48 GMT</title>
<pubDate>Mon, 22 Jul 2019 03:05:48 GMT</pubDate>
<link>https://git.slackware.nl/current/tag/?h=20190722030548</link>
diff --git a/ChangeLog.txt b/ChangeLog.txt
index 4b3c6579..ab09c4f5 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -1,3 +1,10 @@
+Mon Jul 22 22:09:56 UTC 2019
+a/aaa_terminfo-6.1_20190720-x86_64-1.txz: Upgraded.
+ap/squashfs-tools-20190721_95230e2-x86_64-1.txz: Upgraded.
+l/ncurses-6.1_20190720-x86_64-1.txz: Upgraded.
+l/netpbm-10.87.00-x86_64-1.txz: Upgraded.
+n/net-tools-20181103_0eebece-x86_64-1.txz: Upgraded.
++--------------------------+
Mon Jul 22 03:05:48 UTC 2019
l/SDL2_mixer-2.0.4-x86_64-2.txz: Rebuilt.
Recompiled with --enable-music-mp3-mad-gpl. Thanks to pomf.
diff --git a/FILELIST.TXT b/FILELIST.TXT
index 87fa6c80..54ffb0e9 100644
--- a/FILELIST.TXT
+++ b/FILELIST.TXT
@@ -1,20 +1,20 @@
-Mon Jul 22 03:21:48 UTC 2019
+Mon Jul 22 22:33:15 UTC 2019
Here is the file list for this directory. If you are using a
mirror site and find missing or extra files in the disk
subdirectories, please have the archive administrator refresh
the mirror.
-drwxr-xr-x 12 root root 4096 2019-07-22 03:05 .
+drwxr-xr-x 12 root root 4096 2019-07-22 22:21 .
-rw-r--r-- 1 root root 10064 2016-06-30 18:39 ./ANNOUNCE.14_2
-rw-r--r-- 1 root root 14341 2018-11-29 05:40 ./CHANGES_AND_HINTS.TXT
--rw-r--r-- 1 root root 921227 2019-07-21 20:37 ./CHECKSUMS.md5
--rw-r--r-- 1 root root 163 2019-07-21 20:37 ./CHECKSUMS.md5.asc
+-rw-r--r-- 1 root root 921440 2019-07-22 22:21 ./CHECKSUMS.md5
+-rw-r--r-- 1 root root 163 2019-07-22 22:21 ./CHECKSUMS.md5.asc
-rw-r--r-- 1 root root 17976 1994-06-10 02:28 ./COPYING
-rw-r--r-- 1 root root 35147 2007-06-30 04:21 ./COPYING3
-rw-r--r-- 1 root root 19573 2016-06-23 20:08 ./COPYRIGHT.TXT
-rw-r--r-- 1 root root 616 2006-10-02 04:37 ./CRYPTO_NOTICE.TXT
--rw-r--r-- 1 root root 664201 2019-07-22 03:05 ./ChangeLog.txt
+-rw-r--r-- 1 root root 664517 2019-07-22 22:09 ./ChangeLog.txt
drwxr-xr-x 3 root root 4096 2013-03-20 22:17 ./EFI
drwxr-xr-x 2 root root 4096 2019-07-21 20:24 ./EFI/BOOT
-rw-r--r-- 1 root root 1417216 2019-07-05 18:54 ./EFI/BOOT/bootx64.efi
@@ -25,9 +25,9 @@ drwxr-xr-x 2 root root 4096 2019-07-21 20:24 ./EFI/BOOT
-rwxr-xr-x 1 root root 2504 2019-07-05 18:54 ./EFI/BOOT/make-grub.sh
-rw-r--r-- 1 root root 10722 2013-09-21 19:02 ./EFI/BOOT/osdetect.cfg
-rw-r--r-- 1 root root 1273 2013-08-12 21:08 ./EFI/BOOT/tools.cfg
--rw-r--r-- 1 root root 1210883 2019-07-21 20:37 ./FILELIST.TXT
+-rw-r--r-- 1 root root 1211148 2019-07-22 22:21 ./FILELIST.TXT
-rw-r--r-- 1 root root 1572 2012-08-29 18:27 ./GPG-KEY
--rw-r--r-- 1 root root 733444 2019-07-22 03:20 ./PACKAGES.TXT
+-rw-r--r-- 1 root root 733444 2019-07-22 22:18 ./PACKAGES.TXT
-rw-r--r-- 1 root root 8564 2016-06-28 21:33 ./README.TXT
-rw-r--r-- 1 root root 3635 2019-07-21 19:43 ./README.initrd
-rw-r--r-- 1 root root 34412 2017-12-01 17:44 ./README_CRYPT.TXT
@@ -786,22 +786,22 @@ drwxr-xr-x 2 root root 4096 2012-09-20 18:06 ./patches
-rw-r--r-- 1 root root 575 2012-09-20 18:06 ./patches/FILE_LIST
-rw-r--r-- 1 root root 14 2012-09-20 18:06 ./patches/MANIFEST.bz2
-rw-r--r-- 1 root root 224 2012-09-20 18:06 ./patches/PACKAGES.TXT
-drwxr-xr-x 18 root root 4096 2019-07-22 03:20 ./slackware64
--rw-r--r-- 1 root root 290946 2019-07-22 03:20 ./slackware64/CHECKSUMS.md5
--rw-r--r-- 1 root root 163 2019-07-22 03:20 ./slackware64/CHECKSUMS.md5.asc
--rw-r--r-- 1 root root 362415 2019-07-22 03:17 ./slackware64/FILE_LIST
--rw-r--r-- 1 root root 3690697 2019-07-22 03:18 ./slackware64/MANIFEST.bz2
+drwxr-xr-x 18 root root 4096 2019-07-22 22:19 ./slackware64
+-rw-r--r-- 1 root root 290946 2019-07-22 22:19 ./slackware64/CHECKSUMS.md5
+-rw-r--r-- 1 root root 163 2019-07-22 22:19 ./slackware64/CHECKSUMS.md5.asc
+-rw-r--r-- 1 root root 362415 2019-07-22 22:16 ./slackware64/FILE_LIST
+-rw-r--r-- 1 root root 3690630 2019-07-22 22:17 ./slackware64/MANIFEST.bz2
lrwxrwxrwx 1 root root 15 2009-08-23 23:34 ./slackware64/PACKAGES.TXT -> ../PACKAGES.TXT
-drwxr-xr-x 2 root root 28672 2019-07-21 20:32 ./slackware64/a
+drwxr-xr-x 2 root root 28672 2019-07-22 22:16 ./slackware64/a
-rw-r--r-- 1 root root 327 2018-06-24 18:44 ./slackware64/a/aaa_base-14.2-x86_64-5.txt
-rw-r--r-- 1 root root 10820 2018-06-24 18:44 ./slackware64/a/aaa_base-14.2-x86_64-5.txz
-rw-r--r-- 1 root root 163 2018-06-24 18:44 ./slackware64/a/aaa_base-14.2-x86_64-5.txz.asc
-rw-r--r-- 1 root root 471 2019-07-19 18:02 ./slackware64/a/aaa_elflibs-15.0-x86_64-9.txt
-rw-r--r-- 1 root root 5951252 2019-07-19 18:02 ./slackware64/a/aaa_elflibs-15.0-x86_64-9.txz
-rw-r--r-- 1 root root 163 2019-07-19 18:02 ./slackware64/a/aaa_elflibs-15.0-x86_64-9.txz.asc
--rw-r--r-- 1 root root 503 2019-05-23 18:51 ./slackware64/a/aaa_terminfo-6.1_20190518-x86_64-1.txt
--rw-r--r-- 1 root root 49096 2019-05-23 18:51 ./slackware64/a/aaa_terminfo-6.1_20190518-x86_64-1.txz
--rw-r--r-- 1 root root 163 2019-05-23 18:51 ./slackware64/a/aaa_terminfo-6.1_20190518-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 503 2019-07-22 18:42 ./slackware64/a/aaa_terminfo-6.1_20190720-x86_64-1.txt
+-rw-r--r-- 1 root root 49296 2019-07-22 18:42 ./slackware64/a/aaa_terminfo-6.1_20190720-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2019-07-22 18:42 ./slackware64/a/aaa_terminfo-6.1_20190720-x86_64-1.txz.asc
-rw-r--r-- 1 root root 414 2018-06-19 20:04 ./slackware64/a/acl-2.2.53-x86_64-1.txt
-rw-r--r-- 1 root root 128832 2018-06-19 20:04 ./slackware64/a/acl-2.2.53-x86_64-1.txz
-rw-r--r-- 1 root root 163 2018-06-19 20:04 ./slackware64/a/acl-2.2.53-x86_64-1.txz.asc
@@ -1143,7 +1143,7 @@ drwxr-xr-x 2 root root 28672 2019-07-21 20:32 ./slackware64/a
-rw-r--r-- 1 root root 540 2018-04-13 13:15 ./slackware64/a/zoo-2.10_22-x86_64-2.txt
-rw-r--r-- 1 root root 56156 2018-04-13 13:15 ./slackware64/a/zoo-2.10_22-x86_64-2.txz
-rw-r--r-- 1 root root 163 2018-04-13 13:15 ./slackware64/a/zoo-2.10_22-x86_64-2.txz.asc
-drwxr-xr-x 2 root root 20480 2019-07-19 18:45 ./slackware64/ap
+drwxr-xr-x 2 root root 20480 2019-07-22 22:16 ./slackware64/ap
-rw-r--r-- 1 root root 291 2018-04-13 13:17 ./slackware64/ap/a2ps-4.14-x86_64-7.txt
-rw-r--r-- 1 root root 694880 2018-04-13 13:17 ./slackware64/ap/a2ps-4.14-x86_64-7.txz
-rw-r--r-- 1 root root 163 2018-04-13 13:17 ./slackware64/ap/a2ps-4.14-x86_64-7.txz.asc
@@ -1349,9 +1349,9 @@ drwxr-xr-x 2 root root 20480 2019-07-19 18:45 ./slackware64/ap
-rw-r--r-- 1 root root 483 2019-07-11 03:49 ./slackware64/ap/sqlite-3.29.0-x86_64-1.txt
-rw-r--r-- 1 root root 896608 2019-07-11 03:49 ./slackware64/ap/sqlite-3.29.0-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-07-11 03:49 ./slackware64/ap/sqlite-3.29.0-x86_64-1.txz.asc
--rw-r--r-- 1 root root 584 2018-09-13 21:03 ./slackware64/ap/squashfs-tools-20180612_6e242dc-x86_64-1.txt
--rw-r--r-- 1 root root 135012 2018-09-13 21:03 ./slackware64/ap/squashfs-tools-20180612_6e242dc-x86_64-1.txz
--rw-r--r-- 1 root root 163 2018-09-13 21:03 ./slackware64/ap/squashfs-tools-20180612_6e242dc-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 584 2019-07-22 18:36 ./slackware64/ap/squashfs-tools-20190721_95230e2-x86_64-1.txt
+-rw-r--r-- 1 root root 137164 2019-07-22 18:36 ./slackware64/ap/squashfs-tools-20190721_95230e2-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2019-07-22 18:36 ./slackware64/ap/squashfs-tools-20190721_95230e2-x86_64-1.txz.asc
-rw-r--r-- 1 root root 442 2019-01-13 19:53 ./slackware64/ap/sudo-1.8.27-x86_64-1.txt
-rw-r--r-- 1 root root 744616 2019-01-13 19:53 ./slackware64/ap/sudo-1.8.27-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-01-13 19:53 ./slackware64/ap/sudo-1.8.27-x86_64-1.txz.asc
@@ -2457,7 +2457,7 @@ drwxr-xr-x 2 root root 20480 2016-03-10 03:11 ./slackware64/kdei
-rw-r--r-- 1 root root 7544 2018-03-01 07:54 ./slackware64/kdei/maketag
-rw-r--r-- 1 root root 7544 2018-03-01 07:54 ./slackware64/kdei/maketag.ez
-rw-r--r-- 1 root root 1500 2018-03-01 07:54 ./slackware64/kdei/tagfile
-drwxr-xr-x 2 root root 69632 2019-07-22 03:17 ./slackware64/l
+drwxr-xr-x 2 root root 69632 2019-07-22 22:16 ./slackware64/l
-rw-r--r-- 1 root root 338 2018-04-13 14:13 ./slackware64/l/ConsoleKit2-1.0.0-x86_64-4.txt
-rw-r--r-- 1 root root 149752 2018-04-13 14:13 ./slackware64/l/ConsoleKit2-1.0.0-x86_64-4.txz
-rw-r--r-- 1 root root 163 2018-04-13 14:13 ./slackware64/l/ConsoleKit2-1.0.0-x86_64-4.txz.asc
@@ -3155,15 +3155,15 @@ drwxr-xr-x 2 root root 69632 2019-07-22 03:17 ./slackware64/l
-rw-r--r-- 1 root root 586 2019-02-01 01:16 ./slackware64/l/mpfr-4.0.2-x86_64-1.txt
-rw-r--r-- 1 root root 329688 2019-02-01 01:16 ./slackware64/l/mpfr-4.0.2-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-02-01 01:16 ./slackware64/l/mpfr-4.0.2-x86_64-1.txz.asc
--rw-r--r-- 1 root root 493 2019-05-23 18:51 ./slackware64/l/ncurses-6.1_20190518-x86_64-1.txt
--rw-r--r-- 1 root root 1294820 2019-05-23 18:51 ./slackware64/l/ncurses-6.1_20190518-x86_64-1.txz
--rw-r--r-- 1 root root 163 2019-05-23 18:51 ./slackware64/l/ncurses-6.1_20190518-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 493 2019-07-22 18:41 ./slackware64/l/ncurses-6.1_20190720-x86_64-1.txt
+-rw-r--r-- 1 root root 1302164 2019-07-22 18:41 ./slackware64/l/ncurses-6.1_20190720-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2019-07-22 18:41 ./slackware64/l/ncurses-6.1_20190720-x86_64-1.txz.asc
-rw-r--r-- 1 root root 342 2018-05-08 02:28 ./slackware64/l/neon-0.30.2-x86_64-1.txt
-rw-r--r-- 1 root root 212404 2018-05-08 02:28 ./slackware64/l/neon-0.30.2-x86_64-1.txz
-rw-r--r-- 1 root root 163 2018-05-08 02:28 ./slackware64/l/neon-0.30.2-x86_64-1.txz.asc
--rw-r--r-- 1 root root 271 2018-11-13 04:34 ./slackware64/l/netpbm-10.84.02-x86_64-1.txt
--rw-r--r-- 1 root root 1972488 2018-11-13 04:34 ./slackware64/l/netpbm-10.84.02-x86_64-1.txz
--rw-r--r-- 1 root root 163 2018-11-13 04:34 ./slackware64/l/netpbm-10.84.02-x86_64-1.txz.asc
+-rw-r--r-- 1 root root 271 2019-07-22 21:14 ./slackware64/l/netpbm-10.87.00-x86_64-1.txt
+-rw-r--r-- 1 root root 1988668 2019-07-22 21:14 ./slackware64/l/netpbm-10.87.00-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2019-07-22 21:14 ./slackware64/l/netpbm-10.87.00-x86_64-1.txz.asc
-rw-r--r-- 1 root root 423 2019-05-30 19:10 ./slackware64/l/newt-0.52.21-x86_64-1.txt
-rw-r--r-- 1 root root 111824 2019-05-30 19:10 ./slackware64/l/newt-0.52.21-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-05-30 19:10 ./slackware64/l/newt-0.52.21-x86_64-1.txz.asc
@@ -3423,7 +3423,7 @@ drwxr-xr-x 2 root root 69632 2019-07-22 03:17 ./slackware64/l
-rw-r--r-- 1 root root 463 2019-07-20 18:25 ./slackware64/l/zstd-1.4.1-x86_64-1.txt
-rw-r--r-- 1 root root 401268 2019-07-20 18:25 ./slackware64/l/zstd-1.4.1-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-07-20 18:25 ./slackware64/l/zstd-1.4.1-x86_64-1.txz.asc
-drwxr-xr-x 2 root root 36864 2019-07-19 18:45 ./slackware64/n
+drwxr-xr-x 2 root root 36864 2019-07-22 22:16 ./slackware64/n
-rw-r--r-- 1 root root 357 2019-07-05 18:51 ./slackware64/n/ModemManager-1.10.4-x86_64-1.txt
-rw-r--r-- 1 root root 1697584 2019-07-05 18:51 ./slackware64/n/ModemManager-1.10.4-x86_64-1.txz
-rw-r--r-- 1 root root 163 2019-07-05 18:51 ./slackware64/n/ModemManager-1.10.4-x86_64-1.txz.asc
@@ -3653,9 +3653,9 @@ drwxr-xr-x 2 root root 36864 2019-07-19 18:45 ./slackware64/n
-rw-r--r-- 1 root root 451 2019-05-22 21:34 ./slackware64/n/net-snmp-5.8-x86_64-5.txt
-rw-r--r-- 1 root root 1624996 2019-05-22 21:34 ./slackware64/n/net-snmp-5.8-x86_64-5.txz
-rw-r--r-- 1 root root 163 2019-05-22 21:34 ./slackware64/n/net-snmp-5.8-x86_64-5.txz.asc
--rw-r--r-- 1 root root 513 2018-04-13 15:42 ./slackware64/n/net-tools-20170208_479bb4a-x86_64-2.txt
--rw-r--r-- 1 root root 131884 2018-04-13 15:42 ./slackware64/n/net-tools-20170208_479bb4a-x86_64-2.txz
--rw-r--r-- 1 root root 163 2018-04-13 15:42 ./slackware64/n/net-tools-20170208_479bb4a-x86_64-2.txz.asc
+-rw-r--r-- 1 root root 513 2019-07-22 18:32 ./slackware64/n/net-tools-20181103_0eebece-x86_64-1.txt
+-rw-r--r-- 1 root root 131472 2019-07-22 18:32 ./slackware64/n/net-tools-20181103_0eebece-x86_64-1.txz
+-rw-r--r-- 1 root root 163 2019-07-22 18:32 ./slackware64/n/net-tools-20181103_0eebece-x86_64-1.txz.asc
-rw-r--r-- 1 root root 580 2018-12-22 00:11 ./slackware64/n/netatalk-3.1.12-x86_64-1.txt
-rw-r--r-- 1 root root 508624 2018-12-22 00:11 ./slackware64/n/netatalk-3.1.12-x86_64-1.txz
-rw-r--r-- 1 root root 163 2018-12-22 00:11 ./slackware64/n/netatalk-3.1.12-x86_64-1.txz.asc
@@ -5007,13 +5007,13 @@ drwxr-xr-x 2 root root 4096 2019-02-17 23:51 ./slackware64/y
-rw-r--r-- 1 root root 1147 2018-03-01 07:55 ./slackware64/y/maketag
-rw-r--r-- 1 root root 1147 2018-03-01 07:55 ./slackware64/y/maketag.ez
-rw-r--r-- 1 root root 14 2018-03-01 07:55 ./slackware64/y/tagfile
-drwxr-xr-x 19 root root 4096 2019-07-22 03:21 ./source
--rw-r--r-- 1 root root 468928 2019-07-22 03:21 ./source/CHECKSUMS.md5
--rw-r--r-- 1 root root 163 2019-07-22 03:21 ./source/CHECKSUMS.md5.asc
--rw-r--r-- 1 root root 661514 2019-07-22 03:21 ./source/FILE_LIST
--rw-r--r-- 1 root root 17300577 2019-07-22 03:21 ./source/MANIFEST.bz2
+drwxr-xr-x 19 root root 4096 2019-07-22 22:33 ./source
+-rw-r--r-- 1 root root 469120 2019-07-22 22:33 ./source/CHECKSUMS.md5
+-rw-r--r-- 1 root root 163 2019-07-22 22:33 ./source/CHECKSUMS.md5.asc
+-rw-r--r-- 1 root root 661760 2019-07-22 22:32 ./source/FILE_LIST
+-rw-r--r-- 1 root root 17300975 2019-07-22 22:32 ./source/MANIFEST.bz2
-rw-r--r-- 1 root root 1314 2006-10-02 04:40 ./source/README.TXT
-drwxr-xr-x 111 root root 4096 2019-07-05 18:41 ./source/a
+drwxr-xr-x 111 root root 4096 2019-07-22 20:26 ./source/a
-rw-r--r-- 1 root root 1034 2019-05-04 17:56 ./source/a/FTBFSlog
drwxr-xr-x 2 root root 4096 2018-06-24 18:43 ./source/a/aaa_base
-rw-r--r-- 1 root root 11115 2018-06-24 18:43 ./source/a/aaa_base/_aaa_base.tar.gz
@@ -6409,10 +6409,10 @@ drwxr-xr-x 2 root root 4096 2019-07-11 03:48 ./source/ap/sqlite
-rw-r--r-- 1 root root 937 2018-11-29 19:15 ./source/ap/sqlite/slack-desc
-rw-r--r-- 1 root root 6771951 2019-07-10 20:14 ./source/ap/sqlite/sqlite-src-3290000.tar.lz
-rwxr-xr-x 1 root root 6251 2019-04-17 19:25 ./source/ap/sqlite/sqlite.SlackBuild
-drwxr-xr-x 2 root root 4096 2018-10-24 22:04 ./source/ap/squashfs-tools
+drwxr-xr-x 2 root root 4096 2019-07-22 18:35 ./source/ap/squashfs-tools
-rwxr-xr-x 1 root root 1939 2018-09-13 21:02 ./source/ap/squashfs-tools/get-squashfs-tools.sh
-rw-r--r-- 1 root root 1078 2018-09-13 21:00 ./source/ap/squashfs-tools/slack-desc
--rw-r--r-- 1 root root 163106 2018-09-13 21:02 ./source/ap/squashfs-tools/squashfs-tools-20180612_6e242dc.tar.lz
+-rw-r--r-- 1 root root 165665 2019-07-22 18:34 ./source/ap/squashfs-tools/squashfs-tools-20190721_95230e2.tar.lz
-rwxr-xr-- 1 root root 3850 2018-09-19 00:04 ./source/ap/squashfs-tools/squashfs-tools.SlackBuild
-rw-r--r-- 1 root root 237 2018-09-19 00:03 ./source/ap/squashfs-tools/squashfs-tools.glibc228.diff.gz
drwxr-xr-x 2 root root 4096 2019-01-13 19:52 ./source/ap/sudo
@@ -8088,7 +8088,7 @@ drwxr-xr-x 2 root root 4096 2018-02-27 06:35 ./source/kdei/kde-l10n/slack
-rw-r--r-- 1 root root 648 2018-02-27 06:35 ./source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-wa
-rw-r--r-- 1 root root 698 2018-02-27 06:37 ./source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-zh_CN
-rw-r--r-- 1 root root 687 2018-02-27 06:37 ./source/kdei/kde-l10n/slack-desc/slack-desc.kde-l10n-zh_TW
-drwxr-xr-x 318 root root 12288 2019-07-19 17:15 ./source/l
+drwxr-xr-x 318 root root 12288 2019-07-22 21:13 ./source/l
drwxr-xr-x 3 root root 4096 2018-09-18 22:04 ./source/l/ConsoleKit2
-rw-r--r-- 1 root root 705880 2015-08-10 06:49 ./source/l/ConsoleKit2/ConsoleKit2-1.0.0.tar.xz
-rwxr-xr-x 1 root root 5326 2018-09-18 22:04 ./source/l/ConsoleKit2/ConsoleKit2.SlackBuild
@@ -9310,10 +9310,10 @@ drwxr-xr-x 3 root root 4096 2019-02-01 01:02 ./source/l/mpfr
-rwxr-xr-x 1 root root 4497 2019-02-01 00:57 ./source/l/mpfr/mpfr.SlackBuild
drwxr-xr-x 2 root root 4096 2011-04-05 02:53 ./source/l/mpfr/patches
-rw-r--r-- 1 root root 1038 2018-02-27 06:12 ./source/l/mpfr/slack-desc
-drwxr-xr-x 3 root root 4096 2019-05-23 18:40 ./source/l/ncurses
+drwxr-xr-x 3 root root 4096 2019-07-22 18:38 ./source/l/ncurses
-rwxr-xr-x 1 root root 3292 2018-11-13 22:15 ./source/l/ncurses/aaa_terminfo.SlackBuild
-rw-r--r-- 1 root root 139 2018-06-22 20:33 ./source/l/ncurses/doinst.sh.gz
--rw-r--r-- 1 root root 1959759 2019-05-19 00:12 ./source/l/ncurses/ncurses-6.1-20190518.tar.lz
+-rw-r--r-- 1 root root 1970527 2019-07-21 00:33 ./source/l/ncurses/ncurses-6.1-20190720.tar.lz
-rwxr-xr-x 1 root root 8112 2018-11-13 22:15 ./source/l/ncurses/ncurses.SlackBuild
-rw-r--r-- 1 root root 272 2019-04-22 19:10 ./source/l/ncurses/ncurses.mkhashsize.diff.gz
-rw-r--r-- 1 root root 948 2018-03-26 18:28 ./source/l/ncurses/slack-desc
@@ -9330,28 +9330,30 @@ drwxr-xr-x 2 root root 4096 2018-09-18 22:04 ./source/l/neon
-rwxr-xr-x 1 root root 4451 2018-09-18 22:04 ./source/l/neon/neon.SlackBuild
-rw-r--r-- 1 root root 49 2018-05-07 05:54 ./source/l/neon/neon.url
-rw-r--r-- 1 root root 794 2018-02-27 06:12 ./source/l/neon/slack-desc
-drwxr-xr-x 2 root root 4096 2018-11-13 04:27 ./source/l/netpbm
--rw-r--r-- 1 root root 2676834 2018-11-11 19:30 ./source/l/netpbm/netpbm-10.84.02.tar.lz
--rw-r--r-- 1 root root 382 2018-07-23 13:37 ./source/l/netpbm/netpbm-CAN-2005-2471.patch.gz
--rw-r--r-- 1 root root 382 2018-07-23 13:37 ./source/l/netpbm/netpbm-CVE-2017-2587.patch.gz
--rw-r--r-- 1 root root 288 2018-07-23 13:37 ./source/l/netpbm/netpbm-bmptopnm.patch.gz
--rw-r--r-- 1 root root 385 2018-07-23 13:37 ./source/l/netpbm/netpbm-cmuwtopbm.patch.gz
--rw-r--r-- 1 root root 1876 2018-07-23 13:37 ./source/l/netpbm/netpbm-docfix.patch.gz
--rw-r--r-- 1 root root 289 2018-07-23 13:37 ./source/l/netpbm/netpbm-fiasco-overflow.patch.gz
--rw-r--r-- 1 root root 331 2018-07-23 13:37 ./source/l/netpbm/netpbm-gcc4.patch.gz
--rw-r--r-- 1 root root 307 2018-07-23 13:37 ./source/l/netpbm/netpbm-glibc.patch.gz
--rw-r--r-- 1 root root 1723 2018-07-23 13:37 ./source/l/netpbm/netpbm-manfix.patch.gz
--rw-r--r-- 1 root root 15379 2018-07-23 13:37 ./source/l/netpbm/netpbm-manual-pages.patch.gz
--rw-r--r-- 1 root root 307 2018-07-23 13:37 ./source/l/netpbm/netpbm-multilib.patch.gz
+drwxr-xr-x 2 root root 4096 2019-07-22 20:59 ./source/l/netpbm
+-rw-r--r-- 1 root root 2705758 2019-07-22 20:34 ./source/l/netpbm/netpbm-10.87.00.tar.lz
+-rw-r--r-- 1 root root 381 2019-04-17 08:07 ./source/l/netpbm/netpbm-CAN-2005-2471.patch.gz
+-rw-r--r-- 1 root root 382 2019-04-17 08:07 ./source/l/netpbm/netpbm-CVE-2017-2587.patch.gz
+-rw-r--r-- 1 root root 284 2019-04-17 08:07 ./source/l/netpbm/netpbm-bmptopnm.patch.gz
+-rw-r--r-- 1 root root 385 2019-04-17 08:07 ./source/l/netpbm/netpbm-cmuwtopbm.patch.gz
+-rw-r--r-- 1 root root 1876 2019-04-17 08:07 ./source/l/netpbm/netpbm-docfix.patch.gz
+-rw-r--r-- 1 root root 289 2019-04-17 08:07 ./source/l/netpbm/netpbm-fiasco-overflow.patch.gz
+-rw-r--r-- 1 root root 331 2019-04-17 08:07 ./source/l/netpbm/netpbm-gcc4.patch.gz
+-rw-r--r-- 1 root root 307 2019-04-17 08:07 ./source/l/netpbm/netpbm-glibc.patch.gz
+-rw-r--r-- 1 root root 668 2019-04-17 08:07 ./source/l/netpbm/netpbm-libdir-so.patch.gz
+-rw-r--r-- 1 root root 1723 2019-04-17 08:07 ./source/l/netpbm/netpbm-manfix.patch.gz
+-rw-r--r-- 1 root root 15139 2019-04-17 08:07 ./source/l/netpbm/netpbm-manual-pages.patch.gz
+-rw-r--r-- 1 root root 307 2019-04-17 08:07 ./source/l/netpbm/netpbm-multilib.patch.gz
-rw-r--r-- 1 root root 273 2018-07-23 13:37 ./source/l/netpbm/netpbm-noppmtompeg.patch.gz
--rw-r--r-- 1 root root 252 2018-07-23 13:37 ./source/l/netpbm/netpbm-pamtojpeg2k.patch.gz
--rw-r--r-- 1 root root 640 2018-07-23 13:37 ./source/l/netpbm/netpbm-ppmfadeusage.patch.gz
--rw-r--r-- 1 root root 229 2018-07-23 13:37 ./source/l/netpbm/netpbm-python3.patch.gz
--rw-r--r-- 1 root root 15517 2018-07-23 13:37 ./source/l/netpbm/netpbm-security-code.patch.gz
--rw-r--r-- 1 root root 1704 2018-07-23 13:37 ./source/l/netpbm/netpbm-security-scripts.patch.gz
--rw-r--r-- 1 root root 394 2018-07-23 13:37 ./source/l/netpbm/netpbm-time.patch.gz
--rw-r--r-- 1 root root 319 2018-07-23 13:37 ./source/l/netpbm/netpbm-xwdfix.patch.gz
--rwxr-xr-x 1 root root 6217 2018-11-13 04:26 ./source/l/netpbm/netpbm.SlackBuild
+-rw-r--r-- 1 root root 2252 2019-04-17 08:07 ./source/l/netpbm/netpbm-pamtojpeg2k.patch.gz
+-rw-r--r-- 1 root root 640 2019-04-17 08:07 ./source/l/netpbm/netpbm-ppmfadeusage.patch.gz
+-rw-r--r-- 1 root root 229 2019-04-17 08:07 ./source/l/netpbm/netpbm-python3.patch.gz
+-rw-r--r-- 1 root root 21893 2019-04-17 08:07 ./source/l/netpbm/netpbm-security-code.patch.gz
+-rw-r--r-- 1 root root 1704 2019-04-17 08:07 ./source/l/netpbm/netpbm-security-scripts.patch.gz
+-rw-r--r-- 1 root root 394 2019-04-17 08:07 ./source/l/netpbm/netpbm-time.patch.gz
+-rw-r--r-- 1 root root 219 2019-04-17 08:07 ./source/l/netpbm/netpbm-userguide.patch.gz
+-rw-r--r-- 1 root root 319 2019-04-17 08:07 ./source/l/netpbm/netpbm-xwdfix.patch.gz
+-rwxr-xr-x 1 root root 6497 2019-07-22 21:08 ./source/l/netpbm/netpbm.SlackBuild
-rw-r--r-- 1 root root 725 2018-11-11 19:04 ./source/l/netpbm/slack-desc
-rwxr-xr-x 1 root root 1373 2018-11-11 19:28 ./source/l/netpbm/svn-checkout.sh
drwxr-xr-x 2 root root 4096 2019-05-30 19:09 ./source/l/newt
@@ -9857,7 +9859,7 @@ drwxr-xr-x 2 root root 4096 2019-07-20 18:23 ./source/l/zstd
-rw-r--r-- 1 root root 325 2018-12-30 04:38 ./source/l/zstd/zstd.dont.link.pzstd.to.static.libzstd.a.diff.gz
-rw-r--r-- 1 root root 33 2018-11-08 01:06 ./source/l/zstd/zstd.url
-rwxr-xr-x 1 root root 14025 2018-11-20 03:08 ./source/make_world.sh
-drwxr-xr-x 147 root root 4096 2019-06-24 18:23 ./source/n
+drwxr-xr-x 147 root root 4096 2019-07-22 18:32 ./source/n
-rw-r--r-- 1 root root 709 2019-04-13 19:02 ./source/n/FTBFSlog
drwxr-xr-x 2 root root 4096 2019-07-05 18:49 ./source/n/ModemManager
-rw-r--r-- 1 root root 2057612 2019-07-04 12:44 ./source/n/ModemManager/ModemManager-1.10.4.tar.xz
@@ -10344,12 +10346,12 @@ drwxr-xr-x 2 root root 4096 2019-05-22 21:14 ./source/n/net-snmp
-rw-r--r-- 1 root root 895 2007-06-19 03:36 ./source/n/net-snmp/rc.snmpd
-rw-r--r-- 1 root root 907 2018-02-27 06:13 ./source/n/net-snmp/slack-desc
-rw-r--r-- 1 root root 4909 2007-04-16 18:39 ./source/n/net-snmp/snmpd.conf.gz
-drwxr-xr-x 2 root root 4096 2018-04-23 17:20 ./source/n/net-tools
+drwxr-xr-x 2 root root 4096 2019-07-22 18:31 ./source/n/net-tools
-rwxr-xr-x 1 root root 1943 2017-11-12 19:07 ./source/n/net-tools/get-net-tools.sh
-rw-r--r-- 1 root root 1318 2017-01-09 19:25 ./source/n/net-tools/ipmask.8
-rw-r--r-- 1 root root 2216 1994-08-15 19:16 ./source/n/net-tools/ipmask.c
--rw-r--r-- 1 root root 198408 2017-11-12 19:07 ./source/n/net-tools/net-tools-20170208_479bb4a.tar.xz
--rwxr-xr-x 1 root root 4292 2018-04-23 17:20 ./source/n/net-tools/net-tools.SlackBuild
+-rw-r--r-- 1 root root 198424 2019-07-22 18:31 ./source/n/net-tools/net-tools-20181103_0eebece.tar.xz
+-rwxr-xr-x 1 root root 4292 2019-07-22 18:31 ./source/n/net-tools/net-tools.SlackBuild
-rw-r--r-- 1 root root 659 2017-11-12 19:13 ./source/n/net-tools/net-tools.config.h.gz
-rw-r--r-- 1 root root 970 2018-02-27 06:13 ./source/n/net-tools/slack-desc
drwxr-xr-x 2 root root 4096 2018-12-22 00:00 ./source/n/netatalk
@@ -10790,11 +10792,12 @@ drwxr-xr-x 2 root root 4096 2019-04-03 20:43 ./source/n/tftp-hpa
-rw-r--r-- 1 root root 836 2011-12-11 22:15 ./source/n/tftp-hpa/tftp-hpa-5.2.tar.sign
-rw-r--r-- 1 root root 89564 2011-12-11 22:15 ./source/n/tftp-hpa/tftp-hpa-5.2.tar.xz
-rwxr-xr-x 1 root root 3120 2019-04-03 20:43 ./source/n/tftp-hpa/tftp-hpa.SlackBuild
-drwxr-xr-x 2 root root 4096 2019-03-28 21:44 ./source/n/tin
+drwxr-xr-x 2 root root 4096 2019-07-22 18:02 ./source/n/tin
-rw-r--r-- 1 root root 939 2018-02-27 06:13 ./source/n/tin/slack-desc
-rw-r--r-- 1 root root 1538960 2018-12-24 09:28 ./source/n/tin/tin-2.4.3.tar.xz
-rw-r--r-- 1 root root 286 2018-12-24 09:34 ./source/n/tin/tin-2.4.3.tar.xz.sign
-rwxr-xr-x 1 root root 3653 2019-03-28 21:44 ./source/n/tin/tin.SlackBuild
+-rw-r--r-- 1 root root 40 2019-07-22 18:02 ./source/n/tin/tin.url
drwxr-xr-x 2 root root 4096 2018-09-18 22:04 ./source/n/traceroute
-rw-r--r-- 1 root root 1008 2018-02-27 06:13 ./source/n/traceroute/slack-desc
-rw-r--r-- 1 root root 57572 2016-03-08 17:24 ./source/n/traceroute/traceroute-2.1.0.tar.xz
@@ -12417,8 +12420,8 @@ drwxr-xr-x 2 root root 4096 2019-04-03 20:41 ./source/xap/gnuchess
-rw-r--r-- 1 root root 269 2015-03-20 18:35 ./source/xap/gnuchess/xboard.conf.diff.gz
drwxr-xr-x 2 root root 4096 2019-05-29 18:28 ./source/xap/gnuplot
-rw-r--r-- 1 root root 4247684 2019-05-29 04:21 ./source/xap/gnuplot/gnuplot-5.2.7.tar.lz
--rwxr-xr-x 1 root root 5230 2018-10-30 21:08 ./source/xap/gnuplot/gnuplot.SlackBuild
--rw-r--r-- 1 root root 232 2017-09-30 18:21 ./source/xap/gnuplot/gnuplot.fix.info.generation.diff.gz
+-rwxr-xr-x 1 root root 5230 2018-10-30 21:08 ./source/xap/gnuplot/gnuplot.SlackBuild
+-rw-r--r-- 1 root root 232 2017-09-30 18:21 ./source/xap/gnuplot/gnuplot.fix.info.generation.diff.gz
-rw-r--r-- 1 root root 24 2018-06-05 04:25 ./source/xap/gnuplot/gnuplot.url
-rw-r--r-- 1 root root 1099 2018-02-27 06:13 ./source/xap/gnuplot/slack-desc
drwxr-xr-x 2 root root 4096 2019-05-30 18:46 ./source/xap/gparted
diff --git a/recompress.sh b/recompress.sh
index a799cca8..2e939cd3 100755
--- a/recompress.sh
+++ b/recompress.sh
@@ -810,6 +810,7 @@ gzip ./source/l/netpbm/netpbm-manual-pages.patch
gzip ./source/l/netpbm/netpbm-CAN-2005-2471.patch
gzip ./source/l/netpbm/netpbm-bmptopnm.patch
gzip ./source/l/netpbm/netpbm-multilib.patch
+gzip ./source/l/netpbm/netpbm-libdir-so.patch
gzip ./source/l/netpbm/netpbm-manfix.patch
gzip ./source/l/netpbm/netpbm-time.patch
gzip ./source/l/netpbm/netpbm-python3.patch
@@ -817,6 +818,7 @@ gzip ./source/l/netpbm/netpbm-fiasco-overflow.patch
gzip ./source/l/netpbm/netpbm-security-code.patch
gzip ./source/l/netpbm/netpbm-pamtojpeg2k.patch
gzip ./source/l/netpbm/netpbm-ppmfadeusage.patch
+gzip ./source/l/netpbm/netpbm-userguide.patch
gzip ./source/l/netpbm/netpbm-cmuwtopbm.patch
gzip ./source/l/netpbm/netpbm-CVE-2017-2587.patch
gzip ./source/l/netpbm/netpbm-security-scripts.patch
diff --git a/source/l/netpbm/netpbm-CAN-2005-2471.patch b/source/l/netpbm/netpbm-CAN-2005-2471.patch
index 24495de1..77a3cd76 100644
--- a/source/l/netpbm/netpbm-CAN-2005-2471.patch
+++ b/source/l/netpbm/netpbm-CAN-2005-2471.patch
@@ -1,7 +1,8 @@
-diff -urNp a/converter/other/pstopnm.c b/converter/other/pstopnm.c
---- a/converter/other/pstopnm.c 2018-07-23 15:14:51.200658026 +0200
-+++ b/converter/other/pstopnm.c 2018-07-23 15:18:12.579910612 +0200
-@@ -896,11 +896,11 @@ execGhostscript(int const
+diff --git a/converter/other/pstopnm.c b/converter/other/pstopnm.c
+index f534265..2ab48ab 100644
+--- a/converter/other/pstopnm.c
++++ b/converter/other/pstopnm.c
+@@ -896,11 +896,11 @@ execGhostscript(int const inputPipeFd,
ghostscriptProg, arg0,
deviceopt, outfileopt, gopt, ropt, textalphabitsopt,
"-q", "-dNOPAUSE",
@@ -9,8 +10,9 @@ diff -urNp a/converter/other/pstopnm.c b/converter/other/pstopnm.c
+ "-dPARANOIDSAFER", "-");
}
- execl(ghostscriptProg, arg0, deviceopt, outfileopt, gopt, ropt, "-q",
-- "-dNOPAUSE", "-dSAFER", "-", NULL);
+- execl(ghostscriptProg, arg0, deviceopt, outfileopt, gopt, ropt,
+- textalphabitsopt, "-q", "-dNOPAUSE", "-dSAFER", "-", NULL);
++ execl(ghostscriptProg, arg0, deviceopt, outfileopt, gopt, ropt, "-q",
+ "-dNOPAUSE", "-dPARANOIDSAFER", "-", NULL);
pm_error("execl() of Ghostscript ('%s') failed, errno=%d (%s)",
diff --git a/source/l/netpbm/netpbm-bmptopnm.patch b/source/l/netpbm/netpbm-bmptopnm.patch
index 90954274..d0901646 100644
--- a/source/l/netpbm/netpbm-bmptopnm.patch
+++ b/source/l/netpbm/netpbm-bmptopnm.patch
@@ -1,7 +1,9 @@
---- netpbm-10.35/converter/other/bmptopnm.c.bmptopnm 2007-01-29 13:08:46.000000000 +0100
-+++ netpbm-10.35/converter/other/bmptopnm.c 2007-01-29 13:32:21.000000000 +0100
-@@ -1262,7 +1262,7 @@ readBmp(FILE * const ifP,
- xel ** const colormapP,
+diff --git a/converter/other/bmptopnm.c b/converter/other/bmptopnm.c
+index 3f66634..ca4f944 100644
+--- a/converter/other/bmptopnm.c
++++ b/converter/other/bmptopnm.c
+@@ -1494,7 +1494,7 @@ readBmp(FILE * const ifP,
+ unsigned int * const cmapSizeP,
bool const verbose) {
- xel * colormap; /* malloc'ed */
diff --git a/source/l/netpbm/netpbm-libdir-so.patch b/source/l/netpbm/netpbm-libdir-so.patch
new file mode 100644
index 00000000..558daae1
--- /dev/null
+++ b/source/l/netpbm/netpbm-libdir-so.patch
@@ -0,0 +1,48 @@
+diff --git a/lib/Makefile b/lib/Makefile
+index bc758df..7f51b41 100644
+--- a/lib/Makefile
++++ b/lib/Makefile
+@@ -221,7 +221,7 @@ libpm.o: compile.h
+ .PHONY: install.lib
+ ifeq ($(NETPBMLIBTYPE),unixshared)
+ # install a Unix-style shared library
+-install.lib: $(PKGDIR)/lib $(PKGDIR)/sharedlink
++install.lib: $(PKGDIR)/lib
+ cd $(PKGDIR)/lib ; rm -f libnetpbm.$(NETPBMLIBSUFFIX).$(MAJ).*
+ $(INSTALL) -c -m $(INSTALL_PERM_LIBD) \
+ libnetpbm.$(NETPBMLIBSUFFIX).$(MAJ).$(MIN) $(PKGDIR)/lib/
+@@ -263,27 +263,26 @@ $(INTERFACE_HEADERS:%=%_installhdr): $(PKGDIR)/include/netpbm
+ $(SRCDIR)/lib/$(@:%_installhdr=%) $(PKGDIR)/include/netpbm/
+
+ .PHONY: install.staticlib
+-install.staticlib: $(PKGDIR)/staticlink
++install.staticlib: $(PKGDIR)/lib
+ $(INSTALL) -c -m $(INSTALL_PERM_LIBS) libnetpbm.$(STATICLIBSUFFIX) \
+- $(PKGDIR)/staticlink
++ $(PKGDIR)/lib
+
+ # Install a shared library stub -- the ".so" file used at link time to
+ # prepare a program for dynamically linking a library at run time
+ .PHONY: install.sharedlibstub
+-install.sharedlibstub: $(PKGDIR)/sharedlink
++install.sharedlibstub: $(PKGDIR)/lib
+ ifeq ($(NETPBMLIBTYPE),unixshared)
+ # install the link-time (.so) links to the runtime libraries
+- cd $(PKGDIR)/sharedlink ; \
++ cd $(PKGDIR)/lib ; \
+ rm -f libnetpbm.$(NETPBMLIBSUFFIX); \
+- $(SYMLINK) ../lib/libnetpbm.$(NETPBMLIBSUFFIX).$(MAJ) \
++ $(SYMLINK) libnetpbm.$(NETPBMLIBSUFFIX).$(MAJ) \
+ libnetpbm.$(NETPBMLIBSUFFIX)
+ endif
+ ifeq ($(NETPBMLIBTYPE),dll)
+- $(INSTALL) -c -m $(INSTALL_PERM_LIBS) libnetpbm.dll.a \
+- $(PKGDIR)/sharedlink
++ $(INSTALL) -c -m $(INSTALL_PERM_LIBS) libnetpbm.dll.a $(PKGDIR)/link
+ endif
+ ifeq ($(NETPBMLIBTYPE),dylib)
+- cd $(PKGDIR)/sharedlink/ ; \
++ cd $(PKGDIR)/link/ ; \
+ rm -f libnetpbm.dylib; \
+ $(SYMLINK) ../lib/libnetpbm.$(MAJ).$(MIN).dylib libnetpbm.dylib
+ endif
diff --git a/source/l/netpbm/netpbm-manual-pages.patch b/source/l/netpbm/netpbm-manual-pages.patch
index b5fbbeae..d52c8eb3 100644
--- a/source/l/netpbm/netpbm-manual-pages.patch
+++ b/source/l/netpbm/netpbm-manual-pages.patch
@@ -1,6 +1,7 @@
-diff -urNp old/userguide/libnetpbm_ug.html new/userguide/libnetpbm_ug.html
---- old/userguide/libnetpbm_ug.html 2017-09-05 14:20:09.734743404 +0200
-+++ new/userguide/libnetpbm_ug.html 2017-09-05 14:47:30.496705483 +0200
+diff --git a/userguide/libnetpbm_ug.html b/userguide/libnetpbm_ug.html
+index 94d4fd4..bb1c77e 100644
+--- a/userguide/libnetpbm_ug.html
++++ b/userguide/libnetpbm_ug.html
@@ -374,7 +374,7 @@ plain format.
<H2 id="reference">Reference</h2>
@@ -10,9 +11,10 @@ diff -urNp old/userguide/libnetpbm_ug.html new/userguide/libnetpbm_ug.html
processing image data.
<p>The <a href="libpm.html">Libnetpbm Utility Manual</a>
-diff -urNp old/userguide/pamfunc.html new/userguide/pamfunc.html
---- old/userguide/pamfunc.html 2017-09-05 14:20:09.738743398 +0200
-+++ new/userguide/pamfunc.html 2017-09-05 14:47:41.760644848 +0200
+diff --git a/userguide/pamfunc.html b/userguide/pamfunc.html
+index d158393..e0fe96a 100644
+--- a/userguide/pamfunc.html
++++ b/userguide/pamfunc.html
@@ -57,7 +57,7 @@ output image.
and bit string (such as and with 01001000). For the arithmetic functions, the
function arguments and results are the fraction that a sample is of the
@@ -22,21 +24,10 @@ diff -urNp old/userguide/pamfunc.html new/userguide/pamfunc.html
the sample value, and the maxval indicates the width of the bit string.
<h4>Arithmetic functions</h4>
-diff -urNp old/userguide/pbmtextps.html new/userguide/pbmtextps.html
---- old/userguide/pbmtextps.html 2017-09-05 14:20:09.736743401 +0200
-+++ new/userguide/pbmtextps.html 2017-09-05 14:47:58.840553598 +0200
-@@ -185,7 +185,7 @@ edge of the type. See <a href="#margins
- <dt><b>-ascent=</b><i>n</i>
- <dt><b>-descent=</b><i>n</i>
- <dd>
--These options control the the margins added to the image, measured from
-+These options control the margins added to the image, measured from
- the text baseline. See <a href="#margins">Margins</a> for details.
-
- <p>Sizes are in points, as a floating point number.
-diff -urNp old/userguide/pbmtog3.html new/userguide/pbmtog3.html
---- old/userguide/pbmtog3.html 2017-09-05 14:20:09.735743403 +0200
-+++ new/userguide/pbmtog3.html 2017-09-05 14:48:55.648255793 +0200
+diff --git a/userguide/pbmtog3.html b/userguide/pbmtog3.html
+index ee2bd6b..3b23517 100644
+--- a/userguide/pbmtog3.html
++++ b/userguide/pbmtog3.html
@@ -77,7 +77,7 @@ You cannot specify both.
<H2 id="history">HISTORY</H2>
@@ -46,9 +37,11 @@ diff -urNp old/userguide/pbmtog3.html new/userguide/pbmtog3.html
&lt;<A HREF="mailto:paul@manray.sgi.com">paul@manray.sgi.com</A>&gt; in 1989
and then modified extensively by others.
-diff -urNp old/userguide/ppmtompeg.html new/userguide/ppmtompeg.html
---- old/userguide/ppmtompeg.html 2017-09-05 14:20:09.739743396 +0200
-+++ new/userguide/ppmtompeg.html 1970-01-01 01:00:00.000000000 +0100
+diff --git a/userguide/ppmtompeg.html b/userguide/ppmtompeg.html
+deleted file mode 100644
+index a1ce767..0000000
+--- a/userguide/ppmtompeg.html
++++ /dev/null
@@ -1,1291 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
diff --git a/source/l/netpbm/netpbm-pamtojpeg2k.patch b/source/l/netpbm/netpbm-pamtojpeg2k.patch
index 9615ce73..7eeed542 100644
--- a/source/l/netpbm/netpbm-pamtojpeg2k.patch
+++ b/source/l/netpbm/netpbm-pamtojpeg2k.patch
@@ -1,11 +1,238 @@
-diff -up netpbm-10.47.12/converter/other/jpeg2000/pamtojpeg2k.c.pamtojpeg2kfix netpbm-10.47.12/converter/other/jpeg2000/pamtojpeg2k.c
---- netpbm-10.47.12/converter/other/jpeg2000/pamtojpeg2k.c.pamtojpeg2kfix 2010-04-27 15:47:10.000000000 +0200
-+++ netpbm-10.47.12/converter/other/jpeg2000/pamtojpeg2k.c 2010-05-03 15:37:49.934269588 +0200
-@@ -518,7 +518,5 @@ main(int argc, char **argv)
+diff --git a/converter/other/jpeg2000/pamtojpeg2k.c b/converter/other/jpeg2000/pamtojpeg2k.c
+index 4d73316..a53573f 100644
+--- a/converter/other/jpeg2000/pamtojpeg2k.c
++++ b/converter/other/jpeg2000/pamtojpeg2k.c
+@@ -98,7 +98,7 @@ parseCommandLine(int argc, char ** argv,
+ char * modeOpt;
+
+ unsigned int option_def_index;
+-
++
+ MALLOCARRAY_NOFAIL(option_def, 100);
+
+ option_def_index = 0; /* incremented by OPTENTRY */
+@@ -134,25 +134,25 @@ parseCommandLine(int argc, char ** argv,
+ &numrlvlsSpec, 0);
+ OPTENT3(0, "numgbits", OPT_UINT, &cmdlineP->numgbits,
+ &numgbitsSpec, 0);
+- OPTENT3(0, "nomct", OPT_FLAG, NULL,
++ OPTENT3(0, "nomct", OPT_FLAG, NULL,
+ &cmdlineP->nomct, 0);
+- OPTENT3(0, "sop", OPT_FLAG, NULL,
++ OPTENT3(0, "sop", OPT_FLAG, NULL,
+ &cmdlineP->sop, 0);
+- OPTENT3(0, "eph", OPT_FLAG, NULL,
++ OPTENT3(0, "eph", OPT_FLAG, NULL,
+ &cmdlineP->eph, 0);
+- OPTENT3(0, "lazy", OPT_FLAG, NULL,
++ OPTENT3(0, "lazy", OPT_FLAG, NULL,
+ &cmdlineP->lazy, 0);
+- OPTENT3(0, "termall", OPT_FLAG, NULL,
++ OPTENT3(0, "termall", OPT_FLAG, NULL,
+ &cmdlineP->termall, 0);
+- OPTENT3(0, "segsym", OPT_FLAG, NULL,
++ OPTENT3(0, "segsym", OPT_FLAG, NULL,
+ &cmdlineP->segsym, 0);
+- OPTENT3(0, "vcausal", OPT_FLAG, NULL,
++ OPTENT3(0, "vcausal", OPT_FLAG, NULL,
+ &cmdlineP->vcausal, 0);
+- OPTENT3(0, "pterm", OPT_FLAG, NULL,
++ OPTENT3(0, "pterm", OPT_FLAG, NULL,
+ &cmdlineP->pterm, 0);
+- OPTENT3(0, "resetprob", OPT_FLAG, NULL,
++ OPTENT3(0, "resetprob", OPT_FLAG, NULL,
+ &cmdlineP->resetprob, 0);
+- OPTENT3(0, "verbose", OPT_FLAG, NULL,
++ OPTENT3(0, "verbose", OPT_FLAG, NULL,
+ &cmdlineP->verbose, 0);
+ OPTENT3(0, "debuglevel", OPT_UINT, &cmdlineP->debuglevel,
+ &debuglevelSpec, 0);
+@@ -223,7 +223,7 @@ parseCommandLine(int argc, char ** argv,
+ cmdlineP->inputFilename = strdup("-"); /* he wants stdin */
+ else if (argc - 1 == 1)
+ cmdlineP->inputFilename = strdup(argv[1]);
+- else
++ else
+ pm_error("Too many arguments. The only argument accepted\n"
+ "is the input file specification");
+
+@@ -232,7 +232,7 @@ parseCommandLine(int argc, char ** argv,
+
+
+ static void
+-createJasperRaster(struct pam * const inpamP,
++createJasperRaster(struct pam * const inpamP,
+ jas_image_t * const jasperP) {
+ /*----------------------------------------------------------------------------
+ Create the raster in the *jasperP object, reading the raster from the
+@@ -254,7 +254,7 @@ createJasperRaster(struct pam * const inpamP,
+ if (matrix[plane] == NULL)
+ pm_error("Unable to create matrix for plane %u. "
+ "jas_matrix_create() failed.", plane);
+- }
++ }
+ tuplerow = pnm_allocpamrow(inpamP);
+
+ jasperMaxval = pm_bitstomaxval(pm_maxvaltobits(inpamP->maxval));
+@@ -271,7 +271,7 @@ createJasperRaster(struct pam * const inpamP,
+ unsigned int jasperSample;
+
+ if (oddMaxval)
+- jasperSample = tuplerow[col][plane] *
++ jasperSample = tuplerow[col][plane] *
+ jasperMaxval / inpamP->maxval;
+ else
+ jasperSample = tuplerow[col][plane];
+@@ -279,16 +279,16 @@ createJasperRaster(struct pam * const inpamP,
+ jas_matrix_set(matrix[plane], 0, col, jasperSample);
+ }
+ }
+- {
++ {
+ unsigned int plane;
+
+ for (plane = 0; plane < inpamP->depth; ++plane) {
+ int rc;
+- rc = jas_image_writecmpt(jasperP, plane, 0, row,
++ rc = jas_image_writecmpt(jasperP, plane, 0, row,
+ inpamP->width, 1,
+ matrix[plane]);
+ if (rc != 0)
+- pm_error("jas_image_writecmpt() of plane %u failed.",
++ pm_error("jas_image_writecmpt() of plane %u failed.",
+ plane);
+ }
+ }
+@@ -297,14 +297,14 @@ createJasperRaster(struct pam * const inpamP,
+ pnm_freepamrow(tuplerow);
+ for (plane = 0; plane < inpamP->depth; ++plane)
+ jas_matrix_destroy(matrix[plane]);
+-
++
+ free(matrix);
+ }
+
+
+
+ static void
+-createJasperImage(struct pam * const inpamP,
++createJasperImage(struct pam * const inpamP,
+ jas_image_t ** const jasperPP) {
+
+ jas_image_cmptparm_t * cmptparms;
+@@ -322,7 +322,7 @@ createJasperImage(struct pam * const inpamP,
+ cmptparms[plane].prec = pm_maxvaltobits(inpamP->maxval);
+ cmptparms[plane].sgnd = 0;
+ }
+- *jasperPP =
++ *jasperPP =
+ jas_image_create(inpamP->depth, cmptparms, JAS_CLRSPC_UNKNOWN);
+ if (*jasperPP == NULL)
+ pm_error("Unable to create jasper image structure. "
+@@ -371,7 +371,7 @@ convertToJasperImage(struct pam * const inpamP,
+
+
+ static void
+-writeJpc(jas_image_t * const jasperP,
++writeJpc(jas_image_t * const jasperP,
+ struct cmdlineInfo const cmdline,
+ FILE * const ofP) {
+
+@@ -383,8 +383,8 @@ writeJpc(jas_image_t * const jasperP,
+
+ /* Note: ilyrrates is a hack because we're too lazy to properly parse
+ command line options to get the information and then compose
+- a proper input to Jasper. So the user can screw things up by
+- specifying garbage for the -ilyrrates option
++ a proper input to Jasper. So the user can screw things up by
++ specifying garbage for the -ilyrrates option
+ */
+ if (strlen(cmdline.ilyrrates) > 0)
+ pm_asprintf(&ilyrratesOpt, "ilyrrates=%s", cmdline.ilyrrates);
+@@ -410,7 +410,7 @@ writeJpc(jas_image_t * const jasperP,
+ */
+ rateOpt[0] = '\0';
+ }
+- pm_asprintf(&options,
++ pm_asprintf(&options,
+ "imgareatlx=%u "
+ "imgareatly=%u "
+ "tilegrdtlx=%u "
+@@ -428,7 +428,7 @@ writeJpc(jas_image_t * const jasperP,
+ "numrlvls=%u "
+ "numgbits=%u "
+ "%s %s %s %s %s %s %s %s %s",
+-
++
+ cmdline.imgareatlx,
+ cmdline.imgareatly,
+ cmdline.tilegrdtlx,
+@@ -471,8 +471,8 @@ writeJpc(jas_image_t * const jasperP,
+ pm_message("Using Jasper to encode to 'jpc' format with options "
+ "'%s'", options);
+
+- rc = jas_image_encode(jasperP, outStreamP,
+- jas_image_strtofmt((char*)"jpc"),
++ rc = jas_image_encode(jasperP, outStreamP,
++ jas_image_strtofmt((char*)"jpc"),
+ (char *)options);
+ if (rc != 0)
+ pm_error("jas_image_encode() failed to encode the JPEG 2000 "
+@@ -484,11 +484,11 @@ writeJpc(jas_image_t * const jasperP,
+ int rc;
+
+ rc = jas_stream_close(outStreamP);
+-
++
+ if (rc != 0)
+ pm_error("Failed to close output stream, "
+ "jas_stream_close() rc = %d", rc);
+- }
++ }
+
+ jas_image_clearfmts();
+
+@@ -506,33 +506,31 @@ main(int argc, char **argv)
+ jas_image_t * jasperP;
+
+ pnm_init(&argc, argv);
+-
++
+ parseCommandLine(argc, argv, &cmdline);
+-
+- {
++
++ {
+ int rc;
+-
++
+ rc = jas_init();
+ if ( rc != 0 )
+ pm_error("Failed to initialize Jasper library. "
+ "jas_init() returns rc %d", rc );
+ }
+-
++
+ jas_setdbglevel(cmdline.debuglevel);
+-
++
+ ifP = pm_openr(cmdline.inputFilename);
+-
++
+ pnm_readpaminit(ifP, &inpam, PAM_STRUCT_SIZE(tuple_type));
+-
++
+ convertToJasperImage(&inpam, &jasperP);
+-
++
+ writeJpc(jasperP, cmdline, stdout);
+-
++
+ jas_image_destroy(jasperP);
pm_close(ifP);
- pm_close(stdout);
--
+-
return 0;
}
diff --git a/source/l/netpbm/netpbm-security-code.patch b/source/l/netpbm/netpbm-security-code.patch
index 6cb6394c..1ca88f07 100644
--- a/source/l/netpbm/netpbm-security-code.patch
+++ b/source/l/netpbm/netpbm-security-code.patch
@@ -1,6 +1,7 @@
-diff -urNp a/analyzer/pgmtexture.c b/analyzer/pgmtexture.c
---- a/analyzer/pgmtexture.c 2018-07-23 15:03:21.372486801 +0200
-+++ b/analyzer/pgmtexture.c 2018-07-23 15:05:03.047265799 +0200
+diff --git a/analyzer/pgmtexture.c b/analyzer/pgmtexture.c
+index 5883327..eb8cf70 100644
+--- a/analyzer/pgmtexture.c
++++ b/analyzer/pgmtexture.c
@@ -98,6 +98,8 @@ vector(unsigned int const nl,
assert(nh >= nl);
@@ -26,21 +27,330 @@ diff -urNp a/analyzer/pgmtexture.c b/analyzer/pgmtexture.c
/* allocate rows and set pointers to them */
for (i = nrl; i <= nrh; ++i) {
MALLOCARRAY(m[i], (unsigned) (nch - ncl + 1));
-diff -urNp a/converter/other/gemtopnm.c b/converter/other/gemtopnm.c
---- a/converter/other/gemtopnm.c 2018-07-23 15:03:21.379486786 +0200
-+++ b/converter/other/gemtopnm.c 2018-07-23 15:05:03.053265786 +0200
-@@ -106,6 +106,7 @@ main(argc, argv)
+diff --git a/converter/other/gemtopnm.c b/converter/other/gemtopnm.c
+index d862213..5f1a51a 100644
+--- a/converter/other/gemtopnm.c
++++ b/converter/other/gemtopnm.c
+@@ -36,7 +36,7 @@
+ * read 4-plane color IMG files. Therefore changed from PBM to PPM.
+ * Bryan changed it further to use the PNM facilities so it outputs
+ * both PBM and PPM in the Netpbm tradition. Name changed from
+- * gemtopbm to gemtopnm.
++ * gemtopbm to gemtopnm.
+ */
- pnm_writepnminit( stdout, cols, rows, MAXVAL, type, 0 );
+ #include <assert.h>
+@@ -50,106 +50,107 @@
+ char pattern[8];
+
+ static void getinit ARGS ((FILE *file, int *colsP, int *rowsP, int *padrightP,
+- int *patlenP, int *planesP));
++ int *patlenP, int *planesP));
+
+ int
+ main(argc, argv)
+- int argc;
+- char *argv[];
++ int argc;
++ char *argv[];
+ {
+- int debug = 0;
+- FILE *f;
++ int debug = 0;
++ FILE *f;
+ int row;
+- int rows, cols, padright, patlen, planes;
++ int rows, cols, padright, patlen, planes;
+ /* attributes of input image */
+ int type; /* The format type (PBM/PPM) of the output image */
+- bit *bitrow[4];
++ bit *bitrow[4];
+ /* One row of input, one or four planes. (If one, only [0] is defined)*/
+ xel * xelrow; /* One row of output */
+- const char * const usage = "[-debug] [gem IMG file]";
+- int argn;
++ const char * const usage = "[-debug] [gem IMG file]";
++ int argn;
+
+ /* Process multiple planes by maintaining a separate row of bits for each
+- * plane. In a single-plane image, all we have to do is write out the
++ * plane. In a single-plane image, all we have to do is write out the
+ * first plane; in a multiple-plane image, we combine them just before writing
+ * out the row.
+ */
+- pnm_init( &argc, argv );
+-
++ pnm_init( &argc, argv );
++
+ argn = 1;
+- while (argn < argc && argv[argn][0] == '-' && argv[argn][1] != '\0')
+- {
+- if (pm_keymatch(argv[1], "-debug", 2))
+- debug = 1;
+- else
+- pm_usage (usage);
+- ++argn;
+- }
++ while (argn < argc && argv[argn][0] == '-' && argv[argn][1] != '\0')
++ {
++ if (pm_keymatch(argv[1], "-debug", 2))
++ debug = 1;
++ else
++ pm_usage (usage);
++ ++argn;
++ }
+
+- if (argc == argn)
+- f = stdin;
+- else {
+- f = pm_openr (argv[argn]);
+- ++argn;
+- }
++ if (argc == argn)
++ f = stdin;
++ else {
++ f = pm_openr (argv[argn]);
++ ++argn;
++ }
+
+- if (argn != argc)
+- pm_usage (usage);
++ if (argn != argc)
++ pm_usage (usage);
+
+- getinit (f, &cols, &rows, &padright, &patlen, &planes);
++ getinit (f, &cols, &rows, &padright, &patlen, &planes);
+
+- if (planes == 1)
++ if (planes == 1)
+ type = PBM_TYPE;
+- else
++ else
+ type = PPM_TYPE;
+
+- pnm_writepnminit( stdout, cols, rows, MAXVAL, type, 0 );
++ pnm_writepnminit( stdout, cols, rows, MAXVAL, type, 0 );
+
+- {
+ overflow_add(cols, padright);
- {
++ {
/* allocate input row data structure */
int plane;
-diff -urNp a/converter/other/jpegtopnm.c b/converter/other/jpegtopnm.c
---- a/converter/other/jpegtopnm.c 2018-07-23 15:03:21.398486744 +0200
-+++ b/converter/other/jpegtopnm.c 2018-07-23 15:05:03.068265754 +0200
-@@ -862,6 +862,8 @@ convertImage(FILE *
+- for (plane = 0; plane < planes; plane++)
++ for (plane = 0; plane < planes; plane++)
+ bitrow[plane] = malloc (cols + padright);
+ }
+ xelrow = pnm_allocrow(cols+padright); /* Output row */
+
+- for (row = 0; row < rows; ) {
++ for (row = 0; row < rows; ) {
+ int linerep;
+ int plane;
+
+- linerep = 1;
+- for (plane = 0; plane < planes; plane++) {
++ linerep = 1;
++ for (plane = 0; plane < planes; plane++) {
+ int col;
+- col = 0;
+- while (col < cols) {
++ col = 0;
++ while (col < cols) {
+ int c;
+- switch (c = getc(f)) {
+- case 0x80: /* Bit String */
++ switch (c = getc(f)) {
++ case 0x80: /* Bit String */
+ {
+ int j;
+- c = getc(f); /* Byte count */
+- if (debug)
++ c = getc(f); /* Byte count */
++ if (debug)
+ pm_message("bit string of %d bytes", c);
+-
+- if (col + c * 8 > cols + padright)
+- pm_error ("bad byte count");
+- for (j = 0; j < c; ++j) {
++
++ if (col + c * 8 > cols + padright)
++ pm_error ("bad byte count");
++ for (j = 0; j < c; ++j) {
+ int cc, k;
+- cc = getc(f);
+- for (k = 0x80; k; k >>= 1) {
+- bitrow[plane][col] = (k & cc) ? 0 : 1;
+- ++col;
+- }
+- }
++ cc = getc(f);
++ for (k = 0x80; k; k >>= 1) {
++ bitrow[plane][col] = (k & cc) ? 0 : 1;
++ ++col;
++ }
++ }
+ }
+ break;
+- case 0: /* Pattern run */
++ case 0: /* Pattern run */
+ {
+ int j, l;
+- c = getc(f); /* Repeat count */
+- if (debug)
+- pm_message("pattern run of %d repetitions", c);
++ c = getc(f); /* Repeat count */
++ if (debug)
++ pm_message("pattern run of %d repetitions", c);
+ /* line repeat */
+ if (c == 0) {
+ c = getc(f);
+@@ -158,25 +159,25 @@ main(argc, argv)
+ linerep = getc(f);
+ break;
+ }
+- fread (pattern, 1, patlen, f);
+- if (col + c * patlen * 8 > cols + padright)
+- pm_error ("bad pattern repeat count");
+- for (j = 0; j < c; ++j)
+- for (l = 0; l < patlen; ++l) {
++ fread (pattern, 1, patlen, f);
++ if (col + c * patlen * 8 > cols + padright)
++ pm_error ("bad pattern repeat count");
++ for (j = 0; j < c; ++j)
++ for (l = 0; l < patlen; ++l) {
+ int k;
+- for (k = 0x80; k; k >>= 1) {
+- bitrow[plane][col] = (k & pattern[l]) ? 0 : 1;
+- ++col;
+- }
++ for (k = 0x80; k; k >>= 1) {
++ bitrow[plane][col] = (k & pattern[l]) ? 0 : 1;
++ ++col;
++ }
+ }
+ }
+ break;
+
+- default: /* Solid run */
++ default: /* Solid run */
+ {
+ int l, j;
+- if (debug)
+- pm_message("solid run of %d bytes %s", c & 0x7f,
++ if (debug)
++ pm_message("solid run of %d bytes %s", c & 0x7f,
+ c & 0x80 ? "on" : "off" );
+ /* each byte had eight bits DSB */
+ l = (c & 0x80) ? 0: 1;
+@@ -185,23 +186,23 @@ main(argc, argv)
+ pm_error ("bad solid run repeat count");
+ for (j = 0; j < c; ++j) {
+ bitrow[plane][col] = l;
+- ++col;
++ ++col;
+ }
+ }
+- break;
++ break;
+
+- case EOF: /* End of file */
+- pm_error( "end of file reached" );
++ case EOF: /* End of file */
++ pm_error( "end of file reached" );
+
+- }
+- }
++ }
++ }
+ if ( debug )
+ pm_message( "EOL plane %d row %d", plane, row );
+ if (col != cols + padright)
+ pm_error( "EOL beyond edge" );
+- }
++ }
+
+- if (planes == 4) {
++ if (planes == 4) {
+ /* Construct a pixel from the 4 planes of bits for this row */
+ int col;
+ for (col = 0; col < cols; col++) {
+@@ -212,21 +213,21 @@ main(argc, argv)
+ const int b_bit = !bitrow[2][col];
+ i = bitrow[3][col];
+
+- /* Deal with weird GEM palette - white/black/gray are
+- encoded oddly
++ /* Deal with weird GEM palette - white/black/gray are
++ encoded oddly
+ */
+- if (r_bit == g_bit && g_bit == b_bit) {
++ if (r_bit == g_bit && g_bit == b_bit) {
+ /* It's black, white, or gray */
+- if (r_bit && i) r = LIGHT;
+- else if (r_bit) r = BLACK;
+- else if (i) r = MAXVAL;
+- else r = DARK;
+- g = b = r;
+- } else {
++ if (r_bit && i) r = LIGHT;
++ else if (r_bit) r = BLACK;
++ else if (i) r = MAXVAL;
++ else r = DARK;
++ g = b = r;
++ } else {
+ /* It's one of the twelve colored colors */
+ if (!i) {
+ /* Low intensity */
+- r = r_bit * LIGHT;
++ r = r_bit * LIGHT;
+ g = g_bit * LIGHT;
+ b = b_bit * LIGHT;
+ } else {
+@@ -237,21 +238,21 @@ main(argc, argv)
+ }
+ }
+ PPM_ASSIGN(xelrow[col], r, g, b);
+- }
+- } else {
++ }
++ } else {
+ int col;
+- for (col = 0; col < cols; col++)
++ for (col = 0; col < cols; col++)
+ PNM_ASSIGN1(xelrow[col], bitrow[0][col]);
+ }
+- while (linerep--) {
+- pnm_writepnmrow( stdout, xelrow, cols, MAXVAL, type, 0 );
+- ++row;
+- }
+- }
++ while (linerep--) {
++ pnm_writepnmrow( stdout, xelrow, cols, MAXVAL, type, 0 );
++ ++row;
++ }
++ }
+ pnm_freerow(xelrow);
+- pm_close( f );
+- pm_close( stdout );
+- exit(0);
++ pm_close( f );
++ pm_close( stdout );
++ exit(0);
+ }
+
+
+@@ -303,5 +304,3 @@ getinit (file, colsP, rowsP, padrightP, patlenP, planesP)
+ }
+ }
+
+-
+-
+diff --git a/converter/other/jpegtopnm.c b/converter/other/jpegtopnm.c
+index 98552c0..311298c 100644
+--- a/converter/other/jpegtopnm.c
++++ b/converter/other/jpegtopnm.c
+@@ -862,6 +862,8 @@ convertImage(FILE * const ofP,
/* Calculate output image dimensions so we can allocate space */
jpeg_calc_output_dimensions(cinfoP);
@@ -49,9 +359,10 @@ diff -urNp a/converter/other/jpegtopnm.c b/converter/other/jpegtopnm.c
/* Start decompressor */
jpeg_start_decompress(cinfoP);
-diff -urNp a/converter/other/pbmtopgm.c b/converter/other/pbmtopgm.c
---- a/converter/other/pbmtopgm.c 2018-07-23 15:03:21.380486783 +0200
-+++ b/converter/other/pbmtopgm.c 2018-07-23 15:05:03.068265754 +0200
+diff --git a/converter/other/pbmtopgm.c b/converter/other/pbmtopgm.c
+index 69b20fb..382a487 100644
+--- a/converter/other/pbmtopgm.c
++++ b/converter/other/pbmtopgm.c
@@ -47,6 +47,7 @@ main(int argc, char *argv[]) {
"than the image height (%u rows)", height, rows);
@@ -60,9 +371,10 @@ diff -urNp a/converter/other/pbmtopgm.c b/converter/other/pbmtopgm.c
maxval = MIN(PGM_OVERALLMAXVAL, width*height);
pgm_writepgminit(stdout, cols, rows, maxval, 0) ;
-diff -urNp a/converter/other/pnmtoddif.c b/converter/other/pnmtoddif.c
---- a/converter/other/pnmtoddif.c 2018-07-23 15:03:21.380486783 +0200
-+++ b/converter/other/pnmtoddif.c 2018-07-23 15:05:03.068265754 +0200
+diff --git a/converter/other/pnmtoddif.c b/converter/other/pnmtoddif.c
+index ac02e42..a2f045b 100644
+--- a/converter/other/pnmtoddif.c
++++ b/converter/other/pnmtoddif.c
@@ -629,6 +629,7 @@ main(int argc, char *argv[]) {
switch (PNM_FORMAT_TYPE(format)) {
case PBM_TYPE:
@@ -79,10 +391,11 @@ diff -urNp a/converter/other/pnmtoddif.c b/converter/other/pnmtoddif.c
ip.bytes_per_line = 3 * cols;
ip.bits_per_pixel = 24;
ip.spectral = 5;
-diff -urNp a/converter/other/pnmtojpeg.c b/converter/other/pnmtojpeg.c
---- a/converter/other/pnmtojpeg.c 2018-07-23 15:03:21.387486768 +0200
-+++ b/converter/other/pnmtojpeg.c 2018-07-23 15:05:03.068265754 +0200
-@@ -606,7 +606,11 @@ read_scan_script(j_compress_ptr const ci
+diff --git a/converter/other/pnmtojpeg.c b/converter/other/pnmtojpeg.c
+index 4482624..757d08d 100644
+--- a/converter/other/pnmtojpeg.c
++++ b/converter/other/pnmtojpeg.c
+@@ -606,7 +606,11 @@ read_scan_script(j_compress_ptr const cinfo,
want JPOOL_PERMANENT.
*/
const unsigned int scan_info_size = nscans * sizeof(jpeg_scan_info);
@@ -95,7 +408,7 @@ diff -urNp a/converter/other/pnmtojpeg.c b/converter/other/pnmtojpeg.c
(jpeg_scan_info *)
(*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
scan_info_size);
-@@ -938,6 +942,8 @@ compute_rescaling_array(JSAMPLE ** const
+@@ -938,6 +942,8 @@ compute_rescaling_array(JSAMPLE ** const rescale_p, const pixval maxval,
const long half_maxval = maxval / 2;
long val;
@@ -104,7 +417,7 @@ diff -urNp a/converter/other/pnmtojpeg.c b/converter/other/pnmtojpeg.c
*rescale_p = (JSAMPLE *)
(cinfo.mem->alloc_small) ((j_common_ptr) &cinfo, JPOOL_IMAGE,
(size_t) (((long) maxval + 1L) *
-@@ -1016,6 +1022,7 @@ convert_scanlines(struct jpeg_compress_s
+@@ -1016,6 +1022,7 @@ convert_scanlines(struct jpeg_compress_struct * const cinfo_p,
*/
/* Allocate the libpnm output and compressor input buffers */
@@ -112,10 +425,11 @@ diff -urNp a/converter/other/pnmtojpeg.c b/converter/other/pnmtojpeg.c
buffer = (*cinfo_p->mem->alloc_sarray)
((j_common_ptr) cinfo_p, JPOOL_IMAGE,
(unsigned int) cinfo_p->image_width * cinfo_p->input_components,
-diff -urNp a/converter/other/pnmtops.c b/converter/other/pnmtops.c
---- a/converter/other/pnmtops.c 2018-07-23 15:03:21.399486742 +0200
-+++ b/converter/other/pnmtops.c 2018-07-23 15:05:03.068265754 +0200
-@@ -294,17 +294,21 @@ parseCommandLine(int argc, const char **
+diff --git a/converter/other/pnmtops.c b/converter/other/pnmtops.c
+index de0dfd8..09c28d5 100644
+--- a/converter/other/pnmtops.c
++++ b/converter/other/pnmtops.c
+@@ -294,17 +294,21 @@ parseCommandLine(int argc, const char ** argv,
validateCompDimension(width, 72, "-width value");
validateCompDimension(height, 72, "-height value");
@@ -138,9 +452,10 @@ diff -urNp a/converter/other/pnmtops.c b/converter/other/pnmtops.c
cmdlineP->imageheight = imageheight * 72;
}
else
-diff -urNp a/converter/other/rletopnm.c b/converter/other/rletopnm.c
---- a/converter/other/rletopnm.c 2018-07-23 15:03:21.385486773 +0200
-+++ b/converter/other/rletopnm.c 2018-07-23 15:05:03.068265754 +0200
+diff --git a/converter/other/rletopnm.c b/converter/other/rletopnm.c
+index 018456c..35ea7f7 100644
+--- a/converter/other/rletopnm.c
++++ b/converter/other/rletopnm.c
@@ -19,6 +19,8 @@
* If you modify this software, you should include a notice giving the
* name of the person performing the modification, the date of modification,
@@ -150,9 +465,10 @@ diff -urNp a/converter/other/rletopnm.c b/converter/other/rletopnm.c
*/
/*
* rletopnm - A conversion program to convert from Utah's "rle" image format
-diff -urNp a/converter/other/sirtopnm.c b/converter/other/sirtopnm.c
---- a/converter/other/sirtopnm.c 2018-07-23 15:03:21.398486744 +0200
-+++ b/converter/other/sirtopnm.c 2018-07-23 15:05:03.068265754 +0200
+diff --git a/converter/other/sirtopnm.c b/converter/other/sirtopnm.c
+index fafcc91..9fe49d0 100644
+--- a/converter/other/sirtopnm.c
++++ b/converter/other/sirtopnm.c
@@ -69,6 +69,7 @@ char* argv[];
}
break;
@@ -161,10 +477,11 @@ diff -urNp a/converter/other/sirtopnm.c b/converter/other/sirtopnm.c
picsize = cols * rows * 3;
planesize = cols * rows;
if ( !( sirarray = (unsigned char*) malloc( picsize ) ) )
-diff -urNp a/converter/other/tifftopnm.c b/converter/other/tifftopnm.c
---- a/converter/other/tifftopnm.c 2018-07-23 15:03:21.379486786 +0200
-+++ b/converter/other/tifftopnm.c 2018-07-23 15:05:03.068265754 +0200
-@@ -1372,7 +1372,9 @@ convertRasterByRows(pnmOut * const
+diff --git a/converter/other/tifftopnm.c b/converter/other/tifftopnm.c
+index c1e7af8..ef9253b 100644
+--- a/converter/other/tifftopnm.c
++++ b/converter/other/tifftopnm.c
+@@ -1372,7 +1372,9 @@ convertRasterByRows(pnmOut * const pnmOutP,
if (scanbuf == NULL)
pm_error("can't allocate memory for scanline buffer");
@@ -175,10 +492,11 @@ diff -urNp a/converter/other/tifftopnm.c b/converter/other/tifftopnm.c
if (samplebuf == NULL)
pm_error("can't allocate memory for row buffer");
-diff -urNp a/converter/other/xwdtopnm.c b/converter/other/xwdtopnm.c
---- a/converter/other/xwdtopnm.c 2018-07-23 15:03:21.387486768 +0200
-+++ b/converter/other/xwdtopnm.c 2018-07-23 15:05:03.068265754 +0200
-@@ -210,6 +210,10 @@ processX10Header(X10WDFileHeader * cons
+diff --git a/converter/other/xwdtopnm.c b/converter/other/xwdtopnm.c
+index df3c737..6c19ade 100644
+--- a/converter/other/xwdtopnm.c
++++ b/converter/other/xwdtopnm.c
+@@ -210,6 +210,10 @@ processX10Header(X10WDFileHeader * const h10P,
*colorsP = pnm_allocrow(2);
PNM_ASSIGN1((*colorsP)[0], 0);
PNM_ASSIGN1((*colorsP)[1], *maxvalP);
@@ -189,7 +507,7 @@ diff -urNp a/converter/other/xwdtopnm.c b/converter/other/xwdtopnm.c
*padrightP =
(((h10P->pixmap_width + 15) / 16) * 16 - h10P->pixmap_width) * 8;
*bits_per_itemP = 16;
-@@ -635,6 +639,7 @@ processX11Header(X11WDFileHeader * cons
+@@ -635,6 +639,7 @@ processX11Header(X11WDFileHeader * const h11P,
*colsP = h11FixedP->pixmap_width;
*rowsP = h11FixedP->pixmap_height;
@@ -197,9 +515,10 @@ diff -urNp a/converter/other/xwdtopnm.c b/converter/other/xwdtopnm.c
*padrightP =
h11FixedP->bytes_per_line * 8 -
h11FixedP->pixmap_width * h11FixedP->bits_per_pixel;
-diff -urNp a/converter/pbm/mdatopbm.c b/converter/pbm/mdatopbm.c
---- a/converter/pbm/mdatopbm.c 2018-07-23 15:03:21.377486790 +0200
-+++ b/converter/pbm/mdatopbm.c 2018-07-23 15:05:03.052265788 +0200
+diff --git a/converter/pbm/mdatopbm.c b/converter/pbm/mdatopbm.c
+index d8e0657..12c7468 100644
+--- a/converter/pbm/mdatopbm.c
++++ b/converter/pbm/mdatopbm.c
@@ -245,10 +245,13 @@ main(int argc, char **argv) {
pm_readlittleshort(infile, &yy); nInCols = yy;
}
@@ -215,9 +534,10 @@ diff -urNp a/converter/pbm/mdatopbm.c b/converter/pbm/mdatopbm.c
data = pbm_allocarray(nOutCols, nOutRows);
-diff -urNp a/converter/pbm/mgrtopbm.c b/converter/pbm/mgrtopbm.c
---- a/converter/pbm/mgrtopbm.c 2018-07-23 15:03:21.377486790 +0200
-+++ b/converter/pbm/mgrtopbm.c 2018-07-23 15:05:03.052265788 +0200
+diff --git a/converter/pbm/mgrtopbm.c b/converter/pbm/mgrtopbm.c
+index 9f7004a..60e8477 100644
+--- a/converter/pbm/mgrtopbm.c
++++ b/converter/pbm/mgrtopbm.c
@@ -65,6 +65,8 @@ readMgrHeader(FILE * const ifP,
if (head.h_high < ' ' || head.l_high < ' ')
pm_error("Invalid width field in MGR header");
@@ -227,9 +547,31 @@ diff -urNp a/converter/pbm/mgrtopbm.c b/converter/pbm/mgrtopbm.c
*colsP = (((int)head.h_wide - ' ') << 6) + ((int)head.l_wide - ' ');
*rowsP = (((int)head.h_high - ' ') << 6) + ((int) head.l_high - ' ');
*padrightP = ( ( *colsP + pad - 1 ) / pad ) * pad - *colsP;
-diff -urNp a/converter/pbm/pbmtogem.c b/converter/pbm/pbmtogem.c
---- a/converter/pbm/pbmtogem.c 2018-07-23 15:03:21.377486790 +0200
-+++ b/converter/pbm/pbmtogem.c 2018-07-23 15:05:03.052265788 +0200
+diff --git a/converter/pbm/pbmto4425.c b/converter/pbm/pbmto4425.c
+index 1d97ac6..c4c8cbb 100644
+--- a/converter/pbm/pbmto4425.c
++++ b/converter/pbm/pbmto4425.c
+@@ -2,6 +2,7 @@
+
+ #include "nstring.h"
+ #include "pbm.h"
++#include <string.h>
+
+ static char bit_table[2][3] = {
+ {1, 4, 0x10},
+@@ -160,7 +161,7 @@ main(int argc, char * argv[]) {
+ xres = vmap_width * 2;
+ yres = vmap_height * 3;
+
+- vmap = malloc(vmap_width * vmap_height * sizeof(char));
++ vmap = malloc3(vmap_width, vmap_height, sizeof(char));
+ if(vmap == NULL)
+ {
+ pm_error( "Cannot allocate memory" );
+diff --git a/converter/pbm/pbmtogem.c b/converter/pbm/pbmtogem.c
+index 9eab041..13b0257 100644
+--- a/converter/pbm/pbmtogem.c
++++ b/converter/pbm/pbmtogem.c
@@ -79,6 +79,7 @@ putinit (int const rows, int const cols)
bitsperitem = 0;
bitshift = 7;
@@ -238,9 +580,10 @@ diff -urNp a/converter/pbm/pbmtogem.c b/converter/pbm/pbmtogem.c
outmax = (cols + 7) / 8;
outrow = (unsigned char *) pm_allocrow (outmax, sizeof (unsigned char));
lastrow = (unsigned char *) pm_allocrow (outmax, sizeof (unsigned char));
-diff -urNp a/converter/pbm/pbmtogo.c b/converter/pbm/pbmtogo.c
---- a/converter/pbm/pbmtogo.c 2018-07-23 15:03:21.377486790 +0200
-+++ b/converter/pbm/pbmtogo.c 2018-07-23 15:05:03.052265788 +0200
+diff --git a/converter/pbm/pbmtogo.c b/converter/pbm/pbmtogo.c
+index 23b2ee9..d2ee91f 100644
+--- a/converter/pbm/pbmtogo.c
++++ b/converter/pbm/pbmtogo.c
@@ -158,6 +158,7 @@ main(int argc,
bitrow = pbm_allocrow(cols);
@@ -249,9 +592,10 @@ diff -urNp a/converter/pbm/pbmtogo.c b/converter/pbm/pbmtogo.c
rucols = ( cols + 7 ) / 8;
bytesperrow = rucols; /* GraphOn uses bytes */
rucols = rucols * 8;
-diff -urNp a/converter/pbm/pbmtolj.c b/converter/pbm/pbmtolj.c
---- a/converter/pbm/pbmtolj.c 2018-07-23 15:03:21.377486790 +0200
-+++ b/converter/pbm/pbmtolj.c 2018-07-23 15:05:03.052265788 +0200
+diff --git a/converter/pbm/pbmtolj.c b/converter/pbm/pbmtolj.c
+index 3cd7670..0b51932 100644
+--- a/converter/pbm/pbmtolj.c
++++ b/converter/pbm/pbmtolj.c
@@ -120,7 +120,11 @@ parseCommandLine(int argc, char ** argv,
static void
allocateBuffers(unsigned int const cols) {
@@ -264,9 +608,10 @@ diff -urNp a/converter/pbm/pbmtolj.c b/converter/pbm/pbmtolj.c
packBufferSize = rowBufferSize + (rowBufferSize + 127) / 128 + 1;
deltaBufferSize = rowBufferSize + rowBufferSize / 8 + 10;
-diff -urNp a/converter/pbm/pbmtomda.c b/converter/pbm/pbmtomda.c
---- a/converter/pbm/pbmtomda.c 2018-07-23 15:03:21.377486790 +0200
-+++ b/converter/pbm/pbmtomda.c 2018-07-23 15:05:03.052265788 +0200
+diff --git a/converter/pbm/pbmtomda.c b/converter/pbm/pbmtomda.c
+index 3ad5149..9efe5cf 100644
+--- a/converter/pbm/pbmtomda.c
++++ b/converter/pbm/pbmtomda.c
@@ -179,6 +179,7 @@ int main(int argc, char **argv)
nOutRowsUnrounded = bScale ? nInRows/2 : nInRows;
@@ -275,28 +620,309 @@ diff -urNp a/converter/pbm/pbmtomda.c b/converter/pbm/pbmtomda.c
nOutRows = ((nOutRowsUnrounded + 3) / 4) * 4;
/* MDA wants rows a multiple of 4 */
nOutCols = nInCols / 8;
-diff -urNp a/converter/pbm/pbmtoppa/pbm.c b/converter/pbm/pbmtoppa/pbm.c
---- a/converter/pbm/pbmtoppa/pbm.c 2018-07-23 15:03:21.377486790 +0200
-+++ b/converter/pbm/pbmtoppa/pbm.c 2018-07-23 15:05:03.051265791 +0200
-@@ -106,6 +106,7 @@ int pbm_readline(pbm_stat* pbm,unsigned
- return 0;
+diff --git a/converter/pbm/pbmtoppa/pbm.c b/converter/pbm/pbmtoppa/pbm.c
+index ae36e0d..1c8d236 100644
+--- a/converter/pbm/pbmtoppa/pbm.c
++++ b/converter/pbm/pbmtoppa/pbm.c
+@@ -11,185 +11,128 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+-#include <limits.h>
+
+-#include "pm.h"
+-#include "nstring.h"
+ #include "ppapbm.h"
+
+-int
+-make_pbm_stat(pbm_stat * const pbmStatP,
+- FILE * const ifP) {
+-
+- char line[1024];
+- char * rc;
+- int retval;
+-
+- pbmStatP->fptr = ifP;
+- pbmStatP->version = none;
+- pbmStatP->current_line = 0;
+- pbmStatP->unread = 0;
+-
+- rc = fgets(line, 1024, ifP);
+- if (rc == NULL)
+- retval = 0;
+- else {
+- line[strlen(line)-1] = 0;
+-
+- if (streq(line,"P1"))
+- pbmStatP->version=P1;
+- if (streq(line,"P4"))
+- pbmStatP->version=P4;
+-
+- if (pbmStatP->version == none) {
+- pm_message("unknown PBM magic '%s'", line);
+- retval = 0;
+- } else {
+- do {
+- char * rc;
+- rc = fgets(line, 1024, ifP);
+- if (rc == NULL)
+- return 0;
+- } while (line[0] == '#');
+- {
+- int rc;
+- rc = sscanf(line, "%d %d",
+- &pbmStatP->width, &pbmStatP->height);
+- if (rc != 2)
+- retval = 0;
+- else {
+- if (pbmStatP->width < 0) {
+- pm_message("Image has negative width");
+- retval = 0;
+- } else if (pbmStatP->width > INT_MAX/2) {
+- pm_message("Uncomputeably large width: %d",
+- pbmStatP->width);
+- retval = 0;
+- } else if (pbmStatP->height < 0) {
+- pm_message("Image has negative height");
+- retval = 0;
+- } else if (pbmStatP->height > INT_MAX/2) {
+- pm_message("Uncomputeably large height: %d",
+- pbmStatP->height);
+- retval = 0;
+- } else
+- retval = 1;
+- }
+- }
+- }
+- }
+- return retval;
+-}
++int make_pbm_stat(pbm_stat* pbm,FILE* fptr)
++{
++ char line[1024];
+
++ pbm->fptr=fptr;
++ pbm->version=none;
++ pbm->current_line=0;
++ pbm->unread = 0;
+
++ if (fgets (line, 1024, fptr) == NULL)
++ return 0;
++ line[strlen(line)-1] = 0;
- case P4:
+-static int
+-getbytes(FILE * const ifP,
+- unsigned int const width,
+- unsigned char * const data) {
+-
+- unsigned char mask;
+- unsigned char acc;
+- unsigned char * place;
+- unsigned int num;
+- int retval;
+-
+- if (width == 0)
+- retval = 0;
+- else {
+- for (mask = 0x80, acc = 0, num = 0, place = data; num < width; ) {
+- switch (getc(ifP)) {
+- case EOF:
+- return 0;
+- case '1':
+- acc |= mask;
+- /* fall through */
+- case '0':
+- mask >>= 1;
+- ++num;
+- if (mask == 0x00) { /* if (num % 8 == 0) */
+- *place++ = acc;
+- acc = 0;
+- mask = 0x80;
+- }
+- }
+- }
+- if (width % 8 != 0)
+- *place = acc;
+-
+- retval = 1;
+- }
+- return retval;
+-}
++ if(!strcmp(line,"P1")) pbm->version=P1;
++ if(!strcmp(line,"P4")) pbm->version=P4;
++ if(pbm->version == none)
++ {
++ fprintf(stderr,"pbm_readheader(): unknown PBM magic '%s'\n",line);
++ return 0;
++ }
+
++ do
++ if (fgets (line, 1024, fptr) == NULL)
++ return 0;
++ while (line[0] == '#');
+
++ if (2 != sscanf (line, "%d %d", &pbm->width, &pbm->height))
++ return 0;
+
+-int
+-pbm_readline(pbm_stat * const pbmStatP,
+- unsigned char * const data) {
+-/*----------------------------------------------------------------------------
+- Read a single line into data which must be at least (pbmStatP->width+7)/8
+- bytes of storage.
+------------------------------------------------------------------------------*/
+- int retval;
+-
+- if (pbmStatP->current_line >= pbmStatP->height)
+- retval = 0;
+- else {
+- if (pbmStatP->unread) {
+- memcpy(data, pbmStatP->revdata, (pbmStatP->width+7)/8);
+- ++pbmStatP->current_line;
+- pbmStatP->unread = 0;
+- free(pbmStatP->revdata);
+- pbmStatP->revdata = NULL;
+- retval = 1;
+- } else {
+- switch (pbmStatP->version) {
+- case P1:
+- if (getbytes(pbmStatP->fptr, pbmStatP->width, data)) {
+- pbmStatP->current_line++;
+- retval = 1;
+- } else
+- retval = 0;
+- break;
+- case P4: {
+- int tmp, tmp2;
+- tmp = (pbmStatP->width+7)/8;
+- tmp2 = fread(data,1,tmp,pbmStatP->fptr);
+- if (tmp2 == tmp) {
+- ++pbmStatP->current_line;
+- retval = 1;
+- } else {
+- pm_message("error reading line data (%d)", tmp2);
+- retval = 0;
+- }
+- } break;
+-
+- default:
+- pm_message("unknown PBM version");
+- retval = 0;
+- }
+- }
+- }
+- return retval;
++ return 1;
+ }
+
++static int getbytes(FILE *fptr,int width,unsigned char* data)
++{
++ unsigned char mask,acc,*place;
++ int num;
++
++ if(!width) return 0;
++ for(mask=0x80, acc=0, num=0, place=data; num<width; )
++ {
++ switch(getc(fptr))
++ {
++ case EOF:
++ return 0;
++ case '1':
++ acc|=mask;
++ /* fall through */
++ case '0':
++ mask>>=1;
++ num++;
++ if(!mask) /* if(num%8 == 0) */
++ {
++ *place++ = acc;
++ acc=0;
++ mask=0x80;
++ }
++ }
++ }
++ if(width%8)
++ *place=acc;
++ return 1;
++}
+
++/* Reads a single line into data which must be at least (pbm->width+7)/8
++ bytes of storage */
++int pbm_readline(pbm_stat* pbm,unsigned char* data)
++{
++ int tmp,tmp2;
++
++ if(pbm->current_line >= pbm->height) return 0;
++
++ if (pbm->unread)
++ {
++ memcpy (data, pbm->revdata, (pbm->width+7)/8);
++ pbm->current_line++;
++ pbm->unread = 0;
++ free (pbm->revdata);
++ pbm->revdata = NULL;
++ return 1;
++ }
+
+-void
+-pbm_unreadline(pbm_stat * const pbmStatP,
+- void * const data) {
+-/*----------------------------------------------------------------------------
+- Push a line back into the buffer; we read too much!
+------------------------------------------------------------------------------*/
+- /* can store only one line in the unread buffer */
+-
+- if (!pbmStatP->unread) {
+- pbmStatP->unread = 1;
+- pbmStatP->revdata = malloc ((pbmStatP->width+7)/8);
+- memcpy(pbmStatP->revdata, data, (pbmStatP->width+7)/8);
+- --pbmStatP->current_line;
++ switch(pbm->version)
++ {
++ case P1:
++ if(getbytes(pbm->fptr,pbm->width,data))
++ {
++ pbm->current_line++;
++ return 1;
+ }
+-}
++ return 0;
++
++ case P4:
+ overflow_add(pbm->width, 7);
- tmp=(pbm->width+7)/8;
- tmp2=fread(data,1,tmp,pbm->fptr);
- if(tmp2 == tmp)
-@@ -130,6 +131,7 @@ void pbm_unreadline (pbm_stat *pbm, void
- return;
++ tmp=(pbm->width+7)/8;
++ tmp2=fread(data,1,tmp,pbm->fptr);
++ if(tmp2 == tmp)
++ {
++ pbm->current_line++;
++ return 1;
++ }
++ fprintf(stderr,"pbm_readline(): error reading line data (%d)\n",tmp2);
++ return 0;
+
++ default:
++ fprintf(stderr,"pbm_readline(): unknown PBM version\n");
++ return 0;
++ }
++}
- pbm->unread = 1;
++/* push a line back into the buffer; we read too much! */
++void pbm_unreadline (pbm_stat *pbm, void *data)
++{
++ /* can only store one line in the unread buffer */
++ if (pbm->unread)
++ return;
++
++ pbm->unread = 1;
+ overflow_add(pbm->width, 7);
- pbm->revdata = malloc ((pbm->width+7)/8);
- memcpy (pbm->revdata, data, (pbm->width+7)/8);
- pbm->current_line--;
-diff -urNp a/converter/pbm/pbmtoppa/pbmtoppa.c b/converter/pbm/pbmtoppa/pbmtoppa.c
---- a/converter/pbm/pbmtoppa/pbmtoppa.c 2018-07-23 15:03:21.377486790 +0200
-+++ b/converter/pbm/pbmtoppa/pbmtoppa.c 2018-07-23 15:05:03.051265791 +0200
++ pbm->revdata = malloc ((pbm->width+7)/8);
++ memcpy (pbm->revdata, data, (pbm->width+7)/8);
++ pbm->current_line--;
++}
+diff --git a/converter/pbm/pbmtoppa/pbmtoppa.c b/converter/pbm/pbmtoppa/pbmtoppa.c
+index ff4a599..aa510ec 100644
+--- a/converter/pbm/pbmtoppa/pbmtoppa.c
++++ b/converter/pbm/pbmtoppa/pbmtoppa.c
@@ -453,6 +453,7 @@ main(int argc, char *argv[]) {
pm_error("main(): unrecognized parameter '%s'", argv[argn]);
}
@@ -305,9 +931,10 @@ diff -urNp a/converter/pbm/pbmtoppa/pbmtoppa.c b/converter/pbm/pbmtoppa/pbmtoppa
Pwidth=(Width+7)/8;
printer.fptr=out;
-diff -urNp a/converter/pbm/pbmtoxbm.c b/converter/pbm/pbmtoxbm.c
---- a/converter/pbm/pbmtoxbm.c 2018-07-23 15:03:21.376486792 +0200
-+++ b/converter/pbm/pbmtoxbm.c 2018-07-23 15:05:03.053265786 +0200
+diff --git a/converter/pbm/pbmtoxbm.c b/converter/pbm/pbmtoxbm.c
+index ecb72b3..fc0eb9c 100644
+--- a/converter/pbm/pbmtoxbm.c
++++ b/converter/pbm/pbmtoxbm.c
@@ -352,6 +352,8 @@ convertRaster(FILE * const ifP,
unsigned char * bitrow;
@@ -317,29 +944,10 @@ diff -urNp a/converter/pbm/pbmtoxbm.c b/converter/pbm/pbmtoxbm.c
putinit(xbmVersion);
-diff -urNp a/converter/pbm/pbmto4425.c b/converter/pbm/pbmto4425.c
---- a/converter/pbm/pbmto4425.c 2018-07-23 15:03:21.377486790 +0200
-+++ b/converter/pbm/pbmto4425.c 2018-07-23 15:05:03.052265788 +0200
-@@ -2,6 +2,7 @@
-
- #include "nstring.h"
- #include "pbm.h"
-+#include <string.h>
-
- static char bit_table[2][3] = {
- {1, 4, 0x10},
-@@ -160,7 +161,7 @@ main(int argc, char * argv[]) {
- xres = vmap_width * 2;
- yres = vmap_height * 3;
-
-- vmap = malloc(vmap_width * vmap_height * sizeof(char));
-+ vmap = malloc3(vmap_width, vmap_height, sizeof(char));
- if(vmap == NULL)
- {
- pm_error( "Cannot allocate memory" );
-diff -urNp a/converter/pbm/pktopbm.c b/converter/pbm/pktopbm.c
---- a/converter/pbm/pktopbm.c 2018-07-23 15:03:21.377486790 +0200
-+++ b/converter/pbm/pktopbm.c 2018-07-23 15:05:03.053265786 +0200
+diff --git a/converter/pbm/pktopbm.c b/converter/pbm/pktopbm.c
+index 712f339..b6fcb02 100644
+--- a/converter/pbm/pktopbm.c
++++ b/converter/pbm/pktopbm.c
@@ -280,6 +280,7 @@ main(int argc, char *argv[]) {
if (flagbyte == 7) { /* long form preamble */
integer packetlength = get32() ; /* character packet length */
@@ -348,9 +956,10 @@ diff -urNp a/converter/pbm/pktopbm.c b/converter/pbm/pktopbm.c
endofpacket = packetlength + pktopbm_pkloc;
/* calculate end of packet */
if ((car >= MAXPKCHAR) || !filename[car]) {
-diff -urNp a/converter/pbm/thinkjettopbm.l b/converter/pbm/thinkjettopbm.l
---- a/converter/pbm/thinkjettopbm.l 2018-07-23 15:03:21.377486790 +0200
-+++ b/converter/pbm/thinkjettopbm.l 2018-07-23 15:05:03.053265786 +0200
+diff --git a/converter/pbm/thinkjettopbm.l b/converter/pbm/thinkjettopbm.l
+index 5de4f2b..7f31de5 100644
+--- a/converter/pbm/thinkjettopbm.l
++++ b/converter/pbm/thinkjettopbm.l
@@ -114,7 +114,9 @@ DIG [0-9]
<RASTERMODE>\033\*b{DIG}+W {
int l;
@@ -371,9 +980,10 @@ diff -urNp a/converter/pbm/thinkjettopbm.l b/converter/pbm/thinkjettopbm.l
pbm_writepbminit(stdout, maxRowLength*8, rowCount, 0);
packed_bitrow = malloc(maxRowLength);
-diff -urNp a/converter/pbm/ybmtopbm.c b/converter/pbm/ybmtopbm.c
---- a/converter/pbm/ybmtopbm.c 2018-07-23 15:03:21.378486788 +0200
-+++ b/converter/pbm/ybmtopbm.c 2018-07-23 15:05:03.053265786 +0200
+diff --git a/converter/pbm/ybmtopbm.c b/converter/pbm/ybmtopbm.c
+index 2a42908..cf1ff03 100644
+--- a/converter/pbm/ybmtopbm.c
++++ b/converter/pbm/ybmtopbm.c
@@ -43,6 +43,7 @@ getinit(FILE * const ifP,
pm_error("EOF / read error");
@@ -382,9 +992,10 @@ diff -urNp a/converter/pbm/ybmtopbm.c b/converter/pbm/ybmtopbm.c
}
-diff -urNp a/converter/pgm/lispmtopgm.c b/converter/pgm/lispmtopgm.c
---- a/converter/pgm/lispmtopgm.c 2018-07-23 15:03:21.400486740 +0200
-+++ b/converter/pgm/lispmtopgm.c 2018-07-23 15:05:03.069265751 +0200
+diff --git a/converter/pgm/lispmtopgm.c b/converter/pgm/lispmtopgm.c
+index 40dd3fb..b5469f7 100644
+--- a/converter/pgm/lispmtopgm.c
++++ b/converter/pgm/lispmtopgm.c
@@ -58,6 +58,7 @@ main( argc, argv )
pm_error( "depth (%d bits) is too large", depth);
@@ -393,7 +1004,7 @@ diff -urNp a/converter/pgm/lispmtopgm.c b/converter/pgm/lispmtopgm.c
grayrow = pgm_allocrow( ( cols + 7 ) / 8 * 8 );
for ( row = 0; row < rows; ++row )
-@@ -102,6 +103,8 @@ getinit( file, colsP, rowsP, depthP, pad
+@@ -102,6 +103,8 @@ getinit( file, colsP, rowsP, depthP, padrightP )
if ( *depthP == 0 )
*depthP = 1; /* very old file */
@@ -402,9 +1013,10 @@ diff -urNp a/converter/pgm/lispmtopgm.c b/converter/pgm/lispmtopgm.c
*padrightP = ( ( *colsP + 31 ) / 32 ) * 32 - *colsP;
-diff -urNp a/converter/pgm/psidtopgm.c b/converter/pgm/psidtopgm.c
---- a/converter/pgm/psidtopgm.c 2018-07-23 15:03:21.400486740 +0200
-+++ b/converter/pgm/psidtopgm.c 2018-07-23 15:05:03.069265751 +0200
+diff --git a/converter/pgm/psidtopgm.c b/converter/pgm/psidtopgm.c
+index 07417d1..25bb311 100644
+--- a/converter/pgm/psidtopgm.c
++++ b/converter/pgm/psidtopgm.c
@@ -78,6 +78,7 @@ main(int argc,
pm_error("bits/sample (%d) is too large.", bitspersample);
@@ -413,9 +1025,23 @@ diff -urNp a/converter/pgm/psidtopgm.c b/converter/pgm/psidtopgm.c
grayrow = pgm_allocrow((cols + 7) / 8 * 8);
for (row = 0; row < rows; ++row) {
unsigned int col;
-diff -urNp a/converter/ppm/ilbmtoppm.c b/converter/ppm/ilbmtoppm.c
---- a/converter/ppm/ilbmtoppm.c 2018-07-23 15:03:21.403486734 +0200
-+++ b/converter/ppm/ilbmtoppm.c 2018-07-23 15:08:45.446313490 +0200
+diff --git a/converter/ppm/Makefile b/converter/ppm/Makefile
+index 003ef8d..b97349d 100644
+--- a/converter/ppm/Makefile
++++ b/converter/ppm/Makefile
+@@ -11,7 +11,7 @@ SUBDIRS = hpcdtoppm ppmtompeg
+
+ PORTBINARIES = 411toppm eyuvtoppm gouldtoppm ilbmtoppm imgtoppm \
+ leaftoppm mtvtoppm neotoppm \
+- pcxtoppm pc1toppm pi1toppm picttoppm pjtoppm \
++ pcxtoppm pc1toppm pi1toppm pjtoppm \
+ ppmtoacad ppmtoapplevol ppmtoarbtxt ppmtoascii \
+ ppmtobmp ppmtoeyuv ppmtogif ppmtoicr ppmtoilbm \
+ ppmtoleaf ppmtolj ppmtomitsu ppmtoneo \
+diff --git a/converter/ppm/ilbmtoppm.c b/converter/ppm/ilbmtoppm.c
+index 92d4d6f..60853dd 100644
+--- a/converter/ppm/ilbmtoppm.c
++++ b/converter/ppm/ilbmtoppm.c
@@ -608,6 +608,7 @@ decode_row(FILE * const ifP,
rawtype *chp;
@@ -458,7 +1084,7 @@ diff -urNp a/converter/ppm/ilbmtoppm.c b/converter/ppm/ilbmtoppm.c
MALLOCARRAY_NOFAIL(redtable, redmaxval +1);
MALLOCARRAY_NOFAIL(greentable, greenmaxval +1);
MALLOCARRAY_NOFAIL(bluetable, bluemaxval +1);
-@@ -1802,7 +1823,9 @@ PCHG_ConvertSmall(PCHGHeader * const
+@@ -1802,7 +1823,9 @@ PCHG_ConvertSmall(PCHGHeader * const pchgP,
ChangeCount32 = *data++;
remDataSize -= 2;
@@ -486,9 +1112,11 @@ diff -urNp a/converter/ppm/ilbmtoppm.c b/converter/ppm/ilbmtoppm.c
MALLOCARRAY_NOFAIL(ilbmrow, RowBytes(bmhdP->w));
*viewportmodesP |= fakeviewport; /* -isham/-isehb */
-diff -urNp a/converter/ppm/ilbmtoppm.c.rej b/converter/ppm/ilbmtoppm.c.rej
---- a/converter/ppm/ilbmtoppm.c.rej 1970-01-01 01:00:00.000000000 +0100
-+++ b/converter/ppm/ilbmtoppm.c.rej 2018-07-23 15:05:03.071265747 +0200
+diff --git a/converter/ppm/ilbmtoppm.c.rej b/converter/ppm/ilbmtoppm.c.rej
+new file mode 100644
+index 0000000..972cad0
+--- /dev/null
++++ b/converter/ppm/ilbmtoppm.c.rej
@@ -0,0 +1,46 @@
+--- converter/ppm/ilbmtoppm.c
++++ converter/ppm/ilbmtoppm.c
@@ -536,9 +1164,10 @@ diff -urNp a/converter/ppm/ilbmtoppm.c.rej b/converter/ppm/ilbmtoppm.c.rej
+ for( i = 0; i < changes; i++ ) {
+ if( totalchanges >= PCHG->TotalChanges ) goto fail;
+ if( datasize < 2 ) goto fail;
-diff -urNp a/converter/ppm/imgtoppm.c b/converter/ppm/imgtoppm.c
---- a/converter/ppm/imgtoppm.c 2018-07-23 15:03:21.404486731 +0200
-+++ b/converter/ppm/imgtoppm.c 2018-07-23 15:05:03.071265747 +0200
+diff --git a/converter/ppm/imgtoppm.c b/converter/ppm/imgtoppm.c
+index 7078b88..eb8509e 100644
+--- a/converter/ppm/imgtoppm.c
++++ b/converter/ppm/imgtoppm.c
@@ -84,6 +84,7 @@ main(int argc, char ** argv) {
len = atoi((char*) buf );
if ( fread( buf, len, 1, ifp ) != 1 )
@@ -555,22 +1184,11 @@ diff -urNp a/converter/ppm/imgtoppm.c b/converter/ppm/imgtoppm.c
if ( len != cols * rows )
pm_message(
"pixel data length (%d) does not match image size (%d)",
-diff -urNp a/converter/ppm/Makefile b/converter/ppm/Makefile
---- a/converter/ppm/Makefile 2018-07-23 15:03:21.406486727 +0200
-+++ b/converter/ppm/Makefile 2018-07-23 15:05:03.071265747 +0200
-@@ -11,7 +11,7 @@ SUBDIRS = hpcdtoppm
-
- PORTBINARIES = 411toppm eyuvtoppm gouldtoppm ilbmtoppm imgtoppm \
- leaftoppm mtvtoppm neotoppm \
-- pcxtoppm pc1toppm pi1toppm picttoppm pjtoppm \
-+ pcxtoppm pc1toppm pi1toppm pjtoppm \
- ppmtoacad ppmtoapplevol ppmtoarbtxt ppmtoascii \
- ppmtobmp ppmtoeyuv ppmtogif ppmtoicr ppmtoilbm \
- ppmtoleaf ppmtolj ppmtomitsu ppmtoneo \
-diff -urNp a/converter/ppm/pcxtoppm.c b/converter/ppm/pcxtoppm.c
---- a/converter/ppm/pcxtoppm.c 2018-07-23 15:03:21.406486727 +0200
-+++ b/converter/ppm/pcxtoppm.c 2018-07-23 15:05:03.071265747 +0200
-@@ -409,6 +409,7 @@ pcx_planes_to_pixels(pixels, bitplanes,
+diff --git a/converter/ppm/pcxtoppm.c b/converter/ppm/pcxtoppm.c
+index e252ba2..270ae3b 100644
+--- a/converter/ppm/pcxtoppm.c
++++ b/converter/ppm/pcxtoppm.c
+@@ -409,6 +409,7 @@ pcx_planes_to_pixels(pixels, bitplanes, bytesperline, planes, bitsperpixel)
/*
* clear the pixel buffer
*/
@@ -586,42 +1204,161 @@ diff -urNp a/converter/ppm/pcxtoppm.c b/converter/ppm/pcxtoppm.c
rawcols = BytesPerLine * 8 / BitsPerPixel;
if (headerCols > rawcols) {
pm_message("warning - BytesPerLine = %d, "
-diff -urNp a/converter/ppm/picttoppm.c b/converter/ppm/picttoppm.c
---- a/converter/ppm/picttoppm.c 2018-07-23 15:03:21.404486731 +0200
-+++ b/converter/ppm/picttoppm.c 2018-07-23 15:05:03.071265747 +0200
+diff --git a/converter/ppm/picttoppm.c b/converter/ppm/picttoppm.c
+index b8fb864..177bc30 100644
+--- a/converter/ppm/picttoppm.c
++++ b/converter/ppm/picttoppm.c
@@ -1,3 +1,4 @@
+#error "Unfixable. Don't ship me"
/*
* picttoppm.c -- convert a MacIntosh PICT file to PPM format.
*
-diff -urNp a/converter/ppm/pjtoppm.c b/converter/ppm/pjtoppm.c
---- a/converter/ppm/pjtoppm.c 2018-07-23 15:03:21.402486736 +0200
-+++ b/converter/ppm/pjtoppm.c 2018-07-23 15:05:03.071265747 +0200
-@@ -127,20 +127,22 @@ main(argc, argv)
+diff --git a/converter/ppm/pjtoppm.c b/converter/ppm/pjtoppm.c
+index b8b94f7..62ce77e 100644
+--- a/converter/ppm/pjtoppm.c
++++ b/converter/ppm/pjtoppm.c
+@@ -11,87 +11,65 @@
+ */
+
+ #include "ppm.h"
+-#include "pm_c_util.h"
+ #include "mallocvar.h"
+
+ static char usage[] = "[paintjetfile]";
+
+-
+-
+-static unsigned int
+-uintProduct(unsigned int const multiplicand,
+- unsigned int const multiplier) {
+-
+- if (UINT_MAX / multiplier < multiplicand)
+- pm_error("Airthmetic overflow");
+-
+- return multiplicand * multiplier;
+-}
+-
+-
+-
++static int egetc ARGS((FILE *fp));
+ static int
+-egetc(FILE * const ifP) {
++egetc(fp)
++ FILE *fp;
++{
+ int c;
+-
+- c = fgetc(ifP);
+-
+- if (c == -1)
++ if ((c = fgetc(fp)) == -1)
+ pm_error("unexpected end of file");
+-
+- return c;
++ return(c);
+ }
+
+-
+-
+ int
+-main(int argc, const char ** argv) {
+-
++main(argc, argv)
++ int argc;
++ char *argv[];
++{
+ int cmd, val;
+ char buffer[BUFSIZ];
+ int planes = 3, rows = -1, cols = -1;
++ int r = 0, c = 0, p = 0, i;
+ unsigned char **image = NULL;
+ int *imlen;
+- FILE * ifP;
++ FILE *fp = stdin;
+ int mode;
+ int argn;
+ unsigned char bf[3];
+- pixel * pixrow;
+- int c;
+- int row;
+- int plane;
++ pixel *pixrow;
+
+- pm_proginit(&argc, argv);
+
++ ppm_init(&argc, argv);
+ argn = 1;
+ if (argn != argc)
+- ifP = pm_openr(argv[argn++]);
++ fp = pm_openr(argv[argn++]);
+ else
+- ifP = stdin;
++ fp = stdin;
+
+ if (argn != argc)
+ pm_usage(usage);
+
+- row = 0; /* initial value */
+- plane = 0; /* initial value */
+-
+- while ((c = fgetc(ifP)) != -1) {
++ while ((c = fgetc(fp)) != -1) {
+ if (c != '\033')
+ continue;
+- switch (c = egetc(ifP)) {
++ switch (c = egetc(fp)) {
+ case 'E': /* reset */
+ break;
+- case '*': {
+- unsigned int i;
+- cmd = egetc(ifP);
++ case '*':
++ cmd = egetc(fp);
+ for (i = 0; i < BUFSIZ; i++) {
+- if (!isdigit(c = egetc(ifP)) && c != '+' && c != '-')
++ if (!isdigit(c = egetc(fp)) && c != '+' && c != '-')
+ break;
+ buffer[i] = c;
+ }
+ if (i != 0) {
+ buffer[i] = '\0';
+- if (sscanf(buffer, "%d", &val) != 1)
++ if (sscanf(buffer, "%d", &val) != 1)
+ pm_error("bad value `%s' at <ESC>*%c%c", buffer, cmd, c);
+ }
+ else
+@@ -122,7 +100,7 @@ main(int argc, const char ** argv) {
+ break;
+ case 'U': /* planes */
+ planes = val;
+- if (planes != 3)
++ if (planes != 3)
+ pm_error("can handle only 3 plane files");
+ break;
+ case 'A': /* begin raster */
+@@ -148,33 +126,40 @@ main(int argc, const char ** argv) {
+ break;
case 'V': /* send plane */
case 'W': /* send last plane */
- if (rows == -1 || r >= rows || image == NULL) {
-- if (rows == -1 || r >= rows)
+- if (rows == -1 || row >= rows || image == NULL) {
+- if (rows == -1 || row >= rows)
++ if (rows == -1 || r >= rows || image == NULL) {
+ if (rows == -1 || r >= rows) {
+ overflow_add(rows, 100);
rows += 100;
+ }
+
if (image == NULL) {
-- MALLOCARRAY(image, rows * planes);
-- MALLOCARRAY(imlen, rows * planes);
+- MALLOCARRAY(image, uintProduct(rows, planes));
+- MALLOCARRAY(imlen, uintProduct(rows, planes));
+- } else {
+- REALLOCARRAY(image, uintProduct(rows, planes));
+- REALLOCARRAY(imlen, uintProduct(rows, planes));
+ image = (unsigned char **)
+ malloc3(rows , planes , sizeof(unsigned char *));
+ imlen = (int *) malloc3(rows , planes, sizeof(int));
}
- else {
-- image = (unsigned char **)
-- realloc(image,
-- rows * planes *
-- sizeof(unsigned char *));
-- imlen = (int *)
-- realloc(imlen, rows * planes * sizeof(int));
-- }
++ else {
+ overflow2(rows,planes);
+ image = (unsigned char **)
+ realloc2(image, rows * planes,
@@ -630,30 +1367,191 @@ diff -urNp a/converter/ppm/pjtoppm.c b/converter/ppm/pjtoppm.c
}
if (image == NULL || imlen == NULL)
pm_error("out of memory");
-@@ -212,8 +214,10 @@ main(argc, argv)
- for (i = 0, c = 0; c < imlen[p + r * planes]; c += 2)
- for (cmd = image[p + r * planes][c],
- val = image[p + r * planes][c+1];
-- cmd >= 0 && i < newcols; cmd--, i++)
+- if (plane >= planes)
++ if (p == planes)
+ pm_error("too many planes");
+- cols = MAX(cols, val);
+- imlen[row * planes + plane] = val;
+- MALLOCARRAY(image[row * planes + plane], val);
+- if (image[row * planes + plane] == NULL)
++ cols = cols > val ? cols : val;
++ imlen[r * planes + p] = val;
++ MALLOCARRAY(image[r * planes + p], val);
++ if (image[r * planes + p] == NULL)
+ pm_error("out of memory");
+- if (fread(image[row * planes + plane], 1, val, ifP) != val)
++ if (fread(image[r * planes + p], 1, val, fp) != val)
+ pm_error("short data");
+ if (c == 'V')
+- ++plane;
++ p++;
+ else {
+- plane = 0;
+- ++row;
++ p = 0;
++ r++;
+ }
+ break;
+ default:
+@@ -183,7 +168,7 @@ main(int argc, const char ** argv) {
+ }
+ break;
+ case 'p': /* Position */
+- if (plane != 0)
++ if (p != 0)
+ pm_error("changed position in the middle of "
+ "transferring planes");
+ switch (c) {
+@@ -192,15 +177,15 @@ main(int argc, const char ** argv) {
+ break;
+ case 'Y':
+ if (buffer[0] == '+')
+- val = row + val;
++ val = r + val;
+ if (buffer[0] == '-')
+- val = row - val;
+- for (; val > row; ++row)
+- for (plane = 0; plane < 3; ++plane) {
+- imlen[row * planes + plane] = 0;
+- image[row * planes + plane] = NULL;
++ val = r - val;
++ for (; val > r; r++)
++ for (p = 0; p < 3; p++) {
++ imlen[r * planes + p] = 0;
++ image[r * planes + p] = NULL;
+ }
+- row = val;
++ r = val;
+ break;
+ default:
+ pm_message("uninmplemented <ESC>*%c%d%c", cmd, val, c);
+@@ -209,80 +194,65 @@ main(int argc, const char ** argv) {
+ default:
+ pm_message("uninmplemented <ESC>*%c%d%c", cmd, val, c);
+ break;
+- }
+- } /* case */
+- } /* switch */
++ }
++ }
+ }
+- pm_close(ifP);
+- rows = row;
++ pm_close(fp);
++ rows = r;
+ if (mode == 1) {
+- int const newcols = 10240; /* It could not be larger that that! */
+- unsigned char * buf;
+- unsigned int row;
+-
+- for (row = 0, cols = 0; row < rows; ++row) {
+- unsigned int plane;
+- if (image[row * planes] == NULL)
++ unsigned char *buf;
++ int newcols = 0;
++ newcols = 10240; /* It could not be larger that that! */
++ cols = 0;
++ for (r = 0; r < rows; r++) {
++ if (image[r * planes] == NULL)
+ continue;
+- for (plane = 0; plane < planes; ++plane) {
+- unsigned int i;
+- unsigned int col;
++ for (p = 0; p < planes; p++) {
+ MALLOCARRAY(buf, newcols);
+- if (buf == NULL)
++ if (buf == NULL)
+ pm_error("out of memory");
+- for (i = 0, col = 0;
+- col < imlen[plane + row * planes];
+- col += 2)
+- for (cmd = image[plane + row * planes][col],
+- val = image[plane + row * planes][col+1];
+- cmd >= 0 && i < newcols; cmd--, i++)
++ for (i = 0, c = 0; c < imlen[p + r * planes]; c += 2)
++ for (cmd = image[p + r * planes][c],
++ val = image[p + r * planes][c+1];
+ cmd >= 0 && i < newcols; cmd--, i++) {
buf[i] = val;
+- cols = MAX(cols, i);
+- free(image[plane + row * planes]);
+- /*
+- * This is less than what we have so it realloc should
+ overflow_add(i, 1);
+ }
- cols = cols > i ? cols : i;
- free(image[p + r * planes]);
- /*
-@@ -224,6 +228,7 @@ main(argc, argv)
- image[p + r * planes] = (unsigned char *) realloc(buf, i);
++ cols = cols > i ? cols : i;
++ free(image[p + r * planes]);
++ /*
++ * This is less than what we have so it realloc should
+ * not return null. Even if it does, tough! We will
+ * lose a line, and probably die on the next line anyway
+ */
+- image[plane + row * planes] = realloc(buf, i);
++ image[p + r * planes] = (unsigned char *) realloc(buf, i);
}
}
+ overflow2(cols, 8);
cols *= 8;
}
-
-diff -urNp a/converter/ppm/ppmtoeyuv.c b/converter/ppm/ppmtoeyuv.c
---- a/converter/ppm/ppmtoeyuv.c 2018-07-23 15:03:21.404486731 +0200
-+++ b/converter/ppm/ppmtoeyuv.c 2018-07-23 15:05:03.071265747 +0200
-@@ -114,6 +114,7 @@ create_multiplication_tables(const pixva
+-
++
++
+ ppm_writeppminit(stdout, cols, rows, (pixval) 255, 0);
+ pixrow = ppm_allocrow(cols);
+-
+- for (row = 0; row < rows; ++row) {
+- if (image[row * planes] == NULL) {
+- unsigned int col;
+- for (col = 0; col < cols; ++col)
+- PPM_ASSIGN(pixrow[col], 0, 0, 0);
++ for (r = 0; r < rows; r++) {
++ if (image[r * planes] == NULL) {
++ for (c = 0; c < cols; c++)
++ PPM_ASSIGN(pixrow[c], 0, 0, 0);
+ continue;
+ }
+- {
+- unsigned int col;
+- unsigned int cmd;
+- for (cmd = 0, col = 0; col < cols; col += 8, ++cmd) {
+- unsigned int i;
+- for (i = 0; i < 8 && col + i < cols; ++i) {
+- unsigned int plane;
+- for (plane = 0; plane < planes; ++plane)
+- if (mode == 0 && cmd >= imlen[row * planes + plane])
+- bf[plane] = 0;
+- else
+- bf[plane] = (image[row * planes + plane][cmd] &
+- (1 << (7 - i))) ? 255 : 0;
+- PPM_ASSIGN(pixrow[col + i], bf[0], bf[1], bf[2]);
+- }
++ for (cmd = 0, c = 0; c < cols; c += 8, cmd++)
++ for (i = 0; i < 8 && c + i < cols; i++) {
++ for (p = 0; p < planes; p++)
++ if (mode == 0 && cmd >= imlen[r * planes + p])
++ bf[p] = 0;
++ else
++ bf[p] = (image[r * planes + p][cmd] &
++ (1 << (7 - i))) ? 255 : 0;
++ PPM_ASSIGN(pixrow[c + i], bf[0], bf[1], bf[2]);
+ }
+- }
+- ppm_writeppmrow(stdout, pixrow, cols, 255, 0);
++ ppm_writeppmrow(stdout, pixrow, cols, (pixval) 255, 0);
+ }
+ pm_close(stdout);
+-
+- return 0;
++ exit(0);
+ }
+-
+-
+-
+diff --git a/converter/ppm/ppmtoeyuv.c b/converter/ppm/ppmtoeyuv.c
+index f5ce115..6f072be 100644
+--- a/converter/ppm/ppmtoeyuv.c
++++ b/converter/ppm/ppmtoeyuv.c
+@@ -114,6 +114,7 @@ create_multiplication_tables(const pixval maxval) {
int index;
@@ -661,9 +1559,10 @@ diff -urNp a/converter/ppm/ppmtoeyuv.c b/converter/ppm/ppmtoeyuv.c
MALLOCARRAY_NOFAIL(mult299 , maxval+1);
MALLOCARRAY_NOFAIL(mult587 , maxval+1);
MALLOCARRAY_NOFAIL(mult114 , maxval+1);
-diff -urNp a/converter/ppm/ppmtolj.c b/converter/ppm/ppmtolj.c
---- a/converter/ppm/ppmtolj.c 2018-07-23 15:03:21.401486738 +0200
-+++ b/converter/ppm/ppmtolj.c 2018-07-23 15:05:03.071265747 +0200
+diff --git a/converter/ppm/ppmtolj.c b/converter/ppm/ppmtolj.c
+index 7ed814e..b4e7db1 100644
+--- a/converter/ppm/ppmtolj.c
++++ b/converter/ppm/ppmtolj.c
@@ -182,6 +182,7 @@ int main(int argc, char *argv[]) {
ppm_readppminit( ifp, &cols, &rows, &maxval, &format );
pixelrow = ppm_allocrow( cols );
@@ -672,9 +1571,10 @@ diff -urNp a/converter/ppm/ppmtolj.c b/converter/ppm/ppmtolj.c
obuf = (unsigned char *) pm_allocrow(cols * 3, sizeof(unsigned char));
cbuf = (unsigned char *) pm_allocrow(cols * 6, sizeof(unsigned char));
if (mode == C_TRANS_MODE_DELTA)
-diff -urNp a/converter/ppm/ppmtomitsu.c b/converter/ppm/ppmtomitsu.c
---- a/converter/ppm/ppmtomitsu.c 2018-07-23 15:03:21.403486734 +0200
-+++ b/converter/ppm/ppmtomitsu.c 2018-07-23 15:05:03.071265747 +0200
+diff --git a/converter/ppm/ppmtomitsu.c b/converter/ppm/ppmtomitsu.c
+index 5b0b324..11db755 100644
+--- a/converter/ppm/ppmtomitsu.c
++++ b/converter/ppm/ppmtomitsu.c
@@ -685,6 +685,8 @@ main(int argc, char * argv[]) {
medias = MSize_User;
@@ -684,10 +1584,11 @@ diff -urNp a/converter/ppm/ppmtomitsu.c b/converter/ppm/ppmtomitsu.c
medias.maxcols *= 2;
medias.maxrows *= 2;
}
-diff -urNp a/converter/ppm/ppmtopcx.c b/converter/ppm/ppmtopcx.c
---- a/converter/ppm/ppmtopcx.c 2018-07-23 15:03:21.403486734 +0200
-+++ b/converter/ppm/ppmtopcx.c 2018-07-23 15:05:03.071265747 +0200
-@@ -425,6 +425,8 @@ ppmTo16ColorPcx(pixel ** cons
+diff --git a/converter/ppm/ppmtopcx.c b/converter/ppm/ppmtopcx.c
+index fa68edc..97dfb2b 100644
+--- a/converter/ppm/ppmtopcx.c
++++ b/converter/ppm/ppmtopcx.c
+@@ -425,6 +425,8 @@ ppmTo16ColorPcx(pixel ** const pixels,
else Planes = 1;
}
}
@@ -696,9 +1597,10 @@ diff -urNp a/converter/ppm/ppmtopcx.c b/converter/ppm/ppmtopcx.c
BytesPerLine = ((cols * BitsPerPixel) + 7) / 8;
MALLOCARRAY_NOFAIL(indexRow, cols);
MALLOCARRAY_NOFAIL(planesrow, BytesPerLine);
-diff -urNp a/converter/ppm/ppmtopict.c b/converter/ppm/ppmtopict.c
---- a/converter/ppm/ppmtopict.c 2018-07-23 15:03:21.402486736 +0200
-+++ b/converter/ppm/ppmtopict.c 2018-07-23 15:05:03.071265747 +0200
+diff --git a/converter/ppm/ppmtopict.c b/converter/ppm/ppmtopict.c
+index 36464b6..c91ccf2 100644
+--- a/converter/ppm/ppmtopict.c
++++ b/converter/ppm/ppmtopict.c
@@ -450,6 +450,8 @@ main(int argc, const char ** argv) {
putShort(stdout, 0); /* mode */
@@ -708,9 +1610,10 @@ diff -urNp a/converter/ppm/ppmtopict.c b/converter/ppm/ppmtopict.c
outBuf = malloc((unsigned)(cols+cols/MAX_COUNT+1));
for (row = 0, oc = 0; row < rows; ++row) {
unsigned int rowSize;
-diff -urNp a/converter/ppm/ppmtopj.c b/converter/ppm/ppmtopj.c
---- a/converter/ppm/ppmtopj.c 2018-07-23 15:03:21.405486729 +0200
-+++ b/converter/ppm/ppmtopj.c 2018-07-23 15:05:03.071265747 +0200
+diff --git a/converter/ppm/ppmtopj.c b/converter/ppm/ppmtopj.c
+index d116773..fc84cac 100644
+--- a/converter/ppm/ppmtopj.c
++++ b/converter/ppm/ppmtopj.c
@@ -179,6 +179,7 @@ char *argv[];
pixels = ppm_readppm( ifp, &cols, &rows, &maxval );
@@ -719,9 +1622,10 @@ diff -urNp a/converter/ppm/ppmtopj.c b/converter/ppm/ppmtopj.c
obuf = (unsigned char *) pm_allocrow(cols, sizeof(unsigned char));
cbuf = (unsigned char *) pm_allocrow(cols * 2, sizeof(unsigned char));
-diff -urNp a/converter/ppm/ppmtopjxl.c b/converter/ppm/ppmtopjxl.c
---- a/converter/ppm/ppmtopjxl.c 2018-07-23 15:03:21.405486729 +0200
-+++ b/converter/ppm/ppmtopjxl.c 2018-07-23 15:05:03.071265747 +0200
+diff --git a/converter/ppm/ppmtopjxl.c b/converter/ppm/ppmtopjxl.c
+index 90bcef0..72d0027 100644
+--- a/converter/ppm/ppmtopjxl.c
++++ b/converter/ppm/ppmtopjxl.c
@@ -267,6 +267,9 @@ main(int argc, const char * argv[]) {
if (maxval > PCL_MAXVAL)
pm_error("color range too large; reduce with ppmcscale");
@@ -755,9 +1659,10 @@ diff -urNp a/converter/ppm/ppmtopjxl.c b/converter/ppm/ppmtopjxl.c
inrow = (char *)malloc((unsigned)bpp);
outrow = (char *)malloc((unsigned)bpp*2);
runcnt = (signed char *)malloc((unsigned)bpp);
-diff -urNp a/converter/ppm/ppmtowinicon.c b/converter/ppm/ppmtowinicon.c
---- a/converter/ppm/ppmtowinicon.c 2018-07-23 15:03:21.405486729 +0200
-+++ b/converter/ppm/ppmtowinicon.c 2018-07-23 15:05:03.071265747 +0200
+diff --git a/converter/ppm/ppmtowinicon.c b/converter/ppm/ppmtowinicon.c
+index c673798..af2b445 100644
+--- a/converter/ppm/ppmtowinicon.c
++++ b/converter/ppm/ppmtowinicon.c
@@ -12,6 +12,7 @@
#include <math.h>
@@ -766,7 +1671,7 @@ diff -urNp a/converter/ppm/ppmtowinicon.c b/converter/ppm/ppmtowinicon.c
#include "pm_c_util.h"
#include "winico.h"
-@@ -214,6 +215,7 @@ createAndBitmap (gray ** const ba, int c
+@@ -214,6 +215,7 @@ createAndBitmap (gray ** const ba, int const cols, int const rows,
MALLOCARRAY_NOFAIL(rowData, rows);
icBitmap->xBytes = xBytes;
icBitmap->data = rowData;
@@ -774,7 +1679,7 @@ diff -urNp a/converter/ppm/ppmtowinicon.c b/converter/ppm/ppmtowinicon.c
icBitmap->size = xBytes * rows;
for (y=0;y<rows;y++) {
u1 * row;
-@@ -342,6 +344,7 @@ create4Bitmap (pixel ** const pa, int co
+@@ -342,6 +344,7 @@ create4Bitmap (pixel ** const pa, int const cols, int const rows,
MALLOCARRAY_NOFAIL(rowData, rows);
icBitmap->xBytes = xBytes;
icBitmap->data = rowData;
@@ -782,7 +1687,7 @@ diff -urNp a/converter/ppm/ppmtowinicon.c b/converter/ppm/ppmtowinicon.c
icBitmap->size = xBytes * rows;
for (y=0;y<rows;y++) {
-@@ -402,6 +405,7 @@ create8Bitmap (pixel ** const pa, int co
+@@ -402,6 +405,7 @@ create8Bitmap (pixel ** const pa, int const cols, int const rows,
MALLOCARRAY_NOFAIL(rowData, rows);
icBitmap->xBytes = xBytes;
icBitmap->data = rowData;
@@ -790,7 +1695,7 @@ diff -urNp a/converter/ppm/ppmtowinicon.c b/converter/ppm/ppmtowinicon.c
icBitmap->size = xBytes * rows;
for (y=0;y<rows;y++) {
-@@ -709,7 +713,11 @@ addEntryToIcon(MS_Ico const MSIcon
+@@ -709,7 +713,11 @@ addEntryToIcon(MS_Ico const MSIconData,
entry->bitcount = bpp;
entry->ih = createInfoHeader(entry, xorBitmap, andBitmap);
entry->colors = palette->colors;
@@ -803,10 +1708,11 @@ diff -urNp a/converter/ppm/ppmtowinicon.c b/converter/ppm/ppmtowinicon.c
xorBitmap->size + andBitmap->size + 40 + (4 * entry->color_count);
if (verbose)
pm_message("entry->size_in_bytes = %d + %d + %d = %d",
-diff -urNp a/converter/ppm/ppmtoxpm.c b/converter/ppm/ppmtoxpm.c
---- a/converter/ppm/ppmtoxpm.c 2018-07-23 15:03:21.405486729 +0200
-+++ b/converter/ppm/ppmtoxpm.c 2018-07-23 15:05:03.071265747 +0200
-@@ -198,6 +198,7 @@ genNumstr(unsigned int const input, int
+diff --git a/converter/ppm/ppmtoxpm.c b/converter/ppm/ppmtoxpm.c
+index 0e31692..1b3923f 100644
+--- a/converter/ppm/ppmtoxpm.c
++++ b/converter/ppm/ppmtoxpm.c
+@@ -198,6 +198,7 @@ genNumstr(unsigned int const input, int const digits) {
unsigned int i;
/* Allocate memory for printed number. Abort if error. */
@@ -822,9 +1728,10 @@ diff -urNp a/converter/ppm/ppmtoxpm.c b/converter/ppm/ppmtoxpm.c
MALLOCARRAY(cmap, cmapSize);
if (cmapP == NULL)
pm_error("Out of memory allocating %u bytes for a color map.",
-diff -urNp a/converter/ppm/qrttoppm.c b/converter/ppm/qrttoppm.c
---- a/converter/ppm/qrttoppm.c 2018-07-23 15:03:21.406486727 +0200
-+++ b/converter/ppm/qrttoppm.c 2018-07-23 15:05:03.071265747 +0200
+diff --git a/converter/ppm/qrttoppm.c b/converter/ppm/qrttoppm.c
+index 935463e..653084c 100644
+--- a/converter/ppm/qrttoppm.c
++++ b/converter/ppm/qrttoppm.c
@@ -46,7 +46,7 @@ main( argc, argv )
ppm_writeppminit( stdout, cols, rows, maxval, 0 );
@@ -834,9 +1741,10 @@ diff -urNp a/converter/ppm/qrttoppm.c b/converter/ppm/qrttoppm.c
if ( buf == (unsigned char *) 0 )
pm_error( "out of memory" );
-diff -urNp a/converter/ppm/sldtoppm.c b/converter/ppm/sldtoppm.c
---- a/converter/ppm/sldtoppm.c 2018-07-23 15:03:21.401486738 +0200
-+++ b/converter/ppm/sldtoppm.c 2018-07-23 15:05:03.071265747 +0200
+diff --git a/converter/ppm/sldtoppm.c b/converter/ppm/sldtoppm.c
+index 2dc049f..2a482be 100644
+--- a/converter/ppm/sldtoppm.c
++++ b/converter/ppm/sldtoppm.c
@@ -154,127 +154,85 @@ vscale(int * const px,
@@ -1044,9 +1952,10 @@ diff -urNp a/converter/ppm/sldtoppm.c b/converter/ppm/sldtoppm.c
pixels = ppm_allocarray(pixcols = ixdots + 1, pixrows = iydots + 1);
PPM_ASSIGN(rgbcolor, 0, 0, 0);
ppmd_filledrectangle(pixels, pixcols, pixrows, pixmaxval, 0, 0,
-diff -urNp a/converter/ppm/ximtoppm.c b/converter/ppm/ximtoppm.c
---- a/converter/ppm/ximtoppm.c 2018-07-23 15:03:21.402486736 +0200
-+++ b/converter/ppm/ximtoppm.c 2018-07-23 15:05:03.071265747 +0200
+diff --git a/converter/ppm/ximtoppm.c b/converter/ppm/ximtoppm.c
+index 75faac6..5758739 100644
+--- a/converter/ppm/ximtoppm.c
++++ b/converter/ppm/ximtoppm.c
@@ -118,6 +118,7 @@ ReadXimHeader(FILE * const in_fp,
header->bits_channel = atoi(a_head.bits_per_channel);
header->alpha_flag = atoi(a_head.alpha_channel);
@@ -1079,10 +1988,11 @@ diff -urNp a/converter/ppm/ximtoppm.c b/converter/ppm/ximtoppm.c
header->colors = (Color *)calloc((unsigned int)header->ncolors,
sizeof(Color));
if (header->colors == NULL) {
-diff -urNp a/editor/pamcut.c b/editor/pamcut.c
---- a/editor/pamcut.c 2018-07-23 15:03:21.362486822 +0200
-+++ b/editor/pamcut.c 2018-07-23 15:05:03.046265802 +0200
-@@ -655,6 +655,8 @@ cutOneImage(FILE * const ifP
+diff --git a/editor/pamcut.c b/editor/pamcut.c
+index db5b5b3..5fc0267 100644
+--- a/editor/pamcut.c
++++ b/editor/pamcut.c
+@@ -773,6 +773,8 @@ cutOneImage(FILE * const ifP,
outpam = inpam; /* Initial value -- most fields should be same */
outpam.file = ofP;
@@ -1091,10 +2001,11 @@ diff -urNp a/editor/pamcut.c b/editor/pamcut.c
outpam.width = rightcol - leftcol + 1;
outpam.height = bottomrow - toprow + 1;
-diff -urNp a/editor/pnmgamma.c b/editor/pnmgamma.c
---- a/editor/pnmgamma.c 2018-07-23 15:03:21.364486818 +0200
-+++ b/editor/pnmgamma.c 2018-07-23 15:05:03.046265802 +0200
-@@ -596,6 +596,7 @@ createGammaTables(enum transferFunction
+diff --git a/editor/pnmgamma.c b/editor/pnmgamma.c
+index b357b0d..ec612d3 100644
+--- a/editor/pnmgamma.c
++++ b/editor/pnmgamma.c
+@@ -596,6 +596,7 @@ createGammaTables(enum transferFunction const transferFunction,
xelval ** const btableP) {
/* Allocate space for the tables. */
@@ -1102,10 +2013,11 @@ diff -urNp a/editor/pnmgamma.c b/editor/pnmgamma.c
MALLOCARRAY(*rtableP, maxval+1);
MALLOCARRAY(*gtableP, maxval+1);
MALLOCARRAY(*btableP, maxval+1);
-diff -urNp a/editor/pnmhisteq.c b/editor/pnmhisteq.c
---- a/editor/pnmhisteq.c 2018-07-23 15:03:21.362486822 +0200
-+++ b/editor/pnmhisteq.c 2018-07-23 15:05:03.046265802 +0200
-@@ -107,6 +107,7 @@ computeLuminosityHistogram(xel * const *
+diff --git a/editor/pnmhisteq.c b/editor/pnmhisteq.c
+index a339f73..c2c85a3 100644
+--- a/editor/pnmhisteq.c
++++ b/editor/pnmhisteq.c
+@@ -107,6 +107,7 @@ computeLuminosityHistogram(xel * const * const xels,
unsigned int pixelCount;
unsigned int * lumahist;
@@ -1113,9 +2025,10 @@ diff -urNp a/editor/pnmhisteq.c b/editor/pnmhisteq.c
MALLOCARRAY(lumahist, maxval + 1);
if (lumahist == NULL)
pm_error("Out of storage allocating array for %u histogram elements",
-diff -urNp a/editor/pnmindex.csh b/editor/pnmindex.csh
---- a/editor/pnmindex.csh 2018-07-23 15:03:21.369486807 +0200
-+++ b/editor/pnmindex.csh 2018-07-23 15:05:03.046265802 +0200
+diff --git a/editor/pnmindex.csh b/editor/pnmindex.csh
+index c6f1e84..c513a84 100755
+--- a/editor/pnmindex.csh
++++ b/editor/pnmindex.csh
@@ -1,5 +1,7 @@
#!/bin/csh -f
#
@@ -1124,9 +2037,10 @@ diff -urNp a/editor/pnmindex.csh b/editor/pnmindex.csh
# pnmindex - build a visual index of a bunch of anymaps
#
# Copyright (C) 1991 by Jef Poskanzer.
-diff -urNp a/editor/pnmpad.c b/editor/pnmpad.c
---- a/editor/pnmpad.c 2018-07-23 15:03:21.362486822 +0200
-+++ b/editor/pnmpad.c 2018-07-23 15:05:03.046265802 +0200
+diff --git a/editor/pnmpad.c b/editor/pnmpad.c
+index 9c7a77e..1aa578c 100644
+--- a/editor/pnmpad.c
++++ b/editor/pnmpad.c
@@ -634,6 +634,8 @@ main(int argc, const char ** argv) {
computePadSizes(cmdline, cols, rows, &lpad, &rpad, &tpad, &bpad);
@@ -1136,9 +2050,10 @@ diff -urNp a/editor/pnmpad.c b/editor/pnmpad.c
newcols = cols + lpad + rpad;
if (PNM_FORMAT_TYPE(format) == PBM_TYPE)
-diff -urNp a/editor/pnmremap.c b/editor/pnmremap.c
---- a/editor/pnmremap.c 2018-07-23 15:03:21.363486820 +0200
-+++ b/editor/pnmremap.c 2018-07-23 15:09:26.462101272 +0200
+diff --git a/editor/pnmremap.c b/editor/pnmremap.c
+index 0038f4d..a5950be 100644
+--- a/editor/pnmremap.c
++++ b/editor/pnmremap.c
@@ -468,6 +468,7 @@ fserr_init(struct pam * const pamP,
unsigned int const fserrSize = pamP->width + 2;
@@ -1155,9 +2070,11 @@ diff -urNp a/editor/pnmremap.c b/editor/pnmremap.c
for (col = 0; col < pamP->width + 2; ++col) {
unsigned int plane;
for (plane = 0; plane < pamP->depth; ++plane)
-diff -urNp a/editor/pnmremap.c.rej b/editor/pnmremap.c.rej
---- a/editor/pnmremap.c.rej 1970-01-01 01:00:00.000000000 +0100
-+++ b/editor/pnmremap.c.rej 2018-07-23 15:05:03.046265802 +0200
+diff --git a/editor/pnmremap.c.rej b/editor/pnmremap.c.rej
+new file mode 100644
+index 0000000..c627c20
+--- /dev/null
++++ b/editor/pnmremap.c.rej
@@ -0,0 +1,10 @@
+--- editor/pnmremap.c
++++ editor/pnmremap.c
@@ -1169,10 +2086,11 @@ diff -urNp a/editor/pnmremap.c.rej b/editor/pnmremap.c.rej
+ for (col = 0; col < pamP->width + 2; ++col) {
+ unsigned int plane;
+ for (plane = 0; plane < pamP->depth; ++plane)
-diff -urNp a/editor/pnmscalefixed.c b/editor/pnmscalefixed.c
---- a/editor/pnmscalefixed.c 2018-07-23 15:03:21.365486816 +0200
-+++ b/editor/pnmscalefixed.c 2018-07-23 15:05:03.046265802 +0200
-@@ -214,6 +214,7 @@ compute_output_dimensions(const struct c
+diff --git a/editor/pnmscalefixed.c b/editor/pnmscalefixed.c
+index 884ca31..747cd8f 100644
+--- a/editor/pnmscalefixed.c
++++ b/editor/pnmscalefixed.c
+@@ -214,6 +214,7 @@ compute_output_dimensions(const struct cmdline_info cmdline,
const int rows, const int cols,
int * newrowsP, int * newcolsP) {
@@ -1180,7 +2098,7 @@ diff -urNp a/editor/pnmscalefixed.c b/editor/pnmscalefixed.c
if (cmdline.pixels) {
if (rows * cols <= cmdline.pixels) {
*newrowsP = rows;
-@@ -265,6 +266,8 @@ compute_output_dimensions(const struct c
+@@ -265,6 +266,8 @@ compute_output_dimensions(const struct cmdline_info cmdline,
if (*newcolsP < 1) *newcolsP = 1;
if (*newrowsP < 1) *newrowsP = 1;
@@ -1199,10 +2117,11 @@ diff -urNp a/editor/pnmscalefixed.c b/editor/pnmscalefixed.c
sxscale = SCALE * newcols / cols;
syscale = SCALE * newrows / rows;
-diff -urNp a/editor/ppmdither.c b/editor/ppmdither.c
---- a/editor/ppmdither.c 2018-07-23 15:03:21.363486820 +0200
-+++ b/editor/ppmdither.c 2018-07-23 15:05:03.046265802 +0200
-@@ -356,6 +356,11 @@ dithMatrix(unsigned int const dithPower)
+diff --git a/editor/ppmdither.c b/editor/ppmdither.c
+index ec1b977..e701e09 100644
+--- a/editor/ppmdither.c
++++ b/editor/ppmdither.c
+@@ -356,6 +356,11 @@ dithMatrix(unsigned int const dithPower) {
(dithDim * sizeof(*dithMat)) + /* pointers */
(dithDim * dithDim * sizeof(**dithMat)); /* data */
@@ -1214,9 +2133,10 @@ diff -urNp a/editor/ppmdither.c b/editor/ppmdither.c
dithMat = malloc(dithMatSize);
if (dithMat == NULL)
-diff -urNp a/editor/specialty/pamoil.c b/editor/specialty/pamoil.c
---- a/editor/specialty/pamoil.c 2018-07-23 15:03:21.366486814 +0200
-+++ b/editor/specialty/pamoil.c 2018-07-23 15:05:03.045265804 +0200
+diff --git a/editor/specialty/pamoil.c b/editor/specialty/pamoil.c
+index 6cb8d3a..6f4bde9 100644
+--- a/editor/specialty/pamoil.c
++++ b/editor/specialty/pamoil.c
@@ -112,6 +112,7 @@ main(int argc, char *argv[] ) {
tuples = pnm_readpam(ifp, &inpam, PAM_STRUCT_SIZE(tuple_type));
pm_close(ifp);
@@ -1225,10 +2145,11 @@ diff -urNp a/editor/specialty/pamoil.c b/editor/specialty/pamoil.c
MALLOCARRAY(hist, inpam.maxval + 1);
if (hist == NULL)
pm_error("Unable to allocate memory for histogram.");
-diff -urNp a/lib/libpam.c b/lib/libpam.c
---- a/lib/libpam.c 2018-07-23 15:03:21.373486799 +0200
-+++ b/lib/libpam.c 2018-07-23 15:05:03.050265793 +0200
-@@ -225,7 +225,8 @@ allocPamRow(const struct pam * const pam
+diff --git a/lib/libpam.c b/lib/libpam.c
+index a8f140b..e6986f1 100644
+--- a/lib/libpam.c
++++ b/lib/libpam.c
+@@ -225,7 +225,8 @@ allocPamRow(const struct pam * const pamP) {
unsigned int const bytesPerTuple = allocationDepth(pamP) * sizeof(sample);
tuple * tuplerow;
@@ -1238,10 +2159,11 @@ diff -urNp a/lib/libpam.c b/lib/libpam.c
if (tuplerow != NULL) {
/* Now we initialize the pointers to the individual tuples
-diff -urNp a/lib/libpammap.c b/lib/libpammap.c
---- a/lib/libpammap.c 2018-07-23 15:03:21.373486799 +0200
-+++ b/lib/libpammap.c 2018-07-23 15:05:03.050265793 +0200
-@@ -108,7 +108,9 @@ allocTupleIntListItem(struct pam * const
+diff --git a/lib/libpammap.c b/lib/libpammap.c
+index 2222491..ba27a4c 100644
+--- a/lib/libpammap.c
++++ b/lib/libpammap.c
+@@ -108,7 +108,9 @@ allocTupleIntListItem(struct pam * const pamP) {
*/
struct tupleint_list_item * retval;
@@ -1252,10 +2174,11 @@ diff -urNp a/lib/libpammap.c b/lib/libpammap.c
sizeof(*retval) - sizeof(retval->tupleint.tuple)
+ pamP->depth * sizeof(sample);
-diff -urNp a/lib/libpm.c b/lib/libpm.c
---- a/lib/libpm.c 2018-07-23 15:03:21.372486801 +0200
-+++ b/lib/libpm.c 2018-07-23 15:05:03.050265793 +0200
-@@ -888,5 +888,53 @@ pm_parse_height(const char * const arg)
+diff --git a/lib/libpm.c b/lib/libpm.c
+index 47a2f49..a263598 100644
+--- a/lib/libpm.c
++++ b/lib/libpm.c
+@@ -888,5 +888,53 @@ pm_parse_height(const char * const arg) {
return height;
}
@@ -1309,10 +2232,11 @@ diff -urNp a/lib/libpm.c b/lib/libpm.c
+ return realloc(a, b*c);
+}
-diff -urNp a/lib/pm.h b/lib/pm.h
---- a/lib/pm.h 2018-07-23 15:03:21.376486792 +0200
-+++ b/lib/pm.h 2018-07-23 15:05:03.050265793 +0200
-@@ -435,5 +435,12 @@ pm_parse_height(const char * const arg);
+diff --git a/lib/pm.h b/lib/pm.h
+index 3fc92fb..1e30ce9 100644
+--- a/lib/pm.h
++++ b/lib/pm.h
+@@ -441,5 +441,12 @@ pm_parse_height(const char * const arg);
}
#endif
@@ -1325,20 +2249,73 @@ diff -urNp a/lib/pm.h b/lib/pm.h
+
#endif
-diff -urNp a/other/pnmcolormap.c b/other/pnmcolormap.c
---- a/other/pnmcolormap.c 2018-07-23 15:03:21.362486822 +0200
-+++ b/other/pnmcolormap.c 2018-07-23 15:05:03.041265812 +0200
-@@ -840,6 +840,7 @@ colormapToSquare(struct pam * const pamP
+diff --git a/other/pnmcolormap.c b/other/pnmcolormap.c
+index f687f03..20cbfbd 100644
+--- a/other/pnmcolormap.c
++++ b/other/pnmcolormap.c
+@@ -840,6 +840,7 @@ colormapToSquare(struct pam * const pamP,
pamP->width = intsqrt;
- else
+ else
pamP->width = intsqrt + 1;
+ overflow_add(intsqrt, 1);
}
{
unsigned int const intQuotient = colormap.size / pamP->width;
-diff -urNp a/urt/rle_addhist.c b/urt/rle_addhist.c
---- a/urt/rle_addhist.c 2018-07-23 15:03:21.419486699 +0200
-+++ b/urt/rle_addhist.c 2018-07-23 15:05:03.072265745 +0200
+diff --git a/urt/Runput.c b/urt/Runput.c
+index 3bc562a..645a376 100644
+--- a/urt/Runput.c
++++ b/urt/Runput.c
+@@ -202,10 +202,11 @@ RunSetup(rle_hdr * the_hdr)
+ if ( the_hdr->background != 0 )
+ {
+ register int i;
+- register rle_pixel *background =
+- (rle_pixel *)malloc( (unsigned)(the_hdr->ncolors + 1) );
+- register int *bg_color;
+- /*
++ register rle_pixel *background;
++ register int *bg_color;
++
++ overflow_add(the_hdr->ncolors,1);
++ background = (rle_pixel *)malloc( (unsigned)(the_hdr->ncolors + 1) ); /*
+ * If even number of bg color bytes, put out one more to get to
+ * 16 bit boundary.
+ */
+@@ -224,7 +225,7 @@ RunSetup(rle_hdr * the_hdr)
+ /* Big-endian machines are harder */
+ register int i, nmap = (1 << the_hdr->cmaplen) *
+ the_hdr->ncmap;
+- register char *h_cmap = (char *)malloc( nmap * 2 );
++ register char *h_cmap = (char *)malloc2( nmap, 2 );
+ if ( h_cmap == NULL )
+ {
+ fprintf( stderr,
+diff --git a/urt/rle.h b/urt/rle.h
+index 0766d22..c80a5fa 100644
+--- a/urt/rle.h
++++ b/urt/rle.h
+@@ -160,6 +160,17 @@ rle_hdr /* End of typedef. */
+ */
+ extern rle_hdr rle_dflt_hdr;
+
++/*
++ * Provided by pm library
++ */
++
++extern void overflow_add(int, int);
++#define overflow2(a,b) __overflow2(a,b)
++extern void __overflow2(int, int);
++extern void overflow3(int, int, int);
++extern void *malloc2(int, int);
++extern void *malloc3(int, int, int);
++extern void *realloc2(void *, int, int);
+
+ /* Declare RLE library routines. */
+
+diff --git a/urt/rle_addhist.c b/urt/rle_addhist.c
+index b165175..e09ed94 100644
+--- a/urt/rle_addhist.c
++++ b/urt/rle_addhist.c
@@ -70,13 +70,18 @@ rle_addhist(char * argv[],
return;
@@ -1372,9 +2349,10 @@ diff -urNp a/urt/rle_addhist.c b/urt/rle_addhist.c
++length; /*Cater for the null. */
-diff -urNp a/urt/rle_getrow.c b/urt/rle_getrow.c
---- a/urt/rle_getrow.c 2018-07-23 15:03:21.418486701 +0200
-+++ b/urt/rle_getrow.c 2018-07-23 15:05:03.072265745 +0200
+diff --git a/urt/rle_getrow.c b/urt/rle_getrow.c
+index 679811c..cc1f5cb 100644
+--- a/urt/rle_getrow.c
++++ b/urt/rle_getrow.c
@@ -160,6 +160,7 @@ rle_get_setup(rle_hdr * const the_hdr) {
char * cp;
@@ -1383,30 +2361,10 @@ diff -urNp a/urt/rle_getrow.c b/urt/rle_getrow.c
evenlen = (comlen + 1) & ~1; /* make it even */
if (evenlen) {
MALLOCARRAY(comment_buf, evenlen);
-diff -urNp a/urt/rle.h b/urt/rle.h
---- a/urt/rle.h 2018-07-23 15:03:21.418486701 +0200
-+++ b/urt/rle.h 2018-07-23 15:05:03.072265745 +0200
-@@ -161,6 +161,17 @@ rle_hdr /* End of typedef. *
- */
- extern rle_hdr rle_dflt_hdr;
-
-+/*
-+ * Provided by pm library
-+ */
-+
-+extern void overflow_add(int, int);
-+#define overflow2(a,b) __overflow2(a,b)
-+extern void __overflow2(int, int);
-+extern void overflow3(int, int, int);
-+extern void *malloc2(int, int);
-+extern void *malloc3(int, int, int);
-+extern void *realloc2(void *, int, int);
-
- /* Declare RLE library routines. */
-
-diff -urNp a/urt/rle_hdr.c b/urt/rle_hdr.c
---- a/urt/rle_hdr.c 2018-07-23 15:03:21.418486701 +0200
-+++ b/urt/rle_hdr.c 2018-07-23 15:05:03.072265745 +0200
+diff --git a/urt/rle_hdr.c b/urt/rle_hdr.c
+index 1611324..7c9c010 100644
+--- a/urt/rle_hdr.c
++++ b/urt/rle_hdr.c
@@ -80,7 +80,10 @@ int img_num;
/* Fill in with copies of the strings. */
if ( the_hdr->cmd != pgmname )
@@ -1468,10 +2426,11 @@ diff -urNp a/urt/rle_hdr.c b/urt/rle_hdr.c
size *= sizeof(char *);
to_hdr->comments = (CONST_DECL char **)malloc( size );
RLE_CHECK_ALLOC( to_hdr->cmd, to_hdr->comments, "comments" );
-diff -urNp a/urt/rle_open_f.c b/urt/rle_open_f.c
---- a/urt/rle_open_f.c 2018-07-23 15:03:21.418486701 +0200
-+++ b/urt/rle_open_f.c 2018-07-23 15:05:03.072265745 +0200
-@@ -163,65 +163,7 @@ dealWithSubprocess(const char * const f
+diff --git a/urt/rle_open_f.c b/urt/rle_open_f.c
+index ae8548b..c2ef37d 100644
+--- a/urt/rle_open_f.c
++++ b/urt/rle_open_f.c
+@@ -163,65 +163,7 @@ dealWithSubprocess(const char * const file_name,
FILE ** const fpP,
bool * const noSubprocessP,
const char ** const errorP) {
@@ -1537,9 +2496,10 @@ diff -urNp a/urt/rle_open_f.c b/urt/rle_open_f.c
}
-diff -urNp a/urt/rle_putcom.c b/urt/rle_putcom.c
---- a/urt/rle_putcom.c 2018-07-23 15:03:21.418486701 +0200
-+++ b/urt/rle_putcom.c 2018-07-23 15:05:03.072265745 +0200
+diff --git a/urt/rle_putcom.c b/urt/rle_putcom.c
+index ab2eb20..ce83615 100644
+--- a/urt/rle_putcom.c
++++ b/urt/rle_putcom.c
@@ -98,12 +98,14 @@ rle_putcom(const char * const value,
const char * v;
const char ** old_comments;
@@ -1556,37 +2516,10 @@ diff -urNp a/urt/rle_putcom.c b/urt/rle_putcom.c
/* Not found */
/* Can't realloc because somebody else might be pointing to this
* comments block. Of course, if this were true, then the
-diff -urNp a/urt/Runput.c b/urt/Runput.c
---- a/urt/Runput.c 2018-07-23 15:03:21.418486701 +0200
-+++ b/urt/Runput.c 2018-07-23 15:05:03.072265745 +0200
-@@ -202,10 +202,11 @@ RunSetup(rle_hdr * the_hdr)
- if ( the_hdr->background != 0 )
- {
- register int i;
-- register rle_pixel *background =
-- (rle_pixel *)malloc( (unsigned)(the_hdr->ncolors + 1) );
-- register int *bg_color;
-- /*
-+ register rle_pixel *background;
-+ register int *bg_color;
-+
-+ overflow_add(the_hdr->ncolors,1);
-+ background = (rle_pixel *)malloc( (unsigned)(the_hdr->ncolors + 1) ); /*
- * If even number of bg color bytes, put out one more to get to
- * 16 bit boundary.
- */
-@@ -224,7 +225,7 @@ RunSetup(rle_hdr * the_hdr)
- /* Big-endian machines are harder */
- register int i, nmap = (1 << the_hdr->cmaplen) *
- the_hdr->ncmap;
-- register char *h_cmap = (char *)malloc( nmap * 2 );
-+ register char *h_cmap = (char *)malloc2( nmap, 2 );
- if ( h_cmap == NULL )
- {
- fprintf( stderr,
-diff -urNp a/urt/scanargs.c b/urt/scanargs.c
---- a/urt/scanargs.c 2018-07-23 15:03:21.418486701 +0200
-+++ b/urt/scanargs.c 2018-07-23 15:05:03.072265745 +0200
+diff --git a/urt/scanargs.c b/urt/scanargs.c
+index f3af334..5e114bb 100644
+--- a/urt/scanargs.c
++++ b/urt/scanargs.c
@@ -62,9 +62,8 @@ typedef int *ptr;
/*
* Storage allocation macros
diff --git a/source/l/netpbm/netpbm-userguide.patch b/source/l/netpbm/netpbm-userguide.patch
new file mode 100644
index 00000000..3efdb6f5
--- /dev/null
+++ b/source/l/netpbm/netpbm-userguide.patch
@@ -0,0 +1,9 @@
+diff --git a/userguide/pammixmulti.html b/userguide/pammixmulti.html
+index c5854c3..a18fa14 100755
+--- a/userguide/pammixmulti.html
++++ b/userguide/pammixmulti.html
+@@ -1,4 +1,3 @@
+-<?xml version="1.0"?>
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">
+ <html>
+ <head>
diff --git a/source/l/netpbm/netpbm.SlackBuild b/source/l/netpbm/netpbm.SlackBuild
index 3d08f1b0..72f7bd28 100755
--- a/source/l/netpbm/netpbm.SlackBuild
+++ b/source/l/netpbm/netpbm.SlackBuild
@@ -23,7 +23,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=netpbm
-VERSION=${VERSION:-10.84.02}
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
BUILD=${BUILD:-1}
# Automatically determine the architecture we're building on:
@@ -89,6 +89,8 @@ zcat $CWD/netpbm-cmuwtopbm.patch.gz | patch -p1 --verbose || exit 1
zcat $CWD/netpbm-pamtojpeg2k.patch.gz | patch -p1 --verbose || exit 1
zcat $CWD/netpbm-manfix.patch.gz | patch -p1 --verbose || exit 1
zcat $CWD/netpbm-manual-pages.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/netpbm-libdir-so.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/netpbm-userguide.patch.gz | patch -p1 --verbose || exit 1
# Send blank lines to "configure" to just take defaults:
./configure << EOF
@@ -153,6 +155,9 @@ find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
rm --verbose * 2> /dev/null
)
+# Don't package the static library:
+rm -f $PKG/usr/lib${LIBDIRSUFFIX}/libnetpbm.a
+
# Create and install man pages for existing utilities:
( cd userguide
for i in *.html ; do
diff --git a/source/n/net-tools/net-tools.SlackBuild b/source/n/net-tools/net-tools.SlackBuild
index c4a15f18..4fed32b1 100755
--- a/source/n/net-tools/net-tools.SlackBuild
+++ b/source/n/net-tools/net-tools.SlackBuild
@@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=net-tools
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-1}
# Automatically determine the architecture we're building on:
if [ -z "$ARCH" ]; then
diff --git a/source/n/tin/tin.url b/source/n/tin/tin.url
new file mode 100644
index 00000000..67d4f3c0
--- /dev/null
+++ b/source/n/tin/tin.url
@@ -0,0 +1 @@
+ftp://ftp.tin.org:/pub/news/clients/tin