History log of /freebsd-current/usr.bin/ar/ar.c
Revision Date Author Comments
# 1d386b48 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

Remove $FreeBSD$: one-line .c pattern

Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/


# 41e6398f 27-Jan-2022 Mark Johnston <markj@FreeBSD.org>

ar: Avoid overwriting the stdout file stream pointer

This doesn't work with musl, which defines stdout as FILE * const.
Instead, explicitly pass the desired output stream to ar_read_archive().

No functional change intended.

Reviewed by: emaste
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D34064


# 1a0a41b1 03-Jan-2022 Ed Maste <emaste@FreeBSD.org>

ar: accept but ignore 'T' option

In previous versions of BSD ar -T was an alias for -f -- use only the
first 15 characters of archive member names. In GNU ar and LLVM ar -T
creates a thin archive.

The -f / old BSD ar -T functionality is not particularly useful, and
ignoring -T still results in a usable and compatible (but not thin)
archive.

An exp-run found a few ports invoking ar -T but they all expect thin
archives. In addition, -T will be used to specify thin archives after
a migration to LLVM-ar.

PR: 260523 [exp-run]
Reviewed by: markj
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D33553


# edadbb46 29-Dec-2021 Ed Maste <emaste@FreeBSD.org>

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


# 57aaefdc 13-Aug-2021 Ed Maste <emaste@FreeBSD.org>

ar: diff reduction against ELF Tool Chain

Remove ar_mode_* wrappers and call ar_read_archive / ar_write_archive
directly.

(This was originally committed in d20e9e02db3d but reverted due to a
regression, now fixed with an update from cy@.)

Obtained from: ELF Tool Chain
Reviewed by: markj
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D31496


# 086f0908 12-Aug-2021 Ed Maste <emaste@FreeBSD.org>

ar: diff reduction against ELF Tool Chain

Drop exit status from bsdar_errc. ELF Tool Chain always returns
EXIT_FAILURE in bsdar_errc.

Recommit of one part of d20e9e02db3d / review D31496.

Obtained from: ELF Tool Chain
Sponsored by: The FreeBSD Foundation


# c5bf58ad 12-Aug-2021 Ed Maste <emaste@FreeBSD.org>

Revert "ar: diff reduction against ELF Tool Chain"

This reverts commit d20e9e02db3dde383c3de1ce8cec3a8c35b3eee6.
It caused port build failures.

Reported by: cy


# d20e9e02 04-Aug-2021 Ed Maste <emaste@FreeBSD.org>

ar: diff reduction against ELF Tool Chain

- Drop exit status from bsdar_errc. ELF Tool Chain always returns
EXIT_FAILURE in bsdar_errc.

- Remove ar_mode_* wrappers and call ar_read_archive / ar_write_archive
directly.

Obtained from: ELF Tool Chain
Reviewed by: markj
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D31496


# 38911b3c 03-Aug-2021 Ed Maste <emaste@FreeBSD.org>

ar: provide error exit status upon failure

Previously ar and ranlib returned with exit status 0 (success) in the
case of a missing file or other error. Update to use error handling
similar to that added by ELF Tool Chain after that project forked
FreeBSD's ar.

PR: PR257599 [exp-run]
Reported by: Shawn Webb, gehmehgeh (on HardenedBSD IRC)
Reviewed by: markj
Obtained from: elftoolchain
MFC after: 2 months
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D31402


# be72428e 20-Jun-2018 Ed Maste <emaste@FreeBSD.org>

usr.bin/ar: use standard 2-Clause FreeBSD license

Many licenses on ar files contained small variations from the standard
FreeBSD license text. To avoid license proliferation switch to the usual
2-clause FreeBSD license after obtaining permission from all copyright
holders.

Approved by: jkoshy, kaiw, kientzle
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D14561


# 9befbe45 19-Jun-2018 Ed Maste <emaste@FreeBSD.org>

usr.bin/ar: remove incorrect SPDX tags

Three ar files have a non-standard variation of the BSD license, so
remove their SPDX tags.

Sponsored by: The FreeBSD Foundation


# 8a16b7a1 20-Nov-2017 Pedro F. Giffuni <pfg@FreeBSD.org>

General further adoption of SPDX licensing ID tags.

Mainly focus on files that use BSD 3-Clause license.

The Software Package Data Exchange (SPDX) group provides a specification
to make it easier for automated tools to detect and summarize well known
opensource licenses. We are gradually adopting the specification, noting
that the tags are considered only advisory and do not, in any way,
superceed or replace the license texts.

Special thanks to Wind River for providing access to "The Duke of
Highlander" tool: an older (2014) run over FreeBSD tree was useful as a
starting point.


# 11c4d924 16-Jun-2016 Ed Maste <emaste@FreeBSD.org>

ar: enable reproducible output by default when invoked as 'ar -s'

ar output is already deterministic by default for ar -q and ar -r, and
when invoked as ranlib. Make ar -s equivalent to ranlib and enable
deterministic output by default in that case too.

PR: 210330
Reviewed by: bdrewery
Approved by: re (gjb)
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D6871


