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

📄 m_seqnew.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
字号:
/* m_seqnew.c - manage sequences */#include "../h/mh.h"#include <ctype.h>#include <stdio.h>static int	m_seqok();int     m_seqnew (mp, cp, public)register struct msgs *mp;register char   *cp;register int	public;{    int     bits;    register int    i,                    j;    if (!m_seqok (cp))	return 0;    if (public == -1)		/* XXX */	public = mp -> msgflags & READONLY ? 0 : 1;    bits = FFATTRSLOT;    for (i = 0; mp -> msgattrs[i]; i++)	if (strcmp (mp -> msgattrs[i], cp) == 0) {	    for (j = mp -> lowmsg; j <= mp -> hghmsg; j++)		mp -> msgstats[j] &= ~(1 << (bits + i));	    if (public)		mp -> attrstats &= ~(1 << (bits + i));	    else		mp -> attrstats |= 1 << (bits + i);	    mp -> msgflags |= SEQMOD;	    return 1;	}    if (i >= NATTRS) {	advise (NULLCP, "only %d sequences allowed (no room for %s)!",		NATTRS, cp);	return 0;    }    mp -> msgattrs[i] = getcpy (cp);    for (j = mp -> lowmsg; j <= mp -> hghmsg; j++)	mp -> msgstats[j] &= ~(1 << (bits + i));    if (public)	mp -> attrstats &= ~(1 << (bits + i));    else	mp -> attrstats |= 1 << (bits + i);    mp -> msgflags |= SEQMOD;    mp -> msgattrs[++i] = NULL;    return 1;}/*  */int     m_seqadd (mp, cp, j, public)register struct msgs *mp;register char   *cp;register int     j,		 public;{    int     bits;    register int    i,                    k;    if (!m_seqok (cp))	return 0;    if (public == -1)		/* XXX */	public = mp -> msgflags & READONLY ? 0 : 1;    bits = FFATTRSLOT;    for (i = 0; mp -> msgattrs[i]; i++)	if (strcmp (mp -> msgattrs[i], cp) == 0) {	    mp -> msgstats[j] |= 1 << (bits + i);	    if (public)		mp -> attrstats &= ~(1 << (bits + i));	    else		mp -> attrstats |= 1 << (bits + i);	    mp -> msgflags |= SEQMOD;	    return 1;	}    if (i >= NATTRS) {	advise (NULLCP, "only %d sequences allowed (no room for %s)!",		NATTRS, cp);	return 0;    }    mp -> msgattrs[i] = getcpy (cp);    for (k = mp -> lowmsg; k <= mp -> hghmsg; k++)	mp -> msgstats[k] &= ~(1 << (bits + i));    mp -> msgstats[j] |= 1 << (bits + i);    if (public)	mp -> attrstats &= ~(1 << (bits + i));    else	mp -> attrstats |= 1 << (bits + i);    mp -> msgflags |= SEQMOD;    mp -> msgattrs[++i] = NULL;    return 1;}/*  */int     m_seqdel (mp, cp, j)register struct msgs *mp;register char   *cp;register int     j;{    int     bits;    register int    i;    if (!m_seqok (cp))	return 0;    bits = FFATTRSLOT;    for (i = 0; mp -> msgattrs[i]; i++)	if (strcmp (mp -> msgattrs[i], cp) == 0) {	    mp -> msgstats[j] &= ~(1 << (bits + i));	    mp -> msgflags |= SEQMOD;	    return 1;	}    advise (NULLCP, "no such sequence as %s", cp);    return 0;}/*  */static int  m_seqok (cp)register char   *cp;{    register char  *pp;    if (cp == NULL || *cp == NULL) {	advise (NULLCP, "empty sequence name");	return 0;    }    if (strcmp (cp, "new") == 0#ifdef	notdef	    || strcmp (cp, "cur") == 0#endif	notdef	    || strcmp (cp, "all") == 0	    || strcmp (cp, "first") == 0	    || strcmp (cp, "last") == 0	    || strcmp (cp, "prev") == 0	    || strcmp (cp, "next") == 0) {	advise (NULLCP, "illegal sequence name: %s", cp);	return 0;    }    if (!isalpha (*cp)) {	advise (NULLCP, "illegal sequence name: %s", cp);	return 0;    }    for (pp = cp + 1; *pp; pp++)	if (!isalnum (*pp)) {	    advise (NULLCP, "illegal sequence name: %s", cp);	    return 0;	}    return 1;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -