ar: deprecate -T option

Other ar implementations (GNU, LLVM) use -T to mean thin archive
rather than use only the first fifteen characters of the archive member
name.  We support both -T and -f for this, with -f documented as an
alias of -T.

An exp-run showed that the ports invoking `ar -T` expect thin archives,
not truncated names.  Switch -f to be the documented flag for this
behaviour, and emit a warning when -T is used.

The warning will be changed to an error in the future (in main), once
ports no longer use -T.

PR:		260523 [exp-run]
MFC after:	1 week
Sponsored by:	The FreeBSD Foundation
This commit is contained in:
Ed Maste 2021-12-29 14:59:06 -05:00
parent 6b1c5775d1
commit edadbb4606
2 changed files with 14 additions and 6 deletions

View file

@ -23,7 +23,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd June 16, 2016
.Dd December 29, 2021
.Dt AR 1
.Os
.Sh NAME
@ -222,8 +222,8 @@ and
.Fl U
options are specified on the command line, the final one takes precedence.
.It Fl f
Synonymous with option
.Fl T .
Use only the first fifteen characters of the archive member name or
command line file name argument when naming archive members.
.It Fl i Ar member-before
Synonymous with option
.Fl b .
@ -314,8 +314,12 @@ List the files specified by arguments
in the order in which they appear in the archive, one per line.
If no files are specified, all files in the archive are listed.
.It Fl T
Use only the first fifteen characters of the archive member name or
command line file name argument when naming archive members.
Deprecated alias for
.Fl f .
In other implementations of
.Nm ,
.Fl T
creates a "thin" archive.
.It Fl u
Conditionally update the archive or extract members.
When used with the

View file

@ -66,6 +66,7 @@ __FBSDID("$FreeBSD$");
#include <sys/queue.h>
#include <sys/types.h>
#include <archive.h>
#include <err.h>
#include <errno.h>
#include <getopt.h>
#include <libgen.h>
@ -193,7 +194,6 @@ main(int argc, char **argv)
Uflag = 0;
break;
case 'f':
case 'T':
bsdar->options |= AR_TR;
break;
case 'j':
@ -226,6 +226,10 @@ main(int argc, char **argv)
case 's':
bsdar->options |= AR_S;
break;
case 'T':
warnx("-T is deprecated");
bsdar->options |= AR_TR;
break;
case 't':
set_mode(bsdar, opt);
break;