mirror of
https://github.com/ciromattia/kcc
synced 2025-12-13 09:46:25 +00:00
os.access acts unpredictably on Windows
This commit is contained in:
@@ -28,7 +28,7 @@ from urllib.request import Request, urlopen
|
|||||||
from re import sub
|
from re import sub
|
||||||
from stat import S_IWRITE, S_IREAD, S_IEXEC
|
from stat import S_IWRITE, S_IREAD, S_IEXEC
|
||||||
from zipfile import ZipFile, ZIP_STORED, ZIP_DEFLATED
|
from zipfile import ZipFile, ZIP_STORED, ZIP_DEFLATED
|
||||||
from tempfile import mkdtemp, gettempdir
|
from tempfile import mkdtemp, gettempdir, TemporaryFile
|
||||||
from shutil import move, copytree, rmtree
|
from shutil import move, copytree, rmtree
|
||||||
from optparse import OptionParser, OptionGroup
|
from optparse import OptionParser, OptionGroup
|
||||||
from multiprocessing import Pool
|
from multiprocessing import Pool
|
||||||
@@ -1215,10 +1215,13 @@ def checkPre(source):
|
|||||||
rmtree(os.path.join(root, tempdir), True)
|
rmtree(os.path.join(root, tempdir), True)
|
||||||
# Make sure that target directory is writable
|
# Make sure that target directory is writable
|
||||||
if os.path.isdir(source):
|
if os.path.isdir(source):
|
||||||
writable = os.access(os.path.abspath(os.path.join(source, '..')), os.W_OK)
|
src = os.path.abspath(os.path.join(source, '..'))
|
||||||
else:
|
else:
|
||||||
writable = os.access(os.path.dirname(source), os.W_OK)
|
src = os.path.dirname(source)
|
||||||
if not writable:
|
try:
|
||||||
|
with TemporaryFile(prefix='KCC-', dir=src):
|
||||||
|
pass
|
||||||
|
except:
|
||||||
raise UserWarning("Target directory is not writable.")
|
raise UserWarning("Target directory is not writable.")
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user