2001-09-02  Theodore Tso  <tytso@thunk.org>

	* Release of E2fsprogs 1.24a

2001-08-30  Theodore Tso  <tytso@thunk.org>

	* Release of E2fsprogs 1.24

2001-08-15  Theodore Tso  <tytso@valinux.com>

	* Release of E2fsprogs 1.23

2001-06-23  Theodore Tso  <tytso@valinux.com>

	* Release of E2fsprogs 1.22

2001-06-15  Theodore Tso  <tytso@valinux.com>

	* Release of E2fsprogs 1.21

2001-06-01  Theodore Tso  <tytso@valinux.com>

	* Makefile.in: Move include/asm/types.h.in to
		lib/ext2fs/ext2_types.h.in.

2001-05-25  Theodore Tso  <tytso@valinux.com>

	* Release of E2fsprogs 1.20

2000-07-13    <tytso@valinux.com>

	* Release of E2fsprogs 1.19

2000-07-04  Theodore Ts'o  <tytso@valinux.com>

	* Makefile.in: Remove explicit link of -lc in the shared library.
		(It shouldn't be necessary, and is harmful in some cases).

2000-07-03    <tytso@snap.thunk.org>

	* ct_c.awk: Work around a bug in gawk 3.05

	* mk_cmds.sh.in: Allow the build system to override the standard
		location for finding the ct_c.* files by setting the
		_SS_DIR_OVERRIDE environment variable.

	* Makefile.in: Use _SS_DIR_OVERRIDE to make sure we get the
		version in the source tree.

2000-05-25    <tytso@snap.thunk.org>

	* Makefile: Add hack dependency rule so that parallel makes work
		correctly. 

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

	* execute_cmd.c (ss_execute_line): Fix memory leak; we weren't
		freeing the argv array.

	* Makefile.in (distclean): Remove TAGS and Makefile.in.old from
		the source directory.

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

	* Release of E2fsprogs 1.18

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

	* Release of E2fsprogs 1.17

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

	* Release of E2fsprogs 1.16

1999-09-07    <tytso@rsts-11.mit.edu>

	* Updated copyright statements with permission of the original
		authors.

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

	* Release of E2fsprogs 1.15

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

	* Release of E2fsprogs 1.14

Mon Jan  4 00:05:14 1999  Theodore Y. Ts'o  <tytso@mit.edu>

	* mk_cmds.sh.in (TMP): Fixed portability bug in shell script; we
		were depending on a bash'ism.

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

	* Release of E2fsprogs 1.13

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

	* mk_cmds.sh.in: Fix error message so that it says mk_cmds's
		template files instead of compile_et's template files.

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

	* Release of E2fsprogs 1.12

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

	* Makefile.in: Install the ct_c.awk and ct_c.sed files in
		$(datadir)/ss (i.e., /usr/share/ss) directory.  Change
		to use new installation directory variables
		convention.  Fix uninstall rules to take $(DESTDIR)
		into account.

	* mk_cmds.sh.in: Look in $(datadir)/ss for ct_c.awk and
		ct_c.sed; if not found, look in the build directory.  Add
		error checking for non-existent input file.

Thu Aug 14 08:17:22 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* Makefile.in (install): Fix rm command to use $(DESTDIR)
		appropriately.

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

	* Release of E2fsprogs 1.11

Wed Jun  4 15:04:03 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* Makefile.in (install): Install the ss_err.h header file out of
		the build directory instead of the source directory (since
		it is a constructed file).

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

	* Release of E2fsprogs version 1.10

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 Mar 12 21:54:32 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* help.c, pager.c, ss.h: Don't use "extern int errno", but use
		#include <errno.h> instead.

Thu Jan  2 00:16:03 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* parse.c: Put in an include of string.h

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

	* Release of E2fsprogs version 1.06

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

	* Release of E2fsprogs version 1.05

Fri Aug 30 22:36:48 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* invocation.c (ss_create_invocation): Change function prototype
 		of invocation so that the first two arguments are const
 		char *, and that the info_ptr is a void *, not a char *.

	* ss.h: Added declaration of ss_execute_line()

Sat Aug 10 00:17:14 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* listen.c (ss_listen): Fix -Wall flames.

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

	* Release of E2fsprogs version 1.04

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

	* Makefile.in (INSTALL_HFILES): Install the correct header files
		so that /usr/include/ss/ss.h is actually usable!

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

Wed Oct 25 11:58:20 1995    <tytso@rsts-11.mit.edu>

	* ss_internal.h: Removed malloc, realloc, free definitions, and
		#include <stdlib.h> instead.

Mon Sep  4 21:46:00 1995  Remy Card  <card@bbj>

	* Makefile.in: Added support for BSD shared libraries.
		(distclean): Use the -f option when removing files.

Fri Aug 18 15:15:09 1995  Theodore Y. Ts'o  <tytso@dcl>

	* Makefile.in (mk_cmds): Remove usage of $<, since it's not
		portable. 

Sat Aug 12 03:11:02 1995  Remy Card  <card@bbj>

	* Makefile.in (install): Install static libraries in $(ulibdir)
		(/usr/lib on Linux) instead of $(libdir) (/lib on Linux).

Thu Aug 10 14:23:31 1995  Remy Card  <card@bbj>

	* Makefile.in (distclean): Remove mk_cmds.sh.

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

	* mk_cmds.sh.in: Remove the old .c file before moving the new file
		into place.

	* Makefile.in (DLL_INSTALL_DIR, ELF_INSTALL_DIR): Set the
		installation directories correctly.

	* Makefile.in (clean): Don't remove mk_cmds.sh, since it's built
		from the configure script.

Tue Jul 11 20:47:46 1995    <tytso@rsx-11.mit.edu>

	* help.c (ss_help): Use malloc instead of alloca for maximal
		portability.  Check return value of malloc before using
		buffer.  Allocate memory when printing usage message.

Thu Jun 15 23:46:16 1995  Remy Card  <card@bbj>

	* Makefile.in: Added support for ELF shared libraries.
		Fixed typos in the compilation rules.
		(distclean): Added mk_cmds.sh.

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

	* mk_cmds.sh.in: Use SS_DIR instead of srcdir to determine the
		location of the ss directory.

Thu Jun  8 13:18:48 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* help.c (ss_help): Use alloca to allocate space for filenames
	instead of fixed buffers.
	* error.c (ss_error, & includes): Change the selection of
	varargs/stdarg to work with configure.
	* pager.c: Include <errno.h> if possible.
	* parse.c: Ditto.
	* request_tbl.c: Ditto.

	* Makefile.in: Rewritten to conform to GNU coding standards and
	support separate compilation directories.
	Don't preprocess mk_cmds.sh, as this is now done by configure.

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

	* Makefile.in (DLL_INSTALL_DIR): Install libss in /lib, since it's
		needed by debugfs (which is installed in /sbin).