# c76f604e 19-May-2016 Ed Schouten <ed@FreeBSD.org>

Make code compile when basename() is POSIX compliant.

If basename() uses "char *", we shouldn't do the intermediate
assignment, as that field is of type "const char *". Simply call
basename() on the command line argument directly.

Reviewed by: emaste
Differential Revision: https://reviews.freebsd.org/D6463


# a84c4d18 31-Aug-2015 Ed Maste <emaste@FreeBSD.org>

ar: Deobfuscate a while loop


# a64a36e2 30-Aug-2015 Ed Maste <emaste@FreeBSD.org>

ar: fix deterministic mode when running as ranlib

This was broken by r286024.

PR: 202741
Submitted by: fk@fabiankeil.de
Obtained from: ElectroBSD


# a80ac30b 29-Jul-2015 Ed Maste <emaste@FreeBSD.org>

ar: Fix deterministic mode default with options other than -q or -r

Reported by: jhibbits
Reviewed by: jhibbits
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D3237


# fc964cbf 29-Jul-2015 Ed Maste <emaste@FreeBSD.org>

ar: enable deterministic mode by default

Ar cannot handle UIDs with more than 6 digits, and storing the mtime,
uid, gid and mode provides little to negative value anyhow for ar's
uses. Turn on deterministic (-D) mode by default; it can be disabled by
the user with -U.

PR: 196929
Relnotes: Yes
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D3190


# 7072861c 24-Jul-2015 Ed Maste <emaste@FreeBSD.org>

ar: add -U (unique) option to disable -D (deterministic) mode

This is required in order for us to support deterministic mode by
default. If multiple -D or -U options are specified on the command
line, the final one takes precedence. GNU ar also uses -U for this.

An equivalent change will be applied to ELF Tool Chain's version of ar.

PR: 196929
MFC after: 1 month
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D3175


# 6bef5d28 20-May-2011 Benedict Reuschling <bcr@FreeBSD.org>

Correct typos in comments, no functional changes.

Found by: codespell
Reviewed by: kaiw
MFC after: 1 week


# 773810fb 28-Nov-2010 Kai Wang <kaiw@FreeBSD.org>

Add option -D for ranlib(1). When -D is speicified, ranlib(1) will generate
a deterministic archive symbol table (i.e. timestamp for the symbol table
member header is set to 0).

Submitted by: Erik Cederstrand


# a7d5f7eb 19-Oct-2010 Jamie Gritton <jamie@FreeBSD.org>

A new jail(8) with a configuration file, to replace the work currently done
by /etc/rc.d/jail.


# 0e479ac8 08-Oct-2010 Tim Kientzle <kientzle@FreeBSD.org>

Add -D (deterministic) option to ar.
When set, it forces all timestamps and owners to zero and
modes to 0644. Useful for producing libraries that are
bitwise identical across multiple build runs.

Submitted by: Erik Cederstrand
Reviewed by: Kai Wang


# 5dfab45b 17-May-2010 Kai Wang <kaiw@FreeBSD.org>

Removed ar(1)'s support for compressed archives. This change removes
ar(1)'s dependencies on compressor libraries -lz, -lbz2 and -llzma and
fixes building HEAD on some versions of FreeBSD[78]. Option -j and -z
is now accepted but ignored.

Compressed ar(1) archives are not useful without a ld(1) that can read
them. Also, the current ar(1) compression scheme prevents random
access of archive members and needs to be redesigned anyway.

Submitted by: kientzle (original patch)
Reviewed by: delphij
Discussed on: -current mailing list


# fe0506d7 09-Mar-2010 Marcel Moolenaar <marcel@FreeBSD.org>

Create the altix project branch. The altix project will add support
for the SGI Altix 350 to FreeBSD/ia64. The hardware used for porting
is a two-module system, consisting of a base compute module and a
CPU expansion module. SGI's NUMAFlex architecture can be an excellent
platform to test CPU affinity and NUMA-aware features in FreeBSD.


# ef636796 02-Jan-2010 Ed Schouten <ed@FreeBSD.org>

ANSIfy various tools in usr.bin/.

Most of these tools properly build at WARNS=6, except for their K&R
function declarations. Fix this, so we can bump WARNS as well.


# f05da0e9 20-Mar-2009 Tim Kientzle <kientzle@FreeBSD.org>

Act like ranlib if our name ends in ranlib. In particular,
this works with some recent cross-building changes by Warner
that install ranlib as, e.g., "arm-freebsd7.1-ranlib".

Submitted by: John Hein


# d7f03759 19-Oct-2008 Ulf Lilleengen <lulf@FreeBSD.org>

- Import the HEAD csup code which is the basis for the cvsmode work.


# 0c099281 20-Sep-2008 Kai Wang <kaiw@FreeBSD.org>

Add support for option "-M", which is used to operate ar(1) in a
script mode like the MRI(Microtec Research Inc.) "librarian" program.

Originally this option is provided by Binutils ar(1) to ease the
transition for developers who are used to writing "librarian" scripts.

We added this option to BSD ar(1) because:

