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 PR/44876: Aleksey Cheusov: awk...
details: https://anonhg.NetBSD.org/src/rev/9e633f7f4496
branches: trunk
changeset: 764383:9e633f7f4496
user: christos <christos%NetBSD.org@localhost>
date: Mon Apr 18 15:23:28 2011 +0000
description:
PR/44876: Aleksey Cheusov: awk: incorrect return value of function srand()
Make it return the value of the previous random seed as the standard mandates.
diffstat:
external/historical/nawk/dist/main.c | 5 +++++
external/historical/nawk/dist/run.c | 6 +++++-
2 files changed, 10 insertions(+), 1 deletions(-)
diffs (52 lines):
diff -r 1683370ae944 -r 9e633f7f4496 external/historical/nawk/dist/main.c
--- a/external/historical/nawk/dist/main.c Mon Apr 18 08:36:14 2011 +0000
+++ b/external/historical/nawk/dist/main.c Mon Apr 18 15:23:28 2011 +0000
@@ -42,6 +42,7 @@
extern int nfields;
int dbg = 0;
+unsigned int srand_seed;
char *cmdname; /* gets argv[0] for error messages */
extern FILE *yyin; /* lex input file */
char *lexprog; /* points to program argument if it exists */
@@ -122,6 +123,10 @@
#else
(void)signal(SIGFPE, fpecatch);
#endif
+ /* Set and keep track of the random seed */
+ srand_seed = 1;
+ srand(srand_seed);
+
yyin = NULL;
symtab = makesymtab(NSYMTAB/NSYMTAB);
while (argc > 1 && argv[1][0] == '-' && argv[1][1] != '\0') {
diff -r 1683370ae944 -r 9e633f7f4496 external/historical/nawk/dist/run.c
--- a/external/historical/nawk/dist/run.c Mon Apr 18 08:36:14 2011 +0000
+++ b/external/historical/nawk/dist/run.c Mon Apr 18 15:23:28 2011 +0000
@@ -74,6 +74,7 @@
jmp_buf env;
extern int pairstack[];
+extern unsigned int srand_seed;
Node *winner = NULL; /* root of parse tree */
Cell *tmps; /* free temporary cells for execution */
@@ -1546,6 +1547,7 @@
Cell *x, *y;
Awkfloat u;
int t, sz;
+ unsigned int tmp;
char *buf, *fmt;
Node *nextarg;
FILE *fp;
@@ -1598,7 +1600,9 @@
u = time((time_t *)0);
else
u = getfval(x);
- srand((unsigned int) u);
+ srand(tmp = (unsigned int) u);
+ u = srand_seed;
+ srand_seed = tmp;
break;
case FTOUPPER:
case FTOLOWER:
Home |
Main Index |
Thread Index |
Old Index