I went to use Gnu cpio 2.11 on the very latest Ubuntu with my favorite
options to duplicate a tree, and got a shock:
$ ( cd .src/ic6_int
find | grep -Ev '\.svn([-/]|$)' | gcpio -oaH crc
)|(
mkdir .src/ic6_int-clean
.src/ic6_int-clean
rm -rf * .??*
gcpio -idmH crc
)
gcpio: eti_3rdparty/tarfiles/qpid-0.8.tar.gz: checksum error
(0x1c9ebca74, should be 0xc9ebca74)
gcpio: doc/Doc_Convert/xxe-pro-5_1_1-setup.exe: checksum error
(0x170b19461, should be 0x70b19461)
1674013 blocks
1674013 blocks
Googling around, I found the 2005 bug fix where the checksum is trimmed
to 32 bits with '& 0xffffffff':
http://lists.gnu.org/archive/html/bug-cpio/2005-10/msg00013.html
So, I changed 2.11 files in a somewhat similar fashion, and it no longer
complains. Maybe the middle bit is the winner.
1. What happened to the fix these 7 years?
2. Is this a proper (portable) fix?
extern unsigned int crc;
".src/cpio-2.11/src/extern.h" line 78 of 219 --35%-- col 17
return crc & 0xffffffff ;
".src/cpio-2.11/src/copyout.c" line 62 of 898 --6%-- col 10
unsigned int crc;
".src/cpio-2.11/src/global.c" line 147 of 195 --75%-- col 10