<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://hg.omfa.de/prosody-hg/</link>
    <language>en-us</language>

    <title>prosody-hg: util/datamanager.lua history</title>
    <description>util/datamanager.lua revision history</description>
    <item>
    <title>util.datamanager: Fix listing of host stores</title>
    <link>http://hg.omfa.de/prosody-hg/log/604bed81808e/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Fix listing of host stores<br/>
<br/>
lfs returns the basename of the directory entry, and the check neglected to<br/>
prefix the data path directory before calling lfs.attribute(), which resulted<br/>
in checking Prosody's current working directory for the file instead.]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Mon, 25 May 2026 13:23:03 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Include record length in header</title>
    <link>http://hg.omfa.de/prosody-hg/log/7ffb2d3ab50b/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Include record length in header<br/>
<br/>
In order to distinguish 32bit from 64bit architectures since they look<br/>
the same when truncated and little-endian.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 09 Dec 2025 21:41:34 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: fix duplicated word in log message</title>
    <link>http://hg.omfa.de/prosody-hg/log/515ac7e8ae6d/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: fix duplicated word in log message]]></description>
    <author>&#74;&#111;&#110;&#97;&#115;&#32;&#83;&#99;&#104;&#228;&#102;&#101;&#114;&#32;&#60;&#106;&#111;&#110;&#97;&#115;&#64;&#119;&#105;&#101;&#108;&#105;&#99;&#107;&#105;&#46;&#110;&#97;&#109;&#101;&#62;</author>
    <pubDate>Sat, 16 Nov 2024 09:20:29 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Fix missing pack format when reading first index entry</title>
    <link>http://hg.omfa.de/prosody-hg/log/971fd4cb09d4/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Fix missing pack format when reading first index entry<br/>
<br/>
Thanks MattJ]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 30 Nov 2023 18:09:53 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Load first item into index earlier</title>
    <link>http://hg.omfa.de/prosody-hg/log/2b8ec22988af/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Load first item into index earlier<br/>
<br/>
Should get rid of fseek() call]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 27 Nov 2023 00:14:56 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Clean up list index files on purge (i.e. user deletion)</title>
    <link>http://hg.omfa.de/prosody-hg/log/20b7de7ab66a/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Clean up list index files on purge (i.e. user deletion)]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 02 Nov 2023 17:35:10 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Always reset index after list shift</title>
    <link>http://hg.omfa.de/prosody-hg/log/26327eac56dc/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Always reset index after list shift<br/>
<br/>
Shifting the index does not work reliably yet, better to rebuild it from<br/>
scratch. Since there is minimal parsing involved in that, it should be<br/>
more efficient anyway.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sat, 22 Jul 2023 14:02:01 +0200</pubDate>
</item>
<item>
    <title>util.datamanager: Add way to close indexed list store</title>
    <link>http://hg.omfa.de/prosody-hg/log/9c72f93b7a02/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Add way to close indexed list store]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 21 Jul 2023 18:30:06 +0200</pubDate>
</item>
<item>
    <title>util.datamanager: Close file handle when done using it</title>
    <link>http://hg.omfa.de/prosody-hg/log/dbd7a6b09ada/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Close file handle when done using it<br/>
<br/>
It gets closed eventually but at high load they could potentially<br/>
lead to reaching FD limits faster.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 21 Jul 2023 18:28:54 +0200</pubDate>
</item>
<item>
    <title>util.datamanager: Disable blockwise removal</title>
    <link>http://hg.omfa.de/prosody-hg/log/c886ea087b38/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Disable blockwise removal<br/>
<br/>
In desperate need of tests]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 21 Jul 2023 18:28:16 +0200</pubDate>
</item>
<item>
    <title>util.datamanager: Disable block alignment</title>
    <link>http://hg.omfa.de/prosody-hg/log/6a11d92ae436/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Disable block alignment<br/>
<br/>
Until we have more test coverage. Somehow the index becomes incorrect<br/>
after inserting padding, unclear why.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 21 Jul 2023 18:03:22 +0200</pubDate>
</item>
<item>
    <title>util.datamanager: Pad list writes to avoid crossing block boundaries</title>
    <link>http://hg.omfa.de/prosody-hg/log/affaf6d08d26/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Pad list writes to avoid crossing block boundaries<br/>
<br/>
By padding items so that they do not cross block boundaries, it becomes<br/>
eaiser to delete whole blocks with fallocate() without cutting items<br/>
in half, improving efficiency of such operations.<br/>
<br/>
Since list stores are used for message archives, where the most common<br/>
deletion operation would be of the oldest entires, at the top of the<br/>
file. With this, all blocks that contain items to be removed could be<br/>
deleted without needing to read, delete and write out the whole file.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 07 Jun 2023 00:39:30 +0200</pubDate>
</item>
<item>
    <title>util.datamanager: Efficiently remove whole blocks to shift lists</title>
    <link>http://hg.omfa.de/prosody-hg/log/b57f45165e1e/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Efficiently remove whole blocks to shift lists<br/>
