/*
 * This software copyright 1997 Joshua M. Yelon.
 * Debian Maintainer and new Features:
 *   copyright 1999 Bernd Eckenfels, Germany, ecki@debian.org 
 *   (see debian/changelog)
 *   copyright 2008-2009 Michael Meskes, meskes@debian.org
 *
 * Distribution subject to the terms of the GPL.
 *
 */
