home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Source Code 1992 March
/
Source_Code_CD-ROM_Walnut_Creek_March_1992.iso
/
usenet
/
altsrcs
/
4
/
4023
< prev
next >
Wrap
Internet Message Format
|
1991-09-10
|
44KB
Path: wupost!zaphod.mps.ohio-state.edu!rpi!crdgw1!barnett
From: barnett@grymoire.crd.ge.com (Bruce Barnett)
Newsgroups: alt.sources
Subject: Official Ease 3.3 patch 3
Message-ID: <BARNETT.91Sep9131214@grymoire.crd.ge.com>
Date: 9 Sep 91 17:12:14 GMT
Sender: news@crdgw1.crd.ge.com
Reply-To: barnett@crdgw1.ge.com
Distribution: alt
Organization: GE Corp. R & D, Schenectady, NY
Lines: 1515
History:
Ease is a high level language for sendmail .cf files
You can ftp ease from gatekeeper.dec.com
This is the official Patch 3 for Ease.
It converts Ease 3.2 into Ease 3.3
Apply with
patch -p <Patch3
Fixes:
bug with systems compiled without DATA_RW (systems that cannot
write into data segments).
Better cf->ease->cf conversion with $? $| $. constructs,
especially Ying-Da Lee's sample sendmail.cf file
diff -r -c ./CONVERTING ../3.2/CONVERTING
*** ./CONVERTING Mon Sep 9 12:19:42 1991
--- ../3.2/CONVERTING Thu May 16 12:38:45 1991
***************
*** 40,49 ****
CGI IRIS
=> cfc -i -C FKSVN
- smail
-
- => cfc -C DUET
-
Step 2. Convert the ease file to cf:
% et <sendmail.ease >sendmail.cf
--- 40,45 ----
diff -r -c ./Makefile ../3.2/Makefile
*** ./Makefile Mon Sep 9 12:43:20 1991
--- ../3.2/Makefile Thu May 16 12:43:04 1991
***************
*** 1,9 ****
! # $Header: /tmp_mnt/home/kreskin/u0/barnett/Src/Ease/ease/RCS/Makefile,v 3.3 1991/09/09 16:41:11 barnett Exp $
#
# $Log: Makefile,v $
- # Revision 3.3 1991/09/09 16:41:11 barnett
- # added '-' to /bin/rm in "make all"
- #
# Revision 3.2 1991/05/16 10:51:13 barnett
# Fixed a few typos and added the MAKE variable
#
--- 1,6 ----
! # $Header: /home/kreskin/u0/barnett/Src/ease/RCS/Makefile,v 3.2 1991/05/16 10:51:13 barnett Exp $
#
# $Log: Makefile,v $
# Revision 3.2 1991/05/16 10:51:13 barnett
# Fixed a few typos and added the MAKE variable
#
***************
*** 64,70 ****
cd src; ${MAKE} ${MFLAGS} $@
cd cfc; ${MAKE} ${MFLAGS} $@
cd utils; ${MAKE} ${MFLAGS} $@
! -/bin/rm all
debug: all sendmail.ease
--- 61,67 ----
cd src; ${MAKE} ${MFLAGS} $@
cd cfc; ${MAKE} ${MFLAGS} $@
cd utils; ${MAKE} ${MFLAGS} $@
! /bin/rm all
debug: all sendmail.ease
Only in .: Patch3
diff -r -c ./README ../3.2/README
*** ./README Mon Sep 9 12:51:43 1991
--- ../3.2/README Thu May 16 12:38:20 1991
***************
*** 1,5 ****
! This is release 3.3 of the CFC and Ease programs.
Ease is a compiler for sendmail configuration files. It reads a high-level
mail configuration language and produces a sendmail.cf file. If you've ever
stared at a sendmail.cf, you know why this is valuable.
--- 1,7 ----
! README - Tue May 1 14:46:33 PDT 1990
+ This is release 3.2 of the CFC and Ease programs.
+
Ease is a compiler for sendmail configuration files. It reads a high-level
mail configuration language and produces a sendmail.cf file. If you've ever
stared at a sendmail.cf, you know why this is valuable.
***************
*** 31,38 ****
Matt Heffron <heffron@falstaff.css.beckman.com>
William Roberts <liam@cs.qmw.ac.uk>
rainer@flyer.uni-duisburg.de (Rainer Bieniek)
- agq@dstos3.dsto.oz.au (Ashleigh Quick)
-
Cfc was written by Arnold D. Robbins, and has been enhanced by Bruce Barnett
(see below).
--- 33,38 ----
***************
*** 42,58 ****
-----------------------------------------------------------
! Ease 3.3 Release Notes:
! Bruce Barnett <barnett@crdgw1.ge.com>
! July 1991
! I sent some patches to the authors of Ease several years ago, but they never
! released them. I now have their permission to be the current maintainer of
! Ease and cfc. Most of the changes to Ease since 2.0 have been mine, with some generous patches sent in from the people described above.
! The main enhancement I added to Ease 3.0:
I subjected the Cfc/Ease programs to a test suite
that converted *.cf files to ease files, and back again.
I compared the input of cfc (The original .cf file)
--- 42,64 ----
-----------------------------------------------------------
! Ease 3.2 and cfc Release Notes:
! Bruce Barnett barnett@crdgw1.ge.com
! May 1991
! This document describes Ease 3.2. This version was originally a
! modified version of the last official release of ease 2.1. I called it
! 2.1 Beta and sent it to several dozen people. I sent the patches to the authors
! of ease and cfc, but an updated version was never posted to the net.
! The authors have decided to let me post the changes, so I guess I have
! the baton now.
! Since this is a major release, I decided to call it Ease 3.0
! Two updates have been release since then.
+ The main feature of Ease/Cfc 3.2:
+
I subjected the Cfc/Ease programs to a test suite
that converted *.cf files to ease files, and back again.
I compared the input of cfc (The original .cf file)
***************
*** 71,77 ****
langauge and feel confident that you won't break anything.
! Current status of Ease 3.3
It will handle 100% of the standard Ultrix, SunOS, HP, and Berkeley
versions of sendmail (I hope). It handles 99.5% of the IDA
enhancement package. It compiles of dozens of different machines.
--- 77,83 ----
langauge and feel confident that you won't break anything.
! Current status of Ease 3.2
It will handle 100% of the standard Ultrix, SunOS, HP, and Berkeley
versions of sendmail (I hope). It handles 99.5% of the IDA
enhancement package. It compiles of dozens of different machines.
***************
*** 205,219 ****
Release Notes:
- 3.3:
- Support for $? $| $. on LHS
- added warning if $. is missing
- Support for $? after $#
- Fix DATA_RW compile option
- Eliminate warnings about "LOCAL" and "ERROR"
- mailers being undefined. Case doesn't matter.
- but I don't want to convert to lower because the cfdiff
- might complain
3.2:
Added better support for IDA sendmail
Added better support for unusual values in mailer flags, and options
--- 211,216 ----
***************
*** 231,249 ****
Release 3.0:
First release of Bruce's changes to the net in alt.sources
-
-
- NOTE:
-
- on some systems, you will get the warning:
- make: Warning: Infinite loop: Target `lexdefs.h' depends on itself
- This is okay. If the line was removed, Make wouldn't work on other machines.
-
============================================================================
If you find these programs useful, or if you have suggestions or changes,
please drop me a line. I would really appreciate any patches to this
! package. I will merge any patches and release new versions, as they
are sent to me.
Bruce Barnett
--- 228,239 ----
Release 3.0:
First release of Bruce's changes to the net in alt.sources
============================================================================
If you find these programs useful, or if you have suggestions or changes,
please drop me a line. I would really appreciate any patches to this
! package, as I don't plan any major upgrade to support all of the IDA
! extensions. I will merge any patches and release new versions, as they
are sent to me.
Bruce Barnett
diff -r -c ./TODO ../3.2/TODO
*** ./TODO Fri Sep 6 15:02:32 1991
--- ../3.2/TODO Thu May 16 12:38:28 1991
***************
*** 3,51 ****
Keyed databases definitions (OKP/usr/lib/aliases) should not need an asm()
! Fix the following constructs so that cfc/et handles the conversion properly:
HReceived: from $?s$s$|localhost$. by $w$?r with $r$.
id $i; $b; sendmail $v/$V
(from $f for $u)
! DMroot
! T$M
- Eliminate the concat() construct, if possible.
-
check for if (exactly_one) next($2); type error.
check for matching < and > in rulesets
Check for mailers "local" and "prog"
-
- Add the new IDA/sendmail macro $m
-
- A new macro, $m, has been defined. For single recipients in
- a local mail delivery, it's value is the original address before
- aliasing. If all recipients for the current transaction derive
- from a single original recipient, use that for $m. Else make
- $m undefined (to preserve Bcc: privacy).
-
- The Received header now has 'for $m' in place of 'for $u'. The
- new code release supports $m as the recipient prior to aliasing.
- This will not cause any problems with earlier code releases, except
- that the 'for user' will no appear on the header unless you change
- this back to $u.
-
-
- Add the IDA Os option:
-
- If Os (SuperSafe) is set in the sendmail.cf file, files in the spool
- area will either be open()ed with O_SYNC set or fsync()ed prior
- to close.
-
- IDA:
- Simon J Gerraty (sjg@melb.bull.oz.au) contributed patch for SUN's
- $%x and $!x features ($!x added as $^x).
-
- * delayed macro evaluation using $&x syntax
- * RFC822 quoted macro expansion using $!x syntax
-
CFC improvements
Make it a real two-pass parser. This way, it can
--- 3,22 ----
Keyed databases definitions (OKP/usr/lib/aliases) should not need an asm()
! Ignore case when checking for mailer names existance
! (local vs. LOCAL)
+ Fix the following construct so that cfc/et handles the conversion properly:
+
HReceived: from $?s$s$|localhost$. by $w$?r with $r$.
id $i; $b; sendmail $v/$V
(from $f for $u)
! Eliminate the concat() construct.
check for if (exactly_one) next($2); type error.
check for matching < and > in rulesets
Check for mailers "local" and "prog"
CFC improvements
Make it a real two-pass parser. This way, it can
Common subdirectories: ./cfc and ../3.2/cfc
Common subdirectories: ./debug and ../3.2/debug
Common subdirectories: ./doc and ../3.2/doc
Common subdirectories: ./src and ../3.2/src
Common subdirectories: ./test and ../3.2/test
Common subdirectories: ./utils and ../3.2/utils
diff -r -c ./cfc/cfc.c ../3.2/cfc/cfc.c
*** ./cfc/cfc.c Mon Sep 9 12:44:10 1991
--- ../3.2/cfc/cfc.c Thu May 16 12:43:01 1991
***************
*** 1,12 ****
#ifndef lint
! static char RCSid[] = "$Header: /tmp_mnt/home/kreskin/u0/barnett/Src/Ease/ease/cfc/RCS/cfc.c,v 3.3 1991/09/09 16:34:44 barnett Exp $";
#endif
/*
* $Log: cfc.c,v $
- * Revision 3.3 1991/09/09 16:34:44 barnett
- * Bug fixes. Better handling of those $? conditionals.
- *
* Revision 3.2 1991/05/16 10:49:33 barnett
* Support for IDA databases
* More tolerant handling of unusual conditions
--- 1,9 ----
#ifndef lint
! static char RCSid[] = "$Header: /home/kreskin/u0/barnett/Src/ease/cfc/RCS/cfc.c,v 3.2 1991/05/16 10:49:33 barnett Exp $";
#endif
/*
* $Log: cfc.c,v $
* Revision 3.2 1991/05/16 10:49:33 barnett
* Support for IDA databases
* More tolerant handling of unusual conditions
***************
*** 141,147 ****
"warning: ignoring non-flag command line arguments\n");
printf ("/***********************************************************/\n");
! printf ("/* This ease file generated by cfc version $Revision: 3.3 $*/\n");
printf ("/* automatically from a sendmail.cf file */\n");
printf ("/* It may need to be edited before feeding to ease. */\n");
printf ("/***********************************************************/\n");
--- 138,144 ----
"warning: ignoring non-flag command line arguments\n");
printf ("/***********************************************************/\n");
! printf ("/* This ease file generated by cfc version $Revision: 3.2 $*/\n");
printf ("/* automatically from a sendmail.cf file */\n");
printf ("/* It may need to be edited before feeding to ease. */\n");
printf ("/***********************************************************/\n");
***************
*** 429,444 ****
conditional++;ifset++;
break;
case '|':
! if ( ! conditional) complain("in left hand side of rule, found a '$|' without a previous '$?'");
if ( ifset) {
! /* I don't think I have to output a ", " */
! /* but let's test */
! if ( quoting )
! printf("\", \"");
! else
! printf(", ");
} else {
! complain("in left hand side of rule, found a '$|' without a previous '$?'");
putchar (',');
}
break;
--- 426,436 ----
conditional++;ifset++;
break;
case '|':
! if ( ! conditional) die("lhs - $| without $?");
if ( ifset) {
! printf("\", \"");
} else {
! fprintf(stderr,"Got $| when not in ifset\n");
putchar (',');
}
break;
***************
*** 508,519 ****
putchar ('"');
while (open--)
putchar (')');
! if (conditional) {
! /* the lhs was missing a $. - let's add one automatically */
! complain ("Expected '$.' on left hand side of rule - adding one anyway");
! putchar (')');
! conditional--;ifset--;
! }
printf (")");
}
--- 500,507 ----
putchar ('"');
while (open--)
putchar (')');
! if (conditional)
! die ("lhs");
printf (")");
}
***************
*** 610,620 ****
quoting++;
break;
case '|':
! if ( ! conditional) complain("right side of rule - found '$|' without '$?'");
if ( ifset) {
printf("\", \"");
} else {
! complain("right side of rule - found '$|' without '$?'");
putchar (',');
}
break;
--- 598,608 ----
quoting++;
break;
case '|':
! if ( ! conditional) die("rhs - $| without $?");
if ( ifset) {
printf("\", \"");
} else {
! fprintf(stderr,"Got $| when not in ifset\n");
putchar (',');
}
break;
***************
*** 622,628 ****
if (ifset && quoting ) {
putchar('"'); quoting--;
}
! if (! ifset ) complain("right side of rule - found '$.' without '$?'");
putchar (')');
if (open) {
putchar(')');
--- 610,616 ----
if (ifset && quoting ) {
putchar('"'); quoting--;
}
! if (! ifset ) fprintf(stderr,"Got $. while not in ifset\n");
putchar (')');
if (open) {
putchar(')');
***************
*** 704,710 ****
printf ("${%s}", macro (*cp));
else
printf ("$%s", macro (*cp));
! } else { /* not in ifset() */
if (quoting)
printf ("${%s}", macro (*cp));
else
--- 692,698 ----
printf ("${%s}", macro (*cp));
else
printf ("$%s", macro (*cp));
! } else { /* not not in ifset() */
if (quoting)
printf ("${%s}", macro (*cp));
else
***************
*** 760,770 ****
{
int quoting = 0;
int open = 0;
- int ifset = 0;
char *addrops;
addrops = ".:;%@!=/[]?#^,<>$"; /* should be defined from input file */
printf ("resolve (mailer (");
! /* this is a simple (idiotic) parser (hack) that scans the right
hand side of a $# rule
The format is usually
"$# mailer $@ host $: user" or
--- 748,764 ----
{
int quoting = 0;
int open = 0;
char *addrops;
addrops = ".:;%@!=/[]?#^,<>$"; /* should be defined from input file */
printf ("resolve (mailer (");
! /* if (strncmp (cp+1, "local", 5) == 0
! || strncmp (cp+1, "error", 5) == 0
! || strncmp (cp+1, "LOCAL", 5) == 0
! || strncmp (cp+1, "ERROR", 5) == 0)
! goto skiphost;
! loop1:
! */
! /* this is a simple parser that scans the right
hand side of a $# rule
The format is usually
"$# mailer $@ host $: user" or
***************
*** 783,789 ****
*/
/* pointing to '#' */
cp++;
- while( *cp == ' ') cp++; /* skip blanks */
/* output any character not a '$' */
while (cp && *cp && *cp != '$' ) {
/* skip spaces in the mailer field */
--- 777,782 ----
***************
*** 790,797 ****
if ( *cp != ' ' ) putchar(*cp);
cp++;
}
- parsehost:
- while (cp && *cp && *cp == ' ') cp++; /* advance to non-blank */
if (!cp || !*cp ) goto out;
/* currently pointing to a "$" */
/* we may now be pointing to:
--- 783,788 ----
***************
*** 800,832 ****
or a macro
or nothing?! (*cp == 0);
/* don't look at the '$' */
! if (*cp == '$') {
! cp++; /* skip past $, expect a '@' */
! } else {
! fprintf(stderr,
! "Error: found %c when expecting a '$' on line %d\n",
! *cp,line);
! }
if (!cp || !*cp ) goto out;
if (*cp == ':') goto parseuser;
- if (*cp == '?' ) { /* handle $#$?G$@....$:...$|$@...$:...$. */
- cp++;
- printf ("), ifset (%s,\n\t\t\t\t(", macro (*cp++));
- ifset++;
- while (cp && *cp && *cp == ' ') cp++; /* advance to non-blank */
- if ( *cp == '$') {
- cp++;
- } else {
- fprintf(stderr,
- "Error: found %c when expecting a '$' on line %d\n",
- *cp,line);
- }
- }
if (*cp != '@' ) {
/* must be a macro name */
printf ("$%s",macro(*cp++));
/* now skip to the $@ */
! /* if (!cp || !*cp ) goto out; */
while (cp && *cp && *cp == ' ') cp++;
if (!cp || !*cp ) goto out;
if (*cp == '$') cp++;
--- 791,804 ----
or a macro
or nothing?! (*cp == 0);
/* don't look at the '$' */
! cp++;
if (!cp || !*cp ) goto out;
if (*cp == ':') goto parseuser;
if (*cp != '@' ) {
/* must be a macro name */
printf ("$%s",macro(*cp++));
/* now skip to the $@ */
! if (!cp || !*cp ) goto out;
while (cp && *cp && *cp == ' ') cp++;
if (!cp || !*cp ) goto out;
if (*cp == '$') cp++;
***************
*** 845,854 ****
cp++;
}
/* print host name ($@host ) */
! if (ifset)
! printf (" host (");
! else
! printf ("),\n\t\t\t\thost (");
for (;cp && *cp;cp++) {
if (*cp != '$') {
putchar (*cp);
--- 817,823 ----
cp++;
}
/* print host name ($@host ) */
! printf ("),\n\t\t\t\thost (");
for (;cp && *cp;cp++) {
if (*cp != '$') {
putchar (*cp);
***************
*** 905,911 ****
} else { /* not quoting */
if ( *cp == '$' ) {
cp++;
- /* Could be $|, or $>, or $macro */
if (*cp == '>' ) { /* IDA sendmail */
cp++;
printf("retry (RULESET_");
--- 874,879 ----
***************
*** 912,941 ****
while (cp && *cp && *cp >= '0' && *cp <= '9') putchar(*cp++);
printf("("); open++;
open++;
- } else if ( *cp == '|') {
- /* This is the middle of an ifset */
- if ( ! ifset ) {
- fprintf(stderr,
- "Found a '$|' in the user address without a '$?' on line %d\n",
- *cp,line);
- cp++; /* ignore */
- } else { /* I expected this */
- printf(")),\n\t\t\t\t(");
- cp++;
- goto parsehost;
- }
- } else if ( *cp == '.') {
- /* This is the END of an ifset */
- if ( ! ifset ) {
- fprintf(stderr,
- "Found a '$.' in the user address without a '$?' on line %d\n",
- *cp,line);
- cp++; /* ignore */
- } else { /* I expected this */
- /* cp++; */ /* Don't do this, the for loop increments cp */
- printf("))");
- ifset = 0;
- }
} else {
putchar ('$'); /* print $ */
printf("%s",macro(*cp)); /* and macro */
--- 880,885 ----
***************
*** 952,963 ****
}
if (quoting) printf("\"");
out:
- if (ifset) {
- fprintf(stderr,
- "EOL while expecting '$.' on line %d\n",
- line);
- ifset = 0;
- }
while (open--) printf(")");
printf ("))");
} /* end parseresolve () */
--- 896,901 ----
***************
*** 1037,1043 ****
if ( ifset) {
printf("\", \"");
} else {
! complain("Got $| when not in ifset\n");
putchar (',');
}
break;
--- 975,981 ----
if ( ifset) {
printf("\", \"");
} else {
! fprintf(stderr,"Got $| when not in ifset\n");
putchar (',');
}
break;
***************
*** 1313,1323 ****
register char *cp = buffer + 1;
register int flags = 0;
register int conditional = 0;
! register int concat = 0; /* true if in a concat( */
! register int needcomma = 0; /* true if a concat is needed */
register int quote = 0;
! register int ifset = 0; /* true if in a ifset
! (may be inside a concat) */
printf ("header\n\t");
if (*cp == '?') /* header for mailers with these flags */
--- 1251,1259 ----
register char *cp = buffer + 1;
register int flags = 0;
register int conditional = 0;
! register int concat = 0;
register int quote = 0;
! register int ifset = 0;
printf ("header\n\t");
if (*cp == '?') /* header for mailers with these flags */
***************
*** 1345,1354 ****
else if (cp && ! *cp ) printf("\", \"\"");
else if (!cp) {
printf("\"");
! complain("I didn't expect this!\n");
}
! quote = concat = conditional = ifset = needcomma = 0;
body:
while (cp && *cp)
{
--- 1281,1290 ----
else if (cp && ! *cp ) printf("\", \"\"");
else if (!cp) {
printf("\"");
! fprintf(stderr,"I didn't expect this!\n");
}
! quote = concat = conditional = ifset = 0;
body:
while (cp && *cp)
{
***************
*** 1356,1425 ****
case '$':
switch (*++cp) {
case '?':
- /* if we are in the middle of a quote, end it */
- if (quote) {
- printf("\"");quote--;needcomma=1;
- }
/* if we are not in a concat, then start one */
if ( ! concat ) {
- if (needcomma) printf(", ");
printf("concat (");
! concat++;needcomma=0;
! } else { /* we are in a concat */
! if ( ifset ) { /* if in ifset(..) terminate */
! printf("), concat (");
! ifset--;needcomma=0;
! } else {
! /* otherwise - don't terminate the concat */
! /* but add a comma to seperate the fields */
! /* what do do if concat(X, */
! /* if so, then don't put the comma */
! /* instead - check needcomma */
! /* printf(", "); */
}
}
! if ( ifset ) {
! complain("found '$?' before terminating previous '$?' with a '$.'");
}
- if (needcomma) {
- printf(", ");
- needcomma=0;
- }
printf ("ifset (%s, \"", macro (*++cp));
conditional++; quote++;ifset++;
break;
case '|':
! if (quote) {
! putchar('"');quote--;
! }
! if ( ! conditional) complain("header - $| without $?");
! if ( ifset) {
! printf(", "); needcomma=0;
! } else {
! complain("Got '$|' without matching '$?'");
! putchar (','); needcomma=0;
! }
break;
case '.':
if (quote) {
putchar('"');quote--;
}
- if (!ifset ) {
- complain("found '$.' without matching '$?'");
- }
putchar (')');
conditional--;ifset--;
if (concat) {
/* this is messy - There may be more than one $? on a line */
- /* and the line may continue on to the next line. */
! if (*(cp+1)) { /* if there is more on the line */
! putchar(')');concat--;
! printf(", ");needcomma=0;
! } else {
! /* may need to print a comma - delay decision */
! /* see continuation line handler */
! putchar(')');concat--;needcomma=1;
}
}
break;
--- 1292,1333 ----
case '$':
switch (*++cp) {
case '?':
/* if we are not in a concat, then start one */
if ( ! concat ) {
printf("concat (");
! concat++;
! } else { /* we are in one */
! if (quote) {
! printf("\"");quote--;
}
+ printf("), concat (");
}
! if (quote) {
! printf("\",");quote--;
}
printf ("ifset (%s, \"", macro (*++cp));
conditional++; quote++;ifset++;
break;
case '|':
! if ( ! conditional) die("header - $| without $?");
! if ( ifset) {
! printf("\", \"");
! } else {
! fprintf(stderr,"Got $| when not in ifset\n");
! putchar (',');
! }
break;
case '.':
if (quote) {
putchar('"');quote--;
}
putchar (')');
conditional--;ifset--;
if (concat) {
/* this is messy - There may be more than one $? on a line */
! if (cp+1) { /* if there is more on the line */
! printf(", ");
}
}
break;
***************
*** 1428,1439 ****
if (!concat && (strlen(cp)>2)
&& (*(cp+1) == '$')
&& (*(cp+2) == '?')) {
- if ( quote) {
- printf("\", ");
- quote--;needcomma=0;
- }
printf ("concat (\"${%s}\", ", macro (*cp));
! /* I'm in a concat */
concat++;
} else {
if (!quote) {
--- 1336,1343 ----
if (!concat && (strlen(cp)>2)
&& (*(cp+1) == '$')
&& (*(cp+2) == '?')) {
printf ("concat (\"${%s}\", ", macro (*cp));
! /* I'm gonna need a concat */
concat++;
} else {
if (!quote) {
***************
*** 1466,1479 ****
line++;
if (buffer[0] == '\t')
{
- if ( concat ) {
- printf("), ");needcomma=0;
- concat--;
- }
- if (needcomma) {
- printf(", ");
- needcomma=0;
- }
if ( ! quote ) {
putchar('"');
quote++;
--- 1370,1375 ----
***************
*** 1584,1597 ****
routine, line);
exit (1);
}
- complain (problem)
- char *problem;
- {
- fprintf (stderr, "Warning: malformed input line %d: %s\n",
- line, problem);
- fflush(stderr);
- fflush(stdout);
- }
/* macro --- return name for sendmail predefined macro */
--- 1480,1485 ----
***************
*** 1684,1697 ****
case 'z': /* The home directory of the recipient */
return ("m_rhdir");
! case '"': /* you can get a quote character in some macro definitions */
return ("\\\"");
default:
- if (!(isalpha(c) || isdigit(c))) /* if not a digit or letter */
- fprintf (stderr,
- "warning: expected letter as macro definition, found '%c' on line %d\n",
- c, line);
-
buf[0] = c;
return (buf);
}
--- 1572,1580 ----
case 'z': /* The home directory of the recipient */
return ("m_rhdir");
! case '"': /* you can get a quote charater in some macro definitions */
return ("\\\"");
default:
buf[0] = c;
return (buf);
}
diff -r -c ./doc/Makefile ../3.2/doc/Makefile
*** ./doc/Makefile Thu Jun 27 10:48:17 1991
--- ../3.2/doc/Makefile Thu May 16 12:38:22 1991
***************
*** 45,51 ****
install:
install -c ease.man $(MANDEST)/ease.${EXT}
install -c et.man $(MANDEST)/et.${EXT}
! install -c cfc.man $(MANDEST)/cfc.${EXT}
printman: ease.man et.man cfc.man
${ROFF} -man ease.man
--- 45,51 ----
install:
install -c ease.man $(MANDEST)/ease.${EXT}
install -c et.man $(MANDEST)/et.${EXT}
! install -c cfc.man $(MANDEST)/cdc.${EXT}
printman: ease.man et.man cfc.man
${ROFF} -man ease.man
diff -r -c ./doc/ap2 ../3.2/doc/ap2
*** ./doc/ap2 Mon Sep 9 12:44:53 1991
--- ../3.2/doc/ap2 Thu May 16 12:38:24 1991
***************
*** 1,10 ****
...
! ... $Header: /tmp_mnt/home/kreskin/u0/barnett/Src/Ease/ease/doc/RCS/ap2,v 3.3 1991/09/09 16:36:05 barnett Exp $
...
... $Log: ap2,v $
- ... Revision 3.3 1991/09/09 16:36:05 barnett
- ... minor bug fixes
- ...
... Revision 2.1 1990/01/30 12:57:42 jeff
... Made changes corresponding to Ease release 2.1Alpha.
... se.
--- 1,7 ----
...
! ... $Header: /home/kreskin/u0/barnett/Src/ease/doc/RCS/ap2,v 2.1 1990/01/30 12:57:42 jeff Exp barnett $
...
... $Log: ap2,v $
... Revision 2.1 1990/01/30 12:57:42 jeff
... Made changes corresponding to Ease release 2.1Alpha.
... se.
diff -r -c ./doc/cfc.man ../3.2/doc/cfc.man
*** ./doc/cfc.man Mon Sep 9 12:44:51 1991
--- ../3.2/doc/cfc.man Thu May 16 12:38:23 1991
***************
*** 1,10 ****
...
! ... $Header: /tmp_mnt/home/kreskin/u0/barnett/Src/Ease/ease/doc/RCS/cfc.man,v 3.3 1991/09/09 16:36:05 barnett Exp $
...
... $Log: cfc.man,v $
- ... Revision 3.3 1991/09/09 16:36:05 barnett
- ... minor bug fixes
- ...
... Revision 1.2 1990/04/04 15:42:51 jeff
... Reformatted somewhat for readability. Added some bugs
... described by Bruce Barnett.
--- 1,7 ----
...
! ... $Header: /home/kreskin/u0/barnett/Src/Ease/ease/doc/RCS/cfc.man,v 1.2 1990/04/04 15:42:51 jeff Exp barnett $
...
... $Log: cfc.man,v $
... Revision 1.2 1990/04/04 15:42:51 jeff
... Reformatted somewhat for readability. Added some bugs
... described by Bruce Barnett.
diff -r -c ./doc/cover ../3.2/doc/cover
*** ./doc/cover Mon Sep 9 12:44:51 1991
--- ../3.2/doc/cover Thu May 16 12:38:25 1991
***************
*** 1,10 ****
...
! ... $Header: /tmp_mnt/home/kreskin/u0/barnett/Src/Ease/ease/doc/RCS/cover,v 3.3 1991/09/09 16:36:05 barnett Exp $
...
... $Log: cover,v $
- ... Revision 3.3 1991/09/09 16:36:05 barnett
- ... minor bug fixes
- ...
... Revision 2.0 1990/01/30 12:50:41 jeff
... Baseline version, corresponding to netwide release 2.0.
...
--- 1,7 ----
...
! ... $Header: /home/kreskin/u0/barnett/Src/Ease/ease/doc/RCS/cover,v 2.0 1990/01/30 12:50:41 jeff Exp barnett $
...
... $Log: cover,v $
... Revision 2.0 1990/01/30 12:50:41 jeff
... Baseline version, corresponding to netwide release 2.0.
...
diff -r -c ./doc/ease.paper ../3.2/doc/ease.paper
*** ./doc/ease.paper Mon Sep 9 12:44:52 1991
--- ../3.2/doc/ease.paper Thu May 16 12:38:27 1991
***************
*** 1,10 ****
...
! ... $Header: /tmp_mnt/home/kreskin/u0/barnett/Src/Ease/ease/doc/RCS/ease.paper,v 3.3 1991/09/09 16:36:05 barnett Exp $
...
... $Log: ease.paper,v $
- ... Revision 3.3 1991/09/09 16:36:05 barnett
- ... minor bug fixes
- ...
... Revision 2.0 1990/01/30 12:50:44 jeff
... Baseline version, corresponding to netwide release 2.0.
...
--- 1,7 ----
...
! ... $Header: /home/kreskin/u0/barnett/Src/Ease/ease/doc/RCS/ease.paper,v 2.0 1990/01/30 12:50:44 jeff Exp barnett $
...
... $Log: ease.paper,v $
... Revision 2.0 1990/01/30 12:50:44 jeff
... Baseline version, corresponding to netwide release 2.0.
...
diff -r -c ./src/Makefile ../3.2/src/Makefile
*** ./src/Makefile Mon Sep 9 12:44:34 1991
--- ../3.2/src/Makefile Thu May 16 12:43:14 1991
***************
*** 1,11 ****
# Makefile for Ease Translator (et).
#
! # $Header: /tmp_mnt/home/kreskin/u0/barnett/Src/Ease/ease/src/RCS/Makefile,v 3.3 1991/09/09 16:33:23 barnett Exp $
#
# $Log: Makefile,v $
- # Revision 3.3 1991/09/09 16:33:23 barnett
- # Minor bug fix release
- #
# Revision 3.2 1991/05/16 10:45:25 barnett
# Better support for System V machines
# Support for machines with read only text segments
--- 1,8 ----
# Makefile for Ease Translator (et).
#
! # $Header: /home/kreskin/u0/barnett/Src/ease/src/RCS/Makefile,v 3.2 1991/05/16 10:45:25 barnett Exp $
#
# $Log: Makefile,v $
# Revision 3.2 1991/05/16 10:45:25 barnett
# Better support for System V machines
# Support for machines with read only text segments
***************
*** 43,49 ****
# - A sun 3/60 using gcc
# - A esix SysV PC with gcc
# - A HP9000/845 with cc
- # - Apollo/Domain with BSD4.3 environment
# The default is to define it, because this is what earlier versions
# of Ease did.
#
--- 40,45 ----
***************
*** 56,62 ****
DEFS = ${OFLAGS}
LIBS = -ll
- # some people must remove the -O
CFLAGS = -O ${DEFS} ${INCLUDE}
CC = cc
#CC = gcc
--- 52,57 ----
***************
*** 74,83 ****
# Special Debug flags
# select this one to debug the grammar
#DEFS =-DYYDEBUG
! # The following two lines are used with the SunOS malloc() debug package.
#DEFS = -DMALLOC_DEBUG # Part of the SunOS malloc package
#LIBS = /usr/lib/debug/malloc.o -ll
! CFLAGS = -g ${DEFS} ${INCLUDE}
HDR = symtab.h
--- 69,78 ----
# Special Debug flags
# select this one to debug the grammar
#DEFS =-DYYDEBUG
! # The following are used with the SunOS malloc() debug package.
#DEFS = -DMALLOC_DEBUG # Part of the SunOS malloc package
#LIBS = /usr/lib/debug/malloc.o -ll
! #CFLAGS = -g ${DEFS} ${INCLUDE}
HDR = symtab.h
diff -r -c ./src/errors.c ../3.2/src/errors.c
*** ./src/errors.c Mon Sep 9 12:44:35 1991
--- ../3.2/src/errors.c Thu May 16 12:43:16 1991
***************
*** 1,6 ****
#ifdef FLUKE
# ifndef LINT
! static char RCSid[] = "@(#)FLUKE $Header: /tmp_mnt/home/kreskin/u0/barnett/Src/Ease/ease/src/RCS/errors.c,v 2.3 1991/09/09 16:33:23 barnett Exp $";
# endif LINT
#endif FLUKE
--- 1,6 ----
#ifdef FLUKE
# ifndef LINT
! static char RCSid[] = "@(#)FLUKE $Header: /home/kreskin/u0/barnett/Src/ease/src/RCS/errors.c,v 2.2 1991/05/16 10:45:25 barnett Exp $";
# endif LINT
#endif FLUKE
***************
*** 17,25 ****
* All rights reserved.
*
* $Log: errors.c,v $
- * Revision 2.3 1991/09/09 16:33:23 barnett
- * Minor bug fix release
- *
* Revision 2.2 1991/05/16 10:45:25 barnett
* Better support for System V machines
* Support for machines with read only text segments
--- 17,22 ----
***************
*** 91,98 ****
if (colon)
fputs(": ",DIAGf);
fflush(DIAGf);
- fflush(stdout);
- fflush(stderr); /* just to make sure */
}
--- 88,93 ----
diff -r -c ./src/idman.c ../3.2/src/idman.c
*** ./src/idman.c Fri Sep 6 14:20:15 1991
--- ../3.2/src/idman.c Thu May 16 12:38:31 1991
***************
*** 1,6 ****
#ifdef FLUKE
# ifndef LINT
! static char RCSid[] = "@(#)FLUKE $Header: /home/kreskin/u0/barnett/Src/Ease/ease/src/RCS/idman.c,v 3.1 1991/02/25 22:09:52 barnett Exp barnett $";
# endif LINT
#endif FLUKE
--- 1,6 ----
#ifdef FLUKE
# ifndef LINT
! static char RCSid[] = "@(#)FLUKE $Header: /home/kreskin/u0/barnett/Src/Ease/ease/src/RCS/idman.c,v 3.1 1991/02/25 22:09:52 barnett Exp $";
# endif LINT
#endif FLUKE
diff -r -c ./src/parser.y ../3.2/src/parser.y
*** ./src/parser.y Mon Sep 9 12:44:40 1991
--- ../3.2/src/parser.y Thu May 16 12:43:15 1991
***************
*** 1,7 ****
%{
#ifdef FLUKE
# ifndef LINT
! static char RCSid[] = "@(#)FLUKE $Header: /tmp_mnt/home/kreskin/u0/barnett/Src/Ease/ease/src/RCS/parser.y,v 3.3 1991/09/09 16:33:23 barnett Exp $";
# endif LINT
#endif FLUKE
--- 1,7 ----
%{
#ifdef FLUKE
# ifndef LINT
! static char RCSid[] = "@(#)FLUKE $Header: /home/kreskin/u0/barnett/Src/ease/src/RCS/parser.y,v 3.2 1991/05/16 10:45:25 barnett Exp $";
# endif LINT
#endif FLUKE
***************
*** 22,30 ****
* All rights reserved.
*
* $Log: parser.y,v $
- * Revision 3.3 1991/09/09 16:33:23 barnett
- * Minor bug fix release
- *
* Revision 3.2 1991/05/16 10:45:25 barnett
* Better support for System V machines
* Support for machines with read only text segments
--- 22,27 ----
***************
*** 72,77 ****
--- 69,75 ----
extern void FatalError ();
extern short RMatch; /* ruleset match flag */
+ extern char *strdup();
#ifdef DATA_RW
char *Cbuf = " "; /* character buffer */
char *Mbuf = "$ "; /* macro buffer */
***************
*** 78,84 ****
#else
char *Cbuf = NULL;
char *Mbuf = NULL;
- extern char *Strdup();
#endif
char *Tsb; /* pointer to temporary string buffer */
char *Tsb1; /* pointer to another temporary string buffer */
--- 76,81 ----
***************
*** 91,97 ****
#ifndef DATA_RW
void InitParser()
{
! if(!(Cbuf = Strdup(" ")) || !(Mbuf = Strdup("$ ")))
FatalError("Out of memory in InitParser()", (char *)NULL);
}
#endif
--- 88,94 ----
#ifndef DATA_RW
void InitParser()
{
! if(!(Cbuf = strdup(" ")) || !(Mbuf = strdup("$ ")))
FatalError("Out of memory in InitParser()", (char *)NULL);
}
#endif
***************
*** 107,113 ****
fprintf(stderr,"Free() returned an error\n");
}
}
- fflush(stderr);
};
static char *
yydisplay(ch)
--- 104,109 ----
***************
*** 162,168 ****
if (yydebug)
printf("[yydebug] reading %s\n",
yydisplay(yychar));
- fflush(stdout);
#endif
return yychar;
}
--- 158,163 ----
***************
*** 218,227 ****
%type <optval> optid
%type <flgval> flagid
%type <mpval> mvar
- %type <psb> ifresmatch elseresmatch ifresroute elseresroute
- /* needed special class with no comma's allowed */
- %type <ival> anycharbutcomma
- %type <psb> matchaddrnocomma matchtoknocomma
%left COMMA
%left LPAREN RPAREN
--- 213,218 ----
***************
*** 849,867 ****
}
;
- /* just like matchaddr - but comma's aren't allowed */
- matchaddrnocomma : /* empty */ {
- $$ = NULL;
- }
- | matchaddrnocomma matchtoknocomma {
- $$ = ListAppend ($1, $2, (char *) NULL);
- Free ($1); /* NULL */
- }
- | error {
- $$ = NULL;
- }
- ;
-
matchtok : IDENT {
$$ = GetField ($1);
}
--- 840,845 ----
***************
*** 886,945 ****
| RESOLVED LPAREN matchtok RPAREN {
$$ = ListAppend("$#",$3,(char *) NULL);
}
- | IFSET LPAREN IDENT COMMA ifresmatch RPAREN {
- $$ = MakeCond ($3, MacScan($5));
- }
;
- /* the next one is just like matchtok - but you can't have a comma in it */
- matchtoknocomma : IDENT {
- $$ = GetField ($1);
- }
- | anycharbutcomma {
- *Cbuf = $1;
- $$ = ListAppend (Cbuf, (char *) NULL, (char *) NULL);
- }
- | mval {
- $$ = MacScan ($1);
- }
- | DOLLAR IDENT {
- Mbuf[1] = MakeMac ($2, ID_MACRO);
- $$ = ListAppend (Mbuf, (char *) NULL, (char *) NULL);
- }
- | YPALIAS LPAREN matchtok RPAREN {
- $$ = ListAppend("${",$3,(char *) NULL);
- /* Free ($3); */
- }
- | YPPASSWD LPAREN matchtok RPAREN {
- $$ = ListAppend("$\"",$3,(char *) NULL);
- }
- | RESOLVED LPAREN matchtok RPAREN {
- $$ = ListAppend("$#",$3,(char *) NULL);
- }
- | IFSET LPAREN IDENT COMMA ifresmatch RPAREN {
- $$ = MakeCond ($3, MacScan($5));
- }
- ;
-
- ifresmatch : matchaddrnocomma elseresmatch {
- if ($2 != NULL) {
- $$ = ListAppend ($1, $2, "$|");
- Free ($1);
- Free ($2);
- } else
- $$ = $1;
- }
- | error {
- $$ = NULL;
- }
- ;
-
- elseresmatch :
- COMMA matchaddrnocomma {
- $$ = $2;
- }
- ;
-
actionstmt : action LPAREN rwaddr RPAREN SEMI {
$$ = ListAppend ($1, $3, (char *) NULL);
Free ($3);
--- 864,871 ----
***************
*** 1160,1180 ****
}
;
!
! /* because of ifset, we have to treat comma's special
! otherwise ifset(a,b,c) might be ambiguous if
! c is an address with a comma in it.
! */
! anychar : anycharbutcomma {
! $$ = $1;
! }
! | COMMA {
! $$ = ',';
! }
!
! ;
!
! anycharbutcomma : SEPCHAR {
$$ = $1;
}
| COLON {
--- 1086,1092 ----
}
;
! anychar : SEPCHAR {
$$ = $1;
}
| COLON {
***************
*** 1192,1197 ****
--- 1104,1112 ----
| RBRACE {
$$ = '}';
}
+ | COMMA {
+ $$ = ',';
+ }
| SLASH {
$$ = '/';
}
***************
*** 1228,1255 ****
}
| userspec {
$$ = $1;
- }
- | IFSET LPAREN IDENT COMMA ifresroute RPAREN {
- $$ = MakeCond ($3, MacScan($5));
- }
- ;
-
- ifresroute : LPAREN route RPAREN elseresroute {
- if ($4 != NULL) {
- $$ = ListAppend ($2, $4, "$|");
- Free ($2);
- Free ($4);
- } else
- $$ = $2;
- }
- | error {
- $$ = NULL;
- }
- ;
-
- elseresroute :
- COMMA LPAREN route RPAREN {
- $$ = $3;
}
;
--- 1143,1148 ----
diff -r -c ./src/strops.c ../3.2/src/strops.c
*** ./src/strops.c Mon Sep 9 12:44:40 1991
--- ../3.2/src/strops.c Thu May 16 12:43:21 1991
***************
*** 1,6 ****
#ifdef FLUKE
# ifndef LINT
! static char RCSid[] = "@(#)FLUKE $Header: /tmp_mnt/home/kreskin/u0/barnett/Src/Ease/ease/src/RCS/strops.c,v 3.3 1991/09/09 16:33:23 barnett Exp $";
# endif LINT
#endif FLUKE
--- 1,6 ----
#ifdef FLUKE
# ifndef LINT
! static char RCSid[] = "@(#)FLUKE $Header: /home/kreskin/u0/barnett/Src/ease/src/RCS/strops.c,v 3.2 1991/05/16 10:45:25 barnett Exp $";
# endif LINT
#endif FLUKE
***************
*** 18,26 ****
* All rights reserved.
*
* $Log: strops.c,v $
- * Revision 3.3 1991/09/09 16:33:23 barnett
- * Minor bug fix release
- *
* Revision 3.2 1991/05/16 10:45:25 barnett
* Better support for System V machines
* Support for machines with read only text segments
--- 18,23 ----
***************
*** 93,99 ****
char *string;
{
char *s;
! s=malloc(strlen(string));
if (!s) return (nil);
(void) sprintf(s,"%s",string);
return (s);
--- 90,96 ----
char *string;
{
char *s;
! s=malloc(length(string));
if (!s) return (nil);
(void) sprintf(s,"%s",string);
return (s);
diff -r -c ./src/symtab.c ../3.2/src/symtab.c
*** ./src/symtab.c Mon Sep 9 12:44:41 1991
--- ../3.2/src/symtab.c Thu May 16 12:38:33 1991
***************
*** 1,6 ****
#ifdef FLUKE
# ifndef LINT
! static char RCSid[] = "@(#)FLUKE $Header: /tmp_mnt/home/kreskin/u0/barnett/Src/Ease/ease/src/RCS/symtab.c,v 3.1 1991/09/09 16:33:23 barnett Exp $";
# endif LINT
#endif FLUKE
--- 1,6 ----
#ifdef FLUKE
# ifndef LINT
! static char RCSid[] = "@(#)FLUKE $Header: /tmp_mnt/home/kreskin/u0/barnett/Src/Ease/ease/src/RCS/symtab.c,v 3.0 1991/02/22 18:50:27 barnett Exp $";
# endif LINT
#endif FLUKE
***************
*** 17,25 ****
* All rights reserved.
*
* $Log: symtab.c,v $
- * Revision 3.1 1991/09/09 16:33:23 barnett
- * Minor bug fix release
- *
* Revision 3.0 1991/02/22 18:50:27 barnett
* Added support for HP/UX and IDA sendmail.
*
--- 17,22 ----
***************
*** 36,42 ****
#include "symtab.h"
#define ERRORMAILER "error" /* predefined error mailer name */
- #define ERRORMAILERUC "ERROR" /* predefined ERROR mailer name */
extern void FatalError (),
PrintWarning ();
--- 33,38 ----
***************
*** 117,123 ****
!ISCLASS(hcsearch->idd))
#endif
PrintWarning ("Class not defined: %s\n", hcsearch->psb);
! if (ISMAILER(hcsearch->idtype) && !ISMAILER(hcsearch->idd) && (strcmp(hcsearch->psb,"LOCAL")))
PrintWarning ("Mailer not defined: %s\n", hcsearch->psb);
if (ISRULESET(hcsearch->idtype) && !ISRULESET(hcsearch->idd))
PrintWarning ("Ruleset not defined: %s\n", hcsearch->psb);
--- 113,119 ----
!ISCLASS(hcsearch->idd))
#endif
PrintWarning ("Class not defined: %s\n", hcsearch->psb);
! if (ISMAILER(hcsearch->idtype) && !ISMAILER(hcsearch->idd))
PrintWarning ("Mailer not defined: %s\n", hcsearch->psb);
if (ISRULESET(hcsearch->idtype) && !ISRULESET(hcsearch->idd))
PrintWarning ("Ruleset not defined: %s\n", hcsearch->psb);
***************
*** 168,178 ****
/* preload error mailer declaration */
symptr = LookupSymbol (ERRORMAILER);
- symptr->idtype |= ID_MAILER;
- symptr->idd |= ID_MAILER;
-
- /* preload ERROR mailer declaration */
- symptr = LookupSymbol (ERRORMAILERUC);
symptr->idtype |= ID_MAILER;
symptr->idd |= ID_MAILER;
}
--- 164,169 ----
--
Bruce G. Barnett barnett@crdgw1.ge.com uunet!crdgw1!barnett