* diff -u
@ 2020-09-20 1:48 ori
2020-09-21 10:10 ` [9front] " cinap_lenrek
0 siblings, 1 reply; 2+ messages in thread
From: ori @ 2020-09-20 1:48 UTC (permalink / raw)
To: 9front
This change gives diff(1) the ability to produce unified diffs
that can be applied with ape/patch
diff -r 730a2ee35853 sys/src/cmd/diff/diff.h
--- a/sys/src/cmd/diff/diff.h Thu Sep 17 16:11:10 2020 -0700
+++ b/sys/src/cmd/diff/diff.h Sat Sep 19 12:58:57 2020 -0700
@@ -22,5 +22,6 @@
void panic(int, char *, ...);
void check(Biobuf *, Biobuf *);
void change(int, int, int, int);
+void fileheader(void);
void flushchanges(void);
diff -r 730a2ee35853 sys/src/cmd/diff/diffio.c
--- a/sys/src/cmd/diff/diffio.c Thu Sep 17 16:11:10 2020 -0700
+++ b/sys/src/cmd/diff/diffio.c Sat Sep 19 12:58:57 2020 -0700
@@ -303,6 +303,7 @@
break;
case 'c':
case 'a':
+ case 'u':
if(nchanges%1024 == 0)
changes = erealloc(changes, (nchanges+1024)*sizeof(changes[0]));
ch = &changes[nchanges++];
@@ -339,6 +340,15 @@
}
void
+fileheader(void)
+{
+ if(mode != 'u')
+ return;
+ Bprint(&stdout, "--- %s\n", file1);
+ Bprint(&stdout, "+++ %s\n", file2);
+}
+
+void
flushchanges(void)
{
int a, b, c, d, at;
@@ -368,20 +378,24 @@
d = len[1];
j = nchanges;
}
- Bprint(&stdout, "%s:", file1);
- range(a, b, ",");
- Bprint(&stdout, " - ");
- Bprint(&stdout, "%s:", file2);
- range(c, d, ",");
- Bputc(&stdout, '\n');
+ if(mode == 'u'){
+ Bprint(&stdout, "@@ -%d,%d +%d,%d @@\n", a, b-a+1, c, d-c+1);
+ }else{
+ Bprint(&stdout, "%s:", file1);
+ range(a, b, ",");
+ Bprint(&stdout, " - ");
+ Bprint(&stdout, "%s:", file2);
+ range(c, d, ",");
+ Bputc(&stdout, '\n');
+ }
at = a;
for(; i<j; i++){
- fetch(ixold, at, changes[i].a-1, input[0], " ");
- fetch(ixold, changes[i].a, changes[i].b, input[0], "- ");
- fetch(ixnew, changes[i].c, changes[i].d, input[1], "+ ");
+ fetch(ixold, at, changes[i].a-1, input[0], mode == 'u' ? " " : " ");
+ fetch(ixold, changes[i].a, changes[i].b, input[0], mode == 'u' ? "-" : "- ");
+ fetch(ixnew, changes[i].c, changes[i].d, input[1], mode == 'u' ? "+" : "- ");
at = changes[i].b+1;
}
- fetch(ixold, at, b, input[0], " ");
+ fetch(ixold, at, b, input[0], mode == 'u' ? " " : " ");
}
nchanges = 0;
}
diff -r 730a2ee35853 sys/src/cmd/diff/diffreg.c
--- a/sys/src/cmd/diff/diffreg.c Thu Sep 17 16:11:10 2020 -0700
+++ b/sys/src/cmd/diff/diffreg.c Sat Sep 19 12:58:57 2020 -0700
@@ -285,6 +285,7 @@
m = len[0];
J[0] = 0;
J[m+1] = len[1]+1;
+ fileheader();
if (mode != 'e') {
for (i0 = 1; i0 <= m; i0 = i1+1) {
while (i0 <= m && J[i0] == J[i0-1]+1)
diff -r 730a2ee35853 sys/src/cmd/diff/main.c
--- a/sys/src/cmd/diff/main.c Thu Sep 17 16:11:10 2020 -0700
+++ b/sys/src/cmd/diff/main.c Sat Sep 19 12:58:57 2020 -0700
@@ -192,6 +192,7 @@
case 'n':
case 'c':
case 'a':
+ case 'u':
mode = *p;
break;
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [9front] diff -u
2020-09-20 1:48 diff -u ori
@ 2020-09-21 10:10 ` cinap_lenrek
0 siblings, 0 replies; 2+ messages in thread
From: cinap_lenrek @ 2020-09-21 10:10 UTC (permalink / raw)
To: 9front
looks good to me...
--
cinap
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-09-21 10:10 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-20 1:48 diff -u ori
2020-09-21 10:10 ` [9front] " cinap_lenrek
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).