*** ../mh-6.7-dist/Patchlevel Wed Jan 29 16:59:52 1992 --- Patchlevel Wed Jan 22 13:37:46 1992 *************** *** 1 **** ! MH.6.7 patch.1a --- 1 ---- ! MH.6.7 patch.2 *** ../mh-6.7-dist/conf/mh-gen.8 Wed Jan 29 17:00:19 1992 --- conf/mh-gen.8 Thu Jan 30 08:41:44 1992 *************** *** 1,2 **** ! .\" @(#)$Id: mh-gen.8,v 2.54 91/01/24 08:27:50 mh Exp $ .\" uneven inter-word spacing (nroff line adjusting) hampers readability --- 1,2 ---- ! .\" @(#)$Id: mh-gen.8,v 2.55 1992/01/30 16:41:35 jromine Exp $ .\" uneven inter-word spacing (nroff line adjusting) hampers readability *************** *** 325,326 **** --- 325,340 ---- .ti -.5i + ATTVIBUG + .br + This option causes + \fIMH\fP to return to the \*(lqWhat now?\*(rq + prompt if your initial editor is \fBvi\fP + and it exits with non-zero status. + Use on Sun OS 4.1 and other systems where the + \fB/usr/ucb/vi\fP editor was changed to + exit with its status equal to the number of pseudo-\*(lqerrors\*(rq + encountered during the edit. This causes a problem for programs that + test the exit status of their editor and abort if the status is non-zero. + (This includes \fIMH\fP and programs like \fB/usr/etc/vipw\fP). + + .ti -.5i ATZ *************** *** 585,598 **** .ti -.5i ! SUNVIBUG .br ! This option causes ! \fIMH\fP to return to the \*(lqWhat now?\*(rq ! prompt if your initial editor is \fBvi\fP ! and it exits with non-zero status. ! Use on Sun OS 4.1 and other systems where the ! \fB/usr/ucb/vi\fP editor was changed to ! exit with its status equal to the number of pseudo-\*(lqerrors\*(rq ! encountered during the edit. This causes a problem for programs that ! test the exit status of their editor and abort if the status is non-zero. ! (This includes \fIMH\fP and programs like \fB/usr/etc/vipw\fP). --- 599,606 ---- .ti -.5i ! SUN41 .br ! Use on Sun OS 4.1 (and later?) systems. You also want ! \*(lqoptions SUN40\*(rq, ! \*(lqoptions BSD42\*(rq, \*(lqoptions BSD43\*(rq, and ! \*(lqoptions TYPESIG=void\*(rq. *************** *** 624,626 **** Set TYPESIG='void' on systems which use this type ! (e.g., SYSTEM 5 V3.0 and later or Sun OS 4.0). --- 632,634 ---- Set TYPESIG='void' on systems which use this type ! (e.g., SYSTEM 5 V3.0 and later or Sun OS 4.0 and later). *** ../mh-6.7-dist/conf/mhconfig.c Wed Jan 29 17:00:20 1992 --- conf/mhconfig.c Mon Jan 27 09:34:35 1992 *************** *** 1,7 **** /* mhconfig.c - configure MH */ /* cc [-DSYS5] mhconfig.c -o mhconfig */ #ifndef lint ! static char ident[] = "@(#)$Id: mhconfig.c,v 2.30 91/01/25 14:48:44 mh Exp $"; #endif lint #include --- 1,7 ---- /* mhconfig.c - configure MH */ /* cc [-DSYS5] mhconfig.c -o mhconfig */ #ifndef lint ! static char ident[] = "@(#)$Id: mhconfig.c,v 2.31 1992/01/27 17:34:29 jromine Exp $"; #endif lint #include *************** *** 32,37 **** --- 32,38 ---- #define MHRELEASE "6.7" /* for version: "Maj.min.pat" */ #define MHCENTERFOOT "MH.6.7" /* for nroff page footers */ #define MHLEFTFOOT "[mh.6]" /* [mh.6] MH.6.6 page# */ + #define MHSLIBVER "1.1" /* SunOS4 shared library version */ #define NOTOK (-1) *************** *** 53,59 **** static int makeP = 1; static char *myname = "mhconfig"; ! static char *myopts = NULL; static char *binpath = "/usr/local"; --- 54,60 ---- static int makeP = 1; static char *myname = "mhconfig"; ! static char *config = NULL; static char *myopts = NULL; static char *binpath = "/usr/local"; *************** *** 276,281 **** --- 277,283 ---- do_alldoc(fp); /* hack up doc/config.sed */ } + fprintf (fp, "s%%@(MHCONFIGFILE)%%%s%%g\n", SVAL(config)); fprintf (fp, "s%%@(MHWARNING)%%%s%%g\n", WARNING); fprintf (fp, "s%%@(MHRELEASE)%%%s%%g\n", MHRELEASE); fprintf (fp, "s%%@(MHCENTERFOOT)%%%s%%g\n", MHCENTERFOOT); *************** *** 376,381 **** --- 378,384 ---- fprintf (fp, "/^@BEGIN: SHAREDLIB$/d\n/^@END: SHAREDLIB$/d\n"); fprintf (fp, "/^@BEGIN: STDLIB$/,/^@END: STDLIB$/d\n"); fprintf (fp, "s%%@(SLIBDIR)%%%s%%g\n",slibdir); + fprintf (fp, "s%%@(SLIBVER)%%%s%%g\n", MHSLIBVER); if (strcmp (sharedlib, "secure") == 0) fprintf (fp, "s%%@(SLDFLAG)%%-L%s%%g\n",slibdir); else *************** *** 529,535 **** char *ap, *cp, *dp, - *config, buffer[BUFSIZ]; struct bind *bp; FILE * fp; --- 532,537 ---- *** ../mh-6.7-dist/config/version.sh Fri Dec 14 13:24:13 1990 --- config/version.sh Thu Jan 30 14:20:46 1992 *************** *** 1,3 **** : run this script through /bin/sh ! : '@(#)$Id: version.sh,v 1.6 90/04/05 21:25:14 sources Exp $' case $# in --- 1,3 ---- : run this script through /bin/sh ! : '@(#)$Id: version.sh,v 1.9 1992/01/30 22:20:41 jromine Exp $' case $# in *************** *** 43,47 **** BEGIN { split ("'"${1}"'", ver, ".");\ ! major = ver[1]; minor = ver[2]; patch = ver[3]}\ ! NR == 1 { local = $(NF) }\ ! NR == 2 { patch = $(NF) }\ END { local++;\ --- 43,47 ---- BEGIN { split ("'"${1}"'", ver, ".");\ ! major = ver[1]; minor = ver[2]; patch = ver[3]} \ ! NR == 1 { local = $(NF) } ;\ ! NR == 2 { patch = $(NF) } ;\ END { local++;\ *************** *** 48,50 **** if (patch > 0) {\ ! printf "char *version = \"MH %s.%s.%s #%d[UCI] ", \ major, minor, patch, local > "version.c"; \ --- 48,50 ---- if (patch > 0) {\ ! printf "char *version = \"@(#)MH %s.%s.%s #%d[UCI] ", \ major, minor, patch, local > "version.c"; \ *************** *** 54,56 **** } else {\ ! printf "char *version = \"MH %s.%s #%d[UCI] ", \ major, minor, local > "version.c"; \ --- 54,56 ---- } else {\ ! printf "char *version = \"@(#)MH %s.%s #%d[UCI] ", \ major, minor, local > "version.c"; \ *** ../mh-6.7-dist/h/fmtcompile.h Wed Jan 29 17:00:20 1992 --- h/fmtcompile.h Thu Jan 23 15:16:10 1992 *************** *** 1,4 **** ! /* @(#)$Id: fmtcompile.h,v 1.5 90/12/27 17:04:12 mh Exp $ */ /* Format Types */ /* -------------*/ --- 1,4 ---- ! /* @(#)$Id: fmtcompile.h,v 1.8 1992/01/23 23:16:05 jromine Exp $ */ /* Format Types */ /* -------------*/ *************** *** 19,103 **** /* types that modify the "str" or "value" registers */ #define FT_LS_COMP 12 /* set "str" to component text */ #define FT_LS_LIT 13 /* set "str" to literal text */ ! #define FT_LS_TRIM 14 /* trim trailing white space from "str" */ ! #define FT_LV_COMP 15 /* set "value" to comp (as dec. num) */ ! #define FT_LV_COMPFLAG 16 /* set "value" to comp flag word */ ! #define FT_LV_LIT 17 /* set "value" to literal num */ ! #define FT_LV_DAT 18 /* set "value" to dat[n] */ ! #define FT_LV_STRLEN 19 /* set "value" to length of "str" */ ! #define FT_LV_PLUS_L 20 /* set "value" += literal */ ! #define FT_LV_MINUS_L 21 /* set "value" -= literal */ ! #define FT_LV_DIVIDE_L 22 /* set "value" to value / literal */ ! #define FT_LV_CHAR_LEFT 23 /* set "value" to char left in output */ ! #define FT_LS_MONTH 24 /* set "str" to tws month */ ! #define FT_LS_LMONTH 25 /* set "str" to long tws month */ ! #define FT_LS_ZONE 26 /* set "str" to tws timezone */ ! #define FT_LS_DAY 27 /* set "str" to tws weekday */ ! #define FT_LS_WEEKDAY 28 /* set "str" to long tws weekday */ ! #define FT_LS_822DATE 29 /* set "str" to 822 date str */ ! #define FT_LS_PRETTY 30 /* set "str" to pretty (?) date str */ ! #define FT_LV_SEC 31 /* set "value" to tws second */ ! #define FT_LV_MIN 32 /* set "value" to tws minute */ ! #define FT_LV_HOUR 33 /* set "value" to tws hour */ ! #define FT_LV_MDAY 34 /* set "value" to tws day of month */ ! #define FT_LV_MON 35 /* set "value" to tws month */ ! #define FT_LV_YEAR 36 /* set "value" to tws year */ ! #define FT_LV_YDAY 37 /* set "value" to tws day of year */ ! #define FT_LV_WDAY 38 /* set "value" to tws weekday */ ! #define FT_LV_ZONE 39 /* set "value" to tws timezone */ ! #define FT_LV_CLOCK 40 /* set "value" to tws clock */ ! #define FT_LV_RCLOCK 41 /* set "value" to now - tws clock */ ! #define FT_LV_DAYF 42 /* set "value" to tws day flag */ ! #define FT_LV_DST 43 /* set "value" to tws daylight savings flag */ ! #define FT_LV_ZONEF 44 /* set "value" to tws timezone flag */ ! #define FT_LS_PERS 45 /* set "str" to person part of addr */ ! #define FT_LS_MBOX 46 /* set "str" to mbox part of addr */ ! #define FT_LS_HOST 47 /* set "str" to host part of addr */ ! #define FT_LS_PATH 48 /* set "str" to route part of addr */ ! #define FT_LS_GNAME 49 /* set "str" to group part of addr */ ! #define FT_LS_NOTE 50 /* set "str" to comment part of addr */ ! #define FT_LS_ADDR 51 /* set "str" to mbox@host */ ! #define FT_LS_822ADDR 52 /* set "str" to 822 format addr */ ! #define FT_LS_FRIENDLY 53 /* set "str" to "friendly" format addr */ ! #define FT_LV_HOSTTYPE 54 /* set "value" to addr host type */ ! #define FT_LV_INGRPF 55 /* set "value" to addr in-group flag */ ! #define FT_LV_NOHOSTF 56 /* set "value" to addr no-host flag */ /* Date Coercion */ ! #define FT_LOCALDATE 57 /* Coerce date to local timezone */ ! #define FT_GMTDATE 58 /* Coerce date to gmt */ /* pre-format processing */ ! #define FT_PARSEDATE 59 /* parse comp into a date (tws) struct */ ! #define FT_PARSEADDR 60 /* parse comp into a mailaddr struct */ ! #define FT_FORMATADDR 61 /* let external routine format addr */ ! #define FT_MYMBOX 62 /* do "mymbox" test on comp */ /* misc. */ #ifdef VAN ! #define FT_ADDTOSEQ 63 /* add current msg to a sequence */ #endif /* conditionals & control flow (must be last) */ ! #define FT_SAVESTR 64 /* save current str reg */ ! #define FT_DONE 65 /* stop formatting */ ! #define FT_NOP 66 /* nop */ ! #define FT_GOTO 67 /* (relative) goto */ ! #define FT_IF_S_NULL 68 /* test if "str" null */ ! #define FT_IF_S 69 /* test if "str" non-null */ ! #define FT_IF_V_EQ 70 /* test if "value" = literal */ ! #define FT_IF_V_NE 71 /* test if "value" != literal */ ! #define FT_IF_V_GT 72 /* test if "value" > literal */ ! #define FT_IF_MATCH 73 /* test if "str" contains literal */ ! #define FT_IF_AMATCH 74 /* test if "str" starts with literal */ ! #define FT_S_NULL 75 /* V = 1 if "str" null */ ! #define FT_S_NONNULL 76 /* V = 1 if "str" non-null */ ! #define FT_V_EQ 77 /* V = 1 if "value" = literal */ ! #define FT_V_NE 78 /* V = 1 if "value" != literal */ ! #define FT_V_GT 79 /* V = 1 if "value" > literal */ ! #define FT_V_MATCH 80 /* V = 1 if "str" contains literal */ ! #define FT_V_AMATCH 81 /* V = 1 if "str" starts with literal */ #define IF_FUNCS FT_S_NULL /* start of "if" functions */ --- 19,105 ---- /* types that modify the "str" or "value" registers */ #define FT_LS_COMP 12 /* set "str" to component text */ #define FT_LS_LIT 13 /* set "str" to literal text */ ! #define FT_LS_GETENV 14 /* set "str" to getenv(text) */ ! #define FT_LS_TRIM 15 /* trim trailing white space from "str" */ ! #define FT_LV_COMP 16 /* set "value" to comp (as dec. num) */ ! #define FT_LV_COMPFLAG 17 /* set "value" to comp flag word */ ! #define FT_LV_LIT 18 /* set "value" to literal num */ ! #define FT_LV_DAT 19 /* set "value" to dat[n] */ ! #define FT_LV_STRLEN 20 /* set "value" to length of "str" */ ! #define FT_LV_PLUS_L 21 /* set "value" += literal */ ! #define FT_LV_MINUS_L 22 /* set "value" -= literal */ ! #define FT_LV_DIVIDE_L 23 /* set "value" to value / literal */ ! #define FT_LV_CHAR_LEFT 24 /* set "value" to char left in output */ ! #define FT_LS_MONTH 25 /* set "str" to tws month */ ! #define FT_LS_LMONTH 26 /* set "str" to long tws month */ ! #define FT_LS_ZONE 27 /* set "str" to tws timezone */ ! #define FT_LS_DAY 28 /* set "str" to tws weekday */ ! #define FT_LS_WEEKDAY 29 /* set "str" to long tws weekday */ ! #define FT_LS_822DATE 30 /* set "str" to 822 date str */ ! #define FT_LS_PRETTY 31 /* set "str" to pretty (?) date str */ ! #define FT_LV_SEC 32 /* set "value" to tws second */ ! #define FT_LV_MIN 33 /* set "value" to tws minute */ ! #define FT_LV_HOUR 34 /* set "value" to tws hour */ ! #define FT_LV_MDAY 35 /* set "value" to tws day of month */ ! #define FT_LV_MON 36 /* set "value" to tws month */ ! #define FT_LV_YEAR 37 /* set "value" to tws year */ ! #define FT_LV_YDAY 38 /* set "value" to tws day of year */ ! #define FT_LV_WDAY 39 /* set "value" to tws weekday */ ! #define FT_LV_ZONE 40 /* set "value" to tws timezone */ ! #define FT_LV_CLOCK 41 /* set "value" to tws clock */ ! #define FT_LV_RCLOCK 42 /* set "value" to now - tws clock */ ! #define FT_LV_DAYF 43 /* set "value" to tws day flag */ ! #define FT_LV_DST 44 /* set "value" to tws daylight savings flag */ ! #define FT_LV_ZONEF 45 /* set "value" to tws timezone flag */ ! #define FT_LS_PERS 46 /* set "str" to person part of addr */ ! #define FT_LS_MBOX 47 /* set "str" to mbox part of addr */ ! #define FT_LS_HOST 48 /* set "str" to host part of addr */ ! #define FT_LS_PATH 49 /* set "str" to route part of addr */ ! #define FT_LS_GNAME 50 /* set "str" to group part of addr */ ! #define FT_LS_NOTE 51 /* set "str" to comment part of addr */ ! #define FT_LS_ADDR 52 /* set "str" to mbox@host */ ! #define FT_LS_822ADDR 53 /* set "str" to 822 format addr */ ! #define FT_LS_FRIENDLY 54 /* set "str" to "friendly" format addr */ ! #define FT_LV_HOSTTYPE 55 /* set "value" to addr host type */ ! #define FT_LV_INGRPF 56 /* set "value" to addr in-group flag */ ! #define FT_LV_NOHOSTF 57 /* set "value" to addr no-host flag */ /* Date Coercion */ ! #define FT_LOCALDATE 58 /* Coerce date to local timezone */ ! #define FT_GMTDATE 59 /* Coerce date to gmt */ /* pre-format processing */ ! #define FT_PARSEDATE 60 /* parse comp into a date (tws) struct */ ! #define FT_PARSEADDR 61 /* parse comp into a mailaddr struct */ ! #define FT_FORMATADDR 62 /* let external routine format addr */ ! #define FT_MYMBOX 63 /* do "mymbox" test on comp */ /* misc. */ #ifdef VAN ! #define FT_ADDTOSEQ 64 /* add current msg to a sequence */ #endif /* conditionals & control flow (must be last) */ ! #define FT_SAVESTR 65 /* save current str reg */ ! #define FT_DONE 66 /* stop formatting */ ! #define FT_PAUSE 67 /* pause */ ! #define FT_NOP 68 /* nop */ ! #define FT_GOTO 69 /* (relative) goto */ ! #define FT_IF_S_NULL 70 /* test if "str" null */ ! #define FT_IF_S 71 /* test if "str" non-null */ ! #define FT_IF_V_EQ 72 /* test if "value" = literal */ ! #define FT_IF_V_NE 73 /* test if "value" != literal */ ! #define FT_IF_V_GT 74 /* test if "value" > literal */ ! #define FT_IF_MATCH 75 /* test if "str" contains literal */ ! #define FT_IF_AMATCH 76 /* test if "str" starts with literal */ ! #define FT_S_NULL 77 /* V = 1 if "str" null */ ! #define FT_S_NONNULL 78 /* V = 1 if "str" non-null */ ! #define FT_V_EQ 79 /* V = 1 if "value" = literal */ ! #define FT_V_NE 80 /* V = 1 if "value" != literal */ ! #define FT_V_GT 81 /* V = 1 if "value" > literal */ ! #define FT_V_MATCH 82 /* V = 1 if "str" contains literal */ ! #define FT_V_AMATCH 83 /* V = 1 if "str" starts with literal */ #define IF_FUNCS FT_S_NULL /* start of "if" functions */ *** ../mh-6.7-dist/h/formatsbr.h Fri Dec 14 13:24:16 1990 --- h/formatsbr.h Thu Jan 23 15:14:58 1992 *************** *** 1,4 **** --- 1,5 ---- /* formatsbr.h - definitions for fmtscan () */ + /* $Id: formatsbr.h,v 1.1 1992/01/23 23:14:54 jromine Exp $ */ /* * This structure describes an "interesting" component. It holds *************** *** 78,82 **** #define f_value f_un.f_u_value }; ! int fmtscan (); char *new_fs (); --- 79,83 ---- #define f_value f_un.f_u_value }; ! struct format *fmtscan (); char *new_fs (); *** ../mh-6.7-dist/h/mh.h Fri Dec 14 13:24:16 1990 --- h/mh.h Thu Jan 23 16:03:59 1992 *************** *** 1,5 **** /* mh.h - main header file for all of MH */ ! /* @(#)$Id: mh.h,v 2.6 90/04/05 15:06:09 sources Exp $ */ /* Well-used constants */ --- 1,5 ---- /* mh.h - main header file for all of MH */ ! /* @(#)$Id: mh.h,v 2.7 1992/01/24 00:03:50 jromine Exp $ */ /* Well-used constants */ *************** *** 15,21 **** --- 15,25 ---- #define NFOLDERS 300 /* max folder arguments on command line */ + #ifndef UCI #define MAXFOLDER 1000 /* message increment */ + #else + #define MAXFOLDER 1500 /* message increment */ + #endif #define DMAXFOLDER 4 /* typical number of digits */ #if !defined(BSD42) && !defined(BSD41A) && !defined(VMUNIX) && !defined(hpux) *************** *** 330,336 **** /* should be in */ ! #ifndef SYS5 typedef struct _iobuf *FP; FP popen (); #else SYS5 --- 334,340 ---- /* should be in */ ! #if !defined(SYS5) && !defined(ncr) typedef struct _iobuf *FP; FP popen (); #else SYS5 *************** *** 340,346 **** /* miscellaneous */ ! #if !defined(BSD42) && !defined(hpux) #define rename(f1,f2) (link (f1, f2) != NOTOK ? unlink (f1) : NOTOK) #endif not BSD42 --- 344,350 ---- /* miscellaneous */ ! #if !defined(BSD42) && !defined(hpux) && !defined(ncr) #define rename(f1,f2) (link (f1, f2) != NOTOK ? unlink (f1) : NOTOK) #endif not BSD42 *** ../mh-6.7-dist/h/scansbr.h Fri Dec 14 13:24:17 1990 --- h/scansbr.h Mon Dec 2 12:45:58 1991 *************** *** 1,4 **** --- 1,5 ---- /* scansbr.h - definitions for scan () */ + /* $Header: /i1/db3/src/bs/mh-develop/mh-6.7-new/h/RCS/scansbr.h,v 1.2 1991/12/02 20:45:51 jromine Exp $ */ extern char *scanl; *************** *** 14,26 **** "%4(msg)%<(cur)+%| %>%<{replied}-%|%<{encrypted}E%| %>%>\ %02(mon{date})/%02(mday{date})%<{date} %|*%>\ %<(mymbox{from})To:%14(friendly{to})%|%17(friendly{from})%> \ ! %{subject}%<{body}<<%{body}>>%>" #else UK #define FORMAT \ "%4(msg)%<(cur)+%| %>%<{replied}-%|%<{encrypted}E%| %>%>\ %02(mday{date})/%02(mon{date})%<{date} %|*%>\ %<(mymbox{from})To:%14(friendly{to})%|%17(friendly{from})%> \ ! %{subject}%<{body}<<%{body}>>%>" #endif UK #define WIDTH 78 --- 15,27 ---- "%4(msg)%<(cur)+%| %>%<{replied}-%|%<{encrypted}E%| %>%>\ %02(mon{date})/%02(mday{date})%<{date} %|*%>\ %<(mymbox{from})To:%14(friendly{to})%|%17(friendly{from})%> \ ! %{subject}%<{body}<<%{body}>>%>\n" #else UK #define FORMAT \ "%4(msg)%<(cur)+%| %>%<{replied}-%|%<{encrypted}E%| %>%>\ %02(mday{date})/%02(mon{date})%<{date} %|*%>\ %<(mymbox{from})To:%14(friendly{to})%|%17(friendly{from})%> \ ! %{subject}%<{body}<<%{body}>>%>\n" #endif UK #define WIDTH 78 *** ../mh-6.7-dist/h/strings.h Fri Dec 14 13:24:17 1990 --- h/strings.h Thu Jan 23 15:16:49 1992 *************** *** 1,5 **** /* strings.h - define standard string functions */ ! /* @(#)$Id: strings.h,v 1.7 90/04/05 16:18:34 sources Exp $ */ #ifndef _STRINGS /* once-only... */ #define _STRINGS --- 1,5 ---- /* strings.h - define standard string functions */ ! /* @(#)$Id: strings.h,v 1.8 1992/01/23 23:16:46 jromine Exp $ */ #ifndef _STRINGS /* once-only... */ #define _STRINGS *************** *** 13,19 **** --- 13,21 ---- char *mktemp (); char *rindex (); #ifndef SPRINTFTYPE + #ifndef ncr /* NCR compiler complains about re-declaration */ char *sprintf (); /* I guess this is the new standard */ + #endif #else SPRINTFTYPE sprintf (); #endif *** ../mh-6.7-dist/papers/mh6.7/mh6.7.ms Fri Dec 14 13:25:17 1990 --- papers/mh6.7/mh6.7.ms Thu Jan 30 14:41:39 1992 *************** *** 1,2 **** ! .\" @(#)$Id: mh6.7.ms,v 1.10 90/04/10 13:23:45 sources Exp $ .\" Standard -ms macros --- 1,2 ---- ! .\" @(#)$Id: mh6.7.ms,v 1.13 1992/01/30 22:41:36 jromine Exp $ .\" Standard -ms macros *************** *** 5,7 **** .ds rq \\*U ! .DA "April 9, 1990" .if n \{\ --- 5,7 ---- .ds rq \\*U ! .DA "February 1, 1992" .if n \{\ *************** *** 10,13 **** .\} ! .EH ''Changes to MH 6.7'%' ! .OH ''Changes to MH 6.7'%' .TL --- 10,16 ---- .\} ! .\" .EH ''Changes to MH 6.7'%' ! .\" .OH ''Changes to MH 6.7'%' ! .ds LH Changes to MH 6.7 ! .ds CH ! .ds RH % .TL *************** *** 29,31 **** UCI version of the RAND MH system from MH 6.6 ! to MH 6.7. The first part should be of interest to all users of MH, while the latter part is of interest only to MH --- 32,35 ---- UCI version of the RAND MH system from MH 6.6 ! to this release of MH 6.7. ! The first part should be of interest to all users of MH, while the latter part is of interest only to MH *************** *** 94,98 **** .KE .SH ! GENERAL CHANGES .LP The author is pleased to announce that there are very few --- 98,340 ---- .KE + .ds LH Changes for MH 6.7.2 + .bp + .\" .ds CF Feb 1, 1992 .SH ! CHANGES FOR MH 6.7.2 .LP + The MH.6.7.2 patch release is a maintenance + release. + This is the + current released version of \fIMH\fP as of February 1, 1992. + .PP + This release now supports the NCR Tower running SYS5R4. + The WP changes installed in MH.6.7.0 have been removed. + .SH + Shared Libraries + .LP + Support for SYS 5 shared libraries is in progress. + .PP + Support for Sun OS 4.0 shared libraries had been improved. + The \fIMH\fP library has been modified to move initialized + data into a data definition file. The shared library will + now consist of a \fBlibmh.so\fP and \fBlibmh.sa\fP file. + The shared library version number will no longer track the + \fIMH\fP patch release number, and its numbering begins with + version `1.1' with this release. + .SH + Replacement SendMail + .LP + Since many standard system programs expect to post mail by + invoking \fB/usr/lib/sendmail\fP, + a minimal replacement \fISendMail\fP is provided in + this release. This replacement is meant to be installed + on (e.g., diskless) client workstations which post mail + using SMTP, and do not run a message transport system. + It will call \fIpost\fP to post mail; be sure you have + configured \fIMH\fP with the `/smtp' mts option. + This sendmail replacement is installed in your + \fIMH\fP etc directory, and you should link + \fB/usr/lib/sendmail\fP + to it. + .KS + .SH + Format Strings + .LP + A manual page for the \fIfmtdump\fP format string disassembler + is supplied, and some new format functions were added: + .IP folder \w'%getenv'u+2n + In \fIscan\fP, this component escape + contains the name of the current folder. + It is not defined for other \fIMH\fP commands. + .IP getenv + This function escape returns the value of an environment variable. + .KE + .PP + There will be some additional changes in these routines in the + next patch release. + .KS + .SH + Other Bug Fixes and Enhancements + .LP + In addition to some other minor enhancements, + some bugs were fixed which in general were not user\-visible: + .IP "Blind lists" \w'datexparsing'u+2n + Users may now specify RFC822 address groups in their + alias files. These groups are implemented by \fIMH\fP + as blind lists. + .IP "date parsing" + A number of sites have brain-damaged versions of \fBlex\fP. + \fIMH\fP will now come with the date parser already run + through lex. + .IP mark + A bug dealing with \fImark\fP and the sequence named `cur' + is fixed. This was previously a problem for mh-e users. + .IP MH.doc + The \fIMH\fP nroff version of the manual no longer contains + teletype escape sequences. + .IP scan + Can now handle headers as long as 512 bytes. + .IP Signals + \fIMH\fP programs will no longer catch the \fBHUP\fP + and \fBTERM\fP signals while waiting for a sub-process. + This was causing hung processes when your terminal line was + was dropped unexpectedly. + .IP Signature + If your signature is not defined, \fIMH\fP will + use the value of the gecos field of your \fB/etc/passwd\fP + entry as your signature. + .IP "version.sh" + A bug in the \fBawk\fP script in \fBconfig/version.sh\fP + was fixed. + .KE + .ds LH Changes for MH 6.7.1a + .bp + .ds CF Janaruy 25, 1991 + .SH + CHANGES FOR MH 6.7.1a + .LP + The MH.6.7.1a patch was made available + on January 25, 1991 for limited distribution only. + (This release had some known bugs, and so was + not widely distributed.) + This release incorporates several new features + of particular note to users of sequences and format strings, + as well as some general documentation improvements. + There are a few minor enhancements and internal bug fixes also. + Complete documentation of these changes is given in + the individual manual pages, and the \fBREAD-ME\fP file. + .SH + Message Sequences + .LP + A new manual page, \fImh\-sequence\0\fP(5), has been added. + This manual page attempts to completely document the + syntax and semantics of \fIMH\fP message sequence specifications. + .PP + A powerful new feature is the ability to specify message + ranges with user-defined sequences. The specification + \*(lqname:n\*(rq may be used, and it designates up to the + first `n' messages (or last `n' messages for `-n') + which are elements of the user-defined sequence `name'. + .PP + The message + specifications \*(lqname:next\*(rq and \*(lqname:prev\*(rq + may also be used, and they + designate the + next or previous message (relative to the current message) + which is an element of the user-defined sequence `name'. + The specificaitions + \*(lqname:first\*(rq and \*(lqname:last\*(rq are equivalent + to \*(lqname:1\*(rq and \*(lqname:\-1\*(rq, respectively. + The specification \*(lqname:cur\*(rq is not allowed + (use just \*(lqcur\*(rq instead). + .PP + These specifications allow the user to step through + a sequence with a command like \*(lqshow name:next\*(rq. + .SH + Format Strings + .LP + \fIMH\fP format strings now support an if-then-elseif-else + clause (the `elseif' is new). This will make + format strings with multi-case conditions somewhat less complex. + .PP + A new format function `addr' had been added. This function + takes an address header name as its argument, and returns + a rendering of the address contained in that header + as \*(lquser@host\*(rq or \*(lqhost!user\*(rq. + .PP + Format widths now may be specified as a negative number. + This causes the output to be right-justified + within the format width. + .KS + .SH + Other Changes + .LP + Along with a few minor enhancements, + some bugs were fixed which in general were not user-visible: + .IP "fmtdump" \w'whatnow'u+2n + This new program + produces an pseudo-language + representation of an \fIMH\fP format file, vaguely + reminiscent of assembly language. While this output format + is not explicitly documented, + it can still be useful when debugging \fIMH\fP format files. + .IP "refile" + Now takes a `\-\[no\]rmmproc' switch. This makes it + easier to avoid loops when your \*(lqrmmproc\*(rq calls \fIrefile\fP. + .IP "slocal" + A problem with the UUCP-style mailboxes, + the `RPATHS' configuration option, + and the \*(lqReturn-Path:\*(rq header was fixed. + .IP "sortm" + Will ensure that no messages are lost if it is interrupted. + .IP "whatnow" + Will now tell you where it is leaving the draft, when + interrupted in the initial edit. Previously the draft + was simply unlinked. + .KE + .KS + .SH + Compilation Options + .IP "LOCKF" \w'whatnow'u+2n + This option causes \fIMH\fP to use the \fBlockf()\fP + system call for locking (if available), + instead of \fBflock()\fP. + .KE + .ds LH Changes for MH 6.7.1 + .bp + .ds CF December 14, 1990 + .SH + CHANGES FOR MH 6.7.1 + .LP + The MH.6.7.1 patch release is a maintenance + release, and as such, provides few changes from + the previous release. This is the + current released version of \fIMH\fP as of December 14, 1990. + .SH + User-Visible Changes + .LP + The major change in this release is to the + POP daemon (popd). In \fIMH\fP 6.7, + it was changed to be able to read both UUCP and + MMDF-style mailboxes. This did not work as reported. The + code has now been changed to parse MMDF-style mailboxes if + you are configuring MH to run with MMDF as your message + transport system. Otherwise, UUCP-style mailboxes are + expected. + .PP + Since there are number of client programs available for + only the POP2 protocol instead of POP3, popd has been + updated to support both protocols. This is a major + win. If you are compiling + with POP turned on, add the `POP2' option to + your \fIMH\fP config file, and the POP daemon + will respond to POP2 or POP3 commands. If you're using + POP, there's no reason not to include this option; it does + not affect the existing support for POP3. + .KS + .SH + Internal Changes + .LP + Some bugs were fixed which in general were not user-visible: + .IP "context" \w'replnnetcn'u+2n + Errors when writing out sequences are detected correctly. + .IP "inc" + No longer inserts extra blank lines into messages. + .IP "mh-format" + A nil pointer bug in the address parser was fixed. + .IP "repl, etc." + The malloc/free problem has been fixed. + .IP "rmf" + A spelling error in the `\-nointeractive' switch has been corrected. + .IP "rcvtty" + Will not print the message size if not available (i.e., zero). + .IP "send/post" + Illegal signatures (those containing unquoted "."s) will be quoted. + .KE + .ds LH Changes for MH 6.7.0 + .bp + .ds CF April 12, 1990 + .SH + GENERAL CHANGES FOR MH 6.7.0 + .LP The author is pleased to announce that there are very few *************** *** 106,107 **** --- 348,351 ---- it is backward\-compatible with the previous release. + \fIMH\fP 6.7.0 is the current released version of \fIMH\fP + as of April 12, 1990. .PP *** ../mh-6.7-dist/sbr/addrsbr.c Fri Dec 14 13:25:31 1990 --- sbr/addrsbr.c Thu Jan 30 14:39:50 1992 *************** *** 1,6 **** /* addrsbr.c - parse addresses 822-style */ #ifndef lint ! static char ident[] = "@(#)$Id: addrsbr.c,v 1.7 90/11/05 12:26:41 mh Exp $"; #endif lint #include "../h/mh.h" --- 1,6 ---- /* addrsbr.c - parse addresses 822-style */ #ifndef lint ! static char ident[] = "@(#)$Id: addrsbr.c,v 1.10 1992/01/30 22:39:48 jromine Exp $"; #endif lint #include "../h/mh.h" *************** *** 106,120 **** char *getusr (); - - #ifdef WP - int do_wp = 0; - - #ifdef BERK - char *wp_expand (); - #endif - #endif - /* */ char *getname (addrs) --- 106,111 ---- *************** *** 187,221 **** while ( (c = *addrs++) == ',' || isspace(c)) ; - #ifdef WP - if (do_wp && c == '<' && *addrs == '<') { - register char *cp, - *dp, - *ep; - - if (cp = index (++addrs, '>')) { - *++cp = NULL; - if (dp = wp_expand (addrs, NULLCP)) { - *(addrs - 1) = NULL; - ep = concat (saved_addr, dp, cp, NULLCP); - addrs = ep + strlen (saved_addr); - while ((c = *addrs++) == ',' || isspace (c)) - continue; - free (saved_addr); - saved_addr = ep; - free (dp); - } - else { - err = "unable to expand WhitePages query"; - (void) strcpy (adrtext, addrs); - addrs = cp; - goto out; - } - - } - } - #endif - *nxtout = *adrcopy = '\0'; while (state != EOA) { *adrcopy++ = c; --- 178,183 ---- *************** *** 316,339 **** * addr points to where we should start scanning next time. */ *(nxtout-1) = *(adrcopy-1) = '\0'; - #ifdef WP - out: ; - #endif if (*adr && !err) { adr_ptr = addrs-1; - #ifndef WP return adrtext; - #endif } else { free (saved_addr); adr_ptr = NULL; - #ifndef WP return NULL; - #endif } - #ifdef WP - return adrtext; - #endif #else not BERK register struct adrx *ap; --- 278,291 ---- *************** *** 888,1036 **** return 0; } - - /* */ - - #ifdef WP - #include - - - static char *fredproc = NULL; - - - char *wp_expand (query, error) - char *query, - *error; - { - register int cc, - i, - vecp; - TYPESIG (*istat) (), (*qstat) (), (*pstat) (); - register char *bp, - *cp; - char *ep, - buffer[BUFSIZ], - fds[10], - *vec[10]; - static int child_id = NOTOK, - pdi[2], - pdo[2]; - - if (error) - (void) strcpy (error, "unable to expand WhitePages query: "); - - if (child_id == NOTOK || kill (child_id, 0) == NOTOK) { - if (!isatty (fileno (stdout))) { - if (error) - (void) strcat (error, "not a tty"); - return NULLCP; - } - - if (fredproc == NULL && (fredproc = m_find ("fredproc")) == NULL) - fredproc = "fred"; - - if (pipe (pdi) == NOTOK) { - if (error) - (void) strcat (error, "unable to pipe"); - - return NULLCP; - } - - if (pipe (pdo) == NOTOK) { - if (error) - (void) strcat (error, "unable to pipe"); - - losing: ; - (void) close (pdi[0]); - (void) close (pdi[1]); - return NULLCP; - } - - for (i = 0; (child_id = vfork ()) == NOTOK && i < 5; i++) - sleep (5); - - switch (child_id) { - case NOTOK: - if (error) - (void) strcat (error, "unable to fork"); - - (void) close (pdo[0]); - (void) close (pdo[1]); - goto losing; - - case OK: - (void) close (pdi[0]); - (void) close (pdo[1]); - (void) sprintf (fds, "%d %d", pdo[0], pdi[1]); - vecp = 0; - vec[vecp++] = r1bindex (fredproc, '/'); - vec[vecp++] = "-q"; - vec[vecp++] = fds; - vec[vecp] = NULL; - execvp (fredproc, vec); - _exit (-1); /* NOTREACHED */ - - default: - (void) close (pdi[1]); - (void) close (pdo[0]); - break; - } - } - - istat = signal (SIGINT, SIG_IGN); - qstat = signal (SIGQUIT, SIG_IGN); - - pstat = signal (SIGPIPE, SIG_IGN); - - (void) sprintf (buffer, "%s\n", query); - cc = write (pdo[1], buffer, i = strlen (buffer)); - - (void) signal (SIGPIPE, pstat); - - if (cc != i) { - if (error) - (void) strcat (error, "write to pipe failed"); - - lost_child: ; - (void) kill (child_id, SIGTERM); - (void) close (pdi[0]); - (void) close (pdo[1]); - - child_id = NOTOK; - return NULLCP; - } - - for (ep = (bp = buffer) + sizeof buffer - 1; - (i = read (pdi[0], bp, ep - bp)) > 0; ) { - for (cp = bp + i; bp < cp; bp++) - if (*bp == '\n') - break; - if (bp < cp) - break; - } - - (void) signal (SIGINT, istat); - (void) signal (SIGQUIT, qstat); - - if (i == NOTOK) { - if (error) - (void) strcat (error, "read from pipe failed"); - goto lost_child; - } - if (i == 0) { - if (error) - (void) sprintf (error + strlen (error), "%s exited prematurely", - fredproc); - goto lost_child; - } - *bp = NULL; - - if (error) - if (bp != buffer) - error[0] = NULL; - else - (void) strcpy (error, "unable to expand WhitePages query"); - - return (*buffer ? getcpy (buffer) : NULLCP); - } - #endif --- 840,842 ---- *** ../mh-6.7-dist/sbr/copy.c Fri Dec 14 13:25:33 1990 --- sbr/copy.c Thu Jan 23 15:11:26 1992 *************** *** 9,12 **** continue; return (to - 1); ! }; --- 9,12 ---- continue; return (to - 1); ! } *** ../mh-6.7-dist/sbr/discard.c Fri Dec 14 13:25:33 1990 --- sbr/discard.c Thu Feb 14 14:49:10 1991 *************** *** 1,4 **** --- 1,7 ---- /* discard.c - discard output on a file pointer */ + #ifndef lint + static char ident[] = "@(#)$Id: discard.c,v 1.4 90/04/05 15:31:32 sources Exp $"; + #endif lint #include "../h/mh.h" #include *** ../mh-6.7-dist/sbr/fmtcompile.c Wed Jan 29 17:00:21 1992 --- sbr/fmtcompile.c Thu Jan 23 15:11:10 1992 *************** *** 1,6 **** /* fmtcompile.c - "compile" format strings for fmtscan */ #ifndef lint ! static char ident[] = "@(#)$Id: fmtcompile.c,v 1.9 91/01/10 08:35:40 mh Exp $"; #endif lint #include "../h/mh.h" --- 1,6 ---- /* fmtcompile.c - "compile" format strings for fmtscan */ #ifndef lint ! static char ident[] = "@(#)$Id: fmtcompile.c,v 1.10 1992/01/23 23:10:58 jromine Exp $"; #endif lint #include "../h/mh.h" *************** *** 63,68 **** --- 63,69 ---- "comp", TF_COMP, FT_LS_COMP, 0, TFL_PUTS, "lit", TF_STR, FT_LS_LIT, 0, TFL_PUTS, + "getenv", TF_STR, FT_LS_GETENV, 0, TFL_PUTS, "trim", TF_EXPR, FT_LS_TRIM, 0, 0, "compval", TF_COMP, FT_LV_COMP, 0, TFL_PUTN, "compflag", TF_COMP, FT_LV_COMPFLAG, 0, TFL_PUTN, *************** *** 175,180 **** --- 176,182 ---- static char *do_func(); static char *do_expr(); static char *do_if(); + static char *do_loop(); static char *format_string; static char *usr_fstring; /* for CERROR */ *************** *** 241,247 **** if (*cp) { CERROR("extra '%>', '%|' or '%?'"); } ! NEW(FT_DONE,0,0); *fmt = formatvec; return (ncomp); --- 243,249 ---- if (*cp) { CERROR("extra '%>', '%|' or '%?'"); } ! LV(FT_DONE,0); /* really done */ *fmt = formatvec; return (ncomp); *************** *** 280,285 **** --- 282,288 ---- case '|': case '>': case '?': + case ']': return (cp); case '<': *************** *** 286,291 **** --- 289,298 ---- cp = do_if(++cp); break; + case '[': /* ] */ + cp = do_loop(++cp); + break; + default: cp = do_spec(cp); break; *************** *** 511,516 **** --- 518,541 ---- CERROR ("'(', '{', '%<' or ')' expected"); } return (cp); + } + + static char *do_loop(sp) + register char *sp; + { + register char *cp = sp; + struct format *floop; + + floop = next_fp; + cp = compile (cp); + if (*cp++ != ']') + CERROR ("']' expected"); + + LV(FT_DONE, 1); /* not yet done */ + LV(FT_GOTO, 0); + fp->f_skip = floop - fp; /* skip backwards */ + + return cp; } static char *do_if(sp) *** /dev/null Thu Jan 30 13:49:21 1992 --- sbr/formatdef.c Fri Jan 24 10:22:19 1992 *************** *** 0 **** --- 1,7 ---- + /* formatdef.c - some defines for sbr/formatsbr.c */ + #ifndef lint + static char ident[] = "@(#)$Id: formatdef.c,v 1.2 1992/01/24 18:22:15 jromine Exp $"; + #endif lint + #include "../h/addrsbr.h" + + int fmt_norm = AD_NAME; *** ../mh-6.7-dist/sbr/formatsbr.c Wed Jan 29 17:00:21 1992 --- sbr/formatsbr.c Fri Jan 24 10:09:34 1992 *************** *** 1,6 **** /* formatsbr.c - format string interpretation */ #ifndef lint ! static char ident[] = "@(#)$Id: formatsbr.c,v 1.12 91/01/09 22:34:45 mh Exp $"; #endif lint #include "../h/mh.h" --- 1,6 ---- /* formatsbr.c - format string interpretation */ #ifndef lint ! static char ident[] = "@(#)$Id: formatsbr.c,v 1.14 1992/01/24 18:09:25 jromine Exp $"; #endif lint #include "../h/mh.h" *************** *** 27,33 **** static normalize(); ! int fmt_norm = AD_NAME; struct mailname fmt_mnull; --- 27,33 ---- static normalize(); ! extern int fmt_norm; /* defined in sbr/formatdef.c = AD_NAME */ struct mailname fmt_mnull; *************** *** 223,228 **** --- 223,229 ---- "September","October", "November","December" }; + struct format * fmtscan (format, scanl, width, dat) struct format *format; char *scanl; *************** *** 390,395 **** --- 391,400 ---- case FT_LS_LIT: str = fmt->f_text; break; + case FT_LS_GETENV: + if (!(str = getenv (fmt->f_text))) + str = ""; + break; case FT_LS_TRIM: if (str) { register char *xp; *************** *** 744,752 **** } fmt++; } finished:; if (cp[-1] != '\n') *cp++ = '\n'; *cp = NULL; ! return (value); } --- 749,769 ---- } fmt++; } + #ifndef JLR finished:; if (cp[-1] != '\n') *cp++ = '\n'; *cp = NULL; ! return ((struct format *)0); ! #else /* JLR */ ! if (cp[-1] != '\n') ! *cp++ = '\n'; ! while (fmt->f_type != FT_DONE) ! fmt++; ! ! finished:; ! *cp = '\0'; ! return (fmt -> f_value ? ++fmt : (struct format *)0); ! ! #endif /* JLR */ } *** ../mh-6.7-dist/sbr/help.c Fri Dec 14 13:25:35 1990 --- sbr/help.c Fri Jan 24 17:19:15 1992 *************** *** 1,4 **** --- 1,7 ---- /* help.c - print the usage line */ + #ifndef lint + static char ident[] = "@(#)$Id: help.c,v 1.2 1992/01/25 01:19:05 jromine Exp $"; + #endif lint #include "../h/mh.h" #include *************** *** 22,28 **** printf (" switches are:\n"); printsw (ALL, swp, "-"); ! printf ("\nversion: %s\n", version); nameoutput = linepos = 0; outputlinelen = OUTPUTLINELEN; --- 25,33 ---- printf (" switches are:\n"); printsw (ALL, swp, "-"); ! if (ssequal ("@(#)", cp = version)) ! cp += 4; ! printf ("\nversion: %s\n", cp); nameoutput = linepos = 0; outputlinelen = OUTPUTLINELEN; *** ../mh-6.7-dist/sbr/m_convert.c Wed Jan 29 17:00:22 1992 --- sbr/m_convert.c Tue Feb 12 16:51:12 1991 *************** *** 1,6 **** /* m_convert.c - parse a message sequence and set SELECTED */ #ifndef lint ! static char ident[] = "@(#)$Id: m_convert.c,v 1.6 91/01/09 11:19:24 mh Exp $"; #endif lint #include "../h/mh.h" --- 1,6 ---- /* m_convert.c - parse a message sequence and set SELECTED */ #ifndef lint ! static char ident[] = "@(#)$Id: m_convert.c,v 1.7 91/02/12 16:51:00 mh Exp $"; #endif lint #include "../h/mh.h" *************** *** 270,275 **** --- 270,277 ---- register char *dp; if (strcmp (cp, "cur") == 0)/* hack for "cur-xyz", etc. */ + return OK; + if (ssequal ("cur:", cp)) /* this code need to be rewritten... */ return OK; if (inverted = (dp = m_find (nsequence)) && *dp && ssequal (dp, cp)) *** ../mh-6.7-dist/sbr/m_getfld.c Fri Dec 14 13:25:37 1990 --- sbr/m_getfld.c Mon Jan 27 10:00:52 1992 *************** *** 1,6 **** /* m_getfld.c - read/parse a message */ #ifndef lint ! static char ident[] = "@(#)$Id: m_getfld.c,v 1.8 90/04/18 13:48:12 sources Exp $"; #endif lint #include "../h/mh.h" --- 1,6 ---- /* m_getfld.c - read/parse a message */ #ifndef lint ! static char ident[] = "@(#)$Id: m_getfld.c,v 1.9 1992/01/24 18:03:41 jromine Exp $"; #endif lint #include "../h/mh.h" *************** *** 143,154 **** static unsigned char **pat_map; ! int msg_count = 0; /* disgusting hack for "inc" so it can * know how many characters were stuffed * in the buffer on the last call (see * comments in uip/scansbr.c) */ ! int msg_style = MS_DEFAULT; /* * The "full" delimiter string for a packed maildrop consists * of a newline followed by the actual delimiter. E.g., the --- 143,155 ---- static unsigned char **pat_map; ! extern int msg_count; /* defined in sbr/m_msgdef.c = 0 ! * disgusting hack for "inc" so it can * know how many characters were stuffed * in the buffer on the last call (see * comments in uip/scansbr.c) */ ! extern int msg_style; /* defined in sbr/m_msgdef.c = MS_DEFAULT */ /* * The "full" delimiter string for a packed maildrop consists * of a newline followed by the actual delimiter. E.g., the *************** *** 161,167 **** * is used in m_Eom because the first character of the string * has been read and matched before m_Eom is called. */ ! char *msg_delim = ""; static unsigned char *fdelim; static unsigned char *delimend; static int fdelimlen; --- 162,168 ---- * is used in m_Eom because the first character of the string * has been read and matched before m_Eom is called. */ ! extern char *msg_delim; /* defined in sbr/m_msgdef.c = "" */ static unsigned char *fdelim; static unsigned char *delimend; static int fdelimlen; *** /dev/null Thu Jan 30 13:49:21 1992 --- sbr/m_msgdef.c Fri Jan 24 10:23:08 1992 *************** *** 0 **** --- 1,25 ---- + /* m_msgdef.c - some defines for sbr/m_getfld.c */ + #ifndef lint + static char ident[] = "@(#)$Id: m_msgdef.c,v 1.1 1992/01/24 18:22:58 jromine Exp $"; + #endif lint + #include "../h/mh.h" + + int msg_count = 0; /* disgusting hack for "inc" so it can + * know how many characters were stuffed + * in the buffer on the last call (see + * comments in uip/scansbr.c) */ + + int msg_style = MS_DEFAULT; + /* + * The "full" delimiter string for a packed maildrop consists + * of a newline followed by the actual delimiter. E.g., the + * full string for a Unix maildrop would be: "\n\nFrom ". + * "Fdelim" points to the start of the full string and is used + * in the BODY case of the main routine to search the buffer for + * a possible eom. Msg_delim points to the first character of + * the actual delim. string (i.e., fdelim+1). Edelim + * points to the 2nd character of actual delimiter string. It + * is used in m_Eom because the first character of the string + * has been read and matched before m_Eom is called. + */ + char *msg_delim = ""; *** ../mh-6.7-dist/sbr/m_seq.c Fri Dec 14 13:25:38 1990 --- sbr/m_seq.c Thu Feb 14 14:44:50 1991 *************** *** 1,4 **** --- 1,7 ---- /* m_seq.c - print out a message sequence */ + #ifndef lint + static char ident[] = "@(#)$Id: m_seq.c,v 1.7 91/02/14 14:44:38 mh Exp $"; + #endif lint #include "../h/mh.h" #include *************** *** 15,26 **** register char *bp; static char buffer[BUFSIZ*2]; /* for big sequences */ ! if (strcmp(current, cp) == 0) { ! if (mp->curmsg) { ! (void) sprintf(buffer, "%s", m_name(mp->curmsg)); ! return (buffer); ! } else ! return (NULL); } for (i = 0; mp->msgattrs[i]; i++) if (strcmp(mp->msgattrs[i], cp) == 0) --- 18,31 ---- register char *bp; static char buffer[BUFSIZ*2]; /* for big sequences */ ! if (strcmp (current, cp) == 0) { ! /* assume this is in sync with msgstats["cur"] */ ! /* see m_seqadd() for details */ ! if (mp->curmsg) { ! (void) sprintf(buffer, "%s", m_name(mp->curmsg)); ! return (buffer); ! } else ! return (NULL); } for (i = 0; mp->msgattrs[i]; i++) if (strcmp(mp->msgattrs[i], cp) == 0) *** ../mh-6.7-dist/sbr/m_seqnew.c Fri Dec 14 13:25:39 1990 --- sbr/m_seqnew.c Thu Feb 14 14:46:38 1991 *************** *** 1,4 **** --- 1,7 ---- /* m_seqnew.c - manage sequences */ + #ifndef lint + static char ident[] = "@(#)$Id: m_seqnew.c,v 1.5 91/02/14 14:46:26 mh Exp $"; + #endif lint #include "../h/mh.h" #include *************** *** 69,74 **** --- 72,81 ---- if (!m_seqok (cp)) return 0; + + /* keep mp->curmsg & msgattrs["cur"] in sync - see m_seq() */ + if (strcmp (current,cp) == 0) + mp->curmsg = j; if (public == -1) /* XXX */ public = mp -> msgflags & READONLY ? 0 : 1; *** ../mh-6.7-dist/sbr/makedir.c Fri Dec 14 13:25:40 1990 --- sbr/makedir.c Thu Jan 23 15:12:50 1992 *************** *** 1,4 **** --- 1,7 ---- /* makedir.c - make a directory */ + #ifndef lint + static char ident[] = "@(#)$Id: makedir.c,v 1.7 1992/01/23 23:12:43 jromine Exp $"; + #endif lint #if defined (BSD42) || defined (hpux) /* Modified to try recursive create. Really, this should be broken *************** *** 28,34 **** { int pid; register char *cp; ! #if defined (BSD42) || defined (hpux) register char *c; char path[MAXPATHLEN]; #endif BSD42 --- 31,37 ---- { int pid; register char *cp; ! #if defined (BSD42) || defined (hpux) || defined (SYS5DIR) register char *c; char path[MAXPATHLEN]; #endif BSD42 *** ../mh-6.7-dist/sbr/pidwait.c Fri Dec 14 13:25:41 1990 --- sbr/pidwait.c Wed Jan 29 15:57:35 1992 *************** *** 1,4 **** --- 1,7 ---- /* pidwait.c - wait for child to exit */ + #ifndef lint + static char ident[] = "@(#)$Id: pidwait.c,v 1.5 1992/01/29 23:57:28 jromine Exp $"; + #endif lint #include "../h/mh.h" #include *************** *** 21,30 **** #endif BSD42 if (sigsok == NOTOK) { hstat = signal (SIGHUP, SIG_IGN); istat = signal (SIGINT, SIG_IGN); qstat = signal (SIGQUIT, SIG_IGN); - tstat = signal (SIGTERM, SIG_IGN); } while ((pid = wait (&status)) != NOTOK && pid != id) --- 24,35 ---- #endif BSD42 if (sigsok == NOTOK) { + #ifdef notdef /* I don't see why to trap these... */ hstat = signal (SIGHUP, SIG_IGN); + tstat = signal (SIGTERM, SIG_IGN); + #endif istat = signal (SIGINT, SIG_IGN); qstat = signal (SIGQUIT, SIG_IGN); } while ((pid = wait (&status)) != NOTOK && pid != id) *************** *** 31,40 **** continue; if (sigsok == NOTOK) { (void) signal (SIGHUP, hstat); (void) signal (SIGINT, istat); (void) signal (SIGQUIT, qstat); - (void) signal (SIGTERM, tstat); } #ifndef BSD42 --- 36,47 ---- continue; if (sigsok == NOTOK) { + #ifdef notdef (void) signal (SIGHUP, hstat); + (void) signal (SIGTERM, tstat); + #endif (void) signal (SIGINT, istat); (void) signal (SIGQUIT, qstat); } #ifndef BSD42 *** ../mh-6.7-dist/sbr/strindex.c Fri Dec 14 13:25:42 1990 --- sbr/strindex.c Thu Jan 23 15:13:41 1992 *************** *** 1,4 **** --- 1,7 ---- /* strindex.c - "unsigned" lexical index */ + #ifndef lint + static char ident[] = "@(#)$Id: strindex.c,v 2.2 1990/04/05 15:30:30 sources Exp $"; + #endif lint int stringdex (p1, p2) *** ../mh-6.7-dist/uip/fmtdump.c Wed Jan 29 17:00:22 1992 --- uip/fmtdump.c Thu Jan 23 16:04:50 1992 *************** *** 1,5 **** #ifndef lint ! static char ident[] = "@(#)$Id: fmtdump.c,v 1.2 91/01/25 15:38:06 mh Exp $"; #endif /* * fmtdump - compile format file and dump out instructions --- 1,5 ---- #ifndef lint ! static char ident[] = "@(#)$Id: fmtdump.c,v 1.7 1992/01/24 00:04:45 jromine Exp $"; #endif /* * fmtdump - compile format file and dump out instructions *************** *** 66,72 **** if (findlabel(addr) < 0) assignlabel(addr); } ! if (fmt->f_type == FT_DONE) break; } --- 66,72 ---- if (findlabel(addr) < 0) assignlabel(addr); } ! if (fmt->f_type == FT_DONE && fmt->f_value == 0) break; } *************** *** 73,79 **** /* Dump them out! */ for (fmt = fmth; fmt; ++fmt) { dumpone(fmt); ! if (fmt->f_type == FT_DONE) break; } } --- 73,79 ---- /* Dump them out! */ for (fmt = fmth; fmt; ++fmt) { dumpone(fmt); ! if (fmt->f_type == FT_DONE && fmt->f_value == 0) break; } } *************** *** 135,140 **** --- 135,141 ---- printf(", c_flags %d", fmt->f_comp->c_flags); break; + case FT_LS_ADDR: case FT_LS_PERS: case FT_LS_MBOX: case FT_LS_HOST: *************** *** 196,205 **** --- 197,208 ---- putchar('\''); break; + case FT_IF_S: case FT_IF_S_NULL: case FT_IF_MATCH: case FT_IF_AMATCH: + printf(" false, goto"); case FT_GOTO: i = findlabel(fmt + fmt->f_skip); printf(" L%d", i); *************** *** 227,232 **** --- 230,240 ---- litputs(fmt->f_text); break; + case FT_LS_GETENV: + printf(" getenv "); + litputs(fmt->f_text); + break; + case FT_LS_TRIM: printf(", width %d", fmt->f_width); break; *************** *** 279,284 **** --- 287,293 ---- case FT_PUTADDR: return("PUTADDR"); case FT_LS_COMP: return("LS_COMP"); case FT_LS_LIT: return("LS_LIT"); + case FT_LS_GETENV: return("LS_GETENV"); case FT_LS_TRIM: return("LS_TRIM"); case FT_LV_COMP: return("LV_COMP"); case FT_LV_COMPFLAG: return("LV_COMPFLAG"); *************** *** 310,315 **** --- 319,325 ---- case FT_LV_DAYF: return("LV_DAYF"); case FT_LV_DST: return("LV_DST"); case FT_LV_ZONEF: return("LV_ZONEF"); + case FT_LS_ADDR: return("LS_ADDR"); case FT_LS_PERS: return("LS_PERS"); case FT_LS_MBOX: return("LS_MBOX"); case FT_LS_HOST: return("LS_HOST"); *************** *** 331,336 **** --- 341,349 ---- case FT_ADDTOSEQ: return("ADDTOSEQ"); #endif case FT_SAVESTR: return("SAVESTR"); + #ifdef FT_PAUSE + case FT_PAUSE: return ("PAUSE"); + #endif case FT_DONE: return("DONE"); case FT_NOP: return("NOP"); case FT_GOTO: return("GOTO"); *** ../mh-6.7-dist/uip/mshcmds.c Wed Jan 29 17:00:24 1992 --- uip/mshcmds.c Thu Jan 23 14:58:19 1992 *************** *** 1,6 **** /* mshcmds.c - command handlers in msh */ #ifndef lint ! static char ident[] = "@(#)$Id: mshcmds.c,v 1.6 91/01/14 16:48:39 mh Exp $"; #endif lint #include "../h/mh.h" --- 1,6 ---- /* mshcmds.c - command handlers in msh */ #ifndef lint ! static char ident[] = "@(#)$Id: mshcmds.c,v 1.7 1992/01/23 22:58:03 jromine Exp $"; #endif lint #include "../h/mh.h" *************** *** 2086,2092 **** else { zp = msh_ready (msgnum, 0); switch (state = scan (zp, msgnum, 0, nfs, width, ! msgnum == mp -> curmsg, headersw, fmsh ? 0L : (long) (Msgs[msgnum].m_stop - Msgs[msgnum].m_start), 1)) { case SCNMSG: --- 2086,2093 ---- else { zp = msh_ready (msgnum, 0); switch (state = scan (zp, msgnum, 0, nfs, width, ! msgnum == mp -> curmsg, ! headersw ? (fmsh ? fmsh : mp -> foldpath) : (char *)0, fmsh ? 0L : (long) (Msgs[msgnum].m_stop - Msgs[msgnum].m_start), 1)) { case SCNMSG: *** ../mh-6.7-dist/uip/post.c Fri Dec 14 13:26:08 1990 --- uip/post.c Thu Jan 30 14:40:01 1992 *************** *** 1,6 **** /* post.c - enter messages into the transport system */ #ifndef lint ! static char ident[] = "@(#)$Id: post.c,v 2.8 90/04/05 15:35:20 sources Exp $"; #endif lint #include "../h/mh.h" --- 1,6 ---- /* post.c - enter messages into the transport system */ #ifndef lint ! static char ident[] = "@(#)$Id: post.c,v 2.11 1992/01/30 22:39:58 jromine Exp $"; #endif lint #include "../h/mh.h" *************** *** 125,133 **** #define SNOOPSW 29 "snoop", -5, - #define FILLSW 30 - "fill-in file", -7, - NULL, NULL }; --- 125,130 ---- *************** *** 234,240 **** #define RESENT 1 static int msgstate = NORMAL; ! static long clock = 0L; /* the time we started (more or less) */ static TYPESIG (*hstat) (), (*istat) (), (*qstat) (), (*tstat) (); --- 231,237 ---- #define RESENT 1 static int msgstate = NORMAL; ! static long tclock = 0L; /* the time we started (more or less) */ static TYPESIG (*hstat) (), (*istat) (), (*qstat) (), (*tstat) (); *************** *** 292,303 **** static int encryptsw = 0; /* encrypt it */ - #ifdef WP - extern int do_wp; /* fill-in white pages queries */ - #endif - static char *fill_in = NULLCP; - - long lseek (), time (); static putfmt(), start_headers(), finish_headers(), putgrp(), pl(); --- 289,294 ---- *************** *** 510,522 **** snoop++; continue; #endif SENDMTS - - case FILLSW: - #ifdef WP - if (!(fill_in = *argp++) || *fill_in == '-') - adios (NULLCP, "missing argument to %s", argp[-2]); - #endif - continue; } if (msg) adios (NULLCP, "only one message at a time!"); --- 501,506 ---- *************** *** 525,533 **** } (void) alias (AliasFile); - #ifdef WP - do_wp++; - #endif /* */ --- 509,514 ---- *************** *** 568,574 **** else #endif MHMTS if (whomsw) { ! if ((out = fopen (fill_in ? fill_in : "/dev/null", "w")) == NULL) adios ("/dev/null", "unable to open"); } else { --- 549,555 ---- else #endif MHMTS if (whomsw) { ! if ((out = fopen ("/dev/null", "w")) == NULL) adios ("/dev/null", "unable to open"); } else { *************** *** 609,615 **** case BODY: case BODYEOF: finish_headers (out); ! if (whomsw && !fill_in) break; fprintf (out, "\n%s", buf); while (state == BODY) { --- 590,596 ---- case BODY: case BODYEOF: finish_headers (out); ! if (whomsw) break; fprintf (out, "\n%s", buf); while (state == BODY) { *************** *** 733,750 **** } hdr = &hdrtab[i]; ! if (hdr -> flags & HIGN) { ! if (fill_in) ! fprintf (out, "%s: %s", name, str); return; - } if (hdr -> flags & HBAD) { ! if (fill_in) ! fprintf (out, "%s: %s", name, str); ! else { ! advise (NULLCP, "illegal header line -- %s:", name); ! badmsg++; ! } return; } msgflags |= (hdr -> set & ~(MVIS | MINV)); --- 714,724 ---- } hdr = &hdrtab[i]; ! if (hdr -> flags & HIGN) return; if (hdr -> flags & HBAD) { ! advise (NULLCP, "illegal header line -- %s:", name); ! badmsg++; return; } msgflags |= (hdr -> set & ~(MVIS | MINV)); *************** *** 752,762 **** if (hdr -> flags & HSUB) subject = subject ? add (str, add ("\t", subject)) : getcpy (str); if (hdr -> flags & HFCC) { - if (fill_in) { - fprintf (out, "%s: %s", name, str); - return; - } - if (cp = rindex (str, '\n')) *cp = NULL; for (cp = pp = str; cp = index (pp, ','); pp = cp) { --- 726,731 ---- *************** *** 805,812 **** nameoutput = linepos = 0; (void) sprintf (namep, "%s%s", ! !fill_in && (hdr -> flags & HMNG) ? "Original-" : "", ! name); for (grp = 0, mp = tmpaddrs.m_next; mp; mp = np) if (mp -> m_nohost) { /* also used to test (hdr -> flags & HTRY) */ --- 774,780 ---- nameoutput = linepos = 0; (void) sprintf (namep, "%s%s", ! (hdr -> flags & HMNG) ? "Original-" : "", name); for (grp = 0, mp = tmpaddrs.m_next; mp; mp = np) if (mp -> m_nohost) { /* also used to test (hdr -> flags & HTRY) */ *************** *** 822,832 **** } if (hdr -> flags & HBCC) mp -> m_bcc++; ! if (mp -> m_ingrp = np -> m_ingrp) grp++; #ifdef MHMTS mp -> m_aka = getcpy (np -> m_mbox); #endif MHMTS if (putadr (namep, qp, mp, out, hdr -> flags)) msgflags |= (hdr -> set & (MVIS | MINV)); else --- 790,802 ---- } if (hdr -> flags & HBCC) mp -> m_bcc++; ! if (mp -> m_ingrp) grp++; #ifdef MHMTS mp -> m_aka = getcpy (np -> m_mbox); #endif MHMTS + if (mp -> m_gname) + putgrp (namep, mp -> m_gname, out, hdr -> flags); if (putadr (namep, qp, mp, out, hdr -> flags)) msgflags |= (hdr -> set & (MVIS | MINV)); else *************** *** 857,867 **** advise (NULLCP, "%s: field does not allow groups", name); badmsg++; } ! if (linepos) { ! if (fill_in && grp > 0) ! (void) putc (';', out); (void) putc ('\n', out); - } } /* */ --- 827,834 ---- advise (NULLCP, "%s: field does not allow groups", name); badmsg++; } ! if (linepos) (void) putc ('\n', out); } /* */ *************** *** 874,880 **** myuid = getuid (); mygid = getgid (); ! (void) time (&clock); (void) strcpy (from, adrsprintf (NULLCP, NULLCP)); --- 841,847 ---- myuid = getuid (); mygid = getgid (); ! (void) time (&tclock); (void) strcpy (from, adrsprintf (NULLCP, NULLCP)); *************** *** 915,924 **** if (whomsw) break; ! fprintf (out, "Date: %s\n", dtime (&clock)); if (msgid) fprintf (out, "Message-ID: <%d.%ld@%s>\n", ! getpid (), clock, LocalName ()); if (msgflags & MFRM) fprintf (out, "Sender: %s\n", from); else --- 882,891 ---- if (whomsw) break; ! fprintf (out, "Date: %s\n", dtime (&tclock)); if (msgid) fprintf (out, "Message-ID: <%d.%ld@%s>\n", ! getpid (), tclock, LocalName ()); if (msgflags & MFRM) fprintf (out, "Sender: %s\n", from); else *************** *** 943,952 **** fprintf (out, "Sender: %s\n", from); #endif MMDFI ! fprintf (out, "Resent-Date: %s\n", dtime (&clock)); if (msgid) fprintf (out, "Resent-Message-ID: <%d.%ld@%s>\n", ! getpid (), clock, LocalName ()); if (msgflags & MRFM) fprintf (out, "Resent-Sender: %s\n", from); else --- 910,919 ---- fprintf (out, "Sender: %s\n", from); #endif MMDFI ! fprintf (out, "Resent-Date: %s\n", dtime (&tclock)); if (msgid) fprintf (out, "Resent-Message-ID: <%d.%ld@%s>\n", ! getpid (), tclock, LocalName ()); if (msgflags & MRFM) fprintf (out, "Resent-Sender: %s\n", from); else *************** *** 992,998 **** if (mp -> m_mbox == NULL || ((flags & HTRY) && !insert (mp))) return 0; ! if (!fill_in && ((flags & (HBCC|HDCC)) || mp -> m_ingrp)) return 1; if (!nameoutput) { --- 959,965 ---- if (mp -> m_mbox == NULL || ((flags & HTRY) && !insert (mp))) return 0; ! if ((flags & (HBCC|HDCC)) || mp -> m_ingrp) return 1; if (!nameoutput) { *************** *** 1003,1009 **** if (*aka && mp -> m_type != UUCPHOST && !mp -> m_pers) mp -> m_pers = getcpy (aka); if (format) { ! if (mp -> m_gname && !fill_in) (void) sprintf (cp = buffer, "%s;", mp -> m_gname); else cp = adrformat (mp); --- 970,976 ---- if (*aka && mp -> m_type != UUCPHOST && !mp -> m_pers) mp -> m_pers = getcpy (aka); if (format) { ! if (mp -> m_gname) (void) sprintf (cp = buffer, "%s;", mp -> m_gname); else cp = adrformat (mp); *************** *** 1037,1053 **** int len; char *cp; ! if (!fill_in && (flags & HBCC)) return; if (!nameoutput) { fprintf (out, "%s: ", name); linepos += (nameoutput = strlen (name) + 2); - if (fill_in) - linepos -= strlen (group); } ! cp = fill_in ? group : concat (group, ";", NULLCP); len = strlen (cp); if (linepos > nameoutput) --- 1004,1018 ---- int len; char *cp; ! if (flags & HBCC) return; if (!nameoutput) { fprintf (out, "%s: ", name); linepos += (nameoutput = strlen (name) + 2); } ! cp = concat (group, ";", NULLCP); len = strlen (cp); if (linepos > nameoutput) *************** *** 1190,1199 **** adios (bccfil, "unable to create"); (void) chmod (bccfil, 0600); ! fprintf (out, "Date: %s\n", dtime (&clock)); if (msgid) fprintf (out, "Message-ID: <%d.%ld@%s>\n", ! getpid (), clock, LocalName ()); fprintf (out, "From: %s\n", signature); if (subject) fprintf (out, "Subject: %s", subject); --- 1155,1164 ---- adios (bccfil, "unable to create"); (void) chmod (bccfil, 0600); ! fprintf (out, "Date: %s\n", dtime (&tclock)); if (msgid) fprintf (out, "Message-ID: <%d.%ld@%s>\n", ! getpid (), tclock, LocalName ()); fprintf (out, "From: %s\n", signature); if (subject) fprintf (out, "Subject: %s", subject); *************** *** 2513,2519 **** pstat = signal (SIGPIPE, SIG_IGN); if (from) { /* no mail filtering, so... */ (void) sprintf (buffer, "From %s %.24s remote from %s\n", ! getusr (), ctime (&clock), SystemName ()); i = strlen (buffer); if (fwrite (buffer, sizeof *buffer, i, fp) != i) goto oops; --- 2478,2484 ---- pstat = signal (SIGPIPE, SIG_IGN); if (from) { /* no mail filtering, so... */ (void) sprintf (buffer, "From %s %.24s remote from %s\n", ! getusr (), ctime (&tclock), SystemName ()); i = strlen (buffer); if (fwrite (buffer, sizeof *buffer, i, fp) != i) goto oops; *************** *** 2599,2605 **** register struct mailname *lp; naddrs = 0; ! if (nm_init (getusr (), &clock) == NOTOK) { for (lp = netaddrs.m_next; lp; lp = lp -> m_next) if (lp -> m_bcc ? bccque : !bccque) fprintf (stderr, " %s at %s: unable to get queue file\n", --- 2564,2570 ---- register struct mailname *lp; naddrs = 0; ! if (nm_init (getusr (), &tclock) == NOTOK) { for (lp = netaddrs.m_next; lp; lp = lp -> m_next) if (lp -> m_bcc ? bccque : !bccque) fprintf (stderr, " %s at %s: unable to get queue file\n", *** ../mh-6.7-dist/uip/scan.c Fri Dec 14 13:26:10 1990 --- uip/scan.c Thu Jan 23 15:06:54 1992 *************** *** 1,6 **** /* scan.c - display a one-line "scan" listing */ #ifndef lint ! static char ident[] = "@(#)$Id: scan.c,v 1.8 90/04/05 14:59:58 sources Exp $"; #endif lint #include "../h/mh.h" --- 1,6 ---- /* scan.c - display a one-line "scan" listing */ #ifndef lint ! static char ident[] = "@(#)$Id: scan.c,v 1.9 1992/01/23 23:06:45 jromine Exp $"; #endif lint #include "../h/mh.h" *************** *** 204,210 **** m_unknown (in); for (msgnum = 1; ; ++msgnum) { ! state = scan (in, msgnum, -1, nfs, width, 0, hdrflag, 0L, 1); if (state != SCNMSG && state != SCNENC) break; } --- 204,211 ---- m_unknown (in); for (msgnum = 1; ; ++msgnum) { ! state = scan (in, msgnum, -1, nfs, width, 0, ! hdrflag ? file : (char *)0, 0L, 1); if (state != SCNMSG && state != SCNENC) break; } *************** *** 234,247 **** continue; } if (hdrflag) { (void) time (&clock); printf ("Folder %-32s%s\n\n", folder, dasctime (dlocaltime (&clock), TW_NULL)); } switch (state = scan (in, msgnum, 0, nfs, width, msgnum == mp -> curmsg, ! hdrflag, 0L, 1)) { case SCNMSG: case SCNENC: case SCNERR: --- 235,250 ---- continue; } + #ifndef JLR if (hdrflag) { (void) time (&clock); printf ("Folder %-32s%s\n\n", folder, dasctime (dlocaltime (&clock), TW_NULL)); } + #endif /* JLR */ switch (state = scan (in, msgnum, 0, nfs, width, msgnum == mp -> curmsg, ! hdrflag ? folder : (char *)0, 0L, 1)) { case SCNMSG: case SCNENC: case SCNERR: *** ../mh-6.7-dist/uip/scansbr.c Fri Dec 14 13:26:10 1990 --- uip/scansbr.c Wed Jan 29 16:11:38 1992 *************** *** 1,6 **** /* scansbr.c - routines to help scan along... */ #ifndef lint ! static char ident[] = "@(#)$Id: scansbr.c,v 1.5 90/04/05 14:57:59 sources Exp $"; #endif lint #include "../h/mh.h" --- 1,6 ---- /* scansbr.c - routines to help scan along... */ #ifndef lint ! static char ident[] = "@(#)$Id: scansbr.c,v 1.7 1992/01/30 00:11:23 jromine Exp $"; #endif lint #include "../h/mh.h" *************** *** 15,21 **** #define MAXSCANL 256 /* longest possible scan line */ ! #define SBUFSIZ 256 /* buffer size for content part of header * fields. We want this to be large * enough so that we don't do a lot of * extra FLDPLUS calls on m_getfld but --- 15,21 ---- #define MAXSCANL 256 /* longest possible scan line */ ! #define SBUFSIZ 512 /* buffer size for content part of header * fields. We want this to be large * enough so that we don't do a lot of * extra FLDPLUS calls on m_getfld but *************** *** 28,33 **** --- 28,36 ---- /* */ static struct format *fmt; + #ifdef JLR + static struct format *fmt_top; + #endif /* JLR */ static struct comp *datecomp; /* pntr to "date" comp */ static struct comp *bodycomp; /* pntr to "body" pseudo-comp *************** *** 53,65 **** /* ARGSUSED */ ! int scan (inb, innum, outnum, nfs, width, curflg, header, size, noisy) ! char *nfs; int innum, outnum, width, curflg, - header, noisy; long size; register FILE *inb; --- 56,68 ---- /* ARGSUSED */ ! int scan (inb, innum, outnum, nfs, width, curflg, folder, size, noisy) ! char *nfs, ! *folder; int innum, outnum, width, curflg, noisy; long size; register FILE *inb; *************** *** 92,99 **** --- 95,108 ---- (void) umask( ~ m_gmprot() ); ncomps = fmt_compile (nfs, &fmt) + 1; + #ifdef JLR + fmt_top = fmt; + #endif JLR FINDCOMP(bodycomp, "body"); FINDCOMP(datecomp, "date"); + FINDCOMP(cptr, "folder"); + if (cptr && folder) + cptr->c_text = folder; FINDCOMP(cptr, "encrypted"); if (!cptr) if (cptr = (struct comp *) calloc (1, sizeof *cptr)) { *************** *** 285,291 **** --- 294,306 ---- } } } + #ifndef JLR (void) fmtscan (fmt, scanl, slwidth, dat); + #else JLR + fmt = fmtscan (fmt, scanl, slwidth, dat); + if (!fmt) + fmt = fmt_top; /* reset for old format files */ + #endif JLR if (bodycomp) bodycomp->c_text = saved_c_text; *** /dev/null Thu Jan 30 13:49:21 1992 --- uip/sendmail.c Fri Jan 24 14:36:30 1992 *************** *** 0 **** --- 1,556 ---- + /* sendmail.c - */ + #ifndef lint + static char Id[] = "$Id: sendmail.c,v 1.5 1992/01/24 22:36:27 jromine Exp $"; + #endif + /* + ** A Sendmail fake. + * + * Contributed by Scott Erickson + */ + /* Include files glommed from post.c */ + + #include "../h/mh.h" + #include "../h/addrsbr.h" + #include "../h/aliasbr.h" + #include "../h/dropsbr.h" + #include "../zotnet/tws.h" + #ifndef MMDFMTS + #include + #include + #include + #include + #include + #else MMDFMTS + #include "../mts/mmdf/util.h" + #include "../mts/mmdf/mmdf.h" + #endif MMDFMTS + #include "../zotnet/mts.h" + #ifdef MHMTS + #ifndef V7 + #include + #endif not V7 + #include + #endif MHMTS + #ifdef SENDMTS + #include "../mts/sendmail/smail.h" + #undef MF + #endif SENDMTS + #include + + char *SMTPSRVR = "smtpsrvr"; + + char msgfname[50]; /* name of message file */ + char *FullName; /* sender's full name */ + char *from; /* sender's mail address */ + int verbose; + int verify; + int extract; + int dodist; + int rewritefrom; + int status; /* return value from procedures */ + static int childid; /* id from smtp child process */ + int die(); + long lclock = 0L; /* the time we started (more or less) */ + + + FILE *fp; /* file pointer for message file */ + extern FILE *tmpfile(); + + static struct swit switches[] = { + #define ARPASW 0 + "ba", -2, + #define DAEMONSW 1 + "bd", -2, + #define INITALSW 2 + "bi", -2, + #define DELIVSW 3 + "bm", -2, + #define QSUMSW 4 + "bp", -2, + #define SMTPSW 5 + "bs", -2, + #define ADRTSTSW 6 + "bt", -2, + #define ADRVRFSW 7 + "bv", -2, + #define CFGFRZSW 8 + "bz", -2, + #define ALTCFGSW 9 + "C", -1, + #define DBGVALSW 10 + "d", -1, + #define FULLSW 11 + "F", -1, + #define FROMSW 12 + "f", -1, + #define HOPCNTSW 13 + "h", -1, + #define MSGIDSW 14 + "M", -1, + #define NOALISW 15 + "n", -1, + #define QTIMESW 16 + "q", -1, + #define OBSFRMSW 17 + "r", -1, + #define EXTHDRSW 18 + "t", -1, + #define VERBSW 19 + "v", -1, + #define ALTALISW 20 + "oA", -2, + #define NOCONSW 21 + "oc", -2, + #define DLVMODSW 22 + "od", -2, + #define NEWALISW 23 + "oD", -2, + #define ERRMODSW 24 + "oe", -2, + #define TMPMODSW 25 + "oF", -2, + #define UFROMSW 26 + "of", -2, + #define GIDSW 27 + "og", -2, + #define HLPFILSW 28 + "oH", -2, + #define NODOTSW 29 + "oi", -2, + #define LOGLEVSW 30 + "oL", -2, + #define MEOKSW 31 + "om", -2, + #define OLDHDRSW 32 + "oo", -2, + #define QDIRSW 33 + "oQ", -2, + #define RTMOUTSW 34 + "or", -2, + #define SFILESW 35 + "oS", -2, + #define QMSGSW 36 + "os", -2, + #define MTMOUTSW 37 + "oT", -2, + #define TZSW 38 + "ot", -2, + #define UIDSW 39 + "ou", -2, + + NULL, NULL + }; + + /*ARGSUSED*/ + main(argc, argv) int argc; char **argv; { + register char *cp; + char **argp = argv + 1; + + invo_name = r1bindex (argv[0], '/'); + mts_init(argv[0]); + + if (signal(SIGINT, SIG_IGN) != SIG_IGN) + (void) signal(SIGINT, die); + if (signal(SIGHUP, SIG_IGN) != SIG_IGN) + (void) signal(SIGHUP, die); + (void) signal(SIGTERM, die); + (void) signal(SIGPIPE, die); + + FullName = getfullname(); + from = adrsprintf(NULLCP,NULLCP); + (void) time (&lclock); + + while ( (cp = *argp) && *cp == '-' ) { + argp++; + switch (smatch ( ++cp, switches )) { + case ARPASW: /* smtp on stdin */ + case SMTPSW: /* smtp on stdin */ + smtp(); + exit(98); /* should never happen */ + + case DELIVSW: /* just send mail */ + continue; + + case ADRVRFSW: /* verify mode */ + verify = 1; + continue; + + case FROMSW: /* from address */ + case OBSFRMSW: /* obsolete -f flag */ + if (*(++cp) == '\0' && + (!(cp = *argp++) || *cp == '-')) + adios (NULLCP, "missing argument to %s", argp[-2]); + /* At this point, cp points to the from name */ + if (rewritefrom) { + adios (NULLCP, "More than one \"from\" person"); + continue; + } + from = cp; + rewritefrom = 1; + continue; + + case EXTHDRSW: /* read recipients from message */ + extract = 1; + continue; + + case VERBSW: /* give blow-by-blow description */ + verbose = 1; + continue; + + /* These switches have no args. */ + case QMSGSW: /* always queue the message */ + case DAEMONSW: /* run as a daemon & wait for SMTP */ + case INITALSW: /* initialize the alias database */ + case QSUMSW: /* print summary of mail queue */ + case ADRTSTSW: /* test the addresses to debug config file */ + case CFGFRZSW: /* create the configuration freeze file */ + case NOALISW: /* do not do aliasing */ + case NOCONSW: /* do not initiate immediate host connection */ + case NEWALISW: /* run newaliases to rebuild db */ + case UFROMSW: /* save UNIX-style From lines at front of msg*/ + case NODOTSW: /* dots on line are not msg terminators */ + case MEOKSW: /* ok to send to me if I'm in an alias */ + case OLDHDRSW: /* msg may have old-style headers */ + continue; + + /* These switches have string args. */ + case ALTALISW: /* use alternate alias file */ + case ALTCFGSW: /* use alternate configuration file */ + case DBGVALSW: /* set the debug value */ + case FULLSW: /* set full name */ + case MSGIDSW: /* try to deliver queued msg with msg-id */ + case QTIMESW: /* interval between queue passes */ + case DLVMODSW: /* set the delivery mode */ + case ERRMODSW: /* set the error mode */ + case TMPMODSW: /* the mode to use when creating tmp files */ + case HLPFILSW: /* the SMTP help file */ + case QDIRSW: /* directory into which to queue messages */ + case RTMOUTSW: /* timeout on reads */ + case SFILESW: /* save statistics in this file */ + case MTMOUTSW: /* timeout on messages in the queue */ + case TZSW: /* set the name of the timezone */ + if (*(++cp) == '\0' && + (!(cp = *argp++) || *cp == '-')) + adios (NULLCP, "missing argument to %s", argp[-2]); + /* At this point, cp points to the argument */ + continue; /* Ignore */ + + /* These switches have numeric args. */ + case HOPCNTSW: /* hop count */ + case GIDSW: /* gid when calling mailers */ + case LOGLEVSW: /* the log level */ + case UIDSW: /* uid when calling mailers */ + if (*(++cp) == '\0' && + (!(cp = *argp++) || *cp == '-')) + adios (NULLCP, "missing argument to %s", argp[-2]); + /* At this point, cp points to the numeric arg */ + if (!isdigit(*cp)) + adios (NULLCP, "non-numeric argument to %s", argp[-2]); + continue; /* Ignore */ + } + } + + (void) setuid(getuid()); + + if (verify && extract) + adios (NULLCP, "mode not supported on header components"); + + if (*argp == NULL && !extract) + adios (NULLCP, "usage: /usr/lib/sendmail [flags] addr..."); + + strcpy (msgfname, "/tmp/sendmhXXXXXX"); + if ( mktemp(msgfname) == NULL ) + adios (msgfname, "can't create msg file "); + + if ( (fp = fopen(msgfname,"w") ) == NULL ) { + adios (msgfname, "error opening "); + } + + doheader(argp); + if ( verify ) { + (void) fclose(fp); + status = doverify(); + removemsg(); + exit ( status ) ; + } + dobody(); + status = sendfile(); + removemsg(); + exit ( status ); + } + + static removemsg() { + puts(msgfname); + /* + if ( unlink(msgfname) != 0 ) + perror("unlink"); + */ + } + + doheader(argp) char **argp; { + char line[BUFSIZ]; + int gotdate, gotfrom, gotsender, gotto; + + /* if we're not extracting the headers from the message, then we + * need to check to see if we need to do a "send" or a "dist". + */ + + if ( !extract ) { + /* If we're doing a verify, just create a "To:" header. */ + if ( ! verify ) { + gotdate = gotfrom = gotto = gotsender = dodist = 0; + while (fgets (line, BUFSIZ, stdin) != NULL) { + if (line[0] == '\n') /* end of header */ + break; + if ( !isheader(line) ) + break; + + /* if any of the following headers are present, then we + * want to do a dist. + */ + if ( !gotdate && uprf(line, "date") ) + gotdate = dodist = 1; + + else if ( !gotto && (uprf(line, "to") || uprf(line, "cc")) ) + gotto = dodist = 1; + + else if ( uprf(line, "message-id") ) + dodist = 1; + + else if ( !gotsender && uprf(line, "sender") ) + gotsender = dodist = 1; + + else if ( uprf ( line, "resent-" ) ) { + dodist = 1; + (void) fputs("Prev-", fp); + } + + /* See if we are re-writing the from line */ + if ( uprf(line, "from") ) { + gotfrom = 1; + if ( rewritefrom ) + dofrom(); + else + (void) fputs(line,fp); + } + else + (void) fputs(line,fp); + } + } + /* Now, generate a "to" line. The first line is easy. + * Write the rest of the lines with a newline/tab so that we + * don't accidentally write a line that's too long to be parsed + * by post. + */ + (void) fprintf (fp, "%sTo: %s", (dodist ? "Resent-" : "" ), *argp++); + while ( *argp ) + (void) fprintf ( fp, ",\n\t%s", *argp++ ); + (void) fputs("\n",fp); + + /* If we're doing a dist, we must have a "Date:" and "From:" field. + */ + if ( dodist ) { + if ( !gotdate ) + (void) fprintf (fp, "Date: %s\n", dtime (&lclock)); + if ( !gotfrom ) + dofrom(); + } + #ifdef MMDFI /* sigh */ + if ( !gotsender ) + (void) fprintf (fp, "Sender: %s\n", from); + #endif MMDFI + } else { /* we're verifying, so just pass everything through */ + while (fgets (line, BUFSIZ, stdin) != NULL) { + if (line[0] == '\n') /* end of header */ + break; + + if ( rewritefrom && uprf(line, "from")) + dofrom(); + else + (void) fputs(line,fp); + } + } + /* At this point, line is either a newline (end of header) or the + * first line of the body (poorly formatted message). If line + * contains a line of body from a poorly formatted message, then + * print a newline to separate the header correctly, then print + * the body line. + */ + if ( line[0] != '\n' ) /* i.e. a "body" line */ + (void) fputc('\n', fp); + (void) fputs(line, fp); + } + + static isheader(s) char *s; { + register char *cp; + + /* If the first character is a space, assume a continuation of a header */ + if ( isspace(*s) ) + return 1; + + /* If there's no ':', it's not a header */ + if ( (cp = index(s,':')) == NULL ) + return 0; + + /* If there's a space between BOL and ':', it's not a header */ + while ( s < cp ) { + if ( isspace(*s) ) + return 0; + s++; + } + return 1; + } + + /* This procedure does the verify and returns the status */ + doverify() { + char *command, buf[BUFSIZ], *bp; + FILE *verfp, *popen(); + + /* set up the command line for post */ + if ( (command = (char *)malloc((strlen(postproc) + + strlen(" -whom -check -verbose ") + + strlen(msgfname) + 1 )*sizeof(char))) + == NULL ) { + perror("malloc"); + return NOTOK; + } + + (void) strcpy(command,postproc); + (void) strcat(command," -whom -check "); + if ( verbose ) + (void) strcat(command, "-verbose " ); + (void) strcat(command, msgfname); + + /* open up the pipe */ + if ( (verfp = popen(command,"r")) == NULL ) + return NOTOK; + + while ( fgets(buf, BUFSIZ, verfp) != NULL ) + /* sendmail returns: + * address: result + * so we need to strip the extra post headers. + */ + if ( verbose ) { + bp = buf; + while (isspace(*bp)) + bp++; + if ( *bp != '-' ) + (void) fputs(bp,stdout); + } + + /* return the error status of post */ + return( pclose(verfp) >> 8 ); + } + + static sendfile() { + char *command, buf[BUFSIZ]; + FILE *verfp, *popen(); + + /* set up the command line for post */ + if ( (command = (char *)malloc((strlen(postproc) + + strlen(" -dist -verbose ") + + strlen(msgfname) + 1 )*sizeof(char))) + == NULL ) { + perror("malloc"); + return NOTOK; + } + + (void) strcpy(command,postproc); + (void) strcat(command," "); + if ( verbose ) + (void) strcat(command, "-verbose " ); + if ( dodist ) + (void) strcat(command, "-dist " ); + (void) strcat(command, msgfname); + + /* open up the pipe */ + if ( (verfp = popen(command,"r")) == NULL ) + return NOTOK; + + while ( fgets(buf, BUFSIZ, verfp) != NULL ) + (void) fputs(buf,stdout); + + /* return the error status of post */ + return( pclose(verfp) >> 8 ); + } + + dofrom() { + char line[128]; + + if (FullName) + (void) sprintf(line, "From: %s <%s>\n", FullName, from); + else + (void) sprintf(line, "From: %s\n", from); + (void) fputs(line, fp); + } + + dobody() { + register int i; + char buffer[BUFSIZ]; + + while (!feof (stdin) && !ferror (stdin) && + (i = fread (buffer, sizeof (char), sizeof (buffer), stdin)) > 0) + if (fwrite (buffer, sizeof (char), i , fp) != i ) + adios (NULLCP, "Problem writing body"); + + if (ferror (stdin)) + adios (NULLCP, "Problem reading body"); + + if ( fclose(fp) != 0 ) + adios (NULLCP, "problem ending submission"); + } + + int silentdie(); + + smtp() + { + int sd,len; + char buf[BUFSIZ], response[BUFSIZ]; + + if ((sd = client(NULLCP, "tcp", "smtp", 0, response)) == NOTOK) + adios (NULLCP, "cannot open smtp client process"); + + (void) signal(SIGCHLD, silentdie); + + switch ((childid = fork())) { + case NOTOK: + adios (NULLCP, "unable to fork smtp process"); + + case OK: /* i.e. child */ + (void) dup2(sd,0); + break; + + default: /* i.e. parent */ + (void) dup2(sd,1); + break; + } + while ( (len = read(0, buf, BUFSIZ)) > 0) + (void) write (1, buf, len); + + if (childid) + (void) kill(childid, SIGHUP); + + exit(9); + } + + /* ARGSUSED */ + die(sig) + int sig; + { + if (fp) { + (void) fclose(fp); + (void) unlink(msgfname); + } + if (sig != SIGHUP) + (void) fprintf(stderr, "sendmail: dying from signal %d\n", sig); + exit(99); + } + + /* ARGSUSED */ + + silentdie(sig) + int sig; + { + pidwait (childid, OK); + exit(0); + } *** ../mh-6.7-dist/uip/slocal.c Wed Jan 29 17:00:26 1992 --- uip/slocal.c Wed Jan 29 16:06:08 1992 *************** *** 1,6 **** /* slocal.c - MH style mailer to write to a local user's mailbox */ #ifndef lint ! static char ident[] = "@(#)$Id: slocal.c,v 1.9 91/01/10 14:39:00 mh Exp $"; #endif lint /* This program implements mail delivery in the MH/MMDF style. --- 1,6 ---- /* slocal.c - MH style mailer to write to a local user's mailbox */ #ifndef lint ! static char ident[] = "@(#)$Id: slocal.c,v 1.10 1992/01/30 00:06:00 jromine Exp $"; #endif lint /* This program implements mail delivery in the MH/MMDF style. *************** *** 505,511 **** --- 505,515 ---- if (!uleq (action, "file")) continue; /* else fall */ case '>': + #ifndef RPATHS status = usr_file (fd, string, from); /* UUCP format? */ + #else + status = usr_file (fd, string, NULLCP); + #endif break; case 'd': *** ../mh-6.7-dist/uip/vmh.c Fri Dec 14 13:26:13 1990 --- uip/vmh.c Thu Jan 23 16:05:15 1992 *************** *** 1,6 **** /* vmh.c - visual front-end to mh */ #ifndef lint ! static char ident[] = "@(#)$Id: vmh.c,v 1.6 90/04/05 15:00:17 sources Exp $"; #endif lint #ifdef SYS5 /* --- 1,6 ---- /* vmh.c - visual front-end to mh */ #ifndef lint ! static char ident[] = "@(#)$Id: vmh.c,v 1.7 1992/01/24 00:05:13 jromine Exp $"; #endif lint #ifdef SYS5 /* *************** *** 24,29 **** --- 24,32 ---- */ #include + #ifdef ncr + #define _SYS_REG_H /* NCR redefines "ERR" in */ + #endif #undef OK /* tricky */ #ifdef TERMINFO #include /* variables describing terminal capabilities */ *** ../mh-6.7-dist/uip/whatnowsbr.c Wed Jan 29 17:00:27 1992 --- uip/whatnowsbr.c Thu Jan 30 14:40:03 1992 *************** *** 1,6 **** /* whatnowsbr.c - the WhatNow shell */ #ifndef lint ! static char ident[] = "@(#)$Id: whatnowsbr.c,v 1.10 91/01/23 15:43:31 mh Exp $"; #endif lint #include "../h/mh.h" --- 1,6 ---- /* whatnowsbr.c - the WhatNow shell */ #ifndef lint ! static char ident[] = "@(#)$Id: whatnowsbr.c,v 1.12 1992/01/30 22:39:58 jromine Exp $"; #endif lint #include "../h/mh.h" *************** *** 335,341 **** default: if (status = pidwait (pid, NOTOK)) { ! #ifdef SUNVIBUG if ((cp = r1bindex (*ed, '/')) && strcmp (cp, "vi") == 0 && (status & 0x00ff) == 0) --- 335,341 ---- default: if (status = pidwait (pid, NOTOK)) { ! #ifdef ATTVIBUG if ((cp = r1bindex (*ed, '/')) && strcmp (cp, "vi") == 0 && (status & 0x00ff) == 0) *************** *** 354,360 **** file); status = -2; /* maybe "reedit ? -2 : -1"? */ break; ! #ifdef SUNVIBUG } #endif } --- 354,360 ---- file); status = -2; /* maybe "reedit ? -2 : -1"? */ break; ! #ifdef ATTVIBUG } #endif } *************** *** 786,801 **** int pid; register int vecp; char *vec[MAXARGS]; - #ifdef WP - char *cp, - draft[BUFSIZ], - backup[BUFSIZ]; - #endif - #ifdef WP - (void) strcpy (draft, m_scratch (file, invo_name)); - #endif - m_update (); (void) fflush (stdout); --- 786,792 ---- *************** *** 811,820 **** if (arg) while (*arg) vec[vecp++] = *arg++; - #ifdef WP - vec[vecp++] = "-fill-in"; - vec[vecp++] = draft; - #endif vec[vecp] = NULL; execvp (whomproc, vec); --- 802,807 ---- *************** *** 823,850 **** _exit (-1); /* NOTREACHED */ default: - #ifndef WP return (pidwait (pid, NOTOK) & 0377 ? 1 : 0); - #else - if (pidwait (pid, NOTOK)) { - (void) unlink (draft); - return 1; - } break; - #endif } - - #ifdef WP - if (rename (file, cp = m_backup (file)) == NOTOK) { - advise (cp, "unable to rename %s to", file); - (void) unlink (draft); - return 1; - } - if (rename (draft, file) == NOTOK) { - advise (file, "unable to rename %s to ", draft); - return 1; - } - - return 0; - #endif } --- 810,816 ---- *** ../mh-6.7-dist/uip/whom.c Fri Dec 14 13:26:14 1990 --- uip/whom.c Thu Jan 30 14:40:04 1992 *************** *** 1,6 **** /* whom.c - report who a message would go to */ #ifndef lint ! static char ident[] = "@(#)$Id: whom.c,v 1.4 90/04/05 15:00:25 sources Exp $"; #endif lint #include "../h/mh.h" --- 1,6 ---- /* whom.c - report who a message would go to */ #ifndef lint ! static char ident[] = "@(#)$Id: whom.c,v 1.5 1992/01/30 22:39:58 jromine Exp $"; #endif lint #include "../h/mh.h" *************** *** 38,46 **** #define SNOOPSW 10 "snoop", -5, - #define FILLSW 11 - "fill-in file", -7, - NULL, NULL }; --- 38,43 ---- *************** *** 131,137 **** case ALIASW: case CLIESW: case SERVSW: - case FILLSW: vec[vecp++] = --cp; if (!(cp = *argp++) || *cp == '-') adios (NULLCP, "missing argument to %s", argp[-2]); --- 128,133 ---- *** ../mh-6.7-dist/zotnet/bboards/getbbent.c Fri Dec 14 13:26:15 1990 --- zotnet/bboards/getbbent.c Tue Aug 6 10:23:18 1991 *************** *** 1,6 **** /* getbbent.c - subroutines for accessing the BBoards file */ #ifndef lint ! static char ident[] = "@(#)$Id: getbbent.c,v 1.5 90/04/09 10:11:57 sources Exp $"; #endif lint /* LINTLIBRARY */ --- 1,6 ---- /* getbbent.c - subroutines for accessing the BBoards file */ #ifndef lint ! static char ident[] = "@(#)$Id: getbbent.c,v 1.5 1990/04/09 10:11:57 sources Exp jromine $"; #endif lint /* LINTLIBRARY */ *************** *** 618,624 **** char *getbberr () { return (BBErrors[0] ? BBErrors : NULL); ! }; /* */ --- 618,624 ---- char *getbberr () { return (BBErrors[0] ? BBErrors : NULL); ! } /* */ *** ../mh-6.7-dist/zotnet/mf/mf.c Fri Dec 14 13:26:16 1990 --- zotnet/mf/mf.c Thu Jan 30 14:40:38 1992 *************** *** 1,6 **** /* mf.c - mail filter subroutines */ #ifndef lint ! static char ident[] = "@(#)$Id: mf.c,v 1.6 90/04/05 15:04:19 sources Exp $"; #endif lint #include "mf.h" --- 1,6 ---- /* mf.c - mail filter subroutines */ #ifndef lint ! static char ident[] = "@(#)$Id: mf.c,v 1.7 1992/01/30 22:40:35 jromine Exp $"; #endif lint #include "mf.h" *************** *** 304,312 **** #define QUOTE '\\' - #ifdef WP - #define LX_WP (-1) - #endif #define LX_END 0 #define LX_ERR 1 #define LX_ATOM 2 --- 304,309 ---- *************** *** 360,381 **** static struct adrx adrxs2; - - #ifdef WP - char *concat (); - - extern int do_wp; - char *wp_expand (); - #endif - /* */ struct adrx *getadrx (addrs) register char *addrs; { - #ifdef WP - int save_lex; - #endif register char *bp; register struct adrx *adrxp = &adrxs2; --- 357,367 ---- *************** *** 405,433 **** return NULL; } - #ifdef WP - bp = cp, save_lex = last_lex; - if (my_lex (adr) == LX_WP) { - register char *ep, - *fp; - - if (fp = wp_expand (adr, err)) { - *bp = NULL; - ep = concat (dp, fp, cp, (char *) NULL); - cp = ep + strlen (dp), last_lex = save_lex; - free (dp); - dp = ep; - free (fp); - } - else { - ap = bp, save_lex = last_lex; - goto out; - } - } - else - cp = bp, last_lex = save_lex; - #endif - switch (parse_address ()) { case DONE: free (dp); --- 391,396 ---- *************** *** 452,460 **** break; } - #ifdef WP - out: ; - #endif if (err[0]) for (;;) { switch (last_lex) { --- 415,420 ---- *************** *** 846,866 **** cp = NULL; return (last_lex = LX_END); } - - #ifdef WP - if (do_wp && c == '<' && *cp == '<') - for (cp++;;) - switch (c = *cp++) { - case '>': - *bp = NULL; - cp++; - return (last_lex = LX_WP); - - default: - *bp++ = c; - continue; - } - #endif if (c == '(') for (*bp++ = c, i = 0;;) --- 806,811 ---- *** ../mh-6.7-dist/conf/config/config.c Fri Dec 14 13:23:47 1990 --- conf/config/config.c Fri Jan 24 17:10:25 1992 *************** *** 1,4 **** --- 1,7 ---- /* config.c - master MH configuration file */ + #ifndef lint + static char ident[] = "@(#)$Id: config.c,v 1.5 1992/01/24 00:35:28 jromine Exp $"; + #endif lint /* @(MHWARNING) */ *************** *** 19,24 **** --- 22,28 ---- #define etcpath(file) "@(MHETCPATH)/file" #endif + static char Config[] = "@(#)Config: @(MHCONFIGFILE)"; @(MHCONFIG) *** ../mh-6.7-dist/conf/config/mts.c Fri Dec 14 13:23:48 1990 --- conf/config/mts.c Thu Feb 14 15:18:22 1991 *************** *** 1,6 **** /* mts.c - definitions for the mail transport system */ #ifndef lint ! static char ident[] = "@(#)$Id: mts.c,v 2.6 90/11/05 12:06:39 mh Exp $"; #endif lint /* LINTLIBRARY */ --- 1,6 ---- /* mts.c - definitions for the mail transport system */ #ifndef lint ! static char ident[] = "@(#)$Id: mts.c,v 2.7 91/02/14 15:17:56 mh Exp $"; #endif lint /* LINTLIBRARY */ *************** *** 477,487 **** return username; } if (MMailids) { - np = pw -> pw_gecos; - for (cp = fullname; *np && *np != '<'; *cp++ = *np++) - continue; - *cp = NULL; if (*np) np++; for (cp = username; *np && *np != '>'; *cp++ = *np++) --- 477,487 ---- return username; } + np = pw -> pw_gecos; + for (cp = fullname; *np && *np != (MMailids ? '<' : ','); *cp++ = *np++) + continue; + *cp = NULL; if (MMailids) { if (*np) np++; for (cp = username; *np && *np != '>'; *cp++ = *np++) *************** *** 488,502 **** continue; *cp = NULL; } ! if (MMailids == 0 || *np == NULL) { (void) strcpy (username, pw -> pw_name); ! fullname[0] = NULL; ! } if ((cp = getenv ("SIGNATURE")) && *cp) (void) strcpy (fullname, cp); if (index(fullname, '.')) { /* quote any .'s */ char tmp[BUFSIZ]; ! sprintf (tmp, "\"%s\"", fullname); strcpy (fullname, tmp); } --- 488,501 ---- continue; *cp = NULL; } ! if (MMailids == 0 || *np == NULL) (void) strcpy (username, pw -> pw_name); ! if ((cp = getenv ("SIGNATURE")) && *cp) (void) strcpy (fullname, cp); if (index(fullname, '.')) { /* quote any .'s */ char tmp[BUFSIZ]; ! sprintf (tmp, "\"%s\"", fullname);/* should quote "'s too */ strcpy (fullname, tmp); } *** ../mh-6.7-dist/conf/doc/MH.rf Wed Jan 29 17:00:07 1992 --- conf/doc/MH.rf Wed Jan 29 14:51:23 1992 *************** *** 1,3 **** .\" @(MHWARNING) ! .\" @(#)$Id: MH.rf,v 1.15 91/01/25 15:49:34 mh Exp $ .po +.75i --- 1,3 ---- .\" @(MHWARNING) ! .\" @(#)$Id: MH.rf,v 1.15 1991/01/25 15:49:34 mh Exp jromine $ .po +.75i *************** *** 1069,1070 **** --- 1069,1071 ---- .so dist.me + .so fmtdump.me .so folder.me *** ../mh-6.7-dist/conf/doc/mh-alias.rf Fri Dec 14 13:23:55 1990 --- conf/doc/mh-alias.rf Thu Jan 30 11:05:17 1992 *************** *** 1,3 **** .\" @(MHWARNING) ! .\" @(#)$Id: mh-alias.rf,v 1.7 90/04/05 15:10:15 sources Exp $ .SC MH\-ALIAS 5 --- 1,3 ---- .\" @(MHWARNING) ! .\" @(#)$Id: mh-alias.rf,v 1.8 1992/01/30 19:05:13 jromine Exp $ .SC MH\-ALIAS 5 *************** *** 119,120 **** --- 119,121 ---- sgroup: fred, fear, freida + b-people: Blind List: bill, betty; fred: frated@UCI *************** *** 134,135 **** --- 135,140 ---- the three names \*(lqfrated@UCI\*(rq, \*(rqfear\*(rq, and \*(rqfreida\*(rq. + The alias \*(lqb-people\*(rq is a blind list which includes the + addresses \*(lqbill\*(rq and \*(lqbetty\*(rq; the message + will be delieved to those addresses, but the + message header will show only \*(lqBlind List: ;\*(rq (not the addresses). Next, the definition of \*(lqUNIX\-committee\*(rq is given by reading *** ../mh-6.7-dist/conf/doc/mh-chart.rf Wed Jan 29 17:00:09 1992 --- conf/doc/mh-chart.rf Wed Jan 29 14:50:54 1992 *************** *** 1,3 **** .\" @(MHWARNING) ! .\" @(#)$Id: mh-chart.rf,v 2.10 91/01/07 11:13:54 mh Exp $ .if '\*(ZZ'-man' \{\ --- 1,3 ---- .\" @(MHWARNING) ! .\" @(#)$Id: mh-chart.rf,v 2.11 1992/01/29 22:50:50 jromine Exp $ .if '\*(ZZ'-man' \{\ *************** *** 118,119 **** --- 118,124 ---- \%[\-help] + + .ti .5i + .ne 3 + fmtdump + \%[filename] *** ../mh-6.7-dist/conf/doc/mh-format.rf Wed Jan 29 17:00:10 1992 --- conf/doc/mh-format.rf Wed Jan 29 14:57:07 1992 *************** *** 1,3 **** .\" @(MHWARNING) ! .\" @(#)$Id: mh-format.rf,v 1.29 91/01/11 09:17:35 mh Exp $ .SC MH\-FORMAT 5 --- 1,3 ---- .\" @(MHWARNING) ! .\" @(#)$Id: mh-format.rf,v 1.30 1992/01/29 22:55:31 jromine Exp $ .SC MH\-FORMAT 5 *************** *** 203,204 **** --- 203,205 ---- lit literal string Set \fIstr\fR to \fIarg\fR + getenv literal string Set \fIstr\fR to environment value of \fIarg\fR .\" dat literal int ? *** ../mh-6.7-dist/conf/doc/mh-sequence.rf Wed Jan 29 17:00:11 1992 --- conf/doc/mh-sequence.rf Wed Jan 29 15:43:10 1992 *************** *** 1,3 **** .\" @(MHWARNING) ! .\" @(#)$Id: mh-sequence.rf,v 1.9 91/01/09 11:34:34 mh Exp $ .SC MH\-SEQUENCE 5 --- 1,3 ---- .\" @(MHWARNING) ! .\" @(#)$Id: mh-sequence.rf,v 1.9 1991/01/09 11:34:34 mh Exp jromine $ .SC MH\-SEQUENCE 5 *************** *** 60,62 **** In commands which accept a `msgs' argument, the default is either ! \*(lqcur\*(rq or \*(lqall\*(rq, depending on which makes more sense. Repeated specifications of the same message have the same effect as --- 60,63 ---- In commands which accept a `msgs' argument, the default is either ! \*(lqcur\*(rq or \*(lqall\*(rq, depending on which makes more sense ! for each command (see the individual man pages for details). Repeated specifications of the same message have the same effect as *** ../mh-6.7-dist/conf/doc/refile.rf Wed Jan 29 17:00:14 1992 --- conf/doc/refile.rf Wed Jan 29 15:51:18 1992 *************** *** 1,3 **** .\" @(MHWARNING) ! .\" @(#)$Id: refile.rf,v 1.8 91/01/14 16:43:06 mh Exp $ .SC REFILE 1 --- 1,3 ---- .\" @(MHWARNING) ! .\" @(#)$Id: refile.rf,v 1.8 1991/01/14 16:43:06 mh Exp $ .SC REFILE 1 *** ../mh-6.7-dist/conf/doc/scan.rf Wed Jan 29 17:00:15 1992 --- conf/doc/scan.rf Wed Jan 29 14:56:25 1992 *************** *** 1,3 **** .\" @(MHWARNING) ! .\" @(#)$Id: scan.rf,v 1.9 91/01/07 11:13:47 mh Exp $ .SC SCAN 1 --- 1,3 ---- .\" @(MHWARNING) ! .\" @(#)$Id: scan.rf,v 1.10 1992/01/29 22:56:18 jromine Exp $ .SC SCAN 1 *************** *** 87,89 **** In addition to the standard \fImh\-format\fR\0(5) escapes, ! \fIscan\fR also recognizes the following additional \fIcomponent\fR escape: .sp 1 --- 87,89 ---- In addition to the standard \fImh\-format\fR\0(5) escapes, ! \fIscan\fR also recognizes the following additional \fIcomponent\fR escapes: .sp 1 *************** *** 93,94 **** --- 93,95 ---- body string the (compressed) first part of the body + folder string the name of the current folder .re *** /dev/null Thu Jan 30 13:49:21 1992 --- conf/examples/ncr-sys5.4.2 Tue Aug 6 10:35:06 1991 *************** *** 0 **** --- 1,32 ---- + # an NCR system: Unix System V Release 4.0.2.0 (WINS) + # running MMDF2 with SMTP posting + # + # Apparently, there are two compilation environments: 4.2BSD and SYS5. + # To use the socket() syscall, you evidently need the 4.2BSD environment. + # This means that you must use /usr/ucb/cc to compile the system. + # + # uip/vmh.c still won't compile because of loader problems with the + # curses & termlib libraries. NCR should fix their loader not to try to + # search additional libraries for modules that have already been found. + # + bin /usr/local + etc /usr/local/lib/mh + mail .mail + manuals gen + chown /usr/bin/chown + mts mmdf2/smtp + mf off + bboards off + bbdelivery off + cc /usr/ucb/cc + oldload none + ldoptlibs -lucb + curses -ltermlib -lcurses + ranlib off + sprintf char * + options ncr + options BSD42 + options LOCKF + options MORE='"/usr/bin/more"' + options TZNAME + options TYPESIG=void *** /dev/null Thu Jan 30 13:49:21 1992 --- conf/examples/uci.sequent Thu Jan 30 13:05:24 1992 *************** *** 0 **** --- 1,38 ---- + # uci.sun - for a Sequent running Dynix 3.0.17 + bin /usr/local/mh-6.7.2 + bbhome /usr/bboards + etc /usr/local/lib/mh-6.7.2 + mail /usr/spool/mail + mailgroup off + mandir /usr/man + manuals local + chown /etc/chown + editor prompter + remove mv -f + mts mmdf2/smtp + bboards nntp + bbdelivery on + mf off + pop on + options BIND + options BSD42 + options BSD43 + #options DBM + #options LOCKF + options MHE + options MHRC + #options NFS + options POP2 + options RPATHS + options RPOP + #options SUN40 + #options TYPESIG=void + options WHATNOW + options UCI + #options ZONEINFO + cc atscc + ldoptions -s + ldoptlibs -ldbm -lseq + curses -lcurses -ltermcap + ranlib on + sharedlib off *** ../mh-6.7-dist/conf/examples/uci.sun Wed Jan 29 17:00:16 1992 --- conf/examples/uci.sun Tue Jan 28 15:07:56 1992 *************** *** 1,5 **** # uci.sun - for a Sun3 or Sun4 running Sun OS 4.1 ! bin /usr/local bbhome /usr/bboards ! etc /usr/local/lib/mh mail /usr/spool/mail --- 1,5 ---- # uci.sun - for a Sun3 or Sun4 running Sun OS 4.1 ! bin /usr/local/mh-6.7.2 bbhome /usr/bboards ! etc /usr/local/lib/mh-6.7.2 mail /usr/spool/mail *************** *** 7,9 **** mandir /usr/man ! manuals local chown /etc/chown --- 7,10 ---- mandir /usr/man ! #manuals local ! manuals gen chown /etc/chown *************** *** 20,22 **** options DBM ! options LOCKF options MHE --- 21,23 ---- options DBM ! #options LOCKF options MHE *************** *** 27,30 **** options RPOP ! options SUN40 options SUNVIBUG options TYPESIG=void --- 28,33 ---- options RPOP ! options SUN40 ! options SUN41 options SUNVIBUG + options ATTVIBUG options TYPESIG=void *************** *** 33,34 **** --- 36,39 ---- #options ZONEINFO + # for Sun4s + cc /usr/bs/sunc/cc ldoptions -s *** /dev/null Thu Jan 30 13:49:21 1992 --- conf/examples/uci.sun.debug Tue Feb 12 15:57:14 1991 *************** *** 0 **** --- 1,41 ---- + # uci.sun - for a Sun3 or Sun4 running Sun OS 4.1 + bin /usr/local + bbhome /usr/bboards + etc /usr/local/lib/mh + mail /usr/spool/mail + mailgroup off + mandir /usr/man + manuals local + chown /etc/chown + editor prompter + remove mv -f + mts mmdf2/smtp + bboards nntp + bbdelivery off + mf off + pop on + options BIND + options BSD42 + options BSD43 + options DBM + options LOCKF + options MHE + options MHRC + options NFS + options POP2 + options RPATHS + options RPOP + options SUN40 + options SUNVIBUG + options TYPESIG=void + options WHATNOW + options UCI + #options ZONEINFO + ccoptions -g + #ldoptions -s + ldoptlibs -ldbm + curses -lcurses -ltermcap + ranlib on + #sharedlib on + sharedlib off + slibdir /usr/local/lib *** ../mh-6.7-dist/conf/makefiles/doc Wed Jan 29 17:00:17 1992 --- conf/makefiles/doc Wed Jan 29 15:33:36 1992 *************** *** 4,6 **** # @(MHWARNING) ! # @(#)$Id: doc,v 2.12 91/01/25 15:49:10 mh Exp $ ############################################################################## --- 4,6 ---- # @(MHWARNING) ! # @(#)$Id: doc,v 2.13 1992/01/29 23:33:31 jromine Exp $ ############################################################################## *************** *** 84,86 **** ! .me.doc:; nroff -me $< > $@ --- 84,86 ---- ! .me.doc:; nroff -Tlpr -me $< > $@ *** ../mh-6.7-dist/conf/makefiles/sbr Fri Dec 14 13:24:09 1990 --- conf/makefiles/sbr Thu Jan 30 08:36:20 1992 *************** *** 4,6 **** # @(MHWARNING) ! # @(#)$Id: sbr,v 2.9 90/04/08 22:00:14 sources Exp $ ############################################################################## --- 4,6 ---- # @(MHWARNING) ! # @(#)$Id: sbr,v 2.12 1992/01/30 16:36:16 jromine Exp $ ############################################################################## *************** *** 22,24 **** @BEGIN: STDLIB ! LIB = libmh.a @END: STDLIB --- 22,24 ---- @BEGIN: STDLIB ! LIBS = libmh.a @END: STDLIB *************** *** 25,27 **** @BEGIN: SHAREDLIB ! LIB = libmh.so SLIBDIR = @(SLIBDIR) --- 25,28 ---- @BEGIN: SHAREDLIB ! LIBS = shared libmh.a libmh.so libmh.sa ! SLIBVER = @(SLIBVER) SLIBDIR = @(SLIBDIR) *************** *** 44,47 **** showfile.c smatch.c sprintb.c ssequal.c strindex.c trimcpy.c \ ! uleq.c uprf.c vfgets.c OFILES = add.o adios.o admonish.o addrsbr.o advertise.o advise.o \ --- 45,49 ---- showfile.c smatch.c sprintb.c ssequal.c strindex.c trimcpy.c \ ! uleq.c uprf.c vfgets.c formatdef.c m_msgdef.c + OFILES = add.o adios.o admonish.o addrsbr.o advertise.o advise.o \ *************** *** 59,62 **** showfile.o smatch.o sprintb.o ssequal.o strindex.o trimcpy.o \ ! uleq.o uprf.o vfgets.o --- 61,67 ---- showfile.o smatch.o sprintb.o ssequal.o strindex.o trimcpy.o \ ! uleq.o uprf.o vfgets.o formatdef.o m_msgdef.o + @BEGIN: SHAREDLIB + ODEFS = formatdef.o m_msgdef.o + @END: SHAREDLIB *************** *** 67,73 **** @BEGIN: SHAREDLIB ! .c.o:; $(CC) $(CFLAGS) -c $*.c -pic @END: SHAREDLIB ! @BEGIN: STDLIB ! .c.o:; $(CC) $(CFLAGS) -c $*.c @BEGIN: NEWLOAD --- 72,81 ---- + .c.o: @BEGIN: SHAREDLIB ! -rm -f $@ shared/$@ ! $(CC) $(CFLAGS) -c -pic $*.c ! mv $@ shared/$@ ! -rm -f $@ @END: SHAREDLIB ! $(CC) $(CFLAGS) -c $*.c @BEGIN: NEWLOAD *************** *** 79,83 **** @END: OLDLOAD - @END: STDLIB - @END: OPTIM --- 87,89 ---- *************** *** 87,93 **** ! all: version $(LIB) ! $(LIB): $(OFILES) -mv $@ z$@ - @BEGIN: STDLIB @BEGIN: RANLIB --- 93,98 ---- ! all: $(LIBS) ! libmh.a: $(OFILES) -mv $@ z$@ @BEGIN: RANLIB *************** *** 100,106 **** -@echo "MH library built normally" ! @END: STDLIB @BEGIN: SHAREDLIB ! ld -o $@ $(OFILES) ! -@rm -f $@.`cat version` ! ln $@ $@.`cat version` -@ls -l $@* --- 105,113 ---- -@echo "MH library built normally" ! @BEGIN: SHAREDLIB ! libmh.so: $(OFILES) ! -mv -f $@ z$@ ! (cd shared; ld -o ../$@ -assert pure-text $(OFILES)) ! -@rm -f $@.$(SLIBVER) ! ln $@ $@.$(SLIBVER) -@ls -l $@* *************** *** 107,113 **** -@echo "MH shared library built normally" - @END: SHAREDLIB ! version: $(CFILES) ! @/bin/sh version.sh @(MHRELEASE) --- 114,131 ---- -@echo "MH shared library built normally" ! libmh.sa: $(ODEFS) ! -mv $@ z$@ ! @BEGIN: RANLIB ! ar r $@ $(ODEFS); ranlib $@ ! @END: RANLIB ! @BEGIN: LORDER ! ar r $@ `lorder $(ODEFS) | tsort` ! @END: LORDER ! -@rm -f $@.$(SLIBVER) ! ln $@ $@.$(SLIBVER) ! -@ls -l $@* ! -@echo "MH data interface description built normally" + shared:; @if [ -d shared ]; then exit 0; else set -x; mkdir shared; fi + @END: SHAREDLIB *************** *** 118,126 **** @BEGIN: SHAREDLIB ! inst-lib: $(LIB) ! -rm -f $(SLIBDIR)/$(LIB) ! cp $(LIB) $(SLIBDIR)/$(LIB).`cat version` ! -@chmod $(PGMPROT) $(SLIBDIR)/$(LIB).`cat version` ! -@ls -l $(SLIBDIR)/$(LIB)* ! -@echo "Library installed normally" -@echo "" @END: SHAREDLIB --- 136,150 ---- @BEGIN: SHAREDLIB ! inst-lib: libmh.so libmh.sa ! -rm -f $(SLIBDIR)/libmh.so.$(SLIBVER) ! cp libmh.so.$(SLIBVER) $(SLIBDIR)/libmh.so.$(SLIBVER) ! -@chmod $(PGMPROT) $(SLIBDIR)/libmh.so.$(SLIBVER) ! -@ls -l $(SLIBDIR)/libmh.so.* ! -@echo "Shared library installed normally" -@echo "" + -rm -f $(SLIBDIR)/libmh.sa.$(SLIBVER) + cp libmh.sa.$(SLIBVER) $(SLIBDIR)/libmh.sa.$(SLIBVER) + -@chmod $(PGMPROT) $(SLIBDIR)/libmh.sa.$(SLIBVER) + -@ls -l $(SLIBDIR)/libmh.sa.* + -@echo "Data interface description installed normally" + -@echo "" @END: SHAREDLIB *************** *** 134,135 **** --- 158,160 ---- -rm -f Makefile + -rm -rf shared *************** *** 140,143 **** -rm -f *.o libmh.* ! unclean:; -rm -f z$(LIB) _* :* core eddep makedep --- 165,171 ---- -rm -f *.o libmh.* + @BEGIN: SHAREDLIB + -rm -f shared/*.o + @END: SHAREDLIB ! unclean:; -rm -f zlibmh.* _* :* core eddep makedep *** ../mh-6.7-dist/conf/makefiles/uip Wed Jan 29 17:00:18 1992 --- conf/makefiles/uip Fri Jan 24 15:19:02 1992 *************** *** 4,6 **** # @(MHWARNING) ! # @(#)$Id: uip,v 2.12 91/01/25 15:50:18 mh Exp $ ############################################################################## --- 4,6 ---- # @(MHWARNING) ! # @(#)$Id: uip,v 2.14 1992/01/24 23:18:46 jromine Exp $ ############################################################################## *************** *** 139,141 **** MISC = ap conflict dp install-mh mhl post rcvdist rcvpack rcvstore \ ! rcvtty fmtdump \ @BEGIN: SENDMTS --- 139,141 ---- MISC = ap conflict dp install-mh mhl post rcvdist rcvpack rcvstore \ ! rcvtty fmtdump sendmail \ @BEGIN: SENDMTS *************** *** 153,155 **** inst-post inst-rcvdist inst-rcvpack inst-rcvstore inst-rcvtty \ ! inst-fmtdump $(IMTSMISC) \ @BEGIN: SENDMTS --- 153,155 ---- inst-post inst-rcvdist inst-rcvpack inst-rcvstore inst-rcvtty \ ! inst-fmtdump inst-sendmail $(IMTSMISC) \ @BEGIN: SENDMTS *************** *** 164,166 **** LMISC = l-ap l-conflict l-dp l-install-mh l-mhl l-post l-rcvdist \ ! l-rcvpack l-rcvstore l-rcvtty l-fmtdump \ $(LMTSMISC) $(LBBMISC) \ --- 164,166 ---- LMISC = l-ap l-conflict l-dp l-install-mh l-mhl l-post l-rcvdist \ ! l-rcvpack l-rcvstore l-rcvtty l-fmtdump l-sendmail \ $(LMTSMISC) $(LBBMISC) \ *************** *** 176,178 **** TMISC = xap xconflict xdp xinstall-mh xmhl xpost xrcvdist xrcvpack \ ! xrcvstore xrcvtty xfmtdump \ $(TMTSMISC) $(TBBMISC) $(TPOPMISC) \ --- 176,178 ---- TMISC = xap xconflict xdp xinstall-mh xmhl xpost xrcvdist xrcvpack \ ! xrcvstore xrcvtty xfmtdump xsendmail \ $(TMTSMISC) $(TBBMISC) $(TPOPMISC) \ *************** *** 1088,1089 **** --- 1088,1107 ---- @END: SENDMTS + + + inst-sendmail: $(ETCDIR)/sendmail + + $(ETCDIR)/sendmail: xsendmail + -$(REMOVE) $@ zsendmail + cp xsendmail $@ + -@chmod $(PGMPROT) $@ + -@ls -l $@ + -@echo "Don't forget to: ln -s /usr/lib/sendmail $@" + -@echo "" + + sendmail: xsendmail + + xsendmail: sendmail.o $(LIBES) + $(LD) $(LDFLAGS) -o $@ sendmail.o $(LDLIBS) + + l-sendmail:; $(LINT) $(LFLAGS) sendmail.c $(LLIBS) *** ../mh-6.7-dist/conf/makefiles/zotnet/bboards Fri Dec 14 13:24:10 1990 --- conf/makefiles/zotnet/bboards Wed Jan 29 15:06:46 1992 *************** *** 4,6 **** # @(MHWARNING) ! # @(#)$Id: bboards,v 1.6 90/04/05 15:16:32 sources Exp $ ############################################################################## --- 4,6 ---- # @(MHWARNING) ! # @(#)$Id: bboards,v 1.6 1990/04/05 15:16:32 sources Exp $ ############################################################################## *** ../mh-6.7-dist/conf/makefiles/zotnet/mf Fri Dec 14 13:24:10 1990 --- conf/makefiles/zotnet/mf Wed Jan 29 15:10:16 1992 *************** *** 4,6 **** # @(MHWARNING) ! # @(#)$Id: mf,v 1.5 90/04/05 15:16:45 sources Exp $ ############################################################################## --- 4,6 ---- # @(MHWARNING) ! # @(#)$Id: mf,v 1.6 1992/01/29 23:10:03 jromine Exp $ ############################################################################## *************** *** 36,37 **** --- 36,38 ---- + .c:; echo $@ *** ../mh-6.7-dist/conf/makefiles/zotnet/mts Fri Dec 14 13:24:10 1990 --- conf/makefiles/zotnet/mts Wed Jan 29 15:10:19 1992 *************** *** 4,6 **** # @(MHWARNING) ! # @(#)$Id: mts,v 1.6 90/04/05 15:16:53 sources Exp $ ############################################################################## --- 4,6 ---- # @(MHWARNING) ! # @(#)$Id: mts,v 1.7 1992/01/29 23:10:03 jromine Exp $ ############################################################################## *************** *** 32,33 **** --- 32,34 ---- + .c:; echo $@ *** ../mh-6.7-dist/conf/makefiles/zotnet/tws Fri Dec 14 13:24:11 1990 --- conf/makefiles/zotnet/tws Wed Jan 29 16:31:24 1992 *************** *** 4,6 **** # @(MHWARNING) ! # @(#)$Id: tws,v 1.9 90/04/05 15:16:39 sources Exp $ ############################################################################## --- 4,6 ---- # @(MHWARNING) ! # @(#)$Id: tws,v 1.10 1992/01/30 00:31:18 jromine Exp $ ############################################################################## *************** *** 77,78 **** --- 77,85 ---- ###################################################################### + + lex: zap-dtime dtimep.c + + zap-dtime:; rm -f dtimep.c + + + ###################################################################### # dtime *************** *** 89,90 **** --- 96,98 ---- + unconfig: distribution *************** *** 95,97 **** clean: unclean ! -rm -f dtimep.c *.o date --- 103,105 ---- clean: unclean ! -rm -f *.o date