package init

This commit is contained in:
香帅醉花香 2019-11-29 19:22:46 +08:00
commit 4d7edb4ce3
21 changed files with 3933 additions and 0 deletions

BIN
netpbm-10.83.01.tar.xz Normal file

Binary file not shown.

View File

@ -0,0 +1,17 @@
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
ghostscriptProg, arg0,
deviceopt, outfileopt, gopt, ropt, textalphabitsopt,
"-q", "-dNOPAUSE",
- "-dSAFER", "-");
+ "-dPARANOIDSAFER", "-");
}
execl(ghostscriptProg, arg0, deviceopt, outfileopt, gopt, ropt, "-q",
- "-dNOPAUSE", "-dSAFER", "-", NULL);
+ "-dNOPAUSE", "-dPARANOIDSAFER", "-", NULL);
pm_error("execl() of Ghostscript ('%s') failed, errno=%d (%s)",
ghostscriptProg, errno, strerror(errno));

View File

@ -0,0 +1,26 @@
diff -urNp old/converter/other/svgtopam.c new/converter/other/svgtopam.c
--- old/converter/other/svgtopam.c 2017-02-08 12:11:02.593690917 +0100
+++ new/converter/other/svgtopam.c 2017-02-08 13:49:38.319029371 +0100
@@ -771,12 +771,17 @@ createCanvas(unsigned int const width,
MALLOCVAR_NOFAIL(canvasP);
- canvasP->width = width;
- canvasP->height = height;
- canvasP->pixels = ppm_allocarray(width, height);
- canvasP->maxval = maxval;
+ if(canvasP != NULL){
+ canvasP->width = width;
+ canvasP->height = height;
+ canvasP->pixels = ppm_allocarray(width, height);
+ canvasP->maxval = maxval;
+
+ *canvasPP = canvasP;
+ } else {
+ pm_error("can't allocate memory for canvas");
+ }
- *canvasPP = canvasP;
}

11
netpbm-bmptopnm.patch Normal file
View File

