Prereq: patch.0 *** ../mh-6.7-dist/./Patchlevel Thu Apr 12 13:31:00 1990 --- ./Patchlevel Fri Dec 14 09:17:57 1990 *************** *** 1 **** ! MH.6.7 patch.0 --- 1 ---- ! MH.6.7 patch.1 *** ../mh-6.7-dist/./uip/replsbr.c Thu Apr 12 13:29:36 1990 --- ./uip/replsbr.c Mon Nov 5 11:38:46 1990 *************** *** 1,6 **** /* replsbr.c - routines to help repl along... */ #ifndef lint ! static char ident[] = "@(#)$Id: replsbr.c,v 1.6 90/04/05 14:59:43 sources Exp $"; #endif lint #include "../h/mh.h" --- 1,6 ---- /* replsbr.c - routines to help repl along... */ #ifndef lint ! static char ident[] = "@(#)$Id: replsbr.c,v 1.9 90/11/05 11:38:43 mh Exp $"; #endif lint #include "../h/mh.h" *************** *** 85,91 **** char *cp; int format_len; register char **ap; - struct comp **used_buf_fp; (void) umask( ~ m_gmprot() ); if ((out = fopen (drft, "w")) == NULL) --- 85,90 ---- *************** *** 94,113 **** cp = new_fs (form ? form : replcomps, NULLCP, NULLCP); format_len = strlen (cp); ncomps = fmt_compile (cp, &fmt) + 1; ! nxtbuf = compbuffers = (char **)calloc((unsigned)ncomps,sizeof(char *)); ! if (nxtbuf == NULL) adios (NULLCP, "unable to allocate component buffers"); ! used_buf_fp = used_buf = ! (struct comp **)calloc((unsigned)(ncomps+1),sizeof(struct comp *)); ! if (used_buf == NULL) adios (NULLCP, "unable to allocate component buffer stack"); ! used_buf += ncomps+1; *--used_buf = 0; for (i = ncomps; i--; ) if ((*nxtbuf++ = malloc( SBUFSIZ )) == NULL) adios (NULLCP, "unable to allocate component buffer"); ! nxtbuf = compbuffers; ! savecomp = used_buf; tmpbuf = *nxtbuf++; for (ap = addrcomps; *ap; ap++) { --- 93,113 ---- cp = new_fs (form ? form : replcomps, NULLCP, NULLCP); format_len = strlen (cp); ncomps = fmt_compile (cp, &fmt) + 1; ! if ((nxtbuf = compbuffers = (char **) ! calloc((unsigned)ncomps,sizeof(char *))) ! == (char **)NULL) adios (NULLCP, "unable to allocate component buffers"); ! if ((savecomp = used_buf = (struct comp **) ! calloc((unsigned)(ncomps+1),sizeof(struct comp *))) ! == (struct comp **)NULL) adios (NULLCP, "unable to allocate component buffer stack"); ! savecomp += ncomps + 1; ! *--savecomp = (struct comp *)0; /* point at zero'd end minus 1 */ for (i = ncomps; i--; ) if ((*nxtbuf++ = malloc( SBUFSIZ )) == NULL) adios (NULLCP, "unable to allocate component buffer"); ! nxtbuf = compbuffers; /* point at start */ tmpbuf = *nxtbuf++; for (ap = addrcomps; *ap; ap++) { *************** *** 232,243 **** /* return dynamically allocated buffers */ free (scanl); ! while ( cptr = *savecomp++ ) ! free (cptr->c_text); ! for (nxtbuf = compbuffers, i = ncomps; i--; ) ! free (*nxtbuf++); free ((char *) compbuffers); ! free ((char *) used_buf_fp); } /* */ --- 232,244 ---- /* return dynamically allocated buffers */ free (scanl); ! for (nxtbuf = compbuffers, i = ncomps; ! cptr = *savecomp++; nxtbuf++, i--) ! free (cptr->c_text); /* if not nxtbuf, nxtbuf already freed */ ! while ( i-- > 0) ! free (*nxtbuf++); /* free unused nxtbufs */ free ((char *) compbuffers); ! free ((char *) used_buf); } /* */ *** ../mh-6.7-dist/./uip/rcvdist.c Thu Apr 12 13:29:36 1990 --- ./uip/rcvdist.c Mon Nov 5 13:50:16 1990 *************** *** 1,6 **** /* rcvdist.c - a rcvmail program to distribute messages */ #ifndef lint ! static char ident[] = "@(#)$Id: rcvdist.c,v 1.4 90/04/05 14:59:35 sources Exp $"; #endif lint #include "../h/mh.h" --- 1,6 ---- /* rcvdist.c - a rcvmail program to distribute messages */ #ifndef lint ! static char ident[] = "@(#)$Id: rcvdist.c,v 1.6 90/11/05 13:50:14 mh Exp $"; #endif lint #include "../h/mh.h" *************** *** 175,181 **** char *cp, *scanl, name[NAMESZ]; - struct comp **used_buf_fp; register struct comp *cptr, **savecomp; FILE *out; --- 175,180 ---- *************** *** 186,208 **** cp = new_fs (form ? form : rcvdistcomps, NULLCP, NULLCP); format_len = strlen (cp); ncomps = fmt_compile (cp, &fmt) + 1; ! nxtbuf = compbuffers = (char **) calloc ((unsigned) ncomps, ! sizeof (char *)); ! if (nxtbuf == NULL) adios (NULLCP, "unable to allocate component buffers"); ! used_buf = (struct comp **) calloc ((unsigned) (ncomps + 1), ! sizeof (struct comp *)); ! if (used_buf == NULL) adios (NULLCP, "unable to allocate component buffer stack"); ! used_buf_fp = used_buf; ! used_buf += ncomps + 1; ! *--used_buf = 0; for (i = ncomps; i--;) if ((*nxtbuf++ = malloc (SBUFSIZ)) == NULL) adios (NULLCP, "unable to allocate component buffer"); - nxtbuf = compbuffers; - savecomp = used_buf; tmpbuf = *nxtbuf++; for (ap = addrcomps; *ap; ap++) { --- 185,205 ---- cp = new_fs (form ? form : rcvdistcomps, NULLCP, NULLCP); format_len = strlen (cp); ncomps = fmt_compile (cp, &fmt) + 1; ! if ((nxtbuf = compbuffers = (char **) ! calloc ((unsigned) ncomps, sizeof (char *))) ! == (char **)NULL) adios (NULLCP, "unable to allocate component buffers"); ! if ((savecomp = used_buf = (struct comp **) ! calloc ((unsigned) (ncomps + 1), sizeof (struct comp *))) ! == (struct comp **) NULL) adios (NULLCP, "unable to allocate component buffer stack"); ! savecomp += ncomps + 1; ! *--savecomp = 0; ! for (i = ncomps; i--;) if ((*nxtbuf++ = malloc (SBUFSIZ)) == NULL) adios (NULLCP, "unable to allocate component buffer"); nxtbuf = compbuffers; tmpbuf = *nxtbuf++; for (ap = addrcomps; *ap; ap++) { *************** *** 277,288 **** (void) fclose (out); free (scanl); ! while (cptr = *savecomp++) free (cptr -> c_text); ! for (nxtbuf = compbuffers, i = ncomps; i--; ) free (*nxtbuf++); free ((char *) compbuffers); ! free ((char *) used_buf_fp); } /* */ --- 274,285 ---- (void) fclose (out); free (scanl); ! for (nxtbuf = compbuffers, i = ncomps; cptr = *savecomp++; nxtbuf++, i--) free (cptr -> c_text); ! while (i-- > 0) free (*nxtbuf++); free ((char *) compbuffers); ! free ((char *) used_buf); } /* */ *** ../mh-6.7-dist/./uip/rmf.c Thu Apr 12 13:29:37 1990 --- ./uip/rmf.c Mon Nov 5 12:22:06 1990 *************** *** 1,6 **** /* rmf.c - remove a folder */ #ifndef lint ! static char ident[] = "@(#)$Id: rmf.c,v 2.2 90/04/05 14:57:11 sources Exp $"; #endif lint #include "../h/mh.h" --- 1,6 ---- /* rmf.c - remove a folder */ #ifndef lint ! static char ident[] = "@(#)$Id: rmf.c,v 2.3 90/11/05 12:22:03 mh Exp $"; #endif lint #include "../h/mh.h" *************** *** 13,19 **** #define INTRSW 0 "interactive", 0, #define NINTRSW 1 ! "nointerative", 0, #define HELPSW 2 "help", 4, --- 13,19 ---- #define INTRSW 0 "interactive", 0, #define NINTRSW 1 ! "nointeractive", 0, #define HELPSW 2 "help", 4, *** ../mh-6.7-dist/./uip/rcvtty.c Thu Apr 12 13:29:36 1990 --- ./uip/rcvtty.c Mon Nov 5 13:06:03 1990 *************** *** 1,6 **** /* rcvtty.c - a rcvmail program (a lot like rcvalert) handling IPC ttys */ #ifndef lint ! static char ident[] = "@(#)$Id: rcvtty.c,v 1.5 90/04/05 15:02:11 sources Exp $"; #endif lint #ifndef BSD42 --- 1,6 ---- /* rcvtty.c - a rcvmail program (a lot like rcvalert) handling IPC ttys */ #ifndef lint ! static char ident[] = "@(#)$Id: rcvtty.c,v 1.6 90/11/05 13:05:54 mh Exp $"; #endif lint #ifndef BSD42 *************** *** 18,24 **** /* */ #define SCANFMT \ ! "%2(hour{dtimenow}):%02(min{dtimenow}): %5(size) %<{encrypted}E%>\ %<(mymbox{from})To:%14(friendly{to})%|%17(friendly{from})%> \ %{subject}%<{body}<<%{body}>>%>" --- 18,24 ---- /* */ #define SCANFMT \ ! "%2(hour{dtimenow}):%02(min{dtimenow}): %<(size)%5(size) %>%<{encrypted}E%>\ %<(mymbox{from})To:%14(friendly{to})%|%17(friendly{from})%> \ %{subject}%<{body}<<%{body}>>%>" *** ../mh-6.7-dist/./uip/dropsbr.c Thu Apr 12 13:29:27 1990 --- ./uip/dropsbr.c Mon Nov 5 13:26:59 1990 *************** *** 1,6 **** /* dropsbr.c - write to a mailbox */ #ifndef lint ! static char ident[] = "@(#)$Id: dropsbr.c,v 1.11 90/04/05 15:01:09 sources Exp $"; #endif lint #include --- 1,6 ---- /* dropsbr.c - write to a mailbox */ #ifndef lint ! static char ident[] = "@(#)$Id: dropsbr.c,v 1.12 90/11/05 13:26:50 mh Exp $"; #endif lint #include *************** *** 408,413 **** --- 408,418 ---- if (*cp++ == '\n') size++; } + if (write (md, "\n", 1) != 1) { + (void) fclose (fp); + return NOTOK; + } + if (mapping) size += 2; (void) fclose (fp); (void) lseek (fd, 0L, 2); *** ../mh-6.7-dist/./support/pop/popser.c Thu Apr 12 13:29:23 1990 --- ./support/pop/popser.c Fri Nov 16 16:06:38 1990 *************** *** 1,6 **** /* popser.c - the POP service */ #ifndef lint ! static char ident[]="@(#)$Id: popser.c,v 1.13 90/04/09 09:45:18 sources Exp Locker: sources $"; #endif #include "../h/mh.h" --- 1,6 ---- /* popser.c - the POP service */ #ifndef lint ! static char ident[]="@(#)$Id: popser.c,v 1.16 90/11/16 14:56:38 mh Exp $"; #endif #include "../h/mh.h" *************** *** 40,48 **** --- 40,54 ---- extern char myhost[]; extern char *myname; + #ifndef POP2 static enum state { auth1, auth2, trans, update, halt, error } mystate; + #else + static enum state { + auth1, auth2, trans, mbox, item, ack, update, halt, error + } mystate; + #endif static int user (), pass (); *************** *** 59,64 **** --- 65,73 ---- int xtnd (); #endif BPOP static int quit (); + #ifdef POP2 + static int helo (), rdp2 (), acks (), ack2 (), fold (), nack (); + #endif POP2 static struct vector { char *v_cmd; *************** *** 87,95 **** #ifdef BPOP "xtnd", 1, 2, xtnd, trans, trans, trans, #endif BPOP - "quit", 0, 0, quit, trans, halt, halt, NULL }; --- 96,121 ---- #ifdef BPOP "xtnd", 1, 2, xtnd, trans, trans, trans, #endif BPOP "quit", 0, 0, quit, trans, halt, halt, + #ifdef POP2 + "helo", 2, 2, helo, auth1, mbox, auth1, + + "fold", 1, 1, fold, mbox, mbox, mbox, + "quit", 0, 0, quit, mbox, halt, halt, + "read", 0, 1, rdp2, mbox, item, error, + + "fold", 1, 1, fold, item, mbox, mbox, + "read", 0, 1, rdp2, item, item, error, + "quit", 0, 0, quit, item, halt, halt, + "retr", 0, 0, retrieve, item, ack, error, + + "acks", 0, 0, ack2, ack, item, error, + "ackd", 0, 0, ack2, ack, item, error, + "nack", 0, 0, rdp2, ack, item, error, + "quit", 0, 0, NULL, ack, halt, halt, + + #endif POP2 NULL }; *************** *** 97,102 **** --- 123,131 ---- /* */ + #ifdef POP2 + static int pop2 = NOTOK; /* current pop2 msg, or NOTOK if pop3 */ + #endif POP2 #ifdef DPOP static int pop_uid; static int pop_gid; *************** *** 166,174 **** --- 195,209 ---- long lseek (); char *crypt (); + #ifdef POPUUMBOX + #define MBX_READ pmbx_read static int pmbx_read (); static char *p_copy(), *p_copyin(), *p_nextword(); static p_cmatch(), p_isdate(), p_ishead(), p_parse(), any(); + #else + #define MBX_READ mbx_read + extern int mbx_read (); + #endif static int setup(), setupaux(), read_map(), read_file(), pmbx_size(); static int quitaux(), quitfile(), respond(), getline(); *************** *** 311,316 **** --- 346,360 ---- } /* */ + #ifdef POP2 + static int helo (vec) /* sort of "user" and "pass" */ + register char **vec; + { + pop2 = 0; /* now we're talkin' pop2! */ + make_lower (username, vec[1]); /* helo user pass */ + return pass (++vec); /* user pass */ + } + #endif static int user (vec) register char **vec; *************** *** 565,573 **** if (setupaux (guest) == NOTOK) return NOTOK; return respond (OK, nmsgs ? "maildrop has %d message%s (%d octets)" : "maildrop empty", ! nmsgs, nmsgs != 1 ? "s" : NULL, Msgs[0].m_size); } /* */ --- 609,625 ---- if (setupaux (guest) == NOTOK) return NOTOK; + #ifdef POP2 + if (pop2 != NOTOK) { /* in response to pop2 "helo" */ + pop2 = nmsgs > 0 ? 1 : 0; + return respond ('#', "%d message%s (%d octets)", + nmsgs, nmsgs != 1 ? "s" : "", Msgs[0].m_size); + } + else + #endif POP2 return respond (OK, nmsgs ? "maildrop has %d message%s (%d octets)" : "maildrop empty", ! nmsgs, nmsgs != 1 ? "s" : "", Msgs[0].m_size); } /* */ *************** *** 682,688 **** padvise (NULLCP, LOG_DEBUG, "read_file (%ld, %d)", pos, msgp); ! if ((i = pmbx_read (dp, pos, &rp, debug)) <= 0) return (msgp - 1); m_gMsgs ((msgp - 1) + i); --- 734,740 ---- padvise (NULLCP, LOG_DEBUG, "read_file (%ld, %d)", pos, msgp); ! if ((i = MBX_READ (dp, pos, &rp, debug)) <= 0) return (msgp - 1); m_gMsgs ((msgp - 1) + i); *************** *** 753,758 **** --- 805,884 ---- } + #ifdef POP2 + static int rdp2 (vec) /* always returns OK */ + char **vec; + { + if (vec[1]) { + if ((pop2 = atoi (vec[1])) <= 0) + pop2 = 0; + } + else if (pop2 == 0) + return NOTOK; /* close 'em down */ + + if (pop2 <= 0 || pop2 > nmsgs) { + pop2 = 0; + return respond ('=', "0 no message"); + } + if (Msgs[pop2].m_flags & MDELE) { + pop2 = 0; + return respond ('=', "0 message %d is deleted", pop2); + } + + return respond ('=', "%d (message %d)", Msgs[pop2].m_size, pop2); + } + + static int ack2 (vec) + char **vec; + { + if (strcmp (vec[0], "ackd") == 0) { + Msgs[pop2].m_flags |= MDELE; /* ignored later if MREAD */ + Msgs[0].m_size -= Msgs[pop2].m_size; + dmsgs++; + } + + if (pop2) { /* a current msg */ + rmsgs++; /* mark this one as read */ + if (++pop2 > nmsgs) + pop2 = -1; /* let rdp2 reset */ + else if (Msgs[pop2].m_flags & MDELE) + pop2 = -1; /* let rdp2 reset */ + if (pop2 > Msgs[0].m_last) + Msgs[0].m_last = pop2; + } + return rdp2 (vec); /* vec = { "acks", 0 } */ + } + + static int fold (vec) + register char **vec; + { + pop2 = 0; + + #ifdef notdef + + /* This might work, or it might be a huge security hole. For my purpose, + * it doesn't need to work, so I'm not going to make sure it's OK. + * 16Nov90/JLR + */ + + if (quitaux (NULLVP) == NOTOK) + return respond ('#', "0 unable to close folder"); + + (void) sprintf (maildrop, vec[1]); + if (setupaux (access (maildrop, 2) ? 1 : 0) == NOTOK) + return respond ('#', "0 unable to read %s", maildrop); + + pop2 = nmsgs > 0 ? 1 : 0; + return respond ('#', "%d message%s in %s (%d octets)", + nmsgs, nmsgs != 1 ? "s" : "", maildrop, Msgs[0].m_size); + + #endif + + respond ('#', "0 unable to change folders"); + return NOTOK; + } + #endif POP2 + static int list (vec) register char **vec; { *************** *** 773,779 **** } (void) respond (OK, "%d message%s (%d octets)", ! nmsgs - dmsgs, nmsgs - dmsgs != 1 ? "s" : NULL, Msgs[0].m_size); for (i = 1; i <= nmsgs; i++) if (!(Msgs[i].m_flags & MDELE)) --- 899,905 ---- } (void) respond (OK, "%d message%s (%d octets)", ! nmsgs - dmsgs, nmsgs - dmsgs != 1 ? "s" : "", Msgs[0].m_size); for (i = 1; i <= nmsgs; i++) if (!(Msgs[i].m_flags & MDELE)) *************** *** 798,803 **** --- 924,934 ---- register char *cp; char buffer[BUFSIZ]; + #ifdef POP2 + if (pop2 == 0) + return NOTOK; + else if (pop2 == NOTOK) { + #endif if ((i = atoi (vec[1])) <= 0 || i > nmsgs) return respond (NOTOK, "no such message: \"%s\"", vec[1]); if (Msgs[i].m_flags & MDELE) *************** *** 804,809 **** --- 935,945 ---- return respond (NOTOK, "message %d is deleted", i); (void) respond (OK, "%d octets", Msgs[i].m_size); + #ifdef POP2 + } + else /* if called by pop2, vec = { "retr", 0 } */ + i = pop2; + #endif for ((void) fseek (dp, pos = Msgs[i].m_start, 0); fgets (buffer, sizeof buffer, dp) != NULL && pos < Msgs[i].m_stop; *************** *** 812,817 **** --- 948,956 ---- *cp = NULL; multiline ("%s", buffer); } + #ifdef POP2 + if (pop2 == NOTOK) { /* then multiend */ + #endif multiend (); if (i > Msgs[0].m_last) { *************** *** 818,823 **** --- 957,965 ---- Msgs[0].m_last = i; rmsgs++; } + #ifdef POP2 + } + #endif return OK; } *************** *** 1147,1153 **** return respond (OK, n ? "%s signing off (%d message%s, %d octets left)" : "%s signing off (maildrop empty)", ! server, n - d, n - d != 1 ? "s" : NULL, Msgs[0].m_size); } --- 1289,1295 ---- return respond (OK, n ? "%s signing off (%d message%s, %d octets left)" : "%s signing off (maildrop empty)", ! server, n - d, n - d != 1 ? "s" : "", Msgs[0].m_size); } *************** *** 1314,1323 **** char buffer[BUFSIZ]; bp = buffer; ! bp += strlen (sprintf (bp, "%s%s", code == OK ? "+OK" : "-ERR", ! fmt ? " " : NULL)); ! if (fmt) ! bp += strlen (sprintf (bp, fmt, a, b, c, d)); putline (buffer, output); return code; --- 1456,1482 ---- char buffer[BUFSIZ]; bp = buffer; ! #ifndef POP2 ! (void) sprintf (bp, "%s%s", code == OK ? "+OK" : "-ERR", fmt ? " " : ""); ! bp += strlen (bp); ! #else ! switch (code) { ! case OK: ! case NOTOK: ! (void) sprintf (bp, "%s%s", code == OK ? "+OK" : "-ERR", ! fmt ? " " : ""); ! bp += strlen (bp); ! break; ! ! default: /* only happens in pop2 */ ! *bp++ = code; ! code = OK; ! } ! #endif ! if (fmt) { ! (void) sprintf (bp, fmt, a, b, c, d); ! bp += strlen (bp); ! } putline (buffer, output); return code; *************** *** 1457,1464 **** --- 1616,1638 ---- * INET: steved@longs.LANCE.ColoState.Edu, dempsey@handel.CS.ColoState.Edu * boulder!ccncsu!longs.LANCE.ColoState.Edu!steved, ...!ncar!handel!dempsey */ + /* From: Jim Reid + * + * MH-6.7 does not support MMDF-style mailboxes with POP as claimed. It + * appears that when code was added to popser.c to support UNIX-style + * mailboxes, the old behaviour was lost. i.e. The new popd worked with + * UNIX-style mailboxes, but not MMDF ones. Users would get "format error" + * error messages if they tried to inc a remote MMDF-style mailbox because + * the pop daemon didn't want to know or like the MMDF message delimiters. + */ + /* So... Now there's an incredible hack in mhconfig.c to define POPUUMBOX + * in support/pop/Makefile if we're using Sendmail. This causes this + * UUCP-mbox reading code to be used here. Ugh. 05Nov90/JLR + */ + /* */ + #ifdef POPUUMBOX /* from dropsbr.c - read from a mailbox - pop server version */ /* ALMOST IDENTICAL to mbx_read */ *************** *** 1863,1865 **** --- 2037,2040 ---- return(1); return(0); } + #endif *** ../mh-6.7-dist/./sbr/m_sync.c Thu Apr 12 13:29:03 1990 --- ./sbr/m_sync.c Mon Nov 5 11:47:29 1990 *************** *** 1,4 **** --- 1,7 ---- /* m_sync.c - synchronize message sequences */ + #ifndef lint + static char ident[] = "@(#)$Id: m_sync.c,v 1.6 90/11/05 11:46:34 mh Exp $"; + #endif lint #include "../h/mh.h" #include *************** *** 60,67 **** continue; if (fp == NULL) { if ((fp = fopen (seq, "w")) == NULL ! && unlink (seq) != NOTOK ! && (fp = fopen (seq, "w")) == NULL) { admonish (attr, "unable to write"); goto priv; } --- 63,70 ---- continue; if (fp == NULL) { if ((fp = fopen (seq, "w")) == NULL ! && (unlink (seq) == NOTOK || ! (fp = fopen (seq, "w")) == NULL)) { admonish (attr, "unable to write"); goto priv; } *** ../mh-6.7-dist/./sbr/addrsbr.c Thu Apr 12 13:28:50 1990 --- ./sbr/addrsbr.c Mon Nov 5 12:26:57 1990 *************** *** 1,4 **** --- 1,7 ---- /* 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" #include "../h/addrsbr.h" *************** *** 830,835 **** --- 833,840 ---- } #else not BERK for (mp = &mq; mp = mp -> m_next;) { + if (np -> m_mbox == NULL) + continue; if ((len = strlen (cp = np -> m_mbox)) < (i = strlen (pp = mp -> m_mbox))) continue; *************** *** 854,859 **** --- 859,866 ---- if (mp -> m_nohost) return 1; + if (np -> m_host == NULL) + continue; if ((len = strlen (cp = np -> m_host)) < (i = strlen (pp = mp -> m_host))) continue; *** ../mh-6.7-dist/./sbr/m_getfld.c Thu Apr 12 13:29:01 1990 --- ./sbr/m_getfld.c Wed Apr 18 13:48:20 1990 *************** *** 1,4 **** --- 1,7 ---- /* 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" #include *************** *** 542,550 **** --- 545,557 ---- */ return 1; + #ifdef notdef (void) fseek (iob, (long)(pos-1), 0); if (iob->_cnt <= 0) _filbuf(iob); + #else + (void) fseek (iob, pos, 0); + #endif /* !notdef */ return 0; } *** ../mh-6.7-dist/./conf/mhconfig.c Thu Apr 12 13:27:24 1990 --- ./conf/mhconfig.c Mon Nov 5 16:24:58 1990 *************** *** 1,7 **** /* mhconfig.c - configure MH */ /* cc [-DSYS5] mhconfig.c -o mhconfig */ #ifndef lint ! static char ident[] = "@(#)$Id: mhconfig.c,v 2.23 90/04/08 10:57:33 sources 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.26 90/11/05 16:24:55 mh Exp $"; #endif lint #include *************** *** 420,425 **** --- 420,428 ---- fprintf (fp, "/^@BEGIN: SENDMTSHACK$/,/^@END: SENDMTSHACK$/d\n"); break; } + /* special hack for support/pop/popser.c */ + fprintf (fp, "s%%@(POPUUMBOX)%%%s%%g\n", + mtsnum == sendmail ? "-DPOPUUMBOX" : ""); if (bsd43) /* for sgid(tty)-rcvtty */ fprintf (fp, "/^@BEGIN: BSD43$/d\n/^@END: BSD43$/d\n"); *** ../mh-6.7-dist/./conf/mh-gen.8 Thu Apr 12 13:27:24 1990 --- ./conf/mh-gen.8 Wed Nov 21 09:58:36 1990 *************** *** 1,2 **** ! .\" @(#)$Id: mh-gen.8,v 2.48 90/04/09 13:27:27 sources Exp $ .\" uneven inter-word spacing (nroff line adjusting) hampers readability --- 1,2 ---- ! .\" @(#)$Id: mh-gen.8,v 2.50 90/11/21 09:27:52 mh Exp Locker: mh $ .\" uneven inter-word spacing (nroff line adjusting) hampers readability *************** *** 224,225 **** --- 224,226 ---- or, \*(lqmh\*(rq to have \fIMH\fR as the transport system. + On UNIX systems supporting TCP/IP networking via sockets *************** *** 229,234 **** \fISendMail\fR. ! The \*(lq/smtp\*(rq suffix is described in detail in the \fIAdministrator's ! Guide\fR. ! Hence, ! for TCP/IP UNIX systems, the \*(lq/smtp\*(rq suffix to either \*(lqsendmail\*(rq or \*(lqmmdf2\*(rq is --- 230,232 ---- \fISendMail\fR. ! Hence, for TCP/IP UNIX systems, the \*(lq/smtp\*(rq suffix to either \*(lqsendmail\*(rq or \*(lqmmdf2\*(rq is *************** *** 235,236 **** --- 233,237 ---- the preferred MTS configuration. + The \*(lq/smtp\*(rq suffix is described in detail in the \fIAdministrator's + Guide\fR; be sure to set \*(lqservers:\*(rq as described in + \fImh\-tailor\fR\0(8) if you use this option. *************** *** 246,248 **** If \*(lqpop\*(rq (formerly \*(lqpopbboards:\ on\*(rq), ! include support for the UCI BBoards facility via the POP service; this setting requires \*(lqpop:\ on\*(rq. --- 247,249 ---- If \*(lqpop\*(rq (formerly \*(lqpopbboards:\ on\*(rq), ! include support for the UCI BBoards facility via the POP3 service; this setting requires \*(lqpop:\ on\*(rq. *************** *** 261,263 **** To read remote BBoards, ! the usual configuration would have \fIbbc\fR talk to a \fIPOP\fR or \fINNTP\fR server. --- 262,264 ---- To read remote BBoards, ! the usual configuration would have \fIbbc\fR talk to a \fIPOP3\fR or \fINNTP\fR server. *************** *** 290,294 **** you intend to use POP.) ! If POP is enabled, there are two additional options which are of interest: ! \*(lqRPOP\*(rq and \*(lqDPOP\*(rq. ! The former indicates that support for the UNIX variant of POP, RPOP, which uses privileged sockets for authentication be enabled. --- 291,295 ---- you intend to use POP.) ! If POP is enabled, there are three additional options which are of interest: ! \*(lqRPOP\*(rq, \*(lqDPOP\*(rq and \*(lqPOP2\*(rq. ! The first indicates that support for the UNIX variant of POP, RPOP, which uses privileged sockets for authentication be enabled. *************** *** 298,300 **** and instead have their own separate database (another major win). ! Both of these options can be enabled via an \*(lqoptions\*(rq directive in the \fIMH\fR configuration file. --- 299,304 ---- and instead have their own separate database (another major win). ! The \*(lqPOP2\*(rq option indicates that the \fIMH\fP POP daemon should ! speak the older POP2 protocol in addition to the \fIMH\fP POP3 protocol \- ! a major win. ! All of these options can be enabled via an \*(lqoptions\*(rq directive in the \fIMH\fR configuration file. *************** *** 500,501 **** --- 504,516 ---- .ti -.5i + POP2 + .br + Have the POP daemon understand the older + POP2 protocol as well as the \fIMH\fP POP3 protocol \- a major win. + The POP daemon auto-magically + determines which POP protocol your client is using. + If you're enabling POP service, + there's no reason not to enable this option as well. + See also \fIPOPSERVICE\fR. + + .ti -.5i POPSERVICE *************** *** 503,507 **** The port name the \fIMH\fP POP will use. For historical reasons, ! this defaults to \*(lqpop\*(rq. The \fIMH\fP POP protocol ! (POP version 3) has finally been assigned its own port number (110), ! which differs from the original POP (version 1) port number (109). To have \fIMH\fP POP use the new assigned port number, --- 518,524 ---- The port name the \fIMH\fP POP will use. For historical reasons, ! this defaults to \*(lqpop\*(rq. ! In 1987, the \fIMH\fP POP protocol ! (POP version 3) was published as RFC1081 and ! was assigned its own port number (110), ! which differs from the original POP (version 1 and 2) port number (109). To have \fIMH\fP POP use the new assigned port number, *************** *** 510,511 **** --- 527,530 ---- and server hosts as \*(lq110/tcp\*(rq. + If you enable \fIPOP2\fP, you can safely leave this undefined unless + you are using POP3 clients besides \fIMH\fP. *** ../mh-6.7-dist/./conf/makefiles/mtsM Thu Apr 12 13:27:21 1990 --- ./conf/makefiles/mtsM Mon Nov 5 12:08:17 1990 *************** *** 4,6 **** # @(MHWARNING) ! # @(#)$Id: mtsM,v 2.2 90/04/05 15:17:58 sources Exp $ ############################################################################## --- 4,6 ---- # @(MHWARNING) ! # @(#)$Id: mtsM,v 2.3 90/04/18 13:47:30 sources Exp $ ############################################################################## *************** *** 51,53 **** ! clean:; for d in $(DIRS); do (cd $$d; $(MAKE) clean); done --- 51,54 ---- ! clean:; -rm -f $(LIB) $(LLIB) ! for d in $(DIRS); do (cd $$d; $(MAKE) clean); done *** ../mh-6.7-dist/./conf/makefiles/support/pop Thu Apr 12 13:27:22 1990 --- ./conf/makefiles/support/pop Mon Nov 5 16:06:05 1990 *************** *** 4,6 **** # @(MHWARNING) ! # @(#)$Id: pop,v 2.5 90/04/05 15:16:16 sources Exp $ ############################################################################## --- 4,6 ---- # @(MHWARNING) ! # @(#)$Id: pop,v 2.7 90/11/05 16:06:03 mh Exp $ ############################################################################## *************** *** 11,13 **** LIBDIR = $(DESTDIR)@(MHETCPATH) ! OPTIONS = @(MHOPTIONS) -I.. LDOPTIONS= @(LDOPTIONS) --- 11,13 ---- LIBDIR = $(DESTDIR)@(MHETCPATH) ! OPTIONS = @(MHOPTIONS) @(POPUUMBOX) -I.. LDOPTIONS= @(LDOPTIONS) *** ../mh-6.7-dist/./conf/examples/uci Thu Apr 12 13:27:15 1990 --- ./conf/examples/uci Mon Apr 16 15:49:23 1990 *************** *** 24,26 **** ranlib on ! sharedlib on slibdir /usr/local/lib --- 24,26 ---- ranlib on ! sharedlib off slibdir /usr/local/lib *** ../mh-6.7-dist/./conf/doc/mh-mts.rf Thu Apr 12 13:27:09 1990 --- ./conf/doc/mh-mts.rf Wed Nov 21 10:09:34 1990 *************** *** 1,3 **** .\" @(MHWARNING) ! .\" @(#)$Id: mh-mts.rf,v 1.6 90/04/05 15:08:37 sources Exp $ .SC MH\-MTS 8 --- 1,3 ---- .\" @(MHWARNING) ! .\" @(#)$Id: mh-mts.rf,v 1.7 90/11/21 10:09:32 mh Exp $ .SC MH\-MTS 8 *************** *** 55,56 **** --- 55,58 ---- this approach can be tolerant of faults. + Be sure to set \*(lqservers:\*(rq as described in + mh\-tailor(8) if you use this option. *** ../mh-6.7-dist/./conf/config/mts.c Thu Apr 12 13:27:04 1990 --- ./conf/config/mts.c Mon Nov 5 12:06:51 1990 *************** *** 1,4 **** --- 1,7 ---- /* 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 */ *************** *** 485,498 **** continue; *cp = NULL; } - /* - * If the fullname contains any .'s, quote it - */ - if (index(fullname, '.')) { - char tmp[BUFSIZ]; - sprintf (tmp, "\"%s\"", fullname); - strcpy (fullname, tmp); - } if (MMailids == 0 || *np == NULL) { (void) strcpy (username, pw -> pw_name); fullname[0] = NULL; --- 488,493 ---- *************** *** 499,504 **** --- 494,504 ---- } 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); + } return username; }