HEADS UP: tar -l is now (intentionally) broken.

Tim Kientzle kientzle at freebsd.org
Mon Aug 2 22:55:46 PDT 2004

Since POSIX and GNU violently disagree about the
meaning of "tar -l", and there seem to be strong
adherents to both interpretations, I'm preparing to
commit a patch that breaks "tar -l" for everyone:

$ tar -cl foo
   Error: -l has different behaviors in different tars.
     For the GNU behavior, use --one-file-system instead.
     For the POSIX behavior, use --check-links instead.

The message pretty much says it all.  Setting
POSIXLY_CORRECT in the environment will
make -l a synonym for --check-links.  (Note that
this is different than GNU tar's behavior in the
presence of POSIXLY_CORRECT.)  I will consider
suggestions for a corresponding environment variable
for GNU behavior (GNULY_CORRECT?).

I've also adopted an idea from GNU tar 1.14,
which treats -o in the POSIX manner on extract,
in the GNU manner on create.

I don't believe the change to -l will break more than a couple
of ports.  Prior to this change, ports that specified
-l would get the POSIX behavior even though they
may have thought they were requesting the GNU
behavior.  This change will force you to unambiguously
specify the particular behavior you desire.

In short, everyone wins on -o, everyone loses
on -l.  That seems fair.  ;-)

Tim Kientzle

More information about the freebsd-current mailing list