|
|
1.1 ! root 1: /* msg2ans.c */ ! 2: ! 3: /* Developed 1990-1997 by Rob Swindell; PO Box 501, Yorba Linda, CA 92885 */ ! 4: ! 5: /* Converts Synchronet Ctrl-A codes into ANSI escape sequences */ ! 6: ! 7: #include <stdio.h> ! 8: #include <conio.h> ! 9: ! 10: #define ANSI fprintf(out,"\x1b[") ! 11: ! 12: int main(int argc, char **argv) ! 13: { ! 14: int i,ch; ! 15: FILE *in,*out; ! 16: ! 17: if(argc<3) { ! 18: printf("\nMSG2ANS v1.03\n"); ! 19: printf("\nusage: msg2ans infile.msg outfile.ans\n"); ! 20: exit(0); } ! 21: ! 22: if((in=fopen(argv[1],"rb"))==NULL) { ! 23: printf("\nerror opening %s\n",argv[1]); ! 24: exit(1); } ! 25: ! 26: if((out=fopen(argv[2],"wb"))==NULL) { ! 27: printf("\nerror opening %s\n",argv[2]); ! 28: exit(1); } ! 29: ! 30: while((ch=fgetc(in))!=EOF) { ! 31: if(ch==1) { /* ctrl-a */ ! 32: ch=fgetc(in); ! 33: if(ch==EOF) ! 34: break; ! 35: if(ch>=0x7f) { /* move cursor right x columns */ ! 36: ANSI; ! 37: fprintf(out,"%uC",ch-0x7f); ! 38: continue; } ! 39: switch(toupper(ch)) { ! 40: case 'A': ! 41: fputc('\1',out); ! 42: break; ! 43: case '<': ! 44: fputc('\b',out); ! 45: break; ! 46: case '>': ! 47: ANSI; ! 48: fputc('K',out); ! 49: break; ! 50: case '[': ! 51: fputc('\r',out); ! 52: break; ! 53: case ']': ! 54: fputc('\n',out); ! 55: break; ! 56: case 'L': ! 57: ANSI; ! 58: fprintf(out,"2J"); ! 59: break; ! 60: case '-': ! 61: case '_': ! 62: case 'N': ! 63: ANSI; ! 64: fprintf(out,"0m"); ! 65: break; ! 66: case 'H': ! 67: ANSI; ! 68: fprintf(out,"1m"); ! 69: break; ! 70: case 'I': ! 71: ANSI; ! 72: fprintf(out,"5m"); ! 73: break; ! 74: case 'K': ! 75: ANSI; ! 76: fprintf(out,"30m"); ! 77: break; ! 78: case 'R': ! 79: ANSI; ! 80: fprintf(out,"31m"); ! 81: break; ! 82: case 'G': ! 83: ANSI; ! 84: fprintf(out,"32m"); ! 85: break; ! 86: case 'Y': ! 87: ANSI; ! 88: fprintf(out,"33m"); ! 89: break; ! 90: case 'B': ! 91: ANSI; ! 92: fprintf(out,"34m"); ! 93: break; ! 94: case 'M': ! 95: ANSI; ! 96: fprintf(out,"35m"); ! 97: break; ! 98: case 'C': ! 99: ANSI; ! 100: fprintf(out,"36m"); ! 101: break; ! 102: case 'W': ! 103: ANSI; ! 104: fprintf(out,"37m"); ! 105: break; ! 106: case '0': ! 107: ANSI; ! 108: fprintf(out,"40m"); ! 109: break; ! 110: case '1': ! 111: ANSI; ! 112: fprintf(out,"41m"); ! 113: break; ! 114: case '2': ! 115: ANSI; ! 116: fprintf(out,"42m"); ! 117: break; ! 118: case '3': ! 119: ANSI; ! 120: fprintf(out,"43m"); ! 121: break; ! 122: case '4': ! 123: ANSI; ! 124: fprintf(out,"44m"); ! 125: break; ! 126: case '5': ! 127: ANSI; ! 128: fprintf(out,"45m"); ! 129: break; ! 130: case '6': ! 131: ANSI; ! 132: fprintf(out,"46m"); ! 133: break; ! 134: case '7': ! 135: ANSI; ! 136: fprintf(out,"47m"); ! 137: break; ! 138: default: ! 139: fprintf(out,"\1%c",ch); ! 140: break; } } ! 141: else ! 142: fputc(ch,out); } ! 143: } ! 144: ! 145: ! 146: ! 147:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.