Annotation of 43BSD/usr.lib/sendmail/src/CHANGES, revision 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.