pyodide: no mmap (#39)
This lets the library work on platforms without `mmap()`.
This commit is contained in:
parent
f5150e4d67
commit
dc578f6582
|
@ -104,14 +104,18 @@ class DAF(object):
|
|||
fileno = self.file.fileno()
|
||||
except (AttributeError, io.UnsupportedOperation):
|
||||
fileno = None
|
||||
if fileno is None:
|
||||
m = None
|
||||
if fileno is not None:
|
||||
skip = i % mmap.ALLOCATIONGRANULARITY
|
||||
r = mmap.ACCESS_READ
|
||||
try:
|
||||
m = mmap.mmap(fileno, length=j-i+skip, access=r, offset=i-skip)
|
||||
except OSError:
|
||||
m = None
|
||||
if m is None:
|
||||
skip = 0
|
||||
self.file.seek(i)
|
||||
m = self.file.read(j - i)
|
||||
else:
|
||||
skip = i % mmap.ALLOCATIONGRANULARITY
|
||||
r = mmap.ACCESS_READ
|
||||
m = mmap.mmap(fileno, length=j-i+skip, access=r, offset=i-skip)
|
||||
if sys.version_info > (3,):
|
||||
m = memoryview(m) # so further slicing can return views
|
||||
return m, skip
|
||||
|
|
Loading…
Reference in New Issue