module LineCache

def update_cache(filename, use_script_lines=false)

lines of the file
if not. If use_script_lines is true, use that as the source for the
wrong, return nil. Return true if the cache was updated and false
Update a cache entry. If something's
def update_cache(filename, use_script_lines=false)
  return nil unless filename
  @@file_cache.delete(filename)
  path = File.expand_path(filename)
  if use_script_lines
    list = [filename]
    list << @@file2file_remap[path] if @@file2file_remap[path]
    list.each do |name|
      if !SCRIPT_LINES__[name].nil? && SCRIPT_LINES__[name] != true
        begin
          stat = File.stat(name)
        rescue
          stat = nil
        end
        lines = SCRIPT_LINES__[name]
        if "ruby19".respond_to?(:force_encoding)
          lines.each{|l| l.force_encoding(Encoding.default_external) }
        end
        @@file_cache[filename] = LineCacheInfo.new(stat, nil, lines, path, nil)
        @@file2file_remap[path] = filename
        return true
      end
    end
  end
  if File.exist?(path)
    stat = File.stat(path)
  elsif File.basename(filename) == filename
    # try looking through the search path.
    stat = nil
    for dirname in $:
      path = File.join(dirname, filename)
      if File.exist?(path)
          stat = File.stat(path)
          break
      end
    end
    return false unless stat
  end
  begin
    fp = File.open(path, 'r')
    lines = fp.readlines()
    fp.close()
  rescue
    ##  print '*** cannot open', path, ':', msg
    return nil
  end
  @@file_cache[filename] = LineCacheInfo.new(File.stat(path), nil, lines,
                                             path, nil)
  @@file2file_remap[path] = filename
  return true
end