PR 995
	* ar.c (BUFSIZE): Moved to ...
	* bucomm.h (BUFSIZE): Here.

	* bucomm.c: Include <assert.h>.
	(bfd_get_archive_filename): New.
	* bucomm.h (bfd_get_archive_filename): New.

	* objcopy.c (copy_unknown_object): New.
	(copy_object): Use bfd_get_archive_filename when reporting input
	error. Don't call fatal on unknown arch.
	(copy_archive): Call copy_unknown_object on unknown format or
	arch.
This commit is contained in:
H.J. Lu
2005-06-14 13:26:42 +00:00
parent c256ffe730
commit 77f762d6e4
5 changed files with 166 additions and 21 deletions

View File

@@ -31,6 +31,7 @@
#include <sys/stat.h>
#include <time.h> /* ctime, maybe time_t */
#include <assert.h>
#ifndef HAVE_TIME_T_IN_TIME_H
#ifndef HAVE_TIME_T_IN_TYPES_H
@@ -475,3 +476,38 @@ get_file_size (const char * file_name)
return 0;
}
/* Return the filename in a static buffer. */
const char *
bfd_get_archive_filename (bfd *abfd)
{
static size_t curr = 0;
static char *buf;
size_t needed;
assert (abfd != NULL);
if (!abfd->my_archive)
return bfd_get_filename (abfd);
needed = (strlen (bfd_get_filename (abfd->my_archive))
+ strlen (bfd_get_filename (abfd)) + 3);
if (needed > curr)
{
if (curr)
free (buf);
curr = needed + (needed >> 1);
buf = bfd_malloc (curr);
/* If we can't malloc, fail safe by returning just the file name.
This function is only used when building error messages. */
if (!buf)
{
curr = 0;
return bfd_get_filename (abfd);
}
}
sprintf (buf, "%s(%s)", bfd_get_filename (abfd->my_archive),
bfd_get_filename (abfd));
return buf;
}