Many files:
  Checkin of e2fsprogs 1.02.

diff --git a/ChangeLog b/ChangeLog
index 18d4138..14ef1fb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Wed Jan 31 11:06:08 1996    <tytso@rsts-11.mit.edu>
+
+	* Release of E2fsprogs version 1.02
+
 Thu Oct 26 11:59:44 1995    <tytso@rsts-11.mit.edu>
 
 	* configure.in (LDFALG_STATIC): Add temporary kludge for
diff --git a/MCONFIG.in b/MCONFIG.in
index 1d02cd2..c3c8f7a 100644
--- a/MCONFIG.in
+++ b/MCONFIG.in
@@ -25,9 +25,11 @@
 CC = @CC@
 DEFS = @DEFS@
 LIBS = @LIBS@
-CFLAGS = $(CPPFLAGS) $(DEFS) $(WFLAGS) @CFLAGS@ $(XTRA_CFLAGS) \
+CFLAGS = @CFLAGS@
+ALL_CFLAGS = $(CPPFLAGS) $(DEFS) $(WFLAGS) $(CFLAGS) $(XTRA_CFLAGS) \
 	-I$(top_builddir)/lib -I$(top_srcdir)/lib $(LINUX_INCLUDE) 
 LDFLAGS = @LDFLAGS@
+ALL_LDFLAGS = $(LDFLAGS)
 RM = @RM@
 LN = @LN@
 MV = @MV@
@@ -93,7 +95,7 @@
 
 .depend: Makefile $(SRCS) $(top_srcdir)/depfix.sed
 	if test -n "$(SRCS)" ; then \
-		$(CC) -M $(CFLAGS) $(SRCS) | \
+		$(CC) -M $(ALL_CFLAGS) $(SRCS) | \
 			sed -f $(top_srcdir)/depfix.sed | \
 			sed -e 's; $(srcdir)/; $$(srcdir)/;g' | \
 			sed -e 's; $(top_srcdir)/; $$(top_srcdir)/;g' | \
diff --git a/Makefile.in b/Makefile.in
index 7aaa85e..15fd1ae 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -60,6 +60,16 @@
 check:
 	(cd tests; make check)
 
+distribution_tar_file:
+	rm -rf /tmp/dest
+	make DESTDIR=/tmp/dest install
+	cd ..
+	cp -r $(srcdir)/README $(srcdir)/install-utils /tmp/dest
+	cp $(srcdir)/INSTALL.@BINARY_TYPE@ /tmp/dest/INSTALL
+	(cd /tmp/dest; tar cf - . ) | gzip -9 \
+		> e2fsprogs-@E2FSPROGS_VERSION@-@BINARY_TYPE@.tar.gz
+
+
 Makefile: config.status $(srcdir)/Makefile.in
 	CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status
 
diff --git a/README b/README
index 428a874..3c47df1 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-	This is the new version (1.01) of the second extended file system
+	This is the new version (1.02) of the second extended file system
 management programs.  
 
 	See the file INSTALL for installation instructions.  This is
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
new file mode 100644
index 0000000..e1da8cf
--- /dev/null
+++ b/RELEASE-NOTES
@@ -0,0 +1,25 @@
+
+E2fsprogs 1.02 (January 16, 1996)
+=================================
+
+Fix to allow e2fsprogs to be compiled on recent 1.3 (pl45+) kernels.
+
+Change e2fsck to print statistics of how many non-contiguous files are
+on the system.  Note that a file which is larger than 8k blocks, it is
+guaranteed to be non-contiguous.
+
+In mke2fs, print a warning message if a user tries to format a whole
+disk (/dev/hda versus /dev/hda1).  If a user really wants to format a
+whole disk, the -F (force) option forces mke2fs to format a whole disk
+as a filesytem.
+
+Fix a bug in fsck where in some cases it might start checking
+partitions in the next pass before it finishes checking partitions in
+the current pass.  This still won't cause two partitions on the same
+disk will be checked, so it's rarely a problem in real life.
+
+Patch lsattr so that it won't hang when checking a named pipe.
+
+Minor compilation fixes:
+	* Fix the order of libraries that were linked in debugfs.
+	* Allow the sources to be compiled with -ansi turned on.
diff --git a/configure b/configure
index 92b515d..3a9d37a 100644
--- a/configure
+++ b/configure
@@ -12,6 +12,14 @@
 ac_default_prefix=/usr/local
 # Any additions from configure.in:
 ac_help="$ac_help
+  --with-cc=COMPILER      select compiler to use"
+ac_help="$ac_help
+  --with-linker=LINKER    select linker to use"
+ac_help="$ac_help
+  --with-ccopts=CCOPTS    select compiler command line options"
+ac_help="$ac_help
+  --with-ldopts=LDOPTS    select linker command line options"
+ac_help="$ac_help
   --enable-dll-shlibs	select DLL libraries"
 ac_help="$ac_help
   --enable-elf-shlibs	select ELF shared libraries"
@@ -412,6 +420,83 @@
 
 MCONFIG=./MCONFIG
 
+BINARY_TYPE=bin
+E2FSPROGS_VERSION=`grep E2FSPROGS_VERSION ${srcdir}/version.h  \
+	| awk '{print $3}' | tr \" " " | awk '{print $1}'`
+DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
+	| tr \" " "`
+MONTH=`echo $DATE | awk -F- '{print $2}'`
+YEAR=`echo $DATE | awk -F- '{print $3}'`
+
+if expr $YEAR ">" 90 >/dev/null ; then
+	E2FSPROGS_YEAR=19$YEAR
+else
+	E2FSPROGS_YEAR=20$YEAR
+fi
+
+case $MONTH in
+Jan)	E2FSPROGS_MONTH="January" ;;
+Feb)	E2FSPROGS_MONTH="February" ;;
+Mar)	E2FSPROGS_MONTH="March" ;;
+Apr)	E2FSPROGS_MONTH="April" ;;
+May)	E2FSPROGS_MONTH="May" ;;
+Jun)	E2FSPROGS_MONTH="June" ;;
+Jul)	E2FSPROGS_MONTH="July" ;;
+Aug)	E2FSPROGS_MONTH="August" ;;
+Sep)	E2FSPROGS_MONTH="September" ;;
+Oct)	E2FSPROGS_MONTH="October" ;;
+Nov)	E2FSPROGS_MONTH="November" ;;
+Dec)	E2FSPROGS_MONTH="December" ;;
+*)	echo "Unknown month $MONTH??" ;;
+esac
+
+unset DATE MONTH YEAR
+echo "Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION"
+echo "Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}"
+
+
+
+# Check whether --with-cc or --without-cc was given.
+withval="$with_cc"
+if test -n "$withval"; then
+  echo "$ac_t""CC=$withval" 1>&6
+CC=$withval
+else
+  if test -z "$CC" ; then CC=cc; fi
+echo "$ac_t""CC defaults to $CC" 1>&6
+fi
+export CC
+
+# Check whether --with-linker or --without-linker was given.
+withval="$with_linker"
+if test -n "$withval"; then
+  echo "$ac_t""LD=$withval" 1>&6
+LD=$withval
+else
+  if test -z "$LD" ; then LD=$CC; fi
+echo "$ac_t""LD defaults to $LD" 1>&6
+fi
+export LD
+
+# Check whether --with-ccopts or --without-ccopts was given.
+withval="$with_ccopts"
+if test -n "$withval"; then
+  echo "$ac_t""CCOPTS is $withval" 1>&6
+CCOPTS=$withval
+CFLAGS="$CFLAGS $withval"
+else
+  CCOPTS=
+fi
+
+# Check whether --with-ldopts or --without-ldopts was given.
+withval="$with_ldopts"
+if test -n "$withval"; then
+  echo "$ac_t""LDFLAGS is $withval" 1>&6
+LDFLAGS=$withval
+else
+  LDFLAGS=
+fi
+
 # Check whether --enable-dll-shlibs or --disable-dll-shlibs was given.
 enableval="$enable_dll_shlibs"
 if test -n "$enableval"; then
@@ -423,6 +508,7 @@
 else
 	DLL_CMT=
 	MAKEFILE_DLL=$srcdir/lib/Makefile.dll-lib
+	BINARY_TYPE=dllbin
 	echo "Enabling DLL shared libraries"
 fi
 
@@ -446,6 +532,7 @@
 else
 	ELF_CMT=
 	MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib
+	BINARY_TYPE=elfbin
 	echo "Enabling ELF shared libraries"
 fi
 
@@ -548,6 +635,7 @@
 
 MAKEFILE_LIBRARY=$srcdir/lib/Makefile.library
 
+
 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
 set dummy ${MAKE-make}; ac_make=$2
 if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
@@ -1182,7 +1270,7 @@
   ac_cv_c_cross=yes
 else
 cat > conftest.$ac_ext <<EOF
-#line 1186 "configure"
+#line 1274 "configure"
 #include "confdefs.h"
 main(){return(0);}
 EOF
@@ -1213,7 +1301,7 @@
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 1217 "configure"
+#line 1305 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
@@ -1227,7 +1315,7 @@
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 1231 "configure"
+#line 1319 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
@@ -1252,7 +1340,7 @@
 fi
 echo "$ac_t""$CPP" 1>&6
 
-for ac_hdr in stdlib.h unistd.h stdarg.h errno.h mntent.h dirent.h getopt.h linux/fd.h sys/disklabel.h
+for ac_hdr in stdlib.h unistd.h stdarg.h errno.h mntent.h dirent.h getopt.h linux/fd.h linux/major.h sys/disklabel.h
 do
 ac_safe=`echo "$ac_hdr" | tr './\055' '___'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
@@ -1260,7 +1348,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1264 "configure"
+#line 1352 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
@@ -1293,7 +1381,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1297 "configure"
+#line 1385 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char vprintf(); below.  */
@@ -1341,7 +1429,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1345 "configure"
+#line 1433 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _doprnt(); below.  */
@@ -1390,7 +1478,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1394 "configure"
+#line 1482 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <dirent.h>
@@ -1432,7 +1520,7 @@
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
 cat > conftest.$ac_ext <<EOF
-#line 1436 "configure"
+#line 1524 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -1466,7 +1554,7 @@
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
 cat > conftest.$ac_ext <<EOF
-#line 1470 "configure"
+#line 1558 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -1500,7 +1588,7 @@
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
 cat > conftest.$ac_ext <<EOF
-#line 1504 "configure"
+#line 1592 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -1537,7 +1625,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1541 "configure"
+#line 1629 "configure"
 #include "confdefs.h"
 #include <sys/stat.h>
 int main() { return 0; }
@@ -1570,7 +1658,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1574 "configure"
+#line 1662 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -1620,7 +1708,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1624 "configure"
+#line 1712 "configure"
 #include "confdefs.h"
 #include <linux/fs.h>
 EOF
@@ -1664,7 +1752,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1668 "configure"
+#line 1756 "configure"
 #include "confdefs.h"
 #include <unistd.h>
 EOF
@@ -1691,7 +1779,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1695 "configure"
+#line 1783 "configure"
 #include "confdefs.h"
 #include <linux/ext2_fs.h>
 int main() { return 0; }
@@ -1722,7 +1810,7 @@
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1726 "configure"
+#line 1814 "configure"
 #include "confdefs.h"
 #include <linux/ext2_fs.h>
 #include <sys/ioctl.h>
@@ -1759,7 +1847,7 @@
 ;;
 esac
 
-LDFALG_STATIC=
+LDFLAG_STATIC=
 case "$host_os" in
 linux*)
 	LDFLAG_STATIC=-static
@@ -1888,7 +1976,10 @@
 trap 'rm -fr `echo "MCONFIG include/linux/types.h Makefile lib/et/Makefile 
 	lib/et/compile_et.sh lib/ss/Makefile lib/ss/mk_cmds.sh 
 	lib/ext2fs/Makefile lib/e2p/Makefile misc/Makefile 
-	e2fsck/Makefile debugfs/Makefile tests/Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+	e2fsck/Makefile debugfs/Makefile tests/Makefile lib/ext2fs/ext2_err.et 
+	debugfs/debugfs.8 e2fsck/e2fsck.8 misc/tune2fs.8 misc/lsattr.1
+	misc/chattr.1 misc/badblocks.8 misc/dumpe2fs.8 misc/mke2fs.8
+	misc/fsck.8 misc/mklost+found.8" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
 
 # Protect against being on the right side of a sed subst in config.status. 
 sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\\\&%]/\\\\&/g; 
@@ -1906,6 +1997,12 @@
 s%@program_transform_name@%$program_transform_name%g
 /@MCONFIG@/r $MCONFIG
 s%@MCONFIG@%%g
+s%@E2FSPROGS_YEAR@%$E2FSPROGS_YEAR%g
+s%@E2FSPROGS_MONTH@%$E2FSPROGS_MONTH%g
+s%@E2FSPROGS_VERSION@%$E2FSPROGS_VERSION%g
+s%@CC@%$CC%g
+s%@LD@%$LD%g
+s%@CCOPTS@%$CCOPTS%g
 s%@DLL_CMT@%$DLL_CMT%g
 /@MAKEFILE_DLL@/r $MAKEFILE_DLL
 s%@MAKEFILE_DLL@%%g
@@ -1924,6 +2021,7 @@
 s%@W@%$W%g
 /@MAKEFILE_LIBRARY@/r $MAKEFILE_LIBRARY
 s%@MAKEFILE_LIBRARY@%%g
