Annotation of 43BSD/usr.lib/sendmail/src/CHANGES, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.