133 |
133 |
134 class tarit(object): |
134 class tarit(object): |
135 '''write archive to tar file or stream. can write uncompressed, |
135 '''write archive to tar file or stream. can write uncompressed, |
136 or compress with gzip or bzip2.''' |
136 or compress with gzip or bzip2.''' |
137 |
137 |
138 class GzipFileWithTime(gzip.GzipFile): |
138 if True: |
139 def __init__(self, *args, **kw): |
139 |
140 timestamp = None |
140 class GzipFileWithTime(gzip.GzipFile): |
141 if 'mtime' in kw: |
141 def __init__(self, *args, **kw): |
142 timestamp = kw.pop('mtime') |
142 timestamp = None |
143 if timestamp is None: |
143 if 'mtime' in kw: |
144 self.timestamp = time.time() |
144 timestamp = kw.pop('mtime') |
145 else: |
145 if timestamp is None: |
146 self.timestamp = timestamp |
146 self.timestamp = time.time() |
147 gzip.GzipFile.__init__(self, *args, **kw) |
147 else: |
148 |
148 self.timestamp = timestamp |
149 def _write_gzip_header(self): |
149 gzip.GzipFile.__init__(self, *args, **kw) |
150 self.fileobj.write(b'\037\213') # magic header |
150 |
151 self.fileobj.write(b'\010') # compression method |
151 def _write_gzip_header(self): |
152 fname = self.name |
152 self.fileobj.write(b'\037\213') # magic header |
153 if fname and fname.endswith(b'.gz'): |
153 self.fileobj.write(b'\010') # compression method |
154 fname = fname[:-3] |
154 fname = self.name |
155 flags = 0 |
155 if fname and fname.endswith(b'.gz'): |
156 if fname: |
156 fname = fname[:-3] |
157 flags = gzip.FNAME # pytype: disable=module-attr |
157 flags = 0 |
158 self.fileobj.write(pycompat.bytechr(flags)) |
158 if fname: |
159 gzip.write32u( # pytype: disable=module-attr |
159 flags = gzip.FNAME # pytype: disable=module-attr |
160 self.fileobj, int(self.timestamp) |
160 self.fileobj.write(pycompat.bytechr(flags)) |
161 ) |
161 gzip.write32u( # pytype: disable=module-attr |
162 self.fileobj.write(b'\002') |
162 self.fileobj, int(self.timestamp) |
163 self.fileobj.write(b'\377') |
163 ) |
164 if fname: |
164 self.fileobj.write(b'\002') |
165 self.fileobj.write(fname + b'\000') |
165 self.fileobj.write(b'\377') |
|
166 if fname: |
|
167 self.fileobj.write(fname + b'\000') |
166 |
168 |
167 def __init__(self, dest, mtime, kind=b''): |
169 def __init__(self, dest, mtime, kind=b''): |
168 self.mtime = mtime |
170 self.mtime = mtime |
169 self.fileobj = None |
171 self.fileobj = None |
170 |
172 |