From f2230060d3301f83f1223983a8ee942328c6e0c4 Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Tue, 18 Sep 2018 11:37:02 +0300 Subject: Improve lint check for accessing fields in END rule. --- field.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'field.c') diff --git a/field.c b/field.c index 1c209c26..b7723aa5 100644 --- a/field.c +++ b/field.c @@ -832,18 +832,19 @@ NODE ** get_field(long requested, Func_ptr *assign) { bool in_middle = false; + static bool warned = false; + extern int currule; + + if (do_lint && currule == END && ! warned) { + warned = true; + lintwarn(_("accessing fields from an END rule may not be portable")); + } + /* * if requesting whole line but some other field has been altered, * then the whole line must be rebuilt */ if (requested == 0) { - static bool warned = false; - extern int currule; - - if (do_lint && currule == END && ! warned) { - warned = true; - lintwarn(_("accessing $0 from an END rule may not be portable")); - } if (! field0_valid) { /* first, parse remainder of input record */ if (NF == -1) { -- cgit v1.2.3 From e4898b098b3bf1920291c0ccbf9bc912d4537a94 Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Tue, 18 Sep 2018 11:38:19 +0300 Subject: Add lint check for decrementing NF. --- field.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'field.c') diff --git a/field.c b/field.c index b7723aa5..2f6eff70 100644 --- a/field.c +++ b/field.c @@ -396,6 +396,13 @@ set_NF() nf = get_number_si(NF_node->var_value); if (nf < 0) fatal(_("NF set to negative value")); + + static bool warned = false; + if (do_lint && NF > nf && ! warned) { + warned = true; + lintwarn(_("decrementing NF is not portable to many awk versions")); + } + NF = nf; if (NF > nf_high_water) -- cgit v1.2.3