This file is indexed.

/usr/share/crawl/dat/dlua/profiler.lua is in crawl-common 2:0.17.1-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
------------------------------------------------------------------------------
-- profiler.lua
-- A very simple Lua profiler
------------------------------------------------------------------------------

profiler = {}

function profiler.print_time(label,millis,data)
  local time = label .. ": " .. (millis/1000) .. "secs"
  if data ~= nil then
    time = time .. " ( "
    local first = true
    for k,v in pairs(data) do
      if not first then time = time .. ", " end
      time = time .. k .. " = '" .. v .. "'"
      first = false
    end
    time = time .. " )"
  end
  print(time)
end

-- Begins profiling
function profiler.start(name)
  profiler.name = name
  profiler.stack = {}
  profiler.done = {}
  profiler.top = profiler.done
  profiler.start_time = crawl.millis()
  profiler.level = 0
end

function profiler.push(name,data)
  local now = crawl.millis()
  local op = { name = name, data = data, start = now, level = profiler.level, children = {} }
  table.insert(profiler.stack,op)
  profiler.top = op.children
  profiler.level = profiler.level + 1
end

function profiler.pop()
  local op = profiler.stack[#(profiler.stack)]
  table.remove(profiler.stack,#(profiler.stack))
  if #(profiler.stack) > 0 then
    profiler.top = profiler.stack[#(profiler.stack)].children
  else
    profiler.top = profiler.done
  end
  table.insert(profiler.top,op)
  op.stop = crawl.millis()
  profiler.level = profiler.level - 1
end

-- End the profiling job and print some output nicely
function profiler.stop()
  profiler.stop_time = crawl.millis()
  if profiler.name == nil then profiler.name = "Profile" end
  local under = ""
  for n = 1,#name,1 do
    under = under .. "="
  end
  print("")
  print(under)
  print(profiler.name)
  print(under)
  print("")
  print("Profiler Start: " .. profiler.start_time)
  print("Profiler Stop: " .. profiler.stop_time)
  profiler.print_time("Total",profiler.stop_time-profiler.start_time)
  print("")
  print("All Operations:")
  for i,op in ipairs(profiler.done) do
    profiler.render(op)
  end
end

function profiler.render(op)
  local name = op.name
  -- Pad the name with some spacing depending on the level of the operation
  if op.level > 0 then
    for n = 1,op.level,1 do
      name = "  " .. name
    end
  end
  profiler.print_time(name,op.stop-op.start,op.data)
  for i,op in ipairs(op.children) do
    profiler.render(op)
  end
end