Use the vendor's manpages (which are in old -man format) rather than
our modified one based on a much older version of the vendor's manpage.
This commit is contained in:
parent
20d65f25eb
commit
5576244cd6
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=69228
@ -24,13 +24,13 @@
|
||||
#
|
||||
# Hacked and dismembered for bmake (Geoff Rehmet).
|
||||
|
||||
MAGICDIR= /usr/share/misc/magic
|
||||
MAGICFILE= /usr/share/misc/magic
|
||||
MAGICMODE= 444
|
||||
|
||||
SRCDIR= ${.CURDIR}/../../contrib/file
|
||||
.PATH: ${SRCDIR}
|
||||
|
||||
CFLAGS+= -DMAGIC='"$(MAGICDIR)"' -DBUILTIN_ELF -DELFCORE -DHAVE_CONFIG_H
|
||||
CFLAGS+= -DMAGIC='"$(MAGICFILE)"' -DBUILTIN_ELF -DELFCORE -DHAVE_CONFIG_H
|
||||
CFLAGS+= -I${.CURDIR}
|
||||
|
||||
PROG= file
|
||||
@ -41,7 +41,7 @@ SRCS= file.c apprentice.c fsmagic.c softmagic.c ascmagic.c \
|
||||
MAN1= file.1
|
||||
MAN5= magic.5
|
||||
|
||||
CLEANFILES+= magic
|
||||
CLEANFILES+= magic file.1 magic.5 version
|
||||
|
||||
MAGFILES= ${SRCDIR}/Header\
|
||||
${SRCDIR}/Localstuff\
|
||||
@ -52,8 +52,20 @@ all: file magic
|
||||
magic: $(MAGFILES)
|
||||
cat $(MAGFILES) > $(.TARGET)
|
||||
|
||||
version: Makefile.std
|
||||
@sed '/.*VERSION.*=[ ]*/s///w ${.TARGET}' ${.ALLSRC} > /dev/null
|
||||
|
||||
.for MP in file.1 magic.5
|
||||
${MP}: ${SRCDIR}/${MP:C/[0-9]$/man/} version
|
||||
sed -e 's|__CSECTION__|1|g'\
|
||||
-e 's|__FSECTION__|5|g'\
|
||||
-e 's|__MAGIC__|${MAGICFILE}|g'\
|
||||
-e "s|__VERSION__|`cat version`|g"\
|
||||
${SRCDIR}/${MP:C/[0-9]$/man/} > ${.TARGET}
|
||||
.endfor
|
||||
|
||||
beforeinstall:
|
||||
$(INSTALL) $(COPY) -o $(BINOWN) -g $(BINGRP) -m $(MAGICMODE) \
|
||||
magic $(DESTDIR)$(MAGICDIR)
|
||||
magic $(DESTDIR)$(MAGICFILE)
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
@ -1,405 +0,0 @@
|
||||
.\" $FreeBSD$
|
||||
.Dd July 30, 1997
|
||||
.Dt FILE 1 "Copyright but distributable"
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm file
|
||||
.Nd determine file type
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Op Fl vczL
|
||||
.Op Fl f Ar namefile
|
||||
.Op Fl m Ar magicfiles
|
||||
.Ar
|
||||
.Sh DESCRIPTION
|
||||
This manual page documents version 3.22 of the
|
||||
.Nm
|
||||
command.
|
||||
.Nm File
|
||||
tests each argument in an attempt to classify it.
|
||||
There are three sets of tests, performed in this order:
|
||||
filesystem tests, magic number tests, and language tests.
|
||||
The
|
||||
.Em first
|
||||
test that succeeds causes the file type to be printed.
|
||||
.Pp
|
||||
The type printed will usually contain one of the words
|
||||
.Em text
|
||||
(the file contains only
|
||||
.Tn ASCII
|
||||
characters and is probably safe to read on an
|
||||
.Tn ASCII
|
||||
terminal),
|
||||
.Em executable
|
||||
(the file contains the result of compiling a program
|
||||
in a form understandable to some
|
||||
.Ux
|
||||
kernel or another),
|
||||
or
|
||||
.Em data
|
||||
meaning anything else (data is usually `binary' or non-printable).
|
||||
Exceptions are well-known file formats (core files, tar archives)
|
||||
that are known to contain binary data.
|
||||
When modifying the file
|
||||
.Pa /usr/share/misc/magic
|
||||
or the program itself,
|
||||
.Em "preserve these keywords" .
|
||||
.Pp
|
||||
People depend on knowing that all the readable files in a directory
|
||||
have the word ``text'' printed.
|
||||
Don't do as Berkeley did \- change ``shell commands text''
|
||||
to ``shell script''.
|
||||
.Pp
|
||||
The filesystem tests are based on examining the return from a
|
||||
.Xr stat 2
|
||||
system call.
|
||||
The program checks to see if the file is empty,
|
||||
or if it's some sort of special file.
|
||||
Any known file types appropriate to the system you are running on
|
||||
(sockets, symbolic links, or named pipes (FIFOs) on those systems that
|
||||
implement them)
|
||||
are intuited if they are defined in
|
||||
the system header file
|
||||
.Pa sys/stat.h .
|
||||
.Pp
|
||||
The magic number tests are used to check for files with data in
|
||||
particular fixed formats.
|
||||
The canonical example of this is a binary executable (compiled program)
|
||||
.Pa a.out
|
||||
file, whose format is defined in
|
||||
.Pa a.out.h
|
||||
and possibly
|
||||
.Pa exec.h
|
||||
in the standard include directory.
|
||||
These files have a `magic number' stored in a particular place
|
||||
near the beginning of the file that tells the
|
||||
.Ux
|
||||
operating system
|
||||
that the file is a binary executable, and which of several types thereof.
|
||||
The concept of `magic number' has been applied by extension to data files.
|
||||
Any file with some invariant identifier at a small fixed
|
||||
offset into the file can usually be described in this way.
|
||||
The information in these files is read from the magic file
|
||||
.Pa /usr/share/misc/magic .
|
||||
.Pp
|
||||
If an argument appears to be an
|
||||
.Tn ASCII
|
||||
file,
|
||||
.Nm
|
||||
attempts to guess its language.
|
||||
The language tests look for particular strings (cf
|
||||
.Pa names.h )
|
||||
that can appear anywhere in the first few blocks of a file.
|
||||
For example, the keyword
|
||||
.Em .br
|
||||
indicates that the file is most likely a
|
||||
.Xr troff 1
|
||||
input file, just as the keyword
|
||||
.Em struct
|
||||
indicates a C program.
|
||||
These tests are less reliable than the previous
|
||||
two groups, so they are performed last.
|
||||
The language test routines also test for some miscellany
|
||||
(such as
|
||||
.Xr tar 1
|
||||
archives) and determine whether an unknown file should be
|
||||
labelled as `ASCII text' or `data'.
|
||||
.Sh OPTIONS
|
||||
.Bl -tag -width indent
|
||||
.It Fl v
|
||||
Print the version of the program and exit.
|
||||
.It Fl m Ar list
|
||||
Specify an alternate
|
||||
.Ar list
|
||||
of files containing magic numbers.
|
||||
This can be a single file, or a colon-separated list of files.
|
||||
.It Fl z
|
||||
Try to look inside compressed files.
|
||||
.It Fl c
|
||||
Cause a checking printout of the parsed form of the magic file.
|
||||
This is usually used in conjunction with
|
||||
.Fl m
|
||||
to debug a new magic file before installing it.
|
||||
.It Fl f Ar namefile
|
||||
Read the names of the files to be examined from
|
||||
.Ar namefile
|
||||
(one per line)
|
||||
before the argument list.
|
||||
Either
|
||||
.Ar namefile
|
||||
or at least one filename argument must be present;
|
||||
to test the standard input, use ``-'' as a filename argument.
|
||||
.It Fl L
|
||||
Cause symlinks to be followed, as the like-named option in
|
||||
.Xr ls 1 .
|
||||
(on systems that support symbolic links).
|
||||
.El
|
||||
.Sh FILES
|
||||
.Bl -tag -width /usr/share/misc/magic -compact
|
||||
.It Pa /usr/share/misc/magic
|
||||
default list of magic numbers (used to be
|
||||
.Pa /etc/magic
|
||||
prior to
|
||||
.Fx 3.0 )
|
||||
.El
|
||||
.Sh ENVIRONMENT
|
||||
The environment variable
|
||||
.Em MAGIC
|
||||
can be used to set the default magic number files.
|
||||
.Sh SEE ALSO
|
||||
.Xr od 1 ,
|
||||
.Xr strings 1 ,
|
||||
.Xr magic 5
|
||||
.Sh STANDARDS CONFORMANCE
|
||||
This program is believed to exceed the System V Interface Definition
|
||||
of FILE(CMD), as near as one can determine from the vague language
|
||||
contained therein.
|
||||
Its behaviour is mostly compatible with the System V program of the same name.
|
||||
This version knows more magic, however, so it will produce
|
||||
different (albeit more accurate) output in many cases.
|
||||
.Pp
|
||||
The one significant difference
|
||||
between this version and System V
|
||||
is that this version treats any white space
|
||||
as a delimiter, so that spaces in pattern strings must be escaped.
|
||||
For example,
|
||||
.Bd -literal -compact
|
||||
>10 string language impress (imPRESS data)
|
||||
.Ed
|
||||
in an existing magic file would have to be changed to
|
||||
.Bd -literal -compact
|
||||
>10 string language\e impress (imPRESS data)
|
||||
.Ed
|
||||
.Pp
|
||||
In addition, in this version, if a pattern string contains a backslash,
|
||||
it must be escaped. For example
|
||||
.Bd -literal -compact
|
||||
0 string \ebegindata Andrew Toolkit document
|
||||
.Ed
|
||||
in an existing magic file would have to be changed to
|
||||
.Bd -literal -compact
|
||||
0 string \e\ebegindata Andrew Toolkit document
|
||||
.Ed
|
||||
.Pp
|
||||
SunOS releases 3.2 and later from Sun Microsystems include a
|
||||
.Xr file 1
|
||||
command derived from the System V one, but with some extensions.
|
||||
My version differs from Sun's only in minor ways.
|
||||
It includes the extension of the `&' operator, used as,
|
||||
for example,
|
||||
.Bd -literal -compact
|
||||
>16 long&0x7fffffff >0 not stripped
|
||||
.Ed
|
||||
.Sh MAGIC DIRECTORY
|
||||
The magic file entries have been collected from various sources,
|
||||
mainly USENET, and contributed by various authors.
|
||||
.An Christos Zoulas
|
||||
(address below) will collect additional
|
||||
or corrected magic file entries.
|
||||
A consolidation of magic file entries
|
||||
will be distributed periodically.
|
||||
.Pp
|
||||
The order of entries in the magic file is significant.
|
||||
Depending on what system you are using, the order that
|
||||
they are put together may be incorrect.
|
||||
If your old
|
||||
.Nm
|
||||
command uses a magic file,
|
||||
keep the old magic file around for comparison purposes
|
||||
(rename it to
|
||||
.Pa /usr/share/misc/magic.orig Ns ).
|
||||
.Sh HISTORY
|
||||
There has been a
|
||||
.Nm
|
||||
command in every
|
||||
.Ux
|
||||
since at least Research Version 6
|
||||
(man page dated January, 1975).
|
||||
The System V version introduced one significant major change:
|
||||
the external list of magic number types.
|
||||
This slowed the program down slightly but made it a lot more flexible.
|
||||
.Pp
|
||||
This program, based on the System V version,
|
||||
was written by
|
||||
.An Ian Darwin
|
||||
without looking at anybody else's source code.
|
||||
.Pp
|
||||
.An John Gilmore
|
||||
revised the code extensively, making it better than
|
||||
the first version.
|
||||
.An Geoff Collyer
|
||||
found several inadequacies
|
||||
and provided some magic file entries.
|
||||
The program has undergone continued evolution since.
|
||||
.Sh AUTHORS
|
||||
.An -nosplit
|
||||
Written by
|
||||
.An Ian F. Darwin Aq ian@sq.com ,
|
||||
UUCP address {utzoo | ihnp4}!darwin!ian,
|
||||
postal address: P.O. Box 603, Station F, Toronto, Ontario, CANADA M4Y 2L8.
|
||||
.Pp
|
||||
Altered by
|
||||
.An Rob McMahon Aq cudcv@warwick.ac.uk ,
|
||||
1989, to extend the `&' operator
|
||||
from simple `x&y != 0' to `x&y op z'.
|
||||
.Pp
|
||||
Altered by
|
||||
.An Guy Harris Aq guy@auspex.com ,
|
||||
1993, to:
|
||||
.Bl -item -offset indent
|
||||
.It
|
||||
put the ``old-style'' `&'
|
||||
operator back the way it was, because
|
||||
.Bl -enum -offset indent
|
||||
.It
|
||||
Rob McMahon's change broke the
|
||||
previous style of usage,
|
||||
.It
|
||||
The SunOS ``new-style'' `&' operator, which this version of
|
||||
.Nm
|
||||
supports, also handles `x&y op z',
|
||||
.It
|
||||
Rob's change wasn't documented in any case;
|
||||
.El
|
||||
.It
|
||||
put in multiple levels of `>';
|
||||
.It
|
||||
put in ``beshort'', ``leshort'', etc. keywords to look at numbers in the
|
||||
file in a specific byte order, rather than in the native byte order of
|
||||
the process running
|
||||
.Nm .
|
||||
.El
|
||||
.Pp
|
||||
Changes by
|
||||
.An Ian Darwin
|
||||
and various authors including
|
||||
.An Christos Zoulas Aq christos@deshaw.com ,
|
||||
1990-1992.
|
||||
.Sh LEGAL NOTICE
|
||||
Copyright (c) Ian F. Darwin, Toronto, Canada,
|
||||
1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993.
|
||||
.Pp
|
||||
This software is not subject to and may not be made subject to any
|
||||
license of the American Telephone and Telegraph Company, Sun
|
||||
Microsystems Inc., Digital Equipment Inc., Lotus Development Inc., the
|
||||
Regents of the University of California, The X Consortium or MIT, or
|
||||
The Free Software Foundation.
|
||||
.Pp
|
||||
This software is not subject to any export provision of the United States
|
||||
Department of Commerce, and may be exported to any country or planet.
|
||||
.Pp
|
||||
Permission is granted to anyone to use this software for any purpose on
|
||||
any computer system, and to alter it and redistribute it freely, subject
|
||||
to the following restrictions:
|
||||
.Pp
|
||||
.Bl -enum -offset indent
|
||||
.It
|
||||
The author is not responsible for the consequences of use of this
|
||||
software, no matter how awful, even if they arise from flaws in it;
|
||||
.It
|
||||
The origin of this software must not be misrepresented, either by
|
||||
explicit claim or by omission. Since few users ever read sources,
|
||||
credits must appear in the documentation;
|
||||
.It
|
||||
Altered versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software. Since few users
|
||||
ever read sources, credits must appear in the documentation;
|
||||
.It
|
||||
This notice may not be removed or altered.
|
||||
.El
|
||||
.Pp
|
||||
A few support files (
|
||||
.Fn getopt ,
|
||||
.Fn strtok )
|
||||
distributed with this package
|
||||
are by
|
||||
.An Henry Spencer
|
||||
and are subject to the same terms as above.
|
||||
.Pp
|
||||
A few simple support files (
|
||||
.Fn strtol ,
|
||||
.Fn strchr )
|
||||
distributed with this package
|
||||
are in the public domain; they are so marked.
|
||||
.Pp
|
||||
The files
|
||||
.Pa tar.h
|
||||
and
|
||||
.Pa is_tar.c
|
||||
were written by
|
||||
.An John Gilmore
|
||||
from his public-domain
|
||||
.Nm tar
|
||||
program, and are not covered by the above restrictions.
|
||||
.Sh BUGS
|
||||
There must be a better way to automate the construction of the Magic
|
||||
file from all the glop in Magdir.
|
||||
What is it?
|
||||
Better yet, the magic file should be compiled into binary (say,
|
||||
.Xr ndbm 3
|
||||
or, better yet, fixed-length
|
||||
.Tn ASCII
|
||||
strings for use in heterogenous network environments) for faster startup.
|
||||
Then the program would run as fast as the Version 7 program of the same name,
|
||||
with the flexibility of the System V version.
|
||||
.Pp
|
||||
.Nm File
|
||||
uses several algorithms that favor speed over accuracy,
|
||||
thus it can be misled about the contents of
|
||||
.Tn ASCII
|
||||
files.
|
||||
.Pp
|
||||
The support for
|
||||
.Tn ASCII
|
||||
files (primarily for programming languages)
|
||||
is simplistic, inefficient and requires recompilation to update.
|
||||
.Pp
|
||||
There should be an ``else'' clause to follow a series of continuation lines.
|
||||
.Pp
|
||||
The magic file and keywords should have regular expression support.
|
||||
Their use of
|
||||
.Tn ASCII TAB
|
||||
as a field delimiter is ugly and makes
|
||||
it hard to edit the files, but is entrenched.
|
||||
.Pp
|
||||
It might be advisable to allow upper-case letters in keywords
|
||||
for e.g.,
|
||||
.Xr troff 1
|
||||
commands vs man page macros.
|
||||
Regular expression support would make this easy.
|
||||
.Pp
|
||||
The program doesn't grok \s-2FORTRAN\s0.
|
||||
It should be able to figure \s-2FORTRAN\s0 by seeing some keywords which
|
||||
appear indented at the start of line.
|
||||
Regular expression support would make this easy.
|
||||
.Pp
|
||||
The list of keywords in
|
||||
.Em ascmagic
|
||||
probably belongs in the Magic file.
|
||||
This could be done by using some keyword like `*' for the offset value.
|
||||
.Pp
|
||||
Another optimization would be to sort
|
||||
the magic file so that we can just run down all the
|
||||
tests for the first byte, first word, first long, etc, once we
|
||||
have fetched it. Complain about conflicts in the magic file entries.
|
||||
Make a rule that the magic entries sort based on file offset rather
|
||||
than position within the magic file?
|
||||
.Pp
|
||||
The program should provide a way to give an estimate
|
||||
of ``how good'' a guess is.
|
||||
We end up removing guesses (e.g. ``From '' as first 5 chars of file) because
|
||||
they are not as good as other guesses (e.g. ``Newsgroups:'' versus
|
||||
"Return-Path:"). Still, if the others don't pan out, it should be
|
||||
possible to use the first guess.
|
||||
.Pp
|
||||
This program is slower than some vendors'
|
||||
.Nm
|
||||
commands.
|
||||
.Pp
|
||||
This manual page, and particularly this section, is too long.
|
||||
.Sh AVAILABILITY
|
||||
You can obtain the original author's latest version by anonymous FTP
|
||||
on
|
||||
.Em ftp.deshaw.com
|
||||
in the directory
|
||||
.Pa /pub/file/file-X.YY.tar.gz
|
@ -1,222 +0,0 @@
|
||||
.\"
|
||||
.\" @(#)$FreeBSD$
|
||||
.\"
|
||||
.\" install as magic.4 on USG, magic.5 on V7 or Berkeley systems.
|
||||
.\"
|
||||
.Dd September 3, 1994
|
||||
.Dt MAGIC 5
|
||||
.Os "Public Domain"
|
||||
.Sh NAME
|
||||
.Nm magic
|
||||
.Nd file command's magic number file
|
||||
.Sh DESCRIPTION
|
||||
This manual page documents the format of the magic file as
|
||||
used by the
|
||||
.Xr file 1
|
||||
command, version 3.22. The
|
||||
.Nm file
|
||||
command identifies the type of a file using,
|
||||
among other tests,
|
||||
a test for whether the file begins with a certain
|
||||
.Em "magic number" .
|
||||
The file
|
||||
.Pa /usr/share/misc/magic
|
||||
specifies what magic numbers are to be tested for,
|
||||
what message to print if a particular magic number is found,
|
||||
and additional information to extract from the file.
|
||||
.Pp
|
||||
Each line of the file specifies a test to be performed.
|
||||
A test compares the data starting at a particular offset
|
||||
in the file with a 1-byte, 2-byte, or 4-byte numeric value or
|
||||
a string. If the test succeeds, a message is printed.
|
||||
The line consists of the following fields:
|
||||
.Bl -tag -width indent
|
||||
.It offset
|
||||
A number specifying the offset, in bytes, into the file of the data
|
||||
which is to be tested.
|
||||
.It type
|
||||
The type of the data to be tested. The possible values are:
|
||||
.Bl -tag -width indent
|
||||
.It byte
|
||||
A one-byte value.
|
||||
.It short
|
||||
A two-byte value (on most systems) in this machine's native byte order.
|
||||
.It long
|
||||
A four-byte value (on most systems) in this machine's native byte order.
|
||||
.It string
|
||||
A string of bytes.
|
||||
.It date
|
||||
A four-byte value interpreted as a unix date.
|
||||
.It beshort
|
||||
A two-byte value (on most systems) in big-endian byte order.
|
||||
.It belong
|
||||
A four-byte value (on most systems) in big-endian byte order.
|
||||
.It bedate
|
||||
A four-byte value (on most systems) in big-endian byte order,
|
||||
interpreted as a unix date.
|
||||
.It leshort
|
||||
A two-byte value (on most systems) in little-endian byte order.
|
||||
.It lelong
|
||||
A four-byte value (on most systems) in little-endian byte order.
|
||||
.It ledate
|
||||
A four-byte value (on most systems) in little-endian byte order,
|
||||
interpreted as a unix date.
|
||||
.El
|
||||
.El
|
||||
.Pp
|
||||
The numeric types may optionally be followed by
|
||||
.Em &
|
||||
and a numeric value,
|
||||
to specify that the value is to be AND'ed with the
|
||||
numeric value before any comparisons are done. Prepending a
|
||||
.Em u
|
||||
to the type indicates that ordered comparisons should be unsigned.
|
||||
.Bl -tag -width indent
|
||||
.It test
|
||||
The value to be compared with the value from the file. If the type is
|
||||
numeric, this value
|
||||
is specified in C form; if it is a string, it is specified as a C string
|
||||
with the usual escapes permitted (e.g. \en for new-line).
|
||||
.It ""
|
||||
Numeric values
|
||||
may be preceded by a character indicating the operation to be performed.
|
||||
It may be
|
||||
.Em = ,
|
||||
to specify that the value from the file must equal the specified value,
|
||||
.Em < ,
|
||||
to specify that the value from the file must be less than the specified
|
||||
value,
|
||||
.Em > ,
|
||||
to specify that the value from the file must be greater than the specified
|
||||
value,
|
||||
.Em & ,
|
||||
to specify that the value from the file must have set all of the bits
|
||||
that are set in the specified value,
|
||||
.Em ^ ,
|
||||
to specify that the value from the file must have clear any of the bits
|
||||
that are set in the specified value, or
|
||||
.Em x ,
|
||||
to specify that any value will match.
|
||||
If the character is omitted,
|
||||
it is assumed to be
|
||||
.Em = .
|
||||
.It ""
|
||||
Numeric values are specified in C form; e.g.
|
||||
.Em 13
|
||||
is decimal,
|
||||
.Em 013
|
||||
is octal, and
|
||||
.Em 0x13
|
||||
is hexadecimal.
|
||||
.It ""
|
||||
For string values, the byte string from the
|
||||
file must match the specified byte string.
|
||||
The operators
|
||||
.Em = ,
|
||||
.Em <
|
||||
and
|
||||
.Em >
|
||||
(but not
|
||||
.Em & )
|
||||
can be applied to strings.
|
||||
The length used for matching is that of the string argument
|
||||
in the magic file. This means that a line can match any string, and
|
||||
then presumably print that string, by doing
|
||||
.Em >\e0
|
||||
(because all strings are greater than the null string).
|
||||
.It message
|
||||
The message to be printed if the comparison succeeds. If the string
|
||||
contains a
|
||||
.Xr printf 3
|
||||
format specification, the value from the file (with any specified masking
|
||||
performed) is printed using the message as the format string.
|
||||
.El
|
||||
.Pp
|
||||
Some file formats contain additional information which is to be printed
|
||||
along with the file type. A line which begins with the character
|
||||
.Em >
|
||||
indicates additional tests and messages to be printed. The number of
|
||||
.Em >
|
||||
on the line indicates the level of the test; a line with no
|
||||
.Em >
|
||||
at the beginning is considered to be at level 0.
|
||||
Each line at level
|
||||
.Em n+1
|
||||
is under the control of the line at level
|
||||
.Em n
|
||||
most closely preceding it in the magic file.
|
||||
If the test on a line at level
|
||||
.Em n
|
||||
succeeds, the tests specified in all the subsequent lines at level
|
||||
.Em n+1
|
||||
are performed, and the messages printed if the tests succeed. The next
|
||||
line at level
|
||||
.Em n
|
||||
terminates this.
|
||||
If the first character following the last
|
||||
.Em >
|
||||
is a
|
||||
.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.
|
||||
The value at that offset is read, and is used again as an offset
|
||||
in the file.
|
||||
Indirect offsets are of the form:
|
||||
.Em (x[.[bsl]][+-][y]) .
|
||||
The value of
|
||||
.Em x
|
||||
is used as an offset in the file.
|
||||
A byte, short or long is read at that offset
|
||||
depending on the
|
||||
.Em [bsl]
|
||||
type specifier.
|
||||
To that number the value of
|
||||
.Em y
|
||||
is added and the result is used as an offset in the file.
|
||||
The default type
|
||||
if one is not specified is long.
|
||||
.Pp
|
||||
Sometimes you do not know the exact offset as this depends on the length of
|
||||
preceding fields.
|
||||
You can specify an offset relative to the end of the
|
||||
last uplevel field (of course this may only be done for sublevel tests, i.e.
|
||||
test beginning with
|
||||
.Em > Ns ).
|
||||
Such a relative offset is specified using
|
||||
.Em &
|
||||
as a prefix to the offset.
|
||||
.Sh BUGS
|
||||
The formats
|
||||
.Em long ,
|
||||
.Em belong ,
|
||||
.Em lelong ,
|
||||
.Em short ,
|
||||
.Em beshort ,
|
||||
.Em leshort ,
|
||||
.Em date ,
|
||||
.Em bedate ,
|
||||
and
|
||||
.Em ledate
|
||||
are system-dependent; perhaps they should be specified as a number
|
||||
of bytes (2B, 4B, etc),
|
||||
since the files being recognized typically come from
|
||||
a system on which the lengths are invariant.
|
||||
.Pp
|
||||
There is (currently) no support for specified-endian data to be used in
|
||||
indirect offsets.
|
||||
.Sh SEE ALSO
|
||||
.Xr file 1
|
||||
.\"
|
||||
.\" From: guy@sun.uucp (Guy Harris)
|
||||
.\" Newsgroups: net.bugs.usg
|
||||
.\" Subject: /etc/magic's format isn't well documented
|
||||
.\" Message-ID: <2752@sun.uucp>
|
||||
.\" Date: 3 Sep 85 08:19:07 GMT
|
||||
.\" Organization: Sun Microsystems, Inc.
|
||||
.\" Lines: 136
|
||||
.\"
|
||||
.\" Here's a manual page for the format accepted by the "file" made by adding
|
||||
.\" the changes I posted to the S5R2 version.
|
||||
.\"
|
||||
.\" Modified for Ian Darwin's version of the file command.
|
Loading…
Reference in New Issue
Block a user