Merge pull request #31 from arnoldrobbins/master
Make getline handle numeric strings, and update FIXES
This commit is contained in:
commit
1164fa7ace
@ -1,3 +1,12 @@
|
|||||||
|
2019-01-26 Arnold D. Robbins <arnold@skeeve.com>
|
||||||
|
|
||||||
|
* main.c (version): Updated.
|
||||||
|
|
||||||
|
2019-01-25 Arnold D. Robbins <arnold@skeeve.com>
|
||||||
|
|
||||||
|
* run.c (awkgetline): Check for numeric value in all getline
|
||||||
|
variants. See the numeric-getline.* files in bugs-fixed directory.
|
||||||
|
|
||||||
2018-08-29 Arnold D. Robbins <arnold@skeeve.com>
|
2018-08-29 Arnold D. Robbins <arnold@skeeve.com>
|
||||||
|
|
||||||
* REGRESS: Check for existence of a.out. If not there, run
|
* REGRESS: Check for existence of a.out. If not there, run
|
||||||
|
10
FIXES
10
FIXES
@ -25,6 +25,16 @@ THIS SOFTWARE.
|
|||||||
This file lists all bug fixes, changes, etc., made since the AWK book
|
This file lists all bug fixes, changes, etc., made since the AWK book
|
||||||
was sent to the printers in August, 1987.
|
was sent to the printers in August, 1987.
|
||||||
|
|
||||||
|
Jan 25, 2019:
|
||||||
|
Make getline handle numeric strings properly in all cases.
|
||||||
|
(Thanks, Arnold.)
|
||||||
|
|
||||||
|
Jan 21, 2019:
|
||||||
|
Merged a number of small fixes from GitHub pull requests.
|
||||||
|
Thanks to GitHub users Arnold Robbins (arnoldrobbins),
|
||||||
|
Cody Mello (melloc) and Christoph Junghans (junghans).
|
||||||
|
PR numbers: 13-21, 23, 24, 27.
|
||||||
|
|
||||||
Oct 25, 2018:
|
Oct 25, 2018:
|
||||||
Added test in maketab.c to prevent generating a proctab entry
|
Added test in maketab.c to prevent generating a proctab entry
|
||||||
for YYSTYPE_IS_DEFINED. It was harmless but some gcc settings
|
for YYSTYPE_IS_DEFINED. It was harmless but some gcc settings
|
||||||
|
@ -51,4 +51,7 @@ array passed as the second argument, then split() would previously read
|
|||||||
from the freed memory and possibly produce incorrect results (depending
|
from the freed memory and possibly produce incorrect results (depending
|
||||||
on the system's malloc()/free() behaviour.)
|
on the system's malloc()/free() behaviour.)
|
||||||
|
|
||||||
|
15. getline-numeric: The `getline xx < file' syntax did not check if
|
||||||
|
values were numeric, in discordance from POSIX. Test case adapted from
|
||||||
|
one posted by Ben Bacarisse <ben.usenet@bsb.me.uk> in comp.lang.awk,
|
||||||
|
January 2019.
|
||||||
|
6
bugs-fixed/getline-numeric.awk
Normal file
6
bugs-fixed/getline-numeric.awk
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
print $0, ($0 <= 50 ? "<=" : ">"), 50
|
||||||
|
getline dd < ARGV[1]
|
||||||
|
print dd, (dd <= 50 ? "<=" : ">"), 50
|
||||||
|
if (dd == $0) print "same"
|
||||||
|
}
|
3
bugs-fixed/getline-numeric.bad
Normal file
3
bugs-fixed/getline-numeric.bad
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
120 > 50
|
||||||
|
120 <= 50
|
||||||
|
same
|
1
bugs-fixed/getline-numeric.in
Normal file
1
bugs-fixed/getline-numeric.in
Normal file
@ -0,0 +1 @@
|
|||||||
|
120
|
3
bugs-fixed/getline-numeric.ok
Normal file
3
bugs-fixed/getline-numeric.ok
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
120 > 50
|
||||||
|
120 > 50
|
||||||
|
same
|
2
main.c
2
main.c
@ -22,7 +22,7 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
|
|||||||
THIS SOFTWARE.
|
THIS SOFTWARE.
|
||||||
****************************************************************/
|
****************************************************************/
|
||||||
|
|
||||||
const char *version = "version 20180827";
|
const char *version = "version 20190125";
|
||||||
|
|
||||||
#define DEBUG
|
#define DEBUG
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
8
run.c
8
run.c
@ -425,6 +425,10 @@ Cell *awkgetline(Node **a, int n) /* get next line from specific input */
|
|||||||
} else if (a[0] != NULL) { /* getline var <file */
|
} else if (a[0] != NULL) { /* getline var <file */
|
||||||
x = execute(a[0]);
|
x = execute(a[0]);
|
||||||
setsval(x, buf);
|
setsval(x, buf);
|
||||||
|
if (is_number(x->sval)) {
|
||||||
|
x->fval = atof(x->sval);
|
||||||
|
x->tval |= NUM;
|
||||||
|
}
|
||||||
tempfree(x);
|
tempfree(x);
|
||||||
} else { /* getline <file */
|
} else { /* getline <file */
|
||||||
setsval(fldtab[0], buf);
|
setsval(fldtab[0], buf);
|
||||||
@ -440,6 +444,10 @@ Cell *awkgetline(Node **a, int n) /* get next line from specific input */
|
|||||||
n = getrec(&buf, &bufsize, 0);
|
n = getrec(&buf, &bufsize, 0);
|
||||||
x = execute(a[0]);
|
x = execute(a[0]);
|
||||||
setsval(x, buf);
|
setsval(x, buf);
|
||||||
|
if (is_number(x->sval)) {
|
||||||
|
x->fval = atof(x->sval);
|
||||||
|
x->tval |= NUM;
|
||||||
|
}
|
||||||
tempfree(x);
|
tempfree(x);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user