src/modules/bundle/TarBundle.py
changeset 443 5ffa5b7dac9c
parent 409 713e20963dc2
child 1196 3d58c557b59b
equal deleted inserted replaced
442:01fb28d438b3 443:5ffa5b7dac9c
    26 #
    26 #
    27 
    27 
    28 import os
    28 import os
    29 import stat
    29 import stat
    30 import tarfile
    30 import tarfile
    31 
    31 import pkg.misc as misc
    32 from pkg.actions import *
    32 from pkg.actions import *
    33 
    33 
    34 class TarBundle(object):
    34 class TarBundle(object):
    35 
    35 
    36         def __init__(self, filename):
    36         def __init__(self, filename):
    47                         yield self.action(self.tf, f)
    47                         yield self.action(self.tf, f)
    48 
    48 
    49         def action(self, tarfile, tarinfo):
    49         def action(self, tarfile, tarinfo):
    50                 if tarinfo.isreg():
    50                 if tarinfo.isreg():
    51                         return file.FileAction(tarfile.extractfile(tarinfo),
    51                         return file.FileAction(tarfile.extractfile(tarinfo),
    52                             mode = oct(stat.S_IMODE(tarinfo.mode)),
    52                             mode=oct(stat.S_IMODE(tarinfo.mode)),
    53                             owner = tarinfo.uname, group = tarinfo.gname,
    53                             owner=tarinfo.uname, group=tarinfo.gname,
    54                             path = tarinfo.name)
    54                             path=tarinfo.name,
       
    55                             timestamp=misc.time_to_timestamp(tarinfo.mtime))
    55                 elif tarinfo.isdir():
    56                 elif tarinfo.isdir():
    56                         return directory.DirectoryAction(
    57                         return directory.DirectoryAction(
    57                             mode = oct(stat.S_IMODE(tarinfo.mode)),
    58                             mode=oct(stat.S_IMODE(tarinfo.mode)),
    58                             owner = tarinfo.uname, group = tarinfo.gname,
    59                             owner=tarinfo.uname, group=tarinfo.gname,
    59                             path = tarinfo.name)
    60                             path=tarinfo.name)
    60 
    61 
    61 def test(filename):
    62 def test(filename):
    62         try:
    63         try:
    63                 return tarfile.is_tarfile(filename)
    64                 return tarfile.is_tarfile(filename)
    64         except:
    65         except: