summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Espie <espie@cvs.openbsd.org>1999-12-26 00:20:34 +0000
committerMarc Espie <espie@cvs.openbsd.org>1999-12-26 00:20:34 +0000
commitacfb0f911133039043a61e860b62c6b97f54ebd5 (patch)
tree564e45f6051af9f136ab8f1079d836d30d53ae52
parent76a90480f5b52cd953241c81de97125c3d77a73e (diff)
For loops are no longer that bad.
However, I found some more oddities while going through the scanner...
-rw-r--r--usr.bin/make/make.122
1 files changed, 20 insertions, 2 deletions
diff --git a/usr.bin/make/make.1 b/usr.bin/make/make.1
index 8ffc7f3d7df..56f8930f006 100644
--- a/usr.bin/make/make.1
+++ b/usr.bin/make/make.1
@@ -1,4 +1,4 @@
-.\" $OpenBSD: make.1,v 1.24 1999/12/06 22:20:34 espie Exp $
+.\" $OpenBSD: make.1,v 1.25 1999/12/26 00:20:33 espie Exp $
.\" $NetBSD: make.1,v 1.18 1997/03/10 21:19:53 christos Exp $
.\"
.\" Copyright (c) 1990, 1993
@@ -1195,6 +1195,7 @@ For loops are expanded before tests, so a fragment such as:
\&.endif
\&.fi
.Ed
+.Pp
won't work, and should be rewritten the other way around.
.Pp
When handling pre-BSD 4.4 archives,
@@ -1202,7 +1203,24 @@ When handling pre-BSD 4.4 archives,
may erroneously mark archive members as out of date if the archive name
was truncated.
.Pp
-Variable handling and for loop expansion are incredibly inefficient.
+The handling of ; and other special characters in tests may be utterly
+bogus. For instance, in
+.Bd -literal
+\&A=abcd;c.c
+\&.if ${A:R} == "abcd;c"
+.Ed
+.Pp
+the test will never match, even though the value is correct.
+.Pp
+In a .for loop, only the variable value is used, assignments will be
+evaluated later, e.g., in
+.Bd -literal
+\&.for I in a b c d
+I:=${I:S/a/z}
+A+=$I
+\&.endfor
+.Ed
+A will evaluate to a b c d after the loop, not z b c d.
.Sh SEE ALSO
.Xr mkdep 1
.Sh HISTORY