util/datamanager.lua
changeset 5103 5a1488369c35
parent 5095 dddbcd62183a
child 5118 0dc9e6c128c3
equal deleted inserted replaced
5102:ae8a993b598d 5103:5a1488369c35
   307 		end
   307 		end
   308 	end
   308 	end
   309 	return list;
   309 	return list;
   310 end
   310 end
   311 
   311 
       
   312 local function do_remove(path)
       
   313 	local ok, err = os_remove(path);
       
   314 	if not ok and lfs.attributes(path, "mode") then
       
   315 		return ok, err;
       
   316 	end
       
   317 	return true
       
   318 end
       
   319 
   312 function purge(username, host)
   320 function purge(username, host)
   313 	local host_dir = format("%s/%s/", data_path, encode(host));
   321 	local host_dir = format("%s/%s/", data_path, encode(host));
   314 	local deleted = 0;
   322 	local deleted = 0;
   315 	local errs = {};
   323 	local errs = {};
   316 	for file in lfs.dir(host_dir) do
   324 	for file in lfs.dir(host_dir) do
   317 		if lfs.attributes(host_dir..file, "mode") == "directory" then
   325 		if lfs.attributes(host_dir..file, "mode") == "directory" then
   318 			local store = decode(file);
   326 			local store = decode(file);
   319 			local ok, err = os_remove(getpath(username, host, store));
   327 			local ok, err = do_remove(getpath(username, host, store));
   320 			if not ok and not err:lower():match("no such") then errs[#errs+1] = err; end
   328 			if not ok then errs[#errs+1] = err; end
   321 			local ok, err = os_remove(getpath(username, host, store, "list"));
   329 
   322 			if not ok and not err:lower():match("no such") then errs[#errs+1] = err; end
   330 			local ok, err = do_remove(getpath(username, host, store, "list"));
       
   331 			if not ok then errs[#errs+1] = err; end
   323 		end
   332 		end
   324 	end
   333 	end
   325 	return #errs == 0, t_concat(errs, ", ");
   334 	return #errs == 0, t_concat(errs, ", ");
   326 end
   335 end
   327 
   336