|
|
1.1 root 1: Only in .: CHANGES
2: Only in .: FILES
3: Only in .: Makefile
4: Only in .: OLD
5: Only in .: SCCS
6: Only in .: Version.c
7: Only in .: Version.o
8: diff OLD/alias.c ./alias.c
9: 8c8
10: < SCCSID(@(#)alias.c 4.1 7/25/83 (with DBM));
11: ---
12: > SCCSID(@(#)alias.c 4.2 12/27/83 (with DBM));
13: 10c10
14: < SCCSID(@(#)alias.c 4.1 7/25/83 (without DBM));
15: ---
16: > SCCSID(@(#)alias.c 4.2 12/27/83 (without DBM));
17: 394c394,397
18: < p = &p[strlen(p)];
19: ---
20: > {
21: > p = &p[strlen(p) - 1];
22: > *p = '\0';
23: > }
24: Only in .: alias.o
25: Only in .: aliases
26: diff OLD/arpadate.c ./arpadate.c
27: 9c9
28: < SCCSID(@(#)arpadate.c 4.1 7/25/83);
29: ---
30: > SCCSID(@(#)arpadate.c 4.3 10/1/83);
31: 46a47
32: > extern bool fconvert();
33: 118c119,120
34: < if (p[3] != '\0')
35: ---
36: > if ((strncmp(p, "GMT", 3) == 0 || strncmp(p, "gmt", 3) == 0) &&
37: > p[3] != '\0')
38: 130a133
39: > *q = '\0';
40: 132c135
41: < else
42: ---
43: > else if (!fconvert(p, q))
44: 137a141
45: > *q = '\0';
46: 140d143
47: < *q = '\0';
48: 141a145,201
49: > }
50: > /*
51: > ** FCONVERT -- convert foreign timezones to ARPA timezones
52: > **
53: > ** This routine is essentially from Teus Hagen.
54: > **
55: > ** Parameters:
56: > ** a -- timezone as returned from UNIX.
57: > ** b -- place to put ARPA-style timezone.
58: > **
59: > ** Returns:
60: > ** TRUE -- if a conversion was made (and b was filled in).
61: > ** FALSE -- if this is not a recognized local time.
62: > **
63: > ** Side Effects:
64: > ** none.
65: > */
66: >
67: > /* UNIX to arpa conversion table */
68: > struct foreign
69: > {
70: > char *f_from;
71: > char *f_to;
72: > };
73: >
74: > static struct foreign Foreign[] =
75: > {
76: > { "eet", " -0200" }, /* eastern europe */
77: > { "met", " -0100" }, /* middle europe */
78: > { "wet", " GMT" }, /* western europe */
79: > { "eet dst", " -0300" }, /* daylight saving times */
80: > { "met dst", " -0200" },
81: > { "wet dst", " -0100" },
82: > { NULL, NULL }
83: > };
84: >
85: > bool
86: > fconvert(a, b)
87: > register char *a;
88: > char *b;
89: > {
90: > register struct foreign *euptr;
91: > register char *p;
92: >
93: > makelower(a);
94: > for (euptr = Foreign; euptr->f_from != NULL; euptr++)
95: > {
96: > if (strcmp(euptr->f_from, a) == 0)
97: > {
98: > p = euptr->f_to;
99: > while (*p)
100: > *b++ = *p++;
101: > *b = '\0';
102: > return (TRUE);
103: > }
104: > }
105: > return (FALSE);
106: Only in .: arpadate.o
107: Only in .: bmove.o
108: Only in .: clock.o
109: Only in .: cmua.cf
110: diff OLD/collect.c ./collect.c
111: 4c4
112: < SCCSID(@(#)collect.c 4.1 7/25/83);
113: ---
114: > SCCSID(@(#)collect.c 4.2 11/13/83);
115: 57,58c57
116: < if (sfgets(buf, sizeof buf, InChannel) == NULL)
117: < return;
118: ---
119: > (void) sfgets(buf, sizeof buf, InChannel);
120: 76,77c75
121: < for (; !feof(InChannel); !feof(InChannel) && !ferror(InChannel) &&
122: < sfgets(buf, MAXFIELD, InChannel) != NULL)
123: ---
124: > do
125: 79c77
126: < register char c;
127: ---
128: > int c;
129: 85c83
130: < while ((c = getc(InChannel)) != '\n')
131: ---
132: > while ((c = getc(InChannel)) != '\n' && c != EOF)
133: 117c115
134: < }
135: ---
136: > } while (sfgets(buf, MAXFIELD, InChannel) != NULL);
137: 126d123
138: < {
139: 128,129d124
140: < fixcrlf(buf, TRUE);
141: < }
142: 135,136c130
143: < for (; !feof(InChannel); !feof(InChannel) && !ferror(InChannel) &&
144: < sfgets(buf, sizeof buf, InChannel) != NULL)
145: ---
146: > do
147: 160c154
148: < }
149: ---
150: > } while (sfgets(buf, MAXFIELD, InChannel) != NULL);
151: Only in .: collect.o
152: Only in .: conf.o
153: Only in .: convtime.o
154: Only in .: daemon.o
155: diff OLD/deliver.c ./deliver.c
156: 6c6
157: < SCCSID(@(#)deliver.c 4.2 8/28/83);
158: ---
159: > SCCSID(@(#)deliver.c 4.5 12/27/83);
160: 386c386
161: < smtpquit(pv[0], m);
162: ---
163: > smtpquit(m);
164: 760a761,762
165: > int i;
166: >
167: 807,822c809,815
168: < /*
169: < ** We have to be careful with vfork - we can't mung up the
170: < ** memory but we don't want the mailer to inherit any extra
171: < ** open files. Chances are the mailer won't
172: < ** care about an extra file, but then again you never know.
173: < ** Actually, we would like to close(fileno(pwf)), but it's
174: < ** declared static so we can't. But if we fclose(pwf), which
175: < ** is what endpwent does, it closes it in the parent too and
176: < ** the next getpwnam will be slower. If you have a weird
177: < ** mailer that chokes on the extra file you should do the
178: < ** endpwent(). -MRH
179: < **
180: < ** Similar comments apply to log. However, openlog is
181: < ** clever enough to set the FIOCLEX mode on the file,
182: < ** so it will be closed automatically on the exec.
183: < */
184: ---
185: > /* arrange for all the files to be closed */
186: > for (i = 3; i < 50; i++)
187: > #ifdef FIOCLEX
188: > (void) ioctl(i, FIOCLEX, 0);
189: > #else FIOCLEX
190: > (void) close(i);
191: > #endif FIOCLEX
192: 824,825d816
193: < closeall();
194: <
195: 829,830c820,822
196: < /* syserr fails because log is closed */
197: < /* syserr("Cannot exec %s", m->m_mailer); */
198: ---
199: > #ifdef FIOCLEX
200: > syserr("Cannot exec %s", m->m_mailer);
201: > #else FIOCLEX
202: 832a825
203: > #endif FIOCLEX
204: 901,903d893
205: < extern char *sys_errlist[];
206: < extern int sys_nerr;
207: <
208: 907,912c897
209: < (void) strcat(buf, ": ");
210: < if (errno > 0 && errno < sys_nerr)
211: < (void) strcat(buf, sys_errlist[errno]);
212: < else
213: < {
214: < char xbuf[30];
215: ---
216: > extern char *errstring();
217: 914,916c899,900
218: < (void) sprintf(xbuf, "Error %d", errno);
219: < (void) strcat(buf, xbuf);
220: < }
221: ---
222: > (void) strcat(buf, ": ");
223: > (void) strcat(buf, errstring(errno));
224: Only in .: deliver.o
225: Only in .: envelope.o
226: diff OLD/err.c ./err.c
227: 3c3
228: < SCCSID(@(#)err.c 4.2 9/5/83);
229: ---
230: > SCCSID(@(#)err.c 4.3 10/1/83);
231: 272,277c272,274
232: < extern int sys_nerr;
233: < extern char *sys_errlist[];
234: < if (errno < sys_nerr && errno > 0)
235: < (void) sprintf(eb, ": %s", sys_errlist[errno]);
236: < else
237: < (void) sprintf(eb, ": error %d", errno);
238: ---
239: > extern char *errstring();
240: >
241: > (void) sprintf(eb, ": %s", errstring(errno));
242: 279a277,303
243: > }
244: > /*
245: > ** ERRSTRING -- return string description of error code
246: > **
247: > ** Parameters:
248: > ** errno -- the error number to translate
249: > **
250: > ** Returns:
251: > ** A string description of errno.
252: > **
253: > ** Side Effects:
254: > ** none.
255: > */
256: >
257: > char *
258: > errstring(errno)
259: > int errno;
260: > {
261: > extern char *sys_errlist[];
262: > extern int sys_nerr;
263: > static char buf[50];
264: >
265: > if (errno > 0 && errno < sys_nerr)
266: > return (sys_errlist[errno]);
267: >
268: > (void) sprintf(buf, "Error %d", errno);
269: > return (buf);
270: Only in .: err.o
271: Only in .: headers.o
272: Only in .: lfAA21321
273: Only in .: macro.o
274: diff OLD/main.c ./main.c
275: 7c7
276: < SCCSID(@(#)main.c 4.3 9/5/83);
277: ---
278: > SCCSID(@(#)main.c 4.7 12/27/83);
279: 60c60
280: < main(argc, argv)
281: ---
282: > main(argc, argv, envp)
283: 62a63
284: > char **envp;
285: 72c73
286: < bool readconfig = FALSE;
287: ---
288: > bool readconfig = TRUE;
289: 83a85
290: > extern char **environ;
291: 123a126,128
292: > /* reset the environment after the thaw */
293: > environ = envp;
294: >
295: 150c155,156
296: < closeall();
297: ---
298: > for (i = 3; i < 50; i++)
299: > (void) close(i);
300: 158,163c164
301: < /* initialize some macros, etc. */
302: < initmacros();
303: <
304: < /* hostname */
305: < av = myhostname(jbuf, sizeof jbuf);
306: < if (jbuf[0] != '\0')
307: ---
308: > if (readconfig)
309: 165,170c166,167
310: < p = newstr(jbuf);
311: < define('w', p, CurEnv);
312: < setclass('w', p);
313: < }
314: < while (av != NULL && *av != NULL)
315: < setclass('w', *av++);
316: ---
317: > /* initialize some macros, etc. */
318: > initmacros();
319: 172,173c169,178
320: < /* version */
321: < define('v', Version, CurEnv);
322: ---
323: > /* hostname */
324: > av = myhostname(jbuf, sizeof jbuf);
325: > if (jbuf[0] != '\0')
326: > {
327: > p = newstr(jbuf);
328: > define('w', p, CurEnv);
329: > setclass('w', p);
330: > }
331: > while (av != NULL && *av != NULL)
332: > setclass('w', *av++);
333: 174a180,183
334: > /* version */
335: > define('v', Version, CurEnv);
336: > }
337: >
338: 384c393
339: < ** If printing the queue, go off and do that.
340: ---
341: > ** Do operation-mode-dependent initialization.
342: 387c396
343: < if (OpMode == MD_PRINT)
344: ---
345: > switch (OpMode)
346: 388a398,399
347: > case MD_PRINT:
348: > /* print the queue */
349: 397d407
350: < }
351: 399,404c409,411
352: < /*
353: < ** Initialize aliases.
354: < */
355: <
356: < initaliases(AliasFile, OpMode == MD_INITALIAS);
357: < if (OpMode == MD_INITALIAS)
358: ---
359: > case MD_INITALIAS:
360: > /* initialize alias database */
361: > initaliases(AliasFile, TRUE);
362: 405a413,422
363: >
364: > case MD_DAEMON:
365: > /* don't open alias database -- done in srvrsmtp */
366: > break;
367: >
368: > default:
369: > /* open the alias database */
370: > initaliases(AliasFile, FALSE);
371: > break;
372: > }
373: Only in .: main.o
374: Only in .: make.out
375: Only in .: mqueue
376: Only in .: options
377: Only in .: osendmail
378: diff OLD/parseaddr.c ./parseaddr.c
379: 3c3
380: < SCCSID(@(#)parseaddr.c 4.1 7/25/83);
381: ---
382: > SCCSID(@(#)parseaddr.c 4.3 10/23/83);
383: 168a169
384: > ** If '\t' then we are reading the .cf file.
385: 223a225
386: > extern int errno;
387: 224a227,229
388: > /* make sure error messages don't have garbage on them */
389: > errno = 0;
390: >
391: 251c256
392: < /* squirrel it away */
393: ---
394: > /* see if there is room */
395: 257a263,264
396: >
397: > /* squirrel it away */
398: 264a272,273
399: > c &= ~0200;
400: >
401: 271d279
402: < c &= ~0200;
403: 962a971
404: > register char *p;
405: 1050a1060,1062
406: > ** Make sure that any real '$' characters in the input are
407: > ** not accidently interpreted as macro expansions by quoting
408: > ** them before expansion.
409: 1053a1066,1068
410: > for (p = lbuf; *p != '\0'; p++)
411: > if (*p == '$')
412: > *p |= 0200;
413: 1056a1072
414: > stripquotes(buf, FALSE);
415: Only in .: parseaddr.o
416: Only in .: qfAA21321
417: Only in .: qfAA26161
418: Only in .: queue.o
419: Only in .: readcf.o
420: diff OLD/recipient.c ./recipient.c
421: 5c5
422: < SCCSID(@(#)recipient.c 4.1 7/25/83);
423: ---
424: > SCCSID(@(#)recipient.c 4.2 10/29/83);
425: 330d329
426: < extern struct passwd *getpwent();
427: 332a332,333
428: > extern struct passwd *getpwent();
429: > extern struct passwd *getpwnam();
430: Only in .: recipient.o
431: Only in .: savemail.o
432: Only in .: sendmail.cf
433: Only in .: sendmail.hf
434: Only in .: sl
435: Only in .: sm.arpa
436: diff OLD/srvrsmtp.c ./srvrsmtp.c
437: 6c6
438: < SCCSID(@(#)srvrsmtp.c 4.3 8/28/83 (no SMTP));
439: ---
440: > SCCSID(@(#)srvrsmtp.c 4.5 11/26/83 (no SMTP));
441: 9c9
442: < SCCSID(@(#)srvrsmtp.c 4.3 8/28/83);
443: ---
444: > SCCSID(@(#)srvrsmtp.c 4.5 11/26/83);
445: 76c76
446: < char *WizWord = NULL; /* the wizard word to compare against */
447: ---
448: > char *WizWord; /* the wizard word to compare against */
449: 434c434
450: < if (strcmp(WizWord, crypt(p, seed)) != 0)
451: ---
452: > if (strcmp(WizWord, crypt(p, seed)) == 0)
453: 436c436,437
454: < message("500", "You are no wizard!");
455: ---
456: > IsWiz = TRUE;
457: > message("200", "Please pass, oh mighty wizard");
458: 440,441c441
459: < IsWiz = TRUE;
460: < message("200", "Please pass, oh mighty wizard");
461: ---
462: > message("500", "You are no wizard!");
463: 631a632,635
464: >
465: > /* open alias database */
466: > initaliases(AliasFile, FALSE);
467: >
468: Only in .: srvrsmtp.diff
469: Only in .: srvrsmtp.o
470: Only in .: stab.o
471: Only in .: stats.o
472: Only in .: sysexits.o
473: Only in .: tags
474: Only in .: trace.h
475: Only in .: trace.o
476: diff OLD/usersmtp.c ./usersmtp.c
477: 6c6
478: < SCCSID(@(#)usersmtp.c 4.4 9/7/83 (no SMTP));
479: ---
480: > SCCSID(@(#)usersmtp.c 4.7 11/13/83 (no SMTP));
481: 9c9
482: < SCCSID(@(#)usersmtp.c 4.4 9/7/83);
483: ---
484: > SCCSID(@(#)usersmtp.c 4.7 11/13/83);
485: 82a83,89
486: > if (CurEnv->e_xfp != NULL)
487: > {
488: > extern char *errstring();
489: >
490: > fprintf(CurEnv->e_xfp, "421 %s.%s... Deferred: %s\n",
491: > pvp[1], m->m_name, errstring(errno));
492: > }
493: 277c284
494: < ** name -- name of mailer we are quitting.
495: ---
496: > ** m -- a pointer to the mailer.
497: 286,287c293
498: < smtpquit(name, m)
499: < char *name;
500: ---
501: > smtpquit(m)
502: 312c318
503: < i = endmailer(SmtpPid, name);
504: ---
505: > i = endmailer(SmtpPid, m->m_argv[0]);
506: 314c320
507: < syserr("smtpquit %s: stat %d", name, i);
508: ---
509: > syserr("smtpquit %s: stat %d", m->m_argv[0], i);
510: 371c377
511: < smtpquit("reply error", m);
512: ---
513: > smtpquit(m);
514: 407c413
515: < smtpquit("SMTP Shutdown", m);
516: ---
517: > smtpquit(m);
518: Only in .: usersmtp.o
519: diff OLD/util.c ./util.c
520: 9c9
521: < SCCSID(@(#)util.c 4.2 8/31/83);
522: ---
523: > SCCSID(@(#)util.c 4.4 12/27/83);
524: 622c622,623
525: < ** NULL on error (including timeout).
526: ---
527: > ** NULL on error (including timeout). This will also leave
528: > ** buf containing a null string.
529: 653c654,655
530: < do
531: ---
532: > p = NULL;
533: > while (p == NULL && !feof(fp) && !ferror(fp))
534: 657c659,661
535: < } while (p == NULL && errno == EINTR);
536: ---
537: > if (errno == EINTR)
538: > clearerr(fp);
539: > }
540: 663a668,669
541: > if (p == NULL)
542: > buf[0] = '\0';
543: 811,830d816
544: < }
545: < /*
546: < ** CLOSEALL -- close all extraneous file descriptors
547: < **
548: < ** Parameters:
549: < ** none.
550: < **
551: < ** Returns:
552: < ** none.
553: < **
554: < ** Side Effects:
555: < ** Closes all file descriptors except zero, one, and two.
556: < */
557: <
558: < closeall()
559: < {
560: < int i;
561: <
562: < for (i = 3; i < 50; i++)
563: < (void) close(i);
564: Only in .: util.o
565: diff OLD/version.c ./version.c
566: 2c2
567: < static char SccsId[] = "@(#)SendMail version 4.12 of 9/7/83";
568: ---
569: > static char SccsId[] = "@(#)SendMail version 4.24 of 12/27/83";
570: 5c5
571: < char Version[] = "4.12";
572: ---
573: > char Version[] = "4.24";
574: Only in .: zzz
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.