🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.sources.reviewed
Article #25

v02i029: mawk - (Ver. 1.1) An interpreter for the AWK language, Patch02b/4

#25
From: Mike Brennan
Date: Tue, 13 Oct 1992 22:13
2421 lines
64226 bytes
Submitted-by: Mike Brennan <brennan@boeing.com>
Posting-number: Volume 2, Issue 29
Archive-name: mawk/patch02b
Patch-To: mawk: Volume 1, Issue 50-68

#!/bin/sh
# this is part.02 (part 2 of a multipart archive)
# do not concatenate these parts, unpack them in order with /bin/sh
# file diffs2 continued
#
if test ! -r _shar_seq_.tmp; then
	echo 'Please unpack part 1 first!'
	exit 1
fi
(read Scheck
 if test "$Scheck" != 2; then
	echo Please unpack part "$Scheck" next!
	exit 1
 else
	exit 0
 fi
) < _shar_seq_.tmp || exit 1
if test ! -f _shar_wnt_.tmp; then
	echo 'x - still skipping diffs2'
else
echo 'x - continuing file diffs2'
sed 's/^X//' << 'SHAR_EOF' >> 'diffs2' &&
X  sizes.h
! copyright 1991, Michael D. Brennan
X  
X  This is a source file for mawk, an implementation of
--- 2,6 ----
X  /********************************************
X  sizes.h
! copyright 1991, 1992.  Michael D. Brennan
X  
X  This is a source file for mawk, an implementation of
***************
*** 11,18 ****
X  ********************************************/
X  
! /* $Log:	sizes.h,v $
!  * Revision 5.1  91/12/05  07:59:35  brennan
X   * 1.1 pre-release
!  * 
X  */
X  
--- 11,21 ----
X  ********************************************/
X  
! /* $Log: sizes.h,v $
!  * Revision 5.2  1992/08/27  03:20:08  mike
!  * patch2: increase A_HASH_PRIME
!  *
!  * Revision 5.1  1991/12/05  07:59:35  brennan
X   * 1.1 pre-release
!  *
X  */
X  
***************
*** 23,27 ****
X  
X  #if     ! HAVE_SMALL_MEMORY
! #define EVAL_STACK_SIZE  256  /* limit on recursion */
X  /* number of fields at startup, must be a power of 2 
X     and FBANK_SZ-1 must be divisible by 3! */
--- 26,30 ----
X  
X  #if     ! HAVE_SMALL_MEMORY
! #define EVAL_STACK_SIZE  256  /* initial size , can grow */
X  /* number of fields at startup, must be a power of 2 
X     and FBANK_SZ-1 must be divisible by 3! */
***************
*** 50,54 ****
X  
X  #define  HASH_PRIME  53
! #define  A_HASH_PRIME 37
X  
X  
--- 53,62 ----
X  
X  #define  HASH_PRIME  53
! 
! #if ! HAVE_SMALL_MEMORY
! #define  A_HASH_PRIME 199
! #else
! #define  A_HASH_PRIME  37
! #endif
X  
X  
*** mawk/split.c	Tue Mar  3 17:23:48 1992
--- mawk112/split.c	Wed Jul  8 14:16:36 1992
***************
*** 11,18 ****
X  ********************************************/
X  
! /* $Log:	split.c,v $
!  * Revision 5.1  91/12/05  07:56:31  brennan
X   * 1.1 pre-release
!  * 
X  */
X  
--- 11,24 ----
X  ********************************************/
X  
! /* $Log: split.c,v $
!  * Revision 5.2  1992/07/08  21:19:09  brennan
!  * patch2
!  * change in split() requires that
!  * bi_split() call load_array() even
!  * when cnt is 0.
!  *
!  * Revision 5.1  1991/12/05  07:56:31  brennan
X   * 1.1 pre-release
!  *
X  */
X  
***************
*** 219,227 ****
X  
X    if ( string(sp)->len == 0 ) /* nothing to split */
!   { free_STRING( string(sp) ) ;
!     sp->type = C_DOUBLE ; sp->dval = 0.0 ;
!     return sp ;
!   }
! 
X    switch ( (sp+2)->type )
X    {
--- 225,230 ----
X  
X    if ( string(sp)->len == 0 ) /* nothing to split */
! 	cnt = 0 ;
!   else
X    switch ( (sp+2)->type )
X    {
*** mawk/symtype.h	Tue Mar  3 17:23:48 1992
--- mawk112/symtype.h	Wed Jul  8 08:41:15 1992
***************
*** 11,18 ****
X  ********************************************/
X  
! /*$Log:	symtype.h,v $
!  * Revision 5.1  91/12/05  07:59:37  brennan
X   * 1.1 pre-release
!  * 
X  */
X  
--- 11,21 ----
X  ********************************************/
X  
! /*$Log: symtype.h,v $
!  * Revision 5.2  1992/07/08  15:44:44  brennan
!  * patch2: length returns.  I am a wimp
!  *
!  * Revision 5.1  1991/12/05  07:59:37  brennan
X   * 1.1 pre-release
!  *
X  */
X  
***************
*** 111,117 ****
X  #define  ST_NR      7  /*  NR is special */
X  #define  ST_ENV     8  /* and so is ENVIRON */
! #define  ST_LOCAL_NONE  9
! #define  ST_LOCAL_VAR   10
! #define  ST_LOCAL_ARRAY 11
X  
X  #define  is_local(stp)   ((stp)->type>=ST_LOCAL_NONE)
--- 114,121 ----
X  #define  ST_NR      7  /*  NR is special */
X  #define  ST_ENV     8  /* and so is ENVIRON */
! #define  ST_LENGTH  9  /* ditto and bozo */
! #define  ST_LOCAL_NONE  10
! #define  ST_LOCAL_VAR   11
! #define  ST_LOCAL_ARRAY 12
X  
X  #define  is_local(stp)   ((stp)->type>=ST_LOCAL_NONE)
*** mawk/types.h	Tue Mar  3 17:23:50 1992
--- mawk112/types.h	Tue Apr  7 12:56:39 1992
***************
*** 12,19 ****
X  
X  
! /* $Log:	types.h,v $
!  * Revision 5.1  91/12/05  07:59:39  brennan
X   * 1.1 pre-release
!  * 
X  */
X  
--- 12,19 ----
X  
X  
! /* $Log: types.h,v $
!  * Revision 5.1  1991/12/05  07:59:39  brennan
X   * 1.1 pre-release
!  *
X  */
X  
*** mawk/version.c	Tue Mar  3 17:29:24 1992
--- mawk112/version.c	Thu Aug 27 04:50:46 1992
***************
*** 2,6 ****
X  /********************************************
X  version.c
! copyright 1991, Michael D. Brennan
X  
X  This is a source file for mawk, an implementation of
--- 2,6 ----
X  /********************************************
X  version.c
! copyright 1991, 1992.  Michael D. Brennan
X  
X  This is a source file for mawk, an implementation of
***************
*** 11,18 ****
X  ********************************************/
X  
! /*$Log:	version.c,v $
!  * Revision 5.3  92/03/03  16:42:23  brennan
X   * patch 1
!  * 
X   * Revision 5.2  92/01/22  05:34:10  brennan
X   * version 1.1
--- 11,21 ----
X  ********************************************/
X  
! /*$Log: version.c,v $
!  * Revision 5.4  1992/08/27  11:50:38  mike
!  * patch2
!  *
!  * Revision 5.3  1992/03/03  16:42:23  brennan
X   * patch 1
!  *
X   * Revision 5.2  92/01/22  05:34:10  brennan
X   * version 1.1
***************
*** 27,31 ****
X  
X  #define  VERSION_STRING  \
!   "mawk 1.1%s%s Feb 1992, Copyright (C) Michael D. Brennan\n\n"
X  
X  #define  DOS_STRING     ""
--- 30,34 ----
X  
X  #define  VERSION_STRING  \
!   "mawk 1.1%s%s Aug 1992, Copyright (C) Michael D. Brennan\n\n"
X  
X  #define  DOS_STRING     ""
*** mawk/zmalloc.c	Tue Mar  3 17:23:52 1992
--- mawk112/zmalloc.c	Tue Apr  7 12:56:40 1992
***************
*** 11,18 ****
X  ********************************************/
X  
! /*$Log:	zmalloc.c,v $
!  * Revision 5.1  91/12/05  07:56:35  brennan
X   * 1.1 pre-release
!  * 
X  */
X  
--- 11,18 ----
X  ********************************************/
X  
! /*$Log: zmalloc.c,v $
!  * Revision 5.1  1991/12/05  07:56:35  brennan
X   * 1.1 pre-release
!  *
X  */
X  
*** mawk/zmalloc.h	Tue Mar  3 17:23:52 1992
--- mawk112/zmalloc.h	Tue Apr  7 12:56:41 1992
***************
*** 11,18 ****
X  ********************************************/
X  
! /*$Log:	zmalloc.h,v $
!  * Revision 5.1  91/12/05  07:59:41  brennan
X   * 1.1 pre-release
!  * 
X  */
X  
--- 11,18 ----
X  ********************************************/
X  
! /*$Log: zmalloc.h,v $
!  * Revision 5.1  1991/12/05  07:59:41  brennan
X   * 1.1 pre-release
!  *
X  */
X  
*** mawk/config/Idefault.h	Tue Mar  3 17:29:32 1992
--- mawk112/config/Idefault.h	Wed Jul  8 09:13:16 1992
***************
*** 12,16 ****
X  
X  
! /* $Log:	Idefault.h,v $
X   * Revision 3.13  92/03/03  16:40:56  brennan
X   * remove HAVE_PRINTF_HD
--- 12,22 ----
X  
X  
! /* $Log: Idefault.h,v $
!  * Revision 3.15  1992/07/08  16:16:08  brennan
!  * don't attempt any #def or #undef with __STDC__
!  *
!  * Revision 3.14  1992/03/31  13:39:00  brennan
!  * TURN_ON_FPE_TRAPS() macro
!  *
X   * Revision 3.13  92/03/03  16:40:56  brennan
X   * remove HAVE_PRINTF_HD
***************
*** 186,189 ****
--- 192,199 ----
X  #endif
X  
+ #ifndef  TURN_ON_FPE_TRAPS
+ #define  TURN_ON_FPE_TRAPS()	/* nothing */
+ #endif
+ 
X  #ifndef  HAVE_SMALL_MEMORY
X  #define  HAVE_SMALL_MEMORY	0
***************
*** 194,203 ****
X  
X  
! #ifndef  __STDC__
! #define  __STDC__  0
! #endif
! 
X  #if   __STDC__  
- 
X  #undef  HAVE_PROTOS
X  #define HAVE_PROTOS		1
--- 204,209 ----
X  
X  
! #ifdef __STDC__
X  #if   __STDC__  
X  #undef  HAVE_PROTOS
X  #define HAVE_PROTOS		1
***************
*** 208,217 ****
X  #undef  HAVE_STRING_H
X  #define HAVE_STRING_H		1
- #endif  
- 
- #if   __STDC__  &&  ! __GNUC__
- /* with gcc __STDC__ can be defined, but stdlib.h is missing */
X  #undef  HAVE_STDLIB_H
X  #define HAVE_STDLIB_H		1
X  #endif
X  
--- 214,220 ----
X  #undef  HAVE_STRING_H
X  #define HAVE_STRING_H		1
X  #undef  HAVE_STDLIB_H
X  #define HAVE_STDLIB_H		1
+ #endif  
X  #endif
X  
***************
*** 218,222 ****
X  
X  
- 
X  /* the painfull case: we need to catch fpe's and look at errno
X     after lib calls */
--- 221,224 ----
***************
*** 275,285 ****
X  #endif
X  
- /* ultrix pukes if __STDC__ is defined 0  */
- /* SCO UNIX's cc (from Microsoft) sneezes if __STDC__ is re-#define-d */
- #if (__STDC__ == 0)
- #ifndef M_I386
- #undef __STDC__
- #endif
- #endif
X  
X  /* for Think C on the Macintosh, sizeof(size_t) != sizeof(unsigned
--- 277,280 ----
*** mawk/config/V7.h	Tue Mar  3 17:24:12 1992
--- mawk112/config/V7.h	Tue Apr  7 12:56:53 1992
***************
*** 16,23 ****
X  */
X  
! /*$Log:	V7.h,v $
!  * Revision 4.2  91/11/21  13:30:34  brennan
!  *    
!  * 
X   * 11/17/91  C. Mascott		declare fprintf, sprintf on V7
X   *
--- 16,22 ----
X  */
X  
! /*$Log: V7.h,v $
!  * Revision 4.2  1991/11/21  13:30:34  brennan
!  *
X   * 11/17/91  C. Mascott		declare fprintf, sprintf on V7
X   *
*** mawk/config/atarist.h	Tue Mar  3 17:24:18 1992
--- mawk112/config/atarist.h	Tue Apr  7 12:56:56 1992
***************
*** 17,24 ****
X  */
X  
! /*$Log:	atarist.h,v $
!  * Revision 1.1  91/10/29  10:48:52  brennan
X   * Initial revision
!  * 
X  */
X  
--- 17,24 ----
X  */
X  
! /*$Log: atarist.h,v $
!  * Revision 1.1  1991/10/29  10:48:52  brennan
X   * Initial revision
!  *
X  */
X  
*** mawk/config/bsd43_vax.h	Tue Mar  3 17:24:10 1992
--- mawk112/config/bsd43_vax.h	Tue Apr  7 12:56:50 1992
***************
*** 12,19 ****
X  
X  
! /* $Log:	bsd43_vax.h,v $
!  * Revision 4.1  91/09/25  11:41:07  brennan
X   * VERSION 1.0
!  * 
X   * Revision 3.2  91/08/13  09:04:09  brennan
X   * VERSION .9994
--- 12,19 ----
X  
X  
! /* $Log: bsd43_vax.h,v $
!  * Revision 4.1  1991/09/25  11:41:07  brennan
X   * VERSION 1.0
!  *
X   * Revision 3.2  91/08/13  09:04:09  brennan
X   * VERSION .9994
*** mawk/config/generic.h	Tue Mar  3 17:29:30 1992
--- mawk112/config/generic.h	Tue Apr  7 12:56:48 1992
***************
*** 12,19 ****
X  
X  
! /* $Log:	generic.h,v $
!  * Revision 4.4  92/03/03  16:40:54  brennan
X   * remove HAVE_PRINTF_HD
!  * 
X   * Revision 4.3  91/10/29  10:48:26  brennan
X   * version 1.09
--- 12,19 ----
X  
X  
! /* $Log: generic.h,v $
!  * Revision 4.4  1992/03/03  16:40:54  brennan
X   * remove HAVE_PRINTF_HD
!  *
X   * Revision 4.3  91/10/29  10:48:26  brennan
X   * version 1.09
*** mawk/config/mips.h	Tue Mar  3 17:24:20 1992
--- mawk112/config/mips.h	Tue Apr  7 12:56:56 1992
***************
*** 10,17 ****
X  ********************************************/
X  
! /*$Log:	mips.h,v $
!  * Revision 1.2  91/11/15  08:13:20  brennan
X   * declaration for sprintf
!  * 
X   * Revision 1.1  91/10/28  09:58:05  brennan
X   * Initial revision
--- 10,17 ----
X  ********************************************/
X  
! /*$Log: mips.h,v $
!  * Revision 1.2  1991/11/15  08:13:20  brennan
X   * declaration for sprintf
!  *
X   * Revision 1.1  91/10/28  09:58:05  brennan
X   * Initial revision
*** mawk/config/msc_dos.h	Tue Mar  3 17:24:16 1992
--- mawk112/config/msc_dos.h	Tue Apr  7 12:56:55 1992
***************
*** 13,20 ****
X  /* Microsoft C 6.0A under MSDOS */
X  
! /*$Log:	msc_dos.h,v $
!  * Revision 4.3  92/01/09  08:54:09  brennan
X   * changed SAMESEG macro
!  * 
X   * Revision 4.2  91/10/29  09:36:59  brennan
X   * Large model macro
--- 13,20 ----
X  /* Microsoft C 6.0A under MSDOS */
X  
! /*$Log: msc_dos.h,v $
!  * Revision 4.3  1992/01/09  08:54:09  brennan
X   * changed SAMESEG macro
!  *
X   * Revision 4.2  91/10/29  09:36:59  brennan
X   * Large model macro
*** mawk/config/next.h	Tue Mar  3 17:29:36 1992
--- mawk112/config/next.h	Tue Apr  7 12:56:57 1992
***************
*** 14,21 ****
X  */
X  
! /* $Log:	next.h,v $
!  * Revision 1.1  92/02/25  08:13:12  brennan
X   * Initial revision
!  * 
X  */
X  
--- 14,21 ----
X  */
X  
! /* $Log: next.h,v $
!  * Revision 1.1  1992/02/25  08:13:12  brennan
X   * Initial revision
!  *
X  */
X  
*** mawk/config/sgi.h	Tue Mar  3 17:29:38 1992
--- mawk112/config/sgi.h	Tue Apr  7 12:56:57 1992
***************
*** 14,21 ****
X  */
X  
! /* $Log:	sgi.h,v $
!  * Revision 1.1  92/02/25  08:10:22  brennan
X   * Initial revision
!  * 
X  */
X  
--- 14,21 ----
X  */
X  
! /* $Log: sgi.h,v $
!  * Revision 1.1  1992/02/25  08:10:22  brennan
X   * Initial revision
!  *
X  */
X  
*** mawk/config/sun_os40.h	Tue Mar  3 17:24:10 1992
--- mawk112/config/sun_os40.h	Tue Apr  7 12:56:51 1992
***************
*** 12,19 ****
X  
X  
! /* $Log:	sun_os40.h,v $
!  * Revision 4.2  91/11/17  12:34:11  brennan
X   * added a declaration for sprintf()
!  * 
X   * Revision 4.1  91/09/25  11:41:35  brennan
X   * VERSION 1.0
--- 12,19 ----
X  
X  
! /* $Log: sun_os40.h,v $
!  * Revision 4.2  1991/11/17  12:34:11  brennan
X   * added a declaration for sprintf()
!  *
X   * Revision 4.1  91/09/25  11:41:35  brennan
X   * VERSION 1.0
*** mawk/config/sun_os41.h	Tue Mar  3 17:24:10 1992
--- mawk112/config/sun_os41.h	Tue Jul  7 08:42:39 1992
***************
*** 2,6 ****
X  /********************************************
X  sun_os41.h
! copyright 1991, Michael D. Brennan
X  
X  This is a source file for mawk, an implementation of
--- 2,6 ----
X  /********************************************
X  sun_os41.h
! copyright 1991, 1992.   Michael D. Brennan
X  
X  This is a source file for mawk, an implementation of
***************
*** 12,19 ****
X  
X  
! /* $Log:	sun_os41.h,v $
!  * Revision 1.3  91/12/05  08:24:02  brennan
X   * 1.1 pre-release
!  * 
X  */
X  
--- 12,22 ----
X  
X  
! /* $Log: sun_os41.h,v $
!  * Revision 1.4  1992/07/07  15:45:58  brennan
!  * <stdlib.h> is non-standard
!  *
!  * Revision 1.3  1991/12/05  08:24:02  brennan
X   * 1.1 pre-release
!  *
X  */
X  
***************
*** 23,26 ****
--- 26,32 ----
X  /* this is missing (actually its in 5include) */
X  int fprintf() ;
+ 
+ /* this is not in <stdlib.h>  */
+ double strtod() ;
X  
X  
*** mawk/config/sysV.h	Tue Mar  3 17:24:14 1992
--- mawk112/config/sysV.h	Tue Apr  7 12:56:54 1992
***************
*** 24,31 ****
X  */
X  
! /*$Log:	sysV.h,v $
!  * Revision 4.1  91/09/25  11:41:40  brennan
X   * VERSION 1.0
!  * 
X   * Revision 1.2  91/08/13  09:04:15  brennan
X   * VERSION .9994
--- 24,31 ----
X  */
X  
! /*$Log: sysV.h,v $
!  * Revision 4.1  1991/09/25  11:41:40  brennan
X   * VERSION 1.0
!  *
X   * Revision 1.2  91/08/13  09:04:15  brennan
X   * VERSION .9994
*** mawk/config/sysV_ieeefp.h	Tue Mar  3 17:24:14 1992
--- mawk112/config/sysV_ieeefp.h	Tue Apr  7 12:56:54 1992
***************
*** 12,19 ****
X  
X  
! /* $Log:	sysV_ieeefp.h,v $
!  * Revision 4.1  91/09/25  11:41:45  brennan
X   * VERSION 1.0
!  * 
X   * Revision 1.3  91/09/10  09:19:41  brennan
X   * fixed comment typo
--- 12,19 ----
X  
X  
! /* $Log: sysV_ieeefp.h,v $
!  * Revision 4.1  1991/09/25  11:41:45  brennan
X   * VERSION 1.0
!  *
X   * Revision 1.3  91/09/10  09:19:41  brennan
X   * fixed comment typo
*** mawk/config/tcc_dos.h	Tue Mar  3 17:24:12 1992
--- mawk112/config/tcc_dos.h	Tue Apr  7 12:56:52 1992
***************
*** 13,20 ****
X  /* Turbo C under MSDOS */
X  
! /* $Log:	tcc_dos.h,v $
!  * Revision 4.2  91/10/29  09:37:54  brennan
X   * changes for 1.09
!  * 
X   * Revision 4.1  91/09/25  11:41:51  brennan
X   * VERSION 1.0
--- 13,20 ----
X  /* Turbo C under MSDOS */
X  
! /* $Log: tcc_dos.h,v $
!  * Revision 4.2  1991/10/29  09:37:54  brennan
X   * changes for 1.09
!  *
X   * Revision 4.1  91/09/25  11:41:51  brennan
X   * VERSION 1.0
*** mawk/config/ultrix42mips.h	Tue Mar  3 17:29:36 1992
--- mawk112/config/ultrix42mips.h	Tue Apr  7 12:56:50 1992
***************
*** 12,19 ****
X  
X  
! /* $Log:	ultrix42mips.h,v $
!  * Revision 1.1  92/03/03  12:35:21  brennan
X   * Initial revision
!  * 
X  */
X  
--- 12,19 ----
X  
X  
! /* $Log: ultrix42mips.h,v $
!  * Revision 1.1  1992/03/03  12:35:21  brennan
X   * Initial revision
!  *
X  */
X  
*** mawk/config/ultrix_vax.h	Tue Mar  3 17:24:08 1992
--- mawk112/config/ultrix_vax.h	Tue Apr  7 12:56:49 1992
***************
*** 12,19 ****
X  
X  
! /* $Log:	ultrix_vax.h,v $
!  * Revision 4.1  91/09/25  11:42:07  brennan
X   * VERSION 1.0
!  * 
X   * Revision 3.2  91/08/13  09:04:23  brennan
X   * VERSION .9994
--- 12,19 ----
X  
X  
! /* $Log: ultrix_vax.h,v $
!  * Revision 4.1  1991/09/25  11:42:07  brennan
X   * VERSION 1.0
!  *
X   * Revision 3.2  91/08/13  09:04:23  brennan
X   * VERSION .9994
*** mawk/config/xenix_r2.h	Tue Mar  3 17:24:14 1992
--- mawk112/config/xenix_r2.h	Tue Apr  7 12:56:53 1992
***************
*** 24,31 ****
X  */
X  
! /*$Log:	xenix_r2.h,v $
!  * Revision 4.1  91/09/25  11:42:13  brennan
X   * VERSION 1.0
!  * 
X   * Revision 1.2  91/08/13  09:04:24  brennan
X   * VERSION .9994
--- 24,31 ----
X  */
X  
! /*$Log: xenix_r2.h,v $
!  * Revision 4.1  1991/09/25  11:42:13  brennan
X   * VERSION 1.0
!  *
X   * Revision 1.2  91/08/13  09:04:24  brennan
X   * VERSION .9994
*** mawk/man/mawk.1	Tue Mar  3 17:23:54 1992
--- mawk112/man/mawk.1	Wed Aug 26 21:14:36 1992
***************
*** 1,3 ****
! .TH MAWK 1  "Jan 22 1992" "Version 1.1" "USER COMMANDS"
X  .\" strings
X  .ds ex \fIexpr\fR
--- 1,3 ----
! .TH MAWK 1  "Jul 13 1992" "Version 1.1.2" "USER COMMANDS"
X  .\" strings
X  .ds ex \fIexpr\fR
***************
*** 4,8 ****
X  .SH NAME
X  mawk \- pattern scanning and text processing language
- 
X  .SH SYNOPSIS
X  .B mawk
--- 4,7 ----
***************
*** 25,29 ****
X  .IR program-file ]
X  [\-\|\-] [file ...]
- 
X  .SH DESCRIPTION
X  .B mawk
--- 24,27 ----
***************
*** 47,51 ****
X  .B mawk
X  provides a small number of extensions.
! 
X  An AWK program is a sequence of \fIpattern {action}\fR pairs and
X  function definitions.
--- 45,49 ----
X  .B mawk
X  provides a small number of extensions.
! .PP
X  An AWK program is a sequence of \fIpattern {action}\fR pairs and
X  function definitions.
***************
*** 60,64 ****
X  record separator variable, \fBRS\fR.  Initially,
X  .B RS
! = "\\n" and records are synonymous with lines.
X  Each record is compared against each
X  .I pattern
--- 58,62 ----
X  record separator variable, \fBRS\fR.  Initially,
X  .B RS
! = "\en" and records are synonymous with lines.
X  Each record is compared against each
X  .I pattern
***************
*** 66,82 ****
X  .I "{action}"
X  is executed.
- 
X  .SH OPTIONS
! 
! .TP \w'\-\fBv'+\w'\fIvar=value'u+2n
! \-\fBF \fIvalue
X  sets the field separator, \fBFS\fR, to 
X  .IR value .
! 
! .IP "\-\fBf \fIfile"
X  Program text is read from \fIfile\fR instead of from the
! command line.  Multiple \-f options are allowed.
! 
! .IP "\-\fBv \fIvar=value"
X  assigns 
X  .I value
--- 64,80 ----
X  .I "{action}"
X  is executed.
X  .SH OPTIONS
! .TP \w'\-\fBW'u+\w'\fRsprintf=\fInum\fR'u+2n
! \-\fBF \fIvalue\fP
X  sets the field separator, \fBFS\fR, to 
X  .IR value .
! .TP
! \-\fBf \fIfile
X  Program text is read from \fIfile\fR instead of from the
! command line.  Multiple
! .B \-f
! options are allowed.
! .TP
! \-\fBv \fIvar=value\fR
X  assigns 
X  .I value
***************
*** 83,88 ****
X  to program variable 
X  .IR var .
! 
! .IP "\-\|\-"
X  indicates the unambiguous end of options.
X  .PP
--- 81,86 ----
X  to program variable 
X  .IR var .
! .TP
! \-\|\-
X  indicates the unambiguous end of options.
X  .PP
***************
*** 89,97 ****
X  The above options will be available with any Posix compatible
X  implementation of AWK, and implementation specific options are
! prefaced with \-W. 
X  .B mawk 
! provides three:
! 
! .TP \w'\-\fBv'+\w'\fIvar=value'u+2n
X  \-\fBW \fRversion
X  .B mawk
--- 87,95 ----
X  The above options will be available with any Posix compatible
X  implementation of AWK, and implementation specific options are
! prefaced with
! .BR \-W .
X  .B mawk 
! provides four:
! .TP \w'\-\fBW'u+\w'\fRsprintf=\fInum\fR'u+2n
X  \-\fBW \fRversion
X  .B mawk
***************
*** 104,108 ****
X  representation of the program to stderr.
X  .TP
! \-\fBW \fRsprintf=\fInum
X  adjusts the size of 
X  .B mawk's
--- 102,106 ----
X  representation of the program to stderr.
X  .TP
! \-\fBW \fRsprintf=\fInum\fR
X  adjusts the size of 
X  .B mawk's
***************
*** 116,121 ****
X  forces
X  .B mawk
! not to consider '\\n' to be space.
! 
X  .SH "THE AWK LANGUAGE"
X  .SS "\fB1. Program structure"
--- 114,118 ----
X  forces
X  .B mawk
! not to consider '\en' to be space.
X  .SH "THE AWK LANGUAGE"
X  .SS "\fB1. Program structure"
***************
*** 152,156 ****
X  have no meaning; an empty statement is terminated with a
X  semi-colon. Long statements
! can be continued with a backslash, \\\|.  A statement can be broken
X  without a backslash after a comma, left brace, &&, ||, 
X  .BR do , 
--- 149,153 ----
X  have no meaning; an empty statement is terminated with a
X  semi-colon. Long statements
! can be continued with a backslash, \e\|.  A statement can be broken
X  without a backslash after a comma, left brace, &&, ||, 
X  .BR do , 
***************
*** 218,241 ****
X  .sp
X  .ce
! "This is a string with a newline at the end.\\n"
X  .sp
! Strings can be continued across a line by escaping (\\) the newline.
X  The following escape sequences are recognized.
X  .nf
X  .sp
! 	\\\\		\\
! 	\\"		"
! 	\\a		alert, ascii 7
! 	\\b		backspace, ascii 8
! 	\\t		tab, ascii 9
! 	\\n		newline, ascii 10
! 	\\v		vertical tab, ascii 11
! 	\\f		formfeed, ascii 12
! 	\\r		carriage return, ascii 13
! 	\\ddd		1, 2 or 3 octal digits for ascii ddd
! 	\\xhh		1 or 2 hex digits for ascii  hh
X  .sp
X  .fi
! If you escape any other character \\c, you get \\c, i.e., 
X  .B mawk
X  ignores the escape.
--- 215,238 ----
X  .sp
X  .ce
! "This is a string with a newline at the end.\en"
X  .sp
! Strings can be continued across a line by escaping (\e) the newline.
X  The following escape sequences are recognized.
X  .nf
X  .sp
! 	\e\e		\e
! 	\e"		"
! 	\ea		alert, ascii 7
! 	\eb		backspace, ascii 8
! 	\et		tab, ascii 9
! 	\en		newline, ascii 10
! 	\ev		vertical tab, ascii 11
! 	\ef		formfeed, ascii 12
! 	\er		carriage return, ascii 13
! 	\eddd		1, 2 or 3 octal digits for ascii ddd
! 	\exhh		1 or 2 hex digits for ascii  hh
X  .sp
X  .fi
! If you escape any other character \ec, you get \ec, i.e., 
X  .B mawk
X  ignores the escape.
***************
*** 296,306 ****
X  \*(ex\d1\u \fBrel-op \*(ex\d2\u,
X  if both operands are numeric or number and string then the comparison
! is numeric; if both operands are string the comparison is string.
! If exactly one operand is string and after trimming spaces and
! tabs from the front and back the remaining string is entirely
! numeric in form, then the string is converted to number and the
! comparison is numeric; otherwise, the numeric operand is converted
! to string and the comparison is string.
! The result of a comparison is numeric, 0 or 1.
X  .PP
X  In boolean contexts such as,
--- 293,299 ----
X  \*(ex\d1\u \fBrel-op \*(ex\d2\u,
X  if both operands are numeric or number and string then the comparison
! is numeric; if both operands are string the comparison is string;
! if one operand is string, the non-string operand is converted and
! the comparison is string.  The result is numeric, 1 or 0.
X  .PP
X  In boolean contexts such as,
***************
*** 360,364 ****
X  matches any non-metacharacter
X  .IR c .
! .IP  "\e\fIc\fR"
X  matches a character defined by the same escape sequences used
X  in string constants or the literal
--- 353,358 ----
X  matches any non-metacharacter
X  .IR c .
! .TP
! "\e\fIc\fR"
X  matches a character defined by the same escape sequences used
X  in string constants or the literal
***************
*** 366,372 ****
X  .I c 
X  if
! \\\fIc\fR
X  is not an escape sequence.
! .IP  \.
X  matches any character (including newline).
X  .TP
--- 360,367 ----
X  .I c 
X  if
! \e\fIc\fR
X  is not an escape sequence.
! .TP
! \&\.
X  matches any character (including newline).
X  .TP
***************
*** 390,394 ****
X  as follows:
X  .RS
! .TP
X  \fIr\fR\d1\u\fIr\fR\d2\u
X  matches 
--- 385,389 ----
X  as follows:
X  .RS
! .TP \w'[^c\d1\uc\d2\uc\d3\u...]'u+1n
X  \fIr\fR\d1\u\fIr\fR\d2\u
X  matches 
***************
*** 425,429 ****
X  .sp
X  	/^[_a\-zA-Z][_a\-zA\-Z0\-9]*$/  and
! 	/^[\-+]?([0\-9]+\\\|.?|\\\|.[0\-9])[0\-9]*([eE][\-+]?[0\-9]+)?$/
X  .sp
X  .fi
--- 420,424 ----
X  .sp
X  	/^[_a\-zA-Z][_a\-zA\-Z0\-9]*$/  and
! 	/^[\-+]?([0\-9]+\e\|.?|\e\|.[0\-9])[0\-9]*([eE][\-+]?[0\-9]+)?$/
X  .sp
X  .fi
***************
*** 513,517 ****
X  	echo 24 24E | 
X  	mawk '{ print($1>100, $1>"100", $2>100, $2>"100") }'
! 	0 0 1 1
X  .fi
X  .sp
--- 508,512 ----
X  	echo 24 24E | 
X  	mawk '{ print($1>100, $1>"100", $2>100, $2>"100") }'
! 	0 1 1 1
X  .fi
X  .sp
***************
*** 521,529 ****
X  are string and
X  .B $1
! is number and string.  The first 
! and second comparisons are numeric and the last
! two are string.  In the second "100" is
! converted to 100, and in the third 100 is
! converted to "100".
X  .\"
X  .SS "\fB5. Expressions and operators"
--- 516,523 ----
X  are string and
X  .B $1
! is number and string.  The first comparison is numeric,
! the second is string, the third is string
! (100 is converted to "100"),
! and the last is string.
X  .\"
X  .SS "\fB5. Expressions and operators"
***************
*** 672,676 ****
X  .TP
X  .B   ORS
! terminates each record on output, initially = "\\n".
X  .TP
X  .B    RLENGTH
--- 666,670 ----
X  .TP
X  .B   ORS
! terminates each record on output, initially = "\en".
X  .TP
X  .B    RLENGTH
***************
*** 679,683 ****
X  .TP
X  .B   RS
! input record separator, initially = "\\n".
X  .TP
X  .B  RSTART
--- 673,677 ----
X  .TP
X  .B   RS
! input record separator, initially = "\en".
X  .TP
X  .B  RSTART
***************
*** 686,690 ****
X  .TP
X  .B SUBSEP
! used to build multiple array subscripts, initially = "\\034".
X  .RE
X  .\"
--- 680,684 ----
X  .TP
X  .B SUBSEP
! used to build multiple array subscripts, initially = "\e034".
X  .RE
X  .\"
***************
*** 709,713 ****
X  is replaced by the matched substring of
X  .IR t .
! \\& puts a literal & in the replacement string.
X  .TP
X  index(\fIs,t\fR)
--- 703,707 ----
X  is replaced by the matched substring of
X  .IR t .
! \e& puts a literal & in the replacement string.
X  .TP
X  index(\fIs,t\fR)
***************
*** 723,731 ****
X  is in position 1.
X  .TP
! length(\fIs\fR)  length()
X  Returns the length of string
! .IR s ;
! without an argument, returns the length of 
! .BR $0 .
X  .TP
X  match(\fIs,r\fR)
--- 717,723 ----
X  is in position 1.
X  .TP
! length(\fIs\fR)
X  Returns the length of string
! .IR s .
X  .TP
X  match(\fIs,r\fR)
***************
*** 1036,1040 ****
X  .B mawk
X  defines <SPACE> as the regular expression
! /[\ \\t\\n]+/.  
X  Otherwise
X  .I sep
--- 1028,1032 ----
X  .B mawk
X  defines <SPACE> as the regular expression
! /[\ \et\en]+/.  
X  Otherwise
X  .I sep
***************
*** 1042,1046 ****
X  are ignored for a string of length 1,
X  e.g.,
! split(x, A, "*") and split(x, A, /\\*/) are the same.
X  .TP
X  (3)
--- 1034,1038 ----
X  are ignored for a string of length 1,
X  e.g.,
! split(x, A, "*") and split(x, A, /\e*/) are the same.
X  .TP
X  (3)
***************
*** 1049,1053 ****
X  and 
X  .I A
! is unchanged.
X  Otherwise,
X  all non-overlapping, non-null and longest matches of
--- 1041,1045 ----
X  and 
X  .I A
! is set empty.
X  Otherwise,
X  all non-overlapping, non-null and longest matches of
***************
*** 1119,1123 ****
X  records are easy.  Setting 
X  .B RS
! = "\\n\\n+", makes one or more blank
X  lines separate records.  If 
X  .B FS
--- 1111,1115 ----
X  records are easy.  Setting 
X  .B RS
! = "\en\en+", makes one or more blank
X  lines separate records.  If 
X  .B FS
***************
*** 1127,1138 ****
X  .RS
X  .PP
! For example, if a file is "a\ b\\nc\\n\\n",
X  .B RS
! = "\\n\\n+" and
X  .B FS
! = "\ ", then there is one record "a\ b\\nc" with three
X  fields "a", "b" and "c".  Changing
X  .B FS
! = "\\n", gives two
X  fields "a b" and "c"; changing
X  .B FS
--- 1119,1130 ----
X  .RS
X  .PP
! For example, if a file is "a\ b\enc\en\en",
X  .B RS
! = "\en\en+" and
X  .B FS
! = "\ ", then there is one record "a\ b\enc" with three
X  fields "a", "b" and "c".  Changing
X  .B FS
! = "\en", gives two
X  fields "a b" and "c"; changing
X  .B FS
***************
*** 1144,1148 ****
X  set
X  .B RS
! = "\\n([\ \\t]*\\n)+".
X  For compatibility with other awks, setting
X  .B RS
--- 1136,1140 ----
X  set
X  .B RS
! = "\en([\ \et]*\en)+".
X  For compatibility with other awks, setting
X  .B RS
***************
*** 1151,1156 ****
X  front and back of files and then records are determined as if
X  .B RS
! = "\\n\\n+".
! Posix requires that "\\n" always separates records when
X  .B RS
X  = "" regardless of the value of
--- 1143,1148 ----
X  front and back of files and then records are determined as if
X  .B RS
! = "\en\en+".
! Posix requires that "\en" always separates records when
X  .B RS
X  = "" regardless of the value of
***************
*** 1158,1162 ****
X  .B mawk 
X  does not support this convention, because defining
! "\\n" as <SPACE> makes it unnecessary.
X  .\"
X  .PP
--- 1150,1154 ----
X  .B mawk 
X  does not support this convention, because defining
! "\en" as <SPACE> makes it unnecessary.
X  .\"
X  .PP
***************
*** 1166,1170 ****
X  will also want to change 
X  .B ORS
! to "\\n\\n" so the record spacing is preserved on output.
X  .\"
X  .SS "\fB13. Program execution"
--- 1158,1162 ----
X  will also want to change 
X  .B ORS
! to "\en\en" so the record spacing is preserved on output.
X  .\"
X  .SS "\fB13. Program execution"
***************
*** 1198,1202 ****
X  .B ARGV[4]
X  = "B".
! 
X  Next, each 
X  .B BEGIN
--- 1190,1194 ----
X  .B ARGV[4]
X  = "B".
! .PP
X  Next, each 
X  .B BEGIN
***************
*** 1326,1330 ****
X  .B exit
X  or subsequent error.
- 
X  .SH EXAMPLES
X  .nf
--- 1318,1321 ----
***************
*** 1335,1339 ****
X  2. emulate wc.
X  
! 	{ chars += length($0) + 1  # add one for the \\n
X  	  words += NF
X  	}
--- 1326,1330 ----
X  2. emulate wc.
X  
! 	{ chars += length($0) + 1  # add one for the \en
X  	  words += NF
X  	}
***************
*** 1385,1389 ****
X  
X  .fi
- 
X  .SH  "COMPATIBILITY ISSUES"
X  The Posix 1003.2(draft 11.2) definition of the AWK language
--- 1376,1379 ----
***************
*** 1405,1409 ****
X  a time.
X  .B RS
! can be changed from "\\n" to another single character,
X  but it
X  is hard to find any use for this \(em there are no 
--- 1395,1399 ----
X  a time.
X  .B RS
! can be changed from "\en" to another single character,
X  but it
X  is hard to find any use for this \(em there are no 
***************
*** 1411,1415 ****
X  By convention, \fBRS\fR = "", makes one or more blank lines
X  separate records, allowing multi-line records.  When
! \fBRS\fR = "", "\\n" is always a field separator 
X  regardless of the value in
X  .BR FS .
--- 1401,1405 ----
X  By convention, \fBRS\fR = "", makes one or more blank lines
X  separate records, allowing multi-line records.  When
! \fBRS\fR = "", "\en" is always a field separator 
X  regardless of the value in
X  .BR FS .
***************
*** 1420,1424 ****
X  .B RS
X  to be a regular expression.
! When "\\n" appears in records, it is treated as space, and
X  .B FS
X  always determines fields.
--- 1410,1414 ----
X  .B RS
X  to be a regular expression.
! When "\en" appears in records, it is treated as space, and
X  .B FS
X  always determines fields.
***************
*** 1450,1454 ****
X  .sp
X  	BEGIN {
! 	  RS = "/\|\\*([^*]\||\|\\*+[^/*])*\\*+/"
X  		# comment is record separator
X  	  ORS = " "
--- 1440,1444 ----
X  .sp
X  	BEGIN {
! 	  RS = "/\|\e*([^*]\||\|\e*+[^/*])*\e*+/"
X  		# comment is record separator
X  	  ORS = " "
***************
*** 1469,1473 ****
X  .nf
X  .sp
! 	x ~ /a\\+b/    x ~ "a\\+b"     x ~ "a\\\\+b"
X  .sp
X  .fi
--- 1459,1463 ----
X  .nf
X  .sp
! 	x ~ /a\e+b/    x ~ "a\e+b"     x ~ "a\e\e+b"
X  .sp
X  .fi
***************
*** 1486,1493 ****
X  the more portable but less readable, double escape.
X  .PP
! Posix AWK does not recognize "/dev/stderr" or \\x hex escape
X  sequences in strings.  Unlike ANSI C,
X  .B mawk
! limits the number of digits that follows \\x to two.
X  .PP
X  Finally, here is how 
--- 1476,1483 ----
X  the more portable but less readable, double escape.
X  .PP
! Posix AWK does not recognize "/dev/stderr" or \ex hex escape
X  sequences in strings.  Unlike ANSI C,
X  .B mawk
! limits the number of digits that follows \ex to two.
X  .PP
X  Finally, here is how 
***************
*** 1504,1508 ****
X  returned; so substr("ABC", 1, 0) = "" and
X  substr("ABC", \-4, 6) = "A".
! 
X  Every string, including the empty string, matches the empty string
X  at the
--- 1494,1498 ----
X  returned; so substr("ABC", 1, 0) = "" and
X  substr("ABC", \-4, 6) = "A".
! .PP
X  Every string, including the empty string, matches the empty string
X  at the
***************
*** 1511,1515 ****
X  .B RLENGTH 
X  to 0.
! 
X  index(s, t) is always the same as match(s, t1) where t1 is the
X  same as t with metacharacters escaped.  Hence consistency
--- 1501,1505 ----
X  .B RLENGTH 
X  to 0.
! .PP
X  index(s, t) is always the same as match(s, t1) where t1 is the
X  same as t with metacharacters escaped.  Hence consistency
***************
*** 1518,1522 ****
X  Also the condition, index(s,t) != 0 if and only t is a substring
X  of s, requires index("","") = 1.
! 
X  If getline encounters end of file, getline var, leaves var
X  unchanged.  Similarly, on entry to the 
--- 1508,1512 ----
X  Also the condition, index(s,t) != 0 if and only t is a substring
X  of s, requires index("","") = 1.
! .PP
X  If getline encounters end of file, getline var, leaves var
X  unchanged.  Similarly, on entry to the 
***************
*** 1527,1534 ****
X  .B NF
X  have their value unaltered from the last record.
- 
X  .SH SEE ALSO
! .I egrep
! (1)
X  .PP
X  Aho, Kernighan and Weinberger,
--- 1517,1522 ----
X  .B NF
X  have their value unaltered from the last record.
X  .SH SEE ALSO
! .IR egrep (1)
X  .PP
X  Aho, Kernighan and Weinberger,
***************
*** 1547,1558 ****
X  The section on AWK arrays is excellent.  It also
X  discusses Posix requirements for AWK.
- 
- 
X  .SH BUGS
X  .B mawk
! cannot handle ascii NUL \\0 in the source or data files.  You
X  can output NUL using printf with %c, and any other 8 bit
X  character is acceptable input.
! 
X  .B mawk
X  implements printf() and sprintf() using the C library functions,
--- 1535,1544 ----
X  The section on AWK arrays is excellent.  It also
X  discusses Posix requirements for AWK.
X  .SH BUGS
X  .B mawk
! cannot handle ascii NUL \e0 in the source or data files.  You
X  can output NUL using printf with %c, and any other 8 bit
X  character is acceptable input.
! .PP
X  .B mawk
X  implements printf() and sprintf() using the C library functions,
***************
*** 1562,1569 ****
X  .B mawk
X  inherits any bugs or limitations of the library functions.
! 
X  Implementors of the AWK language have shown a consistent lack
X  of imagination when naming their programs.
- 
X  .SH AUTHOR
X  Mike Brennan (brennan@boeing.com).
--- 1548,1554 ----
X  .B mawk
X  inherits any bugs or limitations of the library functions.
! .PP
X  Implementors of the AWK language have shown a consistent lack
X  of imagination when naming their programs.
X  .SH AUTHOR
X  Mike Brennan (brennan@boeing.com).
*** mawk/msdos/Makefile.tcc	Tue Mar  3 17:24:52 1992
--- mawk112/msdos/Makefile.tcc	Tue Apr  7 12:56:59 1992
***************
*** 8,13 ****
X  #   make  -DLARGE -DREARGV  -- bmawk.exe   unix  command line
X  
! #$Log:	Makefile.tcc,v $
! #Revision 1.2  91/11/12  09:59:26  brennan
X  #changed tcc to $(CC) and .o to .obj
X  #
--- 8,13 ----
X  #   make  -DLARGE -DREARGV  -- bmawk.exe   unix  command line
X  
! #$Log: Makefile.tcc,v $
! #Revision 1.2  1991/11/12  09:59:26  brennan
X  #changed tcc to $(CC) and .o to .obj
X  #
*** mawk/msdos/NOTES	Tue Mar  3 17:24:48 1992
--- mawk112/msdos/NOTES	Fri Jul 10 09:28:23 1992
***************
*** 142,150 ****
X  POSSIBLE PROBLEMS:
X  
! 1) Using TurboC++ 1.0, the code segment is 153 bytes short of
! 64K.  With another compiler or a different version of TurboC++,
! this might not fit in 64K. If this is a problem,
! then compile with -DNO_BINMODE which removes the BINMODE features
! from small model only and then it should fit.
X  
X  2)  MSC 5.1 requires /Os and /Gs for small model to fit in 64K.
--- 142,148 ----
X  POSSIBLE PROBLEMS:
X  
! 1) Hopefully you can compile for speed and still fit the code
! in 64K.  If not set your compiler switches to compile for 
! optimized (ie small) size.
X  
X  2)  MSC 5.1 requires /Os and /Gs for small model to fit in 64K.
*** mawk/msdos/dosexec.c	Tue Mar  3 17:24:48 1992
--- mawk112/msdos/dosexec.c	Tue Jul 28 09:47:03 1992
***************
*** 11,18 ****
X  ********************************************/
X  
! /*$Log:	dosexec.c,v $
!  * Revision 1.2  91/11/16  10:27:18  brennan
!  * BINMODE 
!  * 
X   * Revision 1.1  91/10/29  09:45:56  brennan
X   * Initial revision
--- 11,21 ----
X  ********************************************/
X  
! /*$Log: dosexec.c,v $
!  * Revision 1.3  1992/07/10  16:21:57  brennan
!  * store exit code of input pipes
!  *
!  * Revision 1.2  1991/11/16  10:27:18  brennan
!  * BINMODE
!  *
X   * Revision 1.1  91/10/29  09:45:56  brennan
X   * Initial revision
***************
*** 99,107 ****
X  
X  
! static int next_tmp ;
! static char *tmpdir ;
X  
- /* put the name of a temp file in string buff */
X  
X  char *tmp_file_name( id )
X    int id ;
--- 102,110 ----
X  
X  
! static int next_tmp ;  /* index for naming temp files */
! static char *tmpdir ;  /* directory to hold temp files */
X  
X  
+ /* put the name of a temp file in string buff */
X  char *tmp_file_name( id )
X    int id ;
***************
*** 133,137 ****
X      
X      sprintf(xbuff, "%s > %s" , command, tmpfile) ;
!     DOSexec(xbuff) ;
X      retval = (PTR) FINopen(tmpfile, 0) ;
X    }
--- 136,140 ----
X      
X      sprintf(xbuff, "%s > %s" , command, tmpfile) ;
!     tmp_idp[1] = DOSexec(xbuff) ;
X      retval = (PTR) FINopen(tmpfile, 0) ;
X    }
***************
*** 160,164 ****
X  
X  #endif  /* MSDOS */
- 
- 
- 
--- 163,164 ----
*** mawk/msdos/see2obj.c	Tue Mar  3 17:24:52 1992
--- mawk112/msdos/see2obj.c	Tue Apr  7 12:56:58 1992
***************
*** 11,18 ****
X  */
X  
! /*$Log:	see2obj.c,v $
!  * Revision 1.1  91/10/29  07:53:53  brennan
X   * Initial revision
!  * 
X  */
X  
--- 11,18 ----
X  */
X  
! /*$Log: see2obj.c,v $
!  * Revision 1.1  1991/10/29  07:53:53  brennan
X   * Initial revision
!  *
X  */
X  
*** mawk/rexp/rexp.c	Tue Mar  3 17:23:58 1992
--- mawk112/rexp/rexp.c	Tue Apr  7 12:56:42 1992
***************
*** 11,18 ****
X  ********************************************/
X  
! /*$Log:	rexp.c,v $
!  * Revision 3.4  91/08/13  09:09:59  brennan
X   * VERSION .9994
!  * 
X   * Revision 3.3  91/08/04  15:45:03  brennan
X   * no longer attempt to recover mem on failed REcompile
--- 11,18 ----
X  ********************************************/
X  
! /*$Log: rexp.c,v $
!  * Revision 3.4  1991/08/13  09:09:59  brennan
X   * VERSION .9994
!  *
X   * Revision 3.3  91/08/04  15:45:03  brennan
X   * no longer attempt to recover mem on failed REcompile
*** mawk/rexp/rexp.h	Tue Mar  3 17:24:00 1992
--- mawk112/rexp/rexp.h	Tue Apr  7 12:56:43 1992
***************
*** 11,18 ****
X  ********************************************/
X  
! /*$Log:	rexp.h,v $
!  * Revision 3.6  92/01/21  17:31:45  brennan
X   * moved ison() macro out of rexp[23].c
!  * 
X   * Revision 3.5  91/10/29  10:53:55  brennan
X   * SIZE_T
--- 11,18 ----
X  ********************************************/
X  
! /*$Log: rexp.h,v $
!  * Revision 3.6  1992/01/21  17:31:45  brennan
X   * moved ison() macro out of rexp[23].c
!  *
X   * Revision 3.5  91/10/29  10:53:55  brennan
X   * SIZE_T
*** mawk/rexp/rexp0.c	Tue Mar  3 17:24:00 1992
--- mawk112/rexp/rexp0.c	Tue Apr 21 13:20:31 1992
***************
*** 11,15 ****
X  ********************************************/
X  
! /*$Log:	rexp0.c,v $
X   * Revision 3.6  92/01/21  17:32:51  brennan
X   * added some casts so that character classes work with signed chars
--- 11,23 ----
X  ********************************************/
X  
! /*$Log: rexp0.c,v $
!  * Revision 3.8  1992/04/21  20:22:38  brennan
!  * 1.1 patch2
!  * [c1-c2] now works if c2 is an escaped character
!  *
!  * Revision 3.7  1992/03/24  09:33:12  brennan
!  * 1.1 patch2
!  * When backing up in do_str, check if last character was escaped
!  *
X   * Revision 3.6  92/01/21  17:32:51  brennan
X   * added some casts so that character classes work with signed chars
***************
*** 186,189 ****
--- 194,202 ----
X  }
X  
+ /*
+   collect a run of characters into a string
+   machine
+ */
+ 
X  static  int  do_str( c, pp, mp)
X    int c ; /* the first character */
***************
*** 191,199 ****
X    MACHINE  *mp ;  /* where to put the string machine */
X  { register char *p , *s ;
!   char *str ;
!   unsigned len ;
X  
X  
!   p = *pp ;
X    s = str = RE_malloc( re_len ) ;
X    *s++ = c ;  len = 1 ;
--- 204,213 ----
X    MACHINE  *mp ;  /* where to put the string machine */
X  { register char *p , *s ;
!   char *p_entry ;
!   char *str ;    /* collect it here */
!   unsigned len ; /* length collected */
X  
X  
!   p = p_entry = *pp ;
X    s = str = RE_malloc( re_len ) ;
X    *s++ = c ;  len = 1 ;
***************
*** 219,224 ****
X    /* if len > 1 and we failed on a ? + or * , need to back up */
X    if ( len > 1 && (*p == '*' || *p == '+' || *p == '?' ) )
!   { len-- ; p-- ; s-- ; }
X  
X    *s = 0 ;
X    *pp = p ;
--- 233,251 ----
X    /* if len > 1 and we failed on a ? + or * , need to back up */
X    if ( len > 1 && (*p == '*' || *p == '+' || *p == '?' ) )
!   { len-- ; p-- ; s-- ; 
X  
+     /* if the last character was escaped, back up one more */
+     {
+       int cnt = 0 ;
+       char *bp = p-1 ;
+ 
+       while ( bp >= p_entry && *bp == '\\' )
+       {
+ 	cnt++ ; bp-- ;
+       }
+       if ( cnt & 1 )  p-- ;
+     }
+   }
+ 
X    *s = 0 ;
X    *pp = p ;
***************
*** 232,236 ****
X   *---------------------------*/
X  
! #define  on( b, x)  ( (b)[((unsigned char)(x))>>3] |= ( 1 << ((x)&7) ))
X  
X  static  void  PROTO(block_on, (BV,int,int) ) ;
--- 259,263 ----
X   *---------------------------*/
X  
! #define  on( b, x)  ((b)[(x)>>3] |= ( 1 << ((x)&7) ))
X  
X  static  void  PROTO(block_on, (BV,int,int) ) ;
***************
*** 237,243 ****
X  
X  static  void  block_on( b, x, y)
!   BV b ; int x, y ; 
! { int lo = (x&0xff) >> 3 ;
!   int hi = (y&0xff) >> 3 ;
X    int  i, j, bit  ;
X  
--- 264,272 ----
X  
X  static  void  block_on( b, x, y)
!   BV b ; 
!   int x, y ; 
!   /* caller makes sure x<=y and x>0 y>0 */
! { int lo = x >> 3 ;
!   int hi = y >> 3 ;
X    int  i, j, bit  ;
X  
***************
*** 267,271 ****
X    int comp_flag ;
X  
!   p = (*start) + 1 ;
X    if ( *p == ']' || *p == '^' && *(p+1) == ']' )
X           RE_error_trap(-E3) ;
--- 296,300 ----
X    int comp_flag ;
X  
!   p = t = (*start) + 1 ;
X    if ( *p == ']' || *p == '^' && *(p+1) == ']' )
X           RE_error_trap(-E3) ;
***************
*** 280,284 ****
X      }
X    /*  q  now  pts at the back of the class   */
!   p = (*start) + 1 ;
X    *start = q + 1 ;
X  
--- 309,313 ----
X      }
X    /*  q  now  pts at the back of the class   */
!   p = t ;
X    *start = q + 1 ;
X  
***************
*** 286,290 ****
X    (void) memset( bvp, 0, SIZE_T(sizeof(BV)) ) ;
X  
!   comp_flag = *p == '^' ? (p++ , 1) : 0 ;
X    prev = -1 ;  /* indicates  -  cannot be part of a range  */
X  
--- 315,321 ----
X    (void) memset( bvp, 0, SIZE_T(sizeof(BV)) ) ;
X  
!   if ( *p == '^' ) { comp_flag = 1 ; p++ ; }
!   else comp_flag = 0 ;
! 
X    prev = -1 ;  /* indicates  -  cannot be part of a range  */
X  
***************
*** 292,318 ****
X    {
X       switch( *p )
!       { case '\\' :
!           t = ++p ;
X            prev = escape(&t) ;
X            on(*bvp, prev) ;
X            p = t ;
!           continue ;
X  
X          case '-' :
-           if ( prev == -1 || p+1 == q || prev > *(unsigned char*)(p+1) )
-              { prev = '-' ; on(*bvp, '-') ; }
-           else
-              { p++ ;
-                block_on(*bvp, prev, *p) ;
-                prev = -1 ;
-              }
-           break ;
X  
X          default :
!           prev = *(unsigned char*)p ;
!           on(*bvp, *p) ;
X            break ;
X        }
-       p++ ;
X    }
X  
--- 323,375 ----
X    {
X       switch( *p )
!       { 
! 	case '\\' :
! 
!           t = p+1 ;
X            prev = escape(&t) ;
X            on(*bvp, prev) ;
X            p = t ;
! 	  break ;
X  
X          case '-' :
X  
+ 	  if ( prev == -1 || p+1 == q )
+ 	  {
+ 	    prev = '-' ; 
+ 	    on(*bvp,'-') ;
+ 	    p++ ;
+ 	  }
+ 	  else
+ 	  {
+ 	    int c ;
+ 	    char *mark = ++p ;
+ 
+ 	    if ( *p != '\\' )  c = *(unsigned char *) p++ ;
+ 	    else
+ 	    {
+ 	      t = p+1 ;
+ 	      c = escape(&t) ;
+ 	      p = t ;
+ 	    }
+ 
+ 	    if ( prev <= c )
+ 	    {
+ 	      block_on(*bvp, prev, c) ;
+ 	      prev = -1 ;
+ 	    }
+ 	    else /* back up */
+ 	    { 
+ 	      p = mark ;
+ 	      prev = '-' ;
+ 	      on(*bvp,'-') ;
+ 	    }
+ 	  }
+ 	  break ;
+ 	      
X          default :
!           prev = *(unsigned char*)p++ ;
!           on(*bvp, prev) ;
X            break ;
X        }
X    }
X  
***************
*** 455,458 ****
X    /* anything else \c -> c */
X    *start_p = p ;
!   return p[-1]  ;
X  }
--- 512,515 ----
X    /* anything else \c -> c */
X    *start_p = p ;
!   return  *(unsigned char*)(p-1) ;
X  }
*** mawk/rexp/rexp1.c	Tue Mar  3 17:29:26 1992
--- mawk112/rexp/rexp1.c	Mon Apr 27 10:14:01 1992
***************
*** 11,18 ****
X  ********************************************/
X  
! /*$Log:	rexp1.c,v $
!  * Revision 3.4  92/02/20  16:08:12  brennan
X   * change new_TWO() to work around sun acc bug
!  * 
X   * Revision 3.3  91/10/29  10:54:01  brennan
X   * SIZE_T
--- 11,18 ----
X  ********************************************/
X  
! /*$Log: rexp1.c,v $
!  * Revision 3.4  1992/02/20  16:08:12  brennan
X   * change new_TWO() to work around sun acc bug
!  *
X   * Revision 3.3  91/10/29  10:54:01  brennan
X   * SIZE_T
*** mawk/rexp/rexp2.c	Tue Mar  3 17:24:02 1992
--- mawk112/rexp/rexp2.c	Tue Apr  7 12:56:46 1992
***************
*** 11,18 ****
X  ********************************************/
X  
! /*$Log:	rexp2.c,v $
!  * Revision 3.7  92/01/21  17:33:15  brennan
X   * added some casts so that character classes work with signed chars
!  * 
X   * Revision 3.6  91/10/29  10:54:03  brennan
X   * SIZE_T
--- 11,18 ----
X  ********************************************/
X  
! /*$Log: rexp2.c,v $
!  * Revision 3.7  1992/01/21  17:33:15  brennan
X   * added some casts so that character classes work with signed chars
!  *
X   * Revision 3.6  91/10/29  10:54:03  brennan
X   * SIZE_T
*** mawk/rexp/rexp3.c	Tue Mar  3 17:24:04 1992
--- mawk112/rexp/rexp3.c	Tue Apr  7 12:56:46 1992
***************
*** 11,18 ****
X  ********************************************/
X  
! /*$Log:	rexp3.c,v $
!  * Revision 3.5  92/01/21  17:33:20  brennan
X   * added some casts so that character classes work with signed chars
!  * 
X   * Revision 3.4  91/10/29  10:54:09  brennan
X   * SIZE_T
--- 11,18 ----
X  ********************************************/
X  
! /*$Log: rexp3.c,v $
!  * Revision 3.5  1992/01/21  17:33:20  brennan
X   * added some casts so that character classes work with signed chars
!  *
X   * Revision 3.4  91/10/29  10:54:09  brennan
X   * SIZE_T
*** mawk/rexp/rexpdb.c	Tue Mar  3 17:24:04 1992
--- mawk112/rexp/rexpdb.c	Tue Apr  7 12:56:47 1992
***************
*** 12,19 ****
X  
X  
! /*$Log:	rexpdb.c,v $
!  * Revision 3.2  91/08/13  09:10:09  brennan
X   * VERSION .9994
!  * 
X   * Revision 3.1  91/06/07  10:33:30  brennan
X   * VERSION 0.995
--- 12,19 ----
X  
X  
! /*$Log: rexpdb.c,v $
!  * Revision 3.2  1991/08/13  09:10:09  brennan
X   * VERSION .9994
!  *
X   * Revision 3.1  91/06/07  10:33:30  brennan
X   * VERSION 0.995
*** /dev/null	Thu Oct  8 13:30:24 1992
--- mawk112/config/aix.h	Mon Jul  6 13:23:10 1992
***************
*** 0 ****
--- 1,36 ----
+ 
+ /********************************************
+ aix.h
+ copyright 1992.  Michael D. Brennan
+ 
+ This is a source file for mawk, an implementation of
+ the AWK programming language.
+ 
+ Mawk is distributed without warranty under the terms of
+ the GNU General Public License, version 2, 1991.
+ ********************************************/
+ 
+ 
+ /* $Log: aix.h,v $
+  * Revision 1.1  1992/07/06  20:26:36  brennan
+  * Initial revision
+  *
+ */
+ 
+ /* AIX 3.1 on RS6000 */
+ 
+ 
+ #ifndef  CONFIG_H
+ #define  CONFIG_H	1
+ 
+ #define  HAVE_STDLIB_H  1
+ #define  HAVE_PROTOS    1
+ #define  HAVE_STDARG_H  1
+ #define  DONT_PROTO_OPEN
+ 
+ 
+ 
+ 
+ #include "config/Idefault.h"
+ 
+ #endif
*** /dev/null	Thu Oct  8 13:30:24 1992
--- mawk112/config/convex.h	Wed Jul  8 09:04:08 1992
***************
*** 0 ****
--- 1,46 ----
+ 
+ /********************************************
+ convex.h
+ copyright 1992, Michael D. Brennan
+ 
+ This is a source file for mawk, an implementation of
+ the AWK programming language.
+ 
+ Mawk is distributed without warranty under the terms of
+ the GNU General Public License, version 2, 1991.
+ ********************************************/
+ 
+ 
+ /* tested on ConvexOS 9.1
+ 
+ There is a bug in convex strtod(3) in OS 8.1, 9.0 and 9.1.
+ 
+ It is supposed to be fixed in 10.0
+ 
+ The patch is PR-25399
+ 
+ */
+ 
+ /*$Log: convex.h,v $
+  * Revision 1.1  1992/07/08  16:07:31  brennan
+  * Initial revision
+  *
+ */
+ 
+ /* convex.h */
+ 
+ #ifndef   CONFIG_H
+ #define   CONFIG_H	1
+ 
+ #define	FPE_TRAPS_ON	1
+ #define	FPE_ZERODIVIDE	0x4
+ #define	FPE_OVERFLOW	0x3
+ #define	HAVE_MATHERR	0
+ 
+ #define  sys_nerr	__ap$sys_nerr
+ #define  sys_errlist	__ap$sys_errlist
+ 
+ #include "config/Idefault.h"
+ #endif /* CONFIG_H  */
+ 
+ 
*** /dev/null	Thu Oct  8 13:30:24 1992
--- mawk112/config/sysVr4i386.h	Tue Jul 14 07:20:41 1992
***************
*** 0 ****
--- 1,52 ----
+ 
+ /********************************************
+ sysVr4i386.h
+ copyright 1992, Michael D. Brennan
+ 
+ This is a source file for mawk, an implementation of
+ the AWK programming language.
+ 
+ Mawk is distributed without warranty under the terms of
+ the GNU General Public License, version 2, 1991.
+ ********************************************/
+ 
+ 
+ /* 
+ 
+  On Intel platforms and maybe others,
+  for some strange reason, division by zero traps but overflow
+  does not, so we have to turn on the overflow trap.
+  (This seems like a small bug to me.)
+  If the trap is on, it won't hurt to turn it on some more.
+ 
+  If you have ieee754 hardware *and* a math lib that
+  supports it use sysV_ieeefp.h instead.
+ 
+ */
+ 
+ /*$Log: sysVr4i386.h,v $
+  * Revision 1.3  1992/07/14  14:23:35  brennan
+  * fixed typo
+  *
+  * Revision 1.2  1992/07/07  15:40:02  brennan
+  * DONT_PROTO_OPEN
+  *
+  * Revision 1.1  1992/07/01  18:07:47  brennan
+  * Initial revision
+  *
+ */
+ 
+ #ifndef    CONFIG_H
+ #define    CONFIG_H		1
+ 
+ #define		FPE_TRAPS_ON		1
+ #define		NOINFO_SIGFPE		1
+ 
+ #define  USE_IEEEFP_H
+ #define  TURN_ON_FPE_TRAPS()  (void)fpsetmask(fpgetmask()|FP_X_OFL)
+ 
+ #define  DONT_PROTO_OPEN
+ 
+ #include  "config/Idefault.h"
+ 
+ #endif   /* CONFIG_H */
SHAR_EOF
echo 'File diffs2 is complete' &&
chmod 0644 diffs2 ||
echo 'restore of diffs2 failed'
Wc_c="`wc -c < 'diffs2'`"
test 107075 -eq "$Wc_c" ||
	echo 'diffs2: original size 107075, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= Xparse.c ==============
