To: freebsd-bugs@_ERASE_freebsd.org Subject: Patch for usr.bin/make/make.1 Hi, Could someone please commit this ? (unless you want to improve the nroff layout of the patch first, as I freely admit my efforts could be improved on). ====== *** 4.8-RELEASE/src/usr.bin/make/make.1 Wed Apr 2 19:09:09 2003 --- new/src/usr.bin/make/make.1 Wed Apr 2 19:10:00 2003 *************** *** 869,875 **** --- 869,882 ---- .Bl -tag -width "Cm XX" .It Cm \&|\&| logical OR + .It Cm \&| + logical OR .It Cm \&&& + Logical + .Tn AND ; + of higher precedence than + .Dq . + .It Cm \&& Logical .Tn AND ; of higher precedence than ====== Explanation Of Motivation For Patch: I was checking my syntax in ports/Makefile & sys/Makefile ... `man make` quotes: || logical OR && Logical AND; of higher precedence than ``''. /usr/src/Makefile uses: .if defined(MAKE_PORTS) & exists(ports) & exists(ports/Makefile) To quote Dire Straits: `One of them must be wrong !' Or .... ? So I looked further ... share/mk/bsd.lib.mk bsd.man.mk bsd.prog.mk: all use && Finally following a ghostly `Use The Source' ... /usr/src/usr.bin/make/cond.c lines 78-80:: * Tokens are scanned from the 'condExpr' string. The scanner (CondToken) * will return And for '&' and '&&', Or for '|' and '||', Not for '!', * LParen for '(', RParen for ')' and will evaluate the other terminal 480: if (condPushBack == None) { while (*condExpr == ' ' || *condExpr == '\t') { condExpr++; } switch (*condExpr) { .... case '|': if (condExpr[1] == '|') { condExpr++; } condExpr++; t = Or; break; case '&': if (condExpr[1] == '&') { condExpr++; } condExpr++; t = And; break; QED (Quod Erat Demonstrandum - Case Proven) ? Julian