summaryrefslogtreecommitdiffstats
path: root/bin/expr
diff options
context:
space:
mode:
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 1425e00..4a978d0 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 92c0e5f..c73d853 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) {
OpenPOWER on IntegriCloud