code: def _extract_archive(archive, verbosity=0, interactive=True, outdir=None,
                       program=None, format=None, compression=None):
      
      if format is None:
          format, compression = get_archive_format(archive)
      check_archive_format(format, compression)
      program = find_archive_program(format, 'extract', program=program)
      check_program_compression(archive, 'extract', program, compression)
      get_archive_cmdlist = get_archive_cmdlist_func(program, 'extract', format)
      if outdir is None:
          outdir = util.tmpdir(dir=".")
          do_cleanup_outdir = True
      else:
          do_cleanup_outdir = False
      try:
          cmdlist = get_archive_cmdlist(archive, compression, program, verbosity, interactive, outdir)
          if cmdlist:
              # an empty command list means the get_archive_cmdlist() function
              # already handled the command (eg. when it's a builtin Python
              # function)
              run_archive_cmdlist(cmdlist, verbosity=verbosity)
          if do_cleanup_outdir:
              target, msg = cleanup_outdir(outdir, archive)
          else:
              target, msg = outdir, "`%s'" % outdir
          if verbosity >= 0:
              util.log_info("... %s extracted to %s." % (archive, msg))
          return target
      finally:
          # try to remove an empty temporary output directory
          if do_cleanup_outdir:
              try:
                  os.rmdir(outdir)
              except OSError:
                  pass
docs: Extract an archive.
      @return: output directory if command is 'extract', else None