[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#8263: [PATCH] Allow == as synonym for = in test
From: |
Jim Meyering |
Subject: |
bug#8263: [PATCH] Allow == as synonym for = in test |
Date: |
Tue, 22 Mar 2011 07:15:16 +0100 |
Eric Blake wrote:
> On 03/21/2011 06:25 AM, Pádraig Brady wrote:
>> On 15/03/11 23:39, David A. Wheeler wrote:
>>> The following trivial patch makes GNU coreutils' test recognize "=="
>>> as a synonym for "=". This is already the case in GNU coreutils' expr,
>>> bash, ksh, busybox ash, FreeBSD-current /bin/sh and /bin/test, and
>>> OpenBSD's /bin/sh. These are only a few lines, so I don't think
>>> any paperwork is needed. The following implements "==" and documents it.
>>
>> Related http://austingroupbugs.net/view.php?id=375
>> I'm leaning towards accepting this.
>>
>> Note dash does not support ==, nor does older busybox ash.
>> dash seem to be waiting for the POSIX acceptance before changing?
>
> Yes, that's my read of the similar thread on the dash list - dash is
> waiting for the Austin Group ruling to take place first. But coreutils
> already has several extensions not in dash (it's closer to bash), so we
> might as well go with it now. I'm in favor of this patch.
I agree.
Here are three c-sets I expect to push later today:
- David's patch with an adjusted log message
- NEWS+test
- gnulib update (unrelated)
I'm closing this ticket, too.
>From 3f31ec950b78309a0d12d92d87a735b8870a2289 Mon Sep 17 00:00:00 2001
From: David A. Wheeler <address@hidden>
Date: Tue, 22 Mar 2011 06:03:55 +0100
Subject: [PATCH 1/3] test: accept "==" as a synonym for "="
Make GNU coreutils' test recognize "==" as a synonym for "=".
This is already the case in GNU coreutils' expr, bash, ksh,
busybox ash, FreeBSD-current /bin/sh and /bin/test, and
OpenBSD's /bin/sh.
Before, env test a '==' a would fail with this diagnostic:
"test: ==: binary operator expected". Now, it succeeds.
* src/test.c: Accept "==" as a synonym for "=".
* doc/coreutils.texi (String tests): Document it.
Reported as http://debbugs.gnu.org/8263
Also see http://austingroupbugs.net/view.php?id=375
---
doc/coreutils.texi | 7 ++++++-
src/test.c | 6 ++++--
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/doc/coreutils.texi b/doc/coreutils.texi
index 8dd1ed8..46deeed 100644
--- a/doc/coreutils.texi
+++ b/doc/coreutils.texi
@@ -11535,7 +11535,7 @@ test invocation
* File type tests:: -[bcdfhLpSt]
* Access permission tests:: -[gkruwxOG]
* File characteristic tests:: -e -s -nt -ot -ef
-* String tests:: -z -n = !=
+* String tests:: -z -n = == !=
* Numeric tests:: -eq -ne -lt -le -gt -ge
* Connectives for test:: ! -a -o
@end menu
@@ -11726,6 +11726,11 @@ String tests
@cindex equal string check
True if the strings are equal.
address@hidden @var{string1} == @var{string2}
address@hidden ==
address@hidden equal string check
+True if the strings are equal (synonym for =).
+
@item @var{string1} != @var{string2}
@opindex !=
@cindex not-equal string check
diff --git a/src/test.c b/src/test.c
index 2d7aa67..362df65 100644
--- a/src/test.c
+++ b/src/test.c
@@ -173,7 +173,8 @@ get_mtime (char const *filename, struct timespec *mtime)
static bool
binop (char const *s)
{
- return ((STREQ (s, "=")) || (STREQ (s, "!=")) || (STREQ (s, "-nt")) ||
+ return ((STREQ (s, "=")) || (STREQ (s, "!=")) || (STREQ (s, "==")) ||
+ (STREQ (s, "-nt")) ||
(STREQ (s, "-ot")) || (STREQ (s, "-ef")) || (STREQ (s, "-eq")) ||
(STREQ (s, "-ne")) || (STREQ (s, "-lt")) || (STREQ (s, "-le")) ||
(STREQ (s, "-gt")) || (STREQ (s, "-ge")));
@@ -360,7 +361,8 @@ binary_operator (bool l_is_l)
test_syntax_error (_("unknown binary operator"), argv[op]);
}
- if (argv[op][0] == '=' && !argv[op][1])
+ if (argv[op][0] == '=' && (!argv[op][1] ||
+ ((argv[op][1] == '=') && !argv[op][2])))
{
bool value = STREQ (argv[pos], argv[pos + 2]);
pos += 3;
--
1.7.4.1.514.ga171c
>From b3f6b33e4b31667b9b43708730f6f75f25e8ff57 Mon Sep 17 00:00:00 2001
From: Jim Meyering <address@hidden>
Date: Tue, 22 Mar 2011 06:07:35 +0100
Subject: [PATCH 2/3] tests: exercise tests new "==" operator
* tests/misc/test: Exercise the new operator.
* NEWS (Changes in behavior): Mention it.
---
NEWS | 4 ++++
tests/misc/test | 2 ++
2 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/NEWS b/NEWS
index 9ceaa06..b2674c0 100644
--- a/NEWS
+++ b/NEWS
@@ -26,6 +26,10 @@ GNU coreutils NEWS -*-
outline -*-
which will discard any cache associated with the files, or
processed portion thereof.
+** Changes in behavior
+
+ test now accepts "==" as a synonym for "="
+
* Noteworthy changes in release 8.10 (2011-02-04) [stable]
diff --git a/tests/misc/test b/tests/misc/test
index 396660b..f515b7f 100755
--- a/tests/misc/test
+++ b/tests/misc/test
@@ -132,6 +132,8 @@ my @Tests =
['streq-1', qw(t = t)],
['streq-2', qw(t = f), {EXIT=>1}],
+ ['streqeq-1', qw(t == t)],
+ ['streqeq-2', qw(t == f), {EXIT=>1}],
['streq-3', qw(! = !)],
['streq-4', qw(= = =)],
['streq-5', "'(' = '('"],
--
1.7.4.1.514.ga171c
>From 437fcf713c237f45f9504bb8bdc6041f65663b36 Mon Sep 17 00:00:00 2001
From: Jim Meyering <address@hidden>
Date: Tue, 22 Mar 2011 06:09:06 +0100
Subject: [PATCH 3/3] build: update gnulib submodule to latest
---
gnulib | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/gnulib b/gnulib
index 0baae9c..1a22d91 160000
--- a/gnulib
+++ b/gnulib
@@ -1 +1 @@
-Subproject commit 0baae9cadd08c9704e3c704dd69fb75640293e9d
+Subproject commit 1a22d910adea20751cc5649b224574d07ba72815
--
1.7.4.1.514.ga171c