home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1998 September / PCO_0998.ISO / filesbbs / dos / sbbs_src.exe / SBBS / MSG2ANS / MSG2ANS.C
Encoding:
C/C++ Source or Header  |  1997-04-13  |  2.6 KB  |  148 lines

  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.  
  148.