diff options
Diffstat (limited to 'contrib/file/magic.man')
-rw-r--r-- | contrib/file/magic.man | 106 |
1 files changed, 75 insertions, 31 deletions
diff --git a/contrib/file/magic.man b/contrib/file/magic.man index fb334bc..1204568 100644 --- a/contrib/file/magic.man +++ b/contrib/file/magic.man @@ -1,5 +1,5 @@ -.\" $File: magic.man,v 1.59 2008/11/06 23:22:53 christos Exp $ -.Dd August 30, 2008 +.\" $File: magic.man,v 1.71 2011/12/07 11:58:24 rrt Exp $ +.Dd April 20, 2011 .Dt MAGIC __FSECTION__ .Os .\" install as magic.4 on USG, magic.5 on V7, Berkeley and Linux systems. @@ -51,9 +51,9 @@ A 64-bit double precision IEEE floating point number in this machine's native by .It Dv string A string of bytes. The string type specification can be optionally followed -by /[Bbc]*. +by /[WwcCtb]*. The -.Dq B +.Dq W flag compacts whitespace in the target, which must contain at least one whitespace character. If the magic has @@ -62,18 +62,55 @@ consecutive blanks, the target needs at least .Dv n consecutive blanks to match. The -.Dq b -flag treats every blank in the target as an optional blank. -Finally the +.Dq w +flag treats every blank in the magic as an optional blank. +The .Dq c -flag, specifies case insensitive matching: lowercase +flag specifies case insensitive matching: lower case characters in the magic match both lower and upper case characters in the -target, whereas upper case characters in the magic only match uppercase +target, whereas upper case characters in the magic only match upper case characters in the target. +The +.Dq C +flag specifies case insensitive matching: upper case +characters in the magic match both lower and upper case characters in the +target, whereas lower case characters in the magic only match upper case +characters in the target. +To do a complete case insensitive match, specify both +.Dq c +and +.Dq C . +The +.Dq t +flag forces the test to be done for text files, while the +.Dq b +flag forces the test to be done for binary files. .It Dv pstring -A Pascal-style string where the first byte is interpreted as the an +A Pascal-style string where the first byte/short/int is interpreted as the an unsigned length. +The length defaults to byte and can be specified as a modifier. +The following modifiers are supported: +.Bl -tag -compact -width B +.It B +A byte length (default). +.It H +A 2 byte big endian length. +.It h +A 2 byte big little length. +.It L +A 4 byte big endian length. +.It l +A 4 byte big little length. +.It J +The length includes itself in its count. +.El The string is not NUL terminated. +.Dq J +is used rather than the more +valuable +.Dq I +because this type of length is a feature of the JPEG +format. .It Dv date A four-byte value interpreted as a UNIX date. .It Dv qdate @@ -153,11 +190,12 @@ than UTC. Starting at the given offset, consult the magic database again. .It Dv regex A regular expression match in extended POSIX regular expression syntax -(like egrep). Regular expressions can take exponential time to -process, and their performance is hard to predict, so their use is -discouraged. When used in production environments, their performance -should be carefully checked. The type specification can be optionally -followed by +(like egrep). +Regular expressions can take exponential time to process, and their +performance is hard to predict, so their use is discouraged. +When used in production environments, their performance +should be carefully checked. +The type specification can be optionally followed by .Dv /[c][s] . The .Dq c @@ -176,15 +214,17 @@ and match the beginning and end of individual lines, respectively, not beginning and end of file. .It Dv search -A literal string search starting at the given offset. The same -modifier flags can be used as for string patterns. The modifier flags -(if any) must be followed by +A literal string search starting at the given offset. +The same modifier flags can be used as for string patterns. +The modifier flags (if any) must be followed by .Dv /number the range, that is, the number of positions at which the match will be -attempted, starting from the start offset. This is suitable for +attempted, starting from the start offset. +This is suitable for searching larger binary expressions with variable offsets, using .Dv \e -escapes for special characters. The offset works as for regex. +escapes for special characters. +The offset works as for regex. .It Dv default This is intended to be used with the test .Em x @@ -193,14 +233,18 @@ no other matches. .El .Pp Each top-level magic pattern (see below for an explanation of levels) -is classified as text or binary according to the types used. Types +is classified as text or binary according to the types used. +Types .Dq regex and .Dq search are classified as text tests, unless non-printable characters are used -in the pattern. All other tests are classified as binary. A top-level +in the pattern. +All other tests are classified as binary. +A top-level pattern is considered to be a test text when all its patterns are text -patterns; otherwise, it is considered to be a binary pattern. When +patterns; otherwise, it is considered to be a binary pattern. +When matching a file, binary patterns are tried first; if no match is found, and the file looks like text, then its encoding is determined and the text patterns are tried. @@ -283,7 +327,7 @@ then print the string), with The special test .Em x always evaluates to true. -.Dv message +.It Dv message The message to be printed if the comparison succeeds. If the string contains a .Xr printf 3 @@ -297,14 +341,14 @@ space. .El .Pp An APPLE 4+4 character APPLE creator and type can be specified as: -.Bd -literal -offset indent +.Bd -literal -offset indent !:apple CREATYPE .Ed .Pp A MIME type is given on a separate line, which must be the next non-blank or comment line after the magic line that identifies the file type, and has the following format: -.Bd -literal -offset indent +.Bd -literal -offset indent !:mime MIMETYPE .Ed .Pp @@ -314,13 +358,13 @@ followed by the MIME type. .Pp An optional strength can be supplied on a separate line which refers to the current magic description using the following format: -.Bd -literal -offset indent +.Bd -literal -offset indent !:strength OP VALUE .Ed .Pp The operand .Dv OP -can be: +can be: .Dv + , .Dv - , .Dv * , @@ -344,11 +388,11 @@ on the line indicates the level of the test; a line with no .Em \*[Gt] at the beginning is considered to be at level 0. Tests are arranged in a tree-like hierarchy: -If a the test on a line at level +if the test on a line at level .Em n succeeds, all following tests at level .Em n+1 -are performed, and the messages printed if the tests succeed, untile a line +are performed, and the messages printed if the tests succeed, until a line with level .Em n (or less) appears. @@ -365,7 +409,7 @@ being examined. If the first character following the last .Em \*[Gt] is a -.Em ( +.Em \&( then the string after the parenthesis is interpreted as an indirect offset. That means that the number after the parenthesis is used as an offset in the file. |