diff --git a/.gitignore b/.gitignore index 06f0a09..785b18c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1 @@ /ncompress-4.2.4.4.tar.gz -/ncompress-5.0.tar.gz -/v5.0.tar.gz diff --git a/ncompress-4.2.4.4-2GB.patch b/ncompress-4.2.4.4-2GB.patch new file mode 100644 index 0000000..cf1ac52 --- /dev/null +++ b/ncompress-4.2.4.4-2GB.patch @@ -0,0 +1,13 @@ +diff --git a/compress42.c b/compress42.c +index 4d33342..495bdf3 100644 +--- a/compress42.c ++++ b/compress42.c +@@ -1373,7 +1373,7 @@ compress(fdin, fdout) + REG11 int boff; + REG12 int n_bits; + REG13 int ratio; +- REG14 long checkpoint; ++ REG14 unsigned long long checkpoint; + REG15 code_int extcode; + union + { diff --git a/ncompress-4.2.4.4-endians.patch b/ncompress-4.2.4.4-endians.patch new file mode 100644 index 0000000..fdc9662 --- /dev/null +++ b/ncompress-4.2.4.4-endians.patch @@ -0,0 +1,11 @@ +--- ncompress-4.2.4/compress42.c.endians 2006-09-19 13:53:58.000000000 +0200 ++++ ncompress-4.2.4/compress42.c 2006-09-19 13:57:54.000000000 +0200 +@@ -432,7 +432,7 @@ + + union bytes + { +- long word; ++ int word; + struct + { + #if BYTEORDER == 4321 diff --git a/ncompress-4.2.4.4-filenamelen.patch b/ncompress-4.2.4.4-filenamelen.patch new file mode 100644 index 0000000..49b7841 --- /dev/null +++ b/ncompress-4.2.4.4-filenamelen.patch @@ -0,0 +1,60 @@ +diff --git a/compress42.c b/compress42.c +index b3b3add..6878046 100644 +--- a/compress42.c ++++ b/compress42.c +@@ -141,6 +141,7 @@ + #include + #include + #include ++#include + + #ifdef DIRENT + # include +@@ -214,7 +215,7 @@ + # define OBUFSIZ BUFSIZ /* Default output buffer size */ + #endif + +-#define MAXPATHLEN 1024 /* MAXPATHLEN - maximum length of a pathname we allow */ ++#define MAXPATHLEN PATH_MAX /* MAXPATHLEN - maximum length of a pathname we allow */ + #define SIZE_INNER_LOOP 256 /* Size of the inter (fast) compress loop */ + + /* Defines for third byte of header */ +@@ -701,6 +702,7 @@ main(argc, argv) + { + REG3 char **filelist; + REG4 char **fileptr; ++ int i; + + if (fgnd_flag = (signal(SIGINT, SIG_IGN) != SIG_IGN)) + signal(SIGINT, (SIG_TYPE)abort_compress); +@@ -714,13 +716,18 @@ main(argc, argv) + nomagic = 1; /* Original didn't have a magic number */ + #endif + +- filelist = (char **)malloc(argc*sizeof(char *)); ++ for (i=0; i(MAXPATHLEN-1)) { ++ fprintf(stderr,"Filename too long\n"); ++ exit(1); ++ } ++ } ++ filelist = fileptr = (char **)malloc(argc*sizeof(char *)); + if (filelist == NULL) + { + fprintf(stderr, "Cannot allocate memory for file list.\n"); + exit (1); + } +- fileptr = filelist; + *filelist = NULL; + + if((progname = strrchr(argv[0], '/')) != 0) +@@ -860,7 +867,9 @@ nextarg: continue; + decompress(0, 1); + } + ++ free(filelist); + exit((exit_code== -1) ? 1:exit_code); ++ return 0; + } + + void diff --git a/ncompress-4.2.4.4-lfs.patch b/ncompress-4.2.4.4-lfs.patch new file mode 100644 index 0000000..2559799 --- /dev/null +++ b/ncompress-4.2.4.4-lfs.patch @@ -0,0 +1,23 @@ +diff --git a/compress42.c b/compress42.c +index 804d099..b3b3add 100644 +--- a/compress42.c ++++ b/compress42.c +@@ -130,6 +130,7 @@ + * Add variable bit length output. + * + */ ++#include + #include + #include + #include +@@ -538,8 +539,8 @@ int remove_ofname = 0; /* Remove output file on a error */ + char ofname[MAXPATHLEN]; /* Output filename */ + int fgnd_flag = 0; /* Running in background (SIGINT=SIGIGN) */ + +-long bytes_in; /* Total number of byte from input */ +-long bytes_out; /* Total number of byte to output */ ++long long bytes_in; /* Total number of byte from input */ ++long long bytes_out; /* Total number of byte to output */ + + /* + * 8086 & 80286 Has a problem with array bigger than 64K so fake the array diff --git a/ncompress-4.2.4.4-make.patch b/ncompress-4.2.4.4-make.patch new file mode 100644 index 0000000..3d1878f --- /dev/null +++ b/ncompress-4.2.4.4-make.patch @@ -0,0 +1,20 @@ +diff --git a/Makefile.def b/Makefile.def +index e493d7c..1e6612f 100644 +--- a/Makefile.def ++++ b/Makefile.def +@@ -31,7 +31,14 @@ MANDIR=/usr/local/man/man1 + # -DDEF_ERRNO=1 Define error (not defined in errno.h). + # -DMAXSEG_64K=1 -BITS=16 Support segment processsor like 80286. + # +-options= $(CFLAGS) $(CPPFLAGS) -DDIRENT=1 -DUSERMEM=800000 -DREGISTERS=3 ++options= $(CFLAGS) $(CPPFLAGS) -DDIRENT=1 -DUSERMEM=800000 -DREGISTERS=20 \ ++ -D_FILE_OFFSET_BITS=64 \ ++ -D_LARGEFILE_SOURCE \ ++ -DNOFUNCDEF=1 \ ++ -DOBUFSIZ=1024 \ ++ -DUTIME_H \ ++ -DSYSDIR=1 \ ++ $(ARCH_FLAGS) + + # libary options + LBOPT= $(LDFLAGS) diff --git a/ncompress-4.2.4.4-memmove.patch b/ncompress-4.2.4.4-memmove.patch new file mode 100644 index 0000000..d8fec3e --- /dev/null +++ b/ncompress-4.2.4.4-memmove.patch @@ -0,0 +1,12 @@ +diff -urNp ncompress-4.2.4-orig/compress42.c ncompress-4.2.4/compress42.c +--- ncompress-4.2.4-orig/compress42.c 2012-01-03 15:13:58.014222927 +0100 ++++ ncompress-4.2.4/compress42.c 2012-01-03 15:15:17.117097419 +0100 +@@ -1441,7 +1441,7 @@ compress(fdin, fdout) + boff = -(((OBUFSIZ<<3)-boff)%(n_bits<<3)); + bytes_out += OBUFSIZ; + +- memcpy(outbuf, outbuf+OBUFSIZ, (outbits>>3)+1); ++ memmove(outbuf, outbuf+OBUFSIZ, (outbits>>3)+1); + memset(outbuf+(outbits>>3)+1, '\0', OBUFSIZ); + } + diff --git a/ncompress-4.2.4.4-silence-gcc.patch b/ncompress-4.2.4.4-silence-gcc.patch new file mode 100644 index 0000000..738ce80 --- /dev/null +++ b/ncompress-4.2.4.4-silence-gcc.patch @@ -0,0 +1,33 @@ +diff --git a/compress42.c b/compress42.c +index c3f6b35..834c2f2 100644 +--- a/compress42.c ++++ b/compress42.c +@@ -704,7 +704,7 @@ main(argc, argv) + REG4 char **fileptr; + int i; + +- if (fgnd_flag = (signal(SIGINT, SIG_IGN) != SIG_IGN)) ++ if ((fgnd_flag = (signal(SIGINT, SIG_IGN)) != SIG_IGN)) + signal(SIGINT, (SIG_TYPE)abort_compress); + + signal(SIGTERM, (SIG_TYPE)abort_compress); +@@ -1016,8 +1016,8 @@ comprexx(fileptr) + + if (infstat.st_nlink > 1 && (!force)) + { +- fprintf(stderr, "%s has %d other links: unchanged\n", +- tempname, infstat.st_nlink - 1); ++ fprintf(stderr, "%s has %ld other links: unchanged\n", ++ tempname, (long)(infstat.st_nlink - 1)); + exit_code = 1; + return; + } +@@ -1318,7 +1318,7 @@ compdir(dir) + ** think it's worth it. -- Dave Mack + */ + +- while (dp = readdir(dirp)) ++ while ((dp = readdir(dirp))) + { + if (dp->d_ino == 0) + continue; diff --git a/ncompress.spec b/ncompress.spec index c5beba5..b6ce7e8 100644 --- a/ncompress.spec +++ b/ncompress.spec @@ -1,10 +1,41 @@ Summary: Fast compression and decompression utilities Name: ncompress -Version: 5.0 -Release: 1%{?dist} +Version: 4.2.4.4 +Release: 21%{?dist} License: Public Domain -URL: https://github.com/vapier/%{name} -Source: https://github.com/vapier/%{name}/archive/refs/tags/v%{version}.tar.gz +URL: http://ncompress.sourceforge.net/ +Source: http://prdownloads.sourceforge.net/sourceforge/%{name}/%{name}-%{version}.tar.gz + +# allow to build ncompress +# ~> downstream +Patch0: ncompress-4.2.4.4-make.patch + +# from dist-git commit 0539779d937 +# (praiskup: removed redundant part as -DNOFUNCDEF is defined) +# ~> downstream +Patch1: ncompress-4.2.4.4-lfs.patch + +# exit when too long filename is given (do not segfault) +# ~> #unknown +# ~> downstream +Patch2: ncompress-4.2.4.4-filenamelen.patch + +# permit files > 2GB to be compressed +# ~> #126775 +Patch3: ncompress-4.2.4.4-2GB.patch + +# do not fail to compress on ppc/s390x +# ~> #207001 +Patch4: ncompress-4.2.4.4-endians.patch + +# use memmove instead of memcpy +# ~> 760657 +# ~> downstream +Patch5: ncompress-4.2.4.4-memmove.patch + +# silence gcc warnings +# ~> downstream +Patch6: ncompress-4.2.4.4-silence-gcc.patch BuildRequires: make BuildRequires: gcc @@ -22,7 +53,29 @@ which are compatible with the original UNIX compress utility. %prep -%autosetup -n %{name}-%{version} +%setup -q + +# configure build system +# ~> downstream +%patch0 -p1 -b .configure-buildsystem + +%ifarch sparc m68k armv4l ppc s390 s390x ppc64 sparc64 +ARCH_FLAGS="$ARCH_FLAGS -DBYTEORDER=1234" +%endif + +%ifarch alpha ia64 +ARCH_FLAGS="$ARCH_FLAGS -DNOALLIGN=0" +%endif + +sed "s/\$(ARCH_FLAGS)/$ARCH_FLAGS/" Makefile.def > Makefile + +%patch1 -p1 -b .lfs +%patch2 -p1 -b .filenamelen +%patch3 -p1 -b .2GB +%patch4 -p1 -b .endians +%patch5 -p1 -b .memmove +%patch6 -p1 -b .silence-gcc + %build make CFLAGS="%{optflags} %{?nc_endian} %{?nc_align} %{build_ldflags}" @@ -41,16 +94,10 @@ ln -sf compress.1 $RPM_BUILD_ROOT%{_mandir}/man1/uncompress.1 %{_bindir}/compress %{_bindir}/uncompress %{_mandir}/man1/* -%doc LZW.INFO README.md +%doc LZW.INFO README %changelog -* Wed May 18 2022 Ondrej Sloup - 5.0-1 -- Use %autosetup -- Change source links -- Remove patch files -- Rebase to the latest upstream version (rhbz#1924029) - * Thu Jan 20 2022 Fedora Release Engineering - 4.2.4.4-21 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild diff --git a/sources b/sources index 3689c61..cdc0feb 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (v5.0.tar.gz) = 5bc886f98f25b03d034e8d8ebb0ee9388d727ee3e0c6d8a906698b2f8fa5c930f55d857486244b7f40447c7b74f3c620626600db619d0c6d6fd434f52912be42 +4be215caacf3d082bfe24cfdbaba538e ncompress-4.2.4.4.tar.gz