Hello community,

here is the log from the commit of package diffstat for openSUSE:Factory 
checked in at 2016-02-09 16:49:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/diffstat (Old)
 and      /work/SRC/openSUSE:Factory/.diffstat.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "diffstat"

Changes:
--------
--- /work/SRC/openSUSE:Factory/diffstat/diffstat.changes        2015-08-07 
00:16:26.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.diffstat.new/diffstat.changes   2016-02-09 
16:49:23.000000000 +0100
@@ -1,0 +2,10 @@
+Sun Feb  7 07:51:45 UTC 2016 - [email protected]
+
+- Update to 1.61
+  * add -T option to show amount of changes next to histogram.
+  * if -S option is given, check for unmodified files and add those
+    to the report.
+  * update configure macros
+  * update config.guess, config.sub
+
+-------------------------------------------------------------------

Old:
----
  diffstat-1.60.tgz
  diffstat-1.60.tgz.asc

New:
----
  diffstat-1.61.tgz
  diffstat-1.61.tgz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ diffstat.spec ++++++
--- /var/tmp/diff_new_pack.QYJK1J/_old  2016-02-09 16:49:24.000000000 +0100
+++ /var/tmp/diff_new_pack.QYJK1J/_new  2016-02-09 16:49:24.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package diffstat
 #
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           diffstat
-Version:        1.60
+Version:        1.61
 Release:        0
 Summary:        Utility That Provides Statistics Based on the Output of diff
 License:        MIT
@@ -38,12 +38,11 @@
 %patch0
 
 %build
-export CFLAGS="%{optflags} -Wall"
 %configure
-make %{?_smp_mflags}
+make %{?_smp_mflags} CFLAGS="%{optflags}"
 
 %install
-make DESTDIR=%{buildroot} install %{?_smp_mflags}
+make %{?_smp_mflags} DESTDIR=%{buildroot} install
 
 %check
 make %{?_smp_mflags} check
@@ -52,6 +51,6 @@
 %defattr(-,root,root)
 %doc README CHANGES COPYING
 %{_bindir}/diffstat
-%doc %{_mandir}/man1/diffstat.1*
+%{_mandir}/man1/diffstat.1%{ext_man}
 
 %changelog

++++++ diffstat-1.60.tgz -> diffstat-1.61.tgz ++++++
++++ 2916 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/diffstat-1.60/CHANGES new/diffstat-1.61/CHANGES
--- old/diffstat-1.60/CHANGES   2015-07-07 01:21:00.000000000 +0200
+++ new/diffstat-1.61/CHANGES   2016-01-14 02:11:58.000000000 +0100
@@ -1,6 +1,19 @@
--- $Id: CHANGES,v 1.91 2015/07/06 23:21:00 tom Exp $
+-- $Id: CHANGES,v 1.94 2016/01/14 01:11:58 tom Exp $
+
+2016/01/14 (diffstat 1.61)
+       + add -T option to show amount of changes next to histogram.
+
+       + if -S option is given, check for unmodified files and add those to
+         the report.
+
+       + update configure macros
+
+       + update config.guess, config.sub
 
 2015/07/07 (diffstat 1.60)
+       + handle double-quotes, e.g., from diffutils 3.3 when filenames have
+         embedded spaces.
+
        + add configure option --with-man2html
 
        + update configure macros
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/diffstat-1.60/COPYING new/diffstat-1.61/COPYING
--- old/diffstat-1.60/COPYING   2015-07-07 01:29:04.000000000 +0200
+++ new/diffstat-1.61/COPYING   2016-01-03 18:45:14.000000000 +0100
@@ -1,4 +1,4 @@
-Copyright 1994-2014,2015 by Thomas E. Dickey
+Copyright 1994-2015,2016 by Thomas E. Dickey
 All Rights Reserved.
 
 Permission to use, copy, modify, and distribute this software and its
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/diffstat-1.60/COPYING.asc new/diffstat-1.61/COPYING.asc
--- old/diffstat-1.60/COPYING.asc       2015-07-07 01:29:25.000000000 +0200
+++ new/diffstat-1.61/COPYING.asc       2016-01-03 18:45:34.000000000 +0100
@@ -1,8 +1,8 @@
 -----BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.10 (GNU/Linux)
