This is the Debian GNU/Linux prepackaged version of the static EXT2
file system consistency checker (e2fsck.static).  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-2006 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, are protected by the GNU
Public License.

However, I request that if the version string in the file version.h
contains the string "pre-", or "WIP" that this version of e2fsprogs be
distributed in source form only.  Please feel free to give a copy of
the e2fsck binary to help a friend recover his or her filesystem, as
the need arises.  However, "pre" or "WIP" indicates that this release
is under development, and available for ALPHA testing.  So for your
protection as much as mine, I'd prefer that it not appear in a some
distribution --- especially not a CD-ROM distribution!

The most recent officially distributed version can be found at
http://e2fsprogs.sourceforge.net.  If you need to make a distribution,
that's the one you should use.  If there is some reason why you'd like
a more recent version that is still in ALPHA testing for your
distribution, please contact me (tytso@mit.edu), and we will very
likely be able to work out something that will work for all concerned.
The release schedules for this package are flexible, if you give me
enough lead time.

					Theodore Ts'o
					15-Mar-2003

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

