Showing the changes to sys/src/cmd/diff/diffio.c (1 of 9 files). Show all
Unified · Split
| @@ -302,6 +302,7 @@ change(int a, int b, int c, int d) · 301 unmodified lines | |||
| 302 | range(a, b, " "); | 302 | range(a, b, " "); |
| 303 | break; | 303 | break; |
| 304 | case 'c': | 304 | case 'c': |
| 305 | case 'a': | ||
| 305 | if(nchanges%1024 == 0) | 306 | if(nchanges%1024 == 0) |
| 306 | changes = erealloc(changes, (nchanges+1024)*sizeof(changes[0])); | 307 | changes = erealloc(changes, (nchanges+1024)*sizeof(changes[0])); |
| 307 | ch = &changes[nchanges++]; | 308 | ch = &changes[nchanges++]; |
| @@ -348,24 +349,39 @@ flushchanges(void) · 40 unmodified lines | |||
| 348 | 349 | ||
| 349 | for(i=0; i<nchanges; ){ | 350 | for(i=0; i<nchanges; ){ |
| 350 | j = changeset(i); | 351 | j = changeset(i); |
| 351 | a = changes[i].a; | 352 | a = changes[i].a-Lines; |
| 352 | b = changes[j-1].b; | 353 | b = changes[j-1].b+Lines; |
| 353 | c = changes[i].c; | 354 | c = changes[i].c-Lines; |
| 354 | d = changes[j-1].d; | 355 | d = changes[j-1].d+Lines; |
| 356 | if(a < 1) | ||
| 357 | a = 1; | ||
| 358 | if(c < 1) | ||
| 359 | c = 1; | ||
| 360 | if(b > len[0]) | ||
| 361 | b = len[0]; | ||
| 362 | if(d > len[1]) | ||
| 363 | d = len[1]; | ||
| 364 | if(mode == 'a'){ | ||
| 365 | a = 1; | ||
| 366 | b = len[0]; | ||
| 367 | c = 1; | ||
| 368 | d = len[1]; | ||
| 369 | j = nchanges; | ||
| 370 | } | ||
| 355 | Bprint(&stdout, "%s:", file1); | 371 | Bprint(&stdout, "%s:", file1); |
| 356 | range(a, b, ","); | 372 | range(a, b, ","); |
| 357 | Bprint(&stdout, " - "); | 373 | Bprint(&stdout, " - "); |
| 358 | Bprint(&stdout, "%s:", file2); | 374 | Bprint(&stdout, "%s:", file2); |
| 359 | range(c, d, ","); | 375 | range(c, d, ","); |
| 360 | Bputc(&stdout, '\n'); | 376 | Bputc(&stdout, '\n'); |
| 361 | at = a-Lines; | 377 | at = a; |
| 362 | for(; i<j; i++){ | 378 | for(; i<j; i++){ |
| 363 | fetch(ixold, at, changes[i].a-1, input[0], " "); | 379 | fetch(ixold, at, changes[i].a-1, input[0], " "); |
| 364 | fetch(ixold, changes[i].a, changes[i].b, input[0], "< "); | 380 | fetch(ixold, changes[i].a, changes[i].b, input[0], "< "); |
| 365 | fetch(ixnew, changes[i].c, changes[i].d, input[1], "> "); | 381 | fetch(ixnew, changes[i].c, changes[i].d, input[1], "> "); |
| 366 | at = changes[i].b+1; | 382 | at = changes[i].b+1; |
| 367 | } | 383 | } |
| 368 | fetch(ixold, at, b+Lines, input[0], " "); | 384 | fetch(ixold, at, b, input[0], " "); |
| 369 | } | 385 | } |
| 370 | nchanges = 0; | 386 | nchanges = 0; |
| 371 | } | 387 | } |