Annotation of 43BSDReno/contrib/mh/sbr/m_whatnow.c, revision 1.1.1.1

1.1       root        1: /* m_whatnow.c - exec whatnowproc */
                      2: 
                      3: #include "../h/mh.h"
                      4: #include <stdio.h>
                      5: 
                      6: m_whatnow (ed, nedit, use, file, altmsg, dist, mp, text, inplace, cwd)
                      7: struct msgs *mp;
                      8: char  *ed,
                      9:        *file,
                     10:        *altmsg,
                     11:        *text,
                     12:        *cwd;
                     13: int    nedit,
                     14:        use,
                     15:        dist,
                     16:        inplace;
                     17: {
                     18:     int     found,
                     19:             k,
                     20:             msgnum,
                     21:             vecp;
                     22:     register char  *bp;
                     23:     char    buffer[BUFSIZ],
                     24:            *vec[MAXARGS];
                     25: 
                     26:     vecp = 0;
                     27:     vec[vecp++] = r1bindex (whatnowproc, '/');
                     28:     vec[vecp] = NULL;
                     29: 
                     30:     (void) putenv ("mhdraft", file);
                     31:     if (mp)
                     32:        (void) putenv ("mhfolder", mp -> foldpath);
                     33:     else
                     34:        (void) unputenv ("mhfolder");
                     35:     if (altmsg)
                     36:        if (mp == NULL || *altmsg == '/' || cwd == NULL)
                     37:            (void) putenv ("mhaltmsg", altmsg);
                     38:        else {
                     39:            (void) sprintf (buffer, "%s/%s", mp -> foldpath, altmsg);
                     40:            (void) putenv ("mhaltmsg", buffer);
                     41:        }
                     42:     else
                     43:        (void) unputenv ("mhaltmsg");
                     44:     if (bp = getenv ("mhaltmsg"))/* XXX */
                     45:        (void) putenv ("editalt", bp);
                     46:     (void) sprintf (buffer, "%d", dist);
                     47:     (void) putenv ("mhdist", buffer);
                     48:     if (nedit)
                     49:        (void) unputenv ("mheditor");
                     50:     else
                     51:        (void) putenv ("mheditor", ed ? ed : (ed = m_find ("editor")) ? ed : sysed);
                     52:     (void) sprintf (buffer, "%d", use);
                     53:     (void) putenv ("mhuse", buffer);
                     54: 
                     55:     (void) unputenv ("mhmessages");
                     56:     (void) unputenv ("mhannotate");
                     57:     (void) unputenv ("mhinplace");
                     58:     if (text && mp && !(mp -> msgflags & READONLY)) {
                     59:        found = 0;
                     60:        bp = buffer;
                     61:        for (msgnum = mp -> lowmsg; msgnum <= mp -> hghmsg; msgnum++)
                     62:            if (mp -> msgstats[msgnum] & SELECTED) {
                     63:                (void) sprintf (bp, "%s%s", found ? " " : "", m_name (msgnum));
                     64:                bp += strlen (bp);
                     65:                for (k = msgnum + 1;
                     66:                        k <= mp -> hghmsg && mp -> msgstats[k] & SELECTED;
                     67:                        k++)
                     68:                    continue;
                     69:                if (--k > msgnum) {
                     70:                    (void) sprintf (bp, "-%s", m_name (k));
                     71:                    bp += strlen (bp);
                     72:                }
                     73:                msgnum = k + 1;
                     74:                found++;
                     75:            }
                     76:        if (found) {
                     77:            (void) putenv ("mhmessages", buffer);
                     78:            (void) putenv ("mhannotate", text);
                     79:            (void) sprintf (buffer, "%d", inplace);
                     80:            (void) putenv ("mhinplace", buffer);
                     81:        }
                     82:     }
                     83: 
                     84:     m_update ();
                     85:     (void) fflush (stdout);
                     86: 
                     87:     if (cwd)
                     88:        (void) chdir (cwd);
                     89: 
                     90:     if (strcmp (vec[0], "whatnow") == 0) {
                     91:        WhatNow (vecp, vec);
                     92:        done (0);
                     93:     }
                     94: 
                     95:     execvp (whatnowproc, vec);
                     96:     fprintf (stderr, "unable to exec ");
                     97:     perror (whatnowproc);
                     98: 
                     99:     return 0;
                    100: }

unix.superglobalmegacorp.com

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