X-Git-Url: https://www.irasnyder.com/gitweb/?a=blobdiff_plain;f=PAR2Set%2FOldRAR.py;h=b1b219ef5c9e09c8ac2cd4d5c220f277c67163cd;hb=de371c2371aea2cbaaaa30cb14435641b3426613;hp=90c7440816aa835bb5fb216311407d75bc895638;hpb=8a063b3c5c7910db244bdab28e0409cde2ff551c;p=rarslave2.git diff --git a/PAR2Set/OldRAR.py b/PAR2Set/OldRAR.py index 90c7440..b1b219e 100644 --- a/PAR2Set/OldRAR.py +++ b/PAR2Set/OldRAR.py @@ -1,55 +1,64 @@ #!/usr/bin/env python # vim: set ts=4 sts=4 sw=4 textwidth=92: -import os -import PAR2Set.Base -import rsutil.common +""" +Holds the OldRAR class. +This module works with old-style rar sets. + +It will detect sets like the following: +X.par2 +X.vol0+1.par2 +... + +Y.rar +Y.r00 +Y.r01 +... + +Where the PAR2 files protect all of the rar files. Note that Y can be the same +as X, but is not required to be. +""" + +__author__ = "Ira W. Snyder (devel@irasnyder.com)" +__copyright__ = "Copyright (c) 2006,2007 Ira W. Snyder (devel@irasnyder.com)" +__license__ = "GNU GPL v2 (or, at your option, any later version)" + +# OldRAR.py -- detect and work with old-style rar sets # -# This is an old-style rar type -# -# It will detect sets like the following: -# X.par2 -# X.vol0+1.par2 -# X.vol1+2.par2 -# X.rar -# X.r00 -# X.r01 -# -# OR +# Copyright (C) 2006,2007 Ira W. Snyder (devel@irasnyder.com) # -# ABC.rar -# ABC.r00 -# ABC.r01 +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. # -# Where the PAR2 files protect all files that do not match in basename -# with the PAR2 file itself. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -def detector (name_files, prot_files): - return rsutil.common.has_a_match ('^.*\.r00$', prot_files) - - -class OldRAR (PAR2Set.Base.Base): +from PAR2Set import Base, utils - def __repr__ (self): - return 'OLDRAR' +class OldRAR(Base): - def find_extraction_heads (self): - return rsutil.common.find_matches ('^.*\.rar', self.all_files) + ############################################################################ - def extraction_function (self, file, todir): - assert os.path.isfile (file) - assert os.path.isdir (todir) + def detect(self): + if not utils.hasAMatch('^.*\.r00$', self.protectedFiles): + raise TypeError - RAR_CMD = rsutil.common.config_get_value ('commands', 'unrar') + ############################################################################ - cmd = '%s \"%s\"' % (RAR_CMD, file) - ret = rsutil.common.run_command (cmd, todir) + def extract(self): + files = utils.findMatches('^.*\.rar$', self.protectedFiles) - # Check error code - if ret != 0: - return -rsutil.common.EEXTRACT + for f in files: + utils.runCommand(['unrar', 'x', '-o+', f], self.directory) - return rsutil.common.SUCCESS + ############################################################################