Import file-5.18.
authorPeter Avalos <pavalos@dragonflybsd.org>
Tue, 6 May 2014 17:40:32 +0000 (10:40 -0700)
committerPeter Avalos <pavalos@dragonflybsd.org>
Tue, 6 May 2014 17:40:32 +0000 (10:40 -0700)
See ChangeLog for details.

126 files changed:
contrib/file/ChangeLog
contrib/file/README
contrib/file/README.DELETED
contrib/file/doc/file.man
contrib/file/doc/libmagic.man
contrib/file/doc/magic.man
contrib/file/magic/Magdir/adventure
contrib/file/magic/Magdir/amigaos
contrib/file/magic/Magdir/android [new file with mode: 0644]
contrib/file/magic/Magdir/animation
contrib/file/magic/Magdir/aout [new file with mode: 0644]
contrib/file/magic/Magdir/apple
contrib/file/magic/Magdir/archive
contrib/file/magic/Magdir/assembler
contrib/file/magic/Magdir/audio
contrib/file/magic/Magdir/blackberry [new file with mode: 0644]
contrib/file/magic/Magdir/bsdi
contrib/file/magic/Magdir/c-lang
contrib/file/magic/Magdir/cad
contrib/file/magic/Magdir/cafebabe
contrib/file/magic/Magdir/claris
contrib/file/magic/Magdir/commands
contrib/file/magic/Magdir/compress
contrib/file/magic/Magdir/console
contrib/file/magic/Magdir/convex
contrib/file/magic/Magdir/ctf [new file with mode: 0644]
contrib/file/magic/Magdir/cubemap [new file with mode: 0644]
contrib/file/magic/Magdir/cups
contrib/file/magic/Magdir/database
contrib/file/magic/Magdir/diff
contrib/file/magic/Magdir/digital
contrib/file/magic/Magdir/dolby
contrib/file/magic/Magdir/dump
contrib/file/magic/Magdir/elf
contrib/file/magic/Magdir/epoc
contrib/file/magic/Magdir/filesystems
contrib/file/magic/Magdir/flash
contrib/file/magic/Magdir/fonts
contrib/file/magic/Magdir/fortran
contrib/file/magic/Magdir/fsav
contrib/file/magic/Magdir/geo
contrib/file/magic/Magdir/gimp
contrib/file/magic/Magdir/gnome [new file with mode: 0644]
contrib/file/magic/Magdir/gnome-keyring [deleted file]
contrib/file/magic/Magdir/gnu
contrib/file/magic/Magdir/gpt [new file with mode: 0644]
contrib/file/magic/Magdir/hitachi-sh
contrib/file/magic/Magdir/ibm6000
contrib/file/magic/Magdir/icc [new file with mode: 0644]
contrib/file/magic/Magdir/images
contrib/file/magic/Magdir/intel
contrib/file/magic/Magdir/java
contrib/file/magic/Magdir/javascript [new file with mode: 0644]
contrib/file/magic/Magdir/jpeg
contrib/file/magic/Magdir/keepass [new file with mode: 0644]
contrib/file/magic/Magdir/linux
contrib/file/magic/Magdir/llvm
contrib/file/magic/Magdir/lua
contrib/file/magic/Magdir/mach
contrib/file/magic/Magdir/macintosh
contrib/file/magic/Magdir/macos [new file with mode: 0644]
contrib/file/magic/Magdir/mail.news
contrib/file/magic/Magdir/maple
contrib/file/magic/Magdir/matroska
contrib/file/magic/Magdir/mips
contrib/file/magic/Magdir/misctools
contrib/file/magic/Magdir/msdos
contrib/file/magic/Magdir/msooxml
contrib/file/magic/Magdir/msx [new file with mode: 0644]
contrib/file/magic/Magdir/natinst
contrib/file/magic/Magdir/neko [new file with mode: 0644]
contrib/file/magic/Magdir/netbsd
contrib/file/magic/Magdir/palm
contrib/file/magic/Magdir/pbf [new file with mode: 0644]
contrib/file/magic/Magdir/pdf
contrib/file/magic/Magdir/pdp
contrib/file/magic/Magdir/perl
contrib/file/magic/Magdir/pgf [new file with mode: 0644]
contrib/file/magic/Magdir/pwsafe [new file with mode: 0644]
contrib/file/magic/Magdir/python
contrib/file/magic/Magdir/revision
contrib/file/magic/Magdir/riff
contrib/file/magic/Magdir/rpm
contrib/file/magic/Magdir/scientific
contrib/file/magic/Magdir/sgi
contrib/file/magic/Magdir/sgml
contrib/file/magic/Magdir/sniffer
contrib/file/magic/Magdir/sql
contrib/file/magic/Magdir/ssh
contrib/file/magic/Magdir/ssl
contrib/file/magic/Magdir/sun
contrib/file/magic/Magdir/symbos [new file with mode: 0644]
contrib/file/magic/Magdir/sysex
contrib/file/magic/Magdir/tcl
contrib/file/magic/Magdir/tex
contrib/file/magic/Magdir/unknown
contrib/file/magic/Magdir/uterus [new file with mode: 0644]
contrib/file/magic/Magdir/varied.script
contrib/file/magic/Magdir/vax
contrib/file/magic/Magdir/virtual
contrib/file/magic/Magdir/vms
contrib/file/magic/Magdir/windows
contrib/file/magic/Magdir/wordprocessors
contrib/file/magic/Magdir/wsdl
contrib/file/magic/Magdir/xilinx
contrib/file/magic/Magdir/xwindows
contrib/file/src/apprentice.c
contrib/file/src/ascmagic.c
contrib/file/src/cdf.c
contrib/file/src/cdf.h
contrib/file/src/cdf_time.c
contrib/file/src/compress.c
contrib/file/src/elfclass.h
contrib/file/src/encoding.c
contrib/file/src/file.c
contrib/file/src/file.h
contrib/file/src/file_opts.h
contrib/file/src/fsmagic.c
contrib/file/src/funcs.c
contrib/file/src/magic.c
contrib/file/src/magic.h
contrib/file/src/print.c
contrib/file/src/readcdf.c
contrib/file/src/readelf.c
contrib/file/src/readelf.h
contrib/file/src/softmagic.c

index 4c19cc6..dd90401 100644 (file)
@@ -1,3 +1,192 @@
+2014-03-26  11:25  Christos Zoulas <christos@zoulas.com>
+
+       * release 5.18
+
+2014-03-15  17:45  Christos Zoulas <christos@zoulas.com>
+
+        * add fmtcheck(3) for those who don't have it
+
+2014-03-14  15:12  Christos Zoulas <christos@zoulas.com>
+
+       * prevent mime entries from being attached to magic
+         entries with no descriptions
+
+       * adjust magic strength for regex type
+
+       * remove superfluous ascmagic with encoding test
+
+2014-03-06  12:01  Christos Zoulas <christos@zoulas.com>
+
+       * fix regression fix echo -ne "\012\013\014" | file -i -
+         which printed "binary" instead of "application/octet-stream"
+
+       * add size_t overflow check for magic file size
+
+2014-02-27  16:01  Christos Zoulas <christos@zoulas.com>
+
+       * experimental support for matching with CFD CLSID
+
+2014-02-18  13:04  Kimmo Suominen (kimmo@suominen.com)
+
+       * Cache old LC_CTYPE locale before setting it to "C", so
+         we can use it to restore LC_CTYPE instead of asking
+         setlocale() to scan the environment variables.
+
+2014-02-12  18:21  Christos Zoulas <christos@zoulas.com>
+
+       * Count recursion levels through indirect magic
+
+2014-02-11  10:40  Christos Zoulas <christos@zoulas.com>
+
+       * Prevent infinite recursion on files with indirect offsets of 0
+
+2014-01-30  21:00  Christos Zoulas <christos@zoulas.com>
+
+       * Add -E flag that makes file print filesystem errors to stderr
+         and exit.
+
+2014-01-08  17:20  Christos Zoulas <christos@zoulas.com>
+
+       * mime printing could print results from multiple magic entries
+         if there were multiple matches.
+       * in some cases overflow was not detected when computing offsets
+         in softmagic.
+
+2013-12-05  12:00  Christos Zoulas <christos@zoulas.com>
+
+       * use strcasestr() to for cdf strings
+       * reset to the "C" locale while doing regex operations, or case
+         insensitive comparisons; this is provisional
+
+2013-11-19  20:10  Christos Zoulas <christos@zoulas.com>
+
+       * always leave magic file loaded, don't unload for magic_check, etc.
+       * fix default encoding to binary instead of unknown which broke recently
+       * handle empty and one byte files, less specially so that
+         --mime-encoding does not break completely.
+               `
+2013-11-06  14:40  Christos Zoulas <christos@zoulas.com>
+
+       * fix erroneous non-zero exit code from non-existant file and message
+
+2013-10-29  14:25  Christos Zoulas <christos@zoulas.com>
+
+       * add CDF MSI file detection (Guy Helmer)
+
+2013-09-03  11:56  Christos Zoulas <christos@zoulas.com>
+
+       * Don't mix errors and regular output if there was an error
+       * in magic_descriptor() don't close the file and try to restore
+         its position
+
+2013-05-30  17:25  Christos Zoulas <christos@zoulas.com>
+
+       * Don't treat magic as an error if offset was past EOF (Christoph Biedl)
+
+2013-05-28  17:25  Christos Zoulas <christos@zoulas.com>
+       
+       * Fix spacing issues in softmagic and elf (Jan Kaluza)
+
+2013-05-02  18:00  Christos Zoulas <christos@zoulas.com>
+
+       * Fix segmentation fault with multiple magic_load commands.
+
+2013-04-22  11:20  Christos Zoulas <christos@zoulas.com>
+
+       * The way "default" was implemented was not very useful
+         because the "if something was printed at that level"
+         was not easily controlled by the user, and the format
+         was bound to a string which is too restrictive. Add
+         a "clear" for that level keyword and make "default"
+         void. This way one can do:
+
+               >>13    clear   x
+               >>13    lelong  1       foo
+               >>13    lelong  2       bar
+               >>13    default x
+               >>>13   lelong  x       unknown %x
+
+2013-03-25  13:20  Christos Zoulas <christos@zoulas.com>
+
+       * disallow strength setting in "name" entries
+
+2013-03-06  21:24  Christos Zoulas <christos@zoulas.com>
+
+       * fix recursive magic separator printing
+
+2013-02-26  19:28  Christos Zoulas <christos@zoulas.com>
+
+       * limit recursion level for mget
+       * fix pread() related breakage in cdf
+       * handle offsets properly in recursive "use"
+
+2013-02-18  10:39  Christos Zoulas <christos@zoulas.com>
+
+       * add elf reading of debug info to determine if file is stripped
+         (Jan Kaluza)
+       * use pread()
+
+2013-01-25  18:05  Christos Zoulas <christos@zoulas.com>
+
+       * change mime description size from 64 to 80 to accommodate OOXML.
+
+2013-01-11  14:50  Christos Zoulas <christos@zoulas.com>
+
+       * Warn about inconsistent continuation levels.
+       * Change fsmagic to add a space after it prints.
+
+2013-01-10  21:00  Christos Zoulas <christos@zoulas.com>
+
+       * Make getline public so that file can link against it.
+         Perhaps it is better to rename it, or hide it differently.
+         Fixes builds on platforms that do not provide it.
+         
+2013-01-07  16:30  Christos Zoulas <christos@zoulas.com>
+
+       * Add SuS d{,1,2,4,8}, u{,1,2,4,8} and document
+         what long, int, short, etc is (Guy Harris)
+
+2013-01-06  11:20  Christos Zoulas <christos@zoulas.com>
+
+       * add magic_version function and constant
+       * Redo memory allocation and de-allocation.
+         (prevents double frees on non mmap platforms)
+       * Fix bug with name/use having to do with passing
+         found state from the parent to the child and back.
+
+2012-12-19   8:47  Christos Zoulas <christos@zoulas.com>
+
+       * Only print elf capabilities for archs we know (Jan Kaluza)
+
+2012-10-30  19:14  Christos Zoulas <christos@zoulas.com>
+
+       * Add "name" and "use" file types in order to look
+         inside mach-o files.
+
+2012-09-06  10:40  Christos Zoulas <christos@zoulas.com>
+
+       * make --version exit 0 (Matthew Schultz)
+       * add string/T (Jan Kaluza)
+
+2012-08-09  2:15  Christos Zoulas <christos@zoulas.com>
+
+       * add z and t modifiers for our own vasprintf
+       * search for $HOME/.magic.mgc if it is there first
+       * fix reads from a pipe, and preserve errno
+
+2012-05-15  13:12  Christos Zoulas <christos@zoulas.com>
+
+       * use ctime_r, asctime_r
+
+2012-04-06  17:18  Christos Zoulas <christos@zoulas.com>
+
+       * Fixes for indirect offsets to handle apple disk formats
+
+2012-04-03  18:26  Christos Zoulas <christos@zoulas.com>
+
+       * Add windows date field types
+       * More info for windows shortcuts (incomplete)
+
 2012-02-20  17:33  Christos Zoulas <christos@zoulas.com>
 
        * Fix CDF parsing issues found by CERT's fuzzing tool (Will Dormann)
index 2b57a70..cfc530f 100644 (file)
@@ -1,10 +1,14 @@
-** README for file(1) Command **
-@(#) $File: README,v 1.44 2011/03/24 13:03:39 rrt Exp $
+## README for file(1) Command ##
 
-Mailing List: file@mx.gw.com
-Bug tracker: http://bugs.gw.com/
+    @(#) $File: README,v 1.48 2014/03/07 13:55:30 christos Exp $
+
+Mailing List: file@mx.gw.com  
+Mailing List archives: http://mx.gw.com/pipermail/file/  
+Bug tracker: http://bugs.gw.com/  
 E-mail: christos@astron.com
 
+[![Build Status](https://travis-ci.org/file/file.png?branch=master)](https://travis-ci.org/file/file)
+
 Phone: Do not even think of telephoning me about this program. Send cash first!
 
 This is Release 5.x of Ian Darwin's (copyright but distributable)
@@ -13,13 +17,13 @@ It knows the 'magic number' of several thousands of file types.
 This version is the standard "file" command for Linux,
 *BSD, and other systems. (See "patchlevel.h" for the exact release number).
 
-You can download the latest version of file from:
+You can download the latest version of the original sources for file from:
 
        ftp://ftp.astron.com/pub/file/
 
-A public read-only git repository is available at:
+A public read-only git repository of the same sources is available at:
 
-       https://github.com/glensc/file
+       https://github.com/file/file
 
 The major changes for 5.x are CDF file parsing, indirect magic, and
 overhaul in mime and ascii encoding handling.
@@ -28,7 +32,7 @@ The major feature of 4.x is the refactoring of the code into a library,
 and the re-write of the file command in terms of that library. The library
 itself, libmagic can be used by 3rd party programs that wish to identify
 file types without having to fork() and exec() file. The prime contributor
-for 4.0 was M\xe5ns Rullg\xe5rd.
+for 4.0 was Mans Rullgard.
 
 UNIX is a trademark of UNIX System Laboratories.
 
@@ -60,38 +64,42 @@ magic numbers assigned to all sorts of data files that
 are in reasonable circulation. Send your magic numbers,
 in magic(5) format please, to the maintainer, Christos Zoulas.
 
-COPYING - read this first.
-README - read this second (you are currently reading this file).
+COPYING - read this first.  
+README - read this second (you are currently reading this file).  
 INSTALL - read on how to install
 
-src/apprentice.c - parses /etc/magic to learn magic
-src/apptype.c - used for OS/2 specific application type magic
-src/asprintf.c - replacement for OS's that don't have it.
-src/ascmagic.c - third & last set of tests, based on hardwired assumptions.
-src/cdf.c - parser for Microsoft Compound Document Files
-src/cdf_time.c - time converter for CDF.
-src/compress.c - handles decompressing files to look inside.
-src/encoding.c - handles unicode encodings
-src/file.c - the main program
-src/file.h - header file
-src/fsmagic.c - first set of tests the program runs, based on filesystem info
-src/funcs.c - utilility functions
-src/getopt_long.c - used for OS/2 specific application type magic
-src/is_tar.c, tar.h - knows about tarchives (courtesy John Gilmore).
-src/names.h - header file for ascmagic.c
-src/magic.c - the libmagic api
-src/print.c - print results, errors, warnings.
-src/readcdf.c - CDF wrapper.
-src/readelf.[ch] - Stand-alone elf parsing code.
-src/softmagic.c - 2nd set of tests, based on /etc/magic
-src/strlcat.c - used for OS/2 specific application type magic
-src/strlcpy.c - used for OS/2 specific application type magic
-src/vasprintf.c - used for OS/2 specific application type magic
-doc/file.1 - man page for the command
-doc/magic.4 - man page for the magic file, courtesy Guy Harris.
+src/apprentice.c - parses /etc/magic to learn magic  
+src/apptype.c - used for OS/2 specific application type magic  
+src/asprintf.c - replacement for OS's that don't have it.  
+src/ascmagic.c - third & last set of tests, based on hardwired assumptions.  
+src/asctime_r.c - for systems that don't have it.  
+src/asprintf.c - for systems that don't have it.  
+src/cdf.c - parser for Microsoft Compound Document Files  
+src/cdf_time.c - time converter for CDF.  
+src/compress.c - handles decompressing files to look inside.  
+src/ctime_r.c - for systems that don't have it.  
+src/encoding.c - handles unicode encodings  
+src/file.c - the main program  
+src/file.h - header file  
+src/fsmagic.c - first set of tests the program runs, based on filesystem info  
+src/funcs.c - utilility functions  
+src/getopt_long.c - for systems that don't have it.  
+src/getline.c - for systems that don't have it.  
+src/is_tar.c, tar.h - knows about tarchives (courtesy John Gilmore).  
+src/names.h - header file for ascmagic.c  
+src/magic.c - the libmagic api  
+src/print.c - print results, errors, warnings.  
+src/readcdf.c - CDF wrapper.  
+src/readelf.[ch] - Stand-alone elf parsing code.  
+src/softmagic.c - 2nd set of tests, based on /etc/magic  
+src/strlcat.c - for systems that don't have it.  
+src/strlcpy.c - for systems that don't have it.  
+src/vasprintf.c - for systems that don't have it.  
+doc/file.man - man page for the command  
+doc/magic.man - man page for the magic file, courtesy Guy Harris.
        Install as magic.4 on USG and magic.5 on V7 or Berkeley; cf Makefile.
-Magdir - directory of /etc/magic pieces
 
+Magdir - directory of /etc/magic pieces
 ------------------------------------------------------------------------------
 
 If you submit a new magic entry please make sure you read the following
index 5b47009..f984009 100644 (file)
@@ -24,9 +24,15 @@ missing
 python/
 src/Makefile.am
 src/Makefile.in
+src/asctime_r.c
 src/asprintf.c
+src/ctime_r.c
+src/fmtcheck.c
 src/getline.c
 src/getopt_long.c
+src/magic.h.in
+src/pread.c
+src/strcasestr.c
 src/strlcat.c
 src/strlcpy.c
 src/vasprintf.c
index fff7730..361188e 100644 (file)
@@ -1,5 +1,5 @@
-.\" $File: file.man,v 1.98 2011/12/08 12:12:46 rrt Exp $
-.Dd October 17, 2011
+.\" $File: file.man,v 1.106 2014/03/07 23:11:51 christos Exp $
+.Dd January 30, 2014
 .Dt FILE __CSECTION__
 .Os
 .Sh NAME
@@ -8,7 +8,7 @@
 .Sh SYNOPSIS
 .Nm
 .Bk -words
-.Op Fl bchiklLNnprsvz0
+.Op Fl bcEhiklLNnprsvz0
 .Op Fl Fl apple
 .Op Fl Fl mime-encoding
 .Op Fl Fl mime-type
@@ -164,6 +164,10 @@ in any of the character sets listed above is simply said to be
 .Dq data .
 .Sh OPTIONS
 .Bl -tag -width indent
+.It Fl Fl apple
+Causes the file command to output the file type and creator code as
+used by older MacOS versions. The code consists of eight letters,
+the first describing the file type, the latter the creator.
 .It Fl b , Fl Fl brief
 Do not prepend filenames to output lines (brief mode).
 .It Fl C , Fl Fl compile
@@ -175,6 +179,10 @@ Cause a checking printout of the parsed form of the magic file.
 This is usually used in conjunction with the
 .Fl m
 flag to debug a new magic file before installing it.
+.It Fl E
+On filesystem errors (file not found etc), instead of handling the error
+as regular output as POSIX mandates and keep going, issue an error message
+and exit.
 .It Fl e , Fl Fl exclude Ar testname
 Exclude the test named in
 .Ar testname
@@ -259,8 +267,16 @@ prepended.
 (If you want a newline, see the
 .Fl r
 option.)
+The magic pattern with the highest strength (see the
+.Fl l
+option) comes first.
 .It Fl l , Fl Fl list
-Print information about the strength of each magic pattern.
+Shows a list of patterns and their strength sorted descending by
+.Xr magic 4
+strength
+which is used for the matching (see also the
+.Fl k
+option).
 .It Fl L , Fl Fl dereference
 option causes symlinks to be followed, as the like-named option in
 .Xr ls 1
@@ -268,8 +284,6 @@ option causes symlinks to be followed, as the like-named option in
 This is the default if the environment variable
 .Ev POSIXLY_CORRECT
 is defined.
-.It Fl l
-Shows sorted patterns list in the order which is used for the matching.
 .It Fl m , Fl Fl magic-file Ar magicfiles
 Specify an alternate list of files and directories containing magic.
 This can be a single item, or a colon-separated list.
@@ -325,7 +339,7 @@ after the end of the filename.
 Nice to
 .Xr cut 1
 the output.
-This does not affect the separator which is still printed.
+This does not affect the separator, which is still printed.
 .It Fl -help
 Print a help message and exit.
 .El
@@ -547,20 +561,27 @@ returns 0 on success, and non-zero on error.
 Please report bugs and send patches to the bug tracker at
 .Pa http://bugs.gw.com/
 or the mailing list at
-.Aq file@mx.gw.com .
+.Aq file@mx.gw.com
+(visit
+.Pa http://mx.gw.com/mailman/listinfo/file
+first to subscribe).
 .Sh TODO
 .Pp
 Fix output so that tests for MIME and APPLE flags are not needed all
-over the place, and actual output is only done in one place. This
-needs a design. Suggestion: push possible outputs on to a list, then
-pick the last-pushed (most specific, one hopes) value at the end, or
-use a default if the list is empty. This should not slow down evaluation.
+over the place, and actual output is only done in one place.
+This needs a design.
+Suggestion: push possible outputs on to a list, then pick the
+last-pushed (most specific, one hopes) value at the end, or
+use a default if the list is empty.
+This should not slow down evaluation.
 .Pp
-Continue to squash all magic bugs. See Debian BTS for a good source.
+Continue to squash all magic bugs.
+See Debian BTS for a good source.
 .Pp
 Store arbitrarily long strings, for example for %s patterns, so that
-they can be printed out. Fixes Debian bug #271672. Would require more
-complex store/load code in apprentice.
+they can be printed out.
+Fixes Debian bug #271672.
+Would require more complex store/load code in apprentice.
 .Pp
 Add syntax for relative offsets after current level (Debian bug #466037).
 .Pp
@@ -570,6 +591,30 @@ Add a zip library so we can peek inside Office2007 documents to
 figure out what they are.
 .Pp
 Add an option to print URLs for the sources of the file descriptions.
+.Pp
+Combine script searches and add a way to map executable names to MIME
+types (e.g. have a magic value for !:mime which causes the resulting
+string to be looked up in a table).
+This would avoid adding the same magic repeatedly for each new
+hash-bang interpreter.
+.Pp
+Fix
+.Dq name
+and
+.Dq use
+to check for consistency at compile time (duplicate 
+.Dq name ,
+.Dq use
+pointing to undefined
+.Dq name
+).
+Make 
+.Dq name
+/
+.Dq use 
+more efficient by keeping a sorted list of names.
+Special-case ^ to flip endianness in the parser so that it does not
+have to be escaped, and document it.
 .Sh AVAILABILITY
 You can obtain the original author's latest version by anonymous FTP
 on
index 272b838..ee9cdb2 100644 (file)
@@ -1,4 +1,4 @@
-.\" $File: libmagic.man,v 1.26 2011/12/19 17:49:31 christos Exp $
+.\" $File: libmagic.man,v 1.28 2014/03/02 14:47:16 christos Exp $
 .\"
 .\" Copyright (c) Christos Zoulas 2003.
 .\" All Rights Reserved.
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.Dd December 19, 2011
+.Dd January 6, 2012
 .Dt LIBMAGIC 3
 .Os
 .Sh NAME
 .Nm magic_open ,
 .Nm magic_close ,
 .Nm magic_error ,
+.Nm magic_errno ,
 .Nm magic_descriptor ,
 .Nm magic_buffer ,
 .Nm magic_setflags ,
 .Nm magic_check ,
 .Nm magic_compile ,
-.Nm magic_load
+.Nm magic_list ,
+.Nm magic_load ,
+.Nm magic_version
 .Nd Magic number recognition library
 .Sh LIBRARY
 .Lb libmagic
@@ -67,6 +70,8 @@
 .Fn magic_list "magic_t cookie" "const char *filename"
 .Ft int
 .Fn magic_load "magic_t cookie" "const char *filename"
+.Ft int
+.Fn magic_version "void"
 .Sh DESCRIPTION
 These functions
 operate on the magic database file
@@ -246,6 +251,16 @@ If that variable is not set, the default database file name is __MAGIC__.
 adds
 .Dq .mgc
 to the database filename as appropriate.
+.Pp
+The
+.Fn magic_version
+command returns the version number of this library which is compiled into
+the shared library using the constant
+.Dv MAGIC_VERSION
+from
+.In magic.h .
+This can be used by client programs to verify that the version they compile
+against is the same as the version that they run against.
 .Sh RETURN VALUES
 The function
 .Fn magic_open
@@ -276,6 +291,9 @@ function returns a textual description of the errors of the above
 functions, or
 .Dv NULL
 if there was no error.
+The
+.Fn magic_version
+always returns the version number of the library.
 Finally,
 .Fn magic_setflags
 returns \-1 on systems that don't support
index 1204568..fab13ef 100644 (file)
@@ -1,5 +1,5 @@
-.\" $File: magic.man,v 1.71 2011/12/07 11:58:24 rrt Exp $
-.Dd April 20, 2011
+.\" $File: magic.man,v 1.81 2014/03/08 17:28:08 christos Exp $
+.Dd April 22, 2013
 .Dt MAGIC __FSECTION__
 .Os
 .\" install as magic.4 on USG, magic.5 on V7, Berkeley and Linux systems.
@@ -51,7 +51,7 @@ 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 /[WwcCtb]*.
+by /[WwcCtbT]*.
 The
 .Dq W
 flag compacts whitespace in the target, which must
@@ -85,8 +85,12 @@ The
 flag forces the test to be done for text files, while the
 .Dq b
 flag forces the test to be done for binary files.
+The
+.Dq T
+flag causes the string to be trimmed, i.e. leading and trailing whitespace
+is deleted before the string is printed.
 .It Dv pstring
-A Pascal-style string where the first byte/short/int is interpreted as the an
+A Pascal-style string where the first byte/short/int is interpreted as the
 unsigned length.
 The length defaults to byte and can be specified as a modifier.
 The following modifiers are supported:
@@ -121,6 +125,8 @@ local time rather than UTC.
 .It Dv qldate
 An eight-byte value interpreted as a UNIX-style date, but interpreted as
 local time rather than UTC.
+.It Dv qwdate
+An eight-byte value interpreted as a Windows-style date.
 .It Dv beid3
 A 32-bit ID3 length in big-endian byte order.
 .It Dv beshort
@@ -147,6 +153,9 @@ than UTC.
 An eight-byte value in big-endian byte order,
 interpreted as a UNIX-style date, but interpreted as local time rather
 than UTC.
+.It Dv beqwdate
+An eight-byte value in big-endian byte order,
+interpreted as a Windows-style date.
 .It Dv bestring16
 A two-byte unicode (UCS16) string in big-endian byte order.
 .It Dv leid3
@@ -175,6 +184,9 @@ than UTC.
 An eight-byte value in little-endian byte order,
 interpreted as a UNIX-style date, but interpreted as local time rather
 than UTC.
+.It Dv leqwdate
+An eight-byte value in little-endian byte order,
+interpreted as a Windows-style date.
 .It Dv lestring16
 A two-byte unicode (UCS16) string in little-endian byte order.
 .It Dv melong
@@ -188,6 +200,27 @@ interpreted as a UNIX-style date, but interpreted as local time rather
 than UTC.
 .It Dv indirect
 Starting at the given offset, consult the magic database again.
+.It Dv name
+Define a
+.Dq named
+magic instance that can be called from another
+.Dv use
+magic entry, like a subroutine call.
+Named instance direct magic offsets are relative to the offset of the
+previous matched entry, but indirect offsets are relative to the beginning
+of the file as usual.
+Named magic entries always match.
+.It Dv use
+Recursively call the named magic starting from the current offset.
+If the name of the referenced begins with a
+.Dv ^
+then the endianness of the magic is switched; if the magic mentioned
+.Dv leshort
+for example,
+it is treated as
+.Dv beshort
+and vice versa.
+This is useful to avoid duplicating the rules for different endianness.
 .It Dv regex
 A regular expression match in extended POSIX regular expression syntax
 (like egrep).
@@ -216,22 +249,91 @@ 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
-.Dv /number
-the range, that is, the number of positions at which the match will be
+The search expression must contain the range in the form
+.Dv /number,
+that is the number of positions at which the match will be
 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.
+The order of modifier and number is not relevant.
 .It Dv default
 This is intended to be used with the test
 .Em x
-(which is always true) and a message that is to be used if there are
-no other matches.
+(which is always true) and it has no type.
+It matches when no other test at that continuation level has matched before.
+Clearing that matched tests for a continuation level, can be done using the
+.Dv clear
+test.
+.It Dv clear
+This test is always true and clears the match flag for that continuation level.
+It is intended to be used with the
+.Dv default
+test.
 .El
 .Pp
+For compatibility with the Single
+.Ux
+Standard, the type specifiers
+.Dv dC
+and
+.Dv d1
+are equivalent to
+.Dv byte ,
+the type specifiers
+.Dv uC
+and
+.Dv u1
+are equivalent to
+.Dv ubyte ,
+the type specifiers
+.Dv dS
+and
+.Dv d2
+are equivalent to
+.Dv short ,
+the type specifiers
+.Dv uS
+and
+.Dv u2
+are equivalent to
+.Dv ushort ,
+the type specifiers
+.Dv dI ,
+.Dv dL ,
+and
+.Dv d4
+are equivalent to
+.Dv long ,
+the type specifiers
+.Dv uI ,
+.Dv uL ,
+and
+.Dv u4
+are equivalent to
+.Dv ulong ,
+the type specifier
+.Dv d8
+is equivalent to
+.Dv quad ,
+the type specifier
+.Dv u8
+is equivalent to
+.Dv uquad ,
+and the type specifier
+.Dv s
+is equivalent to
+.Dv string .
+In addition, the type specifier
+.Dv dQ
+is equivalent to
+.Dv quad
+and the type specifier
+.Dv uQ
+is equivalent to
+.Dv uquad .
+.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
@@ -324,6 +426,9 @@ then print the string), with
 .Em \*[Gt]\e0
 (because all non-empty strings are greater than the empty string).
 .Pp
+Dates are treated as numerical values in the respective internal
+representation.
+.Pp
 The special test
 .Em x
 always evaluates to true.
@@ -511,7 +616,7 @@ Or even both!
 \*[Gt]\*[Gt]\*[Gt]\*[Am](\*[Am]0x54.l-3)  string  UNACE  \eb, ACE self-extracting archive
 .Ed
 .Pp
-Finally, if you have to deal with offset/length pairs in your file, even the
+If you have to deal with offset/length pairs in your file, even the
 second value in a parenthesized expression can be taken from the file itself,
 using another set of parentheses.
 Note that this additional indirect offset is always relative to the
@@ -526,6 +631,18 @@ start of the main indirect offset.
 # these are located 14 and 10 bytes after the section name
 \*[Gt]\*[Gt]\*[Gt]\*[Gt](\*[Am]0xe.l+(-4)) string       PK\e3\e4 \eb, ZIP self-extracting archive
 .Ed
+.Pp
+If you have a list of known avalues at a particular continuation level,
+and you want to provide a switch-like default case:
+.Bd -literal -offset indent
+# clear that continuation level match
+\*[Gt]18       clear
+\*[Gt]18       lelong  1       one
+\*[Gt]18       lelong  2       two
+\*[Gt]18       default x
+# print default match
+\*[Gt]\*[Gt]18 lelong  x       unmatched 0x%x
+.Ed
 .Sh SEE ALSO
 .Xr file __CSECTION__
 \- the command that reads this file.
@@ -537,19 +654,41 @@ The formats
 .Dv melong ,
 .Dv short ,
 .Dv beshort ,
-.Dv leshort ,
-.Dv date ,
-.Dv bedate ,
-.Dv medate ,
-.Dv ledate ,
-.Dv beldate ,
-.Dv leldate ,
 and
-.Dv meldate
-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.
+.Dv leshort
+do not depend on the length of the C data types
+.Dv short
+and
+.Dv long
+on the platform, even though the Single
+.Ux
+Specification implies that they do.  However, as OS X Mountain Lion has
+passed the Single
+.Ux
+Specification validation suite, and supplies a version of
+.Xr file __CSECTION__
+in which they do not depend on the sizes of the C data types and that is
+built for a 64-bit environment in which
+.Dv long
+is 8 bytes rather than 4 bytes, presumably the validation suite does not
+test whether, for example
+.Dv long
+refers to an item with the same size as the C data type
+.Dv long .
+There should probably be
+.Dv type
+names
+.Dv int8 ,
+.Dv uint8 ,
+.Dv int16 ,
+.Dv uint16 ,
+.Dv int32 ,
+.Dv uint32 ,
+.Dv int64 ,
+and
+.Dv uint64 ,
+and specified-byte-order variants of them,
+to make it clearer that those types have specified widths.
 .\"
 .\" From: guy@sun.uucp (Guy Harris)
 .\" Newsgroups: net.bugs.usg
index febc207..37b4cb3 100644 (file)
@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: adventure,v 1.13 2010/12/31 16:32:54 christos Exp $
+# $File: adventure,v 1.14 2012/06/21 01:32:26 christos Exp $
 # adventure: file(1) magic for Adventure game files
 #
 # from Allen Garvin <earendil@faeryland.tamu-commerce.edu>
 #
 0      ubyte                   >0
 >0     ubyte                   <9
->>16   belong&0xfe00f0f0       0x3030  Infocom game data
->>>0   ubyte                   x       (Z-machine %d,
->>>>2  ubeshort                x       Release %d /
->>>>18 string                  >\0     Serial %.6s)
+>>16   belong&0xfe00f0f0       0x3030
+>>>0   ubyte                   < 10
+>>>>2  ubeshort                < 10
+>>>>>18        regex                   [0-9][0-9][0-9][0-9][0-9][0-9]
+>>>>>>0        ubyte                   < 10    Infocom (Z-machine %d,
+>>>>>>>2       ubeshort        < 10    Release %d /
+>>>>>>>>18     string          >\0     Serial %.6s)
+!:strength + 40
 
 #------------------------------------------------------------------------------
 # Glulx:  file(1) magic for Glulx binaries.
index f4c9cf2..8fdf376 100644 (file)
@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: amigaos,v 1.14 2009/09/19 16:28:07 christos Exp $
+# $File: amigaos,v 1.15 2012/06/21 01:13:59 christos Exp $
 # amigaos:  file(1) magic for AmigaOS binary formats:
 
 #
@@ -63,3 +63,6 @@
 # From: Alex Beregszaszi <alex@fsn.hu>
 0      string          LZX             LZX compressed archive (Amiga)
 
+# From: Przemek Kramarczyk <pkramarczyk@gmail.com>
+0      string          .KEY            AmigaDOS script
+0      string          .key            AmigaDOS script
diff --git a/contrib/file/magic/Magdir/android b/contrib/file/magic/Magdir/android
new file mode 100644 (file)
index 0000000..cae0cb7
--- /dev/null
@@ -0,0 +1,100 @@
+
+#------------------------------------------------------------
+# $File: android,v 1.3 2013/11/08 01:24:22 christos Exp $
+# Various android related magic entries
+#------------------------------------------------------------
+
+# Dalvik .dex format. http://retrodev.com/android/dexformat.html
+# From <mkf@google.com> "Mike Fleming"
+# Fixed to avoid regexec 17 errors on some dex files
+# From <diff@lookout.com> "Tim Strazzere"
+0      string  dex\n
+>0     regex   dex\n[0-9]{2}\0 Dalvik dex file
+>4     string  >000                    version %s
+0      string  dey\n
+>0     regex   dey\n[0-9]{2}\0 Dalvik dex file (optimized for host)
+>4     string  >000                    version %s
+
+# http://android.stackexchange.com/questions/23357/\
+# is-there-a-way-to-look-inside-and-modify-an-adb-backup-created-file/\
+# 23608#23608
+0      string  ANDROID\040BACKUP\n     Android Backup
+>15    string  1\n                     \b, version 1
+>17    string  0\n                     \b, uncompressed
+>17    string  1\n                     \b, compressed
+>19    string  none\n                  \b, unencrypted
+>19    string  AES-256\n               \b, encrypted AES-256
+
+# Android bootimg format
+# From https://android.googlesource.com/\
+# platform/system/core/+/master/mkbootimg/bootimg.h
+0              string  ANDROID!        Android bootimg
+>8             lelong  >0                      \b, kernel
+>>12   lelong  >0                      \b (0x%x)
+>16            lelong  >0                      \b, ramdisk
+>>20   lelong  >0                      \b (0x%x)
+>24            lelong  >0                      \b, second stage
+>>28   lelong  >0                      \b (0x%x)
+>36            lelong  >0                      \b, page size: %d
+>38            string  >0                      \b, name: %s
+>64            string  >0                      \b, cmdline (%s)
+# Dalvik .dex format. http://retrodev.com/android/dexformat.html
+# From <mkf@google.com> "Mike Fleming"
+# Fixed to avoid regexec 17 errors on some dex files
+# From <diff@lookout.com> "Tim Strazzere"
+0      string  dex\n
+>0     regex   dex\n[0-9]{2}\0 Dalvik dex file
+>4     string  >000                    version %s
+0      string  dey\n
+>0     regex   dey\n[0-9]{2}\0 Dalvik dex file (optimized for host)
+>4     string  >000                    version %s
+
+# http://android.stackexchange.com/questions/23357/\
+# is-there-a-way-to-look-inside-and-modify-an-adb-backup-created-file/\
+# 23608#23608
+0      string  ANDROID\040BACKUP\n     Android Backup
+>15    string  1\n                     \b, version 1
+>17    string  0\n                     \b, uncompressed
+>17    string  1\n                     \b, compressed
+>19    string  none\n                  \b, unencrypted
+>19    string  AES-256\n               \b, encrypted AES-256
+
+# Android bootimg format
+# From https://android.googlesource.com/\
+# platform/system/core/+/master/mkbootimg/bootimg.h
+0              string  ANDROID!        Android bootimg
+>8             lelong  >0                      \b, kernel
+>>12   lelong  >0                      \b (0x%x)
+>16            lelong  >0                      \b, ramdisk
+>>20   lelong  >0                      \b (0x%x)
+>24            lelong  >0                      \b, second stage
+>>28   lelong  >0                      \b (0x%x)
+>36            lelong  >0                      \b, page size: %d
+>38            string  >0                      \b, name: %s
+>64            string  >0                      \b, cmdline (%s)
+
+# Android Backup archive
+# From: Ariel Shkedi
+# File extension: .ab
+# No mime-type defined
+# URL: https://github.com/android/platform_frameworks_base/blob/\
+# 0bacfd2ba68d21a68a3df345b830bc2a1e515b5a/services/java/com/\
+# android/server/BackupManagerService.java#L2367
+# After the header comes a tar file
+# If compressed, the entire tar file is compressed with JAVA deflate
+#
+# Include the version number hardcoded with the magic string to avoid
+# false positives
+0      string/b        ANDROID\ BACKUP\n1\n    Android Backup
+>17    string          0\n                     \b, Not-Compressed
+>17    string          1\n                     \b, Compressed
+# any string as long as it's not the word none (which is matched below)
+>>19    regex/1                \^([^n\n]|n[^o]|no[^n]|non[^e]|none.+).*        \b, Encrypted (%s)
+>>19   string          none\n                  \b, Not-Encrypted
+# Commented out because they don't seem useful to print
+# (but they are part of the header - the tar file comes after them):
+#>>>&1         regex/1 .*      \b, Password salt: %s
+#>>>>&1                regex/1 .*      \b, Master salt: %s
+#>>>>>&1       regex/1 .*      \b, PBKDF2 rounds: %s
+#>>>>>>&1      regex/1 .*      \b, IV: %s
+#>>>>>>>&1     regex/1 .*      \b, Key: %s
index c09a26a..198b8c5 100644 (file)
@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: animation,v 1.45 2011/09/06 11:00:06 christos Exp $
+# $File: animation,v 1.51 2014/03/14 18:47:29 christos Exp $
 # animation:  file(1) magic for animation/movie formats
 #
 # animation formats
 >>4      byte               77             \b, main
 >>4      byte               88             \b, extended
 >>6      byte               x              \b @ L %u
+# GRR too general as it catches also FoxPro Memo example NG.FPT
 >3       byte               0xB0           MPEG sequence, v4
+# TODO: maybe this extra line exclude FoxPro Memo example NG.FPT starting with 000001b0 00000100 00000000
+#>>4      byte               !0             MPEG sequence, v4
 !:mime  video/mpeg4-generic
 >>5      belong             0x000001B5
 >>>9     byte               &0x80
 
 # MP2, M2A
 0       beshort&0xFFFE  0xFFF4         MPEG ADTS, layer II, v2
+!:mime audio/mpeg
 # rate 
 >2      byte&0xF0       0x10           \b,   8 kbps
 >2      byte&0xF0       0x20           \b,  16 kbps 
 # iso 13818 transport stream
 #
 # from Oskar Schirmer <schirmer@scara.com> Feb 3, 2001 (ISO 13818.1)
-# (the following is a little bit restrictive and works fine for a stream
-#  that starts with PAT properly. it won't work for stream data, that is
-#  cut from an input device data right in the middle, but this shouldn't
-#  disturb)
 # syncbyte      8 bit  0x47
 # error_ind     1 bit  -
 # payload_start 1 bit  1
 # PID          13 bit  0x0000
 # scrambling    2 bit  -
 # adaptfld_ctrl 2 bit  1 or 3
-# conti_count   4 bit  0
-0      belong&0xFF5FFF1F       0x47400010      MPEG transport stream data
->188   byte                    !0x47           CORRUPTED
+# conti_count   4 bit  -
+0      belong&0xFF5FFF10       0x47400010
+>188   byte                    0x47            MPEG transport stream data
 
 # DIF digital video file format <mpruett@sgi.com>
 0      belong&0xffffff00       0x1f070000      DIF
 >0     byte            x               GameCube movie,
 >0x34  ubeshort        x               %d x
 >0x36  ubeshort        x               %d,
->0x26  ubeshort        x               %dµs,
+>0x26  ubeshort        x               %dus,
 >0x42  ubeshort        0               no audio
 >0x42  ubeshort        >0              %dHz audio
 
 
 #                                              MPEG file
 # MPEG sequences
-# FIXME: This section is from the old magic.mime file and needs integrating with the rest
-0       belong             0x000001BA
->4      byte               &0x40
-!:mime video/mp2p
->4      byte               ^0x40
-!:mime video/mpeg
-0       belong             0x000001BB
-!:mime video/mpeg
-0       belong             0x000001B0
-!:mime video/mp4v-es
-0       belong             0x000001B5
-!:mime video/mp4v-es
-0       belong             0x000001B3
-!:mime video/mpv
-0       belong&0xFF5FFF1F  0x47400010
-!:mime video/mp2t
-0       belong             0x00000001
->4      byte&0x1F         0x07
-!:mime video/h264
+# FIXME: This section is from the old magic.mime file and needs
+# integrating with the rest
+#0       belong             0x000001BA
+#>4      byte               &0x40
+#!:mime        video/mp2p
+#>4      byte               ^0x40
+#!:mime        video/mpeg
+#0       belong             0x000001BB
+#!:mime        video/mpeg
+#0       belong             0x000001B0
+#!:mime        video/mp4v-es
+#0       belong             0x000001B5
+#!:mime        video/mp4v-es
+#0       belong             0x000001B3
+#!:mime        video/mpv
+#0       belong&0xFF5FFF10  0x47400010
+#!:mime        video/mp2t
+#0       belong             0x00000001
+#>4      byte&0x1F        0x07
+#!:mime        video/h264
 
 # Type: Bink Video
 # Extension: .bik
diff --git a/contrib/file/magic/Magdir/aout b/contrib/file/magic/Magdir/aout
new file mode 100644 (file)
index 0000000..69b6ec6
--- /dev/null
@@ -0,0 +1,46 @@
+
+#------------------------------------------------------------------------------
+# $File: aout,v 1.1 2013/01/09 22:37:23 christos Exp $
+# aout:  file(1) magic for a.out executable/object/etc entries that
+# handle executables on multiple platforms.
+#
+
+#
+# Little-endian 32-bit-int a.out, merged from bsdi (for BSD/OS, from
+# BSDI), netbsd, and vax (for UNIX/32V and BSD)
+#
+# XXX - is there anything we can look at to distinguish BSD/OS 386 from
+# NetBSD 386 from various VAX binaries?  The BSD/OS shared library flag
+# works only for binaries using shared libraries.  Grabbing the entry
+# point from the a.out header, using it to find the first code executed
+# in the program, and looking at that might help.
+#
+0      lelong          0407            a.out little-endian 32-bit executable
+>16    lelong          >0              not stripped
+>32    byte            0x6a            (uses BSD/OS shared libs)
+
+0      lelong          0410            a.out little-endian 32-bit pure executable
+>16    lelong          >0              not stripped
+>32    byte            0x6a            (uses BSD/OS shared libs)
+
+0      lelong          0413            a.out little-endian 32-bit demand paged pure executable
+>16    lelong          >0              not stripped
+>32    byte            0x6a            (uses BSD/OS shared libs)
+
+#
+# Big-endian 32-bit-int a.out, merged from sun (for old 68010 SunOS a.out),
+# mips (for old 68020(!) SGI a.out), and netbsd (for old big-endian a.out).
+#
+# XXX - is there anything we can look at to distinguish old SunOS 68010
+# from old 68020 IRIX from old NetBSD?  Again, I guess we could look at
+# the first instruction or instructions in the program.
+#
+0      belong          0407            a.out big-endian 32-bit executable
+>16    belong          >0              not stripped
+
+0      belong          0410            a.out big-endian 32-bit pure executable
+>16    belong          >0              not stripped
+
+0      belong          0413            a.out big-endian 32-bit demand paged executable
+>16    belong          >0              not stripped
+
index dad3eee..633c012 100644 (file)
@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: apple,v 1.24 2010/11/25 15:00:12 christos Exp $
+# $File: apple,v 1.27 2013/03/09 22:36:00 christos Exp $
 # apple:  file(1) magic for Apple file formats
 #
 0      search/1/t      FiLeStArTfIlEsTaRt      binscii (apple ][) text
 # This is incredibly sloppy, but will be true if the program was
 # written at its usual memory location of 2048 and its first line
 # number is less than 256.  Yuck.
+# update by Joerg Jenderek at Feb 2013
 
-0       belong&0xff00ff 0x80000 Applesoft BASIC program data
+# GRR: this test is still too general as it catches also Gujin BOOT144.SYS (0xfa080000)
+#0       belong&0xff00ff 0x80000 Applesoft BASIC program data
+0      belong&0x00ff00ff       0x00080000      
+# assuming that line number must be positive
+>2     leshort                 >0              Applesoft BASIC program data, first line number %d
 #>2     leshort         x       \b, first line number %d
 
 # ORCA/EZ assembler:
 # From: "Nelson A. de Oliveira" <naoliv@gmail.com>
 # .vdi
 4      string innotek\ VirtualBox\ Disk\ Image %s
+
+# Apple disk partition stuff, strengthen the magic using byte 4
+0      beshort 0x4552
+>4     byte    0                       Apple Driver Map
+>>2    beshort x                       \b, blocksize %d
+>>4    belong  x                       \b, blockcount %d
+>>10   beshort x                       \b, devtype %d
+>>12   beshort x                       \b, devid %d
+>>20   beshort x                       \b, descriptors %d
+# Assume       8 partitions each at a multiple of the sector size.
+# We could glean this from the partition descriptors, but they are empty!?!?
+>>(2.S*1)      indirect                \b, contains[@0x%x]: 
+>>(2.S*2)      indirect                \b, contains[@0x%x]: 
+>>(2.S*3)      indirect                \b, contains[@0x%x]: 
+>>(2.S*4)      indirect                \b, contains[@0x%x]: 
+>>(2.S*5)      indirect                \b, contains[@0x%x]: 
+>>(2.S*6)      indirect                \b, contains[@0x%x]: 
+>>(2.S*7)      indirect                \b, contains[@0x%x]: 
+>>(2.S*8)      indirect                \b, contains[@0x%x]: 
+
+# Yes, the 3rd and 4th bytes are reserved, but we use them to make the
+# magic stronger.
+0      belong  0x504d0000              Apple Partition Map
+>4     belong  x                       \b, map block count %d
+>8     belong  x                       \b, start block %d
+>12    belong  x                       \b, block count %d
+>16    string >0                       \b, name %s
+>48    string >0                       \b, type %s
+>124   string >0                       \b, processor %s
+>140   string >0                       \b, boot arguments %s
+>92    belong  & 1                     \b, valid
+>92    belong  & 2                     \b, allocated
+>92    belong  & 4                     \b, in use
+>92    belong  & 8                     \b, has boot info
+>92    belong  & 16                    \b, readable
+>92    belong  & 32                    \b, writable
+>92    belong  & 64                    \b, pic boot code
+>92    belong  & 128                   \b, chain compatible driver
+>92    belong  & 256                   \b, real driver
+>92    belong  & 512                   \b, chain driver
+>92    belong  & 1024                  \b, mount at startup
+>92    belong  & 2048                  \b, is the startup partition
+
+#http://wiki.mozilla.org/DS_Store_File_Format`
+#http://en.wikipedia.org/wiki/.DS_Store
+0      string  \0\0\0\1Bud1\0          Apple Desktop Services Store
index 2ff3323..32f8592 100644 (file)
@@ -1,5 +1,5 @@
 #------------------------------------------------------------------------------
