-*- outline -*-

* Release 0.8.8
** October 22, 2025.

** Bugs fixed:

- An excluded but missing file caused tdiff to exit with a failure
  code.
- Memory corruption could occur if a symlink target string size is a
  multiple of 1024 (unlikely, symlink lengths are typically limited to
  1024 or less).
- Regressions (`make check`) now run without errors on MacOSX.

** Improvements:

- Code refactoring and cleanups.
- Open files at most once (speedup).
- m4 macros have been moved to a sub-module.

* Release 0.8.7
** January 30, 2024.

** Bugs fixed:

- Ignore `trusted.SGI_ACL_DEFAULT` default ACL (XFS-specific).
- Do not update access time when comparing symbolic links
  (system-dependent, Linux only).

** Improvements:

- Compare ACLs faster if acl_cmp() is available.
- Improve test suite portability on *BSD.
- Android build now defaults to statically linked executable.
- Test suite skips some time and block related tests on problem
  platforms.

* Release 0.8.6
** May 20, 2022.

** Bugs fixed:

- Handle mallinfo2() and glibc 2.34.
- Make getdents64 work on Linux again.

* Release 0.8.5
** November 1, 2019.

** Bugs fixed:

- Minor bug fixes terminal width handling.
- Improvements in .spec cross-distribution compatibility.

* Release 0.8.4
** June 14, 2019.

** New features:

- A new -O/--follow-symlinks option has been implemented.

** Bugs fixed:

- Minor bug fixes in zsh completion.

* Release 0.8.3
** May 22, 2019.

** Bugs fixed:

- Fix rare file descriptor leak on directory enumeration failure.

- Fix other inconsequential
  [Coverity](https://scan.coverity.com/)-detected errors.

* Release 0.8.2
** May 12, 2019.

** Bugs fixed:

- Fix missing xattr feature on Android.

** Other changes:

- Provide a build script for building all Android targets.

* Release 0.8.1
** May 7, 2019.

** Bugs fixed:

- tdiff could fail on Linux with O_NOATIME support when comparing
  files or reading directories not owned by the invoking user, when
  not running as root.

** Other changes:

- Specify better tdiff's behavior with regards to O_NOATIME.
- Spec file now BuildRequires fakeroot.
- Enhanced test suite / regressions.
- Don't abort() on unexpected state, exit cleanly.
- Fix nanosecond resolution detection in regressions.

* Release 0.8
** May 3, 2019.

** New features:

- The -e/--hardlinks option has been implemented: tdiff can now
  compare hard link sets between both directories and report which
  hard links are only in one of the directories.

** User-visible changes:

- Some options have been renamed for consistency with the stat(2)
  structure member names, and others to avoid non-standard options.

  | Old option (before 0.8)  | New option (0.8 and later) | Notes                        |
  |--------------------------|----------------------------|------------------------------|
  | -r/-R                    | -y/-Y                      | atime check                  |
  | -o/-O/--owner/--no-owner | -u/-U/--uid/--no-uid       | file user id                 |
  | --group/--no-group       | --gid/--no-gid             | file group id                |
  | --nlinks                 | --nlink                    | hard link count              |
  | -a/--all                 | -6/--preset default        | default option state         |
  | -A/--no-all              | -0/--preset none           | clear all comparison toggles |
  | -&vert;                  | -o                         | file mode OR bit mask        |
  | -&                       | -a                         | file mode AND bit mask       |

- A lot of presets have been added, replacing the -a/--all and
  -A/--no-all options.  They can be used numerically (-3) or by name
  (-p owner/--preset owner)

- tdiff --version now reports the stat time granularity (seconds or
  microseconds).

- A message is printed when a comparison is skipped or sub-trees are
  pruned because they cannot be read.

- The README and NEWS files are now installed in
  `$prefix/share/doc/tdiff`.

- HTML and PDF versions of the manual page can optionally be installed
  by running `make install-html` or `make install-pdf`.

** Bugs fixed:

- Fix compilation error on systems supporting st_xtimespec stat
  structure members.

- tdiff's exit status was not always consistent with the documented
  behavior, this is now fixed.

- Fix crash with the -x/--exec or -w/--exec-always command lines do
  not end with a semicolon.

** Other changes:

- Manual page improvements and updates.
- Test suite (`make check`) improvements.
- Zsh completion function improvements.
- Lots of changes under the hood.

* Release 0.7.2
** April 30, 2019.

- Fix crash when an unreadable directory is encountered.
- Fix regression failures on odd systems.
- Fix display overflow in --version.

* Release 0.7.1
** April 27, 2019.

- Fixed rare bug where files could be skipped (and misreported as
  having no differences) if two files with the name inode number but
  with different device numbers were scanned within the second
  argument's sub-tree.

* Release 0.7
** April 26, 2019.

** New features:

- Bash and Zsh completion functions are now included.

- A manual page is now included.

- New -W --always-exec-diff option.

** User-visible changes:

- The (unimplemented) option -e / --hardlinks has been (temporarily)
  removed.

- When reporting mode discrepancies (-m / --mode), if no mask is used
  with --mode-or or --mode-and, then masked values are not shown.

- The -| / --mode-or and -&amp; / --mode-and options now take their
  arguments as octal (no need to lead them with a zero to force octal
  parsing).

- The -p / --no-mmap option has been removed.

- Using the -v / --verbose option more than once now increases the
  logging level.

- The -V / --version option now prints compiled in features (ACLs,
  xattrs, etc.)

- The command specified in -w / --exec-always is not run anymore if
  both files to be compared are hard-links of each other.

- Updated BSD / MacOSX flags.

** Bugs fixed:

- Fixed bug where paths could be wrongly displayed (when one of the
  arguments was / or ../ for example).

- Change the inode cache hash function to DJB2 (performance).

- Times could sometimes be compared incorrectly.

- Compare symbolic links contents only when requested.

- Crash fixed when the command line for -x / --exec or -w /
  --exec-always did not reference both %1 and %2.

** Internal changes

- Move to Git, git-aware build scripts.

- Open files with O_NOATIME.

- Factorize some autoconf code into macros.

- Fix build errors when cross-compiling.

- Support getdents64 on Linux.

- Portability fixes for FreeBSD 12, MacOSX, Android, Solaris.

- Add test suite.

- Include RPM spec file.

* Release 0.2:
** January 31, 2014.

First public release.

Now includes support for ACLs, extended attributes, and link count.

--
LocalWords:  zsh hardlinks mmap ACLs xattrs MacOSX inode DJB2 NOATIME
LocalWords:  autoconf getdents64 FreeBSD Solaris tdiff atime uid gid
LocalWords:  nlinks nlink README xtimespec vert tdiff's html pdf SGI
LocalWords:  BuildRequires fakeroot xattr Coverity symlinks ACL XFS
LocalWords:  acl cmp mallinfo2 glibc symlink m4 SGI_ACL_DEFAULT
LocalWords:  system-dependent acl_cmp
