>From b251a89c65f0e68ef9fa3387455016ff92501bc4 Mon Sep 17 00:00:00 2001 From: Assaf Gordon Date: Wed, 19 Dec 2018 01:02:32 -0700 Subject: [PATCH 1/2] base64,base32: fix 'extra operand' error message In the following invocation, 'a' is the input file, and 'b' is the extra operand: $ base64 a b Report 'b' in the error message instead of 'a': $ base64 a b base64: extra operand 'b' Discussed in https://lists.gnu.org/r/coreutils/2018-12/msg00008.html . * src/basenc.c (main): If there is more than one non-option operand, report the second one (assuming the first is a the input file name). * tests/misc/base64.pl: Add tests. * tests/misc/basenc.pl: Adjust expectedc error message in tests. * NEWS: Mention bugfix. --- NEWS | 4 ++++ src/basenc.c | 2 +- tests/misc/base64.pl | 7 +++++++ tests/misc/basenc.pl | 3 +-- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index 6963fe305..2bbbdabf1 100644 --- a/NEWS +++ b/NEWS @@ -21,6 +21,10 @@ GNU coreutils NEWS -*- outline -*- sync no longer fails for write-only file arguments. [bug introduced with argument support to sync in coreutils-8.24] + In 'base64 a b', and likewise for base32, the tool now correctly + diagnoses 'b' as the extra operand, not 'a'. + [bug introduced in coreutils-5.3.0] + ** Changes in behavior echo now always processes backslash escapes when the POSIXLY_CORRECT diff --git a/src/basenc.c b/src/basenc.c index 49aa35aa0..d0eaef0c2 100644 --- a/src/basenc.c +++ b/src/basenc.c @@ -1220,7 +1220,7 @@ main (int argc, char **argv) if (argc - optind > 1) { - error (0, 0, _("extra operand %s"), quote (argv[optind])); + error (0, 0, _("extra operand %s"), quote (argv[optind+1])); usage (EXIT_FAILURE); } diff --git a/tests/misc/base64.pl b/tests/misc/base64.pl index 0eb8cf498..a544558cb 100755 --- a/tests/misc/base64.pl +++ b/tests/misc/base64.pl @@ -62,6 +62,7 @@ my @Tests; sub gen_tests($) { my ($prog) = @_; + my $try_help = "Try '$prog --help' for more information.\n"; @Tests= ( ['empty', {IN=>''}, {OUT=>""}], @@ -113,6 +114,12 @@ sub gen_tests($) ['b4k-1', '--decode', {IN=>$a3k_nl[1]}, {OUT=>'a' x (3072+0)}], ['b4k-2', '--decode', {IN=>$a3k_nl[2]}, {OUT=>'a' x (3072+0)}], ['b4k-3', '--decode', {IN=>$a3k_nl[3]}, {OUT=>'a' x (3072+0)}], + + ['ext-op1', 'a b', {IN=>''}, {EXIT=>1}, + {ERR => "$prog: extra operand 'b'\n" . $try_help}], + # Again, with more option arguments + ['ext-op2', '-di --wrap=40 a b', {IN=>''}, {EXIT=>1}, + {ERR => "$prog: extra operand 'b'\n" . $try_help}], ); if ($prog eq "base64") diff --git a/tests/misc/basenc.pl b/tests/misc/basenc.pl index e3bba74a9..d632cf570 100755 --- a/tests/misc/basenc.pl +++ b/tests/misc/basenc.pl @@ -81,9 +81,8 @@ my @Tests = ['noenc', '', {IN=>''}, {EXIT=>1}, {ERR=>"$prog: missing encoding type\n" . $try_help }], - ## TODO: Fix to "B" (this is a bug in the original base64.c:1064 ['extra', '--base64 A B', {IN=>''}, {EXIT=>1}, - {ERR=>"$prog: extra operand 'A'\n" . $try_help}], + {ERR=>"$prog: extra operand 'B'\n" . $try_help}], ['empty1', '--base64', {IN=>''}, {OUT=>""}], -- 2.11.0 >From 185ae7653f45a39ded8fe8cd78bfb3a1fe6e8e49 Mon Sep 17 00:00:00 2001 From: Bernhard Voelker Date: Fri, 21 Dec 2018 08:31:00 +0100 Subject: [PATCH 2/2] maint: mention base32 in the title line of common basenc.c * src/basenc.c: Do the above, and remove a redundant comment. --- src/basenc.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/basenc.c b/src/basenc.c index d0eaef0c2..3ce1328a2 100644 --- a/src/basenc.c +++ b/src/basenc.c @@ -1,8 +1,6 @@ -/* Base64 encode/decode strings or files. +/* Base64, base32, and similar encoding/decoding strings or files. Copyright (C) 2004-2018 Free Software Foundation, Inc. - This file is part of Base64. - This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or -- 2.11.0