quota warning problem - Is it a bug of cyrus imap?
John Alton Tamplin
jtampli at sph.emory.edu
Thu Jul 3 11:18:59 EDT 2003
Rob Siemborski wrote:
>>Though, it may be safe to check this with a configure test (since the
>>quotas are all stored as strings, not binary data).
>>
>>
>Actually, I lied here.
>
>We do store the used quota as binary data in the index header.
>
>
So the quota used for a particular mailbox (independent of the quota
root it belongs to) is stored in cyrus.index as a 32-bit network
byte-order integer, right? It looks like that could be handled in an
upwards-compatible way either by checking the start offset just like it
is done for pop3_last_login, uidvalidity, flags, and pop3_new_uidl or by
using a new minor number in the index file. If the former approach is
used, the high 32 bits would have to be stored at the end, while with a
new minor version of the format it could be kept together.
Since the actual quota files are in ASCII, it is trivial to support
upwards compatibility -- just include code capable of reading/writing
64-bit numbers.
>But I suspect we could cheat and just write out the initial 4 bytes
>as zeros on platforms without long long (we'd have to upgrade the index
>files in any event).
>
>I strongly perefer something more generic than this though, splitting the
>build in this way may make quota problems hard to debug.
>
How about creating a new type, which can be long long on appropriate
platforms or a struct { unsigned long hi, lo; } on ones without long
long support, and a set of functions for reading, writing, and math on
these types? Those could be macros or inline functions for platforms
with long long support and not lose much efficiency, while still
supporting older/smaller platforms.
--
John A. Tamplin Unix System Administrator
Emory University, School of Public Health +1 404/727-9931
More information about the Info-cyrus
mailing list