Changeset 232 for trunk


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

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/SConstruct

    r225 r232  
    11import sys
    22import os
     3from regfi_version import REGFI_VERSION
    34
    45cflags = '-std=gnu99 -pedantic -Wall -D_FILE_OFFSET_BITS=64 -fvisibility=hidden'
     6cflags += ' -DREGFI_VERSION=\'"%s"\'' % REGFI_VERSION
    57cflags += ' -ggdb'
    68
  • trunk/include/regfi.h

    r228 r232  
    7979#include <range_list.h>
    8080#include <lru_cache.h>
     81
     82/* Library version can be overridden at build time */
     83#ifndef REGFI_VERSION
     84#define REGFI_VERSION "trunk"
     85#endif
    8186
    8287/* GCC-specific macro for library exports */
  • 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
  • trunk/regfi_version.py

    r231 r232  
    1 
    21SVN_REV = "$Rev$"
    3 REGFI_VERSION = "svn-%s" % SVN_REV.split(' ')[2]
     2REGFI_VERSION = "svn-%s" % SVN_REV.split(' ')[1]
  • trunk/src/common.c

    r219 r232  
    33 * XXX: This should be converted to a proper library.
    44 *
    5  * Copyright (C) 2005-2008 Timothy D. Morgan
     5 * Copyright (C) 2005-2008,2011 Timothy D. Morgan
    66 * Copyright (C) 2002 Richard Sharpe, rsharpe@richardsharpe.com
    77 *
     
    2828const char* subfield_special_chars = ",\"\\|";
    2929const char* common_special_chars = ",\"\\";
    30 
    31 #define REGLOOKUP_VERSION "0.1?.0"
    3230
    3331#define REGLOOKUP_EXIT_OK       0
  • trunk/src/reglookup-recover.c

    r228 r232  
    336336{
    337337  fprintf(stderr, "Usage: reglookup-recover [options] <REGISTRY_FILE>\n");
    338   fprintf(stderr, "Version: %s\n", REGLOOKUP_VERSION);
     338  fprintf(stderr, "Version: %s\n", REGFI_VERSION);
    339339  fprintf(stderr, "Options:\n");
    340340  fprintf(stderr, "\t-v\t sets verbose mode.\n");
  • trunk/src/reglookup.c

    r228 r232  
    551551          " [-p <PATH_FILTER>] [-t <TYPE_FILTER>]"
    552552          " <REGISTRY_FILE>\n");
    553   fprintf(stderr, "Version: %s\n", REGLOOKUP_VERSION);
     553  fprintf(stderr, "Version: %s\n", REGFI_VERSION);
    554554  fprintf(stderr, "Options:\n");
    555555  fprintf(stderr, "\t-v\t sets verbose mode.\n");
Note: See TracChangeset for help on using the changeset viewer.