Add a testcase for PR binutils/14481
[external/binutils.git] / binutils / bfdtest1.c
1 /* A program to test BFD.
2    Copyright 2012 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
37   if (argc != 2)
38     die ("bad usage");
39
40   archive = bfd_openr (argv[1], NULL);
41
42   if (!bfd_check_format (archive, bfd_archive))
43     {
44       bfd_close (archive);
45       die ("bfd_check_format");
46     }
47
48   for (last = bfd_openr_next_archived_file (archive, NULL);
49        last;
50        last = next)
51     {
52       next = bfd_openr_next_archived_file (archive, last);
53       bfd_close (last);
54     }
55
56   for (last = bfd_openr_next_archived_file (archive, NULL);
57        last;
58        last = next)
59     {
60       next = bfd_openr_next_archived_file (archive, last);
61       bfd_close (last);
62     }
63
64   if (!bfd_close (archive))
65     die ("bfd_close");
66
67   return 0;
68 }