dfc 3.0.0 released

bringing lots of improvements, new features and bug fixes
Added by Robin Hahling almost 2 years ago


It's been only two months since last version of dfc was released. However, a new major version is already available!
dfc 3.0.0 brings a LOT of changes over the 2.x.x series and this explains the version bump.
Some statistics would probably give a better idea of what I mean (output of git diff v2.5.0 v3.0.0 --shortstat):

 38 files changed, 5232 insertions(+), 978 deletions(-)

General improvements

  • Internalization support: dfc can now be easily translated into other languages. Being a french native speaker, I already translated dfc into French. Of course, if you would like to contribute and translate dfc into a language you speak fluently, you are more that welcomed.
  • An optional configuration file has appeared. It allows you to change dfc colors, symbol used to draw the graphs, values from which usage is considered medium and high and colors used in HTML export. So yes, if Mac OSX user want to change the default '=' sign for a '$' sign, they can definitely do it. :P
  • Auto-adjust feature has been improved. Now, instead of arbitrary disabling options when it estimated that the width was too small, it computes the required width and disables options in a smart way until the output fits the terminal width. Of course, this behavior can still be disabled using the -f option.

Better platform support

  • Mac OSX users may now enjoy the -o option
  • DragonFly BSD support
  • NetBSD support
  • OpenBSD support

New options

  • -d option allows you to see... used size (true: it did not exist in previous releases of dfc !)
  • -e option allows you to export data to other formats. What does this mean? Instead of simply displaying information on your console, the data generated by dfc can now be exported CSV, TeX and HTML format. In my opinion, the most useful one probably is the HTML export. See an example of what it looks like with color and without color . It's now easy to imagine a cron job output results to HTML format and send it via e-mail or something of the kind.
  • -l option allows you to only show information about locally mounted file system (just like the old good df(1) does).
  • -p allows you to perform filtering based on file system name.
  • -q sorts the output based on file system name, file system type or mount point. For those interested, the algorithm used is a merge sort because I think it probably is one of the most efficient and easy to implement considering that the data is stored in a linked list structure (memory problem does not exist here as all it does is changing pointers (but the data to sort is very small anyway)).

Of course, all those new options are fairly well documented in the manpage.

Bug fixes

Codebase has been entirely reviewed and modified. So, with all those changes, some bugs may have been introduced even though I thoroughly tested dfc during the development process and spent the last 10 days hunting bugs. However, this release includes some bug fixes over 2.5.0.
The one worth to mention is a bug that was affecting FreeBSD users and was causing dfc to be really wrong (130% usage was possible...). This has of course been fixed in this release. Inodes count was also wrong on FreeBSD and is has also been fixed.

Thanks to the all of the contributors

This release has been marked by contributions from external users and I especially want to thank them for their contributions:

  • Sylvain Laperche who came up with a brilliant idea that makes dfc codebase easily maintainable even if new export options are added in the future. He also reviewed the source code and proposed patches.
  • Cyril Roelandt for various patches which brought initial support for html and tex export, support -o option for OSX, NetBSD port, etc.
  • Landry Breuil who provided a patch that brought initial support for OpenBSD and another one that fixed the bug causing wrong values to be displayed on *BSD platforms.
  • Baptiste Daroussin for maintaining dfc into FreeBSD ports and bringing advice and patches.
  • Khalid El Fathi for packaging dfc for Debian and reporting bugs.
  • Kevin Gillieron for reviewing the code and providing advice.

Final words

I think I also need to mention that due to the support of more platforms and the use of internalization support, I have switched from using a simple Makefile to using cmake. Therefore, compilation process has changed a little but all of this is explained in the README.

I had fun developing this version and I really hope that you will enjoy it! However, this will probably be the last major one as to my point of view, dfc is pretty much feature complete now. A 3.1.0 is planned but it will only bring small changes and improvements and no massive ones like those found in this release.