Ignore:
Timestamp:
04/28/11 12:45:10 (13 years ago)
Author:
tim
Message:

added a convenience openHive function in pyregfi
standardized static function names
improvements to scons release script and library versioning

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/python/pyregfi/__init__.py

    r228 r232  
    189189# should be reported to the user.  Failure to retrieve these could result in
    190190# excessive memory consumption.
    191 def GetLogMessages():
     191def getLogMessages():
    192192    msgs = regfi.regfi_log_get_str()
    193193    if not msgs:
     
    206206# Example:
    207207# @code
    208 # SetLogMask((LOG_TYPES.ERROR, LOG_TYPES.WARN, LOG_TYPES.INFO))
     208# setLogMask((LOG_TYPES.ERROR, LOG_TYPES.WARN, LOG_TYPES.INFO))
    209209# @endcode
    210210#
     
    212212# For more information, see @ref regfi_log_set_mask.
    213213#
    214 def SetLogMask(log_types):
     214def setLogMask(log_types):
    215215    mask = 0
    216216    for m in log_types:
     
    219219
    220220
     221## Opens a file as a registry hive
     222#
     223# @param path The file path of a hive, as one would provide to the
     224#             open() built-in
     225#
     226# @return A new Hive instance
     227def openHive(path):
     228    fh = open(path, 'rb')
     229    return Hive(fh)
     230
     231
    221232## Abstract class for most objects returned by the library
    222233class _StructureWrapper(object):
     
    228239            raise Exception("Could not create _StructureWrapper,"
    229240                            + " hive is NULL.  Current log:\n"
    230                             + GetLogMessages())
     241                            + getLogMessages())
    231242        if not base:
    232243            raise Exception("Could not create _StructureWrapper,"
    233244                            + " base is NULL.  Current log:\n"
    234                             + GetLogMessages())
     245                            + getLogMessages())
    235246        self._hive = hive
    236247        self._base = base
     
    297308        if not key:
    298309            raise Exception("Could not create _GenericList; key is NULL."
    299                             + "Current log:\n" + GetLogMessages())
     310                            + "Current log:\n" + getLogMessages())
    300311       
    301312        if not regfi.regfi_reference_record(key._hive.file, key._base):
    302313            raise Exception("Could not create _GenericList; memory error."
    303                             + "Current log:\n" + GetLogMessages())
     314                            + "Current log:\n" + getLogMessages())
    304315        self._key_base = key._base
    305316        self._length = self._fetch_num(self._key_base)
     
    650661    minor_version = 5
    651662
    652     # XXX: Possibly add a second or factory function which opens a
    653     #      hive file for you
    654 
    655663    ## Constructor
     664    #
     665    # Initialize a new Hive based on a Python file object.  To open a file by
     666    # path, see @ref openHive.
    656667    #
    657668    # @param fh A Python file object.  The constructor first looks for a valid
     
    660671    #           access.
    661672    #
    662     # @note Supplied file must be seekable
     673    # @note Supplied file must be seekable.  Do not perform any operation on
     674    #       the provided file object while a Hive is using it.  Do not
     675    #       construct multiple Hive instances from the same file object.
     676    #       If a file must be accessed by separate code and pyregfi
     677    #       simultaneously, use a separate file descriptor.  Hives are
     678    #       thread-safe, so multiple threads may use a single Hive object.
    663679    def __init__(self, fh):
    664680        # The fileno method may not exist, or it may throw an exception
     
    678694                # XXX: switch to non-generic exception
    679695                raise Exception("Could not open registry file.  Current log:\n"
    680                                 + GetLogMessages())
     696                                + getLogMessages())
    681697        else:
    682698            fh.seek(0)
     
    689705                # XXX: switch to non-generic exception
    690706                raise Exception("Could not open registry file.  Current log:\n"
    691                                 + GetLogMessages())
     707                                + getLogMessages())
    692708
    693709
     
    753769        if not self._iter:
    754770            raise Exception("Could not create iterator.  Current log:\n"
    755                             + GetLogMessages())
     771                            + getLogMessages())
    756772        self._hive = hive
    757773        self._lock = threading.RLock()
     
    797813                self._lock.release()
    798814                raise Exception('Error traversing iterator downward.'+
    799                                 ' Current log:\n'+ GetLogMessages())
     815                                ' Current log:\n'+ getLogMessages())
    800816
    801817        regfi.regfi_iterator_first_subkey(self._iter)
     
    977993        if not result:
    978994            # XXX: Use non-generic exception
    979             raise Exception('Could not locate path.\n'+GetLogMessages())
     995            raise Exception('Could not locate path.\n'+getLogMessages())
    980996
    981997
Note: See TracChangeset for help on using the changeset viewer.