def extract(self, checker, path, withSubpath, overwrite):
        res = []
        command = 'x'
        if not withSubpath:
            command = 'e'
        options = []
        if overwrite:
            options.append('o+')
        else:
            options.append('o-')
        if not path.endswith(os.sep):
            path += os.sep
        names = []
        for info in self.infoiter():
            checkres = checker(info)
            if type(checkres) in [str, unicode]:
                raise NotImplementedError("Condition callbacks returning strings are deprecated and only supported in Windows")
            if checkres==True and not info.isdir:
                names.append(info.filename)
                res.append(info)
        names.append(path)
        proc = self.call(command, options, names)
        stdoutdata, stderrdata = proc.communicate()
        if stderrdata.find("CRC failed")>=0 or stderrdata.find("Checksum error")>=0:
            raise IncorrectRARPassword  
        return res
dataset/ETHPy150Open beville/ComicStreamer/libs/comictaggerlib/UnRAR2/unix.py/RarFileImplementation.extract/original