Software /
code /
prosody
Diff
util/datamanager.lua @ 7925:209503ee3aaa
util.datamanager: Ignore ENOENT (no such file) when loading data
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 01 Mar 2017 16:44:59 +0100 |
parent | 7734:6a52415ed68a |
child | 7927:7132abcf669e |
line wrap: on
line diff
--- a/util/datamanager.lua Wed Mar 01 16:42:02 2017 +0100 +++ b/util/datamanager.lua Wed Mar 01 16:44:59 2017 +0100 @@ -39,6 +39,7 @@ f:seek("set", offset); return true; end; +local ENOENT = 2; pcall(function() local pposix = require "util.pposix"; raw_mkdir = pposix.mkdir or raw_mkdir; -- Doesn't trample on umask @@ -122,8 +123,12 @@ end local function load(username, host, datastore) - local data, err = envloadfile(getpath(username, host, datastore), {}); + local data, err, errno = envloadfile(getpath(username, host, datastore), {}); if not data then + if errno == ENOENT then + -- No such file, ok to ignore + return nil; + end local mode = lfs.attributes(getpath(username, host, datastore), "mode"); if not mode then log("debug", "Assuming empty %s storage ('%s') for user: %s@%s", datastore, err, username or "nil", host or "nil"); @@ -145,9 +150,9 @@ local function atomic_store(filename, data) local scratch = filename.."~"; - local f, ok, msg; + local f, ok, msg, errno; - f, msg = io_open(scratch, "w"); + f, msg, errno = io_open(scratch, "w"); if not f then return nil, msg; end @@ -295,8 +300,12 @@ local function list_load(username, host, datastore) local items = {}; - local data, err = envloadfile(getpath(username, host, datastore, "list"), {item = function(i) t_insert(items, i); end}); + local data, err, errno = envloadfile(getpath(username, host, datastore, "list"), {item = function(i) t_insert(items, i); end}); if not data then + if errno == ENOENT then + -- No such file, ok to ignore + return nil; + end local mode = lfs.attributes(getpath(username, host, datastore, "list"), "mode"); if not mode then log("debug", "Assuming empty %s storage ('%s') for user: %s@%s", datastore, err, username or "nil", host or "nil");