for (ptr = list; ptr; ptr=ptr->next) { boolean         found = false; bfd *prev = arch; for (head = arch->next; head; head = head->next) { if ((head->filename != NULL) && (!strcmp(ptr->name, head->filename)))
for (ptr = list; ptr; ptr = ptr->next)
  PARAMS ((bfd *, void (*function) (bfd *, bfd *), struct list *));static void ar_directory_doer PARAMS ((bfd *, bfd *));static void ar_addlib_doer PARAMS ((bfd *, bfd *));extern int verbose;extern char *strdup();static voidmap_over_list (arch, function, list)     bfd *arch;     void (*function) PARAMS ((bfd *, bfd *));     struct list *list;{  bfd            *head;  if (list == 0) {    for (head = arch->next; head; head = head->next){      function (head, (bfd *) NULL);    }  }  else {    /*      This may appear to be a baroque way of accomplishing what we want.      however we have to iterate over the filenames in order to notice where      a filename is requested but does not exist in the archive.  Ditto      mapping over each file each time -- we want to hack multiple      references.      */    struct list *ptr = list;    for (ptr = list; ptr; ptr=ptr->next)    {      boolean         found = false;      bfd *prev = arch;      for (head = arch->next; head; head = head->next)       {	if ((head->filename != NULL) &&	    (!strcmp(ptr->name, head->filename))) 	{	  found = true;	  function(head, prev);	}	prev = head;      }      if (!found)       fprintf(stderr, "No entry %s in archive.\n", ptr->name);    }  }}