-# $File: archive,v 1.70 2011/10/26 15:44:47 christos Exp $
+# $File: archive,v 1.82 2014/03/14 18:47:29 christos Exp $
 # archive:  file(1) magic for archive formats (see also "msdos" for self-
 #           extracting compressed archives)
 #
 0      string          070701          ASCII cpio archive (SVR4 with no CRC)
 0      string          070702          ASCII cpio archive (SVR4 with CRC)
 
-# Debian package (needs to go before regular portable archives)
+#
+# Various archive formats used by various versions of the "ar"
+# command.
+#
+
+#
+# Original UNIX archive formats.
+# They were written with binary values in host byte order, and
+# the magic number was a host "int", which might have been 16 bits
+# or 32 bits.  We don't say "PDP-11" or "VAX", as there might have
+# been ports to little-endian 16-bit-int or 32-bit-int platforms
+# (x86?) using some of those formats; if none existed, feel free
+# to use "PDP-11" for little-endian 16-bit and "VAX" for little-endian
+# 32-bit.  There might have been big-endian ports of that sort as
+# well.
+#
+0      leshort         0177555         very old 16-bit-int little-endian archive
+0      beshort         0177555         very old 16-bit-int big-endian archive
+0      lelong          0177555         very old 32-bit-int little-endian archive
+0      belong          0177555         very old 32-bit-int big-endian archive
+
+0      leshort         0177545         old 16-bit-int little-endian archive
+>2     string          __.SYMDEF       random library
+0      beshort         0177545         old 16-bit-int big-endian archive
+>2     string          __.SYMDEF       random library
+0      lelong          0177545         old 32-bit-int little-endian archive
+>4     string          __.SYMDEF       random library
+0      belong          0177545         old 32-bit-int big-endian archive
+>4     string          __.SYMDEF       random library
+
+#
+# From "pdp" (but why a 4-byte quantity?)
+#
+0      lelong          0x39bed         PDP-11 old archive
+0      lelong          0x39bee         PDP-11 4.0 archive
+
+#
+# XXX - what flavor of APL used this, and was it a variant of
+# some ar archive format?  It's similar to, but not the same
+# as, the APL workspace magic numbers in pdp.
+#
+0      long            0100554         apl workspace
+
+#
+# System V Release 1 portable(?) archive format.
+#
+0      string          =<ar>           System V Release 1 ar archive
+!:mime application/x-archive
+
+#
+# Debian package; it's in the portable archive format, and needs to go
+# before the entry for regular portable archives, as it's recognized as
+# a portable archive whose first member has a name beginning with
+# "debian".
 #
 0      string          =!<arch>\ndebian
-!:mime application/x-debian-package
 >8     string          debian-split    part of multipart Debian package
+!:mime application/x-debian-package
 >8     string          debian-binary   Debian binary package
+!:mime application/x-debian-package
 >8     string          !debian
 >68    string          >\0             (format %s)
 # These next two lines do not work, because a bzip2 Debian archive
 #>84   string          gz              \b, uses gzip compression
 #>136  ledate          x               created: %s
 
-# other archives
-0      long            0177555         very old archive
-0      short           0177555         very old PDP-11 archive
-0      long            0177545         old archive
-0      short           0177545         old PDP-11 archive
-0      long            0100554         apl workspace
-0      string          =<ar>           archive
-!:mime application/x-archive
-
-# MIPS archive (needs to go before regular portable archives)
+#
+# MIPS archive; they're in the portable archive format, and need to go
+# before the entry for regular portable archives, as it's recognized as
+# a portable archive whose first member has a name beginning with
+# "__________E".
 #
 0      string  =!<arch>\n__________E   MIPS archive
+!:mime application/x-archive
 >20    string  U                       with MIPS Ucode members
 >21    string  L                       with MIPSEL members
 >21    string  B                       with MIPSEB members
 0      search/1        -h-             Software Tools format archive text
 
 #
-# XXX - why are there multiple <ar> thingies?  Note that 0x213c6172 is
-# "!<ar", so, for new-style (4.xBSD/SVR2andup) archives, we have:
-#
-# 0    string          =!<arch>                current ar archive
-# 0    long            0x213c6172      archive file
-#
-# and for SVR1 archives, we have:
-#
-# 0    string          \<ar>           System V Release 1 ar archive
-# 0    string          =<ar>           archive
-#
-# XXX - did Aegis really store shared libraries, breakpointed modules,
-# and absolute code program modules in the same format as new-style
-# "ar" archives?
+# BSD/SVR2-and-later portable archive formats.
 #
 0      string          =!<arch>                current ar archive
 !:mime application/x-archive
 >8     string          __.SYMDEF       random library
->0     belong          =65538          - pre SR9.5
->0     belong          =65539          - post SR9.5
->0     beshort         2               - object archive
->0     beshort         3               - shared library module
->0     beshort         4               - debug break-pointed module
->0     beshort         5               - absolute code program module
-0      string          \<ar>           System V Release 1 ar archive
-0      string          =<ar>           archive
-#
-# XXX - from "vax", which appears to collect a bunch of byte-swapped
-# thingies, to help you recognize VAX files on big-endian machines;
-# with "leshort", "lelong", and "string", that's no longer necessary....
-#
-0      belong          0x65ff0000      VAX 3.0 archive
-0      belong          0x3c61723e      VAX 5.0 archive
-#
-0      long            0x213c6172      archive file
-0      lelong          0177555         very old VAX archive
-0      leshort         0177555         very old PDP-11 archive
-#
-# XXX - "pdp" claims that 0177545 can have an __.SYMDEF member and thus
-# be a random library (it said 0xff65 rather than 0177545).
-#
-0      lelong          0177545         old VAX archive
->8     string          __.SYMDEF       random library
-0      leshort         0177545         old PDP-11 archive
->8     string          __.SYMDEF       random library
+>68    string          __.SYMDEF\ SORTED       random library
+
 #
-# From "pdp" (but why a 4-byte quantity?)
+# "Thin" archive, as can be produced by GNU ar.
 #
-0      lelong          0x39bed         PDP-11 old archive
-0      lelong          0x39bee         PDP-11 4.0 archive
+0      string          =!<thin>\n      thin archive with
+>68    belong          0               no symbol entries
+>68    belong          1               %d symbol entry
+>68    belong          >1              %d symbol entries
 
 # ARC archiver, from Daniel Quinlan (quinlan@yggdrasil.com)
 #
 # SAR
 3      string  LH5 SAR archive data
 # BSArc/BS2
-0      string  \212\3SB \0 BSArc/BS2 archive data
+0      string  \212\3SB\020\0  BSArc/BS2 archive data
+# Bethesda Softworks Archive (Oblivion)
+0      string  BSA\0           BSArc archive data
+>4     lelong  x               version %d
 # MAR
 2      string  =-ah MAR archive data
 # ACB
 # AMGC
 0      string  \xad6" AMGC archive data
 # NuLIB
-0      string  NõFélå NuLIB archive data
+0      string  N\xc3\xb5F\xc3\xa9lx\xc3\xa5 NuLIB archive data
 # PakLeo
 0      string  LEOLZW PAKLeo archive data
 # ChArc
 # Freeze
 0      string  \x1f\x9f\x4a\x10\x0a Freeze archive data
 # KBoom
-0      string  ¨MP¨ KBoom archive data
+0      string  \xc2\xa8MP\xc2\xa8 KBoom archive data
 # NSQ, must go after CDC Codec
 0      string  \x76\xff NSQ archive data
 # DPA
 # MP3 (archiver, not lossy audio compression)
 0      string  MP3\x1a MP3-Archiver archive data
 # ZET
-0      string  OZÝ ZET archive data
+0      string  OZ\xc3\x9d ZET archive data
 # TSComp
 0      string  \x65\x5d\x13\x8c\x08\x01\x03\x00 TSComp archive data
 # ARQ
 # Xtreme
 0      string  ULEB\0 Xtreme archive data
 # Pack Magic
-0      string  @â\1\0 Pack Magic archive data
+0      string  @\xc3\xa2\1\0 Pack Magic archive data
 # BTS
 0      belong&0xfeffffff       0x1a034465 BTS archive data
 # ELI 5750
 # XPack Data
 0      string  xpa XPack archive data
 # XPack Single Data
-0      string  Í\ jm XPack single archive data
+0      string  \xc3\x8d\ jm XPack single archive data
 
 # TODO: missing due to unknown magic/magic at end of file:
 #DWC
 !:mime application/zip
 
 # Zip archives (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu)
+0      string          PK\005\006      Zip archive data (empty)
 0      string          PK\003\004
 
 # Specialised zip formats which start with a member named 'mimetype'
 !:mime application/vnd.oasis.opendocument.image-template
 
 #  EPUB (OEBPS) books using OCF (OEBPS Container Format)
-#    From: Adam Buchbinder <adam.buchbinder@gmail.com>
 #    http://www.idpf.org/ocf/ocf1.0/download/ocf10.htm, section 4.
-#    (mimetype contains "application/epub+zip")
->>50   string  epub+zip                EPUB ebook data
-!:mime application/epub+zip
+#    From: Ralf Brown <ralf.brown@gmail.com>
+>>50   string  epub+zip        EPUB document
+!:mime application/epub+zip
 
 #  Catch other ZIP-with-mimetype formats
 #      In a ZIP file, the bytes immediately after a member's contents are
 >>>38          regex   [!-OQ-~]+               Zip data (MIME type "%s"?)
 !:mime application/zip
 
+# Java Jar files
+>(26.s+30)     leshort 0xcafe          Java archive data (JAR)
+!:mime application/java-archive
+
 # Generic zip archives (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu)
 #   Next line excludes specialized formats:
->26    string          !\x8\0\0\0mimetype      Zip archive data
+>(26.s+30)     leshort !0xcafe
+>>26    string          !\x8\0\0\0mimetype     Zip archive data
 !:mime application/zip
->>   byte            0x09            \b, at least v0.9 to extract
->>   byte            0x0a            \b, at least v1.0 to extract
->>   byte            0x0b            \b, at least v1.1 to extract
->>   byte            0x14            \b, at least v2.0 to extract
->>   byte            0x2d            \b, at least v3.0 to extract
->>0x161        string          WINZIP          \b, WinZIP self-extracting
+>>>4   byte            0x09            \b, at least v0.9 to extract
+>>>4   byte            0x0a            \b, at least v1.0 to extract
+>>>4   byte            0x0b            \b, at least v1.1 to extract
+>>>4   byte            0x14            \b, at least v2.0 to extract
+>>>4   byte            0x2d            \b, at least v3.0 to extract
+>>>0x161       string          WINZIP          \b, WinZIP self-extracting
 
 # StarView Metafile
 # From Pierre Ducroquet <pinaraf@pinaraf.info>
 #   archive must be an uncompressed file called 'mimetype' with contents
 #   'application/epub+zip'
 
-# start by checking that this is a ZIP archive, then check for the
-#   proper mimetype file
-# From: Ralf Brown <ralf.brown@gmail.com>
-0      string  PK\003\004
->0x1E  string  mimetypeapplication/epub+zip    EPUB document
-!:mime application/epub+zip
 
-# From: "Michał Górny" <mgorny@gentoo.org>
+# From: "Michael Gorny" <mgorny@gentoo.org>
 # ZPAQ: http://mattmahoney.net/dc/zpaq.html
 0      string  zPQ     ZPAQ stream
 >3     byte    x       \b, level %d
index 90aa4ca..805a326 100644 (file)
@@ -1,14 +1,18 @@
 #------------------------------------------------------------------------------
-# $File: assembler,v 1.1 2011/12/08 12:12:46 rrt Exp $
+# $File: assembler,v 1.6 2013/12/11 14:14:20 christos Exp $
 # make:  file(1) magic for assembler source
 #
-0      regex   \^\.asciiz\?    assembler source text
+0      regex   \^[\040\t]{0,50}\\.asciiz               assembler source text
 !:mime text/x-asm
-0      regex   \^\.byte                assembler source text
+0      regex   \^[\040\t]{0,50}\\.byte         assembler source text
 !:mime text/x-asm
-0      regex   \^\.even                assembler source text
+0      regex   \^[\040\t]{0,50}\\.even         assembler source text
 !:mime text/x-asm
-0      regex   \^\.globl               assembler source text
+0      regex   \^[\040\t]{0,50}\\.globl                assembler source text
 !:mime text/x-asm
-0      regex   \^\.text                assembler source text
+0      regex   \^[\040\t]{0,50}\\.text         assembler source text
+!:mime text/x-asm
+0      regex   \^[\040\t]{0,50}\\.file         assembler source text
+!:mime text/x-asm
+0      regex   \^[\040\t]{0,50}\\.type         assembler source text
 !:mime text/x-asm
index 0cbe259..ced9324 100644 (file)
@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: audio,v 1.64 2012/02/20 16:37:34 christos Exp $
+# $File: audio,v 1.68 2013/12/02 13:32:26 christos Exp $
 # audio:  file(1) magic for sound formats (see also "iff")
 #
 # Jan Nicolai Langfeldt (janl@ifi.uio.no), Dan Quinlan (quinlan@yggdrasil.com),
 >>12           ulelong         x               \b, sample rate %d
 
 # adlib sound files
-# From Gürkan Sengün <gurkan@linuks.mine.nu>, http://www.linuks.mine.nu
+# From Gurkan Sengun <gurkan@linuks.mine.nu>, http://www.linuks.mine.nu
 0      string          RAWADATA        RdosPlay RAW
 
 1068   string          RoR             AMUSIC Adlib Tracker
 
 # musepak support From: "Jiri Pejchal" <jiri.pejchal@gmail.com>
 0       string          MP+     Musepack audio
+!:mime audio/x-musepack
 >3      byte            255     \b, SV pre8
 >3      byte&0xF        0x6     \b, SV 6
 >3      byte&0xF        0x8     \b, SV 8
 # URL:  http://wiki.multimedia.cx/index.php?title=WavPack
 # From: Mike Melanson <mike@multimedia.cx>
 0      string  wvpk    WavPack Lossless Audio
+
+# From Fábio R. Schmidlin <frs@pop.com.br>
+# VGM music file
+0      string          Vgm\ 
+>9     ubyte           >0      VGM Video Game Music dump v
+>>9    ubyte/16        >0      \b%d
+>>9    ubyte&0x0F      x       \b%d
+>>8    ubyte/16        x       \b.%d
+>>8    ubyte&0x0F      >0      \b%d
+#Get soundchips
+>>8    ubyte           x       \b, soundchip(s)=
+>>0x0C ulelong         >0      SN76489,
+>>0x10 ulelong         >0      YM2413,
+>>0x2C ulelong         >0      YM2612,
+>>0x30 ulelong         >0      YM2151,
+>>0x38 ulelong         >0      Sega PCM,
+>>0x34 ulelong         >0xC
+>>>0x40        ulelong         >0      RF5C68,
+>>0x34 ulelong         >0x10
+>>>0x44        ulelong         >0      YM2203,
+>>0x34 ulelong         >0x14
+>>>0x48        ulelong         >0      YM2608,
+>>0x34 ulelong         >0x18
+>>>0x4C        lelong          >0      YM2610,
+>>>0x4C        lelong          <0      YM2610B,
+>>0x34 ulelong         >0x1C
+>>>0x50        ulelong         >0      YM3812,
+>>0x34 ulelong         >0x20
+>>>0x54        ulelong         >0      YM3526,
+>>0x34 ulelong         >0x24
+>>>0x58        ulelong         >0      Y8950,
+>>0x34 ulelong         >0x28
+>>>0x5C        ulelong         >0      YMF262,
+>>0x34 ulelong         >0x2C
+>>>0x60        ulelong         >0      YMF278B,
+>>0x34 ulelong         >0x30
+>>>0x64        ulelong         >0      YMF271,
+>>0x34 ulelong         >0x34
+>>>0x68        ulelong         >0      YMZ280B,
+>>0x34 ulelong         >0x38
+>>>0x6C        ulelong         >0      RF5C164,
+>>0x34 ulelong         >0x3C
+>>>0x70        ulelong         >0      PWM,
+>>0x34 ulelong         >0x40
+>>>0x74        ulelong         >0
+>>>>0x78 ubyte         0x00    AY-3-8910,
+>>>>0x78 ubyte         0x01    AY-3-8912,
+>>>>0x78 ubyte         0x02    AY-3-8913,
+>>>>0x78 ubyte         0x03    AY-3-8930,
+>>>>0x78 ubyte         0x10    YM2149,
+>>>>0x78 ubyte         0x11    YM3439,
+
+# GVOX Encore file format
+# Since this is a proprietary file format and there is no publicly available
+# format specification, this is just based on induction
+#
+0      string  SCOW
+>4     byte    0xc4    GVOX Encore music, version 5.0 or above
+>4     byte    0xc2    GVOX Encore music, version < 5.0
+
+0      string  ZBOT
+>4     byte    0xc5    GVOX Encore music, version < 5.0
+
diff --git a/contrib/file/magic/Magdir/blackberry b/contrib/file/magic/Magdir/blackberry
new file mode 100644 (file)
index 0000000..4a61d4e
--- /dev/null
@@ -0,0 +1,8 @@
+
+#------------------------------------------------------------------------------
+# $File: blackberry,v 1.1 2014/01/31 01:51:32 christos Exp $
+# blackberry:  file(1) magic for BlackBerry file formats
+#
+5      belong  0               
+>8     belong  010010010       BlackBerry RIM ETP file
+>>22   string  x               \b for %s
index be16e3a..e8a6c35 100644 (file)
@@ -1,25 +1,15 @@
 
 #------------------------------------------------------------------------------