if test -f 'Xparse.c' -a X"$1" != X"-c"; then
	echo 'x - skipping Xparse.c (File already exists)'
	rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting Xparse.c (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'Xparse.c' &&
#ifndef lint
static char yyid[] = "@(#)modification of yaccpar 1.8 (Berkeley) 01/20/90";
#endif
#define YYXBYACC 1  /* XBYACC -- modified Berkeley yacc */
/*
X Berkeley yacc modified so only tables and
X yydebug and yylval are global
X #define YYGLOBAL -- gives standard byacc
X #define YYPURE -- gives a reentrant parser
X
X Mike Brennan 11/05/91
*/
#line 31 "parse.y"
#include <stdio.h>
#include "mawk.h"
#include "code.h"
#include "symtype.h"
#include "memory.h"
#include "bi_funct.h"
#include "bi_vars.h"
#include "jmp.h"
#include "field.h"
#include "files.h"
X
#ifdef  YYXBYACC
#define YYBYACC		1
#endif
X
#define  YYMAXDEPTH	200
X
/* Bison's use of MSDOS and ours clashes */
#undef   MSDOS
X
extern void  PROTO( eat_nl, (void) ) ;
static void  PROTO( resize_fblock, (FBLOCK *, INST *) ) ;
static void  PROTO( code_array, (SYMTAB *) ) ;
static void  PROTO( code_call_id, (CA_REC *, SYMTAB *) ) ;
static void  PROTO( field_A2I, (void)) ;
static int   PROTO( current_offset, (void) ) ;
static void  PROTO( check_var, (SYMTAB *) ) ;
static void  PROTO( check_array, (SYMTAB *) ) ;
static void  PROTO( RE_as_arg, (void)) ;
X
static int scope ;
static FBLOCK *active_funct ;
X      /* when scope is SCOPE_FUNCT  */
X
#define  code_address(x)  if( is_local(x) )\
X                          { code1(L_PUSHA) ; code1((x)->offset) ; }\
X                          else  code2(_PUSHA, (x)->stval.cp) 
X
/* this nonsense caters to MSDOS large model */
#define  CODE_FE_PUSHA()  code_ptr->ptr = (PTR) 0 ; code1(FE_PUSHA)
X
#line 74 "parse.y"
typedef union{
CELL *cp ;
SYMTAB *stp ;
INST  *start ; /* code starting address */
PF_CP  fp ;  /* ptr to a (print/printf) or (sub/gsub) function */
BI_REC *bip ; /* ptr to info about a builtin */
FBLOCK  *fbp  ; /* ptr to a function block */
ARG2_REC *arg2p ;
CA_REC   *ca_p  ;
int   ival ;
PTR   ptr ;
} YYSTYPE;
#line 69 "y.tab.c"
#define UNEXPECTED 257
#define BAD_DECIMAL 258
#define NL 259
#define SEMI_COLON 260
#define LBRACE 261
#define RBRACE 262
#define LBOX 263
#define RBOX 264
#define COMMA 265
#define IO_OUT 266
#define ASSIGN 267
#define ADD_ASG 268
#define SUB_ASG 269
#define MUL_ASG 270
#define DIV_ASG 271
#define MOD_ASG 272
#define POW_ASG 273
#define QMARK 274
#define COLON 275
#define OR 276
#define AND 277
#define IN 278
#define MATCH 279
#define EQ 280
#define NEQ 281
#define LT 282
#define LTE 283
#define GT 284
#define GTE 285
#define CAT 286
#define GETLINE 287
#define PLUS 288
#define MINUS 289
#define MUL 290
#define DIV 291
#define MOD 292
#define NOT 293
#define UMINUS 294
#define IO_IN 295
#define PIPE 296
#define POW 297
#define INC_or_DEC 298
#define DOLLAR 299
#define FIELD 300
#define LPAREN 301
#define RPAREN 302
#define DOUBLE 303
#define STRING_ 304
#define RE 305
#define ID 306
#define D_ID 307
#define FUNCT_ID 308
#define BUILTIN 309
#define LENGTH 310
#define PRINT 311
#define PRINTF 312
#define SPLIT 313
#define MATCH_FUNC 314
#define SUB 315
#define GSUB 316
#define DO 317
#define WHILE 318
#define FOR 319
#define BREAK 320
#define CONTINUE 321
#define IF 322
#define ELSE 323
#define DELETE 324
#define BEGIN 325
#define END 326
#define EXIT 327
#define NEXT 328
#define RETURN 329
#define FUNCTION 330
#define YYERRCODE 256
short yylhs[] = {                                        -1,
X    0,    0,   36,   36,   36,   37,   40,   37,   41,   37,
X   42,   37,   43,   44,   37,    1,    1,    2,    2,    3,
X    3,    4,    4,    4,    4,    4,    4,    4,    4,   45,
X   45,   13,   13,   13,   13,   13,   13,   13,   13,   13,
X   13,   13,   13,   13,   13,   13,   46,   13,   47,   13,
X   48,   49,   13,   14,   14,   15,   15,   15,   15,   15,
X   15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
X   15,   15,   15,   15,   10,   25,   25,   26,   26,    8,
X    8,    5,    4,   27,   27,    6,    6,    6,    7,    7,
X   50,   50,   17,    4,   51,    4,   52,    4,   16,    4,
X    4,   18,   18,   19,   19,   53,   53,   13,   13,   10,
X   15,   15,    4,   20,    4,   11,   11,   11,   11,   11,
X   15,   13,   13,   13,   13,   13,   13,   13,   15,   22,
X   54,   54,   15,   23,    4,    4,   21,   21,   15,   15,
X   15,   15,   15,   55,   12,   12,    9,    9,   15,   28,
X   28,   24,   24,   38,   29,   30,   30,   34,   34,   35,
X   35,   39,   15,   31,   31,   32,   32,   32,   33,   33,
};
short yylen[] = {                                         2,
X    1,    2,    1,    1,    2,    1,    0,    3,    0,    3,
X    0,    3,    0,    0,    6,    3,    3,    1,    1,    1,
X    2,    1,    2,    1,    2,    2,    2,    1,    2,    1,
X    1,    1,    3,    3,    3,    3,    3,    3,    3,    3,
X    3,    3,    3,    3,    3,    3,    0,    4,    0,    4,
X    0,    0,    7,    1,    2,    1,    1,    1,    3,    1,
X    3,    3,    3,    3,    3,    3,    2,    2,    2,    1,
X    2,    2,    2,    2,    1,    0,    1,    1,    3,    5,
X    1,    0,    5,    1,    1,    1,    3,    2,    3,    3,
X    0,    2,    4,    2,    1,    4,    1,    7,    4,    2,
X    4,    3,    4,    1,    2,    1,    2,    3,    5,    5,
X    5,    6,    7,    6,    2,    1,    2,    6,    2,    3,
X    1,    3,    3,    3,    3,    3,    3,    3,    2,    5,
X    1,    3,    6,    1,    2,    3,    2,    3,    1,    2,
X    2,    3,    4,    1,    1,    1,    2,    3,    6,    1,
X    1,    1,    3,    2,    4,    2,    2,    0,    1,    1,
X    3,    1,    3,    2,    2,    1,    3,    3,    2,    2,
};
short yydefred[] = {                                      0,
X  162,    0,  144,    0,    0,    0,    0,    0,  116,    0,
X   56,   57,   60,    0,   82,   82,   81,    0,    0,  150,
X  151,    7,    9,    0,    0,    6,   70,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    1,    3,    4,
X    0,    0,    0,   30,   31,   84,   85,   97,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,   22,    0,   20,
X    0,    0,    0,    0,    0,   28,   82,   24,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,   72,   74,    0,
X  119,    0,    0,    0,   71,    0,    0,    0,    0,    0,
X    0,    0,  156,  157,    2,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X   73,   13,   51,   47,   49,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,  131,  129,    0,  154,    0,    5,  147,
X  145,  146,    0,   17,   25,    0,    0,   26,   27,    0,
X   82,    0,  135,   29,    0,  137,    0,   16,   21,   23,
X  100,    0,  104,    0,    0,  115,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,  120,    0,   59,    0,    0,
X  163,    0,    0,    0,    0,    8,   10,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,  108,    0,   40,   41,   42,
X   43,   44,   45,   18,   12,   19,    0,    0,    0,    0,
X    0,    0,    0,    0,    0,    0,  160,    0,    0,  148,
X    0,  102,    0,    0,    0,    0,  136,  138,   95,    0,
X  105,  106,    0,    0,    0,    0,    0,   86,    0,    0,
X    0,    0,    0,    0,    0,    0,    0,  164,    0,    0,
X  165,    0,    0,    0,    0,    0,    0,    0,  143,  132,
X    0,  155,    0,   99,    0,  103,   93,    0,   96,  107,
X  101,   88,    0,    0,    0,    0,    0,    0,    0,    0,
X  109,    0,  168,  170,  167,  169,   80,  130,    0,    0,
X   52,    0,  161,    0,    0,    0,    0,   83,    0,    0,
X    0,  110,  118,  112,  133,   15,    0,    0,  152,  149,
X  114,    0,    0,    0,    0,  113,   98,  153,
};
short yydgoto[] = {                                      25,
X   58,  215,   59,   60,   86,  246,   82,   27,   28,   29,
X   30,  143,   61,   32,   33,   62,   63,   64,  165,   65,
X   66,   34,  226,  320,  248,  249,   67,   35,   36,   37,
X  181,  182,  261,  228,  229,   38,   39,   40,   41,   91,
X   92,  124,  202,  300,   68,  204,  205,  203,  317,  285,
X  240,   69,  244,  135,   42,
};
short yysindex[] = {                                     35,
X    0,  278,    0, 2243, 2243, 2243,  -26, 2153,    0, 2273,
X    0,    0,    0, -286,    0,    0,    0, -269, -228,    0,
X    0,    0,    0, -255,   35,    0,    0, 2243,  284, 2166,
X 2547, 2243,  116, -257, -161, -246, -159,    0,    0,    0,
X -246,  -63, -124,    0,    0,    0,    0,    0, -157, -151,
X -196, -196, -148, -141, 1729, -196, 1729,    0,  130,    0,
X 2499,  352,  352,   69,  352,    0,    0,    0,  352, 2273,
X -286, -220, -211, -211, -211, -282,    0,    0,    0,    0,
X    0, -232, 2146, 2093,    0,  -96, -132, -122, 2273, 2273,
X -246, -246,    0,    0,    0, -120, 2273, 2273, 2273, 2273,
X 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273,
X    0,    0,    0,    0,    0, -110, 2273, 2273, 2273, 2273,
SHAR_EOF
true || echo 'restore of Xparse.c failed'
fi
echo 'End of  part 2'
echo 'File Xparse.c is continued in part 3'
echo 3 > _shar_seq_.tmp
exit 0

exit 0 # Just in case...
-- 
        Andrew Patrick acting as Comp.Sources.Reviewed Moderator
              Department of Communications, Ottawa, CANADA
                         csr@calvin.dgbt.doc.CA
Technical Details
Message-ID: <1992Oct13.221302.10055@rick.dgbt.doc.ca>
Path: arc1-ca.pugleaf.net!sparky!uunet!paladin.american.edu!darwin.sura.net!convex!news.utdallas.edu!corpgate!bnrgate!nrcnet0!dgbt!rick.dgbt.doc.ca!calvin.dgbt.doc.ca!csr

Show Full Headers
Complete Article Headers
Newsgroups: comp.sources.reviewed
Path: arc1-ca.pugleaf.net!sparky!uunet!paladin.american.edu!darwin.sura.net!convex!news.utdallas.edu!corpgate!bnrgate!nrcnet0!dgbt!rick.dgbt.doc.ca!calvin.dgbt.doc.ca!csr
From: Mike Brennan <brennan@boeing.com>
Subject: v02i029: mawk - (Ver. 1.1) An interpreter for the AWK language, Patch02b/4
Message-ID: <1992Oct13.221302.10055@rick.dgbt.doc.ca>
Originator: csr@calvin.dgbt.doc.ca
Sender: news@rick.dgbt.doc.ca
Nntp-Posting-Host: calvin.dgbt.doc.ca
Organization: Communications Research Centre, Ottawa
Date: Tue, 13 Oct 1992 22:13:02 GMT
Approved: csr@calvin.dgbt.doc.ca
Lines: 2421