summaryrefslogtreecommitdiff
path: root/bin/pax
AgeCommit message (Collapse)Author
2015-03-22rev 1.44 accidentally changed ar_close() to give cpio the same output as pax.Philip Guenther
Adjust the conditions to correct that. ok millert@
2015-03-19Use struct timespec internally. This gives nanosecond precision to pax -rwPhilip Guenther
and a basis for support of mtime and atime values in pax-format extended header records. ok millert@
2015-03-17Add PAX_IS_{REG,HARDLINK,LINK} macros to simply many file type testsPhilip Guenther
ok millert@
2015-03-15Define chdname once in a .c and make it extern in the .hPhilip Guenther
2015-03-15Handle tar -o by setting the tar_nodir directly instead of faking up aPhilip Guenther
pax-like -o write_opt=nodir. ok millert@ otto@
2015-03-15Using O_TRUNC with O_CREAT|O_EXCL is just confusing: fail if it exists,Philip Guenther
but if you *did* succeed anyway, truncate it?
2015-03-15pax -o only accepts 'write_opt=nodir' and not bare 'nodir'Philip Guenther
2015-03-15tzfile.h is an internal header that should never have been installed.Todd C. Miller
What's worse, the tzfile.h that gets installed is over 20 years old and doesn't match the real tzfile.h in libc/time. This makes the tree safe for /usr/include/tzfile.h removal. The TM_YEAR_BASE define has been moved to time.h temporarily until its usage is replaced by 1900 in the tree. Actual removal of tzfile.h is pending a ports build. Based on a diff from deraadt@
2015-03-12If an archive isn't a recognized type, then check whether it looksPhilip Guenther
like compress, gzip, bzip2, or xz output. If so then error out with a useful message directing the user to the correct option and error out instead of scanning forward for an embedded tar/cpio header. wording help from sobrado@ ok millert@ deraadt@
2015-03-09Fix comment grammarPhilip Guenther
2015-03-09Unrevert post-unlock:Philip Guenther
* Prevent an archive from esacaping the current directory by itself: when extracting a symlink whose value is absolute or contains ".." components, just create a zero-length normal file (with additional tracking of the mode and hardlinks to the symlink) until everything else is extracted, then go back and replace it with the requested link (if it's still that zero-length placeholder). * For tar without -P, if a path in the archive has any ".." components then strip everything up to and including the last of them (if it ends in ".." then it becomes ".") This mostly follows GNU tar's behavior, except for 'tar tf' and 'tar xvf' we report the modified path that would be/was actually created instead of the raw path from the archive Above two fixes prompted by a report from Daniel Cegielka (daniel.cegielka (at) gmail.com) * For directories whose times or mode will be fixed up in the clean-up pass, record their dev+ino and then use open(O_DIRECTORY)+fstat() to verify that we're updating the correct directory before using futimens() and fchmod(). * Correct buffer overflow in handling of pax extension headers, caught by the memcpy() overlap check. previously ok millert@ deraadt@
2015-02-21Recent changes haven't been completely stable, so revert for the 5.7 releasePhilip Guenther
requested by deraadt@
2015-02-15Fix two bugs. The first affected tar files with the sameTodd C. Miller
directory listed twice with nothing created inside the directory in between the two instances of the directory. The other fixes extracting symlinks when the -C option is used. From guenther@ OK krw@
2015-02-12Prevent an archive from esacaping the current directory by itself:Philip Guenther
when extracting a symlink whose value is absolute or contains ".." components, just create a zero-length normal file (with additional tracking of the mode and hardlinks to the symlink) until everything else is extracted, then go back and replace it with the requested link (if its still that zero-length placeholder). This and previous symlink and ".." path fixes prompted by a report from Daniel Cegielka (daniel.cegielka (at) gmail.com) ok millert@
2015-02-12For tar without -P, if a path in the archive has any ".." components thenPhilip Guenther
strip everything up to and including the last of them (if it ends in ".." then it becomes ".") This mostly follows GNU tar's behavior, except for 'tar tf' and 'tar xvf' we report the modified path that was actually created instead of the raw path from the archive ok w/tweak millert@, deraadt@
2015-02-12Put the dev+ino table for cpio hardlink matching behind #ifndef NOCPIOPhilip Guenther
ok millert@ deraadt@
2015-02-11Take II, this time without an incorrect mode test.Philip Guenther
For directories whose times or mode will be fixed up in the clean-up pass, record their dev+ino and then use open(O_DIRECTORY)+fstat() to verify that we're updating the correct directory before using futimens() and fchmod(). ok sthen@ millert@
2015-02-05backout previous for now; issues seen with "tar: Directory vanished beforeStuart Henderson
restoring mode and times: ..." (and an error exit code, which breaks at least building ports). krw@ agrees.
2015-02-05For directories whose times or mode will be fixed up in the clean-up pass,Philip Guenther
record their dev+ino and then use open(O_DIRECTORY)+fstat() to verify that we're updating the correct directory before using futimens() and fchmod(). ok millert@
2015-01-29Correct buffer overflow in handling of pax extension headers, caughtPhilip Guenther
by the memcpy() overlap check. ok millert@ deraadt@
2015-01-16Replace <sys/param.h> with <limits.h> and other less dirty headers whereTheo de Raadt
possible. Annotate <sys/param.h> lines with their current reasons. Switch to PATH_MAX, NGROUPS_MAX, HOST_NAME_MAX+1, LOGIN_NAME_MAX, etc. Change MIN() and MAX() to local definitions of MINIMUM() and MAXIMUM() where sensible to avoid pulling in the pollution. These are the files confirmed through binary verification. ok guenther, millert, doug (helped with the verification protocol)
2015-01-15remove .Tn; from Jan Stary <hans at stare dot cz>Ingo Schwarze
2014-12-13Sort members by size to reduce structure paddingPhilip Guenther
2014-11-23Don't pull in <tzfile.h> just for a number that's hardcoded in the C standardPhilip Guenther
2014-11-23Use PATH_MAX from <limits.h> instead of MAXPATHLEN from <sys/param.h>Philip Guenther
Eliminate a couple unneeded #includes
2014-11-23Don't leak the fds for "." and the tty to the compression processPhilip Guenther
2014-09-08obvious cases of missing .An;Ingo Schwarze
found with the new mandoc(1) MANDOCERR_AN_MISSING warning; no text changes
2014-07-14Constipate st_hash()Philip Guenther
2014-07-14Oops: resurrect cached file that wasn't ripe for deletionPhilip Guenther
2014-07-14Delete pointless 'return;' at end of functionPhilip Guenther
2014-07-11clarify a comment about readlink. from Doug HoganTed Unangst
2014-06-04undo my "no TZ support" notes; guenther says they're wrongJason McIntyre
ok guenther
2014-05-24Delete pointless casts: free() return value to (void), free()'sPhilip Guenther
argument to (char *), and malloc/calloc's return value to the type of the variable it's being assigned to. Convert the one calloc() where the zeroing isn't needed to a reallocarray(). ok millert@
2014-05-24Missed #include <signal.h>Philip Guenther
2014-05-24Make signal setup clearer via helper function, eliminating a gap inPhilip Guenther
ignoring signals when they were already ignored ok millert@
2014-05-23Archives written with a non-standard blocksize currently show up asPhilip Guenther
truncated reads. Until better detection of that case can is implemented, back out that part of rev 1.45 problem noted by sthen@
2014-05-23Make the signal handler safe: block signals when updating data-structuresPhilip Guenther
that are walked by routines called from the signal handler and use dprintf() instead fprintf() in ar_close(). ok millert@
2014-05-21Exit with non-zero status if a read is truncated, or if a compressionPhilip Guenther
program was used but it didn't exit successfully. Original diff by mpf@
2014-05-07use reallocarray. ok guentherTed Unangst
2014-04-18tweak;Jason McIntyre
2014-04-15note some unsupported features, and clean up some macros - in particular,Jason McIntyre
whack a dose of unneccessary Em; ok millert
2014-04-15flesh out STANDARDS; ok millert sobradoJason McIntyre
2014-02-19Map negative mtimes to zero instead of skipping the affected files.Philip Guenther
problem noted by miod@ ok krw@ millert@
2014-02-13Don't use use .Tn with AND/OR/NOTPhilip Guenther
Phrase any "The _flags_ argument is the ..." line consistently, eliminating unnecessary use of 'inclusive' and saying "zero or more" or "one or more" as appropriate ok millert@ jmc@ schwarze@
2014-02-06Oops, pax -x and cpio -H need to set frmtPhilip Guenther
Add 'break' accidentally removed by previous commit and future-proof format listing by cpio -H problem noted by naddy@ ok halex@ naddy@
2014-02-05make pax cope with a stripped down format list, e.g. when compiledAlexander Hall
with -DNOCPIO - ignore empty entries (millert@, halex@) - replace bsort with linear scan (guenther@) ok millert@ guenther@
2014-01-30abstraction for the sake of abstraction is distracting.Marc Espie
zap extra func pointer going to the same routines for all formats. okay millert@
2014-01-19Forget to remove the prototype for set_lids() after removing the definitionPhilip Guenther
2014-01-14No exception is made for symlinks in the spec, so usePhilip Guenther
fchmodat(AT_SYMLINK_NOFOLLOW) to set the mode on symlinks, pass AT_SYMLINK_NOFOLLOW to utimensat(), and then let those be called on symlinks by dropping the test that skipped them. Eliminate set_lids() by changing set_ids() to use fchownat(AT_SYMLINK_NOFOLLOW) and delete a redundant conditional in each of set_ftime()/fset_ftime(). suggested by espie@ ok millert@
2014-01-11Add -DNOCPIO option for use by distrib/specialTheo de Raadt
ok guenther tedu