Changeset 225 for trunk/python
- Timestamp:
- 04/05/11 11:17:41 (14 years ago)
- Location:
- trunk/python/pyregfi
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/python/pyregfi/__init__.py
r224 r225 95 95 import sys 96 96 import time 97 import weakref98 97 from pyregfi.structures import * 99 98 … … 635 634 pass 636 635 636 fh.seek(0) 637 637 self.raw_file = structures.REGFI_RAW_FILE() 638 638 self.raw_file.fh = fh 639 639 self.raw_file.seek = seek_cb_type(self.raw_file.cb_seek) 640 640 self.raw_file.read = read_cb_type(self.raw_file.cb_read) 641 self.file = regfi.regfi_alloc_cb(self.raw_file, REGFI_ENCODING_UTF8) 642 641 self.file = regfi.regfi_alloc_cb(pointer(self.raw_file), REGFI_ENCODING_UTF8) 642 if not self.file: 643 # XXX: switch to non-generic exception 644 raise Exception("Could not open registry file. Current log:\n" 645 + GetLogMessages()) 643 646 644 647 def __getattr__(self, name): -
trunk/python/pyregfi/structures.py
r224 r225 82 82 83 83 84 # XXX: how can we know for sure the size of off_t and size_t? 85 seek_cb_type = CFUNCTYPE(c_int64, POINTER(REGFI_RAW_FILE), c_uint64, c_int, use_errno=True) 86 read_cb_type = CFUNCTYPE(c_int64, POINTER(REGFI_RAW_FILE), POINTER(c_char), c_uint64, use_errno=True) 84 # Load libregfi according to platform 85 regfi = None 86 if hasattr(ctypes, 'windll'): 87 #regfi = ctypes.windll.libregfi 88 regfi = ctypes.WinDLL('libregfi.dll', use_errno=True) 89 CB_FACTORY = ctypes.WINFUNCTYPE 90 else: 91 regfi = ctypes.CDLL(ctypes.util.find_library('regfi'), use_errno=True) 92 CB_FACTORY = ctypes.CFUNCTYPE 93 94 # XXX: how can we know for sure the size of off_t? 95 # -D_FILE_OFFSET_BITS=64 might help, need to research this 96 # Also, may need to use something like ctypes_configure 97 #seek_cb_type = CB_FACTORY(c_int64, POINTER(REGFI_RAW_FILE), c_uint64, c_int, use_errno=True) 98 seek_cb_type = CB_FACTORY(c_int64, POINTER(REGFI_RAW_FILE), c_uint64, c_int) 99 #read_cb_type = CB_FACTORY(c_int64, POINTER(REGFI_RAW_FILE), POINTER(c_char), c_size_t, use_errno=True) 100 read_cb_type = CB_FACTORY(c_int64, POINTER(REGFI_RAW_FILE), POINTER(c_char), c_size_t) 87 101 88 102 … … 217 231 218 232 219 # Load libregfi and define function prototypes 220 regfi = ctypes.CDLL(ctypes.util.find_library('regfi'), use_errno=True) 221 233 # Define function prototypes 222 234 regfi.regfi_alloc.argtypes = [c_int, REGFI_ENCODING] 223 235 regfi.regfi_alloc.restype = POINTER(REGFI_FILE)
Note: See TracChangeset
for help on using the changeset viewer.