Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 2 Jan 2013 21:53:46 +0000 (UTC)
From:      Xin LI <delphij@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org
Subject:   svn commit: r244978 - vendor/one-true-awk/dist
Message-ID:  <201301022153.r02Lrk8t070725@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: delphij
Date: Wed Jan  2 21:53:45 2013
New Revision: 244978
URL: http://svnweb.freebsd.org/changeset/base/244978

Log:
  Vendor import of bwk's Dec 20, 2012 version.

Modified:
  vendor/one-true-awk/dist/FIXES
  vendor/one-true-awk/dist/main.c
  vendor/one-true-awk/dist/makefile
  vendor/one-true-awk/dist/proto.h
  vendor/one-true-awk/dist/run.c
  vendor/one-true-awk/dist/tran.c

Modified: vendor/one-true-awk/dist/FIXES
==============================================================================
--- vendor/one-true-awk/dist/FIXES	Wed Jan  2 21:45:20 2013	(r244977)
+++ vendor/one-true-awk/dist/FIXES	Wed Jan  2 21:53:45 2013	(r244978)
@@ -25,6 +25,22 @@ THIS SOFTWARE.
 This file lists all bug fixes, changes, etc., made since the AWK book
 was sent to the printers in August, 1987.
 
+Dec 20, 2012:
+	fiddled makefile to get correct yacc and bison flags.  pick yacc
+	(linux) or bison (mac) as necessary.
+
+	added  __attribute__((__noreturn__)) to a couple of lines in
+	proto.h, to silence someone's enthusiastic checker.
+
+	fixed obscure call by value bug in split(a[1],a) reported on
+	9fans.  the management of temporary values is just a mess; i
+	took a shortcut by making an extra string copy.  thanks
+	to paul patience and arnold robbins for passing it on and for
+	proposed patches.
+
+	tiny fiddle in setfval to eliminate -0 results in T.expr, which
+	has irritated me for 20+ years.
+
 Aug 10, 2011:
 	another fix to avoid core dump with delete(ARGV); again, many thanks
 	to ruslan ermilov.

Modified: vendor/one-true-awk/dist/main.c
==============================================================================
--- vendor/one-true-awk/dist/main.c	Wed Jan  2 21:45:20 2013	(r244977)
+++ vendor/one-true-awk/dist/main.c	Wed Jan  2 21:53:45 2013	(r244978)
@@ -22,7 +22,7 @@ ARISING OUT OF OR IN CONNECTION WITH THE
 THIS SOFTWARE.
 ****************************************************************/
 
-const char	*version = "version 20110810";
+const char	*version = "version 20121220";
 
 #define DEBUG
 #include <stdio.h>

Modified: vendor/one-true-awk/dist/makefile
==============================================================================
--- vendor/one-true-awk/dist/makefile	Wed Jan  2 21:45:20 2013	(r244977)
+++ vendor/one-true-awk/dist/makefile	Wed Jan  2 21:53:45 2013	(r244978)
@@ -26,15 +26,15 @@ CFLAGS = -g
 CFLAGS = -O2
 CFLAGS =
 
-CC = gcc -Wall -g
-CC = cc
 CC = gcc -Wall -g -Wwrite-strings
 CC = gcc -fprofile-arcs -ftest-coverage # then gcov f1.c; cat f1.c.gcov
+CC = gcc -g -Wall -pedantic 
 CC = gcc -O4 -Wall -pedantic -fno-strict-aliasing
 
-YACC = bison -y
-YACC = yacc
-YFLAGS = -d
+YACC = bison -d -y
+YACC = yacc -d -S
+#YFLAGS = -d -S
+		# -S uses sprintf in yacc parser instead of sprint
 
 OFILES = b.o main.o parse.o proctab.o tran.o lib.o run.o lex.o
 

Modified: vendor/one-true-awk/dist/proto.h
==============================================================================
--- vendor/one-true-awk/dist/proto.h	Wed Jan  2 21:45:20 2013	(r244977)
+++ vendor/one-true-awk/dist/proto.h	Wed Jan  2 21:53:45 2013	(r244978)
@@ -46,7 +46,7 @@ extern	void	freetr(Node *);
 extern	int	hexstr(uschar **);
 extern	int	quoted(uschar **);
 extern	char	*cclenter(const char *);
-extern	void	overflo(const char *);
+extern	void	overflo(const char *) __attribute__((__noreturn__));
 extern	void	cfoll(fa *, Node *);
 extern	int	first(Node *);
 extern	void	follow(Node *);
@@ -132,7 +132,7 @@ extern	void	fpecatch(int);
 extern	void	bracecheck(void);
 extern	void	bcheck2(int, int, int);
 extern	void	SYNTAX(const char *, ...);
-extern	void	FATAL(const char *, ...);
+extern	void	FATAL(const char *, ...) __attribute__((__noreturn__));
 extern	void	WARNING(const char *, ...);
 extern	void	error(void);
 extern	void	eprint(void);

Modified: vendor/one-true-awk/dist/run.c
==============================================================================
--- vendor/one-true-awk/dist/run.c	Wed Jan  2 21:45:20 2013	(r244977)
+++ vendor/one-true-awk/dist/run.c	Wed Jan  2 21:53:45 2013	(r244978)
@@ -1210,13 +1210,13 @@ Cell *dopa2(Node **a, int n)	/* a[0], a[
 Cell *split(Node **a, int nnn)	/* split(a[0], a[1], a[2]); a[3] is type */
 {
 	Cell *x = 0, *y, *ap;
-	char *s;
+	char *s, *origs;
 	int sep;
 	char *t, temp, num[50], *fs = 0;
 	int n, tempstat, arg3type;
 
 	y = execute(a[0]);	/* source string */
-	s = getsval(y);
+	origs = s = strdup(getsval(y));
 	arg3type = ptoi(a[3]);
 	if (a[2] == 0)		/* fs string */
 		fs = *FS;
@@ -1336,6 +1336,7 @@ Cell *split(Node **a, int nnn)	/* split(
 	}
 	tempfree(ap);
 	tempfree(y);
+	free(origs);
 	if (a[2] != 0 && arg3type == STRING) {
 		tempfree(x);
 	}

Modified: vendor/one-true-awk/dist/tran.c
==============================================================================
--- vendor/one-true-awk/dist/tran.c	Wed Jan  2 21:45:20 2013	(r244977)
+++ vendor/one-true-awk/dist/tran.c	Wed Jan  2 21:53:45 2013	(r244978)
@@ -298,6 +298,8 @@ Awkfloat setfval(Cell *vp, Awkfloat f)	/
 		xfree(vp->sval); /* free any previous string */
 	vp->tval &= ~STR;	/* mark string invalid */
 	vp->tval |= NUM;	/* mark number ok */
+	if (f == -0)  /* who would have thought this possible? */
+		f = 0;
 	   dprintf( ("setfval %p: %s = %g, t=%o\n", (void*)vp, NN(vp->nval), f, vp->tval) );
 	return vp->fval = f;
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201301022153.r02Lrk8t070725>