Exemple #1
0
void
print_sdiff_script (struct change *script)
{
  next0 = next1 = - files[0].prefix_lines;
  print_script (script, print_sdiff_hunk);

  print_sdiff_common_lines (files[0].valid_lines, files[1].valid_lines);
}
Exemple #2
0
void
print_sdiff_script (struct change *script)
{
    begin_output ();

    next0 = next1 = - files[0].prefix_lines;
    print_script (script, find_change, print_sdiff_hunk);

    print_sdiff_common_lines (files[0].valid_lines, files[1].valid_lines);
}
Exemple #3
0
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;
    }
}