I just released version 3.1.1. It contains minor fixes, listed in the changelog file, namely:
- fix a typo in the compilation instructions in the readme file
- fix an old bug (4+ years) which messed up colors in HTML export when a configuration file is used
- fix a bug which prevented some file systems to be displayed when the filtering option was used
- fix a bad implicit fallthrough
Download link: v3.1.1
Thanks to George Angelopoulos and Pierre-Yves (kyrios123) for their contributions!
Last major dfc release was almost 5 years ago. Needless to say that it was time for a new release! In the future, I plan to release more often with less features. This will be easy now that the major code refactoring I wanted to do is done. Therefore, I renamed the stable
branch to old-stable
and the master
branch is now the stable branch.
This release contains a number of new features, a bunch of bug fixes and some (minor) incompatible changes.
Download link: v3.1.0
New features¶
- Major code refactoring: now, platform specific code is clearly separated (see
src/platform
), the auto-adjust feature should also be more accurate.
* Solaris support.
* The CSV separator can be specified via the configuration file (defaults to ",").
* In addition to the already export formats (CSV, text, tex and HTML), dfc is able to export the information as JSON (no additional dependency required).
* Add support for bold font via the configuration file
* Add -M option to disable "Mounted On" information.
* Add Dutch translation.
* Add git revision to the dfc version string for development versions of dfc.
A number of bugs were also fixed:¶
- Fix type not respecting -W flag.
* Fix alignment issue when both -M and -o options are specified.
* Plug a few memory leaks.
* Escape mount options with "" when exporting to CSV as mount options may typically contain a ",".
* Linux: avoid stat'ing remote file system when local flag is given (prevents dfc from potentially hanging on remote file systems).
* Consider nfs4 a remote filesystem.
* Correctly link math library (fixes build on, at least, Ubuntu).
* Remove a few extra incorrect CSV separators in CSV export mode.
* Silently ignore EACCESS error on statvfs.
* Fix build failure on Hurd.
* Fix build failure on kFreeBSD.
And some minor incompatible changes:¶
- Remove "GRIM" compile option - compile flags previously set by "grim" are now defaults.
* Stop translating color names in the configuration file - now, only "English" names are understood.
Thanks¶
As always, thanks to all the dfc contributors!
- Adam Borowski
* Alexandre Perrin
* Baptiste Daroussin
* Cyril Roelandt
* Frank Villaro-Dixon
* Kevin Gillieron
* Landry Breuil
* Matthieu Le Jeune
* Sylvain Laperche
* Tobias Patzl
* Michiel Pater
* Andreas Rönnquist
And next?¶
The next dfc release will probably (finally) accept mount points as argument, just like regular df does. This is a long awaited feature that I miss from dfc and that many people seem to want as well.
I just released version 3.0.5. It contains minor fixes, listed in the changelog file, namely:
- fixed initialization of LFS (see v3.0.2 release notes). LFS option as
existing in v3.0.2-v3.0.4 was just wrong: setting LFS option to false
would actually enable LFS option...
* do not install translated configuration files and man pages when NLS option
is disabled
* fixed typos in the man
Now, en route for version 3.1.0 which will bring more significant changes when available.
Version 3.0.4 of dfc
fixes compilation errors on (Dragonfly|Free|Net|Open)BSD introduced in 3.0.3 bugfix release. There is absolutely no difference compared to version 3.0.3 for Linux. I apologize for the inconvenience as this bug could be simply avoided if I tried compiling dfc
on a BSD system which I unfortunately haven't done prior to releasing version 3.0.3. This should not happen again in the future.
This dfc
update fixes several minor issues, including some related to memory management, minor security issues and some typos. One dfc
behavior changes a little: now, instead of exiting on error when a file system cannot be stated, it displays a warning message and tries to go on. Before this change, dfc
would act this way only when reading file system information was not possible due to permission issues.
This is not a major change but a small improvement which explains why it has been added to this bugfix release.
For the details:
- fixed warning message wrongly displayed when calling 'dfc -u h'
- fixed various typo fixes
- fixed some memory management issues
- fixed if tests on potentially NULL values
- fixed potential security holes (potentially exploitable buffer overflows
caused by misuse of printf function)
- fixed dfc hang on no more accessible remote file systems
- display a warning in any case when file system cannot be stated instead of
exiting on error
- updated license header and copyright year
Cheers and once again, thanks to all dfc
packagers for your work!
dfc
3.0.2 has just been released.
I highly encourage any package or port maintainer to update dfc
to this release.
It fixes 2 bugs: a minor one and a very annoying one affecting 32-bit host with volumes >= 4To that simply caused dfc
to fail getting volume information.
By the way, just to make things clear: I created a stable
branch in dfc
git repository. This branch receives only bug fixes and is used to maintain latest stable release of dfc
(currently version 3.0.x). I do not maintain the 2.5.x branch since version 3.0.x is out since version 3.0.0 was a major update bringing lots of changes in the code. Therefore, if your distribution still packages dfc
in version < 3.0.x, you should fill a bug report to your distribution's dfc
packager (I think Debian, Ubuntu and probably all their derivatives still package dfc
2.5.0) to inform about this.
Cheers
Hey,
I released a bugfix version of dfc
.
As the new changelog file (
#148) states, version 3.0.1 fixes two minor bugs:
- Fixed
CMake
minimal required version (#146). Changed from 2.8.0 to 2.8.4 which is actually the minimum version of CMake
that is able to build dfc
along with its translations.
- Fixed hyphens and spelling mistakes in manpages (#147 thanks Khalid)
I also have been reported that dfc
does not build on versions 7.x of FreeBSD (see #149). However, a proper fix still has to be found.
From now on, I'll start working on version 3.1.0 that already has a list of interesting and useful features (see roadmap). If you wish to see other features implemented in dfc
, do not hesitate to ask either by sending me an e-mail or opening a new feature request.
Cheers
Hi,
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.
Hi folks,
dfc
is nearing its 3.0.0 release. This one will bring lots of new features and improvements over 2.5.0 release and one of these is support for translation.
This means that dfc
is now easily translatable. However, to be available in many different languages, it needs... translators!
As a native French speaker, I already translated dfc
into French but this is the only language I am able to translate dfc
into (my German is probably not good enough).
So... if you are fluent in English and would like to translate
dfc
into your language, this is great! Here is how you should proceed:
- Pull the latest revision of
dfc
using the git repository.
- Read the
TRANSLATORS
file.
- Follow the instructions.
- Send me your translation using e-mail or through this website by creating a new issue with your translation files attached.
That's it. 1 hour should be enough to translate dfc
(it took me about 45 minutes for the French translation).
I will spend the next two weeks on optimizing dfc
and trying to find and fix bugs. If you send me your translation within this two weeks time frame, it'll be integrated into the 3.0.0
release. If you cannot, don't worry, it will then be added in a future release (like eventual 3.0.1).
Many contributors to thank for this release!
So... What's new?
- dfc now works on Mac OS (at least on OSX on which I tried successfully). It only misses the option to show mount options. Thanks to Matthieu Le Jeune who brought the idea.
- FreeBSD users may now enjoy the "show mount options" option. This was not implemented for FreeBSD in release 2.4.0. Thanks to Cyril Roelandt who wrote a function for that.
- The Makefile is now 100% BSD make compliant while still being GNU make compliant. No need for GNU make in order to build it on FreeBSD anymore. Thanks to Baptiste Daroussin for his patch (again!).
- There is one new option:
-W
prevents the names from being truncated. So if your path is so long that it would normally be truncated, you can still display it (at the risk of breaking the output a little).
- Perhaps the most noticeable change: the sign used in the graph has changed from
*
to =
. I think it makes it more readable and when I asked people around me, they all agreed. I hope you too think this is an improvement!
Some bugs were fixed:
- Paths that have more than 3
/
are not weirdly truncated anymore.
- No more overlap when using the
-o
option.
- A few other bug fixes not worth to mention here.
Apart from that, code has been largely re-organized to be less monolithic. I started dfc(1)
as a small project but by adding features at user's request it just kept getting bigger while still coded as a small program. I do not say that dfc(1)
is a large program but 1723 lines of code (as of this release) is too much to be all in one file. So now, it should be ready for future improvements.
This release should be the last one before 3.0.0 release unless someone helps me port dfc(1)
to OpenBSD and NetBSD. Porting to OpenBSD should not be difficult at all but it might cause a little more trouble for NetBSD.
I enjoy this new version of dfc
better than the previous one and I hope you too!