Adding libc module for purpose of 2.0.0 support.
This commit is contained in:
parent
5c022f6460
commit
589dec5189
2 changed files with 46 additions and 0 deletions
|
|
@ -1,3 +1,4 @@
|
||||||
"""This package organizes individual libraries employed by glymur."""
|
"""This package organizes individual libraries employed by glymur."""
|
||||||
from . import openjp2 as _openjp2
|
from . import openjp2 as _openjp2
|
||||||
from . import openjpeg as _openjpeg
|
from . import openjpeg as _openjpeg
|
||||||
|
from . import c
|
||||||
|
|
|
||||||
45
glymur/lib/c.py
Normal file
45
glymur/lib/c.py
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
"""
|
||||||
|
Wraps fopen and fclose functions in libc.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import ctypes
|
||||||
|
import ctypes.util
|
||||||
|
|
||||||
|
libc_path = ctypes.util.find_library('c')
|
||||||
|
C_LIB = ctypes.CDLL(libc_path)
|
||||||
|
|
||||||
|
def fopen(filename, mode):
|
||||||
|
"""Opens the file with the specified mode.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
filename : str
|
||||||
|
Path to filename.
|
||||||
|
mode : str
|
||||||
|
Specifies how the file is to be opened.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
fptr : ctypes.c_void_p
|
||||||
|
File pointer.
|
||||||
|
"""
|
||||||
|
C_LIB.fopen.restype = ctypes.c_void_p
|
||||||
|
C_LIB.fopen.argtypes = [ctypes.c_char_p, ctypes.c_char_p]
|
||||||
|
fptr = C_LIB.fopen(ctypes.c_char_p(filename.encode()),
|
||||||
|
ctypes.c_char_p(mode.encode()))
|
||||||
|
return fptr
|
||||||
|
|
||||||
|
def fclose(fptr):
|
||||||
|
"""Closes a file stream.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
fptr : ctypes.c_void_p
|
||||||
|
File pointer.
|
||||||
|
"""
|
||||||
|
C_LIB.fclose.argtypes = [ctypes.c_void_p]
|
||||||
|
C_LIB.fclose.restype = ctypes.c_int32
|
||||||
|
status = C_LIB.fclose(fptr)
|
||||||
|
if status != 0:
|
||||||
|
raise IOError("Unable to close file.")
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue