]> git.e2factory.org Git - e2factory.git/commitdiff
Add error handling to e2lib.mktempdir()
authorTobias Ulmer <tu@emlix.com>
Fri, 26 Apr 2013 14:05:16 +0000 (16:05 +0200)
committerTobias Ulmer <tu@emlix.com>
Wed, 16 Nov 2016 13:58:55 +0000 (14:58 +0100)
Signed-off-by: Tobias Ulmer <tu@emlix.com>
generic/e2lib.lua
generic/transport.lua
global/e2-create-project.lua
global/e2-fetch-project.lua
local/cvs.lua
local/e2build.lua
local/svn.lua

index af7afd005345d4f3311ed3371d1816dfcd529ce3..5b8054012812ed705911a42b233232f6727117ff 100644 (file)
@@ -1419,7 +1419,8 @@ end
 -- trailing X characters by some random string to create a unique name.
 -- This function always succeeds (or aborts immediately).
 -- @param template string: template name (optional)
--- @return string: name of the directory
+-- @return Name of the directory (string) or false on error.
+-- @return Error object on failure.
 function e2lib.mktempdir(template)
     if not template then
         template = string.format("%s/e2tmp.%d.XXXXXXXX", e2lib.globals.tmpdir,
@@ -1428,11 +1429,11 @@ function e2lib.mktempdir(template)
     local cmd = string.format("mktemp -d '%s'", template)
     local mktemp = io.popen(cmd, "r")
     if not mktemp then
-        e2lib.abort("can't mktemp")
+        return false, err.new("can't mktemp")
     end
     local tmpdir = mktemp:read()
     if not tmpdir then
-        e2lib.abort("can't mktemp")
+        return false, err.new("can't mktemp")
     end
     mktemp:close()
     -- register tmpdir for removing with rmtempdirs() later on
index 6ca6d9ceace738ca669a33e9c060fab335eac69f..ed2ea640244fad015eeac919c961c86093db8a02 100644 (file)
@@ -97,7 +97,6 @@ local function rsync_ssh_mkdir(opts, user, server, dir)
     assert(type(server) == "string")
     assert(type(dir) == "string")
 
-    local emptydir = e2lib.mktempdir()
     local stack = {}
     local argv = {}
     for _,opt in ipairs(opts) do
@@ -105,6 +104,11 @@ local function rsync_ssh_mkdir(opts, user, server, dir)
     end
     table.insert(argv, "-r")
 
+    local emptydir, re = e2lib.mktempdir()
+    if not emptydir then
+        return false, re
+    end
+
     while dir ~= "/" do
         local dest = rsync_quote_remote(user, server, dir .. "/")
         local rc, re = rsync_ssh(argv, emptydir .. "/", dest)
index 14523f5bef0e9ef632b0ebfd0e2c392226be937b..4c0bca72b01a3eaf1f4be5bd5d97db3cde8fdc3b 100644 (file)
@@ -103,7 +103,11 @@ local function e2_create_project(arg)
     p.server = sl.server                               -- the server
 
     -- create the server side structure
-    local tmpdir = e2lib.mktempdir()
+    local tmpdir, re = e2lib.mktempdir()
+    if not tmpdir then
+        return false, re
+    end
+
     e2lib.chdir(tmpdir)
 
     local version = string.format("%d\n", p.version)
@@ -138,7 +142,11 @@ local function e2_create_project(arg)
     e2lib.chdir("/")
     e2lib.rmtempdir(tmpdir)
 
-    local tmpdir = e2lib.mktempdir()
+    local tmpdir, re = e2lib.mktempdir()
+    if not tmpdir then
+        return false, re
+    end
+
     e2lib.chdir(tmpdir)
 
     -- create the initial repository on server side
index ed90ace511e5f4620d60decf613c65f5c3d7489f..2829dd589481c228178d8a4cc94964f3b712b408 100644 (file)
@@ -108,7 +108,11 @@ local function e2_fetch_project(arg)
     end
 
     -- fetch project descriptor file
-    local tmpdir = e2lib.mktempdir()
+    local tmpdir, re = e2lib.mktempdir()
+    if not tmpdir then
+        return false, re
+    end
+
     local location = string.format("%s/version", p.location)
     local rc, re = cache.fetch_file(scache, p.server, location, tmpdir, nil,
     { cache = false })
index 278c7ae5c80f5b689d62b9468c08d23a1546f614..ba3357a0c659fab2898f4d637a227c9b3a09cc68 100644 (file)
@@ -393,7 +393,11 @@ function cvs.toresult(info, sourcename, sourceset, directory)
     source, archive))
     f:close()
     -- export the source tree to a temporary directory
-    local tmpdir = e2lib.mktempdir()
+    local tmpdir, re = e2lib.mktempdir()
+    if not tmpdir then
+        return false, re
+    end
+
     rc, re = cvs.prepare_source(info, sourcename, sourceset, tmpdir)
     if not rc then
         return false, e:cat(re)
index edceb048d55ba47f46ff0841989855bdeba9c172..23b87a697fe9356b278c2b5baa35b72584ad0599 100644 (file)
@@ -485,7 +485,6 @@ end
 function e2build.unpack_result(info, r, dep, destdir)
     local res = info.results[r]
     local rc, re
-    local tmpdir = e2lib.mktempdir()
     local e = err.new("unpacking result failed: %s", dep)
     local d = info.results[dep]
 
@@ -505,6 +504,11 @@ function e2build.unpack_result(info, r, dep, destdir)
     if not path then
         return false, e:cat(re)
     end
+    local tmpdir, re = e2lib.mktempdir()
+    if not tmpdir then
+        return false, re
+    end
+
     rc, re = e2lib.chdir(tmpdir)
     if not rc then
         return false, e:cat(re)
@@ -861,7 +865,10 @@ local function store_result(info, r, return_flags)
     local e = err.new("fetching build results from chroot")
 
     -- create a temporary directory to build up the result
-    local tmpdir = e2lib.mktempdir()
+    local tmpdir, re = e2lib.mktempdir()
+    if not tmpdir then
+        return false, re
+    end
 
     -- build a stored result structure and store
     local rfilesdir = string.format("%s/out", res.build_config.T)
index 1ebc35a70e90802eed8345b1c86cc643bfe1595f..08012e4612a35a11868335ce91d4015cfc9c98bd 100644 (file)
@@ -335,7 +335,11 @@ function svn.toresult(info, sourcename, sourceset, directory)
     source, archive))
     f:close()
     -- export the source tree to a temporary directory
-    local tmpdir = e2lib.mktempdir()
+    local tmpdir, re = e2lib.mktempdir()
+    if not tmpdir then
+        return false, e:cat(re)
+    end
+
     rc, re = svn.prepare_source(info, sourcename, sourceset, tmpdir)
     if not rc then
         return false, e:cat(re)