Commit Graph

301 Commits

Author SHA1 Message Date
tron addf1a0f97 Fix broken cpio(1) option handling:
- "cpio -i -t" should list the contents of a file, not extract it.
- Don't extract a file when only option "-d" is given.
Patch supplied by Paul Ripke in PR bin/26513.
2004-10-26 16:11:49 +00:00
jmc 79308267d4 For HOSTTOOL builds, just exclude the chroot support as it's not needed and
avoids having to platform check for fchroot(). Fixes PR#27336
2004-10-22 21:00:18 +00:00
wiz 7faf3dc435 English improvement (remove "be"). 2004-10-20 23:48:01 +00:00
dsl 74db501288 Update date - before wiz complains 2004-10-17 18:53:59 +00:00
dsl 7404af49b7 Improve error reporting for invalid tar archives. 2004-10-17 18:51:29 +00:00
dsl 8317fe1276 Add an option --chroot to tar. Causes it to chroot(".") before doing
an extract.  With -h this will cause existing absolute symlinks to be treated
as relative to the current directory.
Helps sysinst handle existing symlinks in the target system.
Remove 'L' from the usage (got spilt into 'h' and 'H' many moons ago)
Add 'S' to usage, and put into correct place in options list.
2004-10-17 18:49:55 +00:00
christos 4fbd9df224 PR/27212: Greg A. Woods: Accept "-C <dirname>" inside filelists in addition
to "-C\n<dirname>".
But we are not making it the default output option as the patch suggests.
2004-10-10 22:05:26 +00:00
christos 1faaf9a7c2 PR/27213: Greg A. Woods: pax doesn't honour SIGPIPE when listing
But always exit, not just on SIGPIPE.
2004-10-10 22:03:08 +00:00
christos d8cc5bab94 PR/27209: Greg A. Woods: typo in comment in pax/tty_subs.c 2004-10-10 21:54:24 +00:00
christos 37fed2119d PR/27208: Greg A. Woods: pax must call options() before using syswarn()
or tty_warn()
2004-10-10 21:53:23 +00:00
wiz 5107d92cf0 Bump date for -S support. 2004-09-27 07:41:54 +00:00
christos 60cf19985c PR/19490: Julio Merino: Teach tar about --sparse, -S option.
Do it for cpio too.
2004-09-26 23:46:00 +00:00
christos 6885f6ba28 In GNU-tar mode, don't split filenames to prefix+name because GNU tar does
not honor it.
2004-09-26 22:49:05 +00:00
christos d980bf3418 Keep track of the length of the gnu long name/link hack, so that
we can append to it. Modify the code so that file_write is re-entrant,
even in the gnu long name/link hack.

The old code assumed that the buffer already contained the necessary
blocks to satisfy the read file request that contained the long
filename. This is not always the case, specially when we are dealing
with pipes which do shorter reads, thus having more probability
that a long file name will fall across a buffer boundary.

