[latex3-commits] [latex3/l3build] main: report open error properly (11829b2)

github at latex-project.org github at latex-project.org
Wed Jul 3 09:38:30 CEST 2024


Repository : https://github.com/latex3/l3build
On branch  : main
Link       : https://github.com/latex3/l3build/commit/11829b2b83f1ce9a4f155fac4fd05d6f9309b28d

>---------------------------------------------------------------

commit 11829b2b83f1ce9a4f155fac4fd05d6f9309b28d
Author: LAURENS Jérôme <jerome.laurens at u-bourgogne.fr>
Date:   Wed Jul 3 08:46:33 2024 +0200

    report open error properly


>---------------------------------------------------------------

11829b2b83f1ce9a4f155fac4fd05d6f9309b28d
 build.lua                  | 14 ++++++++++----
 l3build-check.lua          | 18 +++++++++---------
 l3build-ctan.lua           |  2 +-
 l3build-manifest-setup.lua |  2 +-
 l3build-manifest.lua       |  5 +++--
 l3build-tagging.lua        |  5 ++++-
 l3build-unpack.lua         |  5 +++--
 l3build-upload.lua         | 19 +++++++++++--------
 l3build-zip.lua            |  2 +-
 l3build.dtx                |  2 +-
 10 files changed, 44 insertions(+), 30 deletions(-)

diff --git a/build.lua b/build.lua
index 453c393..d4b5ef8 100644
--- a/build.lua
+++ b/build.lua
@@ -103,8 +103,13 @@ function  docinit_hook()
   local insert = table.insert
   local open = io.open
 
-  local f = open("README.md","rb")
-  local readme = f:read("*all")
+  --- at type file*?
+  local f = assert(open("README.md","rb"))
+  --- at cast f file*
+  local readme = f:read("a")
+  f:close()
+  f = nil
+
   local date_start,date_end = find(readme,"%d%d%d%d%p%d%d%p%d%d")
 
   local man_t = {}
@@ -121,9 +126,10 @@ function  docinit_hook()
   insert(man_t,overview)
 
   local cmd = "texlua ./" .. module .. ".lua --help"
-  local f = assert(io.popen(cmd,"r"))
-  local help_text = assert(f:read("*a"))
+  f = assert(io.popen(cmd,"r"))
+  local help_text = assert(f:read("a"))
   f:close()
