📄 whatnowsbr.c
字号:
{ register int child_id, i, vecp; char *cp, *sp, *vec[MAXARGS]; if (strcmp (sp = r1bindex (sendproc, '/'), "send") == 0) { cp = invo_name; sendit (invo_name = sp, arg, file, pushsw); invo_name = cp; return; } m_update (); (void) fflush (stdout); for (i = 0; (child_id = vfork ()) == NOTOK && i < 5; i++) sleep (5); switch (child_id) { case NOTOK: advise (NULLCP, "unable to fork, so sending directly..."); case OK: vecp = 0; vec[vecp++] = invo_name; if (pushsw) vec[vecp++] = "-push"; if (arg) while (*arg) vec[vecp++] = *arg++; vec[vecp++] = file; vec[vecp] = NULL; execvp (sendproc, vec); fprintf (stderr, "unable to exec "); perror (sendproc); _exit (-1); default: if (pidwait (child_id, OK) == 0) done (0); return; }}/* */static struct swit sendswitches[] = {#define ALIASW 0 "alias aliasfile", 0,#define DEBUGSW 1 "debug", -5,#define ENCRSW 2 "encrypt",#ifndef TMA -7,#else TMA 0,#endif TMA#define NENCRSW 3 "noencrypt",#ifndef TMA -9,#else TMA 0,#endif TMA#define FILTSW 4 "filter filterfile", 0,#define NFILTSW 5 "nofilter", 0,#define FRMTSW 6 "format", 0,#define NFRMTSW 7 "noformat", 0,#define FORWSW 8 "forward", 0,#define NFORWSW 9 "noforward", 0,#define MSGDSW 10 "msgid", 0,#define NMSGDSW 11 "nomsgid", 0,#define SPSHSW 12 "push", 0,#define NSPSHSW 13 "nopush", 0,#define UNIQSW 14 "unique", -6,#define NUNIQSW 15 "nounique", -8,#define VERBSW 16 "verbose", 0,#define NVERBSW 17 "noverbose", 0,#define WATCSW 18 "watch", 0,#define NWATCSW 19 "nowatch", 0,#define WIDTHSW 20 "width columns", 0,#define SHELPSW 21 "help", 4,#define MAILSW 22 "mail", -4,#define SAMLSW 23 "saml", -4,#define SSNDSW 24 "send", -4,#define SOMLSW 25 "soml", -4,#define CLIESW 26 "client host", -6,#define SERVSW 27 "server host", -6,#define SNOOPSW 28 "snoop", -5,#define SDRFSW 29 "draftfolder +folder", -6,#define SDRMSW 30 "draftmessage msg", -6,#define SNDRFSW 31 "nodraftfolder", -3,#ifdef X400#define MTSSW 32 "mts smtp/x400", 0,#define NOTESW 33 "note", 0,#endif X400 NULL, NULL};/* */extern int debugsw; /* from sendsbr.c */extern int forwsw;extern int inplace;extern int pushsw;extern int unique;extern char *altmsg; /* .. */extern char *annotext;extern char *distfile;/* */static sendit (sp, arg, file, pushed)register char *sp, **arg, *file;int pushed;{#ifndef lint int distsw = 0;#endif not lint int vecp = 1; char *cp, buf[100], **ap, **argp, *arguments[MAXARGS], *vec[MAXARGS]; struct stat st;#ifdef UCI FILE *fp;#endif UCI if (arg) (void) copyip (arg, vec); if ((cp = m_find (sp)) != NULL) { ap = brkstring (cp = getcpy (cp), " ", "\n"); ap = copyip (ap, arguments); } else ap = arguments; if (arg) (void) copyip (vec, ap); argp = arguments; debugsw = 0, forwsw = 1, inplace = 0, unique = 0; altmsg = annotext = distfile = NULL; vec[vecp++] = "-library"; vec[vecp++] = getcpy (m_maildir (""));/* */ while (cp = *argp++) { if (*cp == '-') switch (smatch (++cp, sendswitches)) { case AMBIGSW: ambigsw (cp, sendswitches); return; case UNKWNSW: advise (NULLCP, "-%s unknown\n", cp); return; case SHELPSW: (void) sprintf (buf, "%s [switches]", sp); help (buf, sendswitches); return; case SPSHSW: pushed++; continue; case NSPSHSW: pushed = 0; continue; case UNIQSW: unique++; continue; case NUNIQSW: unique = 0; continue; case FORWSW: forwsw++; continue; case NFORWSW: forwsw = 0; continue; case DEBUGSW: debugsw++; /* fall */ case NFILTSW: case FRMTSW: case NFRMTSW: case MSGDSW: case NMSGDSW: case VERBSW: case NVERBSW: case WATCSW: case NWATCSW: case MAILSW: case SAMLSW: case SSNDSW: case SOMLSW: case ENCRSW: case NENCRSW: case SNOOPSW: #ifdef X400 case NOTESW:#endif X400 vec[vecp++] = --cp; continue; case ALIASW: case FILTSW: case WIDTHSW: case CLIESW: case SERVSW: #ifdef X400 case MTSSW:#endif X400 vec[vecp++] = --cp; if (!(cp = *argp++) || *cp == '-') { advise (NULLCP, "missing argument to %s", argp[-2]); return; } vec[vecp++] = cp; continue; case SDRFSW: case SDRMSW: if (!(cp = *argp++) || *cp == '-') { advise (NULLCP, "missing argument to %s", argp[-2]); return; } case SNDRFSW: continue; } advise (NULLCP, "usage: %s [switches]", sp); return; } if (cp = m_find ("Aliasfile")) { /* allow Aliasfile: profile entry */ vec[vecp++] = "-alias"; vec[vecp++] = getcpy(cp); }/* */#ifdef TMA if ((cp = getenv ("KDS")) == NULL || *cp == NULL) if ((cp = m_find ("kdsproc")) && *cp) (void) putenv ("KDS", cp); if ((cp = getenv ("TMADB")) == NULL || *cp == NULL) if ((cp = m_find ("tmadb")) && *cp) (void) putenv ("TMADB", m_maildir (cp));#endif TMA if ((cp = getenv ("SIGNATURE")) == NULL || *cp == NULL) if ((cp = m_find ("signature")) && *cp) (void) putenv ("SIGNATURE", cp);#ifdef UCI else { (void) sprintf (buf, "%s/.signature", mypath); if ((fp = fopen (buf, "r")) != NULL && fgets (buf, sizeof buf, fp) != NULL) { (void) fclose (fp); if (cp = index (buf, '\n')) *cp = NULL; (void) putenv ("SIGNATURE", buf); } }#endif UCI if ((annotext = getenv ("mhannotate")) == NULL || *annotext == NULL) annotext = NULL; if ((altmsg = getenv ("mhaltmsg")) == NULL || *altmsg == NULL) altmsg = NULL; if (annotext && ((cp = getenv ("mhinplace")) != NULL && *cp != NULL)) inplace = atoi (cp); if ((cp = getenv ("mhdist")) && *cp#ifndef lint && (distsw = atoi (cp))#endif not lint && altmsg) { vec[vecp++] = "-dist"; distfile = getcpy (m_scratch (altmsg, invo_name)); if (link (altmsg, distfile) == NOTOK) adios (distfile, "unable to link %s to", altmsg); } else distfile = NULL; if (altmsg == NULL || stat (altmsg, &st) == NOTOK) st.st_mtime = 0, st.st_dev = 0, st.st_ino = 0; if (pushsw = pushed) push (); vec[0] = r1bindex (postproc, '/'); closefds (3); if (sendsbr (vec, vecp, file, &st) == OK) done (0);}/* WHOM */static int whomfile (arg, file)register char **arg, *file;{ int pid; register int vecp; char *vec[MAXARGS];#ifdef WP char *cp, draft[BUFSIZ], backup[BUFSIZ];#endif#ifdef WP (void) strcpy (draft, m_scratch (file, invo_name));#endif m_update (); (void) fflush (stdout); switch (pid = vfork ()) { case NOTOK: advise ("fork", "unable to"); return 1; case OK: vecp = 0; vec[vecp++] = r1bindex (whomproc, '/'); vec[vecp++] = file; if (arg) while (*arg) vec[vecp++] = *arg++;#ifdef WP vec[vecp++] = "-fill-in"; vec[vecp++] = draft;#endif vec[vecp] = NULL; execvp (whomproc, vec); fprintf (stderr, "unable to exec "); perror (whomproc); _exit (-1); /* NOTREACHED */ default: #ifndef WP return (pidwait (pid, NOTOK) & 0377 ? 1 : 0);#else if (pidwait (pid, NOTOK)) { (void) unlink (draft); return 1; } break;#endif }#ifdef WP if (rename (file, cp = m_backup (file)) == NOTOK) { advise (cp, "unable to rename %s to", file); (void) unlink (draft); return 1; } if (rename (draft, file) == NOTOK) { advise (file, "unable to rename %s to ", draft); return 1; } return 0;#endif}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -