update copyright dates
[deliverable/binutils-gdb.git] / binutils / binemul.c
CommitLineData
eb1e0e80 1/* Binutils emulation layer.
aa820537 2 Copyright 2002, 2003, 2005, 2007, 2008 Free Software Foundation, Inc.
ad94be02 3 Written by Tom Rix, Red Hat Inc.
eb1e0e80
NC
4
5 This file is part of GNU Binutils.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
32866df7 9 the Free Software Foundation; either version 3 of the License, or
eb1e0e80
NC
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
32866df7
NC
19 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
20 MA 02110-1301, USA. */
eb1e0e80
NC
21
22#include "binemul.h"
23
24extern bin_emulation_xfer_type bin_dummy_emulation;
25
26void
2da42df6 27ar_emul_usage (FILE *fp)
eb1e0e80
NC
28{
29 if (bin_dummy_emulation.ar_usage)
30 bin_dummy_emulation.ar_usage (fp);
31}
32
33void
2da42df6 34ar_emul_default_usage (FILE *fp)
eb1e0e80
NC
35{
36 AR_EMUL_USAGE_PRINT_OPTION_HEADER (fp);
37 /* xgettext:c-format */
38 fprintf (fp, _(" No emulation specific options\n"));
39}
40
b34976b6 41bfd_boolean
a8da6403
NC
42ar_emul_append (bfd **after_bfd, char *file_name, bfd_boolean verbose,
43 bfd_boolean flatten)
eb1e0e80
NC
44{
45 if (bin_dummy_emulation.ar_append)
a8da6403
NC
46 return bin_dummy_emulation.ar_append (after_bfd, file_name, verbose,
47 flatten);
eb1e0e80 48
b34976b6 49 return FALSE;
eb1e0e80
NC
50}
51
a8da6403
NC
52static bfd_boolean
53do_ar_emul_default_append (bfd **after_bfd, bfd *new_bfd,
54 bfd_boolean verbose, bfd_boolean flatten)
55 {
56 /* When flattening, add the members of an archive instead of the
57 archive itself. */
58 if (flatten && bfd_check_format (new_bfd, bfd_archive))
59 {
60 bfd *elt;
61 bfd_boolean added = FALSE;
62
63 for (elt = bfd_openr_next_archived_file (new_bfd, NULL);
64 elt;
65 elt = bfd_openr_next_archived_file (new_bfd, elt))
66 {
67 if (do_ar_emul_default_append (after_bfd, elt, verbose, TRUE))
68 {
69 added = TRUE;
70 after_bfd = &((*after_bfd)->archive_next);
71 }
72 }
73
74 return added;
75 }
76
77 AR_EMUL_APPEND_PRINT_VERBOSE (verbose, new_bfd->filename);
78
79 new_bfd->archive_next = *after_bfd;
80 *after_bfd = new_bfd;
81
82 return TRUE;
83}
84
b34976b6 85bfd_boolean
2da42df6 86ar_emul_default_append (bfd **after_bfd, char *file_name,
a8da6403 87 bfd_boolean verbose, bfd_boolean flatten)
eb1e0e80 88{
a8da6403 89 bfd *new_bfd;
eb1e0e80 90
a8da6403
NC
91 new_bfd = bfd_openr (file_name, NULL);
92 AR_EMUL_ELEMENT_CHECK (new_bfd, file_name);
93 return do_ar_emul_default_append (after_bfd, new_bfd, verbose, flatten);
eb1e0e80
NC
94}
95
b34976b6 96bfd_boolean
2da42df6 97ar_emul_replace (bfd **after_bfd, char *file_name, bfd_boolean verbose)
eb1e0e80
NC
98{
99 if (bin_dummy_emulation.ar_replace)
100 return bin_dummy_emulation.ar_replace (after_bfd, file_name, verbose);
101
b34976b6 102 return FALSE;
eb1e0e80
NC
103}
104
b34976b6 105bfd_boolean
2da42df6
AJ
106ar_emul_default_replace (bfd **after_bfd, char *file_name,
107 bfd_boolean verbose)
eb1e0e80
NC
108{
109 bfd *temp;
110
111 temp = *after_bfd;
112 *after_bfd = bfd_openr (file_name, NULL);
113
114 AR_EMUL_ELEMENT_CHECK (*after_bfd, file_name);
115 AR_EMUL_REPLACE_PRINT_VERBOSE (verbose, file_name);
116
cc481421 117 (*after_bfd)->archive_next = temp;
eb1e0e80 118
b34976b6 119 return TRUE;
eb1e0e80
NC
120}
121
b34976b6 122bfd_boolean
2da42df6 123ar_emul_parse_arg (char *arg)
eb1e0e80
NC
124{
125 if (bin_dummy_emulation.ar_parse_arg)
126 return bin_dummy_emulation.ar_parse_arg (arg);
127
b34976b6 128 return FALSE;
eb1e0e80
NC
129}
130
b34976b6 131bfd_boolean
2da42df6 132ar_emul_default_parse_arg (char *arg ATTRIBUTE_UNUSED)
eb1e0e80 133{
b34976b6 134 return FALSE;
eb1e0e80 135}
This page took 0.327526 seconds and 4 git commands to generate.