Ejemplo n.º 1
0
    def from_archive(cls, archive, encoding=ENCODING):
        '''Instantiates an Entry class and sets all the properties from an archive header.'''
        e = _libarchive.archive_entry_new()
        try:
            call_and_check(_libarchive.archive_read_next_header2, archive._a,
                           archive._a, e)
            mode = _libarchive.archive_entry_filetype(e)
            mode |= _libarchive.archive_entry_perm(e)

            if PY3:
                pathname = _libarchive.archive_entry_pathname(e)
            else:
                pathname = _libarchive.archive_entry_pathname(e).decode(
                    encoding)

            entry = cls(
                pathname=pathname,
                size=_libarchive.archive_entry_size(e),
                mtime=_libarchive.archive_entry_mtime(e),
                mode=mode,
                hpos=archive.header_position,
            )
        finally:
            _libarchive.archive_entry_free(e)
        return entry
Ejemplo n.º 2
0
 def from_archive(cls, archive, encoding=ENCODING):
     '''Instantiates an Entry class and sets all the properties from an archive header.'''
     e = _libarchive.archive_entry_new()
     try:
         call_and_check(_libarchive.archive_read_next_header2, archive._a, archive._a, e)
         mode = _libarchive.archive_entry_filetype(e)
         mode |= _libarchive.archive_entry_perm(e)
         entry = cls(
             pathname=_libarchive.archive_entry_pathname(e),
             size=_libarchive.archive_entry_size(e),
             mtime=_libarchive.archive_entry_mtime(e),
             mode=mode,
             hpos=archive.header_position,
         )
     finally:
         _libarchive.archive_entry_free(e)
     return entry