<br/>
Using the new pposix.remove_blocks() it should be very performant to<br/>
delete whole sections of a file, given a supporting file system.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 12 Jul 2023 11:45:12 +0200</pubDate>
</item>
<item>
    <title>util.datamanager: Add way to efficiently remove first items in a list</title>
    <link>http://hg.omfa.de/prosody-hg/log/33b114fbb5de/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Add way to efficiently remove first items in a list<br/>
<br/>
Copying data without parsing it should be more performant than parsing<br/>
it serializing back.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 12 Jul 2023 11:42:41 +0200</pubDate>
</item>
<item>
    <title>util.datamanager: Fix indexing first item if not at the very start</title>
    <link>http://hg.omfa.de/prosody-hg/log/c48ae06e24d6/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Fix indexing first item if not at the very start<br/>
<br/>
If the first item does not start at position 0 then the index function<br/>
produces a phantom first entry covering position zero until where the<br/>
real first item starts. When using the index, this would make it either<br/>
appear as the first item was missing or cause an off-by-one issue with<br/>
remaining items.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 10 Jul 2023 17:19:05 +0200</pubDate>
</item>
<item>
    <title>util.datamanager: Reduce log level of left over debug messages to debug (thanks Trung)</title>
    <link>http://hg.omfa.de/prosody-hg/log/87487056bccb/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Reduce log level of left over debug messages to debug (thanks Trung)<br/>
<br/>
These were mostly 'warn' to make them stand out from the debug noise]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 12 Jul 2023 10:24:28 +0200</pubDate>
</item>
<item>
    <title>util.datamanager: Fix missing separator in log line</title>
    <link>http://hg.omfa.de/prosody-hg/log/48622b89f570/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Fix missing separator in log line]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 10 Jul 2023 17:52:52 +0200</pubDate>
</item>
<item>
    <title>util.datamanager: Halve size of list index</title>
    <link>http://hg.omfa.de/prosody-hg/log/b417a49cc31b/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Halve size of list index<br/>
<br/>
Instead of storing (start, length) tuples, store the offset to the end<br/>
of items and derive length using the previous entry.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 14 May 2021 05:49:35 +0200</pubDate>
</item>
<item>
    <title>util.datamanager: Add O(1) list indexing with on-disk index</title>
    <link>http://hg.omfa.de/prosody-hg/log/638f627e707f/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Add O(1) list indexing with on-disk index<br/>
