Software /
code /
prosody
Comparison
util/datamanager.lua @ 5024:d25e1b9332cc
Merge with Florob
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sat, 28 Jul 2012 01:14:31 +0100 |
parent | 5021:85b2689dbcfe |
parent | 4993:5243b74a4cbb |
child | 5032:c40ea227f8af |
comparison
equal
deleted
inserted
replaced
5023:dcc8e789df36 | 5024:d25e1b9332cc |
---|---|
114 function load(username, host, datastore) | 114 function load(username, host, datastore) |
115 local data, ret = envloadfile(getpath(username, host, datastore), {}); | 115 local data, ret = envloadfile(getpath(username, host, datastore), {}); |
116 if not data then | 116 if not data then |
117 local mode = lfs.attributes(getpath(username, host, datastore), "mode"); | 117 local mode = lfs.attributes(getpath(username, host, datastore), "mode"); |
118 if not mode then | 118 if not mode then |
119 log("debug", "Assuming empty "..datastore.." storage ('"..ret.."') for user: "..(username or "nil").."@"..(host or "nil")); | 119 log("debug", "Assuming empty %s storage ('%s') for user: %s@%s", datastore, ret, username or "nil", host or "nil"); |
120 return nil; | 120 return nil; |
121 else -- file exists, but can't be read | 121 else -- file exists, but can't be read |
122 -- TODO more detailed error checking and logging? | 122 -- TODO more detailed error checking and logging? |
123 log("error", "Failed to load "..datastore.." storage ('"..ret.."') for user: "..(username or "nil").."@"..(host or "nil")); | 123 log("error", "Failed to load %s storage ('%s') for user: %s@%s", datastore, ret, username or "nil", host or "nil"); |
124 return nil, "Error reading storage"; | 124 return nil, "Error reading storage"; |
125 end | 125 end |
126 end | 126 end |
127 | 127 |
128 local success, ret = pcall(data); | 128 local success, ret = pcall(data); |
129 if not success then | 129 if not success then |
130 log("error", "Unable to load "..datastore.." storage ('"..ret.."') for user: "..(username or "nil").."@"..(host or "nil")); | 130 log("error", "Unable to load %s storage ('%s') for user: %s@%s", datastore, ret, username or "nil", host or "nil"); |
131 return nil, "Error reading storage"; | 131 return nil, "Error reading storage"; |
132 end | 132 end |
133 return ret; | 133 return ret; |
134 end | 134 end |
135 | 135 |
144 end | 144 end |
145 | 145 |
146 -- save the datastore | 146 -- save the datastore |
147 local f, msg = io_open(getpath(username, host, datastore, nil, true), "w+"); | 147 local f, msg = io_open(getpath(username, host, datastore, nil, true), "w+"); |
148 if not f then | 148 if not f then |
149 log("error", "Unable to write to "..datastore.." storage ('"..msg.."') for user: "..(username or "nil").."@"..(host or "nil")); | 149 log("error", "Unable to write to %s storage ('%s') for user: %s@%s", datastore, msg, username or "nil", host or "nil"); |
150 return nil, "Error saving to storage"; | 150 return nil, "Error saving to storage"; |
151 end | 151 end |
152 f:write("return "); | 152 f:write("return "); |
153 append(f, data); | 153 append(f, data); |
154 f:close(); | 154 f:close(); |
165 if not data then return; end | 165 if not data then return; end |
166 if callback(username, host, datastore) == false then return true; end | 166 if callback(username, host, datastore) == false then return true; end |
167 -- save the datastore | 167 -- save the datastore |
168 local f, msg = io_open(getpath(username, host, datastore, "list", true), "a+"); | 168 local f, msg = io_open(getpath(username, host, datastore, "list", true), "a+"); |
169 if not f then | 169 if not f then |
170 log("error", "Unable to write to "..datastore.." storage ('"..msg.."') for user: "..(username or "nil").."@"..(host or "nil")); | 170 log("error", "Unable to write to %s storage ('%s') for user: %s@%s", datastore, msg, username or "nil", host or "nil"); |
171 return; | 171 return; |
172 end | 172 end |
173 f:write("item("); | 173 f:write("item("); |
174 append(f, data); | 174 append(f, data); |
175 f:write(");\n"); | 175 f:write(");\n"); |
183 end | 183 end |
184 if callback(username, host, datastore) == false then return true; end | 184 if callback(username, host, datastore) == false then return true; end |
185 -- save the datastore | 185 -- save the datastore |
186 local f, msg = io_open(getpath(username, host, datastore, "list", true), "w+"); | 186 local f, msg = io_open(getpath(username, host, datastore, "list", true), "w+"); |
187 if not f then | 187 if not f then |
188 log("error", "Unable to write to "..datastore.." storage ('"..msg.."') for user: "..(username or "nil").."@"..(host or "nil")); | 188 log("error", "Unable to write to %s storage ('%s') for user: %s@%s", datastore, msg, username or "nil", host or "nil"); |
189 return; | 189 return; |
190 end | 190 end |
191 for _, d in ipairs(data) do | 191 for _, d in ipairs(data) do |
192 f:write("item("); | 192 f:write("item("); |
193 append(f, d); | 193 append(f, d); |
207 local items = {}; | 207 local items = {}; |
208 local data, ret = envloadfile(getpath(username, host, datastore, "list"), {item = function(i) t_insert(items, i); end}); | 208 local data, ret = envloadfile(getpath(username, host, datastore, "list"), {item = function(i) t_insert(items, i); end}); |
209 if not data then | 209 if not data then |
210 local mode = lfs.attributes(getpath(username, host, datastore, "list"), "mode"); | 210 local mode = lfs.attributes(getpath(username, host, datastore, "list"), "mode"); |
211 if not mode then | 211 if not mode then |
212 log("debug", "Assuming empty "..datastore.." storage ('"..ret.."') for user: "..(username or "nil").."@"..(host or "nil")); | 212 log("debug", "Assuming empty %s storage ('%s') for user: %s@%s", datastore, ret, username or "nil", host or "nil"); |
213 return nil; | 213 return nil; |
214 else -- file exists, but can't be read | 214 else -- file exists, but can't be read |
215 -- TODO more detailed error checking and logging? | 215 -- TODO more detailed error checking and logging? |
216 log("error", "Failed to load "..datastore.." storage ('"..ret.."') for user: "..(username or "nil").."@"..(host or "nil")); | 216 log("error", "Failed to load %s storage ('%s') for user: %s@%s", datastore, ret, username or "nil", host or "nil"); |
217 return nil, "Error reading storage"; | 217 return nil, "Error reading storage"; |
218 end | 218 end |
219 end | 219 end |
220 | 220 |
221 local success, ret = pcall(data); | 221 local success, ret = pcall(data); |
222 if not success then | 222 if not success then |
223 log("error", "Unable to load "..datastore.." storage ('"..ret.."') for user: "..(username or "nil").."@"..(host or "nil")); | 223 log("error", "Unable to load %s storage ('%s') for user: %s@%s", datastore, ret, username or "nil", host or "nil"); |
224 return nil, "Error reading storage"; | 224 return nil, "Error reading storage"; |
225 end | 225 end |
226 return items; | 226 return items; |
227 end | 227 end |
228 | 228 |