+  f = nil
 
   insert(man_t,(help_text:gsub("\nUsage.*names>]\n\n","")
   :gsub("Valid targets",".SH COMMANDS\nValid targets")
diff --git a/l3build-check.lua b/l3build-check.lua
index 11c8973..a0c1ba7 100644
--- a/l3build-check.lua
+++ b/l3build-check.lua
@@ -95,10 +95,10 @@ function checkinit_hook() return 0 end
 
 local function rewrite(source,result,processor,...)
   local file = assert(open(source,"rb"))
-  local content = gsub(file:read("*all") .. "\n","\r\n","\n")
+  local content = gsub(file:read("a") .. "\n","\r\n","\n")
   close(file)
   local new_content = processor(content,...)
-  local newfile = open(result,"w")
+  local newfile = assert(open(result,"w"))
   output(newfile)
   write(new_content)
   close(newfile)
@@ -919,7 +919,7 @@ local function showsavecommands(failurelist)
     end
   end
   print("  To regenerate the test files, run\n")
-  local f = open(testdir .. "/.savecommands", "w")
+  local f = assert(open(testdir .. "/.savecommands", "w"))
   for _, cmds in pairs(savecmds) do
     print("    " .. cmds)
     f:write(cmds, "\n")
@@ -1089,9 +1089,9 @@ function showfailedlog(name)
   for _,i in ipairs(ordered_filelist(testdir, name..".log")) do
     print("  - " .. testdir .. "/" .. i)
     print("")
-    local f = open(testdir .. "/" .. i,"r")
-    local content = f:read("*all")
-    close(f)
+    local f = assert(open(testdir .. "/" .. i,"r"))
+    local content = f:read("a")
+    f:close()
     print("-----------------------------------------------------------------------------------")
     print(content)
     print("-----------------------------------------------------------------------------------")
@@ -1103,9 +1103,9 @@ function showfaileddiff()
   for _,i in ipairs(ordered_filelist(testdir, "*" .. os_diffext)) do
     print("  - " .. testdir .. "/" .. i)
     print("")
-    local f = open(testdir .. "/" .. i,"r")
-    local content = f:read("*all")
-    close(f)
+    local f = assert(open(testdir .. "/" .. i,"r"))
+    local content = f:read("a")
+    f:close()
     print("-----------------------------------------------------------------------------------")
     print(content)
     print("-----------------------------------------------------------------------------------")
diff --git a/l3build-ctan.lua b/l3build-ctan.lua
index c1feb25..167cd33 100644
--- a/l3build-ctan.lua
+++ b/l3build-ctan.lua
@@ -85,7 +85,7 @@ function ctan()
   options["engine"] = nil
   local function dirzip(dir, zipname)
     zipname = zipname .. ".zip"
-    local zip = newzip(dir .. '/' .. zipname)
+    local zip = assert(newzip(dir .. '/' .. zipname))
     local function tab_to_check(table)
       local patterns = {}
       for n,i in ipairs(table) do
diff --git a/l3build-manifest-setup.lua b/l3build-manifest-setup.lua
index 8654b3d..55c5688 100644
--- a/l3build-manifest-setup.lua
+++ b/l3build-manifest-setup.lua
@@ -335,7 +335,7 @@ end
 -- From the first match of a pattern in a file:
 manifest_extract_filedesc = function(filehandle)
 
-  local all_file = filehandle:read("*all")
+  local all_file = filehandle:read("a")
   local matchstr = "\\section{(.-)}"
 
   filedesc = string.match(all_file,matchstr)
diff --git a/l3build-manifest.lua b/l3build-manifest.lua
index aa5a061..7f7fdf1 100644
--- a/l3build-manifest.lua
+++ b/l3build-manifest.lua
@@ -153,6 +153,7 @@ manifest_build_init = function(entry)
 
 end
 
+local open = io.open
 
 manifest_build_file = function(entry,this_file)
 
@@ -173,7 +174,7 @@ manifest_build_file = function(entry,this_file)
 
     if not(entry.skipfiledescription) then
 
-      local ff = assert(io.open(entry.dir .. "/" .. this_file, "r"))
+      local ff = assert(open(entry.dir .. "/" .. this_file, "r"))
       this_descr  = manifest_extract_filedesc(ff,this_file)
       ff:close()
 
@@ -197,7 +198,7 @@ end
 
 manifest_write = function(manifest_entries)
 
-  local f = assert(io.open(manifestfile, "w"))
+  local f = assert(open(manifestfile, "w"))
   manifest_write_opening(f)
 
   for ii,vv in ipairs(manifest_entries) do
diff --git a/l3build-tagging.lua b/l3build-tagging.lua
index 0753123..225ba23 100644
--- a/l3build-tagging.lua
+++ b/l3build-tagging.lua
@@ -39,9 +39,12 @@ end
 local function update_file_tag(file,tagname,tagdate)
   local filename = basename(file)
   print("Tagging  ".. filename)
+  --- at type file*?
   local f = assert(open(file,"rb"))
-  local content = f:read("*all")
+  --- at cast f file*
+  local content = f:read("a")
   f:close()
+  f = nil
   -- Deal with Unix/Windows line endings
   content = gsub(content .. (match(content,"\n$") and "" or "\n"),
     "\r\n", "\n")
diff --git a/l3build-unpack.lua b/l3build-unpack.lua
index 3c73dc8..ba8a5b5 100644
--- a/l3build-unpack.lua
+++ b/l3build-unpack.lua
@@ -69,11 +69,12 @@ function bundleunpack(sourcedirs, sources)
       return errorlevel
     end
   end
+  local popen = io.popen
   for _,i in ipairs(unpackfiles) do
     for _,p in ipairs(tree(unpackdir, i)) do
       local path, name = splitpath(p.src)
       local localdir = abspath(localdir)
-      local success = io.popen(
+      local success = assert(popen(
         "cd " .. unpackdir .. "/" .. path .. os_concat ..
         os_setenv .. " TEXINPUTS=." .. os_pathsep
           .. localdir .. (unpacksearch and os_pathsep or "") ..
@@ -84,7 +85,7 @@ function bundleunpack(sourcedirs, sources)
         unpackexe .. " " .. unpackopts .. " " .. name
           .. (options["quiet"] and (" > " .. os_null) or ""),
         "w"
-      ):write(string.rep("y\n", 300)):close()
+      ):write(string.rep("y\n", 300))):close()
       if not success then
         return 1
       end
diff --git a/l3build-upload.lua b/l3build-upload.lua
index 87158d1..645445f 100644
--- a/l3build-upload.lua
+++ b/l3build-upload.lua
@@ -94,9 +94,9 @@ function upload(tagnames)
 
   -- Get data from command line if appropriate
   if options["file"] then
-    local f = open(options["file"],"r")
-    uploadconfig.announcement = assert(f:read('*a'))
-    close(f)
+    local f = assert(open(options["file"],"r"))
+    uploadconfig.announcement = assert(f:read('a'))
+    f:close()
   end
   uploadconfig.announcement = options["message"] or uploadconfig.announcement or file_contents(uploadconfig.announcement_file)
   uploadconfig.email = options["email"] or uploadconfig.email
@@ -139,10 +139,13 @@ function upload(tagnames)
 
 -- curl file version
   local curloptfile = uploadconfig.curlopt_file or (ctanzip .. ".curlopt")
-  local curlopt=open(curloptfile,"w")
+  --- at type file*?
+  local curlopt=assert(open(curloptfile,"w"))
+  --- at cast curlopt file*
   output(curlopt)
   write(ctan_post)
-  close(curlopt)
+  curlopt:close()
+  curlopt = nil
 
   ctan_post=curlexe .. " --config " .. curloptfile
 
@@ -376,12 +379,12 @@ end
 -- if filename is non nil and file readable return contents otherwise nil
 function file_contents (filename)
   if filename ~= nil then
-    local f= open(filename,"r")
+    local f= assert(open(filename,"r"))
     if f==nil then
       return nil
     else
-      local s = f:read("*all")
-      close(f)
+      local s = f:read("a")
+      f:close()
       return s
     end
   else
diff --git a/l3build-zip.lua b/l3build-zip.lua
index 5107415..0c326b7 100644
--- a/l3build-zip.lua
+++ b/l3build-zip.lua
@@ -132,7 +132,7 @@ local meta = {__index = {
 }}
 
 return function(filename)
-  local f, msg = open(filename, 'wb')
+  local f, msg = open(filename, 'wb') -- closed just above
   if not f then return f, msg end
   return setmetatable({
     f = f,
diff --git a/l3build.dtx b/l3build.dtx
index 12d662e..e9f0b3d 100644
--- a/l3build.dtx
+++ b/l3build.dtx
@@ -2144,7 +2144,7 @@
 % \begin{verbatim}
 % manifest_extract_filedesc = function(filehandle,filename)
 %
-%   local all_file = filehandle:read("*all")
+%   local all_file = filehandle:read("a")
 %   local matchstr = "\\section{(.-)}"
 %
 %   filedesc = string.match(all_file,matchstr)





More information about the latex3-commits mailing list.