/* This little program removes all double lines from a sorted file */
/* Author : Jorrit Tyberghein        Wed Jul  3 17:35:18 1991 */

#include <stdio.h>

main (int argc, char *argv[])
{
	FILE *in,*out;
	char buf1[1024],buf2[1024];
	char *curbuf,*prevbuf,*swap;

	if (argc != 3)
		{
			printf ("Usage : canceldouble <inputfile> <outputfile>\n");
			exit (0);
		}

	if (!(in = fopen (argv[1],"r")))
		{
			printf ("Error opening file %s for reading !\n",argv[1]);
			exit (5);
		}

	if (!(out = fopen (argv[2],"w")))
		{
			printf ("Error opening file %s for writing !\n",argv[2]);
			fclose (in);
			exit (5);
		}

	curbuf = buf1;
	prevbuf = buf2;

	prevbuf[0] = 0;

	while (fgets (curbuf,1023,in))
		{
			curbuf[1023] = 0;
			if (strcmp (curbuf,prevbuf))
				{
					/* Previous line is different from current line */
					fputs (curbuf,out);

					/* Swap the two buffers */
					swap = curbuf;
					curbuf = prevbuf;
					prevbuf = swap;
				}
		}

	fclose (in);
	fclose (out);
}
