cpio: fix a bug where we do not extract zero-sized hardlinks

(spotted at http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=466771).
Add testsuite entry for that, and another one for another bug:
we do not list hardlinks in cpio -t (not fixed).

function                                             old     new   delta
get_header_cpio                                      884     909     +25
static.saved_hardlinks_created                         -       4      +4
static.pending_hardlinks                               4       -      -4
static.inode                                           4       -      -4
cpio_main                                           1122    1060     -62
This commit is contained in:
Denis Vlasenko
2008-04-05 02:44:30 +00:00
parent 1a95e3960c
commit 1af00eda92
7 changed files with 99 additions and 105 deletions

View File

@ -171,9 +171,7 @@ static int cpio_o(void)
int fd = xopen(name, O_RDONLY);
fflush(stdout);
/* We must abort if file got shorter too! */
if (bb_copyfd_size(fd, STDOUT_FILENO, st.st_size) != st.st_size) {
bb_error_msg_and_die("I/O error or file '%s' was truncated", name);
}
bb_copyfd_exact_size(fd, STDOUT_FILENO, st.st_size);
bytes += st.st_size;
close(fd);
}