def _extract_member(self, tarinfo, targetpath, set_attrs=True):
<EOL>targetpath = targetpath.rstrip("<STR_LIT:/>")<EOL>targetpath = targetpath.replace("<STR_LIT:/>", os.sep)<EOL>upperdirs = os.path.dirname(targetpath)<EOL>if upperdirs and not os.path.exists(upperdirs):<EOL><INDENT>os.makedirs(upperdirs)<EOL><DEDENT>if tarinfo.islnk() or tarinfo.issym():<EOL><INDENT>self._dbg(<NUM_LIT:1>, "<STR_LIT>" % (tarinfo.name, tarinfo.linkname))<EOL><DEDENT>else:<EOL><INDENT>self._dbg(<NUM_LIT:1>, tarinfo.name)<EOL><DEDENT>if tarinfo.isreg():<EOL><INDENT>self.makefile(tarinfo, targetpath)<EOL><DEDENT>elif tarinfo.isdir():<EOL><INDENT>self.makedir(tarinfo, targetpath)<EOL><DEDENT>elif tarinfo.isfifo():<EOL><INDENT>self.makefifo(tarinfo, targetpath)<EOL><DEDENT>elif tarinfo.ischr() or tarinfo.isblk():<EOL><INDENT>self.makedev(tarinfo, targetpath)<EOL><DEDENT>elif tarinfo.islnk() or tarinfo.issym():<EOL><INDENT>self.makelink(tarinfo, targetpath)<EOL><DEDENT>elif tarinfo.type not in SUPPORTED_TYPES:<EOL><INDENT>self.makeunknown(tarinfo, targetpath)<EOL><DEDENT>else:<EOL><INDENT>self.makefile(tarinfo, targetpath)<EOL><DEDENT>if set_attrs:<EOL><INDENT>self.chown(tarinfo, targetpath)<EOL>if not tarinfo.issym():<EOL><INDENT>self.chmod(tarinfo, targetpath)<EOL>self.utime(tarinfo, targetpath)<EOL><DEDENT><DEDENT>
Extract the TarInfo object tarinfo to a physical
           file called targetpath.