Comparison

util/datamanager.lua @ 5095:dddbcd62183a

util.datamanager: Collect errors when deleting all stores of a user, but ignore "no such file"
author Kim Alvefur <zash@zash.se>
date Sat, 25 Aug 2012 01:21:41 +0200
parent 5069:7b298f8bcbcb
child 5103:5a1488369c35
comparison
equal deleted inserted replaced
5094:e646c849d72f 5095:dddbcd62183a
310 end 310 end
311 311
312 function purge(username, host) 312 function purge(username, host)
313 local host_dir = format("%s/%s/", data_path, encode(host)); 313 local host_dir = format("%s/%s/", data_path, encode(host));
314 local deleted = 0; 314 local deleted = 0;
315 local errs = {};
315 for file in lfs.dir(host_dir) do 316 for file in lfs.dir(host_dir) do
316 if lfs.attributes(host_dir..file, "mode") == "directory" then 317 if lfs.attributes(host_dir..file, "mode") == "directory" then
317 local store = decode(file); 318 local store = decode(file);
318 deleted = deleted + (os_remove(getpath(username, host, store)) and 1 or 0); 319 local ok, err = os_remove(getpath(username, host, store));
319 deleted = deleted + (os_remove(getpath(username, host, store, "list")) and 1 or 0); 320 if not ok and not err:lower():match("no such") then errs[#errs+1] = err; end
320 -- We this will generate loads of "No such file or directory", but do we care? 321 local ok, err = os_remove(getpath(username, host, store, "list"));
321 end 322 if not ok and not err:lower():match("no such") then errs[#errs+1] = err; end
322 end 323 end
323 return deleted > 0, deleted; 324 end
325 return #errs == 0, t_concat(errs, ", ");
324 end 326 end
325 327
326 return _M; 328 return _M;