1. Further improve the compatibility with Binutils ar(1).
2. There are still a few software using this -M option. (at least one
in our ports collection)

Suggested by: rink & erwin


# cb0dad38 11-Mar-2008 Kai Wang <kaiw@FreeBSD.org>

GNU ar did NOT implment option -q as a synonym of -r as the manual
page stated, thus BSD ar(1) option -q, which was implemented based on
the GNU ar manual page, turns out to be incompatible with GNU ar -q.

This change will make BSD ar(1) -q a *REAL* GNU ar -q:

1. It will update symbol table. (same as unfixed version)
2. It will NOT compare new members spcified in the command line args
with existing members, instead, append them directly.

Reported by: Johannes 5 Joemann <joemann@beefree.free.de>
Reported by: Timothy Bourke <timbob@bigpond.com>
Tested by: Johannes 5 Joemann <joemann@beefree.free.de>
Reviewed by: jkoshy
Approved by: jkoshy (mentor)


# a711c209 24-Feb-2008 Kai Wang <kaiw@FreeBSD.org>

Since the program is installed as 'bsdranlib', we need to
check if it is invoked as 'bsdranlib'.

Reported by: Michael Plass <mfp49_freebsd [AT] plass-family [DOT] net>
Reviewed by: Michael Plass <mfp49_freebsd [AT] plass-family [DOT] net>
Reviewed by: jkoshy
Approved by: jkoshy (mentor)


# d192f3d3 21-Feb-2008 Kai Wang <kaiw@FreeBSD.org>

Import ar(1) front-end. (aka 'BSD' ar)

Reviewed by: jkoshy
Approved by: jkoshy (mentor)
Tested by: erwin (ports build test on pointyhat)
Sponsored by: Google Summer of Code 2007
Reviewed by (earlier version): Jaakko Heinonen <jh[AT]saunalahti.fi>
Tested by (earlier version): Steve Kargl <sgk[AT]troutmask.apl.washington.edu>
Tested by (earlier version): Martin Voros <martin_voros[AT]yahoo.com>
Tested by (earlier version): swell.k[AT]gmail.com
Tested by (earlier version): joel
Tested by (earlier version): Alexey Shuvaev <shuvaev[AT]physik.uni-wuerzburg.de>
Tested by (earlier version): Arjan van Leeuwen <avleeuwen[AT]gmail.com>

Thanks to gabor@ for building ports for it.
Thanks to erwin@ and kris@ for scheduling the ports build test on pointyhat.
And thanks to many others for their feedback.


# f6d8a17f 26-Jun-2003 David E. O'Brien <obrien@FreeBSD.org>

Finish the deorbital burn of the i386-only a.out toolchain.


# da8de1e2 14-Jul-2002 Alfred Perlstein <alfred@FreeBSD.org>

WARNS=4


# f1bb2cd2 21-Mar-2002 Warner Losh <imp@FreeBSD.org>

remove __P


# 9f5b04e9 10-Dec-2001 David Malone <dwmalone@FreeBSD.org>

Style improvements recommended by Bruce as a follow up to some
of the recent WARNS commits. The idea is:

1) FreeBSD id tags should follow vendor tags.
2) Vendor tags should not be compiled (though copyrights probably should).
3) There should be no blank line between including cdefs and __FBSDIF.


# 01823518 02-Dec-2001 Mark Murray <markm@FreeBSD.org>

Use __FBSDID().


# 865eb33a 01-Dec-2001 Mark Murray <markm@FreeBSD.org>

WARNS=2 fixup.


# 9ebd5897 24-Jul-2001 David E. O'Brien <obrien@FreeBSD.org>

Replace the local `rname' with the cannonical `basename'.


# c3aac50f 27-Aug-1999 Peter Wemm <peter@FreeBSD.org>

$Id$ -> $FreeBSD$


# 5d2b41cb 06-Dec-1998 Archie Cobbs <archie@FreeBSD.org>

Eliminate compiler warnings from -Wall


# 911091e7 23-Jun-1997 Philippe Charnier <charnier@FreeBSD.org>

Convert man page to mdoc format. Cosmetic in usage string.


# 1c8af878 28-Mar-1997 Warner Losh <imp@FreeBSD.org>

compare return value from getopt against -1 rather than EOF, per the final
posix standard on the topic.


# d508ff27 17-Oct-1996 Jean-Marc Zucconi <jmz@FreeBSD.org>

The -q option does not require a list of elements: the command 'ar q foo.a'
is perfectly valid and eventually creates an empty archive.
This is consistent with OSF1 V3.x, SunOS 4.x, ULTRIX 4.x and probably others.


# 6e980455 23-Oct-1995 Andrey A. Chernov <ache@FreeBSD.org>

Add setlocale LC_TIME


# 7799f52a 30-May-1995 Rodney W. Grimes <rgrimes@FreeBSD.org>

Remove trailing whitespace.


# 9b50d902 26-May-1994 Rodney W. Grimes <rgrimes@FreeBSD.org>

BSD 4.4 Lite Usr.bin Sources