|
|
BSD 4.3
Only in .: CHANGES
Only in .: FILES
Only in .: Makefile
Only in .: OLD
Only in .: SCCS
Only in .: Version.c
Only in .: Version.o
diff OLD/alias.c ./alias.c
8c8
< SCCSID(@(#)alias.c 4.1 7/25/83 (with DBM));
---
> SCCSID(@(#)alias.c 4.2 12/27/83 (with DBM));
10c10
< SCCSID(@(#)alias.c 4.1 7/25/83 (without DBM));
---
> SCCSID(@(#)alias.c 4.2 12/27/83 (without DBM));
394c394,397
< p = &p[strlen(p)];
---
> {
> p = &p[strlen(p) - 1];
> *p = '\0';
> }
Only in .: alias.o
Only in .: aliases
diff OLD/arpadate.c ./arpadate.c
9c9
< SCCSID(@(#)arpadate.c 4.1 7/25/83);
---
> SCCSID(@(#)arpadate.c 4.3 10/1/83);
46a47
> extern bool fconvert();
118c119,120
< if (p[3] != '\0')
---
> if ((strncmp(p, "GMT", 3) == 0 || strncmp(p, "gmt", 3) == 0) &&
> p[3] != '\0')
130a133
> *q = '\0';
132c135
< else
---
> else if (!fconvert(p, q))
137a141
> *q = '\0';
140d143
< *q = '\0';
141a145,201
> }
> /*
> ** FCONVERT -- convert foreign timezones to ARPA timezones
> **
> ** This routine is essentially from Teus Hagen.
> **
> ** Parameters:
> ** a -- timezone as returned from UNIX.
> ** b -- place to put ARPA-style timezone.
> **
> ** Returns:
> ** TRUE -- if a conversion was made (and b was filled in).
> ** FALSE -- if this is not a recognized local time.
> **
> ** Side Effects:
> ** none.
> */
>
> /* UNIX to arpa conversion table */
> struct foreign
> {
> char *f_from;
> char *f_to;
> };
>
> static struct foreign Foreign[] =
> {
> { "eet", " -0200" }, /* eastern europe */
> { "met", " -0100" }, /* middle europe */
> { "wet", " GMT" }, /* western europe */
> { "eet dst", " -0300" }, /* daylight saving times */
> { "met dst", " -0200" },
> { "wet dst", " -0100" },
> { NULL, NULL }
> };
>
> bool
> fconvert(a, b)
> register char *a;
> char *b;
> {
> register struct foreign *euptr;
> register char *p;
>
> makelower(a);
> for (euptr = Foreign; euptr->f_from != NULL; euptr++)
> {
> if (strcmp(euptr->f_from, a) == 0)
> {
> p = euptr->f_to;
> while (*p)
> *b++ = *p++;
> *b = '\0';
> return (TRUE);
> }
> }
> return (FALSE);
Only in .: arpadate.o
Only in .: bmove.o
Only in .: clock.o
Only in .: cmua.cf
diff OLD/collect.c ./collect.c
4c4
< SCCSID(@(#)collect.c 4.1 7/25/83);
---
> SCCSID(@(#)collect.c 4.2 11/13/83);
57,58c57
< if (sfgets(buf, sizeof buf, InChannel) == NULL)
< return;
---
> (void) sfgets(buf, sizeof buf, InChannel);
76,77c75
< for (; !feof(InChannel); !feof(InChannel) && !ferror(InChannel) &&
< sfgets(buf, MAXFIELD, InChannel) != NULL)
---
> do
79c77
< register char c;
---
> int c;
85c83
< while ((c = getc(InChannel)) != '\n')
---
> while ((c = getc(InChannel)) != '\n' && c != EOF)
117c115
< }
---
> } while (sfgets(buf, MAXFIELD, InChannel) != NULL);
126d123
< {
128,129d124
< fixcrlf(buf, TRUE);
< }
135,136c130
< for (; !feof(InChannel); !feof(InChannel) && !ferror(InChannel) &&
< sfgets(buf, sizeof buf, InChannel) != NULL)
---
> do
160c154
< }
---
> } while (sfgets(buf, MAXFIELD, InChannel) != NULL);
Only in .: collect.o
Only in .: conf.o
Only in .: convtime.o
Only in .: daemon.o
diff OLD/deliver.c ./deliver.c
6c6
< SCCSID(@(#)deliver.c 4.2 8/28/83);
---
> SCCSID(@(#)deliver.c 4.5 12/27/83);
386c386
< smtpquit(pv[0], m);
---
> smtpquit(m);
760a761,762
> int i;
>
807,822c809,815
< /*
< ** We have to be careful with vfork - we can't mung up the
< ** memory but we don't want the mailer to inherit any extra
< ** open files. Chances are the mailer won't
< ** care about an extra file, but then again you never know.
< ** Actually, we would like to close(fileno(pwf)), but it's
< ** declared static so we can't. But if we fclose(pwf), which
< ** is what endpwent does, it closes it in the parent too and
< ** the next getpwnam will be slower. If you have a weird
< ** mailer that chokes on the extra file you should do the
< ** endpwent(). -MRH
< **
< ** Similar comments apply to log. However, openlog is
< ** clever enough to set the FIOCLEX mode on the file,
< ** so it will be closed automatically on the exec.
< */
---
> /* arrange for all the files to be closed */
> for (i = 3; i < 50; i++)
> #ifdef FIOCLEX
> (void) ioctl(i, FIOCLEX, 0);
> #else FIOCLEX
> (void) close(i);
> #endif FIOCLEX
824,825d816
< closeall();
<
829,830c820,822
< /* syserr fails because log is closed */
< /* syserr("Cannot exec %s", m->m_mailer); */
---
> #ifdef FIOCLEX
> syserr("Cannot exec %s", m->m_mailer);
> #else FIOCLEX
832a825
> #endif FIOCLEX
901,903d893
< extern char *sys_errlist[];
< extern int sys_nerr;
<
907,912c897
< (void) strcat(buf, ": ");
< if (errno > 0 && errno < sys_nerr)
< (void) strcat(buf, sys_errlist[errno]);
< else
< {
< char xbuf[30];
---
> extern char *errstring();
914,916c899,900
< (void) sprintf(xbuf, "Error %d", errno);
< (void) strcat(buf, xbuf);
< }
---
> (void) strcat(buf, ": ");
> (void) strcat(buf, errstring(errno));
Only in .: deliver.o
Only in .: envelope.o
diff OLD/err.c ./err.c
3c3
< SCCSID(@(#)err.c 4.2 9/5/83);
---
> SCCSID(@(#)err.c 4.3 10/1/83);
272,277c272,274
< extern int sys_nerr;
< extern char *sys_errlist[];
< if (errno < sys_nerr && errno > 0)
< (void) sprintf(eb, ": %s", sys_errlist[errno]);
< else
< (void) sprintf(eb, ": error %d", errno);
---
> extern char *errstring();
>
> (void) sprintf(eb, ": %s", errstring(errno));
279a277,303
> }
> /*
> ** ERRSTRING -- return string description of error code
> **
> ** Parameters:
> ** errno -- the error number to translate
> **
> ** Returns:
> ** A string description of errno.
> **
> ** Side Effects:
> ** none.
> */
>
> char *
> errstring(errno)
> int errno;
> {
> extern char *sys_errlist[];
> extern int sys_nerr;
> static char buf[50];
>
> if (errno > 0 && errno < sys_nerr)
> return (sys_errlist[errno]);
>
> (void) sprintf(buf, "Error %d", errno);
> return (buf);
Only in .: err.o
Only in .: headers.o
Only in .: lfAA21321
Only in .: macro.o
diff OLD/main.c ./main.c
7c7
< SCCSID(@(#)main.c 4.3 9/5/83);
---
> SCCSID(@(#)main.c 4.7 12/27/83);
60c60
< main(argc, argv)
---
> main(argc, argv, envp)
62a63
> char **envp;
72c73
< bool readconfig = FALSE;
---
> bool readconfig = TRUE;
83a85
> extern char **environ;
123a126,128
> /* reset the environment after the thaw */
> environ = envp;
>
150c155,156
< closeall();
---
> for (i = 3; i < 50; i++)
> (void) close(i);
158,163c164
< /* initialize some macros, etc. */
< initmacros();
<
< /* hostname */
< av = myhostname(jbuf, sizeof jbuf);
< if (jbuf[0] != '\0')
---
> if (readconfig)
165,170c166,167
< p = newstr(jbuf);
< define('w', p, CurEnv);
< setclass('w', p);
< }
< while (av != NULL && *av != NULL)
< setclass('w', *av++);
---
> /* initialize some macros, etc. */
> initmacros();
172,173c169,178
< /* version */
< define('v', Version, CurEnv);
---
> /* hostname */
> av = myhostname(jbuf, sizeof jbuf);
> if (jbuf[0] != '\0')
> {
> p = newstr(jbuf);
> define('w', p, CurEnv);
> setclass('w', p);
> }
> while (av != NULL && *av != NULL)
> setclass('w', *av++);
174a180,183
> /* version */
> define('v', Version, CurEnv);
> }
>
384c393
< ** If printing the queue, go off and do that.
---
> ** Do operation-mode-dependent initialization.
387c396
< if (OpMode == MD_PRINT)
---
> switch (OpMode)
388a398,399
> case MD_PRINT:
> /* print the queue */
397d407
< }
399,404c409,411
< /*
< ** Initialize aliases.
< */
<
< initaliases(AliasFile, OpMode == MD_INITALIAS);
< if (OpMode == MD_INITALIAS)
---
> case MD_INITALIAS:
> /* initialize alias database */
> initaliases(AliasFile, TRUE);
405a413,422
>
> case MD_DAEMON:
> /* don't open alias database -- done in srvrsmtp */
> break;
>
> default:
> /* open the alias database */
> initaliases(AliasFile, FALSE);
> break;
> }
Only in .: main.o
Only in .: make.out
Only in .: mqueue
Only in .: options
Only in .: osendmail
diff OLD/parseaddr.c ./parseaddr.c
3c3
< SCCSID(@(#)parseaddr.c 4.1 7/25/83);
---
> SCCSID(@(#)parseaddr.c 4.3 10/23/83);
168a169
> ** If '\t' then we are reading the .cf file.
223a225
> extern int errno;
224a227,229
> /* make sure error messages don't have garbage on them */
> errno = 0;
>
251c256
< /* squirrel it away */
---
> /* see if there is room */
257a263,264
>
> /* squirrel it away */
264a272,273
> c &= ~0200;
>
271d279
< c &= ~0200;
962a971
> register char *p;
1050a1060,1062
> ** Make sure that any real '$' characters in the input are
> ** not accidently interpreted as macro expansions by quoting
> ** them before expansion.
1053a1066,1068
> for (p = lbuf; *p != '\0'; p++)
> if (*p == '$')
> *p |= 0200;
1056a1072
> stripquotes(buf, FALSE);
Only in .: parseaddr.o
Only in .: qfAA21321
Only in .: qfAA26161
Only in .: queue.o
Only in .: readcf.o
diff OLD/recipient.c ./recipient.c
5c5
< SCCSID(@(#)recipient.c 4.1 7/25/83);
---
> SCCSID(@(#)recipient.c 4.2 10/29/83);
330d329
< extern struct passwd *getpwent();
332a332,333
> extern struct passwd *getpwent();
> extern struct passwd *getpwnam();
Only in .: recipient.o
Only in .: savemail.o
Only in .: sendmail.cf
Only in .: sendmail.hf
Only in .: sl
Only in .: sm.arpa
diff OLD/srvrsmtp.c ./srvrsmtp.c
6c6
< SCCSID(@(#)srvrsmtp.c 4.3 8/28/83 (no SMTP));
---
> SCCSID(@(#)srvrsmtp.c 4.5 11/26/83 (no SMTP));
9c9
< SCCSID(@(#)srvrsmtp.c 4.3 8/28/83);
---
> SCCSID(@(#)srvrsmtp.c 4.5 11/26/83);
76c76
< char *WizWord = NULL; /* the wizard word to compare against */
---
> char *WizWord; /* the wizard word to compare against */
434c434
< if (strcmp(WizWord, crypt(p, seed)) != 0)
---
> if (strcmp(WizWord, crypt(p, seed)) == 0)
436c436,437
< message("500", "You are no wizard!");
---
> IsWiz = TRUE;
> message("200", "Please pass, oh mighty wizard");
440,441c441
< IsWiz = TRUE;
< message("200", "Please pass, oh mighty wizard");
---
> message("500", "You are no wizard!");
631a632,635
>
> /* open alias database */
> initaliases(AliasFile, FALSE);
>
Only in .: srvrsmtp.diff
Only in .: srvrsmtp.o
Only in .: stab.o
Only in .: stats.o
Only in .: sysexits.o
Only in .: tags
Only in .: trace.h
Only in .: trace.o
diff OLD/usersmtp.c ./usersmtp.c
6c6
< SCCSID(@(#)usersmtp.c 4.4 9/7/83 (no SMTP));
---
> SCCSID(@(#)usersmtp.c 4.7 11/13/83 (no SMTP));
9c9
< SCCSID(@(#)usersmtp.c 4.4 9/7/83);
---
> SCCSID(@(#)usersmtp.c 4.7 11/13/83);
82a83,89
> if (CurEnv->e_xfp != NULL)
> {
> extern char *errstring();
>
> fprintf(CurEnv->e_xfp, "421 %s.%s... Deferred: %s\n",
> pvp[1], m->m_name, errstring(errno));
> }
277c284
< ** name -- name of mailer we are quitting.
---
> ** m -- a pointer to the mailer.
286,287c293
< smtpquit(name, m)
< char *name;
---
> smtpquit(m)
312c318
< i = endmailer(SmtpPid, name);
---
> i = endmailer(SmtpPid, m->m_argv[0]);
314c320
< syserr("smtpquit %s: stat %d", name, i);
---
> syserr("smtpquit %s: stat %d", m->m_argv[0], i);
371c377
< smtpquit("reply error", m);
---
> smtpquit(m);
407c413
< smtpquit("SMTP Shutdown", m);
---
> smtpquit(m);
Only in .: usersmtp.o
diff OLD/util.c ./util.c
9c9
< SCCSID(@(#)util.c 4.2 8/31/83);
---
> SCCSID(@(#)util.c 4.4 12/27/83);
622c622,623
< ** NULL on error (including timeout).
---
> ** NULL on error (including timeout). This will also leave
> ** buf containing a null string.
653c654,655
< do
---
> p = NULL;
> while (p == NULL && !feof(fp) && !ferror(fp))
657c659,661
< } while (p == NULL && errno == EINTR);
---
> if (errno == EINTR)
> clearerr(fp);
> }
663a668,669
> if (p == NULL)
> buf[0] = '\0';
811,830d816
< }
< /*
< ** CLOSEALL -- close all extraneous file descriptors
< **
< ** Parameters:
< ** none.
< **
< ** Returns:
< ** none.
< **
< ** Side Effects:
< ** Closes all file descriptors except zero, one, and two.
< */
<
< closeall()
< {
< int i;
<
< for (i = 3; i < 50; i++)
< (void) close(i);
Only in .: util.o
diff OLD/version.c ./version.c
2c2
< static char SccsId[] = "@(#)SendMail version 4.12 of 9/7/83";
---
> static char SccsId[] = "@(#)SendMail version 4.24 of 12/27/83";
5c5
< char Version[] = "4.12";
---
> char Version[] = "4.24";
Only in .: zzz
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.