tools/tb2err
author Kim Alvefur <zash@zash.se>
Sat, 24 Feb 2024 00:05:29 +0100
changeset 13443 1e229d710a3c
parent 13070 4aa4a51a7a77
permissions -rwxr-xr-x
util.signal: Add support for signalfd(2) on Linux signalfd allows handling signal events using the same method as sockets, via file descriptors. Thus all signal dispatch can go through the same main event loop as everything else, removing need for thread-scary signal handling where execution would just jump to the signal handler regardless of the state of Lua, and needing to keep track of Lua states/threads.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13067
414952def2d3 tools/tb2err: Drop use of lua-any since it should run fine on any Lua
Kim Alvefur <zash@zash.se>
parents: 11195
diff changeset
     1
#!/usr/bin/env lua
11195
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     2
-- traceback to errors.err for vim -q
13068
b172db27ffed tools/tb2err: Add some example usage in a comment
Kim Alvefur <zash@zash.se>
parents: 13067
diff changeset
     3
-- e.g. curl https://prosody.im/paste/xxx | tb2err > errors.err && vim -q
b172db27ffed tools/tb2err: Add some example usage in a comment
Kim Alvefur <zash@zash.se>
parents: 13067
diff changeset
     4
11195
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     5
local path_sep = package.config:sub(1,1);
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     6
for line in io.lines() do
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     7
	local src, err = line:match("%s*(%S+)(:%d+: .*)")
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     8
	if src then
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     9
		src = src:gsub("\\", path_sep);
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    10
		local cut = src:match("/()core/")
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    11
			or src:match("/()net/")
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    12
			or src:match("/()util/")
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    13
			or src:match("/()modules/")
13069
ab546c5977ed tools/tb2err: Rewrite prosody-modules paths to ../modules
Kim Alvefur <zash@zash.se>
parents: 13068
diff changeset
    14
			or src:match("/()prosody%-modules/")
11195
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    15
			or src:match("/()plugins/")
13070
4aa4a51a7a77 tools/tb2err: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 13069
diff changeset
    16
			or src:match("/()prosody[ctl]*$")
11195
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    17
		if cut then
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    18
			src = src:sub(cut);
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    19
		end
13069
ab546c5977ed tools/tb2err: Rewrite prosody-modules paths to ../modules
Kim Alvefur <zash@zash.se>
parents: 13068
diff changeset
    20
		src = src:gsub("prosody%-modules/", "../modules/")
11195
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    21
		src = src:gsub("^modules/", "plugins/")
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    22
		io.write(src, err, "\n");
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    23
	end
13e2ac7b5798 tools/tb2err: Formats Lua traceback in errors.err format
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    24
end