2004-02-22 Andrew Cagney <cagney@redhat.com>
[deliverable/binutils-gdb.git] / binutils / ar.c
index 95e1c665b1229d6b21ff654dd9b4391a37fd1427..b85d62ecf0d7ba26fd543c04a1be5e5f038230a0 100644 (file)
@@ -24,7 +24,7 @@
    should have long options too. GNU ar used to check file against filesystem
    in quick_update and replace operations (would check mtime). Doesn't warn
    when name truncated. No way to specify pos_end. Error messages should be
-   more consistant.  */
+   more consistent.  */
 
 #include "bfd.h"
 #include "libiberty.h"
@@ -103,7 +103,7 @@ int newer_only = 0;
 
 /* Controls the writing of an archive symbol table (in BSD: a __.SYMDEF
    member).  -1 means we've been explicitly asked to not write a symbol table;
-   +1 means we've been explictly asked to write it;
+   +1 means we've been explicitly asked to write it;
    0 is the default.
    Traditionally, the default in BSD has been to not write the table.
    However, for POSIX.2 compliance the default is now to write a symbol table
@@ -324,8 +324,8 @@ remove_output (void)
 {
   if (output_filename != NULL)
     {
-      if (output_bfd != NULL && output_bfd->iostream != NULL)
-       fclose ((FILE *) (output_bfd->iostream));
+      if (output_bfd != NULL)
+       bfd_cache_close (output_bfd);
       if (output_file != NULL)
        fclose (output_file);
       unlink (output_filename);
@@ -750,6 +750,8 @@ open_inarch (const char *archive_filename, const char *file)
          || ! bfd_set_format (arch, bfd_archive)
          || ! bfd_close (arch))
        bfd_fatal (archive_filename);
+      else if (!silent_create)
+        non_fatal (_("creating %s"), archive_filename);
 
       /* If we die creating a new archive, don't leave it around.  */
       output_filename = archive_filename;
@@ -802,7 +804,7 @@ print_contents (bfd *abfd)
 
   if (verbose)
     /* xgettext:c-format */
-    printf (_("\n<member %s>\n\n"), bfd_get_filename (abfd));
+    printf (_("\n<%s>\n\n"), bfd_get_filename (abfd));
 
   bfd_seek (abfd, (file_ptr) 0, SEEK_SET);
 
@@ -991,7 +993,7 @@ do_quick_append (const char *archive_filename, char **files_to_append)
   if (ar_truncate)
     temp->flags |= BFD_TRADITIONAL_FORMAT;
 
-  /* assume it's an achive, go straight to the end, sans $200 */
+  /* assume it's an archive, go straight to the end, sans $200 */
   fseek (ofile, 0, 2);
 
   for (; files_to_append && *files_to_append; ++files_to_append)
@@ -1305,7 +1307,9 @@ replace_members (bfd *arch, char **files_to_move, bfd_boolean quick)
 
       /* Add to the end of the archive.  */
       after_bfd = get_pos_bfd (&arch->next, pos_end, NULL);
-      if (ar_emul_append (after_bfd, *files_to_move, verbose))
+
+      if (get_file_size (* files_to_move) > 0
+         && ar_emul_append (after_bfd, *files_to_move, verbose))
        changed = TRUE;
 
     next_file:;
@@ -1324,6 +1328,8 @@ ranlib_only (const char *archname)
 {
   bfd *arch;
 
+  if (get_file_size (archname) < 1)
+    return;
   write_armap = 1;
   arch = open_inarch (archname, (char *) NULL);
   if (arch == NULL)
@@ -1344,6 +1350,8 @@ ranlib_touch (const char *archname)
   bfd *arch;
   char **matching;
 
+  if (get_file_size (archname) < 1)
+    return;
   f = open (archname, O_RDWR | O_BINARY, 0);
   if (f < 0)
     {
This page took 0.034974 seconds and 4 git commands to generate.