#include "srch.h"

#define ARGCOUNT 3
#define INVOCATION_ERROR 1
#define MAXFILENAMELEN 50
#define MAXWORDLEN 30
#define INTERVAL 100
#define FILE_ERROR 10
#define NIL 0


typedef enum{ FALSE, TRUE } Boolean;

void *compare( char *file1, char *file2);

void main( int argc, char **argv )
{

      if( argc != ARGCOUNT )
        {
        printf( "\nForm: HOOKS file1 file2\n" );
        exit( INVOCATION_ERROR );
        }

      compare( *( argv + 1 ), *( argv + 2 ) );


}

void *compare( char *file1, char *file2)
{
   FILE *fp1,
        *fp2;
   char word1 [ MAXWORDLEN ],
        word2 [ MAXWORDLEN ],
        wt1 [ MAXWORDLEN ],
        wt2 [ MAXWORDLEN ];
   int result1,
       result2,
       cmplen;
   Boolean Flag = FALSE;


      fp1 = fopen( file1, "rt" );


      while( !feof( fp1 ) )
        {
        fgets( word1, MAXWORDLEN, fp1 );
        fp2 = fopen( file2, "rt" );
           while( !feof( fp2 ) )
             {
             fgets( word2, MAXWORDLEN, fp2 );

             cmplen = strlen( word1 ) - 1;

             result1 = strncmp( word1, word2, cmplen );
             result2 = strcmp( word1, word2 + 1 );

             if( !result1 || !result2 )
                {
                strcpy( wt1, word1 );
                *( wt1 + strlen( wt1 ) - 1 ) = NIL;
                strcpy( wt2, word2 );
                *( wt2 + strlen( wt2 ) -1 ) = NIL;

                if( !Flag ) 
                   printf( "\n%s: %s", wt1, wt2 );
                else
                   printf( " %s", wt2 );

                Flag = TRUE;
                }
              }
          fclose( fp2 );
          Flag = FALSE;
          }

      fclose( fp1 );

      return;
}

