Commit Graph

242 Commits

Author SHA1 Message Date
Xavier de Gaye f44abdab1e Issue #26937: The chown() method of the tarfile.TarFile class does not fail now
when the grp module cannot be imported, as for example on Android platforms.
2016-12-09 09:33:09 +01:00
Serhiy Storchaka 2f4453eff8 Issue #28449: tarfile.open() with mode "r" or "r:" now tries to open a tar
file with compression before trying to open it without compression.  Otherwise
it had 50% chance failed with ignore_zeros=True.
2016-10-30 20:56:23 +02:00
Serhiy Storchaka a89d22aff3 Issue #28449: tarfile.open() with mode "r" or "r:" now tries to open a tar
file with compression before trying to open it without compression.  Otherwise
it had 50% chance failed with ignore_zeros=True.
2016-10-30 20:52:29 +02:00
Łukasz Langa 04bedfa3ce Issue #27199: TarFile expose copyfileobj bufsize to improve throughput
Patch by Jason Fried.
2016-09-09 19:48:14 -07:00
Larry Hastings 10108a7b9a Issue #27355: Removed support for Windows CE. It was never finished,
and Windows CE is no longer a relevant platform for Python.
2016-09-05 15:11:23 -07:00
Łukasz Langa 5135e9ed51 Merge 3.5, issue #27194 2016-06-11 16:56:18 -07:00
Łukasz Langa e7f27481a8 Issue #27194: superfluous truncate calls in tarfile.py slow down extraction
Patch by Jason Fried.
2016-06-11 16:42:36 -07:00
Lars Gustäbel 7c3e6848f2 Issue #24838: Merge tarfile fix from 3.5. 2016-04-19 08:53:14 +02:00
Lars Gustäbel 0f450abec4 Issue #24838: tarfile's ustar and gnu formats now correctly calculate name and
link field limits for multibyte character encodings like utf-8.
2016-04-19 08:43:17 +02:00
Serhiy Storchaka b6a9c9761c Issue #26778: Fixed "a/an/and" typos in code comment, documentation and error
messages.
2016-04-17 09:39:28 +03:00
Serhiy Storchaka 6a7b3a77b4 Issue #26778: Fixed "a/an/and" typos in code comment and documentation. 2016-04-17 08:32:47 +03:00
Martin Panter 2d2d08d2cc Issue #22468: Merge gettarinfo() doc from 3.5 2016-02-19 23:46:59 +00:00
Martin Panter f817a48d17 Issues #22468, #21996, #22208: Clarify gettarinfo() and TarInfo usage
* The Windows-specific binary notice was probably a Python 2 thing
* Make it more obvious gettarinfo() is based on stat(), and that non-ordinary
  files may need special care
