cmcs/
cmcs/CVS/
cmcs/Documentation/
cmcs/Documentation/CVS/
cmcs/Historical/CVS/
cmcs/Historical/OldDocumentation/
cmcs/Historical/OldDocumentation/CVS/
cmcs/Historical/OldSource/
cmcs/Historical/OldSource/CVS/
cmcs/makefiles/CVS/
cmcs/src/CVS/
cmcs/tree/CVS/
cmcs/tree/bin/CVS/
cmcs/tree/datafiles/
cmcs/tree/datafiles/CVS/
cmcs/tree/fonts/CVS/
cmcs/tree/helpfiles/CVS/
cmcs/tree/text/
cmcs/tree/text/CVS/
cmcs/tree/userfiles/
cmcs/tree/userfiles/CVS/
cmcs/tree/www/
cmcs/tree/www/CVS/
/*
10/25/2005 - Rick Collette:
Changed the name to cmcsview - cryptic, I know, but I didn't want someone to think
I was running netcat on thier box...
*/

/**************************************************************************/
/* Ncat - version of Unix cat that displays text files with embedded nuts */
/* colour codes (eg, crypt syslog)                                        */
/*                                                                        */
/* (c) Bryan McPhail, 1997                                                */
/**************************************************************************/

#include <stdio.h>

main(argc, argv)
int argc;
char *argv[];
{
if (argc<2) {
  printf("Usage: ncat filename\n");
  exit(1);
}

if (!ncat(argv[1])) {
  printf("ncat: file not found\n");
  exit(1);
}

exit(0);
}

/*** ncat function ***/
ncat(filename)
char *filename;
{
char text[256],*str;
FILE *fp;
int i;

char *colcode[]={
"\033[0m\0", "\033[1m\0", "\033[5m\0", "\033[7m\0", "\033[4m",
/* Foreground */
"\033[30m\0","\033[31m\0","\033[32m\0","\033[33m\0",
"\033[34m\0","\033[35m\0","\033[36m\0","\033[37m\0",
/* Background */
"\033[40m\0","\033[41m\0","\033[42m\0","\033[43m\0",
"\033[44m\0","\033[45m\0","\033[46m\0","\033[47m\0"
};

/* Codes used in a string to produce the colours when prepended with a '~' */
char *colcom[]={
"RS","OL","LI","RV","UL",
"FK","FR","FG","FY",
"FB","FM","FT","FW",
"BK","BR","BG","BY",
"BB","BM","BT","BW"
};

if (!(fp=fopen(filename,"r"))) {
  return 0;
}

/* Go through file */
while(!feof(fp) ) {
  text[0]='\0';
  fgets(text,254,fp);
  
  str=text;
  
  /* Process line from file */
  while(*str) {
    
    /* Reset colours before newline */
    if (*str=='\n') {
      printf("\033[0m\n"); 
      str++;
      continue;
    }
      
    /* Process colour commands in the file */
    if (*str=='~') {
      ++str;
      for(i=0;i<20;++i) {
	if (!strncmp(str,colcom[i],2)) {
	  printf("%s",colcode[i]);
	  str++; 
	  str++;
	  str++;
	  continue;
	}
      }
      --str;
    }
    
    printf("%c",*str);
    str++;
  }
}

fclose(fp);
return 1;
}