+s%@BINARY_TYPE@%$BINARY_TYPE%g
 s%@SET_MAKE@%$SET_MAKE%g
 s%@LN@%$LN%g
 s%@MV@%$MV%g
@@ -1945,7 +2043,6 @@
 s%@AR@%$AR%g
 s%@RANLIB@%$RANLIB%g
 s%@STRIP@%$STRIP%g
-s%@CC@%$CC%g
 s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
 s%@INSTALL_DATA@%$INSTALL_DATA%g
 s%@CPP@%$CPP%g
@@ -1967,7 +2064,10 @@
 CONFIG_FILES=\${CONFIG_FILES-"MCONFIG include/linux/types.h Makefile lib/et/Makefile 
 	lib/et/compile_et.sh lib/ss/Makefile lib/ss/mk_cmds.sh 
 	lib/ext2fs/Makefile lib/e2p/Makefile misc/Makefile 
-	e2fsck/Makefile debugfs/Makefile tests/Makefile"}
+	e2fsck/Makefile debugfs/Makefile tests/Makefile lib/ext2fs/ext2_err.et 
+	debugfs/debugfs.8 e2fsck/e2fsck.8 misc/tune2fs.8 misc/lsattr.1
+	misc/chattr.1 misc/badblocks.8 misc/dumpe2fs.8 misc/mke2fs.8
+	misc/fsck.8 misc/mklost+found.8"}
 EOF
 cat >> $CONFIG_STATUS <<\EOF
 for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
diff --git a/configure.in b/configure.in
index 5349abc..43d149d 100644
--- a/configure.in
+++ b/configure.in
@@ -1,6 +1,86 @@
 AC_INIT(version.h)
 MCONFIG=./MCONFIG
 AC_SUBST_FILE(MCONFIG)
+BINARY_TYPE=bin
+dnl
+dnl This is to figure out the version number and the date....
+dnl
+E2FSPROGS_VERSION=`grep E2FSPROGS_VERSION ${srcdir}/version.h  \
+	| awk '{print $3}' | tr \" " " | awk '{print $1}'`
+DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
+	| tr \" " "`
+MONTH=`echo $DATE | awk -F- '{print $2}'`
+YEAR=`echo $DATE | awk -F- '{print $3}'`
+
+if expr $YEAR ">" 90 >/dev/null ; then
+	E2FSPROGS_YEAR=19$YEAR
+else
+	E2FSPROGS_YEAR=20$YEAR
+fi
+
+case $MONTH in
+Jan)	E2FSPROGS_MONTH="January" ;;
+Feb)	E2FSPROGS_MONTH="February" ;;
+Mar)	E2FSPROGS_MONTH="March" ;;
+Apr)	E2FSPROGS_MONTH="April" ;;
+May)	E2FSPROGS_MONTH="May" ;;
+Jun)	E2FSPROGS_MONTH="June" ;;
+Jul)	E2FSPROGS_MONTH="July" ;;
+Aug)	E2FSPROGS_MONTH="August" ;;
+Sep)	E2FSPROGS_MONTH="September" ;;
+Oct)	E2FSPROGS_MONTH="October" ;;
+Nov)	E2FSPROGS_MONTH="November" ;;
+Dec)	E2FSPROGS_MONTH="December" ;;
+*)	echo "Unknown month $MONTH??" ;;
+esac
+
+unset DATE MONTH YEAR
+echo "Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION"
+echo "Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}"
+AC_SUBST(E2FSPROGS_YEAR)
+AC_SUBST(E2FSPROGS_MONTH)
+AC_SUBST(E2FSPROGS_VERSION)
+dnl
+dnl set $(CC) from --with-cc=value
+dnl
+AC_ARG_WITH([cc],
+[  --with-cc=COMPILER      select compiler to use],
+AC_MSG_RESULT(CC=$withval)
+CC=$withval,
+if test -z "$CC" ; then CC=cc; fi
+[AC_MSG_RESULT(CC defaults to $CC)])dnl
+export CC
+AC_SUBST([CC])
+dnl
+dnl set $(LD) from --with-linker=value
+dnl
+AC_ARG_WITH([linker],
+[  --with-linker=LINKER    select linker to use],
+AC_MSG_RESULT(LD=$withval)
+LD=$withval,
+if test -z "$LD" ; then LD=$CC; fi
+[AC_MSG_RESULT(LD defaults to $LD)])dnl
+export LD
+AC_SUBST([LD])
+dnl
+dnl set $(CCOPTS) from --with-ccopts=value
+dnl
+AC_ARG_WITH([ccopts],
+[  --with-ccopts=CCOPTS    select compiler command line options],
+AC_MSG_RESULT(CCOPTS is $withval)
+CCOPTS=$withval
+CFLAGS="$CFLAGS $withval",
+CCOPTS=)dnl
+AC_SUBST(CCOPTS)
+dnl
+dnl set $(LDFLAGS) from --with-ldopts=value
+dnl
+AC_ARG_WITH([ldopts],
+[  --with-ldopts=LDOPTS    select linker command line options],
+AC_MSG_RESULT(LDFLAGS is $withval)
+LDFLAGS=$withval,
+LDFLAGS=)dnl
+AC_SUBST(LDFLAGS)
 dnl
 dnl handle --enable-dll-shlibs
 dnl
@@ -14,6 +94,7 @@
 else
 	DLL_CMT=
 	MAKEFILE_DLL=$srcdir/lib/Makefile.dll-lib
+	BINARY_TYPE=dllbin
 	echo "Enabling DLL shared libraries"
 fi
 ,
@@ -36,6 +117,7 @@
 else
 	ELF_CMT=
 	MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib
+	BINARY_TYPE=elfbin
 	echo "Enabling ELF shared libraries"
 fi
 ,
@@ -136,6 +218,7 @@
 dnl
 dnl End of configuration options
 dnl
+AC_SUBST(BINARY_TYPE)
 AC_PROG_MAKE_SET
 AC_PATH_PROG(LN, ln, ln)
 AC_PATH_PROG(MV, mv, mv)
@@ -150,7 +233,7 @@
 AC_PROG_CC
 AC_PROG_INSTALL
 AC_C_CROSS
-AC_CHECK_HEADERS(stdlib.h unistd.h stdarg.h errno.h mntent.h dirent.h getopt.h linux/fd.h sys/disklabel.h)
+AC_CHECK_HEADERS(stdlib.h unistd.h stdarg.h errno.h mntent.h dirent.h getopt.h linux/fd.h linux/major.h sys/disklabel.h)
 AC_FUNC_VPRINTF
 dnl
 dnl See if struct dirent has a d_namlen field (like bsd systems), implying
@@ -276,7 +359,7 @@
 dnl XXX for now, assume that only Linux systems support -static
 dnl
 AC_REQUIRE([AC_CANONICAL_HOST])
-LDFALG_STATIC=
+LDFLAG_STATIC=
 case "$host_os" in
 linux*)
 	LDFLAG_STATIC=-static
@@ -319,4 +402,7 @@
 AC_OUTPUT(MCONFIG include/linux/types.h Makefile lib/et/Makefile 
 	lib/et/compile_et.sh lib/ss/Makefile lib/ss/mk_cmds.sh 
 	lib/ext2fs/Makefile lib/e2p/Makefile misc/Makefile 
-	e2fsck/Makefile debugfs/Makefile tests/Makefile)
+	e2fsck/Makefile debugfs/Makefile tests/Makefile lib/ext2fs/ext2_err.et 
+	debugfs/debugfs.8 e2fsck/e2fsck.8 misc/tune2fs.8 misc/lsattr.1
+	misc/chattr.1 misc/badblocks.8 misc/dumpe2fs.8 misc/mke2fs.8
+	misc/fsck.8 misc/mklost+found.8)
diff --git a/debugfs/ChangeLog b/debugfs/ChangeLog
index 74df53f..aa8f57d 100644
--- a/debugfs/ChangeLog
+++ b/debugfs/ChangeLog
@@ -1,3 +1,12 @@
+Wed Jan 31 11:06:08 1996    <tytso@rsts-11.mit.edu>
+
+	* Release of E2fsprogs version 1.02
+
+Fri Dec  1 22:42:31 1995    <tytso@rsts-11.mit.edu>
+
+	* Makefile.in (LIBS): Rearrange the order of the libraries to be
+		linked, so that -lext2fs is before -lcom_err.
+
 Thu Oct 26 12:05:06 1995    <tytso@rsts-11.mit.edu>
 
 	* Makefile.in (install): Strip programs when they are installed.
diff --git a/debugfs/Makefile.in b/debugfs/Makefile.in
index 36c8ab7..7d425f8 100644
--- a/debugfs/Makefile.in
+++ b/debugfs/Makefile.in
@@ -21,16 +21,16 @@
 	$(srcdir)/ncheck.c $(srcdir)/icheck.c $(srcdir)/lsdel.c \
 	$(srcdir)/dump.c
 
-LIBS= -L../lib -lss -lcom_err -lext2fs
-DEPLIBS= ../lib/libss.a ../lib/libcom_err.a ../lib/libext2fs.a
+LIBS= -L../lib -lext2fs -lss -lcom_err 
+DEPLIBS= ../lib/libext2fs.a ../lib/libss.a ../lib/libcom_err.a 
 
 .c.o:
-	$(CC) -c $(CFLAGS) $< -o $@
+	$(CC) -c $(ALL_CFLAGS) $< -o $@
 
 all:: $(PROGS)
 
 debugfs: $(DEBUG_OBJS) $(DEPLIBS)
-	$(CC) $(LDFLAGS) -o debugfs $(DEBUG_OBJS) $(LIBS)
+	$(CC) $(ALL_LDFLAGS) -o debugfs $(DEBUG_OBJS) $(LIBS)
 
 debug_cmds.c debug_cmds.h: debug_cmds.ct
 	$(MK_CMDS) $(srcdir)/debug_cmds.ct
@@ -45,7 +45,7 @@
 		$(STRIP) $(DESTDIR)$(usbindir)/$$i; \
 	done
 	for i in $(MANPAGES); do \
-		$(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)$(man8dir)/$$i; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(man8dir)/$$i; \
 	done
 
 uninstall:
diff --git a/debugfs/debugfs.8 b/debugfs/debugfs.8.in
similarity index 96%
rename from debugfs/debugfs.8
rename to debugfs/debugfs.8.in
index 7107d09..28c83db 100644
--- a/debugfs/debugfs.8
+++ b/debugfs/debugfs.8.in
@@ -2,7 +2,7 @@
 .\" Copyright 1993, 1994, 1995 by Theodore Ts'o.  All Rights Reserved.
 .\" This file may be copied under the terms of the GNU Public License.
 .\" 
-.TH DEBUGFS 8 "October 1995" "Version 1.01"
+.TH DEBUGFS 8 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
 .SH NAME
 debugfs \- ext2 file system debugger
 .SH SYNOPSIS
diff --git a/e2fsck/ChangeLog b/e2fsck/ChangeLog
index c1d04c9..22969e5 100644
--- a/e2fsck/ChangeLog
+++ b/e2fsck/ChangeLog
@@ -1,3 +1,32 @@
+Wed Jan 31 11:06:08 1996    <tytso@rsts-11.mit.edu>
+
+	* Release of E2fsprogs version 1.02
+
+Wed Dec 15 21:24:26 1996    <tytso@rsts-11.mit.edu>
+
+	* pass1.c (process_block): Check to see if a file is "fragmented".
+		i.e., non-contiguous.  Note that any file which is larger
+		than the block group is guaranteed to be non-contiguous.
+		We may want to use a different hueristic for deciding
+		whether or not a file is "fragmented".
+
+	* e2fsck.c (show_stats): Print statistics of how many
+		non-contiguous files are on the system.
+
+Fri Dec 15 19:19:47 1995    <tytso@rsts-11.mit.edu>
+
+	* badblocks.c (read_bad_blocks_file, test_disk): Fold
+		functionality of test_disk() (which runs badblocks) into
+		read_bad_blocks_file(); test_disk() now calls
+		read_bad_blocks_file() with a NULL bad_blocks_file
+		argument.
+
+Mon Nov 20 18:30:10 1995    <tytso@rsts-11.mit.edu>
+
+	* e2fsck.c (check_mount): Use #if defined(__linux__) instead of
+		#if defined(linux).  The latter won't work if we're
+		compiling -ansi.
+
 Mon Oct 30 20:31:17 1995    <tytso@rsts-11.mit.edu>
 
 	* e2fsck.c (check_mount): For Linux systems, the check to see if
diff --git a/e2fsck/Makefile.in b/e2fsck/Makefile.in
index 328fc55..9ed236e 100644
--- a/e2fsck/Makefile.in
+++ b/e2fsck/Makefile.in
@@ -18,7 +18,7 @@
 DEPLIBS= ../lib/libss.a ../lib/libcom_err.a ../lib/libext2fs.a
 
 .c.o:
-	$(CC) -c $(CFLAGS) $< -o $@
+	$(CC) -c $(ALL_CFLAGS) $< -o $@
 
 #
 # Flags for using Checker
@@ -70,16 +70,16 @@
 all:: $(PROGS)
 
 e2fsck: $(OBJS)  $(DEPLIBS)
-	$(LD) $(LDFLAGS) $(LDFLAG_STATIC) -o e2fsck $(OBJS) $(LIBS) 
+	$(LD) $(ALL_LDFLAGS) $(LDFLAG_STATIC) -o e2fsck $(OBJS) $(LIBS) 
 
 extend: extend.o
