equal
deleted
inserted
replaced
1497 try: |
1497 try: |
1498 return (self.stat.st_ctime == old.stat.st_ctime) |
1498 return (self.stat.st_ctime == old.stat.st_ctime) |
1499 except AttributeError: |
1499 except AttributeError: |
1500 return False |
1500 return False |
1501 |
1501 |
|
1502 def avoidambig(self, path, old): |
|
1503 """Change file stat of specified path to avoid ambiguity |
|
1504 |
|
1505 'old' should be previous filestat of 'path'. |
|
1506 |
|
1507 This skips avoiding ambiguity, if a process doesn't have |
|
1508 appropriate privileges for 'path'. |
|
1509 """ |
|
1510 advanced = (old.stat.st_mtime + 1) & 0x7fffffff |
|
1511 try: |
|
1512 os.utime(path, (advanced, advanced)) |
|
1513 except OSError as inst: |
|
1514 if inst.errno == errno.EPERM: |
|
1515 # utime() on the file created by another user causes EPERM, |
|
1516 # if a process doesn't have appropriate privileges |
|
1517 return |
|
1518 raise |
|
1519 |
1502 def __ne__(self, other): |
1520 def __ne__(self, other): |
1503 return not self == other |
1521 return not self == other |
1504 |
1522 |
1505 class atomictempfile(object): |
1523 class atomictempfile(object): |
1506 '''writable file object that atomically updates a file |
1524 '''writable file object that atomically updates a file |