> The header stores only 4 bytes for crc, so it is quite reasonable. Then I would suggest something like this, though it could be made more efficient.
--- orig/configure.ac +++ mod/configure.ac @@ -51,6 +51,9 @@ AC_CHECK_HEADERS(unistd.h stdlib.h string.h fcntl.h sys/io/trioctl.h utmp.h getopt.h locale.h libintl.h sys/wait.h utime.h) AC_REPLACE_FUNCS(bcopy mkdir strdup strerror) +AC_CHECK_TYPES(uint32_t) +AC_CHECK_SIZEOF(unsigned long) +AC_CHECK_SIZEOF(unsigned int) AC_MSG_CHECKING(for sys_errlist and sys_nerr) AC_TRY_RUN( --- orig/src/extern.h +++ mod/src/extern.h @@ -66,7 +66,17 @@ extern int archive_des; extern char *archive_name; extern char *rsh_command_option; +#ifdef HAVE_UINT32_T +extern uint32_t crc; +#else +# if SIZEOF_UNSIGNED_LONG == 4 extern unsigned long crc; +# elif SIZEOF_UNSIGNED_INT == 4 +extern unsigned int crc; +# else +# error Wrong size for crc +# endif +#endif extern int delayed_seek_count; #ifdef DEBUG_CPIO extern int debug_flag; --- orig/src/global.c +++ mod/src/global.c @@ -139,7 +139,17 @@ char *rsh_command_option = NULL; /* CRC checksum. */ +#ifdef HAVE_UINT32_T +uint32_t crc; +#else +# if SIZEOF_UNSIGNED_LONG == 4 unsigned long crc; +# elif SIZEOF_UNSIGNED_INT == 4 +unsigned int crc; +# else +# error Wrong size for crc +# endif +#endif /* Input and output buffers. */ char *input_buffer, *output_buffer; _______________________________________________ Bug-cpio mailing list Bug-cpio@gnu.org http://lists.gnu.org/mailman/listinfo/bug-cpio