home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 1 / GoldFishApril1994_CD1.img / d1xx / d168 / src / com / scat.c < prev   
C/C++ Source or Header  |  1988-11-22  |  892b  |  63 lines

  1.  
  2. #include <stdio.h>
  3. #include <ctype.h>
  4.  
  5. main(ac, av)
  6. char *av[];
  7. {
  8.     register int i;
  9.     register FILE *stream;
  10.  
  11.     for (i = 1; i < ac; ++i) {
  12.     stream = fopen(av[i], "r");
  13.     if (stream) {
  14.         scat(stream);
  15.         fclose(stream);
  16.     } else {
  17.         fprintf(stderr, "Unable to open %s\n", av[i]);
  18.     }
  19.     }
  20.     if (ac == 1)
  21.     scat(stdin);
  22. }
  23.  
  24. scat(stream)
  25. FILE *stream;
  26. {
  27.     short c;
  28.  
  29.     while ((c = fgetc(stream)) >= 0) {
  30.     if (isascii(c) && isprint(c)) {
  31.         reverse(0);
  32.         putc(c, stdout);
  33.         continue;
  34.     }
  35.     reverse(1);
  36.     putc((c|0x40)&0x7F, stdout);
  37.     if (c == '\n')
  38.         putc(c, stdout);
  39.     }
  40.     reverse(0);
  41. }
  42.  
  43. reverse(mode)
  44. {
  45.     static char xmode;
  46.  
  47.     if (mode) {
  48.     if (!xmode) {
  49.         putc(0x9b, stdout);
  50.         putc(0x37, stdout);
  51.         putc('m', stdout);
  52.     }
  53.     } else {
  54.     if (xmode) {
  55.         putc(0x9b, stdout);
  56.         putc(0x30, stdout);
  57.         putc('m', stdout);
  58.     }
  59.     }
  60.     xmode = mode;
  61. }
  62.  
  63.