📄 m_seqnew.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 + -