{
unsigned long long blocksize;
char disk_name[256];
+ cu_mount_t *mnt_dup_ptr;
uint64_t blk_free;
uint64_t blk_reserved;
uint64_t blk_used;
- if (ignorelist_match (il_device,
- (mnt_ptr->spec_device != NULL)
- ? mnt_ptr->spec_device
- : mnt_ptr->device))
+ char const *dev = (mnt_ptr->spec_device != NULL)
+ ? mnt_ptr->spec_device
+ : mnt_ptr->device;
+
+ if (ignorelist_match (il_device, dev))
continue;
if (ignorelist_match (il_mountpoint, mnt_ptr->dir))
continue;
if (ignorelist_match (il_fstype, mnt_ptr->type))
continue;
+ /* ignore duplicates */
+ for (mnt_dup_ptr = mnt_ptr; mnt_dup_ptr != NULL; mnt_dup_ptr = mnt_dup_ptr->next)
+ {
+ if (by_device) {
+ if (strcmp (mnt_ptr->spec_device, mnt_dup_ptr->spec_device) == 0)
+ continue;
+ }
+ else
+ {
+ if (strcmp (mnt_ptr->dir, mnt_dup_ptr->dir) == 0)
+ continue;
+ }
+ }
+
if (STATANYFS (mnt_ptr->dir, &statbuf) < 0)
{
char errbuf[1024];
if (by_device)
{
/* eg, /dev/hda1 -- strip off the "/dev/" */
- if (strncmp (mnt_ptr->spec_device, "/dev/", strlen ("/dev/")) == 0)
- sstrncpy (disk_name, mnt_ptr->spec_device + strlen ("/dev/"), sizeof (disk_name));
+ if (strncmp (dev, "/dev/", strlen ("/dev/")) == 0)
+ sstrncpy (disk_name, dev + strlen ("/dev/"), sizeof (disk_name));
else
- sstrncpy (disk_name, mnt_ptr->spec_device, sizeof (disk_name));
+ sstrncpy (disk_name, dev, sizeof (disk_name));
if (strlen(disk_name) < 1)
{
}
/* inode handling */
- if (report_inodes)
+ if (report_inodes && statbuf.f_files != 0 && statbuf.f_ffree != 0)
{
uint64_t inode_free;
uint64_t inode_reserved;