patch|hack: amd64 native cvsup with compress working

Bjoern A. Zeeb bzeeb-lists at lists.zabbadoz.net
Tue Jun 1 14:26:09 PDT 2004


Hi,

I have compiled ezm3 and cvsup-without-gui from the sources with the
files from http://people.freebsd.org/~peter/ezm3-amd64/ .

As discussed in this thread[1] there still is a problem with
compression (libz).

[1] http://lists.freebsd.org/pipermail/freebsd-amd64/2004-February/thread.html#669

The following hack makes cvsup work with compression:

--- hack/patch ---
!
! the problem seems to be that Ugzip.Z_BUF_ERROR = -5 but
! if status = -5 it actually is 4294967291 and not -5
!
! most likely other negative values might have the same problem.
!
--- suplib/src/GzipWr.m3.orig	Tue Mar  4 19:26:23 2003
+++ suplib/src/GzipWr.m3	Tue Jun  1 21:06:41 2004
@@ -125,8 +125,8 @@
 	0,
 	ADR(self.wr.buff[self.wr.st]) + self.wr.cur - self.wr.lo,
 	self.wr.hi - self.wr.cur,
-	Ugzip.Z_PARTIAL_FLUSH);
-      IF status # Ugzip.Z_OK AND status # Ugzip.Z_BUF_ERROR THEN
+	Ugzip.Z_SYNC_FLUSH); (* Z_PARTIAL_FLUSH will go away according to zlib.h*)
+      IF status # Ugzip.Z_OK AND status # 4294967291 AND status # Ugzip.Z_BUF_ERROR THEN
 	RAISE Wr.Failure(GzipError.FromStatus(status));
       END;
       self.wr.cur := self.wr.hi - self.strmp.avail_out;
--- suplib/src/GzipRd.m3.orig	Tue Jun  1 21:02:48 2004
+++ suplib/src/GzipRd.m3	Tue Jun  1 21:03:30 2004
@@ -168,7 +168,7 @@
 	  ELSE
 	    RETURN RdClass.SeekResult.Eof;
 	  END;
-	ELSIF status # Ugzip.Z_OK AND status # Ugzip.Z_BUF_ERROR THEN
+	ELSIF status # Ugzip.Z_OK AND status # 4294967291 AND status # Ugzip.Z_BUF_ERROR THEN
 	  RAISE Rd.Failure(GzipError.FromStatus(status));
 	END;

--- /hack/patch ---

while one can reproduce the problem by using a Logger to print
	Fmt.Int(status)			(* 4294967291 *)
	Fmt.Int(-5)			(* -5 *)
	Fmt.Int(Ugzip.Z_BUF_ERROR)	(* -5 *)
I am still unsure where the problem comes from; but that's been
my first hours looking at m3 and I will most likely not further
dig into this.

here my test. I picked out one file of those and it looked ok.

--- cut ---
bz at noc:/u2/ports/net/cvsup-without-gui/work/cvsup-snap-16.1h/client/FBSD_AMD64> ./cvsup -g -L2 -z -s /u2/test/distrib-supfile
Parsing supfile "/u2/test/distrib-supfile"
Connecting to cvsup2.de.FreeBSD.org
Connected to cvsup2.de.FreeBSD.org
Server software version: SNAP_16_1h
Negotiating file attribute support
Exchanging collection information
Establishing multiplexed-mode data connection
Running
Updating collection distrib/cvs
 Mkdir distrib
 Mkdir distrib/cvsup
 Mkdir distrib/cvsup/sup
 Create distrib/cvsup/sup/README,v
 Mkdir distrib/cvsup/sup/cvs-all
 Create distrib/cvsup/sup/cvs-all/list.cvs,v
 Create distrib/cvsup/sup/cvs-all/releases,v
...
 SetAttrs distrib/cvsup/sup/www
 SetAttrs distrib/cvsup/sup
 Create distrib/cvsup/supfile,v
 SetAttrs distrib/cvsup
 SetAttrs distrib
Shutting down connection to server
Finished successfully
--- cut ---

-- 
Greetings

Bjoern A. Zeeb				bzeeb at Zabbadoz dot NeT


More information about the freebsd-amd64 mailing list