#include <stdio.h>
#define NAME "output"
#define VERSION "2.0"

main(argc, argv)
int argc;
char *argv[];
{
	char	*cp;
	int	i, wd;
	int	j;

/* 	if(--argc == 0) {
		putchar('\n');
		exit(0);
	}
*/

 	if(--argc == 0) {
		printf("By Andrew Gaunt, AKA Quantum, #1@6300 - May be freely shared.\n\n");
		printf("usage: output arg ...\n\n");
		printf("output prints the arguments to the screen, substituting\n");
		printf("the following sequences as follows:\n\n");
		printf("       General Escape Sequences\n\n");
		printf("\\n newline              \\b backspace\n");
		printf("\\f formfeed             \\t tab\n");
		printf("\\v vertical tab         \\\\ backslash\n");
		printf("\\nnn Octal number, nnn  \\c supress newline\n");
		printf("\\s space\n\n");
		printf("       WWIV Colour Codes\n\n");
		printf("\~0  Colour 0    ....   ~6 Colour 6\n");
		printf("\n[%s v%s]\n",NAME,VERSION);
		exit(0);
	}

	for(i = 1; i <= argc; i++) {
		for(cp = argv[i]; *cp; cp++) {
			if(*cp == '\\')
			switch(*++cp) {
				case 'b':
					putchar('\b');
					continue;

				case 'c':
					exit(0);

				case 'f':
					putchar('\f');
					continue;

				case 's':
					putchar(' ');
					continue;

				case 'n':
					putchar('\n');
					continue;

				case 'r':
					putchar('\r');
					continue;

				case 't':
					putchar('\t');
					continue;

				case 'v':
					putchar('\v');
					continue;

				case '\\':
					putchar('\\');
					continue;
				case '0':
					j = wd = 0;
					while ((*++cp >= '0' && *cp <= '7') && j++ < 3) {
						wd <<= 3;
						wd |= (*cp - '0');
					}
					putchar(wd);
					--cp;
					continue;

				default:
					cp--;
			}

			if(*cp == '~')
			switch(*++cp) {

				case '0':
				case '1':
				case '2':
				case '3':
				case '4':
				case '5':
				case '6':
					putchar('\003');
					putchar(*cp);
					continue;


				case '~':
					putchar('~');
					continue;

				default:
					cp--;
			}

			putchar(*cp);
		}
		putchar(i == argc? '\n': ' ');
	}
	exit(0);
}
