Package: durep
Version: 0.9-3
Severity: normal
Tags: patch upstream

Dear Maintainer,

"durep -hs 1G" does not work as expected, though the documentation says
it should:

dev2.iserv.eu ~ # durep --help | grep hide-size
  -hs, --hide-size=N[bkmg]      do not display entries using N Bytes/Kb/Mb/Gb

For example in this folder, durep -hs 1G will list both bigfile (as expected)
but also smallfile:

dev2.iserv.eu ~/test # ll
total 1.1G
-rw-r--r-- 1 root root 1.0G Mar  7 10:46 bigfile
-rw-r--r-- 1 root root 1.0M Mar  7 10:46 smallfile

dev2.iserv.eu ~/test # durep -hs 1G .
[ /var/lib/iserv/remote-support/iserv-martin.von.wittich/test     1.0G (2 
files, 0 dirs) ]
   1.0G [############################# ]  99.90% bigfile
   1.0M [                              ]   0.10% smallfile

The cause is a bug in the processSizeOption function in the durep code. The
code to handle gigabyte sizes is there, but it is never reached:

  if(defined $temp) {
    if($temp =~ m/^[kK]/) {
      return $size * 1024;
    }
    elsif ($temp =~ m/^[mM]/) {
      return $size * 1048576;
    }
    elsif ($temp =~ m/^[mM]/) {
      return $size * 1048576 * 1024;
    }
    return $size;
  }

I've attached a patch that fixes this. The fixed durep behaves as expected:

dev2.iserv.eu ~/test # ~/durep.fixed -hs 1G .
[ /var/lib/iserv/remote-support/iserv-martin.von.wittich/test     1.0G (2 
files, 0 dirs) ]
   1.0G [############################# ]  99.90% bigfile

-- System Information:
Debian Release: 8.7
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: i386 (x86_64)
Foreign Architectures: amd64

Kernel: Linux 3.16.0-4-amd64 (SMP w/4 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages durep depends on:
ii  debconf [debconf-2.0]  1.5.56
ii  perl                   5.20.2-3+deb8u6

Versions of packages durep recommends:
ii  libmldbm-perl  2.05-1

durep suggests no packages.

-- debconf information:
  durep/makereports: false
  durep/filesystems: .
* durep/httpfileroot:
--- /usr/bin/durep	2014-08-02 11:19:05.000000000 +0200
+++ durep.fixed	2017-03-07 10:43:16.631568385 +0100
@@ -375,7 +375,7 @@
     elsif ($temp =~ m/^[mM]/) {
       return $size * 1048576;
     }
-    elsif ($temp =~ m/^[mM]/) {
+    elsif ($temp =~ m/^[gG]/) {
       return $size * 1048576 * 1024;
     }
     return $size;

Reply via email to