nmh-workers
[Top] [All Lists]

second stab

1996-02-22 07:38:50
Thanks to Jerry Peek and Richard Doty for pointing out that I needed
to add the new command line switches to whatnowsbr.c too

So, here's another version.  The new switches now seem to get picked
up and acted upon everywhere I've tried.

Martin


*** mts/sendmail/smail.c.FCS    Thu Feb 15 10:29:32 1996
--- mts/sendmail/smail.c        Thu Feb 15 18:51:28 1996
***************
*** 58,63 ****
--- 58,64 ----
  #define       NOTOK   (-1)
  #define       OK      0
  #define       DONE    1
+ #define       NULLCP  ((char *) 0)
  
  #define       TRUE    1
  #define       FALSE   0
***************
*** 446,455 ****
  
  /*  */
  
! int     sm_winit (mode, from)
  register int  mode;
! register char   *from;
  {
  #ifdef        MPOP
      if (sm_ispool && !sm_wfp) {
        (void) strlen (strcpy (sm_reply.text,
--- 447,460 ----
  
  /*  */
  
! int     sm_winit (mode, from, ret, envid)
  register int  mode;
! register char   *from, *ret, *envid;
  {
+ char tmpstr[BUFSIZ];
+ 
+     tmpstr[0] = '\0';
+ 
  #ifdef        MPOP
      if (sm_ispool && !sm_wfp) {
        (void) strlen (strcpy (sm_reply.text,
***************
*** 459,467 ****
      }
  #endif /* MPOP */
  
!     switch (smtalk (SM_MAIL, "%s FROM:<%s>",
!               mode == S_SEND ? "SEND" : mode == S_SOML ? "SOML"
!               : mode == S_SAML ? "SAML" : "MAIL", from)) {
        case 250: 
            sm_addrs = 0;
            return RP_OK;
--- 464,483 ----
      }
  #endif /* MPOP */
  
!     if ((ret != NULLCP || envid != NULLCP) && EHLOset ("DSN")) {
!       if (ret != NULLCP && strlen(ret) > 8) ret[8] = '\0';
!       if (ret) sprintf(tmpstr, " RET=%s", ret);
!       if (envid != NULLCP && strlen(envid) > 100) envid[100] = '\0';
!       if (envid) {
!       strcat(tmpstr, " ENVID=");
!       strcat(tmpstr, envid);
!       }
!     }
! 
!     switch (smtalk (SM_MAIL, "%s FROM:<%s>%s",
!                   mode == S_SEND ? "SEND" : mode == S_SOML ? "SOML"
!                   : mode == S_SAML ? "SAML" : "MAIL", from, 
!                   tmpstr ? tmpstr : "")) {
        case 250: 
            sm_addrs = 0;
            return RP_OK;
***************
*** 482,499 ****
  /* ARGUSED */
  #endif        /* BERK */
  
! int     sm_wadr (mbox, host, path)
  register char   *mbox;
  #ifndef       BERK
  register
  #endif        /* not BERK */
         char   *host,
!               *path;
  {
  #ifndef       BERK
!     switch (smtalk (SM_RCPT, host && *host ? "RCPT TO:<%s%s@%s>"
!                                          : "RCPT TO:<%s%s>",
!                            path ? path : "", mbox, host)) {
  #else /* BERK */
      switch (smtalk (SM_RCPT, "RCPT TO:%s", mbox)) {
  #endif        /* BERK */
--- 498,531 ----
  /* ARGUSED */
  #endif        /* BERK */
  
! int     sm_wadr (mbox, host, path, notify)
  register char   *mbox;
  #ifndef       BERK
  register
  #endif        /* not BERK */
         char   *host,
!               *path,
!                 *notify;
  {
+ char tmpstr[BUFSIZ];
+ 
+     tmpstr[0] = '\0';
+ 
  #ifndef       BERK
!     if (notify != NULLCP && EHLOset ("DSN")) {
!       if (strlen(notify) > 28) {
!       notify[28] = '\0';
!       }
! 
!       sprintf(tmpstr, host && *host ? " NOTIFY=%s ORCPT=rfc822;%s%s@%s" : 
!       " NOTIFY=%s ORCPT=rfc822;%s%s", notify, path ? path : "", mbox,
!       host);
!     }
! 
!     switch (smtalk (SM_RCPT, host && *host ? "RCPT TO:<%s%s@%s>%s"
!                                          : "RCPT TO:<%s%s>%s",
!                            path ? path : "", mbox, host,
!                            tmpstr ? tmpstr : "")) {
  #else /* BERK */
      switch (smtalk (SM_RCPT, "RCPT TO:%s", mbox)) {
  #endif        /* BERK */
*** uip/post.c.FCS      Thu Feb 15 10:18:35 1996
--- uip/post.c  Fri Feb 16 18:25:31 1996
***************
*** 157,162 ****
--- 157,169 ----
  #define       NRECOSW 37
      "norecord", -8,
  
+ #define NOTIFYSW 38
+     "notify option", 0,
+ #define RETSW 39
+     "ret option" , 0,
+ #define ENVIDSW 40
+     "envid id" , 0,
+ 
      NULL, 0
  };
  
***************
*** 339,345 ****
  
  static        int     queued = 0;
  
! static        char   *record = NULLCP;
  
  off_t lseek ();
  long  time ();
--- 346,353 ----
  
  static        int     queued = 0;
  
! static        char   *record = NULLCP, 
!   *notify = NULLCP, *ret = NULLCP, *envid = NULLCP;
  
  off_t lseek ();
  long  time ();
***************
*** 592,597 ****
--- 600,618 ----
                case NRECOSW:
                    record = NULLCP;
                    continue;
+ 
+               case RETSW:
+                   if (!(ret = *argp++) || *ret == '-')
+                       adios (NULLCP, "missing argument to %s", argp[-2]);
+                   continue;
+               case ENVIDSW:
+                   if (!(envid = *argp++) || *envid == '-')
+                       adios (NULLCP, "missing argument to %s", argp[-2]);
+                   continue;
+               case NOTIFYSW:
+                   if (!(notify = *argp++) || *notify == '-')
+                       adios (NULLCP, "missing argument to %s", argp[-2]);
+                   continue;
            }
        if (msg)
            adios (NULLCP, "only one message at a time!");
***************
*** 1445,1451 ****
  #ifdef        SENDMTS
      if (!whomsw || checksw)
        if (rp_isbad (retval = sm_init (clientsw, serversw, 0, 0, snoop, 0, 0))
!               || rp_isbad (retval = sm_winit (smtpmode, from)))
            die (NULLCP, "problem initializing server; %s",
                    rp_string (retval));
  #endif        /* SENDMTS */
--- 1466,1472 ----
  #ifdef        SENDMTS
      if (!whomsw || checksw)
        if (rp_isbad (retval = sm_init (clientsw, serversw, 0, 0, snoop, 0, 0))
!               || rp_isbad (retval = sm_winit (smtpmode, from, ret, envid)))
            die (NULLCP, "problem initializing server; %s",
                    rp_string (retval));
  #endif        /* SENDMTS */
***************
*** 1555,1561 ****
  #ifdef        SENDMTS
      if (rp_isbad (retval = sm_init (clientsw, serversw, watch, verbose, snoop,
                                    onex, queued))
!           || rp_isbad (retval = sm_winit (smtpmode, from)))
        die (NULLCP, "problem initializing server; %s", rp_string (retval));
  #endif        /* SENDMTS */
  
--- 1576,1582 ----
  #ifdef        SENDMTS
      if (rp_isbad (retval = sm_init (clientsw, serversw, watch, verbose, snoop,
                                    onex, queued))
!           || rp_isbad (retval = sm_winit (smtpmode, from, ret, envid)))
        die (NULLCP, "problem initializing server; %s", rp_string (retval));
  #endif        /* SENDMTS */
  
***************
*** 1712,1718 ****
  #ifdef        SENDMTS
      if (rp_isbad (retval = sm_init (clientsw, serversw, watch, verbose, snoop,
                                    0, 0))
!           || rp_isbad (retval = sm_winit (smtpmode, from)))
        die (NULLCP, "problem initializing server; %s", rp_string (retval));
  #endif        /* SENDMTS */
  
--- 1733,1739 ----
  #ifdef        SENDMTS
      if (rp_isbad (retval = sm_init (clientsw, serversw, watch, verbose, snoop,
                                    0, 0))
!           || rp_isbad (retval = sm_winit (smtpmode, from, ret, envid)))
        die (NULLCP, "problem initializing server; %s", rp_string (retval));
  #endif        /* SENDMTS */
  
***************
*** 2234,2240 ****
  /*  */
  
      switch (retval = sm_wadr (mbox, host,
!                        lp -> m_type != UUCPHOST ? lp -> m_path : NULLCP)) {
        case RP_OK: 
            if (talk)
                printf ("address ok\n");
--- 2255,2262 ----
  /*  */
  
      switch (retval = sm_wadr (mbox, host,
!                        lp -> m_type != UUCPHOST ? lp -> m_path : NULLCP,
!                             notify)) {
        case RP_OK: 
            if (talk)
                printf ("address ok\n");
*** uip/send.c.FCS      Thu Feb 15 10:10:41 1996
--- uip/send.c  Fri Feb 16 18:25:15 1996
***************
*** 127,132 ****
--- 127,139 ----
  #define       NRECOSW 38
      "norecord", -8,
  
+ #define NOTIFYSW 39
+     "notify option", 0,
+ #define RETSW 40
+     "ret option" , 0,
+ #define ENVIDSW 41
+     "envid id" , 0,
+ 
      NULL, 0
  };
  
***************
*** 316,321 ****
--- 323,331 ----
                case CLIESW: 
                case SERVSW: 
                case RECORSW: 
+               case RETSW:
+               case ENVIDSW:
+               case NOTIFYSW:
                    vec[vecp++] = --cp;
                    if (!(cp = *argp++) || *cp == '-')
                        adios (NULLCP, "missing argument to %s", argp[-2]);
*** uip/whatnowsbr.c.FCS        Wed Feb 21 17:28:27 1996
--- uip/whatnowsbr.c    Wed Feb 21 17:30:15 1996
***************
*** 661,666 ****
--- 661,673 ----
  #define       NRECOSW 37
      "norecord", -8,
  
+ #define NOTIFYSW 38
+     "notify option", 0,
+ #define RETSW 39
+     "ret option" , 0,
+ #define ENVIDSW 40
+     "envid id" , 0,
+ 
      NULL, 0
  };
  
***************
*** 799,804 ****
--- 806,814 ----
                case CLIESW: 
                case SERVSW: 
                case RECORSW: 
+                 case NOTIFYSW:
+                 case RETSW:
+                 case ENVIDSW:
                    vec[vecp++] = --cp;
                    if (!(cp = *argp++) || *cp == '-') {
                        advise (NULLCP, "missing argument to %s", argp[-2]);
*** uip/sbboards.c.FCS  Thu Feb 15 10:25:16 1996
--- uip/sbboards.c      Thu Feb 15 12:44:00 1996
***************
*** 258,264 ****
      int     retval;
  
      if (rp_isbad (retval = sm_init (NULLCP, NULLCP, 0, 0, 0, 0, 0))
!           || rp_isbad (retval = sm_winit (S_MAIL, bb_from)))
        return lose ("problem initializing SendMail; %s",
                rp_string (retval));
  
--- 258,264 ----
      int     retval;
  
      if (rp_isbad (retval = sm_init (NULLCP, NULLCP, 0, 0, 0, 0, 0))
!           || rp_isbad (retval = sm_winit (S_MAIL, bb_from, NULLCP, NULLCP)))
        return lose ("problem initializing SendMail; %s",
                rp_string (retval));
  
***************
*** 284,290 ****
  {
      int     retval;
  
!     switch (retval = sm_wadr (mbox, host, NULLCP)) {
        case RP_OK:
            return OK;
  
--- 284,290 ----
  {
      int     retval;
  
!     switch (retval = sm_wadr (mbox, host, NULLCP, NULLCP)) {
        case RP_OK:
            return OK;
  
***************
*** 390,403 ****
        return;
  
      if (rp_isbad (sm_init (NULLCP, NULLCP, 0, 0, 0, 0, 0))
!           || rp_isbad (sm_winit (S_MAIL, bb_from)))
        goto sm_err;
  
!     switch (sm_wadr (bb_from, NULLCP, NULLCP)) {
        case RP_OK:
            for (i = 0; bb[i]; i++) {
                (void) sprintf (buffer, "local-%s-request", bb[i] -> bb_name);
!               (void) sm_wadr (buffer, LocalName (), NULLCP);
            }
            break;
  
--- 390,403 ----
        return;
  
      if (rp_isbad (sm_init (NULLCP, NULLCP, 0, 0, 0, 0, 0))
!           || rp_isbad (sm_winit (S_MAIL, bb_from, NULLCP, NULLCP)))
        goto sm_err;
  
!     switch (sm_wadr (bb_from, NULLCP, NULLCP, NULLCP)) {
        case RP_OK:
            for (i = 0; bb[i]; i++) {
                (void) sprintf (buffer, "local-%s-request", bb[i] -> bb_name);
!               (void) sm_wadr (buffer, LocalName (), NULLCP, NULLCP);
            }
            break;
  
*** uip/spop.c.FCS      Thu Feb 15 10:30:23 1996
--- uip/spop.c  Thu Feb 15 13:39:07 1996
***************
*** 249,255 ****
      int     retval;
  
      if (rp_isbad (retval = sm_init (NULLCP, NULLCP, 0, 0, 0, 0, 0))
!           || rp_isbad (retval = sm_winit (S_MAIL, bb_from)))
        return lose ("problem initializing SendMail; %s",
                rp_string (retval));
  
--- 249,255 ----
      int     retval;
  
      if (rp_isbad (retval = sm_init (NULLCP, NULLCP, 0, 0, 0, 0, 0))
!           || rp_isbad (retval = sm_winit (S_MAIL, bb_from, NULLCP, NULLCP)))
        return lose ("problem initializing SendMail; %s",
                rp_string (retval));
  
***************
*** 275,281 ****
  {
      int     retval;
  
!     switch (retval = sm_wadr (mbox, host, NULLCP)) {
        case RP_OK:
            return OK;
  
--- 275,281 ----
  {
      int     retval;
  
!     switch (retval = sm_wadr (mbox, host, NULLCP, NULLCP)) {
        case RP_OK:
            return OK;
  
***************
*** 381,394 ****
        return;
  
      if (rp_isbad (sm_init (NULLCP, NULLCP, 0, 0, 0, 0, 0))
!           || rp_isbad (sm_winit (S_MAIL, bb_from)))
        goto sm_err;
  
!     switch (sm_wadr (bb_from, NULLCP, NULLCP)) {
        case RP_OK:
            for (i = 0; bb[i]; i++) {
                (void) sprintf (buffer, "local-%s-request", bb[i] -> bb_name);
!               (void) sm_wadr (buffer, LocalName (), NULLCP);
            }
            break;
  
--- 381,394 ----
        return;
  
      if (rp_isbad (sm_init (NULLCP, NULLCP, 0, 0, 0, 0, 0))
!           || rp_isbad (sm_winit (S_MAIL, bb_from, NULLCP, NULLCP)))
        goto sm_err;
  
!     switch (sm_wadr (bb_from, NULLCP, NULLCP, NULLCP)) {
        case RP_OK:
            for (i = 0; bb[i]; i++) {
                (void) sprintf (buffer, "local-%s-request", bb[i] -> bb_name);
!               (void) sm_wadr (buffer, LocalName (), NULLCP, NULLCP);
            }
            break;
  
<Prev in Thread] Current Thread [Next in Thread>
  • second stab, Martin Hamilton <=