예제 #1
0
파일: side.c 프로젝트: NaiyanXu/gitroot
/* Print lines common to both files in side-by-side format.  */
static void
print_sdiff_common_lines (lin limit0, lin limit1)
{
    lin i0 = next0, i1 = next1;

    if (!suppress_common_lines && (i0 != limit0 || i1 != limit1))
    {
        if (sdiff_merge_assist)
        {
            long int len0 = limit0 - i0;
            long int len1 = limit1 - i1;
            fprintf (outfile, "i%ld,%ld\n", len0, len1);
        }

        if (!left_column)
        {
            while (i0 != limit0 && i1 != limit1)
                print_1sdiff_line (&files[0].linbuf[i0++], ' ',
                                   &files[1].linbuf[i1++]);
            while (i1 != limit1)
                print_1sdiff_line (0, ')', &files[1].linbuf[i1++]);
        }
        while (i0 != limit0)
            print_1sdiff_line (&files[0].linbuf[i0++], '(', 0);
    }

    next0 = limit0;
    next1 = limit1;
}
예제 #2
0
/* Print lines common to both files in side-by-side format.  */
static void
print_sdiff_common_lines (lin limit0, lin limit1)
{
  lin i0 = next0, i1 = next1;
/*   long len0, len1; */

  if (i0 != limit0 || i1 != limit1)
    {
      if (!suppress_common_lines)
	{
	  while (i0 != limit0 && i1 != limit1)
	    print_1sdiff_line (&files[0].linbuf[i0++], ' ',
			       &files[1].linbuf[i1++]);
	  while (i1 != limit1)
	    print_1sdiff_line (0, ')', &files[1].linbuf[i1++]);
	  
	  while (i0 != limit0)
	    print_1sdiff_line (&files[0].linbuf[i0++], '(', 0);
	}
/*       else */
/* 	{ */
/* 	  len0 = limit0 - i0; */
/* 	  len1 = limit1 - i1; */
/* 	  fprintf (outfile, "i%ld,%ld\n", len0, len1); */
/* 	} */
    }

  next0 = limit0;
  next1 = limit1;
}
예제 #3
0
파일: side.c 프로젝트: NaiyanXu/gitroot
static void
print_sdiff_hunk (struct change *hunk)
{
    lin first0, last0, first1, last1;
    register lin i, j;

    /* Determine range of line numbers involved in each file.  */
    enum changes changes =
        analyze_hunk (hunk, &first0, &last0, &first1, &last1);
    if (!changes)
        return;

    /* Print out lines up to this change.  */
    print_sdiff_common_lines (first0, first1);

    if (sdiff_merge_assist)
    {
        long int len0 = last0 - first0 + 1;
        long int len1 = last1 - first1 + 1;
        fprintf (outfile, "c%ld,%ld\n", len0, len1);
    }

    /* Print "xxx  |  xxx " lines.  */
    if (changes == CHANGED)
    {
        for (i = first0, j = first1;  i <= last0 && j <= last1;  i++, j++)
            print_1sdiff_line (&files[0].linbuf[i], '|', &files[1].linbuf[j]);
        changes = (i <= last0 ? OLD : 0) + (j <= last1 ? NEW : 0);
        next0 = first0 = i;
        next1 = first1 = j;
    }

    /* Print "     >  xxx " lines.  */
    if (changes & NEW)
    {
        for (j = first1; j <= last1; ++j)
            print_1sdiff_line (0, '>', &files[1].linbuf[j]);
        next1 = j;
    }

    /* Print "xxx  <     " lines.  */
    if (changes & OLD)
    {
        for (i = first0; i <= last0; ++i)
            print_1sdiff_line (&files[0].linbuf[i], '<', 0);
        next0 = i;
    }
}