1298
1300
DiskTreeTransform.__init__(self, tree, limbodir, pb,
1299
1301
tree.case_sensitive)
1300
1302
self._deletiondir = deletiondir
1303
self._creation_mtime = None
1302
1305
def canonical_path(self, path):
1303
1306
"""Get the canonical tree-relative path"""
1360
1363
if typefunc(mode):
1361
1364
os.chmod(self._limbo_name(trans_id), mode)
1366
def _set_mtime(self, f):
1367
"""All files that are created get the same mtime.
1369
This time is set by the first object to be created.
1371
if self._creation_mtime is None:
1372
self._creation_mtime = time.time()
1373
import ctypes, msvcrt
1374
class BASIC_INFO(ctypes.Structure):
1375
_fields_ = [('CreationTime', ctypes.c_int64),
1376
('LastAccessTime', ctypes.c_int64),
1377
('LastWriteTime', ctypes.c_int64),
1378
('ChangeTime', ctypes.c_int64),
1379
('FileAttributes', ctypes.c_uint32),
1382
gfi = ctypes.windll.kernel32.GetFileInformationByHandleEx
1383
handle = msvcrt.get_osfhandle(f.fileno())
1384
ret = gfi(handle, 0, ctypes.byref(bi), ctypes.sizeof(bi))
1385
assert ret, "failed to get file information: %d" % (
1386
ctypes.GetLastError(),)
1387
sfi = ctypes.windll.kernel32.SetFileInformationByHandle
1388
bi.LastWriteTime = int((self._creation_mtime + 11644473600.0) * 1.0e7)
1389
ret = sfi(handle, 0, ctypes.byref(bi), ctypes.sizeof(bi))
1390
assert ret, "Failed to set file information: %d" % (
1391
ctypes.GetLastError(),)
1363
1394
def iter_tree_children(self, parent_id):
1364
1395
"""Iterate through the entry's tree children, if any"""