#include #include "defs.h" #ifndef NULL #define NULL ((void *) 0) #endif int nroff = 0; #define NROFF (-666) #define TROFF (-667) STRDEF *chardef, *strdef, *defdef; INTDEF *intdef, *nargdef, *curfdef; 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('.','f'), 0, 0, NULL }, { V('.','A'), NROFF, 0, NULL }, { V('.','T'), TROFF, 0, NULL }, { V('.','V'), 1, 0, NULL }, /* the me package tests for this */ { V('M','2'), 1, 0, NULL }, /* \n[M2] indicates man2html */ { 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, "Α", NULL }, { V('*','B'), 1, "Β", NULL }, { V('*','C'), 2, "Ξ", NULL }, { V('*','D'), 5, "Δ", NULL }, { V('*','E'), 1, "&Epsilon", NULL }, { V('*','F'), 3, "Φ", NULL }, { V('*','G'), 5, "Γ", NULL }, { V('*','H'), 5, "Θ", NULL }, { V('*','I'), 1, "Ι", NULL }, { V('*','K'), 1, "Κ", NULL }, { V('*','L'), 6, "Λ", NULL }, { V('*','M'), 1, "Μ", NULL }, { V('*','N'), 1, "Ν", NULL }, { V('*','O'), 1, "Ω", NULL }, { V('*','P'), 2, "Π", NULL }, { V('*','Q'), 3, "Ψ", NULL }, { V('*','R'), 1, "Ρ", NULL }, { V('*','S'), 5, "Σ", NULL }, { V('*','T'), 1, "Τ", NULL }, { V('*','U'), 1, "Υ", NULL }, { V('*','W'), 5, "Ω", NULL }, { V('*','X'), 1, "Χ", NULL }, { V('*','Y'), 1, "Η", NULL }, { V('*','Z'), 1, "&Zeta", NULL }, { V('*','a'), 5, "α", NULL }, { V('*','b'), 4, "β", NULL }, { V('*','c'), 2, "ξ", NULL }, { V('*','d'), 5, "δ", NULL }, { V('*','e'), 7, "&Epsilon", NULL }, { V('*','f'), 3, "φ", NULL }, { V('*','g'), 5, "γ", NULL }, { V('*','h'), 5, "θ", NULL }, { V('*','i'), 4, "ι", NULL }, { V('*','k'), 5, "κ", NULL }, { V('*','l'), 6, "λ", NULL }, { V('*','m'), 1, "μ", NULL }, { V('*','n'), 2, "ν", NULL }, { V('*','o'), 1, "ω", NULL }, { V('*','p'), 2, "π", NULL }, { V('*','q'), 3, "ψ", NULL }, { V('*','r'), 3, "ρ", NULL }, { V('*','s'), 5, "σ", NULL }, { V('*','t'), 3, "τ", NULL }, { V('*','u'), 7, "υ", NULL }, { V('*','w'), 5, "ω", NULL }, { V('*','x'), 3, "χ", NULL }, { V('*','y'), 3, "η", 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 }, { V('d','q'), 1, """, NULL }, /* groff \(dq quote */ { 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; if (intdef->nr == V('.','$')) nargdef = intdef; if (intdef->nr == V('.','f')) curfdef = intdef; intdef->next = &standardint[i]; intdef = intdef->next; i++; } intdef = &standardint[0]; defdef = NULL; if (!nargdef) abort(); }