Commit Graph

55 Commits

Author SHA1 Message Date
lukem 990d25a96c fix -Wsign-compare issues 2009-02-14 08:02:04 +00:00
christos 206f418235 PR/36275: john at iastate dot edu: tar -s modifies symlink targets
- This is explained in a comment in pat_rep.c inside mod_name(). I did not
  want to change the default behavior, so I added another modifier "s" which
  when set, the pattern will not modify the symlink destination.
- While here I fixed another bug that was introduced before by the fix in
  PR/35257 where the renaming was happening twice since we called rep_name
  twice.
- Finally if we are renaming hard of soft-link targets print the renames for
  those too.
2007-05-04 21:19:36 +00:00
christos 702d1ca548 PR/36194: Greg A. Woods: add a '-V' flag to pax for verbose summary without
listing (and other minor fixes)
2007-04-23 18:40:22 +00:00
rillig bbe065310a EROFS is not a critical error in a "mkdir -p". 2007-03-08 17:01:30 +00:00
christos d9cd708017 PR/35257: Andreas Gustafsson: tar(1) opens excluded files
Apply the file modification function in the input files so that we can
de-select matched patterns.
2006-12-14 23:18:11 +00:00
elad ed23b39f46 PR/34265: dieter roelants: pax truncates archive when appending fails.
Patch applied, thanks!
2006-10-07 09:53:20 +00:00
dsl b419a25464 Ensure we exit with an error if we don't actually do anything.
There are a lot of tty_warn(0,...) and syswarn(0,...) which probably ought
to be tty_warn/syswarn(1,...) to force an error exit.  However some are
used in interactive parts (eg opening a continuation archive) where there
is a separate retry loop.
So we just pass a failure code out to main() - how quaint!
This should now cause the NetBSD build to fail when gzip tries to write
to a non-existant directory.
(I suspect there are still many errors that don't get reported correctly.)
2006-02-11 11:04:57 +00:00
dsl cdec4ac10c Change all the 'return(x)' to 'return c'.
Makes some other searches I want to do a bit easier.
2006-02-11 10:43:17 +00:00
christos ef3fea8531 Solaris mkdir on an automounted component returns ENOSYS. Go figure.
Good choices whould have been EROFS, EEXIST, EACCES, EISDIR...
2006-01-31 19:25:20 +00:00
christos d0d28f16f5 If we get EACCES from mkdir, try to stat() it, and if it is ok, we keep going.
Fixes problem with IRIX.
2005-12-06 19:11:15 +00:00
christos c952ef6b81 PR/31923: Sergey Svishchev: pax-as-tar ignores -k, overwrites existing files
Fix from Onno van der Linden
2005-11-01 23:43:27 +00:00
christos b39d90de0c mkdir(2) can return EISDIR for / 2005-09-17 06:05:04 +00:00
christos b60b306ef2 Another missing mkdir() race pointed out by chuq. Factor out the mkdir code. 2005-09-16 16:48:18 +00:00
christos 4e0ae89b44 Don't even declare fdochroot() if we are in tool mode. 2005-05-22 17:41:50 +00:00
christos 398a081644 Allow writing symlinks that point outside our tree, but not traversing
them to write other files.
2005-05-14 18:49:51 +00:00
jmc 6ae4f78197 Wrap call to fchroot in CONFIG tests so this doesn't blow up on cross-tools 2005-05-06 16:49:25 +00:00
christos 0a6f2d385f PR/30132: Juan RP: tar --chroot refuses to extract files.
fchroot() changes the effective path, so we need to call updatepath().
2005-05-05 14:54:49 +00:00
christos 14f615efd9 If we cannot resolve a path, that probably means that we have not created
directories for that path yet. So, do the check for each component recursively
and succeed if none of the components fall outside our current working
directory.
2005-04-24 03:36:54 +00:00
christos 15ea30eb09 PR/18759: FUKAUMI Naoki: pax/tar dot-dot handling broken
PR/18840: Frederick Bruckman:  Fix for PR/18663 incomplete pax symlink handling

This patch makes ``--insecure'' do something. Now if ``--insecure''
is not set (the default) we do a realpath(3) in all the pathnames
that we are trying to create and if either realpath fails, or the
path is outside our working directory, we print a warning and die.
This maybe too strict and might fail on valid archives that create
symlinks and directories in the wrong order.
2005-04-24 01:45:03 +00:00
christos 06a1f6e7f2 For clarity instead of using -1 and -2 use the negative of the archive type. 2005-04-24 01:24:57 +00:00
jmc 94eaa31771 Apply user supplied patterns first before applying actions for -A. This way pax
behavior WRT to patterns lines up with the example in the documentation
and how other implementations do it as well since -A is a non-standard
option/behavior. Fixes items noted in PR#23776
2005-01-23 06:19:03 +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
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 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
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
christos 7fb1726a27 remove misplaced semi-colons. 2004-04-16 22:46:28 +00:00
lukem 171d653219 Overhaul how `build.sh tools' are used:
*	Rename "config.h" to "nbtool_config.h" and
	HAVE_CONFIG_H to HAVE_NBTOOL_CONFIG_H.
	This makes in more obvious in the source when we're using
	tools/compat/config.h versus "standard autoconf" config.h

    *	Consistently move the inclusion of nbtool_config.h to before
    	<sys/cdefs.h> so that the former can provide __RCSID() (et al),
    	and there's no need to protect those macros any more.

These changes should make it easier to "tool-ify" a program by adding:
	#if HAVE_NBTOOL_CONFIG_H
	#include "nbtool_config.h"
	#endif
to the top of the source files (for the general case).
2003-10-27 00:12:41 +00:00
agc ed6ed8e698 Move Keith Muller's code from a 4-clause to a 3-clause licence by removing
the advertising clause. Diffs provided in PR 22397 by Joel Baker, confirmed
to the board by Keith Muller.
2003-10-13 07:41:22 +00:00
agc b5b2954259 Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22249, verified by myself.
2003-08-07 09:05:01 +00:00
simonb 1301238ab7 Add support for gnutar's -O "extract to stdout" option. 2003-07-08 06:00:48 +00:00
grant 9432809ee1 consistently use "cannot" instead of "can not". 2003-06-23 13:06:53 +00:00
christos 2cdcd6cab2 RP/8227: Peter Seeback: Emulate old gnu tar better. 2003-03-31 20:06:33 +00:00
grant d1391f9f9d cosmetic error condition improvements.
- sprinkle some fflush() to print filenames correctly.
- print a \n to stdout to fix formatting.
- English, consistently use "Cannot" in error messages.

some whitespace cleanup.
2003-02-09 18:27:10 +00:00
wiz 3ac7ce187d Fix various spelling, grammar, and punctuation problems in comments, from Sergey Svishchev in PR 20164. 2003-02-02 10:21:13 +00:00
christos 8461b5b85f PR/19339: Martin Weber: Tar fails to append on empty files and exits with
0. Revert previous change for PR/18689. We always want to exit with
an error if we could not determine the archive format. Instead,
treat empty files specially. On list/extract we turn into no/op.
On append, we turn into archive.
2002-12-10 18:33:26 +00:00
itojun 8eb125554b exit with 0 if the input is empty of not a tar file. matches GNU tar behavior.
solves PR 18689.
2002-10-18 11:54:22 +00:00
christos 4472ef1520 Add proper longlink support. Previously we handled longname support, and
the longlink support was completely wrong.
2002-10-17 00:32:36 +00:00
christos f70dfaaf73 Support gnu long filename extensions by default for tar on create, list, and
extract. We now generate GNU tar archives by default ("ustar  ^@" instead of
"ustar^@00"). GNU extensions can be disabled with --strict.

XXX: long symlinks untested.
2002-10-16 03:46:07 +00:00
christos 0c61202168 merge OpenBSD changes:
- correct -C processing
    - add ability to read filenames and flags from a file
    - don't print dangerous escape sequences to the terminal
    - use strlcpy/strncpy properly.
    - handle tmpfile creation better.
    - improve documentation of options.
    - handle stdout/stderr list selection correctly.
    - kill gzip when we get interrupted.
    - simplify gzip setup.
    - add more flags to programs.

additional changes:
    - librmt processing.
    - set POSIXLY_CORRECT in options parsing.
    - prevent more string overruns.
    - support -T

we don't turn the switch on to replace tar and cpio yet.
2002-10-12 15:39:29 +00:00
tv 47b0d14e39 Protect __RCSID and __COPYRIGHT from being invoked if not defined. 2002-01-31 19:27:53 +00:00
lukem c1bd745ccb - ansi KNF (just remove all the #ifndef __STDC__ prototype junk,
leaving the ansi stuff)
- use longlong_t instead of quad_t (etc), and rename *uqd*() -> *ull*()
- clean up the NET2_STAT stuff similar to ftpd; provide #defines and
  macros which select which cast to use, etc
- clean up the NET2_FTS and NET2_REGEX #define use
2001-10-25 05:33:32 +00:00
itohy f8adf56da0 Cleanup and fix typos.
Partially from FreeBSD.
2000-02-17 03:12:22 +00:00
mrg 78e294d1bc support ././@LongLink extraction, as created by GNU tar. 1999-10-22 10:43:11 +00:00
tron 1fbe6b7eae Strip leading slashes from filenames by default, add new "A" option to
disable this behaviour. Patches supplied by Peter Seebach in PR bin/8233.
1999-08-24 07:57:06 +00:00
christos 789b715904 Add SIGINFO support. 1999-03-03 18:06:52 +00:00
tv af575980ab Transparently handle old-style GNU tar archives that may have garbage in
the trailing block and do not have an end-of-archive marker.  (Does this
handling based on whether the ustar id is "ustar" or "ustar  ".)
1998-08-10 22:34:59 +00:00
mycroft d0e267dc7f Use the uid/gid caching moved into libc. Fixed a memory leak! 1998-07-28 17:44:23 +00:00
kleink 3a5b0ca840 Need <time.h> for time() prototype. 1998-04-01 14:04:52 +00:00
christos f3cd602281 - Rename local warn so tty_warn that we can include <err.h> since this program
uses err() and errx().
- Fix printf format strings.
- Added WARNS=1; note
- Added missing prototypes.
- Split overloaded trail function into trail() and subtrail().
1997-07-20 20:32:15 +00:00
tls 48250187e6 kill 'register' 1997-01-11 02:04:27 +00:00