view mod_storage_xmlarchive/datamanager_append_raw.lib.lua @ 4895:2542fd80cd15

mod_turn_external: Fix type of config option (thanks mirux) There was a separate boolean option to enable TLS before, but it was merged with the port number option and it seems the typed API interface got confused. Backport of trunk rev aa7a8aa64d3f
author Kim Alvefur <zash@zash.se>
date Tue, 15 Feb 2022 21:51:52 +0100
parents f4ab0966ba89
children
line wrap: on
line source

local io_open = io.open;
local dm = require "core.storagemanager".olddm;

-- Append a blob of data to a file
function dm.append_raw(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