1*f3e7f55eSRobert Mustacchi.\" 2*f3e7f55eSRobert Mustacchi.\" This file and its contents are supplied under the terms of the 3*f3e7f55eSRobert Mustacchi.\" Common Development and Distribution License ("CDDL"), version 1.0. 4*f3e7f55eSRobert Mustacchi.\" You may only use this file in accordance with the terms of version 5*f3e7f55eSRobert Mustacchi.\" 1.0 of the CDDL. 6*f3e7f55eSRobert Mustacchi.\" 7*f3e7f55eSRobert Mustacchi.\" A full copy of the text of the CDDL should have accompanied this 8*f3e7f55eSRobert Mustacchi.\" source. A copy of the CDDL is also available via the Internet at 9*f3e7f55eSRobert Mustacchi.\" http://www.illumos.org/license/CDDL. 10*f3e7f55eSRobert Mustacchi.\" 11*f3e7f55eSRobert Mustacchi.\" 12*f3e7f55eSRobert Mustacchi.\" Copyright (c) 2015, Joyent, Inc. 13*f3e7f55eSRobert Mustacchi.\" 14*f3e7f55eSRobert Mustacchi.Dd Oct 4, 2014 15*f3e7f55eSRobert Mustacchi.Dt CTFDIFF 1 16*f3e7f55eSRobert Mustacchi.Os 17*f3e7f55eSRobert Mustacchi.Sh NAME 18*f3e7f55eSRobert Mustacchi.Nm ctfdiff 19*f3e7f55eSRobert Mustacchi.Nd compare two CTF containers 20*f3e7f55eSRobert Mustacchi.Sh SYNOPSIS 21*f3e7f55eSRobert Mustacchi.Nm ctfdiff 22*f3e7f55eSRobert Mustacchi.Op Fl afIloqt 23*f3e7f55eSRobert Mustacchi.Op Fl F Ar function 24*f3e7f55eSRobert Mustacchi.Op Fl O Ar object 25*f3e7f55eSRobert Mustacchi.Op Fl p Ar parent1 26*f3e7f55eSRobert Mustacchi.Op Fl p Ar parent2 27*f3e7f55eSRobert Mustacchi.Op Fl T Ar type 28*f3e7f55eSRobert Mustacchi.Ar file1 file2 29*f3e7f55eSRobert Mustacchi.Sh DESCRIPTION 30*f3e7f55eSRobert MustacchiThe 31*f3e7f55eSRobert Mustacchi.Nm 32*f3e7f55eSRobert Mustacchiutility identifies differences between the contents of the 33*f3e7f55eSRobert Mustacchi.Sy CTF 34*f3e7f55eSRobert Mustacchicontainers found in 35*f3e7f55eSRobert Mustacchi.Em file1 36*f3e7f55eSRobert Mustacchiand 37*f3e7f55eSRobert Mustacchi.Em file2 . 38*f3e7f55eSRobert Mustacchi.Lp 39*f3e7f55eSRobert Mustacchi.Nm 40*f3e7f55eSRobert Mustacchican find differences between two 41*f3e7f55eSRobert Mustacchi.Sy CTF 42*f3e7f55eSRobert Mustacchicontainer's 43*f3e7f55eSRobert Mustacchi.Sy labels , 44*f3e7f55eSRobert Mustacchi.Sy functions , 45*f3e7f55eSRobert Mustacchi.Sy objects , 46*f3e7f55eSRobert Mustacchiand 47*f3e7f55eSRobert Mustacchi.Sy types . 48*f3e7f55eSRobert MustacchiWhen no options are specified, 49*f3e7f55eSRobert Mustacchi.Nm 50*f3e7f55eSRobert Mustacchiwill only consider 51*f3e7f55eSRobert Mustacchi.Sy functions , 52*f3e7f55eSRobert Mustacchi.Sy objects, 53*f3e7f55eSRobert Mustacchiand 54*f3e7f55eSRobert Mustacchi.Sy types . 55*f3e7f55eSRobert Mustacchi.Lp 56*f3e7f55eSRobert MustacchiTwo 57*f3e7f55eSRobert Mustacchi.Sy labels 58*f3e7f55eSRobert Mustacchiare the same if they have the same name. 59*f3e7f55eSRobert MustacchiTwo 60*f3e7f55eSRobert Mustacchi.Sy objects 61*f3e7f55eSRobert Mustacchiare the same if they have the same name and the type of the 62*f3e7f55eSRobert Mustacchiobject is the same. 63*f3e7f55eSRobert MustacchiTwo 64*f3e7f55eSRobert Mustacchi.Sy functions 65*f3e7f55eSRobert Mustacchiare considered the same if they have the same name, the same return 66*f3e7f55eSRobert Mustacchitype, the same number of arguments, and the types of their arguments are 67*f3e7f55eSRobert Mustacchithe same. 68*f3e7f55eSRobert Mustacchi.Lp 69*f3e7f55eSRobert MustacchiTwo 70*f3e7f55eSRobert Mustacchi.Sy types 71*f3e7f55eSRobert Mustacchiare considered the same if they have the same name, they represent the same 72*f3e7f55eSRobert Mustacchikind of thing, and the contents of the type are the same. 73*f3e7f55eSRobert MustacchiThis varies for each specific kind, for example, two structs are the 74*f3e7f55eSRobert Mustacchisame if they have the same members whose types, offsets, and names are 75*f3e7f55eSRobert Mustacchiall the same. 76*f3e7f55eSRobert MustacchiFor more information on the specifics for what we look at 77*f3e7f55eSRobert Mustacchifor each kind of type, and the kinds themselves, see the information we 78*f3e7f55eSRobert Mustacchiuse to encode them in 79*f3e7f55eSRobert Mustacchi.Xr ctf 4 . 80*f3e7f55eSRobert MustacchiIf the option 81*f3e7f55eSRobert Mustacchi.Fl I 82*f3e7f55eSRobert Mustacchiis specified, then the names of basic integer types are ignored. 83*f3e7f55eSRobert MustacchiFor an example of where this makes sense, see 84*f3e7f55eSRobert Mustacchi.Sy Example 4 . 85*f3e7f55eSRobert Mustacchi.Lp 86*f3e7f55eSRobert MustacchiIf the 87*f3e7f55eSRobert Mustacchi.Sy CTF 88*f3e7f55eSRobert Mustacchicontainer found inside of either 89*f3e7f55eSRobert Mustacchi.Em file1 90*f3e7f55eSRobert Mustacchior 91*f3e7f55eSRobert Mustacchi.Em file2 92*f3e7f55eSRobert Mustacchihas been uniquified (see 93*f3e7f55eSRobert Mustacchi.Xr ctf 4 94*f3e7f55eSRobert Mustacchifor more on uniquification), then the parent 95*f3e7f55eSRobert Mustacchi.Sy CTF 96*f3e7f55eSRobert Mustacchicontainer is also required for the diff to complete. 97*f3e7f55eSRobert Mustacchi.Sh OPTIONS 98*f3e7f55eSRobert MustacchiThe following options are supported: 99*f3e7f55eSRobert Mustacchi.Bl -hang -width Ds 100*f3e7f55eSRobert Mustacchi.It Fl a 101*f3e7f55eSRobert Mustacchi.Bd -filled -compact 102*f3e7f55eSRobert MustacchiDiff 103*f3e7f55eSRobert Mustacchi.Sy labels , 104*f3e7f55eSRobert Mustacchi.Sy types , 105*f3e7f55eSRobert Mustacchi.Sy objects , 106*f3e7f55eSRobert Mustacchiand 107*f3e7f55eSRobert Mustacchi.Sy functions . 108*f3e7f55eSRobert Mustacchi.Ed 109*f3e7f55eSRobert Mustacchi.It Fl f 110*f3e7f55eSRobert Mustacchi.Bd -filled -compact 111*f3e7f55eSRobert MustacchiDiff 112*f3e7f55eSRobert Mustacchi.Sy function 113*f3e7f55eSRobert Mustacchitype argument information. 114*f3e7f55eSRobert Mustacchi.Ed 115*f3e7f55eSRobert Mustacchi.It Fl F Ar function 116*f3e7f55eSRobert Mustacchi.Bd -filled -compact 117*f3e7f55eSRobert MustacchiWhen diffing 118*f3e7f55eSRobert Mustacchi.Sy functions , 119*f3e7f55eSRobert Mustacchionly consider the function 120*f3e7f55eSRobert Mustacchi.Em function . 121*f3e7f55eSRobert MustacchiThis option requires that the option 122*f3e7f55eSRobert Mustacchi.Fl f 123*f3e7f55eSRobert Mustacchibe specified and can be repeated multiple times. 124*f3e7f55eSRobert Mustacchi.Ed 125*f3e7f55eSRobert Mustacchi.It Fl I 126*f3e7f55eSRobert Mustacchi.Bd -filled -compact 127*f3e7f55eSRobert MustacchiIgnore the names of integral types. 128*f3e7f55eSRobert MustacchiThis option is useful when comparing types between two 129*f3e7f55eSRobert Mustacchi.Sy CTF 130*f3e7f55eSRobert Mustacchicontainers that have different programming models. 131*f3e7f55eSRobert MustacchiIn this case, when comparing integers, the name of the type is not 132*f3e7f55eSRobert Mustacchiconsidered. 133*f3e7f55eSRobert MustacchiThis means that the ILP32 type long which is a 32-bit wide signed 134*f3e7f55eSRobert Mustacchiinteger is the same as the LP64 type int which is a 32-bit wide signed 135*f3e7f55eSRobert Mustacchiinteger, even though they have different names. 136*f3e7f55eSRobert Mustacchi.Ed 137*f3e7f55eSRobert Mustacchi.It Fl l 138*f3e7f55eSRobert Mustacchi.Bd -filled -compact 139*f3e7f55eSRobert MustacchiDiff the 140*f3e7f55eSRobert Mustacchi.Sy labels 141*f3e7f55eSRobert Mustacchicontained inside the 142*f3e7f55eSRobert Mustacchi.Sy CTF 143*f3e7f55eSRobert Mustacchicontainers. 144*f3e7f55eSRobert Mustacchi.Ed 145*f3e7f55eSRobert Mustacchi.It Fl o 146*f3e7f55eSRobert Mustacchi.Bd -filled -compact 147*f3e7f55eSRobert MustacchiDiff type information for 148*f3e7f55eSRobert Mustacchi.Sy objects . 149*f3e7f55eSRobert Mustacchi.Ed 150*f3e7f55eSRobert Mustacchi.It Fl O Ar object 151*f3e7f55eSRobert Mustacchi.Bd -filled -compact 152*f3e7f55eSRobert MustacchiWhen diffing type information for 153*f3e7f55eSRobert Mustacchi.Sy objects , 154*f3e7f55eSRobert Mustacchionly compare if the object is name 155*f3e7f55eSRobert Mustacchi.Em object . 156*f3e7f55eSRobert MustacchiThis option requires 157*f3e7f55eSRobert Mustacchi.Fl o 158*f3e7f55eSRobert Mustacchito be specified and can be repeated multiple times. 159*f3e7f55eSRobert Mustacchi.Ed 160*f3e7f55eSRobert Mustacchi.It Fl p Ar parent1 161*f3e7f55eSRobert Mustacchi.Bd -filled -compact 162*f3e7f55eSRobert MustacchiSpecifies the path of file that is the parent of the 163*f3e7f55eSRobert Mustacchi.Sy CTF 164*f3e7f55eSRobert Mustacchicontainer inside of 165*f3e7f55eSRobert Mustacchi.Em file1 166*f3e7f55eSRobert Mustacchiis 167*f3e7f55eSRobert Mustacchi.Em parent1 . 168*f3e7f55eSRobert MustacchiThis option is required if 169*f3e7f55eSRobert Mustacchi.Em file1 170*f3e7f55eSRobert Mustacchihas been uniquified. 171*f3e7f55eSRobert MustacchiFor more information on uniquification, see 172*f3e7f55eSRobert Mustacchi.Xr ctf 4 . 173*f3e7f55eSRobert Mustacchi.Ed 174*f3e7f55eSRobert Mustacchi.It Fl P Ar parent2 175*f3e7f55eSRobert Mustacchi.Bd -filled -compact 176*f3e7f55eSRobert MustacchiSpecifies the path of file that is the parent of the 177*f3e7f55eSRobert Mustacchi.Sy CTF 178*f3e7f55eSRobert Mustacchicontainer inside of 179*f3e7f55eSRobert Mustacchi.Em file2 is 180*f3e7f55eSRobert Mustacchi.Em parent2 . 181*f3e7f55eSRobert MustacchiThis option is required if 182*f3e7f55eSRobert Mustacchi.Em file1 183*f3e7f55eSRobert Mustacchihas been uniquified. 184*f3e7f55eSRobert MustacchiFor more information on uniquification, see 185*f3e7f55eSRobert Mustacchi.Xr ctf 4 . 186*f3e7f55eSRobert Mustacchi.Ed 187*f3e7f55eSRobert Mustacchi.It Fl q 188*f3e7f55eSRobert Mustacchi.Bd -filled -compact 189*f3e7f55eSRobert MustacchiEnables quiet mode. 190*f3e7f55eSRobert MustacchiStandard output from the diff will not be emitted. 191*f3e7f55eSRobert MustacchiHowever, diagnostics messages will still be emitted to standard error. 192*f3e7f55eSRobert Mustacchi.Ed 193*f3e7f55eSRobert Mustacchi.It Fl t 194*f3e7f55eSRobert Mustacchi.Bd -filled -compact 195*f3e7f55eSRobert MustacchiDiff the 196*f3e7f55eSRobert Mustacchi.Sy type 197*f3e7f55eSRobert Mustacchiinformation sections in the 198*f3e7f55eSRobert Mustacchi.Sy CTF 199*f3e7f55eSRobert Mustacchicontainers. 200*f3e7f55eSRobert Mustacchi.Ed 201*f3e7f55eSRobert Mustacchi.It Fl T Ar type 202*f3e7f55eSRobert Mustacchi.Bd -filled -compact 203*f3e7f55eSRobert MustacchiWhen diffing the 204*f3e7f55eSRobert Mustacchi.Sy types 205*f3e7f55eSRobert Mustacchisection, only consider it if the type is name 206*f3e7f55eSRobert Mustacchi.Em type . 207*f3e7f55eSRobert MustacchiTypes specified here do not impact the diffing of 208*f3e7f55eSRobert Mustacchi.Sy objects 209*f3e7f55eSRobert Mustacchior 210*f3e7f55eSRobert Mustacchi.Sy functions . 211*f3e7f55eSRobert MustacchiEven with 212*f3e7f55eSRobert Mustacchi.Fl T 213*f3e7f55eSRobert Mustacchispecified, other types will be diffed as necessary for the evaluation of 214*f3e7f55eSRobert Mustacchithe named types; however, the results of those intermediate differences 215*f3e7f55eSRobert Mustacchiwill not impact the results of 216*f3e7f55eSRobert Mustacchi.Nm , 217*f3e7f55eSRobert Mustacchionly named types are considered when evaluating the exit status of 218*f3e7f55eSRobert Mustacchi.Nm . 219*f3e7f55eSRobert Mustacchi.Ed 220*f3e7f55eSRobert Mustacchi.El 221*f3e7f55eSRobert Mustacchi.Sh EXIT STATUS 222*f3e7f55eSRobert Mustacchi.Bl -inset 223*f3e7f55eSRobert Mustacchi.It Sy 0 224*f3e7f55eSRobert Mustacchi.Bd -filled -offset indent -compact 225*f3e7f55eSRobert MustacchiExecution completed successfully, no differences were detected 226*f3e7f55eSRobert Mustacchibetween 227*f3e7f55eSRobert Mustacchi.Em file1 228*f3e7f55eSRobert Mustacchiand 229*f3e7f55eSRobert Mustacchi.Em file2 . 230*f3e7f55eSRobert Mustacchi.Ed 231*f3e7f55eSRobert Mustacchi.It Sy 1 232*f3e7f55eSRobert Mustacchi.Bd -filled -offset indent -compact 233*f3e7f55eSRobert MustacchiExecution completed successfully, but differences were detected 234*f3e7f55eSRobert Mustacchibetween 235*f3e7f55eSRobert Mustacchi.Em file1 236*f3e7f55eSRobert Mustacchiand 237*f3e7f55eSRobert Mustacchi.Em file2 . 238*f3e7f55eSRobert Mustacchi.Ed 239*f3e7f55eSRobert Mustacchi.It Sy 2 240*f3e7f55eSRobert Mustacchi.D1 Invalid command line options were specified. 241*f3e7f55eSRobert Mustacchi.It Sy 3 242*f3e7f55eSRobert Mustacchi.D1 A fatal error occurred. 243*f3e7f55eSRobert Mustacchi.El 244*f3e7f55eSRobert Mustacchi.Sh EXAMPLES 245*f3e7f55eSRobert Mustacchi.Sy Example 1 246*f3e7f55eSRobert MustacchiDiffing Two 247*f3e7f55eSRobert Mustacchi.Sy CTF 248*f3e7f55eSRobert MustacchiContainers 249*f3e7f55eSRobert Mustacchi.Lp 250*f3e7f55eSRobert MustacchiThe following example compares two 251*f3e7f55eSRobert Mustacchi.Sy CTF 252*f3e7f55eSRobert Mustacchicontainers using the default set 253*f3e7f55eSRobert Mustacchiof comparisons: 254*f3e7f55eSRobert Mustacchi.Sy objects , 255*f3e7f55eSRobert Mustacchi.Sy functions , 256*f3e7f55eSRobert Mustacchiand 257*f3e7f55eSRobert Mustacchi.Sy types . 258*f3e7f55eSRobert Mustacchi.Bd -literal -offset 6n 259*f3e7f55eSRobert Mustacchi$ ctfdiff /usr/lib/libc.so.1 /usr/lib/libdtrace.so.1 260*f3e7f55eSRobert Mustacchictf container /usr/lib/libc.so.1 type 37 is different 261*f3e7f55eSRobert Mustacchictf container /usr/lib/libc.so.1 type 38 is different 262*f3e7f55eSRobert Mustacchictf container /usr/lib/libc.so.1 type 39 is different 263*f3e7f55eSRobert Mustacchictf container /usr/lib/libc.so.1 type 40 is different 264*f3e7f55eSRobert Mustacchictf container /usr/lib/libc.so.1 type 41 is different 265*f3e7f55eSRobert Mustacchictf container /usr/lib/libc.so.1 type 42 is different 266*f3e7f55eSRobert Mustacchictf container /usr/lib/libc.so.1 type 43 is different 267*f3e7f55eSRobert Mustacchictf container /usr/lib/libc.so.1 type 47 is different 268*f3e7f55eSRobert Mustacchictf container /usr/lib/libc.so.1 type 48 is different 269*f3e7f55eSRobert Mustacchictf container /usr/lib/libc.so.1 type 49 is different 270*f3e7f55eSRobert Mustacchi\&... 271*f3e7f55eSRobert Mustacchi.Ed 272*f3e7f55eSRobert Mustacchi.Sy Example 2 273*f3e7f55eSRobert MustacchiDiffing Types Between Two 274*f3e7f55eSRobert Mustacchi.Sy CTF 275*f3e7f55eSRobert MustacchiContainers with Parents 276*f3e7f55eSRobert Mustacchi.Lp 277*f3e7f55eSRobert MustacchiThe following example compares two 278*f3e7f55eSRobert Mustacchi.Sy CTF 279*f3e7f55eSRobert Mustacchicontainers 280*f3e7f55eSRobert Mustacchi.Sy /ws/rm/zlan/proto/kernel/drv/amd64/vnd 281*f3e7f55eSRobert Mustacchiand 282*f3e7f55eSRobert Mustacchi.Sy /ws/rm/zlan/proto/kernel/drv/amd64/overlay 283*f3e7f55eSRobert Mustacchithat have been uniquified against the same container 284*f3e7f55eSRobert Mustacchi.Sy /ws/rm/zlan/proto/kernel/amd64/genunix . 285*f3e7f55eSRobert Mustacchi.Bd -literal -offset 6n 286*f3e7f55eSRobert Mustacchi$ ctfdiff -t -p /ws/rm/zlan/proto/kernel/amd64/genunix \\ 287*f3e7f55eSRobert Mustacchi -P /ws/rm/zlan/proto/kernel/amd64/genunix \\ 288*f3e7f55eSRobert Mustacchi /ws/rm/zlan/proto/kernel/drv/amd64/vnd \\ 289*f3e7f55eSRobert Mustacchi /ws/rm/zlan/proto/kernel/drv/amd64/overlay 290*f3e7f55eSRobert Mustacchictf container /ws/rm/zlan/proto/kernel/drv/amd64/vnd type 32769 is different 291*f3e7f55eSRobert Mustacchictf container /ws/rm/zlan/proto/kernel/drv/amd64/vnd type 32770 is different 292*f3e7f55eSRobert Mustacchictf container /ws/rm/zlan/proto/kernel/drv/amd64/vnd type 32771 is different 293*f3e7f55eSRobert Mustacchictf container /ws/rm/zlan/proto/kernel/drv/amd64/vnd type 32772 is different 294*f3e7f55eSRobert Mustacchictf container /ws/rm/zlan/proto/kernel/drv/amd64/vnd type 32774 is different 295*f3e7f55eSRobert Mustacchictf container /ws/rm/zlan/proto/kernel/drv/amd64/vnd type 32775 is different 296*f3e7f55eSRobert Mustacchictf container /ws/rm/zlan/proto/kernel/drv/amd64/vnd type 32776 is different 297*f3e7f55eSRobert Mustacchictf container /ws/rm/zlan/proto/kernel/drv/amd64/vnd type 32777 is different 298*f3e7f55eSRobert Mustacchictf container /ws/rm/zlan/proto/kernel/drv/amd64/vnd type 32778 is different 299*f3e7f55eSRobert Mustacchictf container /ws/rm/zlan/proto/kernel/drv/amd64/vnd type 32779 is different 300*f3e7f55eSRobert Mustacchi\&... 301*f3e7f55eSRobert Mustacchi.Ed 302*f3e7f55eSRobert Mustacchi.Lp 303*f3e7f55eSRobert Mustacchi.Sy Example 3 304*f3e7f55eSRobert MustacchiDiffing a Specific Function in Two 305*f3e7f55eSRobert Mustacchi.Sy CTF 306*f3e7f55eSRobert MustacchiContainers 307*f3e7f55eSRobert Mustacchi.Lp 308*f3e7f55eSRobert MustacchiThis example shows us looking for differences in the function 309*f3e7f55eSRobert Mustacchi.Sy libzfs_core_init 310*f3e7f55eSRobert Mustacchiin two different version of the library 311*f3e7f55eSRobert Mustacchi.Sy libzfs_core.so.1 . 312*f3e7f55eSRobert Mustacchi.Bd -literal -offset 6n 313*f3e7f55eSRobert Mustacchi$ ctfdiff -f -F libzfs_core_init /usr/lib/libzfs_core.so.1 \\ 314*f3e7f55eSRobert Mustacchi /ws/rm/ctf/proto/usr/lib/libzfs_core.so.1 315*f3e7f55eSRobert Mustacchi$ echo $? 316*f3e7f55eSRobert Mustacchi.Ed 317*f3e7f55eSRobert Mustacchi.Lp 318*f3e7f55eSRobert Mustacchi.Sy Example 4 319*f3e7f55eSRobert MustacchiDiffing Types to Find Differences Between Different Data Models. 320*f3e7f55eSRobert Mustacchi.Lp 321*f3e7f55eSRobert MustacchiThis example looks for differences between structures used in an ioctl 322*f3e7f55eSRobert Mustacchithat the kernel wants to be bitness neutral by comparing a 32-bit and 323*f3e7f55eSRobert Mustacchi64-bit library that consumes it. 324*f3e7f55eSRobert MustacchiIn this example, we'll use the library 325*f3e7f55eSRobert Mustacchi.Sy libvnd.so.1 326*f3e7f55eSRobert Mustacchiand the types 327*f3e7f55eSRobert Mustacchi.Sy vnd_ioc_attach_t , 328*f3e7f55eSRobert Mustacchi.Sy vnd_ioc_link_t , 329*f3e7f55eSRobert Mustacchi.Sy vnd_ioc_unlink_t , 330*f3e7f55eSRobert Mustacchi.Sy vnd_ioc_buf_t , 331*f3e7f55eSRobert Mustacchiand 332*f3e7f55eSRobert Mustacchi.Sy vnd_ioc_info_t . 333*f3e7f55eSRobert Mustacchi.Bd -literal -offset 6n 334*f3e7f55eSRobert Mustacchi$ ctfdiff -t -I -T vnd_ioc_attach_t -T vnd_ioc_link_t \\ 335*f3e7f55eSRobert Mustacchi -T vnd_ioc_unlink_t -T vnd_ioc_buf_t -T vnd_ioc_info_t \\ 336*f3e7f55eSRobert Mustacchi i386/libvnd.so.1 amd64/libvnd.so.1 337*f3e7f55eSRobert Mustacchi$ echo $? 338*f3e7f55eSRobert Mustacchi0 339*f3e7f55eSRobert Mustacchi.Ed 340*f3e7f55eSRobert Mustacchi.Sh INTERFACE STABILITY 341*f3e7f55eSRobert MustacchiThe command syntax is 342*f3e7f55eSRobert Mustacchi.Sy Committed . 343*f3e7f55eSRobert MustacchiThe output format is 344*f3e7f55eSRobert Mustacchi.Sy Uncommitted . 345*f3e7f55eSRobert Mustacchi.Sh SEE ALSO 346*f3e7f55eSRobert Mustacchi.Xr ctfdump 1 , 347*f3e7f55eSRobert Mustacchi.Xr diff 1 , 348*f3e7f55eSRobert Mustacchi.Xr ctf 4 349