+Version: GnuPG v1.4.12 (GNU/Linux)
 Comment: See http://invisible-island.net/public/public.html for info
 
-iEYEABECAAYFAlWbD1EACgkQcCNT4Pfkjtta2gCeL9RsKaNoyJUWQPmHwLNHlQaX
-x0AAoLCG482y5wuQuKSbchhkaCz/YlBu
-=mgEw
+iEYEABECAAYFAlaJXjoACgkQcCNT4PfkjtvpogCgycNy4AEp4dGgS9XM9jpgHThS
+3lQAoJHdOM/4hpgPiGbItbq3ewrdFSEY
+=UW+O
 -----END PGP SIGNATURE-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/diffstat-1.60/configure.in new/diffstat-1.61/configure.in
--- old/diffstat-1.60/configure.in      2015-07-07 01:22:57.000000000 +0200
+++ new/diffstat-1.61/configure.in      2016-01-03 18:44:31.000000000 +0100
@@ -1,7 +1,7 @@
 dnl Process this file with 'autoconf' to produce a 'configure' script
-dnl $Id: configure.in,v 1.28 2015/07/06 23:22:57 tom Exp $
+dnl $Id: configure.in,v 1.29 2016/01/03 17:44:31 tom Exp $
 AC_PREREQ(2.52.20011201)
-AC_REVISION($Revision: 1.28 $)
+AC_REVISION($Revision: 1.29 $)
 AC_INIT(diffstat.c)
 AC_CONFIG_HEADER(config.h:config_h.in)
 
@@ -40,9 +40,11 @@
 
 AC_CHECK_FUNCS(\
 mkdtemp \
+opendir \
 tsearch \
 )
 
+CF_FUNC_LSTAT
 CF_FUNC_GETOPT(getopt,\$(srcdir)/porting)
 CF_FUNC_POPEN(popen,\$(srcdir)/porting)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/diffstat-1.60/diffstat.1 new/diffstat-1.61/diffstat.1
--- old/diffstat-1.60/diffstat.1        2014-06-05 23:11:15.000000000 +0200
+++ new/diffstat-1.61/diffstat.1        2016-01-14 10:39:26.000000000 +0100
@@ -1,5 +1,5 @@
 
.\"*****************************************************************************
-.\" Copyright 1994-2013,2014 by Thomas E. Dickey                               
*
+.\" Copyright 1994-2014,2016 by Thomas E. Dickey                               
*
 .\" All Rights Reserved.                                                       
*
 .\"                                                                            
*
 .\" Permission to use, copy, modify, and distribute this software and its      
*
@@ -18,7 +18,7 @@
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR 
*
 .\" IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.                
*
 
.\"*****************************************************************************
-.\" $Id: diffstat.1,v 1.33 2014/06/05 21:11:15 tom Exp $
+.\" $Id: diffstat.1,v 1.35 2016/01/14 09:39:26 tom Exp $
 .TH DIFFSTAT 1
 .SH NAME
 \fBdiffstat\fP \- make histogram from diff-output
@@ -27,17 +27,17 @@
 .SH DESCRIPTION
 This program reads the output of \fBdiff\fP and displays a histogram
 of the insertions, deletions, and modifications per-file.
-Diffstat is a program that is useful for reviewing large, complex patch files.
+\fBDiffstat\fP is a program that is useful for reviewing large, complex patch 
files.
 It reads from one or more input files which contain output from \fBdiff\fP,
 producing a histogram of the total lines changed for each file referenced.
 .PP
 If the input filename ends with .bz2, .gz, .lzma, .z or .Z,
-diffstat will read the
+\fBdiffstat\fP will read the
 uncompressed data via a pipe from the corresponding program.
 It also can infer the compression type from files piped via the standard input.
 .PP
-Diffstat recognizes the most popular types of output from diff:
-.RS
+\fBDiffstat\fP recognizes the most popular types of output from \fBdiff\fP:
+.RS 3
 .TP
 unified
 preferred by the \fBpatch\fP utility.
