aboutsummaryrefslogtreecommitdiff
path: root/shutil.lua
diff options
context:
space:
mode:
Diffstat (limited to 'shutil.lua')
-rw-r--r--shutil.lua42
1 files changed, 42 insertions, 0 deletions
diff --git a/shutil.lua b/shutil.lua
new file mode 100644
index 0000000..e8ca269
--- /dev/null
+++ b/shutil.lua
@@ -0,0 +1,42 @@
+
+shutil = { }
+
+function shutil.copy_file(src, dst)
+ local e, sf, df, cont, ok
+ sf, e = io.open(src, "rb")
+ if not sf then
+ return nil, "Error opening input: "..(e or "")
+ end
+ df, e = io.open(dst, "wb")
+ if not df then
+ sf:close()
+ return nil, "Error opening output: "..(e or "")
+ end
+ cont, e = sf:read("*a")
+ if not cont then
+ sf:close()
+ df:close()
+ return nil, "Error reading input: "..(e or "")
+ end
+ ok, e = df:write(cont)
+ if not ok then
+ sf:close()
+ df:close()
+ return nil, "Error writing output: "..(e or "")
+ end
+ sf:close()
+ df:close()
+ return true
+end
+
+function shutil.move_file(src, dst)
+ local ok, e = shutil.copy_file(src, dst)
+ if not ok then
+ return nil, "Copy failed: "..(e or "")
+ end
+ ok, e = os.remove(src)
+ if not ok then
+ return nil, "Remove failed: "..(e or "")
+ end
+ return true
+end