diff options
author | Nick Clifton <nickc@redhat.com> | 2012-06-29 12:59:49 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2012-06-29 12:59:49 +0000 |
commit | 34debcd10be022a25d66ef911b30c4ae9131cdc9 (patch) | |
tree | 2c1b9e31f952906d5460de3442fa524b3227bb92 /binutils/ar.c | |
parent | 5afcec7379df04b065548241039cc253f88ea634 (diff) | |
download | gdb-34debcd10be022a25d66ef911b30c4ae9131cdc9.zip gdb-34debcd10be022a25d66ef911b30c4ae9131cdc9.tar.gz gdb-34debcd10be022a25d66ef911b30c4ae9131cdc9.tar.bz2 |
PR binutils/14302
* bucomm.c (print_arelt_descr): Correctly report the archive size
field (for 'ar tv').
* ar.c (print_contents): Use correct types for archive element
sizes (for 'ar p').
(extract_file): Likewise (for 'ar x').
Diffstat (limited to 'binutils/ar.c')
-rw-r--r-- | binutils/ar.c | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/binutils/ar.c b/binutils/ar.c index 13637f4..aceb9d1 100644 --- a/binutils/ar.c +++ b/binutils/ar.c @@ -937,10 +937,11 @@ open_inarch (const char *archive_filename, const char *file) static void print_contents (bfd *abfd) { - size_t ncopied = 0; + bfd_size_type ncopied = 0; + bfd_size_type size; char *cbuf = (char *) xmalloc (BUFSIZE); struct stat buf; - size_t size; + if (bfd_stat_arch_elt (abfd, &buf) != 0) /* xgettext:c-format */ fatal (_("internal stat error on %s"), bfd_get_filename (abfd)); @@ -953,22 +954,22 @@ print_contents (bfd *abfd) size = buf.st_size; while (ncopied < size) { + bfd_size_type nread; + bfd_size_type tocopy = size - ncopied; - size_t nread; - size_t tocopy = size - ncopied; if (tocopy > BUFSIZE) tocopy = BUFSIZE; - nread = bfd_bread (cbuf, (bfd_size_type) tocopy, abfd); + nread = bfd_bread (cbuf, tocopy, abfd); if (nread != tocopy) /* xgettext:c-format */ fatal (_("%s is not a valid archive"), bfd_get_filename (bfd_my_archive (abfd))); - /* fwrite in mingw32 may return int instead of size_t. Cast the - return value to size_t to avoid comparison between signed and + /* fwrite in mingw32 may return int instead of bfd_size_type. Cast the + return value to bfd_size_type to avoid comparison between signed and unsigned values. */ - if ((size_t) fwrite (cbuf, 1, nread, stdout) != nread) + if ((bfd_size_type) fwrite (cbuf, 1, nread, stdout) != nread) fatal ("stdout: %s", strerror (errno)); ncopied += tocopy; } @@ -990,9 +991,9 @@ extract_file (bfd *abfd) { FILE *ostream; char *cbuf = (char *) xmalloc (BUFSIZE); - size_t nread, tocopy; - size_t ncopied = 0; - size_t size; + bfd_size_type nread, tocopy; + bfd_size_type ncopied = 0; + bfd_size_type size; struct stat buf; if (bfd_stat_arch_elt (abfd, &buf) != 0) @@ -1027,7 +1028,7 @@ extract_file (bfd *abfd) if (tocopy > BUFSIZE) tocopy = BUFSIZE; - nread = bfd_bread (cbuf, (bfd_size_type) tocopy, abfd); + nread = bfd_bread (cbuf, tocopy, abfd); if (nread != tocopy) /* xgettext:c-format */ fatal (_("%s is not a valid archive"), @@ -1049,10 +1050,10 @@ extract_file (bfd *abfd) output_file = ostream; } - /* fwrite in mingw32 may return int instead of size_t. Cast - the return value to size_t to avoid comparison between + /* fwrite in mingw32 may return int instead of bfd_size_type. Cast + the return value to bfd_size_type to avoid comparison between signed and unsigned values. */ - if ((size_t) fwrite (cbuf, 1, nread, ostream) != nread) + if ((bfd_size_type) fwrite (cbuf, 1, nread, ostream) != nread) fatal ("%s: %s", output_filename, strerror (errno)); ncopied += tocopy; } |