CHANGES
    4.51                                    2021-11-8
        Handle EPERM errors.

    4.50                                    2021-4-5
        JSON: Exclude extraneous format characters from the json output.
        JSON: Fix quoting around human-readable values.
        Totals: Support APFS filesystem.
        Mac OS: Put time machine filesystems on the ignore list.
        Linux: Put filesytems using 'tmpfs' or 'cgroup' as the
          device name on the ignore list.
        Solaris: Put filesystems using 'swap' as the device
          name on the ignore list.

    4.49                                    2021-3-16
        Added the -j (--json-output) option to output json data.
        Internal code cleanup.

    4.48.0.1                                2021-1-30
        Update di.spec.
        Update mkconfig to version 2.6.3.

    4.48                                    2020-6-3
        disable spurious compiler warnings.
        Various build fixes.
        make test no longer fails if perl is not present.
        Updated mkconfig to version 2.3.

    4.47.3                                  2019-12-23
        Fixed missing link flags for clang.

    4.47.2                                  2019-10-30
        Minor makefile cleanup.

    4.47.1                                  2019-6-25
        Update mkconfig to version 2.1.1 (fixes build on 32-bit).
        Add configs/config.ms.cl (visual studio definitions).

    4.47                                    2018-8-12
        Fixed bugs located by scan.coverity.com.
          This should fix a numeric sort bug.
        Update mkconfig to version 2.0.0 and make changes to support it.
        Get perl extension build working again.

    4.46                                    2018-4-11
        Tcl: Fix bad allocation.
        Tcl: Raise errors rather than exiting.
        Exit program when incorrect options are specified.
        Update mkconfig to version 1.31.
        Add missing mkconfig/runtests.sh.

    4.45                                    2018-4-10
        Update mkconfig to version 1.30 to fix modern libintl.h/printf tests.

    4.44                                    2017-5-23
        Fixed check of exabyte sized filesystems.  The signed check now
          only checks for -1 and -2; there could still be situations
          where the overflow exactly matches these values.
        Added faster method for windows check for missing removable
          filesystems.

    4.43                                    2016-8-9
        Cleaned up some compiler warnings.
        Fixed memory allocation problem.
        Tcl interface fixes

    4.42                                    2016-2-22
        Fixed a parsing bug in the Tcl interface.
        Added a Perl interface.

    4.41                                    2016-1-24
        Fixed bug specifying more than one filesystem on the command line.
        Added sort by free space, total space.
        Updated manual page: missing, new sort options.

    4.40                                    2016-1-22
        Updated the Tcl interface to return the 'display' key as a list.

    4.39                                    2016-1-22
        Added a Tcl interface.
        Fixed CSV header to honor -n flag.
        Added -C, --csv-tabs to output CSV with tabs.
        Fixes for mingw (build, long double can't be printf'd).
        Update mkconfig to version 1.27

    4.38                                    2016-1-6
        Honor FreeBSD NO_PIE environment variable.
        Update mkconfig to version 1.26

    4.37                                    2015-10-18
        Fixed a problem when processing the DI_ARGS environment variable.
        Hardened compiler options: reference: http://wiki.debian.org/Hardening
        Code cleanup to fix compiler warnings.

    4.36                                    2015-5-18
        Updated test for NFS remote filesystems.

    4.35                                    2014-2-15
        Updates for Irix.
        Fixed a bug when -I/-x were specified in addition to a filespec.
        Updated build system to mkconfig-1.24

    4.34                                    2013-1-19
        When a filename is specified on the command line, attempt to choose
          the best filesystem to display when there are multiple choices.
        Error check realpath() return value.
        Only canonicalize device names if it has a trailing uuid.
        Add -R (--dont-resolve-symlink) option to turn off canonicalization.
        Clean up code to fix clang warnings.
        Minor updates to support Xenix.

    4.33                                    2012-11-15
        Recoded quota handling as information was improperly
          losing precision.
        Added support for dragonflybsd's vquotactl().
        Added support for hammer-pfs (pooled filesystems).
        Exclude rootfs, devfs, procfs, kernfs, ptyfs and devtmpfs by default.
        Minor updates to main makefile.
        Minor directory rearrangement for os-specific config files.
        Fixed possible case of systems with a memcpy macro and
           no library function.
        Make sure D tests are not run.
        HP-UX bcc seems to support long long after all.  This is on 11.11.
          Maybe the older versions did not?  No access to 10.20.
        Updated build system to mkconfig-1.22.

    4.32                                    2012-10-21
        Exclude rootfs by default.
        Canonacalize the special device name.
        Updated quota code for NetBSD 6 (quota_open() et.al.).
        Fixed AIX group quota check.
        Fixed AIX 7 support.  Unlike AIX 5, AIX 7 gives a permission
          denied error when a user tries to get their quota.
        Updated build system to mkconfig-1.21.

    4.31                                    2011-11-20
        Filesystems that would return a 'Permission Denied'
          are not displayed at all, even with -a.
        Fixed totals with pooled filesystems (when main pool not mounted).
        Fixed a very rare divide by 0 condition.
        Code cleanup.
        Updated build system to mkconfig-1.19.

    4.30                                    2011-10-8
        Added support for long options.
        GNU df compatible long options have been added and
          are processed appropriately.
        Removed program name settings from Makefile and di.c.
        Minor code cleanup.
        Added hp-ux bundled cc static target.
        Updated build system to mkconfig-1.18.

    4.29                                    2011-9-30
        Added the -c option to output in CSV format
           (request by H.Merijn Brand).
        Fixed bB format titles.
        Added checks to make sure required programs for
           build/install are present.
        Various fixes for HP-UX, ULTRIX, SCO OpenServer, UnixWare.
        Added pre-generated config.h files for ULTRIX.
        Updated build system to mkconfig-1.17.

    4.28                                    2011-9-11
        Fixed compiler warnings for 64-bit.
        Added support for DragonFlyBSD.
        Updated build system to mkconfig-1.15
          (Solaris 2.6 fixes; pdksh allowed)

    4.27                                    2010-12-29
        Rearranged directory structure.
        Added support for long double to hold zettas and yottas.
        Added support for the windows digital mars c compiler.
        Added a fix for windows removable drives.
        Rewrote snprintf macros as they didn't work on MacOSX.
        Fixed quotactl argument for systems w/o QCMD macro.
        Check for type of structure members and call the correct xdr
          function.
        Many minor fixes for compiler warnings.
        Fixed Makefiles to redirect 'cd' output (CDPATH).
        Updated build system to mkconfig 1.11.

    4.26                                    2010-7-25
        Fix FreeBSD 5 panic when trying to get quotas on devfs.
        Updated build system to mkconfig-1.10.

    4.25                                    2010-7-4
        Added support for quotas.
        Fix for Tru64 advfs pools.
        Fixed loopback filesystem (lofs/none) exclusion; enabled for
            all systems.
        Added an optional DI_LOCALE_DIR environment variable to
            point to the locale directory where di's messages
            are installed.
        Changed the sort to use strcoll() rather than strcmp().
        Updated build system to mkconfig-1.6.
        Removed turnoffwinapi.sh, hasnls.sh & turnoffnls.sh and updated
            to use new build system tools.
        Added dioptions.dat to control options.
        More fixes for totals in a pooled/non-pooled mix when pooled
            filesystems are not displayed.

    4.24                                    2010-5-14
        Added spanish translation (David Sastre).
        Update some column widths to help support spanish.
        Check mbrlen() return code.
        Fix turnoffnls.sh (broken during rewrite).
        Add missing defines in static configurations.
        Added turnoffwinapi.sh for cygwin.

    4.23                                    2010-5-10
        Fix internationalized strings to line up properly.
        Changed default block size output to -dH (scaled format 2).
        Brought up to date for AIX, Tru64.
        Added support for MinGW on Windows.
        Added support for QNX.
        Solaris 8 x86 w/gcc3 currently fails.

    4.22                                    2010-5-2
        Updated to use mkconfig 1.3.  Fixes problem
          with linking in unneeded libraries.
        Replaced hasnls program with a shell script.

    4.21                                    2010-4-11
        Fixed features/turnoffnls.sh.
        Makefile cleanup (Mike Frysinger).

    4.20                                    2010-3-7
        Added VMS.
        Fixed totals for pooled filesystems, again
          (incorrect sort, skipped fs, pooled fs on command line).
        Remove initial build script and use new mkconfig.
        Rewrite makefile.
        Moved mkconfig to its own package.
        Move regression tests into tests.d directory.
        Minor updates to manual page.

    4.19                                    2010-2-1
        Fix totals to add up when using small block sizes.
        Fix totals for mixed pooled and non-pooled filesystems.
        Add fix for automounted directories:
          https://bugzilla.redhat.com/show_bug.cgi?id=497830 (df)
        Builds on BSD 4.3.
        Changed format of config.h file.
        Code cleanup.

    4.18                                    2009-11-29
        Code cleanup.

        The default configuration method has been changed to
        use a shell script.  The perl configuration script is
        still available (./Build -mkpl).

    4.17                                    2009-11-22
        Totals have been changed to add up whatever filesystems
        are displayed.  This is more intuitive for the user.
        It is up to the user to exclude read-only filesystems
        (cdfs, iso9660), memory-based filesystems (memfs, mfs, tmpfs)
        and user filesystems (fuse*).  Excluding the 'fuse' type will
        exclude all fuse* filesystems.

        As before, only the main pool of a pooled filesystem is totaled.

        The build now works on unixware (getmntent is in libgen).
        The build now works on syllable.

        The default configuration method has been changed to
        use the perl script.  Removed iffe, as it doesn't support
        class testing.

    4.16                                    2009-9-20
        Fixed a nested macro issue on Mac OS X 10.6.
        Fixed bugs with filename arguments.

    4.15                                    2009-9-17
        Fixed filename argument w/non-printing filesystem.
        Build now works on Haiku.

    4.14                                    2009-9-10
        Code cleanup.
        Change size labels to match SI standards (1024 vs 1000).
        Build now works on Debian GNU-kFreeBSD.

    4.13                                    2008-5-25
        Fixed totals to correctly account for pooled filesystems.

    4.12                                    19 Jan 2008
        Change of e-mail addresses.

    4.11                                    29 May 2007
        Fixed minor bug for 'di -sn -t' introduced in 4.10.
        Code cleanup -- move global variables into local structures.
        Recoded sorting, added sort by filesystem type.

    4.10                                    24 Feb 2007
        Handle pooled filesystems so that the total space
        doesn't get added more than once.
        Compaq Tru64 advfs is untested.

    4.9                                     2 Nov 2006
        Fixed an uninitialized variable used for Solaris zones.
        Minor fixes to mkconfig.pl.

    4.8                                     5 Oct 2006
        Linux's statvfs() is not POSIX compliant and does not
        use f_frsize.  The correct value is returned in f_bsize.
        Since there's no way to tell which type of statvfs() is
        in use, we have to hard-code the logic for linux.
        This sucks.

        More minor improvements to mkconfig.pl.

        Add logic to find the correct msgfmt program to use.

    4.7                                     23 Sep 2006
        Changed the operation of the -a, -x and -I flags
        so that it is possible to specify -a and still exclude
        filesystems from the list.
        Added the -L flag to not check for duplicate filesystems.

    4.6                                     [3 Sep 2006]
        Improve mkconfig.pl configuration to be more robust,
        find needed libraries.  Improve mkconfig.pl portability.

    4.5                                     [29 Mar 2006]
        Fix uninitialized variable.
        Fix manual page formatting.

    4.4                                     [21 Nov 2005]
        Add zone support for Solaris (-z).
        Update mkconfig.pl for compatibility w/perl 5.005.

    4.3                                     [29 Oct 2005]
        Change -P option and POSIXLY_CORRECT environment
            variable to display POSIX standard output.
        Add 'a' and '3' format options to display %avail
            and %free space (request by Bill Poser).
        Add check and routine to use getvfsstat() for NetBSD 3.x.
        Add processing of DI_ARGS environment variable.

    4.2                                     [12 Oct 2005]
        Added -nonls argument to 'Build' to turn off all NLS.
        Add +DAportable for HP-UX 10.x.
        Add -qmaxmem=-1 for AIX.
        Fix compile warning in dilib.c for AIX.
        Improve tests for libintl.sl for HP-UX.
            Check /usr/local for libintl.sl also.
        Version number was inadverdently left as 4.1.

    4.1                                     [6 Aug 2005]
        Created a perl script as an alternative to iffe
            to create the config.h file.
        Internationalization configuration now works for Cygwin,
            FreeBSD, NetBSD and HP/UX.

    4.0                                     [26 Jul 2005]
        Metadist is no longer supported; Only the iffe configuration
            method is now available.
        Removed -h help flag, changed it to be scaled alternative 1
            display to match other 'df' programs.
        Alias -x to -i to match other 'df' programs. -x will be preferred.
            Old -x (debug) changed to -X.
        POSIX -dp flag was broken.  Removed.  Added -P option.
        Alias -F to -I for compatibility.
        Updates to manual page.
        Internationalization files are now automatically installed if the
            NLS routines are detected.

    3.11                                    [11 mar 2004]
        Fixed bug: checking mount options to see if partition
        was read-only (bsd style get/set/endmntent).

    3.10                                    [26 feb 2004]
        Added German .po file (Many thanks to Hartmut Haase).
        Added -64 to Build for 64 bit binaries.
        Added missing internationalization calls in di.c.

    3.9                                     [25 may 2003]
        Fixed bug with uninitialized 'dbsstr' variable.
        iffe: upgraded to 2002-03-06.
            Don't need to include stdio.h in most di.iffe tests.
            lib test fixed for cygwin.

    3.8                                     [12 jan 2003]
        Rewrote block size display processing.  It did not match the
        *BSD implementation of the BLOCKSIZE environment variable.
        Latest metaconfig (Configure)
        Add -k alias for -dk.

    3.7                                     [4 sep 2002]
        Check for initial '/' character in special device name
        before doing stat().   Otherwise we pick up normal files.
        Update iffe.
        Add exa, zetta, yotta support (-de, -dz, -dy).
        Add support for 1000 byte base block size (and others) (-b option).
        Add alternative scaled format (-dH, -H).

    3.6                                     [30 jul 2002]
        Change to use mntctl() in preference to set/get/endmntent()
            for AIX.
        AIX: fix to display hostname in special device name for
            remote mounts.
        README updated for cygwin Configure/configure problem.
        Workaround in di.h for cygwin/Configure getopt() problem.
        Converted all strcpy() to strncpy().

    3.5                                     [17 jul 2002]
        Change 'memfs' to 'mfs' for memory file system (FreeBSD).
            Not added to totals.
        Added License.
        Update to use snprintf if available.
        Update 'Configure' to match 'iffe' build as closely as possible.
        Fix C code to compile w/non-ansi compiler (HP-UX bundled).
        Many configuration fixes (hp-ux, aix, et.al.).

    3.4                                     [20 apr 2002]
        Fix bugs in include/ignore list generation.
        Rewrite ignore/include lists to allow multiple command line
            specification of ignore/include lists.
        Change so -f overrides DIFMT environment variable.
        Fix bugs in -s command line option.  Make more friendly.
        Add -H (-dh) scaled display format.
        nfs mounts are always remote.

    3.3                                     [1 apr 2002]
        Bug fixes for AIX, HP/UX installation.

    3.2                                     [27 feb 2002]
        Add internationalization code.
        Update windows code.
        cleanup.

    3.1                                     [15 nov 2001]
        Bug fixes for SunOS 4.

    3.0                                     [7 aug 2001]
        Added getfsstat() for Compaq Tru-64 (and FreeBSD, etc.) systems.
        Compaq Tru-64 code cleaned up.
        Thanks to Compaq for their test drive program!
        More cleanup.  Added iffe configuration.

    2.4                                     [12 feb 2001]
        Fixed so di doesn't statfs() the disks it doesn't need to.
        Removed fs basetype stuff.
        Split out disk routines into separate module.  Lots of cleanup.
        Totals: fix to take into account block size of partition.
        Totals: ignore read-only, partitions not normally printed.
        Totals: ignore memory filesystems (tmpfs, memfs).

    2.3                                     [24 feb 2000]
        Modified hints for solaris to do 64 bit compilation.
        Removed extra libc setting for linux.
        Added support for BeOS.  This required ansi function headers.

    2.2                                     [24 dec 1999]
        Hints for dec_osf added.
        Changed HAS_GETMNTINFOFSIZE to be preferred over
        HAS_GETMNTINFOBSIZE; modified bsdos hints appropriately.
        Look for <sys/fs_types.h> include file.

    2.1                                     [24 dec 1999]
        Added +DAportable for HP-UX.
        Hints for openbsd added.
        Made installperm as separate target in makefile.
        Modified duplicate checking slightly.
        Changed MNT_NOWAIT to MNT_WAIT.  This will work better
        on FreeBSD.  Hopefully will work w/nfs mounts.

    2.0                                     [15 apr 1999]
        Now uses dist 3.0PL70 for configuration.
        Duplicate filesystems (automounted) are not displayed.
        This probably does not work for Digital's advfs.

    1.24                                    [never released]
        Added Windows w/gcc.
        The Solaris 2.6 statvfs() bug has a patch out for it.
        Patch #105572-05 (?).

    1.23                                    [6 jul 1998]
        Improved Windows.

    1.22                                    [1 jul 1998]
        Added Windows.  Don't know the routines to get the number
        of file slots or the file system type (FAT12/16/32).
        Changed default to display megabytes.

    1.21                                    [8 sep 1997]
        Fixed AIX typo.
        Linux 2.x

    1.20
        Added Solaris large file system support.  Note that
        ver 2.6 Beta_Update has a bug in the statvfs() routine,
        and the non-root available disk space is improperly
        reported.

    1.19                                    [4 feb 1996]
        Added mount time, mount options.  Link di to the mi command.

    1.18                                    [21 aug 1995]
        Fixed some ignore/include list problems.  Fixed local mount
        flag for OSF/1.

    1.17                                    [10 aug 1995]
        Changed block values from unsigned long to doubles so that we
        can display using different block sizes (-d flag).
        Added -l flag for local filesystems only.

    1.16                                    [8 aug 1995]
        Added A/UX  [ blemoine@-NOSPAM-atheist.tamu.edu (Brett G. Lemoine) ]
        Added convex [ "Schilperoort J.W." <J.W.Schilperoort@-NOSPAM-research.ptt.nl> ]

    1.15                                    [1 aug 1995]
    	Fixed bsdi 1.x and bsdi 2.x.  Fragments weren't supported.
    	Fixed FreeBSD 1.x and 2.x; same problem.
        Changed sco_sl makefile entry.

    1.14                                    [22 jul 1995]
        Fixed problem with display widths in conjunction with
        ignore/include lists.

    1.13                                    [17 mar 1995]
        changed default length of filesystem type field to 7.
        new debug 'all' format.
        check for 0 fragment size; replace w/block size if we have it.

    1.12                                    [28 jan 1995]
        sco nfs 'nothing' fix.
        freebsd 2.x; better freebsd filesystem types.

    1.11                                    [3 dec 1994]
        bsdi

    1.10                                    [24 nov 1994]
        added freebsd.

    1.9                                     [30 aug 1994]
        makefile fixes.

    1.8                                     [28 may 1994]
        removed mount option junk.
        added AIX.

    1.7                                     [2 may 1994]
        cleaned up sgi in the makefile.
        changed linux to be w/o need_statfs_defs.
        solaris cdrom returning all sorts of negative values.
        T format option.
        mount options.
        SunOs filesystem type info.

    1.6                                     [never released]
        ultrix bug fixes.
        add dynix to makefile.

    1.5                                     [26 mar 1994]
        sun had f_bfree instead of f_bavail!
        xenix, linux, sco
        -w, -W, -B.
        fixed width for -f M, -f S.
        usage.
        Allow other characters in format string.
        1.51 (local, pat@rwing)
            SunOS *does* support filesystem type info.  Its all in the
            mntent structure, but requires a small bit of work (see source).

    1.4                                     [4 mar 1994]
        -f B
        bcopy.
        solaris cdrom reports -2 for free blocks.

    1.3                                     [3 mar 1994]
        Command line specification of filenames.
        sort output.
        osf/1, ultrix.
        -F, -f M, -F S.

    1.2                                     [2 mar 1994]
        # of inodes can be -1L
        return code for getDiskInfo shouldn't be checked.
        name of mount point must be maxpathlen.
        error conditions.
        pyramid.

    1.1                                     [27 feb 1994]
        initial release

