# File lib/raindrops/linux.rb, line 39
  def unix_listener_stats(paths = nil)
    rv = Hash.new { |h,k| h[k.freeze] = Raindrops::ListenStats.new(0, 0) }
    if nil == paths
      paths = [ '[^\n]+' ]
    else
      paths = paths.map do |path|
        path = path.dup
        path.force_encoding(Encoding::BINARY) if defined?(Encoding)
        if File.symlink?(path)
          link = path
          path = Pathname.new(link).realpath.to_s
          rv[link] = rv[path] # vivify ListenerStats
        else
          rv[path] # vivify ListenerStats
        end
        Regexp.escape(path)
      end
    end
    paths = /^\w+: \d+ \d+ (\d+) \d+ (\d+)\s+\d+ (#{paths.join('|')})$/n

    # no point in pread since we can't stat for size on this file
    File.read(*PROC_NET_UNIX_ARGS).scan(paths) do |s|
      path = s[-1]
      case s[0]
      when "00000000" # client sockets
        case s[1].to_i
        when 2 then rv[path].queued += 1
        when 3 then rv[path].active += 1
        end
      else
        # listeners, vivify empty stats
        rv[path]
      end
    end

    rv
  end