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 | 