-	$(LD) $(LDFLAGS) -o extend extend.o $(CHECKLIB)
+	$(LD) $(ALL_LDFLAGS) -o extend extend.o $(CHECKLIB)
 
 flushb: flushb.o
-	$(LD) $(LDFLAGS) -o flushb flushb.o $(CHECKLIB)
+	$(LD) $(ALL_LDFLAGS) -o flushb flushb.o $(CHECKLIB)
 
 iscan: iscan.o util.o
-	$(LD) $(LDFLAGS) -o iscan iscan.o util.o ehandler.o $(LIBS)
+	$(LD) $(ALL_LDFLAGS) -o iscan iscan.o util.o ehandler.o $(LIBS)
 
 
 installdirs:
@@ -93,8 +93,9 @@
 	done
 	$(LN) -f $(DESTDIR)$(sbindir)/e2fsck $(DESTDIR)$(sbindir)/fsck.ext2
 	for i in $(MANPAGES); do \
-		$(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)$(man8dir)/$$i; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(man8dir)/$$i; \
 	done
+
 uninstall:
 	$(RM) -f $(sbindir)/e2fsck
 	$(RM) -f $(sbindir)/flushb
diff --git a/e2fsck/badblocks.c b/e2fsck/badblocks.c
index f0613d9..c81baae 100644
--- a/e2fsck/badblocks.c
+++ b/e2fsck/badblocks.c
@@ -29,6 +29,7 @@
 	errcode_t	retval;
 	badblocks_list	bb_list = 0;
 	FILE		*f;
+	char		buf[1024];
 
 	read_bitmaps(fs);
 
@@ -44,7 +45,6 @@
 		fatal_error(0);
 	}
 	
-	
 	/*
 	 * If we're appending to the bad blocks inode, read in the
 	 * current bad blocks.
@@ -59,16 +59,33 @@
 	}
 	
 	/*
-	 * Now read in the bad blocks from the file.
+	 * Now read in the bad blocks from the file; if
+	 * bad_blocks_file is null, then try to run the badblocks
+	 * command.
 	 */
