summaryrefslogtreecommitdiff
path: root/usr.bin/awk/run.c
diff options
context:
space:
mode:
authorTodd C. Miller <millert@cvs.openbsd.org>2020-06-10 21:02:34 +0000
committerTodd C. Miller <millert@cvs.openbsd.org>2020-06-10 21:02:34 +0000
commit8e2cc9d648485b85db60e59bccee4c99723830fe (patch)
treebc12bdf4629111b6e1d890e190ac3cdd242da095 /usr.bin/awk/run.c
parent00c62b2c6a571e929a14fec3d0a42da1292a653a (diff)
Update awk to Sep 10, 2019 version.
Diffstat (limited to 'usr.bin/awk/run.c')
-rw-r--r--usr.bin/awk/run.c49
1 files changed, 26 insertions, 23 deletions
diff --git a/usr.bin/awk/run.c b/usr.bin/awk/run.c
index 770019f962d..051170341b0 100644
--- a/usr.bin/awk/run.c
+++ b/usr.bin/awk/run.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: run.c,v 1.50 2020/06/10 21:02:19 millert Exp $ */
+/* $OpenBSD: run.c,v 1.51 2020/06/10 21:02:33 millert Exp $ */
/****************************************************************
Copyright (C) Lucent Technologies 1997
All Rights Reserved
@@ -520,7 +520,7 @@ Cell *awkdelete(Node **a, int n) /* a[0] is symtab, a[1] is list of subscripts *
}
if (!isarr(x))
return True;
- if (a[1] == 0) { /* delete the elements, not the table */
+ if (a[1] == NULL) { /* delete the elements, not the table */
freesymtab(x);
x->tval &= ~STR;
x->tval |= ARR;
@@ -606,7 +606,7 @@ Cell *matchop(Node **a, int n) /* ~ and match() */
}
x = execute(a[1]); /* a[1] = target text */
s = getsval(x);
- if (a[0] == 0) /* a[1] == 0: already-compiled reg expr */
+ if (a[0] == NULL) /* a[1] == 0: already-compiled reg expr */
i = (*mf)((fa *) a[2], s);
else {
y = execute(a[2]); /* a[2] = regular expr */
@@ -722,7 +722,7 @@ Cell *gettemp(void) /* get a tempcell */
FATAL("out of space for temporaries");
for(i = 1; i < 100; i++)
tmps[i-1].cnext = &tmps[i];
- tmps[i-1].cnext = 0;
+ tmps[i-1].cnext = NULL;
}
x = tmps;
tmps = x->cnext;
@@ -757,18 +757,18 @@ Cell *substr(Node **a, int nnn) /* substr(a[0], a[1], a[2]) */
int k, m, n;
char *s;
int temp;
- Cell *x, *y, *z = 0;
+ Cell *x, *y, *z = NULL;
x = execute(a[0]);
y = execute(a[1]);
- if (a[2] != 0)
+ if (a[2] != NULL)
z = execute(a[2]);
s = getsval(x);
k = strlen(s) + 1;
if (k <= 1) {
tempfree(x);
tempfree(y);
- if (a[2] != 0) {
+ if (a[2] != NULL) {
tempfree(z);
}
x = gettemp();
@@ -781,7 +781,7 @@ Cell *substr(Node **a, int nnn) /* substr(a[0], a[1], a[2]) */
else if (m > k)
m = k;
tempfree(y);
- if (a[2] != 0) {
+ if (a[2] != NULL) {
n = (int) getfval(z);
tempfree(z);
} else
@@ -1227,7 +1227,7 @@ Cell *pastat(Node **a, int n) /* a[0] { a[1] } */
{
Cell *x;
- if (a[0] == 0)
+ if (a[0] == NULL)
x = execute(a[1]);
else {
x = execute(a[0]);
@@ -1264,9 +1264,9 @@ Cell *dopa2(Node **a, int n) /* a[0], a[1] { a[2] } */
Cell *split(Node **a, int nnn) /* split(a[0], a[1], a[2]); a[3] is type */
{
- Cell *x = 0, *y, *ap;
+ Cell *x = NULL, *y, *ap;
char *s, *origs;
- char *fs, *origfs = NULL;
+ char *fs = NULL, *origfs = NULL;
int sep;
char *t, temp, num[50];
int n, tempstat, arg3type;
@@ -1276,7 +1276,7 @@ Cell *split(Node **a, int nnn) /* split(a[0], a[1], a[2]); a[3] is type */
if (s == NULL)
FATAL("out of space in split");
arg3type = ptoi(a[3]);
- if (a[2] == 0) /* fs string */
+ if (a[2] == NULL) /* fs string */
fs = getsval(fsloc);
else if (arg3type == STRING) { /* split(str,arr,"string") */
x = execute(a[2]);
@@ -1428,7 +1428,7 @@ Cell *ifstat(Node **a, int n) /* if (a[0]) a[1]; else a[2] */
if (istrue(x)) {
tempfree(x);
x = execute(a[1]);
- } else if (a[2] != 0) {
+ } else if (a[2] != NULL) {
tempfree(x);
x = execute(a[2]);
}
@@ -1480,7 +1480,7 @@ Cell *forstat(Node **a, int n) /* for (a[0]; a[1]; a[2]) a[3] */
x = execute(a[0]);
tempfree(x);
for (;;) {
- if (a[1]!=0) {
+ if (a[1]!=NULL) {
x = execute(a[1]);
if (!istrue(x)) return(x);
else tempfree(x);
@@ -1565,7 +1565,7 @@ Cell *bltin(Node **a, int n) /* builtin functions. a[0] is type, a[1] is arg lis
case FCOS:
u = cos(getfval(x)); break;
case FATAN:
- if (nextarg == 0) {
+ if (nextarg == NULL) {
WARNING("atan2 requires two arguments; returning 1.0");
u = 1.0;
} else {
@@ -1651,7 +1651,10 @@ Cell *bltin(Node **a, int n) /* builtin functions. a[0] is type, a[1] is arg lis
}
break;
case FRAND:
- u = (Awkfloat) (random() & RAND_MAX) / ((u_int)RAND_MAX + 1);
+ /* random() returns numbers in [0..2^31-1]
+ * in order to get a number in [0, 1), divide it by 2^31
+ */
+ u = (Awkfloat) random() / (0x7fffffffL + 0x1UL);
break;
case FSRAND:
if (isrec(x)) { /* no argument provided */
@@ -1699,7 +1702,7 @@ Cell *bltin(Node **a, int n) /* builtin functions. a[0] is type, a[1] is arg lis
tempfree(x);
x = gettemp();
setfval(x, u);
- if (nextarg != 0) {
+ if (nextarg != NULL) {
WARNING("warning: function has too many arguments");
for ( ; nextarg; nextarg = nextarg->nnext)
execute(nextarg);
@@ -1713,7 +1716,7 @@ Cell *printstat(Node **a, int n) /* print a[0] */
Cell *y;
FILE *fp;
- if (a[1] == 0) /* a[1] is redirection operator, a[2] is file */
+ if (a[1] == NULL) /* a[1] is redirection operator, a[2] is file */
fp = stdout;
else
fp = redirect(ptoi(a[1]), a[2]);
@@ -1726,7 +1729,7 @@ Cell *printstat(Node **a, int n) /* print a[0] */
else
fputs(getsval(ofsloc), fp);
}
- if (a[1] != 0)
+ if (a[1] != NULL)
fflush(fp);
if (ferror(fp))
FATAL("write error on %s", filename(fp));
@@ -1783,7 +1786,7 @@ FILE *openfile(int a, const char *us)
{
const char *s = us;
int i, m;
- FILE *fp = 0;
+ FILE *fp = NULL;
if (*s == '\0')
FATAL("null file name in print or getline");
@@ -1798,7 +1801,7 @@ FILE *openfile(int a, const char *us)
return NULL;
for (i=0; i < nfiles; i++)
- if (files[i].fp == 0)
+ if (files[i].fp == NULL)
break;
if (i >= nfiles) {
struct files *nf;
@@ -1914,7 +1917,7 @@ Cell *sub(Node **a, int nnn) /* substitute command */
FATAL("out of memory in sub");
x = execute(a[3]); /* target string */
t = getsval(x);
- if (a[0] == 0) /* 0 => a[1] is already-compiled regexpr */
+ if (a[0] == NULL) /* 0 => a[1] is already-compiled regexpr */
pfa = (fa *) a[1]; /* regular expression */
else {
y = execute(a[1]);
@@ -1977,7 +1980,7 @@ Cell *gsub(Node **a, int nnn) /* global substitute */
num = 0;
x = execute(a[3]); /* target string */
t = getsval(x);
- if (a[0] == 0) /* 0 => a[1] is already-compiled regexpr */
+ if (a[0] == NULL) /* 0 => a[1] is already-compiled regexpr */
pfa = (fa *) a[1]; /* regular expression */
else {
y = execute(a[1]);