Table of Contents

Name

xfmtype - xfm file type tester

Synopsis

xfmtype -m magic_file [-f] filename ...

Description

The xfmtype program reads a magic configuration file and tests each file in its command line to tell its type according to the configuration file.

The format of the configuration file is the same as the magic(5) with the following additions and differences:

mode type field.
Similar to long type, but offset is ignored. The test is performed against the st_mode field of the stat structure obtained using stat(2) system call. This allows testing for directories, fifos ... as well as for file permissions.
lmode type field.
Similar to mode type, but using lstat(2) instead of stat(2) . This allows testing for symbolic links.
builtin type field.
The test succeeds if the built-in type of the file is the same as the value field. The built-in type of the file is the type returned when all the tests fail. Currently these are the built-in types:
"unreadable" The file could not be read.

"empty" File size is zero.

"special" Not a regular file.

"ascii" The file looks like ascii.

"data" None of the above.

regexp type field.
The value field must be a proper regular expression. The bytes starting at offset are matched against it. If the match succeeds, then a regsub(3) is performed on message yielding the final message. If the type field is of the form regexp&nnn where nnn is a possitive number, then that number controls the amount of data scanned for the matching, otherwise a compile defined value (currently 256) is used.
long and short byte order.
xfmtype always reads longs and shorts using MSB-first order. This makes configuration files portable to all architectures, but some entries in original magic(5) files might be wrong.
Continuation lines.
If a line ends with a backslash character (\), it is continued with the following line. The maximun length of a line is 1024 characters (counting also charaters in continuation lines).

Options

-f file
Consider the following argument as a file, even if it begins with `-'.
-m file
Specifies a configuration file. You can specify more than one configuration file with several -m flags. They are read in the order in which they are found. Configuration files do not have effect until they are encountered in the command line. So, files to test in the command line before that switch will not be affected by it.

Bugs

Bad configuration lines cause undefined behavior. In general they are silently ignored, but that is not guaranteed.
There are no warning or error message except for the regular expression syntax.
There should be a syntax checking mode.
All of the above apply to xfm too.

See Also

xfm(1x) , file(1) , magic(5) , stat(2) , lstat(2) ,

Copyright

Copyright (c) 1995 CNM-US
Copyright (c) 1995 Juan D. Martin

Author

Juan D. Martin (juando@cnm.us.es)


Table of Contents