1.\" $NetBSD: mtree.8,v 1.80 2026/01/10 17:12:04 uwe Exp $ 2.\" 3.\" Copyright (c) 1989, 1990, 1993 4.\" The Regents of the University of California. All rights reserved. 5.\" 6.\" Redistribution and use in source and binary forms, with or without 7.\" modification, are permitted provided that the following conditions 8.\" are met: 9.\" 1. Redistributions of source code must retain the above copyright 10.\" notice, this list of conditions and the following disclaimer. 11.\" 2. Redistributions in binary form must reproduce the above copyright 12.\" notice, this list of conditions and the following disclaimer in the 13.\" documentation and/or other materials provided with the distribution. 14.\" 3. Neither the name of the University nor the names of its contributors 15.\" may be used to endorse or promote products derived from this software 16.\" without specific prior written permission. 17.\" 18.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 19.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 22.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28.\" SUCH DAMAGE. 29.\" 30.\" Copyright (c) 2001-2004 The NetBSD Foundation, Inc. 31.\" All rights reserved. 32.\" 33.\" This code is derived from software contributed to The NetBSD Foundation 34.\" by Luke Mewburn of Wasabi Systems. 35.\" 36.\" Redistribution and use in source and binary forms, with or without 37.\" modification, are permitted provided that the following conditions 38.\" are met: 39.\" 1. Redistributions of source code must retain the above copyright 40.\" notice, this list of conditions and the following disclaimer. 41.\" 2. Redistributions in binary form must reproduce the above copyright 42.\" notice, this list of conditions and the following disclaimer in the 43.\" documentation and/or other materials provided with the distribution. 44.\" 45.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 46.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 47.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 48.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 49.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 50.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 51.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 52.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 53.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 54.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 55.\" POSSIBILITY OF SUCH DAMAGE. 56.\" 57.\" @(#)mtree.8 8.2 (Berkeley) 12/11/93 58.\" 59.Dd January 8, 2026 60.Dt MTREE 8 61.Os 62.Sh NAME 63.Nm mtree 64.Nd map a directory hierarchy 65.Sh SYNOPSIS 66.Nm 67.Op Fl bCcDdejLlMnPqrStUuWx 68.Op Fl i | Fl m 69.Op Fl E Ar tags 70.Op Fl F Ar flavor 71.Op Fl f Ar spec 72.Op Fl I Ar tags 73.Op Fl K Ar keywords 74.Op Fl k Ar keywords 75.Op Fl N Ar dbdir 76.Op Fl O Ar onlyfile 77.Op Fl p Ar path 78.Op Fl R Ar keywords 79.Op Fl s Ar seed 80.Op Fl X Ar exclude-file 81.Sh DESCRIPTION 82The 83.Nm 84utility compares a file hierarchy against a specification, 85creates a specification for a file hierarchy, or modifies 86a specification. 87.Pp 88The default action, if not overridden by command line options, 89is to compare the file hierarchy rooted in the current directory 90against a specification read from the standard input. 91Messages are written to the standard output for any files whose 92characteristics do not match the specification, or which are 93missing from either the file hierarchy or the specification. 94.Pp 95The options are as follows: 96.Bl -tag -width Fl 97. 98.It Fl b 99Suppress blank lines before entering and after exiting directories. 100. 101.It Fl C 102Convert a specification into 103a format that's easier to parse with various tools. 104The input specification is read from standard input or 105from the file given by 106.Fl f Ar spec . 107In the output, each file or directory is represented using a single line 108(which might be very long). 109The full path name 110.Pq beginning with Ql \&./ 111is always printed as the first field; 112.Fl K , 113.Fl k , 114and 115.Fl R 116can be used to control which other keywords are printed; 117.Fl E 118and 119.Fl I 120can be used to control which files are printed; 121and the 122.Fl S 123option can be used to sort the output. 124. 125.It Fl c 126Print a specification for the file hierarchy originating at 127the current working directory 128.Po or the directory provided by 129.Fl p Ar path 130.Pc 131to the standard output. 132The output is in a style using relative path names. 133. 134.It Fl D 135As per 136.Fl C , 137except that the path name is always printed as the last field instead of 138the first. 139. 140.It Fl d 141Ignore everything except directory type files. 142. 143.It Fl E Ar tags 144Add the comma separated tags to the 145.Dq exclusion 146list. 147Non-directories with tags which are in the exclusion list are not printed with 148.Fl C 149and 150.Fl D . 151. 152.It Fl e 153Don't complain about files that are in the file hierarchy, but not in the 154specification. 155. 156.It Fl F Ar flavor 157Set the compatibility flavor of the 158.Nm 159utility. 160The 161.Ar flavor 162can be one of 163.Cm mtree , 164.Cm freebsd9 , 165or 166.Cm netbsd6 . 167The default is 168.Cm mtree . 169The 170.Cm freebsd9 171and 172.Cm netbsd6 173flavors attempt to preserve output compatibility and command line option 174backward compatibility with 175.Fx 9.0 176and 177.Nx 6.0 178respectively. 179. 180.It Fl f Ar spec 181Read the specification from the file 182.Ar spec , 183instead of from the standard input. 184.Pp 185If this option is specified twice, the two specifications are compared 186to each other rather than to the file hierarchy. 187The specifications will be sorted like output generated using 188.Fl c . 189The output format in this case is somewhat reminiscent of 190.Xr comm 1 , 191having 192.Dq in first spec only , 193.Dq in second spec only , 194and 195.Dq different 196columns, prefixed by zero, one and two 197.Tn TAB 198characters respectively. 199Each entry in the 200.Dq different 201column occupies two lines, one from each specification. 202. 203.It Fl I Ar tags 204Add the comma separated tags to the 205.Dq inclusion 206list. 207Non-directories with tags which are in the inclusion list are printed with 208.Fl C 209and 210.Fl D . 211If no inclusion list is provided, the default is to display all files. 212. 213.It Fl i 214If specified, set the 215.Ql schg 216and/or 217.Ql sappnd 218flags. 219. 220.It Fl j 221Indent the output 4 spaces each time a directory level is descended when 222creating a specification with the 223.Fl c 224option. 225This does not affect either the 226.Ql /set 227statements or the comment before each 228directory. 229It does however affect the comment before the close of each directory. 230This is the equivalent of the 231.Fl i 232option in the 233.Fx 234version of 235.Nm . 236. 237.It Fl K Ar keywords 238Add the specified (whitespace or comma separated) keywords to the current 239set of keywords. 240If 241.Ql all 242is specified, add all of the other keywords. 243. 244.It Fl k Ar keywords 245Use the mandatory 246.Sy type 247keyword plus the specified (whitespace or comma separated) 248.Ar keywords 249to replace the current set of keywords. 250If 251.Ql all 252is specified, use all of the available keywords. 253. 254.It Fl L 255Follow all symbolic links in the file hierarchy. 256. 257.It Fl l 258Do 259.Dq loose 260permissions checks, in which more stringent permissions 261will match less stringent ones. 262For example, a file marked mode 0444 263will pass a check for mode 0644. 264.Dq Loose 265checks apply only to read, write and execute permissions \(em in 266particular, if other bits like the sticky bit or suid/sgid bits are 267set either in the specification or the file, exact checking will be 268performed. 269This option may not be set at the same time as the 270.Fl U 271or 272.Fl u 273option. 274. 275.It Fl M 276Permit merging of specification entries with different types, 277with the last entry taking precedence. 278. 279.It Fl m 280If the 281.Ql schg 282and/or 283.Ql sappnd 284flags are specified, reset these flags. 285Note that this is only possible with securelevel less than 1 286.Po 287i.e., in single user mode or while the system is running in insecure mode 288.Pc . 289See 290.Xr init 8 291for information on security levels. 292. 293.It Fl n 294Do not emit pathname comments when creating a specification. 295Normally 296a comment is emitted before each directory and before the close of that 297directory when using the 298.Fl c 299option. 300. 301.It Fl N Ar dbdir 302Use the user database text file 303.Pa master.passwd 304and group database text file 305.Pa group 306from 307.Ar dbdir , 308rather than using the results from the system's 309.Xr getpwnam 3 310and 311.Xr getgrnam 3 312(and related) library calls. 313. 314.It Fl O Ar onlypaths 315Only include files included in this list of pathnames. 316. 317.It Fl P 318Don't follow symbolic links in the file hierarchy, instead consider 319the symbolic link itself in any comparisons. 320This is the default. 321. 322.It Fl p Ar path 323Use the file hierarchy rooted in 324.Ar path , 325instead of the current directory. 326. 327.It Fl q 328Quiet mode. 329Do not complain when a 330.Dq missing 331directory cannot be created because it already exists. 332This occurs when the directory is a symbolic link. 333. 334.It Fl R Ar keywords 335Remove the specified (whitespace or comma separated) keywords from the current 336set of keywords. 337The 338.Sy type 339keyword is mandatory and is always retained. 340If 341.Ql all 342is specified, remove all keywords except 343.Sy type . 344. 345.It Fl r 346Remove any files in the file hierarchy that are not described in the 347specification. 348Repeating the flag more than once will attempt to reset all the 349file flags via 350.Xr lchflags 2 351before attempting to remove the file in case the file was immutable. 352. 353.It Fl S 354When reading a specification into an internal data structure, 355sort the entries. 356Sorting will affect the order of the output produced by the 357.Fl C 358or 359.Fl D 360options, and will also affect the order in which 361missing entries are created or reported when a directory tree is checked 362against a specification. 363.Pp 364The sort order is the same as that used by the 365.Fl c 366option, which is that entries within the same directory are 367sorted in the order used by 368.Xr strcmp 3 , 369except that entries for subdirectories sort after other entries. 370By default, if the 371.Fl S 372option is not used, entries within the same directory are collected 373together (separated from entries for other directories), but not sorted. 374. 375.It Fl s Ar seed 376Display a single checksum to the standard error output that represents all 377of the files for which the keyword 378.Sy cksum 379was specified. 380The checksum is seeded with the specified value. 381. 382.It Fl t 383Modify the modified time of existing files, the device type of devices, and 384symbolic link targets, to match the specification. 385. 386.It Fl U 387Same as 388.Fl u 389except that a mismatch is not considered to be an error if it was corrected. 390. 391.It Fl u 392Modify the owner, group, permissions, and flags of existing files, 393the device type of devices, and symbolic link targets, 394to match the specification. 395Create any missing directories, devices or symbolic links. 396User, group, and permissions must all be specified for missing directories 397to be created. 398Note that unless the 399.Fl i 400option is given, the schg and sappnd flags will not be set, even if 401specified. 402If 403.Fl m 404is given, these flags will be reset. 405Exit with a status of 0 on success, 4062 if the file hierarchy did not match the specification, and 4071 if any other error occurred. 408. 409.It Fl W 410Don't attempt to set various file attributes such as the 411ownership, mode, flags, or time 412when creating new directories or changing existing entries. 413This option will be most useful when used in conjunction with 414.Fl U 415or 416.Fl u . 417. 418.It Fl X Ar exclude-file 419The specified file contains 420.Xr fnmatch 3 421patterns matching files to be excluded from 422the specification, one to a line. 423If the pattern contains a 424.Ql \&/ 425character, it will be matched against entire pathnames (relative to 426the starting directory); otherwise, 427it will be matched against basenames only. 428Comments are permitted in 429the 430.Ar exclude-file 431file. 432. 433.It Fl x 434Don't descend below mount points in the file hierarchy. 435. 436.El 437. 438.Pp 439Specifications are mostly composed of 440.Dq keywords , 441i.e. strings that 442that specify values relating to files. 443No keywords have default values, and if a keyword has no value set, no 444checks based on it are performed. 445.Pp 446Currently supported keywords are as follows: 447. 448.Bl -tag -width Sy 449.It Sy cksum 450The checksum of the file using the default algorithm specified by 451the 452.Xr cksum 1 453utility. 454.It Sy device 455The device number to use for 456.Sy block 457or 458.Sy char 459file types. 460The argument must be one of the following forms: 461.Bl -tag -width 4n 462.It Ar format , Ns Ar major , Ns Ar minor 463A device with 464.Ar major 465and 466.Ar minor 467fields, for an operating system specified with 468.Ar format . 469See below for valid formats. 470.It Ar format , Ns Ar major , Ns Ar unit , Ns Ar subunit 471A device with 472.Ar major , 473.Ar unit , 474and 475.Ar subunit 476fields, for an operating system specified with 477.Ar format . 478(Currently this is only supported by the 479.Sy bsdos 480format.) 481.It Ar number 482Opaque number (as stored on the file system). 483.El 484. 485.Pp 486The following values for 487.Ar format 488are recognized: 489.Sy native , 490.Sy 386bsd , 491.Sy 4bsd , 492.Sy bsdos , 493.Sy freebsd , 494.Sy hpux , 495.Sy isc , 496.Sy linux , 497.Sy netbsd , 498.Sy osf1 , 499.Sy sco , 500.Sy solaris , 501.Sy sunos , 502.Sy svr3 , 503.Sy svr4 , 504and 505.Sy ultrix . 506.Pp 507See 508.Xr mknod 8 509for more details. 510.It Sy flags 511The file flags as a symbolic name. 512See 513.Xr chflags 1 514for information on these names. 515If no flags are to be set the string 516.Ql none 517may be used to override the current default. 518Note that the schg and sappnd flags are treated specially (see the 519.Fl i 520and 521.Fl m 522options). 523.It Sy ignore 524Ignore any file hierarchy below this file. 525.It Sy gid 526The file group as a numeric value. 527.It Sy gname 528The file group as a symbolic name. 529.It Sy link 530The file the symbolic link is expected to reference. 531.It Sy md5 532The 533.Tn MD5 534cryptographic message digest of the file. 535.It Sy md5digest 536Synonym for 537.Sy md5 . 538.It Sy mode 539The current file's permissions as a numeric (octal) or symbolic 540value. 541.It Sy nlink 542The number of hard links the file is expected to have. 543.It Sy nochange 544Make sure this file or directory exists but otherwise ignore all attributes. 545.It Sy optional 546The file is optional; don't complain about the file if it's 547not in the file hierarchy. 548.It Sy ripemd160digest 549Synonym for 550.Sy rmd160 . 551.It Sy rmd160 552The 553.Tn RMD-160 554cryptographic message digest of the file. 555.It Sy rmd160digest 556Synonym for 557.Sy rmd160 . 558.It Sy sha1 559The 560.Tn SHA-1 561cryptographic message digest of the file. 562.It Sy sha1digest 563Synonym for 564.Sy sha1 . 565.It Sy sha256 566The 256-bits 567.Tn SHA-2 568cryptographic message digest of the file. 569.It Sy sha256digest 570Synonym for 571.Sy sha256 . 572.It Sy sha384 573The 384-bits 574.Tn SHA-2 575cryptographic message digest of the file. 576.It Sy sha384digest 577Synonym for 578.Sy sha384 . 579.It Sy sha512 580The 512-bits 581.Tn SHA-2 582cryptographic message digest of the file. 583.It Sy sha512digest 584Synonym for 585.Sy sha512 . 586.It Sy size 587The size, in bytes, of the file. 588.It Sy tags 589Comma delimited tags to be matched with 590.Fl E 591and 592.Fl I . 593These may be specified without leading or trailing commas, but will be 594stored internally with them. 595.It Sy time 596The last modification time of the file, 597in second and nanoseconds. 598The value should include a period character and exactly nine digits after 599the period. 600.It Sy type 601The type of the file; may be set to any one of the following: 602.Pp 603.Bl -tag -width Sy -compact 604.It Sy block 605block special device 606.It Sy char 607character special device 608.It Sy dir 609directory 610.It Sy fifo 611fifo 612.It Sy file 613regular file 614.It Sy link 615symbolic link 616.It Sy socket 617socket 618.El 619.It Sy uid 620The file owner as a numeric value. 621.It Sy uname 622The file owner as a symbolic name. 623.El 624.Pp 625The default set of keywords are 626.Sy flags , 627.Sy gid , 628.Sy link , 629.Sy mode , 630.Sy nlink , 631.Sy size , 632.Sy time , 633.Sy type , 634and 635.Sy uid . 636.Pp 637There are four types of lines in a specification: 638.Bl -enum 639.It 640Set global values for a keyword. 641This consists of the string 642.Ql /set 643followed by whitespace, followed by sets of keyword/value 644pairs, separated by whitespace. 645Keyword/value pairs consist of a keyword, followed by an equals sign 646.Pq Ql = , 647followed by a value, without whitespace characters. 648Once a keyword has been set, its value remains unchanged until either 649reset or unset. 650.It 651Unset global values for a keyword. 652This consists of the string 653.Ql /unset , 654followed by whitespace, followed by one or more keywords, 655separated by whitespace. 656If 657.Ql all 658is specified, unset all of the keywords. 659.It 660A file specification, consisting of a path name, followed by whitespace, 661followed by zero or more whitespace separated keyword/value pairs. 662.Pp 663The path name may be preceded by whitespace characters. 664The path name may contain any of the standard path name matching 665characters 666.Po 667.Ql \&[ , 668.Ql \&] , 669.Ql \&? 670or 671.Ql * 672.Pc , 673in which case files 674in the hierarchy will be associated with the first pattern that 675they match. 676.Nm 677uses 678.Xr strsvis 3 679(in 680.Dv VIS_OCTAL 681format) to encode path names containing 682non-printable characters. 683Whitespace characters are encoded as 684.Ql \e040 685(space), 686.Ql \e011 687(tab), and 688.Ql \e012 689(new line). 690When flavor 691.Sy netbsd6 692is selected, 693.Xr strsvis 3 694(in 695.Dv VIS_CSTYLE 696format) is used and whitespace characters are encoded as 697.Ql \es 698(space), 699.Ql \et 700(tab), and 701.Ql \en 702(new line). 703.Ql # 704characters in path names are escaped by a preceding backslash 705.Ql \e 706to distinguish them from comments. 707.Pp 708Each of the keyword/value pairs consist of a keyword, followed by an 709equals sign 710.Pq Ql = , 711followed by the keyword's value, without 712whitespace characters. 713These values override, without changing, the global value of the 714corresponding keyword. 715.Pp 716The first path name entry listed must be a directory named 717.Ql \&. , 718as this ensures that intermixing full and relative path names will 719work consistently and correctly. 720Multiple entries for a directory named 721.Ql \&. 722are permitted; the settings for the last such entry override those 723of the existing entry. 724.Pp 725A path name that contains a slash 726.Pq Ql / 727that is not the first character will be treated as a full path 728(relative to the root of the tree). 729All parent directories referenced in the path name must exist. 730The current directory path used by relative path names will be updated 731appropriately. 732Multiple entries for the same full path are permitted if the types 733are the same (unless 734.Fl M 735is given, in which case the types may differ); 736in this case the settings for the last entry take precedence. 737.Pp 738A path name that does not contain a slash will be treated as a relative path. 739Specifying a directory will cause subsequent files to be searched 740for in that directory hierarchy. 741.It 742A line containing only the string 743.Ql \&.. 744which causes the current directory path (used by relative paths) 745to ascend one level. 746.El 747.Pp 748Empty lines and lines whose first non-whitespace character is a hash 749mark 750.Pq Ql # 751are ignored. 752.Pp 753The 754.Nm 755utility exits with a status of 0 on success, 1 if any error occurred, 756and 2 if the file hierarchy did not match the specification. 757.Sh FILES 758.Bl -tag -width Pa -compact 759.It Pa /etc/mtree 760system specification directory 761.El 762.Sh EXAMPLES 763To detect system binaries that have been 764.Dq trojan horsed , 765it is recommended that 766.Nm 767be run on the file systems, and a copy of the results stored on a different 768machine, or, at least, in encrypted form. 769The seed for the 770.Fl s 771option should not be an obvious value and the final checksum should not be 772stored on-line under any circumstances! 773Then, periodically, 774.Nm 775should be run against the on-line specifications and the final checksum 776compared with the previous value. 777While it is possible for the bad guys to change the on-line specifications 778to conform to their modified binaries, it shouldn't be possible for them 779to make it produce the same final checksum value. 780If the final checksum value changes, the off-line copies of the specification 781can be used to detect which of the binaries have actually been modified. 782.Pp 783The 784.Fl d 785option can be used in combination with 786.Fl U 787or 788.Fl u 789to create directory hierarchies for, for example, distributions. 790.Sh COMPATIBILITY 791The compatibility shims provided by the 792.Fl F 793option are incomplete by design. 794Known limitations are described below. 795.Pp 796The 797.Sy freebsd9 798flavor retains the default handling of lookup failures for the 799.Sy uname 800and 801.Sy group 802keywords by replacing them with appropriate 803.Sy uid 804and 805.Sy gid 806keywords rather than failing and reporting an error. 807The related 808.Fl w 809flag is a no-op rather than causing a warning to be printed and no 810keyword to be emitted. 811The latter behavior is not emulated as it is potentially dangerous in 812the face of /set statements. 813.Pp 814The 815.Sy netbsd6 816flavor does not replicate the historical bug that reported time as 817seconds.nanoseconds without zero padding nanosecond values less than 818100000000. 819.Sh SEE ALSO 820.Xr chflags 1 , 821.Xr chgrp 1 , 822.Xr chmod 1 , 823.Xr cksum 1 , 824.Xr stat 2 , 825.Xr fnmatch 3 , 826.Xr fts 3 , 827.Xr strsvis 3 , 828.Xr mtree 5 , 829.Xr chown 8 , 830.Xr mknod 8 831.Sh HISTORY 832The 833.Nm 834utility appeared in 835.Bx 4.3 Reno . 836The 837.Sy optional 838keyword appeared in 839.Nx 1.2 . 840The 841.Fl U 842option appeared in 843.Nx 1.3 . 844The 845.Sy flags 846and 847.Sy md5 848keywords, and 849.Fl i 850and 851.Fl m 852options 853appeared in 854.Nx 1.4 . 855The 856.Sy device , 857.Sy rmd160 , 858.Sy sha1 , 859.Sy tags , 860and 861.Sy all 862keywords, 863.Fl D , 864.Fl E , 865.Fl I , 866.Fl L , 867.Fl l , 868.Fl N , 869.Fl P , 870.Fl R , 871.Fl W , 872and 873.Fl X 874options, and support for full paths appeared in 875.Nx 1.6 . 876The 877.Sy sha256 , 878.Sy sha384 , 879and 880.Sy sha512 881keywords appeared in 882.Nx 3.0 . 883The 884.Fl S 885option appeared in 886.Nx 6.0 . 887