/* arsup.c - Archive support for MRI compatibility
- Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 1999
+ Copyright 1992, 1994, 1995, 1996, 1997, 2000
Free Software Foundation, Inc.
This file is part of GNU Binutils.
#include "arsup.h"
#include "libiberty.h"
#include "bucomm.h"
+#include "filenames.h"
static void map_over_list
PARAMS ((bfd *, void (*function) (bfd *, bfd *), struct list *));
for (head = arch->next; head; head = head->next)
{
if (head->filename != NULL
- && strcmp (ptr->name, head->filename) == 0)
+ && FILENAME_CMP (ptr->name, head->filename) == 0)
{
found = true;
function (head, prev);
{
char *tname = (char *) xmalloc (strlen (name) + 10);
+ const char *bname = lbasename (name);
real_name = name;
- sprintf(tname, "%s-tmp", name);
+ /* Prepend tmp- to the beginning, to avoid file-name clashes after
+ truncation on filesystems with limited namespaces (DOS). */
+ sprintf(tname, "%.*stmp-%s", (int) (bname - name), name, bname);
obfd = bfd_openw(tname, NULL);
if (!obfd) {
bfd **prev = &(obfd->archive_head);
int found = 0;
while (member) {
- if (strcmp(member->filename, list->name) == 0) {
+ if (FILENAME_CMP(member->filename, list->name) == 0) {
*prev = member->next;
found = 1;
}
int found = 0;
while (member)
{
- if (strcmp(member->filename, list->name) == 0)
+ if (FILENAME_CMP(member->filename, list->name) == 0)
{
/* Found the one to replace */
bfd *abfd = bfd_openr(list->name, 0);
int found = 0;
while (member && !found)
{
- if (strcmp(member->filename, list->name) == 0)
+ if (FILENAME_CMP(member->filename, list->name) == 0)
{
extract_file(member);
found = 1;