http://dovecot.org/releases/2.2/dovecot-2.2.25.tar.gz http://dovecot.org/releases/2.2/dovecot-2.2.25.tar.gz.sig
Some minor fixes and (mainly logging) improvements since rc1.
* lmtp: Start tracking lmtp_user_concurrency_limit and reject already
at RCPT TO stage. This avoids MTA unnecessarily completing DATA only
to get an error.
* doveadm: Previously only mail settings were read from protocol
doveadm { .. } section. Now all settings are.
+ quota: Added quota_over_flag_lazy_check setting. It avoids checking
quota_over_flag always at startup. Instead it's checked only when
quota is being read for some other purpose.
+ auth: Added a new auth policy service:
http://wiki2.dovecot.org/Authentication/Policy
+ auth: Added PBKDF2 password scheme
+ auth: Added %{auth_user}, %{auth_username} and %{auth_domain}
+ auth: Added ":remove" suffix to extra field names to remove them.
+ auth: Added "delay_until=<timestamp>[+<max random secs>]" passdb
extra field. The auth will wait until <timestamp> and optionally some
randomness and then return success.
+ dict proxy: Added idle_msecs=<n> parameter. Support async operations.
+ Performance improvements for handling large mailboxes.
+ Added lib-dcrypt API for providing cryptographic functions.
+ Added "doveadm mailbox update" command
+ imap commands' output now includes timing spent on the "syncing"
stage if it's larger than 0.
+ cassandra: Added metrics=<path> to connect setting to output internal
statistics in JSON format every second to <path>.
+ doveadm mailbox delete: Added -e parameter to delete only empty
mailboxes. Added --unsafe option to quickly delete a mailbox,
bypassing lazy_expunge and quota plugins.
+ doveadm user & auth cache flush are now available via doveadm-server.
+ doveadm service stop <services> will stop specified services while
leaving the rest of Dovecot running.
+ quota optimization: Avoid reading mail sizes for backends which
don't need them (count, fs, dirsize)
+ Added mailbox { autoexpunge_max_mails=<n> } setting.
+ Added welcome plugin: http://wiki2.dovecot.org/Plugins/Welcome
+ fts: Added fts_autoindex_exclude setting.
- v2.2.24's MIME parser was assert-crashing on mails having truncated
MIME headers.
- auth: With multiple userdbs the final success/failure result wasn't
always correct. The last userdb's result was always used.
- doveadm backup was sometimes deleting entire mailboxes unnecessarily.
- doveadm: Command -parameters weren't being sent to doveadm-server.
- If dovecot.index read failed e.g. because mmap() reached VSZ limit,
an empty index could have been opened instead, corrupting the
mailbox state.
- imapc: Fixed EXPUNGE handling when imapc_features didn't have modseq.
- lazy-expunge: Fixed a crash when copying failed. Various other fixes.
- fts-lucene: Fixed crash on index rescan.
- auth_stats=yes produced broken output
- dict-ldap: Various fixes
- dict-sql: NULL values crashed. Now they're treated as "not found".
I Haven't had the time to check the sha1.h error with the new fixes but I've just done so after de 2.2.25 release was out and I'm having the same error:
gcc -DHAVE_CONFIG_H -I. -I. -I../.. -std=gnu99 -O2 -g -pipe -Wall
-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
--param=ssp-buffer-size=4 -m64 -mtune=generic -Wall -W
-Wmissing-prototypes -Wmissing-declarations -Wpointer-arith
-Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime
-Wstrict-aliasing=2 -I/usr/kerberos/include -c guid.c -fPIC -DPIC -o
.libs/guid.o
In file included from guid.c:6:
sha1.h:80: error: static or type qualifiers in abstract declarator
make[4]: *** [guid.lo] Error 1
make[4]: Leaving directory /home/jc/rpmbuild/BUILD/dovecot-2.2.25/src/lib' make[3]: *** [all] Error 2 make[3]: Leaving directory
/home/jc/rpmbuild/BUILD/dovecot-2.2.25/src/lib'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory /home/jc/rpmbuild/BUILD/dovecot-2.2.25/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory
/home/jc/rpmbuild/BUILD/dovecot-2.2.25'
make: *** [all] Error 2
Operating System: CentOS 5.11 GCC Version: gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55)
We have four systems like this with dovecot 2.2.24 working fine. I would like to know if this platform will not be compatible anymore with dovecot and if we need to upgrade our systems prior to dovecot version since, besides this, I have the problem related to the openssl version for the lib-dcrypt library
Thanks Juan C. Blanco
+-------------------------------------------------------------------+ | Juan C. Blanco | | | | Centro de Calculo | | | E.T.S. Ingenieros Informáticos | E-mail: jcblanco@fi.upm.es | | Universidad Politécnica de Madrid | | | Campus de Montegancedo | | | Boadilla del Monte | Tel.: (+34) 91 336 7466 | | 28660 MADRID (Spain) | Fax : (+34) 91 336 6913 | +-------------------------------------------------------------------+
On 01 Jul 2016, at 19:09, Juan C. Blanco jcblanco@fi.upm.es wrote:
I Haven't had the time to check the sha1.h error with the new fixes but I've just done so after de 2.2.25 release was out and I'm having the same error:
gcc -DHAVE_CONFIG_H -I. -I. -I../.. -std=gnu99 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime -Wstrict-aliasing=2 -I/usr/kerberos/include -c guid.c -fPIC -DPIC -o .libs/guid.o In file included from guid.c:6: sha1.h:80: error: static or type qualifiers in abstract declarator
I thought this was fixed in 2.2.25.. In config.h you should have only:
#define STATIC_ARRAY
(not #define STATIC_ARRAY static)
Operating System: CentOS 5.11 GCC Version: gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55)
We have four systems like this with dovecot 2.2.24 working fine. I would like to know if this platform will not be compatible anymore with dovecot and if we need to upgrade our systems prior to dovecot version since, besides this, I have the problem related to the openssl version for the lib-dcrypt library
I recommend upgrading. We're considering not supporting older OSes anymore at all..
On 01/07/2016 18:51, Timo Sirainen wrote:
On 01 Jul 2016, at 19:09, Juan C. Blanco jcblanco@fi.upm.es wrote:
I Haven't had the time to check the sha1.h error with the new fixes but I've just done so after de 2.2.25 release was out and I'm having the same error:
gcc -DHAVE_CONFIG_H -I. -I. -I../.. -std=gnu99 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime -Wstrict-aliasing=2 -I/usr/kerberos/include -c guid.c -fPIC -DPIC -o .libs/guid.o In file included from guid.c:6: sha1.h:80: error: static or type qualifiers in abstract declarator
I thought this was fixed in 2.2.25.. In config.h you should have only:
#define STATIC_ARRAY
(not #define STATIC_ARRAY static)
OK, my config.h contains:
/* C99 static array */ #define STATIC_ARRAY static
Regards.
Operating System: CentOS 5.11 GCC Version: gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55)
We have four systems like this with dovecot 2.2.24 working fine. I would like to know if this platform will not be compatible anymore with dovecot and if we need to upgrade our systems prior to dovecot version since, besides this, I have the problem related to the openssl version for the lib-dcrypt library
I recommend upgrading. We're considering not supporting older OSes anymore at all..
-- +-------------------------------------------------------------------+ | Juan C. Blanco | | | | Centro de Calculo | | | E.T.S. Ingenieros Informáticos | E-mail: jcblanco@fi.upm.es | | Universidad Politécnica de Madrid | | | Campus de Montegancedo | | | Boadilla del Monte | Tel.: (+34) 91 336 7466 | | 28660 MADRID (Spain) | Fax : (+34) 91 336 6913 | +-------------------------------------------------------------------+
On 04.07.2016 14:24, Juan C. Blanco wrote:
On 01/07/2016 18:51, Timo Sirainen wrote:
On 01 Jul 2016, at 19:09, Juan C. Blanco jcblanco@fi.upm.es wrote:
I Haven't had the time to check the sha1.h error with the new fixes but I've just done so after de 2.2.25 release was out and I'm having the same error:
gcc -DHAVE_CONFIG_H -I. -I. -I../.. -std=gnu99 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime -Wstrict-aliasing=2 -I/usr/kerberos/include -c guid.c -fPIC -DPIC -o .libs/guid.o In file included from guid.c:6: sha1.h:80: error: static or type qualifiers in abstract declarator
I thought this was fixed in 2.2.25.. In config.h you should have only:
#define STATIC_ARRAY
(not #define STATIC_ARRAY static)
OK, my config.h contains:
/* C99 static array */ #define STATIC_ARRAY static
Regards.
Operating System: CentOS 5.11 GCC Version: gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55)
We have four systems like this with dovecot 2.2.24 working fine. I would like to know if this platform will not be compatible anymore with dovecot and if we need to upgrade our systems prior to dovecot version since, besides this, I have the problem related to the openssl version for the lib-dcrypt library
I recommend upgrading. We're considering not supporting older OSes anymore at all..
Hi!
This problem is hopefully now fixed by https://github.com/dovecot/core/commit/d9c865ce774aae9f2f17b89e7e94c3cfca29d...
Aki
On 04/07/2016 12:44, Aki Tuomi wrote:
On 04.07.2016 14:24, Juan C. Blanco wrote:
On 01/07/2016 18:51, Timo Sirainen wrote:
On 01 Jul 2016, at 19:09, Juan C. Blanco jcblanco@fi.upm.es wrote:
I Haven't had the time to check the sha1.h error with the new fixes but I've just done so after de 2.2.25 release was out and I'm having the same error:
gcc -DHAVE_CONFIG_H -I. -I. -I../.. -std=gnu99 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime -Wstrict-aliasing=2 -I/usr/kerberos/include -c guid.c -fPIC -DPIC -o .libs/guid.o In file included from guid.c:6: sha1.h:80: error: static or type qualifiers in abstract declarator
I thought this was fixed in 2.2.25.. In config.h you should have only:
#define STATIC_ARRAY
(not #define STATIC_ARRAY static)
OK, my config.h contains:
/* C99 static array */ #define STATIC_ARRAY static
Regards.
Operating System: CentOS 5.11 GCC Version: gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55)
We have four systems like this with dovecot 2.2.24 working fine. I would like to know if this platform will not be compatible anymore with dovecot and if we need to upgrade our systems prior to dovecot version since, besides this, I have the problem related to the openssl version for the lib-dcrypt library
I recommend upgrading. We're considering not supporting older OSes anymore at all..
Hi!
This problem is hopefully now fixed by https://github.com/dovecot/core/commit/d9c865ce774aae9f2f17b89e7e94c3cfca29d...
Aki, I had a go mock building on CentOS5 and it appears that the test succeeds with this patch in place:
configure:21182: checking if we can use C99 static in array sizes configure:21202: gcc -c -std=gnu99 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -fno-strict-aliasing -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime -Wstrict-aliasing=2 conftest.c >&5 configure:21202: $? = 0 configure:21214: result: yes
(confirmed was built using unsigned char array)
In fact, after a cursory examination and some testing I suspect the CentOS5 gcc does nominally support static array sizes, and it's likely hitting a compiler bug on the build proper?
All I can suggest is a manual configure flag toggle of the test, or that this bug is better placed against Redhat? I haven't been able to narrow down a reproducer on triggering the error message other than during build.
-- Dave
On 1 July 2016 at 17:36, Timo Sirainen tss@iki.fi wrote:
http://dovecot.org/releases/2.2/dovecot-2.2.25.tar.gz http://dovecot.org/releases/2.2/dovecot-2.2.25.tar.gz.sig
On FreeBSD 9.3 i386, [wash@gw ~/Tools/Dovecot/2.2/dovecot-2.2.25]$ gcc -v Using built-in specs. Target: i386-undermydesk-freebsd Configured with: FreeBSD/i386 system compiler Thread model: posix gcc version 4.2.1 20070831 patched [FreeBSD]
.... libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../.. -std=gnu99 -g -O2 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime -Wstrict-aliasing=2 -I/usr/local/include -MT file-set-size.lo -MD -MP -MF .deps/file-set-size.Tpo -c file-set-size.c -fPIC -DPIC -o .libs/file-set-size.o libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../.. -std=gnu99 -g -O2 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime -Wstrict-aliasing=2 -I/usr/local/include -MT file-set-size.lo -MD -MP -MF .deps/file-set-size.Tpo -c file-set-size.c -o file-set-size.o >/dev/null 2>&1 mv -f .deps/file-set-size.Tpo .deps/file-set-size.Plo /bin/sh ../../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I../.. -std=gnu99 -g -O2 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime -Wstrict-aliasing=2 -I/usr/local/include -MT guid.lo -MD -MP -MF .deps/guid.Tpo -c -o guid.lo guid.c libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../.. -std=gnu99 -g -O2 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime -Wstrict-aliasing=2 -I/usr/local/include -MT guid.lo -MD -MP -MF .deps/guid.Tpo -c guid.c -fPIC -DPIC -o .libs/guid.o In file included from guid.c:6: sha1.h:80: error: static or type qualifiers in abstract declarator Makefile:1118: recipe for target 'guid.lo' failed gmake[4]: *** [guid.lo] Error 1 gmake[4]: Leaving directory '/usr/home/wash/Tools/Dovecot/2.2/dovecot-2.2.25/src/lib' Makefile:840: recipe for target 'all' failed gmake[3]: *** [all] Error 2 gmake[3]: Leaving directory '/usr/home/wash/Tools/Dovecot/2.2/dovecot-2.2.25/src/lib' Makefile:490: recipe for target 'all-recursive' failed gmake[2]: *** [all-recursive] Error 1 gmake[2]: Leaving directory '/usr/home/wash/Tools/Dovecot/2.2/dovecot-2.2.25/src' Makefile:618: recipe for target 'all-recursive' failed gmake[1]: *** [all-recursive] Error 1 gmake[1]: Leaving directory '/usr/home/wash/Tools/Dovecot/2.2/dovecot-2.2.25' Makefile:462: recipe for target 'all' failed gmake: *** [all] Error 2
-- Best regards, Odhiambo WASHINGTON, Nairobi,KE +254 7 3200 0004/+254 7 2274 3223 "Oh, the cruft."
On 1 July 2016 at 17:36, Timo Sirainen tss@iki.fi wrote:
http://dovecot.org/releases/2.2/dovecot-2.2.25.tar.gz http://dovecot.org/releases/2.2/dovecot-2.2.25.tar.gz.sig
Some minor fixes and (mainly logging) improvements since rc1.
* lmtp: Start tracking lmtp_user_concurrency_limit and reject
already at RCPT TO stage. This avoids MTA unnecessarily completing DATA only to get an error. * doveadm: Previously only mail settings were read from protocol doveadm { .. } section. Now all settings are.
+ quota: Added quota_over_flag_lazy_check setting. It avoids
checking quota_over_flag always at startup. Instead it's checked only when quota is being read for some other purpose. + auth: Added a new auth policy service: http://wiki2.dovecot.org/Authentication/Policy + auth: Added PBKDF2 password scheme + auth: Added %{auth_user}, %{auth_username} and %{auth_domain} + auth: Added ":remove" suffix to extra field names to remove them. + auth: Added "delay_until=<timestamp>[+<max random secs>]" passdb extra field. The auth will wait until <timestamp> and optionally some randomness and then return success. + dict proxy: Added idle_msecs=<n> parameter. Support async operations. + Performance improvements for handling large mailboxes. + Added lib-dcrypt API for providing cryptographic functions. + Added "doveadm mailbox update" command + imap commands' output now includes timing spent on the "syncing" stage if it's larger than 0. + cassandra: Added metrics=<path> to connect setting to output internal statistics in JSON format every second to <path>. + doveadm mailbox delete: Added -e parameter to delete only empty mailboxes. Added --unsafe option to quickly delete a mailbox, bypassing lazy_expunge and quota plugins. + doveadm user & auth cache flush are now available via doveadm-server. + doveadm service stop <services> will stop specified services while leaving the rest of Dovecot running. + quota optimization: Avoid reading mail sizes for backends which don't need them (count, fs, dirsize) + Added mailbox { autoexpunge_max_mails=<n> } setting. + Added welcome plugin: http://wiki2.dovecot.org/Plugins/Welcome + fts: Added fts_autoindex_exclude setting. - v2.2.24's MIME parser was assert-crashing on mails having truncated MIME headers. - auth: With multiple userdbs the final success/failure result wasn't always correct. The last userdb's result was always used. - doveadm backup was sometimes deleting entire mailboxes unnecessarily. - doveadm: Command -parameters weren't being sent to doveadm-server. - If dovecot.index read failed e.g. because mmap() reached VSZ limit, an empty index could have been opened instead, corrupting the mailbox state. - imapc: Fixed EXPUNGE handling when imapc_features didn't have modseq. - lazy-expunge: Fixed a crash when copying failed. Various other fixes. - fts-lucene: Fixed crash on index rescan. - auth_stats=yes produced broken output - dict-ldap: Various fixes - dict-sql: NULL values crashed. Now they're treated as "not found".
Also ...
(21:13:24 <~/Tools/Dovecot/2.2/dovecot-2.2.25>) 0 $ gmake gmake all-recursive gmake[1]: Entering directory '/usr/home/wash/Tools/Dovecot/2.2/dovecot-2.2.25' Making all in . gmake[2]: Entering directory '/usr/home/wash/Tools/Dovecot/2.2/dovecot-2.2.25' /bin/bash ./update-version.sh . . gmake[2]: Leaving directory '/usr/home/wash/Tools/Dovecot/2.2/dovecot-2.2.25' Making all in src gmake[2]: Entering directory '/usr/home/wash/Tools/Dovecot/2.2/dovecot-2.2.25/src' Making all in lib-test gmake[3]: Entering directory '/usr/home/wash/Tools/Dovecot/2.2/dovecot-2.2.25/src/lib-test' gmake[3]: Nothing to be done for 'all'. gmake[3]: Leaving directory '/usr/home/wash/Tools/Dovecot/2.2/dovecot-2.2.25/src/lib-test' Making all in lib gmake[3]: Entering directory '/usr/home/wash/Tools/Dovecot/2.2/dovecot-2.2.25/src/lib' gmake all-am gmake[4]: Entering directory '/usr/home/wash/Tools/Dovecot/2.2/dovecot-2.2.25/src/lib' /bin/bash ../../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I../.. -std=gnu99 -g -O2 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime -Wstrict-aliasing=2 -I/usr/local/include -MT guid.lo -MD -MP -MF .deps/guid.Tpo -c -o guid.lo guid.c libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../.. -std=gnu99 -g -O2 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime -Wstrict-aliasing=2 -I/usr/local/include -MT guid.lo -MD -MP -MF .deps/guid.Tpo -c guid.c -fPIC -DPIC -o .libs/guid.o In file included from guid.c:6: sha1.h:80: error: static or type qualifiers in abstract declarator Makefile:1118: recipe for target 'guid.lo' failed gmake[4]: *** [guid.lo] Error 1 gmake[4]: Leaving directory '/usr/home/wash/Tools/Dovecot/2.2/dovecot-2.2.25/src/lib' Makefile:840: recipe for target 'all' failed gmake[3]: *** [all] Error 2 gmake[3]: Leaving directory '/usr/home/wash/Tools/Dovecot/2.2/dovecot-2.2.25/src/lib' Makefile:490: recipe for target 'all-recursive' failed gmake[2]: *** [all-recursive] Error 1 gmake[2]: Leaving directory '/usr/home/wash/Tools/Dovecot/2.2/dovecot-2.2.25/src' Makefile:618: recipe for target 'all-recursive' failed gmake[1]: *** [all-recursive] Error 1 gmake[1]: Leaving directory '/usr/home/wash/Tools/Dovecot/2.2/dovecot-2.2.25' Makefile:462: recipe for target 'all' failed gmake: *** [all] Error 2
(21:13:26 <~/Tools/Dovecot/2.2/dovecot-2.2.25>) 0 $ uname -a FreeBSD gw.kictanet.or.ke 8.4-STABLE FreeBSD 8.4-STABLE #3: Sun May 17 14:55:55 EAT 2015 root@gw.kictanet.or.ke:/usr/obj/usr/src/sys/GW i386 (21:13:40 <~/Tools/Dovecot/2.2/dovecot-2.2.25>) 0 $
-- Best regards, Odhiambo WASHINGTON, Nairobi,KE +254 7 3200 0004/+254 7 2274 3223 "Oh, the cruft."
Am 01.07.2016 um 20:10 schrieb Odhiambo Washington:
(21:13:26 <~/Tools/Dovecot/2.2/dovecot-2.2.25>) 0 $ uname -a FreeBSD gw.kictanet.or.ke 8.4-STABLE FreeBSD 8.4-STABLE #3: Sun May 17 14:55:55 EAT 2015 root@gw.kictanet.or.ke:/usr/obj/usr/src/sys/GW i386 (21:13:40 <~/Tools/Dovecot/2.2/dovecot-2.2.25>) 0 $
FreeBSD 8.4 is not supported anymore, you should upgrade at least to 9.3 better 10.3.
Gruß Matthias
--
"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." -- Rich Cook
participants (6)
-
Aki Tuomi
-
Dave
-
Juan C. Blanco
-
Matthias Fechner
-
Odhiambo Washington
-
Timo Sirainen