base64 no longer supports hex or oct --wrap parameters,
thus better supporting decimals with leading zeros.
+ df now prefers sources towards the root of a device when
+ eliding duplicate bind mounted entries.
+
** Improvements
du no longer stats all mount points at startup, only doing so
if (devlist)
{
+ bool target_nearer_root = strlen (devlist->me->me_mountdir)
+ > strlen (me->me_mountdir);
+ /* With bind mounts, prefer items nearer the root of the source */
+ bool source_below_root = devlist->me->me_mntroot != NULL
+ && me->me_mntroot != NULL
+ && (strlen (devlist->me->me_mntroot)
+ < strlen (me->me_mntroot));
if (! print_grand_total && me->me_remote && devlist->me->me_remote
&& ! STREQ (devlist->me->me_devname, me->me_devname))
{
else if ((strchr (me->me_devname, '/')
/* let "real" devices with '/' in the name win. */
&& ! strchr (devlist->me->me_devname, '/'))
- /* let a shorter mountdir win. */
- || (strlen (devlist->me->me_mountdir)
- > strlen (me->me_mountdir))
+ /* let points towards the root of the device win. */
+ || (target_nearer_root && ! source_below_root)
/* let an entry overmounted on a new device win... */
|| (! STREQ (devlist->me->me_devname, me->me_devname)
/* ... but only when matching an existing mnt point,