-# $File: bsdi,v 1.5 2009/09/19 16:28:08 christos Exp $
+# $File: bsdi,v 1.6 2013/01/09 22:37:24 christos Exp $
 # bsdi:  file(1) magic for BSD/OS (from BSDI) objects
+# Some object/executable formats use the same magic numbers as are used
+# in other OSes; those are handled by entries in aout.
 #
 
 0      lelong          0314            386 compact demand paged pure executable
 >16    lelong          >0              not stripped
 >32    byte            0x6a            (uses shared libs)
 
-0      lelong          0407            386 executable
->16    lelong          >0              not stripped
->32    byte            0x6a            (uses shared libs)
-
-0      lelong          0410            386 pure executable
->16    lelong          >0              not stripped
->32    byte            0x6a            (uses shared libs)
-
-0      lelong          0413            386 demand paged pure executable
->16    lelong          >0              not stripped
->32    byte            0x6a            (uses shared libs)
-
 # same as in SunOS 4.x, except for static shared libraries
 0      belong&077777777        0600413         sparc demand paged
 >0     byte            &0x80
index 0665627..cd17648 100644 (file)
@@ -1,5 +1,5 @@
 #------------------------------------------------------------------------------
-# $File: c-lang,v 1.16 2011/12/09 08:02:16 rrt Exp $
+# $File: c-lang,v 1.18 2013/08/14 13:06:43 christos Exp $
 # c-lang:  file(1) magic for C and related languages programs
 #
 
 # C
 0      regex   \^#include      C source text
 !:mime text/x-c
-0      regex   \^char          C source text
+0      regex   \^char[\ \t\n]+ C source text
 !:mime text/x-c
-0      regex   \^double                C source text
+0      regex   \^double[\ \t\n]+               C source text
 !:mime text/x-c
-0      regex   \^extern                C source text
+0      regex   \^extern[\ \t\n]+               C source text
 !:mime text/x-c
-0      regex   \^float         C source text
+0      regex   \^float[\ \t\n]+                C source text
 !:mime text/x-c
-0      regex   \^struct                C source text
+0      regex   \^struct[\ \t\n]+               C source text
 !:mime text/x-c
