1999-10-25    <tytso@valinux.com>

	* configure.in: Capitalized Hurd to make the GNU folks happy.

1999-10-22    <tytso@valinux.com>

	* Release of E2fsprogs 1.16

1999-09-24    <tytso@valinux.com>

	* configure.in (HAVE_STATE_FLAGS): Check to see if st_flags is
		actually useful (since glibc 2.1 declares it on Alpha
		without it being usable).  Add check for signal.h
		header file, which doesn't exist on non-unix platforms.

1999-07-18  Theodore Ts'o  <tytso@valinux.com>

	* Release of E2fsprogs 1.15

1999-07-03    <tytso@valinux.com>

	* depfix.sed: Remove all line continuations from the dependencies;
		the word wrapping is now done by wordwrap.pl.

	* MCONFIG.in (BUILD_CC):
	* configure.in (BUILD_CC): If cross compiling, find the native C
		compiler and set it to BUILD_CC so that we can
		successfully build util/subst.  Change default long long
		size when cross compiling to be 8 (instead of 0).  Also
		change the Hurd's defaults so that root files are placed
		in / instead of /usr/local.

	* Makefile.in (depend): Make "make depend" at the top-level
		automatically recurse through all subdirectories.

	* configure.in: Test for perl since it's needed by wordwrap.pl

	* MCONFIG.in (depend): Fix make-depend so that it the dependencies
		are automatically word-wrapped.  Added the makefile macro
		$(PERL).

	* wordwrap.pl: New file which does the word wrapping.

	* MCONFIG.in (subst): Add rule to build the util/subst program if
		necessary (by cd'ing to $(top_builddir)/util and making it.)

1999-06-23    <tytso@valinux.com>

	* configure.in: Check for the presence of i_generation field
		versus i_version in the ext2_inode to support compiling
		e2fsprogs in Linux 2.3.

1999-04-17    <tytso@rsts-11.mit.edu>

	* MCONFIG.in: Define man1dir, man3dir, and man8dir in terms of
		mandir.

1999-03-31  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* config.sub: Update config.sub from autoconf 2.13 so that it will
		recognize new machine types from the Alpha.

1999-03-16  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* configure.in: Add check for malloc.h and mallinfo().

1999-01-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* Release of E2fsprogs 1.14

1999-01-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* configure.in (YEAR): Allow a 4-digit year for the version date,
		so we can be Y2K politically correct.  (The date isn't
		used for anything except display purposes, but it should
		make people more comfortable to not use a 2-digit date,
		even though it doesn't matter.)

Mon Jan  4 02:36:23 1999  Theodore Y. Ts'o  <tytso@mit.edu>

	* Makefile.in: Move the generated types.h file from the linux/
 		directory to the asm/ directory.

	* configure.in: Force Solaris to never use -static, due to its
 		dynamic loader not being available to statically linked
 		programs.  Create the asm/ directory if needed.

1999-01-01  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* INSTALL.elfbin (NOTE): Add a warning that the ELF binaries
		assume glibc.

	* config.guess: Update with a newer version from the FSF (although
		I've removed rms's pathetic LINUX/GNU name kludgery)

1998-12-15  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* Release of E2fsprogs 1.13

1998-11-27  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* configure.in: Add paths.h to header files for which we search.

1998-07-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* Release of E2fsprogs 1.12

Wed Apr  8 02:03:48 1998  Theodore Y. Ts'o  <tytso@mit.edu>

	* Fix missing "test" invokation in configure.in test.  (Only
		affected default non-Linux builds).

1998-03-30  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* configure.in: Change how the installation directions are
		selected.  Previously, we had prefix and usr_prefix, where
		prefix was '' and usr_prefix was /usr, and we then defined
		bindir, ubindir, libdir, ulibdir, etc. in terms of that.
		In autoconf 2.12, it's possible to override bindir,
		libdir, etc., and so in order to make our installation
		directory makefile variables more in line with autoconf
		2.12, I've changed all of the various makefiles to use
		prefix and root_prefix, where the default Linux
		definitions are /usr and '', respectively.  What used to
		be bindir is now root_bindir, and what used to be ubindir,
		is now bindir.

	* MCONFIG.in: Change directories to match with new installation
		directory convention (see above).  Add Makefile
		dependencies for makefile fragments, and define
		DEP_LIB_MAKEFILES which library makefiles can use to
		define DEP_MAKEFILES, so that the library makefiles will
		get regenerated when the makefile fragments change.
		Remove the cat?dir variables, since we aren't creating
		those directories any more.

	* Makefile.in: Add top-level uninstall targets.

	* e2fsprogs-1.12.spec: Add to the RPM package the e2label man
		page, and to reflect that fact that we now compile_et and
		mk_cmds for the development package.

1998-03-28  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* Makefile.in: Use && after a cd command so that the right thing
		happens if the directory is missing.  Don't compile man
		pages upon installation any more, since modern Linux
		systems don't have /usr/man/cat? anymore (they 
		typically cache man pages in /var/catman and delete them
		if they haven't been used in a while, to save on disk
		space, and because CPU's are fast enough these days that
		you can get away with this).

	* MCONFIG.in: Add a new makefile variable for the share
		directory (i.e., /usr/share).  Make an autoconf magic
		make rule so that $(top_builddir)/util/subst.conf gets
		rebuilt automatically when necessary.

Mon Jan 19 10:01:39 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* e2fsprogs-1.12.spec: Update spec file in preparation for 1.12
		release. 

Tue Nov 25 15:56:29 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* configure.in: Remove @EXTRA_PROGS@, since we aren't using it in
	 	e2fsck/Makefile.in.

Tue Nov  4 10:46:18 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* configure.in: Add check for setjmp.h

Mon Oct 20 19:30:45 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* configure.in (HAVE_LLSEEK_PROTOTYPE): Added check to see if
		llseek is declared in unistd.h

Sun Oct 19 19:09:30 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* configure.in: Add tests for sys/stat.h, sys/time.h, and sys/types.h

Tue Jun 17 01:33:20 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* Release of E2fsprogs 1.11

Sat Jun 14 03:26:45 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* Makefile.in (SRCROOT): Allow people to set the version.h to
		something like 1.10-PLUS.

Sat Jun  7 16:38:40 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* configure.in (rmakefile): Added (optional) private directory for
		resize2fs.

	* Makefile.in: Change recursive descent rules to check to see if a
		directory exists before trying to make it.

Thu May  8 22:23:49 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* Makefile.in (source_tar_file): Fix up makefile to work in new
		CVS development environment.

Thu Apr 24 12:16:42 1997  Theodre Ts'o  <tytso@localhost.mit.edu>

	* Release of E2fsprogs version 1.10

Tue Apr 22 10:48:03 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* configure.in: Add explicit check to see if linker accepts
		-static (since even Linux systems might not work if 
		libc.a isn't installed).

Thu Apr 17 12:23:38 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* Release of E2fsprogs version 1.09

Fri Apr 11 18:56:26 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* Release of E2fsprogs version 1.08

Wed Mar 12 13:32:05 1997  Theodore Y. Ts'o  <tytso@mit.edu>

	* Release of E2fsprogs version 1.07

Wed Jan 15 11:37:36 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* config.sub (basic_machine): Added i686-* as another name for the
 		Pentium Pro.

Tue Oct  8 02:02:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* Release of E2fsprogs version 1.06

Mon Oct  7 08:22:31 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* Makefile.in (all): Don't run "make check" by default.  User
 	 	should manually run "make check" if they wish to test
 	 	things out.

Thu Sep 12 15:23:07 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* Release of E2fsprogs version 1.05

Sat Aug 31 10:55:45 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* configure.in (AC_CHECK_FUNCS): Add fchown to list of functions
	 	that we check.

Wed Aug 28 14:42:12 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* configure.in (usr_prefix): To be slightly more conformant with
		the coding standards, always default to ${prefix}
		unless on a linux system with prefix = ''.  Allow
		--with-usr-prefix option.

Tue Aug 27 16:53:29 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* configure.in (AC_CHECK_HEADERS): Add net/if.h & netinet/in.h.
		Add `--enable-fsck' switch, to allow configuration of
		fsck wrapper building (default yes except on the hurd).
		Make '' prefix default and LDFLAG_STATIC hacks work on
		the hurd as well as linux.

Tue Aug 27 16:23:56 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* configure.in: Check to see if sys/types.h defines ino_t.  Add
		support for checking/sizing "long long".

Wed Aug 21 00:44:22 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* configure.in: Added configure flag --enable-old-bitops, which
 		forces the bitops to use the standard bitmask operations.

Fri Aug  9 08:29:00 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* configure.in: Check for existence of sys/utsname.h and
	 	strcasecmp().  Remove check for EXT2 fragment in system
	 	header file.  E2fsprogs now deals with the fragment fields
	 	by dispatching off of the OS field.

Tue Aug  6 14:34:19 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* configure.in (AC_OUPUT): Create substitutions for the uuid
	 	library.

	* MCONFIG.in (all): Add new variables for the uuid library.

Thu May 23 12:39:07 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* configure.in: Make the default prefix be '' for Linux.

Thu May 16 11:12:30 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* Release of E2fsprogs version 1.04

Thu May 16 09:38:40 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* configure.in: 
	  MCONFIG.in: Man pages, shell scripts and include files are now
		generated using the lib/substitute_sh script.  This is
		faster than the configure substitution, and it doesn't
		change the mod time of the file if it hasn't changed,
		which prevents needless compilation of files.

		Define new sets of Makefile variables: LIBSS, LIBCOM_ERR,
 		LIBEXT2FS, LIBE2P, and their static and profiled variants,
 		STATIC_* and PROFILED_*, which point to the actual file of
 		the shared or static library.  This way makefiles can link
 		directly with exactly the library they want.  Many ld's
		(include GNU ld) have a really broken idea of how -L
		works, and will link against an older library in /usr/lib
		even though there is a newer on in a specified -L directory.
		  
Wed May 15 21:40:22 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* configure.in: Add support for --enable-dynamic-e2fsck, for
 		people who don't want to link e2fsck statically.  This
 		saves space, at the cost of increasing the reliance of
 		e2fsck other files (3-4 shared libraries).

Wed Mar 27 00:33:40 1996    <tytso@rsts-11.mit.edu>

	* Release of E2fsprogs version 1.03

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
		determining how to link executables statically.  For now,
		we assume that Linux systems only can link statically.

Fri Sep 22 18:23:55 1995    <tytso@rsts-11.mit.edu>

	* depfix.sed: Remove /usr/include lines which occur at the end of
		the dependency listing.

Mon Sep  4 21:40:22 1995  Remy Card  <card@bbj>

	* configure.in: Added support for the --enable-bsd-shlibs option.

Wed Aug  9 21:33:31 1995  Theodore Y. Ts'o  <tytso@dcl>

	* MCONFIG.in (LD): Add $(PURE) to the definition to make it easier
		to link executables using programs like purify.

Sat Aug  5 11:41:03 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>

	* configure.in: Check to see if strdup() is present

	* INSTALL: Updated building and installation instructions to
		reflect the new configure system.

	* Makefile.in (install): When doing a general install, install the
		shared libraries as well by using the new target 
		install-shlibs-libs-recursive.

	* configure.in: If we are building on a Linux system, set $prefix
		to be '/' by default.

Sun Jul  9 13:38:20 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* configure.in (checking type sizes): provide some default for
	type-sizes when cross-compiling, as we can't check them then.
	(SS_DIR, ET_DIR): Make these correct even when ${srcdir} is absolute.

Thu Jun 15 23:33:37 1995  Remy Card  <card@bbj>

	* Makefile.in (distclean-local): Added config.cache and
		include/linux/types.h.

	* configure.in: Added support for the --enable-elf option.
		Added a test to check for llseek() in the C library.

	* lib/Makefile.dll-lib: Fixed incorrect RM and LN calls.

	* lib/Makefile.elf-lib: New file, to create ELF shared libraries.

Sat Jun 10 19:52:51 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>

	* configure.in: Create ET_DIR and SS_DIR, which gives the absolute
		pathname to the source directories of the lib/et and
		lib/ss.  (Can't just use $srcdir since that may be a
		relative path.)

Thu Jun  8 12:25:57 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* lib/Makefile.library ($(LIBRARY).a): Changed to work with the
	new makefiles.
	* lib/Makefile.dll-lib: Ditto.
	* lib/Makefile.profiled: Ditto.
	* lib/Makefile.checker: Ditto.

	* Add the include subdirectory to hold substitute include files
	for systems that need them.

	* Makefile.in: Rewritten to conform to GNU coding standards.
	* MCONFIG: Moved to MCONFIG.in, and totally changed to support
	GNU-style makefiles.
	* mkinstalldirs: New file, copied from /gd/gnu/lib.
	* config.guess: Ditto.
	* config.sub: Ditto.
	* install-sh: Ditto.

	* configure.in: Many new tests added.  --with-cc and --with-ccopts
	options removed as configure already supports a method to do this,
	and they were interfering with normal usage.

Sat Mar 11 18:23:45 1995  Theodore Y. Ts'o  <tytso@localhost>

	* Makefile.in (bin-tree): Add Makefile target which automatically
		generates the binary distribution for e2fsprogs.


