Module Name: src Committed By: rillig Date: Fri Nov 13 07:35:27 UTC 2020
Modified Files: src/usr.bin/make: cond.c Log Message: make(1): replace large switch with if-else in Cond_EvalLine To generate a diff of this commit: cvs rdiff -u -r1.211 -r1.212 src/usr.bin/make/cond.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/make/cond.c diff -u src/usr.bin/make/cond.c:1.211 src/usr.bin/make/cond.c:1.212 --- src/usr.bin/make/cond.c:1.211 Fri Nov 13 06:19:27 2020 +++ src/usr.bin/make/cond.c Fri Nov 13 07:35:27 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: cond.c,v 1.211 2020/11/13 06:19:27 rillig Exp $ */ +/* $NetBSD: cond.c,v 1.212 2020/11/13 07:35:27 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -94,7 +94,7 @@ #include "dir.h" /* "@(#)cond.c 8.2 (Berkeley) 1/2/94" */ -MAKE_RCSID("$NetBSD: cond.c,v 1.211 2020/11/13 06:19:27 rillig Exp $"); +MAKE_RCSID("$NetBSD: cond.c,v 1.212 2020/11/13 07:35:27 rillig Exp $"); /* * The parsing of conditional expressions is based on this grammar: @@ -1167,19 +1167,12 @@ Cond_EvalLine(const char *const line) } state = cond_states[cond_depth]; - switch (state) { - case SEARCH_FOR_ELIF: - state = ELSE_ACTIVE; - break; - case ELSE_ACTIVE: - case SKIP_TO_ENDIF: - Parse_Error(PARSE_WARNING, "extra else"); - /* FALLTHROUGH */ - default: - case IF_ACTIVE: - case SKIP_TO_ELSE: - state = SKIP_TO_ENDIF; - break; + if (state == SEARCH_FOR_ELIF) { + state = ELSE_ACTIVE; + } else { + if (state == ELSE_ACTIVE || state == SKIP_TO_ENDIF) + Parse_Error(PARSE_WARNING, "extra else"); + state = SKIP_TO_ENDIF; } cond_states[cond_depth] = state; return state <= ELSE_ACTIVE ? COND_PARSE : COND_SKIP;