Patrick Schoenfeld <[EMAIL PROTECTED]> wrote: > Tags 353911 + patch > thanks > > Hi, > > I just gave this wishlist bug some attention and implemented an > additional option --pedantic, -p which if given additional to the check > command causes md5sum to exit with a non-zero exit code. > > Attached is the patch which implements the functionality. > It works with the specified test case: > > [EMAIL PROTECTED] .../coreutils-6.10/coreutils-6.10.patched % md5sum > test/*|sed '1s/./Z/'|>/dev/null src/md5sum -c --warn -p > src/md5sum: standard input: 1: improperly formatted MD5 checksum line > zsh: done md5sum test/* | sed '1s/./Z/' | > zsh: exit 1 src/md5sum -c --warn -p > /dev/null > > Please test if is appropriate for your usage. > Maintainer, please consider forwarding the patch upstream for inclusion.
Thanks for the suggestion/patch. This looks reasonable and useful. If you're serious about it, and can sign a copyright assignment, please look through the coreutils contribution/style guidelines http://git.sv.gnu.org/gitweb/?p=coreutils.git;a=blob;f=HACKING;hb=HEAD and make the following changes/additions: - see if some other md5/md5sum program has a similar option - follow instructions in HACKING regarding copyright assignment start this right away, since it'll take at least two weeks - make your changes relative to the latest in git (see HACKING) - add a NEWS entry - update doc/coreutils.texi - remove the -p short option - add at least these test cases: (see tests/misc/md5sum) - demonstrate --check --pedantic succeeding - demonstrate --check --pedantic failing due to invalid first line (ensure it still processes following ones -- should it warn about each? or just the first?) - demonstrate --check --pedantic failing with 1 invalid checksum - demonstrate --check --pedantic failing with 1 valid checksum If adding tests looks too daunting, don't worry about it, (but let me know) and someone else will handle it. Then ensure that "make check" and "make syntax-check" still succeed, and post (per HACKING) your patch to [EMAIL PROTECTED] > --- coreutils-6.10/src/md5sum.c 2007-11-25 14:23:31.000000000 +0100 > +++ coreutils-6.10.patched/src/md5sum.c 2008-11-13 21:12:14.960672077 > +0100 > @@ -114,6 +114,10 @@ > improperly formatted checksum line. */ > static bool warn = false; > > +/* With --check, exit with a non-zero return code, if any line is > + improperly formatted. */ > +static bool pedantic = false; > + > /* The name this program was run with. */ > char *program_name; > > @@ -131,6 +135,7 @@ > { "status", no_argument, NULL, STATUS_OPTION }, > { "text", no_argument, NULL, 't' }, > { "warn", no_argument, NULL, 'w' }, > + { "pedantic", no_argument, NULL, 'p' }, > { GETOPT_HELP_OPTION_DECL }, > { GETOPT_VERSION_OPTION_DECL }, > { NULL, 0, NULL, 0 } > @@ -177,6 +182,8 @@ > The following two options are useful only when verifying checksums:\n\ > --status don't output anything, status code shows success\n\ > -w, --warn warn about improperly formatted checksum lines\n\ > + -p, --pedantic return a non-zero exit code when an improperly\n\ > + formatted checksum line is found\n\ > \n\ > "), stdout); > fputs (HELP_OPTION_DESCRIPTION, stdout); > @@ -480,6 +487,10 @@ > checkfile_name, line_number, > DIGEST_TYPE_STRING); > } > + if (pedantic) > + { > + return false; > + } > } > else > { > @@ -603,7 +614,7 @@ > > atexit (close_stdout); > > - while ((opt = getopt_long (argc, argv, "bctw", long_options, NULL)) != -1) > + while ((opt = getopt_long (argc, argv, "bctwp", long_options, NULL)) != -1) > switch (opt) > { > case 'b': > @@ -623,6 +634,9 @@ > status_only = false; > warn = true; > break; > + case 'p': > + pedantic = true; > + break; > case_GETOPT_HELP_CHAR; > case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS); > default: > @@ -653,6 +667,13 @@ > usage (EXIT_FAILURE); > } > > + if (pedantic & !do_check) > + { > + error (0, 0, > + _("the --pedantic option is meaningful only when verifying > checksums")); > + usage (EXIT_FAILURE); > + } > + > if (!O_BINARY && binary < 0) > binary = 0; > -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]