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