@@ -60,7 +60,7 @@
 .SH OPTIONS
 .TP
 .B \-b
-ignore lines matching "Binary files XXX and YYY differ" in the diff
+ignore lines matching "Binary files XXX and YYY differ" in the \fBdiff\fP
 .TP
 .B \-c
 prefix each line of output with "#", making it a comment-line for shell
@@ -152,6 +152,10 @@
 .BI \-p " number"
 override the logic that strips common pathnames, simulating the \fBpatch\fP
 "\-p" option.
+.IP
+If you do not give a \fB\-p\fP option, \fBdiffstat\fP examines the
+differences and strips the common prefix from the pathnames.
+This is not what \fBpatch\fP does.
 .TP
 .B \-q
 suppress the "0 files changed" message for empty diffs.
@@ -187,7 +191,19 @@
 .TP
 .B \-t
 overrides the histogram,
-generates output of comma separated values.
+generates output of comma separated values for the number of
+changed lines found in the differences for each file: inserted, deleted and 
modified.
+.IP
+If \fB\-S\fP or \fB\-D\fP options are given, the number of unchanged
+lines precedes the number of changes.
+.TP
+.B \-T
+prints the numbers that the \fB\-t\fP option would show,
+between the pathname and histogram.
+.IP
+The width of the number of changes is determined by the largest value (but at 
least 3).
+The width given in the \fB\-w\fP option is separate from the width of these
+numbers.
 .TP
 .B \-u
 suppress the sorting of filenames in the report.
@@ -206,7 +222,7 @@
 just in case the filenames get too large.
 .SH ENVIRONMENT
 .PP
-\fBDiffstat\fP runs in a portable UNIX\*R environment.
+\fBDiffstat\fP runs in a POSIX environment.
 .PP
 You can override the compiled-in paths of programs used for decompressing
 input files by setting environment variables corresponding to their name:
@@ -232,9 +248,9 @@
 \fBDiffstat\fP is a single binary module, which uses no auxiliary files.
 .SH BUGS
 .PP
-\fBDiffstat\fP makes a lot of assumptions about the format of a \fBdiff\fP 
file.
+\fBDiffstat\fP makes a lot of assumptions about the format of \fBdiff\fP's 
output.
 .PP
-There is no way to obtain a filename from the standard diff between
+There is no way to obtain a filename from the standard \fBdiff\fP between
 two files with no options.
 Context diffs work,
 as well as unified diffs.
@@ -245,7 +261,8 @@
 to approximate modified lines for the \fB\-m\fP option.
 .SH SEE ALSO
 .PP
-.BR diff (1).
+.BR diff (1),
+.BR patch (1).
 .SH AUTHOR
 .PP
 Thomas Dickey <[email protected]>.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/diffstat-1.60/diffstat.c new/diffstat-1.61/diffstat.c
--- old/diffstat-1.60/diffstat.c        2015-07-07 02:21:23.000000000 +0200
+++ new/diffstat-1.61/diffstat.c        2016-01-14 01:52:29.000000000 +0100
@@ -1,5 +1,5 @@
 /******************************************************************************
- * Copyright 1994-2014,2015 by Thomas E. Dickey                               *
+ * Copyright 1994-2015,2016 by Thomas E. Dickey                               *
  * All Rights Reserved.                                                       *
  *                                                                            *
  * Permission to use, copy, modify, and distribute this software and its      *
@@ -20,7 +20,7 @@
  
******************************************************************************/
 
 #ifndef        NO_IDENT
-static const char *Id = "$Id: diffstat.c,v 1.60 2015/07/07 00:21:23 tom Exp $";
+static const char *Id = "$Id: diffstat.c,v 1.61 2016/01/14 00:52:29 tom Exp $";
 #endif
 
 /*
@@ -28,6 +28,8 @@
  * Author:     T.E.Dickey
  * Created:    02 Feb 1992
  * Modified:
+ *             14 Jan 2016, extend -S option to count unmodified files.
+ *                          add -T option to show values with histogram
  *             06 Jul 2015, handle double-quotes, e.g., from diffutils 3.3
  *                          when filenames have embedded spaces.
  *             05 Jun 2014, add -E option to filter colordiff output.
@@ -219,6 +221,10 @@
 extern int isatty(int);
 #endif
 
+#ifdef HAVE_OPENDIR
+#include <dirent.h>
+#endif
+
 #ifdef HAVE_MALLOC_H
 #include <malloc.h>
 #endif
@@ -324,6 +330,7 @@
 #endif
 
 #define contain_any(s,reject) (strcspn(s,reject) != strlen(s))
+#define maximum(a,b) ((a) < (b) ? (b) : (a))
 
 #define HAVE_NOTHING 0
 #define HAVE_GENERIC 1         /* e.g., "Index: foo" w/o pathname */
