Remove trailing whitespace on lines in all files.

This commit is contained in:
Arnold D. Robbins 2019-07-28 05:51:52 -06:00
parent cebda366a9
commit 795a06b58c
10 changed files with 66 additions and 66 deletions

34
FIXES
View File

@ -195,10 +195,10 @@ Jun 12, 2011:
/pat/, \n /pat/ {...} is now legal, though bad style to use. /pat/, \n /pat/ {...} is now legal, though bad style to use.
added checks to new -v code that permits -vnospace; thanks to added checks to new -v code that permits -vnospace; thanks to
ruslan ermilov for spotting this and providing the patch. ruslan ermilov for spotting this and providing the patch.
removed fixed limit on number of open files; thanks to aleksey removed fixed limit on number of open files; thanks to aleksey
cheusov and christos zoulos. cheusov and christos zoulos.
fixed day 1 bug that resurrected deleted elements of ARGV when fixed day 1 bug that resurrected deleted elements of ARGV when
used as filenames (in lib.c). used as filenames (in lib.c).
@ -216,10 +216,10 @@ May 1, 2011:
and arnold robbins, changed srand() to return the previous and arnold robbins, changed srand() to return the previous
seed (which is 1 on the first call of srand). the seed is seed (which is 1 on the first call of srand). the seed is
an Awkfloat internally though converted to unsigned int to an Awkfloat internally though converted to unsigned int to
pass to the library srand(). thanks, everyone. pass to the library srand(). thanks, everyone.
fixed a subtle (and i hope low-probability) overflow error fixed a subtle (and i hope low-probability) overflow error
in fldbld, by adding space for one extra \0. thanks to in fldbld, by adding space for one extra \0. thanks to
robert bassett for spotting this one and providing a fix. robert bassett for spotting this one and providing a fix.
removed the files related to compilation on windows. i no removed the files related to compilation on windows. i no
@ -256,7 +256,7 @@ Oct 8, 2008:
Oct 23, 2007: Oct 23, 2007:
minor fix in lib.c: increase inputFS to 100, change malloc minor fix in lib.c: increase inputFS to 100, change malloc
for fields to n+1. for fields to n+1.
fixed memory fault caused by out of order test in setsval. fixed memory fault caused by out of order test in setsval.
@ -303,7 +303,7 @@ Jan 17, 2006:
core dump on linux with BEGIN {nextfile}, now fixed. core dump on linux with BEGIN {nextfile}, now fixed.
removed some #ifdef's in run.c and lex.c that appear to no removed some #ifdef's in run.c and lex.c that appear to no
longer be necessary. longer be necessary.
Apr 24, 2005: Apr 24, 2005:
@ -317,8 +317,8 @@ Jan 14, 2005:
rethinking it. rethinking it.
Dec 31, 2004: Dec 31, 2004:
prevent overflow of -f array in main, head off potential error in prevent overflow of -f array in main, head off potential error in
call of SYNTAX(), test malloc return in lib.c, all with thanks to call of SYNTAX(), test malloc return in lib.c, all with thanks to
todd miller. todd miller.
Dec 22, 2004: Dec 22, 2004:
@ -346,8 +346,8 @@ Nov 22, 2003:
code known to man. code known to man.
fixed a storage leak in call() that appears to have been there since fixed a storage leak in call() that appears to have been there since
1983 or so -- a function without an explicit return that assigns a 1983 or so -- a function without an explicit return that assigns a
string to a parameter leaked a Cell. thanks to moinak ghosh for string to a parameter leaked a Cell. thanks to moinak ghosh for
spotting this very subtle one. spotting this very subtle one.
Jul 31, 2003: Jul 31, 2003:
@ -369,7 +369,7 @@ Jul 28, 2003:
radix character in programs and command line arguments regardless of radix character in programs and command line arguments regardless of
the locale; otherwise, the locale should prevail for input and output the locale; otherwise, the locale should prevail for input and output
of numbers. so it's intended to work that way. of numbers. so it's intended to work that way.
i have rescinded the attempt to use strcoll in expanding shorthands in i have rescinded the attempt to use strcoll in expanding shorthands in
regular expressions (cclenter). its properties are much too regular expressions (cclenter). its properties are much too
surprising; for example [a-c] matches aAbBc in locale en_US but abBcC surprising; for example [a-c] matches aAbBc in locale en_US but abBcC
@ -433,7 +433,7 @@ Nov 29, 2002:
Jun 28, 2002: Jun 28, 2002:
modified run/format() and tran/getsval() to do a slightly better modified run/format() and tran/getsval() to do a slightly better
job on using OFMT for output from print and CONVFMT for other job on using OFMT for output from print and CONVFMT for other
number->string conversions, as promised by posix and done by number->string conversions, as promised by posix and done by
gawk and mawk. there are still places where it doesn't work gawk and mawk. there are still places where it doesn't work
right if CONVFMT is changed; by then the STR attribute of the right if CONVFMT is changed; by then the STR attribute of the
variable has been irrevocably set. thanks to arnold robbins for variable has been irrevocably set. thanks to arnold robbins for
@ -465,7 +465,7 @@ Feb 10, 2002:
Jan 1, 2002: Jan 1, 2002:
fflush() or fflush("") flushes all files and pipes. fflush() or fflush("") flushes all files and pipes.
length(arrayname) returns number of elements; thanks to length(arrayname) returns number of elements; thanks to
arnold robbins for suggestion. arnold robbins for suggestion.
added a makefile.win to make it easier to build on windows. added a makefile.win to make it easier to build on windows.
@ -515,7 +515,7 @@ July 5, 2000:
May 25, 2000: May 25, 2000:
yet another attempt at making 8-bit input work, with another yet another attempt at making 8-bit input work, with another
band-aid in b.c (member()), and some (uschar) casts to head band-aid in b.c (member()), and some (uschar) casts to head
off potential errors in subscripts (like isdigit). also off potential errors in subscripts (like isdigit). also
changed HAT to NCHARS-2. thanks again to santiago vila. changed HAT to NCHARS-2. thanks again to santiago vila.
@ -562,7 +562,7 @@ Apr 21, 1999:
the test case.) the test case.)
Apr 16, 1999: Apr 16, 1999:
with code kindly provided by Bruce Lilly, awk now parses with code kindly provided by Bruce Lilly, awk now parses
/=/ and similar constructs more sensibly in more places. /=/ and similar constructs more sensibly in more places.
Bruce also provided some helpful test cases. Bruce also provided some helpful test cases.
@ -619,7 +619,7 @@ Jan 13, 1999:
Oct 19, 1998: Oct 19, 1998:
fixed a couple of bugs in getrec: could fail to update $0 fixed a couple of bugs in getrec: could fail to update $0
after a getline var; because inputFS wasn't initialized, after a getline var; because inputFS wasn't initialized,
could split $0 on every character, a misleading diversion. could split $0 on every character, a misleading diversion.
fixed caching bug in makedfa: LRU was actually removing fixed caching bug in makedfa: LRU was actually removing
@ -767,7 +767,7 @@ May 2, 1996:
input file. (thanks to arnold robbins for inspiration and code). input file. (thanks to arnold robbins for inspiration and code).
small fixes to regexpr code: can now handle []], [[], and small fixes to regexpr code: can now handle []], [[], and
variants; [] is now a syntax error, rather than matching variants; [] is now a syntax error, rather than matching
everything; [z-a] is now empty, not z. far from complete everything; [z-a] is now empty, not z. far from complete
or correct, however. (thanks to jeffrey friedl for pointing out or correct, however. (thanks to jeffrey friedl for pointing out
some awful behaviors.) some awful behaviors.)

14
awk.1
View File

@ -48,7 +48,7 @@ matches the pattern.
Each line is matched against the Each line is matched against the
pattern portion of every pattern-action statement; pattern portion of every pattern-action statement;
the associated action is performed for each matched pattern. the associated action is performed for each matched pattern.
The file name The file name
.B \- .B \-
means the standard input. means the standard input.
Any Any
@ -90,7 +90,7 @@ A pattern-action statement has the form:
.IP .IP
.IB pattern " { " action " } .IB pattern " { " action " }
.PP .PP
A missing A missing
.BI { " action " } .BI { " action " }
means print the line; means print the line;
a missing pattern always matches. a missing pattern always matches.
@ -225,7 +225,7 @@ the
substring of substring of
.I s .I s
that begins at position that begins at position
.I m .I m
counted from 1. counted from 1.
If no If no
.IR n , .IR n ,
@ -307,7 +307,7 @@ executes
and returns its exit status. This will be \-1 upon error, and returns its exit status. This will be \-1 upon error,
.IR cmd 's .IR cmd 's
exit status upon a normal exit, exit status upon a normal exit,
256 + 256 +
.I sig .I sig
upon death-by-signal, where upon death-by-signal, where
.I sig .I sig
@ -366,7 +366,7 @@ Patterns are arbitrary Boolean combinations
of regular expressions and of regular expressions and
relational expressions. relational expressions.
Regular expressions are as in Regular expressions are as in
.IR egrep ; .IR egrep ;
see see
.IR grep (1). .IR grep (1).
Isolated regular expressions Isolated regular expressions
@ -541,8 +541,8 @@ BEGIN { # Simulate echo(1)
.fi .fi
.EE .EE
.SH SEE ALSO .SH SEE ALSO
.IR grep (1), .IR grep (1),
.IR lex (1), .IR lex (1),
.IR sed (1) .IR sed (1)
.br .br
A. V. Aho, B. W. Kernighan, P. J. Weinberger, A. V. Aho, B. W. Kernighan, P. J. Weinberger,

4
awk.h
View File

@ -32,7 +32,7 @@ typedef unsigned char uschar;
#define xfree(a) { if ((a) != NULL) { free((void *) (a)); (a) = NULL; } } #define xfree(a) { if ((a) != NULL) { free((void *) (a)); (a) = NULL; } }
#define NN(p) ((p) ? (p) : "(null)") /* guaranteed non-null for dprintf #define NN(p) ((p) ? (p) : "(null)") /* guaranteed non-null for dprintf
*/ */
#define DEBUG #define DEBUG
#ifdef DEBUG #ifdef DEBUG
@ -162,7 +162,7 @@ extern Node *nullnode;
#define CCOPY 6 #define CCOPY 6
#define CCON 5 #define CCON 5
#define CTEMP 4 #define CTEMP 4
#define CNAME 3 #define CNAME 3
#define CVAR 2 #define CVAR 2
#define CFLD 1 #define CFLD 1
#define CUNK 0 #define CUNK 0

View File

@ -52,7 +52,7 @@ Node *arglist = 0; /* list of args for current function */
%token <i> MATCH NOTMATCH MATCHOP %token <i> MATCH NOTMATCH MATCHOP
%token <i> FINAL DOT ALL CCL NCCL CHAR OR STAR QUEST PLUS EMPTYRE %token <i> FINAL DOT ALL CCL NCCL CHAR OR STAR QUEST PLUS EMPTYRE
%token <i> AND BOR APPEND EQ GE GT LE LT NE IN %token <i> AND BOR APPEND EQ GE GT LE LT NE IN
%token <i> ARG BLTIN BREAK CLOSE CONTINUE DELETE DO EXIT FOR FUNC %token <i> ARG BLTIN BREAK CLOSE CONTINUE DELETE DO EXIT FOR FUNC
%token <i> SUB GSUB IF INDEX LSUBSTR MATCHFCN NEXT NEXTFILE %token <i> SUB GSUB IF INDEX LSUBSTR MATCHFCN NEXT NEXTFILE
%token <i> ADD MINUS MULT DIVIDE MOD %token <i> ADD MINUS MULT DIVIDE MOD
%token <i> ASSIGN ASGNOP ADDEQ SUBEQ MULTEQ DIVEQ MODEQ POWEQ %token <i> ASSIGN ASGNOP ADDEQ SUBEQ MULTEQ DIVEQ MODEQ POWEQ
@ -79,7 +79,7 @@ Node *arglist = 0; /* list of args for current function */
%left AND %left AND
%left GETLINE %left GETLINE
%nonassoc APPEND EQ GE GT LE LT NE MATCHOP IN '|' %nonassoc APPEND EQ GE GT LE LT NE MATCHOP IN '|'
%left ARG BLTIN BREAK CALL CLOSE CONTINUE DELETE DO EXIT FOR FUNC %left ARG BLTIN BREAK CALL CLOSE CONTINUE DELETE DO EXIT FOR FUNC
%left GSUB IF INDEX LSUBSTR MATCHFCN NEXT NUMBER %left GSUB IF INDEX LSUBSTR MATCHFCN NEXT NUMBER
%left PRINT PRINTF RETURN SPLIT SPRINTF STRING SUB SUBSTR %left PRINT PRINTF RETURN SPLIT SPRINTF STRING SUB SUBSTR
%left REGEXPR VAR VARNF IVAR WHILE '(' %left REGEXPR VAR VARNF IVAR WHILE '('
@ -238,10 +238,10 @@ pattern:
$$ = op3($2, (Node *)1, $1, $3); } $$ = op3($2, (Node *)1, $1, $3); }
| pattern IN varname { $$ = op2(INTEST, $1, makearr($3)); } | pattern IN varname { $$ = op2(INTEST, $1, makearr($3)); }
| '(' plist ')' IN varname { $$ = op2(INTEST, $2, makearr($5)); } | '(' plist ')' IN varname { $$ = op2(INTEST, $2, makearr($5)); }
| pattern '|' GETLINE var { | pattern '|' GETLINE var {
if (safe) SYNTAX("cmd | getline is unsafe"); if (safe) SYNTAX("cmd | getline is unsafe");
else $$ = op3(GETLINE, $4, itonp($2), $1); } else $$ = op3(GETLINE, $4, itonp($2), $1); }
| pattern '|' GETLINE { | pattern '|' GETLINE {
if (safe) SYNTAX("cmd | getline is unsafe"); if (safe) SYNTAX("cmd | getline is unsafe");
else $$ = op3(GETLINE, (Node*)0, itonp($2), $1); } else $$ = op3(GETLINE, (Node*)0, itonp($2), $1); }
| pattern term %prec CAT { $$ = op2(CAT, $1, $2); } | pattern term %prec CAT { $$ = op2(CAT, $1, $2); }
@ -292,7 +292,7 @@ rparen:
; ;
simple_stmt: simple_stmt:
print prarg '|' term { print prarg '|' term {
if (safe) SYNTAX("print | is unsafe"); if (safe) SYNTAX("print | is unsafe");
else $$ = stat3($1, $2, itonp($3), $4); } else $$ = stat3($1, $2, itonp($3), $4); }
| print prarg APPEND term { | print prarg APPEND term {
@ -421,7 +421,7 @@ var:
| varname '[' patlist ']' { $$ = op2(ARRAY, makearr($1), $3); } | varname '[' patlist ']' { $$ = op2(ARRAY, makearr($1), $3); }
| IVAR { $$ = op1(INDIRECT, celltonode($1, CVAR)); } | IVAR { $$ = op1(INDIRECT, celltonode($1, CVAR)); }
| INDIRECT term { $$ = op1(INDIRECT, $2); } | INDIRECT term { $$ = op1(INDIRECT, $2); }
; ;
varlist: varlist:
/* nothing */ { arglist = $$ = 0; } /* nothing */ { arglist = $$ = 0; }

8
b.c
View File

@ -168,7 +168,7 @@ int makeinit(fa *f, int anchor)
f->out[2] = 0; f->out[2] = 0;
f->reset = 0; f->reset = 0;
k = *(f->re[0].lfollow); k = *(f->re[0].lfollow);
xfree(f->posns[2]); xfree(f->posns[2]);
if ((f->posns[2] = (int *) calloc(k+1, sizeof(int))) == NULL) if ((f->posns[2] = (int *) calloc(k+1, sizeof(int))) == NULL)
overflo("out of space in makeinit"); overflo("out of space in makeinit");
for (i=0; i <= k; i++) { for (i=0; i <= k; i++) {
@ -546,7 +546,7 @@ int pmatch(fa *f, const char *p0) /* longest match, for sub */
if (f->reset) { if (f->reset) {
for (i = 2; i <= f->curstat; i++) for (i = 2; i <= f->curstat; i++)
xfree(f->posns[i]); xfree(f->posns[i]);
k = *f->posns[0]; k = *f->posns[0];
if ((f->posns[2] = (int *) calloc(k+1, sizeof(int))) == NULL) if ((f->posns[2] = (int *) calloc(k+1, sizeof(int))) == NULL)
overflo("out of space in pmatch"); overflo("out of space in pmatch");
for (i = 0; i <= k; i++) for (i = 0; i <= k; i++)
@ -603,7 +603,7 @@ int nematch(fa *f, const char *p0) /* non-empty match, for sub */
if (f->reset) { if (f->reset) {
for (i = 2; i <= f->curstat; i++) for (i = 2; i <= f->curstat; i++)
xfree(f->posns[i]); xfree(f->posns[i]);
k = *f->posns[0]; k = *f->posns[0];
if ((f->posns[2] = (int *) calloc(k+1, sizeof(int))) == NULL) if ((f->posns[2] = (int *) calloc(k+1, sizeof(int))) == NULL)
overflo("out of state space"); overflo("out of state space");
for (i = 0; i <= k; i++) for (i = 0; i <= k; i++)
@ -948,7 +948,7 @@ rescan:
default: default:
rlxval = c; rlxval = c;
return CHAR; return CHAR;
case '[': case '[':
if (buf == NULL && (buf = (uschar *) malloc(bufsz)) == NULL) if (buf == NULL && (buf = (uschar *) malloc(bufsz)) == NULL)
FATAL("out of space in reg expr %.10s..", lastre); FATAL("out of space in reg expr %.10s..", lastre);
bp = buf; bp = buf;

24
lex.c
View File

@ -136,7 +136,7 @@ int gettok(char **pbuf, int *psz) /* get next input token */
if (bp-buf >= sz) if (bp-buf >= sz)
if (!adjbuf(&buf, &sz, bp-buf+2, 100, &bp, "gettok")) if (!adjbuf(&buf, &sz, bp-buf+2, 100, &bp, "gettok"))
FATAL( "out of space for number %.10s...", buf ); FATAL( "out of space for number %.10s...", buf );
if (isdigit(c) || c == 'e' || c == 'E' if (isdigit(c) || c == 'e' || c == 'E'
|| c == '.' || c == '+' || c == '-') || c == '.' || c == '+' || c == '-')
*bp++ = c; *bp++ = c;
else { else {
@ -194,7 +194,7 @@ int yylex(void)
/* should this also have STR set? */ /* should this also have STR set? */
RET(NUMBER); RET(NUMBER);
} }
yylval.i = c; yylval.i = c;
switch (c) { switch (c) {
case '\n': /* {EOL} */ case '\n': /* {EOL} */
@ -225,7 +225,7 @@ int yylex(void)
case '&': case '&':
if (peek() == '&') { if (peek() == '&') {
input(); RET(AND); input(); RET(AND);
} else } else
RET('&'); RET('&');
case '|': case '|':
if (peek() == '|') { if (peek() == '|') {
@ -323,7 +323,7 @@ int yylex(void)
unputstr(buf); unputstr(buf);
RET(INDIRECT); RET(INDIRECT);
} }
case '}': case '}':
if (--bracecnt < 0) if (--bracecnt < 0)
SYNTAX( "extra }" ); SYNTAX( "extra }" );
@ -346,10 +346,10 @@ int yylex(void)
case '(': case '(':
parencnt++; parencnt++;
RET('('); RET('(');
case '"': case '"':
return string(); /* BUG: should be like tran.c ? */ return string(); /* BUG: should be like tran.c ? */
default: default:
RET(c); RET(c);
} }
@ -382,7 +382,7 @@ int string(void)
c = input(); c = input();
switch (c) { switch (c) {
case '"': *bp++ = '"'; break; case '"': *bp++ = '"'; break;
case 'n': *bp++ = '\n'; break; case 'n': *bp++ = '\n'; break;
case 't': *bp++ = '\t'; break; case 't': *bp++ = '\t'; break;
case 'f': *bp++ = '\f'; break; case 'f': *bp++ = '\f'; break;
case 'r': *bp++ = '\r'; break; case 'r': *bp++ = '\r'; break;
@ -419,7 +419,7 @@ int string(void)
break; break;
} }
default: default:
*bp++ = c; *bp++ = c;
break; break;
} }
@ -429,7 +429,7 @@ int string(void)
break; break;
} }
} }
*bp = 0; *bp = 0;
s = tostring(buf); s = tostring(buf);
*bp++ = ' '; *bp++ = 0; *bp++ = ' '; *bp++ = 0;
yylval.cp = setsymtab(buf, s, 0.0, CON|STR|DONTFREE, symtab); yylval.cp = setsymtab(buf, s, 0.0, CON|STR|DONTFREE, symtab);
@ -455,7 +455,7 @@ int binsearch(char *w, Keyword *kp, int n)
return -1; return -1;
} }
int word(char *w) int word(char *w)
{ {
Keyword *kp; Keyword *kp;
int c, n; int c, n;
@ -519,11 +519,11 @@ int regexpr(void)
FATAL("out of space for reg expr %.10s...", buf); FATAL("out of space for reg expr %.10s...", buf);
if (c == '\n') { if (c == '\n') {
*bp = '\0'; *bp = '\0';
SYNTAX( "newline in regular expression %.10s...", buf ); SYNTAX( "newline in regular expression %.10s...", buf );
unput('\n'); unput('\n');
break; break;
} else if (c == '\\') { } else if (c == '\\') {
*bp++ = '\\'; *bp++ = '\\';
*bp++ = input(); *bp++ = input();
} else { } else {
*bp++ = c; *bp++ = c;

2
lib.c
View File

@ -488,7 +488,7 @@ int refldbld(const char *rec, const char *fs) /* build fields from reg expr in F
break; break;
} }
} }
return i; return i;
} }
void recbld(void) /* create $0 from $1..$NF if necessary */ void recbld(void) /* create $0 from $1..$NF if necessary */

8
main.c
View File

@ -69,8 +69,8 @@ int main(int argc, char *argv[])
setlocale(LC_NUMERIC, "C"); /* for parsing cmdline & prog */ setlocale(LC_NUMERIC, "C"); /* for parsing cmdline & prog */
cmdname = argv[0]; cmdname = argv[0];
if (argc == 1) { if (argc == 1) {
fprintf(stderr, fprintf(stderr,
"usage: %s [-F fs] [-v var=value] [-f progfile | 'prog'] [file ...]\n", "usage: %s [-F fs] [-v var=value] [-f progfile | 'prog'] [file ...]\n",
cmdname); cmdname);
exit(1); exit(1);
} }
@ -101,14 +101,14 @@ int main(int argc, char *argv[])
case 'f': /* next argument is program filename */ case 'f': /* next argument is program filename */
if (argv[1][2] != 0) { /* arg is -fsomething */ if (argv[1][2] != 0) { /* arg is -fsomething */
if (npfile >= MAX_PFILE - 1) if (npfile >= MAX_PFILE - 1)
FATAL("too many -f options"); FATAL("too many -f options");
pfile[npfile++] = &argv[1][2]; pfile[npfile++] = &argv[1][2];
} else { /* arg is -f something */ } else { /* arg is -f something */
argc--; argv++; argc--; argv++;
if (argc <= 1) if (argc <= 1)
FATAL("no program filename"); FATAL("no program filename");
if (npfile >= MAX_PFILE - 1) if (npfile >= MAX_PFILE - 1)
FATAL("too many -f options"); FATAL("too many -f options");
pfile[npfile++] = argv[1]; pfile[npfile++] = argv[1];
} }
break; break;

View File

@ -1,7 +1,7 @@
# /**************************************************************** # /****************************************************************
# Copyright (C) Lucent Technologies 1997 # Copyright (C) Lucent Technologies 1997
# All Rights Reserved # All Rights Reserved
# #
# Permission to use, copy, modify, and distribute this software and # Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby # its documentation for any purpose and without fee is hereby
# granted, provided that the above copyright notice appear in all # granted, provided that the above copyright notice appear in all
@ -11,7 +11,7 @@
# its entities not be used in advertising or publicity pertaining # its entities not be used in advertising or publicity pertaining
# to distribution of the software without specific, written prior # to distribution of the software without specific, written prior
# permission. # permission.
# #
# LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, # LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. # INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
# IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY # IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
@ -30,7 +30,7 @@ CFLAGS = -O2
#CC = gcc -Wall -g -Wwrite-strings #CC = gcc -Wall -g -Wwrite-strings
#CC = gcc -O4 -Wall -pedantic -fno-strict-aliasing #CC = gcc -O4 -Wall -pedantic -fno-strict-aliasing
#CC = gcc -fprofile-arcs -ftest-coverage # then gcov f1.c; cat f1.c.gcov #CC = gcc -fprofile-arcs -ftest-coverage # then gcov f1.c; cat f1.c.gcov
HOSTCC = gcc -g -Wall -pedantic HOSTCC = gcc -g -Wall -pedantic
CC = $(HOSTCC) # change this is cross-compiling. CC = $(HOSTCC) # change this is cross-compiling.
# yacc options. pick one; this varies a lot by system. # yacc options. pick one; this varies a lot by system.
@ -42,10 +42,10 @@ YACC = bison -d -y
OFILES = b.o main.o parse.o proctab.o tran.o lib.o run.o lex.o OFILES = b.o main.o parse.o proctab.o tran.o lib.o run.o lex.o
SOURCE = awk.h ytab.c ytab.h proto.h awkgram.y lex.c b.c main.c \ SOURCE = awk.h ytab.c ytab.h proto.h awkgram.y lex.c b.c main.c \
maketab.c parse.c lib.c run.c tran.c proctab.c maketab.c parse.c lib.c run.c tran.c proctab.c
LISTING = awk.h proto.h awkgram.y lex.c b.c main.c maketab.c parse.c \ LISTING = awk.h proto.h awkgram.y lex.c b.c main.c maketab.c parse.c \
lib.c run.c tran.c lib.c run.c tran.c
SHIP = README LICENSE FIXES $(SOURCE) ytab[ch].bak makefile \ SHIP = README LICENSE FIXES $(SOURCE) ytab[ch].bak makefile \
awk.1 awk.1
@ -58,7 +58,7 @@ $(OFILES): awk.h ytab.h proto.h
#Clear dependency for parallel build: (make -j) #Clear dependency for parallel build: (make -j)
#YACC generated y.tab.c and y.tab.h at the same time #YACC generated y.tab.c and y.tab.h at the same time
#this needs to be a static pattern rules otherwise multiple target #this needs to be a static pattern rules otherwise multiple target
#are mapped onto multiple executions of yacc, which overwrite #are mapped onto multiple executions of yacc, which overwrite
#each others outputs. #each others outputs.
y%.c y%.h: awk.h proto.h awkgram.y y%.c y%.h: awk.h proto.h awkgram.y
$(YACC) $(YFLAGS) awkgram.y $(YACC) $(YFLAGS) awkgram.y
@ -95,7 +95,7 @@ gitadd:
makefile awk.1 testdir makefile awk.1 testdir
gitpush: gitpush:
# only do this once: # only do this once:
# git remote add origin https://github.com/onetrueawk/awk.git # git remote add origin https://github.com/onetrueawk/awk.git
git push -u origin master git push -u origin master

12
tran.c
View File

@ -191,7 +191,7 @@ void freesymtab(Cell *ap) /* free a symbol table */
if (freeable(cp)) if (freeable(cp))
xfree(cp->sval); xfree(cp->sval);
temp = cp->cnext; /* avoids freeing then using */ temp = cp->cnext; /* avoids freeing then using */
free(cp); free(cp);
tp->nelem--; tp->nelem--;
} }
tp->tab[i] = NULL; tp->tab[i] = NULL;
@ -207,7 +207,7 @@ void freeelem(Cell *ap, const char *s) /* free elem s from ap (i.e., ap["s"] */
Array *tp; Array *tp;
Cell *p, *prev = NULL; Cell *p, *prev = NULL;
int h; int h;
tp = (Array *) ap->sval; tp = (Array *) ap->sval;
h = hash(s, tp->size); h = hash(s, tp->size);
for (p = tp->tab[h]; p != NULL; prev = p, p = p->cnext) for (p = tp->tab[h]; p != NULL; prev = p, p = p->cnext)
@ -303,7 +303,7 @@ Awkfloat setfval(Cell *vp, Awkfloat f) /* set float val of a Cell */
int fldno; int fldno;
f += 0.0; /* normalise negative zero to positive zero */ f += 0.0; /* normalise negative zero to positive zero */
if ((vp->tval & (NUM | STR)) == 0) if ((vp->tval & (NUM | STR)) == 0)
funnyvar(vp, "assign to"); funnyvar(vp, "assign to");
if (isfld(vp)) { if (isfld(vp)) {
donerec = 0; /* mark $0 invalid */ donerec = 0; /* mark $0 invalid */
@ -350,7 +350,7 @@ char *setsval(Cell *vp, const char *s) /* set string val of a Cell */
int fldno; int fldno;
Awkfloat f; Awkfloat f;
dprintf( ("starting setsval %p: %s = \"%s\", t=%o, r,f=%d,%d\n", dprintf( ("starting setsval %p: %s = \"%s\", t=%o, r,f=%d,%d\n",
(void*)vp, NN(vp->nval), s, vp->tval, donerec, donefld) ); (void*)vp, NN(vp->nval), s, vp->tval, donerec, donefld) );
if ((vp->tval & (NUM | STR)) == 0) if ((vp->tval & (NUM | STR)) == 0)
funnyvar(vp, "assign to"); funnyvar(vp, "assign to");
@ -375,7 +375,7 @@ char *setsval(Cell *vp, const char *s) /* set string val of a Cell */
vp->tval |= STR; vp->tval |= STR;
vp->fmt = NULL; vp->fmt = NULL;
setfree(vp); setfree(vp);
dprintf( ("setsval %p: %s = \"%s (%p) \", t=%o r,f=%d,%d\n", dprintf( ("setsval %p: %s = \"%s (%p) \", t=%o r,f=%d,%d\n",
(void*)vp, NN(vp->nval), t, (void *) t, vp->tval, donerec, donefld) ); (void*)vp, NN(vp->nval), t, (void *) t, vp->tval, donerec, donefld) );
vp->sval = t; vp->sval = t;
if (&vp->fval == NF) { if (&vp->fval == NF) {
@ -535,7 +535,7 @@ char *qstring(const char *is, int delim) /* collect string up to next delim */
if (c == 0) { /* \ at end */ if (c == 0) { /* \ at end */
*bp++ = '\\'; *bp++ = '\\';
break; /* for loop */ break; /* for loop */
} }
switch (c) { switch (c) {
case '\\': *bp++ = '\\'; break; case '\\': *bp++ = '\\'; break;
case 'n': *bp++ = '\n'; break; case 'n': *bp++ = '\n'; break;