PROGRAM="rarslave2"
import re, os, sys, optparse
-import par2parser
+import Par2Parser
import RarslaveConfig
import RarslaveLogger
regex = re.compile ('^%s.*$' % (ename, ))
name_matches = [f for f in os.listdir (dir) if regex.match (f)]
- parsed_matches = par2parser.get_protected_files (dir, p2file)
+ try:
+ parsed_matches = Par2Parser.get_protected_files (dir, p2file)
+ except (EnvironmentError, OSError, OverflowError):
+ parsed_matches = []
+ logger.addMessage ('Bad par2 file: %s' % p2file, RarslaveLogger.MessageType.Fatal)
return name_matches + parsed_matches
for f in p2files:
done = False
try:
- prot_files = par2parser.get_protected_files (dir, f)
+ prot_files = Par2Parser.get_protected_files (dir, f)
done = True
- except: #FIXME: add the actual exceptions
+ except (EnvironmentError, OverflowError, OSError):
logger.addMessage ('Error parsing PAR2 file: %s', f)
continue
# TODO: Add others ???
return generic_matcher (files, '^.*\.001$')
-def find_deleteable_files (files):
- # Deleteable types regex should come from the config
- dfiles = []
+def find_deleteable_files (dir, p2file):
+ likely = find_likely_files (dir, p2file)
DELETE_REGEX = config.get_value ('regular expressions', 'delete_regex')
dregex = re.compile (DELETE_REGEX, re.IGNORECASE)
- return [f for f in files if dregex.match (f)]
+ dfiles = [f for f in likely if dregex.match (f)]
+ dset = set(dfiles) # to eliminate dupes
+ return list(dset)
def printlist (li):
for f in li:
# Deletion Stage
DELETE_INTERACTIVE = options.interactive
- deleteable_files = find_deleteable_files (self.likely_files)
+ deleteable_files = find_deleteable_files (self.dir, par2head)
ret = delete_list (self.dir, deleteable_files, DELETE_INTERACTIVE)
if ret != SUCCESS:
done = False
valid_y = ['Y', 'YES']
- valid_n = ['N', 'NO']
+ valid_n = ['N', 'NO', '']
if interactive:
while not done: