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 bensb...@justemail.net
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 bensb...@justemail.net
---
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