@@ -407,8 +414,9 @@
 static int summary_only = 0;   /* true if only summary line is shown */
 static int suppress_binary = 0;        /* -b option */
 static int trim_escapes = 0;   /* -E option */
-static int table_opt = 0;      /* if nonzero, write table rather than plot */
+static int table_opt = 0;      /* if 1/2, write table instead/also plot */
 static int trace_opt = 0;      /* if nonzero, write debugging information */
+static int unchanged = 0;      /* special-case for -S vs modified-files */
 static int verbose = 0;                /* -v option */
 static long plot_scale;                /* the effective scale (1:maximum) */
 
@@ -417,6 +425,7 @@
 static void *sorted_data;
 #endif
 
+static int number_len = 5;
 static int prefix_len = -1;
 
 
/******************************************************************************/
@@ -442,12 +451,29 @@
     return p;
 }
 
+static mode_t
+get_stat(const char *name)
+{
+    struct stat sb;
+    int rc;
+#ifdef HAVE_LSTAT
+    rc = lstat(name, &sb);
+#else
+    rc = stat(name, &sb);
+#endif
+    return ((rc == 0) ? (sb.st_mode & S_IFMT) : 0);
+}
+
 static int
 is_dir(const char *name)
 {
-    struct stat sb;
-    return (stat(name, &sb) == 0 &&
-           (sb.st_mode & S_IFMT) == S_IFDIR);
+    return get_stat(name) == S_IFDIR;
+}
+
+static int
+is_file(const char *name)
+{
+    return get_stat(name) == S_IFREG;
 }
 
 static void
@@ -515,6 +541,38 @@
 }
 #endif
 
