extern FILE *yyin
; /* lex input file */
char *lexprog
; /* points to program argument if it exists */
extern errorflag
; /* non-zero if any syntax errors; set by yyerror */
int filefd
, iflag
, symnum
, ansfd
;
extern int maxsym
, errno
;
main(argc
, argv
) int argc
; char *argv
[]; {
error(FATAL
, "Usage: awk [-f source | 'cmds'] [files]");
if (strcmp(argv
[0], "a.out"))
if (argv
[0][0] == '-' && argv
[0][1] == 'f') {
yyin
= fopen(argv
[1], "r");
error(FATAL
, "can't open %s", argv
[1]);
} else if (argv
[0][0] == '-' && argv
[0][1] == 'F') { /* set field sep */
if (argv
[0][2] == 't') /* special case for tab */
} else if (argv
[0][0] != '-') {
dprintf("cmds=|%s|\n", argv
[0], NULL
, NULL
);
argv
[0] = argv
[-1]; /* need this space */
} else if (strcmp("-d", argv
[0])==0)
else if (argv
[0][0]=='-' && argv
[0][1]=='i') {
sscanf(argv
[0], "-i%d, %d", &filefd
, &ansfd
);
if (argc
<= 1 && !iflag
) {
dprintf("svargc=%d svargv[0]=%s\n", svargc
, svargv
[0], NULL
);
*FILENAME
= *svargv
; /* initial file name */
dprintf("errorflag=%d\n", errorflag
, NULL
, NULL
);
write(ansfd
, &errorflag
, sizeof(errorflag
));
/*sym cleanup should go here , followed by another syminit*/
if ((f
=fopen("/usr/pjw/awk/awkhist", "a"))==NULL
)
fprintf(f
, "%-8s %s", getlogin(), ctime(tvec
));
fprintf(f
, "'%s'", s
[i
]);
if (strcmp(s
[1], "-f")) {
if ((g
=fopen(s
[2], "r"))==NULL
) {
while ((i
=fread(buf
, 1, 512, g
))>0)
{ char buf
[512], *p
, *q
, **s
;
n
=read(filefd
, buf
, 512);
if (n
<=0) /*no one at other end?*/ {
for (p
=buf
; *p
==' ' || *p
=='\t' || *p
=='\n'; p
++);
if (*p
==' ' || *p
=='\t' || *p
=='\n') {
while (*p
==' ' || *p
=='\t' || *p
=='\n')
if (q
!=filelist
&& *(q
-1)!=0) {
xargv
=s
=svargv
=malloc(n
*sizeof(char *));
for (p
=filelist
; n
>0; n
--)