=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/make/cond.c,v retrieving revision 1.45 retrieving revision 1.46 diff -u -r1.45 -r1.46 --- src/usr.bin/make/cond.c 2012/10/09 19:51:50 1.45 +++ src/usr.bin/make/cond.c 2012/10/11 14:56:17 1.46 @@ -1,4 +1,4 @@ -/* $OpenBSD: cond.c,v 1.45 2012/10/09 19:51:50 espie Exp $ */ +/* $OpenBSD: cond.c,v 1.46 2012/10/11 14:56:17 espie Exp $ */ /* $NetBSD: cond.c,v 1.7 1996/11/06 17:59:02 christos Exp $ */ /* @@ -77,6 +77,7 @@ * T -> $(varspec) != "string" * T -> "string" == "string" * T -> "string" != "string" + * T -> number op number * T -> ( E ) * T -> ! T * op -> == | != | > | < | >= | <= @@ -115,6 +116,7 @@ static Token CondHandleDefault(bool); static Token CondHandleComparison(char *, bool, bool); static Token CondHandleString(bool); +static Token CondHandleNumber(bool); static const char *find_cond(const char *); @@ -385,6 +387,20 @@ static Token +CondHandleNumber(bool doEval) +{ + const char *end; + char *lhs; + + end = condExpr; + while (!isspace(*end) && strchr("!=><", *end) == NULL) + end++; + lhs = Str_dupi(condExpr, end); + condExpr = end; + return CondHandleComparison(lhs, true, doEval); +} + +static Token CondHandleVarSpec(bool doEval) { char *lhs; @@ -760,6 +776,9 @@ return CondHandleString(doEval); case '$': return CondHandleVarSpec(doEval); + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + return CondHandleNumber(doEval); default: return CondHandleDefault(doEval); }