Author: Nicolas Devillard <ndevilla@free.fr>
Many thanks to the many people who contributed ideas, code, suggestions,
corrections, enhancements.