*** empty log message ***
[deliverable/binutils-gdb.git] / binutils / ar.c
index 0310b6f4b6c7f379f1de5ca3a41c2f84e3b48625..aceb9d1384336a7190a9dcaf4fd0a1c85b25fbe0 100644 (file)
@@ -1,6 +1,6 @@
 /* ar.c - Archive modify and extract.
    Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-   2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
+   2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
    Free Software Foundation, Inc.
 
    This file is part of GNU Binutils.
@@ -37,7 +37,6 @@
 #include "filenames.h"
 #include "binemul.h"
 #include "plugin.h"
-#include <sys/stat.h>
 
 #ifdef __GO32___
 #define EXT_NAME_LEN 3         /* Bufflen of addition to name if it's MS-DOS.  */
@@ -613,7 +612,18 @@ ranlib_main (int argc, char **argv)
        case 'V':
          show_version = 1;
          break;
-        }
+
+         /* PR binutils/13493: Support plugins.  */
+       case OPTION_PLUGIN:
+#if BFD_SUPPORTS_PLUGINS
+         plugin_target = "plugin";
+         bfd_plugin_set_plugin (optarg);
+#else
+         fprintf (stderr, _("sorry - this program has been built without plugin support\n"));
+         xexit (1);
+#endif
+         break;
+       }
     }
 
   if (argc < 2)
@@ -927,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));
@@ -943,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;
     }
@@ -980,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)
@@ -1017,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"),
@@ -1039,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;
       }
This page took 0.052242 seconds and 4 git commands to generate.