-	f = fopen(bad_blocks_file, "r");
-	if (!f) {
-		com_err("read_bad_blocks_file", errno,
-			"while trying to open %s", bad_blocks_file);
-		fatal_error(0);
+	if (bad_blocks_file) {
+		f = fopen(bad_blocks_file, "r");
+		if (!f) {
+			com_err("read_bad_blocks_file", errno,
+				"while trying to open %s", bad_blocks_file);
+			fatal_error(0);
+		}
+	} else {
+		sprintf(buf, "badblocks %s%s %d", preen ? "" : "-s ",
+			fs->device_name,
+			fs->super->s_blocks_count);
+		f = popen(buf, "r");
+		if (!f) {
+			com_err("read_bad_blocks_file", errno,
+				"while trying popen '%s'", buf);
+			fatal_error(0);
+		}
 	}
 	retval = ext2fs_read_bb_FILE(fs, f, &bb_list, invalid_block);
-	fclose (f);
+	if (bad_blocks_file) 
+		fclose(f);
+	else
+		pclose(f);
 	if (retval) {
 		com_err("ext2fs_read_bb_FILE", retval,
 			"while reading in list of bad blocks from file");
@@ -89,6 +106,11 @@
 	return;
 }
 
+void test_disk(ext2_filsys fs)
+{
+	read_bad_blocks_file(fs, 0, 1);
+}
+
 static int check_bb_inode_blocks(ext2_filsys fs, blk_t *block_nr, int blockcnt,
 				 void *private)
 {
@@ -108,58 +130,3 @@
 	return 0;
 }
 
-void test_disk(ext2_filsys fs)
-{
-	errcode_t	retval;
-	badblocks_list	bb_list = 0;
-	FILE		*f;
-	char		buf[1024];
-
-	read_bitmaps(fs);
-	
-	/*
-	 * Always read in the current list of bad blocks.
-	 */
-	retval = ext2fs_read_bb_inode(fs, &bb_list);
-	if (retval) {
-		com_err("ext2fs_read_bb_inode", retval,
-			"while reading the bad blocks inode");
-		fatal_error(0);
-	}
-	
-	/*
-	 * Now run the bad blocks program
-	 */
-	sprintf(buf, "badblocks %s%s %d", preen ? "" : "-s ",
-		fs->device_name,
-		fs->super->s_blocks_count);
-	if (verbose)
-		printf("Running command: %s\n", buf);
-	f = popen(buf, "r");
-	if (!f) {
-		com_err("popen", errno,
-			"while trying to run %s", buf);
-		fatal_error(0);
-	}
-	retval = ext2fs_read_bb_FILE(fs, f, &bb_list, invalid_block);
-	fclose (f);
-	if (retval) {
-		com_err("ext2fs_read_bb_FILE", retval,
-			"while processing list of bad blocks from program");
-		fatal_error(0);
-	}
-	
-	/*
-	 * Finally, update the bad blocks from the bad_block_map
-	 */
-	retval = ext2fs_update_bb_inode(fs, bb_list);
-	if (retval) {
-		com_err("ext2fs_update_bb_inode", retval,
-			"while updating bad block inode");
-		fatal_error(0);
-	}
-
-	badblocks_list_free(bb_list);
-	return;
-}
-
diff --git a/e2fsck/e2fsck.8 b/e2fsck/e2fsck.8.in
similarity index 92%
rename from e2fsck/e2fsck.8
rename to e2fsck/e2fsck.8.in
index 0febc3e..bfd20f3 100644
--- a/e2fsck/e2fsck.8
+++ b/e2fsck/e2fsck.8.in
@@ -2,13 +2,13 @@
 .\" Copyright 1993, 1994, 1995 by Theodore Ts'o.  All Rights Reserved.
 .\" This file may be copied under the terms of the GNU Public License.
 .\" 
-.TH E2FSCK 8 "October 1995" "Version 1.01"
+.TH E2FSCK 8 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
 .SH NAME
 e2fsck \- check a Linux second extended file system
 .SH SYNOPSIS
 .B e2fsck
 [
-.B \-panyrdfvtFV
+.B \-pacnyrdfvtFV
 ]
 [
 .B \-b
@@ -51,6 +51,13 @@
 try locating the superblock at a particular blocksize.  If the
 superblock is not found, e2fsck will terminate with a fatal error.
 .TP
+.I -c
+This option causes e2fsck to run the 
+.BR badblocks (8)
+program to find any blocks 
+which are bad on the filesystem, and then marks them as bad by adding them 
+to the bad block inode.
+.TP
 .I -d
 Print debugging output (useless unless you are debugging
 .B e2fsck
@@ -81,7 +88,8 @@
 questions.  Allows
 .B e2fsck
 to be used non-interactively.  (Note: if the 
-.I -l
+.IR -c ,
+.IR -l ,
 or
 .I -L
 options are specified in addition to the 
diff --git a/e2fsck/e2fsck.c b/e2fsck/e2fsck.c
index bc9510c..1c29e4c 100644
--- a/e2fsck/e2fsck.c
+++ b/e2fsck/e2fsck.c
@@ -103,13 +103,17 @@
 		       fs->super->s_free_blocks_count);
 	
 	if (!verbose) {
-		printf("%s: %d/%d files, %d/%d blocks\n", device_name,
-		       inodes_used, inodes, blocks_used, blocks);
+		printf("%s: %d/%d files (%3.1f%% non-contiguous), %d/%d blocks\n",
+		       device_name, inodes_used, inodes,
+		       100.00 * fs_fragmented / inodes_used,
+		       blocks_used, blocks);
 		return;
 	}
 	printf ("\n%8d inode%s used (%d%%)\n", inodes_used,
 		(inodes_used != 1) ? "s" : "",
 		100 * inodes_used / inodes);
+	printf ("%8d non-contiguous inodes (%3.1f%%)\n",
+		fs_fragmented, 100.00 * fs_fragmented / inodes_used);
 	printf ("         # of inodes with ind/dind/tind blocks: %d/%d/%d\n",
 		fs_ind_count, fs_dind_count, fs_tind_count);
 	printf ("%8d block%s used (%d%%)\n"
@@ -156,7 +160,7 @@
 	if (!(mount_flags & EXT2_MF_MOUNTED))
 		return;
 
-#if (defined(linux) && defined(HAVE_MNTENT_H))
+#if (defined(__linux__) && defined(HAVE_MNTENT_H))
 	/*
 	 * If the root is mounted read-only, then /etc/mtab is
 	 * probably not correct; so we won't issue a warning based on
diff --git a/e2fsck/e2fsck.h b/e2fsck/e2fsck.h
index debd56a..dea265d 100644
--- a/e2fsck/e2fsck.h
+++ b/e2fsck/e2fsck.h
@@ -138,6 +138,7 @@
 extern int fs_ind_count;
 extern int fs_dind_count;
 extern int fs_tind_count;
+extern int fs_fragmented;
 
 extern struct resource_track	global_rtrack;
 
diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c
index 17b0939..40955e1 100644
--- a/e2fsck/pass1.c
+++ b/e2fsck/pass1.c
@@ -59,6 +59,7 @@
 int fs_ind_count = 0;
 int fs_dind_count = 0;
 int fs_tind_count = 0;
+int fs_fragmented = 0;
 
 ext2fs_inode_bitmap inode_used_map = 0;	/* Inodes which are in use */
 ext2fs_inode_bitmap inode_bad_map = 0;	/* Inodes which are bad in some way */
@@ -92,11 +93,12 @@
 
 struct process_block_struct {
 	ino_t	ino;
-	int	is_dir:1, clear:1, suppress:1;
+	int	is_dir:1, clear:1, suppress:1, fragmented:1;
 	int	num_blocks;
 	int	last_block;
 	int	num_illegal_blocks;
 	int	fix;
+	blk_t	previous_block;
 	struct ext2_inode *inode;
 };
 
@@ -157,6 +159,7 @@
 	fs_ind_count = 0;
 	fs_dind_count = 0;
 	fs_tind_count = 0;
+	fs_fragmented = 0;
 }
 
 void pass1(ext2_filsys fs)
@@ -249,6 +252,7 @@
 			pb.num_blocks = pb.last_block = 0;
 			pb.num_illegal_blocks = 0;
 			pb.suppress = pb.clear = pb.is_dir = 0;
+			pb.fragmented = 0;
 			pb.fix = -1;
 			pb.inode = &inode;
 			retval = ext2fs_block_iterate(fs, ino, 0, block_buf,
@@ -593,6 +597,8 @@
 	pb.num_blocks = pb.last_block = 0;
 	pb.num_illegal_blocks = 0;
 	pb.suppress = pb.clear = 0;
+	pb.fragmented = 0;
+	pb.previous_block = 0;
 	pb.is_dir = LINUX_S_ISDIR(inode->i_mode);
 	pb.fix = -1;
 	pb.inode = inode;
@@ -603,6 +609,9 @@
 		com_err(program_name, retval,
 			"while calling ext2fs_block_iterate in check_blocks");
 
+	if (pb.fragmented && pb.num_blocks < fs->super->s_blocks_per_group)
+		fs_fragmented++;
+
 	if (pb.clear) {
 		e2fsck_read_inode(fs, ino, inode, "check_blocks");
 		if (retval) {
@@ -756,6 +765,18 @@
 	       blockcnt);
 #endif
 	
+	/*
+	 * Simplistic fragmentation check.  We merely require that the
+	 * file be contiguous.  (Which can never be true for really
+	 * big files that are greater than a block group.)
+	 */
+	if (p->previous_block) {
+		if (p->previous_block+1 != blk)
+			p->fragmented = 1;
+	}
+	p->previous_block = blk;
+	
+	
 	if (blk < fs->super->s_first_data_block ||
 	    blk >= fs->super->s_blocks_count ||
 	    ext2fs_test_block_bitmap(block_illegal_map, blk)) {
diff --git a/include/linux/ChangeLog b/include/linux/ChangeLog
index faa31c6..6506425 100644
--- a/include/linux/ChangeLog
+++ b/include/linux/ChangeLog
@@ -1,3 +1,7 @@
+Wed Jan 31 11:06:08 1996    <tytso@rsts-11.mit.edu>
+
+	* Release of E2fsprogs version 1.02
+
 Mon Sep  4 21:50:12 1995  Remy Card  <card@bbj>
 
 	* ext2_fs.h: Updated to latest version.
diff --git a/install-utils/ChangeLog b/install-utils/ChangeLog
index abeddf4..0f1e7a6 100644
--- a/install-utils/ChangeLog
+++ b/install-utils/ChangeLog
@@ -1,3 +1,7 @@
+Wed Jan 31 11:06:08 1996    <tytso@rsts-11.mit.edu>
+
+	* Release of E2fsprogs version 1.02
+
 Sat Mar 11 18:26:33 1995  Theodore Y. Ts'o  <tytso@localhost>
 
 	* compile_manpages: Include an exit 0 at the end because some
diff --git a/lib/ChangeLog b/lib/ChangeLog
index 84b8413..3f3e0b6 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,7 @@
+Wed Jan 31 11:06:08 1996    <tytso@rsts-11.mit.edu>
+
+	* Release of E2fsprogs version 1.02
+
 Mon Oct 30 21:11:47 1995    <tytso@rsts-11.mit.edu>
 
 	* Makefile.elf-lib: Changes to pass -soname to the linker, so that
diff --git a/lib/Makefile.dll-lib b/lib/Makefile.dll-lib
index 1a1f969..8bcf121 100644
--- a/lib/Makefile.dll-lib
+++ b/lib/Makefile.dll-lib
@@ -81,6 +81,7 @@
 install-shlibs install:: $(DLL_IMAGE).so.$(DLL_VERSION) installdirs
 	$(INSTALL_PROGRAM) $(DLL_IMAGE).so.$(DLL_VERSION) \
 		$(DESTDIR)$(DLL_INSTALL_DIR)/$(DLL_IMAGE).so.$(DLL_VERSION)
+	$(STRIP) $(DESTDIR)$(DLL_INSTALL_DIR)/$(DLL_IMAGE).so.$(DLL_VERSION)
 	-ldconfig
 
 install:: $(DLL_STUB).sa
diff --git a/lib/Makefile.elf-lib b/lib/Makefile.elf-lib
index bd2693c..93f1ace 100644
--- a/lib/Makefile.elf-lib
+++ b/lib/Makefile.elf-lib
@@ -5,7 +5,7 @@
 # In order to use this stub, the following makefile variables must be defined.
 # 
 # ELF_VERSION = 1.0
-# ELF_SONAME = 1
+# ELF_SO_VERSION = 1
 # ELF_IMAGE = libce
 # ELF_MYDIR = et
 # ELF_INSTALL_DIR = $(SHLIBDIR)
@@ -36,6 +36,10 @@
 
 install-shlibs install:: $(ELF_LIB) installdirs
 	$(INSTALL_PROGRAM) $(ELF_LIB) $(DESTDIR)$(ELF_INSTALL_DIR)/$(ELF_LIB)
+	$(STRIP) --strip-debug \
+		$(DESTDIR)$(DLL_INSTALL_DIR)/$(ELF_LIB)
+	$(LN) -sf $(ELF_LIB) $(DESTDIR)$(DLL_INSTALL_DIR)/$(ELF_SONAME)
+	$(LN) -sf $(ELF_SONAME) $(DESTDIR)$(DLL_INSTALL_DIR)/$(ELF_IMAGE).so
 	-ldconfig
 
 clean::
diff --git a/lib/e2p/ChangeLog b/lib/e2p/ChangeLog
index 631d8f6..05cac10 100644
--- a/lib/e2p/ChangeLog
+++ b/lib/e2p/ChangeLog
@@ -1,3 +1,16 @@
+Wed Jan 31 11:06:08 1996    <tytso@rsts-11.mit.edu>
+
+	* Release of E2fsprogs version 1.02
+
+Tue Jan  2 20:50:44 1996    <tytso@rsts-11.mit.edu>
+
+	* fgetflags.c (fgetflags): 
+	* fsetflags.c (fsetflags):
+	* fgetversion.c (fgetversion):
+	* fsetversion.c (fsetversion): Add the O_NONBLOCK flag to open
+		call, so that we don't hang trying to open things like
+		named pipes.
+
 Mon Oct 30 17:44:07 1995    <tytso@rsts-11.mit.edu>
 
 	* ls.c (list_super): Use the correct field (s_def_resgid) when
diff --git a/lib/e2p/Makefile.in b/lib/e2p/Makefile.in
index 1e68fe6..568c2ec 100644
--- a/lib/e2p/Makefile.in
+++ b/lib/e2p/Makefile.in
@@ -57,13 +57,13 @@
 @MAKEFILE_CHECKER@
 
 .c.o:
-	$(CC) $(CFLAGS) -c $< -o $@
-@PROFILE_CMT@	$(CC) $(CFLAGS) -pg -o profiled/$*.o -c $<
-@CHECKER_CMT@	$(CC) $(CFLAGS) -checker -g -o checker/$*.o -c $<
-@DLL_CMT@	(export JUMP_DIR=`pwd`/jump; $(CC) -B$(JUMP_PREFIX) $(CFLAGS) \
+	$(CC) $(ALL_CFLAGS) -c $< -o $@
+@PROFILE_CMT@	$(CC) $(ALL_CFLAGS) -pg -o profiled/$*.o -c $<
+@CHECKER_CMT@	$(CC) $(ALL_CFLAGS) -checker -g -o checker/$*.o -c $<
+@DLL_CMT@	(export JUMP_DIR=`pwd`/jump; $(CC) -B$(JUMP_PREFIX) $(ALL_CFLAGS) \
 @DLL_CMT@		-o jump/$*.o -c $<)
-@ELF_CMT@	$(CC) $(CFLAGS) -fPIC -o elfshared/$*.o -c $<
-@BSDLIB_CMT@	$(CC) $(CFLAGS) -fpic -o pic/$*.o -c $<
+@ELF_CMT@	$(CC) $(ALL_CFLAGS) -fPIC -o elfshared/$*.o -c $<
+@BSDLIB_CMT@	$(CC) $(ALL_CFLAGS) -fpic -o pic/$*.o -c $<
 
 installdirs::
 	$(top_srcdir)/mkinstalldirs $(DESTDIR)$(ulibdir)
diff --git a/lib/e2p/fgetflags.c b/lib/e2p/fgetflags.c
index 752da0b..099446d 100644
--- a/lib/e2p/fgetflags.c
+++ b/lib/e2p/fgetflags.c
@@ -59,7 +59,7 @@
 	int fd;
 	int r;
 
-	fd = open (name, O_RDONLY);
+	fd = open (name, O_RDONLY|O_NONBLOCK);
 	if (fd == -1)
 		return -1;
 	r = ioctl (fd, EXT2_IOC_GETFLAGS, flags);
diff --git a/lib/e2p/fgetversion.c b/lib/e2p/fgetversion.c
index 89e0713..ba4eec4 100644
--- a/lib/e2p/fgetversion.c
+++ b/lib/e2p/fgetversion.c
@@ -33,7 +33,7 @@
 	int fd;
 	int r;
 
-	fd = open (name, O_RDONLY);
+	fd = open (name, O_RDONLY|O_NONBLOCK);
 	if (fd == -1)
 		return - 1;
 	r = ioctl (fd, EXT2_IOC_GETVERSION, version);
diff --git a/lib/e2p/fsetflags.c b/lib/e2p/fsetflags.c
index a258443..06aabba 100644
--- a/lib/e2p/fsetflags.c
+++ b/lib/e2p/fsetflags.c
@@ -55,7 +55,7 @@
 	int fd;
 	int r;
 
-	fd = open (name, O_RDONLY);
+	fd = open (name, O_RDONLY|O_NONBLOCK);
 	if (fd == -1)
 		return -1;
 	r = ioctl (fd, EXT2_IOC_SETFLAGS, &flags);
diff --git a/lib/e2p/fsetversion.c b/lib/e2p/fsetversion.c
index afea365..1443fb5 100644
--- a/lib/e2p/fsetversion.c
+++ b/lib/e2p/fsetversion.c
@@ -33,7 +33,7 @@
 	int fd;
 	int r;
 
-	fd = open (name, O_RDONLY);
+	fd = open (name, O_RDONLY|O_NONBLOCK);
 	if (fd == -1)
 		return -1;
 	r = ioctl (fd, EXT2_IOC_SETVERSION, &version);
diff --git a/lib/et/ChangeLog b/lib/et/ChangeLog
index 9943632..de96335 100644
--- a/lib/et/ChangeLog
+++ b/lib/et/ChangeLog
@@ -1,3 +1,7 @@
+Wed Jan 31 11:06:08 1996    <tytso@rsts-11.mit.edu>
+
+	* Release of E2fsprogs version 1.02
+
 Mon Sep  4 21:44:47 1995  Remy Card  <card@bbj>
 
 	* Makefile.in: Added support for BSD shared libraries.
diff --git a/lib/et/Makefile.in b/lib/et/Makefile.in
index 44b091a..e3e52ba 100644
--- a/lib/et/Makefile.in
+++ b/lib/et/Makefile.in
@@ -45,13 +45,13 @@
 # what to build...
 #
 .c.o:
-	$(CC) $(CFLAGS) -c $< -o $@
-@PROFILE_CMT@	$(CC) $(CFLAGS) -pg -o profiled/$*.o -c $<
-@CHECKER_CMT@	$(CC) $(CFLAGS) -checker -g -o checker/$*.o -c $<
-@DLL_CMT@	(export JUMP_DIR=`pwd`/jump; $(CC) -B$(JUMP_PREFIX) $(CFLAGS) \
+	$(CC) $(ALL_CFLAGS) -c $< -o $@
+@PROFILE_CMT@	$(CC) $(ALL_CFLAGS) -pg -o profiled/$*.o -c $<
+@CHECKER_CMT@	$(CC) $(ALL_CFLAGS) -checker -g -o checker/$*.o -c $<
+@DLL_CMT@	(export JUMP_DIR=`pwd`/jump; $(CC) -B$(JUMP_PREFIX) $(ALL_CFLAGS) \
 @DLL_CMT@		-o jump/$*.o -c $<)
-@ELF_CMT@	$(CC) $(CFLAGS) -fPIC -o elfshared/$*.o -c $<
-@BSDLIB_CMT@	$(CC) $(CFLAGS) -fpic -o pic/$*.o -c $<
+@ELF_CMT@	$(CC) $(ALL_CFLAGS) -fPIC -o elfshared/$*.o -c $<
+@BSDLIB_CMT@	$(CC) $(ALL_CFLAGS) -fpic -o pic/$*.o -c $<
 
 @MAKEFILE_LIBRARY@
 @MAKEFILE_DLL@
diff --git a/lib/ext2fs/ChangeLog b/lib/ext2fs/ChangeLog
index 4dd44ed..ba77b93 100644
--- a/lib/ext2fs/ChangeLog
+++ b/lib/ext2fs/ChangeLog
@@ -1,3 +1,17 @@
+Wed Jan 31 11:06:08 1996    <tytso@rsts-11.mit.edu>
+
+	* Release of E2fsprogs version 1.02
+
+Sat Dec  9 09:57:50 1995    <tytso@rsts-11.mit.edu>
+
+	* rw_bitops.c (ext2fs_write_block_bitmap):
+	* bitops.c (ext2fs_test_bit, ext2fs_clear_bit, ext2fs_set_bit):
+	* bitops.h (ext2fs_test_bit, ext2fs_clear_bit, ext2fs_set_bit):
+		Rename {test,set,clear}_bit to ext2fs_{test,set,clear}_bit, 
+		to avoid conflicts with with kernel include files.  Also
+		rename ADDR and CONST_ADDR to EXT2FS_ADDR and
+		EXT2FS_CONST_ADDR. 
+
 Thu Oct 26 12:09:16 1995    <tytso@rsts-11.mit.edu>
 
 	* ext2_err.et: Updated message in EXT2_ET_BASE to say version 0.5c
diff --git a/lib/ext2fs/Makefile.in b/lib/ext2fs/Makefile.in
index fd8301c..c3311f8 100644
--- a/lib/ext2fs/Makefile.in
+++ b/lib/ext2fs/Makefile.in
@@ -102,20 +102,20 @@
 @MAKEFILE_CHECKER@
 
 .c.o:
-	$(CC) $(CFLAGS) -c $< -o $@
-@PROFILE_CMT@	$(CC) $(CFLAGS) -pg -o profiled/$*.o -c $<
-@CHECKER_CMT@	$(CC) $(CFLAGS) -checker -g -o checker/$*.o -c $<
-@DLL_CMT@	(export JUMP_DIR=`pwd`/jump; $(CC) -B$(JUMP_PREFIX) $(CFLAGS) \
+	$(CC) $(ALL_CFLAGS) -c $< -o $@
+@PROFILE_CMT@	$(CC) $(ALL_CFLAGS) -pg -o profiled/$*.o -c $<
+@CHECKER_CMT@	$(CC) $(ALL_CFLAGS) -checker -g -o checker/$*.o -c $<
+@DLL_CMT@	(export JUMP_DIR=`pwd`/jump; $(CC) -B$(JUMP_PREFIX) $(ALL_CFLAGS) \
 @DLL_CMT@		-o jump/$*.o -c $<)
-@ELF_CMT@	$(CC) $(CFLAGS) -fPIC -o elfshared/$*.o -c $<
-@BSDLIB_CMT@	$(CC) $(CFLAGS) -fpic -o pic/$*.o -c $<
+@ELF_CMT@	$(CC) $(ALL_CFLAGS) -fPIC -o elfshared/$*.o -c $<
+@BSDLIB_CMT@	$(CC) $(ALL_CFLAGS) -fpic -o pic/$*.o -c $<
 
 COMPILE_ET=../et/compile_et
 
 DISTFILES= Makefile *.c *.h image
 
-ext2_err.c ext2_err.h: $(srcdir)/ext2_err.et
-	$(COMPILE_ET) $(srcdir)/ext2_err.et
+ext2_err.c ext2_err.h: ext2_err.et
+	$(COMPILE_ET) ext2_err.et
 
 installdirs::
 	$(top_srcdir)/mkinstalldirs $(DESTDIR)$(ulibdir) \
diff --git a/lib/ext2fs/bitops.c b/lib/ext2fs/bitops.c
index 0dc8967..da69e3b 100644
--- a/lib/ext2fs/bitops.c
+++ b/lib/ext2fs/bitops.c
@@ -27,7 +27,7 @@
  * systems, as well as non-32 bit systems.
  */
 
-int set_bit(int nr,void * addr)
+int ext2fs_set_bit(int nr,void * addr)
 {
 	int		mask, retval;
 	unsigned char	*ADDR = (unsigned char *) addr;
@@ -39,7 +39,7 @@
 	return retval;
 }
 
-int clear_bit(int nr, void * addr)
+int ext2fs_clear_bit(int nr, void * addr)
 {
 	int		mask, retval;
 	unsigned char	*ADDR = (unsigned char *) addr;
@@ -51,7 +51,7 @@
 	return retval;
 }
 
-int test_bit(int nr, const void * addr)
+int ext2fs_test_bit(int nr, const void * addr)
 {
 	int			mask;
 	const unsigned char	*ADDR = (const unsigned char *) addr;
diff --git a/lib/ext2fs/bitops.h b/lib/ext2fs/bitops.h
index 4b0fa39..1703872 100644
--- a/lib/ext2fs/bitops.h
+++ b/lib/ext2fs/bitops.h
@@ -9,9 +9,9 @@
  */
 
 
-extern int set_bit(int nr,void * addr);
-extern int clear_bit(int nr, void * addr);
-extern int test_bit(int nr, const void * addr);
+extern int ext2fs_set_bit(int nr,void * addr);
+extern int ext2fs_clear_bit(int nr, void * addr);
+extern int ext2fs_test_bit(int nr, const void * addr);
 extern __u16 ext2fs_swab16(__u16 val);
 extern __u32 ext2fs_swab32(__u32 val);
 
@@ -95,40 +95,40 @@
  * Some hacks to defeat gcc over-optimizations..
  */
 struct __dummy_h { unsigned long a[100]; };
-#define ADDR (*(struct __dummy_h *) addr)
-#define CONST_ADDR (*(const struct __dummy_h *) addr)	
+#define EXT2FS_ADDR (*(struct __dummy_h *) addr)
+#define EXT2FS_CONST_ADDR (*(const struct __dummy_h *) addr)	
 
-_INLINE_ int set_bit(int nr, void * addr)
+_INLINE_ int ext2fs_set_bit(int nr, void * addr)
 {
 	int oldbit;
 
 	__asm__ __volatile__("btsl %2,%1\n\tsbbl %0,%0"
-		:"=r" (oldbit),"=m" (ADDR)
+		:"=r" (oldbit),"=m" (EXT2FS_ADDR)
 		:"r" (nr));
 	return oldbit;
 }
 
-_INLINE_ int clear_bit(int nr, void * addr)
+_INLINE_ int ext2fs_clear_bit(int nr, void * addr)
 {
 	int oldbit;
 
 	__asm__ __volatile__("btrl %2,%1\n\tsbbl %0,%0"
-		:"=r" (oldbit),"=m" (ADDR)
+		:"=r" (oldbit),"=m" (EXT2FS_ADDR)
 		:"r" (nr));
 	return oldbit;
 }
 
-_INLINE_ int test_bit(int nr, const void * addr)
+_INLINE_ int ext2fs_test_bit(int nr, const void * addr)
 {
 	int oldbit;
 
 	__asm__ __volatile__("btl %2,%1\n\tsbbl %0,%0"
 		:"=r" (oldbit)
-		:"m" (CONST_ADDR),"r" (nr));
+		:"m" (EXT2FS_CONST_ADDR),"r" (nr));
 	return oldbit;
 }
 
-#undef ADDR
+#undef EXT2FS_ADDR
 
 #endif	/* i386 */
 
@@ -136,7 +136,7 @@
 
 #define _EXT2_HAVE_ASM_BITOPS_
 
-_INLINE_ int set_bit(int nr,void * addr)
+_INLINE_ int ext2fs_set_bit(int nr,void * addr)
 {
 	char retval;
 
@@ -146,7 +146,7 @@
 	return retval;
 }
 
-_INLINE_ int clear_bit(int nr, void * addr)
+_INLINE_ int ext2fs_clear_bit(int nr, void * addr)
 {
 	char retval;
 
@@ -156,7 +156,7 @@
 	return retval;
 }
 
-_INLINE_ int test_bit(int nr, const void * addr)
+_INLINE_ int ext2fs_test_bit(int nr, const void * addr)
 {
 	char retval;
 
@@ -172,7 +172,7 @@
 
 #define _EXT2_HAVE_ASM_BITOPS_
 
-_INLINE_ int set_bit(int nr, void *addr)
+_INLINE_ int ext2fs_set_bit(int nr, void *addr)
 {
 	int		mask, retval;
 	unsigned long	*ADDR = (unsigned long *) addr;
@@ -184,7 +184,7 @@
 	return retval;
 }
 
-_INLINE_ int clear_bit(int nr, void *addr)
+_INLINE_ int ext2fs_clear_bit(int nr, void *addr)
 {
 	int		mask, retval;
 	unsigned long	*ADDR = (unsigned long *) addr;
@@ -196,7 +196,7 @@
 	return retval;
 }
 
-_INLINE_ int test_bit(int nr, const void *addr)
+_INLINE_ int ext2fs_test_bit(int nr, const void *addr)
 {
 	int			mask;
 	const unsigned long	*ADDR = (const unsigned long *) addr;
@@ -231,7 +231,7 @@
 				   bitmap->description);
 		return;
 	}
-	set_bit(block - bitmap->start, bitmap->bitmap);
+	ext2fs_set_bit(block - bitmap->start, bitmap->bitmap);
 }
 
 _INLINE_ void ext2fs_unmark_block_bitmap(ext2fs_block_bitmap bitmap,
@@ -242,7 +242,7 @@
 				   block, bitmap->description);
 		return;
 	}
-	clear_bit(block - bitmap->start, bitmap->bitmap);
+	ext2fs_clear_bit(block - bitmap->start, bitmap->bitmap);
 }
 
 _INLINE_ int ext2fs_test_block_bitmap(ext2fs_block_bitmap bitmap,
@@ -253,7 +253,7 @@
 				   block, bitmap->description);
 		return 0;
 	}
-	return test_bit(block - bitmap->start, bitmap->bitmap);
+	return ext2fs_test_bit(block - bitmap->start, bitmap->bitmap);
 }
 
 _INLINE_ void ext2fs_mark_inode_bitmap(ext2fs_inode_bitmap bitmap,
@@ -264,7 +264,7 @@
 				   inode, bitmap->description);
 		return;
 	}
-	set_bit(inode - bitmap->start, bitmap->bitmap);
+	ext2fs_set_bit(inode - bitmap->start, bitmap->bitmap);
 }
 
 _INLINE_ void ext2fs_unmark_inode_bitmap(ext2fs_inode_bitmap bitmap,
@@ -275,7 +275,7 @@
 				   inode, bitmap->description);
 		return;
 	}
-	clear_bit(inode - bitmap->start, bitmap->bitmap);
+	ext2fs_clear_bit(inode - bitmap->start, bitmap->bitmap);
 }
 
 _INLINE_ int ext2fs_test_inode_bitmap(ext2fs_inode_bitmap bitmap,
@@ -286,7 +286,7 @@
 				   inode, bitmap->description);
 		return 0;
 	}
