# File lib/perforce.rb, line 241
  def run(*args)
    go = lambda {
      @p4.run(*args).tap {
        puts(@p4.warnings)
      }
    }
    if CYGWIN
      begin
        go.call
      rescue P4Exception => exception
        if @p4.connected? and
            exception.message =~ %r!not under client\'s root!
          # maybe unix root is not present; try again
          add_unix_root
          go.call
        else
          raise
        end
      end
    else
      # not CYGWIN
      go.call
    end
  end