|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.