util.datamanager: Always reset index after list shift
authorKim Alvefur <zash@zash.se>
Sat, 22 Jul 2023 14:02:01 +0200
changeset 13242 26327eac56dc
parent 13241 59c3d775c7fa
child 13243 f2578a69ccf4
util.datamanager: Always reset index after list shift Shifting the index does not work reliably yet, better to rebuild it from scratch. Since there is minimal parsing involved in that, it should be more efficient anyway.
util/datamanager.lua
--- a/util/datamanager.lua	Sat Jul 22 12:08:01 2023 +0200
+++ b/util/datamanager.lua	Sat Jul 22 14:02:01 2023 +0200
@@ -527,45 +527,10 @@
 	return setmetatable({ file = file; index = index; close = list_close }, indexed_list_mt);
 end
 
-local function shift_index(index_filename, index, trim_to, offset)
-	local index_scratch = index_filename .. "~";
-	local new_index, err = io_open(index_scratch, "w");
-	if not new_index then
-		os_remove(index_filename);
-		return "deleted", err;
-	end
-
-	local ok, err = new_index:write(index_magic);
-	if not ok then
-		new_index:close();
-		os_remove(index_filename);
-		os_remove(index_scratch);
-		return "deleted", err;
-	end
-
-	if not index.file or not index.file:seek("set", index_item_size * trim_to) then
-		new_index:close();
-		os_remove(index_filename);
-		os_remove(index_scratch);
-		return "deleted";
-	else
-		local pack, unpack = string.pack, string.unpack;
-		for item in index.file:lines(index_item_size) do
-			local ok, err = new_index:write(pack(index_fmt, unpack(index_fmt, item) - offset));
-			if not ok then
-				os_remove(index_filename);
-				os_remove(index_scratch);
-				return "deleted", err;
-			end
-		end
-		local ok, err = new_index:close();
-		if not ok then
-			os_remove(index_filename);
-			os_remove(index_scratch);
-			return "deleted", err;
-		end
-		return os_rename(index_scratch, index_filename);
-	end
+local function shift_index(index_filename, index, trim_to, offset) -- luacheck: ignore 212
+	os_remove(index_filename);
+	return "deleted";
+	-- TODO move and recalculate remaining items
 end
 
 local function list_shift(username, host, datastore, trim_to)