From e0ea45d11b5a05c041de8dc84d3e9c08347cbf17 Mon Sep 17 00:00:00 2001 From: Kalonji Date: Wed, 5 Jan 2011 20:51:53 +0000 Subject: new port: par2cmdline --- testing/par2cmdline/APKBUILD | 52 +++++ testing/par2cmdline/par2cmdline-0.4-autoconf.patch | 22 +++ testing/par2cmdline/par2cmdline-0.4-cosmetic.patch | 106 ++++++++++ testing/par2cmdline/par2cmdline-0.4-gcc4.patch | 62 ++++++ .../par2cmdline/par2cmdline-0.4-hardlinks.patch | 15 ++ testing/par2cmdline/par2cmdline-0.4-letype.patch | 219 +++++++++++++++++++++ testing/par2cmdline/par2cmdline-0.4-offset.patch | 16 ++ .../par2cmdline/par2cmdline-0.4-wildcard-fix.patch | 23 +++ 8 files changed, 515 insertions(+) create mode 100644 testing/par2cmdline/APKBUILD create mode 100644 testing/par2cmdline/par2cmdline-0.4-autoconf.patch create mode 100644 testing/par2cmdline/par2cmdline-0.4-cosmetic.patch create mode 100644 testing/par2cmdline/par2cmdline-0.4-gcc4.patch create mode 100644 testing/par2cmdline/par2cmdline-0.4-hardlinks.patch create mode 100644 testing/par2cmdline/par2cmdline-0.4-letype.patch create mode 100644 testing/par2cmdline/par2cmdline-0.4-offset.patch create mode 100644 testing/par2cmdline/par2cmdline-0.4-wildcard-fix.patch (limited to 'testing/par2cmdline') diff --git a/testing/par2cmdline/APKBUILD b/testing/par2cmdline/APKBUILD new file mode 100644 index 000000000..7c6cbb3e2 --- /dev/null +++ b/testing/par2cmdline/APKBUILD @@ -0,0 +1,52 @@ +# Contributor: +# Maintainer: +pkgname=par2cmdline +pkgver=0.4 +pkgrel=1 +pkgdesc="Providing a tool to apply the data-recovery capability concepts of RAID-like systems to the posting & recovery of multi-part archives on Usenet." +url="http://sourceforge.net/projects/parchive/" +license="GPL" +depends= +makedepends= +install= +source="http://downloads.sourceforge.net/sourceforge/parchive/${pkgname}-${pkgver}.tar.gz +par2cmdline-0.4-autoconf.patch +par2cmdline-0.4-letype.patch +par2cmdline-0.4-cosmetic.patch +par2cmdline-0.4-offset.patch +par2cmdline-0.4-gcc4.patch +par2cmdline-0.4-wildcard-fix.patch +par2cmdline-0.4-hardlinks.patch" + +_builddir="$srcdir"/$pkgname-$pkgver + +prepare() { + cd "$_builddir" + for i in "$srcdir"/*.patch; do + msg "Applying ${i}" + patch -N -i $i || return 1 + done +} + +build() { + cd "$_builddir" + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info + make || return 1 +} + +package() { + cd "$_builddir" + make DESTDIR="$pkgdir" install +} + +md5sums="1551b63e57e3c232254dc62073b723a9 par2cmdline-0.4.tar.gz +8a0fad41e3c3165e3c788d2693797557 par2cmdline-0.4-autoconf.patch +1f7adb9308d4e972a5630eb56a42f8d5 par2cmdline-0.4-letype.patch +986d44b0cdba449459f9cfd93322144f par2cmdline-0.4-cosmetic.patch +cd54801b5107f03982c2b01ead21f02a par2cmdline-0.4-offset.patch +d52515669d3bc43f19c545fd6405dacc par2cmdline-0.4-gcc4.patch +c823d25f8862531e6e435ce0c76f8384 par2cmdline-0.4-wildcard-fix.patch +8683d237bc11e9d5581d14b4697d1f8b par2cmdline-0.4-hardlinks.patch" diff --git a/testing/par2cmdline/par2cmdline-0.4-autoconf.patch b/testing/par2cmdline/par2cmdline-0.4-autoconf.patch new file mode 100644 index 000000000..a0f2fbb55 --- /dev/null +++ b/testing/par2cmdline/par2cmdline-0.4-autoconf.patch @@ -0,0 +1,22 @@ +--- ../orig/par2cmdline-0.4/par2cmdline.h 2004-04-15 15:30:02.000000000 +0200 ++++ ./par2cmdline.h 2007-03-24 13:25:43.000000000 +0100 +@@ -132,6 +132,10 @@ + typedef unsigned long long u64; + #endif + ++// FIXME: this is not done right w/ autoconf ++#include ++#include ++ + #if HAVE_SYS_STAT_H + # include + #endif +@@ -179,6 +183,8 @@ + #include + #include + #include ++#include ++#include + #include + #include + diff --git a/testing/par2cmdline/par2cmdline-0.4-cosmetic.patch b/testing/par2cmdline/par2cmdline-0.4-cosmetic.patch new file mode 100644 index 000000000..0d5df2161 --- /dev/null +++ b/testing/par2cmdline/par2cmdline-0.4-cosmetic.patch @@ -0,0 +1,106 @@ +--- verificationhashtable.h 2003-06-03 13:48:52.000000000 +0200 ++++ verificationhashtable.h.new 2010-02-10 20:48:50.425580166 +0100 +@@ -66,11 +66,11 @@ public: + // Comparison operators for searching + bool operator <(const VerificationHashEntry &r) const + { +- return crc < r.crc || crc == r.crc && hash < r.hash; ++ return crc < r.crc || ( crc == r.crc && hash < r.hash ); + } + bool operator >(const VerificationHashEntry &r) const + { +- return crc > r.crc || crc == r.crc && hash > r.hash; ++ return crc > r.crc || ( crc == r.crc && hash > r.hash ); + } + bool operator ==(const VerificationHashEntry &r) const + { +@@ -183,11 +183,11 @@ inline const VerificationHashEntry* Veri + + while (entry) + { +- if (entry->crc < crc || entry->crc == crc && entry->hash < hash) ++ if (entry->crc < crc || ( entry->crc == crc && entry->hash < hash ) ) + { + entry = entry->right; + } +- else if (entry->crc > crc || entry->crc == crc && entry->hash > hash) ++ else if (entry->crc > crc || ( entry->crc == crc && entry->hash > hash ) ) + { + entry = entry->left; + } +@@ -402,14 +402,14 @@ inline const VerificationHashEntry* Veri + // have already been matched, or ones that are the wrong length + while (currententry && (currententry->SourceFile() != sourcefile || + currententry->IsSet() || +- checksummer.ShortBlock() && checksummer.BlockLength() != currententry->GetDataBlock()->GetLength() ++ ( checksummer.ShortBlock() && checksummer.BlockLength() != currententry->GetDataBlock()->GetLength() ) + ) + ) + { + // If we found an unused entry (which was presumably for the wrong + // source file) remember it (providing it is the correct length). +- if (0 == nextentry && !(currententry->IsSet() || +- checksummer.ShortBlock() && checksummer.BlockLength() != currententry->GetDataBlock()->GetLength() ++ if ( ( ( 0 == nextentry && !(currententry->IsSet() ) ) || ++ ( checksummer.ShortBlock() && checksummer.BlockLength() != currententry->GetDataBlock()->GetLength() ) + ) + ) + { +@@ -425,8 +425,8 @@ inline const VerificationHashEntry* Veri + } + + // Check for an unused entry which is the correct length +- while (nextentry && (nextentry->IsSet() || +- checksummer.ShortBlock() && checksummer.BlockLength() != nextentry->GetDataBlock()->GetLength() ++ while ( ( ( nextentry && (nextentry->IsSet() ) ) || ++ ( checksummer.ShortBlock() && checksummer.BlockLength() != nextentry->GetDataBlock()->GetLength() ) + ) + ) + { +--- par1repairer.cpp 2004-04-15 15:40:48.000000000 +0200 ++++ par1repairer.cpp.new 2010-02-10 21:04:43.288702325 +0100 +@@ -324,7 +324,7 @@ bool Par1Repairer::LoadRecoveryFile(stri + || + (fileheader.datasize && (fileheader.dataoffset < sizeof(fileheader) || fileheader.dataoffset + fileheader.datasize > filesize)) + || +- (fileheader.datasize && (fileheader.filelistoffset <= fileheader.dataoffset && fileheader.dataoffset < fileheader.filelistoffset+fileheader.filelistsize || fileheader.dataoffset <= fileheader.filelistoffset && fileheader.filelistoffset < fileheader.dataoffset + fileheader.datasize))) ++ (fileheader.datasize && ( ( fileheader.filelistoffset <= fileheader.dataoffset && fileheader.dataoffset < fileheader.filelistoffset+fileheader.filelistsize ) || ( fileheader.dataoffset <= fileheader.filelistoffset && fileheader.filelistoffset < fileheader.dataoffset + fileheader.datasize ) ))) + break; + + // Check the size of the file list +@@ -518,9 +518,9 @@ bool Par1Repairer::LoadOtherRecoveryFile + // Check the the file extension is the correct form + if ((tail[0] == 'P' || tail[0] == 'p') && + ( +- (tail[1] == 'A' || tail[1] == 'a') && (tail[2] == 'R' || tail[2] == 'r') ++ ( (tail[1] == 'A' || tail[1] == 'a') && (tail[2] == 'R' || tail[2] == 'r') ) + || +- isdigit(tail[1]) && isdigit(tail[2]) ++ ( isdigit(tail[1]) && isdigit(tail[2]) ) + )) + { + LoadRecoveryFile(filename); +@@ -549,9 +549,9 @@ bool Par1Repairer::LoadExtraRecoveryFile + // Check the the file extension is the correct form + if ((tail[0] == 'P' || tail[0] == 'p') && + ( +- (tail[1] == 'A' || tail[1] == 'a') && (tail[2] == 'R' || tail[2] == 'r') ++ ( (tail[1] == 'A' || tail[1] == 'a') && (tail[2] == 'R' || tail[2] == 'r') ) + || +- isdigit(tail[1]) && isdigit(tail[2]) ++ ( isdigit(tail[1]) && isdigit(tail[2]) ) + )) + { + LoadRecoveryFile(filename); +@@ -652,9 +652,9 @@ bool Par1Repairer::VerifyExtraFiles(cons + // Check the the file extension is the correct form + if ((tail[0] == 'P' || tail[0] == 'p') && + ( +- (tail[1] == 'A' || tail[1] == 'a') && (tail[2] == 'R' || tail[2] == 'r') ++ ( (tail[1] == 'A' || tail[1] == 'a') && (tail[2] == 'R' || tail[2] == 'r') ) + || +- isdigit(tail[1]) && isdigit(tail[2]) ++ ( isdigit(tail[1]) && isdigit(tail[2]) ) + )) + { + skip = true; diff --git a/testing/par2cmdline/par2cmdline-0.4-gcc4.patch b/testing/par2cmdline/par2cmdline-0.4-gcc4.patch new file mode 100644 index 000000000..c6da26789 --- /dev/null +++ b/testing/par2cmdline/par2cmdline-0.4-gcc4.patch @@ -0,0 +1,62 @@ +Fix compilation with gcc-4. + +Patch by Dirk-Jan Heijs. + +http://bugs.gentoo.org/102391 +http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=287904 + +--- par2cmdline-0.4/reedsolomon.cpp ++++ par2cmdline-0.4/reedsolomon.cpp +@@ -51,7 +51,7 @@ + } + } + +-bool ReedSolomon::SetInput(const vector &present) ++template <> bool ReedSolomon::SetInput(const vector &present) + { + inputcount = (u32)present.size(); + +@@ -80,7 +80,7 @@ + return true; + } + +-bool ReedSolomon::SetInput(u32 count) ++template <> bool ReedSolomon::SetInput(u32 count) + { + inputcount = count; + +@@ -101,7 +101,7 @@ + return true; + } + +-bool ReedSolomon::Process(size_t size, u32 inputindex, const void *inputbuffer, u32 outputindex, void *outputbuffer) ++template <> bool ReedSolomon::Process(size_t size, u32 inputindex, const void *inputbuffer, u32 outputindex, void *outputbuffer) + { + // Look up the appropriate element in the RS matrix + Galois8 factor = leftmatrix[outputindex * (datapresent + datamissing) + inputindex]; +@@ -189,7 +189,7 @@ + + // Set which of the source files are present and which are missing + // and compute the base values to use for the vandermonde matrix. +-bool ReedSolomon::SetInput(const vector &present) ++template <> bool ReedSolomon::SetInput(const vector &present) + { + inputcount = (u32)present.size(); + +@@ -233,7 +233,7 @@ + + // Record that the specified number of source files are all present + // and compute the base values to use for the vandermonde matrix. +-bool ReedSolomon::SetInput(u32 count) ++template <> bool ReedSolomon::SetInput(u32 count) + { + inputcount = count; + +@@ -267,7 +267,7 @@ + return true; + } + +-bool ReedSolomon::Process(size_t size, u32 inputindex, const void *inputbuffer, u32 outputindex, void *outputbuffer) ++template <> bool ReedSolomon::Process(size_t size, u32 inputindex, const void *inputbuffer, u32 outputindex, void *outputbuffer) + { + // Look up the appropriate element in the RS matrix diff --git a/testing/par2cmdline/par2cmdline-0.4-hardlinks.patch b/testing/par2cmdline/par2cmdline-0.4-hardlinks.patch new file mode 100644 index 000000000..0d815f094 --- /dev/null +++ b/testing/par2cmdline/par2cmdline-0.4-hardlinks.patch @@ -0,0 +1,15 @@ +--- Makefile.in 2004-04-12 18:44:18.000000000 +0200 ++++ Makefile.in.new 2010-02-10 21:08:17.799145528 +0100 +@@ -716,9 +716,9 @@ uninstall-am: uninstall-binPROGRAMS unin + + + install-exec-hook : +- ln -f $(DESTDIR)$(bindir)/par2$(EXEEXT) $(DESTDIR)$(bindir)/par2create$(EXEEXT) +- ln -f $(DESTDIR)$(bindir)/par2$(EXEEXT) $(DESTDIR)$(bindir)/par2verify$(EXEEXT) +- ln -f $(DESTDIR)$(bindir)/par2$(EXEEXT) $(DESTDIR)$(bindir)/par2repair$(EXEEXT) ++ ln -sf $(bindir)/par2$(EXEEXT) $(DESTDIR)$(bindir)/par2create$(EXEEXT) ++ ln -sf $(bindir)/par2$(EXEEXT) $(DESTDIR)$(bindir)/par2verify$(EXEEXT) ++ ln -sf $(bindir)/par2$(EXEEXT) $(DESTDIR)$(bindir)/par2repair$(EXEEXT) + + uninstall-hook : + rm -f $(DESTDIR)$(bindir)/par2create$(EXEEXT) diff --git a/testing/par2cmdline/par2cmdline-0.4-letype.patch b/testing/par2cmdline/par2cmdline-0.4-letype.patch new file mode 100644 index 000000000..e0c8d6c57 --- /dev/null +++ b/testing/par2cmdline/par2cmdline-0.4-letype.patch @@ -0,0 +1,219 @@ +diff -ur par2cmdline-0.4-orig/letype.h par2cmdline-0.4/letype.h +--- par2cmdline-0.4-orig/letype.h 2003-05-26 20:01:17.000000000 +0200 ++++ par2cmdline-0.4/letype.h 2006-05-09 10:47:29.000000000 +0200 +@@ -28,44 +28,15 @@ + + #else + +-class leu16 ++struct leu16 + { +-public: +- leu16(void); +- +- leu16(const leu16 &other); +- leu16& operator=(const leu16 &other); +- +- leu16(const u16 &other); + leu16& operator=(const u16 &other); + + operator u16(void) const; + +-protected: + u16 value; + }; + +-inline leu16::leu16(void) +-{ +-} +- +-inline leu16::leu16(const leu16 &other) +-: value(other.value) +-{ +-} +- +-inline leu16& leu16::operator =(const leu16 &other) +-{ +- value = other.value; +- return *this; +-} +- +-inline leu16::leu16(const u16 &other) +-{ +- ((unsigned char*)&value)[0] = (unsigned char)((other >> 0) & 0xff); +- ((unsigned char*)&value)[1] = (unsigned char)((other >> 8) & 0xff); +-} +- + inline leu16& leu16::operator=(const u16 &other) + { + ((unsigned char*)&value)[0] = (unsigned char)((other >> 0) & 0xff); +@@ -81,46 +52,15 @@ + } + + +-class leu32 ++struct leu32 + { +-public: +- leu32(void); +- +- leu32(const leu32 &other); +- leu32& operator=(const leu32 &other); +- +- leu32(const u32 &other); + leu32& operator=(const u32 &other); + + operator u32(void) const; + +-protected: + u32 value; + }; + +-inline leu32::leu32(void) +-{ +-} +- +-inline leu32::leu32(const leu32 &other) +-: value(other.value) +-{ +-} +- +-inline leu32& leu32::operator =(const leu32 &other) +-{ +- value = other.value; +- return *this; +-} +- +-inline leu32::leu32(const u32 &other) +-{ +- ((unsigned char*)&value)[0] = (unsigned char)((other >> 0) & 0xff); +- ((unsigned char*)&value)[1] = (unsigned char)((other >> 8) & 0xff); +- ((unsigned char*)&value)[2] = (unsigned char)((other >> 16) & 0xff); +- ((unsigned char*)&value)[3] = (unsigned char)((other >> 24) & 0xff); +-} +- + inline leu32& leu32::operator=(const u32 &other) + { + ((unsigned char*)&value)[0] = (unsigned char)((other >> 0) & 0xff); +@@ -140,50 +80,15 @@ + } + + +-class leu64 ++struct leu64 + { +-public: +- leu64(void); +- +- leu64(const leu64 &other); +- leu64& operator=(const leu64 &other); +- +- leu64(const u64 &other); + leu64& operator=(const u64 &other); + + operator u64(void) const; + +-protected: + u64 value; + }; + +-inline leu64::leu64(void) +-{ +-} +- +-inline leu64::leu64(const leu64 &other) +-: value(other.value) +-{ +-} +- +-inline leu64& leu64::operator =(const leu64 &other) +-{ +- value = other.value; +- return *this; +-} +- +-inline leu64::leu64(const u64 &other) +-{ +- ((unsigned char*)&value)[0] = (unsigned char)((other >> 0) & 0xff); +- ((unsigned char*)&value)[1] = (unsigned char)((other >> 8) & 0xff); +- ((unsigned char*)&value)[2] = (unsigned char)((other >> 16) & 0xff); +- ((unsigned char*)&value)[3] = (unsigned char)((other >> 24) & 0xff); +- ((unsigned char*)&value)[4] = (unsigned char)((other >> 32) & 0xff); +- ((unsigned char*)&value)[5] = (unsigned char)((other >> 40) & 0xff); +- ((unsigned char*)&value)[6] = (unsigned char)((other >> 48) & 0xff); +- ((unsigned char*)&value)[7] = (unsigned char)((other >> 56) & 0xff); +-} +- + inline leu64& leu64::operator=(const u64 &other) + { + ((unsigned char*)&value)[0] = (unsigned char)((other >> 0) & 0xff); +diff -ur par2cmdline-0.4-orig/md5.h par2cmdline-0.4/md5.h +--- par2cmdline-0.4-orig/md5.h 2003-08-02 01:41:04.000000000 +0200 ++++ par2cmdline-0.4/md5.h 2006-05-09 10:47:29.000000000 +0200 +@@ -20,6 +20,13 @@ + #ifndef __MD5_H__ + #define __MD5_H__ + ++#ifdef WIN32 ++#pragma pack(push, 1) ++#define PACKED ++#else ++#define PACKED __attribute__ ((packed)) ++#endif ++ + // This file defines the MD5Hash and MD5Context objects which are used + // to compute and manipulate the MD5 Hash values for a block of data. + +@@ -35,12 +42,11 @@ + + // MD5 Hash value + +-class MD5Hash +-{ +-public: +- // Constructor does not initialise the value +- MD5Hash(void) {}; ++struct MD5Hash; ++ostream& operator<<(ostream &s, const MD5Hash &hash); + ++struct MD5Hash ++{ + // Comparison operators + bool operator==(const MD5Hash &other) const; + bool operator!=(const MD5Hash &other) const; +@@ -54,13 +60,8 @@ + friend ostream& operator<<(ostream &s, const MD5Hash &hash); + string print(void) const; + +- // Copy and assignment +- MD5Hash(const MD5Hash &other); +- MD5Hash& operator=(const MD5Hash &other); +- +-public: + u8 hash[16]; // 16 byte MD5 Hash value +-}; ++} PACKED; + + // Intermediate computation state + +@@ -144,16 +145,9 @@ + return !other.operator<(*this); + } + +-inline MD5Hash::MD5Hash(const MD5Hash &other) +-{ +- memcpy(&hash, &other.hash, sizeof(hash)); +-} +- +-inline MD5Hash& MD5Hash::operator=(const MD5Hash &other) +-{ +- memcpy(&hash, &other.hash, sizeof(hash)); +- +- return *this; +-} ++#ifdef WIN32 ++#pragma pack(pop) ++#endif ++#undef PACKED + + #endif // __MD5_H__ diff --git a/testing/par2cmdline/par2cmdline-0.4-offset.patch b/testing/par2cmdline/par2cmdline-0.4-offset.patch new file mode 100644 index 000000000..653928066 --- /dev/null +++ b/testing/par2cmdline/par2cmdline-0.4-offset.patch @@ -0,0 +1,16 @@ +--- par2cmdline-0.4.orig/par2creatorsourcefile.cpp 2004-04-15 14:45:23.000000000 +0100 ++++ par2cmdline-0.4/par2creatorsourcefile.cpp 2005-09-29 02:27:43.000000000 +0100 +@@ -213,11 +213,12 @@ + } + } + ++ offset += want; ++ + if (noiselevel > CommandLine::nlQuiet) + { + // Display progress + u32 oldfraction = (u32)(1000 * offset / filesize); +- offset += want; + u32 newfraction = (u32)(1000 * offset / filesize); + if (oldfraction != newfraction) + { diff --git a/testing/par2cmdline/par2cmdline-0.4-wildcard-fix.patch b/testing/par2cmdline/par2cmdline-0.4-wildcard-fix.patch new file mode 100644 index 000000000..d5f43c796 --- /dev/null +++ b/testing/par2cmdline/par2cmdline-0.4-wildcard-fix.patch @@ -0,0 +1,23 @@ +--- commandline.cpp.orig 2006-04-06 21:41:27.000000000 -0700 ++++ commandline.cpp 2006-04-07 00:12:29.000000000 -0700 +@@ -550,6 +550,20 @@ + } + else + { ++ //start of shell expanded * patch. -- Michael Evans ++ //The shell might expaned * so, if we have our name and we're creating, then filter for files... ++ if ((parfilename.length() != 0) && (operation == opCreate)) ++ { ++ struct stat st; ++ if (!(stat(argv[0], &st) == 0 && S_ISREG(st.st_mode))) ++ { ++ cerr << "Skipping non-regular file: " << argv[0] << endl; ++ argc--; ++ argv++; ++ options = false; ++ continue; ++ } ++ }//end of shell expanded * patch. -- Michael Evans + filenames = new list; + filenames->push_back(argv[0]); + } -- cgit v1.2.3