|
|
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.