+static int
+count_prefix(const char *name)
+{
+    int count = 0;
+    const char *s;
+    while ((s = strchr(name, PATHSEP)) != 0) {
+       name = s + 1;
+       ++count;
+    }
+    return count;
+}
+
+static const char *
+skip_prefix(const char *name, int prefix, int *base)
+{
+    if (prefix >= 0) {
+       int n;
+       *base = 0;
+
+       for (n = prefix; n > 0; n--) {
+           const char *s = strchr(name + *base, PATHSEP);
+           if (s == 0 || *++s == EOS) {
+               name = s;
+               break;
+           }
+           *base = (int) (s - name);
+       }
+       TRACE(("** base set to %d\n", *base));
+    }
+    return name;
+}
+
 static DATA *
 find_data(const char *name)
 {
@@ -526,15 +584,7 @@
 
     /* Compute the base offset if the prefix option is used */
     if (prefix_opt >= 0) {
-       int n;
-
-       for (n = prefix_opt; n > 0; n--) {
-           char *s = strchr(name + base, PATHSEP);
-           if (s == 0 || *++s == EOS)
-               break;
-           base = (int) (s - name);
-       }
-       TRACE(("** base set to %d\n", base));
+       (void) skip_prefix(name, prefix_opt, &base);
     }
 
     /* Insert into sorted list (usually sorted).  If we are not sorting or
@@ -1060,7 +1110,29 @@
 static char *
 data_filename(const DATA * p)
 {
-    return (p->name + (prefix_opt >= 0 ? p->base : prefix_len));
+    return p ? (p->name + (prefix_opt >= 0 ? p->base : prefix_len)) : "";
+}
+
+static int
+count_lines2(const char *filename)
+{
+    int result = 0;
+    int ch;
+    FILE *fp;
+
+    TRACE(("count_lines %s\n", filename));
+    if ((fp = fopen(filename, "r")) != 0) {
+       result = 0;
+       while ((ch = MY_GETC(fp)) != EOF) {
+           if (ch == '\n')
+               ++result;
+       }
+       fclose(fp);
+       TRACE(("->%d lines\n", result));
+    } else {
+       fprintf(stderr, "Cannot open \"%s\"\n", filename);
+    }
+    return result;
 }
 
 /*
@@ -1072,9 +1144,7 @@
     int result = -1;
     char *filename = 0;
     char *filetail = data_filename(p);
-    size_t want = strlen(path_opt) + 2 + strlen(filetail);
-    FILE *fp;
-    int ch;
+    size_t want = strlen(path_opt) + 2 + strlen(filetail) + strlen(p->name);
 
     if ((filename = malloc(want)) != 0) {
        int merge = 0;
@@ -1108,20 +1178,14 @@
            }
        }
        if (!merge) {
-           sprintf(filename, "%s%c%s", path_opt, PATHSEP, filetail);
-       }
-
-       TRACE(("count_lines %s\n", filename));
-       if ((fp = fopen(filename, "r")) != 0) {
-           result = 0;
-           while ((ch = MY_GETC(fp)) != EOF) {
-               if (ch == '\n')
-                   ++result;
+           if (path_opt) {
+               strcpy(filename, p->name);
+           } else {
+               sprintf(filename, "%s%c%s", path_opt, PATHSEP, filetail);
            }
-           fclose(fp);
-       } else {
-           fprintf(stderr, "Cannot open %s\n", filename);
        }
+
+       result = count_lines2(filename);
        free(filename);
     } else {
        failed("count_lines");
@@ -1945,7 +2009,7 @@
        ;
     } else if (p->cmt == Binary && suppress_binary == 1) {
        ;
-    } else if (table_opt) {
+    } else if (table_opt == 1) {
        if (names_only) {
            printf("%s\n", name);
        } else {
@@ -1976,6 +2040,14 @@
                     : min_name_wide);
            printf("%-*.*s", width, width, name);
        }
+       if (table_opt == 2) {
+           putchar('|');
+           if (path_opt)
+               printf("%*ld ", number_len, EqlOf(p));
+           printf("%*ld ", number_len, InsOf(p));
+           printf("%*ld ", number_len, DelOf(p));
+           printf("%*ld", number_len, ModOf(p));
+       }
        putchar('|');
        switch (p->cmt) {
        default:
@@ -2065,6 +2137,97 @@
     return result;
 }
 
+#ifdef HAVE_OPENDIR
+static void
+count_unmodified_files(const char *pathname, long *files, long *lines)
+{
+    DATA *p;
+    char *name;
+
+    TRACE(("count_unmodified_files %s\n", pathname));
+    if (is_dir(pathname)) {
+       DIR *dp = opendir(pathname);
+       struct dirent *de;
+
+       if (dp != 0) {
+           while ((de = readdir(dp)) != 0) {
+               if (!strcmp(de->d_name, ".") || !strcmp(de->d_name, ".."))
+                   continue;
+               name = malloc(strlen(pathname) + 2 + strlen(de->d_name));
+               if (name != 0) {
+                   sprintf(name, "%s%c%s", pathname, PATHSEP, de->d_name);
+                   count_unmodified_files(name, files, lines);
+                   free(name);
+               }
+           }
+           closedir(dp);
+       }
+    } else if (is_file(pathname)) {
+       /*
+        * Given the pathname from the (-S) source directory, derive a
+        * corresponding path for the destination directory.  Then check if
+        * that path appears in the list of modified files.
+        */
+       int found = 0;
+       const char *ref_name = (all_data ? all_data->name : pathname);
+
+       if (prefix_opt >= 0) {
+           int level_s = count_prefix(path_opt);
+           int base_s = 0;
+           int base_d = 0;
+           (void) skip_prefix(pathname, level_s + 1, &base_s);
+           (void) skip_prefix(ref_name, level_s + 1, &base_d);
+           name = malloc(2 + strlen(pathname) + strlen(ref_name));
+           sprintf(name, "%.*s%s", base_d, ref_name, base_s + pathname);
+       } else {
+           const char *mark = unchanged ? ref_name : data_filename(all_data);
+           int skip = 1 + (int) strlen(path_opt);
+           name = malloc(strlen(ref_name) + 2 + strlen(pathname));
+           sprintf(name, "%.*s%s",
+                   (int) (mark - ref_name),
+                   ref_name,
+                   pathname + skip);
+       }
+       if (is_file(name)) {
+           for (p = all_data; p != 0 && !found; p = p->link) {
+               if (!strcmp(name, p->name)) {
+                   found = 1;
+               }
+           }
+           if (!found) {
+               int len;
+               p = find_data(name);
+               *files += 1;
+               EqlOf(p) = count_lines(p);
+               *lines += EqlOf(p);
+
+               if (unchanged) {
+                   len = (int) strlen(p->name);
+                   if (min_name_wide < (len - p->base))
+                       min_name_wide = (len - p->base);
+               }
+           }
+       }
+       free(name);
+    }
+}
+#endif
+
+static void
+update_min_name_wide(long longest_name)
+{
+    if (prefix_opt < 0) {
+       if (prefix_len < 0)
+           prefix_len = 0;
+       if ((longest_name - prefix_len) > min_name_wide)
+           min_name_wide = (longest_name - prefix_len);
+    }
+
+    if (min_name_wide < 1)
+       min_name_wide = 0;
+    min_name_wide++;           /* make sure it's nonzero */
+}
+
 static void
 summarize(void)
 {
@@ -2074,6 +2237,7 @@
     long total_mod = 0;
     long total_eql = 0;
     long files_added = 0;
+    long files_equal = 0;
     long files_binary = 0;
     long files_removed = 0;
     long temp;
@@ -2187,14 +2351,26 @@
        }
     }
 
