diff options
author | obrien <obrien@FreeBSD.org> | 2000-11-26 22:19:56 +0000 |
---|---|---|
committer | obrien <obrien@FreeBSD.org> | 2000-11-26 22:19:56 +0000 |
commit | 734ffeb5ee37368fd8302a978e5b5bece2534cdb (patch) | |
tree | 2e026e339edb762c417e7b8451de762377f171ed /usr.bin/file | |
parent | 92a7efc5b66e70b5180fb33be1040e6c6de7b660 (diff) | |
download | FreeBSD-src-734ffeb5ee37368fd8302a978e5b5bece2534cdb.zip FreeBSD-src-734ffeb5ee37368fd8302a978e5b5bece2534cdb.tar.gz |
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.
Diffstat (limited to 'usr.bin/file')
-rw-r--r-- | usr.bin/file/Makefile | 20 | ||||
-rw-r--r-- | usr.bin/file/file.1 | 405 | ||||
-rw-r--r-- | usr.bin/file/magic.5 | 222 |
3 files changed, 16 insertions, 631 deletions
diff --git a/usr.bin/file/Makefile b/usr.bin/file/Makefile index 5fc7b1bd..9c00d58 100644 --- a/usr.bin/file/Makefile +++ b/usr.bin/file/Makefile @@ -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> diff --git a/usr.bin/file/file.1 b/usr.bin/file/file.1 deleted file mode 100644 index 189b25c..0000000 --- a/usr.bin/file/file.1 +++ /dev/null @@ -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 diff --git a/usr.bin/file/magic.5 b/usr.bin/file/magic.5 deleted file mode 100644 index 30cfff1..0000000 --- a/usr.bin/file/magic.5 +++ /dev/null @@ -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. |