/* collate.c
 *
 * PCWC file collation program
 *
 * V2.0 - change to accept leading spaces & tabs in input data
 */


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

int main ( int argc, char * argv [] )

{
	FILE *pfEntries;
	FILE *pfClues;
	FILE *pfCluesexp;
	FILE *pfSummary;

	fprintf ( stderr, "PCWC Collation program V2.0\n" );

	if (argc < 5)
	{
		fprintf ( stderr, "Wrong number of parameters\n" );
		fprintf ( stderr, "collate <entries> <clues> <cluesexplaine> <summary>\n" );
		fprintf ( stderr, "refer to README\n" );
	}

	/* Open Entries file */
	else 
	{
		char *entries = argv[1];
		char *clues = argv[2];
		char *cluesexp = argv[3];
		char *summary = argv[4];
		int trap = 0;

		if ( ( pfEntries = fopen ( entries, "r" ) ) == NULL )
		{
			fprintf ( stderr, "Unable to open the Entries file\n" );
			fprintf ( stderr, "Please check its name and the current directory\n" );
		}
		else if ( ( pfClues = fopen ( clues, "w" ) ) == NULL )
		{
			fprintf ( stderr, "Unable to open Clues file\n" );
		}
		else if ( ( pfCluesexp = fopen ( cluesexp, "w" ) ) == NULL )
		{
			fprintf ( stderr, "Unable to open CluesExplained file\n" );
		}
		else if ( ( pfSummary = fopen ( summary, "w" ) ) == NULL )
		{
			fprintf ( stderr, "Unable to open Summary file\n" );
		}
		else
		{
			/* all file opens succesful */
			char record [ 128 ]; 
			char * orecord;
			while ( !feof(pfEntries) )
			{
				if ( fgets ( record, 128, pfEntries) != NULL )
				{
					char * eonumber;
					char * sonumber;

					orecord = record;

					eonumber = orecord;

					if ( strstr ( eonumber, "Entrant: " ) == NULL )
					{
						fputs ( eonumber, pfCluesexp );
					};

					/* strip leading space and tabs */
					while ( *eonumber == ' ' | *eonumber == '\t' )
						eonumber++;
					orecord = eonumber;


					/* strip off leading minus sign for bonus clue */
					if ( * eonumber == '-' )
						eonumber++;
					sonumber = eonumber;

					/* analyse leading characters for numeric */
					while ( *eonumber >= '0' & *eonumber <= '9' )
						eonumber++;

					/* and if they are write into summary and clues as necessary */
					if ( eonumber != sonumber )
					{
						fputs ( orecord, pfSummary );
						/* write into clues only if ##) */
						if ( * eonumber == ')' )
						{
							fputs ( orecord, pfClues );
							fputs ( ".", stderr );
						};
					};

				};
			};
			_fcloseall ( );
		};
	
	};
	return 0;
};




