#include "defs.h" #ifndef NULL #define NULL ((void *) 0) #endif int nroff = 1; #define NROFF (-666) #define TROFF (-667) STRDEF *chardef, *strdef, *defdef; INTDEF *intdef; static INTDEF standardint[] = { { V('n',' '), NROFF, 0, NULL }, { V('t',' '), TROFF, 0, NULL }, { V('o',' '), 1, 0, NULL }, { V('e',' '), 0, 0, NULL }, { V('.','l'), 70, 0, NULL }, { V('.','$'), 0, 0, NULL }, { V('.','A'), NROFF, 0, NULL }, { V('.','T'), TROFF, 0, NULL }, { V('.','V'), 1, 0, NULL }, /* the me package tests for this */ { 0, 0, 0, NULL } }; static STRDEF standardstring[] = { { V('R',' '), 1, "®", NULL }, { V('l','q'), 2, "``", NULL }, { V('r','q'), 2, "''", NULL }, { 0, 0, NULL, NULL} }; static STRDEF standardchar[] = { { V('*','*'), 1, "*", NULL }, /* math star */ { V('*','A'), 1, "A", NULL }, { V('*','B'), 1, "B", NULL }, { V('*','C'), 2, "Xi", NULL }, { V('*','D'), 5, "Delta", NULL }, { V('*','E'), 1, "E", NULL }, { V('*','F'), 3, "Phi", NULL }, { V('*','G'), 5, "Gamma", NULL }, { V('*','H'), 5, "Theta", NULL }, { V('*','I'), 1, "I", NULL }, { V('*','K'), 1, "K", NULL }, { V('*','L'), 6, "Lambda", NULL }, { V('*','M'), 1, "M", NULL }, { V('*','N'), 1, "N", NULL }, { V('*','O'), 1, "O", NULL }, { V('*','P'), 2, "Pi", NULL }, { V('*','Q'), 3, "Psi", NULL }, { V('*','R'), 1, "P", NULL }, { V('*','S'), 5, "Sigma", NULL }, { V('*','T'), 1, "T", NULL }, { V('*','U'), 1, "Y", NULL }, { V('*','W'), 5, "Omega", NULL }, { V('*','X'), 1, "X", NULL }, { V('*','Y'), 1, "H", NULL }, { V('*','Z'), 1, "Z", NULL }, { V('*','a'), 5, "alpha", NULL }, { V('*','b'), 4, "beta", NULL }, { V('*','c'), 2, "xi", NULL }, { V('*','d'), 5, "delta", NULL }, { V('*','e'), 7, "epsilon", NULL }, { V('*','f'), 3, "phi", NULL }, { V('*','g'), 5, "gamma", NULL }, { V('*','h'), 5, "theta", NULL }, { V('*','i'), 4, "iota", NULL }, { V('*','k'), 5, "kappa", NULL }, { V('*','l'), 6, "lambda", NULL }, { V('*','m'), 1, "µ", NULL }, { V('*','n'), 2, "nu", NULL }, { V('*','o'), 1, "o", NULL }, { V('*','p'), 2, "pi", NULL }, { V('*','q'), 3, "psi", NULL }, { V('*','r'), 3, "rho", NULL }, { V('*','s'), 5, "sigma", NULL }, { V('*','t'), 3, "tau", NULL }, { V('*','u'), 7, "upsilon", NULL }, { V('*','w'), 5, "omega", NULL }, { V('*','x'), 3, "chi", NULL }, { V('*','y'), 3, "eta", NULL }, { V('*','z'), 4, "zeta", NULL }, { V('+','-'), 1, "±", NULL }, { V('1','2'), 1, "½", NULL }, { V('1','4'), 1, "¼", NULL }, { V('3','4'), 1, "¾", NULL }, { V('F','i'), 3, "ffi", NULL }, { V('F','l'), 3, "ffl", NULL }, { V('a','a'), 1, "´", NULL }, { V('a','p'), 1, "~", NULL }, { V('b','r'), 1, "|", NULL }, { V('b','u'), 1, "*", NULL }, /* bullet */ { V('b','v'), 1, "|", NULL }, { V('c','i'), 1, "o", NULL }, /* circle */ { V('c','o'), 1, "©", NULL }, { V('c','t'), 1, "¢", NULL }, { V('d','e'), 1, "°", NULL }, { V('d','g'), 1, "+", NULL }, /* dagger */ { V('d','i'), 1, "÷", NULL }, { V('e','m'), 3, "---", NULL }, /* em dash */ { V('e','n'), 1, "-", NULL }, /* en dash */ { V('e','q'), 1, "=", NULL }, { V('e','s'), 1, "Ø", NULL }, { V('f','f'), 2, "ff", NULL }, { V('f','i'), 2, "fi", NULL }, { V('f','l'), 2, "fl", NULL }, { V('f','m'), 1, "´", NULL }, { V('g','a'), 1, "`", NULL }, { V('h','y'), 1, "-", NULL }, { V('l','c'), 2, "|¯", NULL }, { V('i','f'), 8, "Infinity", NULL }, /* infinity sign */ { V('i','s'), 8, "Integral", NULL }, /* integral sign */ { V('l','f'), 2, "|_", NULL }, { V('l','k'), 1, "{", NULL }, { V('m','i'), 1, "-", NULL }, { V('m','u'), 1, "×", NULL }, { V('n','o'), 1, "¬", NULL }, { V('o','r'), 1, "|", NULL }, { V('p','d'), 1, "d", NULL }, /* partial derivative */ { V('p','l'), 1, "+", NULL }, { V('r','c'), 2, "¯|", NULL }, { V('r','f'), 2, "_|", NULL }, { V('r','g'), 1, "®", NULL }, { V('r','k'), 1, "}", NULL }, { V('r','n'), 1, "¯", NULL }, { V('r','u'), 1, "_", NULL }, { V('s','c'), 1, "§", NULL }, { V('s','l'), 1, "/", NULL }, { V('s','q'), 2, "[]", NULL }, { V('t','s'), 1, "s", NULL }, /* should be terminal sigma */ { V('u','l'), 1, "_", NULL }, { V('>','='), 1, ">", NULL }, { V('<','='), 1, "<", NULL }, { 0, 0, NULL, NULL } }; void stdinit(void) { STRDEF *stdf; int i; stdf = &standardchar[0]; i = 0; while (stdf->nr) { if (stdf->st) stdf->st = xstrdup(stdf->st); stdf->next = &standardchar[i]; stdf = stdf->next; i++; } chardef=&standardchar[0]; stdf=&standardstring[0]; i=0; while (stdf->nr) { /* waste a little memory, and make a copy, to avoid the segfault when we free non-malloced memory */ if (stdf->st) stdf->st = xstrdup(stdf->st); stdf->next = &standardstring[i]; stdf = stdf->next; i++; } strdef=&standardstring[0]; intdef=&standardint[0]; i=0; while (intdef->nr) { if (intdef->nr == NROFF) intdef->nr = nroff; else if (intdef->nr == TROFF) intdef->nr = !nroff; intdef->next = &standardint[i]; intdef = intdef->next; i++; } intdef = &standardint[0]; defdef = NULL; }