-    if (prefix_opt < 0) {
-       if (prefix_len < 0)
-           prefix_len = 0;
-       if ((longest_name - prefix_len) > min_name_wide)
-           min_name_wide = (longest_name - prefix_len);
+    update_min_name_wide(longest_name);
+
+#ifdef HAVE_OPENDIR
+    if (path_opt != 0) {
+       unchanged = (all_data == 0);
+       count_unmodified_files(path_opt, &files_equal, &total_eql);
+       if (unchanged) {
+           for (p = all_data; p; p = p->link) {
+               int len = (int) strlen(p->name);
+               if (longest_name < len)
+                   longest_name = len;
+               temp = TotalOf(p);
+               if (temp > plot_scale)
+                   plot_scale = temp;
+           }
+           update_min_name_wide(longest_name);
+       }
     }
+#endif
 
-    min_name_wide++;           /* make sure it's nonzero */
     plot_width = (max_width - min_name_wide - 8);
     if (plot_width < 10)
        plot_width = 10;
@@ -2202,7 +2378,7 @@
     if (plot_scale < plot_width)
        plot_scale = plot_width;        /* 1:1 */
 
-    if (table_opt) {
+    if (table_opt == 1) {
        if (!names_only) {
            printf("INSERTED,DELETED,MODIFIED,");
            if (path_opt)
@@ -2211,6 +2387,21 @@
                printf("FILE-ADDED,FILE-DELETED,FILE-BINARY,");
        }
        printf("FILENAME\n");
+    } else if (table_opt == 2) {
+       long largest = 0;
+       for (p = all_data; p; p = p->link) {
+           if (path_opt)
+               largest = maximum(largest, EqlOf(p));
+           largest = maximum(largest, InsOf(p));
+           largest = maximum(largest, DelOf(p));
+           largest = maximum(largest, ModOf(p));
+       }
+       number_len = 0;
+       while (largest > 0) {
+           number_len++;
+           largest /= 10;
+       }
+       number_len = maximum(number_len, 3);
     }
 #ifdef HAVE_TSEARCH
     if (use_tsearch) {
@@ -2221,7 +2412,7 @@
            show_data(p);
        }
 
-    if (!table_opt && !names_only) {
+    if ((table_opt != 1) && !names_only) {
 #define PLURAL(n) n, n != 1 ? "s" : ""
        if (num_files > 0 || !quiet) {
            printf("%s %d file%s changed", comment_opt, PLURAL(num_files));
@@ -2451,6 +2642,7 @@
        "  -s      show only the summary line",
        "  -S PATH specify location of original files, use for unchanged-count",
        "  -t      print a table (comma-separated-values) rather than 
histogram",
+       "  -T      print amounts (like -t option) in addition to histogram",
        "  -u      do not sort the input list",
        "  -v      show progress if output is redirected to a file",
        "  -V      prints the version number",
@@ -2502,7 +2694,7 @@
     max_width = 80;
 
     while ((j = getopt_helper(argc, argv,
-                             "bcCdD:e:Ef:hkKlmn:N:o:p:qr:RsS:tuvVw:", 'h', 
'V'))
+                             "bcCdD:e:Ef:hkKlmn:N:o:p:qr:RsS:tTuvVw:", 'h', 
'V'))
           != -1) {
        switch (j) {
        case 'b':
@@ -2575,6 +2767,9 @@
        case 't':
            table_opt = 1;
            break;
+       case 'T':
+           table_opt = 2;
+           break;
        case 'u':
            sort_names = 0;
            break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/diffstat-1.60/package/debian/changelog 
new/diffstat-1.61/package/debian/changelog
--- old/diffstat-1.60/package/debian/changelog  2015-07-07 02:39:34.000000000 
+0200
+++ new/diffstat-1.61/package/debian/changelog  2016-01-06 01:51:23.000000000 
+0100
@@ -1,3 +1,9 @@
+diffstat (1.61) unstable; urgency=low
+
+  * maintenance updates
+
+ -- Thomas E. Dickey <[email protected]>  Tue, 05 Jan 2016 19:51:23 
-0500
+
 diffstat (1.60) unstable; urgency=low
 
   * handle quoted files from diffutils 3.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/diffstat-1.60/package/debian/copyright 
new/diffstat-1.61/package/debian/copyright
--- old/diffstat-1.60/package/debian/copyright  2015-07-07 02:26:41.000000000 
+0200
+++ new/diffstat-1.61/package/debian/copyright  2016-01-06 01:51:23.000000000 
+0100
@@ -1,7 +1,7 @@
 Upstream source http://invisible-island.net/diffstat/diffstat.html
 
 /******************************************************************************
- * Copyright 1994-2014,2015 by Thomas E. Dickey                               *
+ * Copyright 1994-2015,2016 by Thomas E. Dickey                               *
  * All Rights Reserved.                                                       *
  *                                                                            *
  * Permission to use, copy, modify, and distribute this software and its      *
@@ -25,7 +25,7 @@
 
 Files: aclocal.m4
 Licence: other-BSD
-Copyright:  2003-2014,2015 by Thomas E. Dickey
+Copyright:  2003-2015,2016 by Thomas E. Dickey
     Permission is hereby granted, free of charge, to any person obtaining a
     copy of this software and associated documentation files (the
     "Software"), to deal in the Software without restriction, including
@@ -86,7 +86,7 @@
     shared with many OS's install programs.
 
 Files: debian/*
-Copyright:  2010-2014,2015 Thomas E. Dickey
+Copyright:  2010-2015,2016 Thomas E. Dickey
 Licence: other-BSD
     Permission to use, copy, modify, and distribute this software and its
     documentation for any purpose and without fee is hereby granted,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/diffstat-1.60/package/diffstat.spec new/diffstat-1.61/package/diffstat.spec
--- old/diffstat-1.60/package/diffstat.spec     2015-07-07 01:27:58.000000000 
+0200
+++ new/diffstat-1.61/package/diffstat.spec     2016-01-06 01:51:23.000000000 
+0100
@@ -1,7 +1,7 @@
 Summary:  diffstat - make histogram from diff-output
 %define AppProgram diffstat
-%define AppVersion 1.60
-# $XTermId: diffstat.spec,v 1.9 2015/07/06 23:27:58 tom Exp $
+%define AppVersion 1.61
+# $XTermId: diffstat.spec,v 1.10 2016/01/06 00:51:23 tom Exp $
 Name: %{AppProgram}
 Version: %{AppVersion}
 Release: 1



Reply via email to