Various noise
authorSteve Chamberlain <steve@cygnus>
Wed, 3 Apr 1991 22:09:43 +0000 (22:09 +0000)
committerSteve Chamberlain <steve@cygnus>
Wed, 3 Apr 1991 22:09:43 +0000 (22:09 +0000)
bfd/archive.c

index 53cd0bd7c7fbafa9f169df6526a1577a4e830318..e89db377c2cc85c6ef48790c90850b630b55d691 100644 (file)
@@ -28,7 +28,13 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 /* $Id$ 
  * $Log$
- * Revision 1.1  1991/03/21 21:10:42  gumby
+ * Revision 1.2  1991/04/03 22:09:43  steve
+ * Various noise
+ *
+ * Revision 1.1.1.1  1991/03/21  21:10:42  gumby
+ * Back from Intel with Steve
+ *
+ * Revision 1.1  1991/03/21  21:10:42  gumby
  * Initial revision
  *
  * Revision 1.3  1991/03/16  05:55:25  rich
@@ -259,7 +265,7 @@ snarf_ar_hdr (abfd)
 
            namelen = 0;
 
-           while (namelen < ar_maxnamelen(abfd) &&
+           while (namelen < (unsigned)ar_maxnamelen(abfd) &&
                   ( hdr.ar_name[namelen] != 0 &&
                    hdr.ar_name[namelen] != ' ' &&
                    hdr.ar_name[namelen] != ar_padchar(abfd))) {
@@ -903,7 +909,7 @@ _bfd_write_archive_contents (arch)
     
     BFD_SEND (arch, _bfd_truncate_arname,(arch, 
                                          current->filename,
-                                         arch_hdr(current)));
+                                        (char *) arch_hdr(current)));
 
       
     }
@@ -959,14 +965,16 @@ _bfd_write_archive_contents (arch)
        return false;
       }
     if (bfd_seek (current, 0L, SEEK_SET) != 0L) goto syserr;
-    while (remaining) {
-      unsigned int amt = ((remaining <= DEFAULT_BUFFERSIZE) ? remaining :
-                         DEFAULT_BUFFERSIZE);
-
-      if (bfd_read (buffer, amt, 1, current) != amt) goto syserr;
-      if (bfd_write (buffer, amt, 1, arch)   != amt) goto syserr;
-      remaining -= amt;
-    }
+    while (remaining) 
+       {
+         unsigned int amt = DEFAULT_BUFFERSIZE;
+         if (amt > remaining) {
+           amt = remaining;
+         }
+         if (bfd_read (buffer, amt, 1, current) != amt) goto syserr;
+         if (bfd_write (buffer, amt, 1, arch)   != amt) goto syserr;
+         remaining -= amt;
+       }
     if ((arelt_size (current) % 2) == 1) bfd_write ("\n", 1, 1, arch);
   }
 return true;
@@ -1003,52 +1011,49 @@ compute_and_write_armap (arch, elength)
        current != (bfd *)NULL;
        current = current->next, elt_no++) 
       {
-    if ((bfd_check_format (current, bfd_object) == true)
-       && ((bfd_get_file_flags (current) & HAS_SYMS))) {
-      asymbol **syms;
-      unsigned int storage;
-      unsigned int symcount;
-      unsigned int src_count;
-
-      storage = get_symtab_upper_bound (current);
-      if (storage == 0) {
-      nosymz:
-       fprintf (stderr, "%s: Symflags set but there are none?\n",
-                bfd_get_filename (current));
-       exit (1);
-      }
-      syms = (asymbol **) zalloc (storage);
-      if (syms == NULL) {
-       bfd_error = no_memory;  /* FIXME -- memory leak */
-       return false;
-      }
-      symcount = bfd_canonicalize_symtab (current, syms);
-      if (symcount == 0) goto nosymz;
-
-      /* Now map over all the symbols, picking out the ones we want */
-      for (src_count = 0; src_count <symcount; src_count++) {
-       flagword flags = (syms[src_count])->flags;
-       if ((flags & BSF_GLOBAL) ||
-           (flags & BSF_FORT_COMM)) {
-
-         /* This symbol will go into the archive header */
-         if (orl_count == orl_max) 
-             {
-           orl_max *= 2;
-           map = (struct orl *) realloc ((char *) map,
-                                         orl_max * sizeof (struct orl));
+       if ((bfd_check_format (current, bfd_object) == true)
+           && ((bfd_get_file_flags (current) & HAS_SYMS))) {
+         asymbol **syms;
+         unsigned int storage;
+         unsigned int symcount;
+         unsigned int src_count;
+
+         storage = get_symtab_upper_bound (current);
+         if (storage != 0) {
+
+           syms = (asymbol **) zalloc (storage);
+           if (syms == NULL) {
+             bfd_error = no_memory; /* FIXME -- memory leak */
+             return false;
+           }
+           symcount = bfd_canonicalize_symtab (current, syms);
+
+
+           /* Now map over all the symbols, picking out the ones we want */
+           for (src_count = 0; src_count <symcount; src_count++) {
+             flagword flags = (syms[src_count])->flags;
+             if ((flags & BSF_GLOBAL) ||
+                 (flags & BSF_FORT_COMM)) {
+
+               /* This symbol will go into the archive header */
+               if (orl_count == orl_max) 
+                   {
+                     orl_max *= 2;
+                     map = (struct orl *) realloc ((char *) map,
+                                                   orl_max * sizeof (struct orl));
+                   }
+
+               (map[orl_count]).name = &((syms[src_count])->name);
+               (map[orl_count]).pos = elt_no;
+               (map[orl_count]).namidx = stridx;
+
+               stridx += strlen ((syms[src_count])->name) + 1;
+               ++orl_count;
+             }
+           }
          }
-
-         (map[orl_count]).name = &((syms[src_count])->name);
-         (map[orl_count]).pos = elt_no;
-         (map[orl_count]).namidx = stridx;
-
-         stridx += strlen ((syms[src_count])->name) + 1;
-         ++orl_count;
        }
       }
-    }
-  }
   /* OK, now we have collected all the data, let's write them out */
   if (!BFD_SEND (arch, write_armap,
                 (arch, elength, map, orl_count, stridx))) {