*** 1.1	1991/12/11 16:13:13
--- Makefile	1991/12/11 17:07:11
***************
*** 64,71 ****
  # MISSING = -DSPRINTF_INT -DBLKSIZE_MISSING -DSTRERROR_MISSING -DRANDOM_MISSING
  
  # VAX running Ultrix 3.x
- MISSING = -DSTRERROR_MISSING
  
  # A generic 4.2 BSD machine
  # (eliminate GETOPT_MISSING for 4.3 release)
  # (eliminate STRCASE_MISSING and TMPNAM_MISSING for Tahoe release)
--- 64,75 ----
  # MISSING = -DSPRINTF_INT -DBLKSIZE_MISSING -DSTRERROR_MISSING -DRANDOM_MISSING
  
  # VAX running Ultrix 3.x
  
+ # LINUX
+ MISSING = -DSPRINTF_INT -DTMPNAM_MISSING -DBLKSIZE_MISSING -DSTRCASE_MISSING \
+ 	-Dalloca=__builtin_alloca -DGCVT_MISSING -DRANDOM_MISSING \
+ 	-DBCOPY_MISSING -DSTRTOD_MISSING
+ 
  # A generic 4.2 BSD machine
  # (eliminate GETOPT_MISSING for 4.3 release)
  # (eliminate STRCASE_MISSING and TMPNAM_MISSING for Tahoe release)
***************
*** 80,92 ****
  
  # Comment out the next line if you don't have gcc.
  # Also choose just one of -g and -O.
! #CC=		 gcc
  
! #OPTIMIZE=	-O -g
  PROFILE=	#-pg
  DEBUG=		#-DDEBUG #-DMEMDEBUG #-DFUNC_TRACE #-DMPROF
  DEBUGGER=	#-g -Bstatic
! WARN=		#-W -Wunused -Wimplicit -Wreturn-type -Wcomment	# for gcc only
  
  # Parser to use on grammar -- if you don't have bison use the first one
  #PARSER = yacc
--- 84,96 ----
  
  # Comment out the next line if you don't have gcc.
  # Also choose just one of -g and -O.
! CC=		 gcc
  
! OPTIMIZE=	-O #-g
  PROFILE=	#-pg
  DEBUG=		#-DDEBUG #-DMEMDEBUG #-DFUNC_TRACE #-DMPROF
  DEBUGGER=	#-g -Bstatic
! WARN=		-W -Wunused -Wimplicit -Wreturn-type -Wcomment	# for gcc only
  
  # Parser to use on grammar -- if you don't have bison use the first one
  #PARSER = yacc
***************
*** 154,160 ****
  
  # rules to build gawk
  gawk: $(ALLOBJS) $(GNUOBJS)
! 	$(CC) -o gawk $(CFLAGS) $(ALLOBJS) $(GNUOBJS) -lm
  
  $(AWKOBJS): awk.h
  
--- 158,164 ----
  
  # rules to build gawk
  gawk: $(ALLOBJS) $(GNUOBJS)
! 	$(CC) -o gawk $(CFLAGS) $(ALLOBJS) $(GNUOBJS) #-lm
  
  $(AWKOBJS): awk.h
  
*** 1.1	1991/12/11 16:18:17
--- awk.h	1991/12/11 17:07:45
***************
*** 42,51 ****
  extern char *alloca();
  #endif
  #else
  extern char *alloca();
  #endif
  #ifdef SPRINTF_INT
! extern int sprintf();
  #else	/* not USG */
  /* nasty nasty berkelixm */
  #define setjmp	_setjmp
--- 42,53 ----
  extern char *alloca();
  #endif
  #else
+ #ifndef alloca
  extern char *alloca();
  #endif
+ #endif
  #ifdef SPRINTF_INT
! /* extern int sprintf(); XXX LINUX */
  #else	/* not USG */
  /* nasty nasty berkelixm */
  #define setjmp	_setjmp
***************
*** 78,99 ****
  extern	char *memset(char *, int, int);
  
  /* extern int fprintf(FILE *, char *, ...); */
! extern int fprintf();
  extern int vfprintf();
  #ifndef MSDOS
! extern int fwrite(char *, int, int, FILE *);
  #endif
  extern int fflush(FILE *);
  extern int fclose(FILE *);
  extern int pclose(FILE *);
  #ifndef MSDOS
! extern int fputs(char *, FILE *);
  #endif
  extern void abort();
  extern int isatty(int);
  extern void exit(int);
  extern int system(char *);
  extern int sscanf(/* char *, char *, ... */);
  
  extern double atof(char *);
  extern int fstat(int, struct stat *);
--- 80,104 ----
  extern	char *memset(char *, int, int);
  
  /* extern int fprintf(FILE *, char *, ...); */
! /* extern int fprintf(); XXXL */
  extern int vfprintf();
  #ifndef MSDOS
! /* extern int fwrite(char *, int, int, FILE *); XXXL */
  #endif
  extern int fflush(FILE *);
  extern int fclose(FILE *);
  extern int pclose(FILE *);
  #ifndef MSDOS
! /* extern int fputs(char *, FILE *); XXXL */
  #endif
  extern void abort();
  extern int isatty(int);
  extern void exit(int);
  extern int system(char *);
+ #if 0
+ /* XXXL */
  extern int sscanf(/* char *, char *, ... */);