-0      regex   \^union         C source text
+0      regex   \^union[\ \t\n]+                C source text
 !:mime text/x-c
 0      search/8192     main(           C source text
 !:mime text/x-c
 
 # C++
 # The strength of these rules is increased so they beat the C rules above
-0      regex   \^template      C++ source text
-!:strength + 10
+0      regex   \^template[\ \t\n]+     C++ source text
+!:strength + 5
 !:mime text/x-c++
-0      regex   \^virtual               C++ source text
-!:strength + 10
+0      regex   \^virtual[\ \t\n]+              C++ source text
+!:strength + 5
 !:mime text/x-c++
-0      regex   \^class         C++ source text
-!:strength + 10
+0      regex   \^class[\ \t\n]+                C++ source text
+!:strength + 5
 !:mime text/x-c++
 0      regex   \^public:               C++ source text
-!:strength + 10
+!:strength + 5
 !:mime text/x-c++
 0      regex   \^private:              C++ source text
-!:strength + 10
+!:strength + 5
 !:mime text/x-c++
 
 # From: Mikhail Teterin <mi@aldan.algebra.com> 
index cc4ef34..9b09fd7 100644 (file)
@@ -1,16 +1,9 @@
 
 #------------------------------------------------------------------------------
-# $File: cad,v 1.11 2011/12/08 12:12:46 rrt Exp $
+# $File: cad,v 1.13 2014/03/23 18:05:38 christos Exp $
 # autocad:  file(1) magic for cad files
 #
 
-# AutoCAD DWG versions R13/R14 (www.autodesk.com)
-# Written December 01, 2003 by Lester Hightower
-# Based on the DWG File Format Specifications at http://www.opendwg.org/
-0      string         \101\103\061\060\061                AutoCAD
->5     string         \062\000\000\000\000                DWG ver. R13
->5     string         \064\000\000\000\000                DWG ver. R14
-
 # Microstation DGN/CIT Files (www.bentley.com)
 # Last updated July 29, 2005 by Lester Hightower
 # DGN is the default file extension of Microstation/Intergraph CAD files.
 >4     string  \030\000\000                    CITFile
 >4     string  \030\000\003                    CITFile
 
+# AutoCAD 
+# Merge of the different contributions and updates from http://en.wikipedia.org/wiki/Dwg
+# and http://www.iana.org/assignments/media-types/image/vnd.dwg
+0      string  MC0.0   DWG AutoDesk AutoCAD Release 1.0
+!:mime image/vnd.dwg
+0      string  AC1.2   DWG AutoDesk AutoCAD Release 1.2
+!:mime image/vnd.dwg
+0      string  AC1.3   DWG AutoDesk AutoCAD Release 1.3
+!:mime image/vnd.dwg
+0      string  AC1.40  DWG AutoDesk AutoCAD Release 1.40
+!:mime image/vnd.dwg
+0      string  AC1.50  DWG AutoDesk AutoCAD Release 2.05
+!:mime image/vnd.dwg
+0      string  AC2.10  DWG AutoDesk AutoCAD Release 2.10
+!:mime image/vnd.dwg
+0      string  AC2.21  DWG AutoDesk AutoCAD Release 2.21
+!:mime image/vnd.dwg
+0      string  AC2.22  DWG AutoDesk AutoCAD Release 2.22
+!:mime image/vnd.dwg
+0      string  AC1001  DWG AutoDesk AutoCAD Release 2.22
+!:mime image/vnd.dwg
+0      string  AC1002  DWG AutoDesk AutoCAD Release 2.50
+!:mime image/vnd.dwg
+0      string  AC1003  DWG AutoDesk AutoCAD Release 2.60
+!:mime image/vnd.dwg
+0      string  AC1004  DWG AutoDesk AutoCAD Release 9
+!:mime image/vnd.dwg
+0      string  AC1006  DWG AutoDesk AutoCAD Release 10
+!:mime image/vnd.dwg
+0      string  AC1009  DWG AutoDesk AutoCAD Release 11/12
+!:mime image/vnd.dwg
+# AutoCAD DWG versions R13/R14 (www.autodesk.com)
+# Written December 01, 2003 by Lester Hightower
+# Based on the DWG File Format Specifications at http://www.opendwg.org/
 # AutoCad, from Nahuel Greco
 # AutoCAD DWG versions R12/R13/R14 (www.autodesk.com)
-0      string  AC1012          DWG AutoDesk AutoCad (release 12)
-0      string  AC1013          DWG AutoDesk AutoCad (release 13)
-0      string  AC1014          DWG AutoDesk AutoCad (release 14)
+0      string  AC1012  DWG AutoDesk AutoCAD Release 13
+!:mime image/vnd.dwg
+0      string  AC1014  DWG AutoDesk AutoCAD Release 14
+!:mime image/vnd.dwg
+0      string  AC1015  DWG AutoDesk AutoCAD 2000/2002
+!:mime image/vnd.dwg
+
 # A new version of AutoCAD DWG
 # Sergey Zaykov (mail_of_sergey@mail.ru, sergey_zaikov@rambler.ru,
 # ICQ 358572321)
 # From various sources like:
 # http://autodesk.blogs.com/between_the_lines/autocad-release-history.html
-0      string  AC1018          DWG AutoDesk AutoCAD 2004/2005/2006
-0      string  AC1021          DWG AutoDesk AutoCAD 2007/2008/2009
-0      string  AC1024          DWG AutoDesk AutoCAD 2010/2011
+0      string  AC1018  DWG AutoDesk AutoCAD 2004/2005/2006
+!:mime image/vnd.dwg
+0      string  AC1021  DWG AutoDesk AutoCAD 2007/2008/2009
+!:mime image/vnd.dwg
+0      string  AC1024  DWG AutoDesk AutoCAD 2010/2011/2012
+!:mime image/vnd.dwg
+0      string  AC1027  DWG AutoDesk AutoCAD 2013/2014
+!:mime image/vnd.dwg
 
 # KOMPAS 2D drawing from ASCON 
 # This is KOMPAS 2D drawing or fragment of drawing but is not detailed nor
 0      beshort 0x0809          Bentley/Intergraph MicroStation
 >0x02  byte    0xfe
 >>0x04 beshort 0x1800          CIT raster CAD
-0      string  AC1012          AutoDesk AutoCAD R13
-0      string  AC1014          AutoDesk AutoCAD R14 
-0      string  AC1015          AutoDesk AutoCAD R2000
 
 # 3DS (3d Studio files) Conflicts with diff output 0x3d '='
 #16    beshort         0x3d3d          image/x-3ds
+
+# MegaCAD 2D/3D drawing (.prt)
+# http://megacad.de/
+# From: Markus Heidelberg <markus.heidelberg@web.de>
+0      string  MegaCad23\0     MegaCAD 2D/3D drawing
index 6400e2f..0afcb8d 100644 (file)
@@ -1,22 +1,23 @@
 
 #------------------------------------------------------------------------------
-# $File: cafebabe,v 1.8 2009/09/19 16:28:08 christos Exp $
+# $File: cafebabe,v 1.15 2014/03/14 18:47:29 christos Exp $
 # Cafe Babes unite!
 #
-# Since Java bytecode and Mach-O fat-files have the same magic number, the test
-# must be performed in the same "magic" sequence to get both right.  The long
-# at offset 4 in a mach-O fat file tells the number of architectures; the short at
-# offset 4 in a Java bytecode file is the JVM minor version and the
-# short at offset 6 is the JVM major version.  Since there are only 
+# Since Java bytecode and Mach-O universal binaries have the same magic number,
+# the test must be performed in the same "magic" sequence to get both right.
+# The long at offset 4 in a Mach-O universal binary tells the number of
+# architectures; the short at offset 4 in a Java bytecode file is the JVM minor
+# version and the short at offset 6 is the JVM major version.  Since there are only 
 # only 18 labeled Mach-O architectures at current, and the first released 
 # Java class format was version 43.0, we can safely choose any number
 # between 18 and 39 to test the number of architectures against
 # (and use as a hack). Let's not use 18, because the Mach-O people
 # might add another one or two as time goes by...
 #
+### JAVA START ###
 0      belong          0xcafebabe
-!:mime application/x-java-applet
 >4     belong          >30             compiled Java class data,
+!:mime application/x-java-applet
 >>6    beshort         x               version %d.
 >>4    beshort         x               \b%d
 # Which is which?
 >>4    belong          0x0031          (Java 1.5)
 >>4    belong          0x0032          (Java 1.6)
 
+0      belong          0xcafed00d      JAR compressed with pack200,
+>5     byte            x               version %d.
+>4     byte            x               \b%d
+!:mime application/x-java-pack200
 
-0      belong          0xcafebabe
->4     belong          1               Mach-O fat file with 1 architecture
->4     belong          >1
->>4    belong          <20             Mach-O fat file with %ld architectures
 
 0      belong          0xcafed00d      JAR compressed with pack200,
->>5    byte            x               version %d.
->>4    byte            x               \b%d
+>    byte            x               version %d.
+>    byte            x               \b%d
 !:mime application/x-java-pack200
+
+### JAVA END ###
+### MACH-O START ###
+
+0      name            mach-o          \b [
+>0     use             mach-o-cpu      \b
+>&(8.L)        indirect                        \b: 
+>0     belong          x               \b]
+
+0      belong          0xcafebabe
+>4     belong          1               Mach-O universal binary with 1 architecture:
+>>8    use             mach-o          \b
+>4     belong          >1
+>>4    belong          <20             Mach-O universal binary with %ld architectures:
+>>>8   use             mach-o          \b
+>>>28  use             mach-o          \b
+>>4    belong          >2
+>>>48  use             mach-o          \b
+>>4    belong          >3
+>>>68  use             mach-o          \b
+
+### MACH-O END ###
index a2b120a..3f447bc 100644 (file)
@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: claris,v 1.5 2009/09/19 16:28:08 christos Exp $
+# $File: claris,v 1.6 2012/06/20 21:19:05 christos Exp $
 # claris:  file(1) magic for claris
 # "H. Nanosecond" <aldomel@ix.netcom.com>
 # Claris Works a word processor, etc.
 #*
 #0001000 #010 250 377 377 377 377 000 213 000 230 000 021 002 377 014 000
 #null to byte 1000 octal
-514    string  \377\377\377\377\000    Claris clip art?
->0     string  \0\0\0\0\0\0\0\0\0\0\0\0\0      yes.
-514    string  \377\377\377\377\001    Claris clip art?
->0     string  \0\0\0\0\0\0\0\0\0\0\0\0\0      yes.
+514    string  \377\377\377\377\000
+>0     string  \0\0\0\0\0\0\0\0\0\0\0\0\0      Claris clip art
+514    string  \377\377\377\377\001
+>0     string  \0\0\0\0\0\0\0\0\0\0\0\0\0      Claris clip art
 
 # Claris works files
 # .cwk
index 4fb151f..670bbe2 100644 (file)
@@ -1,16 +1,23 @@
 
 #------------------------------------------------------------------------------
-# $File: commands,v 1.42 2011/12/05 23:14:02 rrt Exp $
+# $File: commands,v 1.48 2014/03/04 12:20:42 kim Exp $
 # commands:  file(1) magic for various shells and interpreters
 #
 #0     string/w        :                       shell archive or script for antique kernel text
 0      string/wt       #!\ /bin/sh             POSIX shell script text executable
 !:mime text/x-shellscript
+0      string/wb       #!\ /bin/sh             POSIX shell script executable (binary data)
+!:mime text/x-shellscript
+
 0      string/wt       #!\ /bin/csh            C shell script text executable
 !:mime text/x-shellscript
+
 # korn shell magic, sent by George Wu, gwu@clyde.att.com
 0      string/wt       #!\ /bin/ksh            Korn shell script text executable
 !:mime text/x-shellscript
+0      string/wb       #!\ /bin/ksh            Korn shell script executable (binary data)
+!:mime text/x-shellscript
+
 0      string/wt       #!\ /bin/tcsh           Tenex C shell script text executable
 !:mime text/x-shellscript
 0      string/wt       #!\ /usr/bin/tcsh       Tenex C shell script text executable
@@ -49,7 +56,7 @@
 !:mime text/x-awk
 0      string/wt       #!\ /usr/bin/awk        awk script text executable
 !:mime text/x-awk
-0      regex           =^\\s*BEGIN\\s*[{]      awk script text
+0      regex           =^\\s{0,100}BEGIN\\s{0,100}[{]  awk script text
 
 # AT&T Bell Labs' Plan 9 shell
 0      string/wt       #!\ /bin/rc     Plan 9 rc shell script text executable
 # bash shell magic, from Peter Tobias (tobias@server.et-inf.fho-emden.de)
 0      string/wt       #!\ /bin/bash   Bourne-Again shell script text executable
 !:mime text/x-shellscript
+0      string/wb       #!\ /bin/bash   Bourne-Again shell script executable (binary data)
+!:mime text/x-shellscript
 0      string/wt       #!\ /usr/bin/bash       Bourne-Again shell script text executable
 !:mime text/x-shellscript
+0      string/wb       #!\ /usr/bin/bash       Bourne-Again shell script executable (binary data)
+!:mime text/x-shellscript
 0      string/wt       #!\ /usr/local/bash     Bourne-Again shell script text executable
 !:mime text/x-shellscript
+0      string/wb       #!\ /usr/local/bash     Bourne-Again shell script executable (binary data)
+!:mime text/x-shellscript
 0      string/wt       #!\ /usr/local/bin/bash Bourne-Again shell script text executable
 !:mime text/x-shellscript
+0      string/wb       #!\ /usr/local/bin/bash Bourne-Again shell script executable (binary data)
+!:mime text/x-shellscript
 
 # PHP scripts
 # Ulf Harnhammar <ulfh@update.uu.se>
 0      search/1/c      =<?php                  PHP script text
+!:strength + 10
 !:mime text/x-php
 0      search/1        =<?\n                   PHP script text
 !:mime text/x-php
 0      search/1        =<?\r                   PHP script text
 !:mime text/x-php
 0      search/1/w      #!\ /usr/local/bin/php  PHP script text executable
+!:strength + 10
 !:mime text/x-php
 0      search/1/w      #!\ /usr/bin/php        PHP script text executable
+!:strength + 10
 !:mime text/x-php
 # Smarty compiled template, http://www.smarty.net/
-# Elan Ruusamäe <glen@delfi.ee>
+# Elan Ruusamae <glen@delfi.ee>
 0      string  =<?php\ /*\ Smarty\ version     Smarty compiled template
 >24    regex   [0-9.]+                         \b, version %s
 !:mime text/x-php
index 94c209d..15602de 100644 (file)
@@ -1,5 +1,5 @@
 #------------------------------------------------------------------------------
-# $File: compress,v 1.49 2011/12/07 22:04:27 christos Exp $
+# $File: compress,v 1.54 2014/03/14 18:47:29 christos Exp $
 # compress:  file(1) magic for pure-compression formats (no archives)
 #
 # compress, gzip, pack, compact, huf, squeeze, crunch, freeze, yabba, etc.
@@ -22,6 +22,7 @@
 #         other than 8 ("deflate", the only method defined in RFC 1952).
 0       string          \037\213        gzip compressed data
 !:mime application/x-gzip
+!:strength * 2
 >2     byte            <8              \b, reserved method
 >2     byte            >8              \b, unknown method
 >3     byte            &0x01           \b, ASCII
 >3     byte&0xC        =0x08
 >>10   string          x               \b, was "%s"
 >3     byte            &0x10           \b, has comment
+>3     byte            &0x20           \b, encrypted
+>4     ledate          >0              \b, last modified: %s
+>8     byte            2               \b, max compression
+>8     byte            4               \b, max speed
 >9     byte            =0x00           \b, from FAT filesystem (MS-DOS, OS/2, NT)
 >9     byte            =0x01           \b, from Amiga
 >9     byte            =0x02           \b, from VMS
 >9     byte            =0x0B           \b, from NTFS filesystem (NT)
 >9     byte            =0x0C           \b, from QDOS
 >9     byte            =0x0D           \b, from Acorn RISCOS
->3     byte            &0x10           \b, comment
->3     byte            &0x20           \b, encrypted
->4     ledate          >0              \b, last modified: %s
->8     byte            2               \b, max compression
->8     byte            4               \b, max speed
 
 # packed data, Huffman (minimum redundancy) codes on a byte-by-byte basis
 0      string          \037\036        packed data
 
 # Type: LZMA
 0      lelong&0xffffff =0x5d
->12    leshort         =0xff                   LZMA compressed data,
+>12    leshort         0xff                    LZMA compressed data,
+!:mime application/x-lzma
+>>5    lequad          =0xffffffffffffffff     streamed
+>>5    lequad          !0xffffffffffffffff     non-streamed, size %lld
+>12    leshort         0                       LZMA compressed data,
 >>5    lequad          =0xffffffffffffffff     streamed
 >>5    lequad          !0xffffffffffffffff     non-streamed, size %lld
-!:mime application/x-lzma
 
 # http://tukaani.org/xz/xz-file-format.txt
 0      ustring         \xFD7zXZ\x00            XZ compressed data
 >5     byte            x                       \b.%d
 !:mime application/x-lrzip
 
+# http://fastcompression.blogspot.fi/2013/04/lz4-streaming-format-final.html
+0      lelong          0x184d2204      LZ4 compressed data
+!:mime application/x-lz4
+0      lelong          0x184c2102      LZ4 compressed data, legacy format
+!:mime application/x-lz4
+
 # AFX compressed files (Wolfram Kleff)
 2      string          -afx-           AFX compressed file data
 
 >6     byte    >-1             %i)
 >7     long    >0              , original size: %i bytes
 >15    long    >30             , block size: %i bytes
+
+# Valve Pack (VPK) files
+0      lelong  0x55aa1234      Valve Pak file
+>0x4   lelong  x               \b, version %u
+>0x8   lelong  x               \b, %u entries
+
index 573dd15..27227a4 100644 (file)
@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: console,v 1.18 2010/09/20 19:19:17 rrt Exp $
+# $File: console,v 1.19 2013/02/06 14:18:52 christos Exp $
 # Console game magic
 # Toby Deshane <hac@shoelace.digivill.net>
 #    ines:  file(1) magic for Marat's iNES Nintendo Entertainment System
 >113   string  x               (%s)
 
 #------------------------------------------------------------------------------
-# Microsoft Xbox executables .xbe (Esa Hyytiä <ehyytia@cc.hut.fi>)
+# Microsoft Xbox executables .xbe (Esa Hyytia <ehyytia@cc.hut.fi>)
 0       string          XBEH            XBE, Microsoft Xbox executable
 # probabilistic checks whether signed or not
 >0x0004 ulelong =0x0
 # From: Serge van den Boom <svdb@stack.nl>
 0      string          \x01ZZZZZ\x01   3DO "Opera" file system
 
-# From Gürkan Sengün <gurkan@linuks.mine.nu>, www.linuks.mine.nu
+# From Gurkan Sengun <gurkan@linuks.mine.nu>, www.linuks.mine.nu
 0      string          GBS             Nintendo Gameboy Music/Audio Data
 12     string          GameBoy\ Music\ Module  Nintendo Gameboy Music Module
 
index 6141a82..6b28f76 100644 (file)
@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: convex,v 1.7 2009/09/19 16:28:08 christos Exp $
+# $File: convex,v 1.8 2012/10/03 23:44:43 christos Exp $
 # convex:  file(1) magic for Convex boxes
 #
 # Convexes are big-endian.
@@ -30,8 +30,6 @@
 # The restore program uses these number to determine how the data is
 # to be extracted.
 #
-24     belong  =60011  dump format, 4.1 BSD or earlier
-24     belong  =60012  dump format, 4.2 or 4.3 BSD without IDC
 24     belong  =60013  dump format, 4.2 or 4.3 BSD (IDC compatible)
 24     belong  =60014  dump format, Convex Storage Manager by-reference dump
 #
diff --git a/contrib/file/magic/Magdir/ctf b/contrib/file/magic/Magdir/ctf
new file mode 100644 (file)
index 0000000..37fdd1b
--- /dev/null
@@ -0,0 +1,23 @@
+
+#--------------------------------------------------------------
+# ctf:  file(1) magic for CTF (Common Trace Format) trace files
+#
+# Specs. available here: <http://www.efficios.com/ctf>
+#--------------------------------------------------------------
+
+# CTF trace data
+0      lelong  0xc1fc1fc1      Common Trace Format (CTF) trace data (LE)
+0      belong  0xc1fc1fc1      Common Trace Format (CTF) trace data (BE)
+
+# CTF metadata (packetized)
+0      lelong  0x75d11d57      Common Trace Format (CTF) packetized metadata (LE)
+>35    byte    x               \b, v%d
+>36    byte    x               \b.%d
+0      belong  0x75d11d57      Common Trace Format (CTF) packetized metadata (BE)
+>35    byte    x               \b, v%d
+>36    byte    x               \b.%d
+
+# CTF metadata (plain text)
+0      string  /*\x20CTF\x20   Common Trace Format (CTF) plain text metadata
+!:strength + 5                 # this is to make sure we beat C
+>&0    regex   [0-9]+\.[0-9]+  \b, v%s
diff --git a/contrib/file/magic/Magdir/cubemap b/contrib/file/magic/Magdir/cubemap
new file mode 100644 (file)
index 0000000..e2f87d8
--- /dev/null
@@ -0,0 +1,8 @@
+
+#------------------------------------------------------------------------------
+# $File: cubemap,v 1.1 2012/06/06 13:03:20 christos Exp $
+# file(1) magic(5) data for cubemaps  Martin Erik Werner <martinerikwerner@gmail.com>
+#
+0      string  ACMP    Map file for the AssaultCube FPS game
+0      string  CUBE    Map file for cube and cube2 engine games
+0      string  MAPZ)   Map file for the Blood Frontier/Red Eclipse FPS games
index da2cc4c..54167fc 100644 (file)
@@ -1,55 +1,12 @@
 
 #------------------------------------------------------------------------------
-# $File: cups,v 1.1 2011/11/10 18:59:54 christos Exp $
+# $File: cups,v 1.2 2012/11/02 21:50:29 christos Exp $
 # Cups: file(1) magic for the cups raster file format
 # From: Laurent Martelli <martellilaurent@gmail.com>
 # http://www.cups.org/documentation.php/spec-raster.html
 #
 
-# Cups Raster image format, Big Endian
-0      string          RaS             
-!:mime application/vnd.cups-raster
->3     string          t               Cups Raster version 1, Big Endian
->3     string          2               Cups Raster version 2, Big Endian
->3     string          3               Cups Raster version 3, Big Endian
->280   belong          x               \b, %d
->284   belong          x               \bx%d dpi
->376   belong          x               \b, %dx
->380   belong          x               \b%d pixels
->388   belong          x               %d bits/color
->392   belong          x               %d bits/pixel
->400   belong          0               ColorOrder=Chunky
->400   belong          1               ColorOrder=Banded
->400   belong          2               ColorOrder=Planar
->404   belong          0               ColorSpace=gray
->404   belong          1               ColorSpace=RGB
->404   belong          2               ColorSpace=RGBA
->404   belong          3               ColorSpace=black
->404   belong          4               ColorSpace=CMY
->404   belong          5               ColorSpace=YMC
->404   belong          6               ColorSpace=CMYK
->404   belong          7               ColorSpace=YMCK
->404   belong          8               ColorSpace=KCMY
->404   belong          9               ColorSpace=KCMYcm
->404   belong          10              ColorSpace=GMCK
->404   belong          11              ColorSpace=GMCS
->404   belong          12              ColorSpace=WHITE
->404   belong          13              ColorSpace=GOLD
->404   belong          14              ColorSpace=SILVER
->404   belong          15              ColorSpace=CIE XYZ
->404   belong          16              ColorSpace=CIE Lab
->404   belong          17              ColorSpace=RGBW
->404   belong          18              ColorSpace=sGray
->404   belong          19              ColorSpace=sRGB
->404   belong          20              ColorSpace=AdobeRGB
-
-
-# Cups Raster image format, Little Endian
-1      string          SaR             
->0     string          t               Cups Raster version 1, Little Endian
->0     string          2               Cups Raster version 2, Little Endian
->0     string          3               Cups Raster version 3, Little Endian
-!:mime application/vnd.cups-raster
+0      name            cups-be
 >280   lelong          x               \b, %d
 >284   lelong          x               \bx%d dpi
 >376   lelong          x               \b, %dx
 >404   lelong          18              ColorSpace=sGray
 >404   lelong          19              ColorSpace=sRGB
 >404   lelong          20              ColorSpace=AdobeRGB
+
+# Cups Raster image format, Big Endian
+0      string          RaS             
+>3     string          t               Cups Raster version 1, Big Endian
+>3     string          2               Cups Raster version 2, Big Endian
+>3     string          3               Cups Raster version 3, Big Endian
+!:mime application/vnd.cups-raster
+>0     use             ^cups-be
+
+
+# Cups Raster image format, Little Endian
+1      string          SaR             
+>0     string          t               Cups Raster version 1, Little Endian
+>0     string          2               Cups Raster version 2, Little Endian
+>0     string          3               Cups Raster version 3, Little Endian
+!:mime application/vnd.cups-raster
+>0     use             \^cups-be
index 956a53b..584bbd6 100644 (file)
@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: database,v 1.28 2011/09/16 19:40:40 christos Exp $
+# $File: database,v 1.37 2014/03/14 18:47:29 christos Exp $
 # database:  file(1) magic for various databases
 #
 # extracted from header/code files by Graeme Wilford (eep2gw@ee.surrey.ac.uk)
 #
 #
 # Round Robin Database Tool by Tobias Oetiker <oetiker@ee.ethz.ch>
-0      string  RRD             RRDTool DB
->4     string  x               version %s
+0      string/b        RRD\0           RRDTool DB
+>4     string/b        x               version %s
+
+>>10   short           !0              16bit aligned
+>>>10  bedouble        8.642135e+130   big-endian
+>>>>18 short           x               32bit long (m68k)
+
+>>10   short           0
+>>>12  long            !0              32bit aligned
+>>>>12 bedouble        8.642135e+130   big-endian
+>>>>>20 long           0               64bit long
+>>>>>20 long           !0              32bit long  
+>>>>12 ledouble        8.642135e+130   little-endian
+>>>>>24 long           0               64bit long
+>>>>>24 long           !0              32bit long (i386)
+>>>>12 string          \x43\x2b\x1f\x5b\x2f\x25\xc0\xc7        middle-endian
+>>>>>24 short          !0              32bit long (arm)
+
+>>8    quad            0               64bit aligned
+>>>16  bedouble        8.642135e+130   big-endian
+>>>>24 long            0               64bit long (s390x)
+>>>>24 long            !0              32bit long (hppa/mips/ppc/s390/sparc)
+>>>16  ledouble        8.642135e+130   little-endian
+>>>>28 long            0               64bit long (alpha/amd64/ia64)
+>>>>28 long            !0              32bit long (armel/mipsel)
+
 #----------------------------------------------------------------------
 # ROOT: file(1) magic for ROOT databases
 #
 #>>>0x04         byte          8       incrementing secondary index .XGn file 
 
 ## XBase database files
-#0      byte       0x02        
-#>8     leshort          >0
-#>>12   leshort    0   FoxBase 
-#!:mime        application/x-dbf
-#>>>0x04       lelong          0               (no records)
-#>>>0x04       lelong          >0              (%ld records)
-#
-#0      byte       0x03        
-#!:mime        application/x-dbf
-#>8     leshort          >0
-#>>12   leshort    0   FoxBase+, FoxPro, dBaseIII+, dBaseIV, no memo 
-#>>>0x04       lelong          0               (no records)
-#>>>0x04       lelong          >0              (%ld records)
+# updated by Joerg Jenderek at Feb 2013
+# http://www.dbase.com/Knowledgebase/INT/db7_file_fmt.htm
+# http://www.clicketyclick.dk/databases/xbase/format/dbf.html
+# http://home.f1.htw-berlin.de/scheibl/db/intern/dBase.htm
+# inspect VVYYMMDD , where 1<= MM <= 12 and 1<= DD <= 31
+0      ubelong&0x0000FFFF              <0x00000C20     
+# skip Infocom game Z-machine
+>2             ubyte                   >0              
+# skip Androids *.xml
+>>3            ubyte                   >0              
+>>>3           ubyte                   <32             
+# 1 < version VV
+>>>>0          ubyte                   >1              
+# skip HELP.CA3 by test for reserved byte ( NULL )
+>>>>>27                ubyte                   0               
+# reserved bytes not always 0 ; also found 0x3901 (T4.DBF) ,0x7101 (T5.DBF,T6.DBF)
+#>>>>>30               ubeshort                x               30NULL?%x
+# possible production flag,tag numbers(<=0x30),tag length(<=0x20), reserved (NULL) 
+>>>>>>24       ubelong&0xffFFFFff      >0x01302000     
+# .DBF or .MDX
+>>>>>>24       ubelong&0xffFFFFff      <0x01302001     
+# for Xbase Database file (*.DBF) reserved (NULL) for multi-user
+>>>>>>>24      ubelong&0xffFFFFff      =0              
+# test for 2 reserved NULL bytes,transaction and encryption byte flag
+>>>>>>>>12     ubelong&0xFFFFfEfE      0               
+# test for MDX flag
+>>>>>>>>>28    ubyte                   x               
+>>>>>>>>>28    ubyte&0xf8              0               
+# header size >= 32
+>>>>>>>>>>8    uleshort                >31             
+# skip PIC15736.PCX by test for language driver name or field name
+>>>>>>>>>>>32  ubyte                   >0              
+#!:mime        application/x-dbf; charset=unknown-8bit ??
+#!:mime        application/x-dbase
+>>>>>>>>>>>>0  use                     xbase-type
+# database file
+>>>>>>>>>>>>0  ubyte                   x               \b DBF
+>>>>>>>>>>>>4  lelong                  0               \b, no records
+>>>>>>>>>>>>4  lelong                  >0              \b, %ld record
+# plural s appended
+>>>>>>>>>>>>>4 lelong                  >1              \bs
+# http://www.clicketyclick.dk/databases/xbase/format/dbf_check.html#CHECK_DBF
+# 1 <= record size <= 4000 (dBase 3,4) or 32 * KB (=0x8000)
+>>>>>>>>>>>>10 uleshort                x               * %d
+# file size = records * record size + header size
+>>>>>>>>>>>>1  ubyte                   x               \b, update-date
+>>>>>>>>>>>>1  use                     xbase-date
+# http://msdn.microsoft.com/de-de/library/cc483186(v=vs.71).aspx
+#>>>>>>>>>>>>29        ubyte                   =0              \b, codepage ID=0x%x
+# 2~cp850 , 3~cp1252 , 0x1b~?? ; what code page is 0x1b ?
+>>>>>>>>>>>>29 ubyte                   >0              \b, codepage ID=0x%x
+#>>>>>>>>>>>>28        ubyte&0x01              0               \b, no index file
+>>>>>>>>>>>>28 ubyte&0x01              1               \b, with index file .MDX
+>>>>>>>>>>>>28 ubyte&0x02              2               \b, with memo .FPT
+>>>>>>>>>>>>28 ubyte&0x04              4               \b, DataBaseContainer
+# 1st record offset + 1 = header size
+>>>>>>>>>>>>8  uleshort                >0              
+>>>>>>>>>>>>(8.s+1)    ubyte           >0              
+>>>>>>>>>>>>>8         uleshort        >0              \b, at offset %d
+>>>>>>>>>>>>>(8.s+1)   ubyte           >0              
+>>>>>>>>>>>>>>&-1      string          >\0             1st record "%s"
+# for multiple index files (*.MDX) Production flag,tag numbers(<=0x30),tag length(<=0x20), reserverd (NULL) 
+>>>>>>>24      ubelong&0x0133f7ff      >0              
+# test for reserved NULL byte
+>>>>>>>>47     ubyte                   x               
+# test for valid TAG key format (0x10 or 0)
+>>>>>>>>>559   ubyte&0xeF              0               
+# test MM <= 12
+>>>>>>>>>45    ubeshort                <0x0C20         
+>>>>>>>>>>45   ubyte                   >0              
+>>>>>>>>>>>46  ubyte                   <32             
+>>>>>>>>>>>>46 ubyte                   >0              
+#!:mime        application/x-mdx
+>>>>>>>>>>>>>0 use                     xbase-type
+>>>>>>>>>>>>>0 ubyte                   x               \b MDX
+>>>>>>>>>>>>>1 ubyte                   x               \b, creation-date
+>>>>>>>>>>>>>1 use                     xbase-date
+>>>>>>>>>>>>>44        ubyte                   x               \b, update-date
+>>>>>>>>>>>>>44        use                     xbase-date
+# No.of tags in use (1,2,5,12)
+>>>>>>>>>>>>>28        uleshort                x               \b, %d
+# No. of entries in tag (0x30)
+>>>>>>>>>>>>>25        ubyte                   x               \b/%d tags
+#  Length of tag
+>>>>>>>>>>>>>26        ubyte                   x               * %d
+# 1st tag name_
+>>>>>>>>>>>>>548       string          x               \b, 1st tag "%.11s"
+# 2nd tag name
+#>>>>>>>>>>>>(26.b+548)        string          x               \b, 2nd tag "%.11s"
 #
-#0      byte       0x04        
+#              Print the xBase names of different version variants 
+0      name                            xbase-type
+>0     ubyte           <2              
+# 1 < version
+>0     ubyte           >1              
+>>0    ubyte           0x02            FoxBase
+# FoxBase+/dBaseIII+, no memo
+>>0    ubyte           0x03            FoxBase+/dBase III
+!:mime application/x-dbf
+# dBASE IV no memo file
+>>0    ubyte           0x04            dBase IV
+!:mime application/x-dbf
+# dBASE V no memo file
+>>0    ubyte           0x05            dBase V
+!:mime application/x-dbf
+>>0    ubyte           0x30            Visual FoxPro
+!:mime application/x-dbf
+>>0    ubyte           0x31            Visual FoxPro, autoincrement
+!:mime application/x-dbf
+# Visual FoxPro, with field type Varchar or Varbinary
+>>0    ubyte           0x32            Visual FoxPro, with field type Varchar
+!:mime application/x-dbf
+# dBASE IV SQL, no memo;dbv memo var size (Flagship)
+>>0    ubyte           0x43            dBase IV, with SQL table
+!:mime application/x-dbf
+# http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
+#>>0   ubyte           0x62            dBase IV, with SQL table
 #!:mime        application/x-dbf
-#>8     leshort          >0
-#>>12   leshort    0   dBASE IV no memo file 
-#>>>0x04       lelong          0               (no records)
-#>>>0x04       lelong          >0              (%ld records)
-#
-#0      byte       0x05        
+# dBASE IV, with memo!!
+>>0    ubyte           0x7b            dBase IV, with memo
+!:mime application/x-dbf
+# http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
+#>>0   ubyte           0x82            dBase IV, with SQL system
 #!:mime        application/x-dbf
-#>8     leshort          >0
-#>>12   leshort    0   dBASE V no memo file 
-#>>>0x04       lelong          0               (no records)
-#>>>0x04       lelong          >0              (%ld records)
-#
-#0      byte       0x30
+# FoxBase+/dBaseIII+ with memo .DBT!
+>>0    ubyte           0x83            FoxBase+/dBase III, with memo .DBT
+!:mime application/x-dbf
+# VISUAL OBJECTS (first 1.0 versions) for the Dbase III files (NTX clipper driver); memo file
+>>0    ubyte           0x87            VISUAL OBJECTS, with memo file
+!:mime application/x-dbf
+# http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
+#>>0   ubyte           0x8A            FoxBase+/dBase III, with memo .DBT
 #!:mime        application/x-dbf
-#>8     leshort          >0
-#>>12   leshort    0   Visual FoxPro 
-#>>>0x04       lelong          0               (no records)
-#>>>0x04       lelong          >0              (%ld records)
-#
-#0      byte       0x43
+# dBASE IV with memo!
+>>0    ubyte           0x8B            dBase IV, with memo .DBT
+!:mime application/x-dbf
+# dBase IV with SQL Table,no memo?
+>>0    ubyte           0x8E            dBase IV, with SQL table
+!:mime application/x-dbf
+# .dbv and .dbt memo (Flagship)?
+>>0    ubyte           0xB3            Flagship
+# http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
+#>>0   ubyte           0xCA            dBase IV with memo .DBT
 #!:mime        application/x-dbf
-#>8     leshort          >0
-#>>12   leshort    0   FlagShip with memo var size 
-#>>>0x04       lelong          0               (no records)
-#>>>0x04       lelong          >0              (%ld records)
-#
-#0      byte       0x7b
+# dBASE IV with SQL table, with memo .DBT
+>>0    ubyte           0xCB            dBase IV with SQL table, with memo .DBT
+!:mime application/x-dbf
+# HiPer-Six format;Clipper SIX, with SMT memo file             
+>>0    ubyte           0xE5            Clipper SIX with memo
+!:mime application/x-dbf
+# http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
+#>>0   ubyte           0xF4            dBase IV, with SQL table, with memo
 #!:mime        application/x-dbf
-#>8     leshort          >0
-#>>12   leshort    0   dBASEIV with memo 
-#>>>0x04       lelong          0               (no records)
-#>>>0x04       lelong          >0              (%ld records)
-#
-#0      byte       0x83        
-#!:mime        application/x-dbf
-#>8     leshort          >0
-#>>12   leshort    0   FoxBase+, dBaseIII+ with memo 
-#>>>0x04       lelong          0               (no records)
-#>>>0x04       lelong          >0              (%ld records)
-#
-#0      byte       0x8b
+>>0    ubyte           0xF5            FoxPro with memo
+!:mime application/x-dbf
+# http://msdn.microsoft.com/en-US/library/st4a0s68(v=vs.80).aspx
+#>>0   ubyte           0xFA            FoxPro 2.x, with memo
 #!:mime        application/x-dbf
-#>8     leshort          >0
-#>>12   leshort    0   dBaseIV with memo 
-#>>>0x04       lelong          0               (no records)
-#>>>0x04       lelong          >0              (%ld records)
-#
-#0      byte       0x8e        
-#!:mime        application/x-dbf
-#>8     leshort          >0
-#>>12   leshort    0   dBaseIV with SQL Table 
-#>>>0x04       lelong          0               (no records)
-#>>>0x04       lelong          >0              (%ld records)
-#
-#0      byte       0xb3
-#!:mime        application/x-dbf
-#>8     leshort          >0
-#>>12   leshort    0   FlagShip with .dbt memo 
-#>>>0x04       lelong          0               (no records)
-#>>>0x04       lelong          >0              (%ld records)
-#
-#0      byte       0xf5
-#!:mime        application/x-dbf
-#>8     leshort          >0
-#>>12   leshort    0   FoxPro with memo 
-#>>>0x04       lelong          0               (no records)
-#>>>0x04       lelong          >0              (%ld records)
-#
-#0     leshort         0x0006          DBase 3 index file
+# unknown version (should not happen)
+>>0    default         x               xBase
+!:mime application/x-dbf
+>>>0   ubyte           x               (0x%x)
+# flags in version byte
+# DBT flag (with dBASE III memo .DBT)!!
+# >>0  ubyte&0x80      >0              DBT_FLAG=%x
+# memo flag ??
+# >>0  ubyte&0x08      >0              MEMO_FLAG=%x
+# SQL flag ??
+# >>0  ubyte&0x70      >0              SQL_FLAG=%x
+#              test and print the date of xBase .DBF .MDX
+0      name                            xbase-date
+# inspect YYMMDD , where 1<= MM <= 12 and 1<= DD <= 31
+>0     ubelong         x               
+>1     ubyte           <13             
+>>1    ubyte           >0              
+>>>2   ubyte           >0              
+>>>>2  ubyte           <32             
+>>>>>0 ubyte           x               
+# YY is interpreted as 20YY or 19YY
+>>>>>>0        ubyte           <100            \b %.2d
+# YY is interpreted 1900+YY; TODO: display yy or 20yy instead 1YY
+>>>>>>0        ubyte           >99             \b %d
+>>>>>1 ubyte           x               \b-%d
+>>>>>2 ubyte           x               \b-%d
+
+#      dBase memo files .DBT or .FPT
+# http://msdn.microsoft.com/en-us/library/8599s21w(v=vs.80).aspx
+16             ubyte           <4              
+>16            ubyte           !2              
+>>16           ubyte           !1              
+# next free block index is positive
+>>>0           ulelong         >0              
+# skip many JPG. ZIP, BZ2 by test for reserved bytes NULL , 0|2 , 0|1 , low byte of block size
+>>>>17         ubelong&0xFFfdFE00      0x00000000      
+# skip many RAR by test for low byte 0 ,high byte 0|2|even of block size, 0|a|e|d7 , 0|64h
+>>>>>20                ubelong&0xFF01209B      0x00000000      
+# dBASE III
+>>>>>>16       ubyte           3               
+# dBASE III DBT
+>>>>>>>0       use             xbase-memo-print
+# dBASE IV DBT , FoxPro FPT or many PNG , ZIP , DBF garbage
+>>>>>>16       ubyte           0               
+# dBASE IV DBT with DBF name or DBF garbage
+>>>>>>>8       ubelong         >0x40000000     
+# skip DBF and catch dBASE IV DBT with DBF name and with non big index of next free block
+>>>>>>>>0      ulelong         <0x01010002     
+>>>>>>>>>0     use             xbase-memo-print
+>>>>>>>8       ubelong         0               
+# skip MM*DD*.bin by test for for reserved NULL byte
+>>>>>>>>508    ubelong         0               
+# real memo files should contain text here
+>>>>>>>>>520   ubelong         >0x20202019     
+>>>>>>>>>>520  ubelong         <0xFEFEFEFF     
+>>>>>>>>>>>0   use             xbase-memo-print
+# garbage PCX , ZIP , JAR , XPI 
+>>>>>>>8       default         x               
+
+#              Print the information of dBase DBT or FoxPro FPT memo files 
+0      name                            xbase-memo-print
+>0     ubyte                   x               
+# test version
+# memo file
+>>16   ubyte                   3               dBase III DBT
+>>16   ubyte                   0               
+>>>512 ubelong                 <0x00000003     FoxPro FPT
+# Size of blocks for FoxPro
+>>>>6  ubeshort                x               \b, blocks size %lu
+# Number of next available block for appending data for FoxPro
+>>>>0  ubelong                 =0              \b, next free block index %lu
+>>>>0  ubelong                 !0              \b, next free block index %lu
+>>>512 default                 x               dBase IV DBT
+# DBF file name without extention 
+>>>>8  string                  >\0             \b of %-.8s.DBF
+# size of blocks  ; not reliable 0x2020204C
+#>>>>4 ulelong                 =0              \b, blocks size %lu
+>>>>4  ulelong                 !0              \b, blocks size %lu
+# Block length found 0 , 512
+#>>>>20        uleshort                =0              \b, block length %u
+>>>>20 uleshort                !0              \b, block length %u
+# Number of next available block for appending data
+>>>>0  ulelong                 =0              \b, next free block index %lu
+>>>>0  ulelong                 !0              \b, next free block index %lu
+>>512  ubelong                 x               
+>>>512 ubelong                 =0xFFFF0800     
+>>>>520        string                  >\0             \b, 1st used item "%s"
+# FoxPro
+>>>512 ubelong                 <3              
+# FoxPro memo
+>>>>512        ubelong                 =1              
+>>>>520        string                  >\0             \b, 1st used item "%s"
+>>>512 default                 x               
+# may be deleted memo field
+>>>>512        string                  >\0             \b, 1st item "%s"
+
+# TODO: 
+# DBASE index file *.NDX
+# DBASE Compound Index file *.CDX
+# dBASE IV Printer Driver *.PRF
+## End of XBase database stuff
 
 # MS Access database
 4      string  Standard\ Jet\ DB       Microsoft Access Database
 !:mime application/x-msaccess
+4      string  Standard\ ACE\ DB       Microsoft Access Database
+!:mime application/x-msaccess
 
 # TDB database from Samba et al - Martin Pool <mbp@samba.org>
 0      string  TDB\ file               TDB database
 >48    lequad          x                       \b, rnum=%lld
 >56    lequad          x                       \b, fsiz=%lld
 
-# G-IR database made by gobject-introspect toolset,
-# http://live.gnome.org/GObjectIntrospection
-0      string          GOBJ\nMETADATA\r\n\032  G-IR binary database
->16    byte            x                       \b, v%d
->17    byte            x                       \b.%d
->20    leshort         x                       \b, %d entries
->22    leshort         x                       \b/%d local
-
 # Type:        QDBM Quick Database Manager
 # From:        Benoit Sibaud <bsibaud@april.org>
 0      string          \\[depot\\]\n\f         Quick Database Manager, little endian
 0      string          ToKyO\ CaBiNeT\n        TokyoCabinet database
 >14    string          x                       (version %s)
 
-# From:  Stéphane Blondon http://www.yaal.fr
+# From:  Stephane Blondon http://www.yaal.fr
 # Database file for Zope (done by FileStorage)
 0      string          FS21    Zope Object Database File Storage (data)
 # Cache file for the database of Zope (done by ClientStorage)
 0      string          ZEC3    Zope Object Database Client Cache File (data)
+
+# IDA (Interactive Disassembler) database
+0      string          IDA1    IDA (Interactive Disassembler) database
index 73f0135..5924380 100644 (file)
@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: diff,v 1.12 2010/12/07 16:52:52 christos Exp $
+# $File: diff,v 1.14 2012/09/16 23:08:54 christos Exp $
 # diff:  file(1) magic for diff(1) output
 #
 0      search/1        diff\           diff output text
@@ -16,7 +16,7 @@
 !:mime text/x-diff
 
 # bsdiff:  file(1) magic for bsdiff(1) output
-0      string/t                BSDIFF40        bsdiff(1) patch file
+0      string/b                BSDIFF40        bsdiff(1) patch file
 
 
 # unified diff
 >>>>&0 search/1 @@     unified diff output text
 !:mime text/x-diff
 !:strength + 90
+
+# librsync -- the library for network deltas
+#
+# Copyright (C) 2001 by Martin Pool.  You may do whatever you want with
+# this file.
+#
+0      belong          0x72730236      rdiff network-delta data
+
+0      belong          0x72730136      rdiff network-delta signature data
+>4     belong          x               (block length=%d,
+>8     belong          x               signature strength=%d)
index b1b77dd..f66e0bc 100644 (file)
@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: digital,v 1.10 2011/05/03 01:44:17 christos Exp $
+# $File: digital,v 1.11 2013/01/11 16:45:23 christos Exp $
 #  Digital UNIX - Info
 #
 0      string  =!<arch>\n________64E   Alpha archive
@@ -8,20 +8,20 @@
 #
 
 0      leshort         0603
->>24   leshort         0410            COFF format alpha pure
->>24   leshort         0413            COFF format alpha demand paged
->>>22  leshort&030000  !020000         executable
->>>22  leshort&020000  !0              dynamically linked
->>>16  lelong          !0              not stripped
->>>16  lelong          0               stripped
->>>27  byte            x               - version %d
->>>26  byte            x               \b.%d
->>>28  byte            x               \b-%d
->>24   leshort         0407            COFF format alpha object
->>>22  leshort&030000  020000          shared library
->>>27  byte            x               - version %d
->>>26  byte            x               \b.%d
->>>28  byte            x               \b-%d
+>24    leshort         0410            COFF format alpha pure
+>24    leshort         0413            COFF format alpha demand paged
+>>22   leshort&030000  !020000         executable
+>>22   leshort&020000  !0              dynamically linked
+>>16   lelong          !0              not stripped
+>>16   lelong          0               stripped
+>>27   byte            x               - version %d
+>>26   byte            x               \b.%d
+>>28   byte            x               \b-%d
+>24    leshort         0407            COFF format alpha object
+>>22   leshort&030000  020000          shared library
+>>27   byte            x               - version %d
+>>26   byte            x               \b.%d
+>>28   byte            x               \b-%d
 
 # Basic recognition of Digital UNIX core dumps - Mike Bremford <mike@opac.bl.uk>
 #
index fee287c..573398f 100644 (file)
@@ -1,60 +1,69 @@
 
 #------------------------------------------------------------------------------
-# $File: dolby,v 1.5 2009/09/19 16:28:08 christos Exp $
+# $File: dolby,v 1.7 2014/01/08 22:37:23 christos Exp $
 # ATSC A/53 aka AC-3 aka Dolby Digital <ashitaka@gmx.at>
 # from http://www.atsc.org/standards/a_52a.pdf
 # corrections, additions, etc. are always welcome!
 #
 # syncword
-0       beshort         0x0b77  ATSC A/52 aka AC-3 aka Dolby Digital stream,
+0      beshort         0x0b77  ATSC A/52 aka AC-3 aka Dolby Digital stream,
+# Proposed audio/ac3 RFC/4184
+!:mime audio/vnd.dolby.dd-raw
 # fscod
->4      byte&0xc0       0x00    48 kHz,
->4      byte&0xc0       0x40    44.1 kHz,
->4      byte&0xc0       0x80    32 kHz,
+>4     byte&0xc0 = 0x00        48 kHz,
+>4     byte&0xc0 = 0x40        44.1 kHz,
+>4     byte&0xc0 = 0x80        32 kHz,
 # is this one used for 96 kHz?
->4      byte&0xc0       0xc0    reserved frequency,
+>4     byte&0xc0 = 0xc0        reserved frequency,
 #
->5     byte&7 = 0              \b, complete main (CM)
->5     byte&7 = 1              \b, music and effects (ME)
->5     byte&7 = 2              \b, visually impaired (VI)
->5     byte&7 = 3              \b, hearing impaired (HI)
->5     byte&7 = 4              \b, dialogue (D)
->5     byte&7 = 5              \b, commentary (C)
->5     byte&7 = 6              \b, emergency (E)
+>5     byte&0x07 = 0x00        \b, complete main (CM)
+>5     byte&0x07 = 0x01        \b, music and effects (ME)
+>5     byte&0x07 = 0x02        \b, visually impaired (VI)
+>5     byte&0x07 = 0x03        \b, hearing impaired (HI)
+>5     byte&0x07 = 0x04        \b, dialogue (D)
+>5     byte&0x07 = 0x05        \b, commentary (C)
+>5     byte&0x07 = 0x06        \b, emergency (E)
+>5     beshort&0x07e0  0x0720  \b, voiceover (VO) 
+>5     beshort&0x07e0 >0x0720  \b, karaoke
 # acmod
->6      byte&0xe0       0x00    1+1 front,
->6      byte&0xe0       0x20    1 front/0 rear,
->6      byte&0xe0       0x40    2 front/0 rear,
->6      byte&0xe0       0x60    3 front/0 rear,
->6      byte&0xe0       0x80    2 front/1 rear,
->6      byte&0xe0       0xa0    3 front/1 rear,
->6      byte&0xe0       0xc0    2 front/2 rear,
->6      byte&0xe0       0xe0    3 front/2 rear,
-# lfeon (these may be incorrect)
->7      byte&0x40       0x00    LFE off,
->7      byte&0x40       0x40    LFE on,
+>6     byte&0xe0 = 0x00        1+1 front,
+>>6    byte&0x10 = 0x10        LFE on,
+>6     byte&0xe0 = 0x20        1 front/0 rear,
+>>6    byte&0x10 = 0x10        LFE on,
+>6     byte&0xe0 = 0x40        2 front/0 rear,
+# dsurmod (for stereo only)
+>>6    byte&0x18 = 0x00        Dolby Surround not indicated
+>>6    byte&0x18 = 0x08        not Dolby Surround encoded
+>>6    byte&0x18 = 0x10        Dolby Surround encoded
+>>6    byte&0x18 = 0x18        reserved Dolby Surround mode
+>>6    byte&0x04 = 0x04        LFE on,
+>6     byte&0xe0 = 0x60        3 front/0 rear,
+>>6    byte&0x04 = 0x04        LFE on,
+>6     byte&0xe0 = 0x80        2 front/1 rear,
+>>6    byte&0x04 = 0x04        LFE on,
+>6     byte&0xe0 = 0xa0        3 front/1 rear,
+>>6    byte&0x01 = 0x01        LFE on,
+>6     byte&0xe0 = 0xc0        2 front/2 rear,
+>>6    byte&0x04 = 0x04        LFE on,
+>6     byte&0xe0 = 0xe0        3 front/2 rear,
+>>6    byte&0x01 = 0x01        LFE on,
 #
 >4     byte&0x3e = 0x00        \b, 32 kbit/s
->4     byte&0x3e = 0x02        \b, 40 kbit/s
->4     byte&0x3e = 0x04        \b, 48 kbit/s
->4     byte&0x3e = 0x06        \b, 56 kbit/s
->4     byte&0x3e = 0x08        \b, 64 kbit/s
->4     byte&0x3e = 0x0a        \b, 80 kbit/s
->4     byte&0x3e = 0x0c        \b, 96 kbit/s
->4     byte&0x3e = 0x0e        \b, 112 kbit/s
->4     byte&0x3e = 0x10        \b, 128 kbit/s
->4     byte&0x3e = 0x12        \b, 160 kbit/s
->4     byte&0x3e = 0x14        \b, 192 kbit/s
->4     byte&0x3e = 0x16        \b, 224 kbit/s
->4     byte&0x3e = 0x18        \b, 256 kbit/s
->4     byte&0x3e = 0x1a        \b, 320 kbit/s
->4     byte&0x3e = 0x1c        \b, 384 kbit/s
->4     byte&0x3e = 0x1e        \b, 448 kbit/s
->4     byte&0x3e = 0x20        \b, 512 kbit/s
->4     byte&0x3e = 0x22        \b, 576 kbit/s
->4     byte&0x3e = 0x24        \b, 640 kbit/s
-# dsurmod (these may be incorrect)
->6      beshort&0x0180  0x0000  Dolby Surround not indicated
->6      beshort&0x0180  0x0080  not Dolby Surround encoded
->6      beshort&0x0180  0x0100  Dolby Surround encoded
->6      beshort&0x0180  0x0180  reserved Dolby Surround mode
+>4     byte&0x3e = 0x02        \b, 40 kbit/s
+>4     byte&0x3e = 0x04        \b, 48 kbit/s
+>4     byte&0x3e = 0x06        \b, 56 kbit/s
+>4     byte&0x3e = 0x08        \b, 64 kbit/s
+>4     byte&0x3e = 0x0a        \b, 80 kbit/s
+>4     byte&0x3e = 0x0c        \b, 96 kbit/s
+>4     byte&0x3e = 0x0e        \b, 112 kbit/s
+>4     byte&0x3e = 0x10        \b, 128 kbit/s
+>4     byte&0x3e = 0x12        \b, 160 kbit/s
+>4     byte&0x3e = 0x14        \b, 192 kbit/s
+>4     byte&0x3e = 0x16        \b, 224 kbit/s
+>4     byte&0x3e = 0x18        \b, 256 kbit/s
+>4     byte&0x3e = 0x1a        \b, 320 kbit/s
+>4     byte&0x3e = 0x1c        \b, 384 kbit/s
+>4     byte&0x3e = 0x1e        \b, 448 kbit/s
+>4     byte&0x3e = 0x20        \b, 512 kbit/s
+>4     byte&0x3e = 0x22        \b, 576 kbit/s
+>4     byte&0x3e = 0x24        \b, 640 kbit/s
index 1ac91e2..b4a7240 100644 (file)
@@ -1,11 +1,11 @@
 
 #------------------------------------------------------------------------------
-# $File: dump,v 1.11 2009/09/19 16:28:09 christos Exp $
+# $File: dump,v 1.12 2012/11/01 04:26:40 christos Exp $
 # dump:  file(1) magic for dump file format--for new and old dump filesystems
 #
 # We specify both byte orders in order to recognize byte-swapped dumps.
 #
-24     belong  60012           new-fs dump file (big endian),
+0      name    new-dump-be
 >4     bedate  x               Previous dump %s,
 >8     bedate  x               This dump %s,
 >12    belong  >0              Volume %ld,
@@ -24,7 +24,7 @@
 >824   string  >\0             Host %s,
 >888   belong  >0              Flags %x
 
-24     belong  60011           old-fs dump file (big endian),
+0      name    old-dump-be
 #>4    bedate  x               Previous dump %s,
 #>8    bedate  x               This dump %s,
 >12    belong  >0              Volume %ld,
 >824   string  >\0             Host %s,
 >888   belong  >0              Flags %x
 
-24     lelong  60012           new-fs dump file (little endian),
->4     ledate  x               This dump %s,
->8     ledate  x               Previous dump %s,
->12    lelong  >0              Volume %ld,
->692   lelong  0               Level zero, type:
->692   lelong  >0              Level %d, type:
->0     lelong  1               tape header,
->0     lelong  2               beginning of file record,
->0     lelong  3               map of inodes on tape,
->0     lelong  4               continuation of file record,
->0     lelong  5               end of volume,
->0     lelong  6               map of inodes deleted,
->0     lelong  7               end of medium (for floppy),
->676   string  >\0             Label %s,
->696   string  >\0             Filesystem %s,
->760   string  >\0             Device %s,
->824   string  >\0             Host %s,
->888   lelong  >0              Flags %x
-
-24     lelong  60011           old-fs dump file (little endian),
-#>4    ledate  x               Previous dump %s,
-#>8    ledate  x               This dump %s,
->12    lelong  >0              Volume %ld,
->692   lelong  0               Level zero, type:
->692   lelong  >0              Level %d, type:
->0     lelong  1               tape header,
->0     lelong  2               beginning of file record,
->0     lelong  3               map of inodes on tape,
->0     lelong  4               continuation of file record,
->0     lelong  5               end of volume,
->0     lelong  6               map of inodes deleted,
->0     lelong  7               end of medium (for floppy),
->676   string  >\0             Label %s,
->696   string  >\0             Filesystem %s,
->760   string  >\0             Device %s,
->824   string  >\0             Host %s,
->888   lelong  >0              Flags %x
-
-18     leshort 60011           old-fs dump file (16-bit, assuming PDP-11 endianness),
->2     medate  x               Previous dump %s,
->6     medate  x               This dump %s,
->10    leshort >0              Volume %ld,
->0     leshort 1               tape header.
->0     leshort 2               beginning of file record.
->0     leshort 3               map of inodes on tape.
->0     leshort 4               continuation of file record.
->0     leshort 5               end of volume.
->0     leshort 6               map of inodes deleted.
->0     leshort 7               end of medium (for floppy).
-
-24     belong  0x19540119      new-fs dump file (ufs2, big endian),
+0      name    ufs2-dump-be
 >896   beqdate x               Previous dump %s,
 >904   beqdate x               This dump %s,
 >12    belong  >0              Volume %ld,
 >824   string  >\0             Host %s,
 >888   belong  >0              Flags %x
 
-24     lelong  0x19540119      new-fs dump file (ufs2, little endian),
->896   leqdate x               This dump %s,
->904   leqdate x               Previous dump %s,
->12    lelong  >0              Volume %ld,
->692   lelong  0               Level zero, type:
->692   lelong  >0              Level %d, type:
->0     lelong  1               tape header,
->0     lelong  2               beginning of file record,
->0     lelong  3               map of inodes on tape,
->0     lelong  4               continuation of file record,
->0     lelong  5               end of volume,
->0     lelong  6               map of inodes deleted,
->0     lelong  7               end of medium (for floppy),
->676   string  >\0             Label %s,
->696   string  >\0             Filesystem %s,
->760   string  >\0             Device %s,
->824   string  >\0             Host %s,
->888   lelong  >0              Flags %x
+24     belong  60012           new-fs dump file (big endian), 
+>0     use     new-dump-be
+
+24     belong  60011           old-fs dump file (big endian), 
+>0     use     old-dump-be
+
+24     lelong  60012           new-fs dump file (little endian), 
+>0     use     \^new-dump-be
+
+24     lelong  60011           old-fs dump file (little endian), 
+>0     use     \^old-dump-be
+
+
+24     belong  0x19540119      new-fs dump file (ufs2, big endian), 
+>0     use     ufs2-dump-be
+
+24     lelong  0x19540119      new-fs dump file (ufs2, little endian), 
+>0     use     \^ufs2-dump-be
+
+18     leshort 60011           old-fs dump file (16-bit, assuming PDP-11 endianness),
+>2     medate  x               Previous dump %s,
+>6     medate  x               This dump %s,
+>10    leshort >0              Volume %ld,
+>0     leshort 1               tape header.
+>0     leshort 2               beginning of file record.
+>0     leshort 3               map of inodes on tape.
+>0     leshort 4               continuation of file record.
+>0     leshort 5               end of volume.
+>0     leshort 6               map of inodes deleted.
+>0     leshort 7               end of medium (for floppy).
index 8e3b7bc..6a23e56 100644 (file)
@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: elf,v 1.54 2011/12/17 17:16:29 christos Exp $
+# $File: elf,v 1.66 2014/03/06 16:37:39 christos Exp $
 # elf:  file(1) magic for ELF executables
 #
 # We have to check the byte order flag to see what byte order all the
 # Modified by (3): Christian 'Dr. Disk' Hechelmann <drdisk@ds9.au.s.shuttle.de> (fix of core support)
 # Modified by (4): <gerardo.cacciari@gmail.com> (VMS Itanium)
 # Modified by (5): Matthias Urlichs <smurf@debian.org> (Listing of many architectures)
-0      string          \177ELF         ELF
->4     byte            0               invalid class
->4     byte            1               32-bit
->4     byte            2               64-bit
->5     byte            0               invalid byte order
->5     byte            1               LSB
->>16   leshort         0               no file type,
-!:strength *2
+
+0      name            elf-le
+>16    leshort         0               no file type,
 !:mime application/octet-stream
->>16   leshort         1               relocatable,
+>16    leshort         1               relocatable,
 !:mime application/x-object
->>16   leshort         2               executable,
+>16    leshort         2               executable,
 !:mime application/x-executable
->>16   leshort         3               shared object,
+>16    leshort         3               shared object,
 !:mime application/x-sharedlib
->>16   leshort         4               core file
+>16    leshort         4               core file
 !:mime application/x-coredump
 # Core file detection is not reliable.
 #>>>(0x38+0xcc) string >\0             of '%s'
 #>>>(0x38+0x10) lelong >0              (signal %d),
->>16   leshort         &0xff00         processor-specific,
->>18   leshort         0               no machine,
->>18   leshort         1               AT&T WE32100 - invalid byte order,
->>18   leshort         2               SPARC - invalid byte order,
->>18   leshort         3               Intel 80386,
->>18   leshort         4               Motorola
->>>36  lelong          &0x01000000     68000 - invalid byte order,
->>>36  lelong          &0x00810000     CPU32 - invalid byte order,
->>>36  lelong          0               68020 - invalid byte order,
->>18   leshort         5               Motorola 88000 - invalid byte order,
->>18   leshort         6               Intel 80486,
->>18   leshort         7               Intel 80860,
+>16    leshort         &0xff00         processor-specific,
+>18    clear           x
+>18    leshort         0               no machine,
+>18    leshort         1               AT&T WE32100,
+>18    leshort         2               SPARC,
+>18    leshort         3               Intel 80386,
+>18    leshort         4               Motorola m68k,
+>>4    byte            1
+>>>36  lelong          &0x01000000     68000,
+>>>36  lelong          &0x00810000     CPU32,
+>>>36  lelong          0               68020,
+>18    leshort         5               Motorola m88k,
+>18    leshort         6               Intel 80486,
+>18    leshort         7               Intel 80860,
 # The official e_machine number for MIPS is now #8, regardless of endianness.
 # The second number (#10) will be deprecated later. For now, we still
 # say something if #10 is encountered, but only gory details for #8.
->>18   leshort         8               MIPS,
+>18    leshort         8               MIPS,
+>>4    byte            1
 >>>36  lelong          &0x20           N32
->>18   leshort         10              MIPS,
+>18    leshort         10              MIPS,
+>>4    byte            1
 >>>36  lelong          &0x20           N32
->>18   leshort         8
+>18    leshort         8
 # only for 32-bit
->>>4   byte            1
->>>>36  lelong&0xf0000000      0x00000000      MIPS-I
->>>>36  lelong&0xf0000000      0x10000000      MIPS-II
->>>>36  lelong&0xf0000000      0x20000000      MIPS-III
->>>>36  lelong&0xf0000000      0x30000000      MIPS-IV
->>>>36  lelong&0xf0000000      0x40000000      MIPS-V
->>>>36  lelong&0xf0000000      0x50000000      MIPS32
->>>>36  lelong&0xf0000000      0x60000000      MIPS64
->>>>36  lelong&0xf0000000      0x70000000      MIPS32 rel2
->>>>36  lelong&0xf0000000      0x80000000      MIPS64 rel2
+>>   byte            1
+>>>36  lelong&0xf0000000       0x00000000      MIPS-I
+>>>36  lelong&0xf0000000       0x10000000      MIPS-II
+>>>36  lelong&0xf0000000       0x20000000      MIPS-III
+>>>36  lelong&0xf0000000       0x30000000      MIPS-IV
+>>>36  lelong&0xf0000000       0x40000000      MIPS-V
+>>>36  lelong&0xf0000000       0x50000000      MIPS32
+>>>36  lelong&0xf0000000       0x60000000      MIPS64
+>>>36  lelong&0xf0000000       0x70000000      MIPS32 rel2
+>>>36  lelong&0xf0000000       0x80000000      MIPS64 rel2
 # only for 64-bit
->>>4   byte            2
->>>>48  lelong&0xf0000000      0x00000000      MIPS-I
->>>>48  lelong&0xf0000000      0x10000000      MIPS-II
->>>>48  lelong&0xf0000000      0x20000000      MIPS-III
->>>>48  lelong&0xf0000000      0x30000000      MIPS-IV
->>>>48  lelong&0xf0000000      0x40000000      MIPS-V
->>>>48  lelong&0xf0000000      0x50000000      MIPS32
->>>>48  lelong&0xf0000000      0x60000000      MIPS64
->>>>48  lelong&0xf0000000      0x70000000      MIPS32 rel2
->>>>48  lelong&0xf0000000      0x80000000      MIPS64 rel2
->>18   leshort         9               Amdahl - invalid byte order,
->>18   leshort         10              MIPS (deprecated),
->>18   leshort         11              RS6000 - invalid byte order,
->>18   leshort         15              PA-RISC - invalid byte order,
->>>50  leshort         0x0214          2.0
->>>48  leshort         &0x0008         (LP64),
->>18   leshort         16              nCUBE,
->>18   leshort         17              Fujitsu VPP500,
->>18   leshort         18              SPARC32PLUS - invalid byte order,
->>18   leshort         20              PowerPC,
->>18   leshort         22              IBM S/390,
->>18   leshort         36              NEC V800,
->>18   leshort         37              Fujitsu FR20,
->>18   leshort         38              TRW RH-32,
->>18   leshort         39              Motorola RCE,
->>18   leshort         40              ARM,
->>18   leshort         41              Alpha,
->>18   leshort         0xa390          IBM S/390 (obsolete),
->>18   leshort         42              Renesas SH,
->>18   leshort         43              SPARC V9 - invalid byte order,
->>18   leshort         44              Siemens Tricore Embedded Processor,
->>18   leshort         45              Argonaut RISC Core, Argonaut Technologies Inc.,
->>18   leshort         46              Renesas H8/300,
->>18   leshort         47              Renesas H8/300H,
->>18   leshort         48              Renesas H8S,
->>18   leshort         49              Renesas H8/500,
->>18   leshort         50              IA-64,
->>18   leshort         51              Stanford MIPS-X,
->>18   leshort         52              Motorola Coldfire,
->>18   leshort         53              Motorola M68HC12,
->>18   leshort         54              Fujitsu MMA,
->>18   leshort         55              Siemens PCP,
->>18   leshort         56              Sony nCPU,
->>18   leshort         57              Denso NDR1,
->>18   leshort         58              Start*Core,
->>18   leshort         59              Toyota ME16,
->>18   leshort         60              ST100,
->>18   leshort         61              Tinyj emb.,
->>18   leshort         62              x86-64,
->>18   leshort         63              Sony DSP,
->>18   leshort         66              FX66,
->>18   leshort         67              ST9+ 8/16 bit,
->>18   leshort         68              ST7 8 bit,
->>18   leshort         69              MC68HC16,
->>18   leshort         70              MC68HC11,
->>18   leshort         71              MC68HC08,
->>18   leshort         72              MC68HC05,
->>18   leshort         73              SGI SVx,
->>18   leshort         74              ST19 8 bit,
->>18   leshort         75              Digital VAX,
->>18   leshort         76              Axis cris,
->>18   leshort         77              Infineon 32-bit embedded,
->>18   leshort         78              Element 14 64-bit DSP,
->>18   leshort         79              LSI Logic 16-bit DSP,
->>18   leshort         80              MMIX,
->>18   leshort         81              Harvard machine-independent,
->>18   leshort         82              SiTera Prism,
->>18   leshort         83              Atmel AVR 8-bit,
->>18   leshort         84              Fujitsu FR30,
->>18   leshort         85              Mitsubishi D10V,
->>18   leshort         86              Mitsubishi D30V,
->>18   leshort         87              NEC v850,
->>18   leshort         88              Renesas M32R,
->>18   leshort         89              Matsushita MN10300,
->>18   leshort         90              Matsushita MN10200,
->>18   leshort         91              picoJava,
->>18   leshort         92              OpenRISC,
->>18   leshort         93              ARC Cores Tangent-A5,
->>18   leshort         94              Tensilica Xtensa,
->>18   leshort         97              NatSemi 32k,
->>18   leshort         106             Analog Devices Blackfin,
->>18   leshort         113             Altera Nios II,
->>18   leshort         0xae            META,
->>18   leshort         187             Tilera TILE64,
->>18   leshort         188             Tilera TILEPro,
->>18   leshort         191             Tilera TILE-Gx,
->>18   leshort         0x3426          OpenRISC (obsolete),
->>18   leshort         0x8472          OpenRISC (obsolete),
->>18   leshort         0x9026          Alpha (unofficial),
->>20   lelong          0               invalid version
->>20   lelong          1               version 1
->>36   lelong          1               MathCoPro/FPU/MAU Required
->5     byte            2               MSB
->>16   beshort         0               no file type,
-!:mime application/octet-stream
->>16   beshort         1               relocatable,
-!:mime application/x-object
->>16   beshort         2               executable,
-!:mime application/x-executable
->>16   beshort         3               shared object,
-!:mime application/x-sharedlib
->>16   beshort         4               core file,
-!:mime application/x-coredump
-#>>>(0x38+0xcc) string >\0             of '%s'
-#>>>(0x38+0x10) belong >0              (signal %d),
->>16   beshort         &0xff00         processor-specific,
->>18   beshort         0               no machine,
->>18   beshort         1               AT&T WE32100,
->>18   beshort         2               SPARC,
->>18   beshort         3               Intel 80386 - invalid byte order,
->>18   beshort         4               Motorola
->>>36  belong          &0x01000000     68000,
->>>36  belong          &0x00810000     CPU32,
->>>36  belong          0               68020,
->>18   beshort         5               Motorola 88000,
->>18   beshort         6               Intel 80486 - invalid byte order,
->>18   beshort         7               Intel 80860,
-# only for MIPS - see comment in little-endian section above.
->>18   beshort         8               MIPS,
->>>36  belong          &0x20           N32
->>18   beshort         10              MIPS,
->>>36  belong          &0x20           N32
->>18   beshort         8
+>>4    byte            2
+>>>48  lelong&0xf0000000       0x00000000      MIPS-I
+>>>48  lelong&0xf0000000       0x10000000      MIPS-II
+>>>48  lelong&0xf0000000       0x20000000      MIPS-III
+>>>48  lelong&0xf0000000       0x30000000      MIPS-IV
+>>>48  lelong&0xf0000000       0x40000000      MIPS-V
+>>>48  lelong&0xf0000000       0x50000000      MIPS32
+>>>48  lelong&0xf0000000       0x60000000      MIPS64
+>>>48  lelong&0xf0000000       0x70000000      MIPS32 rel2
+>>>48  lelong&0xf0000000       0x80000000      MIPS64 rel2
+>18    leshort         9               Amdahl,
+>18    leshort         10              MIPS (deprecated),
+>18    leshort         11              RS6000,
+>18    leshort         15              PA-RISC,
 # only for 32-bit
->>>4   byte            1
->>>>36  belong&0xf0000000      0x00000000      MIPS-I
->>>>36  belong&0xf0000000      0x10000000      MIPS-II
->>>>36  belong&0xf0000000      0x20000000      MIPS-III
->>>>36  belong&0xf0000000      0x30000000      MIPS-IV
->>>>36  belong&0xf0000000      0x40000000      MIPS-V
->>>>36  belong&0xf0000000      0x50000000      MIPS32
->>>>36  belong&0xf0000000      0x60000000      MIPS64
->>>>36  belong&0xf0000000      0x70000000      MIPS32 rel2
->>>>36  belong&0xf0000000      0x80000000      MIPS64 rel2
+>>4    byte            1
+>>>38  leshort         0x0214          2.0
+>>>36  leshort         &0x0008         (LP64)
 # only for 64-bit
->>>4   byte            2
->>>>48 belong&0xf0000000       0x00000000      MIPS-I
->>>>48 belong&0xf0000000       0x10000000      MIPS-II
->>>>48 belong&0xf0000000       0x20000000      MIPS-III
->>>>48 belong&0xf0000000       0x30000000      MIPS-IV
->>>>48 belong&0xf0000000       0x40000000      MIPS-V
->>>>48 belong&0xf0000000       0x50000000      MIPS32
->>>>48 belong&0xf0000000       0x60000000      MIPS64
->>>>48 belong&0xf0000000       0x70000000      MIPS32 rel2
->>>>48 belong&0xf0000000       0x80000000      MIPS64 rel2
->>18   beshort         9               Amdahl,
->>18   beshort         10              MIPS (deprecated),
->>18   beshort         11              RS6000,
->>18   beshort         15              PA-RISC
->>>50  beshort         0x0214          2.0
->>>48  beshort         &0x0008         (LP64)
->>18   beshort         16              nCUBE,
->>18   beshort         17              Fujitsu VPP500,
->>18   beshort         18              SPARC32PLUS,
->>>36  belong&0xffff00 0x000100        V8+ Required,
->>>36  belong&0xffff00 0x000200        Sun UltraSPARC1 Extensions Required,
->>>36  belong&0xffff00 0x000400        HaL R1 Extensions Required,
->>>36  belong&0xffff00 0x000800        Sun UltraSPARC3 Extensions Required,
->>18   beshort         20              PowerPC or cisco 4500,
->>18   beshort         21              64-bit PowerPC or cisco 7500,
->>18   beshort         22              IBM S/390,
->>18   beshort         23              Cell SPU,
->>18   beshort         24              cisco SVIP,
->>18   beshort         25              cisco 7200,
->>18   beshort         36              NEC V800 or cisco 12000,
->>18   beshort         37              Fujitsu FR20,
->>18   beshort         38              TRW RH-32,
->>18   beshort         39              Motorola RCE,
->>18   beshort         40              ARM,
->>18   beshort         41              Alpha,
->>18   beshort         42              Renesas SH,
->>18   beshort         43              SPARC V9,
->>>48  belong&0xffff00 0x000200        Sun UltraSPARC1 Extensions Required,
->>>48  belong&0xffff00 0x000400        HaL R1 Extensions Required,
->>>48  belong&0xffff00 0x000800        Sun UltraSPARC3 Extensions Required,
->>>48  belong&0x3      0               total store ordering,
->>>48  belong&0x3      1               partial store ordering,
->>>48  belong&0x3      2               relaxed memory ordering,
->>18   beshort         44              Siemens Tricore Embedded Processor,
->>18   beshort         45              Argonaut RISC Core, Argonaut Technologies Inc.,
->>18   beshort         46              Renesas H8/300,
->>18   beshort         47              Renesas H8/300H,
->>18   beshort         48              Renesas H8S,
->>18   beshort         49              Renesas H8/500,
->>18   beshort         50              IA-64,
->>18   beshort         51              Stanford MIPS-X,
->>18   beshort         52              Motorola Coldfire,
->>18   beshort         53              Motorola M68HC12,
->>18   beshort         73              Cray NV1,
->>18   beshort         75              Digital VAX,
->>18   beshort         88              Renesas M32R,
->>18   leshort         92              OpenRISC,
->>18   leshort         0x3426          OpenRISC (obsolete),
->>18   leshort         0x8472          OpenRISC (obsolete),
->>18   beshort         94              Tensilica Xtensa,
->>18   beshort         97              NatSemi 32k,
->>18   beshort         187             Tilera TILE64,
->>18   beshort         188             Tilera TILEPro,
->>18   beshort         191             Tilera TILE-Gx,
->>18   beshort         0x18ad          AVR32 (unofficial),
->>18   beshort         0x9026          Alpha (unofficial),
->>18   beshort         0xa390          IBM S/390 (obsolete),
->>20   belong          0               invalid version
->>20   belong          1               version 1
->>36   belong          1               MathCoPro/FPU/MAU Required
+>>4    byte            2
+>>>50  leshort         0x0214          2.0
+>>>48  leshort         &0x0008         (LP64)
+>18    leshort         16              nCUBE,
+>18    leshort         17              Fujitsu VPP500,
+>18    leshort         18              SPARC32PLUS,
+# only for 32-bit
+>>4    byte            1
+>>>36  lelong&0xffff00 0x000100        V8+ Required,
+>>>36  lelong&0xffff00 0x000200        Sun UltraSPARC1 Extensions Required,
+>>>36  lelong&0xffff00 0x000400        HaL R1 Extensions Required,
+>>>36  lelong&0xffff00 0x000800        Sun UltraSPARC3 Extensions Required,
+>18    leshort         19              Intel 80960,
+>18    leshort         20              PowerPC or cisco 4500,
+>18    leshort         21              64-bit PowerPC or cisco 7500,
+>18    leshort         22              IBM S/390,
+>18    leshort         23              Cell SPU,
+>18    leshort         24              cisco SVIP,
+>18    leshort         25              cisco 7200,
+>18    leshort         36              NEC V800 or cisco 12000,
+>18    leshort         37              Fujitsu FR20,
+>18    leshort         38              TRW RH-32,
+>18    leshort         39              Motorola RCE,
+>18    leshort         40              ARM,
+>>4    byte            1
+>>>36  lelong&0xff000000       0x04000000      EABI4
+>>>36  lelong&0xff000000       0x05000000      EABI5
+>>>36  lelong          &0x00800000     BE8
+>>>36  lelong          &0x00400000     LE8
+>18    leshort         41              Alpha,
+>18    leshort         42              Renesas SH,
+>18    leshort         43              SPARC V9,
+>>4    byte            2
+>>>48  lelong&0xffff00 0x000200        Sun UltraSPARC1 Extensions Required,
+>>>48  lelong&0xffff00 0x000400        HaL R1 Extensions Required,
+>>>48  lelong&0xffff00 0x000800        Sun UltraSPARC3 Extensions Required,
+>>>48  lelong&0x3      0               total store ordering,
+>>>48  lelong&0x3      1               partial store ordering,
+>>>48  lelong&0x3      2               relaxed memory ordering,
+>18    leshort         44              Siemens Tricore Embedded Processor,
+>18    leshort         45              Argonaut RISC Core, Argonaut Technologies Inc.,
+>18    leshort         46              Renesas H8/300,
+>18    leshort         47              Renesas H8/300H,
+>18    leshort         48              Renesas H8S,
+>18    leshort         49              Renesas H8/500,
+>18    leshort         50              IA-64,
+>18    leshort         51              Stanford MIPS-X,
+>18    leshort         52              Motorola Coldfire,
+>18    leshort         53              Motorola M68HC12,
+>18    leshort         54              Fujitsu MMA,
+>18    leshort         55              Siemens PCP,
+>18    leshort         56              Sony nCPU,
+>18    leshort         57              Denso NDR1,
+>18    leshort         58              Start*Core,
+>18    leshort         59              Toyota ME16,
+>18    leshort         60              ST100,
+>18    leshort         61              Tinyj emb.,
+>18    leshort         62              x86-64,
+>18    leshort         63              Sony DSP,
+>18    leshort         64              DEC PDP-10,
+>18    leshort         65              DEC PDP-11,
+>18    leshort         66              FX66,
+>18    leshort         67              ST9+ 8/16 bit,
+>18    leshort         68              ST7 8 bit,
+>18    leshort         69              MC68HC16,
+>18    leshort         70              MC68HC11,
+>18    leshort         71              MC68HC08,
+>18    leshort         72              MC68HC05,
+>18    leshort         73              SGI SVx or Cray NV1,
+>18    leshort         74              ST19 8 bit,
+>18    leshort         75              Digital VAX,
+>18    leshort         76              Axis cris,
+>18    leshort         77              Infineon 32-bit embedded,
+>18    leshort         78              Element 14 64-bit DSP,
+>18    leshort         79              LSI Logic 16-bit DSP,
+>18    leshort         80              MMIX,
+>18    leshort         81              Harvard machine-independent,
+>18    leshort         82              SiTera Prism,
+>18    leshort         83              Atmel AVR 8-bit,
+>18    leshort         84              Fujitsu FR30,
+>18    leshort         85              Mitsubishi D10V,
+>18    leshort         86              Mitsubishi D30V,
+>18    leshort         87              NEC v850,
+>18    leshort         88              Renesas M32R,
+>18    leshort         89              Matsushita MN10300,
+>18    leshort         90              Matsushita MN10200,
+>18    leshort         91              picoJava,
+>18    leshort         92              OpenRISC,
+>18    leshort         93              ARC Cores Tangent-A5,
+>18    leshort         94              Tensilica Xtensa,
+>18    leshort         95              Alphamosaic VideoCore,
+>18    leshort         96              Thompson Multimedia,
+>18    leshort         97              NatSemi 32k,
+>18    leshort         98              Tenor Network TPC,
+>18    leshort         99              Trebia SNP 1000,
+>18    leshort         100             STMicroelectronics ST200,
+>18    leshort         101             Ubicom IP2022,
+>18    leshort         102             MAX Processor,
+>18    leshort         103             NatSemi CompactRISC,
+>18    leshort         104             Fujitsu F2MC16,
+>18    leshort         105             TI msp430,
+>18    leshort         106             Analog Devices Blackfin,
+>18    leshort         107             S1C33 Family of Seiko Epson,
+>18    leshort         108             Sharp embedded,
+>18    leshort         109             Arca RISC,
+>18    leshort         110             PKU-Unity Ltd.,
+>18    leshort         111             eXcess: 16/32/64-bit,
+>18    leshort         112             Icera Deep Execution Processor,
+>18    leshort         113             Altera Nios II,
+>18    leshort         114             NatSemi CRX,
+>18    leshort         115             Motorola XGATE,
+>18    leshort         116             Infineon C16x/XC16x,
+>18    leshort         117             Renesas M16C series,
+>18    leshort         118             Microchip dsPIC30F,
+>18    leshort         119             Freescale RISC core,
+>18    leshort         120             Renesas M32C series,
+>18    leshort         131             Altium TSK3000 core,
+>18    leshort         132             Freescale RS08,
+>18    leshort         134             Cyan Technology eCOG2,
+>18    leshort         135             Sunplus S+core7 RISC,
+>18    leshort         136             New Japan Radio (NJR) 24-bit DSP,
+>18    leshort         137             Broadcom VideoCore III,
+>18    leshort         138             LatticeMico32,
+>18    leshort         139             Seiko Epson C17 family,
+>18    leshort         140             TI TMS320C6000 DSP family,
+>18    leshort         141             TI TMS320C2000 DSP family,
+>18    leshort         142             TI TMS320C55x DSP family,
+>18    leshort         160             STMicroelectronics 64bit VLIW DSP,
+>18    leshort         161             Cypress M8C,
+>18    leshort         162             Renesas R32C series,
+>18    leshort         163             NXP TriMedia family,
+>18    leshort         164             QUALCOMM DSP6,
+>18    leshort         165             Intel 8051 and variants,
+>18    leshort         166             STMicroelectronics STxP7x family,
+>18    leshort         167             Andes embedded RISC,
+>18    leshort         168             Cyan eCOG1X family,
+>18    leshort         169             Dallas MAXQ30,
+>18    leshort         170             New Japan Radio (NJR) 16-bit DSP,
+>18    leshort         171             M2000 Reconfigurable RISC,
+>18    leshort         172             Cray NV2 vector architecture,
+>18    leshort         173             Renesas RX family,
+>18    leshort         174             META,
+>18    leshort         175             MCST Elbrus,
+>18    leshort         176             Cyan Technology eCOG16 family,
+>18    leshort         177             NatSemi CompactRISC,
+>18    leshort         178             Freescale Extended Time Processing Unit,
+>18    leshort         179             Infineon SLE9X,
+>18    leshort         180             Intel L1OM,
+>18    leshort         181             Intel K1OM,
+>18    leshort         183             ARM aarch64,
+>18    leshort         185             Atmel 32-bit family,
+>18    leshort         186             STMicroeletronics STM8 8-bit,
+>18    leshort         187             Tilera TILE64,
+>18    leshort         188             Tilera TILEPro,
+>18    leshort         189             Xilinx MicroBlaze 32-bit RISC,
+>18    leshort         190             NVIDIA CUDA architecture,
+>18    leshort         191             Tilera TILE-Gx,
+>18    leshort         197             Renesas RL78 family,
+>18    leshort         199             Renesas 78K0R,
+>18    leshort         0x1057          AVR (unofficial),
+>18    leshort         0x1059          MSP430 (unofficial),
+>18    leshort         0x1223          Adapteva Epiphany (unofficial),
+>18    leshort         0x2530          Morpho MT (unofficial),
+>18    leshort         0x3330          FR30 (unofficial),
+>18    leshort         0x3426          OpenRISC (obsolete),
+>18    leshort         0x4688          Infineon C166 (unofficial),
+>18    leshort         0x5441          Cygnus FRV (unofficial),
+>18    leshort         0x5aa5          DLX (unofficial),
+>18    leshort         0x7650          Cygnus D10V (unofficial),
+>18    leshort         0x7676          Cygnus D30V (unofficial),
+>18    leshort         0x8217          Ubicom IP2xxx (unofficial),
+>18    leshort         0x8472          OpenRISC (obsolete),
+>18    leshort         0x9025          Cygnus PowerPC (unofficial),
+>18    leshort         0x9026          Alpha (unofficial),
+>18    leshort         0x9041          Cygnus M32R (unofficial),
+>18    leshort         0x9080          Cygnus V850 (unofficial),
+>18    leshort         0xa390          IBM S/390 (obsolete),
+>18    leshort         0xabc7          Old Xtensa (unofficial),
+>18    leshort         0xad45          xstormy16 (unofficial),
+>18    leshort         0xbaab          Old MicroBlaze (unofficial),,
+>18    leshort         0xbeef          Cygnus MN10300 (unofficial),
+>18    leshort         0xdead          Cygnus MN10200 (unofficial),
+>18    leshort         0xf00d          Toshiba MeP (unofficial),
+>18    leshort         0xfeb0          Renesas M32C (unofficial),
+>18    leshort         0xfeba          Vitesse IQ2000 (unofficial),
+>18    leshort         0xfebb          NIOS (unofficial),
+>18    leshort         0xfeed          Moxie (unofficial),
+>18    default         x
+>>18   leshort         x               *unknown arch 0x%x*
+>20    lelong          0               invalid version
+>20    lelong          1               version 1
+
+0      string          \177ELF         ELF
+!:strength *2
+>4     byte            0               invalid class
+>4     byte            1               32-bit
+>4     byte            2               64-bit
+>5     byte            0               invalid byte order
+>5     byte            1               LSB
+>>0    use             elf-le
+>5     byte            2               MSB
+>>0    use             \^elf-le
 # Up to now only 0, 1 and 2 are defined; I've seen a file with 0x83, it seemed
 # like proper ELF, but extracting the string had bad results.
 >4      byte            <0x80
index c67a8b6..6f4ab5f 100644 (file)
@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: epoc,v 1.7 2009/09/19 16:28:09 christos Exp $
+# $File: epoc,v 1.9 2013/12/21 14:28:15 christos Exp $
 # EPOC : file(1) magic for EPOC documents [Psion Series 5/Osaris/Geofox 1]
 # Stefan Praszalowicz <hpicollo@worldnet.fr> and Peter Breitenlohner <peb@mppmu.mpg.de>
 # Useful information for improving this file can be found at:
@@ -21,6 +21,7 @@
 !:mime application/x-epoc-word
 >>8    lelong          0x10000085      OPL program (TextEd)
 !:mime application/x-epoc-opl
+>>8    lelong          0x10000087      Comms settings
 >>8    lelong          0x10000088      Sheet file
 !:mime application/x-epoc-sheet
 >>8    lelong          0x100001C4      EasyFax initialisation file
 >4     lelong          0x10000074      OPL application
 !:mime application/x-epoc-app
 >4     lelong          0x1000008A      exported multi-bitmap image
+>4     lelong          0x1000016D
+>>8    lelong          0x10000087      Comms names
 
 0      lelong          0x10000041      Psion Series 5 ROM multi-bitmap image
 
 0      lelong          0x10000050      Psion Series 5
 >4     lelong          0x1000006D      database
+>>8    lelong          0x10000084      Agenda file
+!:mime application/x-epoc-agenda
+>>8    lelong          0x10000086      Data file
+!:mime application/x-epoc-data
+>>8    lelong          0x10000CEA      Jotter file
+!:mime application/x-epoc-jotter
 >4     lelong          0x100000E4      ini file
 
 0      lelong          0x10000079      Psion Series 5 binary:
index af9695b..b3796f5 100644 (file)
@@ -1,8 +1,189 @@
-
 #------------------------------------------------------------------------------
-# $File: filesystems,v 1.61 2011/01/10 14:01:10 christos Exp $
+# $File: filesystems,v 1.87 2014/03/01 03:04:06 christos Exp $
 # filesystems:  file(1) magic for different filesystems
 #
+0      name    partid  
+>0     ubyte   0x00    Unused
+>0     ubyte   0x01    12-bit FAT
+>0     ubyte   0x02    XENIX /
+>0     ubyte   0x03    XENIX /usr
+>0     ubyte   0x04    16-bit FAT, less than 32M
+>0     ubyte   0x05    extended partition
+>0     ubyte   0x06    16-bit FAT, more than 32M
+>0     ubyte   0x07    OS/2 HPFS, NTFS, QNX2, Adv. UNIX
+>0     ubyte   0x08    AIX or os, or etc.
+>0     ubyte   0x09    AIX boot partition or Coherent
+>0     ubyte   0x0a    O/2 boot manager or Coherent swap
+>0     ubyte   0x0b    32-bit FAT
+>0     ubyte   0x0c    32-bit FAT, LBA-mapped
+>0     ubyte   0x0d    7XXX, LBA-mapped
+>0     ubyte   0x0e    16-bit FAT, LBA-mapped
+>0     ubyte   0x0f    extended partition, LBA-mapped
+>0     ubyte   0x10    OPUS
+>0     ubyte   0x11    OS/2 DOS 12-bit FAT
+>0     ubyte   0x12    Compaq diagnostics
+>0     ubyte   0x14    OS/2 DOS 16-bit FAT <32M
+>0     ubyte   0x16    OS/2 DOS 16-bit FAT >=32M
+>0     ubyte   0x17    OS/2 hidden IFS
+>0     ubyte   0x18    AST Windows swapfile
+>0     ubyte   0x19    Willowtech Photon coS
+>0     ubyte   0x1b    hidden win95 fat 32
+>0     ubyte   0x1c    hidden win95 fat 32 lba
+>0     ubyte   0x1d    hidden win95 fat 16 lba
+>0     ubyte   0x20    Willowsoft OFS1
+>0     ubyte   0x21    reserved
+>0     ubyte   0x23    reserved
+>0     ubyte   0x24    NEC DOS
+>0     ubyte   0x26    reserved
+>0     ubyte   0x31    reserved
+>0     ubyte   0x32    Alien Internet Services NOS
+>0     ubyte   0x33    reserved
+>0     ubyte   0x34    reserved
+>0     ubyte   0x35    JFS on OS2
+>0     ubyte   0x36    reserved
+>0     ubyte   0x38    Theos
+>0     ubyte   0x39    Plan 9, or Theos spanned
+>0     ubyte   0x3a    Theos ver 4 4gb partition
+>0     ubyte   0x3b    Theos ve 4 extended partition
+>0     ubyte   0x3c    PartitionMagic recovery
+>0     ubyte   0x3d    Hidden Netware
+>0     ubyte   0x40    VENIX 286 or LynxOS
+>0     ubyte   0x41    PReP
+>0     ubyte   0x42    linux swap sharing DRDOS disk
+>0     ubyte   0x43    linux sharing DRDOS disk
+>0     ubyte   0x44    GoBack change utility
+>0     ubyte   0x45    Boot US Boot manager
+>0     ubyte   0x46    EUMEL/Elan or Ergos 3
+>0     ubyte   0x47    EUMEL/Elan or Ergos 3
+>0     ubyte   0x48    EUMEL/Elan or Ergos 3
+>0     ubyte   0x4a    ALFX/THIN filesystem for DOS
+>0     ubyte   0x4c    Oberon partition
+>0     ubyte   0x4d    QNX4.x
+>0     ubyte   0x4e    QNX4.x 2nd part
+>0     ubyte   0x4f    QNX4.x 3rd part
+>0     ubyte   0x50    DM (disk manager)
+>0     ubyte   0x51    DM6 Aux1 (or Novell)
+>0     ubyte   0x52    CP/M or Microport SysV/AT
+>0     ubyte   0x53    DM6 Aux3
+>0     ubyte   0x54    DM6 DDO
+>0     ubyte   0x55    EZ-Drive (disk manager)
+>0     ubyte   0x56    Golden Bow (disk manager)
+>0     ubyte   0x57    Drive PRO
+>0     ubyte   0x5c    Priam Edisk (disk manager)
+>0     ubyte   0x61    SpeedStor
+>0     ubyte   0x63    GNU HURD or Mach or Sys V/386
+>0     ubyte   0x64    Novell Netware 2.xx or Speedstore
+>0     ubyte   0x65    Novell Netware 3.xx
+>0     ubyte   0x66    Novell 386 Netware
+>0     ubyte   0x67    Novell
+>0     ubyte   0x68    Novell
+>0     ubyte   0x69    Novell
+>0     ubyte   0x70    DiskSecure Multi-Boot
+>0     ubyte   0x71    reserved
+>0     ubyte   0x73    reserved
+>0     ubyte   0x74    reserved
+>0     ubyte   0x75    PC/IX
+>0     ubyte   0x76    reserved
+>0     ubyte   0x77    M2FS/M2CS partition
+>0     ubyte   0x78    XOSL boot loader filesystem
+>0     ubyte   0x80    MINIX until 1.4a
+>0     ubyte   0x81    MINIX since 1.4b
+>0     ubyte   0x82    Linux swap or Solaris
+>0     ubyte   0x83    Linux native
+>0     ubyte   0x84    OS/2 hidden C: drive
+>0     ubyte   0x85    Linux extended partition
+>0     ubyte   0x86    NT FAT volume set
+>0     ubyte   0x87    NTFS volume set or HPFS mirrored
+>0     ubyte   0x8a    Linux Kernel AiR-BOOT partition
+>0     ubyte   0x8b    Legacy Fault tolerant FAT32
+>0     ubyte   0x8c    Legacy Fault tolerant FAT32 ext
+>0     ubyte   0x8d    Hidden free FDISK FAT12
+>0     ubyte   0x8e    Linux Logical Volume Manager
+>0     ubyte   0x90    Hidden free FDISK FAT16
+>0     ubyte   0x91    Hidden free FDISK DOS EXT
+>0     ubyte   0x92    Hidden free FDISK FAT16 Big
+>0     ubyte   0x93    Amoeba filesystem
+>0     ubyte   0x94    Amoeba bad block table
+>0     ubyte   0x95    MIT EXOPC native partitions
+>0     ubyte   0x97    Hidden free FDISK FAT32
+>0     ubyte   0x98    Datalight ROM-DOS Super-Boot
+>0     ubyte   0x99    Mylex EISA SCSI
+>0     ubyte   0x9a    Hidden free FDISK FAT16 LBA
+>0     ubyte   0x9b    Hidden free FDISK EXT LBA
+>0     ubyte   0x9f    BSDI?
+>0     ubyte   0xa0    IBM Thinkpad hibernation
+>0     ubyte   0xa1    HP Volume expansion (SpeedStor)
+>0     ubyte   0xa3    HP Volume expansion (SpeedStor)
+>0     ubyte   0xa4    HP Volume expansion (SpeedStor)
+>0     ubyte   0xa5    386BSD partition type
+>0     ubyte   0xa6    OpenBSD partition type
+>0     ubyte   0xa7    NeXTSTEP 486
+>0     ubyte   0xa8    Apple UFS
+>0     ubyte   0xa9    NetBSD partition type
+>0     ubyte   0xaa    Olivetty Fat12 1.44MB Service part
+>0     ubyte   0xab    Apple Boot
+>0     ubyte   0xae    SHAG OS filesystem
+>0     ubyte   0xaf    Apple HFS
+>0     ubyte   0xb0    BootStar Dummy
+>0     ubyte   0xb1    reserved
+>0     ubyte   0xb3    reserved
+>0     ubyte   0xb4    reserved
+>0     ubyte   0xb6    reserved
+>0     ubyte   0xb7    BSDI BSD/386 filesystem
+>0     ubyte   0xb8    BSDI BSD/386 swap
+>0     ubyte   0xbb    Boot Wizard Hidden
+>0     ubyte   0xbe    Solaris 8 partition type
+>0     ubyte   0xbf    Solaris partition type
+>0     ubyte   0xc0    CTOS
+>0     ubyte   0xc1    DRDOS/sec (FAT-12)
+>0     ubyte   0xc2    Hidden Linux
+>0     ubyte   0xc3    Hidden Linux swap
+>0     ubyte   0xc4    DRDOS/sec (FAT-16, < 32M)
+>0     ubyte   0xc5    DRDOS/sec (EXT)
+>0     ubyte   0xc6    DRDOS/sec (FAT-16, >= 32M)
+>0     ubyte   0xc7    Syrinx (Cyrnix?) or HPFS disabled
+>0     ubyte   0xc8    Reserved for DR-DOS 8.0+
+>0     ubyte   0xc9    Reserved for DR-DOS 8.0+
+>0     ubyte   0xca    Reserved for DR-DOS 8.0+
+>0     ubyte   0xcb    DR-DOS 7.04+ Secured FAT32 CHS
+>0     ubyte   0xcc    DR-DOS 7.04+ Secured FAT32 LBA
+>0     ubyte   0xcd    CTOS Memdump
+>0     ubyte   0xce    DR-DOS 7.04+ FAT16X LBA
+>0     ubyte   0xcf    DR-DOS 7.04+ EXT LBA
+>0     ubyte   0xd0    REAL/32 secure big partition
+>0     ubyte   0xd1    Old Multiuser DOS FAT12
+>0     ubyte   0xd4    Old Multiuser DOS FAT16 Small
+>0     ubyte   0xd5    Old Multiuser DOS Extended
+>0     ubyte   0xd6    Old Multiuser DOS FAT16 Big
+>0     ubyte   0xd8    CP/M 86
+>0     ubyte   0xdb    CP/M or Concurrent CP/M
+>0     ubyte   0xdd    Hidden CTOS Memdump
+>0     ubyte   0xde    Dell PowerEdge Server utilities
+>0     ubyte   0xdf    DG/UX virtual disk manager
+>0     ubyte   0xe0    STMicroelectronics ST AVFS
+>0     ubyte   0xe1    DOS access or SpeedStor 12-bit
+>0     ubyte   0xe3    DOS R/O or Storage Dimensions
+>0     ubyte   0xe4    SpeedStor 16-bit FAT < 1024 cyl.
+>0     ubyte   0xe5    reserved
+>0     ubyte   0xe6    reserved
+>0     ubyte   0xeb    BeOS
+>0     ubyte   0xee    GPT Protective MBR
+>0     ubyte   0xef    EFI system partition
+>0     ubyte   0xf0    Linux PA-RISC boot loader
+>0     ubyte   0xf1    SpeedStor or Storage Dimensions
+>0     ubyte   0xf2    DOS 3.3+ Secondary
+>0     ubyte   0xf3    reserved
+>0     ubyte   0xf4    SpeedStor large partition
+>0     ubyte   0xf5    Prologue multi-volumen partition
+>0     ubyte   0xf6    reserved
+>0     ubyte   0xf9    pCache: ext2/ext3 persistent cache
+>0     ubyte   0xfa    Bochs x86 emulator
+>0     ubyte   0xfb    VMware File System
+>0     ubyte   0xfc    VMware Swap
+>0     ubyte   0xfd    Linux RAID partition persistent sb
+>0     ubyte   0xfe    LANstep or IBM PS/2 IML
+>0     ubyte   0xff    Xenix Bad Block Table
+
 0      string  \366\366\366\366        PC formatted floppy with no filesystem
 # Sun disk labels
 # From /usr/include/sun/dklabel.h:
 >>0770 long            x               %ld blocks
 # Is there a boot block written 1 sector in?
 >512    belong&077777777       0600407 \b, boot block present
-# Joerg Jenderek: Smart Boot Manager backup file is 41 byte header + first sectors of disc
+
+# Joerg Jenderek: Smart Boot Manager backup file is 25 (MSDOS) or 41 (LINUX) byte header + first sectors of disk
 # (http://btmgr.sourceforge.net/docs/user-guide-3.html)
 0              string  SBMBAKUP_       Smart Boot Manager backup file
 >9             string  x               \b, version %-5.5s
 >>>>21         ubyte   x               \b, from drive 0x%x
 >>>22          ubyte   >0              
 >>>>21         string  x               \b, from drive %s
+>>>535         search/17       \x55\xAA        
+>>>>&-512      indirect        x       \b; contains 
 
-# Joerg Jenderek
+# updated by Joerg Jenderek at Nov 2012
 # DOS Emulator image is 128 byte, null right padded header + harddisc image
 0      string  DOSEMU\0                        
 >0x27E leshort 0xAA55                  
 >>>>7  ulelong >0              \b, %u heads
 >>>>11 ulelong >0              \b, %d sectors/track
 >>>>15 ulelong >0              \b, %d cylinders
+>>>>128        indirect        x       \b; contains 
 
-# updated by Joerg Jenderek at Sep 2007
+# added by Joerg Jenderek at Nov 2012
+# http://www.thenakedpc.com/articles/v04/08/0408-05.html
+# Symantec (Peter Norton) Image.dat file consists of variable header, bootrecord, part of FAT and root directory data
+0      string  PNCIHISK\0              Norton Utilities disc image data
+# real x86 boot sector with jump instruction
+>509   search/1026     \x55\xAA\xeb    
+>>&-1  indirect        x               \b; contains 
+# http://file-extension.net/seeker/file_extension_dat
+0      string  PNCIUNDO                Norton Disk Doctor UnDo file
+#
+
+# DOS/MBR boot sector updated by Joerg Jenderek at Sep 2007,May 2011
+# for any allowed sector sizes
+30             search/481      \x55\xAA        
+# to display DOS/MBR boot sector (40) before old one (strength=50+21),Syslinux bootloader (71),SYSLINUX MBR (37+36),NetBSD mbr (110),AdvanceMAME mbr (111)
+# DOS BPB information (70) and after DOS floppy (120) like in previous file version
+!:strength +72
+# for sector sizes < 512 Bytes
+>11            uleshort        <512            
+>>(11.s-2)     uleshort        0xAA55          DOS/MBR boot sector
+# for sector sizes with 512 or more Bytes
+>0x1FE         leshort         0xAA55          DOS/MBR boot sector
+# keep old DOS/MBR boot sector as dummy for mbr and bootloader displaying
 # only for sector sizes with 512 or more Bytes
-0x1FE  leshort 0xAA55                  x86 boot sector
-# to do also for sectors < than 512 Bytes and some other files, GRR
-#30    search/481      \x55\xAA        x86 boot sector
-# not for BeOS floppy 1440k, MBRs
-#(11.s-2) uleshort     0xAA55          x86 boot sector
+0x1FE          leshort         0xAA55          DOS/MBR boot sector
+!:strength +72
+# to display information (50) before DOS BPB (strength=70) and after DOS floppy (120) like in old file version
+#!:strength +21
 >2     string  OSBS                    \b, OS/BS MBR
-# J\xf6rg Jenderek <joerg dot jenderek at web dot de>
->0x8C  string  Invalid\ partition\ table       \b, MS-DOS MBR
+# added by Joerg Jenderek at Feb 2013 according to http://thestarman.pcministry.com/asm/mbr/
+# and http://en.wikipedia.org/wiki/Master_Boot_Record
+# test for nearly all MS-DOS Master Boot Record initial program loader (IPL) is now done by 
+# characteristic assembler instructions: xor ax,ax;mov ss,ax;mov sp,7c00
+>0     search/2        \x33\xc0\x8e\xd0\xbc\x00\x7c    MS-MBR
+# Microsoft Windows 95A and early ( http://thestarman.pcministry.com/asm/mbr/STDMBR.htm )
+# assembler instructions: mov si,sp;push ax;pop es;push ax;pop ds;sti;cld
+>>8    ubequad         0x8bf45007501ffbfc              
+# http://thestarman.pcministry.com/asm/mbr/200MBR.htm
+>>>0x16        ubyte           0xF3                            \b,DOS 2
+>>>>219        regex           Author\ -\                      Author:
+# found "David Litton" , "A Pehrsson  "
+>>>>>&0        string          x                               "%s"
+>>>0x16        ubyte           0xF2                            
+# NEC MS-DOS 3.30 Rev. 3 . See http://thestarman.pcministry.com/asm/mbr/DOS33MBR.htm
+# assembler instructions: mov di,077c;cmp word ptrl[di],a55a;jnz
+>>>>0x22       ubequad 0xbf7c07813d5aa575              \b,NEC 3.3
+# version MS-DOS 3.30 til MS-Windows 95A (WinVer=4.00.1111)
+>>>>0x22       default x                               \b,D0S version 3.3-7.0
+# error messages are printed by assembler instructions: mov si,06nn;...;int 10 (0xBEnn06;...)
+# where nn is string offset varying for different languages
+# "Invalid partition table"                            nn=0x8b for english version
+>>>>>(0x49.b)  string          Invalid\ partition\ table               english
+>>>>>(0x49.b)  string          Ung\201ltige\ Partitionstabelle         german
+>>>>>(0x49.b)  string          Table\ de\ partition\ invalide          french
+>>>>>(0x49.b)  string          Tabela\ de\ parti\207ao\ inv\240lida    portuguese
+>>>>>(0x49.b)  string          Tabla\ de\ partici\242n\ no\ v\240lida  spanish
+>>>>>(0x49.b)  string          Tavola\ delle\ partizioni\ non\ valida  italian
+>>>>>0x49      ubyte           >0                      at offset 0x%x
+>>>>>>(0x49.b) string          >\0                     "%s"
+# "Error loading operating system"                     nn=0xa3 for english version
+# "Fehler beim Laden des Betriebssystems"              nn=0xa7 for german version
+# "Erreur en chargeant syst\212me d'exploitation"      nn=0xa7 for french version
+# "Erro na inicializa\207ao do sistema operacional"    nn=0xa7 for portuguese Brazilian version
+# "Error al cargar sistema operativo"                  nn=0xa8 for spanish version
+# "Errore durante il caricamento del sistema operativo"        nn=0xae for italian version
+>>>>>0x74      ubyte           >0                      at offset 0x%x
+>>>>>>(0x74.b) string          >\0                     "%s"
+# "Missing operating system"                           nn=0xc2 for english version
+# "Betriebssystem fehlt"                               nn=0xcd for german version
+# "Syst\212me d'exploitation absent"                   nn=0xd2 for french version
+# "Sistema operacional nao encontrado"                 nn=0xd4 for portuguese Brazilian version
+# "Falta sistema operativo"                            nn=0xca for spanish version
+# "Sistema operativo mancante"                         nn=0xe2 for italian version
+>>>>>0x79      ubyte           >0                      at offset 0x%x
+>>>>>>(0x79.b) string          >\0                     "%s"
+# Microsoft Windows 95B to XP (http://thestarman.pcministry.com/asm/mbr/95BMEMBR.htm)
+# assembler instructions: push ax;pop es;push  ax;pop ds;cld;mov si,7c1b
+>>8    ubequad         0x5007501ffcbe1b7c              
+# assembler instructions: rep;movsb;retf;mov si,07be;mov cl,04
+>>>24          ubequad 0xf3a4cbbebe07b104              9M
+# "Invalid partition table"                            nn=0x10F for english version
+# "Ungültige Partitionstabelle"                               nn=0x10F for german version
+# "Table de partition erronée"                                nn=0x10F for french version
+# "\216\257\245\340\240\346\250\256\255\255\240\357 \341\250\341\342\245\254\240 \255\245 \255\240\251\244\245\255\240"        nn=0x10F for russian version
+>>>>(0x3C.b+0x0FF)     string  Invalid\ partition\ table               english
+>>>>(0x3C.b+0x0FF)     string  Ung\201ltige\ Partitionstabelle         german
+>>>>(0x3C.b+0x0FF)     string  Table\ de\ partition\ erron\202e        french
+>>>>(0x3C.b+0x0FF)     string  \215\245\257\340\240\242\250\253\354\255\240\357\ \342\240\241\253\250\346\240  russian
+>>>>0x3C               ubyte   x                       at offset 0x%x+0xFF
+>>>>(0x3C.b+0x0FF)     string  >\0                     "%s"
+# "Error loading operating system"                     nn=0x127 for english version
+# "Fehler beim Laden des Betriebssystems"              nn=0x12b for german version
+# "Erreur lors du chargement du système d'exploitation"       nn=0x12a for french version
+# "\216\350\250\241\252\240 \257\340\250 \247\240\243\340\343\247\252\245 \256\257\245\340\240\346\250\256\255\255\256\251 \341\250\341\342\245\254\353"       nn=0x12d for russian version
+>>>>0xBD               ubyte   x                       at offset 0x1%x
+>>>>(0xBD.b+0x100)     string  >\0                     "%s"
+# "Missing operating system"                           nn=0x146 for english version
+# "Betriebssystem fehlt"                               nn=0x151 for german version
+# "Système d'exploitation manquant"                   nn=0x15e for french version
+# "\216\257\245\340\240\346\250\256\255\255\240\357 \341\250\341\342\245\254\240 \255\245 \255\240\251\244\245\255\240"        nn=0x156 for russian version
+>>>>0xA9               ubyte   x                       at offset 0x1%x
+>>>>(0xA9.b+0x100)     string  >\0                     "%s"
+# http://thestarman.pcministry.com/asm/mbr/Win2kmbr.htm
+# assembler instructions: rep;movsb;retf;mov BP,07be;mov cl,04
+>>>24          ubequad 0xf3a4cbbdbe07b104              XP
+# where xxyyzz are lower bits from offsets of error messages varying for different languages
+>>>>0x1B4      ubelong&0x00FFFFFF      0x002c4463      english
+>>>>0x1B4      ubelong&0x00FFFFFF      0x002c486e      german
+# "Invalid partition table"                            xx=0x12C for english version
+# "Ungültige Partitionstabelle"                               xx=0x12C for german version
+>>>>0x1b5      ubyte           >0                      at offset 0x1%x
+>>>>(0x1b5.b+0x100)    string  >\0                     "%s"
+# "Error loading operating system"                     yy=0x144 for english version
+# "Fehler beim Laden des Betriebssystems"              yy=0x148 for german version
+>>>>0x1b6      ubyte           >0                      at offset 0x1%x
+>>>>(0x1b6.b+0x100)    string  >\0                     "%s"
+# "Missing operating system"                           zz=0x163 for english version
+# "Betriebssystem nicht vorhanden"                     zz=0x16e for german version
+>>>>0x1b7      ubyte           >0                      at offset 0x1%x
+>>>>(0x1b7.b+0x100)    string  >\0                     "%s"
+# Microsoft Windows Vista or 7
+# assembler instructions: ..;mov ds,ax;mov si,7c00;mov di,..00
+>>8    ubequad         0xc08ed8be007cbf00              
+# Microsoft Windows Vista (http://thestarman.pcministry.com/asm/mbr/VistaMBR.htm)
+# assembler instructions: jnz 0729;cmp ebx,"TCPA"
+>>>0xEC                ubequad 0x753b6681fb544350              Vista
+# where xxyyzz are lower bits from offsets of error messages varying for different languages
+>>>>0x1B4      ubelong&0x00FFFFFF      0x00627a99      english
+#>>>>0x1B4     ubelong&0x00FFFFFF      ?               german
+# "Invalid partition table"                            xx=0x162 for english version
+# "Ungültige Partitionstabelle"                               xx=0x1?? for german version
+>>>>0x1b5      ubyte           >0                      at offset 0x1%x
+>>>>(0x1b5.b+0x100)    string  >\0                     "%s"
+# "Error loading operating system"                     yy=0x17a for english version
+# "Fehler beim Laden des Betriebssystems"              yy= 0x1?? for german version
+>>>>0x1b6      ubyte           >0                      at offset 0x1%x
+>>>>(0x1b6.b+0x100)    string  >\0                     "%s"
+# "Missing operating system"                           zz=0x199 for english version
+# "Betriebssystem nicht vorhanden"                     zz=0x1?? for german version
+>>>>0x1b7      ubyte           >0                      at offset 0x1%x
+>>>>(0x1b7.b+0x100)    string  >\0                     "%s"
+# Microsoft Windows 7 (http://thestarman.pcministry.com/asm/mbr/W7MBR.htm)
+# assembler instructions: cmp ebx,"TCPA";cmp
+>>>0xEC                ubequad 0x6681fb5443504175              Windows 7
+# where xxyyzz are lower bits from offsets of error messages varying for different languages
+>>>>0x1B4      ubelong&0x00FFFFFF      0x00637b9a      english
+#>>>>0x1B4     ubelong&0x00FFFFFF      ?               german
+# "Invalid partition table"                            xx=0x163 for english version
+# "Ungültige Partitionstabelle"                               xx=0x1?? for german version
+>>>>0x1b5      ubyte           >0                      at offset 0x1%x
+>>>>(0x1b5.b+0x100)    string  >\0                     "%s"
+# "Error loading operating system"                     yy=0x17b for english version
+# "Fehler beim Laden des Betriebssystems"              yy=0x1?? for german version
+>>>>0x1b6      ubyte           >0                      at offset 0x1%x
+>>>>(0x1b6.b+0x100)    string  >\0                     "%s"
+# "Missing operating system"                           zz=0x19a for english version
+# "Betriebssystem nicht vorhanden"                     zz=0x1?? for german version
+>>>>0x1b7      ubyte           >0                      at offset 0x1%x
+>>>>(0x1b7.b+0x100)    string  >\0                     "%s"
+# http://thestarman.pcministry.com/asm/mbr/Win2kmbr.htm#DiskSigs
+# http://en.wikipedia.org/wiki/MBR_disk_signature#ID
+>>0x1b8        ulelong         >0                              \b, disk signature 0x%-.4x
+# driveID/timestamp for Win 95B,98,98SE and ME. See http://thestarman.pcministry.com/asm/mbr/mystery.htm
+>>0xDA uleshort                0                       
+>>>0xDC        ulelong         >0                      \b, created
+# physical drive number (0x80-0xFF) when the Windows wrote that byte to the drive
+>>>>0xDC       ubyte           x                       with driveID 0x%x
+# hours, minutes and seconds 
+>>>>0xDf       ubyte           x                       at %x
+>>>>0xDe       ubyte           x                       \b:%x
+>>>>0xDd       ubyte           x                       \b:%x
+# special case for Microsoft MS-DOS 3.21 spanish
+# assembler instructions: cli;mov $0x30,%ax;mov %ax,%ss;mov 
+>0     ubequad         0xfab830008ed0bc00              
+# assembler instructions: $0x1f00,%sp;mov $0x80cb,%di;add %cl,(%bx,%si);in (%dx),%ax;mov 
+>>8    ubequad         0x1fbfcb800008ed8               MS-MBR,D0S version 3.21 spanish
+# Microsoft MBR IPL end
+
 # dr-dos with some upper-, lowercase variants
 >0x9D  string  Invalid\ partition\ table$      
 >>181  string  No\ Operating\ System$          
 >>>>>>358      string  Press\ any\ key\ to\ continue.\n\r$     
 >>>>>>>387     string  Copyright\ (c)\ 1984,1998       
 >>>>>>>>411    string  Caldera\ Inc.\0         \b, DR-DOS MBR (IBMBIO.LDR)
->0x10F string  Ung\201ltige\ Partitionstabelle \b, MS-DOS MBR, german version 4.10.1998, 4.10.2222
->>0x1B8        ubelong >0                              \b, Serial 0x%-.4x
->0x8B  string  Ung\201ltige\ Partitionstabelle \b, MS-DOS MBR, german version 5.00 to 4.00.950
->271   string  Invalid\ partition\ table\0             
->>295  string  Error\ loading\ operating\ system\0     
->>>326 string  Missing\ operating\ system\0            \b, mbr
 #
->139   string  Invalid\ partition\ table\0             
->>163  string  Error\ loading\ operating\ system\0     
->>>194 string  Missing\ operating\ system\0            \b, Microsoft Windows XP mbr
-# http://www.heise.de/ct/05/09/006/ page 184
-#HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices\DosDevices\?:=Serial4Bytes+8Bytes
->>>>0x1B8      ulelong >0                              \b,Serial 0x%-.4x
->300   string  Invalid\ partition\ table\0     
->>324  string  Error\ loading\ operating\ system\0
->>>355 string  Missing\ operating\ system\0            \b, Microsoft Windows XP MBR
-#??>>>389      string  Invalid\ system\ disk           
->>>>0x1B8      ulelong >0                              \b, Serial 0x%-.4x
->300   string  Ung\201ltige\ Partitionstabelle
-#split string to avoid error: String too long
->>328  string  Fehler\ beim\ Laden\    
->>>346 string  des\ Betriebssystems    
->>>>366        string  Betriebssystem\ nicht\ vorhanden        \b, Microsoft Windows XP MBR (german)
->>>>>0x1B8     ulelong >0                              \b, Serial 0x%-.4x
+# tests for different MS-DOS Master Boot Records (MBR) moved and merged
+#
 #>0x145        string  Default:\ F                             \b, FREE-DOS MBR
 #>0x14B        string  Default:\ F                             \b, FREE-DOS 1.0 MBR
 >0x145 search/7        Default:\ F                     \b, FREE-DOS MBR
 >>>>>>>420     ubyte&0x0F      0Xf                     \b ask
 >>>>>420       ubyte           x                       \b)
 #
->271   string  Operating\ system\ loading              
->>296  string  error\r                                 \b, SYSLINUX MBR (2.10)
+# SYSLINUX MBR moved
 # http://www.acronis.de/
 >362   string  MBR\ Error\ \0\r                        
 >>376  string  ress\ any\ key\ to\                     
 >>>>321                string  Loading\ stage1.5       \b, GRUB version x.y
 >>>380         string  Geom\0Hard\ Disk\0Read\0\ Error\0
 >>>>374                string  GRUB\ \0                \b, GRUB version n.m
-# http://syslinux.zytor.com/
->478   string  Boot\ failed\r                  
->>495  string  LDLINUX\ SYS                    \b, SYSLINUX bootloader (1.62)
->480   string  Boot\ failed\r                  
->>495  string  LDLINUX\ SYS                    \b, SYSLINUX bootloader (2.06 or 2.11)
->484   string  Boot\ error\r                   \b, SYSLINUX bootloader (3.11)
+# SYSLINUX bootloader moved
 >395   string  chksum\0\ ERROR!\0              \b, Gujin bootloader
 # http://www.bcdwb.de/bcdw/index_e.htm
 >3     string  BCDL                            
 >>498  string  BCDL\ \ \ \ BIN                 \b, Bootable CD Loader (1.50Z)
-# mbr partition table entries
-# OEM-ID does not contain MicroSoft,NEWLDR,DOS,SYSLINUX,or MTOOLs
->3                     string          !MS
->>3                    string          !SYSLINUX
->>>3                   string          !MTOOL
->>>>3                  string          !NEWLDR
->>>>>5                 string          !DOS
-# not FAT (32 bit)
->>>>>>82               string          !FAT32
-#not Linux kernel
->>>>>>>514             string          !HdrS
-#not BeOS
->>>>>>>>422            string          !Be\ Boot\ Loader
-# active flag 0 or 0x80 and type > 0
->>>>>>>>>446           ubyte           <0x81   
->>>>>>>>>>446          ubyte&0x7F      0       
->>>>>>>>>>>450         ubyte           >0      \b; partition 1: ID=0x%x
->>>>>>>>>>>>446                ubyte           0x80    \b, active
->>>>>>>>>>>>447                ubyte           x       \b, starthead %u
-#>>>>>>>>>>>>448               ubyte           x       \b, start C_S: 0x%x
-#>>>>>>>>>>>>448               ubeshort&1023   x       \b, startcylinder? %d
->>>>>>>>>>>>454                ulelong         x       \b, startsector %u
->>>>>>>>>>>>458                ulelong         x       \b, %u sectors
-#
->>>>>>>>>462           ubyte           <0x81   
->>>>>>>>>>462          ubyte&0x7F      0               
->>>>>>>>>>>466         ubyte           >0      \b; partition 2: ID=0x%x
->>>>>>>>>>>>462                ubyte           0x80    \b, active
->>>>>>>>>>>>463                ubyte           x       \b, starthead %u
-#>>>>>>>>>>>>464               ubyte           x       \b, start C_S: 0x%x
-#>>>>>>>>>>>>464               ubeshort&1023   x       \b, startcylinder? %d
->>>>>>>>>>>>470                ulelong         x       \b, startsector %u
->>>>>>>>>>>>474                ulelong         x       \b, %u sectors
-#
->>>>>>>>>478           ubyte           <0x81           
->>>>>>>>>>478          ubyte&0x7F      0               
->>>>>>>>>>>482         ubyte           >0      \b; partition 3: ID=0x%x
->>>>>>>>>>>>478                ubyte           0x80    \b, active
->>>>>>>>>>>>479                ubyte           x       \b, starthead %u
-#>>>>>>>>>>>>480               ubyte           x       \b, start C_S: 0x%x
-#>>>>>>>>>>>>481               ubyte           x       \b, start C2S: 0x%x
-#>>>>>>>>>>>>480               ubeshort&1023   x       \b, startcylinder? %d
->>>>>>>>>>>>486                ulelong         x       \b, startsector %u
->>>>>>>>>>>>490                ulelong         x       \b, %u sectors
-#
->>>>>>>>>494           ubyte           <0x81   
->>>>>>>>>>494          ubyte&0x7F      0               
->>>>>>>>>>>498         ubyte           >0      \b; partition 4: ID=0x%x
->>>>>>>>>>>>494                ubyte           0x80    \b, active
->>>>>>>>>>>>495                ubyte           x       \b, starthead %u
-#>>>>>>>>>>>>496               ubyte           x       \b, start C_S: 0x%x
-#>>>>>>>>>>>>496               ubeshort&1023   x       \b, startcylinder? %d
->>>>>>>>>>>>502                ulelong         x       \b, startsector %u
->>>>>>>>>>>>506                ulelong         x       \b, %u sectors
+# mbr partition table entries updated by Joerg Jenderek at Sep 2013
+# skip Norton Utilities disc image data
+>3             string          !IHISK          
+# skip Linux style boot sector starting with assember instructions mov 0x7c0,ax;
+>>0            belong          !0xb8c0078e             
+# not Linux kernel 
+>>>514         string          !HdrS                   
+# not BeOS
+>>>>422                string          !Be\ Boot\ Loader       
+# jump over BPB instruction implies DOS bootsector or AdvanceMAME mbr 
+>>>>>0         ubelong&0xFD000000      =0xE9000000     
+# AdvanceMAME mbr
+>>>>>>(1.b+2)  ubequad         0xfa31c08ed88ec08e      
+>>>>>>>446     use             partition-table
+# mbr, Norton Utilities disc image data, or 2nd,etc. sector of x86 bootloader
+>>>>>0         ubelong&0xFD000000      !0xE9000000     
+# skip FSInfosector
+>>>>>>0                string          !RRaA           
+# skip 3rd sector of MS x86 bootloader with assember instructions cli;MOVZX EAX,BYTE PTR [BP+10];MOV ECX,
+# http://thestarman.pcministry.com/asm/mbr/MSWIN41.htm
+>>>>>>>0       ubequad         !0xfa660fb64610668b     
+# skip 13rd sector of MS x86 bootloader
+>>>>>>>>0      ubequad         !0x660fb64610668b4e     
+# skip sector starting with DOS new line
+>>>>>>>>>0     string          !\r\n                   
+# allowed active flag 0,80h-FFh
+>>>>>>>>>>446  ubyte           0                       
+>>>>>>>>>>>446 use             partition-table
+>>>>>>>>>>446  ubyte           >0x7F                   
+>>>>>>>>>>>446 use             partition-table
+# TODO: test for extended bootrecord (ebr) moved and merged with mbr partition table entries
 # mbr partition table entries end
 # http://www.acronis.de/
 #FAT label=ACRONIS\ SZ
 #OEM-ID=BOOTWIZ0
 >442   string  Non-system\ disk,\      
 >>459  string  press\ any\ key...\x7\0         \b, Acronis Startup Recovery Loader
-# DOS names like F11.SYS are 8 right space padded bytes+3 bytes
+# updated by Joerg Jenderek at Nov 2012
+# DOS names like F11.SYS or BOOTWIZ.SYS are 8 right space padded bytes+3 bytes
 >>>477         ubyte&0xDF      >0              
 >>>>477                string          x               \b %-.3s
 >>>>>480       ubyte&0xDF      >0              
->>>>>>480      string          x               \b%-.5s
+>>>>>>480      string          x               \b%-.4s
+>>>>>>>484     ubyte&0xDF      >0              
+>>>>>>>>484    string          x               \b%-.1s
 >>>>485                ubyte&0xDF      >0              
 >>>>>485       string          x               \b.%-.3s
 #
 >>>>>291 string and\ press\ any\ key.\n\r              \b, FDBOOT harddisk Bootloader
 >>>>>>200 string       >\0                             \b, version %-3s
 >242   string  Bootsector\ from\ C.H.\ Hochst\204      
->>278  string  No\ Systemdisk.\                        
->>>293 string  Booting\ from\ harddisk.\n\r            
->>>441 string  Cannot\ load\ from\ harddisk.\n\r       
->>>>469 string Insert\ Systemdisk\                     
->>>>>487 string and\ press\ any\ key.\n\r              \b, WinImage harddisk Bootloader
->>>>>>209 string       >\0                             \b, version %-4.4s
+# http://freecode.com/projects/dosfstools      dosfstools-n.m/src/mkdosfs.c
+# updated by Joerg Jenderek at Nov 2012. Use search directive with offset instead of string
+# skip name "C.H. Hochstaetter" partly because it is sometimes written without umlaut
+>242   search/127      Bootsector\ from\ C.H.\ Hochst                  
+>>278  search/127      No\ Systemdisk.\ Booting\ from\ harddisk        
+# followed by variants with point,CR-NL or NL-CR
+>>>208 search/261      Cannot\ load\ from\ harddisk.                   
+# followed by variants CR-NL or NL-CR
+>>>>236        search/235      Insert\ Systemdisk\ and\ press\ any\ key.       
+# followed by variants with point,CR-NL or NL-CR
+>>>>>180       search/96       Disk\ formatted\ with\ WinImage\        \b, WinImage harddisk Bootloader
+# followed by string like "6.50 (c) 1993-2004 Gilles Vollant"
+>>>>>>&0       string          x                                       \b, version %-4.4s
 >(1.b+2)       ubyte           0xe                     
 >>(1.b+3)      ubyte           0x1f                    
 >>>(1.b+4)     ubyte           0xbe                    
->>>>(1.b+5)    ubyte           0x77                    
->>>>(1.b+6)    ubyte           0x7c                    
->>>>>(1.b+7)   ubyte           0xac                    
->>>>>>(1.b+8)  ubyte           0x22                    
->>>>>>>(1.b+9) ubyte           0xc0                    
->>>>>>>>(1.b+10)       ubyte   0x74                    
->>>>>>>>>(1.b+11)      ubyte   0xb                     
->>>>>>>>>>(1.b+12)     ubyte   0x56                    
->>>>>>>>>>(1.b+13)     ubyte   0xb4                    \b, mkdosfs boot message display
+# message offset found at (1.b+5) is 0x77 for FAT32 or 0x5b for others
+>>>>(1.b+5)    ubyte&0xd3      0x53                    
+>>>>>(1.b+6)   ubyte           0x7c                    
+# assembler instructions: lodsb;and al,al;jz 0xb;push si;mov ah,
+>>>>>>(1.b+7)  ubyte           0xac                    
+>>>>>>>(1.b+8) ubyte           0x22                    
+>>>>>>>>(1.b+9)        ubyte           0xc0                    
+>>>>>>>>>(1.b+10)      ubyte   0x74                    
+>>>>>>>>>>(1.b+11)     ubyte   0x0b                    
+>>>>>>>>>>>(1.b+12)    ubyte   0x56                    
+>>>>>>>>>>>>(1.b+13)   ubyte   0xb4                    \b, mkdosfs boot message display
+# FAT1X version
+>>>>>>>>>>>>>(1.b+5)   ubyte   0x5b                    
+>>>>>>>>>>>>>>0x5b     string  >\0                     "%-s"
+# FAT32 version
+>>>>>>>>>>>>>(1.b+5)   ubyte   0x77                    
+>>>>>>>>>>>>>>0x77     string  >\0                     "%-s"
 >214   string  Please\ try\ to\ install\ FreeDOS\      \b, DOS Emulator boot message display
 #>>244 string  from\ dosemu-freedos-*-bin.tgz\r        
 #>>>170        string  Sorry,\ could\ not\ load\ an\           
 >>>>>492               string          RENF            \b, FAT (12 bit)
 >>>>>495               string          RENF            \b, FAT (16 bit)
 # x86 bootloader end
+
+# by Joerg Jenderek at Apr 2013
+#      Print the DOS filenames from directory entry form with 8 right space padded bytes + 3 bytes for extension
+#      like IO.SYS. MSDOS.SYS , KERNEL.SYS , DRBIO.SYS
+0      name                    DOS-filename
+# space=0x20 (00100000b) means empty 
+>0                     ubyte&0xDF      >0              
+>>0                    ubyte           x               \b%c
+>>>1                   ubyte&0xDF      >0              
+>>>>1                  ubyte           x               \b%c
+>>>>>2                 ubyte&0xDF      >0              
+>>>>>>2                        ubyte           x               \b%c
+>>>>>>>3               ubyte&0xDF      >0              
+>>>>>>>>3              ubyte           x               \b%c
+>>>>>>>>>4             ubyte&0xDF      >0              
+>>>>>>>>>>4            ubyte           x               \b%c
+>>>>>>>>>>>5           ubyte&0xDF      >0              
+>>>>>>>>>>>>5          ubyte           x               \b%c
+>>>>>>>>>>>>>6         ubyte&0xDF      >0              
+>>>>>>>>>>>>>>6                ubyte           x               \b%c
+>>>>>>>>>>>>>>>7       ubyte&0xDF      >0              
+>>>>>>>>>>>>>>>>7      ubyte           x               \b%c
+# DOS filename extension
+>>8                    ubyte&0xDF      >0              \b.
+>>>8                   ubyte           x               \b%c
+>>>>9                  ubyte&0xDF      >0              
+>>>>>9                 ubyte           x               \b%c
+>>>>>>10               ubyte&0xDF      >0              
+>>>>>>>10              ubyte           x               \b%c
+#      Print 2 following DOS filenames from directory entry form
+#      like IO.SYS+MSDOS.SYS or ibmbio.com+ibmdos.com
+0      name                    2xDOS-filename
+# display 1 space
+>0                     ubyte           x               \b 
+>0                     use             DOS-filename
+>11                    ubyte           x               \b+
+>11                    use             DOS-filename
+
+# added by Joerg Jenderek at Feb 2013 according to http://thestarman.pcministry.com/asm/mbr/MSWIN41.htm#FSINFO
+# and http://en.wikipedia.org/wiki/File_Allocation_Table#FS_Information_Sector
+>0             string          RRaA            
+>>0x1E4                string          rrAa            \b, FSInfosector
+#>>0x1FC       uleshort        =0              SHOULD BE ZERO
+>>>0x1E8       ulelong         <0xffffffff     \b, %u free clusters
+>>>0x1EC       ulelong         <0xffffffff     \b, last allocated cluster %u
+
 # updated by Joerg Jenderek at Sep 2007
 >3     ubyte   0                       
 #no active flag
 >>>>>>>466     ubyte   0x05                    \b, extended partition table
 >>>>>>>466     ubyte   0x0F                    \b, extended partition table (LBA)
 >>>>>>>466     ubyte   0x0                     \b, extended partition table (last)     
-# JuMP short     bootcodeoffset NOP assembler instructions will usually be EB xx 90
-# http://mirror.href.com/thestarman/asm/2bytejumps.htmm#FWD
-# older drives may use Near JuMP instruction E9 xx xx
->0             lelong&0x009000EB       0x009000EB 
->0             lelong&0x000000E9       0x000000E9 
-# minimal short forward jump found 03cx??
-# maximal short forward jump is 07fx
->1             ubyte                   <0xff   \b, code offset 0x%x
-# mtools-3.9.8/msdos.h
-# usual values are marked with comments to get only informations of strange FAT systems
-# valid sectorsize must be a power of 2 from 32 to 32768
->>11           uleshort&0x000f x               
->>>11          uleshort        <32769          
->>>>11         uleshort        >31             
->>>>>21                ubyte&0xf0      0xF0            
->>>>>>3                string          >\0             \b, OEM-ID "%8.8s"
-#http://mirror.href.com/thestarman/asm/debug/debug2.htm#IHC
->>>>>>>8       string          IHC             \b cached by Windows 9M
->>>>>>11       uleshort        >512            \b, Bytes/sector %u
-#>>>>>>11      uleshort        =512            \b, Bytes/sector %u=512 (usual)
->>>>>>11       uleshort        <512            \b, Bytes/sector %u
->>>>>>13       ubyte           >1              \b, sectors/cluster %u
-#>>>>>>13      ubyte           =1              \b, sectors/cluster %u (usual on Floppies)
->>>>>>14       uleshort        >32             \b, reserved sectors %u
-#>>>>>>14      uleshort        =32             \b, reserved sectors %u (usual Fat32)
-#>>>>>>14      uleshort        >1              \b, reserved sectors %u
-#>>>>>>14      uleshort        =1              \b, reserved sectors %u (usual FAT12,FAT16)
->>>>>>14       uleshort        <1              \b, reserved sectors %u
->>>>>>16       ubyte           >2              \b, FATs %u
-#>>>>>>16      ubyte           =2              \b, FATs %u (usual)
->>>>>>16       ubyte           =1              \b, FAT  %u
->>>>>>16       ubyte           >0
->>>>>>17       uleshort        >0              \b, root entries %u
-#>>>>>>17      uleshort        =0              \b, root entries %u=0 (usual Fat32)
->>>>>>19       uleshort        >0              \b, sectors %u (volumes <=32 MB) 
-#>>>>>>19      uleshort        =0              \b, sectors %u=0 (usual Fat32)
->>>>>>21       ubyte           >0xF0           \b, Media descriptor 0x%x
-#>>>>>>21      ubyte           =0xF0           \b, Media descriptor 0x%x (usual floppy)
->>>>>>21       ubyte           <0xF0           \b, Media descriptor 0x%x
->>>>>>22       uleshort        >0              \b, sectors/FAT %u
-#>>>>>>22      uleshort        =0              \b, sectors/FAT %u=0 (usual Fat32)
->>>>>>26       ubyte           >2              \b, heads %u
-#>>>>>>26      ubyte           =2              \b, heads %u (usual floppy)
->>>>>>26       ubyte           =1              \b, heads %u
-#skip for Digital Research DOS (version 3.41) 1440 kB Bootdisk
->>>>>>38       ubyte           !0x70           
->>>>>>>28      ulelong         >0              \b, hidden sectors %u
-#>>>>>>>28     ulelong         =0              \b, hidden sectors %u (usual floppy)
->>>>>>>32      ulelong         >0              \b, sectors %u (volumes > 32 MB) 
-#>>>>>>>32     ulelong         =0              \b, sectors %u (volumes > 32 MB)
-# FAT<32 specific 
->>>>>>82       string          !FAT32
-#>>>>>>>36     ubyte           0x80            \b, physical drive 0x%x=0x80 (usual harddisk)
-#>>>>>>>36     ubyte           0               \b, physical drive 0x%x=0 (usual floppy)
->>>>>>>36      ubyte           !0x80           
->>>>>>>>36     ubyte           !0              \b, physical drive 0x%x
->>>>>>>37      ubyte           >0              \b, reserved 0x%x
-#>>>>>>>37     ubyte           =0              \b, reserved 0x%x
->>>>>>>38      ubyte           >0x29           \b, dos < 4.0 BootSector (0x%x)
->>>>>>>38      ubyte           <0x29           \b, dos < 4.0 BootSector (0x%x)
->>>>>>>38      ubyte           =0x29
->>>>>>>>39     ulelong         x               \b, serial number 0x%x
->>>>>>>>43     string          <NO\ NAME       \b, label: "%11.11s"
->>>>>>>>43     string          >NO\ NAME       \b, label: "%11.11s"
->>>>>>>>43     string          =NO\ NAME       \b, unlabeled
->>>>>>>54      string          FAT             \b, FAT
->>>>>>>>54     string          FAT12           \b (12 bit)
->>>>>>>>54     string          FAT16           \b (16 bit)
-# FAT32 specific
->>>>>>82       string          FAT32           \b, FAT (32 bit)
->>>>>>>36      ulelong         x               \b, sectors/FAT %u
->>>>>>>40      uleshort        >0              \b, extension flags %u
-#>>>>>>>40     uleshort        =0              \b, extension flags %u
->>>>>>>42      uleshort        >0              \b, fsVersion %u
-#>>>>>>>42     uleshort        =0              \b, fsVersion %u (usual)
->>>>>>>44      ulelong         >2              \b, rootdir cluster %u
-#>>>>>>>44     ulelong         =2              \b, rootdir cluster %u
-#>>>>>>>44     ulelong         =1              \b, rootdir cluster %u
->>>>>>>48      uleshort        >1              \b, infoSector %u
-#>>>>>>>48     uleshort        =1              \b, infoSector %u (usual)
->>>>>>>48      uleshort        <1              \b, infoSector %u
->>>>>>>50      uleshort        >6              \b, Backup boot sector %u
-#>>>>>>>50     uleshort        =6              \b, Backup boot sector %u (usual) 
->>>>>>>50      uleshort        <6              \b, Backup boot sector %u
->>>>>>>54      ulelong         >0              \b, reserved1 0x%x
->>>>>>>58      ulelong         >0              \b, reserved2 0x%x
->>>>>>>62      ulelong         >0              \b, reserved3 0x%x
-# same structure as FAT1X 
->>>>>>>64      ubyte           >0x80           \b, physical drive 0x%x
-#>>>>>>>64     ubyte           =0x80           \b, physical drive 0x%x=80 (usual harddisk)
->>>>>>>64      ubyte&0x7F      >0              \b, physical drive 0x%x
-#>>>>>>>64     ubyte           =0              \b, physical drive 0x%x=0 (usual floppy)
->>>>>>>65      ubyte           >0              \b, reserved 0x%x
->>>>>>>66      ubyte           >0x29           \b, dos < 4.0 BootSector (0x%x)
->>>>>>>66      ubyte           <0x29           \b, dos < 4.0 BootSector (0x%x)
->>>>>>>66      ubyte           =0x29
->>>>>>>>67     ulelong         x               \b, serial number 0x%x
->>>>>>>>71     string          <NO\ NAME       \b, label: "%11.11s"
->>>>>>>71      string          >NO\ NAME       \b, label: "%11.11s"
->>>>>>>71      string          =NO\ NAME       \b, unlabeled
-### FATs end
->0x200 lelong  0x82564557              \b, BSD disklabel
-# FATX 
-0              string          FATX            FATX filesystem data
 
+# DOS x86 sector separated and moved from "DOS/MBR boot sector" by Joerg Jenderek at May 2011
 
-# Minix filesystems - Juan Cespedes <cespedes@debian.org>
-0x410  leshort         0x137f
-!:strength / 2
->0x402 beshort         < 100           Minix filesystem, V1, %d zones
->0x1e  string          minix           \b, bootable
-0x410  beshort         0x137f
-!:strength / 2
->0x402 beshort         < 100           Minix filesystem, V1 (big endian), %d zones
->0x1e  string          minix           \b, bootable
-0x410  leshort         0x138f
-!:strength / 2
->0x402 beshort         < 100           Minix filesystem, V1, 30 char names, %d zones
->0x1e  string          minix           \b, bootable
-0x410  beshort         0x138f
-!:strength / 2
->0x402 beshort         < 100           Minix filesystem, V1, 30 char names (big endian), %d zones
->0x1e  string          minix           \b, bootable
-0x410  leshort         0x2468
->0x402 beshort         < 100           Minix filesystem, V2, %d zones
->0x1e  string          minix           \b, bootable
-0x410  beshort         0x2468
->0x402 beshort         < 100           Minix filesystem, V2 (big endian), %d zones
->0x1e  string          minix           \b, bootable
+>0x200 lelong  0x82564557              \b, BSD disklabel
 
-0x410  leshort         0x2478
->0x402 beshort         < 100           Minix filesystem, V2, 30 char names, %d zones
->0x1e  string          minix           \b, bootable
-0x410  leshort         0x2478
->0x402 beshort         < 100           Minix filesystem, V2, 30 char names, %d zones
->0x1e  string          minix           \b, bootable
-0x410  beshort         0x2478
->0x402 beshort         !0              Minix filesystem, V2, 30 char names (big endian), %d zones
->0x1e  string          minix           \b, bootable
-0x410  leshort         0x4d5a
->0x402 beshort         !0              Minix filesystem, V3, %d zones
->0x1e  string          minix           \b, bootable
+# http://en.wikipedia.org/wiki/Master_boot_record#PTE
+# display standard partition table
+0      name                            partition-table
+#>0            ubyte           x       PARTITION-TABLE
+# test and display 1st til 4th partition table entry
+>0             use                     partition-entry-test
+>16            use                     partition-entry-test
+>32            use                     partition-entry-test
+>48            use                     partition-entry-test
+#              test for entry of partition table
+0      name                            partition-entry-test
+# partition type ID > 0
+>4             ubyte           >0
+# active flag 0
+>>0            ubyte           0       
+>>>0           use             partition-entry
+# active flag 0x80, 0x81, ... 
+>>0            ubyte           >0x7F   
+>>>0           use             partition-entry
+#              Print entry of partition table
+0      name                            partition-entry
+# partition type ID > 0
+>4             ubyte           >0      \b; partition
+>>64           leshort         0xAA55  1
+>>48           leshort         0xAA55  2
+>>32           leshort         0xAA55  3
+>>16           leshort         0xAA55  4
+>>4            ubyte           x       : ID=0x%x
+>>0            ubyte&0x80      0x80    \b, active
+>>0            ubyte           >0x80   0x%x
+>>1            ubyte           x       \b, start-CHS (
+>>1            use             partition-chs
+>>5            ubyte           x       \b), end-CHS (
+>>5            use             partition-chs
+>>8            ulelong         x       \b), startsector %u
+>>12           ulelong         x       \b, %u sectors
+#              Print cylinder,head,sector (CHS) of partition entry
+0      name                            partition-chs
+# cylinder
+>1             ubyte           x       \b0x
+>1             ubyte&0xC0      0x40    \b1
+>1             ubyte&0xC0      0x80    \b2
+>1             ubyte&0xC0      0xC0    \b3
+>2             ubyte           x       \b%x
+# head
+>0             ubyte           x       \b,%u
+# sector
+>1             ubyte&0x3F      x       \b,%u
+
+# FATX 
+0              string          FATX            FATX filesystem data
 
 # romfs filesystems - Juan Cespedes <cespedes@debian.org>
 0      string          -rom1fs-        romfs filesystem, version 1
 
 0x18b  string  OS/2    OS/2 Boot Manager
 
-# updated by Joerg Jenderek at Oct 2008!!
+# updated by Joerg Jenderek at Oct 2008 and Sep 2012
 # http://syslinux.zytor.com/iso.php
-0      ulelong 0x7c40eafa              isolinux Loader
+# tested with versions 1.47,1.48,1.49,1.50,1.62,1.76,2.00,2.10;3.00,3.11,3.31,;3.70,3.71,3.73,3.75,3.80,3.82,3.84,3.86,4.01,4.03 and 4.05
+# assembler instructions: cli;jmp 0:7Cyy (yy=0x40,0x5e,0x6c,0x6e,0x77);nop;nop
+0      ulequad&0x909000007cc0eafa      0x909000007c40eafa      
+>631   search/689      ISOLINUX\       isolinux Loader
+>>&0   string          x               (version %-4.4s)
 # http://syslinux.zytor.com/pxe.php
-0      ulelong 0x007c05ea              pxelinux Loader
-0      ulelong 0x60669c66              pxelinux Loader
+# assembler instructions: jmp 7C05
+0      ulelong 0x007c05ea              pxelinux loader (version 2.13 or older)
+# assembler instructions: pushfd;pushad
+0      ulelong 0x60669c66              pxelinux loader
+# assembler instructions: jmp 05
+0      ulelong 0xc00005ea              pxelinux loader (version 3.70 or newer)
+# http://syslinux.zytor.com/wiki/index.php/SYSLINUX
+0      string  LDLINUX\ SYS\           SYSLINUX loader
+>12    string  x                       (older version %-4.4s)
+0      string  \r\nSYSLINUX\           SYSLINUX loader
+>11    string  x                       (version %-4.4s)
+# syslinux updated and separated from "DOS/MBR boot sector" by Joerg Jenderek at Sep 2012
+# assembler instructions: jmp yy (yy=0x3c,0x58);nop;"SYSLINUX"
+0      ulelong&0x80909bEB      0x009018EB      
+# OEM-ID not always "SYSLINUX"
+>434   search/47       Boot\ failed            
+# followed by \r\n\0 or :\ 
+>>482  search/132      \0LDLINUX\ SYS          Syslinux bootloader (version 2.13 or older)
+>>1    ubyte           0x58                    Syslinux bootloader (version 3.0-3.9)
+>459   search/30       Boot\ error\r\n\0       
+>>1    ubyte           0x58                    Syslinux bootloader (version 3.10 or newer)
+# SYSLINUX MBR updated and separated from "DOS/MBR boot sector" by Joerg Jenderek at Sep 2012
+# assembler instructions: mov di,0600h;mov cx,0100h
+16     search/4        \xbf\x00\x06\xb9\x00\x01                
+# to display SYSLINUX MBR (36) before old DOS/MBR boot sector one with partition table (strength=50+21)
+!:strength +36
+>94    search/249      Missing\ operating\ system              
+# followed by \r for versions older 3.35 , .\r for versions newer 3.52 and point for other
+# skip Ranish MBR
+>>408  search/4        HD1/\0                                  
+>>408  default         x                                       
+>>>250 search/118      \0Operating\ system\ load               SYSLINUX MBR
+# followed by "ing " or space
+>>>>292        search/98       error                                   
+>>>>>&0        string          \r                                      (version 3.35 or older)
+>>>>>&0        string          .\r                                     (version 3.52 or newer)
+>>>>>&0        default         x                                       (version 3.36-3.51 )
+>368   search/106      \0Disk\ error\ on\ boot\r\n             SYSLINUX GPT-MBR
+>>156  search/10       \0Boot\ partition\ not\ found\r\n       
+>>>270 search/10       \0OS\ not\ bootable\r\n                 (version 3.86 or older)
+>>174  search/10       \0Missing\ OS\r\n                       
+>>>189 search/10       \0Multiple\ active\ partitions\r\n      (version 4.00 or newer)
+# SYSLINUX END
+
+# NetBSD mbr variants (master-boot-code version 1.22) added by Joerg Jenderek at Nov 2012
+# assembler instructions: xor ax,ax;mov        ax,ss;mov sp,0x7c00;mov ax,
+0      ubequad         0x31c08ed0bc007c8e                      
+# mbr_bootsel magic before partition table not reliable with small ipl fragments
+#>444  uleshort        0xb5e1                                  
+>0004  uleshort        x                                       
+# ERRorTeXT
+>>181  search/166              Error\ \0\r\n                           NetBSD mbr
+# NT Drive Serial Number http://thestarman.pcministry.com/asm/mbr/Win2kmbr.htm#DS
+>>>0x1B8       ubelong         >0                                      \b,Serial 0x%-.8x
+# BOOTSEL definitions contains assembler instructions: int 0x13;pop dx;push dx;push dx
+>>>0xbb                search/71       \xcd\x13\x5a\x52\x52                    \b,bootselector
+# BOOT_EXTENDED definitions contains assembler instructions: 
+# xchg ecx,edx;addl ecx,edx;movw lba_info,si;movb 0x42,ah;pop dx;push dx;int 0x13
+>>>0x96        search/1        \x66\x87\xca\x66\x01\xca\x66\x89\x16\x3a\x07\xbe\x32\x07\xb4\x42\x5a\x52\xcd\x13        \b,boot extended
+# COM_PORT_VAL definitions contains assembler instructions: outb al,dx;add 5,dl;inb %dx;test 0x40,al
+>>>0x130       search/55       \xee\x80\xc2\x05\xec\xa8\x40            \b,serial IO
+# not TERSE_ERROR
+>>>196         search/106      No\ active\ partition\0                 
+>>>>&0         string          Disk\ read\ error\0                     
+>>>>>&0                string          No\ operating\ system\0                 \b,verbose
+# not NO_CHS definitions contains assembler instructions: pop dx;push dx;movb $8,ah;int0x13
+>>>0x7d                search/7        \x5a\x52\xb4\x08\xcd\x13                \b,CHS
+# not NO_LBA_CHECK definitions contains assembler instructions: movw 0x55aa,bx;movb 0x41,ah;pop        dx;push dx;int 0x13
+>>>0xa4                search/84       \xbb\xaa\x55\xb4\x41\x5a\x52\xcd\x13    \b,LBA-check
+# assembler instructions: movw nametab,bx
+>>>0x26            search/21   \xBB\x94\x07                                    
+# not NO_BANNER definitions contains assembler instructions: mov banner,si;call message_crlf
+>>>>&-9        ubequad&0xBE00f0E800febb94      0xBE0000E80000bb94              
+>>>>>181       search/166              Error\ \0                       
+# "a: disk" , "Fn: diskn" or "NetBSD MBR boot"
+>>>>>>&3       string                  x                               \b,"%s"
+# Andrea Mazzoleni AdvanceCD mbr loader of http://advancemame.sourceforge.net/boot-readme.html
+# added by Joerg Jenderek at Nov 2012 for versions 1.3 - 1.4
+# assembler instructions: jmp short 0x58;nop;ASCII
+0      ubequad&0xeb58908000000000      0xeb58900000000000      
+# assembler instructions: cli;xor ax,ax;mov ds,ax;mov es,ax;mov ss,
+>(1.b+2)       ubequad                 0xfa31c08ed88ec08e      
+# Error messages at end of code
+>>376          string  No\ operating\ system\r\n\0             
+>>>398         string  Disk\ error\r\n\0FDD\0HDD\0             
+>>>>419                string  \ EBIOS\r\n\0                           AdvanceMAME mbr
+
+# Neil Turton mbr loader variant of http://www.chiark.greenend.org.uk/~neilt/mbr/ 
+# added by Joerg Jenderek at Mar 2011 for versions 1.0.0 - 1.1.11
+# for 1st version assembler instructions:      cld;xor ax,ax;mov DS,ax;MOV ES,AX;mov SI,
+# or                                           cld;xor ax,ax;mov SS,ax;XOR SP,SP;mov DS,
+0      ulequad&0xcE1b40D48EC031FC      0x8E0000D08EC031FC      
+# pointer to the data starting with Neil Turton signature string
+>(0x1BC.s)             string          NDTmbr                  
+>>&-14                 string          1234F\0                 Turton mbr (
+# parameters also viewed by install-mbr --list
+>>>(0x1BC.s+7)         ubyte           x                       \b%u<=
+>>>(0x1BC.s+9)         ubyte           x                       \bVersion<=%u
+#>>>(0x1BC.s+8)                ubyte           x                       asm_flag_%x
+>>>(0x1BC.s+8)         ubyte&1         1                       \b,Y2K-Fix
+# variant used by testdisk of http://www.cgsecurity.org/wiki/Menu_MBRCode
+>>>(0x1BC.s+8)         ubyte&2         2                       \b,TestDisk
+#0x1~1,..,0x8~4,0x10~F,0x80~A enabled
+#>>>(0x1BC.s+10)               ubyte           x                       \b,flags 0x%x
+#0x0~1,0x1~2,...,0x3~4,0x4~F,0x7~D default boot
+#>>>(0x1BC.s+11)               ubyte           x                       \b,cfg_def 0x%x
+# for older versions
+>>>(0x1BC.s+9)         ubyte           <2                      
+#>>>>(0x1BC.s+12)      ubyte           18                      \b,%u/18 seconds
+>>>>(0x1BC.s+12)       ubyte           !18                     \b,%u/18 seconds
+# floppy A: or B:
+>>>>(0x1BC.s+13)       ubyte           <2                      \b,floppy 0x%x
+>>>>(0x1BC.s+13)       ubyte           >1                      
+# 1st hard disc
+#>>>>>(0x1BC.s+13)     ubyte           0x80                    \b,drive 0x%x
+# not 1st hard disc
+>>>>>(0x1BC.s+13)      ubyte           !0x80                   \b,drive 0x%x
+# for version >= 2 maximal timeout can be 65534
+>>>(0x1BC.s+9)         ubyte           >1                      
+#>>>>(0x1BC.s+12)      uleshort        18                      \b,%u/18 seconds
+>>>>(0x1BC.s+12)       uleshort        !18                     \b,%u/18 seconds
+# floppy A: or B:
+>>>>(0x1BC.s+14)       ubyte           <2                      \b,floppy 0x%x
+>>>>(0x1BC.s+14)       ubyte           >1                      
+# 1st hard disc
+#>>>>>(0x1BC.s+14)     ubyte           0x80                    \b,drive 0x%x
+# not 1st hard disc
+>>>>>(0x1BC.s+14)      ubyte           !0x80                   \b,drive 0x%x
+>>>0   ubyte           x                                       \b)
 
 # added by Joerg Jenderek
 # In the second sector (+0x200) are variables according to grub-0.97/stage2/asm.S or
 >>>>>0x217     ulong           !0xffffffff     
 >>>>>>0x217    string          >\0             \b, configuration file %-s
 
+# DOS x86 sector updated and separated from "DOS/MBR boot sector" by Joerg Jenderek at May 2011
+# JuMP short     bootcodeoffset NOP assembler instructions will usually be EB xx 90
+# over BIOS parameter block (BPB)
+# http://thestarman.pcministry.com/asm/2bytejumps.htm#FWD
+# older drives may use Near JuMP instruction E9 xx xx
+# minimal short forward jump found 0x29 for bootloaders or 0x0
+# maximal short forward jump is 0x7f
+# OEM-ID is empty or contain readable bytes
+0              ulelong&0x804000E9      0x000000E9      
+# mtools-3.9.8/msdos.h
+# usual values are marked with comments to get only informations of strange FAT systems
+# valid sectorsize must be a power of 2 from 32 to 32768
+>11            uleshort&0xf001f        0       
+>>11           uleshort        <32769          
+>>>11          uleshort        >31             
+>>>>21         ubyte&0xf0      0xF0            
+>>>>>0         ubyte           0xEB            
+>>>>>>1                ubyte           x               \b, code offset 0x%x+2
+>>>>>0         ubyte           0xE9            
+>>>>>>1                uleshort        x               \b, code offset 0x%x+2
+>>>>>3         string          >\0             \b, OEM-ID "%-.8s"
+#http://mirror.href.com/thestarman/asm/debug/debug2.htm#IHC
+>>>>>>8                string          IHC             \b cached by Windows 9M
+>>>>>11                uleshort        >512            \b, Bytes/sector %u
+#>>>>>11       uleshort        =512            \b, Bytes/sector %u=512 (usual)
+>>>>>11                uleshort        <512            \b, Bytes/sector %u
+>>>>>13                ubyte           >1              \b, sectors/cluster %u
+#>>>>>13       ubyte           =1              \b, sectors/cluster %u (usual on Floppies)
+>>>>>82                string          FAT32           
+>>>>>>14       uleshort        !32             \b, reserved sectors %u
+#>>>>>>14      uleshort        =32             \b, reserved sectors %u (usual Fat32)
+>>>>>82                string          !FAT32          
+>>>>>>14       uleshort        >1              \b, reserved sectors %u
+#>>>>>>14      uleshort        =1              \b, reserved sectors %u (usual FAT12,FAT16)
+#>>>>>>14      uleshort        0               \b, reserved sectors %u (usual NTFS)
+>>>>>16                ubyte           >2              \b, FATs %u
+#>>>>>16       ubyte           =2              \b, FATs %u (usual)
+>>>>>16                ubyte           =1              \b, FAT  %u
+>>>>>16                ubyte           >0
+>>>>>17                uleshort        >0              \b, root entries %u
+#>>>>>17       uleshort        =0              \b, root entries %u=0 (usual Fat32)
+>>>>>19                uleshort        >0              \b, sectors %u (volumes <=32 MB) 
+#>>>>>19       uleshort        =0              \b, sectors %u=0 (usual Fat32)
+>>>>>21                ubyte           >0xF0           \b, Media descriptor 0x%x
+#>>>>>21       ubyte           =0xF0           \b, Media descriptor 0x%x (usual floppy)
+>>>>>21                ubyte           <0xF0           \b, Media descriptor 0x%x
+>>>>>22                uleshort        >0              \b, sectors/FAT %u
+#>>>>>22       uleshort        =0              \b, sectors/FAT %u=0 (usual Fat32)
+>>>>>24                uleshort        x               \b, sectors/track %u
+>>>>>26                ubyte           >2              \b, heads %u
+#>>>>>26       ubyte           =2              \b, heads %u (usual floppy)
+>>>>>26                ubyte           =1              \b, heads %u
+# valid only for sector sizes with more then 32 Bytes
+>>>>>11                uleshort        >32             
+# skip for Digital Research DOS (version 3.41) 1440 kB Bootdisk
+>>>>>>38       ubyte           !0x70           
+>>>>>>>28      ulelong         >0              \b, hidden sectors %u
+#>>>>>>>28     ulelong         =0              \b, hidden sectors %u (usual floppy)
+>>>>>>>32      ulelong         >0              \b, sectors %u (volumes > 32 MB) 
+#>>>>>>>32     ulelong         =0              \b, sectors %u (volumes > 32 MB)
+# FAT<32 bit specific 
+>>>>>>>82      string          !FAT32
+#>>>>>>>>36    ubyte           0x80            \b, physical drive 0x%x=0x80 (usual harddisk)
+#>>>>>>>>36    ubyte           0               \b, physical drive 0x%x=0 (usual floppy)
+>>>>>>>>36     ubyte           !0x80           
+>>>>>>>>>36    ubyte           !0              \b, physical drive 0x%x
+>>>>>>>>37     ubyte           >0              \b, reserved 0x%x
+#>>>>>>>>37    ubyte           =0              \b, reserved 0x%x
+# value is 0x80 for NTFS
+>>>>>>>>38     ubyte           !0x29           \b, dos < 4.0 BootSector (0x%x)
+>>>>>>>>38     ubyte           =0x29
+>>>>>>>>>39    ulelong         x               \b, serial number 0x%x
+>>>>>>>>>43    string          <NO\ NAME       \b, label: "%11.11s"
+>>>>>>>>>43    string          >NO\ NAME       \b, label: "%11.11s"
+>>>>>>>>>43    string          =NO\ NAME       \b, unlabeled
+# there exist some old floppies without word FAT at offset 54
+# a word like "FATnm   " is only a hint for a FAT size on nm-bits
+# Normally the number of clusters is calculated by the values of BPP.
+# if it is small enough FAT is 12 bit, if it is too big enough FAT is 32 bit,
+# otherwise FAT is 16 bit.
+# http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/determining-fat-widths.html
+>>>>>>54       string          FAT             \b, FAT
+>>>>>>>54      string          FAT12           \b (12 bit)
+>>>>>>>54      string          FAT16           \b (16 bit)
+# FAT32 bit specific
+>>>>>82                string          FAT32           \b, FAT (32 bit)
+>>>>>>36       ulelong         x               \b, sectors/FAT %u
+# http://technet.microsoft.com/en-us/library/cc977221.aspx
+>>>>>>40       uleshort        >0              \b, extension flags 0x%x
+#>>>>>>40      uleshort        =0              \b, extension flags %u
+>>>>>>42       uleshort        >0              \b, fsVersion %u
+#>>>>>>42      uleshort        =0              \b, fsVersion %u (usual)
+>>>>>>44       ulelong         >2              \b, rootdir cluster %u
+#>>>>>>44      ulelong         =2              \b, rootdir cluster %u
+#>>>>>>44      ulelong         =1              \b, rootdir cluster %u
+>>>>>>48       uleshort        >1              \b, infoSector %u
+#>>>>>>48      uleshort        =1              \b, infoSector %u (usual)
+>>>>>>48       uleshort        <1              \b, infoSector %u
+>>>>>>50       uleshort        >6              \b, Backup boot sector %u
+#>>>>>>50      uleshort        =6              \b, Backup boot sector %u (usual) 
+>>>>>>50       uleshort        <6              \b, Backup boot sector %u
+# corrected by Joerg Jenderek at Feb 2011 according to http://thestarman.pcministry.com/asm/mbr/MSWIN41.htm#FSINFO
+>>>>>>52       ulelong         >0              \b, reserved1 0x%x
+>>>>>>56       ulelong         >0              \b, reserved2 0x%x
+>>>>>>60       ulelong         >0              \b, reserved3 0x%x
+# same structure as FAT1X 
+#>>>>>>64      ubyte           =0x80           \b, physical drive 0x%x=80 (usual harddisk)
+#>>>>>>64      ubyte           =0              \b, physical drive 0x%x=0 (usual floppy)
+>>>>>>64       ubyte           !0x80           
+>>>>>>>64      ubyte           >0              \b, physical drive 0x%x
+# in Windows NT bit 0 is a dirty flag to request chkdsk at boot time. bit 1 requests surface scan too
+>>>>>>65       ubyte           >0              \b, reserved 0x%x
+>>>>>>66       ubyte           !0x29           \b, dos < 4.0 BootSector (0x%x)
+>>>>>>66       ubyte           =0x29
+>>>>>>>67      ulelong         x               \b, serial number 0x%x
+>>>>>>>71      string          <NO\ NAME       \b, label: "%11.11s"
+>>>>>>>71      string          >NO\ NAME       \b, label: "%11.11s"
+>>>>>>>71      string          =NO\ NAME       \b, unlabeled
+# additional tests for floppy image added by Joerg Jenderek
+# no fixed disk 
+>>>>>21                ubyte           !0xF8           
+# floppy media with 12 bit FAT
+>>>>>>54       string          !FAT16          
+# test for FAT after bootsector
+>>>>>>>(11.s)  ulelong&0x00ffffF0      0x00ffffF0      \b, followed by FAT
+# floppy image
+!:mime application/x-ima
+# NTFS specific added by Joerg Jenderek at Mar 2011 according to http://thestarman.pcministry.com/asm/mbr/NTFSBR.htm
+# and http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/bios-parameter-block.html
+# 0 FATs
+>>>>>16        ubyte           =0              
+# 0 root entries
+>>>>>>17       uleshort        =0              
+# 0 DOS sectors
+>>>>>>>19      uleshort        =0              
+# 0 sectors/FAT
+# dos < 4.0 BootSector value found is 0x80
+#38    ubyte           =0x80                   \b, dos < 4.0 BootSector (0x%x)
+>>>>>>>>22     uleshort        =0              \b; NTFS
+>>>>>>>>>24    uleshort        >0              \b, sectors/track %u
+>>>>>>>>>36    ulelong         !0x800080       \b, physical drive 0x%x
+>>>>>>>>>40    ulequad         >0              \b, sectors %lld
+>>>>>>>>>48    ulequad         >0              \b, $MFT start cluster %lld
+>>>>>>>>>56    ulequad         >0              \b, $MFTMirror start cluster %lld
+# Values 0 to 127 represent MFT record sizes of 0 to 127 clusters.
+# Values 128 to 255 represent MFT record sizes of 2^(256-N) bytes. 
+>>>>>>>>>64    lelong          <256            
+>>>>>>>>>>64   lelong          <128            \b, clusters/RecordSegment %d
+>>>>>>>>>>64   ubyte           >127            \b, bytes/RecordSegment 2^(-1*%hhi)
+# Values 0 to 127 represent index block sizes of 0 to 127 clusters.
+# Values 128 to 255 represent index block sizes of 2^(256-N) byte
+>>>>>>>>>68    ulelong         <256            
+>>>>>>>>>>68   ulelong         <128            \b, clusters/index block %d
+#>>>>>>>>>>68  ulelong         >127            \b, bytes/index block 2^(256-%d)
+>>>>>>>>>>68   ubyte           >127            \b, bytes/index block 2^(-1*%hhi)
+>>>>>>>>>72    ulequad         x               \b, serial number 0%llx
+>>>>>>>>>80    ulelong         >0              \b, checksum 0x%x
+#>>>>>>>>>80   ulelong         =0              \b, checksum 0x%x=0 (usual)
+>>>>>>>>>0x258 ulelong&0x00009090      =0x00009090     
+>>>>>>>>>>&-92         indirect        x       \b; contains 
+# For 2nd NTFS sector added by Joerg Jenderek at Jan 2013
+# http://thestarman.pcministry.com/asm/mbr/NTFSbrHexEd.htm
+# unused assembler instructions JMP y2;NOP;NOP
+0x056          ulelong&0xFFFF0FFF      0x909002EB      
+# unicode loadername terminated by CTRL-D
+>(0.s*2)       ulelong&0xFFFFFF00      0x00040000              
+# loadernames are NTLDR,CMLDR,PELDR,$LDR$ or BOOTMGR
+>>0x002                lestring16      x       Microsoft Windows XP/VISTA bootloader %-5.5s
+>>0x12         string          $       
+>>>0x0c                lestring16      x       \b%-2.2s
+### DOS,NTFS boot sectors end
+
 9564   lelong          0x00011954      Unix Fast File system [v1] (little-endian),
 >8404  string          x               last mounted on %s,
 #>9504 ledate          x               last checked at %s,
 #>0x464        lelong          &0x0000020      (many subdirs)
 #>0x463        lelong          &0x0000040      (extra isize)
 
+# Minix filesystems - Juan Cespedes <cespedes@debian.org>
+0x410  leshort         0x137f
+!:strength / 2
+>0x402 beshort         < 100
+>0x402 beshort         > -1            Minix filesystem, V1, %d zones
+>0x1e  string          minix           \b, bootable
+0x410  beshort         0x137f
+!:strength / 2
+>0x402 beshort         < 100
+>0x402 beshort         > -1            Minix filesystem, V1 (big endian), %d zones
+>0x1e  string          minix           \b, bootable
+0x410  leshort         0x138f
+!:strength / 2
+>0x402 beshort         < 100
+>0x402 beshort         > -1            Minix filesystem, V1, 30 char names, %d zones
+>0x1e  string          minix           \b, bootable
+0x410  beshort         0x138f
+!:strength / 2
+>0x402 beshort         < 100
+>0x402 beshort         > -1            Minix filesystem, V1, 30 char names (big endian), %d zones
+>0x1e  string          minix           \b, bootable
+0x410  leshort         0x2468
+>0x402 beshort         < 100
+>>0x402        beshort         > -1            Minix filesystem, V2, %d zones
+>0x1e  string          minix           \b, bootable
+0x410  beshort         0x2468
+>0x402 beshort         < 100
+>0x402 beshort         > -1            Minix filesystem, V2 (big endian), %d zones
+>0x1e  string          minix           \b, bootable
+
+0x410  leshort         0x2478
+>0x402 beshort         < 100
+>0x402 beshort         > -1            Minix filesystem, V2, 30 char names, %d zones
+>0x1e  string          minix           \b, bootable
+0x410  leshort         0x2478
+>0x402 beshort         < 100
+>0x402 beshort         > -1            Minix filesystem, V2, 30 char names, %d zones
+>0x1e  string          minix           \b, bootable
+0x410  beshort         0x2478
+>0x402 beshort         !0              Minix filesystem, V2, 30 char names (big endian), %d zones
+>0x1e  string          minix           \b, bootable
+0x410  leshort         0x4d5a
+>0x402 beshort         !0              Minix filesystem, V3, %d zones
+>0x1e  string          minix           \b, bootable
+
 # SGI disk labels - Nathan Scott <nathans@debian.org>
 0      belong          0x0BE5A941      SGI disk label (volume header)
 
 ############################################################################
 # Minix-ST kernel floppy
 0x800  belong          0x46fc2700      Atari-ST Minix kernel image
->19    string          \240\5\371\5\0\011\0\2\0        \b, 720k floppy
->19    string          \320\2\370\5\0\011\0\1\0        \b, 360k floppy
+# http://en.wikipedia.org/wiki/BIOS_parameter_block
+# floppies with valid BPB and any instruction at beginning
+>19    string          \240\005\371\005\0\011\0\2\0    \b, 720k floppy
+>19    string          \320\002\370\005\0\011\0\1\0    \b, 360k floppy
 
 ############################################################################
 # Hmmm, is this a better way of detecting _standard_ floppy images ?
-19     string          \320\2\360\3\0\011\0\1\0        DOS floppy 360k
->0x1FE leshort         0xAA55          \b, x86 hard disk boot sector
-19     string          \240\5\371\3\0\011\0\2\0        DOS floppy 720k
->0x1FE leshort         0xAA55          \b, x86 hard disk boot sector
+19     string          \320\002\360\003\0\011\0\1\0    DOS floppy 360k
+>0x1FE leshort         0xAA55          \b, DOS/MBR hard disk boot sector
+19     string          \240\005\371\003\0\011\0\2\0    DOS floppy 720k
+>0x1FE leshort         0xAA55          \b, DOS/MBR hard disk boot sector
 19     string          \100\013\360\011\0\022\0\2\0    DOS floppy 1440k
->0x1FE leshort         0xAA55          \b, x86 hard disk boot sector
+>0x1FE leshort         0xAA55          \b, DOS/MBR hard disk boot sector
 
-19     string          \240\5\371\5\0\011\0\2\0        DOS floppy 720k, IBM
->0x1FE leshort         0xAA55          \b, x86 hard disk boot sector
-19     string          \100\013\371\5\0\011\0\2\0      DOS floppy 1440k, mkdosfs
->0x1FE leshort         0xAA55          \b, x86 hard disk boot sector
+19     string          \240\005\371\005\0\011\0\2\0    DOS floppy 720k, IBM
+>0x1FE leshort         0xAA55          \b, DOS/MBR hard disk boot sector
+19     string          \100\013\371\005\0\011\0\2\0    DOS floppy 1440k, mkdosfs
+>0x1FE leshort         0xAA55          \b, DOS/MBR hard disk boot sector
 
-19     string          \320\2\370\5\0\011\0\1\0        Atari-ST floppy 360k
-19     string          \240\5\371\5\0\011\0\2\0        Atari-ST floppy 720k
+19     string          \320\002\370\005\0\011\0\1\0    Atari-ST floppy 360k
+19     string          \240\005\371\005\0\011\0\2\0    Atari-ST floppy 720k
+#                      |       |   |     |     |
+#                      |       |   |     |     heads
+#                      |       |   |     sectors/track
+#                      |       |   sectors/FAT
+#                      |       media descriptor
+#              BPB:    sectors
 
 #  Valid media descriptor bytes for MS-DOS:
 #
 #        10    SS, 8 SPT
 #        11    DS, 8 SPT
 #
-#  11111001    Double density 3½ floppy disk, high density 5¼
-#  11110000    High density 3½ floppy disk
+#  11111001    Double density 3 1/2 floppy disk, high density 5 1/4
+#  11110000    High density 3 1/2 floppy disk
 #  11111000    Hard disk any format
 #
 
+# all FAT12 (strength=70) floppies with sectorsize 512 added by Joerg Jenderek at Jun 2013
+# http://en.wikipedia.org/wiki/File_Allocation_Table#Exceptions
+# Too Weak.
+#512           ubelong&0xE0ffff00      0xE0ffff00              
+# without valid Media descriptor in place of BPB, cases with are done at other places
+#>21           ubyte                   <0xE5                   floppy with old FAT filesystem
+# but valid Media descriptor at begin of FAT
+#>>512         ubyte                   =0xed                   720k
+#>>512         ubyte                   =0xf0                   1440k
+#>>512         ubyte                   =0xf8                   720k
+#>>512         ubyte                   =0xf9                   1220k
+#>>512         ubyte                   =0xfa                   320k
+#>>512         ubyte                   =0xfb                   640k
+#>>512         ubyte                   =0xfc                   180k
+# look like an an old DOS directory entry
+#>>>0xA0E      ubequad                 0                       
+#>>>>0xA00     ubequad                 !0                      
+#!:mime application/x-ima
+#>>512         ubyte                   =0xfd                   
+# look for 2nd FAT at different location to distinguish between 360k and 500k
+#>>>0x600      ubelong&0xE0ffff00      0xE0ffff00              360k
+#>>>0x500      ubelong&0xE0ffff00      0xE0ffff00              500k
+#>>>0xA0E      ubequad                 0                       
+#!:mime application/x-ima
+#>>512         ubyte                   =0xfe                   
+#>>>0x400      ubelong&0xE0ffff00      0xE0ffff00              160k
+#>>>>0x60E     ubequad                 0                       
+#>>>>>0x600    ubequad                 !0                      
+#!:mime application/x-ima
+#>>>0xC00      ubelong&0xE0ffff00      0xE0ffff00              1200k
+#>>512         ubyte                   =0xff                   320k
+#>>>0x60E      ubequad                 0                       
+#>>>>0x600     ubequad                 !0                      
+#!:mime application/x-ima
+#>>512         ubyte                   x                       \b, Media descriptor 0x%x
+# without x86 jump instruction
+#>>0           ulelong&0x804000E9      !0x000000E9             
+# assembler instructions: CLI;MOV SP,1E7;MOV AX;07c0;MOV       
+#>>>0  ubequad                         0xfabce701b8c0078e      \b, MS-DOS 1.12 bootloader
+# IOSYS.COM+MSDOS.COM
+#>>>>0xc4      use                     2xDOS-filename
+#>>0           ulelong&0x804000E9      =0x000000E9     
+# only x86 short jump instruction found
+#>>>0          ubyte                   =0xEB
+#>>>>1         ubyte                   x                       \b, code offset 0x%x+2
+# http://thestarman.pcministry.com/DOS/ibm100/Boot.htm
+# assembler instructions: CLI;MOV AX,CS;MOV DS,AX;MOV DX,0             
+#>>>>(1.b+2)   ubequad                 0xfa8cc88ed8ba0000      \b, PC-DOS 1.0 bootloader 
+# ibmbio.com+ibmdos.com
+#>>>>>0x176    use                     DOS-filename
+#>>>>>0x181    ubyte                   x                       \b+
+#>>>>>0x182    use                     DOS-filename
+# http://thestarman.pcministry.com/DOS/ibm110/Boot.htm
+# assembler instructions: CLI;MOV AX,CS;MOV DS,AX;XOR DX,DX;MOV                
+#>>>>(1.b+2)   ubequad                 0xfa8cc88ed833d28e      \b, PC-DOS 1.1 bootloader 
+# ibmbio.com+ibmdos.com
+#>>>>>0x18b    use                     DOS-filename
+#>>>>>0x196    ubyte                   x                       \b+
+#>>>>>0x197    use                     DOS-filename
+# http://en.wikipedia.org/wiki/Zenith_Data_Systems
+# assembler instructions: MOV BX,07c0;MOV SS,BX;MOV SP,01c6            
+#>>>>(1.b+2)   ubequad                 0xbbc0078ed3bcc601      \b, Zenith Data Systems MS-DOS 1.25 bootloader
+# IO.SYS+MSDOS.SYS
+#>>>>>0x20     use                     2xDOS-filename
+# http://en.wikipedia.org/wiki/Corona_Data_Systems
+# assembler instructions: MOV AX,CS;MOV DS,AX;CLI;MOV SS,AX;           
+#>>>>(1.b+2)   ubequad                 0x8cc88ed8fa8ed0bc      \b, MS-DOS 1.25 bootloader
+# IO.SYS+MSDOS.SYS
+#>>>>>0x69     use                     2xDOS-filename
+# assembler instructions: CLI;PUSH CS;POP SS;MOV SP,7c00;              
+#>>>>(1.b+2)   ubequad                 0xfa0e17bc007cb860      \b, MS-DOS 2.11 bootloader
+# defect IO.SYS+MSDOS.SYS ?
+#>>>>>0x162    use                     2xDOS-filename
+
 # CDROM Filesystems
 # Modified for UDF by gerardo.cacciari@gmail.com
 32769  string    CD001     #
 >>38917        byte     >0x33      (unknown version, ID 0x%X)
 >>38917        byte     <0x31      (unknown version, ID 0x%X)
 # "application id" which appears to be used as a volume label
->32808 string    >\0       '%s'
+>32808 string/T  >\0       '%s'
 >34816 string    \000CD001\001EL\ TORITO\ SPECIFICATION    (bootable)
 37633  string    CD001     ISO 9660 CD-ROM filesystem data (raw 2352 byte sectors)
 !:mime application/x-iso9660-image
-32776  string    CDROM     High Sierra CD-ROM filesystem data
+32777  string    CDROM     High Sierra CD-ROM filesystem data
 
 # .cso files
 0    string    CISO    Compressed ISO CD image
 >28 leshort >3
 >>8    ledate  x       created: %s
 
-0      string          td\000          floppy image data (TeleDisk)
-
 # AFS Dump Magic
 # From: Ty Sarna <tsarna@sarna.org> 
 0       string                  \x01\xb3\xa1\x13\x22    AFS Dump
 >>&8   lelong  x       \b, blocksize %d
 >>&32  lelong&0x00000006       >0      (dirty)
 >>&36  lelong  >0      (compressed)
+
+# LFS
+0      lelong  0x070162        LFS filesystem image
+>4     lelong  1               version 1,
+>>8    lelong  x               \b blocks %u,
+>>12   lelong  x               \b blocks per segment %u,
+>4     lelong  2               version 2,
+>>8    lelong  x               \b fragments %u,
+>>12   lelong  x               \b bytes per segment %u,
+>16    lelong  x               \b disk blocks %u,
+>20    lelong  x               \b block size %u,
+>24    lelong  x               \b fragment size %u,
+>28    lelong  x               \b fragments per block %u,
+>32    lelong  x               \b start for free list %u,
+>36    lelong  x               \b number of free blocks %d,
+>40    lelong  x               \b number of files %u,
+>44    lelong  x               \b blocks available for writing %d,
+>48    lelong  x               \b inodes in cache %d,
+>52    lelong  x               \b inode file disk address 0x%x,
+>56    lelong  x               \b inode file inode number %u,
+>60    lelong  x               \b address of last segment written 0x%x,
+>64    lelong  x               \b address of next segment to write 0x%x,
+>68    lelong  x               \b address of current segment written 0x%x
+
+0      string  td\000          floppy image data (TeleDisk, compressed)
+0      string  TD\000          floppy image data (TeleDisk)
+
+0      string  CQ\024          floppy image data (CopyQM, 
+>16    leshort x               %d sectors, 
+>18    leshort x               %d heads.)
+
+0      string  ACT\020Apricot\020disk\020image\032\004 floppy image data (ApriDisk)
+
+0      beshort 0xAA58          floppy image data (IBM SaveDskF, old)
+0      beshort 0xAA59          floppy image data (IBM SaveDskF)
+0      beshort 0xAA5A          floppy image data (IBM SaveDskF, compressed)
+
+0      string  \074CPM_Disk\076        disk image data (YAZE)
+
+# ReFS
+# Richard W.M. Jones <rjones@redhat.com>
+0      string  \0\0\0ReFS\0    ReFS filesystem image
+
+# EFW encase image file format:
+# Gregoire Passault
+# http://www.forensicswiki.org/wiki/Encase_image_file_format
+0      string  EVF\x09\x0d\x0a\xff\x00 EWF/Expert Witness/EnCase image file format
+
+# UBIfs
+# Linux kernel sources: fs/ubifs/ubifs-media.h
+0       belong  0x31181006
+>0x16   short   0               UBIfs image
+>0x08   lequad  x               \b, sequence number %llu
+>0x10   leshort x               \b, length %u
+>0x04   lelong  x               \b, CRC 0x%08x
+
+0       belong  0x55424923
+>0x04   short   <2
+>0x05   string  \0\0\0
+>0x1c   string  \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
+>0x04   short   x       UBI image, version %u
index dea35ae..fa22562 100644 (file)
@@ -1,11 +1,13 @@
 
 #------------------------------------------------------------------------------
-# $File: flash,v 1.9 2009/11/08 01:30:01 christos Exp $
+# $File: flash,v 1.10 2014/03/06 16:07:24 christos Exp $
 # flash:       file(1) magic for Macromedia Flash file format
 #
 # See
 #
 #      http://www.macromedia.com/software/flash/open/
+#      http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/\
+#      en/devnet/swf/pdf/swf-file-format-spec.pdf page 27
 #
 0      string          FWS             Macromedia Flash data,
 >3     byte            x               version %d
@@ -13,6 +15,9 @@
 0      string          CWS             Macromedia Flash data (compressed),
 !:mime application/x-shockwave-flash
 >3     byte            x               version %d
+0      string          ZWS             Macromedia Flash data (lzma compressed),
+!:mime application/x-shockwave-flash
+>3     byte            x               version %d
 # From: Cal Peake <cp@absolutedigital.net>
 0      string          FLV             Macromedia Flash Video
 !:mime video/x-flv
index 917d372..a702a17 100644 (file)
@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: fonts,v 1.23 2010/09/20 18:55:20 rrt Exp $
+# $File: fonts,v 1.26 2013/03/09 22:36:00 christos Exp $
 # fonts:  file(1) magic for font data
 #
 0      search/1        FONT            ASCII vfont text
 0      string          %!PS-Adobe-3.0\ Resource-Font   PostScript Type 1 font text
 
 # X11 font files in SNF (Server Natural Format) format
+# updated by Joerg Jenderek at Feb 2013
+# http://computer-programming-forum.com/51-perl/8f22fb96d2e34bab.htm
 0      belong          00000004                X11 SNF font data, MSB first
-0      lelong          00000004                X11 SNF font data, LSB first
+#>104  belong          00000004                X11 SNF font data, MSB first
+!:mime application/x-font-sfn
+# GRR: line below too general as it catches also Xbase index file t3-CHAR.NDX
+0      lelong          00000004                
+>104   lelong          00000004                X11 SNF font data, LSB first
+!:mime application/x-font-sfn
 
 # X11 Bitmap Distribution Format, from Daniel Quinlan (quinlan@yggdrasil.com)
 0      search/1        STARTFONT\              X11 BDF font text
@@ -75,7 +82,7 @@
 0      string          OTTO            OpenType font data
 !:mime application/vnd.ms-opentype
 
-# Gürkan Sengün <gurkan@linuks.mine.nu>, www.linuks.mine.nu 
+# Gurkan Sengun <gurkan@linuks.mine.nu>, www.linuks.mine.nu 
 0      string          SplineFontDB:   Spline Font Database 
 !:mime application/vnd.font-fontforge-sfd
 >14    string          x               version %s
 # EOT
 34     string          LP              Embedded OpenType (EOT)
 !:mime application/vnd.ms-fontobject
+
+# Web Open Font Format (.woff)
+# http://www.w3.org/TR/WOFF/
+0      string          wOFF    Web Open Font Format
+>4     belong          x       \b, flavor %d
+>8     belong          x       \b, length %d
+>20    beshort         x       \b, version %hd
+>22    beshort         x       \b.%hd
index e2ef0cd..0604c25 100644 (file)
@@ -1,6 +1,7 @@
 
 #------------------------------------------------------------------------------
-# $File: fortran,v 1.6 2009/09/19 16:28:09 christos Exp $
+# $File: fortran,v 1.7 2012/06/21 01:55:02 christos Exp $
 # FORTRAN source
 0      regex/100       \^[Cc][\ \t]    FORTRAN program
 !:mime text/x-fortran
+!:strength - 5
index 0a7a7f8..ecdc4f6 100644 (file)
@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: fsav,v 1.11 2009/09/19 16:28:09 christos Exp $
+# $File: fsav,v 1.13 2013/03/25 17:18:47 christos Exp $
 # fsav:  file(1) magic for datafellows fsav virus definition files
 # Anthon van der Neut (anthon@mnt.org)
 
@@ -61,3 +61,6 @@
 # Type: Grisoft AVG AntiVirus
 # From: David Newgas <david@newgas.net>
 0      string  AVG7_ANTIVIRUS_VAULT_FILE       AVG 7 Antivirus vault file data
+
+0      string  X5O!P%@AP[4\\PZX54(P^)7CC)7}$EICAR
+>33    string  -STANDARD-ANTIVIRUS-TEST-FILE!$H+H*     EICAR virus test files
index 924c71e..9a765fe 100644 (file)
@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: geo,v 1.1 2010/02/23 23:40:07 christos Exp $
+# $File: geo,v 1.3 2013/01/04 00:47:02 christos Exp $
 # Geo- files from Kurt Schwehr <schwehr@ccom.unh.edu>
 
 ######################################################################
 
 # https://midas.psi.ch/elog/
 0      string  $@MID@$ elog journal entry
+
+# Geospatial Designs http://www.geospatialdesigns.com/surfer6_format.htm
+0      string          DSBB    Surfer 6 binary grid file
+>4     leshort         x       \b, %d
+>6     leshort         x       \bx%d
+>8     ledouble        x       \b, minx=%g
+>16    ledouble        x       \b, maxx=%g
+>24    ledouble        x       \b, miny=%g
+>32    ledouble        x       \b, maxy=%g
+>40    ledouble        x       \b, minz=%g
+>48    ledouble        x       \b, maxz=%g
+
index a360bd8..ba0727f 100644 (file)
@@ -1,13 +1,17 @@
 
 #------------------------------------------------------------------------------
-# $File: gimp,v 1.7 2010/09/20 18:55:20 rrt Exp $
-# GIMP Gradient: file(1) magic for the GIMP's gradient data files
+# $File: gimp,v 1.8 2013/12/21 14:29:45 christos Exp $
+# GIMP Gradient: file(1) magic for the GIMP's gradient data files (.ggr)
 # by Federico Mena <federico@nuclecu.unam.mx>
 
-0       string          GIMP\ Gradient  GIMP gradient data
+0       string/t        GIMP\ Gradient  GIMP gradient data
+
+# GIMP palette (.gpl)
+# From: Markus Heidelberg <markus.heidelberg@web.de>
+0       string/t        GIMP\ Palette   GIMP palette data
 
 #------------------------------------------------------------------------------
-# XCF:  file(1) magic for the XCF image format used in the GIMP developed
+# XCF:  file(1) magic for the XCF image format used in the GIMP (.xcf) developed
 #       by Spencer Kimball and Peter Mattis
 #       ('Bucky' LaDieu, nega@vt.edu)
 
@@ -24,7 +28,7 @@
 >22    belong          >2              Unknown Image Type.
 
 #------------------------------------------------------------------------------
-# XCF:  file(1) magic for the patterns used in the GIMP, developed
+# XCF:  file(1) magic for the patterns used in the GIMP (.pat), developed
 #       by Spencer Kimball and Peter Mattis
 #       ('Bucky' LaDieu, nega@vt.edu)
 
@@ -32,7 +36,7 @@
 >24     string          x               %s
 
 #------------------------------------------------------------------------------
-# XCF:  file(1) magic for the brushes used in the GIMP, developed
+# XCF:  file(1) magic for the brushes used in the GIMP (.gbr), developed
 #       by Spencer Kimball and Peter Mattis
 #       ('Bucky' LaDieu, nega@vt.edu)
 
diff --git a/contrib/file/magic/Magdir/gnome b/contrib/file/magic/Magdir/gnome
new file mode 100644 (file)
index 0000000..14d5aeb
--- /dev/null
@@ -0,0 +1,59 @@
+
+#------------------------------------------------------------------------------
+# $File: gnome,v 1.3 2013/02/05 15:20:47 christos Exp $
+# GNOME related files
+
+# Contributed by Josh Triplett
+# FIXME: Could be simplified if pstring supported two-byte counts
+0         string   GnomeKeyring\n\r\0\n GNOME keyring
+>&0       ubyte    0                    \b, major version 0
+>>&0      ubyte    0                    \b, minor version 0
+>>>&0     ubyte    0                    \b, crypto type 0 (AES)
+>>>&0     ubyte    >0                   \b, crypto type %hhu (unknown)
+>>>&1     ubyte    0                    \b, hash type 0 (MD5)
+>>>&1     ubyte    >0                   \b, hash type %hhu (unknown)
+>>>&2     ubelong  0xFFFFFFFF           \b, name NULL
+>>>&2     ubelong  !0xFFFFFFFF
+>>>>&-4   ubelong  >255                 \b, name too long for file's pstring type
+>>>>&-4   ubelong  <256
+>>>>>&-1  pstring  x                    \b, name "%s"
+>>>>>>&0  ubeqdate x                    \b, last modified %s
+>>>>>>&8  ubeqdate x                    \b, created %s
+>>>>>>&16 ubelong  &1
+>>>>>>>&0 ubelong  x                    \b, locked if idle for %u seconds
+>>>>>>&16 ubelong  ^1                   \b, not locked if idle
+>>>>>>&24 ubelong  x                    \b, hash iterations %u
+>>>>>>&28 ubequad  x                    \b, salt %llu
+>>>>>>&52 ubelong  x                    \b, %u item(s)
+
+# From: Alex Beregszaszi <alex@fsn.hu>
+4      string  gtktalog                GNOME Catalogue (gtktalog)
+>13    string  >\0                     version %s
+
+# Summary: GStreamer binary registry
+# Extension: .bin
+# Submitted by: Josh Triplett <josh@joshtriplett.org>
+0      belong  0xc0def00d              GStreamer binary registry
+>4     string  x                       \b, version %s
+
+# GVariant Database file
+# By Elan Ruusamae <glen@delfi.ee>
+# https://github.com/GNOME/gvdb/blob/master/gvdb-format.h
+# It's always "GVariant", it's byte swapped on incompatible archs
+# See https://github.com/GNOME/gvdb/blob/master/gvdb-builder.c
+# file_builder_serialise()
+# http://developer.gnome.org/glib/2.34/glib-GVariant.html#GVariant
+0      string  GVariant        GVariant Database file,
+# version is never filled. probably future extension
+>8     lelong  x               version %d
+# not sure are these usable, so commented out
+#>>16  lelong  x               start %d,
+#>>>20 lelong  x               end %d
+
+# G-IR database made by gobject-introspect toolset,
+# http://live.gnome.org/GObjectIntrospection
+0      string          GOBJ\nMETADATA\r\n\032  G-IR binary database
+>16    byte            x                       \b, v%d
+>17    byte            x                       \b.%d
+>20    leshort         x                       \b, %d entries
+>22    leshort         x                       \b/%d local
diff --git a/contrib/file/magic/Magdir/gnome-keyring b/contrib/file/magic/Magdir/gnome-keyring
deleted file mode 100644 (file)
index 463688f..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-
-#------------------------------------------------------------------------------
-# $File: gnome-keyring,v 1.2 2009/09/19 16:28:09 christos Exp $
-# GNOME keyring
-# Contributed by Josh Triplett
-# FIXME: Could be simplified if pstring supported two-byte counts
-0         string   GnomeKeyring\n\r\0\n GNOME keyring
->&0       ubyte    0                    \b, major version 0
->>&0      ubyte    0                    \b, minor version 0
->>>&0     ubyte    0                    \b, crypto type 0 (AEL)
->>>&0     ubyte    >0                   \b, crypto type %hhu (unknown)
->>>&1     ubyte    0                    \b, hash type 0 (MD5)
->>>&1     ubyte    >0                   \b, hash type %hhu (unknown)
->>>&2     ubelong  0xFFFFFFFF           \b, name NULL
->>>&2     ubelong  !0xFFFFFFFF
->>>>&-4   ubelong  >255                 \b, name too long for file's pstring type
->>>>&-4   ubelong  <256
->>>>>&-1  pstring  x                    \b, name "%s"
->>>>>>&0  ubeqdate x                    \b, last modified %s
->>>>>>&8  ubeqdate x                    \b, created %s
->>>>>>&16 ubelong  &1
->>>>>>>&0 ubelong  x                    \b, locked if idle for %u seconds
->>>>>>&16 ubelong  ^1                   \b, not locked if idle
->>>>>>&24 ubelong  x                    \b, hash iterations %u
->>>>>>&28 ubequad  x                    \b, salt %llu
->>>>>>&52 ubelong  x                    \b, %u item(s)
index 4789c0a..e4a0a16 100644 (file)
@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: gnu,v 1.13 2012/01/03 17:16:54 christos Exp $
+# $File: gnu,v 1.15 2014/02/06 14:21:02 christos Exp $
 # gnu:  file(1) magic for various GNU tools
 #
 # GNU nlsutils message catalog file format
 0       beshort         0x9901                  GPG key public ring
 !:mime application/x-gnupg-keyring
 
+# Symmetric encryption
+0      leshort         0x0d8c
+>4     leshort         0x0203
+>>2    leshort         0x0204          GPG symmetrically encrypted data (3DES cipher)
+>>2    leshort         0x0304          GPG symmetrically encrypted data (CAST5 cipher)
+>>2    leshort         0x0404          GPG symmetrically encrypted data (BLOWFISH cipher)
+>>2    leshort         0x0704          GPG symmetrically encrypted data (AES cipher)
+>>2    leshort         0x0804          GPG symmetrically encrypted data (AES192 cipher)
+>>2    leshort         0x0904          GPG symmetrically encrypted data (AES256 cipher)
+>>2    leshort         0x0a04          GPG symmetrically encrypted data (TWOFISH cipher)
+>>2    leshort         0x0b04          GPG symmetrically encrypted data (CAMELLIA128 cipher)
+>>2    leshort         0x0c04          GPG symmetrically encrypted data (CAMELLIA192 cipher)
+>>2    leshort         0x0d04          GPG symmetrically encrypted data (CAMELLIA256 cipher)
+
+
+# GnuPG Keybox file
+# <http://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=blob;f=kbx/keybox-blob.c;hb=HEAD>
+# From: Philipp Hahn <hahn@univention.de>
+0      belong  32
+>4     byte    1
+>>8    string  KBXf    GPG keybox database
+>>>5   byte    1       version %d
+>>>16  bedate  x       \b, created-at %s
+>>>20  bedate  x       \b, last-maintained %s
+
+
 # Gnumeric spreadsheet
 # This entry is only semi-helpful, as Gnumeric compresses its files, so
 # they will ordinarily reported as "compressed", but at least -z helps
diff --git a/contrib/file/magic/Magdir/gpt b/contrib/file/magic/Magdir/gpt
new file mode 100644 (file)
index 0000000..74aaaf7
--- /dev/null
@@ -0,0 +1,241 @@
+
+#------------------------------------------------------------------------------
+# $File: gpt,v 1.1 2013/02/18 18:31:09 christos Exp $
+#
+# GPT Partition table patterns.
+# Author: Rogier Goossens (goossens.rogier@gmail.com)
+# Note that a GPT-formatted disk must contain an MBR as well.
+#
+
+# The initial segment (up to >>>>>>>>422) was copied from the X86
+# partition table code (aka MBR).
+# This is kept separate, so that MBR partitions are not reported as well.
+# (use -k if you do want them as well)
+
+# First, detect the MBR partiton table
+# If more than one GPT protective MBR partition exists, don't print anything
+# (the other MBR detection code will then just print the MBR partition table)
+0x1FE                  leshort         0xAA55
+>3                     string          !MS
+>>3                    string          !SYSLINUX
+>>>3                   string          !MTOOL
+>>>>3                  string          !NEWLDR
+>>>>>5                 string          !DOS
+# not FAT (32 bit)
+>>>>>>82               string          !FAT32
+#not Linux kernel
+>>>>>>>514             string          !HdrS
+#not BeOS
+>>>>>>>>422            string          !Be\ Boot\ Loader
+# GPT with protective MBR entry in partition 1 (only)
+>>>>>>>>>450           ubyte           0xee
+>>>>>>>>>>466          ubyte           !0xee
+>>>>>>>>>>>482         ubyte           !0xee
+>>>>>>>>>>>>498                ubyte           !0xee
+#>>>>>>>>>>>>>446      use             gpt-mbr-partition
+>>>>>>>>>>>>>(454.l*8192)      string          EFI\ PART       GPT partition table
+>>>>>>>>>>>>>>0                        use             gpt-mbr-type
+>>>>>>>>>>>>>>&-8              use             gpt-table
+>>>>>>>>>>>>>>0                        ubyte           x               of 8192 bytes           
+>>>>>>>>>>>>>(454.l*8192)      string          !EFI\ PART
+>>>>>>>>>>>>>>(454.l*4096)     string          EFI\ PART       GPT partition table
+>>>>>>>>>>>>>>>0               use             gpt-mbr-type
+>>>>>>>>>>>>>>>&-8             use             gpt-table
+>>>>>>>>>>>>>>>0               ubyte           x               of 4096 bytes
+>>>>>>>>>>>>>>(454.l*4096)     string          !EFI\ PART
+>>>>>>>>>>>>>>>(454.l*2048)    string          EFI\ PART       GPT partition table
+>>>>>>>>>>>>>>>>0              use             gpt-mbr-type
+>>>>>>>>>>>>>>>>&-8            use             gpt-table
+>>>>>>>>>>>>>>>>0              ubyte           x               of 2048 bytes
+>>>>>>>>>>>>>>>(454.l*2048)    string          !EFI\ PART
+>>>>>>>>>>>>>>>>(454.l*1024)   string          EFI\ PART       GPT partition table
+>>>>>>>>>>>>>>>>>0             use             gpt-mbr-type
+>>>>>>>>>>>>>>>>>&-8           use             gpt-table
+>>>>>>>>>>>>>>>>>0             ubyte           x               of 1024 bytes
+>>>>>>>>>>>>>>>>(454.l*1024)   string          !EFI\ PART
+>>>>>>>>>>>>>>>>>(454.l*512)   string          EFI\ PART       GPT partition table
+>>>>>>>>>>>>>>>>>>0            use             gpt-mbr-type
+>>>>>>>>>>>>>>>>>>&-8          use             gpt-table
+>>>>>>>>>>>>>>>>>>0            ubyte           x               of 512 bytes
+# GPT with protective MBR entry in partition 2 (only)
+>>>>>>>>>450           ubyte           !0xee
+>>>>>>>>>>466          ubyte           0xee
+>>>>>>>>>>>482         ubyte           !0xee
+>>>>>>>>>>>>498                ubyte           !0xee
+#>>>>>>>>>>>>>462      use             gpt-mbr-partition
+>>>>>>>>>>>>>(470.l*8192)      string          EFI\ PART       GPT partition table
+>>>>>>>>>>>>>>0                        use             gpt-mbr-type
+>>>>>>>>>>>>>>&-8              use             gpt-table
+>>>>>>>>>>>>>>0                        ubyte           x               of 8192 bytes           
+>>>>>>>>>>>>>(470.l*8192)      string          !EFI\ PART
+>>>>>>>>>>>>>>(470.l*4096)     string          EFI\ PART       GPT partition table
+>>>>>>>>>>>>>>>0               use             gpt-mbr-type
+>>>>>>>>>>>>>>>&-8             use             gpt-table
+>>>>>>>>>>>>>>>0               ubyte           x               of 4096 bytes
+>>>>>>>>>>>>>>(470.l*4096)     string          !EFI\ PART
+>>>>>>>>>>>>>>>(470.l*2048)    string          EFI\ PART       GPT partition table
+>>>>>>>>>>>>>>>>0              use             gpt-mbr-type
+>>>>>>>>>>>>>>>>&-8            use             gpt-table
+>>>>>>>>>>>>>>>>0              ubyte           x               of 2048 bytes
+>>>>>>>>>>>>>>>(470.l*2048)    string          !EFI\ PART
+>>>>>>>>>>>>>>>>(470.l*1024)   string          EFI\ PART       GPT partition table
+>>>>>>>>>>>>>>>>>0             use             gpt-mbr-type
+>>>>>>>>>>>>>>>>>&-8           use             gpt-table
+>>>>>>>>>>>>>>>>>0             ubyte           x               of 1024 bytes
+>>>>>>>>>>>>>>>>(470.l*1024)   string          !EFI\ PART
+>>>>>>>>>>>>>>>>>(470.l*512)   string          EFI\ PART       GPT partition table
+>>>>>>>>>>>>>>>>>>0            use             gpt-mbr-type
+>>>>>>>>>>>>>>>>>>&-8          use             gpt-table
+>>>>>>>>>>>>>>>>>>0            ubyte           x               of 512 bytes
+# GPT with protective MBR entry in partition 3 (only)
+>>>>>>>>>450           ubyte           !0xee
+>>>>>>>>>>466          ubyte           !0xee
+>>>>>>>>>>>482         ubyte           0xee
+>>>>>>>>>>>>498                ubyte           !0xee
+#>>>>>>>>>>>>>478      use             gpt-mbr-partition
+>>>>>>>>>>>>>(486.l*8192)      string          EFI\ PART       GPT partition table
+>>>>>>>>>>>>>>0                        use             gpt-mbr-type
+>>>>>>>>>>>>>>&-8              use             gpt-table
+>>>>>>>>>>>>>>0                        ubyte           x               of 8192 bytes           
+>>>>>>>>>>>>>(486.l*8192)      string          !EFI\ PART
+>>>>>>>>>>>>>>(486.l*4096)     string          EFI\ PART       GPT partition table
+>>>>>>>>>>>>>>>0               use             gpt-mbr-type
+>>>>>>>>>>>>>>>&-8             use             gpt-table
+>>>>>>>>>>>>>>>0