-	return test_bit(inode - bitmap->start, bitmap->bitmap);
+	return ext2fs_test_bit(inode - bitmap->start, bitmap->bitmap);
 }
 
 _INLINE_ void ext2fs_fast_mark_block_bitmap(ext2fs_block_bitmap bitmap,
@@ -299,7 +299,7 @@
 		return;
 	}
 #endif	
-	set_bit(block - bitmap->start, bitmap->bitmap);
+	ext2fs_set_bit(block - bitmap->start, bitmap->bitmap);
 }
 
 _INLINE_ void ext2fs_fast_unmark_block_bitmap(ext2fs_block_bitmap bitmap,
@@ -312,7 +312,7 @@
 		return;
 	}
 #endif
-	clear_bit(block - bitmap->start, bitmap->bitmap);
+	ext2fs_clear_bit(block - bitmap->start, bitmap->bitmap);
 }
 
 _INLINE_ int ext2fs_fast_test_block_bitmap(ext2fs_block_bitmap bitmap,
@@ -325,7 +325,7 @@
 		return 0;
 	}
 #endif
-	return test_bit(block - bitmap->start, bitmap->bitmap);
+	return ext2fs_test_bit(block - bitmap->start, bitmap->bitmap);
 }
 
 _INLINE_ void ext2fs_fast_mark_inode_bitmap(ext2fs_inode_bitmap bitmap,
@@ -338,7 +338,7 @@
 		return;
 	}
 #endif
-	set_bit(inode - bitmap->start, bitmap->bitmap);
+	ext2fs_set_bit(inode - bitmap->start, bitmap->bitmap);
 }
 
 _INLINE_ void ext2fs_fast_unmark_inode_bitmap(ext2fs_inode_bitmap bitmap,
@@ -351,7 +351,7 @@
 		return;
 	}
 #endif
-	clear_bit(inode - bitmap->start, bitmap->bitmap);
+	ext2fs_clear_bit(inode - bitmap->start, bitmap->bitmap);
 }
 
 _INLINE_ int ext2fs_fast_test_inode_bitmap(ext2fs_inode_bitmap bitmap,
@@ -364,7 +364,7 @@
 		return 0;
 	}
 #endif
-	return test_bit(inode - bitmap->start, bitmap->bitmap);
+	return ext2fs_test_bit(inode - bitmap->start, bitmap->bitmap);
 }
 
 _INLINE_ blk_t ext2fs_get_block_bitmap_start(ext2fs_block_bitmap bitmap)
diff --git a/lib/ext2fs/dll/jump.funcs b/lib/ext2fs/dll/jump.funcs
index 730ee31..489bd62 100644
--- a/lib/ext2fs/dll/jump.funcs
+++ b/lib/ext2fs/dll/jump.funcs
@@ -38,9 +38,9 @@
 00000000 T _ext2fs_new_block    		libext2fs       alloc
 00000000 T _ext2fs_get_free_blocks 		libext2fs       alloc
 00000000 T _ext2fs_expand_dir   		libext2fs       expanddir
-00000000 T _set_bit             		libext2fs       inline
-00000000 T _clear_bit           		libext2fs       inline
-00000000 T _test_bit            		libext2fs       inline
+00000000 T _ext2fs_set_bit             		libext2fs       inline
+00000000 T _ext2fs_clear_bit           		libext2fs       inline
+00000000 T _ext2fs_test_bit            		libext2fs       inline
 00000000 T _ext2fs_mark_block_bitmap 		libext2fs       inline
 00000000 T _ext2fs_unmark_block_bitmap 		libext2fs       inline
 00000000 T _ext2fs_test_block_bitmap 		libext2fs       inline
diff --git a/lib/ext2fs/ext2_err.et b/lib/ext2fs/ext2_err.et.in
similarity index 95%
rename from lib/ext2fs/ext2_err.et
rename to lib/ext2fs/ext2_err.et.in
index 71298b8..09dfd47 100644
--- a/lib/ext2fs/ext2_err.et
+++ b/lib/ext2fs/ext2_err.et.in
@@ -1,11 +1,11 @@
 #
-# Copyright (C) 1993, 1994 Theodore Ts'o.  This file may be redistributed
-# under the terms of the GNU Public License.
+# Copyright (C) 1993, 1994, 1995, 1996 Theodore Ts'o.  This file may be 
+# redistributed under the terms of the GNU Public License.
 #
 	error_table ext2
 
 ec	EXT2_ET_BASE,
-	"EXT2FS Library version 0.5c"
+	"EXT2FS Library version @E2FSPROGS_VERSION@"
 
 ec	EXT2_ET_MAGIC_EXT2FS_FILSYS,
 	"Wrong magic number for ext2_filsys structure"
diff --git a/lib/ext2fs/rw_bitmaps.c b/lib/ext2fs/rw_bitmaps.c
index 18b0d3e..1854839 100644
--- a/lib/ext2fs/rw_bitmaps.c
+++ b/lib/ext2fs/rw_bitmaps.c
@@ -85,7 +85,7 @@
 				% EXT2_BLOCKS_PER_GROUP(fs->super);
 			if (nbits)
 				for (j = nbits; j < fs->blocksize * 8; j++)
