[dstat/f18] fixed inconsistency between man page and help (#852797)

Jiří Popelka jpopelka at fedoraproject.org
Mon Sep 3 12:45:59 UTC 2012


commit 877d021fd8474737b5bc5c85aa788a5c6e5670ef
Author: Jiri Popelka <jpopelka at redhat.com>
Date:   Mon Sep 3 14:38:23 2012 +0200

    fixed inconsistency between man page and help (#852797)

 dstat-0.7.2-bits.patch |  285 ++++++++++++++++++++++++++++++++----------------
 dstat-0.7.2-man.patch  |   23 ++++
 dstat.spec             |   10 ++-
 3 files changed, 221 insertions(+), 97 deletions(-)
---
diff --git a/dstat-0.7.2-bits.patch b/dstat-0.7.2-bits.patch
index 0a2ac0d..3e9c7fd 100644
--- a/dstat-0.7.2-bits.patch
+++ b/dstat-0.7.2-bits.patch
@@ -1,106 +1,199 @@
---- dstat-0.7.2/dstat.orig	2010-06-11 08:08:01.000000000 +0200
-+++ dstat-0.7.2/dstat	2010-08-24 09:50:39.000000000 +0200
-@@ -90,6 +90,8 @@ class Options:
-         self.output = False
-         self.pidfile = False
-         self.profile = ''
-+        self.netbits = False
-+        self.diskbits = False
- 
-         ### List of available plugins
-         allplugins = listplugins()
-@@ -111,9 +113,9 @@ class Options:
-         }
+diff -up dstat-0.7.2/docs/dstat.1.bits dstat-0.7.2/docs/dstat.1
+--- dstat-0.7.2/docs/dstat.1.bits	2010-06-15 00:26:19.000000000 +0200
++++ dstat-0.7.2/docs/dstat.1	2012-09-03 14:26:57.930801564 +0200
+@@ -137,6 +137,9 @@ expand \-C, \-D, \-I, \-N and \-S discov
+ \-v, \-\-vmstat
+ equals \-pmgdsc \-D total
+ .TP
++\-\-bits
++force bits for values expressed in bytes
++.TP
+ \-\-float
+ force float values on screen (mutual exclusive with
+ \fB\-\-integer\fR)
+diff -up dstat-0.7.2/dstat.bits dstat-0.7.2/dstat
+--- dstat-0.7.2/dstat.bits	2010-06-11 08:08:01.000000000 +0200
++++ dstat-0.7.2/dstat	2012-09-03 14:23:42.056447576 +0200
+@@ -72,6 +72,7 @@ pluginpath = [
+ class Options:
+     def __init__(self, args):
+         self.args = args
++        self.bits = False
+         self.blackonwhite = False
+         self.count = -1
+         self.cpulist = None
+@@ -112,7 +113,7 @@ class Options:
  
          try:
--            opts, args = getopt.getopt(args, 'acdfghilmno:prstTvyC:D:I:M:N:S:V',
+             opts, args = getopt.getopt(args, 'acdfghilmno:prstTvyC:D:I:M:N:S:V',
 -                ['all', 'all-plugins', 'bw', 'blackonwhite', 'debug',
--                 'filesystem', 'float', 'full', 'help', 'integer',
-+            opts, args = getopt.getopt(args, 'abcdfghilmno:prstTvyC:D:I:M:N:S:V',
-+                ['all', 'all-plugins', 'bw', 'bits', 'blackonwhite', 'debug',
-+                 'filesystem', 'float', 'full', 'help', 'integer', 'netbits', 'diskbits',
++                ['all', 'all-plugins', 'bits', 'bw', 'blackonwhite', 'debug',
+                  'filesystem', 'float', 'full', 'help', 'integer',
                   'list', 'mods', 'modules', 'nocolor', 'noheaders', 'noupdate',
                   'output=', 'pidfile=', 'profile', 'version', 'vmstat'] + allplugins)
-         except getopt.error, exc:
-@@ -179,6 +181,13 @@ class Options:
+@@ -175,6 +176,8 @@ class Options:
+                 plugins = {}.fromkeys(allplugins).keys()
+                 plugins.sort()
+                 self.plugins += plugins
++            elif opt in ['--bits']:
++                self.bits = True
+             elif opt in ['--bw', '--black-on-white']:
                  self.blackonwhite = True
              elif opt in ['--debug']:
-                 self.debug = self.debug + 1
-+            elif opt in ['--bits', '-b']:
-+                self.netbits = True
-+                self.diskbits = True
-+            elif opt in ['--netbits']:
-+                self.netbits = True
-+            elif opt in ['--diskbits']:
-+                self.diskbits = True
-             elif opt in ['--float']:
-                 self.float = True
-             elif opt in ['--integer']:
-@@ -268,9 +277,11 @@ Dstat options:
-      -C 0,3,total           include cpu0, cpu3 and total
-   -d, --disk             enable disk stats
-      -D total,hda           include hda and total
-+     --diskbits             output disk stats in bits instead of bytes
-   -g, --page             enable page stats
-   -i, --int              enable interrupt stats
-      -I 5,eth2              include int5 and interrupt used by eth2
-+     --netbits              output net stats in bits instead of bytes
-   -l, --load             enable load stats
-   -m, --mem              enable memory stats
-   -n, --net              enable network stats
-@@ -282,6 +293,7 @@ Dstat options:
-   -t, --time             enable time/date output
-   -T, --epoch            enable time counter (seconds since epoch)
-   -y, --sys              enable system stats
-+  -b, --bits             output disk/net stats in bits instead of bytes
+@@ -301,6 +304,7 @@ Dstat options:
+   -f, --full             automatically expand -C, -D, -I, -N and -S lists
+   -v, --vmstat           equals -pmgdsc -D total
+ 
++  --bits                 force bits for values expressed in bytes
+   --float                force float values on screen
+   --integer              force integer values on screen
+ 
+@@ -428,10 +432,10 @@ class dstat:
+         ret = theme['title']
+         if isinstance(self.name, types.StringType):
+             width = self.statwidth()
+-            return ret + self.name[0:width].center(width).replace(' ', '-') + theme['default']
++            return ret + self.name[0:width].center(width, char['space']).replace(' ', '-') + theme['default']
+         for i, name in enumerate(self.name):
+             width = self.colwidth()
+-            ret = ret + name[0:width].center(width).replace(' ', '-')
++            ret = ret + name[0:width].center(width, char['space']).replace(' ', '-')
+             if i + 1 != len(self.name):
+                 if op.color:
+                     ret = ret + theme['frame'] + char['dash'] + theme['title']
+@@ -443,13 +447,13 @@ class dstat:
+         ret = ''
+         if isinstance(self.name, types.StringType):
+             for i, nick in enumerate(self.nick):
+-                ret = ret + theme['subtitle'] + nick[0:self.width].center(self.width) + theme['default']
++                ret = ret + theme['subtitle'] + nick[0:self.width].center(self.width, char['space']) + theme['default']
+                 if i + 1 != len(self.nick): ret = ret + char['space']
+             return ret
+         else:
+             for i, name in enumerate(self.name):
+                 for j, nick in enumerate(self.nick):
+-                    ret = ret + theme['subtitle'] + nick[0:self.width].center(self.width) + theme['default']
++                    ret = ret + theme['subtitle'] + nick[0:self.width].center(self.width, char['space']) + theme['default']
+                     if j + 1 != len(self.nick): ret = ret + char['space']
+                 if i + 1 != len(self.name): ret = ret + theme['frame'] + char['colon']
+             return ret
+@@ -679,7 +683,7 @@ class dstat_cpu24(dstat):
+ class dstat_disk(dstat):
+     def __init__(self):
+         self.nick = ('read', 'writ')
+-        self.type = 'd'
++        self.type = 'b'
+         self.diskfilter = re.compile('^(dm-\d+|md\d+|[hsv]d[a-z]+\d+)$')
+         self.open('/proc/diskstats')
+         self.cols = 2
+@@ -745,7 +749,7 @@ class dstat_disk(dstat):
+ class dstat_disk24(dstat):
+     def __init__(self):
+         self.nick = ('read', 'writ')
+-        self.type = 'd'
++        self.type = 'b'
+         self.diskfilter = re.compile('(dm-\d+|md\d+|[hsv]d[a-z]+\d+)')
+         self.open('/proc/partitions')
+         if self.fd and not self.discover:
+@@ -810,7 +814,7 @@ class dstat_disk24(dstat):
+ class dstat_disk24old(dstat):
+     def __init__(self):
+         self.nick = ('read', 'writ')
+-        self.type = 'd'
++        self.type = 'b'
+         self.diskfilter = re.compile('(dm-\d+|md\d+|[hsv]d[a-z]+\d+)')
+         self.regexp = re.compile('^\((\d+),(\d+)\):\(\d+,\d+,(\d+),\d+,(\d+)\)$')
+         self.open('/proc/stat')
+@@ -1188,7 +1192,7 @@ class dstat_mem(dstat):
+ class dstat_net(dstat):
+     def __init__(self):
+         self.nick = ('recv', 'send')
+-        self.type = 'd'
++        self.type = 'b'
+         self.totalfilter = re.compile('^(lo|bond\d+|face|.+\.\d+)$')
+         self.open('/proc/net/dev')
+         self.cols = 2
+@@ -1599,6 +1603,7 @@ char = {
+     'space': ' ',
+     'dash': '-',
+     'plus': '+',
++    'underscore': '_',
+ }
+ 
+ def set_theme():
+@@ -1863,7 +1868,7 @@ def cprintlist(varlist, type, width, sca
+     ret = sep = ''
+     for var in varlist:
+         ret = ret + sep + cprint(var, type, width, scale)
+-        sep = ' '
++        sep = char['space']
+     return ret
+ 
+ def cprint(var, type = 'f', width = 4, scale = 1000):
+@@ -1882,14 +1887,18 @@ def cprint(var, type = 'f', width = 4, s
+     ### If this is a negative value, return a dash
+     if var < 0:
+         if unit:
+-            return theme['error'] + '-'.rjust(width) + ' ' + theme['default']
++            return theme['error'] + '-'.rjust(width, char['space']) + char['space'] + theme['default']
+         else:
+-            return theme['error'] + '-'.rjust(width) + theme['default']
++            return theme['error'] + '-'.rjust(width, char['space']) + theme['default']
+ 
+-    if base == 1024:
+-        units = ('B', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y')
++    if base != 1024:
++        units = (char['space'], 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y')
++    elif op.bits and type in ('b', ):
++        units = ('b', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y')
++        base = scale = 1000
++        var = var * 8.0
+     else:
+-        units = (' ', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y')
++        units = ('B', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y')
+ 
+     if step == op.delay:
+         colors = theme['colors_lo']
+@@ -1901,11 +1910,11 @@ def cprint(var, type = 'f', width = 4, s
+         cunit = theme['unit_hi']
+ 
+     ### Convert value to string given base and field-length
+-    if op.integer and type in ('d', 'p', 'f'):
++    if op.integer and type in ('b', 'd', 'p', 'f'):
+         ret, c = dchg(var, width, base)
+-    elif op.float and type in ('d', 'p', 'f'):
++    elif op.float and type in ('b', 'd', 'p', 'f'):
+         ret, c = fchg(var, width, base)
+-    elif type in ('d', 'p'):
++    elif type in ('b', 'd', 'p'):
+         ret, c = dchg(var, width, base)
+     elif type in ('f'):
+         ret, c = fchg(var, width, base)
+@@ -1925,23 +1934,23 @@ def cprint(var, type = 'f', width = 4, s
+         color = colors[int(var/scale)%len(colors)]
+     elif type in ('p'):
+         color = colors[int(round(var)/scale)%len(colors)]
+-    elif type in ('d', 'f'):
++    elif type in ('b', 'd', 'f'):
+         color = colors[c%len(colors)]
+     else:
+         color = ctext
+ 
+     ### Justify value to left if string
+     if type in ('s',):
+-        ret = color + ret.ljust(width)
++        ret = color + ret.ljust(width, char['space'])
+     else:
+-        ret = color + ret.rjust(width)
++        ret = color + ret.rjust(width, char['space'])
  
-   --aio                  enable aio stats
-   --fs, --filesystem     enable fs stats
-@@ -719,6 +731,12 @@ class dstat_disk(dstat):
-         return ['dsk/'+sysfs_dev(name) for name in self.vars]
+     ### Add unit to output
+     if unit:
+         if c != -1 and round(var) != 0:
+             ret += cunit + units[c]
+         else:
+-            ret += ' '
++            ret += char['space']
  
-     def extract(self):
-+
-+        # Default to 1.0 (leave as bytes) but if bits convert the bytes to bits
-+        factor = 1.0
-+        if op.diskbits:
-+		      factor = 8.0
-+
-         for name in self.vars: self.set2[name] = (0, 0)
-         for l in self.splitlines():
-             if len(l) < 13: continue
-@@ -736,8 +754,8 @@ class dstat_disk(dstat):
-                             self.set2[diskset] = ( self.set2[diskset][0] + long(l[5]), self.set2[diskset][1] + long(l[9]) )
-         for name in self.set2.keys():
-             self.val[name] = (
--                (self.set2[name][0] - self.set1[name][0]) * 512.0 / elapsed,
--                (self.set2[name][1] - self.set1[name][1]) * 512.0 / elapsed,
-+                (self.set2[name][0] - self.set1[name][0]) * factor * 512.0 / elapsed,
-+                (self.set2[name][1] - self.set1[name][1]) * factor * 512.0 / elapsed,
-             )
-         if step == op.delay:
-             self.set1.update(self.set2)
-@@ -1227,6 +1245,12 @@ class dstat_net(dstat):
+     return ret
  
-     def extract(self):
-         self.set2['total'] = [0, 0]
-+
-+        # Default to 1.0 (leave as bytes) but if bits convert the bytes to bits
-+        factor = 1.0
-+        if op.netbits:
-+            factor = 8.0
-+
-         for l in self.splitlines(replace=':'):
-             if len(l) < 17: continue
-             if l[2] == '0' and l[10] == '0': continue
-@@ -1238,8 +1262,8 @@ class dstat_net(dstat):
-         if update:
-             for name in self.set2.keys():
-                 self.val[name] = [
--                    (self.set2[name][0] - self.set1[name][0]) * 1.0 / elapsed,
--                    (self.set2[name][1] - self.set1[name][1]) * 1.0 / elapsed,
-+                    (self.set2[name][0] - self.set1[name][0]) * factor / elapsed,
-+                    (self.set2[name][1] - self.set1[name][1]) * factor / elapsed,
-                 ]
-                 if self.val[name][0] < 0: self.val[name][0] += maxint + 1
-                 if self.val[name][1] < 0: self.val[name][1] += maxint + 1
diff --git a/dstat-0.7.2-man.patch b/dstat-0.7.2-man.patch
new file mode 100644
index 0000000..29ee753
--- /dev/null
+++ b/dstat-0.7.2-man.patch
@@ -0,0 +1,23 @@
+diff -up dstat-0.7.2/docs/dstat.1.man dstat-0.7.2/docs/dstat.1
+--- dstat-0.7.2/docs/dstat.1.man	2012-09-03 14:27:43.000000000 +0200
++++ dstat-0.7.2/docs/dstat.1	2012-09-03 14:29:29.472736887 +0200
+@@ -90,7 +90,7 @@ enable system stats (interrupts, context
+ \-\-aio
+ enable aio stats (asynchronous I/O)
+ .TP
+-\-\-fs
++\-\-fs, \-\-filesystem
+ enable filesystem stats (open files, inodes)
+ .TP
+ \-\-ipc
+diff -up dstat-0.7.2/dstat.man dstat-0.7.2/dstat
+--- dstat-0.7.2/dstat.man	2012-09-03 14:27:43.000000000 +0200
++++ dstat-0.7.2/dstat	2012-09-03 14:29:54.683393579 +0200
+@@ -339,6 +339,7 @@ Dstat options:
+   --noheaders            disable repetitive headers
+   --noupdate             disable intermediate updates
+   --output file          write CSV output to file
++  --profile              show profiling statistics when exiting dstat
+ 
+ delay is the delay in seconds between each update (default: 1)
+ count is the number of updates to display before exiting (default: unlimited)
diff --git a/dstat.spec b/dstat.spec
index 3ce2d15..df0dcc6 100644
--- a/dstat.spec
+++ b/dstat.spec
@@ -1,7 +1,7 @@
 Summary: Versatile resource statistics tool
 Name: dstat
 Version: 0.7.2
-Release: 8%{?dist}
+Release: 9%{?dist}
 License: GPLv2
 Group: System Environment/Base
 URL: http://dag.wieers.com/home-made/dstat/
@@ -25,6 +25,9 @@ Patch1: dstat-0.7.2-bits.patch
 # (BZ#766443)
 Patch2: dstat-0.7.2-disk-path.patch
 
+# Fixed inconsistency between man page and help (#852797)
+Patch3: dstat-0.7.2-man.patch
+
 BuildArch: noarch
 BuildRequires: python2-devel
 Requires: python
@@ -49,6 +52,7 @@ confusion, less mistakes.
 %patch0 -p1 -b .dbus
 %patch1 -p1 -b .bits
 %patch2 -p1 -b .disk-path
+%patch3 -p1 -b .man
 
 %build
 # Make sure the docs are in unix format
@@ -75,6 +79,10 @@ cd docs
 %{_datadir}/dstat/*.py*
 
 %changelog
+* Mon Sep 03 2012 Jiri Popelka <jpopelka at redhat.com> - 0.7.2-9
+- use upstream's bits.patch
+- fixed inconsistency between man page and help (#852797)
+
 * Wed Jul 18 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 0.7.2-8
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
 


More information about the scm-commits mailing list