(root)/
binutils-2.41/
binutils/
bfdtest1.c
       1  /* A program to test BFD.
       2     Copyright (C) 2012-2023 Free Software Foundation, Inc.
       3  
       4     This file is part of the GNU Binutils.
       5  
       6     This program is free software; you can redistribute it and/or modify
       7     it under the terms of the GNU General Public License as published by
       8     the Free Software Foundation; either version 3 of the License, or
       9     (at your option) any later version.
      10  
      11     This program is distributed in the hope that it will be useful,
      12     but WITHOUT ANY WARRANTY; without even the implied warranty of
      13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14     GNU General Public License for more details.
      15  
      16     You should have received a copy of the GNU General Public License
      17     along with this program; if not, write to the Free Software
      18     Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
      19     MA 02110-1301, USA.  */
      20  
      21  #include "sysdep.h"
      22  #include "bfd.h"
      23  
      24  static void
      25  die (const char *s)
      26  {
      27    printf ("oops: %s\n", s);
      28    exit (1);
      29  }
      30  
      31  int
      32  main (int argc, char **argv)
      33  {
      34    bfd *archive;
      35    bfd *last, *next;
      36    int count;
      37  
      38    if (argc != 2)
      39      die ("usage: bfdtest1 <archive>");
      40  
      41    archive = bfd_openr (argv[1], NULL);
      42    if (archive == NULL)
      43      die ("no such archive");
      44  
      45    if (!bfd_check_format (archive, bfd_archive))
      46      {
      47        bfd_close (archive);
      48        die ("bfd_check_format");
      49      }
      50  
      51    for (count = 0, last = bfd_openr_next_archived_file (archive, NULL);
      52         last;
      53         last = next)
      54      {
      55        next = bfd_openr_next_archived_file (archive, last);
      56        bfd_close (last);
      57        count++;
      58      }
      59  
      60    for (last = bfd_openr_next_archived_file (archive, NULL);
      61         last;
      62         last = next)
      63      {
      64        next = bfd_openr_next_archived_file (archive, last);
      65        bfd_close (last);
      66        count--;
      67      }
      68  
      69    if (count != 0)
      70      die ("element count differs in second scan");
      71  
      72    if (!bfd_close (archive))
      73      die ("bfd_close");
      74  
      75    return 0;
      76  }