2003-07-25  Theodore Ts'o  <tytso@mit.edu>

	* Release of E2fsprogs 1.34

2003-07-06  Theodore Ts'o  <tytso@mit.edu>

	* iod.c: Fix gcc -Wall nitpicks (missing #include <string.h>)

2003-04-21  Theodore Ts'o  <tytso@mit.edu>

	* Release of E2fsprogs 1.33

2003-04-19  Theodore Ts'o  <tytso@mit.edu>

	* fgetflags.c (fgetflags), fsetflags.c (fsetflags): Remove unused
		and useless close(fd).

	* hashstr.c (e2p_hash2string): Remove unused variables.

	* iod.c: Fix gcc -Wall warnings by including stdlib.h.

2003-04-12  Theodore Ts'o  <tytso@mit.edu>

	* iod.c (iterate_on_dir): Support systems that don't have d_reclen
		in struct dirent.

2003-04-11  Theodore Ts'o  <tytso@mit.edu>

	* feature.c: Remove support for EXT2_FEATURE_RO_COMPAT_BTREE_DIR,
		since it's not actually used, and may confuse people who
		are looking for EXT2_FEATURE_COMPAT_DIR_INDEX, which is in
		use.

2003-03-17  Theodore Ts'o  <tytso@mit.edu>

	* ls.c (list_super2): Display the superblock fields even if the
		journal or the dir index feature is not enabled.

2002-11-09  Theodore Ts'o  <tytso@mit.edu>

	* Release of E2fsprogs 1.32

2002-11-08  Theodore Ts'o  <tytso@mit.edu>

	* Release of E2fsprogs 1.31

2002-11-08  Theodore Ts'o  <tytso@mit.edu>

	* pf.c: Print the indexed directory flag if present.  Don't
		display all of the compression flags unless compression 
		is enabled.

2002-10-31  Theodore Ts'o  <tytso@mit.edu>

	* Release of E2fsprogs 1.30

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

	* pf.c: Add support for a new inode flag, which is to be used for
		indicating the top of directory hierarchies for the Orlov
		block allocator.

2002-10-25  Theodore Ts'o  <tytso@mit.edu>

	* ls.c (list_super2): Print the s_mkfs_time field if it is
		present.  If the last mount time (s_mtime) is zero, print
		"n/a".

2002-10-20  Theodore Ts'o  <tytso@valinux.com>

	* e2p.h (e2p_string2mntopt), mntopts.c, ls.c (print_mntopts):
		Remove unneeded "compat" argument to e2p_string2mntopt().
		Add mount options for the journal data mode (journaled,
		ordered, writeback).

	* feature.c, ls.c (list_super2): Add support for the
		meta_blockgroup filesystem format.

2002-10-15    <tytso@snap.thunk.org>

	* ls.c (print_mntopts, list_super2): Print any default mount
		options which the filesystem might have.

	* e2p.h, mntopts.c: New function which converts back and forth
		between strings and default mount options.

2001-09-24  Theodore Tso  <tytso@mit.edu>

	* Release of E2fsprogs 1.29

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

	* Release of E2fsprogs 1.28

2002-08-23  Theodore Ts'o  <tytso@mit.edu>

	* ls.c (list_super2): Print the default hash version and the hash
		seed for the directory indexing.  Use the new e2p_uuid2str
		function to factor out common code.
		
	* uuid.c (e2p_uuid2str), e2p.h: New utility function which factors
		out some common code.

	* hashstr.c (e2p_hash2string, e2p_string2hash): New functions
		which convert the hash algorithm name to and from a string.
	
2002-08-17  Theodore Ts'o  <tytso@mit.edu>

	* fsetflags.c (fsetflags), fgetflags.c (fgetflags.c), setflags.c
		(setflags), getflags.c (getflags): Check to make sure the
		file is a regular file or a directory before attempting to
		use the ext2 ioctls.  Otherwise, return EOPNOTSUPP.
		(Addresses Debian Bug #152029).

2002-07-14  Theodore Ts'o  <tytso@mit.edu>

	* fsetflags.c (fsetflags), fgetflags.c (fgetflags,
		fsetversion.c (fsetversion), fgetversion.c,
		fgetversion.c: Save errno if the ioctl fails, and
		restore it just before we return.

	* iod.c (iterate_on_dir): Rewrite function to make it more
		portable.  We now make much fewer assumptions about nature
		and layout of struct dirent, which will hopefully help
		things on the Hurd.

2002-06-15  Theodore Ts'o  <tytso@mit.edu>

	* pf.c: Changed "compressed dirty flag" from 'D' to 'Z'.  Add
		dirsync flag and assign it 'D'.

2002-03-08  Theodore Tso  <tytso@mit.edu>

	* Release of E2fsprogs 1.27

2002-02-03  Theodore Tso  <tytso@thunk.org>

	* Release of E2fsprogs 1.26

2001-12-16  Theodore Tso  <tytso@mit.edu>

	* pf.c: Add const to struct flags_name to avoid -Wall complaints.

2001-11-05  Theodore Tso  <tytso@mit.edu>

	* pf.c: Add a new file attribute, EXT2_NOTAIL_FL

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

	* Release of E2fsprogs 1.25

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>

	* feature.c: Add entry in feature table to interpret
		EXT2_FEATURE_COMPAT_EXT_ATTR.

	* 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, uuid.c: 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

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

	* e2p.h: #include <> instead of "" for ext2fs and et header files,
		since they will be installed in /usr/include

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

	* e2p.h: Change location of ext2_fs.h to be ext2fs/ext2_fs.h

2001-05-11  Andreas Dilger  <adilger@turbolinux.com>

	* feature.c: Add COMPAT_DIR_INDEX and RESIZE_INODE known features

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

	* ls.c (print_features): Added missing space when printing (none)
		as the filesystem feature.
		(list_super2): If the filesystem revision is unknown, say so.

2001-01-15  Theodore Ts'o  <tytso@valinux.com>

	* ls.c (list_super2): Fix bug where we were printing the
		filesystem UUID instead of journal UUID when trying to
		display the journal UUID.

2001-01-14  Theodore Ts'o  <tytso@valinux.com>

	* feature.c: Remove backward compatibility #ifdef's for old
		ext2_fs.h header files.

	* feature.c: Add definition for EXT3_FEATURE_INCOMPAT_JOURNAL_DEV

2001-01-11  Theodore Ts'o  <tytso@valinux.com>

	* pf.c: Clarified name of the Compression_Raw_Access flag, and
		capitalized Journaled_Data.

2001-01-01    <tytso@snap.thunk.org>

	* ls.c: Remove our own internal definition of struct ext2fs_sb.
		We can assume that ext2_super_block is always up to date.

2000-12-31    <tytso@snap.thunk.org>

	* pf.c: Add code to print out the journalled data flag.

2000-12-02    <tytso@snap.thunk.org>

	* fgetflags.c (fgetflags):
	* fgetversion.c (fgetversion):
	* fsetflags.c (fsetflags):
	* fsetversion.c (fsetversion): Use the LFS API if available so
		that the files are opened with O_LARGEFILE.  Addresses
		Debian bug #72690.

2000-08-14    <tytso@valinux.com>

	* ls.c (list_super): Use better description of s_last_orphan

	* ls.c (list_super, list_super2): Added new API function which
		takes a FILE * so that the output can be redirected to a
		stream. 

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

	* Release of E2fsprogs 1.19

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

	* ls.c (list_super): Display the journal information fields in the
		superblock if the filesystem has a journal.

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-05-08  Theodore Ts'o  <tytso@valinux.com>

	* ls.c (list_super): Change the string displayed for the Hurd to
		be GNU/Hurd, instead of just "GNU".

Thu Apr  6 17:38:00 2000  Theodore Y. Ts'o  <tytso@signal.thunk.org>

	* feature.c: Make feature_list static; it shouldn't be exported.

	* dll/jump.funcs: Update a.out shared library control file.

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

	* pf.c (print_flags): Rename EXT2_NOCOMP_FL to 	EXT2_NOCOMPR_FL.

	* Makefile.in: Add "set -e" so that any errors in installing
		header files causes an immediate exit.

2000-02-10  Theodore Ts'o  <tytso@valinux.com>

	* Makefile.in: Install the e2p.h header.
	
	* e2p.h, pf.c (print_flags): Change the third parameter of
		print_flags() to be an option parameter, although we only
		support one option at this point.

	* pf.c (print_flags): Updated to use a more generic structure for
		storing the ext2 inode flags.  Add support for the
		(current) set of compression flags.  
	
1999-11-19    <tytso@valinux.com>

	* 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-26    <tytso@valinux.com>

	* feature.c: Fix GCC warnings; add const to the char * types in
		the function prototypes for e2p_feature2string and
		e2p_edit_feature.

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

	* Release of E2fsprogs 1.16

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

	* feature.c (e2p_edit_feature), e2p.h: Add a new argument which
		allows the calling application to limit what features the
		user is allowed to set or clear using this function.
		Also add support for comma separated lists.

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

	* Makefile.in, feature.c, e2p.h: New file which is used for
		displaying and editing superblock feature sets.

	* ls.c (print_features, list_super): Add new function
		print_features which is used to display the feature
		bits in the superblock.

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

	* Release of E2fsprogs 1.15

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

	* Release of E2fsprogs 1.14

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

	* uuid.c: Use asm/types.h instead of linux/types.h, to be
		consistent with other locations where we've had to do this
		to work around glibc.

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

	* Release of E2fsprogs 1.13

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

	* Makefile.in: Updated dependencies.

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: Change to use new installation directory variables
		convention.  Fix uninstall rules to take $(DESTDIR) into
		account.

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

	* getversion.c (getversion): Return 0 if there's no error.

	* fgetversion.c (fgetversion): Pass the address of the temporary
		variable instead of the unitialized variable to the
		EXT2_IOC_GETVERSION ioctl.

Mon Mar  9 08:05:30 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* fgetflags.c, fgetversion.c, fsetflags.c, fsetversion.c,
		getflags.c, getversion.c, setflags.c, setversion.c:
		The ext2 version and flags ioctl's take an int *, not a
		long *.  Fix library to use the correct type, so we don't
		have problems on the Alpha.

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

	* Release of E2fsprogs 1.11

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

	* Release of E2fsprogs version 1.10

Wed Apr 23 22:41:55 1997  Theodre Ts'o  <tytso@localhost.mit.edu>

	* ls.c (list_super): Add #ifdef's so it will compile under 1.2.13

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

Sat Apr  5 11:48:03 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* ls.c (list_super): Display the filesystem revision and any
		features that might be implemented.

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

	* Release of E2fsprogs version 1.07

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

	* uuid.c: Include string.h, since we use memcpy().

Wed Jan  1 23:47:22 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* ls.c (list_super): Copy times from the superblock to a time_t
 		variable.  (The alpha has different sizes for time_t and
 		the time in the superblock.)

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

	* Release of E2fsprogs version 1.06

Sun Sep 22 16:20:12 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* pf.c: Add support for the 'A' (no atime) flag.

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

	* Release of E2fsprogs version 1.05

Sat Sep  7 14:48:35 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* ls.c (interval_string): Pretty print the check interval.

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

	* ls.c (list_super): Display the OS, volume label, last mounted,
 		and UUID field if present.

Mon Jun 24 09:55:58 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>

	* ps.c, pf.c, pe.c, ls.c, setversion.c, setflags.c, getversion.c, 
		fsetversion.c, fsetflags.c, fgetversion.c, fgetflags.c,
		getflags.c: Remove include of ext2_fs.h, since it's
		included by e2p.h; this also solves a sys/types.h vs
		linux/types.h inclusion ordering problem with the GNU libc.

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

	* Release of E2fsprogs version 1.04

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

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
		printing the reserved group gid.

Fri Oct 27 18:07:48 1995    <tytso@rsts-11.mit.edu>

	* iod.c (iterate_on_dir): Don't assume that d->reclen is the size
		of the dirent structure; it isn't under Linux.

Mon Sep  4 21:43:53 1995  Remy Card  <card@bbj>

	* Makefile.in: Added support for BSD shared libraries.

Fri Aug 11 08:36:40 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>

	* setflags.c: #include <sys/types.h> before including <sys/stat.h>

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

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

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

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

Thu Jun 15 23:41:20 1995  Remy Card  <card@bbj>

	* Makefile.in: Added support for ELF shared libraries.

Mon Jun 12 08:34:44 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>

	* e2p.h: Move <direct.h> after <stdio.h>

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

	* iod.c (iterate_on_dir): If struct dirent has a d_namlen field,
	assume that actual dirent entries may be larger than the structure
	(by the name field), and take extra care deal with this case.
	This code assumes that d_reclen is a valid dirent field.
	Also, don't include <dirent.h>, as e2p.h already does.

	* fgetversion.c (fgetversion): Only use the ext2 ioctl if it
	doesn't cause a compile-time barf, otherwise just return EOPNOTSUPP.
	* getversion.c (getversion): Ditto.
	* fsetversion.c (fsetversion): Ditto.
	* setversion.c (setversion): Ditto.
	* fsetflags.c (fsetflags): Use chflags instead of the ext2 ioctl
	if possible, and otherwise only use the ioctl if it doesn't barf.
	* setflags.c (setflags): Ditto (with fchflags).
	* fgetflags.c (fgetflags): Use the stat st_flags field instead of
	the ext2 ioctl if possible, and otherwise only use the ioctl if it
	doesn't barf.
	* getflags.c (getflags): Ditto.

	* e2p.h: Include <sys/types.h>, as some <dirent.h>s need it.
	* ls.c: Move the include of <sys/types.h> to where <grp.h> can see it.

	* Makefile.in: Rewritten to conform to GNU coding standards and
	support separate compilation directories.

Mon Nov  7 21:59:12 1994  Remy Card  <card@bbj>

	* ls.c (list_super): List the new fields s_def_resuid and
	s_def_resgid.

	(print_user): New function which prints the uid and the user name.

	(print_group): New function which prints the gid and the group name.

Wed Aug 17 21:50:39 1994  Remy Card  (card@bbj)

	* pf.c (print_flags): New attributes are recognized and a long
	format can be used.


