#include <stdio.h>
#define NAME "logto"
#define VERSION "2.0"

main (argc, argv)
int argc;
char *argv[];
{
	FILE *fp;
	int i;

	if( argc < 2){ /* if no arguments */
		printf("By Andrew Gaunt, AKA Quantum, #1@6300 - May be freely shared.\n\n");
		printf("usage: logto file string ...\n\n");
		printf("logto prints the arguments to file, 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("\n[%s v%s]\n",NAME,VERSION);
		exit(1);
	}
	else {
		if ((fp = fopen(argv[1], "a")) == NULL) {
			fprintf(stderr,"logto: can't write to %s\n",*argv[2]);
			exit(1);
		}
		echo(argc,argv,fp);
		fclose(fp);
	}
}

echo(largc, largv,fp)
int largc;
char **largv;
FILE *fp;
{
	char *cp;
	int i, wd;
	int	j;

	if(--largc == 0) {
		fprintf(fp,"%c",'\n');
		return(NULL);
	}
	for(i = 2; i <= largc; i++) {
		for(cp = largv[i]; *cp; cp++) {
			if(*cp == '\\')
			switch(*++cp) {
				case 'b':
					fprintf(fp,"%c",'\b');
					continue;

				case 'c':
					return(NULL);

				case 'f':
					fprintf(fp,"%c",'\f');
					continue;

				case 's':
					fprintf(fp," ");
					continue;

				case 'n':
					fprintf(fp,"%c",'\n');
					continue;

				case 'r':
					fprintf(fp,"%c",'\r');
					continue;

				case 't':
					fprintf(fp,"%c",'\t');
					continue;

				case 'v':
					fprintf(fp,"%c",'\v');
					continue;

				case '\\':
					fprintf(fp,"%c",'\\');
					continue;
				case '0':
					j = wd = 0;
					while ((*++cp >= '0' && *cp <= '7') && j++ < 3) {
						wd <<= 3;
						wd |= (*cp - '0');
					}
					fprintf(fp,"%c",wd);
					--cp;
					continue;

				default:
					cp--;
			}
			fprintf(fp,"%c",*cp);
		}
		fprintf(fp,"%c",(i == largc? '\n': ' '));
	}
	return(NULL);
}
