/* ARGSUSED */ static enum rofferr roff_ds(ROFF_ARGS) { char *name, *string; /* * A symbol is named by the first word following the macro * invocation up to a space. Its value is anything after the * name's trailing whitespace and optional double-quote. Thus, * * [.ds foo "bar " ] * * will have `bar " ' as its value. */ string = *bufp + pos; name = roff_getname(r, &string, ln, pos); if ('\0' == *name) return(ROFF_IGN); /* Read past initial double-quote. */ if ('"' == *string) string++; /* The rest is the value. */ roff_setstr(r, name, string, 0); return(ROFF_IGN); }
/* ARGSUSED */ static enum rofferr roff_rm(ROFF_ARGS) { const char *name; char *cp; cp = *bufp + pos; while ('\0' != *cp) { name = roff_getname(r, &cp, ln, (int)(cp - *bufp)); if ('\0' != *name) roff_setstr(r, name, NULL, 0); } return(ROFF_IGN); }
/* ARGSUSED */ static enum rofferr roff_nr(ROFF_ARGS) { const char *key; char *val; int iv; val = *bufp + pos; key = roff_getname(r, &val, ln, pos); if (0 == strcmp(key, "nS")) { r->regs[(int)REG_nS].set = 1; if ((iv = mandoc_strntoi(val, strlen(val), 10)) >= 0) r->regs[(int)REG_nS].u = (unsigned)iv; else r->regs[(int)REG_nS].u = 0u; } return(ROFF_IGN); }
/* ARGSUSED */ static enum rofferr roff_nr(ROFF_ARGS) { const char *key; char *val; size_t sz; int iv; char sign; val = *bufp + pos; key = roff_getname(r, &val, ln, pos); sign = *val; if ('+' == sign || '-' == sign) val++; sz = strspn(val, "0123456789"); iv = sz ? mandoc_strntoi(val, sz, 10) : 0; roff_setreg(r, key, iv, sign); return(ROFF_IGN); }