Author: delphij
Date: Wed Feb  6 00:42:23 2013
New Revision: 246373
URL: http://svnweb.freebsd.org/changeset/base/246373

Log:
  MFC:
  
  one-true-awk 20121220.

Modified:
  stable/9/contrib/one-true-awk/FIXES
  stable/9/contrib/one-true-awk/main.c
  stable/9/contrib/one-true-awk/makefile
  stable/9/contrib/one-true-awk/proto.h
  stable/9/contrib/one-true-awk/run.c
  stable/9/contrib/one-true-awk/tran.c
Directory Properties:
  stable/9/contrib/one-true-awk/   (props changed)

Modified: stable/9/contrib/one-true-awk/FIXES
==============================================================================
--- stable/9/contrib/one-true-awk/FIXES Wed Feb  6 00:01:28 2013        
(r246372)
+++ stable/9/contrib/one-true-awk/FIXES Wed Feb  6 00:42:23 2013        
(r246373)
@@ -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: stable/9/contrib/one-true-awk/main.c
==============================================================================
--- stable/9/contrib/one-true-awk/main.c        Wed Feb  6 00:01:28 2013        
(r246372)
+++ stable/9/contrib/one-true-awk/main.c        Wed Feb  6 00:42:23 2013        
(r246373)
@@ -25,7 +25,7 @@ THIS SOFTWARE.
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
-const char     *version = "version 20110810 (FreeBSD)";
+const char     *version = "version 20121220 (FreeBSD)";
 
 #define DEBUG
 #include <stdio.h>

Modified: stable/9/contrib/one-true-awk/makefile
==============================================================================
--- stable/9/contrib/one-true-awk/makefile      Wed Feb  6 00:01:28 2013        
(r246372)
+++ stable/9/contrib/one-true-awk/makefile      Wed Feb  6 00:42:23 2013        
(r246373)
@@ -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: stable/9/contrib/one-true-awk/proto.h
==============================================================================
--- stable/9/contrib/one-true-awk/proto.h       Wed Feb  6 00:01:28 2013        
(r246372)
+++ stable/9/contrib/one-true-awk/proto.h       Wed Feb  6 00:42:23 2013        
(r246373)
@@ -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: stable/9/contrib/one-true-awk/run.c
==============================================================================
--- stable/9/contrib/one-true-awk/run.c Wed Feb  6 00:01:28 2013        
(r246372)
+++ stable/9/contrib/one-true-awk/run.c Wed Feb  6 00:42:23 2013        
(r246373)
@@ -1213,13 +1213,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;
@@ -1339,6 +1339,7 @@ Cell *split(Node **a, int nnn)    /* split(
        }
        tempfree(ap);
        tempfree(y);
+       free(origs);
        if (a[2] != 0 && arg3type == STRING) {
                tempfree(x);
        }

Modified: stable/9/contrib/one-true-awk/tran.c
==============================================================================
--- stable/9/contrib/one-true-awk/tran.c        Wed Feb  6 00:01:28 2013        
(r246372)
+++ stable/9/contrib/one-true-awk/tran.c        Wed Feb  6 00:42:23 2013        
(r246373)
@@ -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;
 }
_______________________________________________
svn-src-stable-9@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-stable-9
To unsubscribe, send any mail to "svn-src-stable-9-unsubscr...@freebsd.org"

Reply via email to