Annotation of 43BSD/contrib/mh/sbr/m_whatnow.c, revision 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.