-					set_bit(j, bitmap_block);
+					ext2fs_set_bit(j, bitmap_block);
 		}
 		retval = io_channel_write_blk(fs->io,
 		      fs->group_desc[i].bg_block_bitmap, 1,
diff --git a/lib/ss/ChangeLog b/lib/ss/ChangeLog
index 21c7df1..f8a312d 100644
--- a/lib/ss/ChangeLog
+++ b/lib/ss/ChangeLog
@@ -1,3 +1,7 @@
+Wed Jan 31 11:06:08 1996    <tytso@rsts-11.mit.edu>
+
+	* Release of E2fsprogs version 1.02
+
 Wed Oct 25 11:58:20 1995    <tytso@rsts-11.mit.edu>
 
 	* ss_internal.h: Removed malloc, realloc, free definitions, and
diff --git a/lib/ss/Makefile.in b/lib/ss/Makefile.in
index 2cedb5b..4a49726 100644
--- a/lib/ss/Makefile.in
+++ b/lib/ss/Makefile.in
@@ -44,13 +44,13 @@
 XTRA_CFLAGS=-DPOSIX_SIGNALS -I$(srcdir)/../et
 
 .c.o:
-	$(CC) $(CFLAGS) -c $<
-@PROFILE_CMT@	$(CC) $(CFLAGS) -pg -o profiled/$*.o -c $<
-@CHECKER_CMT@	$(CC) $(CFLAGS) -checker -g -o checker/$*.o -c $<
-@DLL_CMT@	(export JUMP_DIR=`pwd`/jump; $(CC) -B$(JUMP_PREFIX) $(CFLAGS) \
-@DLL_CMT@		-o jump/$*.o -c $<)
-@ELF_CMT@	$(CC) $(CFLAGS) -fPIC -o elfshared/$*.o -c $<
-@BSDLIB_CMT@	$(CC) $(CFLAGS) -fpic -o pic/$*.o -c $<
+	$(CC) $(ALL_CFLAGS) -c $<
+@PROFILE_CMT@	$(CC) $(ALL_CFLAGS) -pg -o profiled/$*.o -c $<
+@CHECKER_CMT@	$(CC) $(ALL_CFLAGS) -checker -g -o checker/$*.o -c $<
+@DLL_CMT@	(export JUMP_DIR=`pwd`/jump; $(CC) -B$(JUMP_PREFIX) \
+@DLL_CMT@		$(ALL_CFLAGS) -o jump/$*.o -c $<)
+@ELF_CMT@	$(CC) $(ALL_CFLAGS) -fPIC -o elfshared/$*.o -c $<
+@BSDLIB_CMT@	$(CC) $(ALL_CFLAGS) -fpic -o pic/$*.o -c $<
 
 # for the library
 
diff --git a/lib/ss/test_ss.c b/lib/ss/test_ss.c
index 3878400..7ee5c65 100644
--- a/lib/ss/test_ss.c
+++ b/lib/ss/test_ss.c
@@ -9,8 +9,8 @@
  * $Locker$
  *
  * $Log$
- * Revision 1.4  1997/04/26 14:25:12  tytso
- * Checked in e2fsprogs 1.01.
+ * Revision 1.5  1997/04/26 14:35:55  tytso
+ * Checkin of e2fsprogs 1.02.
  *
  * Revision 1.1  1993/06/03  12:31:25  tytso
  * Initial revision
diff --git a/misc/ChangeLog b/misc/ChangeLog
index 0b13e1f..8d020c2 100644
--- a/misc/ChangeLog
+++ b/misc/ChangeLog
@@ -1,3 +1,26 @@
+Wed Jan 31 11:06:08 1996    <tytso@rsts-11.mit.edu>
+
+	* Release of E2fsprogs version 1.02
+
+Tue Oct 30 21:14:12 1995    <tytso@rsts-11.mit.edu>
+
+	* mke2fs.c (check_plausibility): Add check to warn user if they
+		are trying to mke2fs the whole disk.  (/dev/hda
+		vs. /dev/hda1)
+
+Fri Dec 15 19:09:56 1995    <tytso@rsts-11.mit.edu>
+
+	* fsck.c (check_all): If we break out of the loop because we are
+		serializing and have just started at fsck we haven't
+		finished the pass. We need to go round again in case there
+		are more filesystems to be done in this pass.  (Patch
+		submitted by Mike Jagdis)
+
+Sat Dec  9 10:07:16 1995    <tytso@rsts-11.mit.edu>
+
+	* dumpe2fs.c (in_use): test_bit() was renamed to
+	        ext2fs_test_bit().
+
 Mon Oct 30 20:21:18 1995    <tytso@rsts-11.mit.edu>
 
 	* fsck.c (fsck_device): Check fstype instead of type; this was a
diff --git a/misc/Makefile.in b/misc/Makefile.in
index ee03156..016c992 100644
--- a/misc/Makefile.in
+++ b/misc/Makefile.in
@@ -34,36 +34,36 @@
 DEPLIBS= ../lib/libext2fs.a ../lib/libe2p.a ../lib/libcom_err.a 
 
 .c.o:
-	$(CC) -c $(CFLAGS) $< -o $@
+	$(CC) -c $(ALL_CFLAGS) $< -o $@
 
 all:: $(SPROGS) $(UPROGS) $(USPROGS)
 
 tune2fs: $(TUNE2FS_OBJS) $(DEPLIBS)
-	$(CC) $(LDFLAGS) -o tune2fs $(TUNE2FS_OBJS) $(LIBS)
+	$(CC) $(ALL_LDFLAGS) -o tune2fs $(TUNE2FS_OBJS) $(LIBS)
 
 mklost+found: $(MKLPF_OBJS)
-	$(CC) $(LDFLAGS) -o mklost+found $(MKLPF_OBJS)
+	$(CC) $(ALL_LDFLAGS) -o mklost+found $(MKLPF_OBJS)
 
 mke2fs: $(MKE2FS_OBJS) $(DEPLIBS)
-	$(CC) $(LDFLAGS) -o mke2fs $(MKE2FS_OBJS) $(LIBS)
+	$(CC) $(ALL_LDFLAGS) -o mke2fs $(MKE2FS_OBJS) $(LIBS)
 
 mke2fs.static: $(MKE2FS_OBJS) $(DEPLIBS)
-	$(CC) $(LDFLAGS) -static -o mke2fs.static $(MKE2FS_OBJS) $(LIBS)
+	$(CC) $(ALL_LDFLAGS) -static -o mke2fs.static $(MKE2FS_OBJS) $(LIBS)
 
 chattr: $(CHATTR_OBJS) $(DEPLIBS)
-	$(CC) $(LDFLAGS) -o chattr $(CHATTR_OBJS) $(LIBS)
+	$(CC) $(ALL_LDFLAGS) -o chattr $(CHATTR_OBJS) $(LIBS)
 
 lsattr: $(LSATTR_OBJS) $(DEPLIBS)
-	$(CC) $(LDFLAGS) -o lsattr $(LSATTR_OBJS) $(LIBS)
+	$(CC) $(ALL_LDFLAGS) -o lsattr $(LSATTR_OBJS) $(LIBS)
 
 dumpe2fs: $(DUMPE2FS_OBJS) $(DEPLIBS)
-	$(CC) $(LDFLAGS) -o dumpe2fs $(DUMPE2FS_OBJS) $(LIBS)
+	$(CC) $(ALL_LDFLAGS) -o dumpe2fs $(DUMPE2FS_OBJS) $(LIBS)
 
 fsck: $(FSCK_OBJS) $(DEPLIBS)
-	$(CC) $(LDFLAGS) -o fsck $(FSCK_OBJS) $(LIBS)
+	$(CC) $(ALL_LDFLAGS) -o fsck $(FSCK_OBJS) $(LIBS)
 
 badblocks: $(BADBLOCKS_OBJS) $(DEPLIBS)
-	$(CC) $(LDFLAGS) -o badblocks $(BADBLOCKS_OBJS) $(LIBS)
+	$(CC) $(ALL_LDFLAGS) -o badblocks $(BADBLOCKS_OBJS) $(LIBS)
 
 installdirs:
 	$(top_srcdir)/mkinstalldirs $(DESTDIR)$(bindir) $(DESTDIR)$(sbindir) \
@@ -85,10 +85,10 @@
 		$(STRIP) $(DESTDIR)$(ubindir)/$$i; \
 	done
 	for i in $(SMANPAGES); do \
-		$(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)$(man8dir)/$$i; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(man8dir)/$$i; \
 	done
 	for i in $(UMANPAGES); do \
-		$(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)$(man1dir)/$$i; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(man1dir)/$$i; \
 	done
 
 uninstall:
diff --git a/misc/badblocks.8 b/misc/badblocks.8.in
similarity index 93%
rename from misc/badblocks.8
rename to misc/badblocks.8.in
index 8937961..1c4069c 100644
--- a/misc/badblocks.8
+++ b/misc/badblocks.8.in
@@ -1,5 +1,5 @@
 .\" -*- nroff -*-
-.TH BADBLOCKS 8 "October 1995" "Version 1.01"
+.TH BADBLOCKS 8 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
 .SH NAME
 badblocks \- search a device for bad blocks
 .SH SYNOPSIS
diff --git a/misc/chattr.1 b/misc/chattr.1.in
similarity index 95%
rename from misc/chattr.1
rename to misc/chattr.1.in
index 89783c7..cfd4ff7 100644
--- a/misc/chattr.1
+++ b/misc/chattr.1.in
@@ -1,5 +1,5 @@
 .\" -*- nroff -*-
-.TH CHATTR 1 "October 1995" "Version 1.01"
+.TH CHATTR 1 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
 .SH NAME
 chattr \- change file attributes on a Linux second extended file system
 .SH SYNOPSIS
diff --git a/misc/dumpe2fs.8 b/misc/dumpe2fs.8.in
similarity index 89%
rename from misc/dumpe2fs.8
rename to misc/dumpe2fs.8.in
index f54928d..0dc1922 100644
--- a/misc/dumpe2fs.8
+++ b/misc/dumpe2fs.8.in
@@ -2,7 +2,7 @@
 .\" Copyright 1993, 1994, 1995 by Theodore Ts'o.  All Rights Reserved.
 .\" This file may be copied under the terms of the GNU Public License.
 .\" 
-.TH DUMPE2FS 8 "October 1995" "Version 0.5c"
+.TH DUMPE2FS 8 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
 .SH NAME
 dumpe2fs \- dump filesystem information
 .SH SYNOPSIS
diff --git a/misc/dumpe2fs.c b/misc/dumpe2fs.c
index b7a50b3..1161e3b 100644
--- a/misc/dumpe2fs.c
+++ b/misc/dumpe2fs.c
@@ -32,7 +32,7 @@
 
 #include "../version.h"
 
-#define in_use(m, x)	(test_bit ((x), (m)))
+#define in_use(m, x)	(ext2fs_test_bit ((x), (m)))
 
 const char * program_name = "dumpe2fs";
 char * device_name = NULL;
diff --git a/misc/fsck.8 b/misc/fsck.8.in
similarity index 97%
rename from misc/fsck.8
rename to misc/fsck.8.in
index 7b78a68..4533b84 100644
--- a/misc/fsck.8
+++ b/misc/fsck.8.in
@@ -2,7 +2,7 @@
 .\" Copyright 1993, 1994, 1995 by Theodore Ts'o.  All Rights Reserved.
 .\" This file may be copied under the terms of the GNU Public License.
 .\" 
-.TH FSCK 8 "October 1995" "Version 0.5c"
+.TH FSCK 8 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
 .SH NAME
 fsck \- check and repair a Linux file system
 .SH SYNOPSIS
diff --git a/misc/fsck.c b/misc/fsck.c
index 05afde9..1d92c54 100644
--- a/misc/fsck.c
+++ b/misc/fsck.c
@@ -607,8 +607,11 @@
 			fsck_device(fs->device);
 			fs->flags |= FLAG_DONE;
 
-			if (serialize)
+			if (serialize) {
+				pass_done = 0;
 				break; /* Only do one filesystem at a time */
+
+			}
 		}
 		inst = wait_one();
 		if (inst) {
diff --git a/misc/lsattr.1 b/misc/lsattr.1.in
similarity index 89%
rename from misc/lsattr.1
rename to misc/lsattr.1.in
index 7991d31..1a3bdff 100644
--- a/misc/lsattr.1
+++ b/misc/lsattr.1.in
@@ -1,5 +1,5 @@
 .\" -*- nroff -*-
-.TH LSATTR 1 "October 1995" "Version 1.01"
+.TH LSATTR 1 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
 .SH NAME
 lsattr \- list file attributes on a Linux second extended file system
 .SH SYNOPSIS
diff --git a/misc/mke2fs.8 b/misc/mke2fs.8.in
similarity index 93%
rename from misc/mke2fs.8
rename to misc/mke2fs.8.in
index 2633a40..65c8b55 100644
--- a/misc/mke2fs.8
+++ b/misc/mke2fs.8.in
@@ -2,7 +2,7 @@
 .\" Copyright 1993, 1994, 1995 by Theodore Ts'o.  All Rights Reserved.
 .\" This file may be copied under the terms of the GNU Public License.
 .\" 
-.TH MKE2FS 8 "October 1995" "Version 1.01"
+.TH MKE2FS 8 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
 .SH NAME
 mke2fs \- create a Linux second extended file system
 .SH SYNOPSIS
@@ -39,6 +39,9 @@
 .B \-v
 ]
 [
+.B \-F
+]
+[
 .B \-S
 ]
 device
@@ -96,6 +99,9 @@
 .TP
 .I -v
 Verbose execution.
+.IP
+.I -F
+Force mke2fs to run, even if the specified device 
 .TP
 .I -S
 Write superblock and group descriptors only.  This is useful if all of
diff --git a/misc/mke2fs.c b/misc/mke2fs.c
index 687deba..b0a1779 100644
--- a/misc/mke2fs.c
+++ b/misc/mke2fs.c
@@ -35,12 +35,16 @@
 #include <malloc.h>
 #include <sys/ioctl.h>
 #include <sys/types.h>
+#include <sys/stat.h>
 #include <stdio.h>
 
 #ifdef HAVE_LINUX_FS_H
 #include <linux/fs.h>
 #endif
 #include <linux/ext2_fs.h>
+#ifdef HAVE_LINUX_MAJOR_H
+#include <linux/major.h>
+#endif
 
 #include "et/com_err.h"
 #include "ext2fs/ext2fs.h"
@@ -59,6 +63,7 @@
 int	verbose = 0;
 int	quiet = 0;
 int	super_only = 0;
+int	force = 0;
 char	*bad_blocks_filename = 0;
 
 struct ext2_super_block param;
@@ -86,6 +91,38 @@
 	return l;
 }
 
