diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2021-07-02 23:07:21 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2021-07-02 23:07:21 +0200 |
commit | a5d7b0f4f4e9728c3eb7a06d38227d9f3351e677 (patch) | |
tree | e0f0753152820bb0fee88f0b97085dc9a2b66244 /editors | |
parent | 4d902ea9def573cd15271177abbfa50fbf30c84f (diff) |
awk: fix detection of VAR=VAL arguments
1NAME=VAL is not it, neither is VA.R=VAL
function old new delta
next_input_file 216 214 -2
is_assignment 115 91 -24
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-26) Total: -26 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'editors')
-rw-r--r-- | editors/awk.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/editors/awk.c b/editors/awk.c index 86cb7a95f..9f14f0f9a 100644 --- a/editors/awk.c +++ b/editors/awk.c @@ -2679,7 +2679,8 @@ static int is_assignment(const char *expr) { char *exprc, *val; - if (!isalnum_(*expr) || (val = strchr(expr, '=')) == NULL) { + val = (char*)endofname(expr); + if (val == (char*)expr || *val != '=') { return FALSE; } @@ -2699,7 +2700,6 @@ static rstream *next_input_file(void) #define rsm (G.next_input_file__rsm) #define files_happen (G.next_input_file__files_happen) - FILE *F; const char *fname, *ind; if (rsm.F) @@ -2712,20 +2712,19 @@ static rstream *next_input_file(void) if (files_happen) return NULL; fname = "-"; - F = stdin; + rsm.F = stdin; break; } ind = getvar_s(incvar(intvar[ARGIND])); fname = getvar_s(findvar(iamarray(intvar[ARGV]), ind)); if (fname && *fname && !is_assignment(fname)) { - F = xfopen_stdin(fname); + rsm.F = xfopen_stdin(fname); break; } } files_happen = TRUE; setvar_s(intvar[FILENAME], fname); - rsm.F = F; return &rsm; #undef rsm #undef files_happen |