util/datamanager.lua
changeset 5095 dddbcd62183a
parent 5069 7b298f8bcbcb
child 5103 5a1488369c35
--- a/util/datamanager.lua	Sat Aug 25 01:20:13 2012 +0200
+++ b/util/datamanager.lua	Sat Aug 25 01:21:41 2012 +0200
@@ -312,15 +312,17 @@
 function purge(username, host)
 	local host_dir = format("%s/%s/", data_path, encode(host));
 	local deleted = 0;
+	local errs = {};
 	for file in lfs.dir(host_dir) do
 		if lfs.attributes(host_dir..file, "mode") == "directory" then
 			local store = decode(file);
-			deleted = deleted + (os_remove(getpath(username, host, store)) and 1 or 0);
-			deleted = deleted + (os_remove(getpath(username, host, store, "list")) and 1 or 0);
-			-- We this will generate loads of "No such file or directory", but do we care?
+			local ok, err = os_remove(getpath(username, host, store));
+			if not ok and not err:lower():match("no such") then errs[#errs+1] = err; end
+			local ok, err = os_remove(getpath(username, host, store, "list"));
+			if not ok and not err:lower():match("no such") then errs[#errs+1] = err; end
 		end
 	end
-	return deleted > 0, deleted;
+	return #errs == 0, t_concat(errs, ", ");
 end
 
 return _M;