+static void check_plausibility(NOARGS)
+{
+#ifdef HAVE_LINUX_MAJOR_H
+	int val;
+	struct stat s;
+	
+	val = stat(device_name, &s);
+	
+	if(val == -1) {
+		perror("stat");
+		exit(1);
+	}
+	if(!S_ISBLK(s.st_mode)) {
+		printf("%s is not a block special device.\n", device_name);
+		printf("Proceed anyway? (y,n) ");
+		if (getchar() != 'y')
+			exit(1);
+		return;
+	}
+	if ((MAJOR(s.st_rdev) == HD_MAJOR && MINOR(s.st_rdev)%64 == 0) ||
+	    (MAJOR(s.st_rdev) == SCSI_DISK_MAJOR &&
+	     MINOR(s.st_rdev)%16 == 0)) {
+		printf("%s is entire device, not just one partition!\n", 
+		       device_name);
+		printf("Proceed anyway? (y,n) ");
+		if (getchar() != 'y')
+			exit(1);
+		return;
+	}
+#endif
+}
+
 static void check_mount(NOARGS)
 {
 	errcode_t	retval;
@@ -495,7 +532,7 @@
 		 EXT2FS_VERSION, EXT2FS_DATE);
 	if (argc && *argv)
 		program_name = *argv;
