1#include "defs.h" 2 3#ifndef NULL 4#define NULL ((void *) 0) 5#endif 6 7int nroff = 1; 8 9#define NROFF (-666) 10#define TROFF (-667) 11 12STRDEF *chardef, *strdef, *defdef; 13INTDEF *intdef; 14 15static INTDEF standardint[] = { 16 { V('n',' '), NROFF, 0, NULL }, 17 { V('t',' '), TROFF, 0, NULL }, 18 { V('o',' '), 1, 0, NULL }, 19 { V('e',' '), 0, 0, NULL }, 20 { V('.','l'), 70, 0, NULL }, 21 { V('.','$'), 0, 0, NULL }, 22 { V('.','A'), NROFF, 0, NULL }, 23 { V('.','T'), TROFF, 0, NULL }, 24 { V('.','V'), 1, 0, NULL }, /* the me package tests for this */ 25 { 0, 0, 0, NULL } }; 26 27static STRDEF standardstring[] = { 28 { V('R',' '), 1, "®", NULL }, 29 { V('l','q'), 2, "``", NULL }, 30 { V('r','q'), 2, "''", NULL }, 31 { 0, 0, NULL, NULL} 32}; 33 34 35static STRDEF standardchar[] = { 36 { V('*','*'), 1, "*", NULL }, /* math star */ 37 { V('*','A'), 1, "A", NULL }, 38 { V('*','B'), 1, "B", NULL }, 39 { V('*','C'), 2, "Xi", NULL }, 40 { V('*','D'), 5, "Delta", NULL }, 41 { V('*','E'), 1, "E", NULL }, 42 { V('*','F'), 3, "Phi", NULL }, 43 { V('*','G'), 5, "Gamma", NULL }, 44 { V('*','H'), 5, "Theta", NULL }, 45 { V('*','I'), 1, "I", NULL }, 46 { V('*','K'), 1, "K", NULL }, 47 { V('*','L'), 6, "Lambda", NULL }, 48 { V('*','M'), 1, "M", NULL }, 49 { V('*','N'), 1, "N", NULL }, 50 { V('*','O'), 1, "O", NULL }, 51 { V('*','P'), 2, "Pi", NULL }, 52 { V('*','Q'), 3, "Psi", NULL }, 53 { V('*','R'), 1, "P", NULL }, 54 { V('*','S'), 5, "Sigma", NULL }, 55 { V('*','T'), 1, "T", NULL }, 56 { V('*','U'), 1, "Y", NULL }, 57 { V('*','W'), 5, "Omega", NULL }, 58 { V('*','X'), 1, "X", NULL }, 59 { V('*','Y'), 1, "H", NULL }, 60 { V('*','Z'), 1, "Z", NULL }, 61 { V('*','a'), 5, "alpha", NULL }, 62 { V('*','b'), 4, "beta", NULL }, 63 { V('*','c'), 2, "xi", NULL }, 64 { V('*','d'), 5, "delta", NULL }, 65 { V('*','e'), 7, "epsilon", NULL }, 66 { V('*','f'), 3, "phi", NULL }, 67 { V('*','g'), 5, "gamma", NULL }, 68 { V('*','h'), 5, "theta", NULL }, 69 { V('*','i'), 4, "iota", NULL }, 70 { V('*','k'), 5, "kappa", NULL }, 71 { V('*','l'), 6, "lambda", NULL }, 72 { V('*','m'), 1, "µ", NULL }, 73 { V('*','n'), 2, "nu", NULL }, 74 { V('*','o'), 1, "o", NULL }, 75 { V('*','p'), 2, "pi", NULL }, 76 { V('*','q'), 3, "psi", NULL }, 77 { V('*','r'), 3, "rho", NULL }, 78 { V('*','s'), 5, "sigma", NULL }, 79 { V('*','t'), 3, "tau", NULL }, 80 { V('*','u'), 7, "upsilon", NULL }, 81 { V('*','w'), 5, "omega", NULL }, 82 { V('*','x'), 3, "chi", NULL }, 83 { V('*','y'), 3, "eta", NULL }, 84 { V('*','z'), 4, "zeta", NULL }, 85 { V('+','-'), 1, "±", NULL }, 86 { V('1','2'), 1, "½", NULL }, 87 { V('1','4'), 1, "¼", NULL }, 88 { V('3','4'), 1, "¾", NULL }, 89 { V('F','i'), 3, "ffi", NULL }, 90 { V('F','l'), 3, "ffl", NULL }, 91 { V('a','a'), 1, "´", NULL }, 92 { V('a','p'), 1, "~", NULL }, 93 { V('b','r'), 1, "|", NULL }, 94 { V('b','u'), 1, "*", NULL }, /* bullet */ 95 { V('b','v'), 1, "|", NULL }, 96 { V('c','i'), 1, "o", NULL }, /* circle */ 97 { V('c','o'), 1, "©", NULL }, 98 { V('c','t'), 1, "¢", NULL }, 99 { V('d','e'), 1, "°", NULL }, 100 { V('d','g'), 1, "+", NULL }, /* dagger */ 101 { V('d','i'), 1, "÷", NULL }, 102 { V('e','m'), 3, "---", NULL }, /* em dash */ 103 { V('e','n'), 1, "-", NULL }, /* en dash */ 104 { V('e','q'), 1, "=", NULL }, 105 { V('e','s'), 1, "Ø", NULL }, 106 { V('f','f'), 2, "ff", NULL }, 107 { V('f','i'), 2, "fi", NULL }, 108 { V('f','l'), 2, "fl", NULL }, 109 { V('f','m'), 1, "´", NULL }, 110 { V('g','a'), 1, "`", NULL }, 111 { V('h','y'), 1, "-", NULL }, 112 { V('l','c'), 2, "|¯", NULL }, 113 { V('i','f'), 8, "Infinity", NULL }, /* infinity sign */ 114 { V('i','s'), 8, "Integral", NULL }, /* integral sign */ 115 { V('l','f'), 2, "|_", NULL }, 116 { V('l','k'), 1, "<FONT SIZE=\"+2\">{</FONT>", NULL }, 117 { V('m','i'), 1, "-", NULL }, 118 { V('m','u'), 1, "×", NULL }, 119 { V('n','o'), 1, "¬", NULL }, 120 { V('o','r'), 1, "|", NULL }, 121 { V('p','d'), 1, "d", NULL }, /* partial derivative */ 122 { V('p','l'), 1, "+", NULL }, 123 { V('r','c'), 2, "¯|", NULL }, 124 { V('r','f'), 2, "_|", NULL }, 125 { V('r','g'), 1, "®", NULL }, 126 { V('r','k'), 1, "<FONT SIZE=\"+2\">}</FONT>", NULL }, 127 { V('r','n'), 1, "¯", NULL }, 128 { V('r','u'), 1, "_", NULL }, 129 { V('s','c'), 1, "§", NULL }, 130 { V('s','l'), 1, "/", NULL }, 131 { V('s','q'), 2, "[]", NULL }, 132 { V('t','s'), 1, "s", NULL }, /* should be terminal sigma */ 133 { V('u','l'), 1, "_", NULL }, 134 { V('>','='), 1, ">", NULL }, 135 { V('<','='), 1, "<", NULL }, 136 { 0, 0, NULL, NULL } 137}; 138 139void stdinit(void) { 140 STRDEF *stdf; 141 int i; 142 143 stdf = &standardchar[0]; 144 i = 0; 145 while (stdf->nr) { 146 if (stdf->st) stdf->st = xstrdup(stdf->st); 147 stdf->next = &standardchar[i]; 148 stdf = stdf->next; 149 i++; 150 } 151 chardef=&standardchar[0]; 152 153 stdf=&standardstring[0]; 154 i=0; 155 while (stdf->nr) { 156 /* waste a little memory, and make a copy, to avoid 157 the segfault when we free non-malloced memory */ 158 if (stdf->st) stdf->st = xstrdup(stdf->st); 159 stdf->next = &standardstring[i]; 160 stdf = stdf->next; 161 i++; 162 } 163 strdef=&standardstring[0]; 164 165 intdef=&standardint[0]; 166 i=0; 167 while (intdef->nr) { 168 if (intdef->nr == NROFF) intdef->nr = nroff; else 169 if (intdef->nr == TROFF) intdef->nr = !nroff; 170 intdef->next = &standardint[i]; 171 intdef = intdef->next; 172 i++; 173 } 174 intdef = &standardint[0]; 175 defdef = NULL; 176} 177