@ -0,0 +1,11 @@
--- 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,
bool const verbose) {
- xel * colormap; /* malloc'ed */
+ xel * colormap = NULL; /* malloc'ed */
unsigned int pos;
/* Current byte position in the BMP file */

21
netpbm-cmuwtopbm.patch Normal file
View File

@ -0,0 +1,21 @@
diff -up netpbm-10.61.01/converter/pbm/cmuwmtopbm.c.cmuwtopbmfix netpbm-10.61.01/converter/pbm/cmuwmtopbm.c
--- netpbm-10.61.01/converter/pbm/cmuwmtopbm.c.cmuwtopbmfix 2013-01-02 18:39:57.000000000 +0100
+++ netpbm-10.61.01/converter/pbm/cmuwmtopbm.c 2013-01-03 05:41:36.024984241 +0100
@@ -18,7 +18,7 @@
This program does not check the pad bits at the end of each row.
*/
-
+#include <stdint.h>
#include "pbm.h"
/*--------------------------
@@ -42,7 +42,7 @@ readCmuwmHeader(FILE * const ifP
"CMU window manager header EOF / read error";
uint32_t const cmuwmMagic = 0xf10040bb;
- long l;
+ uint32_t l;
short s;
int rc;

124
netpbm-docfix.patch Normal file
View File

@ -0,0 +1,124 @@
diff -urNp old/userguide/cameratopam.html new/userguide/cameratopam.html
--- old/userguide/cameratopam.html 2017-09-05 09:05:16.000000000 +0200
+++ new/userguide/cameratopam.html 2017-09-05 13:16:33.622352535 +0200
@@ -25,10 +25,10 @@ cameratopam - convert raw camera image t
[<b>-balance_camera</b>]
[<b>-red_scale=</b><i>float</i>]
[<b>-blue_scale=</b><i>float</i>]
-[<b>-brightness=</b><i>fraction</i>]
+[<b>-bright=</b><i>fraction</i>]
[<b>-no_clip_color</b>]
[<b>-rgb</b>]
-[<b>-secondary</b>]
+[<b>-use_secondary</b>]
[<b>-linear</b>]
[<b>-verbose</b>]
@@ -106,7 +106,7 @@ the default.
<dd>Further adjust the color balance by multiplying the red and blue
channels by these values. Both default to 1.0.
-<dt><b>-brightness=</b><i>float</i>
+<dt><b>-bright=</b><i>float</i>
<dd>Change the output brightness. Default is 1.0.
@@ -114,14 +114,14 @@ channels by these values. Both default
<dd>By default, <b>cameratoapm</b> clips all colors to prevent pink
hues in the highlights. Combine this option with
-<b>-brightness=0.25</b> to leave the image data completely unclipped.
+<b>-bright=0.25</b> to leave the image data completely unclipped.
<dt><b>-rgb</b>
<dd>Write raw camera colors to the output file. By default,
<b>cameratoapm</b> converts to sRGB colorspace.
-<dt><b>-secondary</b>
+<dt><b>-use_secondary</b>
<dd>For cameras based on the Fuji Super CCD SR, this option causes
<b>cameratopam</b> to use the secondary sensors, in effect
diff -urNp old/userguide/fiascotopnm.html new/userguide/fiascotopnm.html
--- old/userguide/fiascotopnm.html 2017-09-05 09:05:16.000000000 +0200
+++ new/userguide/fiascotopnm.html 2017-09-05 13:32:51.810458154 +0200
@@ -51,7 +51,7 @@ the output file(s) are written to the fi
this list. Otherwise, the current directory is used to store the
output file(s).
-<DT><B>-z</B>, <B>--fast</B>
+<DT><B>-r</B>, <B>--fast</B>
<DD>
Decompress images in the 4:2:0 format; i.e., each chroma channel is
decompressed to an image of halved width and height. Use this option
@@ -83,7 +83,7 @@ given amount <I>N</I>. <I>N</I> is 1 (mi
is 70. When <I>N</I>=0, then the smoothing amount specified in the
FIASCO file is used (defined by the FIASCO coder).
-<DT><B>-F</B> <I>N</I>, <B>--fps=</B><I>N</I>
+<DT><B>-F</B> <I>N</I>, <B>--framerate=</B><I>N</I>
<DD>
Set number of frames per second to <I>N</I>. When using this option,
the frame rate specified in the FIASCO file is overridden.
@@ -113,13 +113,8 @@ following methods (in the specified orde
<LI>--config=<I>name</I>
</OL>
-<DT><B>-h</B>, <B>--info</B>
-<DD>
-Print brief help, then exit.
-
-<DT><B>-H</B>, <B>--help</B>
-<DD>
-Print detailed help, then exit.
+<DT><B>-h</B>, <B>--help</B>
+Print help, then exit.
</DL>
diff -urNp old/userguide/pamperspective.html new/userguide/pamperspective.html
--- old/userguide/pamperspective.html 2017-09-05 09:05:16.000000000 +0200
+++ new/userguide/pamperspective.html 2017-09-05 13:23:15.869997105 +0200
@@ -220,7 +220,7 @@ default rectangle as the "frame." The vi
a rectangle the axes of which are parallel to those of the frame.
<p>The frame options are additive. All the parts of the image
-specified by either margin options, <b>--include_frame</b>, or
+specified by either margin options, <b>--frame_include</b>, or
<b>--include</b> (or their defaults) are in the visible part. The
visible part is the smallest possible rectangle that contains the
parts specified those three ways.
diff -urNp old/converter/pbm/pbmtoepson.c new/converter/pbm/pbmtoepson.c
--- old/converter/pbm/pbmtoepson.c 2018-01-04 14:26:14.740024843 +0100
+++ new/converter/pbm/pbmtoepson.c 2018-01-04 14:28:47.970518766 +0100
@@ -75,7 +75,7 @@ parseCommandLine(int ar
&dpiSpec, 0);
OPTENT3(0, "adjacent", OPT_FLAG, NULL,
&adjacentSpec, 0);
- OPTENT3(0, "nonadjacent", OPT_FLAG, NULL,
+ OPTENT3(0, "noadjacent", OPT_FLAG, NULL,
&nonadjacentSpec, 0);
opt.opt_table = option_def;
diff -urNp old/userguide/pbmtoepson.html new/userguide/pbmtoepson.html
--- old/userguide/pbmtoepson.html 2018-01-04 14:26:14.586024719 +0100
+++ new/userguide/pbmtoepson.html 2018-01-04 14:27:56.466847698 +0100
@@ -18,7 +18,7 @@ pbmtoepson - convert a PBM image into Ep
[<b>-dpi=</b><i>n</i>]
[<b>-protocol=</b>{<b>escp9</b>|<B>escp</B>}]
[<b>-adjacent</b>]
-[<b>-nonadjacent</b>]
+[<b>-noadjacent</b>]
[<I>pbmfile</I>]
@@ -74,7 +74,7 @@ print density for you consistent with yo
<p>This option was new in Netpbm 10.23 (July 2004).
<dt><b>-adjacent</b>
-<dt><b>-nonadjacent</b>
+<dt><b>-noadjacent</b>
<dd>These options determine whether the output uses "adjacent dot
printing" or not, whatever that is.

View File

@ -0,0 +1,12 @@
diff -up netpbm-10.47.09/converter/other/fiasco/lib/image.h.fiasco-overflow netpbm-10.47.09/converter/other/fiasco/lib/image.h
--- netpbm-10.47.09/converter/other/fiasco/lib/image.h.fiasco-overflow 2010-01-25 09:00:48.000000000 +0100
+++ netpbm-10.47.09/converter/other/fiasco/lib/image.h 2010-01-27 10:29:48.000000000 +0100
@@ -29,7 +29,7 @@ typedef struct image
* Image data
*/
{
- char id [7];
+ char id [8];
unsigned reference_count;
unsigned width; /* Width of the image */
unsigned height; /* Height of the image */

22
netpbm-gcc4.patch Normal file
View File

@ -0,0 +1,22 @@
diff -up netpbm-10.58.01/lib/pm.h.gcc4 netpbm-10.58.01/lib/pm.h
--- netpbm-10.58.01/lib/pm.h.gcc4 2012-04-09 19:08:08.885137097 +0200
+++ netpbm-10.58.01/lib/pm.h 2012-04-09 19:08:08.894136984 +0200
@@ -18,6 +18,7 @@
#include <sys/types.h>
#include <ctype.h>
#include <stdio.h>
+#include <string.h>
#include <errno.h>
#include <setjmp.h>
#include <sys/stat.h>
diff -up netpbm-10.58.01/urt/rle.h.gcc4 netpbm-10.58.01/urt/rle.h
--- netpbm-10.58.01/urt/rle.h.gcc4 2012-04-09 19:08:08.000000000 +0200
+++ netpbm-10.58.01/urt/rle.h 2012-04-09 19:08:39.137758887 +0200
@@ -34,6 +34,7 @@
#define RLE_H
#include <stdio.h> /* Declare FILE. */
+#include <string.h>
enum rle_dispatch {
NO_DISPATCH = -1,

13
netpbm-glibc.patch Normal file
View File

@ -0,0 +1,13 @@
--- netpbm-10.35/converter/other/pnmtotiffcmyk.c.glibc 2006-09-18 12:20:06.000000000 +0200
+++ netpbm-10.35/converter/other/pnmtotiffcmyk.c 2007-08-23 09:18:30.000000000 +0200
@@ -974,8 +974,8 @@ int main( int argc, char **argv ) {
if ( (err = parseOpts( argc, argv, rt )) ) goto exit ;
- if ( (err = rt->in->open( rt->in, rt )) ) goto exit ;
- if ( (err = rt->out->open( rt->out, rt )) ) goto exit ;
+ if ( (err = (rt->in->open)( rt->in, rt )) ) goto exit ;
+ if ( (err = (rt->out->open)( rt->out, rt )) ) goto exit ;
while ( rt->in->hasMore( rt->in ) ) {
if ( (err = rt->in->next( rt->in, &r, &g, &b )) ) goto exit ;

184
netpbm-manfix.patch Normal file
View File

@ -0,0 +1,184 @@
diff -urNp old/userguide/avstopam.html new/userguide/avstopam.html
--- old/userguide/avstopam.html 2017-09-05 13:58:08.338559550 +0200
+++ new/userguide/avstopam.html 2017-09-05 14:00:27.371039472 +0200
@@ -1,8 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<html>
<head>
<title>Avstopam User Manual</title>
-<meta http-equiv="content-type" content="text/html; charset=us-ascii" />
</head>
<body>
diff -urNp old/userguide/escp2topbm.html new/userguide/escp2topbm.html
--- old/userguide/escp2topbm.html 2017-09-05 13:58:08.335559561 +0200
+++ new/userguide/escp2topbm.html 2017-09-05 14:01:20.226842694 +0200
@@ -6,6 +6,7 @@ Updated: 14 July 2015
<BR>
<A HREF="#index">Table Of Contents</A>
+<H2>NAME</H2>
escp2topbm - convert an ESC/P2 printer file to a PBM image
<H2 id="synopsis">SYNOPSIS</H2>
diff -urNp old/userguide/faxformat.html new/userguide/faxformat.html
--- old/userguide/faxformat.html 2017-09-05 13:58:08.337559553 +0200
+++ new/userguide/faxformat.html 2017-09-05 14:02:33.322571279 +0200
@@ -5,10 +5,11 @@
Updated: 03 December 2008
<BR>
+<H2>SYNOPSIS</H2>
<p>This page, part of the <a href="index.html">Netpbm user's guide</a>,
describes FAX formats in relation to Netpbm facilities.
-
+<H2>DESCRIPTION</H2>
<p>The ITU (formerly CCITT) publishes standards for operation of fax machines
(the idea is to provide a way to be sure that a fax machine is able to receive
a fax sent by another). These standards incidentally specify graphics file
diff -urNp old/userguide/pampaintspill.html new/userguide/pampaintspill.html
--- old/userguide/pampaintspill.html 2017-09-05 13:58:08.338559550 +0200
+++ new/userguide/pampaintspill.html 2017-09-05 14:03:32.625351620 +0200
@@ -1,8 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html>
<head>
<title>Pampaintspill User Manual</title>
-<meta http-equiv="content-type" content="text/html; charset=us-ascii" />
</head>
<body>
@@ -11,6 +10,7 @@
<p><a href="#index">Table Of Contents</a></p>
+<H2>NAME</H2>
<p>pampaintspill - smoothly spill colors into the background</p>
<h2><a name="synopsis">SYNOPSIS</a></h2>
diff -urNp old/userguide/pamrecolor.html new/userguide/pamrecolor.html
--- old/userguide/pamrecolor.html 2017-09-05 13:58:08.336559557 +0200
+++ new/userguide/pamrecolor.html 2017-09-05 14:04:34.714122098 +0200
@@ -1,8 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>Pamrecolor User Manual</title>
-<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
</head>
<body>
@@ -11,7 +10,7 @@
<p>Updated: 31 July 2010</p>
-<p><a href="#contents">Table Of Contents</a></p>
+<p><a href="#index">Table Of Contents</a></p>
<h2 id="name">NAME</h2>
diff -urNp old/userguide/pamsistoaglyph.html new/userguide/pamsistoaglyph.html
--- old/userguide/pamsistoaglyph.html 2017-09-05 13:58:08.334559565 +0200
+++ new/userguide/pamsistoaglyph.html 2017-09-05 14:05:25.865944327 +0200
@@ -1,8 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<html xmlns="http://www.w3.org/1999/xhtml">
+<html>
<head>
<title>Pamsistoaglyph User Manual</title>
-<meta http-equiv="content-type" content="text/html; charset=us-ascii" />
</head>
<body>
diff -urNp old/userguide/pamstereogram.html new/userguide/pamstereogram.html
--- old/userguide/pamstereogram.html 2017-09-05 13:58:08.337559553 +0200
+++ new/userguide/pamstereogram.html 2017-09-05 14:13:28.523959069 +0200
@@ -1,5 +1,5 @@
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<html>
<head>
<title>Pamstereogram User Manual</title>
</head>
@@ -10,7 +10,7 @@
<p>Updated: 19 June 2015</p>
-<p><a href="#contents">Table Of Contents</a></p>
+<p><a href="#index">Table Of Contents</a></p>
<h2 id="name">NAME</h2>
diff -urNp old/userguide/pamtoavs.html new/userguide/pamtoavs.html
--- old/userguide/pamtoavs.html 2017-09-05 13:58:08.329559583 +0200
+++ new/userguide/pamtoavs.html 2017-09-05 14:05:49.299863901 +0200
@@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<html>
<head>
<title>Pamtoavs User Manual</title>
<meta http-equiv="content-type" content="text/html; charset=us-ascii" />
diff -urNp old/userguide/pamtooctaveimg.html new/userguide/pamtooctaveimg.html
--- old/userguide/pamtooctaveimg.html 2017-09-05 13:58:08.335559561 +0200
+++ new/userguide/pamtooctaveimg.html 2017-09-05 14:06:21.825752356 +0200
@@ -1,8 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<html>
<head>
<title>Pamtooctaveimg User Manual</title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
diff -urNp old/userguide/pnmflip.html new/userguide/pnmflip.html
--- old/userguide/pnmflip.html 2017-09-05 13:58:08.336559557 +0200
+++ new/userguide/pnmflip.html 2017-09-05 14:07:15.065963977 +0200
@@ -4,9 +4,11 @@
<BODY>
<H1>pnmflip</H1>
<BR>
+<H2>NAME</H2>
<p><b>pnmflip</b> was replaced in Netpbm 10.13 (December 2002) by
<b><a href="pamflip.html">pamflip</a></b>.
+<H2>DESCRIPTION</H2>
<P><B>pamflip</b> is mostly backward compatible with <b>pnmflip</b>,
but works on PAM images too.
diff -urNp old/userguide/pnmmercator.html new/userguide/pnmmercator.html
--- old/userguide/pnmmercator.html 2017-09-05 13:58:08.334559565 +0200
+++ new/userguide/pnmmercator.html 2017-09-05 14:08:08.305214742 +0200
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
-<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>PnmMercator User Manual</title>
</head>
<body>
diff -urNp old/userguide/ppmtogif.html new/userguide/ppmtogif.html
--- old/userguide/ppmtogif.html 2017-09-05 13:58:08.337559553 +0200
+++ new/userguide/ppmtogif.html 2017-09-05 14:09:51.450583126 +0200
@@ -4,11 +4,14 @@
<BODY>
<H1>ppmtogif</H1>
<BR>
+<H2>NAME</H2>
<p><b>ppmtogif</b> was replaced in Netpbm 10.37 (December 2006) by
<b><a href="pamtogif.html">pamtogif</a></b>.
+<H2>SYNOPSIS</H2>
<P><B>pamtogif</b> is mostly backward compatible with <b>ppmtogif</b>.
+<H2>DESCRIPTION</H2>
<P>One way <b>pamtogif</b> is not backward compatible with <b>ppmtogif</b>
is that to specify a transparency (alpha) mask with <b>ppmtogif</b>, you
supply the transparency as a separate pseudo-PGM image and use the

1343
netpbm-manual-pages.patch Normal file

File diff suppressed because it is too large Load Diff

11
netpbm-multilib.patch Normal file
View File

@ -0,0 +1,11 @@
diff -up netpbm-10.47.04/buildtools/endiangen.c.multilib netpbm-10.47.04/buildtools/endiangen.c
--- netpbm-10.47.04/buildtools/endiangen.c.multilib 2009-10-21 13:38:54.000000000 +0200
+++ netpbm-10.47.04/buildtools/endiangen.c 2009-10-21 14:35:58.000000000 +0200
@@ -87,7 +87,6 @@ main(int argc, char **argv) {
byteOrder() == ENDIAN_LITTLE ? "LITTLE_ENDIAN" : "BIG_ENDIAN");
printf("#endif\n");
printf("\n");
- printf("#define BITS_PER_LONG %u\n", bitsPerLong());
return 0;
}

13
netpbm-noppmtompeg.patch Normal file
View File

@ -0,0 +1,13 @@
diff --git a/converter/ppm/Makefile b/converter/ppm/Makefile
index b97349d..f68170f 100644
--- a/converter/ppm/Makefile
+++ b/converter/ppm/Makefile
@@ -7,7 +7,7 @@ VPATH=.:$(SRCDIR)/$(SUBDIR)
include $(BUILDDIR)/config.mk
-SUBDIRS = hpcdtoppm ppmtompeg
+SUBDIRS = hpcdtoppm
PORTBINARIES = 411toppm eyuvtoppm gouldtoppm ilbmtoppm imgtoppm \
leaftoppm mtvtoppm neotoppm \

11
netpbm-pamtojpeg2k.patch Normal file
View File

@ -0,0 +1,11 @@
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)
pm_close(ifP);
- pm_close(stdout);
-
return 0;
}

57
netpbm-ppmfadeusage.patch Normal file
View File

@ -0,0 +1,57 @@
diff -urNp old/editor/ppmfade new/editor/ppmfade
--- old/editor/ppmfade 2017-11-01 11:47:49.869611402 +0100
+++ new/editor/ppmfade 2017-11-01 11:53:25.524973342 +0100
@@ -84,7 +84,7 @@ for ($n = 0; $n < @ARGV; $n++) {
if (-e $first_file) {
} else {
print "I can't find first file '$first_file'\n";
- exit 20;
+ exit 1;
}
} elsif ($ARGV[$n] eq "-l") {
$n++;
@@ -92,7 +92,7 @@ for ($n = 0; $n < @ARGV; $n++) {
if (-e $last_file) {
} else {
print "I can't find last file '$last_file'\n";
- exit 20;
+ exit 1;
}
} elsif ($ARGV[$n] eq "-base") {
$n++;
@@ -113,9 +113,12 @@ for ($n = 0; $n < @ARGV; $n++) {
$mode = $BLOCK;
} elsif ("$ARGV[$n]" eq "-mix") {
$mode = $MIX;
+ } elsif ($ARGV[$n] eq "-help" || $ARGV[$n] eq "--help" || $ARGV[$n] eq "-h") {
+ print "ppmfade: Use 'man ppmfade' for help.\n";
+ exit 1;
} else {
print "Unknown argument: $ARGV[$n]\n";
- exit 100;
+ exit 1;
}
}
#
@@ -134,18 +137,18 @@ if ($first_file ne "undefined") {
$width = $1; $height = $2;
} else {
print("Unrecognized results from pnmfile on $first_file.\n");
- exit(50);
+ exit 1;
}
} elsif ($last_file ne "undefined") {
if ((`pnmfile $last_file` =~ m{\b(\d+)\sby\s(\d+)} )) {
$width = $1; $height = $2;
} else {
print("Unrecognized results from pnmfile on $first_file.\n");
- exit(50);
+ exit 1;
}
} else {
print("ppmfade: You must specify -f or -l (or both)\n");
- exit(90);
+ exit 1;
}
print("Frames are " . $width . "W x " . $height . "H\n");

9
netpbm-python3.patch Normal file
View File

@ -0,0 +1,9 @@
diff -urNp old/buildtools/makeman new/buildtools/makeman
--- old/buildtools/makeman 2018-01-03 12:15:55.000000000 +0100
+++ new/buildtools/makeman 2018-02-26 14:18:39.993760106 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
#
# makeman -- compile netpbm's stereotyped HTML to troff markup
#

1601
netpbm-security-code.patch Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,267 @@
diff --git a/editor/ppmfade b/editor/ppmfade
index dcd7bf2..5091651 100755
--- a/editor/ppmfade
+++ b/editor/ppmfade
@@ -40,6 +40,7 @@ exec perl -w -x -S -- "$0" "$@"
#
##############################################################################
use strict;
+use File::Temp "tempdir";
sub doVersionHack($) {
my ($argvR) = @_;
@@ -149,20 +150,26 @@ if ($first_file ne "undefined") {
print("Frames are " . $width . "W x " . $height . "H\n");
+#
+# We create a tmp-directory right here
+#
+my $tmpdir = tempdir("ppmfade.XXXXXX", CLEANUP => 1);
+
+
if ($first_file eq "undefined") {
print "Fading from black to ";
- system("ppmmake \\#000 $width $height >junk1$$.ppm");
+ system("ppmmake \\#000 $width $height >$tmpdir/junk1$$.ppm");
} else {
print "Fading from $first_file to ";
- system("cp", $first_file, "junk1$$.ppm");
+ system("cp", $first_file, "$tmpdir/junk1$$.ppm");
}
if ($last_file eq "undefined") {
print "black.\n";
- system("ppmmake \\#000 $width $height >junk2$$.ppm");
+ system("ppmmake \\#000 $width $height >$tmpdir/junk2$$.ppm");
} else {
print "$last_file\n";
- system("cp", $last_file, "junk2$$.ppm");
+ system("cp", $last_file, "$tmpdir/junk2$$.ppm");
}
#
@@ -170,14 +177,14 @@ if ($last_file eq "undefined") {
#
# Here's what our temporary files are:
-# junk1$$.ppm: The original (fade-from) image
-# junk2$$.ppm: The target (fade-from) image
-# junk3$$.ppm: The frame of the fade for the current iteration of the
-# the for loop.
-# junk1a$$.ppm: If the fade involves a ppmmix sequence from one intermediate
-# image to another, this is the first frame of that
-# sequence.
-# junk2a$$.ppm: This is the last frame of the above-mentioned ppmmix sequence
+# $tmpdir/junk1$$.ppm: The original (fade-from) image
+# $tmpdir/junk2$$.ppm: The target (fade-from) image
+# $tmpdir/junk3$$.ppm: The frame of the fade for the current iteration of the
+# the for loop.
+# $tmpdir/junk1a$$.ppm: If the fade involves a ppmmix sequence from one intermediate
+# image to another, this is the first frame of that
+# sequence.
+# $tmpdir/junk2a$$.ppm: This is the last frame of the above-mentioned ppmmix sequence
my $i; # Frame number
for ($i = 1; $i <= $nframes; $i++) {
@@ -185,147 +192,147 @@ for ($i = 1; $i <= $nframes; $i++) {
if ($mode eq $SPREAD) {
if ($i <= 10) {
my $n = $spline20[$i] * 100;
- system("ppmspread $n junk1$$.ppm >junk3$$.ppm");
+ system("ppmspread $n $tmpdir/junk1$$.ppm >$tmpdir/junk3$$.ppm");
} elsif ($i <= 20) {
my $n;
$n = $spline20[$i] * 100;
- system("ppmspread $n junk1$$.ppm >junk1a$$.ppm");
+ system("ppmspread $n $tmpdir/junk1$$.ppm >$tmpdir/junk1a$$.ppm");
$n = (1-$spline20[$i-10]) * 100;
- system("ppmspread $n junk2$$.ppm >junk2a$$.ppm");
+ system("ppmspread $n $tmpdir/junk2$$.ppm >$tmpdir/junk2a$$.ppm");
$n = $spline10[$i-10];
- system("ppmmix $n junk1a$$.ppm junk2a$$.ppm >junk3$$.ppm");
+ system("ppmmix $n $tmpdir/junk1a$$.ppm $tmpdir/junk2a$$.ppm >$tmpdir/junk3$$.ppm");
} else {
my $n = (1-$spline20[$i-10])*100;
- system("ppmspread $n junk2$$.ppm >junk3$$.ppm");
+ system("ppmspread $n $tmpdir/junk2$$.ppm >$tmpdir/junk3$$.ppm");
}
} elsif ($mode eq $SHIFT) {
if ($i <= 10) {
my $n = $spline20[$i] * 100;
- system("ppmshift $n junk1$$.ppm >junk3$$.ppm");
+ system("ppmshift $n $tmpdir/junk1$$.ppm >$tmpdir/junk3$$.ppm");
} elsif ($i <= 20) {
my $n;
$n = $spline20[$i] * 100;
- system("ppmshift $n junk1$$.ppm >junk1a$$.ppm");
+ system("ppmshift $n $tmpdir/junk1$$.ppm >$tmpdir/junk1a$$.ppm");
$n = (1-$spline20[$i-10])*100;
- system("ppmshift $n junk2$$.ppm >junk2a$$.ppm");
+ system("ppmshift $n $tmpdir/junk2$$.ppm >$tmpdir/junk2a$$.ppm");
$n = $spline10[$i-10];
- system("ppmmix $n junk1a$$.ppm junk2a$$.ppm >junk3$$.ppm");
+ system("ppmmix $n $tmpdir/junk1a$$.ppm $tmpdir/junk2a$$.ppm >$tmpdir/junk3$$.ppm");
} else {
my $n = (1-$spline20[$i-10]) * 100;
- system("ppmshift $n junk2$$.ppm >junk3$$.ppm");
+ system("ppmshift $n $tmpdir/junk2$$.ppm >$tmpdir/junk3$$.ppm");
}
} elsif ($mode eq $RELIEF) {
if ($i == 1) {
- system("ppmrelief junk1$$.ppm >junk1r$$.ppm");
+ system("ppmrelief $tmpdir/junk1$$.ppm >$tmpdir/junk1r$$.ppm");
}
if ($i <= 10) {
my $n = $spline10[$i];
- system("ppmmix $n junk1$$.ppm junk1r$$.ppm >junk3$$.ppm");
+ system("ppmmix $n $tmpdir/junk1$$.ppm $tmpdir/junk1r$$.ppm >$tmpdir/junk3$$.ppm");
} elsif ($i <= 20) {
my $n = $spline10[$i-10];
- system("ppmmix $n junk1r$$.ppm junk2r$$.ppm >junk3$$.ppm");
+ system("ppmmix $n $tmpdir/junk1r$$.ppm $tmpdir/junk2r$$.ppm >$tmpdir/junk3$$.ppm");
} else {
my $n = $spline10[$i-20];
- system("ppmmix $n junk2r$$.ppm junk2$$.ppm >junk3$$.ppm");
+ system("ppmmix $n $tmpdir/junk2r$$.ppm $tmpdir/junk2$$.ppm >$tmpdir/junk3$$.ppm");
}
if ($i == 10) {
- system("ppmrelief junk2$$.ppm >junk2r$$.ppm");
+ system("ppmrelief $tmpdir/junk2$$.ppm >$tmpdir/junk2r$$.ppm");
}
} elsif ($mode eq $OIL) {
if ($i == 1) {
- system("ppmtopgm junk1$$.ppm | pgmoil >junko$$.ppm");
- system("rgb3toppm junko$$.ppm junko$$.ppm junko$$.ppm " .
- ">junk1o$$.ppm");
+ system("ppmtopgm $tmpdir/junk1$$.ppm | pgmoil >$tmpdir/junko$$.ppm");
+ system("rgb3toppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm " .
+ ">$tmpdir/junk1o$$.ppm");
}
if ($i <= 10) {
my $n = $spline10[$i];
- system("ppmmix $n junk1$$.ppm junk1o$$.ppm >junk3$$.ppm");
+ system("ppmmix $n $tmpdir/junk1$$.ppm $tmpdir/junk1o$$.ppm >$tmpdir/junk3$$.ppm");
} elsif ($i <= 20) {
my $n = $spline10[$i-10];
- system("ppmmix $n junk1o$$.ppm junk2o$$.ppm >junk3$$.ppm");
+ system("ppmmix $n $tmpdir/junk1o$$.ppm $tmpdir/junk2o$$.ppm >$tmpdir/junk3$$.ppm");
} else {
my $n = $spline10[$i-20];
- system("ppmmix $n junk2o$$.ppm junk2$$.ppm >junk3$$.ppm");
+ system("ppmmix $n $tmpdir/junk2o$$.ppm $tmpdir/junk2$$.ppm >$tmpdir/junk3$$.ppm");
}
if ($i == 10) {
- system("ppmtopgm junk2$$.ppm | pgmoil >junko$$.ppm");
- system("rgb3toppm junko$$.ppm junko$$.ppm junko$$.ppm " .
- ">junk2o$$.ppm");
+ system("ppmtopgm $tmpdir/junk2$$.ppm | pgmoil >$tmpdir/junko$$.ppm");
+ system("rgb3toppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm " .
+ ">$tmpdir/junk2o$$.ppm");
}
} elsif ($mode eq $EDGE) {
if ($i == 1) {
- system("ppmtopgm junk1$$.ppm | pgmedge >junko$$.ppm");
- system("rgb3toppm junko$$.ppm junko$$.ppm junko$$.ppm " .
- ">junk1o$$.ppm");
+ system("ppmtopgm $tmpdir/junk1$$.ppm | pgmedge >$tmpdir/junko$$.ppm");
+ system("rgb3toppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm " .
+ ">$tmpdir/junk1o$$.ppm");
}
if ($i <= 10) {
my $n = $spline10[$i];
- system("ppmmix $n junk1$$.ppm junk1o$$.ppm >junk3$$.ppm");
+ system("ppmmix $n $tmpdir/junk1$$.ppm $tmpdir/junk1o$$.ppm >$tmpdir/junk3$$.ppm");
} elsif ($i <= 20) {
my $n = $spline10[$i-10];
- system("ppmmix $n junk1o$$.ppm junk2o$$.ppm >junk3$$.ppm");
+ system("ppmmix $n $tmpdir/junk1o$$.ppm $tmpdir/junk2o$$.ppm >$tmpdir/junk3$$.ppm");
} else {
my $n = $spline10[$i-20];
- system("ppmmix $n junk2o$$.ppm junk2$$.ppm >junk3$$.ppm");
+ system("ppmmix $n $tmpdir/junk2o$$.ppm $tmpdir/junk2$$.ppm >$tmpdir/junk3$$.ppm");
}
if ($i == 10) {
- system("ppmtopgm junk2$$.ppm | pgmedge >junko$$.ppm");
- system("rgb3toppm junko$$.ppm junko$$.ppm junko$$.ppm " .
- ">junk2o$$.ppm");
+ system("ppmtopgm $tmpdir/junk2$$.ppm | pgmedge >$tmpdir/junko$$.ppm");
+ system("rgb3toppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm " .
+ ">$tmpdir/junk2o$$.ppm");
}
} elsif ($mode eq $BENTLEY) {
if ($i == 1) {
- system("ppmtopgm junk1$$.ppm | pgmbentley >junko$$.ppm");
- system("rgb3toppm junko$$.ppm junko$$.ppm junko$$.ppm " .
- ">junk1o$$.ppm");
+ system("ppmtopgm $tmpdir/junk1$$.ppm | pgmbentley >$tmpdir/junko$$.ppm");
+ system("rgb3toppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm " .
+ ">$tmpdir/junk1o$$.ppm");
}
if ($i <= 10) {
my $n = $spline10[$i];
- system("ppmmix $n junk1$$.ppm junk1o$$.ppm >junk3$$.ppm");
+ system("ppmmix $n $tmpdir/junk1$$.ppm $tmpdir/junk1o$$.ppm >$tmpdir/junk3$$.ppm");
} elsif ($i <= 20) {
my $n = $spline10[$i-10];
- system("ppmmix $n junk1o$$.ppm junk2o$$.ppm >junk3$$.ppm");
+ system("ppmmix $n $tmpdir/junk1o$$.ppm $tmpdir/junk2o$$.ppm >$tmpdir/junk3$$.ppm");
} else {
my $n = $spline10[$i-20];
- system("ppmmix $n junk2o$$.ppm junk2$$.ppm >junk3$$.ppm");
+ system("ppmmix $n $tmpdir/junk2o$$.ppm $tmpdir/junk2$$.ppm >$tmpdir/junk3$$.ppm");
}
if ($i == 10) {
- system("ppmtopgm junk2$$.ppm | pgmbentley >junko$$.ppm");
- system("rgb3toppm junko$$.ppm junko$$.ppm junko$$.ppm " .
- ">junk2o$$.ppm");
+ system("ppmtopgm $tmpdir/junk2$$.ppm | pgmbentley >$tmpdir/junko$$.ppm");
+ system("rgb3toppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm $tmpdir/junko$$.ppm " .
+ ">$tmpdir/junk2o$$.ppm");
}
} elsif ($mode eq $BLOCK) {
if ($i <= 10) {
my $n = 1 - 1.9*$spline20[$i];
- system("pamscale $n junk1$$.ppm | " .
- "pamscale -width $width -height $height >junk3$$.ppm");
+ system("pamscale $n $tmpdir/junk1$$.ppm | " .
+ "pamscale -width $width -height $height >$tmpdir/junk3$$.ppm");
} elsif ($i <= 20) {
my $n = $spline10[$i-10];
- system("ppmmix $n junk1a$$.ppm junk2a$$.ppm >junk3$$.ppm");
+ system("ppmmix $n $tmpdir/junk1a$$.ppm $tmpdir/junk2a$$.ppm >$tmpdir/junk3$$.ppm");
} else {
my $n = 1 - 1.9*$spline20[31-$i];
- system("pamscale $n junk2$$.ppm | " .
- "pamscale -width $width -height $height >junk3$$.ppm");
+ system("pamscale $n $tmpdir/junk2$$.ppm | " .
+ "pamscale -width $width -height $height >$tmpdir/junk3$$.ppm");
}
if ($i == 10) {
- system("cp", "junk3$$.ppm", "junk1a$$.ppm");
- system("pamscale $n junk2$$.ppm | " .
- "pamscale -width $width -height $height >junk2a$$.ppm");
+ system("cp", "$tmpdir/junk3$$.ppm", "$tmpdir/junk1a$$.ppm");
+ system("pamscale $n $tmpdir/junk2$$.ppm | " .
+ "pamscale -width $width -height $height >$tmpdir/junk2a$$.ppm");
}
} elsif ($mode eq $MIX) {
my $fade_factor = sqrt(1/($nframes-$i+1));
- system("ppmmix $fade_factor junk1$$.ppm junk2$$.ppm >junk3$$.ppm");
+ system("ppmmix $fade_factor $tmpdir/junk1$$.ppm $tmpdir/junk2$$.ppm >$tmpdir/junk3$$.ppm");
} else {
print("Internal error: impossible mode value '$mode'\n");
}
my $outfile = sprintf("%s.%04d.ppm", $base_name, $i);
- system("cp", "junk3$$.ppm", $outfile);
+ system("cp", "$tmpdir/junk3$$.ppm", $outfile);
}
#
# Clean up shop.
#
-system("rm junk*$$.ppm");
+system("rm $tmpdir/junk*$$.ppm");
exit(0);

21
netpbm-time.patch Normal file
View File

@ -0,0 +1,21 @@
diff -up netpbm-10.47.05/converter/other/fiasco/config.h.time netpbm-10.47.05/converter/other/fiasco/config.h
--- netpbm-10.47.05/converter/other/fiasco/config.h.time 2009-12-10 08:34:36.000000000 +0100
+++ netpbm-10.47.05/converter/other/fiasco/config.h 2009-12-10 08:43:54.000000000 +0100
@@ -19,7 +19,7 @@
#define STDC_HEADERS 1
/* Define if you can safely include both <sys/time.h> and <time.h>. */
-#define TIME_WITH_SYS_TIME 1
+/* #undef TIME_WITH_SYS_TIME */
/* Define if the X Window System is missing or not being used. */
#define X_DISPLAY_MISSING 1
@@ -75,7 +75,7 @@
#define HAVE_STRING_H 1
/* Define if you have the <sys/time.h> header file. */
-#define HAVE_SYS_TIME_H 1
+/* #undef HAVE_SYS_TIME_H */
/* Define if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1

11
netpbm-xwdfix.patch Normal file
View File

@ -0,0 +1,11 @@
--- netpbm-10.35/converter/other/xwdtopnm.c.xwdfix 2006-09-18 13:24:50.000000000 +0200
+++ netpbm-10.35/converter/other/xwdtopnm.c 2006-09-18 13:27:26.000000000 +0200
@@ -945,7 +945,7 @@ getpix(pixelReader * const rdrP) {
unsigned long const bitsToTakeMask = lsbmask[nBitsToTake];
/* E.g. if nbitsToTake is 4, this is 0x0000000F */
- unsigned long bitsToTake;
+ unsigned int bitsToTake;
/* The actual bits we take, in the 'nBitsToTake' low bits */
assert(nBitsToTake <= 32);

159
netpbm.spec Normal file
View File

@ -0,0 +1,159 @@
Name: netpbm
Version: 10.83.01
Release: 2
Summary: A library for handling different graphics file formats
License: BSD and GPLv2 and IJG and MIT and Public Domain
URL: http://netpbm.sourceforge.net/
Source0: netpbm-%{version}.tar.xz
Patch0000: netpbm-security-scripts.patch
Patch0001: netpbm-security-code.patch
Patch0002: netpbm-ppmfadeusage.patch
Patch0003: netpbm-noppmtompeg.patch
Patch0004: netpbm-CVE-2017-2587.patch
Patch0005: netpbm-python3.patch
Patch0006: netpbm-time.patch
Patch0007: netpbm-gcc4.patch
Patch0008: netpbm-bmptopnm.patch
Patch0009: netpbm-CAN-2005-2471.patch
Patch0010: netpbm-xwdfix.patch
Patch0011: netpbm-multilib.patch
Patch0012: netpbm-glibc.patch
Patch0013: netpbm-docfix.patch
Patch0014: netpbm-fiasco-overflow.patch
Patch0015: netpbm-cmuwtopbm.patch
Patch0016: netpbm-pamtojpeg2k.patch
Patch0017: netpbm-manfix.patch
Patch0018: netpbm-manual-pages.patch
BuildRequires: libjpeg-devel, libpng-devel, libtiff-devel, flex
BuildRequires: libX11-devel perl-generators python3 jasper-devel libxml2-devel ghostscript-core
Requires: ghostscript
Provides: bundled(jasper) bundled(jbigkit) netpbm-progs = %{version}-%{release}
Obsoletes: netpbm-progs < %{version}-%{release}
%description
The netpbm package contains a library of functions that support the following features:
Program for handling various graphic file formats and so on.
%package devel
Summary: Provides development tools for programs
Requires: netpbm = %{version}-%{release}
%description devel
The netpbm-devel package provides tools for developing programs which will use the netpbm libraries.
%package help
Summary: Help document for the netpbm package
Requires: netpbm-progs = %{version}-%{release}
Provides: netpbm-doc = %{version}-%{release}
Obsoletes: netpbm-doc < %{version}-%{release}
%description help
Help document for the netpbm package.
%prep
%autosetup -n %{name}-%{version} -p1
%build
./configure <<EOF
gnu
regular
shared
y
n
libjpeg.so
default
libtiff.so
default
libz.so
default
none
http://netpbm.sourceforge.net/doc/
EOF
TOP=`pwd`
make \
CC="%{__cc}" LDFLAGS="$RPM_LD_FLAGS -L$TOP/pbm -L$TOP/pgm -L$TOP/pnm -L$TOP/ppm" \
CFLAGS="$RPM_OPT_FLAGS -fPIC -flax-vector-conversions -fno-strict-aliasing" \
CFLAGS_CONFIG="$RPM_OPT_FLAGS" LADD="-lm" JPEGINC_DIR=%{_includedir} PNGINC_DIR=%{_includedir} \
TIFFINC_DIR=%{_includedir} JPEGLIB_DIR=%{_libdir} PNGLIB_DIR=%{_libdir} TIFFLIB_DIR=%{_libdir} \
LINUXSVGALIB="NONE" X11LIB=%{_libdir}/libX11.so XML2LIBS="NONE"
cd userguide
rm -f ppmtompeg* *.manual-pages *.manfix
for i in *.html ; do
../buildtools/makeman ${i}
done
mkdir -p man/{man1,man3,man5}
mv *.1 man/man1
mv *.3 man/man3
mv *5 man/man5
%install
make package pkgdir=%{buildroot}/usr LINUXSVGALIB="NONE" XML2LIBS="NONE"
install -d %{buildroot}%{_libdir}
if [ "%{_libdir}" != "/usr/lib" ]; then
mv %{buildroot}/usr/lib/lib* %{buildroot}%{_libdir}
fi
cp -af lib/libnetpbm.a %{buildroot}%{_libdir}/libnetpbm.a
cp -l %{buildroot}%{_libdir}/libnetpbm.so.?? %{buildroot}%{_libdir}/libnetpbm.so
install -d %{buildroot}%{_datadir}
mv userguide/man %{buildroot}%{_mandir}
sed -i 's/\xa0//' %{buildroot}%{_mandir}/man1/pgmminkowski.1
for i in hpcdtoppm ppmsvgalib vidtoppm picttoppm directory error extendedopacity \
pam pbm pgm pnm ppm index libnetpbm_dir liberror ppmtotga; do
rm -f %{buildroot}%{_mandir}/man1/${i}.1
done
install -d %{buildroot}%{_datadir}/netpbm
mv %{buildroot}/usr/misc/{*.map,rgb.txt} %{buildroot}%{_datadir}/netpbm/
cd %{buildroot}%{_bindir}
rm -f pgmtopbm pnmcomp
ln -s pamcomp pnmcomp
echo -e '#!/bin/sh\npamditherbw $@ | pamtopnm\n' > pgmtopbm
chmod 0755 pgmtopbm
cd -
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%check
cd test
export LD_LIBRARY_PATH=%{buildroot}%{_libdir} PBM_TESTPREFIX=%{buildroot}%{_bindir} PBM_BINPREFIX=%{buildroot}%{_bindir}
./Execute-Tests && exit 0
cd -
%files
%doc doc/copyright_summary doc/COPYRIGHT.PATENT README doc/GPL_LICENSE.txt
%{_libdir}/lib*.so*
%{_bindir}/*
%{_datadir}/netpbm/
%exclude %{_mandir}/man5/extendedopacity.5
%exclude %{_libdir}/lib*.a
%files devel
%{_includedir}/netpbm/*.h
%exclude /usr/{README,VERSION,link,misc,man,pkginfo,config_template,pkgconfig_template}
%files help
%doc userguide/* doc/HISTORY
%{_mandir}/man1/*
%{_mandir}/man3/*
%{_mandir}/man5/*
%changelog
* Tue Nov 26 2019 wangzhishun <wangzhishun1@huawei.com> - 10.83.01-2
- Package init