def init(status_passed): """ Initalises the core for execution for one source file Variables for maximal signature sequence length, found start sequences, counters are reseted and the source file is opened. The status instance is updated and informed about the success of intialisation. @param status_passed: Status instance containing all information for the current execution. @type status_passed: ExecutionSettings.ExecutionStatus @return: Indicates, whether the initialisation was sucessful. (-1 / -2 for problems with signature file; 0 for success) @rtype: C{int} """ global maxlength, start, skipped, size, binfile status = status_passed settings = status.settings settings.dest_folder = tools.checkDestfolder(settings.dest_folder) binfilename = status.getCurrentFile() binfile = open(binfilename, 'rb') if status.file_start == None: status.file_start = 0 if status.file_end == None or status.file_end > os.path.getsize(binfilename): status.file_end = os.path.getsize(binfilename) counter = status.counter counterr = status.counterr # for continue counting start = {} skipped = {} for j in settings.signatures: counter[j[signatures.name]] = 0 start[j[signatures.name]] = -1 skipped[j[signatures.name]] = 0 size = status.file_end - status.file_start maxlength = signatures.normaliseSignatures(settings.signatures) if maxlength == -1: print ('Error in Signature File - required Entry missing in at least one signature') return -1 if maxlength == -2: print ('Error in Signature File - wrong value for at least one signature') return -2 disabled = signatures.disable(settings.signatures, settings.disabled_signatures) status.initialisedOne() return 0
def handleArguments(args): """ Processes a list of arguments. Creates a new L{ExecutionSettings} and a new L{ExecutionStatus} object. Iterates the list of arguments and assigns any known argument value to the given settings or status instance. @param args: List of arguments to be processed (usually the CLI arguments list) @return: Info about success: 0 - not successful, 1 - Signature information is requested, 2 - successful; The settings applied to the Settings / Status instances @rtype: C{int}; L{ExecutionStatus} """ if len(args) < 2: usage(args[0]) return 0, None settings = ExecutionSettings(signatures = signatures.getCopyOfAllSignauteres()) status = ExecutionStatus(settings) disabled_signs = [] for arg in args: if arg[0] != '-': continue if arg[1] == 's': status.file_start = int(arg[2:]) elif arg[1] == 'e': status.file_end = int(arg[2:]) elif arg[1] == 'd': settings.digits = int(arg[2:]) elif arg[1] == 'n': settings.counterstart_global = int(arg[2:]) elif arg[1] == 'f': settings.dest_folder = arg[2:] elif arg[1] == 'o': settings.output_level = int(arg[2:]) elif arg[1] =='g': settings.output_frequency = int(arg[2:]) elif arg[1] =='i': if arg[2] == 's': return 1, status elif arg[2] == 'd': disabled_signs.append(arg[3:]) else: print ('Unrecognised option for Signature operations: %c [Ignored]' %(arg[2])) else: print ('Unrecognised option: %c [Ignored]' %(arg[1])) settings.dest_folder = tools.checkDestfolder(settings.dest_folder) settings.sourceFiles.append(args[len(args)-1]) settings.disableSignatureWithNames(disabled_signs) return 2, status