-	while ((c = getopt (argc, argv, "b:cf:g:i:l:m:qtvS")) != EOF)
+	while ((c = getopt (argc, argv, "b:cf:g:i:l:m:qtvSF")) != EOF)
 		switch (c) {
 		case 'b':
 			size = strtoul(optarg, &tmp, 0);
@@ -575,6 +612,9 @@
 		case 'q':
 			quiet = 1;
 			break;
+		case 'F':
+			force = 1;
+			break;
 		case 'S':
 			super_only = 1;
 			break;
@@ -596,6 +636,8 @@
 	if (optind < argc)
 		usage();
 
+	if (!force)
+		check_plausibility();
 	check_mount();
 
 	param.s_log_frag_size = param.s_log_block_size;
diff --git a/misc/mklost+found.8 b/misc/mklost+found.8.in
similarity index 89%
rename from misc/mklost+found.8
rename to misc/mklost+found.8.in
index c785db9..bb192ec 100644
--- a/misc/mklost+found.8
+++ b/misc/mklost+found.8.in
@@ -2,7 +2,7 @@
 .\" Copyright 1993, 1994, 1995 by Theodore Ts'o.  All Rights Reserved.
 .\" This file may be copied under the terms of the GNU Public License.
 .\" 
-.TH MKLOST+FOUND 8 "October 1995" "Version 1.01"
+.TH MKLOST+FOUND 8 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
 .SH NAME
 mklost+found \- create a lost+found directory on a mounted Linux
 second extended file system
diff --git a/misc/tune2fs.8 b/misc/tune2fs.8.in
similarity index 95%
rename from misc/tune2fs.8
rename to misc/tune2fs.8.in
index a511f73..ee123d2 100644
--- a/misc/tune2fs.8
+++ b/misc/tune2fs.8.in
@@ -2,8 +2,7 @@
 .\" Initial revision
 .\"
 .\"
-.TH TUNE2FS 8 "October 1995" "Version 1.01"
-
+.TH TUNE2FS 8 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
 .SH NAME
 tune2fs \- adjust tunable filesystem parameters on second extended filesystems
 .SH SYNOPSIS
diff --git a/tests/ChangeLog b/tests/ChangeLog
index f50ef6c..bc956ef 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,7 @@
+Wed Jan 31 11:06:08 1996    <tytso@rsts-11.mit.edu>
+
+	* Release of E2fsprogs version 1.02
+
 Mon Sep  4 23:06:06 1995  Remy Card  <card@bbj>
 
 	* Makefile.in (clean, distclean): Use the -f option when removing
diff --git a/tests/f_badbblocks/expect.1 b/tests/f_badbblocks/expect.1
index d819f65..3fcfb3b 100644
--- a/tests/f_badbblocks/expect.1
+++ b/tests/f_badbblocks/expect.1
@@ -16,5 +16,5 @@
 Free blocks count wrong (78, counted=77).  FIXED
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 11/32 files, 23/100 blocks
+test_filesys: 11/32 files (0.0% non-contiguous), 23/100 blocks
 Exit status is 1
diff --git a/tests/f_badbblocks/expect.2 b/tests/f_badbblocks/expect.2
index f18e308..fda217d 100644
--- a/tests/f_badbblocks/expect.2
+++ b/tests/f_badbblocks/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 11/32 files, 23/100 blocks
+test_filesys: 11/32 files (0.0% non-contiguous), 23/100 blocks
 Exit status is 0
diff --git a/tests/f_baddir/expect.1 b/tests/f_baddir/expect.1
index 8ac16b8..646ba24 100644
--- a/tests/f_baddir/expect.1
+++ b/tests/f_baddir/expect.1
@@ -35,5 +35,5 @@
 Free inodes count wrong (19, counted=20).  FIXED
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 12/32 files, 23/100 blocks
+test_filesys: 12/32 files (0.0% non-contiguous), 23/100 blocks
 Exit status is 1
diff --git a/tests/f_baddir/expect.2 b/tests/f_baddir/expect.2
index c21acaf..628a376 100644
--- a/tests/f_baddir/expect.2
+++ b/tests/f_baddir/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 12/32 files, 23/100 blocks
+test_filesys: 12/32 files (0.0% non-contiguous), 23/100 blocks
 Exit status is 0
diff --git a/tests/f_baddotdir/expect.1 b/tests/f_baddotdir/expect.1
index 657ccb4..e9499cb 100644
--- a/tests/f_baddotdir/expect.1
+++ b/tests/f_baddotdir/expect.1
@@ -44,5 +44,5 @@
 Free blocks count wrong (72, counted=73).  FIXED
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 16/32 files, 27/100 blocks
+test_filesys: 16/32 files (0.0% non-contiguous), 27/100 blocks
 Exit status is 1
diff --git a/tests/f_baddotdir/expect.2 b/tests/f_baddotdir/expect.2
index 862f94f..0ed37d7 100644
--- a/tests/f_baddotdir/expect.2
+++ b/tests/f_baddotdir/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 16/32 files, 27/100 blocks
+test_filesys: 16/32 files (0.0% non-contiguous), 27/100 blocks
 Exit status is 0
diff --git a/tests/f_badinode/expect.1 b/tests/f_badinode/expect.1
index 7ed7b54..4552569 100644
--- a/tests/f_badinode/expect.1
+++ b/tests/f_badinode/expect.1
@@ -21,5 +21,5 @@
 Free inodes count wrong (19, counted=20).  FIXED
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 12/32 files, 23/100 blocks
+test_filesys: 12/32 files (0.0% non-contiguous), 23/100 blocks
 Exit status is 1
diff --git a/tests/f_badinode/expect.2 b/tests/f_badinode/expect.2
index c21acaf..628a376 100644
--- a/tests/f_badinode/expect.2
+++ b/tests/f_badinode/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 12/32 files, 23/100 blocks
+test_filesys: 12/32 files (0.0% non-contiguous), 23/100 blocks
 Exit status is 0
diff --git a/tests/f_badlkcnt/expect.1 b/tests/f_badlkcnt/expect.1
index d3ad6a7..63b9d9f 100644
--- a/tests/f_badlkcnt/expect.1
+++ b/tests/f_badlkcnt/expect.1
@@ -13,5 +13,5 @@
 Pass 5: Checking group summary information
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 29/32 files, 32/100 blocks
+test_filesys: 29/32 files (0.0% non-contiguous), 32/100 blocks
 Exit status is 1
diff --git a/tests/f_badlkcnt/expect.2 b/tests/f_badlkcnt/expect.2
index 6b2ea70..a28c8bd 100644
--- a/tests/f_badlkcnt/expect.2
+++ b/tests/f_badlkcnt/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 29/32 files, 32/100 blocks
+test_filesys: 29/32 files (0.0% non-contiguous), 32/100 blocks
 Exit status is 0
diff --git a/tests/f_badprimary/expect.1 b/tests/f_badprimary/expect.1
index 5410673..f41e319 100644
--- a/tests/f_badprimary/expect.1
+++ b/tests/f_badprimary/expect.1
@@ -21,5 +21,5 @@
 Pass 5: Checking group summary information
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 11/32 files, 22/100 blocks
+test_filesys: 11/32 files (0.0% non-contiguous), 22/100 blocks
 Exit status is 1
diff --git a/tests/f_badprimary/expect.2 b/tests/f_badprimary/expect.2
index b8b19f8..a821f87 100644
--- a/tests/f_badprimary/expect.2
+++ b/tests/f_badprimary/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 11/32 files, 22/100 blocks
+test_filesys: 11/32 files (0.0% non-contiguous), 22/100 blocks
 Exit status is 0
diff --git a/tests/f_badroot/expect.1 b/tests/f_badroot/expect.1
index e04d9cc..05bc86a 100644
--- a/tests/f_badroot/expect.1
+++ b/tests/f_badroot/expect.1
@@ -33,5 +33,5 @@
 Free inodes count wrong (20, counted=19).  FIXED
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 13/32 files, 24/100 blocks
+test_filesys: 13/32 files (0.0% non-contiguous), 24/100 blocks
 Exit status is 1
diff --git a/tests/f_badroot/expect.2 b/tests/f_badroot/expect.2
index 7871e7d..cab021a 100644
--- a/tests/f_badroot/expect.2
+++ b/tests/f_badroot/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 13/32 files, 24/100 blocks
+test_filesys: 13/32 files (0.0% non-contiguous), 24/100 blocks
 Exit status is 0
diff --git a/tests/f_badtable/expect.1 b/tests/f_badtable/expect.1
index f1c00e1..0f22af9 100644
--- a/tests/f_badtable/expect.1
+++ b/tests/f_badtable/expect.1
@@ -25,5 +25,5 @@
 Free blocks count wrong (78, counted=74).  FIXED
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 11/32 files, 26/100 blocks
+test_filesys: 11/32 files (0.0% non-contiguous), 26/100 blocks
 Exit status is 1
diff --git a/tests/f_badtable/expect.2 b/tests/f_badtable/expect.2
index d6a69dd..7614b9d 100644
--- a/tests/f_badtable/expect.2
+++ b/tests/f_badtable/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 11/32 files, 26/100 blocks
+test_filesys: 11/32 files (0.0% non-contiguous), 26/100 blocks
 Exit status is 0
diff --git a/tests/f_bbfile/expect.1 b/tests/f_bbfile/expect.1
index 7b6088b..957ff48 100644
--- a/tests/f_bbfile/expect.1
+++ b/tests/f_bbfile/expect.1
@@ -40,5 +40,5 @@
 Free blocks count wrong (57, counted=41).  FIXED
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 12/32 files, 59/100 blocks
+test_filesys: 12/32 files (0.0% non-contiguous), 59/100 blocks
 Exit status is 1
diff --git a/tests/f_bbfile/expect.2 b/tests/f_bbfile/expect.2
index 3ddc85d..92491da 100644
--- a/tests/f_bbfile/expect.2
+++ b/tests/f_bbfile/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 12/32 files, 59/100 blocks
+test_filesys: 12/32 files (8.3% non-contiguous), 59/100 blocks
 Exit status is 0
diff --git a/tests/f_bitmaps/expect.1 b/tests/f_bitmaps/expect.1
index 0e0b74b..6d23cec 100644
--- a/tests/f_bitmaps/expect.1
+++ b/tests/f_bitmaps/expect.1
@@ -9,5 +9,5 @@
 Inode bitmap differences: +11 -15.  FIXED
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 11/32 files, 22/100 blocks
+test_filesys: 11/32 files (9.1% non-contiguous), 22/100 blocks
 Exit status is 1
diff --git a/tests/f_bitmaps/expect.2 b/tests/f_bitmaps/expect.2
index b8b19f8..73d1c27 100644
--- a/tests/f_bitmaps/expect.2
+++ b/tests/f_bitmaps/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 11/32 files, 22/100 blocks
+test_filesys: 11/32 files (9.1% non-contiguous), 22/100 blocks
 Exit status is 0
diff --git a/tests/f_dirlink/expect.1 b/tests/f_dirlink/expect.1
index c89f34b..73c008a 100644
--- a/tests/f_dirlink/expect.1
+++ b/tests/f_dirlink/expect.1
@@ -8,5 +8,5 @@
 Pass 5: Checking group summary information
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 13/32 files, 24/100 blocks
+test_filesys: 13/32 files (0.0% non-contiguous), 24/100 blocks
 Exit status is 1
diff --git a/tests/f_dirlink/expect.2 b/tests/f_dirlink/expect.2
index 7871e7d..cab021a 100644
--- a/tests/f_dirlink/expect.2
+++ b/tests/f_dirlink/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 13/32 files, 24/100 blocks
+test_filesys: 13/32 files (0.0% non-contiguous), 24/100 blocks
 Exit status is 0
diff --git a/tests/f_dup/expect.1 b/tests/f_dup/expect.1
index 996eb07..df5c077 100644
--- a/tests/f_dup/expect.1
+++ b/tests/f_dup/expect.1
@@ -30,5 +30,5 @@
 
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 13/16 files, 40/100 blocks
+test_filesys: 13/16 files (7.7% non-contiguous), 40/100 blocks
 Exit status is 1
diff --git a/tests/f_dup/expect.2 b/tests/f_dup/expect.2
index e65d692..d1530c2 100644
--- a/tests/f_dup/expect.2
+++ b/tests/f_dup/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 13/16 files, 40/100 blocks
+test_filesys: 13/16 files (7.7% non-contiguous), 40/100 blocks
 Exit status is 0
diff --git a/tests/f_dup2/expect.1 b/tests/f_dup2/expect.1
index 6625f2f..5872546 100644
--- a/tests/f_dup2/expect.1
+++ b/tests/f_dup2/expect.1
@@ -38,5 +38,5 @@
 
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 16/16 files, 78/100 blocks
+test_filesys: 16/16 files (6.2% non-contiguous), 78/100 blocks
 Exit status is 1
diff --git a/tests/f_dup2/expect.2 b/tests/f_dup2/expect.2
index 0700500..0508b09 100644
--- a/tests/f_dup2/expect.2
+++ b/tests/f_dup2/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 16/16 files, 78/100 blocks
+test_filesys: 16/16 files (12.5% non-contiguous), 78/100 blocks
 Exit status is 0
diff --git a/tests/f_dupfsblks/expect.1 b/tests/f_dupfsblks/expect.1
index 1ff77ac..772295d 100644
--- a/tests/f_dupfsblks/expect.1
+++ b/tests/f_dupfsblks/expect.1
@@ -27,5 +27,5 @@
 Free blocks count wrong (77, counted=74).  FIXED
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 12/32 files, 26/100 blocks
+test_filesys: 12/32 files (8.3% non-contiguous), 26/100 blocks
 Exit status is 1
diff --git a/tests/f_dupfsblks/expect.2 b/tests/f_dupfsblks/expect.2
index e506f23..6f6d1db 100644
--- a/tests/f_dupfsblks/expect.2
+++ b/tests/f_dupfsblks/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 12/32 files, 26/100 blocks
+test_filesys: 12/32 files (0.0% non-contiguous), 26/100 blocks
 Exit status is 0
diff --git a/tests/f_dupsuper/expect.1 b/tests/f_dupsuper/expect.1
index 274744a..37b21d9 100644
--- a/tests/f_dupsuper/expect.1
+++ b/tests/f_dupsuper/expect.1
@@ -17,5 +17,5 @@
 Free blocks count wrong (61, counted=64).  FIXED
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 12/32 files, 36/100 blocks
+test_filesys: 12/32 files (8.3% non-contiguous), 36/100 blocks
 Exit status is 1
diff --git a/tests/f_dupsuper/expect.2 b/tests/f_dupsuper/expect.2
index 4ab9794..f5cf22b 100644
--- a/tests/f_dupsuper/expect.2
+++ b/tests/f_dupsuper/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 12/32 files, 36/100 blocks
+test_filesys: 12/32 files (8.3% non-contiguous), 36/100 blocks
 Exit status is 0
diff --git a/tests/f_end-bitmap/expect.1 b/tests/f_end-bitmap/expect.1
index 71eb6b6..a54605a 100644
--- a/tests/f_end-bitmap/expect.1
+++ b/tests/f_end-bitmap/expect.1
@@ -10,5 +10,5 @@
 
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 12/16 files, 37/100 blocks
+test_filesys: 12/16 files (0.0% non-contiguous), 37/100 blocks
 Exit status is 1
diff --git a/tests/f_end-bitmap/expect.2 b/tests/f_end-bitmap/expect.2
index a4c2f73..8109f99 100644
--- a/tests/f_end-bitmap/expect.2
+++ b/tests/f_end-bitmap/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 12/16 files, 37/100 blocks
+test_filesys: 12/16 files (0.0% non-contiguous), 37/100 blocks
 Exit status is 0
diff --git a/tests/f_expand/expect.1 b/tests/f_expand/expect.1
index 1126358..2719131 100644
--- a/tests/f_expand/expect.1
+++ b/tests/f_expand/expect.1
@@ -583,5 +583,5 @@
 Free inodes count wrong (1, counted=0).  FIXED
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 104/104 files, 33/100 blocks
+test_filesys: 104/104 files (0.0% non-contiguous), 33/100 blocks
 Exit status is 1
diff --git a/tests/f_expand/expect.2 b/tests/f_expand/expect.2
index 49395f2..4ded3c4 100644
--- a/tests/f_expand/expect.2
+++ b/tests/f_expand/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 104/104 files, 33/100 blocks
+test_filesys: 104/104 files (0.0% non-contiguous), 33/100 blocks
 Exit status is 0
diff --git a/tests/f_holedir/expect.1 b/tests/f_holedir/expect.1
index b0af948..898ef6f 100644
--- a/tests/f_holedir/expect.1
+++ b/tests/f_holedir/expect.1
@@ -27,5 +27,5 @@
 Pass 5: Checking group summary information
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 11/32 files, 22/100 blocks
+test_filesys: 11/32 files (9.1% non-contiguous), 22/100 blocks
 Exit status is 1
diff --git a/tests/f_holedir/expect.2 b/tests/f_holedir/expect.2
index b8b19f8..a821f87 100644
--- a/tests/f_holedir/expect.2
+++ b/tests/f_holedir/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 11/32 files, 22/100 blocks
+test_filesys: 11/32 files (0.0% non-contiguous), 22/100 blocks
 Exit status is 0
diff --git a/tests/f_illbbitmap/expect.1 b/tests/f_illbbitmap/expect.1
index 4b3b6c3..7c9c1f6 100644
--- a/tests/f_illbbitmap/expect.1
+++ b/tests/f_illbbitmap/expect.1
@@ -15,5 +15,5 @@
 
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 11/32 files, 22/100 blocks
+test_filesys: 11/32 files (0.0% non-contiguous), 22/100 blocks
 Exit status is 1
diff --git a/tests/f_illbbitmap/expect.2 b/tests/f_illbbitmap/expect.2
index b8b19f8..a821f87 100644
--- a/tests/f_illbbitmap/expect.2
+++ b/tests/f_illbbitmap/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 11/32 files, 22/100 blocks
+test_filesys: 11/32 files (0.0% non-contiguous), 22/100 blocks
 Exit status is 0
diff --git a/tests/f_illibitmap/expect.1 b/tests/f_illibitmap/expect.1
index 15fe393..54719fa 100644
--- a/tests/f_illibitmap/expect.1
+++ b/tests/f_illibitmap/expect.1
@@ -12,5 +12,5 @@
 Inode bitmap differences: +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11.  FIXED
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 11/32 files, 22/100 blocks
+test_filesys: 11/32 files (0.0% non-contiguous), 22/100 blocks
 Exit status is 1
diff --git a/tests/f_illibitmap/expect.2 b/tests/f_illibitmap/expect.2
index b8b19f8..a821f87 100644
--- a/tests/f_illibitmap/expect.2
+++ b/tests/f_illibitmap/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 11/32 files, 22/100 blocks
+test_filesys: 11/32 files (0.0% non-contiguous), 22/100 blocks
 Exit status is 0
diff --git a/tests/f_lotsbad/expect.1 b/tests/f_lotsbad/expect.1
index 33079f1..8861f9f 100644
--- a/tests/f_lotsbad/expect.1
+++ b/tests/f_lotsbad/expect.1
@@ -42,5 +42,5 @@
 Free inodes count wrong (20, counted=21).  FIXED
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 11/32 files, 42/100 blocks
+test_filesys: 11/32 files (0.0% non-contiguous), 42/100 blocks
 Exit status is 1
diff --git a/tests/f_lotsbad/expect.2 b/tests/f_lotsbad/expect.2
index 3257a84..b83f4e6 100644
--- a/tests/f_lotsbad/expect.2
+++ b/tests/f_lotsbad/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 11/32 files, 42/100 blocks
+test_filesys: 11/32 files (0.0% non-contiguous), 42/100 blocks
 Exit status is 0
diff --git a/tests/f_lpf/expect.1 b/tests/f_lpf/expect.1
index b2cef78..a5b67e0 100644
--- a/tests/f_lpf/expect.1
+++ b/tests/f_lpf/expect.1
@@ -35,5 +35,5 @@
 
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 15/16 files, 62/100 blocks
+test_filesys: 15/16 files (6.7% non-contiguous), 62/100 blocks
 Exit status is 1
diff --git a/tests/f_lpf/expect.2 b/tests/f_lpf/expect.2
index 800fd55..1a3af49 100644
--- a/tests/f_lpf/expect.2
+++ b/tests/f_lpf/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 15/16 files, 62/100 blocks
+test_filesys: 15/16 files (6.7% non-contiguous), 62/100 blocks
 Exit status is 0
diff --git a/tests/f_messy_inode/expect.1 b/tests/f_messy_inode/expect.1
index 170bac9..8400b51 100644
--- a/tests/f_messy_inode/expect.1
+++ b/tests/f_messy_inode/expect.1
@@ -29,5 +29,5 @@
 Free blocks count wrong (68, counted=75).  FIXED
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 29/32 files, 25/100 blocks
+test_filesys: 29/32 files (3.4% non-contiguous), 25/100 blocks
 Exit status is 1
diff --git a/tests/f_messy_inode/expect.2 b/tests/f_messy_inode/expect.2
index e9c7880..1fffb02 100644
--- a/tests/f_messy_inode/expect.2
+++ b/tests/f_messy_inode/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 29/32 files, 25/100 blocks
+test_filesys: 29/32 files (0.0% non-contiguous), 25/100 blocks
 Exit status is 0
diff --git a/tests/f_mke2fs2b/expect.1 b/tests/f_mke2fs2b/expect.1
index e60580c..e55d520 100644
--- a/tests/f_mke2fs2b/expect.1
+++ b/tests/f_mke2fs2b/expect.1
@@ -32,5 +32,5 @@
 Free inodes count wrong (17, counted=18).  FIXED
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 14/32 files, 13/100 blocks
+test_filesys: 14/32 files (0.0% non-contiguous), 13/100 blocks
 Exit status is 1
diff --git a/tests/f_mke2fs2b/expect.2 b/tests/f_mke2fs2b/expect.2
index 447fcb5..e87d8b9 100644
--- a/tests/f_mke2fs2b/expect.2
+++ b/tests/f_mke2fs2b/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 14/32 files, 13/100 blocks
+test_filesys: 14/32 files (0.0% non-contiguous), 13/100 blocks
 Exit status is 0
diff --git a/tests/f_noroot/expect.1 b/tests/f_noroot/expect.1
index df77568..44660ab 100644
--- a/tests/f_noroot/expect.1
+++ b/tests/f_noroot/expect.1
@@ -40,5 +40,5 @@
 Free inodes count wrong (17, counted=16).  FIXED
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 16/32 files, 26/100 blocks
+test_filesys: 16/32 files (0.0% non-contiguous), 26/100 blocks
 Exit status is 1
diff --git a/tests/f_noroot/expect.2 b/tests/f_noroot/expect.2
index 8cf7758..5ea5bc7 100644
--- a/tests/f_noroot/expect.2
+++ b/tests/f_noroot/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 16/32 files, 26/100 blocks
+test_filesys: 16/32 files (0.0% non-contiguous), 26/100 blocks
 Exit status is 0
diff --git a/tests/f_okgroup/expect.1 b/tests/f_okgroup/expect.1
index 8ee1a4b..44856c0 100644
--- a/tests/f_okgroup/expect.1
+++ b/tests/f_okgroup/expect.1
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 11/2048 files, 274/8193 blocks
+test_filesys: 11/2048 files (0.0% non-contiguous), 274/8193 blocks
 Exit status is 0
diff --git a/tests/f_okgroup/expect.2 b/tests/f_okgroup/expect.2
index 8ee1a4b..44856c0 100644
--- a/tests/f_okgroup/expect.2
+++ b/tests/f_okgroup/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 11/2048 files, 274/8193 blocks
+test_filesys: 11/2048 files (0.0% non-contiguous), 274/8193 blocks
 Exit status is 0
diff --git a/tests/f_overfsblks/expect.1 b/tests/f_overfsblks/expect.1
index 91c9ae2..6d44426 100644
--- a/tests/f_overfsblks/expect.1
+++ b/tests/f_overfsblks/expect.1
@@ -12,5 +12,5 @@
 Inode bitmap differences: -12 -13 -14 -15 -16 -17 -18 -19 -20 -21.  FIXED
 
 test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
-test_filesys: 11/32 files, 22/100 blocks
+test_filesys: 11/32 files (0.0% non-contiguous), 22/100 blocks
 Exit status is 1
diff --git a/tests/f_overfsblks/expect.2 b/tests/f_overfsblks/expect.2
index b8b19f8..a821f87 100644
--- a/tests/f_overfsblks/expect.2
+++ b/tests/f_overfsblks/expect.2
@@ -3,5 +3,5 @@
 Pass 3: Checking directory connectivity
 Pass 4: Checking reference counts
 Pass 5: Checking group summary information
-test_filesys: 11/32 files, 22/100 blocks
+test_filesys: 11/32 files (0.0% non-contiguous), 22/100 blocks
 Exit status is 0
diff --git a/version.h b/version.h
index 80090a3..07c3e08 100644
--- a/version.h
+++ b/version.h
@@ -6,6 +6,6 @@
  * under the GNU Public License.
  */
 
-#define E2FSPROGS_VERSION "1.01"
-#define E2FSPROGS_DATE "30-Oct-95"
+#define E2FSPROGS_VERSION "1.02"
+#define E2FSPROGS_DATE "16-Jan-96"