From b0dafd8b6f3402621b074f1d934f0ba9eb9843a8 Mon Sep 17 00:00:00 2001 From: Randy Palamar Date: Tue, 2 Jan 2024 14:13:25 -0700 Subject: replace tail component of src with srcsection in man() This is useful when man() is called with the optional 'section' parameter and can be used to replace components such as '.nro' with a '.(section)'. This was always the intention and fixes man page names for pciutils. Co-authored-by: Michael Forney --- ninja.lua | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'ninja.lua') diff --git a/ninja.lua b/ninja.lua index 988ec4de..ed73a955 100644 --- a/ninja.lua +++ b/ninja.lua @@ -486,14 +486,20 @@ end function man(srcs, section) for _, src in ipairs(srcs) do + local out = src..'.gz' if not src:match('^[$/]') then src = '$srcdir/'..src + out = '$outdir/'..out end - local i = src:find('/', 1, true) - local gz = '$outdir'..src:sub(i)..'.gz' - build('gzip', gz, src) - local srcsection = section or src:match('[^.]*$') - file('share/man/man'..srcsection..'/'..gz:match('[^/]*$'), '644', gz) + + local base = src:match('[^/]*$') + local ext = base:match('%.([^.]*)$') + if section then + if ext then base = base:sub(1, -(#ext + 2)) end + ext = section + end + build('gzip', out, src) + file('share/man/man'..ext..'/'..base..'.'..ext, '644', out) end end -- cgit v1.2.3