This is the Debian GNU/Linux prepackaged version of the EXT2 file
system utilities (e2fsck, mke2fs, etc.).  The EXT2 utilities were
written by Theodore Ts'o <tytso@mit.edu> and Remy Card <card@masi.ibp.fr>.

Sources were obtained from http://sourceforge.net/projects/e2fsprogs

Packaging is Copyright (c) 2003-2007 Theodore Ts'o <tytso@mit.edu>
             Copyright (c) 1997-2003 Yann Dirson <dirson@debian.org>
	     Copyright (c) 2001 Alcove <http://www.alcove.com/>
	     Copyright (c) 1997 Klee Dienes
	     Copyright (c) 1995-1996 Michael Nonweiler <mrn20@cam.ac.uk>

Upstream Author: Theodore Ts'o <tytso@mit.edu>

Copyright notice:

This package, the EXT2 filesystem utilities, is protected by the GNU
Public License.
	Copyright (c) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by Theodore Ts'o

On Debian GNU systems, the complete text of the GNU General
Public License can be found in `/usr/share/common-licenses/GPL'.

