support pythons with busted ffi

This commit is contained in:
ed 2021-10-12 00:44:55 +02:00
parent 2e787a254e
commit 3b4dfe326f

View file

@ -10,7 +10,6 @@ import json
import base64 import base64
import string import string
import socket import socket
import ctypes
from datetime import datetime from datetime import datetime
from operator import itemgetter from operator import itemgetter
import calendar import calendar
@ -20,6 +19,11 @@ try:
except: except:
pass pass
try:
import ctypes
except:
pass
from .__init__ import E, PY2, WINDOWS, ANYWIN, unicode from .__init__ import E, PY2, WINDOWS, ANYWIN, unicode
from .util import * # noqa # pylint: disable=unused-wildcard-import from .util import * # noqa # pylint: disable=unused-wildcard-import
from .bos import bos from .bos import bos
@ -1917,11 +1921,14 @@ class HttpCli(object):
# some fuses misbehave # some fuses misbehave
if not self.args.nid: if not self.args.nid:
if WINDOWS: if WINDOWS:
try:
bfree = ctypes.c_ulonglong(0) bfree = ctypes.c_ulonglong(0)
ctypes.windll.kernel32.GetDiskFreeSpaceExW( ctypes.windll.kernel32.GetDiskFreeSpaceExW(
ctypes.c_wchar_p(abspath), None, None, ctypes.pointer(bfree) ctypes.c_wchar_p(abspath), None, None, ctypes.pointer(bfree)
) )
srv_info.append(humansize(bfree.value) + " free") srv_info.append(humansize(bfree.value) + " free")
except:
pass
else: else:
sv = os.statvfs(fsenc(abspath)) sv = os.statvfs(fsenc(abspath))
free = humansize(sv.f_frsize * sv.f_bfree, True) free = humansize(sv.f_frsize * sv.f_bfree, True)