Beispiel #1
0
 def write(self, member, data=None):
     '''Writes a string buffer to the archive as the given entry.'''
     if isinstance(member, basestring):
         member = self.entry_class(pathname=member, encoding=self.encoding)
     if data:
         member.size = len(data)
     member.to_archive(self)
     if data:
         _libarchive.archive_write_data_from_str(self._a, data)
     _libarchive.archive_write_finish_entry(self._a)
Beispiel #2
0
    def close(self):
        if self.closed:
            return
        if self.buffer:
            self.entry.size = self.buffer.tell()
            self.entry.to_archive(self.archive)
            _libarchive.archive_write_data_from_str(self.archive._a, self.buffer.getvalue())
        _libarchive.archive_write_finish_entry(self.archive._a)

        # Call archive.close() with _defer True to let it know we have been
        # closed and it is now safe to actually close.
        self.archive.close(_defer=True)
        self.archive = None
        self.closed = True
Beispiel #3
0
    def write(self, member, data=None):
        '''Writes a string buffer to the archive as the given entry.'''
        if isinstance(member, str):
            member = self.entry_class(pathname=member, encoding=self.encoding)
        if data:
            member.size = len(data)
        member.to_archive(self)

        if data:
            if PY3:
                if isinstance(data, bytes):
                    result = _libarchive.archive_write_data_from_str(
                        self._a, data)
                else:
                    result = _libarchive.archive_write_data_from_str(
                        self._a, data.encode('utf8'))
            else:
                result = _libarchive.archive_write_data_from_str(self._a, data)
        _libarchive.archive_write_finish_entry(self._a)