1999-11-19    <tytso@valinux.com>

	* Makefile.in (distclean): Remove TAGS and Makefile.in.old from
		the source directory.  Also, when making the .exclude file
		for the source_tar_file, exclude those two files as well.

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

	* Release of E2fsprogs 1.18

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

	* Release of E2fsprogs 1.17

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

	* configure.in: Move the code that checks for the presence of
		Linux header files, to earlier in the config file, since
		it adds a directory to the include path, and that needs to
		happen before any compile tests are run.  Add termios.h to
		the headers which are checked.

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.


