⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 whatnowsbr.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
📖 第 1 页 / 共 2 页
字号:
{    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 + -