Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/external/historical/nawk/dist Fix failing unittests (by rest...
details: https://anonhg.NetBSD.org/src/rev/70e8f44fb6f1
branches: trunk
changeset: 969435:70e8f44fb6f1
user: christos <christos%NetBSD.org@localhost>
date: Thu Feb 20 19:59:12 2020 +0000
description:
Fix failing unittests (by restoring old changes).
diffstat:
external/historical/nawk/dist/lex.c | 1 +
external/historical/nawk/dist/lib.c | 17 ++++++++++++++---
external/historical/nawk/dist/main.c | 2 ++
external/historical/nawk/dist/proto.h | 4 ++--
external/historical/nawk/dist/run.c | 24 ++++++++++++++----------
5 files changed, 33 insertions(+), 15 deletions(-)
diffs (180 lines):
diff -r 695203b6ad1d -r 70e8f44fb6f1 external/historical/nawk/dist/lex.c
--- a/external/historical/nawk/dist/lex.c Thu Feb 20 18:24:20 2020 +0000
+++ b/external/historical/nawk/dist/lex.c Thu Feb 20 19:59:12 2020 +0000
@@ -401,6 +401,7 @@
case '\\':
c = input();
switch (c) {
+ case '\n': break;
case '"': *bp++ = '"'; break;
case 'n': *bp++ = '\n'; break;
case 't': *bp++ = '\t'; break;
diff -r 695203b6ad1d -r 70e8f44fb6f1 external/historical/nawk/dist/lib.c
--- a/external/historical/nawk/dist/lib.c Thu Feb 20 18:24:20 2020 +0000
+++ b/external/historical/nawk/dist/lib.c Thu Feb 20 19:59:12 2020 +0000
@@ -39,6 +39,7 @@
char EMPTY[] = { '\0' };
FILE *infile = NULL;
+bool innew; /* true = infile has not been read by readrec */
char *file = EMPTY;
char *record;
int recsize = RECSIZE;
@@ -110,6 +111,7 @@
argno++;
}
infile = stdin; /* no filenames, so use stdin */
+ innew = true;
}
/*
@@ -179,7 +181,9 @@
FATAL("can't open file %s", file);
setfval(fnrloc, 0.0);
}
- c = readrec(&buf, &bufsize, infile);
+ c = readrec(&buf, &bufsize, infile, innew);
+ if (innew)
+ innew = false;
if (c != 0 || buf[0] != '\0') { /* normal record */
if (isrecord) {
if (freeable(fldtab[0]))
@@ -217,7 +221,7 @@
argno++;
}
-int readrec(char **pbuf, int *pbufsize, FILE *inf) /* read one record into buf */
+int readrec(char **pbuf, int *pbufsize, FILE *inf, bool newflag) /* read one record into buf */
{
int sep, c, isrec;
char *rr, *buf = *pbuf;
@@ -228,7 +232,14 @@
bool found;
fa *pfa = makedfa(rs, 1);
- found = fnematch(pfa, inf, &buf, &bufsize, recsize);
+ if (newflag)
+ found = fnematch(pfa, inf, &buf, &bufsize, recsize);
+ else {
+ int tempstat = pfa->initstat;
+ pfa->initstat = 2;
+ found = fnematch(pfa, inf, &buf, &bufsize, recsize);
+ pfa->initstat = tempstat;
+ }
if (found)
setptr(patbeg, '\0');
} else {
diff -r 695203b6ad1d -r 70e8f44fb6f1 external/historical/nawk/dist/main.c
--- a/external/historical/nawk/dist/main.c Thu Feb 20 18:24:20 2020 +0000
+++ b/external/historical/nawk/dist/main.c Thu Feb 20 19:59:12 2020 +0000
@@ -218,7 +218,9 @@
if (!safe)
envinit(environ);
yyparse();
+#if 0
setlocale(LC_NUMERIC, ""); /* back to whatever it is locally */
+#endif
if (fs)
*FS = qstring(fs, '\0');
dprintf( ("errorflag=%d\n", errorflag) );
diff -r 695203b6ad1d -r 70e8f44fb6f1 external/historical/nawk/dist/proto.h
--- a/external/historical/nawk/dist/proto.h Thu Feb 20 18:24:20 2020 +0000
+++ b/external/historical/nawk/dist/proto.h Thu Feb 20 19:59:12 2020 +0000
@@ -124,7 +124,7 @@
extern void savefs(void);
extern int getrec(char **, int *, bool);
extern void nextfile(void);
-extern int readrec(char **, int *, FILE *);
+extern int readrec(char **, int *, FILE *, bool);
extern char *getargv(int);
extern void setclvar(char *);
extern void fldbld(void);
@@ -193,7 +193,7 @@
extern Cell *printstat(Node **, int);
extern Cell *nullproc(Node **, int);
extern FILE *redirect(int, Node *);
-extern FILE *openfile(int, const char *);
+extern FILE *openfile(int, const char *, bool *);
extern const char *filename(FILE *);
extern Cell *closefile(Node **, int);
extern void closeall(void);
diff -r 695203b6ad1d -r 70e8f44fb6f1 external/historical/nawk/dist/run.c
--- a/external/historical/nawk/dist/run.c Thu Feb 20 18:24:20 2020 +0000
+++ b/external/historical/nawk/dist/run.c Thu Feb 20 19:59:12 2020 +0000
@@ -409,6 +409,7 @@
char *buf;
int bufsize = recsize;
int mode;
+ bool newflag;
if ((buf = malloc(bufsize)) == NULL)
FATAL("out of memory in getline");
@@ -420,12 +421,12 @@
mode = ptoi(a[1]);
if (mode == '|') /* input pipe */
mode = LE; /* arbitrary flag */
- fp = openfile(mode, getsval(x));
+ fp = openfile(mode, getsval(x), &newflag);
tempfree(x);
if (fp == NULL)
n = -1;
else
- n = readrec(&buf, &bufsize, fp);
+ n = readrec(&buf, &bufsize, fp, newflag);
if (n <= 0) {
;
} else if (a[0] != NULL) { /* getline var <file */
@@ -1722,7 +1723,7 @@
if (isrec(x) || strlen(getsval(x)) == 0) {
flush_all(); /* fflush() or fflush("") -> all */
u = 0;
- } else if ((fp = openfile(FFLUSH, getsval(x))) == NULL)
+ } else if ((fp = openfile(FFLUSH, getsval(x), NULL)) == NULL)
u = EOF;
else
u = fflush(fp);
@@ -1817,7 +1818,7 @@
x = execute(b);
fname = getsval(x);
- fp = openfile(a, fname);
+ fp = openfile(a, fname, NULL);
if (fp == NULL)
FATAL("can't open file %s", fname);
tempfree(x);
@@ -1849,7 +1850,7 @@
files[2].mode = GT;
}
-FILE *openfile(int a, const char *us)
+FILE *openfile(int a, const char *us, bool *pnewflag)
{
const char *s = us;
size_t i;
@@ -1859,11 +1860,12 @@
if (*s == '\0')
FATAL("null file name in print or getline");
for (i = 0; i < nfiles; i++)
- if (files[i].fname && strcmp(s, files[i].fname) == 0) {
- if (a == files[i].mode || (a==APPEND && files[i].mode==GT))
- return files[i].fp;
- if (a == FFLUSH)
- return files[i].fp;
+ if (files[i].fname && strcmp(s, files[i].fname) == 0 &&
+ (a == files[i].mode || (a==APPEND && files[i].mode==GT) ||
+ a == FFLUSH)) {
+ if (pnewflag)
+ *pnewflag = false;
+ return files[i].fp;
}
if (a == FFLUSH) /* didn't find it, so don't create it! */
return NULL;
@@ -1900,6 +1902,8 @@
files[i].fname = tostring(s);
files[i].fp = fp;
files[i].mode = m;
+ if (pnewflag)
+ *pnewflag = true;
if (fp != stdin && fp != stdout && fp != stderr)
(void) fcntl(fileno(fp), F_SETFD, FD_CLOEXEC);
}
Home |
Main Index |
Thread Index |
Old Index