aboutsummaryrefslogtreecommitdiff
path: root/bin/expr
diff options
context:
space:
mode:
authorGarrett Wollman <wollman@FreeBSD.org>2002-05-11 03:08:12 +0000
committerGarrett Wollman <wollman@FreeBSD.org>2002-05-11 03:08:12 +0000
commit94a48596a3d168f80462a7f2be9ece9dc0da09f8 (patch)
tree7761504b6ed14c8a4ca61fde37f0f5039f797691 /bin/expr
parent4a21733e2d77033da56c9d2594a07b2082900e40 (diff)
downloadsrc-94a48596a3d168f80462a7f2be9ece9dc0da09f8.tar.gz
src-94a48596a3d168f80462a7f2be9ece9dc0da09f8.zip
EXPR_COMPAT should imply -e, since there is no way to specify it otherwise,
and -e reflects the historic behavior of FreeBSD's expr.
Notes
Notes: svn path=/head/; revision=96382
Diffstat (limited to 'bin/expr')
-rw-r--r--bin/expr/expr.118
-rw-r--r--bin/expr/expr.y1
2 files changed, 18 insertions, 1 deletions
diff --git a/bin/expr/expr.1 b/bin/expr/expr.1
index 1425e00ddc77..4a978d07a1fc 100644
--- a/bin/expr/expr.1
+++ b/bin/expr/expr.1
@@ -66,7 +66,7 @@ If
.Fl e
is not specified, arithmetic operations and parsing of integer
arguments will overflow silently according to the rules of the C
-standard, and integer computations will be performed using the
+standard, using the
.Ql long
data type.
.Pp
@@ -139,6 +139,20 @@ including the one in previous versions of
will not permit this syntax.
See the examples below for portable ways to guarantee the correct
interpretation.
+The
+.Ev EXPR_COMPAT
+variable is intended for use as a transition and debugging aid, when
+.Nm
+is used in complex scripts which cannot easily be recast to avoid the
+non-portable usage.
+Defining
+.Ev EXPR_COMPAT
+also implicitly enables the
+.Fl e
+option, since this matches the historic behavior of
+.Nm
+in
+.Fx .
.Pp
The
.Nm
@@ -161,6 +175,8 @@ If set,
will emulate historic
.Nm
implementations which did not obey the Utility Syntax Guidelines.
+Implies
+.Fl e .
.El
.Sh EXAMPLES
.Bl -bullet
diff --git a/bin/expr/expr.y b/bin/expr/expr.y
index 92c0e5f2df50..c73d85360deb 100644
--- a/bin/expr/expr.y
+++ b/bin/expr/expr.y
@@ -280,6 +280,7 @@ main(int argc, char *argv[])
setlocale (LC_ALL, "");
if (getenv("EXPR_COMPAT") != NULL) {
av = argv + 1;
+ eflag = 1;
} else {
while ((c = getopt(argc, argv, "e")) != -1)
switch (c) {