summaryrefslogtreecommitdiffstats
path: root/bin/expr
diff options
context:
space:
mode:
authorwollman <wollman@FreeBSD.org>2002-04-22 21:23:09 +0000
committerwollman <wollman@FreeBSD.org>2002-04-22 21:23:09 +0000
commite46c2e6ba94761edeaba49e1fa820140066e3ea8 (patch)
tree0cabdac92e2713ee366194c0caf44cb311121310 /bin/expr
parentd4c507ea29a089a017b39ff7d76624177ec4bb5b (diff)
downloadFreeBSD-src-e46c2e6ba94761edeaba49e1fa820140066e3ea8.zip
FreeBSD-src-e46c2e6ba94761edeaba49e1fa820140066e3ea8.tar.gz
Provide an environment variabloe, EXPR_COMPAT, which disables option
parsing for compatibility with old implementations.
Diffstat (limited to 'bin/expr')
-rw-r--r--bin/expr/expr.118
-rw-r--r--bin/expr/expr.y19
2 files changed, 27 insertions, 10 deletions
diff --git a/bin/expr/expr.1 b/bin/expr/expr.1
index df4c70b..4669000 100644
--- a/bin/expr/expr.1
+++ b/bin/expr/expr.1
@@ -111,7 +111,9 @@ otherwise 0.
.Pp
Parentheses are used for grouping in the usual manner.
.Pp
-This version of
+Unless the
+.Ev EXPR_COMPAT
+variable is defined in the process environment, this version of
.Nm
adheres to the
.Tn POSIX
@@ -141,6 +143,15 @@ The syntax of the
command in general is historic and inconvenient.
New applications are advised to use shell arithmetic rather than
.Nm .
+.Sh ENVIRONMENT
+.Bl -tag -compact -width EXPR_COMPAT
+.It Ev EXPR_COMPAT
+If set,
+.Nm
+will emulate historic
+.Nm
+implementations which did not obey the Utility Syntax Guidelines.
+.El
.Sh EXAMPLES
.Bl -bullet
.It
@@ -216,7 +227,10 @@ the expression is invalid.
The
.Nm
utility conforms to
-.St -p1003.1-2001 .
+.St -p1003.1-2001 ,
+provided that the
+.Ev EXPR_COMPAT
+environment variable is not defined.
.Tn POSIX
does not specify whether arithmetic overflow is detected, nor does it specify
the possible range of integer arguments to
diff --git a/bin/expr/expr.y b/bin/expr/expr.y
index bc40bf3..3026f52 100644
--- a/bin/expr/expr.y
+++ b/bin/expr/expr.y
@@ -270,14 +270,17 @@ main(int argc, char *argv[])
int c;
setlocale (LC_ALL, "");
- while ((c = getopt(argc, argv, "")) != -1)
- switch (c) {
- default:
- fprintf(stderr, "usage: expr [--] expression\n");
- exit(ERR_EXIT);
- }
-
- av = argv + optind;
+ if (getenv("EXPR_COMPAT") != NULL) {
+ av = argv + 1;
+ } else {
+ while ((c = getopt(argc, argv, "")) != -1)
+ switch (c) {
+ default:
+ fprintf(stderr,"usage: expr [--] expression\n");
+ exit(ERR_EXIT);
+ }
+ av = argv + optind;
+ }
yyparse();
OpenPOWER on IntegriCloud