* The file name must be text; suggest dummy arcname as a workaround
* Indicate TarInfo may be used directly, not just via gettarinfo()
2016-02-19 23:34:56 +00:00
Martin Panter 104dcdab59 Issue #23883: Add missing APIs to tarfile.__all__
Patch by Joel Taddei and Jacek Kołodziej.
2016-01-16 06:59:13 +00:00
Serhiy Storchaka a254921cd4 Issue #22227: The TarFile iterator is reimplemented using generator.
This implementation is simpler that using class.
2015-12-19 09:43:14 +02:00
Martin Panter b82032f935 Issue #22341: Drop Python 2 workaround and document CRC initial value
Also align the parameter naming in binascii to be consistent with zlib.
2015-12-11 05:19:29 +00:00
Lars Gustäbel e12aa62d68 Merge with 3.4: Issue #24259: tarfile now raises a ReadError if an archive is truncated inside a data segment. 2015-07-06 09:29:41 +02:00
Lars Gustäbel 0357268d96 Issue #24259: tarfile now raises a ReadError if an archive is truncated inside a data segment. 2015-07-06 09:27:24 +02:00
Lars Gustäbel 49c521fd5d Merge with 3.4: Issue #24514: tarfile now tolerates number fields consisting of only whitespace. 2015-07-02 19:41:03 +02:00
Lars Gustäbel b7a688b3a4 Issue #24514: tarfile now tolerates number fields consisting of only whitespace. 2015-07-02 19:38:38 +02:00
Lars Gustäbel 20703c6969 tarfile.open() with mode 'x' created files without an end of archive marker. 2015-05-27 12:53:44 +02:00
Eric V. Smith 7a80389ce5 Issue 23193: Add numeric_owner to tarfile.TarFile.extract() and tarfile.TarFile.extractall(). 2015-04-15 10:27:58 -04:00
Serhiy Storchaka 7e7a3dba5f Issue #23865: close() methods in multiple modules now are idempotent and more
robust at shutdown. If needs to release multiple resources, they are released
even if errors are occured.
2015-04-10 13:24:41 +03:00
Serhiy Storchaka 2116b12da5 Issue #23865: close() methods in multiple modules now are idempotent and more
robust at shutdown. If needs to release multiple resources, they are released
even if errors are occured.
2015-04-10 13:29:28 +03:00
Serhiy Storchaka ca8b64461d Issue #23615: Modules bz2, tarfile and tokenize now can be reloaded with
imp.reload().  Patch by Thomas Kluyver.
2015-03-11 17:31:33 +02:00
Serhiy Storchaka cf4a2f29ad Issue #23615: Modules bz2, tarfile and tokenize now can be reloaded with
imp.reload().  Patch by Thomas Kluyver.
2015-03-11 17:18:03 +02:00
Berker Peksag 0fe6325acf Issue #21717: tarfile.open() now supports 'x' (exclusive creation) mode. 2015-02-13 21:02:12 +02:00
Serhiy Storchaka 4bdcfce512 Issue #23421: Fixed compression in tarfile CLI. Patch by wdv4758h. 2015-02-10 08:47:10 +02:00
Serhiy Storchaka 832dd5f0d6 Issue #23421: Fixed compression in tarfile CLI. Patch by wdv4758h. 2015-02-10 08:45:53 +02:00
Serhiy Storchaka a7eb746278 Issue #21549: Added the "members" parameter to TarFile.list(). 2014-08-21 10:01:16 +03:00
Serhiy Storchaka 2c6a3aedeb Issue 21044: tarfile.open() now handles fileobj with an integer 'name'
attribute.  Based on patch by Martin Panter.
2014-07-16 23:58:58 +03:00
Victor Stinner 7fa767e517 Issue #20976: pyflakes: Remove unused imports 2014-03-20 09:16:38 +01:00
Serhiy Storchaka 255493c813 Issue #19920: TarFile.list() no longer fails when outputs a listing
containing non-encodable characters.  Added tests for TarFile.list().
Based on patch by Vajrasky Kok.
2014-02-05 20:54:43 +02:00
Serhiy Storchaka 3b4f1594ff Issue #19920: TarFile.list() no longer fails when outputs a listing
containing non-encodable characters.  Added tests for TarFile.list().
Based on patch by Vajrasky Kok.
2014-02-05 20:53:36 +02:00
Serhiy Storchaka 2d1f092469 Issue #20244: Fixed possible file leaks when unexpected error raised in
tarfile open functions.
2014-01-18 16:28:37 +02:00
Serhiy Storchaka e413cde95f Issue #20244: Fixed possible file leaks when unexpected error raised in
tarfile open functions.
2014-01-18 16:28:08 +02:00
Serhiy Storchaka aee0e63ed0 Issue #20243: TarFile no longer raise ReadError when opened in write mode. 2014-01-18 16:14:49 +02:00
Serhiy Storchaka c2d01423e0 Issue #20243: TarFile no longer raise ReadError when opened in write mode. 2014-01-18 16:14:10 +02:00
Serhiy Storchaka 7d68a1c921 Issue #20238: TarFile opened with external fileobj and "w:gz" mode didn't
write complete output on close.
2014-01-18 15:53:39 +02:00
Serhiy Storchaka 9fbec7ad5e Issue #20238: TarFile opened with external fileobj and "w:gz" mode didn't
write complete output on close.
2014-01-18 15:53:05 +02:00
Serhiy Storchaka ce644a09ac Issue #20245: The open functions in the tarfile module now correctly handle empty mode. 2014-01-18 15:37:21 +02:00
Serhiy Storchaka 53ad0cd284 Issue #20245: The open functions in the tarfile module now correctly handle empty mode. 2014-01-18 15:35:37 +02:00
Serhiy Storchaka 8f8ec92de8 Issue #19936: Added executable bits or shebang lines to Python scripts which
requires them.  Disable executable bits and shebang lines in test and
benchmark files in order to prevent using a random system python, and in
source files of modules which don't provide command line interface.  Fixed
shebang lines in the unittestgui and checkpip scripts.
2014-01-16 17:33:23 +02:00
Serhiy Storchaka b992a0e102 Issue #19936: Added executable bits or shebang lines to Python scripts which
requires them.  Disable executable bits and shebang lines in test and
benchmark files in order to prevent using a random system python, and in
source files of modules which don't provide command line interface.  Fixed
shebang line to use python3 executable in the unittestgui script.
2014-01-16 17:15:49 +02:00
Ethan Furman df3ed242c0 Issue19995: %o, %x, %X now only accept ints 2014-01-05 06:50:30 -08:00
Serhiy Storchaka d27b455bbc Issue #13477: Added command line interface to the tarfile module.
Original patch by Berker Peksag.
2013-11-24 01:53:29 +02:00
Ethan Furman da14920247 Close #18281: superfluous stat constants removed from tarfile 2013-10-12 18:13:02 -07:00
Ezio Melotti 9a3777e525 #18705: merge with 3.3. 2013-08-17 15:53:55 +03:00
Ezio Melotti 30b9d5d3af #18705: fix a number of typos. Patch by Févry Thibault. 2013-08-17 15:50:46 +03:00
Brett Cannon cd171c8e92 Issue #18200: Back out usage of ModuleNotFoundError (8d28d44f3a9a) 2013-07-04 17:43:24 -04:00
Brett Cannon 0a140668fa Issue #18200: Update the stdlib (except tests) to use
ModuleNotFoundError.
2013-06-13 20:57:26 -04:00
Serhiy Storchaka b3c5d85680 Issue #16601: Restarting iteration over tarfile no more continues from where
it left off.  Patch by Michael Birtwell.
2013-05-09 14:36:58 +03:00
Serhiy Storchaka 263fab94ee Issue #16601: Restarting iteration over tarfile no more continues from where
it left off.  Patch by Michael Birtwell.
2013-05-09 14:22:26 +03:00
Andrew Svetlov f7a17b48d7 Replace IOError with OSError (#16715) 2012-12-25 16:47:37 +02:00
Andrew Svetlov 2606a6f197 Issue #16719: Get rid of WindowsError. Use OSError instead
Patch by Serhiy Storchaka.
2012-12-19 14:33:35 +02:00
Andrew Svetlov 3438fa496d Get rig of EnvironmentError (#16705) 2012-12-17 23:35:18 +02:00
Andrew Svetlov 7030dd8500 Merge issue #16477: Close tarfile internal handlers in case of exception.
Patch by Serhiy Storchaka.
2012-11-29 14:21:39 +02:00
Andrew Svetlov 7ecd13da5f Merge issue #16477: Close tarfile internal handlers in case of exception.
Patch by Serhiy Storchaka.
2012-11-29 14:21:23 +02:00
Andrew Svetlov 718df1d638 Issue #16477: Close tarfile internal handlers in case of exception.
Patch by Serhiy Storchaka.
2012-11-29 14:20:47 +02:00
Jesus Cea 4791a24268 #16135: Removal of OS/2 support (Python code partial cleanup) 2012-10-05 03:15:39 +02:00
Nadeem Vawda 33c34da574 Simplify usage of LZMAFile's fileobj support, like with BZ2File. 2012-06-04 23:34:07 +02:00
Nadeem Vawda aebcdba829 Make BZ2File's fileobj support easier to use.
The fileobj argument was added during the 3.3 development cycle, so this change
does not break backward compatibility with 3.2.
2012-06-04 23:31:20 +02:00
Ross Lagerwall 468ff4c3ed Issue #13031: Small speed-up for tarfile when unzipping tarfiles.
Patch by Justin Peel.
2012-05-17 19:49:27 +02:00
Giampaolo Rodola' ffa1d0b8d5 #14807: move undocumented tarfile.filemode() to stat.filemode(). Add tarfile.filemode alias with deprecation warning. 2012-05-15 15:30:25 +02:00
Lars Gustäbel b062a2fa17 Issue #13815: Resurrect the ExFileObject class.
After a discussion in the tracker, the decision was made to keep the
ExFileObject class after all as a subclass of io.BufferedReader instead of
removing it completely.
2012-05-14 13:18:16 +02:00
Lars Gustäbel 7a919e9930 Issue #13815: TarFile.extractfile() now returns io.BufferedReader objects.
The ExFileObject class was removed, some of its code went into _FileInFile.
2012-05-05 18:15:03 +02:00
Lars Gustäbel 9f478c021d Merge with 3.2: Issue #14160: TarFile.extractfile() failed to resolve symbolic
links when the links were not located in an archive subdirectory.
2012-04-24 21:09:17 +02:00
Lars Gustäbel 1ef9eda7bc Issue #14160: TarFile.extractfile() failed to resolve symbolic links
when the links were not located in an archive subdirectory.
2012-04-24 21:04:40 +02:00
Lars Gustäbel c5e1199f38 Issue #5689: Avoid excessive memory usage by using the default lzma preset. 2012-01-18 14:01:17 +01:00
Lars Gustäbel dee45e20f6 Issue #12926: Fix a bug in tarfile's link extraction.
On platforms that do not support (symbolic) links, tarfile offers a
work-around and extracts a link in an archive as the regular file the link is
pointing to. On other platforms, this code was accidentally executed even
after the link had been successfully extracted which failed due to the already
existing link.
2012-01-05 18:48:06 +01:00
Lars Gustäbel 8f771a4716 Merge from 3.2: Issue #12926: Fix a bug in tarfile's link extraction.
On platforms that do not support (symbolic) links, tarfile offers a
work-around and extracts a link in an archive as the regular file the link is
pointing to. On other platforms, this code was accidentally executed even
after the link had been successfully extracted which failed due to the already
existing link.
2012-01-05 18:53:00 +01:00
Eli Bendersky 74c503b40d use io.SEEK_* constants instead of os.SEEK_* where an IO stream is seeked, leaving the os.SEEK_* constants only for os.lseek, as documented 2012-01-03 06:26:13 +02:00
Lars Gustäbel 0a9dd2f11d Issue #5689: Add support for lzma compression to the tarfile module. 2011-12-10 20:38:14 +01:00
Lars Gustäbel bb44b73e17 Remove no longer needed work-around for bz2 file object support. 2011-12-06 13:44:10 +01:00
Lars Gustäbel 45fb082180 Merge with 3.2: Correctly detect bzip2 compressed streams with blocksizes other than 900k. 2011-12-06 13:00:58 +01:00
Lars Gustäbel ed1ac587df Correctly detect bzip2 compressed streams with blocksizes other than 900k. 2011-12-06 12:56:38 +01:00
Florent Xicluna 68f71a34f4 Simplify and remove few dependencies on 'errno', thanks to PEP 3151. 2011-10-28 16:06:23 +02:00
Lars Gustäbel 01277d166a Merge with 3.2: Issue #13158: Fix decoding and encoding of base-256 number fields in tarfile.
The nti() function that converts a number field from a tar header to a number
failed to decode GNU tar specific base-256 fields. I also added support for
decoding and encoding negative base-256 number fields.
2011-10-14 12:53:10 +02:00
Lars Gustäbel ac3d137a30 Issue #13158: Fix decoding and encoding of base-256 number fields in tarfile.
The nti() function that converts a number field from a tar header to a number
failed to decode GNU tar specific base-256 fields. I also added support for
decoding and encoding negative base-256 number fields.
2011-10-14 12:46:40 +02:00
Lars Gustäbel 24757851b7 Merge with 3.2: Issue #12841: Fix tarfile extraction of non-existent uids/gids. 2011-09-05 16:59:44 +02:00
Lars Gustäbel 2e7ddd374b Issue #12841: Fix tarfile extraction of non-existent uids/gids.
tarfile unnecessarily checked the existence of numerical user and group ids on
extraction. If one of them did not exist the respective id of the current user
(i.e. root) was used for the file and ownership information was lost. (Patch
by Sebastien Luttringer)
2011-09-05 16:58:14 +02:00
Georg Brandl 74b6abf61f Merge with 3.2. 2011-08-13 11:48:40 +02:00
Georg Brandl 3abb372c81 Fix #11513: wrong exception handling for the case that GzipFile itself raises an IOError. 2011-08-13 11:48:12 +02:00
Senthil Kumaran a2250e61db merge from 3.2 - Fix closes Issue11439 Remove the SVN keywords from the code as it is no longer applicable in hg. Patch Contributed by Neil Muller. 2011-07-28 23:39:08 +08:00
Senthil Kumaran 7c9719cf74 Fix closes Issue11439 Remove the SVN keywords from the code as it is no longer applicable in hg. Patch Contributed by Neil Muller. 2011-07-28 22:32:49 +08:00
Benjamin Peterson 8c6f88efa2 remove __version__s dependent on subversion keyword expansion (closes #12221) 2011-05-31 20:52:17 -05:00
Marc-André Lemburg 8f36af7a4c Normalize the encoding names for Latin-1 and UTF-8 to
'latin-1' and 'utf-8'.

These are optimized in the Python Unicode implementation
to result in more direct processing, bypassing the codec
registry.

Also see issue11303.
2011-02-25 15:42:01 +00:00
Lars Gustäbel 9f6cbe09cc Merged revisions 88528 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r88528 | lars.gustaebel | 2011-02-23 12:42:22 +0100 (Wed, 23 Feb 2011) | 16 lines

  Issue #11224: Improved sparse file read support (r85916) introduced a
  regression in _FileInFile which is used in file-like objects returned
  by TarFile.extractfile(). The inefficient design of the
  _FileInFile.read() method causes various dramatic side-effects and
  errors:

    - The data segment of a file member is read completely into memory
      every(!) time a small block is accessed. This is not only slow
      but may cause unexpected MemoryErrors with very large files.
    - Reading members from compressed tar archives is even slower
      because of the excessive backwards seeking which is done when the
      same data segment is read over and over again.
    - As a backwards seek on a TarFile opened in stream mode is not
      possible, using extractfile() fails with a StreamError.
........
2011-02-23 11:52:31 +00:00
Lars Gustäbel dd071045e7 Issue #11224: Improved sparse file read support (r85916) introduced a
regression in _FileInFile which is used in file-like objects returned
by TarFile.extractfile(). The inefficient design of the
_FileInFile.read() method causes various dramatic side-effects and
errors:

  - The data segment of a file member is read completely into memory
    every(!) time a small block is accessed. This is not only slow
    but may cause unexpected MemoryErrors with very large files.
  - Reading members from compressed tar archives is even slower
    because of the excessive backwards seeking which is done when the
    same data segment is read over and over again.
  - As a backwards seek on a TarFile opened in stream mode is not
    possible, using extractfile() fails with a StreamError.
2011-02-23 11:42:22 +00:00
Raymond Hettinger a63a312a3f Issue #11014: Make 'filter' argument in tarfile.Tarfile.add() into a
keyword-only argument.  The preceding positional argument was deprecated,
so it made no sense to add filter as a positional argument.

(Patch reviewed by Brian Curtin and Anthony Long.)
2011-01-26 20:34:14 +00:00
Martin v. Löwis 16f344df36 Issue #10184: Touch directories only once when extracting a tarfile. 2010-11-01 21:39:13 +00:00
Antoine Pitrou e1eca4e3f5 Issue #10233: Close file objects in a timely manner in the tarfile module
and its test suite.
2010-10-29 23:49:49 +00:00
Lars Gustäbel 9cbdd75ec5 Add read support for all missing variants of the GNU sparse
extensions. Thus, in addition to GNUTYPE_SPARSE headers, sparse
information in pax headers created by GNU tar can now be decoded.
All three formats 0.0, 0.1 and 1.0 are supported.
On filesystems that support this, holes in files are now restored
whenever a sparse member is extracted.
2010-10-29 09:08:19 +00:00
Lars Gustäbel 331b8002f0 Issue #9065: no longer use "root" as the default for the
uname and gname field.

If tarfile creates a new archive and adds a file with a
uid/gid that doesn't have a corresponding name on the
system (e.g. because the user/group account was deleted) it
uses the empty string in the uname/gname field now instead
of "root". Using "root" as the default was a bad idea
because on extraction the uname/gname fields are supposed
to override the uid/gid fields. So, all archive members
with nameless uids/gids belonged to the root user after
extraction.
2010-10-04 15:18:47 +00:00
Brian Curtin 82df53e932 Fix a line that got hacked up by r82659. 2010-09-24 21:04:05 +00:00
Antoine Pitrou 605c293031 Further tarfile / test_tarfile cleanup 2010-09-23 20:15:14 +00:00
Antoine Pitrou 95f5560b46 Try to fix test_tarfile issues on Windows buildbots by closing file
objects explicitly instead of letting them linger on.
2010-09-23 18:36:46 +00:00
Brian Curtin 16633fa497 Fix the breakage of Lib/tarfile.py on non-Windows platforms due to
using WindowsError in a try/except. Only add WindowsError to the list of
exceptions to catch when we are actually running on Windows.

Additionally, add a call that was left out in test_posixpath.

Thanks Amaury, Antoine, and Jason.
2010-07-09 13:54:27 +00:00
Brian Curtin d40e6f70a5 Implement #1578269. Patch by Jason R. Coombs.
Added Windows support for os.symlink when run on Windows 6.0 or greater,
aka Vista. Previous Windows versions will raise NotImplementedError
when trying to symlink.

Includes numerous test updates and additions to test_os, including
a symlink_support module because of the fact that privilege escalation
is required in order to run the tests to ensure that the user is able
to create symlinks. By default, accounts do not have the required
privilege, so the escalation code will have to be exposed later (or
documented on how to do so). I'll be following up with that work next.

Note that the tests use ctypes, which was agreed on during the PyCon
language summit.
2010-07-08 21:39:08 +00:00
Victor Stinner 0f35e2c0f4 Issue #8784: Set tarfile default encoding to 'utf-8' on Windows.
Note: file system encoding cannot be None anymore (since r81190, issue #8610).
2010-06-11 23:46:47 +00:00