=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/awk/tran.c,v retrieving revision 1.20 retrieving revision 1.21 diff -c -r1.20 -r1.21 *** src/usr.bin/awk/tran.c 2020/06/10 21:00:31 1.20 --- src/usr.bin/awk/tran.c 2020/06/10 21:01:32 1.21 *************** *** 1,4 **** ! /* $OpenBSD: tran.c,v 1.20 2020/06/10 21:00:31 millert Exp $ */ /**************************************************************** Copyright (C) Lucent Technologies 1997 All Rights Reserved --- 1,4 ---- ! /* $OpenBSD: tran.c,v 1.21 2020/06/10 21:01:32 millert Exp $ */ /**************************************************************** Copyright (C) Lucent Technologies 1997 All Rights Reserved *************** *** 56,65 **** --- 56,69 ---- Cell *nrloc; /* NR */ Cell *nfloc; /* NF */ Cell *fnrloc; /* FNR */ + Cell *ofsloc; /* OFS */ + Cell *orsloc; /* ORS */ + Cell *rsloc; /* RS */ Array *ARGVtab; /* symbol table containing ARGV[...] */ Array *ENVtab; /* symbol table containing ENVIRON[...] */ Cell *rstartloc; /* RSTART */ Cell *rlengthloc; /* RLENGTH */ + Cell *subseploc; /* SUBSEP */ Cell *symtabloc; /* SYMTAB */ Cell *nullloc; /* a guaranteed empty cell */ *************** *** 89,97 **** fsloc = setsymtab("FS", " ", 0.0, STR|DONTFREE, symtab); FS = &fsloc->sval; ! RS = &setsymtab("RS", "\n", 0.0, STR|DONTFREE, symtab)->sval; ! OFS = &setsymtab("OFS", " ", 0.0, STR|DONTFREE, symtab)->sval; ! ORS = &setsymtab("ORS", "\n", 0.0, STR|DONTFREE, symtab)->sval; OFMT = &setsymtab("OFMT", "%.6g", 0.0, STR|DONTFREE, symtab)->sval; CONVFMT = &setsymtab("CONVFMT", "%.6g", 0.0, STR|DONTFREE, symtab)->sval; FILENAME = &setsymtab("FILENAME", "", 0.0, STR|DONTFREE, symtab)->sval; --- 93,104 ---- fsloc = setsymtab("FS", " ", 0.0, STR|DONTFREE, symtab); FS = &fsloc->sval; ! rsloc = setsymtab("RS", "\n", 0.0, STR|DONTFREE, symtab); ! RS = &rsloc->sval; ! ofsloc = setsymtab("OFS", " ", 0.0, STR|DONTFREE, symtab); ! OFS = &ofsloc->sval; ! orsloc = setsymtab("ORS", "\n", 0.0, STR|DONTFREE, symtab); ! ORS = &orsloc->sval; OFMT = &setsymtab("OFMT", "%.6g", 0.0, STR|DONTFREE, symtab)->sval; CONVFMT = &setsymtab("CONVFMT", "%.6g", 0.0, STR|DONTFREE, symtab)->sval; FILENAME = &setsymtab("FILENAME", "", 0.0, STR|DONTFREE, symtab)->sval; *************** *** 101,107 **** NR = &nrloc->fval; fnrloc = setsymtab("FNR", "", 0.0, NUM, symtab); FNR = &fnrloc->fval; ! SUBSEP = &setsymtab("SUBSEP", "\034", 0.0, STR|DONTFREE, symtab)->sval; rstartloc = setsymtab("RSTART", "", 0.0, NUM, symtab); RSTART = &rstartloc->fval; rlengthloc = setsymtab("RLENGTH", "", 0.0, NUM, symtab); --- 108,115 ---- NR = &nrloc->fval; fnrloc = setsymtab("FNR", "", 0.0, NUM, symtab); FNR = &fnrloc->fval; ! subseploc = setsymtab("SUBSEP", "\034", 0.0, STR|DONTFREE, symtab); ! SUBSEP = &subseploc->sval; rstartloc = setsymtab("RSTART", "", 0.0, NUM, symtab); RSTART = &rstartloc->fval; rlengthloc = setsymtab("RLENGTH", "", 0.0, NUM, symtab); *************** *** 311,316 **** --- 319,327 ---- } else if (isrec(vp)) { donefld = 0; /* mark $1... invalid */ donerec = 1; + } else if (vp == ofsloc) { + if (donerec == 0) + recbld(); } if (freeable(vp)) xfree(vp->sval); /* free any previous string */ *************** *** 352,358 **** } else if (isrec(vp)) { donefld = 0; /* mark $1... invalid */ donerec = 1; ! } else if (&vp->sval == OFS) { if (donerec == 0) recbld(); } --- 363,369 ---- } else if (isrec(vp)) { donefld = 0; /* mark $1... invalid */ donerec = 1; ! } else if (vp == ofsloc) { if (donerec == 0) recbld(); }