class PhusionPassenger::Utils::FileSystemWatcher

def self.opens_files?

def self.opens_files?
  return false
end

def changed?

def changed?
  return @dirs.any?  { |dir_info| dir_info.changed? } ||
         @files.any? { |file_info| file_info.changed? }
end

def close

def close
end

def initialize(filenames, termination_pipe = nil)

def initialize(filenames, termination_pipe = nil)
  @poll_interval = 3
  @termination_pipe = termination_pipe
  @dirs  = []
  @files = []
  begin
    filenames.each do |filename|
      stat = File.stat(filename)
      if stat.directory?
        @dirs << DirInfo.new(filename, stat)
      else
        @files << FileInfo.new(filename, stat)
      end
    end
  rescue Errno::EACCES, Errno::ENOENT
    @dirs = @files = nil
  end
end

def wait_for_change

def wait_for_change
  if !@dirs
    return false
  end
  while true
    if changed?
      return true
    elsif select([@termination_pipe], nil, nil, @poll_interval)
      return nil
    end
  end
end