From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mimir.eigenstate.org ([206.124.132.107]) by ewsd; Sat Sep 19 21:48:27 EDT 2020 Received: from abbatoir.fios-router.home (pool-74-101-2-6.nycmny.fios.verizon.net [74.101.2.6]) by mimir.eigenstate.org (OpenSMTPD) with ESMTPSA id d5b79605 (TLSv1.2:ECDHE-RSA-AES256-SHA:256:NO) for <9front@9front.org>; Sat, 19 Sep 2020 18:48:18 -0700 (PDT) Message-ID: <1B78E2004D49B2566BDCCBE63F4D276A@eigenstate.org> To: 9front@9front.org Subject: diff -u Date: Sat, 19 Sep 2020 18:48:17 -0700 From: ori@eigenstate.org MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: compliant object-oriented lifecycle full-stack pipelining just-in-time-scale interface 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