Remove trailing whitespace on lines in all files.
This commit is contained in:
parent
cebda366a9
commit
795a06b58c
34
FIXES
34
FIXES
@ -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
14
awk.1
@ -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
4
awk.h
@ -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
|
||||||
|
12
awkgram.y
12
awkgram.y
@ -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
8
b.c
@ -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
24
lex.c
@ -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
2
lib.c
@ -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
8
main.c
@ -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;
|
||||||
|
14
makefile
14
makefile
@ -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
12
tran.c
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user