rem: eof2 = 1;
add: eof2 = true;
context: join (FILE *fp1, FILE *fp2){  struct seq seq1, seq2;  struct line line;  int diff, i, j, eof1, eof2;  /* Read the first line of each file.  */  initseq (&seq1);  getseq (fp1, &seq1);  initseq (&seq2);  getseq (fp2, &seq2);  while (seq1.count && seq2.count)    {      diff = keycmp (&seq1.lines[0], &seq2.lines[0]);      if (diff < 0)	{	  if (print_unpairables_1)	    prjoin (&seq1.lines[0], &uni_blank);	  freeline (&seq1.lines[0]);	  seq1.count = 0;	  getseq (fp1, &seq1);	  continue;	}      if (diff > 0)	{	  if (print_unpairables_2)	    prjoin (&uni_blank, &seq2.lines[0]);	  freeline (&seq2.lines[0]);	  seq2.count = 0;	  getseq (fp2, &seq2);	  continue;	}      /* Keep reading lines from file1 as long as they continue to         match the current line from file2.  */      eof1 = 0;      do	if (!getseq (fp1, &seq1))	  {	    eof1 = 1;	    ++seq1.count;	    break;	  }      while (!keycmp (&seq1.lines[seq1.count - 1], &seq2.lines[0]));      /* Keep reading lines from file2 as long as they continue to         match the current line from file1.  */      eof2 = 0;      do	if (!getseq (fp2, &seq2))	  {	    eof2 = 1;	    ++seq2.count;	    break;	  }      while (!keycmp (&seq1.lines[0], &seq2.lines[seq2.count - 1]));      if (print_pairables)	{	  for (i = 0; i < seq1.count - 1; ++i)	    for (j = 0; j < seq2.count - 1; ++j)	      prjoin (&seq1.lines[i], &seq2.lines[j]);	}      for (i = 0; i < seq1.count - 1; ++i)	freeline (&seq1.lines[i]);      if (!eof1)	{	  seq1.lines[0] = seq1.lines[seq1.count - 1];	  seq1.count = 1;	}      else	seq1.count = 0;      for (i = 0; i < seq2.count - 1; ++i)	freeline (&seq2.lines[i]);      if (!eof2)	{	  seq2.lines[0] = seq2.lines[seq2.count - 1];	  seq2.count = 1;	}      else	seq2.count = 0;    }  if (print_unpairables_1 && seq1.count)    {      prjoin (&seq1.lines[0], &uni_blank);      freeline (&seq1.lines[0]);      while (get_line (fp1, &line))	{	  prjoin (&line, &uni_blank);	  freeline (&line);	}    }  if (print_unpairables_2 && seq2.count)    {      prjoin (&uni_blank, &seq2.lines[0]);      freeline (&seq2.lines[0]);      while (get_line (fp2, &line))	{	  prjoin (&uni_blank, &line);	  freeline (&line);	}    }  delseq (&seq1);  delseq (&seq2);}