/* 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; }
/* 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; }
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; } }