(map_over_members): Call normalize on command line parameter.
(usage): Mention P modifier.
(normalize): If full_pathname is true, don't do anything.
(main): Accept P modifier.
* binutils.texi, ar.1: Document P modifier.
+1999-09-12 Ian Lance Taylor <ian@zembu.com>
+
+ * ar.c (full_pathname): New static variable.
+ (map_over_members): Call normalize on command line parameter.
+ (usage): Mention P modifier.
+ (normalize): If full_pathname is true, don't do anything.
+ (main): Accept P modifier.
+ * binutils.texi, ar.1: Document P modifier.
+
1999-09-09 Andreas Schwab <schwab@suse.de>
* binutils.texi: Add info dir entries for all programs described
-.\" Copyright (c) 1991 Free Software Foundation
+.\" Copyright (c) 1991, 1992, 1993, 1995, 1998, 1999 Free Software Foundation
.\" See section COPYING for conditions for redistribution
-.TH ar 1 "5 November 1991" "cygnus support" "GNU Development Tools"
+.TH ar 1 "1999" "Cygnus Solutions" "GNU Development Tools"
.de BP
.sp
.ti \-.2i
archive.
.TP
+.B P
+Use the full path name when matching names in the archive.
+.B ar
+can not create an archive with a full path name (such archives are not
+POSIX complaint), but other archive creators can. This option will
+cause
+.B ar
+to match file names using a complete path name, which can be
+convenient when extracting a single file from an archive created by
+another tool.
+
+.TP
.B i
Insert new files \c
.I before\c
\&.
.SH COPYING
-Copyright (c) 1991 Free Software Foundation, Inc.
+Copyright (c) 1991, 1992, 1993, 1995, 1998, 1999 Free Software Foundation, Inc.
.PP
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
/* Whether to truncate names of files stored in the archive. */
static boolean ar_truncate = false;
+/* Whether to use a full file name match when searching an archive.
+ This is convenient for archives created by the Microsoft lib
+ program. */
+static boolean full_pathname = false;
+
int interactive = 0;
static void
bfd_stat_arch_elt (head, &buf);
}
if ((head->filename != NULL) &&
- (!strcmp (*files, head->filename)))
+ (!strcmp (normalize (*files, arch), head->filename)))
{
found = true;
function (head);
fprintf (s, _(" [a] - put file(s) after [member-name]\n"));
fprintf (s, _(" [b] - put file(s) before [member-name] (same as [i])\n"));
fprintf (s, _(" [f] - truncate inserted file names\n"));
+ fprintf (s, _(" [P] - use full path names when matching\n"));
fprintf (s, _(" [o] - preserve original dates\n"));
fprintf (s, _(" [u] - only replace files that are newer than current archive contents\n"));
fprintf (s, _(" generic modifiers:\n"));
{
const char *filename;
+ if (full_pathname)
+ return filename;
+
filename = strrchr (file, '/');
if (filename != (char *) NULL)
filename++;
case 'f':
ar_truncate = true;
break;
+ case 'P':
+ full_pathname = true;
+ break;
default:
/* xgettext:c-format */
fprintf (stderr, _("%s: illegal option -- %c\n"), program_name, c);
this is a concern, the @samp{f} modifier may be used to truncate file
names when putting them in the archive.
+@item P
+Use the full path name when matching names in the archive. @sc{gnu}
+@code{ar} can not create an archive with a full path name (such archives
+are not POSIX complaint), but other archive creators can. This option
+will cause @sc{gnu} @code{ar} to match file names using a complete path
+name, which can be convenient when extracting a single file from an
+archive created by another tool.
+
@item i
Insert new files @emph{before} an existing member of the
archive. If you use the modifier @samp{i}, the name of an existing archive