diff options
Diffstat (limited to 'shutil.lua')
-rw-r--r-- | shutil.lua | 42 |
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 |