7 messages in net.sourceforge.lists.courier-maildropRe: [maildropl] maildirquota maximum ...
FromSent OnAttachments
Daniel LudwigSep 26, 2005 2:29 am 
Sam VarshavchikSep 26, 2005 3:49 am 
Daniel LudwigSep 26, 2005 5:19 am 
Sam VarshavchikSep 26, 2005 3:19 pm 
Nick SimicichSep 26, 2005 4:26 pm 
Sam VarshavchikSep 26, 2005 4:36 pm 
Nick SimicichSep 26, 2005 6:54 pm 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: [maildropl] maildirquota maximum size ?Actions...
From:Nick Simicich (nj@scifi.squawk.com)
Date:Sep 26, 2005 4:26:43 pm
List:net.sourceforge.lists.courier-maildrop

On Mon, 2005-09-26 at 18:19, Sam Varshavchik wrote:

Daniel Ludwig writes:

Yes. You are limited by the word size on your 32 bit platform. 32 bit systems cannot process numeric values over 2 GB.

Ok ;) !

But if I edit the first line in maildirsize manually to 5000000000S (=5GB), what will happen ??

The numeric value gets parsed as a 32-bit quantity, and it will naturally overflow.

Or do I have to remove the maildirsize in such huge Maildirs ?

Yes. To support such huge quotas, you'll have to move up to a 64-bit platform.

Please examine the following program:

cat /tmp/longlong.c #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { long long i; for (i = 0; i < 5000000000ll; i += 100000000) { printf("%lld \t", i); } exit(0); }

I have no trouble compiling and executing this program on my 32 bit Intel box. Just because I do not have 64 bit memory hardware does not mean that I can't do 64 bit arithmetic - or have a 64 bit file.

You do not need to buy new hardware. You do need to change the program - it has to recognize that the numbers can be greater than 32 bits - by defining them as "long long" rather than "long" (or using standard defined types that have mutable definitions - an off_t when you have 64 bit files defined is a 64 bit thing). You will need to change printfs and such to format the longer numbers. You will need, in some cases, to use different system calls. For example, you might want to seek deep into a file - and you would need to use the right versions of the calls. Something defining USE_LARGEGFILE might work - you need to look at how the libraries work, there are ways to get the 64 bit versions of the calls to be defined under the old names.

Use -Wall to get all warnings - it will tell you when (for example) you mess up with a printf and leave out the ll in %lld, for example.

Good luck and test thoroughly.