chkspawn.c
changeset 0 068428edee47
equal deleted inserted replaced
-1:000000000000 0:068428edee47
       
     1 #include "substdio.h"
       
     2 #include "subfd.h"
       
     3 #include "fmt.h"
       
     4 #include "select.h"
       
     5 #include "exit.h"
       
     6 #include "auto_spawn.h"
       
     7 
       
     8 char num[FMT_ULONG];
       
     9 fd_set fds;
       
    10 
       
    11 void main()
       
    12 {
       
    13   unsigned long hiddenlimit;
       
    14   unsigned long maxnumd;
       
    15  
       
    16   hiddenlimit = sizeof(fds) * 8;
       
    17   maxnumd = (hiddenlimit - 5) / 2;
       
    18  
       
    19   if (auto_spawn < 1) {
       
    20     substdio_puts(subfderr,"Oops. You have set conf-spawn lower than 1.\n");
       
    21     substdio_flush(subfderr);
       
    22     _exit(1);
       
    23   }
       
    24 
       
    25   if (auto_spawn > 255) {
       
    26     substdio_puts(subfderr,"Oops. You have set conf-spawn higher than 255.\n");
       
    27     substdio_flush(subfderr);
       
    28     _exit(1);
       
    29   }
       
    30 
       
    31   if (auto_spawn > maxnumd) {
       
    32     substdio_puts(subfderr,"Oops. Your system's FD_SET() has a hidden limit of ");
       
    33     substdio_put(subfderr,num,fmt_ulong(num,hiddenlimit));
       
    34     substdio_puts(subfderr," descriptors.\n\
       
    35 This means that the qmail daemons could crash if you set the run-time\n\
       
    36 concurrency higher than ");
       
    37     substdio_put(subfderr,num,fmt_ulong(num,maxnumd));
       
    38     substdio_puts(subfderr,". So I'm going to insist that the concurrency\n\
       
    39 limit in conf-spawn be at most ");
       
    40     substdio_put(subfderr,num,fmt_ulong(num,maxnumd));
       
    41     substdio_puts(subfderr,". Right now it's ");
       
    42     substdio_put(subfderr,num,fmt_ulong(num,(unsigned long) auto_spawn));
       
    43     substdio_puts(subfderr,".\n");
       
    44     substdio_flush(subfderr);
       
    45     _exit(1);
       
    46   }
       
    47   _exit(0);
       
    48 }