diff --git a/cpio-2.6-lfs.patch b/cpio-2.6-lfs.patch index ff1f6ae..df699fa 100644 --- a/cpio-2.6-lfs.patch +++ b/cpio-2.6-lfs.patch @@ -1,127 +1,163 @@ ---- cpio-2.6/src/copyin.c.lfs 2005-07-01 13:48:05.000000000 +0200 -+++ cpio-2.6/src/copyin.c 2005-07-01 13:48:18.000000000 +0200 +--- cpio-2.6/src/copyin.c.lfs 2006-03-15 16:30:48.000000000 -0500 ++++ cpio-2.6/src/copyin.c 2006-03-15 16:35:33.000000000 -0500 @@ -106,7 +106,7 @@ header type. */ static void -tape_skip_padding (int in_file_des, int offset) -+tape_skip_padding (int in_file_des, unsigned long offset) ++tape_skip_padding (int in_file_des, off_t offset) { int pad; ---- cpio-2.6/src/extern.h.lfs 2004-09-08 12:49:57.000000000 +0200 -+++ cpio-2.6/src/extern.h 2005-07-01 13:47:20.000000000 +0200 -@@ -161,13 +161,13 @@ +@@ -911,7 +911,7 @@ + printf ("%3u, %3u ", file_hdr->c_rdev_maj, + file_hdr->c_rdev_min); + else +- printf ("%8lu ", file_hdr->c_filesize); ++ printf ("%8llu ", file_hdr->c_filesize); + + printf ("%s ", tbuf + 4); + +@@ -1153,7 +1153,7 @@ + tape_buffered_read (ascii_header, in_des, 70L); + ascii_header[70] = '\0'; + sscanf (ascii_header, +- "%6lo%6lo%6lo%6lo%6lo%6lo%6lo%11lo%6lo%11lo", ++ "%6lo%6lo%6lo%6lo%6lo%6lo%6lo%11lo%6lo%11llo", + &dev, &file_hdr->c_ino, + &file_hdr->c_mode, &file_hdr->c_uid, &file_hdr->c_gid, + &file_hdr->c_nlink, &rdev, &file_hdr->c_mtime, +--- cpio-2.6/src/extern.h.lfs 2004-09-08 06:49:57.000000000 -0400 ++++ cpio-2.6/src/extern.h 2006-03-15 16:28:46.000000000 -0500 +@@ -161,14 +161,14 @@ void tape_empty_output_buffer P_((int out_des)); void disk_empty_output_buffer P_((int out_des)); void swahw_array P_((char *ptr, int count)); -void tape_buffered_write P_((char *in_buf, int out_des, long num_bytes)); -+void tape_buffered_write P_((char *in_buf, int out_des, unsigned long num_bytes)); - void tape_buffered_read P_((char *in_buf, int in_des, long num_bytes)); +-void tape_buffered_read P_((char *in_buf, int in_des, long num_bytes)); ++void tape_buffered_write P_((char *in_buf, int out_des, off_t num_bytes)); ++void tape_buffered_read P_((char *in_buf, int in_des, off_t num_bytes)); int tape_buffered_peek P_((char *peek_buf, int in_des, int num_bytes)); -void tape_toss_input P_((int in_des, long num_bytes)); -void copy_files_tape_to_disk P_((int in_des, int out_des, long num_bytes)); -void copy_files_disk_to_tape P_((int in_des, int out_des, long num_bytes, char *filename)); -void copy_files_disk_to_disk P_((int in_des, int out_des, long num_bytes, char *filename)); -+void tape_toss_input P_((int in_des, unsigned long num_bytes)); -+void copy_files_tape_to_disk P_((int in_des, int out_des, unsigned long num_bytes)); -+void copy_files_disk_to_tape P_((int in_des, int out_des, unsigned long num_bytes, char *filename)); -+void copy_files_disk_to_disk P_((int in_des, int out_des, unsigned long num_bytes, char *filename)); - void warn_if_file_changed P_((char *file_name, unsigned long old_file_size, +-void warn_if_file_changed P_((char *file_name, unsigned long old_file_size, ++void tape_toss_input P_((int in_des, off_t num_bytes)); ++void copy_files_tape_to_disk P_((int in_des, int out_des, off_t num_bytes)); ++void copy_files_disk_to_tape P_((int in_des, int out_des, off_t num_bytes, char *filename)); ++void copy_files_disk_to_disk P_((int in_des, int out_des, off_t num_bytes, char *filename)); ++void warn_if_file_changed P_((char *file_name, off_t old_file_size, unsigned long old_file_mtime)); void create_all_directories P_((char *name)); ---- cpio-2.6/src/util.c.lfs 2004-09-08 12:44:49.000000000 +0200 -+++ cpio-2.6/src/util.c 2005-07-01 13:56:49.000000000 +0200 + void prepare_append P_((int out_file_des)); +--- cpio-2.6/src/util.c.lfs 2004-09-08 06:44:49.000000000 -0400 ++++ cpio-2.6/src/util.c 2006-03-15 16:29:20.000000000 -0500 @@ -207,7 +207,7 @@ Exit with an error if end of file is reached. */ static int -disk_fill_input_buffer (int in_des, int num_bytes) -+disk_fill_input_buffer (int in_des, unsigned long num_bytes) ++disk_fill_input_buffer (int in_des, off_t num_bytes) { in_buff = input_buffer; num_bytes = (num_bytes < DISK_IO_BLOCK_SIZE) ? num_bytes : DISK_IO_BLOCK_SIZE; -@@ -227,9 +227,9 @@ +@@ -227,10 +227,10 @@ When `out_buff' fills up, flush it to file descriptor OUT_DES. */ void -tape_buffered_write (char *in_buf, int out_des, long num_bytes) -+tape_buffered_write (char *in_buf, int out_des, unsigned long num_bytes) ++tape_buffered_write (char *in_buf, int out_des, off_t num_bytes) { - register long bytes_left = num_bytes; /* Bytes needing to be copied. */ -+ register unsigned long bytes_left = num_bytes; /* Bytes needing to be copied. */ - register long space_left; /* Room left in output buffer. */ +- register long space_left; /* Room left in output buffer. */ ++ off_t bytes_left = num_bytes; /* Bytes needing to be copied. */ ++ off_t space_left; /* Room left in output buffer. */ while (bytes_left > 0) -@@ -254,9 +254,9 @@ + { +@@ -254,10 +254,10 @@ When `out_buff' fills up, flush it to file descriptor OUT_DES. */ void -disk_buffered_write (char *in_buf, int out_des, long num_bytes) -+disk_buffered_write (char *in_buf, int out_des, unsigned long num_bytes) ++disk_buffered_write (char *in_buf, int out_des, off_t num_bytes) + { +- register long bytes_left = num_bytes; /* Bytes needing to be copied. */ +- register long space_left; /* Room left in output buffer. */ ++ off_t bytes_left = num_bytes; /* Bytes needing to be copied. */ ++ off_t space_left; /* Room left in output buffer. */ + + while (bytes_left > 0) + { +@@ -282,10 +282,10 @@ + When `in_buff' is exhausted, refill it from file descriptor IN_DES. */ + + void +-tape_buffered_read (char *in_buf, int in_des, long num_bytes) ++tape_buffered_read (char *in_buf, int in_des, off_t num_bytes) { - register long bytes_left = num_bytes; /* Bytes needing to be copied. */ -+ register unsigned long bytes_left = num_bytes; /* Bytes needing to be copied. */ - register long space_left; /* Room left in output buffer. */ +- register long space_left; /* Bytes to copy from input buffer. */ ++ off_t bytes_left = num_bytes; /* Bytes needing to be copied. */ ++ off_t space_left; /* Bytes to copy from input buffer. */ while (bytes_left > 0) -@@ -376,9 +376,9 @@ + { +@@ -376,10 +376,10 @@ /* Skip the next NUM_BYTES bytes of file descriptor IN_DES. */ void -tape_toss_input (int in_des, long num_bytes) -+tape_toss_input (int in_des, unsigned long num_bytes) ++tape_toss_input (int in_des, off_t num_bytes) { - register long bytes_left = num_bytes; /* Bytes needing to be copied. */ -+ register unsigned long bytes_left = num_bytes; /* Bytes needing to be copied. */ - register long space_left; /* Bytes to copy from input buffer. */ +- register long space_left; /* Bytes to copy from input buffer. */ ++ off_t bytes_left = num_bytes; /* Bytes needing to be copied. */ ++ off_t space_left; /* Bytes to copy from input buffer. */ while (bytes_left > 0) + { @@ -404,12 +404,12 @@ } static void -write_nuls_to_file (long num_bytes, int out_des, -+write_nuls_to_file (unsigned long num_bytes, int out_des, - void (*writer) (char *in_buf, int out_des, long num_bytes)) +- void (*writer) (char *in_buf, int out_des, long num_bytes)) ++write_nuls_to_file (off_t num_bytes, int out_des, ++ void (*writer) (char *in_buf, int out_des, off_t num_bytes)) { - long blocks; -+ unsigned long blocks; - long extra_bytes; +- long extra_bytes; - long i; -+ unsigned long i; ++ off_t blocks; ++ off_t extra_bytes; ++ off_t i; blocks = num_bytes / 512; extra_bytes = num_bytes % 512; -@@ -428,10 +428,10 @@ +@@ -428,7 +428,7 @@ NUM_BYTES is the number of bytes to copy. */ void -copy_files_tape_to_disk (int in_des, int out_des, long num_bytes) -+copy_files_tape_to_disk (int in_des, int out_des, unsigned long num_bytes) ++copy_files_tape_to_disk (int in_des, int out_des, off_t num_bytes) { -- long size; -- long k; -+ unsigned long size; -+ unsigned long k; - - while (num_bytes > 0) - { + long size; + long k; @@ -458,13 +458,13 @@ NUM_BYTES is the number of bytes to copy. */ void -copy_files_disk_to_tape (int in_des, int out_des, long num_bytes, -+copy_files_disk_to_tape (int in_des, int out_des, unsigned long num_bytes, ++copy_files_disk_to_tape (int in_des, int out_des, off_t num_bytes, char *filename) { -- long size; -- long k; -+ unsigned long size; -+ unsigned long k; + long size; + long k; int rc; - long original_num_bytes; -+ unsigned long original_num_bytes; ++ off_t original_num_bytes; original_num_bytes = num_bytes; @@ -143,15 +179,13 @@ void -copy_files_disk_to_disk (int in_des, int out_des, long num_bytes, -+copy_files_disk_to_disk (int in_des, int out_des, unsigned long num_bytes, ++copy_files_disk_to_disk (int in_des, int out_des, off_t num_bytes, char *filename) { -- long size; -- long k; + long size; + long k; - long original_num_bytes; -+ unsigned long size; -+ unsigned long k; -+ unsigned long original_num_bytes; ++ off_t original_num_bytes; int rc; original_num_bytes = num_bytes; @@ -168,3 +202,45 @@ original_num_bytes - num_bytes, filename); write_nuls_to_file (num_bytes, out_des, disk_buffered_write); break; +@@ -544,7 +544,7 @@ + /* Warn if file changed while it was being copied. */ + + void +-warn_if_file_changed (char *file_name, unsigned long old_file_size, ++warn_if_file_changed (char *file_name, off_t old_file_size, + unsigned long old_file_mtime) + { + struct stat new_file_stat; +@@ -696,8 +696,8 @@ + temp = (temp + 1) % hash_size) + { + if (hash_table[temp]->inode == node_num +- && hash_table[start]->major_num == major_num +- && hash_table[start]->minor_num == minor_num) ++ && hash_table[temp]->major_num == major_num ++ && hash_table[temp]->minor_num == minor_num) + return hash_table[temp]->file_name; + } + } +--- cpio-2.6/src/cpiohdr.h.lfs 2003-11-21 09:48:13.000000000 -0500 ++++ cpio-2.6/src/cpiohdr.h 2006-03-15 16:27:30.000000000 -0500 +@@ -34,8 +34,8 @@ + unsigned short c_mtimes[2]; + unsigned short c_namesize; + unsigned short c_filesizes[2]; +- unsigned long c_mtime; /* Long-aligned copy of `c_mtimes'. */ +- unsigned long c_filesize; /* Long-aligned copy of `c_filesizes'. */ ++ unsigned int c_mtime; /* aligned copy of `c_mtimes'. */ ++ unsigned int c_filesize; /* aligned copy of `c_filesizes'. */ + char *c_name; + }; + +@@ -76,7 +76,7 @@ + unsigned long c_gid; + unsigned long c_nlink; + unsigned long c_mtime; +- unsigned long c_filesize; ++ off_t c_filesize; + long c_dev_maj; + long c_dev_min; + long c_rdev_maj; diff --git a/cpio-2.6-warnings.patch b/cpio-2.6-warnings.patch index f7e84f1..3807167 100644 --- a/cpio-2.6-warnings.patch +++ b/cpio-2.6-warnings.patch @@ -1,21 +1,3 @@ -2005-05-04 Dmitry V. Levin - - Deal with compilation warnings generated by gcc compiler. - - * src/copyin.c (list_file, copyin_regular_file, long_format, - process_copy_in): Fix format strings. - (create_defered_links_to_skipped): Remove unused variable - `link_res'. - (process_copy_in): Initialize tty_in, tty_out and rename_in. - * src/copyout.c (write_out_header): Initialize dev along with - rdev. - * src/tar.c (is_tar_filename_too_long): Remove unused variable `p'; - * src/util.c: Include and - (sparse_write): Add forward declaration. Initialize write_count - and cur_write_start variables. - (copy_files_disk_to_tape, copy_files_disk_to_disk): Add - parentheses around assignment. - diff -uprk.orig cpio-2.6.orig/src/copyin.c cpio-2.6/src/copyin.c --- cpio-2.6.orig/src/copyin.c 2004-09-08 11:10:02 +0000 +++ cpio-2.6/src/copyin.c 2005-05-04 12:43:42 +0000 @@ -24,7 +6,7 @@ diff -uprk.orig cpio-2.6.orig/src/copyin.c cpio-2.6/src/copyin.c if (crc != file_hdr->c_chksum) { - error (0, 0, _("%s: checksum error (0x%x, should be 0x%x)"), -+ error (0, 0, _("%s: checksum error (0x%lx, should be 0x%lx)"), ++ error (0, 0, _("%s: checksum error (0x%x, should be 0x%lx)"), file_hdr->c_name, crc, file_hdr->c_chksum); } } @@ -41,7 +23,7 @@ diff -uprk.orig cpio-2.6.orig/src/copyin.c cpio-2.6/src/copyin.c { if (crc != file_hdr->c_chksum) - error (0, 0, _("%s: checksum error (0x%x, should be 0x%x)"), -+ error (0, 0, _("%s: checksum error (0x%lx, should be 0x%lx)"), ++ error (0, 0, _("%s: checksum error (0x%x, should be 0x%lx)"), file_hdr->c_name, crc, file_hdr->c_chksum); } tape_skip_padding (in_file_des, file_hdr->c_filesize); @@ -50,7 +32,7 @@ diff -uprk.orig cpio-2.6.orig/src/copyin.c cpio-2.6/src/copyin.c { if (crc != file_hdr->c_chksum) - error (0, 0, _("%s: checksum error (0x%x, should be 0x%x)"), -+ error (0, 0, _("%s: checksum error (0x%lx, should be 0x%lx)"), ++ error (0, 0, _("%s: checksum error (0x%x, should be 0x%lx)"), file_hdr->c_name, crc, file_hdr->c_chksum); } @@ -90,7 +72,7 @@ diff -uprk.orig cpio-2.6.orig/src/copyin.c cpio-2.6/src/copyin.c if (crc != file_hdr.c_chksum) { - error (0, 0, _("%s: checksum error (0x%x, should be 0x%x)"), -+ error (0, 0, _("%s: checksum error (0x%lx, should be 0x%lx)"), ++ error (0, 0, _("%s: checksum error (0x%x, should be 0x%lx)"), file_hdr.c_name, crc, file_hdr.c_chksum); } /* Debian hack: -v and -V now work with --only-verify-crc. diff --git a/cpio-2.6-writeOutHeaderBufferOverflow.patch b/cpio-2.6-writeOutHeaderBufferOverflow.patch index e0b1810..a0ba22a 100644 --- a/cpio-2.6-writeOutHeaderBufferOverflow.patch +++ b/cpio-2.6-writeOutHeaderBufferOverflow.patch @@ -55,7 +55,7 @@ +static void +field_width_error (const char *filename, const char *fieldname) +{ -+ error (0, 0, _("%s: field width not sufficient for storing %s"), ++ error (1, 0, _("%s: field width not sufficient for storing %s"), + filename, fieldname); +} + diff --git a/cpio.spec b/cpio.spec index 8284463..b4a523c 100644 --- a/cpio.spec +++ b/cpio.spec @@ -6,7 +6,7 @@ Summary: A GNU archiving program. Name: cpio Version: 2.6 -Release: 12 +Release: 13 License: GPL Group: Applications/Archiving URL: http://www.gnu.org/software/cpio/ @@ -21,8 +21,6 @@ Patch19: cpio-2.6-dirTraversal.patch Patch20: cpio-2.6-warnings.patch Patch21: cpio-2.6-checksum.patch Patch22: cpio-2.6-writeOutHeaderBufferOverflow.patch -Patch23: cpio-2.6-largeFileGrew.patch -Patch24: cpio-2.6-toAsciiError.patch %ifnos linux Prereq: /sbin/rmt %endif @@ -56,8 +54,6 @@ Install cpio if you need a program to manage file archives. %patch20 -p1 -b .warnings %patch21 -p1 -b .checksum %patch22 -p1 -b .bufferOverflow -%patch23 -p1 -b .largeFileGrew -%patch24 -p1 -b .toAsciiError autoheader %build @@ -107,6 +103,13 @@ fi %{_infodir}/*.info* %changelog +* Wed Mar 15 2006 Peter Vrabec 2.6-13 +- merge toAsciiError.patch with writeOutHeaderBufferOverflow.patch +- merge largeFileGrew.patch with lfs.patch +- fix large file support, cpio is able to store files<8GB + in 'old ascii' format (-H odc option) +- adjust warnings.patch + * Tue Mar 14 2006 Peter Vrabec 2.6-12 - fix warn_if_file_changed() and set exit code to #1 when cpio fails to store file > 4GB (#183224)