#include /* * Filter. Usage: 'convert < motd > /home/calvin/ntacct/Netrek/.motd' */ #define ESC '\\' struct _map { char alias; char actual; } map[] = { { '$', 13 }, /* +- | */ { '|', 25 }, /* | */ { '-', 18 }, /* - */ { '_', 19 }, /* - lower */ { '&', 20 }, /* - lowest */ { '*', 17 }, /* - higher */ { '=', 16 }, /* - highest */ { '`', 12 }, /* -+ | */ { '>', 11 }, /* | -+ */ { '<', 14 }, /* | +- */ { '+', 15 }, /* + */ { '(', 21 }, /* |- */ { ')', 22 }, /* -| */ { '^', 23 }, /* | -+- */ { '%', 24 }, /* -+- | */ { '~', 1 }, /* diamond */ { '#', 2 }, /* block */ }; main(argc, argv) int argc; char **argv; { register c; register i, f; int esc; FILE *fi = stdin; if(argc > 1){ fi = fopen(argv[1], "r"); if(!fi) { perror(argv[1]); exit(0); } } while((c = getc(fi)) != EOF){ if(c == ESC){ /* xx: escape kludge */ c = getc(fi); putchar(c); continue; } f = 0; for(i=0; i< sizeof(map)/sizeof(struct _map); i++){ if(c == map[i].alias){ putchar(map[i].actual); f = 1; break; } } if(!f) putchar(c); } }