]>
Commit | Line | Data |
---|---|---|
58f594cd | 1 | /* A program to test BFD. |
d87bef3a | 2 | Copyright (C) 2012-2023 Free Software Foundation, Inc. |
58f594cd L |
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; | |
1052fb3e | 36 | int count; |
58f594cd L |
37 | |
38 | if (argc != 2) | |
3bfcb652 | 39 | die ("usage: bfdtest1 <archive>"); |
58f594cd L |
40 | |
41 | archive = bfd_openr (argv[1], NULL); | |
3bfcb652 NC |
42 | if (archive == NULL) |
43 | die ("no such archive"); | |
58f594cd L |
44 | |
45 | if (!bfd_check_format (archive, bfd_archive)) | |
46 | { | |
47 | bfd_close (archive); | |
48 | die ("bfd_check_format"); | |
49 | } | |
50 | ||
1052fb3e | 51 | for (count = 0, last = bfd_openr_next_archived_file (archive, NULL); |
58f594cd L |
52 | last; |
53 | last = next) | |
54 | { | |
55 | next = bfd_openr_next_archived_file (archive, last); | |
56 | bfd_close (last); | |
1052fb3e | 57 | count++; |
58f594cd L |
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); | |
1052fb3e | 66 | count--; |
58f594cd L |
67 | } |
68 | ||
1052fb3e AM |
69 | if (count != 0) |
70 | die ("element count differs in second scan"); | |
71 | ||
58f594cd L |
72 | if (!bfd_close (archive)) |
73 | die ("bfd_close"); | |
74 | ||
75 | return 0; | |
76 | } |