equal
deleted
inserted
replaced
300 # already exists. |
300 # already exists. |
301 target = b'checklink-target' |
301 target = b'checklink-target' |
302 try: |
302 try: |
303 fullpath = os.path.join(cachedir, target) |
303 fullpath = os.path.join(cachedir, target) |
304 open(fullpath, b'w').close() |
304 open(fullpath, b'w').close() |
305 except IOError as inst: |
305 except PermissionError: |
306 # pytype: disable=unsupported-operands |
306 # If we can't write to cachedir, just pretend |
307 if inst[0] == errno.EACCES: |
307 # that the fs is readonly and by association |
308 # pytype: enable=unsupported-operands |
308 # that the fs won't support symlinks. This |
309 |
309 # seems like the least dangerous way to avoid |
310 # If we can't write to cachedir, just pretend |
310 # data loss. |
311 # that the fs is readonly and by association |
311 return False |
312 # that the fs won't support symlinks. This |
|
313 # seems like the least dangerous way to avoid |
|
314 # data loss. |
|
315 return False |
|
316 raise |
|
317 try: |
312 try: |
318 os.symlink(target, name) |
313 os.symlink(target, name) |
319 if cachedir is None: |
314 if cachedir is None: |
320 unlink(name) |
315 unlink(name) |
321 else: |
316 else: |