13bbe3f67SBaptiste Daroussin.\" $OpenBSD: diff.1,v 1.47 2015/11/24 19:35:41 jmc Exp $ 23bbe3f67SBaptiste Daroussin.\" 33bbe3f67SBaptiste Daroussin.\" Copyright (c) 1980, 1990, 1993 43bbe3f67SBaptiste Daroussin.\" The Regents of the University of California. All rights reserved. 53bbe3f67SBaptiste Daroussin.\" 63bbe3f67SBaptiste Daroussin.\" Redistribution and use in source and binary forms, with or without 73bbe3f67SBaptiste Daroussin.\" modification, are permitted provided that the following conditions 83bbe3f67SBaptiste Daroussin.\" are met: 93bbe3f67SBaptiste Daroussin.\" 1. Redistributions of source code must retain the above copyright 103bbe3f67SBaptiste Daroussin.\" notice, this list of conditions and the following disclaimer. 113bbe3f67SBaptiste Daroussin.\" 2. Redistributions in binary form must reproduce the above copyright 123bbe3f67SBaptiste Daroussin.\" notice, this list of conditions and the following disclaimer in the 133bbe3f67SBaptiste Daroussin.\" documentation and/or other materials provided with the distribution. 143bbe3f67SBaptiste Daroussin.\" 3. Neither the name of the University nor the names of its contributors 153bbe3f67SBaptiste Daroussin.\" may be used to endorse or promote products derived from this software 163bbe3f67SBaptiste Daroussin.\" without specific prior written permission. 173bbe3f67SBaptiste Daroussin.\" 183bbe3f67SBaptiste Daroussin.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 193bbe3f67SBaptiste Daroussin.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 203bbe3f67SBaptiste Daroussin.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 213bbe3f67SBaptiste Daroussin.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 223bbe3f67SBaptiste Daroussin.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 233bbe3f67SBaptiste Daroussin.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 243bbe3f67SBaptiste Daroussin.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 253bbe3f67SBaptiste Daroussin.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 263bbe3f67SBaptiste Daroussin.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 273bbe3f67SBaptiste Daroussin.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 283bbe3f67SBaptiste Daroussin.\" SUCH DAMAGE. 293bbe3f67SBaptiste Daroussin.\" 303bbe3f67SBaptiste Daroussin.\" @(#)diff.1 8.1 (Berkeley) 6/30/93 313bbe3f67SBaptiste Daroussin.\" $FreeBSD$ 323bbe3f67SBaptiste Daroussin.\" 33*e68edb8cSKyle Evans.Dd August 18, 2018 343bbe3f67SBaptiste Daroussin.Dt DIFF 1 353bbe3f67SBaptiste Daroussin.Os 363bbe3f67SBaptiste Daroussin.Sh NAME 373bbe3f67SBaptiste Daroussin.Nm diff 383bbe3f67SBaptiste Daroussin.Nd differential file and directory comparator 393bbe3f67SBaptiste Daroussin.Sh SYNOPSIS 403bbe3f67SBaptiste Daroussin.Nm diff 41*e68edb8cSKyle Evans.Op Fl aBbdipTtw 423bbe3f67SBaptiste Daroussin.Oo 433bbe3f67SBaptiste Daroussin.Fl c | e | f | 443bbe3f67SBaptiste Daroussin.Fl n | q | u 453bbe3f67SBaptiste Daroussin.Oc 467dacb9e7SEnji Cooper.Op Fl -brief 47fddcb7b8SBaptiste Daroussin.Op Fl -changed-group-format Ar GFMT 487dacb9e7SEnji Cooper.Op Fl -ed 497dacb9e7SEnji Cooper.Op Fl -expand-tabs 507dacb9e7SEnji Cooper.Op Fl -forward-ed 517dacb9e7SEnji Cooper.Op Fl -ignore-all-space 523bbe3f67SBaptiste Daroussin.Op Fl -ignore-case 537dacb9e7SEnji Cooper.Op Fl -ignore-space-change 547dacb9e7SEnji Cooper.Op Fl -initial-tab 557dacb9e7SEnji Cooper.Op Fl -minimal 5678b83a1eSEnji Cooper.Op Fl -no-ignore-file-name-case 573bbe3f67SBaptiste Daroussin.Op Fl -normal 587dacb9e7SEnji Cooper.Op Fl -rcs 597dacb9e7SEnji Cooper.Op Fl -show-c-function 607dacb9e7SEnji Cooper.Op Fl -starting-file 61a077708dSBaptiste Daroussin.Op Fl -speed-large-files 623bbe3f67SBaptiste Daroussin.Op Fl -strip-trailing-cr 633bbe3f67SBaptiste Daroussin.Op Fl -tabsize 647dacb9e7SEnji Cooper.Op Fl -text 657dacb9e7SEnji Cooper.Op Fl -unified 667dacb9e7SEnji Cooper.Op Fl I Ar pattern | Fl -ignore-matching-lines Ar pattern 677dacb9e7SEnji Cooper.Op Fl L Ar label | Fl -label Ar label 683bbe3f67SBaptiste Daroussin.Ar file1 file2 693bbe3f67SBaptiste Daroussin.Nm diff 70*e68edb8cSKyle Evans.Op Fl aBbdilpTtw 717dacb9e7SEnji Cooper.Op Fl I Ar pattern | Fl -ignore-matching-lines Ar pattern 727dacb9e7SEnji Cooper.Op Fl L Ar label | Fl -label Ar label 737dacb9e7SEnji Cooper.Op Fl -brief 74fddcb7b8SBaptiste Daroussin.Op Fl -changed-group-format Ar GFMT 757dacb9e7SEnji Cooper.Op Fl -ed 767dacb9e7SEnji Cooper.Op Fl -expand-tabs 777dacb9e7SEnji Cooper.Op Fl -forward-ed 787dacb9e7SEnji Cooper.Op Fl -ignore-all-space 793bbe3f67SBaptiste Daroussin.Op Fl -ignore-case 807dacb9e7SEnji Cooper.Op Fl -ignore-space-change 817dacb9e7SEnji Cooper.Op Fl -initial-tab 827dacb9e7SEnji Cooper.Op Fl -minimal 8378b83a1eSEnji Cooper.Op Fl -no-ignore-file-name-case 843bbe3f67SBaptiste Daroussin.Op Fl -normal 857dacb9e7SEnji Cooper.Op Fl -paginate 867dacb9e7SEnji Cooper.Op Fl -rcs 877dacb9e7SEnji Cooper.Op Fl -show-c-function 88a077708dSBaptiste Daroussin.Op Fl -speed-large-files 897dacb9e7SEnji Cooper.Op Fl -starting-file 903bbe3f67SBaptiste Daroussin.Op Fl -strip-trailing-cr 913bbe3f67SBaptiste Daroussin.Op Fl -tabsize 927dacb9e7SEnji Cooper.Op Fl -text 937dacb9e7SEnji Cooper.Fl C Ar number | -context Ar number 943bbe3f67SBaptiste Daroussin.Ar file1 file2 953bbe3f67SBaptiste Daroussin.Nm diff 96*e68edb8cSKyle Evans.Op Fl aBbdiltw 977dacb9e7SEnji Cooper.Op Fl I Ar pattern | Fl -ignore-matching-lines Ar pattern 987dacb9e7SEnji Cooper.Op Fl -brief 99fddcb7b8SBaptiste Daroussin.Op Fl -changed-group-format Ar GFMT 1007dacb9e7SEnji Cooper.Op Fl -ed 1017dacb9e7SEnji Cooper.Op Fl -expand-tabs 1027dacb9e7SEnji Cooper.Op Fl -forward-ed 1037dacb9e7SEnji Cooper.Op Fl -ignore-all-space 1043bbe3f67SBaptiste Daroussin.Op Fl -ignore-case 1057dacb9e7SEnji Cooper.Op Fl -ignore-space-change 1067dacb9e7SEnji Cooper.Op Fl -initial-tab 1077dacb9e7SEnji Cooper.Op Fl -minimal 10878b83a1eSEnji Cooper.Op Fl -no-ignore-file-name-case 1093bbe3f67SBaptiste Daroussin.Op Fl -normal 1107dacb9e7SEnji Cooper.Op Fl -paginate 1117dacb9e7SEnji Cooper.Op Fl -rcs 1127dacb9e7SEnji Cooper.Op Fl -show-c-function 113a077708dSBaptiste Daroussin.Op Fl -speed-large-files 1147dacb9e7SEnji Cooper.Op Fl -starting-file 1153bbe3f67SBaptiste Daroussin.Op Fl -strip-trailing-cr 1163bbe3f67SBaptiste Daroussin.Op Fl -tabsize 1177dacb9e7SEnji Cooper.Op Fl -text 1187dacb9e7SEnji Cooper.Fl D Ar string | Fl -ifdef Ar string 1193bbe3f67SBaptiste Daroussin.Ar file1 file2 1203bbe3f67SBaptiste Daroussin.Nm diff 121*e68edb8cSKyle Evans.Op Fl aBbdilpTtw 1227dacb9e7SEnji Cooper.Op Fl I Ar pattern | Fl -ignore-matching-lines Ar pattern 1237dacb9e7SEnji Cooper.Op Fl L Ar label | Fl -label Ar label 1247dacb9e7SEnji Cooper.Op Fl -brief 125fddcb7b8SBaptiste Daroussin.Op Fl -changed-group-format Ar GFMT 1267dacb9e7SEnji Cooper.Op Fl -ed 1277dacb9e7SEnji Cooper.Op Fl -expand-tabs 1287dacb9e7SEnji Cooper.Op Fl -forward-ed 1297dacb9e7SEnji Cooper.Op Fl -ignore-all-space 1303bbe3f67SBaptiste Daroussin.Op Fl -ignore-case 1317dacb9e7SEnji Cooper.Op Fl -ignore-space-change 1327dacb9e7SEnji Cooper.Op Fl -initial-tab 1337dacb9e7SEnji Cooper.Op Fl -minimal 13478b83a1eSEnji Cooper.Op Fl -no-ignore-file-name-case 1353bbe3f67SBaptiste Daroussin.Op Fl -normal 1367dacb9e7SEnji Cooper.Op Fl -paginate 1377dacb9e7SEnji Cooper.Op Fl -rcs 1387dacb9e7SEnji Cooper.Op Fl -show-c-function 139a077708dSBaptiste Daroussin.Op Fl -speed-large-files 1407dacb9e7SEnji Cooper.Op Fl -starting-file 1413bbe3f67SBaptiste Daroussin.Op Fl -strip-trailing-cr 142b7ea08a9SEnji Cooper.Op Fl -tabsize 1437dacb9e7SEnji Cooper.Op Fl -text 1447dacb9e7SEnji Cooper.Fl U Ar number | Fl -unified Ar number 1453bbe3f67SBaptiste Daroussin.Ar file1 file2 1463bbe3f67SBaptiste Daroussin.Nm diff 147*e68edb8cSKyle Evans.Op Fl aBbdilNPprsTtw 1483bbe3f67SBaptiste Daroussin.Oo 1493bbe3f67SBaptiste Daroussin.Fl c | e | f | 1503bbe3f67SBaptiste Daroussin.Fl n | q | u 1513bbe3f67SBaptiste Daroussin.Oc 1527dacb9e7SEnji Cooper.Op Fl -brief 153fddcb7b8SBaptiste Daroussin.Op Fl -changed-group-format Ar GFMT 1547dacb9e7SEnji Cooper.Op Fl -context 1557dacb9e7SEnji Cooper.Op Fl -ed 1567dacb9e7SEnji Cooper.Op Fl -expand-tabs 1577dacb9e7SEnji Cooper.Op Fl -forward-ed 1587dacb9e7SEnji Cooper.Op Fl -ignore-all-space 1593bbe3f67SBaptiste Daroussin.Op Fl -ignore-case 1607dacb9e7SEnji Cooper.Op Fl -ignore-space-change 1617dacb9e7SEnji Cooper.Op Fl -initial-tab 1627dacb9e7SEnji Cooper.Op Fl -minimal 1637dacb9e7SEnji Cooper.Op Fl -new-file 16478b83a1eSEnji Cooper.Op Fl -no-ignore-file-name-case 1653bbe3f67SBaptiste Daroussin.Op Fl -normal 1667dacb9e7SEnji Cooper.Op Fl -paginate 1677dacb9e7SEnji Cooper.Op Fl -rcs 1687dacb9e7SEnji Cooper.Op Fl -recursive 1697dacb9e7SEnji Cooper.Op Fl -report-identical-files 1707dacb9e7SEnji Cooper.Op Fl -show-c-function 171a077708dSBaptiste Daroussin.Op Fl -speed-large-files 1729ba27624SEnji Cooper.Op Fl -strip-trailing-cr 1733bbe3f67SBaptiste Daroussin.Op Fl -tabsize 1747dacb9e7SEnji Cooper.Op Fl -text 1757dacb9e7SEnji Cooper.Op Fl -unidirectional-new-file 1767dacb9e7SEnji Cooper.Op Fl -unified 1777dacb9e7SEnji Cooper.Op Fl I Ar pattern | Fl -ignore-matching-lines Ar pattern 1783bbe3f67SBaptiste Daroussin.Bk -words 1797dacb9e7SEnji Cooper.Op Fl L Ar label | Fl -label Ar label 1807dacb9e7SEnji Cooper.Op Fl S Ar name | Fl -starting-file Ar name 1817dacb9e7SEnji Cooper.Op Fl X Ar file | Fl -exclude-from Ar file 1827dacb9e7SEnji Cooper.Op Fl x Ar pattern | Fl -exclude Ar pattern 1833bbe3f67SBaptiste Daroussin.Ek 1843bbe3f67SBaptiste Daroussin.Ar dir1 dir2 1853bbe3f67SBaptiste Daroussin.Sh DESCRIPTION 1863bbe3f67SBaptiste DaroussinThe 1873bbe3f67SBaptiste Daroussin.Nm 1883bbe3f67SBaptiste Daroussinutility compares the contents of 1893bbe3f67SBaptiste Daroussin.Ar file1 1903bbe3f67SBaptiste Daroussinand 1913bbe3f67SBaptiste Daroussin.Ar file2 1923bbe3f67SBaptiste Daroussinand writes to the standard output the list of changes necessary to 1933bbe3f67SBaptiste Daroussinconvert one file into the other. 1943bbe3f67SBaptiste DaroussinNo output is produced if the files are identical. 1953bbe3f67SBaptiste Daroussin.Pp 1963bbe3f67SBaptiste DaroussinOutput options (mutually exclusive): 1973bbe3f67SBaptiste Daroussin.Bl -tag -width Ds 198bcf91ad6SBaptiste Daroussin.It Fl C Ar number Fl -context Ar number 1993bbe3f67SBaptiste DaroussinLike 2003bbe3f67SBaptiste Daroussin.Fl c 2013bbe3f67SBaptiste Daroussinbut produces a diff with 2023bbe3f67SBaptiste Daroussin.Ar number 2033bbe3f67SBaptiste Daroussinlines of context. 2043bbe3f67SBaptiste Daroussin.It Fl c 2053bbe3f67SBaptiste DaroussinProduces a diff with 3 lines of context. 2063bbe3f67SBaptiste DaroussinWith 2073bbe3f67SBaptiste Daroussin.Fl c 2083bbe3f67SBaptiste Daroussinthe output format is modified slightly: 2093bbe3f67SBaptiste Daroussinthe output begins with identification of the files involved and 2103bbe3f67SBaptiste Daroussintheir creation dates and then each change is separated 2113bbe3f67SBaptiste Daroussinby a line with fifteen 2123bbe3f67SBaptiste Daroussin.Li * Ns 's . 2133bbe3f67SBaptiste DaroussinThe lines removed from 2143bbe3f67SBaptiste Daroussin.Ar file1 2153bbe3f67SBaptiste Daroussinare marked with 2163bbe3f67SBaptiste Daroussin.Sq \&-\ \& ; 2173bbe3f67SBaptiste Daroussinthose added to 2183bbe3f67SBaptiste Daroussin.Ar file2 2193bbe3f67SBaptiste Daroussinare marked 2203bbe3f67SBaptiste Daroussin.Sq \+\ \& . 2213bbe3f67SBaptiste DaroussinLines which are changed from one file to the other are marked in 2223bbe3f67SBaptiste Daroussinboth files with 2233bbe3f67SBaptiste Daroussin.Sq !\ \& . 2243bbe3f67SBaptiste DaroussinChanges which lie within 3 lines of each other are grouped together on 2253bbe3f67SBaptiste Daroussinoutput. 226bcf91ad6SBaptiste Daroussin.It Fl D Ar string Fl -ifdef Ar string 2273bbe3f67SBaptiste DaroussinCreates a merged version of 2283bbe3f67SBaptiste Daroussin.Ar file1 2293bbe3f67SBaptiste Daroussinand 2303bbe3f67SBaptiste Daroussin.Ar file2 2313bbe3f67SBaptiste Daroussinon the standard output, with C preprocessor controls included so that 2323bbe3f67SBaptiste Daroussina compilation of the result without defining 2333bbe3f67SBaptiste Daroussin.Ar string 2343bbe3f67SBaptiste Daroussinis equivalent to compiling 2353bbe3f67SBaptiste Daroussin.Ar file1 , 2363bbe3f67SBaptiste Daroussinwhile defining 2373bbe3f67SBaptiste Daroussin.Ar string 2383bbe3f67SBaptiste Daroussinwill yield 2393bbe3f67SBaptiste Daroussin.Ar file2 . 240bcf91ad6SBaptiste Daroussin.It Fl e -ed 2413bbe3f67SBaptiste DaroussinProduces output in a form suitable as input for the editor utility, 2423bbe3f67SBaptiste Daroussin.Xr ed 1 , 2433bbe3f67SBaptiste Daroussinwhich can then be used to convert file1 into file2. 2443bbe3f67SBaptiste Daroussin.Pp 2453bbe3f67SBaptiste DaroussinExtra commands are added to the output when comparing directories with 2463bbe3f67SBaptiste Daroussin.Fl e , 2473bbe3f67SBaptiste Daroussinso that the result is a 2483bbe3f67SBaptiste Daroussin.Xr sh 1 2493bbe3f67SBaptiste Daroussinscript for converting text files which are common to the two directories 2503bbe3f67SBaptiste Daroussinfrom their state in 2513bbe3f67SBaptiste Daroussin.Ar dir1 2523bbe3f67SBaptiste Daroussinto their state in 2533bbe3f67SBaptiste Daroussin.Ar dir2 . 254bcf91ad6SBaptiste Daroussin.It Fl f -forward-ed 2553bbe3f67SBaptiste DaroussinIdentical output to that of the 2563bbe3f67SBaptiste Daroussin.Fl e 2573bbe3f67SBaptiste Daroussinflag, but in reverse order. 2583bbe3f67SBaptiste DaroussinIt cannot be digested by 2593bbe3f67SBaptiste Daroussin.Xr ed 1 . 2603bbe3f67SBaptiste Daroussin.It Fl n 2613bbe3f67SBaptiste DaroussinProduces a script similar to that of 2623bbe3f67SBaptiste Daroussin.Fl e , 2633bbe3f67SBaptiste Daroussinbut in the opposite order and with a count of changed lines on each 2643bbe3f67SBaptiste Daroussininsert or delete command. 2653bbe3f67SBaptiste DaroussinThis is the form used by 2663bbe3f67SBaptiste Daroussin.Xr rcsdiff 1 . 267bcf91ad6SBaptiste Daroussin.It Fl q -brief 2683bbe3f67SBaptiste DaroussinJust print a line when the files differ. 2693bbe3f67SBaptiste DaroussinDoes not output a list of changes. 270bcf91ad6SBaptiste Daroussin.It Fl U Ar number Fl -unified Ar number 2713bbe3f67SBaptiste DaroussinLike 2723bbe3f67SBaptiste Daroussin.Fl u 2733bbe3f67SBaptiste Daroussinbut produces a diff with 2743bbe3f67SBaptiste Daroussin.Ar number 2753bbe3f67SBaptiste Daroussinlines of context. 2763bbe3f67SBaptiste Daroussin.It Fl u 2773bbe3f67SBaptiste DaroussinProduces a 2783bbe3f67SBaptiste Daroussin.Em unified 2793bbe3f67SBaptiste Daroussindiff with 3 lines of context. 2803bbe3f67SBaptiste DaroussinA unified diff is similar to the context diff produced by the 2813bbe3f67SBaptiste Daroussin.Fl c 2823bbe3f67SBaptiste Daroussinoption. 2833bbe3f67SBaptiste DaroussinHowever, unlike with 2843bbe3f67SBaptiste Daroussin.Fl c , 2853bbe3f67SBaptiste Daroussinall lines to be changed (added and/or removed) are present in 2863bbe3f67SBaptiste Daroussina single section. 2873bbe3f67SBaptiste Daroussin.El 2883bbe3f67SBaptiste Daroussin.Pp 2893bbe3f67SBaptiste DaroussinComparison options: 2903bbe3f67SBaptiste Daroussin.Bl -tag -width Ds 291bcf91ad6SBaptiste Daroussin.It Fl a -text 2923bbe3f67SBaptiste DaroussinTreat all files as 2933bbe3f67SBaptiste Daroussin.Tn ASCII 2943bbe3f67SBaptiste Daroussintext. 2953bbe3f67SBaptiste DaroussinNormally 2963bbe3f67SBaptiste Daroussin.Nm 2973bbe3f67SBaptiste Daroussinwill simply print 2983bbe3f67SBaptiste Daroussin.Dq Binary files ... differ 2993bbe3f67SBaptiste Daroussinif files contain binary characters. 3003bbe3f67SBaptiste DaroussinUse of this option forces 3013bbe3f67SBaptiste Daroussin.Nm 3023bbe3f67SBaptiste Daroussinto produce a diff. 303*e68edb8cSKyle Evans.It Fl B Fl -ignore-blank-lines 304*e68edb8cSKyle EvansCauses chunks that include only blank lines to be ignored. 3053bbe3f67SBaptiste Daroussin.It Fl b 3063bbe3f67SBaptiste DaroussinCauses trailing blanks (spaces and tabs) to be ignored, and other 3073bbe3f67SBaptiste Daroussinstrings of blanks to compare equal. 308bcf91ad6SBaptiste Daroussin.It Fl d -minimal 3093bbe3f67SBaptiste DaroussinTry very hard to produce a diff as small as possible. 3103bbe3f67SBaptiste DaroussinThis may consume a lot of processing power and memory when processing 3113bbe3f67SBaptiste Daroussinlarge files with many changes. 312bcf91ad6SBaptiste Daroussin.It Fl I Ar pattern Fl -ignore-matching-lines Ar pattern 3133bbe3f67SBaptiste DaroussinIgnores changes, insertions, and deletions whose lines match the 3143bbe3f67SBaptiste Daroussinextended regular expression 3153bbe3f67SBaptiste Daroussin.Ar pattern . 3163bbe3f67SBaptiste DaroussinMultiple 3173bbe3f67SBaptiste Daroussin.Fl I 3183bbe3f67SBaptiste Daroussinpatterns may be specified. 3193bbe3f67SBaptiste DaroussinAll lines in the change must match some pattern for the change to be 3203bbe3f67SBaptiste Daroussinignored. 3213bbe3f67SBaptiste DaroussinSee 3223bbe3f67SBaptiste Daroussin.Xr re_format 7 3233bbe3f67SBaptiste Daroussinfor more information on regular expression patterns. 324bcf91ad6SBaptiste Daroussin.It Fl i -ignore-case 3253bbe3f67SBaptiste DaroussinIgnores the case of letters. 3263bbe3f67SBaptiste DaroussinE.g., 3273bbe3f67SBaptiste Daroussin.Dq A 3283bbe3f67SBaptiste Daroussinwill compare equal to 3293bbe3f67SBaptiste Daroussin.Dq a . 330bcf91ad6SBaptiste Daroussin.It Fl l -paginate 3313bbe3f67SBaptiste DaroussinPass the output through 3323bbe3f67SBaptiste Daroussin.Xr pr 1 3333bbe3f67SBaptiste Daroussinto paginate it. 334bcf91ad6SBaptiste Daroussin.It Fl L Ar label Fl -label Ar label 3353bbe3f67SBaptiste DaroussinPrint 3363bbe3f67SBaptiste Daroussin.Ar label 3373bbe3f67SBaptiste Daroussininstead of the first (and second, if this option is specified twice) 3383bbe3f67SBaptiste Daroussinfile name and time in the context or unified diff header. 339bcf91ad6SBaptiste Daroussin.It Fl p -show-c-function 3403bbe3f67SBaptiste DaroussinWith unified and context diffs, show with each change 3413bbe3f67SBaptiste Daroussinthe first 40 characters of the last line before the context beginning 3423bbe3f67SBaptiste Daroussinwith a letter, an underscore or a dollar sign. 3433bbe3f67SBaptiste DaroussinFor C source code following standard layout conventions, this will 3443bbe3f67SBaptiste Daroussinshow the prototype of the function the change applies to. 345bcf91ad6SBaptiste Daroussin.It Fl T -initial-tab 3463bbe3f67SBaptiste DaroussinPrint a tab rather than a space before the rest of the line for the 3473bbe3f67SBaptiste Daroussinnormal, context or unified output formats. 3483bbe3f67SBaptiste DaroussinThis makes the alignment of tabs in the line consistent. 349bcf91ad6SBaptiste Daroussin.It Fl t -expand-tabs 3503bbe3f67SBaptiste DaroussinWill expand tabs in output lines. 3513bbe3f67SBaptiste DaroussinNormal or 3523bbe3f67SBaptiste Daroussin.Fl c 3533bbe3f67SBaptiste Daroussinoutput adds character(s) to the front of each line which may screw up 3543bbe3f67SBaptiste Daroussinthe indentation of the original source lines and make the output listing 3553bbe3f67SBaptiste Daroussindifficult to interpret. 3563bbe3f67SBaptiste DaroussinThis option will preserve the original source's indentation. 357bcf91ad6SBaptiste Daroussin.It Fl w -ignore-all-blanks 3583bbe3f67SBaptiste DaroussinIs similar to 359bcf91ad6SBaptiste Daroussin.Fl b -ignore-space-change 3603bbe3f67SBaptiste Daroussinbut causes whitespace (blanks and tabs) to be totally ignored. 3613bbe3f67SBaptiste DaroussinE.g., 3623bbe3f67SBaptiste Daroussin.Dq if (\ \&a == b \&) 3633bbe3f67SBaptiste Daroussinwill compare equal to 3643bbe3f67SBaptiste Daroussin.Dq if(a==b) . 365fddcb7b8SBaptiste Daroussin.It Fl -changed-group-format Ar GFMT 366fddcb7b8SBaptiste DaroussinFormat input groups in the provided 367fddcb7b8SBaptiste Daroussin.Pp 368fddcb7b8SBaptiste Daroussinthe format is a string with special keywords: 369fddcb7b8SBaptiste Daroussin.Bl -tag -width %< 370fddcb7b8SBaptiste Daroussin.It %< 371fddcb7b8SBaptiste Daroussinlines from FILE1 372fddcb7b8SBaptiste Daroussin.It %< 373fddcb7b8SBaptiste Daroussinlines from FILE2 374fddcb7b8SBaptiste Daroussin.El 375bcf91ad6SBaptiste Daroussin.It Fl -ignore-file-name-case 376bcf91ad6SBaptiste Daroussinignore case when comparing file names 377bcf91ad6SBaptiste Daroussin.It Fl -no-ignore-file-name-case 378bcf91ad6SBaptiste Daroussindo not ignore case wen comparing file names (default) 379bcf91ad6SBaptiste Daroussin.It Fl -normal 380bcf91ad6SBaptiste Daroussindefault diff output 381bcf91ad6SBaptiste Daroussin.It Fl -speed-large-files 382bcf91ad6SBaptiste Daroussinstub option for compatibility with GNU diff 383bcf91ad6SBaptiste Daroussin.It Fl -strip-trailing-cr 384bcf91ad6SBaptiste Daroussinstrip carriage return on input files 385bcf91ad6SBaptiste Daroussin.It Fl tabsize Ar number 386bcf91ad6SBaptiste DaroussinNumber of spaces representing a tab (default 8) 3873bbe3f67SBaptiste Daroussin.El 3883bbe3f67SBaptiste Daroussin.Pp 3893bbe3f67SBaptiste DaroussinDirectory comparison options: 3903bbe3f67SBaptiste Daroussin.Bl -tag -width Ds 391bcf91ad6SBaptiste Daroussin.It Fl N -new-file 3923bbe3f67SBaptiste DaroussinIf a file is found in only one directory, act as if it was found in the 3933bbe3f67SBaptiste Daroussinother directory too but was of zero size. 394bcf91ad6SBaptiste Daroussin.It Fl P -unidirectional-new-file 3953bbe3f67SBaptiste DaroussinIf a file is found only in 3963bbe3f67SBaptiste Daroussin.Ar dir2 , 3973bbe3f67SBaptiste Daroussinact as if it was found in 3983bbe3f67SBaptiste Daroussin.Ar dir1 3993bbe3f67SBaptiste Daroussintoo but was of zero size. 400bcf91ad6SBaptiste Daroussin.It Fl r -recursive 4013bbe3f67SBaptiste DaroussinCauses application of 4023bbe3f67SBaptiste Daroussin.Nm 4033bbe3f67SBaptiste Daroussinrecursively to common subdirectories encountered. 404bcf91ad6SBaptiste Daroussin.It Fl S Ar name Fl -starting-file Ar name 4053bbe3f67SBaptiste DaroussinRe-starts a directory 4063bbe3f67SBaptiste Daroussin.Nm 4073bbe3f67SBaptiste Daroussinin the middle, beginning with file 4083bbe3f67SBaptiste Daroussin.Ar name . 409bcf91ad6SBaptiste Daroussin.It Fl s -report-identical-files 4103bbe3f67SBaptiste DaroussinCauses 4113bbe3f67SBaptiste Daroussin.Nm 4123bbe3f67SBaptiste Daroussinto report files which are the same, which are otherwise not mentioned. 413bcf91ad6SBaptiste Daroussin.It Fl X Ar file Fl -exclude-from Ar file 4143bbe3f67SBaptiste DaroussinExclude files and subdirectories from comparison whose basenames match 4153bbe3f67SBaptiste Daroussinlines in 4163bbe3f67SBaptiste Daroussin.Ar file . 4173bbe3f67SBaptiste DaroussinMultiple 4183bbe3f67SBaptiste Daroussin.Fl X 4193bbe3f67SBaptiste Daroussinoptions may be specified. 420bcf91ad6SBaptiste Daroussin.It Fl x Ar pattern Fl -exclude Ar pattern 4213bbe3f67SBaptiste DaroussinExclude files and subdirectories from comparison whose basenames match 4223bbe3f67SBaptiste Daroussin.Ar pattern . 4233bbe3f67SBaptiste DaroussinPatterns are matched using shell-style globbing via 4243bbe3f67SBaptiste Daroussin.Xr fnmatch 3 . 4253bbe3f67SBaptiste DaroussinMultiple 4263bbe3f67SBaptiste Daroussin.Fl x 4273bbe3f67SBaptiste Daroussinoptions may be specified. 4283bbe3f67SBaptiste Daroussin.El 4293bbe3f67SBaptiste Daroussin.Pp 4303bbe3f67SBaptiste DaroussinIf both arguments are directories, 4313bbe3f67SBaptiste Daroussin.Nm 4323bbe3f67SBaptiste Daroussinsorts the contents of the directories by name, and then runs the 4333bbe3f67SBaptiste Daroussinregular file 4343bbe3f67SBaptiste Daroussin.Nm 4353bbe3f67SBaptiste Daroussinalgorithm, producing a change list, 4363bbe3f67SBaptiste Daroussinon text files which are different. 4373bbe3f67SBaptiste DaroussinBinary files which differ, 4383bbe3f67SBaptiste Daroussincommon subdirectories, and files which appear in only one directory 4393bbe3f67SBaptiste Daroussinare described as such. 4403bbe3f67SBaptiste DaroussinIn directory mode only regular files and directories are compared. 4413bbe3f67SBaptiste DaroussinIf a non-regular file such as a device special file or 4423bbe3f67SBaptiste Daroussin.Tn FIFO 4433bbe3f67SBaptiste Daroussinis encountered, a diagnostic message is printed. 4443bbe3f67SBaptiste Daroussin.Pp 4453bbe3f67SBaptiste DaroussinIf only one of 4463bbe3f67SBaptiste Daroussin.Ar file1 4473bbe3f67SBaptiste Daroussinand 4483bbe3f67SBaptiste Daroussin.Ar file2 4493bbe3f67SBaptiste Daroussinis a directory, 4503bbe3f67SBaptiste Daroussin.Nm 4513bbe3f67SBaptiste Daroussinis applied to the non-directory file and the file contained in 4523bbe3f67SBaptiste Daroussinthe directory file with a filename that is the same as the 4533bbe3f67SBaptiste Daroussinlast component of the non-directory file. 4543bbe3f67SBaptiste Daroussin.Pp 4553bbe3f67SBaptiste DaroussinIf either 4563bbe3f67SBaptiste Daroussin.Ar file1 4573bbe3f67SBaptiste Daroussinor 4583bbe3f67SBaptiste Daroussin.Ar file2 4593bbe3f67SBaptiste Daroussinis 4603bbe3f67SBaptiste Daroussin.Sq - , 4613bbe3f67SBaptiste Daroussinthe standard input is 4623bbe3f67SBaptiste Daroussinused in its place. 4633bbe3f67SBaptiste Daroussin.Ss Output Style 4643bbe3f67SBaptiste DaroussinThe default (without 4653bbe3f67SBaptiste Daroussin.Fl e , 4663bbe3f67SBaptiste Daroussin.Fl c , 4673bbe3f67SBaptiste Daroussinor 468bcf91ad6SBaptiste Daroussin.Fl n -rcs 4693bbe3f67SBaptiste Daroussin.\" -C 4703bbe3f67SBaptiste Daroussinoptions) 4713bbe3f67SBaptiste Daroussinoutput contains lines of these forms, where 4723bbe3f67SBaptiste Daroussin.Va XX , YY , ZZ , QQ 4733bbe3f67SBaptiste Daroussinare line numbers respective of file order. 4743bbe3f67SBaptiste Daroussin.Pp 4753bbe3f67SBaptiste Daroussin.Bl -tag -width "XX,YYcZZ,QQ" -compact 4763bbe3f67SBaptiste Daroussin.It Li XX Ns Ic a Ns Li YY 4773bbe3f67SBaptiste DaroussinAt (the end of) line 4783bbe3f67SBaptiste Daroussin.Va XX 4793bbe3f67SBaptiste Daroussinof 4803bbe3f67SBaptiste Daroussin.Ar file1 , 4813bbe3f67SBaptiste Daroussinappend the contents 4823bbe3f67SBaptiste Daroussinof line 4833bbe3f67SBaptiste Daroussin.Va YY 4843bbe3f67SBaptiste Daroussinof 4853bbe3f67SBaptiste Daroussin.Ar file2 4863bbe3f67SBaptiste Daroussinto make them equal. 4873bbe3f67SBaptiste Daroussin.It Li XX Ns Ic a Ns Li YY,ZZ 4883bbe3f67SBaptiste DaroussinSame as above, but append the range of lines, 4893bbe3f67SBaptiste Daroussin.Va YY 4903bbe3f67SBaptiste Daroussinthrough 4913bbe3f67SBaptiste Daroussin.Va ZZ 4923bbe3f67SBaptiste Daroussinof 4933bbe3f67SBaptiste Daroussin.Ar file2 4943bbe3f67SBaptiste Daroussinto line 4953bbe3f67SBaptiste Daroussin.Va XX 4963bbe3f67SBaptiste Daroussinof file1. 4973bbe3f67SBaptiste Daroussin.It Li XX Ns Ic d Ns Li YY 4983bbe3f67SBaptiste DaroussinAt line 4993bbe3f67SBaptiste Daroussin.Va XX 5003bbe3f67SBaptiste Daroussindelete 5013bbe3f67SBaptiste Daroussinthe line. 5023bbe3f67SBaptiste DaroussinThe value 5033bbe3f67SBaptiste Daroussin.Va YY 5043bbe3f67SBaptiste Daroussintells to which line the change would bring 5053bbe3f67SBaptiste Daroussin.Ar file1 5063bbe3f67SBaptiste Daroussinin line with 5073bbe3f67SBaptiste Daroussin.Ar file2 . 5083bbe3f67SBaptiste Daroussin.It Li XX,YY Ns Ic d Ns Li ZZ 5093bbe3f67SBaptiste DaroussinDelete the range of lines 5103bbe3f67SBaptiste Daroussin.Va XX 5113bbe3f67SBaptiste Daroussinthrough 5123bbe3f67SBaptiste Daroussin.Va YY 5133bbe3f67SBaptiste Daroussinin 5143bbe3f67SBaptiste Daroussin.Ar file1 . 5153bbe3f67SBaptiste Daroussin.It Li XX Ns Ic c Ns Li YY 5163bbe3f67SBaptiste DaroussinChange the line 5173bbe3f67SBaptiste Daroussin.Va XX 5183bbe3f67SBaptiste Daroussinin 5193bbe3f67SBaptiste Daroussin.Ar file1 5203bbe3f67SBaptiste Daroussinto the line 5213bbe3f67SBaptiste Daroussin.Va YY 5223bbe3f67SBaptiste Daroussinin 5233bbe3f67SBaptiste Daroussin.Ar file2 . 5243bbe3f67SBaptiste Daroussin.It Li XX,YY Ns Ic c Ns Li ZZ 5253bbe3f67SBaptiste DaroussinReplace the range of specified lines with the line 5263bbe3f67SBaptiste Daroussin.Va ZZ . 5273bbe3f67SBaptiste Daroussin.It Li XX,YY Ns Ic c Ns Li ZZ,QQ 5283bbe3f67SBaptiste DaroussinReplace the range 5293bbe3f67SBaptiste Daroussin.Va XX , Ns Va YY 5303bbe3f67SBaptiste Daroussinfrom 5313bbe3f67SBaptiste Daroussin.Ar file1 5323bbe3f67SBaptiste Daroussinwith the range 5333bbe3f67SBaptiste Daroussin.Va ZZ , Ns Va QQ 5343bbe3f67SBaptiste Daroussinfrom 5353bbe3f67SBaptiste Daroussin.Ar file2 . 5363bbe3f67SBaptiste Daroussin.El 5373bbe3f67SBaptiste Daroussin.Pp 5383bbe3f67SBaptiste DaroussinThese lines resemble 5393bbe3f67SBaptiste Daroussin.Xr ed 1 5403bbe3f67SBaptiste Daroussinsubcommands to convert 5413bbe3f67SBaptiste Daroussin.Ar file1 5423bbe3f67SBaptiste Daroussininto 5433bbe3f67SBaptiste Daroussin.Ar file2 . 5443bbe3f67SBaptiste DaroussinThe line numbers before the action letters pertain to 5453bbe3f67SBaptiste Daroussin.Ar file1 ; 5463bbe3f67SBaptiste Daroussinthose after pertain to 5473bbe3f67SBaptiste Daroussin.Ar file2 . 5483bbe3f67SBaptiste DaroussinThus, by exchanging 5493bbe3f67SBaptiste Daroussin.Ic a 5503bbe3f67SBaptiste Daroussinfor 5513bbe3f67SBaptiste Daroussin.Ic d 5523bbe3f67SBaptiste Daroussinand reading the line in reverse order, one can also 5533bbe3f67SBaptiste Daroussindetermine how to convert 5543bbe3f67SBaptiste Daroussin.Ar file2 5553bbe3f67SBaptiste Daroussininto 5563bbe3f67SBaptiste Daroussin.Ar file1 . 5573bbe3f67SBaptiste DaroussinAs in 5583bbe3f67SBaptiste Daroussin.Xr ed 1 , 5593bbe3f67SBaptiste Daroussinidentical 5603bbe3f67SBaptiste Daroussinpairs (where num1 = num2) are abbreviated as a single 5613bbe3f67SBaptiste Daroussinnumber. 5623bbe3f67SBaptiste Daroussin.Sh FILES 5633bbe3f67SBaptiste Daroussin.Bl -tag -width /tmp/diff.XXXXXXXX -compact 5643bbe3f67SBaptiste Daroussin.It Pa /tmp/diff. Ns Ar XXXXXXXX 5653bbe3f67SBaptiste DaroussinTemporary file used when comparing a device or the standard input. 5663bbe3f67SBaptiste DaroussinNote that the temporary file is unlinked as soon as it is created 5673bbe3f67SBaptiste Daroussinso it will not show up in a directory listing. 5683bbe3f67SBaptiste Daroussin.El 5693bbe3f67SBaptiste Daroussin.Sh EXIT STATUS 5703bbe3f67SBaptiste DaroussinThe 5713bbe3f67SBaptiste Daroussin.Nm 5723bbe3f67SBaptiste Daroussinutility exits with one of the following values: 5733bbe3f67SBaptiste Daroussin.Pp 5743bbe3f67SBaptiste Daroussin.Bl -tag -width Ds -offset indent -compact 5753bbe3f67SBaptiste Daroussin.It 0 5763bbe3f67SBaptiste DaroussinNo differences were found. 5773bbe3f67SBaptiste Daroussin.It 1 5783bbe3f67SBaptiste DaroussinDifferences were found. 5793bbe3f67SBaptiste Daroussin.It >1 5803bbe3f67SBaptiste DaroussinAn error occurred. 5813bbe3f67SBaptiste Daroussin.El 5823bbe3f67SBaptiste Daroussin.Sh SEE ALSO 5833bbe3f67SBaptiste Daroussin.Xr cmp 1 , 5843bbe3f67SBaptiste Daroussin.Xr comm 1 , 5853bbe3f67SBaptiste Daroussin.Xr diff3 1 , 5863bbe3f67SBaptiste Daroussin.Xr ed 1 , 5873bbe3f67SBaptiste Daroussin.Xr patch 1 , 588933870f0SBaptiste Daroussin.Xr pr 1 , 5893bbe3f67SBaptiste Daroussin.Xr sdiff 1 5903bbe3f67SBaptiste Daroussin.Rs 5913bbe3f67SBaptiste Daroussin.%A James W. Hunt 5923bbe3f67SBaptiste Daroussin.%A M. Douglas McIlroy 5933bbe3f67SBaptiste Daroussin.%T "An Algorithm for Differential File Comparison" 5943bbe3f67SBaptiste Daroussin.%J Computing Science Technical Report 5953bbe3f67SBaptiste Daroussin.%Q Bell Laboratories 41 5963bbe3f67SBaptiste Daroussin.%D June 1976 5973bbe3f67SBaptiste Daroussin.Re 5983bbe3f67SBaptiste Daroussin.Sh STANDARDS 5993bbe3f67SBaptiste DaroussinThe 6003bbe3f67SBaptiste Daroussin.Nm 6013bbe3f67SBaptiste Daroussinutility is compliant with the 6023bbe3f67SBaptiste Daroussin.St -p1003.1-2008 6033bbe3f67SBaptiste Daroussinspecification. 6043bbe3f67SBaptiste Daroussin.Pp 6053bbe3f67SBaptiste DaroussinThe flags 6063bbe3f67SBaptiste Daroussin.Op Fl aDdIiLlNnPpqSsTtwXx 6073bbe3f67SBaptiste Daroussinare extensions to that specification. 6083bbe3f67SBaptiste Daroussin.Sh HISTORY 6093bbe3f67SBaptiste DaroussinA 6103bbe3f67SBaptiste Daroussin.Nm 6113bbe3f67SBaptiste Daroussincommand appeared in 6123bbe3f67SBaptiste Daroussin.At v6 . 613