<br/>
Index file contains offsets and lengths of each item() which allows<br/>
seeking directly to each item and reading it without parsing the entire<br/>
file.<br/>
<br/>
Also allows tricks like binary search, assuming items have some defined<br/>
order.<br/>
<br/>
We take advantage of the 1-based indexing in tables to store a magic<br/>
header in the 0 position, so that table index 1 ends up at file index 1.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 11 May 2021 02:09:56 +0200</pubDate>
</item>
<item>
    <title>util: Prefix module imports with prosody namespace</title>
    <link>http://hg.omfa.de/prosody-hg/log/d10957394a3c/util/datamanager.lua</link>
    <description><![CDATA[util: Prefix module imports with prosody namespace]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 17 Mar 2023 16:23:16 +0100</pubDate>
</item>
<item>
    <title>spelling: non-existing mistakes (thanks timeless)</title>
    <link>http://hg.omfa.de/prosody-hg/log/50fcd3879482/util/datamanager.lua</link>
    <description><![CDATA[spelling: non-existing mistakes (thanks timeless)]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 07 Mar 2022 00:35:29 +0100</pubDate>
</item>
<item>
    <title>Spelling: Fix various spelling mistakes (thanks timeless)</title>
    <link>http://hg.omfa.de/prosody-hg/log/05c250fa335a/util/datamanager.lua</link>
    <description><![CDATA[Spelling: Fix various spelling mistakes (thanks timeless)<br/>
<br/>
Words, sometimes I wonder how they even work<br/>
<br/>
Maybe I missed something.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 07 Mar 2022 00:13:56 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Support iterating over any file extension</title>
    <link>http://hg.omfa.de/prosody-hg/log/87105a9a11df/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Support iterating over any file extension<br/>
<br/>
The 'typ' argument to all other functions is the actual file extension,<br/>
but not here for some reason.<br/>
<br/>
May need this for iterating over the .bin files created by<br/>
mod_http_file_share in the future.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 07 Feb 2021 19:23:33 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Fix not passing variables as format string to logger (thanks semgrep)</title>
    <link>http://hg.omfa.de/prosody-hg/log/5fd1f1b544a0/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Fix not passing variables as format string to logger (thanks semgrep)<br/>
<br/>
Passing error messages as format string could lead to errors, although<br/>
not a problem anymore since util.format sanitizes this.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sat, 16 Jan 2021 15:49:46 +0100</pubDate>
</item>
<item>
    <title>Merge 0.11-&gt;trunk</title>
    <link>http://hg.omfa.de/prosody-hg/log/dfc8257d8445/util/datamanager.lua</link>
    <description><![CDATA[Merge 0.11-&gt;trunk]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 24 Feb 2020 23:33:53 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Fix iterating over &quot;users&quot; (thanks marc0s)</title>
    <link>http://hg.omfa.de/prosody-hg/log/69acda92d5a9/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Fix iterating over &quot;users&quot; (thanks marc0s)<br/>
<br/>
<br/>
The 'store' path componend used to be unescaped until 756a2a00e7e7 added<br/>
escaping to address issues with characters like '/' used in PEP, but<br/>
with a special case for '_' which was already in common use in 'store'<br/>
path components.<br/>
<br/>
Missed adding this escaping here.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 24 Feb 2020 23:16:08 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Ignore unused 'errno' variable [luacheck]</title>
    <link>http://hg.omfa.de/prosody-hg/log/810abf34919a/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Ignore unused 'errno' variable [luacheck]]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 23 Dec 2019 21:01:55 +0100</pubDate>
</item>
<item>
    <title>Fix various spelling mistakes [codespell]</title>
    <link>http://hg.omfa.de/prosody-hg/log/02a41315d275/util/datamanager.lua</link>
    <description><![CDATA[Fix various spelling mistakes [codespell]]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 03 May 2019 20:54:24 +0200</pubDate>
</item>
<item>
    <title>vairious: Add annotation when an empty environment is set [luacheck]</title>
    <link>http://hg.omfa.de/prosody-hg/log/4f0f5b49bb03/util/datamanager.lua</link>
    <description><![CDATA[vairious: Add annotation when an empty environment is set [luacheck]]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 28 Feb 2018 20:06:26 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Encode the 'store' path component, preserving underscores</title>
    <link>http://hg.omfa.de/prosody-hg/log/756a2a00e7e7/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Encode the 'store' path component, preserving underscores]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 08 Oct 2017 18:34:57 +0200</pubDate>
</item>
<item>
    <title>util.datamanager: Use already known index instead of measuring length each iteration</title>
    <link>http://hg.omfa.de/prosody-hg/log/0a1c0f1107d2/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Use already known index instead of measuring length each iteration]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 17 Apr 2017 03:26:21 +0200</pubDate>
</item>
<item>
    <title>util.datamanager: Log where the error came from</title>
    <link>http://hg.omfa.de/prosody-hg/log/ff3787033abb/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Log where the error came from]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 28 Mar 2017 17:31:55 +0200</pubDate>
</item>
<item>
    <title>util.datamanager: Rearrange locals</title>
    <link>http://hg.omfa.de/prosody-hg/log/72cfbe377326/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Rearrange locals]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 28 Mar 2017 17:31:24 +0200</pubDate>
</item>
<item>
    <title>util.datamanager: Use pposix.atomic_append</title>
    <link>http://hg.omfa.de/prosody-hg/log/f8ba814fe029/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Use pposix.atomic_append]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 28 Feb 2017 11:33:43 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Remove check for file non-existence since ENOENT tells us that already</title>
    <link>http://hg.omfa.de/prosody-hg/log/f4c0fb54e16c/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Remove check for file non-existence since ENOENT tells us that already]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 22 Mar 2017 12:02:52 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Split long line [luacheck]</title>
    <link>http://hg.omfa.de/prosody-hg/log/b99404a340fc/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Split long line [luacheck]]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 22 Mar 2017 12:00:21 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Expose atomic_store as store_raw</title>
    <link>http://hg.omfa.de/prosody-hg/log/4017ea6d2599/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Expose atomic_store as store_raw]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 01 Mar 2017 17:37:29 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Use atomic store function when writing the first entry of a list</title>
    <link>http://hg.omfa.de/prosody-hg/log/9d014aca766f/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Use atomic store function when writing the first entry of a list]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 01 Mar 2017 17:15:56 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Import value of ENOENT from util.pposix (if available)</title>
    <link>http://hg.omfa.de/prosody-hg/log/7132abcf669e/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Import value of ENOENT from util.pposix (if available)]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 01 Mar 2017 17:04:48 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Ignore ENOENT (no such file) when loading data</title>
    <link>http://hg.omfa.de/prosody-hg/log/209503ee3aaa/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Ignore ENOENT (no such file) when loading data]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 01 Mar 2017 16:44:59 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Shorter pattern</title>
    <link>http://hg.omfa.de/prosody-hg/log/6a52415ed68a/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Shorter pattern]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 20 Nov 2016 12:06:36 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Remove extraneous decoding of + to space, which we never never encode to</title>
    <link>http://hg.omfa.de/prosody-hg/log/601c4d81603b/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Remove extraneous decoding of + to space, which we never never encode to]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 20 Nov 2016 12:05:43 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Use the 'base' argument to tonumber() to indicate hexadecimal</title>
    <link>http://hg.omfa.de/prosody-hg/log/aba3dd84d9f0/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Use the 'base' argument to tonumber() to indicate hexadecimal]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 20 Nov 2016 12:03:24 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Add annotations to ignore name clashes [luacheck]</title>
    <link>http://hg.omfa.de/prosody-hg/log/8027eecc750f/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Add annotations to ignore name clashes [luacheck]]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sat, 24 Sep 2016 18:31:16 +0200</pubDate>
</item>
<item>
    <title>util.datamanager: Rename variables to avoid name clashes [luacheck]</title>
    <link>http://hg.omfa.de/prosody-hg/log/177d569307fd/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Rename variables to avoid name clashes [luacheck]]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sat, 24 Sep 2016 18:31:00 +0200</pubDate>
</item>
<item>
    <title>util.datamanager: Import tostring and type (fix global access)</title>
    <link>http://hg.omfa.de/prosody-hg/log/92f721226753/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Import tostring and type (fix global access)]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 22 May 2016 14:38:07 +0200</pubDate>
</item>
<item>
    <title>util.datamanager: Explicit handling of each error condition (see #632)</title>
    <link>http://hg.omfa.de/prosody-hg/log/5bf0ff3882aa/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Explicit handling of each error condition (see #632)]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sat, 27 Feb 2016 15:29:56 +0100</pubDate>
</item>
<item>
    <title>Merge 0.9-&gt;0.10</title>
    <link>http://hg.omfa.de/prosody-hg/log/7a8cffafeff0/util/datamanager.lua</link>
    <description><![CDATA[Merge 0.9-&gt;0.10]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 25 Feb 2016 22:37:41 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Unreference file handle after closing it to prevent trying to close it again (fixes #632)</title>
    <link>http://hg.omfa.de/prosody-hg/log/67ac4a0b6e50/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Unreference file handle after closing it to prevent trying to close it again (fixes #632)]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 25 Feb 2016 22:36:42 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Add append to public api</title>
    <link>http://hg.omfa.de/prosody-hg/log/9ab0d5e69c41/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Add append to public api]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 11 Dec 2015 20:31:55 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Return extra location info</title>
    <link>http://hg.omfa.de/prosody-hg/log/2743759ca1b5/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Return extra location info]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 11 Dec 2015 20:31:19 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Make sure only strings are passed as data to append()</title>
    <link>http://hg.omfa.de/prosody-hg/log/2b57f77985a3/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Make sure only strings are passed as data to append()]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 11 Dec 2015 20:30:39 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Add some comments about the append function</title>
    <link>http://hg.omfa.de/prosody-hg/log/0ad66d12113a/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Add some comments about the append function]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 11 Dec 2015 20:29:55 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Handle potential error from :write() call</title>
    <link>http://hg.omfa.de/prosody-hg/log/86607fe755b6/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Handle potential error from :write() call]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 11 Dec 2015 20:26:04 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Handle potential issues from fallocate</title>
    <link>http://hg.omfa.de/prosody-hg/log/0ab228bc21c6/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Handle potential issues from fallocate]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 11 Dec 2015 20:24:36 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: No shadowing of variable [luacheck]</title>
    <link>http://hg.omfa.de/prosody-hg/log/644b1bddc676/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: No shadowing of variable [luacheck]]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 11 Dec 2015 20:22:54 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Skip past second check if first attemtp to open file succeeds</title>
    <link>http://hg.omfa.de/prosody-hg/log/807b0b2ee545/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Skip past second check if first attemtp to open file succeeds]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 11 Dec 2015 20:18:24 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: In append() collect status when closing file handle as it may fail (eg the implied flush)</title>
    <link>http://hg.omfa.de/prosody-hg/log/507301531cf5/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: In append() collect status when closing file handle as it may fail (eg the implied flush)]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 11 Dec 2015 20:13:37 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Overwrite 'data' variable instead of shadownig it [luacheck]</title>
    <link>http://hg.omfa.de/prosody-hg/log/dc0c6b8dc638/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Overwrite 'data' variable instead of shadownig it [luacheck]]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 11 Dec 2015 20:11:48 +0100</pubDate>
</item>
<item>
    <title>util.datamanager: Factor out code for appending bytes to a file</title>
    <link>http://hg.omfa.de/prosody-hg/log/0622f2820d1d/util/datamanager.lua</link>
    <description><![CDATA[util.datamanager: Factor out code for appending bytes to a file]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 11 Dec 2015 20:07:22 +0100</pubDate>
</item>

  </channel>
</rss>
