equal
deleted
inserted
replaced
8 |
8 |
9 |
9 |
10 import collections |
10 import collections |
11 import contextlib |
11 import contextlib |
12 import copy |
12 import copy |
13 import errno |
|
14 import os |
13 import os |
15 import re |
14 import re |
16 import shutil |
15 import shutil |
17 import zlib |
16 import zlib |
18 |
17 |
501 return (self.opener.readlink(fname), (True, False)) |
500 return (self.opener.readlink(fname), (True, False)) |
502 |
501 |
503 isexec = False |
502 isexec = False |
504 try: |
503 try: |
505 isexec = self.opener.lstat(fname).st_mode & 0o100 != 0 |
504 isexec = self.opener.lstat(fname).st_mode & 0o100 != 0 |
506 except OSError as e: |
505 except FileNotFoundError: |
507 if e.errno != errno.ENOENT: |
506 pass |
508 raise |
|
509 try: |
507 try: |
510 return (self.opener.read(fname), (False, isexec)) |
508 return (self.opener.read(fname), (False, isexec)) |
511 except IOError as e: |
509 except FileNotFoundError: |
512 if e.errno != errno.ENOENT: |
|
513 raise |
|
514 return None, None |
510 return None, None |
515 |
511 |
516 def setfile(self, fname, data, mode, copysource): |
512 def setfile(self, fname, data, mode, copysource): |
517 islink, isexec = mode |
513 islink, isexec = mode |
518 if data is None: |
514 if data is None: |