Merge remote-tracking branch 'upstream/master' into interval-expr
main.c: bump version to 20190305
This commit is contained in:
commit
e6ecf52e04
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
a.out
|
||||
maketab
|
||||
proctab.c
|
||||
ytab.c
|
||||
ytab.h
|
||||
*.o
|
@ -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>
|
||||
|
||||
* REGRESS: Check for existence of a.out. If not there, run
|
||||
|
12
FIXES
12
FIXES
@ -25,11 +25,21 @@ THIS SOFTWARE.
|
||||
This file lists all bug fixes, changes, etc., made since the AWK book
|
||||
was sent to the printers in August, 1987.
|
||||
|
||||
Jan 23, 2019:
|
||||
Mar 5, 2019:
|
||||
Added support for POSIX-standard interval expressions (a.k.a.
|
||||
bounds, a.k.a. repetition expressions) in regular expressions,
|
||||
backported (via NetBSD) from Apple awk-24 (20070501).
|
||||
|
||||
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:
|
||||
Added test in maketab.c to prevent generating a proctab entry
|
||||
for YYSTYPE_IS_DEFINED. It was harmless but some gcc settings
|
||||
|
3
b.c
3
b.c
@ -27,6 +27,7 @@ THIS SOFTWARE.
|
||||
#define DEBUG
|
||||
|
||||
#include <ctype.h>
|
||||
#include <limits.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
@ -970,7 +971,7 @@ rescan:
|
||||
* not without first adapting the entire
|
||||
* program to track each string's length.
|
||||
*/
|
||||
for (i = 1; i < NCHARS; i++) {
|
||||
for (i = 1; i <= UCHAR_MAX; i++) {
|
||||
if (!adjbuf((char **) &buf, &bufsz, bp-buf+1, 100, (char **) &bp, "relex2"))
|
||||
FATAL("out of space for reg expr %.10s...", lastre);
|
||||
if (cc->cc_func(i)) {
|
||||
|
@ -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
|
||||
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.
|
||||
****************************************************************/
|
||||
|
||||
const char *version = "version 20190123";
|
||||
const char *version = "version 20190305";
|
||||
|
||||
#define DEBUG
|
||||
#include <stdio.h>
|
||||
|
2
makefile
2
makefile
@ -67,7 +67,7 @@ y%.c y%.h: awk.h proto.h awkgram.y
|
||||
ytab.h: ytab.c
|
||||
|
||||
proctab.c: maketab
|
||||
./maketab >proctab.c
|
||||
./maketab ytab.h >proctab.c
|
||||
|
||||
maketab: ytab.h maketab.c
|
||||
$(CC) $(CFLAGS) maketab.c -o maketab
|
||||
|
@ -125,8 +125,12 @@ int main(int argc, char *argv[])
|
||||
for (i = SIZE; --i >= 0; )
|
||||
names[i] = "";
|
||||
|
||||
if ((fp = fopen("ytab.h", "r")) == NULL) {
|
||||
fprintf(stderr, "maketab can't open ytab.h!\n");
|
||||
if (argc != 2) {
|
||||
fprintf(stderr, "usage: maketab YTAB_H\n");
|
||||
exit(1);
|
||||
}
|
||||
if ((fp = fopen(argv[1], "r")) == NULL) {
|
||||
fprintf(stderr, "maketab can't open %s!\n", argv[1]);
|
||||
exit(1);
|
||||
}
|
||||
printf("static char *printname[%d] = {\n", SIZE);
|
||||
|
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 */
|
||||
x = execute(a[0]);
|
||||
setsval(x, buf);
|
||||
if (is_number(x->sval)) {
|
||||
x->fval = atof(x->sval);
|
||||
x->tval |= NUM;
|
||||
}
|
||||
tempfree(x);
|
||||
} else { /* getline <file */
|
||||
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);
|
||||
x = execute(a[0]);
|
||||
setsval(x, buf);
|
||||
if (is_number(x->sval)) {
|
||||
x->fval = atof(x->sval);
|
||||
x->tval |= NUM;
|
||||
}
|
||||
tempfree(x);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user