Subject: bug#7243: closed (Re: bug#7243: [patch] making md5sum's warnings clearer)

From: [email-masked] (GNU bug Tracking System)
Date: Tue, 19 Oct 2010 19:25:02 +0000

Your bug report

#7243: [patch] making md5sum's warnings clearer

which was filed against the coreutils package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
7243: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7243
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#7243: [patch] making md5sum's warnings clearer
From: Jim Meyering <[email-masked]>
To: "Benno Schulenberg" <[email-masked]>
Cc: [email-masked]
Date: Tue, 19 Oct 2010 21:28:31 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Jim Meyering wrote:
> Benno Schulenberg wrote:
>> Two years ago I complained about the untranslatability of the warnings
>> that md5sum prints when it has encountered unexpected things:
>> http://lists.gnu.org/archive/html/bug-coreutils/2008-09/msg00168.html
>>
>> Jim asked to come up with a change that doesn't remove information.
>> I've finally gotten around to making this -- see the attached patch.
>> In addition to read failures and checksum failures, md5sum now alerts
>> the user to the number of misformatted checksum lines.  It prints this
>> line also when '--warn' is not given, because it is so important.
>
> Thanks for following up.
> I've applied your patch after adjusting the log and a failing test,
> then added two more tests to cover the new types of output lines.
>
> Subject: [PATCH 1/2] md5sum: print a summary warning for improperly formatted lines
>
> And remove the now-superfluous totals from the other two warnings,
> so the plurals will also work in other languages than English.
>
> * src/md5sum.c (digest_check): Change as above.
> * tests/misc/md5sum (check-quiet2): Adjust accordingly.

FYI, I'm marking this as closed.

Subject: [patch] making md5sum's warnings clearer
From: "Benno Schulenberg" <[email-masked]>
To: [email-masked]
Date: Mon, 18 Oct 2010 22:51:37 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

Two years ago I complained about the untranslatability of the warnings
that md5sum prints when it has encountered unexpected things:
http://lists.gnu.org/archive/html/bug-coreutils/2008-09/msg00168.html

Jim asked to come up with a change that doesn't remove information.
I've finally gotten around to making this -- see the attached patch.
In addition to read failures and checksum failures, md5sum now alerts
the user to the number of misformatted checksum lines.  It prints this
line also when '--warn' is not given, because it is so important.

Regards,

Benno

(Please CC, not subscribed.)

-- 
http://www.fastmail.fm - Same, same, but different...

From fc5460ed05561a9754754993f7aadd541eb98c1c Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <[email-masked]>
Date: Mon, 18 Oct 2010 22:35:39 +0200
Subject: [PATCH] md5sum: print a summary warning for improperly formatted lines

And remove the now superfluous totals from the other two warnings,
so the plurals will also work in other languages than English.

Signed-off-by: Benno Schulenberg <[email-masked]>
---
 src/md5sum.c |   36 +++++++++++++++++++-----------------
 1 files changed, 19 insertions(+), 17 deletions(-)

diff --git a/src/md5sum.c b/src/md5sum.c
index 10d4fa2..a660e3b 100644
--- a/src/md5sum.c
+++ b/src/md5sum.c
@@ -431,6 +431,7 @@ static bool
 digest_check (const char *checkfile_name)
 {
   FILE *checkfile_stream;
+  uintmax_t n_misformatted_lines = 0;
   uintmax_t n_properly_formatted_lines = 0;
   uintmax_t n_mismatched_checksums = 0;
   uintmax_t n_open_or_read_failures = 0;
@@ -489,6 +490,8 @@ digest_check (const char *checkfile_name)
              && ! (is_stdin && STREQ (filename, "-"))
              && hex_digits (hex_digest)))
         {
+          ++n_misformatted_lines;
+
           if (warn)
             {
               error (0, 0,
@@ -571,27 +574,26 @@ digest_check (const char *checkfile_name)
     {
       if (!status_only)
         {
+          if (n_misformatted_lines != 0)
+            error (0, 0,
+                   ngettext ("WARNING: %" PRIuMAX " line is improperly formatted",
+                             "WARNING: %" PRIuMAX " lines are improperly formatted",
+                             select_plural (n_misformatted_lines)),
+                   n_misformatted_lines);
+
           if (n_open_or_read_failures != 0)
             error (0, 0,
-                   ngettext ("WARNING: %" PRIuMAX " of %" PRIuMAX
-                             " listed file could not be read",
-                             "WARNING: %" PRIuMAX " of %" PRIuMAX
-                             " listed files could not be read",
-                             select_plural (n_properly_formatted_lines)),
-                   n_open_or_read_failures, n_properly_formatted_lines);
+                   ngettext ("WARNING: %" PRIuMAX " listed file could not be read",
+                             "WARNING: %" PRIuMAX " listed files could not be read",
+                             select_plural (n_open_or_read_failures)),
+                   n_open_or_read_failures);
 
           if (n_mismatched_checksums != 0)
-            {
-              uintmax_t n_computed_checksums =
-                (n_properly_formatted_lines - n_open_or_read_failures);
-              error (0, 0,
-                     ngettext ("WARNING: %" PRIuMAX " of %" PRIuMAX
-                               " computed checksum did NOT match",
-                               "WARNING: %" PRIuMAX " of %" PRIuMAX
-                               " computed checksums did NOT match",
-                               select_plural (n_computed_checksums)),
-                     n_mismatched_checksums, n_computed_checksums);
-            }
+            error (0, 0,
+                   ngettext ("WARNING: %" PRIuMAX " computed checksum did NOT match",
+                             "WARNING: %" PRIuMAX " computed checksums did NOT match",
+                             select_plural (n_mismatched_checksums)),
+                   n_mismatched_checksums);
         }
     }
 
-- 
1.6.3.3