Diff

mod_storage_xmlarchive/datamanager_append_raw.lib.lua @ 2289:aa984980a4dc

mod_storage_xmlarchive: Include the missing append_raw() for 0.9 compatibility
author Kim Alvefur <zash@zash.se>
date Tue, 23 Aug 2016 17:54:00 +0200
child 2343:f4ab0966ba89
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_storage_xmlarchive/datamanager_append_raw.lib.lua	Tue Aug 23 17:54:00 2016 +0200
@@ -0,0 +1,34 @@
+local io_open = io.open;
+local dm = require "core.storagemanager".olddm;
+
+-- Append a blob of data to a file
+function dm.append(username, host, datastore, ext, data)
+	if type(data) ~= "string" then return; end
+	local filename = dm.getpath(username, host, datastore, ext, true);
+
+	local ok;
+	local f, msg = io_open(filename, "r+");
+	if not f then
+		-- File did probably not exist, let's create it
+		f, msg = io_open(filename, "w");
+		if not f then
+			return nil, msg, "open";
+		end
+	end
+
+	local pos = f:seek("end");
+
+	ok, msg = f:write(data);
+	if not ok then
+		f:close();
+		return ok, msg, "write";
+	end
+
+	ok, msg = f:close();
+	if not ok then
+		return ok, msg;
+	end
+
+	return true, pos;
+end
+