+ #endif
  
  extern double atof(char *);
  extern int fstat(int, struct stat *);
***************
*** 100,110 ****
  extern off_t lseek(int, off_t, int);
  extern int fseek(FILE *, long, int);
  extern int close(int);
! extern int open();
  extern int pipe(int *);
  extern int dup2(int, int);
  #ifndef MSDOS
! extern int unlink(char *);
  #endif
  extern int fork();
  extern int execl(/* char *, char *, ... */);
--- 105,115 ----
  extern off_t lseek(int, off_t, int);
  extern int fseek(FILE *, long, int);
  extern int close(int);
! /* extern int open(); XXXL */
  extern int pipe(int *);
  extern int dup2(int, int);
  #ifndef MSDOS
! /* extern int unlink(char *); XXXL */
  #endif
  extern int fork();
  extern int execl(/* char *, char *, ... */);
*** 1.1	1991/12/11 16:29:17
--- awk.y	1991/12/11 17:08:04
***************
*** 96,102 ****
  
  %type <sval> func_name
  %token <sval> FUNC_CALL NAME REGEXP
! %token <lval> ERROR
  %token <nodeval> NUMBER YSTRING
  %token <nodetypeval> RELOP APPEND_OP
  %token <nodetypeval> ASSIGNOP MATCHOP NEWLINE CONCAT_OP
--- 96,102 ----
  
  %type <sval> func_name
  %token <sval> FUNC_CALL NAME REGEXP
! %token <lval> ERROR_TOK
  %token <nodeval> NUMBER YSTRING
  %token <nodetypeval> RELOP APPEND_OP
  %token <nodetypeval> ASSIGNOP MATCHOP NEWLINE CONCAT_OP
***************
*** 386,401 ****
  
  nls
  	: NEWLINE
! 		{ $<nodetypeval>$ = NULL; }
  	| nls NEWLINE
! 		{ $<nodetypeval>$ = NULL; }
  	;
  
  opt_nls
  	: /* empty */
! 		{ $<nodetypeval>$ = NULL; }
  	| nls
! 		{ $<nodetypeval>$ = NULL; }
  	;
  
  input_redir
--- 386,401 ----
  
  nls
  	: NEWLINE
! 		{ $<nodetypeval>$ = (NODETYPE) NULL; }
  	| nls NEWLINE
! 		{ $<nodetypeval>$ = (NODETYPE) NULL; }
  	;
  
  opt_nls
  	: /* empty */
! 		{ $<nodetypeval>$ = (NODETYPE) NULL; }
  	| nls
! 		{ $<nodetypeval>$ = (NODETYPE) NULL; }
  	;
  
  input_redir
***************
*** 953,959 ****
  			case '\\':
  				if (*lexptr++ == '\0') {
  					yyerror("unterminated regexp ends with \\");
! 					return ERROR;
  				} else if (lexptr[-1] == '\n')
  					goto retry;
  				break;
--- 953,959 ----
  			case '\\':
  				if (*lexptr++ == '\0') {
  					yyerror("unterminated regexp ends with \\");
! 					return ERROR_TOK;
  				} else if (lexptr[-1] == '\n')
  					goto retry;
  				break;
***************
*** 969,975 ****
  			case '\0':
  				lexptr--;	/* so error messages work */
  				yyerror("unterminated regexp");
! 				return ERROR;
  			}
  		}
  	}
--- 969,975 ----
  			case '\0':
  				lexptr--;	/* so error messages work */
  				yyerror("unterminated regexp");
! 				return ERROR_TOK;
  			}
  		}
  	}
***************
*** 1163,1169 ****
  			case '\n':
  				lexptr--;
  				yyerror("unterminated string");
! 				return ERROR;
  			case '"':
  				yylval.nodeval = make_str_node(tokstart + 1,
  						lexptr-tokstart-2, esc_seen);
--- 1163,1169 ----
  			case '\n':
  				lexptr--;
  				yyerror("unterminated string");
! 				return ERROR_TOK;
  			case '"':
  				yylval.nodeval = make_str_node(tokstart + 1,
  						lexptr-tokstart-2, esc_seen);
***************
*** 1171,1177 ****
  				return YSTRING;
  			}
  		}
! 		return ERROR;
  
  	case '-':
  		if (*lexptr == '=') {
--- 1171,1177 ----
  				return YSTRING;
  			}
  		}
! 		return ERROR_TOK;
  
  	case '-':
  		if (*lexptr == '=') {
***************
*** 1256,1262 ****
  			}
  			return LEX_AND;
  		}
! 		return ERROR;
  
  	case '|':
  		if (*lexptr == '|') {
--- 1256,1262 ----
  			}
  			return LEX_AND;
  		}
! 		return ERROR_TOK;
  
  	case '|':
  		if (*lexptr == '|') {
***************
*** 1279,1285 ****
  
  	if (c != '_' && ! isalpha(c)) {
  		yyerror("Invalid char '%c' in expression\n", c);
! 		return ERROR;
  	}
  
  	/* it's some type of name-type-thing.  Find its length */
--- 1279,1285 ----
  
  	if (c != '_' && ! isalpha(c)) {
  		yyerror("Invalid char '%c' in expression\n", c);
! 		return ERROR_TOK;
  	}
  
  	/* it's some type of name-type-thing.  Find its length */