On 2015/06/27 03:54, Mikolaj Kucharski wrote:
> Hi,
> 
> On Tue, May 05, 2015 at 09:09:53PM +0100, Stuart Henderson wrote:
> > On 2015/05/04 02:59, heigo wrote:
> > > par2cmdline doesn't work on 5.7/amd64, just exits with the message:
> > > "Main packet not found."
> > > 
> > > Works fine on the same machine under 5.5.
> > > Tried 5.6 also, same result as 5.7.
> > > 
> > > h.
> > > 
> > 
> > Is this any better? It does not pass all self-tests but might be
> > worth committing if it's an improvement over what we have currently.
> > 
> ...
> 
> I can conform that par2 0.4 stopped working between 5.5 and 5.6 and for
> me it constantly gives:
> 
>       Main packet not found.
> 
> I've tested your update to 0.6.12 Stuart, and it is better, as it
> properly loads all packets from par2 files, but that version is not able
> to repair broken collections.
> 
> I've narrowed down which patch fixes breakage for 5.5 -> 5.6 change
> (main packet not found error) unfortunately par2 0.4 with below changes
> also is not able to repair collections like 0.6.13 (I've also tested).
> 
> Giving that 0.6.13 doesn't fix all the problems, I would prefer for now
> to keep changes to minimum and push below update. Tested on current
> amd64.

I don't really understand the point in adding a patch that breaks things
in the same way as 0.6.13. Surely it's better to just update so at least
we're using the same code other people use?


> So currently, below patch and latest 0.6.13 can verify collections, but
> are not able to repair them :/
> 
> 
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/archivers/par2cmdline/Makefile,v
> retrieving revision 1.10
> diff -u -p -u -r1.10 Makefile
> --- Makefile  19 Apr 2015 17:52:47 -0000      1.10
> +++ Makefile  27 Jun 2015 02:34:43 -0000
> @@ -2,7 +2,7 @@
>  
>  COMMENT=     command line implementation of the PAR v2.0 specification
>  DISTNAME=    par2cmdline-0.4
> -REVISION=    2
> +REVISION=    3
>  CATEGORIES=  archivers
>  MASTER_SITES=        ${MASTER_SITE_SOURCEFORGE:=parchive/}
>  
> Index: patches/patch-letype_h
> ===================================================================
> RCS file: patches/patch-letype_h
> diff -N patches/patch-letype_h
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-letype_h    27 Jun 2015 02:34:43 -0000
> @@ -0,0 +1,151 @@
> +$OpenBSD$
> +
> +- upstream github commit 4a4179f1e42bc11bbcc9d24554690d3bc5c31b38
> +
> +--- letype.h.orig    Mon May 26 19:01:17 2003
> ++++ letype.h Sat Jun 27 03:02:25 2015
> +@@ -28,44 +28,15 @@ typedef u64 leu64;
> + 
> + #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 @@ inline leu16::operator u16(void) const
> + }
> + 
> + 
> +-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,49 +80,14 @@ inline leu32::operator u32(void) const
> + }
> + 
> + 
> +-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)
> + {
> Index: patches/patch-md5_h
> ===================================================================
> RCS file: patches/patch-md5_h
> diff -N patches/patch-md5_h
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-md5_h       27 Jun 2015 02:34:43 -0000
> @@ -0,0 +1,73 @@
> +$OpenBSD$
> +
> +- upstream github commit 4a4179f1e42bc11bbcc9d24554690d3bc5c31b38
> +
> +--- md5.h.orig       Sat Aug  2 00:41:04 2003
> ++++ md5.h    Sat Jun 27 03:02:25 2015
> +@@ -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 @@ class MD5Hash (public)
> +   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 @@ inline bool MD5Hash::operator<=(const MD5Hash &other) 
> +   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__
> 
> 
> 
> 
> -- 
> best regards
> q#
> 

Reply via email to