diff options
author | David A. Wheeler <dwheeler@dwheeler.com> | 2011-03-22 06:03:55 +0100 |
---|---|---|
committer | Jim Meyering <meyering@redhat.com> | 2011-03-22 07:12:01 +0100 |
commit | 3f31ec950b78309a0d12d92d87a735b8870a2289 (patch) | |
tree | ba10fd737e20a7e8f1959f6031683d674762afe5 | |
parent | 2a3a094e0d9712e69f168a10685975f1a7ed5917 (diff) | |
download | coreutils-3f31ec950b78309a0d12d92d87a735b8870a2289.tar.xz |
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
-rw-r--r-- | doc/coreutils.texi | 7 | ||||
-rw-r--r-- | src/test.c | 6 |
2 files changed, 10 insertions, 3 deletions
diff --git a/doc/coreutils.texi b/doc/coreutils.texi index 8dd1ed8ba..46deeed46 100644 --- a/doc/coreutils.texi +++ b/doc/coreutils.texi @@ -11535,7 +11535,7 @@ Exit status: * 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 @@ True if the length of @var{string} is nonzero. @cindex equal string check True if the strings are equal. +@item @var{string1} == @var{string2} +@opindex == +@cindex 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 2d7aa673b..362df65d8 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; |