/* * STevie - ST editor for VI enthusiasts. ...Tim Thompson...twitch!tjt... */ #include #include "stevie.h" /* * This stuff is used to provide readable interpretations of unprintable * characters. The 'xxx' in each is replaced with either hex, octal, or * decimal numbers, depending on what command-line argument is given. */ struct charinfo chars[] = { /* 000 */ 5, "[xxx]", /* 001 */ 5, "[xxx]", /* 002 */ 5, "[xxx]", /* 003 */ 5, "[xxx]", /* 004 */ 5, "[xxx]", /* 005 */ 5, "[xxx]", /* 006 */ 5, "[xxx]", /* 007 */ 5, "[xxx]", /* 010 */ 5, "[xxx]", /* 011 */ 5, "[xxx]", /* 012 */ 1, NULL, /* 013 */ 5, "[xxx]", /* 014 */ 5, "[xxx]", /* 015 */ 5, "[xxx]", /* 016 */ 5, "[xxx]", /* 017 */ 5, "[xxx]", /* 020 */ 5, "[xxx]", /* 021 */ 5, "[xxx]", /* 022 */ 5, "[xxx]", /* 023 */ 5, "[xxx]", /* 024 */ 5, "[xxx]", /* 025 */ 5, "[xxx]", /* 026 */ 5, "[xxx]", /* 027 */ 5, "[xxx]", /* 030 */ 5, "[xxx]", /* 031 */ 5, "[xxx]", /* 032 */ 5, "[xxx]", /* 033 */ 5, "[xxx]", /* 034 */ 5, "[xxx]", /* 035 */ 5, "[xxx]", /* 036 */ 5, "[xxx]", /* 037 */ 5, "[xxx]", /* 040 */ 1, NULL, /* 041 */ 1, NULL, /* 042 */ 1, NULL, /* 043 */ 1, NULL, /* 044 */ 1, NULL, /* 045 */ 1, NULL, /* 046 */ 1, NULL, /* 047 */ 1, NULL, /* 050 */ 1, NULL, /* 051 */ 1, NULL, /* 052 */ 1, NULL, /* 053 */ 1, NULL, /* 054 */ 1, NULL, /* 055 */ 1, NULL, /* 056 */ 1, NULL, /* 057 */ 1, NULL, /* 060 */ 1, NULL, /* 061 */ 1, NULL, /* 062 */ 1, NULL, /* 063 */ 1, NULL, /* 064 */ 1, NULL, /* 065 */ 1, NULL, /* 066 */ 1, NULL, /* 067 */ 1, NULL, /* 070 */ 1, NULL, /* 071 */ 1, NULL, /* 072 */ 1, NULL, /* 073 */ 1, NULL, /* 074 */ 1, NULL, /* 075 */ 1, NULL, /* 076 */ 1, NULL, /* 077 */ 1, NULL, /* 100 */ 1, NULL, /* 101 */ 1, NULL, /* 102 */ 1, NULL, /* 103 */ 1, NULL, /* 104 */ 1, NULL, /* 105 */ 1, NULL, /* 106 */ 1, NULL, /* 107 */ 1, NULL, /* 110 */ 1, NULL, /* 111 */ 1, NULL, /* 112 */ 1, NULL, /* 113 */ 1, NULL, /* 114 */ 1, NULL, /* 115 */ 1, NULL, /* 116 */ 1, NULL, /* 117 */ 1, NULL, /* 120 */ 1, NULL, /* 121 */ 1, NULL, /* 122 */ 1, NULL, /* 123 */ 1, NULL, /* 124 */ 1, NULL, /* 125 */ 1, NULL, /* 126 */ 1, NULL, /* 127 */ 1, NULL, /* 130 */ 1, NULL, /* 131 */ 1, NULL, /* 132 */ 1, NULL, /* 133 */ 1, NULL, /* 134 */ 1, NULL, /* 135 */ 1, NULL, /* 136 */ 1, NULL, /* 137 */ 1, NULL, /* 140 */ 1, NULL, /* 141 */ 1, NULL, /* 142 */ 1, NULL, /* 143 */ 1, NULL, /* 144 */ 1, NULL, /* 145 */ 1, NULL, /* 146 */ 1, NULL, /* 147 */ 1, NULL, /* 150 */ 1, NULL, /* 151 */ 1, NULL, /* 152 */ 1, NULL, /* 153 */ 1, NULL, /* 154 */ 1, NULL, /* 155 */ 1, NULL, /* 156 */ 1, NULL, /* 157 */ 1, NULL, /* 160 */ 1, NULL, /* 161 */ 1, NULL, /* 162 */ 1, NULL, /* 163 */ 1, NULL, /* 164 */ 1, NULL, /* 165 */ 1, NULL, /* 166 */ 1, NULL, /* 167 */ 1, NULL, /* 170 */ 1, NULL, /* 171 */ 1, NULL, /* 172 */ 1, NULL, /* 173 */ 1, NULL, /* 174 */ 1, NULL, /* 175 */ 1, NULL, /* 176 */ 1, NULL, /* 177 */ 5, "[xxx]", /* 200 */ 5, "[xxx]", /* 201 */ 5, "[xxx]", /* 202 */ 5, "[xxx]", /* 203 */ 5, "[xxx]", /* 204 */ 5, "[xxx]", /* 205 */ 5, "[xxx]", /* 206 */ 5, "[xxx]", /* 207 */ 5, "[xxx]", /* 210 */ 5, "[xxx]", /* 211 */ 5, "[xxx]", /* 212 */ 5, "[xxx]", /* 213 */ 5, "[xxx]", /* 214 */ 5, "[xxx]", /* 215 */ 5, "[xxx]", /* 216 */ 5, "[xxx]", /* 217 */ 5, "[xxx]", /* 220 */ 5, "[xxx]", /* 221 */ 5, "[xxx]", /* 222 */ 5, "[xxx]", /* 223 */ 5, "[xxx]", /* 224 */ 5, "[xxx]", /* 225 */ 5, "[xxx]", /* 226 */ 5, "[xxx]", /* 227 */ 5, "[xxx]", /* 230 */ 5, "[xxx]", /* 231 */ 5, "[xxx]", /* 232 */ 5, "[xxx]", /* 233 */ 5, "[xxx]", /* 234 */ 5, "[xxx]", /* 235 */ 5, "[xxx]", /* 236 */ 5, "[xxx]", /* 237 */ 5, "[xxx]", /* 240 */ 5, "[xxx]", /* 241 */ 5, "[xxx]", /* 242 */ 5, "[xxx]", /* 243 */ 5, "[xxx]", /* 244 */ 5, "[xxx]", /* 245 */ 5, "[xxx]", /* 246 */ 5, "[xxx]", /* 247 */ 5, "[xxx]", /* 250 */ 5, "[xxx]", /* 251 */ 5, "[xxx]", /* 252 */ 5, "[xxx]", /* 253 */ 5, "[xxx]", /* 254 */ 5, "[xxx]", /* 255 */ 5, "[xxx]", /* 256 */ 5, "[xxx]", /* 257 */ 5, "[xxx]", /* 260 */ 5, "[xxx]", /* 261 */ 5, "[xxx]", /* 262 */ 5, "[xxx]", /* 263 */ 5, "[xxx]", /* 264 */ 5, "[xxx]", /* 265 */ 5, "[xxx]", /* 266 */ 5, "[xxx]", /* 267 */ 5, "[xxx]", /* 270 */ 5, "[xxx]", /* 271 */ 5, "[xxx]", /* 272 */ 5, "[xxx]", /* 273 */ 5, "[xxx]", /* 274 */ 5, "[xxx]", /* 275 */ 5, "[xxx]", /* 276 */ 5, "[xxx]", /* 277 */ 5, "[xxx]", /* 300 */ 5, "[xxx]", /* 301 */ 5, "[xxx]", /* 302 */ 5, "[xxx]", /* 303 */ 5, "[xxx]", /* 304 */ 5, "[xxx]", /* 305 */ 5, "[xxx]", /* 306 */ 5, "[xxx]", /* 307 */ 5, "[xxx]", /* 310 */ 5, "[xxx]", /* 311 */ 5, "[xxx]", /* 312 */ 5, "[xxx]", /* 313 */ 5, "[xxx]", /* 314 */ 5, "[xxx]", /* 315 */ 5, "[xxx]", /* 316 */ 5, "[xxx]", /* 317 */ 5, "[xxx]", /* 320 */ 5, "[xxx]", /* 321 */ 5, "[xxx]", /* 322 */ 5, "[xxx]", /* 323 */ 5, "[xxx]", /* 324 */ 5, "[xxx]", /* 325 */ 5, "[xxx]", /* 326 */ 5, "[xxx]", /* 327 */ 5, "[xxx]", /* 330 */ 5, "[xxx]", /* 331 */ 5, "[xxx]", /* 332 */ 5, "[xxx]", /* 333 */ 5, "[xxx]", /* 334 */ 5, "[xxx]", /* 335 */ 5, "[xxx]", /* 336 */ 5, "[xxx]", /* 337 */ 5, "[xxx]", /* 340 */ 5, "[xxx]", /* 341 */ 5, "[xxx]", /* 342 */ 5, "[xxx]", /* 343 */ 5, "[xxx]", /* 344 */ 5, "[xxx]", /* 345 */ 5, "[xxx]", /* 346 */ 5, "[xxx]", /* 347 */ 5, "[xxx]", /* 350 */ 5, "[xxx]", /* 351 */ 5, "[xxx]", /* 352 */ 5, "[xxx]", /* 353 */ 5, "[xxx]", /* 354 */ 5, "[xxx]", /* 355 */ 5, "[xxx]", /* 356 */ 5, "[xxx]", /* 357 */ 5, "[xxx]", /* 360 */ 5, "[xxx]", /* 361 */ 5, "[xxx]", /* 362 */ 5, "[xxx]", /* 363 */ 5, "[xxx]", /* 364 */ 5, "[xxx]", /* 365 */ 5, "[xxx]", /* 366 */ 5, "[xxx]", /* 367 */ 5, "[xxx]", /* 370 */ 5, "[xxx]", /* 371 */ 5, "[xxx]", /* 372 */ 5, "[xxx]", /* 373 */ 5, "[xxx]", /* 374 */ 5, "[xxx]", /* 375 */ 5, "[xxx]", /* 376 */ 5, "[xxx]", /* 377 */ 5, "[xxx]", }; /* * octchars() * * Convert the charinfo strings to octal. */ octchars() { char *p; int n; for ( n=0; n<256; n++ ) { p = chars[n].ch_str; if ( p==NULL || *p != '[' ) continue; sprintf(++p,"%03o]",n); } } /* * hexchars() * * Convert the charinfo strings to hex. */ hexchars() { char *p; int n; for ( n=0; n<256; n++ ) { p = chars[n].ch_str; if ( p==NULL || *p != '[' ) continue; sprintf(++p,"x%02X]",n); } } /* * decchars() * * Convert the charinfo strings to decimal. */ decchars() { char *p; int n; for ( n=0; n<256; n++ ) { p = chars[n].ch_str; if ( p==NULL || *p != '[' ) continue; sprintf(++p,"%3d]",n); } } hextoint(c) int c; { if ( c>='0' && c<='9' ) return(c-'0'); if ( c>='a' && c<='f' ) return(10+c-'a'); if ( c>='A' && c<='F' ) return(10+c-'A'); return(-1); }