To reproduce, create a tar archive with a lot of gnu-long-names
(pkgsrc/devel/libsigc++2 is a good example), do a tar -tf to get
a list of filenames, compress it and do a tar -tzf to get another
list of the filenames. Notice that the two lists differ.
2004-09-22 15:03:18 +00:00
christos d6bc453dfc update the comment that documents the fields initialized in the array below. 2004-09-22 14:52:00 +00:00
christos 448fdb0c85 fd can be -1 or -2 for the gnu long name/link hack. So check for >= 0
instead of -1 if we need to flush.
2004-09-22 14:51:12 +00:00
hubertf 2fa09966de Change copyright to 2-clause BSD-copyright.
Changed with explicit permission of Thorsten Lockert (tholo sigmasoft com)
2004-09-15 19:45:17 +00:00
tron ed868bc7f4 Propery handle "cpio" archives where the last hardlink includes the
data of a file. This fixes PR bin/26514.
2004-08-22 16:46:18 +00:00
yamt 401d92a0c0 indent fix for the previous (ar_io.c rev.1.43) 2004-08-02 10:20:48 +00:00
yamt 42ad308b8b for copy mode, show more meaningful infomation on SIGINFO. 2004-07-18 20:58:36 +00:00
christos 71f73d1673 - Grr! unterminated buffer string in exclude destination buffer
- fix isfoo() ctype macros to take unsigned char.
2004-07-14 12:41:36 +00:00
christos 0dd4809fb6 remove stray debugging left from last commit. 2004-07-02 16:26:53 +00:00
enami 467ca7e2c8 Salvage the `create parent directories and try again' path which is
removed by the previous commit.
2004-07-02 07:17:17 +00:00
grant b0cddc5f0d break out of the loop and avoid the infinite loop if attempts to
create, unlink and create all fail.
2004-06-26 13:28:09 +00:00
grant e069813aa1 don't attempt to remove the current directory. 2004-06-26 12:39:06 +00:00
christos 6b1f699323 don't keep going if -C failed to chdir(); from OpenBSD 2004-06-21 13:38:51 +00:00
jmc b2f782612f Completely rework how tools/compat is done. Purge all uses/references to
_NETBSD_SOURCE as this makes cross building from older/newer versions of
NetBSD harder, not easier (and also makes the resulting tools 'different')

Wrap all required code with the inclusion of nbtool_config.h, attempt to
only use POSIX code in all places (or when reasonable test w. configure and
provide definitions: ala u_int, etc).

Reviewed by lukem. Tested on FreeBSD 4.9, Redhat Linux ES3, NetBSD 1.6.2 x86
NetBSD current (x86 and amd64) and Solaris 9.

Fixes PR's: PR#17762 PR#25944
2004-06-20 22:20:14 +00:00
christos 08df9f4cb1 add -0 argument to handle nul separated file lists. 2004-06-19 02:27:00 +00:00
christos b5370dc2f5 A small standalone program to dump ustar headers, used for debugging. 2004-06-16 14:28:21 +00:00
christos 0deda9612a PR/25934: Dieter Baron: hard links with long names still fail.
As mentioned in the previous commit, the switch statement in the longlink()
needed simplification and it was a bit incorrect. Only depend on the passed
type to determine what kind of gnu longlink to produce. Don't try to deduce
it from the archive file type.
2004-06-16 14:26:24 +00:00
christos 393b592b72 PR/25934: Dieter Baron: tar and hardlinks with long filenames don't work.
- always put the @LongLink tag on the name, not the long-link name.
- pass in what type of long name record we want to create; one for long-name
  or long-link name.
XXX: We should get rid of the switch too.
2004-06-15 21:52:00 +00:00
christos 44eb0cca7b Restructure the code to make it more readable. No functional changes. 2004-06-15 21:49:36 +00:00
christos 24aca7f677 do the special symlink treatment with all negative fd's. 2004-06-15 21:44:55 +00:00
christos 5820cbfaf6 Welcome to WARNS=3 2004-05-11 17:12:26 +00:00
grant 4fc8c484c7 - remove an extraneous word
- it's "backward compatibility" not "backwards compatibility"
2004-05-04 13:20:46 +00:00
grant dced68e86f --unlink is the default, the argument is ignored and only accepted for
compatibility with other tar(1) implementations.
2004-05-04 13:13:01 +00:00
christos 69c89ea8a0 Don't exit with 1 on broken archives that mark directories as files for
the benefit of pkgsrc. I would have prefered that people fixed their
archivers instead.
2004-05-03 02:22:54 +00:00
matt 5864f65684 Set the chflags *after* the rename, not before. 2004-04-30 05:14:23 +00:00
christos 78b5033e6d PR/25350: Alan Barrett: Treat the sticky bit specially as non-superusers
cannot set it on non-directories (elvis-2.2_0 extraction failed)
2004-04-27 13:45:45 +00:00
christos 04d1f5de72 PR/25188: Thomas Klausner: pax-as-tar problem with trailing slashes
The problem is with the program that generates the tar file:
-rwxrwxrwx  1 root     wheel          0 Feb  8 16:46 faad2/aacDECdrop/
It creates directory nodes without the 'd' bit set, so that pax thinks
they are files and does the temporary name and dance with them. Added
code to detect this condition, warn about it, and work around it.
2004-04-25 16:20:24 +00:00
christos 57c1f1cfd7 PR/25299: grant beattie: 1.5.3/i386 kernel set archives confuse -current pax
PR/25310: Juan RP: tar can't unpack MS-DOS gzip files correctly
2004-04-25 15:52:30 +00:00
christos af4f4c568a PR/25207: Hubert Feyrer: tar cores on certain archive contents
Don't forget to cleanup xtmp_name when we fail to create the temporary file.
2004-04-20 20:00:37 +00:00
christos 1f747cc909 PR/25207: Hubert Feyrer: tar cores on certain archive contents
- On ustar archives with a specified prefix directory, arcn->nlen was not
computed properly.
- While I am here cast some snprintf's() to void.
2004-04-20 19:59:54 +00:00
christos 7fb1726a27 remove misplaced semi-colons. 2004-04-16 22:46:28 +00:00
christos 25afd895c0 PR/25200: Alan Barrett: bug in pax append mode. This problem was introduced
while trying to fix the tar append mode. Restore the correct 2 null blocks
at the end of file, and disable the old bug compatible mode for gnutar.
2004-04-16 22:45:56 +00:00
mrg fa97f05587 fix bugs in the previous. use snprintf(). fixes the problem reported
in PR#25131.
2004-04-12 14:41:09 +00:00
keihan 27b3f59c96 Revert last, revision 1.46. 2004-04-02 12:53:05 +00:00
keihan 6898598891 ".../newdir" --> "../newdir" 2004-04-02 11:14:24 +00:00
mrg 0ade019d3f redo GNU tar --exclude emulation to actually work the same. unfortunately,
because alternation (|) isn't available in "pax -s" RE's, we have to pass
four (yes 4!) different patterns:
	.*\/<pattern>$
	.*\/<pattern>\/.*
	^<pattern>$
	^<pattern>\/.*
instead of the more elegant
	(^|.*\/)<pattern>($|\/.*)

fixes a problem reported by simonb.
2004-04-01 14:54:39 +00:00
uebayasi d59e9104ff Tar(1)'s -s option needs an argument. Correct option string (s -> s:).
Reported and tested by Tomoaki Imamura.
2004-02-20 05:16:54 +00:00