Update to file 4.13. Put the contrib files into contrib/file-4 instead
authorJoerg Sonnenberger <joerg@dragonflybsd.org>
Wed, 1 Jun 2005 14:34:46 +0000 (14:34 +0000)
committerJoerg Sonnenberger <joerg@dragonflybsd.org>
Wed, 1 Jun 2005 14:34:46 +0000 (14:34 +0000)
of contrib/file-4.13 since we want to do more incremental updates and
this keeps the repository size down.

208 files changed:
contrib/file-4/ChangeLog [new file with mode: 0644]
contrib/file-4/LEGAL.NOTICE [new file with mode: 0644]
contrib/file-4/MAINT [new file with mode: 0644]
contrib/file-4/README [new file with mode: 0644]
contrib/file-4/magic/Header [new file with mode: 0644]
contrib/file-4/magic/Localstuff [new file with mode: 0644]
contrib/file-4/magic/Magdir/acorn [new file with mode: 0644]
contrib/file-4/magic/Magdir/adi [new file with mode: 0644]
contrib/file-4/magic/Magdir/adventure [new file with mode: 0644]
contrib/file-4/magic/Magdir/allegro [new file with mode: 0644]
contrib/file-4/magic/Magdir/alliant [new file with mode: 0644]
contrib/file-4/magic/Magdir/alpha [new file with mode: 0644]
contrib/file-4/magic/Magdir/amanda [new file with mode: 0644]
contrib/file-4/magic/Magdir/amigaos [new file with mode: 0644]
contrib/file-4/magic/Magdir/animation [new file with mode: 0644]
contrib/file-4/magic/Magdir/apl [new file with mode: 0644]
contrib/file-4/magic/Magdir/apple [new file with mode: 0644]
contrib/file-4/magic/Magdir/applix [new file with mode: 0644]
contrib/file-4/magic/Magdir/archive [new file with mode: 0644]
contrib/file-4/magic/Magdir/asterix [new file with mode: 0644]
contrib/file-4/magic/Magdir/att3b [new file with mode: 0644]
contrib/file-4/magic/Magdir/audio [new file with mode: 0644]
contrib/file-4/magic/Magdir/bFLT [new file with mode: 0644]
contrib/file-4/magic/Magdir/blender [new file with mode: 0644]
contrib/file-4/magic/Magdir/blit [new file with mode: 0644]
contrib/file-4/magic/Magdir/bout [new file with mode: 0644]
contrib/file-4/magic/Magdir/bsdi [new file with mode: 0644]
contrib/file-4/magic/Magdir/c-lang [new file with mode: 0644]
contrib/file-4/magic/Magdir/c64 [new file with mode: 0644]
contrib/file-4/magic/Magdir/cad [new file with mode: 0644]
contrib/file-4/magic/Magdir/cddb [new file with mode: 0644]
contrib/file-4/magic/Magdir/chi [new file with mode: 0644]
contrib/file-4/magic/Magdir/chord [new file with mode: 0644]
contrib/file-4/magic/Magdir/cisco [new file with mode: 0644]
contrib/file-4/magic/Magdir/citrus [new file with mode: 0644]
contrib/file-4/magic/Magdir/claris [new file with mode: 0644]
contrib/file-4/magic/Magdir/clipper [new file with mode: 0644]
contrib/file-4/magic/Magdir/commands [new file with mode: 0644]
contrib/file-4/magic/Magdir/communications [new file with mode: 0644]
contrib/file-4/magic/Magdir/compress [new file with mode: 0644]
contrib/file-4/magic/Magdir/console [new file with mode: 0644]
contrib/file-4/magic/Magdir/convex [new file with mode: 0644]
contrib/file-4/magic/Magdir/ctags [new file with mode: 0644]
contrib/file-4/magic/Magdir/dact [new file with mode: 0644]
contrib/file-4/magic/Magdir/database [new file with mode: 0644]
contrib/file-4/magic/Magdir/diamond [new file with mode: 0644]
contrib/file-4/magic/Magdir/diff [new file with mode: 0644]
contrib/file-4/magic/Magdir/digital [new file with mode: 0644]
contrib/file-4/magic/Magdir/dolby [new file with mode: 0644]
contrib/file-4/magic/Magdir/dump [new file with mode: 0644]
contrib/file-4/magic/Magdir/dyadic [new file with mode: 0644]
contrib/file-4/magic/Magdir/editors [new file with mode: 0644]
contrib/file-4/magic/Magdir/elf [new file with mode: 0644]
contrib/file-4/magic/Magdir/encore [new file with mode: 0644]
contrib/file-4/magic/Magdir/epoc [new file with mode: 0644]
contrib/file-4/magic/Magdir/esri [new file with mode: 0644]
contrib/file-4/magic/Magdir/fcs [new file with mode: 0644]
contrib/file-4/magic/Magdir/filesystems [new file with mode: 0644]
contrib/file-4/magic/Magdir/flash [new file with mode: 0644]
contrib/file-4/magic/Magdir/fonts [new file with mode: 0644]
contrib/file-4/magic/Magdir/frame [new file with mode: 0644]
contrib/file-4/magic/Magdir/freebsd [new file with mode: 0644]
contrib/file-4/magic/Magdir/fsav [new file with mode: 0644]
contrib/file-4/magic/Magdir/games [new file with mode: 0644]
contrib/file-4/magic/Magdir/gcc [new file with mode: 0644]
contrib/file-4/magic/Magdir/geos [new file with mode: 0644]
contrib/file-4/magic/Magdir/gimp [new file with mode: 0644]
contrib/file-4/magic/Magdir/gnu [new file with mode: 0644]
contrib/file-4/magic/Magdir/grace [new file with mode: 0644]
contrib/file-4/magic/Magdir/gringotts [new file with mode: 0644]
contrib/file-4/magic/Magdir/hdf [new file with mode: 0644]
contrib/file-4/magic/Magdir/hitachi-sh [new file with mode: 0644]
contrib/file-4/magic/Magdir/hp [new file with mode: 0644]
contrib/file-4/magic/Magdir/human68k [new file with mode: 0644]
contrib/file-4/magic/Magdir/ibm370 [new file with mode: 0644]
contrib/file-4/magic/Magdir/ibm6000 [new file with mode: 0644]
contrib/file-4/magic/Magdir/iff [new file with mode: 0644]
contrib/file-4/magic/Magdir/images [new file with mode: 0644]
contrib/file-4/magic/Magdir/intel [new file with mode: 0644]
contrib/file-4/magic/Magdir/interleaf [new file with mode: 0644]
contrib/file-4/magic/Magdir/island [new file with mode: 0644]
contrib/file-4/magic/Magdir/ispell [new file with mode: 0644]
contrib/file-4/magic/Magdir/java [new file with mode: 0644]
contrib/file-4/magic/Magdir/jpeg [new file with mode: 0644]
contrib/file-4/magic/Magdir/karma [new file with mode: 0644]
contrib/file-4/magic/Magdir/lecter [new file with mode: 0644]
contrib/file-4/magic/Magdir/lex [new file with mode: 0644]
contrib/file-4/magic/Magdir/lif [new file with mode: 0644]
contrib/file-4/magic/Magdir/linux [new file with mode: 0644]
contrib/file-4/magic/Magdir/lisp [new file with mode: 0644]
contrib/file-4/magic/Magdir/mach [new file with mode: 0644]
contrib/file-4/magic/Magdir/macintosh [new file with mode: 0644]
contrib/file-4/magic/Magdir/magic [new file with mode: 0644]
contrib/file-4/magic/Magdir/mail.news [new file with mode: 0644]
contrib/file-4/magic/Magdir/maple [new file with mode: 0644]
contrib/file-4/magic/Magdir/mathematica [new file with mode: 0644]
contrib/file-4/magic/Magdir/matroska [new file with mode: 0644]
contrib/file-4/magic/Magdir/mcrypt [new file with mode: 0644]
contrib/file-4/magic/Magdir/mime [new file with mode: 0644]
contrib/file-4/magic/Magdir/mips [new file with mode: 0644]
contrib/file-4/magic/Magdir/mirage [new file with mode: 0644]
contrib/file-4/magic/Magdir/misctools [new file with mode: 0644]
contrib/file-4/magic/Magdir/mkid [new file with mode: 0644]
contrib/file-4/magic/Magdir/mlssa [new file with mode: 0644]
contrib/file-4/magic/Magdir/mmdf [new file with mode: 0644]
contrib/file-4/magic/Magdir/modem [new file with mode: 0644]
contrib/file-4/magic/Magdir/motorola [new file with mode: 0644]
contrib/file-4/magic/Magdir/msdos [new file with mode: 0644]
contrib/file-4/magic/Magdir/msvc [new file with mode: 0644]
contrib/file-4/magic/Magdir/natinst [new file with mode: 0644]
contrib/file-4/magic/Magdir/ncr [new file with mode: 0644]
contrib/file-4/magic/Magdir/netbsd [new file with mode: 0644]
contrib/file-4/magic/Magdir/netscape [new file with mode: 0644]
contrib/file-4/magic/Magdir/news [new file with mode: 0644]
contrib/file-4/magic/Magdir/nitpicker [new file with mode: 0644]
contrib/file-4/magic/Magdir/ocaml [new file with mode: 0644]
contrib/file-4/magic/Magdir/octave [new file with mode: 0644]
contrib/file-4/magic/Magdir/olf [new file with mode: 0644]
contrib/file-4/magic/Magdir/os2 [new file with mode: 0644]
contrib/file-4/magic/Magdir/os9 [new file with mode: 0644]
contrib/file-4/magic/Magdir/osf1 [new file with mode: 0644]
contrib/file-4/magic/Magdir/palm [new file with mode: 0644]
contrib/file-4/magic/Magdir/parix [new file with mode: 0644]
contrib/file-4/magic/Magdir/pbm [new file with mode: 0644]
contrib/file-4/magic/Magdir/pdf [new file with mode: 0644]
contrib/file-4/magic/Magdir/pdp [new file with mode: 0644]
contrib/file-4/magic/Magdir/perl [new file with mode: 0644]
contrib/file-4/magic/Magdir/pgp [new file with mode: 0644]
contrib/file-4/magic/Magdir/pkgadd [new file with mode: 0644]
contrib/file-4/magic/Magdir/plan9 [new file with mode: 0644]
contrib/file-4/magic/Magdir/plus5 [new file with mode: 0644]
contrib/file-4/magic/Magdir/printer [new file with mode: 0644]
contrib/file-4/magic/Magdir/project [new file with mode: 0644]
contrib/file-4/magic/Magdir/psdbms [new file with mode: 0644]
contrib/file-4/magic/Magdir/psion [new file with mode: 0644]
contrib/file-4/magic/Magdir/pulsar [new file with mode: 0644]
contrib/file-4/magic/Magdir/pyramid [new file with mode: 0644]
contrib/file-4/magic/Magdir/python [new file with mode: 0644]
contrib/file-4/magic/Magdir/revision [new file with mode: 0644]
contrib/file-4/magic/Magdir/riff [new file with mode: 0644]
contrib/file-4/magic/Magdir/rpm [new file with mode: 0644]
contrib/file-4/magic/Magdir/rtf [new file with mode: 0644]
contrib/file-4/magic/Magdir/sc [new file with mode: 0644]
contrib/file-4/magic/Magdir/sccs [new file with mode: 0644]
contrib/file-4/magic/Magdir/sendmail [new file with mode: 0644]
contrib/file-4/magic/Magdir/sequent [new file with mode: 0644]
contrib/file-4/magic/Magdir/sgi [new file with mode: 0644]
contrib/file-4/magic/Magdir/sgml [new file with mode: 0644]
contrib/file-4/magic/Magdir/sharc [new file with mode: 0644]
contrib/file-4/magic/Magdir/sinclair [new file with mode: 0644]
contrib/file-4/magic/Magdir/sketch [new file with mode: 0644]
contrib/file-4/magic/Magdir/smalltalk [new file with mode: 0644]
contrib/file-4/magic/Magdir/sniffer [new file with mode: 0644]
contrib/file-4/magic/Magdir/softquad [new file with mode: 0644]
contrib/file-4/magic/Magdir/spec [new file with mode: 0644]
contrib/file-4/magic/Magdir/spectrum [new file with mode: 0644]
contrib/file-4/magic/Magdir/sql [new file with mode: 0644]
contrib/file-4/magic/Magdir/sun [new file with mode: 0644]
contrib/file-4/magic/Magdir/sysex [new file with mode: 0644]
contrib/file-4/magic/Magdir/teapot [new file with mode: 0644]
contrib/file-4/magic/Magdir/terminfo [new file with mode: 0644]
contrib/file-4/magic/Magdir/tex [new file with mode: 0644]
contrib/file-4/magic/Magdir/tgif [new file with mode: 0644]
contrib/file-4/magic/Magdir/ti-8x [new file with mode: 0644]
contrib/file-4/magic/Magdir/timezone [new file with mode: 0644]
contrib/file-4/magic/Magdir/troff [new file with mode: 0644]
contrib/file-4/magic/Magdir/tuxedo [new file with mode: 0644]
contrib/file-4/magic/Magdir/typeset [new file with mode: 0644]
contrib/file-4/magic/Magdir/unknown [new file with mode: 0644]
contrib/file-4/magic/Magdir/uuencode [new file with mode: 0644]
contrib/file-4/magic/Magdir/varied.out [new file with mode: 0644]
contrib/file-4/magic/Magdir/varied.script [new file with mode: 0644]
contrib/file-4/magic/Magdir/vax [new file with mode: 0644]
contrib/file-4/magic/Magdir/vicar [new file with mode: 0644]
contrib/file-4/magic/Magdir/virtutech [new file with mode: 0644]
contrib/file-4/magic/Magdir/visx [new file with mode: 0644]
contrib/file-4/magic/Magdir/vms [new file with mode: 0644]
contrib/file-4/magic/Magdir/vmware [new file with mode: 0644]
contrib/file-4/magic/Magdir/vorbis [new file with mode: 0644]
contrib/file-4/magic/Magdir/vxl [new file with mode: 0644]
contrib/file-4/magic/Magdir/wordprocessors [new file with mode: 0644]
contrib/file-4/magic/Magdir/xdelta [new file with mode: 0644]
contrib/file-4/magic/Magdir/xenix [new file with mode: 0644]
contrib/file-4/magic/Magdir/xo65 [new file with mode: 0644]
contrib/file-4/magic/Magdir/xwindows [new file with mode: 0644]
contrib/file-4/magic/Magdir/zilog [new file with mode: 0644]
contrib/file-4/magic/Magdir/zyxel [new file with mode: 0644]
contrib/file-4/magic/magic.mime [new file with mode: 0644]
contrib/file-4/magic/magic2mime [new file with mode: 0644]
contrib/file-4/src/apprentice.c [new file with mode: 0644]
contrib/file-4/src/apptype.c [new file with mode: 0644]
contrib/file-4/src/ascmagic.c [new file with mode: 0644]
contrib/file-4/src/compress.c [new file with mode: 0644]
contrib/file-4/src/file.c [new file with mode: 0644]
contrib/file-4/src/file.h [new file with mode: 0644]
contrib/file-4/src/fsmagic.c [new file with mode: 0644]
contrib/file-4/src/funcs.c [new file with mode: 0644]
contrib/file-4/src/is_tar.c [new file with mode: 0644]
contrib/file-4/src/magic.c [new file with mode: 0644]
contrib/file-4/src/magic.h [new file with mode: 0644]
contrib/file-4/src/names.h [new file with mode: 0644]
contrib/file-4/src/patchlevel.h [new file with mode: 0644]
contrib/file-4/src/print.c [new file with mode: 0644]
contrib/file-4/src/readelf.c [new file with mode: 0644]
contrib/file-4/src/readelf.h [new file with mode: 0644]
contrib/file-4/src/softmagic.c [new file with mode: 0644]
contrib/file-4/src/tar.h [new file with mode: 0644]
contrib/file-4/src/test.c [new file with mode: 0644]

diff --git a/contrib/file-4/ChangeLog b/contrib/file-4/ChangeLog
new file mode 100644 (file)
index 0000000..d5f0ba7
--- /dev/null
@@ -0,0 +1,213 @@
+2005-01-12 00:00  Stepan Kasal  <kasal@ucw.cz>
+
+        * src/ascmagic.c (file_ascmagic): Fix three bugs about text files:
+          If a CRLF text file happens to have CR at offset HOWMANY - 1
+          (currently 0xffff), it should not be counted as CR line
+          terminator.
+          If a line has length exactly MAXLINELEN, it should not yet be
+          treated as a ``very long line'', as MAXLINELEN is ``longest sane
+          line length''.
+          With CRLF, the line length was not computed correctly, and even
+          lines of length MAXLINELEN - 1 were treated as ``very long''.
+
+2004-12-07 14:15  Christos Zoulas  <christos@zoulas.com>
+
+       * bzip2 needs a lot of input buffer space on some files
+         before it can begin uncompressing. This makes file -z
+         fail on some bz2 files. Fix it by giving it a copy of
+         the file descriptor to read as much as it wants if we
+         have access to it. <christos@zoulas.com>
+
+2004-11-24 12:39  Christos Zoulas  <christos@zoulas.com>
+
+       * Stack smash fix, and ELF more conservative reading.
+         Jakub Bogusz <qboosh@pld-linux.org>
+
+2004-11-20 18:50  Christos Zoulas  <christos@zoulas.com>
+
+       * New FreeBSD version parsing code:
+         Jon Noack <noackjr@alumni.rice.edu>
+
+       * Hackish support for ucs16 strings <christos@zoulas.com>
+
+2004-11-13 03:07  Christos Zoulas  <christos@zoulas.com>
+
+       * print the file name and line number in syntax errors.
+
+2004 10-12 10:50  Christos Zoulas  <christos@zoulas.com>
+
+       * Fix stack overwriting on 0 length strings: Tim Waugh
+           <twaugh@redhat.com> Ned Ludd <solar@gentoo.org>
+
+2004-09-27 11:30  Christos Zoulas  <christos@zoulas.com>
+
+       * Remove 3rd and 4th copyright clause; approved by Ian Darwin.
+
+       * Fix small memory leaks; caught by: Tamas Sarlos 
+           <stamas@csillag.ilab.sztaki.hu>
+
+2004-07-24 16:33  Christos Zoulas  <christos@zoulas.com>
+
+       * magic.mime update Danny Milosavljevic <danny.milo@gmx.net> 
+
+       * FreeBSD version update Oliver Eikemeier <eikemeier@fillmore-labs.com>
+
+       * utime/utimes detection Ian Lance Taylor <ian@wasabisystems.com>
+
+       * errors reading elf magic Jakub Bogusz <qboosh@pld-linux.org>
+
+2004-04-12 10:55  Christos Zoulas  <christos@zoulas.com>
+
+       * make sure that magic formats match magic types during compilation
+
+       * fix broken sgi magic file
+
+2004-04-06 20:36  Christos Zoulas  <christos@zoulas.com>
+
+       * detect present of mbstate_t Petter Reinholdtsen <pere@hungry.com>
+
+       * magic fixes
+
+2004-03-22 15:25  Christos Zoulas  <christos@zoulas.com>
+
+       * Lots of mime fixes
+         (Joerg Ostertag) <ostertag@rechengilde.de>
+
+       * FreeBSD ELF version handling
+         (Edwin Groothuis) <edwin@mavetju.org>
+
+       * correct cleanup in all cases; don't just close the file.
+         (Christos Zoulas) <christos@zoulas.com>
+
+       * add gettext message catalogue support
+         (Michael Piefel) <piefel@debian.org>
+
+       * better printout for unreadable files
+         (Michael Piefel) <piefel@debian.org>
+
+       * compensate for missing MAXPATHLEN
+         (Michael Piefel) <piefel@debian.org>
+
+       * add wide character string length computation
+         (Michael Piefel) <piefel@debian.org>
+
+       * Avoid infinite loops caused by bad elf alignments
+         or name and description note sizes. Reported by
+         (Mikael Magnusson) <mmikael@comhem.se>
+
+2004-03-09 13:55  Christos Zoulas  <christos@zoulas.com>
+
+       * Fix possible memory leak on error and add missing regfree
+         (Dmitry V. Levin) <ldv@altlinux.org>
+
+2003-12-23 12:12  Christos Zoulas  <christos@zoulas.com>
+
+       * fix -k flag (Maciej W. Rozycki)
+
+2003-11-18 14:10  Christos Zoulas  <christos@zoulas.com>
+
+       * Try to give us much info as possible on corrupt elf files.
+         (Willy Tarreau) <willy@w.ods.org>
+       * Updated python bindings (Brett Funderburg)
+          <brettf@deepfile.com>
+
+2003-11-11 15:03  Christos Zoulas  <christos@zoulas.com>
+
+       * Include file.h first, because it includes config.h
+         breaks largefile test macros otherwise.
+         (Paul Eggert <eggert@CS.UCLA.EDU> via
+          Lars Hecking <lhecking@nmrc.ie>)
+
+2003-10-14 21:39  Christos Zoulas  <christos@zoulas.com>
+
+       * Python bindings (Brett Funderburg) <brettf@deepfile.com>
+       * Don't lookup past the end of the buffer
+         (Chad Hanson) <chanson@tcs-sec.com>
+       * Add MAGIC_ERROR and api on magic_errno()
+
+2003-10-08 12:40  Christos Zoulas  <christos@zoulas.com>
+
+       * handle error conditions from compile as fatal
+         (Antti Kantee) <pooka@netbsd.org>
+       * handle magic filename parsing sanely
+       * more magic fixes.
+       * fix a memory leak (Illes Marton) <illes.marton@balabit.hu>
+       * describe magic file handling
+         (Bryan Henderson) <bryanh@giraffe-data.com>
+
+2003-09-12 15:09  Christos Zoulas  <christos@zoulas.com>
+
+       * update magic files.
+       * remove largefile support from file.h; it breaks things on most OS's
+
+2003-08-10 10:25  Christos Zoulas  <christos@zoulas.com>
+
+       * fix unmapping'ing of mmaped files.
+
+2003-07-10 12:03  Christos Zoulas  <christos@zoulas.com>
+
+       * don't exit with -1 on error; always exit 1 (Marty Leisner)
+       * restore utimes code.
+
+2003-06-10 17:03  Christos Zoulas  <christos@zoulas.com>
+
+       * make sure we don't access uninitialized memory.
+       * pass lint
+       * #ifdef __cplusplus in magic.h
+
+2003-05-25 19:23  Christos Zoulas  <christos@zoulas.com>
+
+       * rename cvs magic file to revision to deal with
+         case insensitive filesystems.
+
+2003-05-23 17:03  Christos Zoulas  <christos@zoulas.com>
+
+       * documentation fixes from Michael Piefel <piefel@debian.org>
+       * magic fixes (various)
+       * revert basename magic in .mgc name determination
+       * buffer protection in uncompress,
+         signness issues,
+         close files
+         Maciej W. Rozycki <macro@ds2.pg.gda.pl
+
+2003-04-21 20:12  Christos Zoulas  <christos@zoulas.com>
+
+       * fix zsh magic
+
+2003-04-04 16:59  Christos Zoulas  <christos@zoulas.com>
+
+       * fix operand sort order in string.
+
+2003-04-02 17:30  Christos Zoulas  <christos@zoulas.com>
+
+       * cleanup namespace in magic.h
+
+2003-04-02 13:50  Christos Zoulas  <christos@zoulas.com>
+
+       * Magic additions (Alex Ott)
+       * Fix bug that broke VPATH compilation (Peter Breitenlohner)
+
+2003-03-28 16:03  Christos Zoulas  <christos@zoulas.com>
+
+       * remove packed attribute from magic struct.
+       * make the magic struct properly aligned.
+       * bump version number of compiled files to 2.
+
+2003-03-27 13:10  Christos Zoulas  <christos@zoulas.com>
+
+       * separate tar detection and run it before softmagic.
+       * fix reversed symlink test.
+       * fix version printing.
+       * make separator a string instead of a char.
+       * update manual page and sort options.
+
+2003-03-26 11:00  Christos Zoulas  <christos@zoulas.com>
+
+       * Pass lint
+       * make NULL in magic_file mean stdin
+       * Fix "-" argument to file to pass NULL to magic_file
+       * avoid pointer casts by using memcpy
+       * rename magic_buf -> magic_buffer
+       * keep only the first error
+       * manual page: new sentence, new line
+       * fix typo in api function (magic_buf -> magic_buffer)
diff --git a/contrib/file-4/LEGAL.NOTICE b/contrib/file-4/LEGAL.NOTICE
new file mode 100644 (file)
index 0000000..0c2c719
--- /dev/null
@@ -0,0 +1,29 @@
+$Id: LEGAL.NOTICE,v 1.14 2004/09/11 19:15:56 christos Exp $
+Copyright (c) Ian F. Darwin 1986, 1987, 1989, 1990, 1991, 1992, 1994, 1995.
+Software written by Ian F. Darwin and others;
+maintained 1994-2004 Christos Zoulas.
+
+This software is not subject to any export provision of the United States
+Department of Commerce, and may be exported to any country or planet.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice immediately at the beginning of the file, without modification,
+   this list of conditions, and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
diff --git a/contrib/file-4/MAINT b/contrib/file-4/MAINT
new file mode 100644 (file)
index 0000000..c711117
--- /dev/null
@@ -0,0 +1,33 @@
+$Id: MAINT,v 1.5 2003/03/23 04:36:37 christos Exp $
+
+Maintenance notes:
+
+I am continuing to maintain the file command. I welcome your help,
+but to make my life easier I'd like to request the following:
+
+- Don't change the version numbers!
+
+If your changes are extensive, I will have to work hard to 
+integrate them into my version.  If you check it into SCCS locally,
+the version numbers will likely be kept. IF you check it into RCS
+or CVS locally, please use -k to keep the version numbers, and
+please use branch deltas (1.21.1, 1.21.2, ...).  If you don't do
+this, I will likely be unable to use your changes; life's just too
+short.
+
+- Do not distribute changed versions.
+
+People trying to be helpful occasionally put up their hacked versions
+of the file command for FTP, then the "archie" server finds and publishes
+the hacked version, and people all over the world get copies of it.
+Within a day or two I am getting email from around the world
+asking me why "my" file command won't compile!!! Needless to say this
+detracts from the limited time I have available to work on the actual
+software.  Therefore I ask you again to please NOT distribute
+your changed version.
+
+
+Thank you for your assistance and cooperation.
+
+Christos Zoulas
+christos@astron.com
diff --git a/contrib/file-4/README b/contrib/file-4/README
new file mode 100644 (file)
index 0000000..0e97732
--- /dev/null
@@ -0,0 +1,102 @@
+** README for file(1) Command **
+@(#) $Id: README,v 1.33 2003/05/23 21:31:56 christos Exp $
+
+This is Release 4.x of Ian Darwin's (copyright but distributable)
+file(1) command. This version is the standard "file" command for Linux,
+*BSD, and other systems. (See "patchlevel.h" for the exact release number).
+
+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.
+
+UNIX is a trademark of UNIX System Laboratories.
+
+The prime contributor to Release 3.8 was Guy Harris, who put in megachanges
+including byte-order independence.
+
+The prime contributor to Release 3.0 was Christos Zoulas, who put
+in hundreds of lines of source code changes, including his own
+ANSIfication of the code (I liked my own ANSIfication better, but
+his (__P()) is the "Berkeley standard" way of doing it, and I wanted UCB
+to include the code...), his HP-like "indirection" (a feature of
+the HP file command, I think), and his mods that finally got the
+uncompress (-z) mode finished and working.
+
+This release has compiled in numerous environments; see PORTING
+for a list and problems.
+
+This fine freeware file(1) follows the USG (System V) model of the file
+command, rather than the Research (V7) version or the V7-derived 4.[23]
+Berkeley one. That is, the file /etc/magic contains much of the ritual
+information that is the source of this program's power. My version
+knows a little more magic (including tar archives) than System V; the
+/etc/magic parsing seems to be compatible with the (poorly documented)
+System V /etc/magic format (with one exception; see the man page).
+
+In addition, the /etc/magic file is built from a subdirectory
+for easier(?) maintenance.  I will act as a clearinghouse for
+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.
+
+LEGAL.NOTICE - read this first.
+README - read this second (you are currently reading this file).
+PORTING - read this only if the program won't compile.
+Makefile - read this next, adapt it as needed (particularly
+       the location of the old existing file command and
+       the man page layouts), type "make" to compile, 
+       "make try" to try it out against your old version.
+       Expect some diffs, particularly since your original
+       file(1) may not grok the embedded-space ("\ ") in
+       the current magic file, or may even not use the
+       magic file.
+apprentice.c - parses /etc/magic to learn magic
+ascmagic.c - third & last set of tests, based on hardwired assumptions.
+core - not included in distribution due to mailer limitations.
+debug.c - includes -c printout routine
+file.1 - man page for the command
+magic.4 - man page for the magic file, courtesy Guy Harris.
+       Install as magic.4 on USG and magic.5 on V7 or Berkeley; cf Makefile.
+file.c - main program
+file.h - header file
+fsmagic.c - first set of tests the program runs, based on filesystem info
+is_tar.c, tar.h - knows about tarchives (courtesy John Gilmore).
+magdir - directory of /etc/magic pieces
+       magdir/Makefile - ADJUST THIS FOR YOUR CONFIGURATION
+names.h - header file for ascmagic.c
+softmagic.c - 2nd set of tests, based on /etc/magic
+readelf.[ch] - Stand-alone elf parsing code.
+compress.c - on-the-fly decompression.
+print.c - print results, errors, warnings.
+
+If your gzip sometimes fails to decompress things complaining about a short
+file, apply this patch [which is going to be in the next version of gzip]:
+*** -   Tue Oct 29 02:06:35 1996
+--- util.c      Sun Jul 21 21:51:38 1996
+*** 106,111 ****
+--- 108,114 ----
+  
+      if (insize == 0) {
+        if (eof_ok) return EOF;
++       flush_window();
+        read_error();
+      }
+      bytes_in += (ulg)insize;
+
+E-mail: christos@astron.com
+
+Phone: Do not even think of telephoning me about this program. Send cash first!
+
+Parts of this software were developed at SoftQuad Inc., developers
+of SGML/HTML/XML publishing software, in Toronto, Canada.
+SoftQuad was swallowed up by Corel in 2002
+and does not exist any longer.
+
+From: Kees Zeelenberg
+
+An MS-Windows (Win32) port of File-3.36 is available from
+http://gnuwin32.sourceforge.net/
+File is an implementation of the Unix File(1) command.
+It knows the 'magic number' of several thousands of file types.
diff --git a/contrib/file-4/magic/Header b/contrib/file-4/magic/Header
new file mode 100644 (file)
index 0000000..3ca9b0e
--- /dev/null
@@ -0,0 +1,5 @@
+# Magic
+# Magic data for file(1) command.
+# Machine-generated from src/cmd/file/magdir/*; edit there only!
+# Format is described in magic(files), where:
+# files is 5 on V7 and BSD, 4 on SV, and ?? in the SVID.
diff --git a/contrib/file-4/magic/Localstuff b/contrib/file-4/magic/Localstuff
new file mode 100644 (file)
index 0000000..914d449
--- /dev/null
@@ -0,0 +1,7 @@
+
+#------------------------------------------------------------------------------
+# Localstuff:  file(1) magic for locally observed files
+#
+# $Id: Localstuff,v 1.4 2003/03/23 04:17:27 christos Exp $
+# Add any locally observed files here.  Remember:
+# text if readable, executable if runnable binary, data if unreadable.
diff --git a/contrib/file-4/magic/Magdir/acorn b/contrib/file-4/magic/Magdir/acorn
new file mode 100644 (file)
index 0000000..ad89cc6
--- /dev/null
@@ -0,0 +1,32 @@
+#------------------------------------------------------------------------------
+# acorn:  file(1) magic for files found on Acorn systems
+#
+
+# RISC OS Chunk File Format
+# From RISC OS Programmer's Reference Manual, Appendix D
+# We guess the file type from the type of the first chunk.
+0      lelong          0xc3cbc6c5      RISC OS Chunk data
+>12    string          OBJ_            \b, AOF object
+>12    string          LIB_            \b, ALF library
+
+# RISC OS AIF, contains "SWI OS_Exit" at offset 16.
+16     lelong          0xef000011      RISC OS AIF executable
+
+# RISC OS Draw files
+# From RISC OS Programmer's Reference Manual, Appendix E
+0      string          Draw            RISC OS Draw file data
+
+# RISC OS new format font files
+# From RISC OS Programmer's Reference Manual, Appendix E
+0      string          FONT\0          RISC OS outline font data,
+>5     byte            x               version %d
+0      string          FONT\1          RISC OS 1bpp font data,
+>5     byte            x               version %d
+0      string          FONT\4          RISC OS 4bpp font data
+>5     byte            x               version %d
+
+# RISC OS Music files
+# From RISC OS Programmer's Reference Manual, Appendix E
+0      string          Maestro\r       RISC OS music file
+>8     byte            x               version %d
+
diff --git a/contrib/file-4/magic/Magdir/adi b/contrib/file-4/magic/Magdir/adi
new file mode 100644 (file)
index 0000000..12d7da5
--- /dev/null
@@ -0,0 +1,12 @@
+
+#------------------------------------------------------------------------------
+# adi: file(1) magic for ADi's objects
+# From Gregory McGarry <g.mcgarry@ieee.org>
+#
+0      leshort         0x521c          COFF DSP21k
+>18    lelong          &02             executable,
+>18    lelong          ^02
+>>18   lelong          &01             static object,
+>>18   lelong          ^01             relocatable object,
+>18    lelong          &010            stripped
+>18    lelong          ^010            not stripped
diff --git a/contrib/file-4/magic/Magdir/adventure b/contrib/file-4/magic/Magdir/adventure
new file mode 100644 (file)
index 0000000..fb05cbe
--- /dev/null
@@ -0,0 +1,63 @@
+
+#------------------------------------------------------------------------------
+# adventure: file(1) magic for Adventure game files
+#
+# from Allen Garvin <earendil@faeryland.tamu-commerce.edu>
+# Edited by Dave Chapeskie <dchapes@ddm.on.ca> Jun 28, 1998
+# Edited by Chris Chittleborough <cchittleborough@yahoo.com.au>, March 2002
+#
+# ALAN
+# I assume there are other, lower versions, but these are the only ones I
+# saw in the archive.
+0      beshort 0x0206  ALAN game data
+>2     byte    <10     version 2.6%d
+
+# Conflicts with too much other stuff!
+# Infocom
+# (Note: to avoid false matches Z-machine version 1 and 2 are not
+# recognized since only the oldest Zork I and II used them.  Similarly
+# there are 4 Infocom games that use version 4 that are not recognized.)
+#0     byte    3       Infocom game data (Z-machine 3,
+#>2    beshort <0x7fff Release %3d,
+#>26   beshort >0      Size %d*2
+#>18   string  >\0     Serial %.6s)
+#0     byte    5       Infocom game data (Z-machine 5,
+#>2    beshort <0x7fff Release %3d,
+#>26   beshort >0      Size %d*4
+#>18   string  >\0     Serial %.6s)
+#0     byte    6       Infocom game data (Z-machine 6,
+#>2    beshort <0x7fff Release %3d,
+#>26   beshort >0      Size %d*8
+#>18   string  >\0     Serial %.6s)
+#0     byte    8       Infocom game data (Z-machine 8,
+#>2    beshort <0x7fff Release %3d,
+#>26   beshort >0      Size %d*8
+#>18   string  >\0     Serial %.6s)
+
+# TADS (Text Adventure Development System)
+#  All files are machine-independent (games compile to byte-code) and are tagged
+#  with a version string of the form "V2.<digit>.<digit>\0" (but TADS 3 is
+#  on the way).
+#  Game files start with "TADS2 bin\n\r\032\0" then the compiler version.
+0      string  TADS2\ bin      TADS
+>9     belong  !0x0A0D1A00     game data, CORRUPTED
+>9     belong   0x0A0D1A00
+>>13   string  >\0             %s game data
+#  Resource files start with "TADS2 rsc\n\r\032\0" then the compiler version.
+0      string  TADS2\ rsc      TADS
+>9     belong  !0x0A0D1A00     resource data, CORRUPTED
+>9     belong   0x0A0D1A00
+>>13   string  >\0             %s resource data
+#  Some saved game files start with "TADS2 save/g\n\r\032\0", a little-endian
+#  2-byte length N, the N-char name of the game file *without* a NUL (darn!),
+# "TADS2 save\n\r\032\0" and the interpreter version. 
+0      string  TADS2\ save/g   TADS
+>12    belong  !0x0A0D1A00     saved game data, CORRUPTED
+>12    belong   0x0A0D1A00
+>>(16.s+32) string >\0         %s saved game data
+#  Other saved game files start with "TADS2 save\n\r\032\0" and the interpreter
+#  version.
+0      string  TADS2\ save     TADS
+>10    belong  !0x0A0D1A00     saved game data, CORRUPTED
+>10    belong   0x0A0D1A00
+>>14   string  >\0             %s saved game data
diff --git a/contrib/file-4/magic/Magdir/allegro b/contrib/file-4/magic/Magdir/allegro
new file mode 100644 (file)
index 0000000..41f4ad6
--- /dev/null
@@ -0,0 +1,7 @@
+#------------------------------------------------------------------------------
+# allegro:  file(1) magic for Allegro datafiles
+# Toby Deshane <hac@shoelace.digivill.net>
+#
+0 belong 0x736C6821   Allegro datafile (packed)
+0 belong 0x736C682E   Allegro datafile (not packed/autodetect)
+0 belong 0x736C682B   Allegro datafile (appended exe data)
diff --git a/contrib/file-4/magic/Magdir/alliant b/contrib/file-4/magic/Magdir/alliant
new file mode 100644 (file)
index 0000000..69cf4b4
--- /dev/null
@@ -0,0 +1,17 @@
+
+#------------------------------------------------------------------------------
+# alliant:  file(1) magic for Alliant FX series a.out files
+#
+# If the FX series is the one that had a processor with a 68K-derived
+# instruction set, the "short" should probably become "beshort" and the
+# "long" should probably become "belong".
+# If it's the i860-based one, they should probably become either the
+# big-endian or little-endian versions, depending on the mode they ran
+# the 860 in....
+#
+0      short           0420            0420 Alliant virtual executable
+>2     short           &0x0020         common library
+>16    long            >0              not stripped
+0      short           0421            0421 Alliant compact executable
+>2     short           &0x0020         common library
+>16    long            >0              not stripped
diff --git a/contrib/file-4/magic/Magdir/alpha b/contrib/file-4/magic/Magdir/alpha
new file mode 100644 (file)
index 0000000..c0191fb
--- /dev/null
@@ -0,0 +1,30 @@
+#------------------------------------------------------------------------------
+# alpha architecture description
+#
+
+0      leshort         0603            COFF format alpha
+>22    leshort&030000  !020000         executable
+>24    leshort         0410            pure
+>24    leshort         0413            paged
+>22    leshort&020000  !0              dynamically linked
+>16    lelong          !0              not stripped
+>16    lelong          0               stripped
+>22    leshort&030000  020000          shared library
+>24    leshort         0407            object
+>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>
+#
+# The actual magic number is just "Core", followed by a 2-byte version
+# number; however, treating any file that begins with "Core" as a Digital
+# UNIX core dump file may produce too many false hits, so we include one
+# byte of the version number as well; DU 5.0 appears only to be up to
+# version 2.
+#
+0      string          Core\001        Alpha COFF format core dump (Digital UNIX)
+>24    string          >\0             \b, from '%s'
+0      string          Core\002        Alpha COFF format core dump (Digital UNIX)
+>24    string          >\0             \b, from '%s'
+
diff --git a/contrib/file-4/magic/Magdir/amanda b/contrib/file-4/magic/Magdir/amanda
new file mode 100644 (file)
index 0000000..2b95650
--- /dev/null
@@ -0,0 +1,10 @@
+#------------------------------------------------------------------------------
+# amanda:  file(1) magic for amanda file format
+#
+0      string  AMANDA:\                AMANDA 
+>8     string  TAPESTART\ DATE         tape header file,
+>>23   string  X
+>>>25  string  >\                      Unused %s
+>>23   string  >\                      DATE %s
+>8     string  FILE\                   dump file,
+>>13   string  >\                      DATE %s
diff --git a/contrib/file-4/magic/Magdir/amigaos b/contrib/file-4/magic/Magdir/amigaos
new file mode 100644 (file)
index 0000000..ba2366c
--- /dev/null
@@ -0,0 +1,56 @@
+#------------------------------------------------------------------------------
+# amigaos:  file(1) magic for AmigaOS binary formats:
+
+#
+# From ignatios@cs.uni-bonn.de (Ignatios Souvatzis)
+#
+0      belong          0x000003fa      AmigaOS shared library
+0      belong          0x000003f3      AmigaOS loadseg()ble executable/binary
+0      belong          0x000003e7      AmigaOS object/library data
+#
+0      beshort         0xe310          Amiga Workbench
+>2     beshort         1               
+>>48   byte            1               disk icon
+>>48   byte            2               drawer icon
+>>48   byte            3               tool icon
+>>48   byte            4               project icon
+>>48   byte            5               garbage icon
+>>48   byte            6               device icon
+>>48   byte            7               kickstart icon
+>>48   byte            8               workbench application icon
+>2     beshort         >1              icon, vers. %d
+#
+# various sound formats from the Amiga
+# G=F6tz Waschk <waschk@informatik.uni-rostock.de>
+#
+0      string          FC14            Future Composer 1.4 Module sound file
+0      string          SMOD            Future Composer 1.3 Module sound file
+0      string          AON4artofnoise  Art Of Noise Module sound file
+1      string          MUGICIAN/SOFTEYES Mugician Module sound file
+58     string          SIDMON\ II\ -\ THE      Sidmon 2.0 Module sound file
+0      string          Synth4.0        Synthesis Module sound file
+0      string          ARP.            The Holy Noise Module sound file
+0      string          BeEp\0          JamCracker Module sound file
+0      string          COSO\0          Hippel-COSO Module sound file
+# Too simple (short, pure ASCII, deep), MPi
+#26    string          V.3             Brian Postma's Soundmon Module sound file v3
+#26    string          BPSM            Brian Postma's Soundmon Module sound file v3
+#26    string          V.2             Brian Postma's Soundmon Module sound file v2
+
+# The following are from: "Stefan A. Haubenthal" <polluks@web.de>
+0      beshort         0x0f00          AmigaOS bitmap font
+0      beshort         0x0f03          AmigaOS outline font
+0      belong          0x80001001      AmigaOS outline tag
+0      string          ##\ version     catalog translation
+
+# Amiga disk types
+# 
+0      string          RDSK            Rigid Disk Block
+>160   string          x               on %.24s
+0      string          DOS\0           Amiga DOS disk
+0      string          DOS\1           Amiga FFS disk
+0      string          DOS\2           Amiga Inter DOS disk
+0      string          DOS\3           Amiga Inter FFS disk
+0      string          DOS\4           Amiga Fastdir DOS disk
+0      string          DOS\5           Amiga Fastdir FFS disk
+0      string          KICK            Kickstart disk
diff --git a/contrib/file-4/magic/Magdir/animation b/contrib/file-4/magic/Magdir/animation
new file mode 100644 (file)
index 0000000..c669830
--- /dev/null
@@ -0,0 +1,676 @@
+
+#------------------------------------------------------------------------------
+# animation:  file(1) magic for animation/movie formats
+#
+# animation formats
+# MPEG, FLI, DL originally from vax@ccwf.cc.utexas.edu (VaX#n8)
+# FLC, SGI, Apple originally from Daniel Quinlan (quinlan@yggdrasil.com)
+
+# SGI and Apple formats
+0      string          MOVI            Silicon Graphics movie file
+4       string          moov            Apple QuickTime
+>12     string          mvhd            \b movie (fast start)
+>12     string          mdra            \b URL
+>12     string          cmov            \b movie (fast start, compressed header)
+>12     string          rmra            \b multiple URLs
+4       string          mdat            Apple QuickTime movie (unoptimized)
+4       string          wide            Apple QuickTime movie (unoptimized)
+4       string          skip            Apple QuickTime movie (modified)
+4       string          free            Apple QuickTime movie (modified)
+4       string          idsc            Apple QuickTime image (fast start)
+4       string          idat            Apple QuickTime image (unoptimized)
+4       string          pckg            Apple QuickTime compressed archive
+4      string/B        jP              JPEG 2000 image
+4      string          ftyp            ISO Media
+>8     string          isom            \b, MPEG v4 system, version 1
+>8     string          iso2            \b, MPEG v4 system, part 12 revision
+>8     string          mp41            \b, MPEG v4 system, version 1
+>8     string          mp42            \b, MPEG v4 system, version 2
+>8     string          mp7t            \b, MPEG v4 system, MPEG v7 XML
+>8     string          mp7b            \b, MPEG v4 system, MPEG v7 binary XML
+>8     string/B        jp2             \b, JPEG 2000
+>8     string          3gp             \b, MPEG v4 system, 3GPP
+>>11   byte            4               \b v4 (H.263/AMR GSM 6.10)
+>>11   byte            5               \b v5 (H.263/AMR GSM 6.10)
+>>11   byte            6               \b v6 (ITU H.264/AMR GSM 6.10)
+>8     string          mmp4            \b, MPEG v4 system, 3GPP Mobile
+>8     string          avc1            \b, MPEG v4 system, 3GPP JVT AVC
+>8     string/B        M4A             \b, MPEG v4 system, iTunes AAC-LC
+>8     string/B        M4P             \b, MPEG v4 system, iTunes AES encrypted
+>8     string/B        M4B             \b, MPEG v4 system, iTunes bookmarked
+>8     string/B        qt              \b, Apple QuickTime movie
+
+# MPEG sequences
+# Scans for all common MPEG header start codes
+0        belong             0x00000001     JVT NAL sequence
+>4       byte&0x1F          0x07           \b, H.264 video
+>>5      byte               66             \b, baseline
+>>5      byte               77             \b, main
+>>5      byte               88             \b, extended
+>>7      byte               x              \b @ L %u
+0        belong&0xFFFFFF00  0x00000100     MPEG sequence
+>3       byte               0xBA
+>>4      byte               &0x40          \b, v2, program multiplex
+>>4      byte               ^0x40          \b, v1, system multiplex
+>3       byte               0xBB           \b, v1/2, multiplex (missing pack header)
+>3       byte&0x1F          0x07           \b, H.264 video
+>>4      byte               66             \b, baseline
+>>4      byte               77             \b, main
+>>4      byte               88             \b, extended
+>>6      byte               x              \b @ L %u
+>3       byte               0xB0           \b, v4
+>>5      belong             0x000001B5
+>>>9     byte               &0x80
+>>>>10   byte&0xF0          16             \b, video
+>>>>10   byte&0xF0          32             \b, still texture
+>>>>10   byte&0xF0          48             \b, mesh
+>>>>10   byte&0xF0          64             \b, face
+>>>9     byte&0xF8          8              \b, video
+>>>9     byte&0xF8          16             \b, still texture
+>>>9     byte&0xF8          24             \b, mesh
+>>>9     byte&0xF8          32             \b, face
+>>4      byte               1              \b, simple @ L1
+>>4      byte               2              \b, simple @ L2
+>>4      byte               3              \b, simple @ L3
+>>4      byte               4              \b, simple @ L0
+>>4      byte               17             \b, simple scalable @ L1
+>>4      byte               18             \b, simple scalable @ L2
+>>4      byte               33             \b, core @ L1
+>>4      byte               34             \b, core @ L2
+>>4      byte               50             \b, main @ L2
+>>4      byte               51             \b, main @ L3
+>>4      byte               53             \b, main @ L4
+>>4      byte               66             \b, n-bit @ L2
+>>4      byte               81             \b, scalable texture @ L1
+>>4      byte               97             \b, simple face animation @ L1
+>>4      byte               98             \b, simple face animation @ L2
+>>4      byte               99             \b, simple face basic animation @ L1
+>>4      byte               100            \b, simple face basic animation @ L2
+>>4      byte               113            \b, basic animation text @ L1
+>>4      byte               114            \b, basic animation text @ L2
+>>4      byte               129            \b, hybrid @ L1
+>>4      byte               130            \b, hybrid @ L2
+>>4      byte               145            \b, advanced RT simple @ L!
+>>4      byte               146            \b, advanced RT simple @ L2
+>>4      byte               147            \b, advanced RT simple @ L3
+>>4      byte               148            \b, advanced RT simple @ L4
+>>4      byte               161            \b, core scalable @ L1
+>>4      byte               162            \b, core scalable @ L2
+>>4      byte               163            \b, core scalable @ L3
+>>4      byte               177            \b, advanced coding efficiency @ L1
+>>4      byte               178            \b, advanced coding efficiency @ L2
+>>4      byte               179            \b, advanced coding efficiency @ L3
+>>4      byte               180            \b, advanced coding efficiency @ L4
+>>4      byte               193            \b, advanced core @ L1
+>>4      byte               194            \b, advanced core @ L2
+>>4      byte               209            \b, advanced scalable texture @ L1
+>>4      byte               210            \b, advanced scalable texture @ L2
+>>4      byte               211            \b, advanced scalable texture @ L3
+>>4      byte               225            \b, simple studio @ L1
+>>4      byte               226            \b, simple studio @ L2
+>>4      byte               227            \b, simple studio @ L3
+>>4      byte               228            \b, simple studio @ L4
+>>4      byte               229            \b, core studio @ L1
+>>4      byte               230            \b, core studio @ L2
+>>4      byte               231            \b, core studio @ L3
+>>4      byte               232            \b, core studio @ L4
+>>4      byte               240            \b, advanced simple @ L0
+>>4      byte               241            \b, advanced simple @ L1
+>>4      byte               242            \b, advanced simple @ L2
+>>4      byte               243            \b, advanced simple @ L3
+>>4      byte               244            \b, advanced simple @ L4
+>>4      byte               245            \b, advanced simple @ L5
+>>4      byte               247            \b, advanced simple @ L3b
+>>4      byte               248            \b, FGS @ L0
+>>4      byte               249            \b, FGS @ L1
+>>4      byte               250            \b, FGS @ L2
+>>4      byte               251            \b, FGS @ L3
+>>4      byte               252            \b, FGS @ L4
+>>4      byte               253            \b, FGS @ L5
+>3       byte               0xB5           \b, v4
+>>4      byte               &0x80
+>>>5     byte&0xF0          16             \b, video (missing profile header)
+>>>5     byte&0xF0          32             \b, still texture (missing profile header)
+>>>5     byte&0xF0          48             \b, mesh (missing profile header)
+>>>5     byte&0xF0          64             \b, face (missing profile header)
+>>4      byte&0xF8          8              \b, video (missing profile header)
+>>4      byte&0xF8          16             \b, still texture (missing profile header)
+>>4      byte&0xF8          24             \b, mesh (missing profile header)
+>>4      byte&0xF8          32             \b, face (missing profile header)
+>3       byte               0xB3
+>>12     belong             0x000001B8     \b, v1, progressive Y'CbCr 4:2:0 video
+>>12     belong             0x000001B2     \b, v1, progressive Y'CbCr 4:2:0 video
+>>12     belong             0x000001B5     \b, v2,
+>>>16    byte&0x0F          1              \b HP
+>>>16    byte&0x0F          2              \b Spt
+>>>16    byte&0x0F          3              \b SNR
+>>>16    byte&0x0F          4              \b MP
+>>>16    byte&0x0F          5              \b SP
+>>>17    byte&0xF0          64             \b@HL
+>>>17    byte&0xF0          96             \b@H-14
+>>>17    byte&0xF0          128            \b@ML
+>>>17    byte&0xF0          160            \b@LL
+>>>17    byte               &0x08          \b progressive
+>>>17    byte               ^0x08          \b interlaced
+>>>17    byte&0x06          2              \b Y'CbCr 4:2:0 video
+>>>17    byte&0x06          4              \b Y'CbCr 4:2:2 video
+>>>17    byte&0x06          6              \b Y'CbCr 4:4:4 video
+>>11     byte               &0x02
+>>>75    byte               &0x01
+>>>>140  belong             0x000001B8     \b, v1, progressive Y'CbCr 4:2:0 video
+>>>>140  belong             0x000001B2     \b, v1, progressive Y'CbCr 4:2:0 video
+>>>>140  belong             0x000001B5     \b, v2,
+>>>>>144 byte&0x0F          1              \b HP
+>>>>>144 byte&0x0F          2              \b Spt
+>>>>>144 byte&0x0F          3              \b SNR
+>>>>>144 byte&0x0F          4              \b MP
+>>>>>144 byte&0x0F          5              \b SP
+>>>>>145 byte&0xF0          64             \b@HL
+>>>>>145 byte&0xF0          96             \b@H-14
+>>>>>145 byte&0xF0          128            \b@ML
+>>>>>145 byte&0xF0          160            \b@LL
+>>>>>145 byte               &0x08          \b progressive
+>>>>>145 byte               ^0x08          \b interlaced
+>>>>>145 byte&0x06          2              \b Y'CbCr 4:2:0 video
+>>>>>145 byte&0x06          4              \b Y'CbCr 4:2:2 video
+>>>>>145 byte&0x06          6              \b Y'CbCr 4:4:4 video
+>>76    belong             0x000001B8     \b, v1, progressive Y'CbCr 4:2:0 video
+>>76    belong             0x000001B2     \b, v1, progressive Y'CbCr 4:2:0 video
+>>76    belong             0x000001B5     \b, v2,
+>>>80   byte&0x0F          1              \b HP
+>>>80   byte&0x0F          2              \b Spt
+>>>80   byte&0x0F          3              \b SNR
+>>>80   byte&0x0F          4              \b MP
+>>>80   byte&0x0F          5              \b SP
+>>>81   byte&0xF0          64             \b@HL
+>>>81   byte&0xF0          96             \b@H-14
+>>>81   byte&0xF0          128            \b@ML
+>>>81   byte&0xF0          160            \b@LL
+>>>81   byte               &0x08          \b progressive
+>>>81   byte               ^0x08          \b interlaced
+>>>81   byte&0x06          2              \b Y'CbCr 4:2:0 video
+>>>81   byte&0x06          4              \b Y'CbCr 4:2:2 video
+>>>81   byte&0x06          6              \b Y'CbCr 4:4:4 video
+>>4      belong&0xFFFFFF00  0x78043800     \b, HD-TV 1920P
+>>>7     byte&0xF0          0x10           \b, 16:9
+>>4      belong&0xFFFFFF00  0x50002D00     \b, SD-TV 1280I
+>>>7     byte&0xF0          0x10           \b, 16:9
+>>4      belong&0xFFFFFF00  0x30024000     \b, PAL Capture
+>>>7     byte&0xF0          0x10           \b, 4:3
+>>4      beshort&0xFFF0     0x2C00         \b, 4CIF
+>>>5     beshort&0x0FFF     0x01E0         \b NTSC
+>>>5     beshort&0x0FFF     0x0240         \b PAL
+>>>7     byte&0xF0          0x20           \b, 4:3
+>>>7     byte&0xF0          0x30           \b, 16:9
+>>>7     byte&0xF0          0x40           \b, 11:5
+>>>7     byte&0xF0          0x80           \b, PAL 4:3
+>>>7     byte&0xF0          0xC0           \b, NTSC 4:3
+>>4      belong&0xFFFFFF00  0x2801E000     \b, LD-TV 640P
+>>>7     byte&0xF0          0x10           \b, 4:3
+>>4      belong&0xFFFFFF00  0x1400F000     \b, 320x240
+>>>7     byte&0xF0          0x10           \b, 4:3
+>>4      belong&0xFFFFFF00  0x0F00A000     \b, 240x160
+>>>7     byte&0xF0          0x10           \b, 4:3
+>>4      belong&0xFFFFFF00  0x0A007800     \b, 160x120
+>>>7     byte&0xF0          0x10           \b, 4:3
+>>4      beshort&0xFFF0     0x1600         \b, CIF
+>>>5     beshort&0x0FFF     0x00F0         \b NTSC
+>>>5     beshort&0x0FFF     0x0120         \b PAL
+>>>7     byte&0xF0          0x20           \b, 4:3
+>>>7     byte&0xF0          0x30           \b, 16:9
+>>>7     byte&0xF0          0x40           \b, 11:5
+>>>7     byte&0xF0          0x80           \b, PAL 4:3
+>>>7     byte&0xF0          0xC0           \b, NTSC 4:3
+>>>5     beshort&0x0FFF     0x0240         \b PAL 625
+>>>>7    byte&0xF0          0x20           \b, 4:3
+>>>>7    byte&0xF0          0x30           \b, 16:9
+>>>>7    byte&0xF0          0x40           \b, 11:5
+>>4      beshort&0xFFF0     0x2D00         \b, CCIR/ITU
+>>>5     beshort&0x0FFF     0x01E0         \b NTSC 525
+>>>5     beshort&0x0FFF     0x0240         \b PAL 625
+>>>7     byte&0xF0          0x20           \b, 4:3
+>>>7     byte&0xF0          0x30           \b, 16:9
+>>>7     byte&0xF0          0x40           \b, 11:5
+>>4      beshort&0xFFF0     0x1E00         \b, SVCD
+>>>5     beshort&0x0FFF     0x01E0         \b NTSC 525
+>>>5     beshort&0x0FFF     0x0240         \b PAL 625
+>>>7     byte&0xF0          0x20           \b, 4:3
+>>>7     byte&0xF0          0x30           \b, 16:9
+>>>7     byte&0xF0          0x40           \b, 11:5
+>>7      byte&0x0F          1              \b, 23.976 fps
+>>7      byte&0x0F          2              \b, 24 fps
+>>7      byte&0x0F          3              \b, 25 fps
+>>7      byte&0x0F          4              \b, 29.97 fps
+>>7      byte&0x0F          5              \b, 30 fps
+>>7      byte&0x0F          6              \b, 50 fps
+>>7      byte&0x0F          7              \b, 59.94 fps
+>>7      byte&0x0F          8              \b, 60 fps
+>>11     byte               &0x04          \b, Constrained
+
+# MPEG ADTS Audio (*.mpx/mxa/aac)
+# from dreesen@math.fu-berlin.de
+# modified to fully support MPEG ADTS
+
+# MP3, M1A
+0       beshort&0xFFFE  0xFFFA         MPEG ADTS, layer III, v1
+# rates
+>2      byte&0xF0       0x10           \b,  32 kBits
+>2      byte&0xF0       0x20           \b,  40 kBits
+>2      byte&0xF0       0x30           \b,  48 kBits
+>2      byte&0xF0       0x40           \b,  56 kBits
+>2      byte&0xF0       0x50           \b,  64 kBits
+>2      byte&0xF0       0x60           \b,  80 kBits
+>2      byte&0xF0       0x70           \b,  96 kBits
+>2      byte&0xF0       0x80           \b, 112 kBits
+>2      byte&0xF0       0x90           \b, 128 kBits
+>2      byte&0xF0       0xA0           \b, 160 kBits
+>2      byte&0xF0       0xB0           \b, 192 kBits
+>2      byte&0xF0       0xC0           \b, 224 kBits
+>2      byte&0xF0       0xD0           \b, 256 kBits
+>2      byte&0xF0       0xE0           \b, 320 kBits
+# timing
+>2      byte&0x0C       0x00           \b, 44.1 kHz
+>2      byte&0x0C       0x04           \b, 48 kHz
+>2      byte&0x0C       0x08           \b, 32 kHz
+# channels/options
+>3      byte&0xC0       0x00           \b, Stereo
+>3      byte&0xC0       0x40           \b, JntStereo
+>3      byte&0xC0       0x80           \b, 2x Monaural
+>3      byte&0xC0       0xC0           \b, Monaural
+#>1     byte            ^0x01          \b, Data Verify
+#>2     byte            &0x02          \b, Packet Pad
+#>2     byte            &0x01          \b, Custom Flag
+#>3     byte            &0x08          \b, Copyrighted
+#>3     byte            &0x04          \b, Original Source
+#>3     byte&0x03       1              \b, NR: 50/15 ms
+#>3     byte&0x03       3              \b, NR: CCIT J.17
+
+# MP2, M1A
+0       beshort&0xFFFE  0xFFFC         MPEG ADTS, layer II, v1
+# rates
+>2      byte&0xF0       0x10           \b,  32 kBits
+>2      byte&0xF0       0x20           \b,  48 kBits
+>2      byte&0xF0       0x30           \b,  56 kBits
+>2      byte&0xF0       0x40           \b,  64 kBits
+>2      byte&0xF0       0x50           \b,  80 kBits
+>2      byte&0xF0       0x60           \b,  96 kBits
+>2      byte&0xF0       0x70           \b, 112 kBits
+>2      byte&0xF0       0x80           \b, 128 kBits
+>2      byte&0xF0       0x90           \b, 160 kBits
+>2      byte&0xF0       0xA0           \b, 192 kBits
+>2      byte&0xF0       0xB0           \b, 224 kBits
+>2      byte&0xF0       0xC0           \b, 256 kBits
+>2      byte&0xF0       0xD0           \b, 320 kBits
+>2      byte&0xF0       0xE0           \b, 384 kBits
+# timing
+>2      byte&0x0C       0x00           \b, 44.1 kHz
+>2      byte&0x0C       0x04           \b, 48 kHz
+>2      byte&0x0C       0x08           \b, 32 kHz
+# channels/options
+>3      byte&0xC0       0x00           \b, Stereo
+>3      byte&0xC0       0x40           \b, JntStereo
+>3      byte&0xC0       0x80           \b, 2x Monaural
+>3      byte&0xC0       0xC0           \b, Monaural
+#>1     byte            ^0x01          \b, Data Verify
+#>2     byte            &0x02          \b, Packet Pad
+#>2     byte            &0x01          \b, Custom Flag
+#>3     byte            &0x08          \b, Copyrighted
+#>3     byte            &0x04          \b, Original Source
+#>3     byte&0x03       1              \b, NR: 50/15 ms
+#>3     byte&0x03       3              \b, NR: CCIT J.17
+
+# MPA, M1A
+0       beshort&0xFFFE  0xFFFE         MPEG ADTS, layer I, v1
+# rate
+>2      byte&0xF0       0x10           \b,  32 kBits
+>2      byte&0xF0       0x20           \b,  64 kBits
+>2      byte&0xF0       0x30           \b,  96 kBits
+>2      byte&0xF0       0x40           \b, 128 kBits
+>2      byte&0xF0       0x50           \b, 160 kBits
+>2      byte&0xF0       0x60           \b, 192 kBits
+>2      byte&0xF0       0x70           \b, 224 kBits
+>2      byte&0xF0       0x80           \b, 256 kBits
+>2      byte&0xF0       0x90           \b, 288 kBits
+>2      byte&0xF0       0xA0           \b, 320 kBits
+>2      byte&0xF0       0xB0           \b, 352 kBits
+>2      byte&0xF0       0xC0           \b, 384 kBits
+>2      byte&0xF0       0xD0           \b, 416 kBits
+>2      byte&0xF0       0xE0           \b, 448 kBits
+# timing
+>2      byte&0x0C       0x00           \b, 44.1 kHz
+>2      byte&0x0C       0x04           \b, 48 kHz
+>2      byte&0x0C       0x08           \b, 32 kHz
+# channels/options
+>3      byte&0xC0       0x00           \b, Stereo
+>3      byte&0xC0       0x40           \b, JntStereo
+>3      byte&0xC0       0x80           \b, 2x Monaural
+>3      byte&0xC0       0xC0           \b, Monaural
+#>1     byte            ^0x01          \b, Data Verify
+#>2     byte            &0x02          \b, Packet Pad
+#>2     byte            &0x01          \b, Custom Flag
+#>3     byte            &0x08          \b, Copyrighted
+#>3     byte            &0x04          \b, Original Source
+#>3     byte&0x03       1              \b, NR: 50/15 ms
+#>3     byte&0x03       3              \b, NR: CCIT J.17
+
+# MP3, M2A
+0       beshort&0xFFFE  0xFFF2         MPEG ADTS, layer III, v2
+# rate
+>2      byte&0xF0       0x10           \b,   8 kBits
+>2      byte&0xF0       0x20           \b,  16 kBits
+>2      byte&0xF0       0x30           \b,  24 kBits
+>2      byte&0xF0       0x40           \b,  32 kBits
+>2      byte&0xF0       0x50           \b,  40 kBits
+>2      byte&0xF0       0x60           \b,  48 kBits
+>2      byte&0xF0       0x70           \b,  56 kBits
+>2      byte&0xF0       0x80           \b,  64 kBits
+>2      byte&0xF0       0x90           \b,  80 kBits
+>2      byte&0xF0       0xA0           \b,  96 kBits
+>2      byte&0xF0       0xB0           \b, 112 kBits
+>2      byte&0xF0       0xC0           \b, 128 kBits
+>2      byte&0xF0       0xD0           \b, 144 kBits
+>2      byte&0xF0       0xE0           \b, 160 kBits
+# timing
+>2      byte&0x0C       0x00           \b, 22.05 kHz
+>2      byte&0x0C       0x04           \b, 24 kHz
+>2      byte&0x0C       0x08           \b, 16 kHz
+# channels/options
+>3      byte&0xC0       0x00           \b, Stereo
+>3      byte&0xC0       0x40           \b, JntStereo
+>3      byte&0xC0       0x80           \b, 2x Monaural
+>3      byte&0xC0       0xC0           \b, Monaural
+#>1     byte            ^0x01          \b, Data Verify
+#>2     byte            &0x02          \b, Packet Pad
+#>2     byte            &0x01          \b, Custom Flag
+#>3     byte            &0x08          \b, Copyrighted
+#>3     byte            &0x04          \b, Original Source
+#>3     byte&0x03       1              \b, NR: 50/15 ms
+#>3     byte&0x03       3              \b, NR: CCIT J.17
+
+# MP2, M2A
+0       beshort&0xFFFE  0xFFF4         MPEG ADTS, layer II, v2
+# rate 
+>2      byte&0xF0       0x10           \b,   8 kBits
+>2      byte&0xF0       0x20           \b,  16 kBits 
+>2      byte&0xF0       0x30           \b,  24 kBits
+>2      byte&0xF0       0x40           \b,  32 kBits
+>2      byte&0xF0       0x50           \b,  40 kBits
+>2      byte&0xF0       0x60           \b,  48 kBits
+>2      byte&0xF0       0x70           \b,  56 kBits
+>2      byte&0xF0       0x80           \b,  64 kBits
+>2      byte&0xF0       0x90           \b,  80 kBits
+>2      byte&0xF0       0xA0           \b,  96 kBits
+>2      byte&0xF0       0xB0           \b, 112 kBits
+>2      byte&0xF0       0xC0           \b, 128 kBits
+>2      byte&0xF0       0xD0           \b, 144 kBits
+>2      byte&0xF0       0xE0           \b, 160 kBits
+# timing
+>2      byte&0x0C       0x00           \b, 22.05 kHz
+>2      byte&0x0C       0x04           \b, 24 kHz
+>2      byte&0x0C       0x08           \b, 16 kHz
+# channels/options
+>3      byte&0xC0       0x00           \b, Stereo
+>3      byte&0xC0       0x40           \b, JntStereo
+>3      byte&0xC0       0x80           \b, 2x Monaural
+>3      byte&0xC0       0xC0           \b, Monaural
+#>1     byte            ^0x01          \b, Data Verify
+#>2     byte            &0x02          \b, Packet Pad
+#>2     byte            &0x01          \b, Custom Flag
+#>3     byte            &0x08          \b, Copyrighted
+#>3     byte            &0x04          \b, Original Source
+#>3     byte&0x03       1              \b, NR: 50/15 ms
+#>3     byte&0x03       3              \b, NR: CCIT J.17
+
+# MPA, M2A
+0       beshort&0xFFFE  0xFFF6         MPEG ADTS, layer I, v2
+# rate
+>2      byte&0xF0       0x10           \b,  32 kBits
+>2      byte&0xF0       0x20           \b,  48 kBits
+>2      byte&0xF0       0x30           \b,  56 kBits
+>2      byte&0xF0       0x40           \b,  64 kBits
+>2      byte&0xF0       0x50           \b,  80 kBits
+>2      byte&0xF0       0x60           \b,  96 kBits
+>2      byte&0xF0       0x70           \b, 112 kBits
+>2      byte&0xF0       0x80           \b, 128 kBits
+>2      byte&0xF0       0x90           \b, 144 kBits
+>2      byte&0xF0       0xA0           \b, 160 kBits
+>2      byte&0xF0       0xB0           \b, 176 kBits
+>2      byte&0xF0       0xC0           \b, 192 kBits
+>2      byte&0xF0       0xD0           \b, 224 kBits
+>2      byte&0xF0       0xE0           \b, 256 kBits
+# timing
+>2      byte&0x0C       0x00           \b, 22.05 kHz
+>2      byte&0x0C       0x04           \b, 24 kHz
+>2      byte&0x0C       0x08           \b, 16 kHz
+# channels/options
+>3      byte&0xC0       0x00           \b, Stereo
+>3      byte&0xC0       0x40           \b, JntStereo
+>3      byte&0xC0       0x80           \b, 2x Monaural
+>3      byte&0xC0       0xC0           \b, Monaural
+#>1     byte            ^0x01          \b, Data Verify
+#>2     byte            &0x02          \b, Packet Pad
+#>2     byte            &0x01          \b, Custom Flag
+#>3     byte            &0x08          \b, Copyrighted
+#>3     byte            &0x04          \b, Original Source
+#>3     byte&0x03       1              \b, NR: 50/15 ms
+#>3     byte&0x03       3              \b, NR: CCIT J.17
+
+# MP3, M25A
+0       beshort&0xFFFE  0xFFE2         MPEG ADTS, layer III,  v2.5
+# rate  
+>2      byte&0xF0       0x10           \b,   8 kBits
+>2      byte&0xF0       0x20           \b,  16 kBits
+>2      byte&0xF0       0x30           \b,  24 kBits
+>2      byte&0xF0       0x40           \b,  32 kBits
+>2      byte&0xF0       0x50           \b,  40 kBits
+>2      byte&0xF0       0x60           \b,  48 kBits
+>2      byte&0xF0       0x70           \b,  56 kBits
+>2      byte&0xF0       0x80           \b,  64 kBits
+>2      byte&0xF0       0x90           \b,  80 kBits
+>2      byte&0xF0       0xA0           \b,  96 kBits
+>2      byte&0xF0       0xB0           \b, 112 kBits
+>2      byte&0xF0       0xC0           \b, 128 kBits
+>2      byte&0xF0       0xD0           \b, 144 kBits
+>2      byte&0xF0       0xE0           \b, 160 kBits
+# timing
+>2      byte&0x0C       0x00           \b, 11.025 kHz
+>2      byte&0x0C       0x04           \b, 12 kHz
+>2      byte&0x0C       0x08           \b, 8 kHz
+# channels/options
+>3      byte&0xC0       0x00           \b, Stereo
+>3      byte&0xC0       0x40           \b, JntStereo
+>3      byte&0xC0       0x80           \b, 2x Monaural
+>3      byte&0xC0       0xC0           \b, Monaural
+#>1     byte            ^0x01          \b, Data Verify
+#>2     byte            &0x02          \b, Packet Pad
+#>2     byte            &0x01          \b, Custom Flag
+#>3     byte            &0x08          \b, Copyrighted
+#>3     byte            &0x04          \b, Original Source
+#>3     byte&0x03       1              \b, NR: 50/15 ms
+#>3     byte&0x03       3              \b, NR: CCIT J.17
+
+# AAC (aka MPEG-2 NBC audio) and MPEG-4 audio
+
+# Stored AAC streams (instead of the MP4 format)
+0       string          ADIF           MPEG ADIF, AAC
+>4      byte            &0x80
+>>13    byte            &0x10          \b, VBR
+>>13    byte            ^0x10          \b, CBR
+>>16    byte&0x1E       0x02           \b, single stream
+>>16    byte&0x1E       0x04           \b, 2 streams
+>>16    byte&0x1E       0x06           \b, 3 streams
+>>16    byte            &0x08          \b, 4 or more streams
+>>16    byte            &0x10          \b, 8 or more streams
+>>4    byte            &0x80          \b, Copyrighted
+>>13   byte            &0x40          \b, Original Source
+>>13   byte            &0x20          \b, Home Flag
+>4      byte            ^0x80
+>>4     byte            &0x10          \b, VBR
+>>4     byte            ^0x10          \b, CBR
+>>7     byte&0x1E       0x02           \b, single stream
+>>7     byte&0x1E       0x04           \b, 2 streams
+>>7     byte&0x1E       0x06           \b, 3 streams
+>>7     byte            &0x08          \b, 4 or more streams
+>>7     byte            &0x10          \b, 8 or more streams
+>>4    byte            &0x40          \b, Original Stream(s)
+>>4    byte            &0x20          \b, Home Source
+
+# Live or stored single AAC stream (used with MPEG-2 systems)
+0       beshort&0xFFF6  0xFFF0         MPEG ADTS, AAC
+>1      byte            &0x08          \b, v2
+>1      byte            ^0x08          \b, v4
+# profile
+>>2     byte            &0xC0          \b LTP
+>2      byte&0xc0       0x00           \b Main
+>2      byte&0xc0       0x40           \b LC
+>2      byte&0xc0       0x80           \b SSR
+# timing
+>2      byte&0x3c       0x00           \b, 96 kHz
+>2      byte&0x3c       0x04           \b, 88.2 kHz
+>2      byte&0x3c       0x08           \b, 64 kHz
+>2      byte&0x3c       0x0c           \b, 48 kHz
+>2      byte&0x3c       0x10           \b, 44.1 kHz
+>2      byte&0x3c       0x14           \b, 32 kHz
+>2      byte&0x3c       0x18           \b, 24 kHz
+>2      byte&0x3c       0x1c           \b, 22.05 kHz
+>2      byte&0x3c       0x20           \b, 16 kHz
+>2      byte&0x3c       0x24           \b, 12 kHz
+>2      byte&0x3c       0x28           \b, 11.025 kHz
+>2      byte&0x3c       0x2c           \b, 8 kHz
+# channels
+>2      beshort&0x01c0  0x0040         \b, monaural
+>2      beshort&0x01c0  0x0080         \b, stereo
+>2      beshort&0x01c0  0x00c0         \b, stereo + center
+>2      beshort&0x01c0  0x0100         \b, stereo+center+LFE
+>2      beshort&0x01c0  0x0140         \b, surround
+>2      beshort&0x01c0  0x0180         \b, surround + LFE
+>2      beshort         &0x01C0        \b, surround + side
+#>1     byte            ^0x01           \b, Data Verify
+#>2     byte            &0x02           \b, Custom Flag
+#>3     byte            &0x20           \b, Original Stream
+#>3     byte            &0x10           \b, Home Source
+#>3     byte            &0x08           \b, Copyrighted
+
+# Live MPEG-4 audio streams (instead of RTP FlexMux)
+0       beshort&0xFFE0  0x56E0         MPEG-4 LOAS
+#>1     beshort&0x1FFF  x              \b, %u byte packet
+>3      byte&0xE0       0x40
+>>4     byte&0x3C       0x04           \b, single stream
+>>4     byte&0x3C       0x08           \b, 2 streams
+>>4     byte&0x3C       0x0C           \b, 3 streams
+>>4     byte            &0x08          \b, 4 or more streams
+>>4     byte            &0x20          \b, 8 or more streams
+>3      byte&0xC0       0
+>>4     byte&0x78       0x08           \b, single stream
+>>4     byte&0x78       0x10           \b, 2 streams
+>>4     byte&0x78       0x18           \b, 3 streams
+>>4     byte            &0x20          \b, 4 or more streams
+>>4     byte            &0x40          \b, 8 or more streams
+0       beshort         0x4DE1         MPEG-4 LO-EP audio stream
+
+# FLI animation format
+4      leshort         0xAF11                  FLI file
+>6     leshort         x                       - %d frames,
+>8     leshort         x                       width=%d pixels,
+>10    leshort         x                       height=%d pixels,
+>12    leshort         x                       depth=%d,
+>16    leshort         x                       ticks/frame=%d
+# FLC animation format
+4      leshort         0xAF12                  FLC file
+>6     leshort         x                       - %d frames
+>8     leshort         x                       width=%d pixels,
+>10    leshort         x                       height=%d pixels,
+>12    leshort         x                       depth=%d,
+>16    leshort         x                       ticks/frame=%d
+
+# DL animation format
+# XXX - collision with most `mips' magic
+#
+# I couldn't find a real magic number for these, however, this
+# -appears- to work.  Note that it might catch other files, too, so be
+# careful!
+#
+# Note that title and author appear in the two 20-byte chunks
+# at decimal offsets 2 and 22, respectively, but they are XOR'ed with
+# 255 (hex FF)!  The DL format is really bad.
+#
+#0     byte    1       DL version 1, medium format (160x100, 4 images/screen)
+#>42   byte    x       - %d screens,
+#>43   byte    x       %d commands
+#0     byte    2       DL version 2
+#>1    byte    1       - large format (320x200,1 image/screen),
+#>1    byte    2       - medium format (160x100,4 images/screen),
+#>1    byte    >2      - unknown format,
+#>42   byte    x       %d screens,
+#>43   byte    x       %d commands
+# Based on empirical evidence, DL version 3 have several nulls following the
+# \003.  Most of them start with non-null values at hex offset 0x34 or so.
+#0     string  \3\0\0\0\0\0\0\0\0\0\0\0        DL version 3
+
+# 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
+# priority      1 bit  -
+# 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
+
+# DIF digital video file format <mpruett@sgi.com>
+0      belong&0xffffff00       0x1f070000      DIF
+>4     byte                    &0x01           (DVCPRO) movie file
+>4     byte                    ^0x01           (DV) movie file
+>3     byte                    &0x80           (PAL)
+>3     byte                    ^0x80           (NTSC)
+
+# Microsoft Advanced Streaming Format (ASF) <mpruett@sgi.com>
+0      belong                  0x3026b275      Microsoft ASF
+
+# MNG Video Format, <URL:http://www.libpng.org/pub/mng/spec/>
+0      string                  \x8aMNG         MNG video data,
+>4     belong                  !0x0d0a1a0a     CORRUPTED,
+>4     belong                  0x0d0a1a0a
+>>16    belong x                               %ld x
+>>20    belong x                               %ld
+
+# JNG Video Format, <URL:http://www.libpng.org/pub/mng/spec/>
+0      string                  \x8bJNG         JNG video data,
+>4     belong                  !0x0d0a1a0a     CORRUPTED,
+>4     belong                  0x0d0a1a0a
+>>16    belong x                               %ld x
+>>20    belong x                               %ld
+
+# Vivo video (Wolfram Kleff)
+3      string          \x0D\x0AVersion:Vivo    Vivo video data
+
+# VRML (Virtual Reality Modelling Language)
+0       string/b        #VRML\ V1.0\ ascii     VRML 1 file
+0      string/b        #VRML\ V2.0\ utf8       ISO/IEC 14772 VRML 97 file
+
+#---------------------------------------------------------------------------
+# HVQM4: compressed movie format designed by Hudson for Nintendo GameCube
+# From Mark Sheppard <msheppard@climax.co.uk>, 2002-10-03
+#
+0      string          HVQM4           %s
+>6     string          >\0             v%s
+>0     byte            x               GameCube movie,
+>0x34  ubeshort        x               %d x
+>0x36  ubeshort        x               %d,
+>0x26  ubeshort        x               %dµs,
+>0x42  ubeshort        0               no audio
+>0x42  ubeshort        >0              %dHz audio
+
+# From: "Stefan A. Haubenthal" <polluks@web.de>
+0      string          DVDVIDEO-VTS    Video title set,
+>0x21  byte            x               v%x
+0      string          DVDVIDEO-VMG    Video manager,
+>0x21  byte            x               v%x
diff --git a/contrib/file-4/magic/Magdir/apl b/contrib/file-4/magic/Magdir/apl
new file mode 100644 (file)
index 0000000..0400431
--- /dev/null
@@ -0,0 +1,6 @@
+
+#------------------------------------------------------------------------------
+# apl:  file(1) magic for APL (see also "pdp" and "vax" for other APL
+#       workspaces)
+#
+0      long            0100554         APL workspace (Ken's original?)
diff --git a/contrib/file-4/magic/Magdir/apple b/contrib/file-4/magic/Magdir/apple
new file mode 100644 (file)
index 0000000..2b0a290
--- /dev/null
@@ -0,0 +1,150 @@
+
+#------------------------------------------------------------------------------
+# apple:  file(1) magic for Apple file formats
+#
+0      string          FiLeStArTfIlEsTaRt      binscii (apple ][) text
+0      string          \x0aGL                  Binary II (apple ][) data
+0      string          \x76\xff                Squeezed (apple ][) data
+0      string          NuFile                  NuFile archive (apple ][) data
+0      string          N\xf5F\xe9l\xe5         NuFile archive (apple ][) data
+0      belong          0x00051600              AppleSingle encoded Macintosh file
+0      belong          0x00051607              AppleDouble encoded Macintosh file
+
+# magic for Newton PDA package formats
+# from Ruda Moura <ruda@helllabs.org>
+0      string  package0        Newton package, NOS 1.x,
+>12    belong  &0x80000000     AutoRemove,
+>12    belong  &0x40000000     CopyProtect,
+>12    belong  &0x10000000     NoCompression,
+>12    belong  &0x04000000     Relocation,
+>12    belong  &0x02000000     UseFasterCompression,
+>16    belong  x               version %d
+
+0      string  package1        Newton package, NOS 2.x,
+>12    belong  &0x80000000     AutoRemove,
+>12    belong  &0x40000000     CopyProtect,
+>12    belong  &0x10000000     NoCompression,
+>12    belong  &0x04000000     Relocation,
+>12    belong  &0x02000000     UseFasterCompression,
+>16    belong  x               version %d
+
+0      string  package4        Newton package,
+>8     byte    8               NOS 1.x,
+>8     byte    9               NOS 2.x,
+>12    belong  &0x80000000     AutoRemove,
+>12    belong  &0x40000000     CopyProtect,
+>12    belong  &0x10000000     NoCompression,
+
+# The following entries for the Apple II are for files that have
+# been transferred as raw binary data from an Apple, without having
+# been encapsulated by any of the above archivers.
+#
+# In general, Apple II formats are hard to identify because Apple DOS
+# and especially Apple ProDOS have strong typing in the file system and
+# therefore programmers never felt much need to include type information
+# in the files themselves.
+#
+# Eric Fischer <enf@pobox.com>
+
+# AppleWorks word processor:
+#
+# This matches the standard tab stops for an AppleWorks file, but if
+# a file has a tab stop set in the first four columns this will fail.
+#
+# The "O" is really the magic number, but that's so common that it's
+# necessary to check the tab stops that follow it to avoid false positives.
+
+4       string          O====   AppleWorks word processor data
+>85     byte&0x01       >0      \b, zoomed
+>90     byte&0x01       >0      \b, paginated
+>92     byte&0x01       >0      \b, with mail merge
+#>91    byte            x       \b, left margin %d
+
+# AppleWorks database:
+#
+# This isn't really a magic number, but it's the closest thing to one
+# that I could find.  The 1 and 2 really mean "order in which you defined
+# categories" and "left to right, top to bottom," respectively; the D and R
+# mean that the cursor should move either down or right when you press Return.
+
+#30    string          \x01D   AppleWorks database data
+#30    string          \x02D   AppleWorks database data
+#30    string          \x01R   AppleWorks database data
+#30    string          \x02R   AppleWorks database data
+
+# AppleWorks spreadsheet:
+#
+# Likewise, this isn't really meant as a magic number.  The R or C means
+# row- or column-order recalculation; the A or M means automatic or manual
+# recalculation.
+
+#131   string          RA      AppleWorks spreadsheet data
+#131   string          RM      AppleWorks spreadsheet data
+#131   string          CA      AppleWorks spreadsheet data
+#131   string          CM      AppleWorks spreadsheet data
+
+# Applesoft BASIC:
+#
+# 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.
+
+0       belong&0xff00ff 0x80000 Applesoft BASIC program data
+#>2     leshort         x       \b, first line number %d
+
+# ORCA/EZ assembler:
+# 
+# This will not identify ORCA/M source files, since those have
+# some sort of date code instead of the two zero bytes at 6 and 7
+# XXX Conflicts with ELF
+#4       belong&0xff00ffff       0x01000000      ORCA/EZ assembler source data
+#>5      byte                    x               \b, build number %d
+
+# Broderbund Fantavision
+#
+# I don't know what these values really mean, but they seem to recur.
+# Will they cause too many conflicts?
+
+# Probably :-)
+#2     belong&0xFF00FF         0x040008        Fantavision movie data
+
+# Some attempts at images.
+#
+# These are actually just bit-for-bit dumps of the frame buffer, so
+# there's really no reasonably way to distinguish them except for their
+# address (if preserved) -- 8192 or 16384 -- and their length -- 8192
+# or, occasionally, 8184.
+#
+# Nevertheless this will manage to catch a lot of images that happen
+# to have a solid-colored line at the bottom of the screen.
+
+8144   string  \x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F        Apple II image with white background
+8144   string  \x55\x2A\x55\x2A\x55\x2A\x55\x2A        Apple II image with purple background
+8144   string  \x2A\x55\x2A\x55\x2A\x55\x2A\x55        Apple II image with green background
+8144   string  \xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA        Apple II image with blue background
+8144   string  \xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5        Apple II image with orange background
+
+# Beagle Bros. Apple Mechanic fonts
+
+0      belong&0xFF00FFFF       0x6400D000      Apple Mechanic font
+
+# Apple Universal Disk Image Format (UDIF) - dmg files.
+# From Johan Gade.
+# These entries are disabled for now until we fix the following issues.
+#
+# Note there might be some problems with the "VAX COFF executable" 
+# entry. Note this entry should be placed before the mac filesystem section, 
+# particularly the "Apple Partition data" entry.
+#
+# The intended meaning of these tests is, that the file is only of the 
+# specified type if both of the lines are correct - i.e. if the first
+# line matches and the second doesn't then it is not of that type.
+#
+#0     long    0x7801730d
+#>4    long    0x62626060      UDIF read-only zlib-compressed image (UDZO)
+#
+# Note that this entry is recognized correctly by the "Apple Partition 
+# data" entry - however since this entry is more specific - this
+# information seems to be more useful.
+#0     long    0x45520200
+#>0x410        string  disk\ image     UDIF read/write image (UDRW)
diff --git a/contrib/file-4/magic/Magdir/applix b/contrib/file-4/magic/Magdir/applix
new file mode 100644 (file)
index 0000000..9d348d1
--- /dev/null
@@ -0,0 +1,12 @@
+
+#------------------------------------------------------------------------------
+# applix:  file(1) magic for Applixware
+# From: Peter Soos <sp@osb.hu>
+#
+0      string          *BEGIN          Applixware
+>7     string          WORDS                   Words Document
+>7     string          GRAPHICS                Graphic
+>7     string          RASTER                  Bitmap
+>7     string          SPREADSHEETS            Spreadsheet
+>7     string          MACRO                   Macro
+>7     string          BUILDER                 Builder Object
diff --git a/contrib/file-4/magic/Magdir/archive b/contrib/file-4/magic/Magdir/archive
new file mode 100644 (file)
index 0000000..f545bd8
--- /dev/null
@@ -0,0 +1,325 @@
+
+#------------------------------------------------------------------------------
+# archive:  file(1) magic for archive formats (see also "msdos" for self-
+#           extracting compressed archives)
+#
+# cpio, ar, arc, arj, hpack, lha/lharc, rar, squish, uc2, zip, zoo, etc.
+# pre-POSIX "tar" archives are handled in the C code.
+
+# POSIX tar archives
+257    string          ustar\0         POSIX tar archive
+257    string          ustar\040\040\0 GNU tar archive
+
+# cpio archives
+#
+# Yes, the top two "cpio archive" formats *are* supposed to just be "short".
+# The idea is to indicate archives produced on machines with the same
+# byte order as the machine running "file" with "cpio archive", and
+# to indicate archives produced on machines with the opposite byte order
+# from the machine running "file" with "byte-swapped cpio archive".
+#
+# The SVR4 "cpio(4)" hints that there are additional formats, but they
+# are defined as "short"s; I think all the new formats are
+# character-header formats and thus are strings, not numbers.
+0      short           070707          cpio archive
+0      short           0143561         byte-swapped cpio archive
+0      string          070707          ASCII cpio archive (pre-SVR4 or odc)
+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)
+#
+0      string          !<arch>\ndebian
+>8     string          debian-split    part of multipart Debian package
+>8     string          debian-binary   Debian binary package
+>68    string          >\0             (format %s)
+>81    string          bz2             \b, uses bzip2 compression
+>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
+
+# MIPS archive (needs to go before regular portable archives)
+#
+0      string  !<arch>\n__________E    MIPS archive
+>20    string  U                       with MIPS Ucode members
+>21    string  L                       with MIPSEL members
+>21    string  B                       with MIPSEB members
+>19    string  L                       and an EL hash table
+>19    string  B                       and an EB hash table
+>22    string  X                       -- out of date
+
+0      string          -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?
+#
+0      string          !<arch>         current ar 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
+#
+# From "pdp" (but why a 4-byte quantity?)
+#
+0      lelong          0x39bed         PDP-11 old archive
+0      lelong          0x39bee         PDP-11 4.0 archive
+
+# ARC archiver, from Daniel Quinlan (quinlan@yggdrasil.com)
+#
+# The first byte is the magic (0x1a), byte 2 is the compression type for
+# the first file (0x01 through 0x09), and bytes 3 to 15 are the MS-DOS
+# filename of the first file (null terminated).  Since some types collide
+# we only test some types on basis of frequency: 0x08 (83%), 0x09 (5%),
+# 0x02 (5%), 0x03 (3%), 0x04 (2%), 0x06 (2%).  0x01 collides with terminfo.
+0      lelong&0x8080ffff       0x0000081a      ARC archive data, dynamic LZW
+0      lelong&0x8080ffff       0x0000091a      ARC archive data, squashed
+0      lelong&0x8080ffff       0x0000021a      ARC archive data, uncompressed
+0      lelong&0x8080ffff       0x0000031a      ARC archive data, packed
+0      lelong&0x8080ffff       0x0000041a      ARC archive data, squeezed
+0      lelong&0x8080ffff       0x0000061a      ARC archive data, crunched
+
+# Acorn archive formats (Disaster prone simpleton, m91dps@ecs.ox.ac.uk)
+# I can't create either SPARK or ArcFS archives so I have not tested this stuff
+# [GRR:  the original entries collide with ARC, above; replaced with combined
+#  version (not tested)]
+#0     byte            0x1a            RISC OS archive
+#>1    string          archive         (ArcFS format)
+#0     string          \032archive     RISC OS archive (ArcFS format)
+0       string          \032            RISC OS archive (spark format)
+0       string          Archive\000     RISC OS archive (ArcFS format)
+
+# ARJ archiver (jason@jarthur.Claremont.EDU)
+0      leshort         0xea60          ARJ archive data
+>5     byte            x               \b, v%d,
+>8     byte            &0x04           multi-volume,
+>8     byte            &0x10           slash-switched,
+>8     byte            &0x20           backup,
+>34    string          x               original name: %s,
+>7     byte            0               os: MS-DOS
+>7     byte            1               os: PRIMOS
+>7     byte            2               os: Unix
+>7     byte            3               os: Amiga
+>7     byte            4               os: Macintosh
+>7     byte            5               os: OS/2
+>7     byte            6               os: Apple ][ GS
+>7     byte            7               os: Atari ST
+>7     byte            8               os: NeXT
+>7     byte            9               os: VAX/VMS
+>3     byte            >0              %d]
+
+# HA archiver (Greg Roelofs, newt@uchicago.edu)
+# This is a really bad format. A file containing HAWAII will match this...
+#0     string          HA              HA archive data,
+#>2    leshort         =1              1 file,
+#>2    leshort         >1              %u files,
+#>4    byte&0x0f       =0              first is type CPY
+#>4    byte&0x0f       =1              first is type ASC
+#>4    byte&0x0f       =2              first is type HSC
+#>4    byte&0x0f       =0x0e           first is type DIR
+#>4    byte&0x0f       =0x0f           first is type SPECIAL
+
+# HPACK archiver (Peter Gutmann, pgut1@cs.aukuni.ac.nz)
+0      string          HPAK            HPACK archive data
+
+# JAM Archive volume format, by Dmitry.Kohmanyuk@UA.net
+0      string          \351,\001JAM\           JAM archive,
+>7     string          >\0                     version %.4s
+>0x26  byte            =0x27                   -
+>>0x2b string          >\0                     label %.11s,
+>>0x27 lelong          x                       serial %08x,
+>>0x36 string          >\0                     fstype %.8s
+
+# LHARC/LHA archiver (Greg Roelofs, newt@uchicago.edu)
+2      string          -lh0-           LHarc 1.x archive data [lh0]
+2      string          -lh1-           LHarc 1.x archive data [lh1]
+2      string          -lz4-           LHarc 1.x archive data [lz4]
+2      string          -lz5-           LHarc 1.x archive data [lz5]
+#      [never seen any but the last; -lh4- reported in comp.compression:]
+2      string          -lzs-           LHa 2.x? archive data [lzs]
+2      string          -lh\40-         LHa 2.x? archive data [lh ]
+2      string          -lhd-           LHa 2.x? archive data [lhd]
+2      string          -lh2-           LHa 2.x? archive data [lh2]
+2      string          -lh3-           LHa 2.x? archive data [lh3]
+2      string          -lh4-           LHa (2.x) archive data [lh4]
+2      string          -lh5-           LHa (2.x) archive data [lh5]
+2      string          -lh6-           LHa (2.x) archive data [lh6]
+2      string          -lh7-           LHa (2.x) archive data [lh7]
+>20    byte            x               - header level %d
+
+# RAR archiver (Greg Roelofs, newt@uchicago.edu)
+0      string          Rar!            RAR archive data,
+>44    byte            x               v%0x,
+>35    byte            0               os: MS-DOS
+>35    byte            1               os: OS/2
+>35    byte            2               os: Win32
+>35    byte            3               os: Unix
+
+# SQUISH archiver (Greg Roelofs, newt@uchicago.edu)
+0      string          SQSH            squished archive data (Acorn RISCOS)
+
+# UC2 archiver (Greg Roelofs, newt@uchicago.edu)
+# I can't figure out the self-extracting form of these buggers...
+0      string          UC2\x1a         UC2 archive data
+
+# ZIP archives (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu)
+0      string          PK\003\004      Zip archive data
+>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
+
+# Zoo archiver
+20     lelong          0xfdc4a7dc      Zoo archive data
+>4     byte            >48             \b, v%c.
+>>6    byte            >47             \b%c
+>>>7   byte            >47             \b%c
+>32    byte            >0              \b, modify: v%d
+>>33   byte            x               \b.%d+
+>42    lelong          0xfdc4a7dc      \b,
+>>70   byte            >0              extract: v%d
+>>>71  byte            x               \b.%d+
+
+# Shell archives
+10     string          #\ This\ is\ a\ shell\ archive  shell archive text
+
+#
+# LBR. NB: May conflict with the questionable 
+#          "binary Computer Graphics Metafile" format.
+#
+0       string  \0\ \ \ \ \ \ \ \ \ \ \ \0\0    LBR archive data
+#
+# PMA (CP/M derivative of LHA)
+#
+2       string          -pm0-           PMarc archive data [pm0]
+2       string          -pm1-           PMarc archive data [pm1]
+2       string          -pm2-           PMarc archive data [pm2]
+2       string          -pms-           PMarc SFX archive (CP/M, DOS)
+5       string          -pc1-           PopCom compressed executable (CP/M)
+
+# From Rafael Laboissiere <rafael@laboissiere.net>
+# The Project Revision Control System (see
+# http://prcs.sourceforge.net) generates a packaged project
+# file which is recognized by the following entry: 
+0      leshort         0xeb81  PRCS packaged project
+
+# Microsoft cabinets 
+# by David Necas (Yeti) <yeti@physics.muni.cz>
+#0     string  MSCF\0\0\0\0    Microsoft cabinet file data,
+#>25   byte    x               v%d
+#>24   byte    x               \b.%d
+# MPi: All CABs have version 1.3, so this is pointless.
+# Better magic in debian-additions.
+
+# GTKtalog catalogs 
+# by David Necas (Yeti) <yeti@physics.muni.cz>
+4      string  gtktalog\       GTKtalog catalog data,
+>13    string  3               version 3
+>>14   beshort 0x677a          (gzipped)
+>>14   beshort !0x677a         (not gzipped)
+>13    string  >3              version %s
+
+############################################################################
+# Parity archive reconstruction file, the 'par' file format now used on Usenet.
+0       string          PAR\0  PARity archive data
+>48    leshort         =0      - Index file
+>48    leshort         >0      - file number %d
+
+# Felix von Leitner <felix-file@fefe.de>
+0      string  d8:announce     BitTorrent file
+
+# Atari MSA archive - Teemu Hukkanen <tjhukkan@iki.fi>
+0       beshort 0x0e0f          Atari MSA archive data
+>2      beshort x              \b, %d sectors per track
+>4      beshort 0              \b, 1 sided
+>4      beshort 1              \b, 2 sided
+>6      beshort x              \b, starting track: %d
+>8      beshort x              \b, ending track: %d
+
+# Alternate ZIP string (amc@arwen.cs.berkeley.edu)
+0      string  PK00PK\003\004  Zip archive data
+
+# ACE archive (from http://www.wotsit.org/download.asp?f=ace)
+# by Stefan `Sec` Zehl <sec@42.org>
+7      string          **ACE**         ACE compressed archive
+>15    byte    >0              version %d
+>16    byte    =0x00           \b, from MS-DOS
+>16    byte    =0x01           \b, from OS/2
+>16    byte    =0x02           \b, from Win/32
+>16    byte    =0x03           \b, from Unix
+>16    byte    =0x04           \b, from MacOS
+>16    byte    =0x05           \b, from WinNT
+>16    byte    =0x06           \b, from Primos
+>16    byte    =0x07           \b, from AppleGS
+>16    byte    =0x08           \b, from Atari
+>16    byte    =0x09           \b, from Vax/VMS
+>16    byte    =0x0A           \b, from Amiga
+>16    byte    =0x0B           \b, from Next
+>14    byte    x               \b, version %d to extract
+>5     leshort &0x0080         \b, multiple volumes,
+>>17   byte    x               \b (part %d),
+>5     leshort &0x0002         \b, contains comment
+>5     leshort &0x0200         \b, sfx
+>5     leshort &0x0400         \b, small dictionary
+>5     leshort &0x0800         \b, multi-volume
+>5     leshort &0x1000         \b, contains AV-String
+>>30   string\x16*UNREGISTERED\x20VERSION*     (unregistered)
+>5     leshort &0x2000         \b, with recovery record
+>5     leshort &0x4000         \b, locked
+>5     leshort &0x8000         \b, solid
+# Date in MS-DOS format (whatever that is)
+#>18   lelong  x               Created on
+
+# sfArk : compression program for Soundfonts (sf2) by Dirk Jagdmann
+# <doj@cubic.org>
+0x1A   string  sfArk           sfArk compressed Soundfont
+>0x15  string  2
+>>0x1  string  >\0             Version %s
+>>0x2A string  >\0             : %s
+
+# DR-DOS 7.03 Packed File *.??_
+0      string  Packed\ File\  Personal         NetWare Packed File
+>12    string  x                               \b, was "%.12s"
diff --git a/contrib/file-4/magic/Magdir/asterix b/contrib/file-4/magic/Magdir/asterix
new file mode 100644 (file)
index 0000000..d89504a
--- /dev/null
@@ -0,0 +1,17 @@
+
+#------------------------------------------------------------------------------
+# asterix:  file(1) magic for Aster*x; SunOS 5.5.1 gave the 4-character
+# strings as "long" - we assume they're just strings:
+# From: guy@netapp.com (Guy Harris)
+#
+0      string          *STA            Aster*x
+>7     string          WORD                    Words Document
+>7     string          GRAP                    Graphic
+>7     string          SPRE                    Spreadsheet
+>7     string          MACR                    Macro
+0      string          2278            Aster*x Version 2
+>29    byte            0x36                    Words Document
+>29    byte            0x35                    Graphic
+>29    byte            0x32                    Spreadsheet
+>29    byte            0x38                    Macro
+
diff --git a/contrib/file-4/magic/Magdir/att3b b/contrib/file-4/magic/Magdir/att3b
new file mode 100644 (file)
index 0000000..884ad4a
--- /dev/null
@@ -0,0 +1,40 @@
+
+#------------------------------------------------------------------------------
+# att3b:  file(1) magic for AT&T 3B machines
+#
+# The `versions' should be un-commented if they work for you.
+# (Was the problem just one of endianness?)
+#
+# 3B20
+#
+# The 3B20 conflicts with SCCS.
+#0     beshort         0550            3b20 COFF executable
+#>12   belong          >0              not stripped
+#>22   beshort         >0              - version %ld
+#0     beshort         0551            3b20 COFF executable (TV)
+#>12   belong          >0              not stripped
+#>22   beshort         >0              - version %ld
+#
+# WE32K
+#
+0      beshort         0560            WE32000 COFF
+>18    beshort         ^00000020       object
+>18    beshort         &00000020       executable
+>12    belong          >0              not stripped
+>18    beshort         ^00010000       N/A on 3b2/300 w/paging
+>18    beshort         &00020000       32100 required
+>18    beshort         &00040000       and MAU hardware required
+>20    beshort         0407            (impure)
+>20    beshort         0410            (pure)
+>20    beshort         0413            (demand paged)
+>20    beshort         0443            (target shared library)
+>22    beshort         >0              - version %ld
+0      beshort         0561            WE32000 COFF executable (TV)
+>12    belong          >0              not stripped
+#>18   beshort         &00020000       - 32100 required
+#>18   beshort         &00040000       and MAU hardware required
+#>22   beshort         >0              - version %ld
+#
+# core file for 3b2 
+0      string          \000\004\036\212\200    3b2 core file
+>364   string          >\0             of '%s'
diff --git a/contrib/file-4/magic/Magdir/audio b/contrib/file-4/magic/Magdir/audio
new file mode 100644 (file)
index 0000000..ccdf14c
--- /dev/null
@@ -0,0 +1,411 @@
+
+#------------------------------------------------------------------------------
+# audio:  file(1) magic for sound formats (see also "iff")
+#
+# Jan Nicolai Langfeldt (janl@ifi.uio.no), Dan Quinlan (quinlan@yggdrasil.com),
+# and others
+#
+
+# Sun/NeXT audio data
+0      string          .snd            Sun/NeXT audio data:
+>12    belong          1               8-bit ISDN mu-law,
+>12    belong          2               8-bit linear PCM [REF-PCM],
+>12    belong          3               16-bit linear PCM,
+>12    belong          4               24-bit linear PCM,
+>12    belong          5               32-bit linear PCM,
+>12    belong          6               32-bit IEEE floating point,
+>12    belong          7               64-bit IEEE floating point,
+>12    belong          8               Fragmented sample data,
+>12    belong          10              DSP program,
+>12    belong          11              8-bit fixed point,
+>12    belong          12              16-bit fixed point,
+>12    belong          13              24-bit fixed point,
+>12    belong          14              32-bit fixed point,
+>12    belong          18              16-bit linear with emphasis,
+>12    belong          19              16-bit linear compressed,
+>12    belong          20              16-bit linear with emphasis and compression,
+>12    belong          21              Music kit DSP commands,
+>12    belong          23              8-bit ISDN mu-law compressed (CCITT G.721 ADPCM voice data encoding),
+>12    belong          24              compressed (8-bit CCITT G.722 ADPCM)
+>12    belong          25              compressed (3-bit CCITT G.723.3 ADPCM),
+>12    belong          26              compressed (5-bit CCITT G.723.5 ADPCM),
+>12    belong          27              8-bit A-law (CCITT G.711),
+>20    belong          1               mono,
+>20    belong          2               stereo,
+>20    belong          4               quad,
+>16    belong          >0              %d Hz
+
+# DEC systems (e.g. DECstation 5000) use a variant of the Sun/NeXT format
+# that uses little-endian encoding and has a different magic number
+0      lelong          0x0064732E      DEC audio data:
+>12    lelong          1               8-bit ISDN mu-law,
+>12    lelong          2               8-bit linear PCM [REF-PCM],
+>12    lelong          3               16-bit linear PCM,
+>12    lelong          4               24-bit linear PCM,
+>12    lelong          5               32-bit linear PCM,
+>12    lelong          6               32-bit IEEE floating point,
+>12    lelong          7               64-bit IEEE floating point,
+>12    belong          8               Fragmented sample data,
+>12    belong          10              DSP program,
+>12    belong          11              8-bit fixed point,
+>12    belong          12              16-bit fixed point,
+>12    belong          13              24-bit fixed point,
+>12    belong          14              32-bit fixed point,
+>12    belong          18              16-bit linear with emphasis,
+>12    belong          19              16-bit linear compressed,
+>12    belong          20              16-bit linear with emphasis and compression,
+>12    belong          21              Music kit DSP commands,
+>12    lelong          23              8-bit ISDN mu-law compressed (CCITT G.721 ADPCM voice data encoding),
+>12    belong          24              compressed (8-bit CCITT G.722 ADPCM)
+>12    belong          25              compressed (3-bit CCITT G.723.3 ADPCM),
+>12    belong          26              compressed (5-bit CCITT G.723.5 ADPCM),
+>12    belong          27              8-bit A-law (CCITT G.711),
+>20    lelong          1               mono,
+>20    lelong          2               stereo,
+>20    lelong          4               quad,
+>16    lelong          >0              %d Hz
+
+# Creative Labs AUDIO stuff
+0      string  MThd                    Standard MIDI data
+>8     beshort x                       (format %d)
+>10    beshort x                       using %d track
+>10    beshort         >1              \bs
+>12    beshort&0x7fff  x               at 1/%d
+>12    beshort&0x8000  >0              SMPTE
+
+0      string  CTMF                    Creative Music (CMF) data
+0      string  SBI                     SoundBlaster instrument data
+0      string  Creative\ Voice\ File   Creative Labs voice data
+# is this next line right?  it came this way...
+>19    byte    0x1A
+>23    byte    >0                      - version %d
+>22    byte    >0                      \b.%d
+
+# first entry is also the string "NTRK"
+0      belong          0x4e54524b      MultiTrack sound data
+>4     belong          x               - version %ld
+
+# Extended MOD format (*.emd) (Greg Roelofs, newt@uchicago.edu); NOT TESTED
+# [based on posting 940824 by "Dirk/Elastik", husberg@lehtori.cc.tut.fi]
+0      string          EMOD            Extended MOD sound data,
+>4     byte&0xf0       x               version %d
+>4     byte&0x0f       x               \b.%d,
+>45    byte            x               %d instruments
+>83    byte            0               (module)
+>83    byte            1               (song)
+
+# Real Audio (Magic .ra\0375)
+0      belong          0x2e7261fd      RealAudio sound file
+0      string          .RMF            RealMedia file
+
+# MTM/669/FAR/S3M/ULT/XM format checking [Aaron Eppert, aeppert@dialin.ind.net]
+# Oct 31, 1995
+# fixed by <doj@cubic.org> 2003-06-24
+# Too short...
+#0     string          MTM             MultiTracker Module sound file
+#0     string          if              Composer 669 Module sound data
+#0     string          JN              Composer 669 Module sound data (extended format)
+0      string          MAS_U           ULT(imate) Module sound data
+
+#0     string          FAR             Module sound data
+#>4    string          >\15            Title: "%s"
+
+0x2c   string          SCRM            ScreamTracker III Module sound data
+>0     string          >\0             Title: "%s"
+
+# Gravis UltraSound patches
+# From <ache@nagual.ru>
+
+0      string          GF1PATCH110\0ID#000002\0        GUS patch
+0      string          GF1PATCH100\0ID#000002\0        Old GUS patch
+
+#
+# Taken from loader code from mikmod version 2.14
+# by Steve McIntyre (stevem@chiark.greenend.org.uk)
+# <doj@cubic.org> added title printing on 2003-06-24
+0      string  MAS_UTrack_V00
+>14    string  >/0             ultratracker V1.%.1s module sound data
+
+0      string  UN05            MikMod UNI format module sound data
+
+0      string  Extended\ Module: Fasttracker II module sound data
+>17    string  >\0             Title: "%s"
+
+21     string/c        !SCREAM!        Screamtracker 2 module sound data
+21     string  BMOD2STM        Screamtracker 2 module sound data
+1080   string  M.K.            4-channel Protracker module sound data
+>0     string  >\0             Title: "%s"
+1080   string  M!K!            4-channel Protracker module sound data
+>0     string  >\0             Title: "%s"
+1080   string  FLT4            4-channel Startracker module sound data
+>0     string  >\0             Title: "%s"
+1080   string  FLT8            8-channel Startracker module sound data
+>0     string  >\0             Title: "%s"
+1080   string  4CHN            4-channel Fasttracker module sound data
+>0     string  >\0             Title: "%s"
+1080   string  6CHN            6-channel Fasttracker module sound data
+>0     string  >\0             Title: "%s"
+1080   string  8CHN            8-channel Fasttracker module sound data
+>0     string  >\0             Title: "%s"
+1080   string  CD81            8-channel Octalyser module sound data
+>0     string  >\0             Title: "%s"
+1080   string  OKTA            8-channel Oktalyzer module sound data
+>0     string  >\0             Title: "%s"
+# Not good enough.
+#1082  string  CH
+#>1080 string  >/0             %.2s-channel Fasttracker "oktalyzer" module sound data
+1080   string  16CN            16-channel Taketracker module sound data
+>0     string  >\0             Title: "%s"
+1080   string  32CN            32-channel Taketracker module sound data
+>0     string  >\0             Title: "%s"
+
+# TOC sound files -Trevor Johnson <trevor@jpj.net>
+#
+0       string          TOC             TOC sound file
+
+# sidfiles <pooka@iki.fi>
+# added name,author,(c) and new RSID type by <doj@cubic.org> 2003-06-24
+0      string          SIDPLAY\ INFOFILE       Sidplay info file
+
+0      string          PSID                    PlaySID v2.2+ (AMIGA) sidtune
+>4     beshort         >0                      w/ header v%d,
+>14    beshort         =1                      single song,
+>14    beshort         >1                      %d songs,
+>16    beshort         >0                      default song: %d
+>0x16  string          >\0                     name: "%s"
+>0x36  string          >\0                     author: "%s"
+>0x56  string          >\0                     copyright: "%s"
+
+0      string          RSID                    RSID sidtune PlaySID compatible
+>4     beshort         >0                      w/ header v%d,
+>14    beshort         =1                      single song,
+>14    beshort         >1                      %d songs,
+>16    beshort         >0                      default song: %d
+>0x16  string          >\0                     name: "%s"
+>0x36  string          >\0                     author: "%s"
+>0x56  string          >\0                     copyright: "%s"
+
+# IRCAM <mpruett@sgi.com>
+# VAX and MIPS files are little-endian; Sun and NeXT are big-endian
+0      belong          0x64a30100              IRCAM file (VAX)
+0      belong          0x64a30200              IRCAM file (Sun)
+0      belong          0x64a30300              IRCAM file (MIPS little-endian)
+0      belong          0x64a30400              IRCAM file (NeXT)
+
+# NIST SPHERE <mpruett@sgi.com>
+0      string          NIST_1A\n\ \ \ 1024\n   NIST SPHERE file
+
+# Sample Vision <mpruett@sgi.com>
+0      string          SOUND\ SAMPLE\ DATA\    Sample Vision file
+
+# Audio Visual Research <tonigonenstein@users.sourceforge.net>
+0      string          2BIT                    Audio Visual Research file,
+>12    beshort         =0                      mono,
+>12    beshort         =-1                     stereo,
+>14    beshort         x                       %d bits
+>16    beshort         =0                      unsigned,
+>16    beshort         =-1                     signed,
+>22    belong&0x00ffffff       x               %d Hz,
+>18    beshort         =0                      no loop,
+>18    beshort         =-1                     loop,
+>21    ubyte           <=127                   note %d,
+>22    byte            =0                      replay 5.485 KHz
+>22    byte            =1                      replay 8.084 KHz
+>22    byte            =2                      replay 10.971 Khz
+>22    byte            =3                      replay 16.168 Khz
+>22    byte            =4                      replay 21.942 KHz
+>22    byte            =5                      replay 32.336 KHz
+>22    byte            =6                      replay 43.885 KHz
+>22    byte            =7                      replay 47.261 KHz
+
+# SGI SoundTrack <mpruett@sgi.com>
+0      string          _SGI_SoundTrack         SGI SoundTrack project file
+# ID3 version 2 tags <waschk@informatik.uni-rostock.de>
+0      string          ID3     MP3 file with ID3 version 2.
+>3     ubyte   <0xff   \b%d.
+>4     ubyte   <0xff   \b%d tag
+
+# NSF (NES sound file) magic
+0      string          NESM\x1a        NES Sound File
+>14    string          >\0             ("%s" by
+>46    string          >\0             %s, copyright
+>78    string          >\0             %s),
+>5     byte            x               version %d,
+>6     byte            x               %d tracks,
+>122   byte&0x2        =1              dual PAL/NTSC
+>122   byte&0x1        =1              PAL
+>122   byte&0x1        =0              NTSC
+
+# Impuse tracker module (audio/x-it)
+0      string          IMPM            Impulse Tracker module sound data -
+>4     string          >\0             "%s"
+>40    leshort         !0              compatible w/ITv%x
+>42    leshort         !0              created w/ITv%x
+
+# Imago Orpheus module (audio/x-imf)
+60     string          IM10            Imago Orpheus module sound data -
+>0     string          >\0             "%s"
+
+# From <collver1@attbi.com>
+# These are the /etc/magic entries to decode modules, instruments, and
+# samples in Impulse Tracker's native format.
+
+0      string          IMPS            Impulse Tracker Sample
+>18    byte            &2              16 bit
+>18    byte            ^2              8 bit
+>18    byte            &4              stereo
+>18    byte            ^4              mono
+0      string          IMPI            Impulse Tracker Instrument
+>28    leshort         !0              ITv%x
+>30    byte            !0              %d samples
+
+# Yamaha TX Wave:  file(1) magic for Yamaha TX Wave audio files
+# From <collver1@attbi.com>
+0      string          LM8953          Yamaha TX Wave
+>22    byte            0x49            looped
+>22    byte            0xC9            non-looped
+>23    byte            1               33kHz
+>23    byte            2               50kHz
+>23    byte            3               16kHz
+
+# scream tracker:  file(1) magic for Scream Tracker sample files
+#
+# From <collver1@attbi.com>
+76     string          SCRS            Scream Tracker Sample
+>0     byte            1               sample
+>0     byte            2               adlib melody
+>0     byte            >2              adlib drum
+>31    byte            &2              stereo
+>31    byte            ^2              mono
+>31    byte            &4              16bit little endian
+>31    byte            ^4              8bit
+>30    byte            0               unpacked
+>30    byte            1               packed
+
+# audio
+# From: Cory Dikkers <cdikkers@swbell.net>
+0      string          MMD0            MED music file, version 0
+0      string          MMD1            OctaMED Pro music file, version 1
+0      string          MMD3            OctaMED Soundstudio music file, version 3
+0      string          OctaMEDCmpr     OctaMED Soundstudio compressed file
+0      string          MED             MED_Song
+0      string          SymM            Symphonie SymMOD music file
+#
+0      string          THX             AHX version
+>3     byte            =0              1 module data
+>3     byte            =1              2 module data
+#
+0      string          OKTASONG        Oktalyzer module data
+#
+0      string          DIGI\ Booster\ module\0 %s
+>20    byte            >0              %c
+>>21   byte            >0              \b%c
+>>>22  byte            >0              \b%c
+>>>>23 byte            >0              \b%c
+>610   string          >\0             \b, "%s"
+#
+0      string          DBM0            DIGI Booster Pro Module
+>4     byte            >0              V%X.
+>>5    byte            x               \b%02X
+>16    string          >\0             \b, "%s"
+#
+0      string          FTMN            FaceTheMusic module
+>16    string          >\0d            \b, "%s"
+
+# From: <doj@cubic.org> 2003-06-24
+0      string          AMShdr\32       Velvet Studio AMS Module v2.2
+0      string          Extreme         Extreme Tracker AMS Module v1.3
+0      string          DDMF            Xtracker DMF Module
+>4     byte            x               v%i
+>0xD   string          >\0             Title: "%s"
+>0x2B  string          >\0             Composer: "%s"
+0      string          DSM\32          Dynamic Studio Module DSM
+0      string          SONG            DigiTrekker DTM Module
+0      string          DMDL            DigiTrakker MDL Module
+0      string          PSM\32          Protracker Studio PSM Module
+44     string          PTMF            Poly Tracker PTM Module
+>0     string          >\32            Title: "%s"
+0      string          MT20            MadTracker 2.0 Module MT2
+0      string          RAD\40by\40REALiTY!! RAD Adlib Tracker Module RAD
+0      string          RTMM            RTM Module
+0x426  string          MaDoKaN96       XMS Adlib Module
+>0     string          >\0             Composer: "%s"
+0      string          AMF             AMF Module
+>4     string          >\0             Title: "%s"
+0      string          MODINFO1        Open Cubic Player Module Inforation MDZ
+0      string          Extended\40Instrument: Fast Tracker II Instrument
+
+# From: Takeshi Hamasaki <hma@syd.odn.ne.jp>
+# NOA Nancy Codec file
+0      string          \210NOA\015\012\032     NOA Nancy Codec Movie file
+# Yamaha SMAF format
+0      string          MMMD            Yamaha SMAF file
+# Sharp Jisaku Melody format for PDC
+0      string          \001Sharp\040JisakuMelody       SHARP Cell-Phone ringing Melody
+>20    string          Ver01.00        Ver. 1.00
+>>32   byte            x               , %d tracks
+
+# Free lossless audio codec <http://flac.sourceforge.net>
+# From: Przemyslaw Augustyniak <silvathraec@rpg.pl>
+0      string                  fLaC            FLAC audio bitstream data
+>4     byte&0x7f               >0              \b, unknown version
+>4     byte&0x7f               0               \b
+# some common bits/sample values
+>>20   beshort&0x1f0           0x030           \b, 4 bit
+>>20   beshort&0x1f0           0x050           \b, 6 bit
+>>20   beshort&0x1f0           0x070           \b, 8 bit
+>>20   beshort&0x1f0           0x0b0           \b, 12 bit
+>>20   beshort&0x1f0           0x0f0           \b, 16 bit
+>>20   beshort&0x1f0           0x170           \b, 24 bit
+>>20   byte&0xe                0x0             \b, mono
+>>20   byte&0xe                0x2             \b, stereo
+>>20   byte&0xe                0x4             \b, 3 channels
+>>20   byte&0xe                0x6             \b, 4 channels
+>>20   byte&0xe                0x8             \b, 5 channels
+>>20   byte&0xe                0xa             \b, 6 channels
+>>20   byte&0xe                0xc             \b, 7 channels
+>>20   byte&0xe                0xe             \b, 8 channels
+# some common sample rates
+>>17   belong&0xfffff0         0x0ac440        \b, 44.1 kHz
+>>17   belong&0xfffff0         0x0bb800        \b, 48 kHz
+>>17   belong&0xfffff0         0x07d000        \b, 32 kHz
+>>17   belong&0xfffff0         0x056220        \b, 22.05 kHz
+>>17   belong&0xfffff0         0x05dc00        \b, 24 kHz
+>>17   belong&0xfffff0         0x03e800        \b, 16 kHz
+>>17   belong&0xfffff0         0x02b110        \b, 11.025 kHz
+>>17   belong&0xfffff0         0x02ee00        \b, 12 kHz
+>>17   belong&0xfffff0         0x01f400        \b, 8 kHz
+>>17   belong&0xfffff0         0x177000        \b, 96 kHz
+>>17   belong&0xfffff0         0x0fa000        \b, 64 kHz
+>>21   byte&0xf                >0              \b, >4G samples
+>>21   byte&0xf                0               \b
+>>>22  belong                  >0              \b, %u samples
+>>>22  belong                  0               \b, length unknown
+
+# (ISDN) VBOX voice message file (Wolfram Kleff)
+0       string          VBOX            VBOX voice message data
+
+# ReBorn Song Files (.rbs)
+# David J. Singer <doc@deadvirgins.org.uk>
+8       string          RB40             RBS Song file
+>29     string          ReBorn           created by ReBorn
+>37     string          Propellerhead    created by ReBirth
+
+# Synthesizer Generator and Kimwitu share their file format
+0      string          A#S#C#S#S#L#V#3     Synthesizer Generator or Kimwitu data
+# Kimwitu++ uses a slightly different magic
+0      string          A#S#C#S#S#L#HUB     Kimwitu++ data
+
+# From "Simon Hosie
+0       string  TFMX-SONG       TFMX module sound data
+
+# From danny.milo@gmx.net (Danny Milosavljevic)
+# monkeysaudio for magic.mime
+0      string  MAC\    X/Monkey audio,
+>4     leshort >0      version %d,
+>6     leshort >0      compression level %d,
+>8     leshort >0      flags %x,
+>10    leshort >0      channels %d,
+>12    lelong  >0      samplerate %d,
+>24    lelong  >0      frames %d
+
diff --git a/contrib/file-4/magic/Magdir/bFLT b/contrib/file-4/magic/Magdir/bFLT
new file mode 100644 (file)
index 0000000..5e288d1
--- /dev/null
@@ -0,0 +1,12 @@
+#------------------------------------------------------------------------------
+# bFLT: file(1) magic for BFLT uclinux binary files
+#
+# From Philippe De Muyter <phdm@macqel.be>
+#
+0      string          bFLT            BFLT executable
+>4     belong          x               - version %ld
+>4     belong          4
+>>36   belong&0x1      0x1             ram
+>>36   belong&0x2      0x2             gotpic
+>>36   belong&0x4      0x4             gzip
+>>36   belong&0x8      0x8             gzdata
diff --git a/contrib/file-4/magic/Magdir/blender b/contrib/file-4/magic/Magdir/blender
new file mode 100644 (file)
index 0000000..01d4e54
--- /dev/null
@@ -0,0 +1,17 @@
+#------------------------------------------------------------------------------
+# blender: file(1) magic for Blender 3D data files
+#
+# Coded by Guillermo S. Romero <gsromero@alumnos.euitt.upm.es> using the
+# data from Ton Roosendaal <ton@blender.nl>. Ton or his company do not
+# support the rule, so mail GSR if problems with it. Rule version: 1.1.
+# You can get latest version with comments and details about the format
+# at http://acd.asoc.euitt.upm.es/~gsromero/3d/blender/magic.blender
+
+0      string  =BLENDER        Blender3D,
+>7     string  =_              saved as 32-bits
+>7      string =-              saved as 64-bits
+>8     string  =v              little endian
+>8     string  =V              big endian
+>9     byte    x               with version %c.
+>10    byte    x               \b%c
+>11    byte    x               \b%c
diff --git a/contrib/file-4/magic/Magdir/blit b/contrib/file-4/magic/Magdir/blit
new file mode 100644 (file)
index 0000000..7a470ed
--- /dev/null
@@ -0,0 +1,19 @@
+
+#------------------------------------------------------------------------------
+# blit:  file(1) magic for 68K Blit stuff as seen from 680x0 machine
+#
+# Note that this 0407 conflicts with several other a.out formats...
+#
+# XXX - should this be redone with "be" and "le", so that it works on
+# little-endian machines as well?  If so, what's the deal with
+# "VAX-order" and "VAX-order2"?
+#
+#0     long            0407            68K Blit (standalone) executable
+#0     short           0407            VAX-order2 68K Blit (standalone) executable
+0      short           03401           VAX-order 68K Blit (standalone) executable
+0      long            0406            68k Blit mpx/mux executable
+0      short           0406            VAX-order2 68k Blit mpx/mux executable
+0      short           03001           VAX-order 68k Blit mpx/mux executable
+# Need more values for WE32 DMD executables.
+# Note that 0520 is the same as COFF
+#0     short           0520            tty630 layers executable
diff --git a/contrib/file-4/magic/Magdir/bout b/contrib/file-4/magic/Magdir/bout
new file mode 100644 (file)
index 0000000..ab771fe
--- /dev/null
@@ -0,0 +1,9 @@
+#
+# i80960 b.out objects and archives
+#
+0      long            0x10d           i960 b.out relocatable object
+>16    long            >0              not stripped
+#
+# b.out archive (hp-rt on i960)
+0      string          !<bout>         b.out archive
+>8     string          __.SYMDEF       random library
diff --git a/contrib/file-4/magic/Magdir/bsdi b/contrib/file-4/magic/Magdir/bsdi
new file mode 100644 (file)
index 0000000..ad54759
--- /dev/null
@@ -0,0 +1,41 @@
+#------------------------------------------------------------------------------
+# bsdi:  file(1) magic for BSD/OS (from BSDI) objects
+#
+
+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
+>>20   belong          <4096           shared library
+>>20   belong          =4096           dynamically linked executable
+>>20   belong          >4096           dynamically linked executable
+>0     byte            ^0x80           executable
+>16    belong          >0              not stripped
+>36    belong          0xb4100001      (uses shared libs)
+
+0      belong&077777777        0600410         sparc pure
+>0     byte            &0x80           dynamically linked executable
+>0     byte            ^0x80           executable
+>16    belong          >0              not stripped
+>36    belong          0xb4100001      (uses shared libs)
+
+0      belong&077777777        0600407         sparc
+>0     byte            &0x80           dynamically linked executable
+>0     byte            ^0x80           executable
+>16    belong          >0              not stripped
+>36    belong          0xb4100001      (uses shared libs)
diff --git a/contrib/file-4/magic/Magdir/c-lang b/contrib/file-4/magic/Magdir/c-lang
new file mode 100644 (file)
index 0000000..1dcf636
--- /dev/null
@@ -0,0 +1,24 @@
+
+#------------------------------------------------------------------------------
+# c-lang:  file(1) magic for C programs (or REXX)
+#
+
+# XPM icons (Greg Roelofs, newt@uchicago.edu)
+# if you uncomment "/*" for C/REXX below, also uncomment this entry
+#0     string          /*\ XPM\ */     X pixmap image data
+
+# this first will upset you if you're a PL/1 shop...
+# in which case rm it; ascmagic will catch real C programs
+#0     string          /*              C or REXX program text
+#0     string          //              C++ program text
+
+# From: Mikhail Teterin <mi@aldan.algebra.com> 
+0      string          cscope          cscope reference data
+>7     string          x               version %.2s
+# We skip the path here, because it is often long (so file will
+# truncate it) and mostly redundant.
+# The inverted index functionality was added some time betwen
+# versions 11 and 15, so look for -q if version is above 14:
+>7     string          >14
+>>10   regex           .+\ -q\         with inverted index
+>10    regex           .+\ -c\         text (non-compressed)
diff --git a/contrib/file-4/magic/Magdir/c64 b/contrib/file-4/magic/Magdir/c64
new file mode 100644 (file)
index 0000000..4ca143f
--- /dev/null
@@ -0,0 +1,27 @@
+
+#------------------------------------------------------------------------------
+# c64:  file(1) magic for various commodore 64 related files
+#
+# From <doj@cubic.org>
+
+0x16500        belong          0x12014100      D64 Image
+0x16500        belong          0x12014180      D71 Image
+0x61800 belong         0x28034400      D81 Image
+0      string          C64\40CARTRIDGE CCS C64 Emultar Cartridge Image
+0      belong          0x43154164      X64 Image
+
+0      string          GCR-1541        GCR Image
+>8     byte            x               version: $i
+>9     byte            x               tracks: %i
+
+9      string          PSUR            ARC archive (c64)
+2      string          -LH1-           LHA archive (c64)
+
+0      string          C64File         PC64 Emulator file
+>8     string          >\0             "%s"
+0      string          C64Image        PC64 Freezer Image
+
+0      beshort         0x38CD          C64 PCLink Image
+0      string          CBM\144\0\0     Power 64 C64 Emulator Snapshot
+
+0      belong          0xFF424CFF      WRAptor packer (c64)
diff --git a/contrib/file-4/magic/Magdir/cad b/contrib/file-4/magic/Magdir/cad
new file mode 100644 (file)
index 0000000..92aa837
--- /dev/null
@@ -0,0 +1,36 @@
+
+#------------------------------------------------------------------------------
+# 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)
+# Written October 30, 2003 by Lester Hightower
+# DGN is the default file extension of Microstation/Intergraph CAD files.
+# CIT is the proprietary raster format (similar to TIFF) used to attach
+# raster underlays to Microstation DGN (vector) drawings.
+# 
+# http://www.wotsit.org/search.asp
+# http://filext.com/detaillist.php?extdetail=DGN
+# http://filext.com/detaillist.php?extdetail=CIT
+#
+# http://www.bentley.com/products/default.cfm?objectid=97F351F5-9C35-4E5E-89C2
+# 3F86C928&method=display&p_objectid=97F351F5-9C35-4E5E-89C280A93F86C928
+# http://www.bentley.com/products/default.cfm?objectid=A5C2FD43-3AC9-4C71-B682
+# 721C479F&method=display&p_objectid=A5C2FD43-3AC9-4C71-B682C7BE721C479F
+0      string         \010\011\376                        Microstation
+>3     string         \002
+>>30   string         \372\104                            DGN File
+>>30   string         \172\104                            DGN File
+>>30   string         \026\105                            DGN File
+>4     string         \030\000\000                        CIT File
+
+# AutoCad, from Nahuel Greco
+0      string AC1012   AutoCad (release 12)
+0      string AC1014   AutoCad (release 14)
diff --git a/contrib/file-4/magic/Magdir/cddb b/contrib/file-4/magic/Magdir/cddb
new file mode 100644 (file)
index 0000000..2ea97ee
--- /dev/null
@@ -0,0 +1,11 @@
+
+#------------------------------------------------------------------------------
+# CDDB: file(1) magic for CDDB(tm) format CD text data files
+#
+# From <steve@gracenote.com>
+#
+# This is the /etc/magic entry to decode datafiles as used by
+# CDDB-enabled CD player applications.
+#
+
+0       string/b        #\040xmcd               CDDB(tm) format CD text data
diff --git a/contrib/file-4/magic/Magdir/chi b/contrib/file-4/magic/Magdir/chi
new file mode 100644 (file)
index 0000000..ee450f5
--- /dev/null
@@ -0,0 +1,7 @@
+
+#------------------------------------------------------------------------------
+# chi:  file(1) magic for ChiWriter files
+#
+0       string          \\1cw\          ChiWriter file
+>5      string          >\0             version %s
+0       string          \\1cw           ChiWriter file
diff --git a/contrib/file-4/magic/Magdir/chord b/contrib/file-4/magic/Magdir/chord
new file mode 100644 (file)
index 0000000..3639f3c
--- /dev/null
@@ -0,0 +1,9 @@
+
+#------------------------------------------------------------------------------
+# chord: file(1) magic for Chord music sheet typesetting utility input files
+#
+# From Philippe De Muyter <phdm@macqel.be>
+# File format is actually free, but many distributed files begin with `{title'
+#
+0      string          {title          Chord text file
+
diff --git a/contrib/file-4/magic/Magdir/cisco b/contrib/file-4/magic/Magdir/cisco
new file mode 100644 (file)
index 0000000..77e3efb
--- /dev/null
@@ -0,0 +1,10 @@
+#------------------------------------------------------------------------------
+# cisco:  file(1) magic for cisco Systems routers
+#
+# Most cisco file-formats are covered by the generic elf code
+#
+# Microcode files are non-ELF, 0x8501 conflicts with NetBSD/alpha.
+0      belong&0xffffff00       0x85011400  cisco IOS microcode
+>7     string          >\0                 for '%s'
+0      belong&0xffffff00       0x8501cb00  cisco IOS experimental microcode
+>7     string          >\0                 for '%s'
diff --git a/contrib/file-4/magic/Magdir/citrus b/contrib/file-4/magic/Magdir/citrus
new file mode 100644 (file)
index 0000000..6d44794
--- /dev/null
@@ -0,0 +1,6 @@
+#------------------------------------------------------------------------------
+# citrus locale declaration
+#
+
+0      string          RuneCT          Citrus locale declaration for LC_CTYPE
+
diff --git a/contrib/file-4/magic/Magdir/claris b/contrib/file-4/magic/Magdir/claris
new file mode 100644 (file)
index 0000000..368b473
--- /dev/null
@@ -0,0 +1,46 @@
+
+#------------------------------------------------------------------------------
+# claris:  file(1) magic for claris
+# "H. Nanosecond" <aldomel@ix.netcom.com>
+# Claris Works a word processor, etc.
+# Version 3.0
+
+# .pct claris works clip art files
+#0000000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
+#*
+#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.
+
+# Claris works files
+# .cwk
+0      string  \002\000\210\003\102\117\102\117\000\001\206 Claris works document
+# .plt
+0      string  \020\341\000\000\010\010        Claris Works pallete files .plt
+
+# .msp a dictionary file I am not sure about this I have only one .msp file
+0      string  \002\271\262\000\040\002\000\164        Claris works dictionary
+
+# .usp are user dictionary bits
+# I am not sure about a magic header:
+#0000000 001 123 160 146 070 125 104 040 136 123 015 012 160 157 144 151
+#        soh   S   p   f   8   U   D  sp   ^   S  cr  nl   p   o   d   i
+#0000020 141 164 162 151 163 164 040 136 123 015 012 144 151 166 040 043
+#          a   t   r   i   s   t  sp   ^   S  cr  nl   d   i   v  sp   #
+
+# .mth Thesaurus
+# starts with \0 but no magic header
+
+# .chy Hyphenation file
+# I am not sure: 000 210 034 000 000
+
+# other claris files
+#./windows/claris/useng.ndx: data
+#./windows/claris/xtndtran.l32: data
+#./windows/claris/xtndtran.lst: data
+#./windows/claris/clworks.lbl: data
+#./windows/claris/clworks.prf: data
+#./windows/claris/userd.spl: data
diff --git a/contrib/file-4/magic/Magdir/clipper b/contrib/file-4/magic/Magdir/clipper
new file mode 100644 (file)
index 0000000..c325cb8
--- /dev/null
@@ -0,0 +1,64 @@
+
+#------------------------------------------------------------------------------
+# clipper:  file(1) magic for Intergraph (formerly Fairchild) Clipper.
+#
+# XXX - what byte order does the Clipper use?
+#
+# XXX - what's the "!" stuff:
+#
+# >18  short           !074000,000000  C1 R1 
+# >18  short           !074000,004000  C2 R1
+# >18  short           !074000,010000  C3 R1
+# >18  short           !074000,074000  TEST
+#
+# I shall assume it's ANDing the field with the first value and
+# comparing it with the second, and rewrite it as:
+#
+# >18  short&074000    000000          C1 R1 
+# >18  short&074000    004000          C2 R1
+# >18  short&074000    010000          C3 R1
+# >18  short&074000    074000          TEST
+#
+# as SVR3.1's "file" doesn't support anything of the "!074000,000000"
+# sort, nor does SunOS 4.x, so either it's something Intergraph added
+# in CLIX, or something AT&T added in SVR3.2 or later, or something
+# somebody else thought was a good idea; it's not documented in the
+# man page for this version of "magic", nor does it appear to be
+# implemented (at least not after I blew off the bogus code to turn
+# old-style "&"s into new-style "&"s, which just didn't work at all).
+#
+0      short           0575            CLIPPER COFF executable (VAX #)
+>20    short           0407            (impure)
+>20    short           0410            (5.2 compatible)
+>20    short           0411            (pure)
+>20    short           0413            (demand paged)
+>20    short           0443            (target shared library)
+>12    long            >0              not stripped
+>22    short           >0              - version %ld
+0      short           0577            CLIPPER COFF executable
+>18    short&074000    000000          C1 R1 
+>18    short&074000    004000          C2 R1
+>18    short&074000    010000          C3 R1
+>18    short&074000    074000          TEST
+>20    short           0407            (impure)
+>20    short           0410            (pure)
+>20    short           0411            (separate I&D)
+>20    short           0413            (paged)
+>20    short           0443            (target shared library)
+>12    long            >0              not stripped
+>22    short           >0              - version %ld
+>48    long&01         01              alignment trap enabled
+>52    byte            1               -Ctnc
+>52    byte            2               -Ctsw
+>52    byte            3               -Ctpw
+>52    byte            4               -Ctcb
+>53    byte            1               -Cdnc
+>53    byte            2               -Cdsw
+>53    byte            3               -Cdpw
+>53    byte            4               -Cdcb
+>54    byte            1               -Csnc
+>54    byte            2               -Cssw
+>54    byte            3               -Cspw
+>54    byte            4               -Cscb
+4      string          pipe            CLIPPER instruction trace
+4      string          prof            CLIPPER instruction profile
diff --git a/contrib/file-4/magic/Magdir/commands b/contrib/file-4/magic/Magdir/commands
new file mode 100644 (file)
index 0000000..93244b8
--- /dev/null
@@ -0,0 +1,53 @@
+
+#------------------------------------------------------------------------------
+# commands:  file(1) magic for various shells and interpreters
+#
+0      string          :                       shell archive or script for antique kernel text
+0      string/b        #!\ /bin/sh             Bourne shell script text executable
+0      string/b        #!\ /bin/csh            C shell script text executable
+# korn shell magic, sent by George Wu, gwu@clyde.att.com
+0      string/b        #!\ /bin/ksh            Korn shell script text executable
+0      string/b        #!\ /bin/tcsh           Tenex C shell script text executable
+0      string/b        #!\ /usr/local/tcsh     Tenex C shell script text executable
+0      string/b        #!\ /usr/local/bin/tcsh Tenex C shell script text executable
+
+#
+# zsh/ash/ae/nawk/gawk magic from cameron@cs.unsw.oz.au (Cameron Simpson)
+0      string/b        #!\ /bin/zsh            Paul Falstad's zsh script text executable
+0      string/b        #!\ /usr/bin/zsh        Paul Falstad's zsh script text executable
+0      string/b        #!\ /usr/local/bin/zsh  Paul Falstad's zsh script text executable
+0      string/b        #!\ /usr/local/bin/ash  Neil Brown's ash script text executable
+0      string/b        #!\ /usr/local/bin/ae   Neil Brown's ae script text executable
+0      string/b        #!\ /bin/nawk           new awk script text executable
+0      string/b        #!\ /usr/bin/nawk       new awk script text executable
+0      string/b        #!\ /usr/local/bin/nawk new awk script text executable
+0      string/b        #!\ /bin/gawk           GNU awk script text executable
+0      string/b        #!\ /usr/bin/gawk       GNU awk script text executable
+0      string/b        #!\ /usr/local/bin/gawk GNU awk script text executable
+#
+0      string/b        #!\ /bin/awk            awk script text executable
+0      string/b        #!\ /usr/bin/awk        awk script text executable
+0      string          BEGIN                   awk script text
+
+# AT&T Bell Labs' Plan 9 shell
+0      string/b        #!\ /bin/rc     Plan 9 rc shell script text executable
+
+# bash shell magic, from Peter Tobias (tobias@server.et-inf.fho-emden.de)
+0      string/b        #!\ /bin/bash   Bourne-Again shell script text executable
+0      string/b        #!\ /usr/local/bin/bash Bourne-Again shell script text executable
+
+# using env
+0      string          #!/usr/bin/env          a
+>15    string          >\0                     %s script text executable
+0      string          #!\ /usr/bin/env        a
+>16    string          >\0                     %s script text executable
+
+# PHP scripts
+# Ulf Harnhammar <ulfh@update.uu.se>
+0      string/c        =<?php                  PHP script text
+0      string          =<?\n                   PHP script text
+0      string          =<?\r                   PHP script text
+0      string/b        #!\ /usr/local/bin/php  PHP script text executable
+0      string/b        #!\ /usr/bin/php        PHP script text executable
+
+0      string          Zend\x00                PHP script Zend Optimizer data
diff --git a/contrib/file-4/magic/Magdir/communications b/contrib/file-4/magic/Magdir/communications
new file mode 100644 (file)
index 0000000..81417ec
--- /dev/null
@@ -0,0 +1,21 @@
+
+#----------------------------------------------------------------------------
+# communication
+
+# TTCN is the Tree and Tabular Combined Notation described in ISO 9646-3.
+# It is used for conformance testing of communication protocols.
+# Added by W. Borgert <debacle@debian.org>.
+0      string          $Suite                  TTCN Abstract Test Suite
+>&1    string          $SuiteId
+>>&1   string          >\n                     %s
+>&2    string          $SuiteId
+>>&1   string          >\n                     %s
+>&3    string          $SuiteId
+>>&1   string          >\n                     %s
+
+# MSC (message sequence charts) are a formal description technique,
+# described in ITU-T Z.120, mainly used for communication protocols.
+# Added by W. Borgert <debacle@debian.org>.
+0      string          mscdocument     Message Sequence Chart (document)
+0      string          msc             Message Sequence Chart (chart)
+0      string          submsc          Message Sequence Chart (subchart)
diff --git a/contrib/file-4/magic/Magdir/compress b/contrib/file-4/magic/Magdir/compress
new file mode 100644 (file)
index 0000000..71e689c
--- /dev/null
@@ -0,0 +1,172 @@
+
+#------------------------------------------------------------------------------
+# compress:  file(1) magic for pure-compression formats (no archives)
+#
+# compress, gzip, pack, compact, huf, squeeze, crunch, freeze, yabba, etc.
+#
+# Formats for various forms of compressed data
+# Formats for "compress" proper have been moved into "compress.c",
+# because it tries to uncompress it to figure out what's inside.
+
+# standard unix compress
+0      string          \037\235        compress'd data
+>2     byte&0x80       >0              block compressed
+>2     byte&0x1f       x               %d bits
+
+# gzip (GNU zip, not to be confused with Info-ZIP or PKWARE zip archiver)
+#   Edited by Chris Chittleborough <cchittleborough@yahoo.com.au>, March 2002
+#      * Original filename is only at offset 10 if "extra field" absent
+#      * Produce shorter output - notably, only report compression methods
+#        other than 8 ("deflate", the only method defined in RFC 1952).
+0       string          \037\213        gzip compressed data
+>2     byte            <8              \b, reserved method
+>2     byte            >8              \b, unknown method
+>3     byte            &0x01           \b, ASCII
+>3     byte            &0x02           \b, continuation
+>3     byte            &0x04           \b, extra field
+>3     byte&0xC        =0x08
+>>10   string          x               \b, was "%s"
+>9     byte            =0x00           \b, from MS-DOS
+>9     byte            =0x01           \b, from Amiga
+>9     byte            =0x02           \b, from VMS
+>9     byte            =0x03           \b, from Unix
+>9     byte            =0x05           \b, from Atari
+>9     byte            =0x06           \b, from OS/2
+>9     byte            =0x07           \b, from MacOS
+>9     byte            =0x0A           \b, from Tops/20
+>9     byte            =0x0B           \b, from Win/32
+>3     byte            &0x10           \b, comment
+>3     byte            &0x20           \b, encrypted
+### >4 ledate          x               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
+>2     belong          >1              \b, %d characters originally
+>2     belong          =1              \b, %d character originally
+#
+# This magic number is byte-order-independent.
+0      short           0x1f1f          old packed data
+
+# XXX - why *two* entries for "compacted data", one of which is
+# byte-order independent, and one of which is byte-order dependent?
+#
+0      short           0x1fff          compacted data
+# This string is valid for SunOS (BE) and a matching "short" is listed
+# in the Ultrix (LE) magic file.
+0      string          \377\037        compacted data
+0      short           0145405         huf output
+
+# bzip2
+0      string          BZh             bzip2 compressed data
+>3     byte            >47             \b, block size = %c00k
+
+# squeeze and crunch
+# Michael Haardt <michael@cantor.informatik.rwth-aachen.de>
+0      beshort         0x76FF          squeezed data,
+>4     string          x               original name %s
+0      beshort         0x76FE          crunched data,
+>2     string          x               original name %s
+0      beshort         0x76FD          LZH compressed data,
+>2     string          x               original name %s
+
+# Freeze
+0      string          \037\237        frozen file 2.1
+0      string          \037\236        frozen file 1.0 (or gzip 0.5)
+
+# SCO compress -H (LZH)
+0      string          \037\240        SCO compress -H (LZH) data
+
+# European GSM 06.10 is a provisional standard for full-rate speech
+# transcoding, prI-ETS 300 036, which uses RPE/LTP (residual pulse
+# excitation/long term prediction) coding at 13 kbit/s.
+#
+# There's only a magic nibble (4 bits); that nibble repeats every 33
+# bytes.  This isn't suited for use, but maybe we can use it someday.
+#
+# This will cause very short GSM files to be declared as data and
+# mismatches to be declared as data too!
+#0     byte&0xF0       0xd0            data
+#>33   byte&0xF0       0xd0
+#>66   byte&0xF0       0xd0
+#>99   byte&0xF0       0xd0
+#>132  byte&0xF0       0xd0            GSM 06.10 compressed audio
+
+# bzip a block-sorting file compressor
+#      by Julian Seward <sewardj@cs.man.ac.uk> and others
+#
+0      string          BZ              bzip compressed data
+>2     byte            x               \b, version: %c
+>3     string          =1              \b, compression block size 100k
+>3     string          =2              \b, compression block size 200k
+>3     string          =3              \b, compression block size 300k
+>3     string          =4              \b, compression block size 400k
+>3     string          =5              \b, compression block size 500k
+>3     string          =6              \b, compression block size 600k
+>3     string          =7              \b, compression block size 700k
+>3     string          =8              \b, compression block size 800k
+>3     string          =9              \b, compression block size 900k
+
+# lzop from <markus.oberhumer@jk.uni-linz.ac.at>
+0      string          \x89\x4c\x5a\x4f\x00\x0d\x0a\x1a\x0a    lzop compressed data
+>9     beshort         <0x0940
+>>9    byte&0xf0       =0x00           - version 0.
+>>9    beshort&0x0fff  x               \b%03x,
+>>13   byte            1               LZO1X-1,
+>>13   byte            2               LZO1X-1(15),
+>>13   byte            3               LZO1X-999,
+## >>22        bedate          >0              last modified: %s,
+>>14   byte            =0x00           os: MS-DOS
+>>14   byte            =0x01           os: Amiga
+>>14   byte            =0x02           os: VMS
+>>14   byte            =0x03           os: Unix
+>>14   byte            =0x05           os: Atari
+>>14   byte            =0x06           os: OS/2
+>>14   byte            =0x07           os: MacOS
+>>14   byte            =0x0A           os: Tops/20
+>>14   byte            =0x0B           os: WinNT
+>>14   byte            =0x0E           os: Win32
+>9     beshort         >0x0939
+>>9    byte&0xf0       =0x00           - version 0.
+>>9    byte&0xf0       =0x10           - version 1.
+>>9    byte&0xf0       =0x20           - version 2.
+>>9    beshort&0x0fff  x               \b%03x,
+>>15   byte            1               LZO1X-1,
+>>15   byte            2               LZO1X-1(15),
+>>15   byte            3               LZO1X-999,
+## >>25        bedate          >0              last modified: %s,
+>>17   byte            =0x00           os: MS-DOS
+>>17   byte            =0x01           os: Amiga
+>>17   byte            =0x02           os: VMS
+>>17   byte            =0x03           os: Unix
+>>17   byte            =0x05           os: Atari
+>>17   byte            =0x06           os: OS/2
+>>17   byte            =0x07           os: MacOS
+>>17   byte            =0x0A           os: Tops/20
+>>17   byte            =0x0B           os: WinNT
+>>17   byte            =0x0E           os: Win32
+
+# 4.3BSD-Quasijarus Strong Compression
+# http://minnie.tuhs.org/Quasijarus/compress.html
+0      string          \037\241        Quasijarus strong compressed data
+
+# From: Cory Dikkers <cdikkers@swbell.net>
+0      string          XPKF            Amiga xpkf.library compressed data
+0      string          PP11            Power Packer 1.1 compressed data
+0      string          PP20            Power Packer 2.0 compressed data,
+>4     belong          0x09090909      fast compression
+>4     belong          0x090A0A0A      mediocre compression
+>4     belong          0x090A0B0B      good compression
+>4     belong          0x090A0C0C      very good compression
+>4     belong          0x090A0C0D      best compression
+
+# 7z archiver, from Thomas Klausner (wiz@danbala.tuwien.ac.at)
+# http://www.7-zip.org or DOC/7zFormat.txt 
+#
+0      string          7z\274\257\047\034      7z archive data,
+>6     byte            x                       version %d
+>7     byte            x                       \b.%d
+
+# AFX compressed files (Wolfram Kleff)
+2      string          -afx-           AFX compressed file data
diff --git a/contrib/file-4/magic/Magdir/console b/contrib/file-4/magic/Magdir/console
new file mode 100644 (file)
index 0000000..fdad7c4
--- /dev/null
@@ -0,0 +1,197 @@
+#------------------------------------------------------------------------------
+# Console game magic
+# Toby Deshane <hac@shoelace.digivill.net>
+#    ines:  file(1) magic for Marat's iNES Nintendo Entertainment System
+#           ROM dump format
+
+0 string NES\032 iNES ROM dump,
+>4 byte  x     %dx16k PRG
+>5 byte  x     \b, %dx8k CHR
+>6 byte&0x01  =0x1  \b, [Vert.]
+>6 byte&0x01  =0x0  \b, [Horiz.]
+>6 byte&0x02  =0x2  \b, [SRAM]
+>6 byte&0x04  =0x4  \b, [Trainer]
+>6 byte&0x04  =0x8  \b, [4-Scr]
+
+#------------------------------------------------------------------------------
+# gameboy:  file(1) magic for the Nintendo (Color) Gameboy raw ROM format
+#
+0x104 belong 0xCEED6666 Gameboy ROM:
+>0x134 string >\0 "%.16s"
+>0x146 byte 0x03  \b,[SGB]
+>0x147 byte 0x00  \b, [ROM ONLY]
+>0x147 byte 0x01  \b, [ROM+MBC1]
+>0x147 byte 0x02  \b, [ROM+MBC1+RAM]
+>0x147 byte 0x03  \b, [ROM+MBC1+RAM+BATT]
+>0x147 byte 0x05  \b, [ROM+MBC2]
+>0x147 byte 0x06  \b, [ROM+MBC2+BATTERY]
+>0x147 byte 0x08  \b, [ROM+RAM]
+>0x147 byte 0x09  \b, [ROM+RAM+BATTERY]
+>0x147 byte 0x0B  \b, [ROM+MMM01]
+>0x147 byte 0x0C  \b, [ROM+MMM01+SRAM]
+>0x147 byte 0x0D  \b, [ROM+MMM01+SRAM+BATT]
+>0x147 byte 0x0F  \b, [ROM+MBC3+TIMER+BATT]
+>0x147 byte 0x10  \b, [ROM+MBC3+TIMER+RAM+BATT]
+>0x147 byte 0x11  \b, [ROM+MBC3]
+>0x147 byte 0x12  \b, [ROM+MBC3+RAM]
+>0x147 byte 0x13  \b, [ROM+MBC3+RAM+BATT]
+>0x147 byte 0x19  \b, [ROM+MBC5]
+>0x147 byte 0x1A  \b, [ROM+MBC5+RAM]
+>0x147 byte 0x1B  \b, [ROM+MBC5+RAM+BATT]
+>0x147 byte 0x1C  \b, [ROM+MBC5+RUMBLE]
+>0x147 byte 0x1D  \b, [ROM+MBC5+RUMBLE+SRAM]
+>0x147 byte 0x1E  \b, [ROM+MBC5+RUMBLE+SRAM+BATT]
+>0x147 byte 0x1F  \b, [Pocket Camera]
+>0x147 byte 0xFD  \b, [Bandai TAMA5]
+>0x147 byte 0xFE  \b, [Hudson HuC-3]
+>0x147 byte 0xFF  \b, [Hudson HuC-1]
+
+>0x148 byte 0     \b, ROM: 256Kbit
+>0x148 byte 1     \b, ROM: 512Kbit
+>0x148 byte 2     \b, ROM: 1Mbit
+>0x148 byte 3     \b, ROM: 2Mbit
+>0x148 byte 4     \b, ROM: 4Mbit
+>0x148 byte 5     \b, ROM: 8Mbit
+>0x148 byte 6     \b, ROM: 16Mbit
+>0x148 byte 0x52  \b, ROM: 9Mbit
+>0x148 byte 0x53  \b, ROM: 10Mbit
+>0x148 byte 0x54  \b, ROM: 12Mbit
+
+>0x149 byte 1     \b, RAM: 16Kbit
+>0x149 byte 2     \b, RAM: 64Kbit
+>0x149 byte 3     \b, RAM: 128Kbit
+>0x149 byte 4     \b, RAM: 1Mbit
+
+#>0x14e long  x     \b, CRC: %x
+
+#------------------------------------------------------------------------------
+# genesis:  file(1) magic for the Sega MegaDrive/Genesis raw ROM format
+#
+0x100 string SEGA  Sega MegaDrive/Genesis raw ROM dump
+>0x120 string >\0 Name: "%.16s"
+>0x110 string >\0 %.16s
+>0x1B0 string RA with SRAM
+
+#------------------------------------------------------------------------------
+# genesis:  file(1) magic for the Super MegaDrive ROM dump format
+#
+0x280 string EAGN  Super MagicDrive ROM dump
+>0 byte x %dx16k blocks
+>2 byte 0 \b, last in series or standalone
+>2 byte >0 \b, split ROM
+>8 byte 0xAA
+>9 byte 0xBB
+
+#------------------------------------------------------------------------------
+# genesis:  file(1) alternate magic for the Super MegaDrive ROM dump format
+#
+0x280 string EAMG  Super MagicDrive ROM dump
+>0 byte x %dx16k blocks
+>2 byte x \b, last in series or standalone
+>8 byte 0xAA
+>9 byte 0xBB
+
+#------------------------------------------------------------------------------
+# smsgg:  file(1) magic for Sega Master System and Game Gear ROM dumps
+#
+# Does not detect all images.  Very preliminary guesswork.  Need more data
+# on format.
+#
+# FIXME: need a little more info...;P
+#
+#0 byte 0xF3
+#>1 byte 0xED  Sega Master System/Game Gear ROM dump
+#>1 byte 0x31  Sega Master System/Game Gear ROM dump
+#>1 byte 0xDB  Sega Master System/Game Gear ROM dump
+#>1 byte 0xAF  Sega Master System/Game Gear ROM dump
+#>1 byte 0xC3  Sega Master System/Game Gear ROM dump
+
+#------------------------------------------------------------------------------
+# dreamcast:  file(1) uncertain magic for the Sega Dreamcast VMU image format
+#
+0 belong 0x21068028   Sega Dreamcast VMU game image
+0 string LCDi         Dream Animator file
+
+#------------------------------------------------------------------------------
+# v64: file(1) uncertain magic for the V64 format N64 ROM dumps
+#
+0 belong 0x37804012    V64 Nintendo 64 ROM dump
+
+#------------------------------------------------------------------------------
+# msx: file(1) magic for MSX game cartridge dumps
+# Too simple - MPi
+#0 beshort 0x4142 MSX game cartridge dump 
+
+#------------------------------------------------------------------------------
+# Sony Playstation executables (Adam Sjoegren <asjo@diku.dk>) :
+0      string  PS-X\ EXE       Sony Playstation executable
+#  Area:
+>113   string  x               (%s)
+
+#------------------------------------------------------------------------------
+# Microsoft Xbox executables .xbe (Esa Hyytiä <ehyytia@cc.hut.fi>)
+0       string          XBEH            XBE, Microsoft Xbox executable
+# probabilistic checks whether signed or not
+>0x0004 ulelong =0x0
+>>&2    ulelong =0x0
+>>>&2   ulelong =0x0  \b, not signed
+>0x0004 ulelong >0
+>>&2    ulelong >0
+>>>&2   ulelong >0    \b, signed
+# expect base address of 0x10000
+>0x0104               ulelong =0x10000
+>>(0x0118-0x0FF60)    ulelong&0x80000007  0x80000007 \b, all regions
+>>(0x0118-0x0FF60)    ulelong&0x80000007  !0x80000007
+>>>(0x0118-0x0FF60)   ulelong >0           (regions:
+>>>>(0x0118-0x0FF60)  ulelong &0x00000001  NA
+>>>>(0x0118-0x0FF60)  ulelong &0x00000002  Japan
+>>>>(0x0118-0x0FF60)  ulelong &0x00000004  Rest_of_World
+>>>>(0x0118-0x0FF60)  ulelong &0x80000000  Manufacturer
+>>>(0x0118-0x0FF60)   ulelong >0           \b)
+
+# --------------------------------
+# Microsoft Xbox data file formats
+0       string          XIP0            XIP, Microsoft Xbox data
+0       string          XTF0            XTF, Microsoft Xbox data
+
+# Atari Lynx cartridge dump (EXE/BLL header)
+# From: "Stefan A. Haubenthal" <polluks@web.de>
+
+0      beshort         0x8008          Lynx cartridge,
+>2     beshort         x               RAM start $%04x
+>6     string          BS93
+
+#------------------------------------------------------------------------------
+# Z-machine:  file(1) magic for Z-machine binaries.
+#
+# This will match ${TEX_BASE}/texmf/omega/ocp/char2uni/inbig5.ocp which
+# appears to be a version-0 Z-machine binary.
+#
+# The (false match) message is to correct that behavior.  Perhaps it is
+# not needed.
+#
+>16    belong&0xfe00f0f0       0x3030  Infocom game data
+>0     ubyte                   0       (false match)
+>0     ubyte                   >0      (Z-machine %d,
+>>2    ubeshort                x       Release %d /
+>>18   string                  >\0     Serial %.6s)
+
+#------------------------------------------------------------------------------
+# Glulx:  file(1) magic for Glulx binaries.
+#
+# I haven't checked for false matches yet.
+#
+0      string                  Glul    Glulx game data
+
+
+
+# These go at the end of the iff rules
+#
+# I don't see why these might collide with anything else.
+#
+# Interactive Fiction related formats
+#
+>8     string          IFRS            \b, Blorb Interactive Fiction
+>>24   string          Exec            with executable chunk
+>8     string          IFZS            \b, Z-machine or Glulx saved game file (Quetzal)
+
diff --git a/contrib/file-4/magic/Magdir/convex b/contrib/file-4/magic/Magdir/convex
new file mode 100644 (file)
index 0000000..b1235d7
--- /dev/null
@@ -0,0 +1,69 @@
+#------------------------------------------------------------------------------
+# convex:  file(1) magic for Convex boxes
+#
+# Convexes are big-endian.
+#
+# /*\
+#  * Below are the magic numbers and tests added for Convex.
+#  * Added at beginning, because they are expected to be used most.
+# \*/
+0      belong  0507    Convex old-style object
+>16    belong  >0      not stripped
+0      belong  0513    Convex old-style demand paged executable
+>16    belong  >0      not stripped
+0      belong  0515    Convex old-style pre-paged executable
+>16    belong  >0      not stripped
+0      belong  0517    Convex old-style pre-paged, non-swapped executable
+>16    belong  >0      not stripped
+0      belong  0x011257        Core file
+#
+# The following are a series of dump format magic numbers.  Each one
+# corresponds to a drastically different dump format.  The first on is
+# the original dump format on a 4.1 BSD or earlier file system.  The
+# second marks the change between the 4.1 file system and the 4.2 file
+# system.  The Third marks the changing of the block size from 1K
+# to 2K to be compatible with an IDC file system.  The fourth indicates
+# a dump that is dependent on Convex Storage Manager, because data in
+# secondary storage is not physically contained within the dump.
+# 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
+#
+# what follows is a bunch of bit-mask checks on the flags field of the opthdr.
+# If there is no `=' sign, assume just checking for whether the bit is set?
+#
+0      belong  0601            Convex SOFF
+>88    belong&0x000f0000       =0x00000000     c1
+>88    belong                  &0x00010000     c2
+>88    belong                  &0x00020000     c2mp
+>88    belong                  &0x00040000     parallel
+>88    belong                  &0x00080000     intrinsic
+>88    belong                  &0x00000001     demand paged
+>88    belong                  &0x00000002     pre-paged
+>88    belong                  &0x00000004     non-swapped
+>88    belong                  &0x00000008     POSIX
+#
+>84    belong                  &0x80000000     executable
+>84    belong                  &0x40000000     object
+>84    belong&0x20000000       =0              not stripped
+>84    belong&0x18000000       =0x00000000     native fpmode
+>84    belong&0x18000000       =0x10000000     ieee fpmode
+>84    belong&0x18000000       =0x18000000     undefined fpmode
+#
+0      belong                  0605            Convex SOFF core
+#
+0      belong                  0607            Convex SOFF checkpoint
+>88    belong&0x000f0000       =0x00000000     c1
+>88    belong                  &0x00010000     c2
+>88    belong                  &0x00020000     c2mp
+>88    belong                  &0x00040000     parallel
+>88    belong                  &0x00080000     intrinsic
+>88    belong                  &0x00000008     POSIX
+#
+>84    belong&0x18000000       =0x00000000     native fpmode
+>84    belong&0x18000000       =0x10000000     ieee fpmode
+>84    belong&0x18000000       =0x18000000     undefined fpmode
diff --git a/contrib/file-4/magic/Magdir/ctags b/contrib/file-4/magic/Magdir/ctags
new file mode 100644 (file)
index 0000000..5c039e7
--- /dev/null
@@ -0,0 +1,5 @@
+
+# ----------------------------------------------------------------------------
+# ctags:  file (1) magic for Exuberant Ctags files
+# From: Alexander Mai <mai@migdal.ikp.physik.tu-darmstadt.de>
+0       string  !_TAG   Exuberant Ctags tag file text
diff --git a/contrib/file-4/magic/Magdir/dact b/contrib/file-4/magic/Magdir/dact
new file mode 100644 (file)
index 0000000..5cca8d9
--- /dev/null
@@ -0,0 +1,10 @@
+
+#------------------------------------------------------------------------------
+# dact:  file(1) magic for DACT compressed files
+#
+0      long            0x444354C3      DACT compressed data
+>4     byte            >-1             (version %i.
+>5     byte            >-1             $BS%i.
+>6     byte            >-1             $BS%i)
+>7     long            >0              $BS, original size: %i bytes
+>15    long            >30             $BS, block size: %i bytes
diff --git a/contrib/file-4/magic/Magdir/database b/contrib/file-4/magic/Magdir/database
new file mode 100644 (file)
index 0000000..aef8469
--- /dev/null
@@ -0,0 +1,212 @@
+
+#------------------------------------------------------------------------------
+# database:  file(1) magic for various databases
+#
+# extracted from header/code files by Graeme Wilford (eep2gw@ee.surrey.ac.uk)
+#
+#
+# GDBM magic numbers
+#  Will be maintained as part of the GDBM distribution in the future.
+#  <downsj@teeny.org>
+0      belong  0x13579ace      GNU dbm 1.x or ndbm database, big endian
+0      lelong  0x13579ace      GNU dbm 1.x or ndbm database, little endian
+0      string  GDBM            GNU dbm 2.x database
+#
+# Berkeley DB
+#
+# Ian Darwin's file /etc/magic files: big/little-endian version.
+#
+# Hash 1.85/1.86 databases store metadata in network byte order.
+# Btree 1.85/1.86 databases store the metadata in host byte order.
+# Hash and Btree 2.X and later databases store the metadata in host byte order.
+
+0      long    0x00061561      Berkeley DB
+>8     belong  4321
+>>4    belong  >2              1.86
+>>4    belong  <3              1.85
+>>4    belong  >0              (Hash, version %d, native byte-order)
+>8     belong  1234
+>>4    belong  >2              1.86
+>>4    belong  <3              1.85
+>>4    belong  >0              (Hash, version %d, little-endian)
+
+0      belong  0x00061561      Berkeley DB
+>8     belong  4321
+>>4    belong  >2              1.86
+>>4    belong  <3              1.85
+>>4    belong  >0              (Hash, version %d, big-endian)
+>8     belong  1234
+>>4    belong  >2              1.86
+>>4    belong  <3              1.85
+>>4    belong  >0              (Hash, version %d, native byte-order)
+
+0      long    0x00053162      Berkeley DB 1.85/1.86
+>4     long    >0              (Btree, version %d, native byte-order)
+0      belong  0x00053162      Berkeley DB 1.85/1.86
+>4     belong  >0              (Btree, version %d, big-endian)
+0      lelong  0x00053162      Berkeley DB 1.85/1.86
+>4     lelong  >0              (Btree, version %d, little-endian)
+
+12     long    0x00061561      Berkeley DB
+>16    long    >0              (Hash, version %d, native byte-order)
+12     belong  0x00061561      Berkeley DB
+>16    belong  >0              (Hash, version %d, big-endian)
+12     lelong  0x00061561      Berkeley DB
+>16    lelong  >0              (Hash, version %d, little-endian)
+
+12     long    0x00053162      Berkeley DB
+>16    long    >0              (Btree, version %d, native byte-order)
+12     belong  0x00053162      Berkeley DB
+>16    belong  >0              (Btree, version %d, big-endian)
+12     lelong  0x00053162      Berkeley DB
+>16    lelong  >0              (Btree, version %d, little-endian)
+
+12     long    0x00042253      Berkeley DB
+>16    long    >0              (Queue, version %d, native byte-order)
+12     belong  0x00042253      Berkeley DB
+>16    belong  >0              (Queue, version %d, big-endian)
+12     lelong  0x00042253      Berkeley DB
+>16    lelong  >0              (Queue, version %d, little-endian)
+
+# From Max Bowsher.
+12     long    0x00040988      Berkeley DB
+>16    long    >0              (Log, version %d, native byte-order)
+12     belong  0x00040988      Berkeley DB 
+>16    belong  >0              (Log, version %d, big-endian)
+12     lelong  0x00040988      Berkeley DB
+>16    lelong  >0              (Log, version %d, little-endian)
+
+#
+#
+# Round Robin Database Tool by Tobias Oetiker <oetiker@ee.ethz.ch>
+0      string  RRD             RRDTool DB
+>4     string  x               version %s
+#----------------------------------------------------------------------
+# ROOT: file(1) magic for ROOT databases
+#
+0       string  root\0  ROOT file
+>4      belong  x       Version %d
+>33     belong  x       (Compression: %d)
+
+# XXX: Weak magic.
+# Alex Ott <ott@jet.msk.su>
+## Paradox file formats
+#2       leshort       0x0800  Paradox 
+#>0x39   byte          3       v. 3.0 
+#>0x39   byte          4       v. 3.5 
+#>0x39   byte          9       v. 4.x 
+#>0x39   byte          10      v. 5.x 
+#>0x39   byte          11      v. 5.x 
+#>0x39   byte          12      v. 7.x 
+#>>0x04          byte          0       indexed .DB data file 
+#>>0x04          byte          1       primary index .PX file 
+#>>0x04          byte          2       non-indexed .DB data file 
+#>>0x04          byte          3       non-incrementing secondary index .Xnn file 
+#>>0x04          byte          4       secondary index .Ynn file 
+#>>0x04          byte          5       incrementing secondary index .Xnn file 
+#>>0x04          byte          6       non-incrementing secondary index .XGn file 
+#>>0x04          byte          7       secondary index .YGn file 
+#>>>0x04         byte          8       incrementing secondary index .XGn file 
+## XBase database files
+#0      byte       0x02        
+#>8     leshort          >0
+#>>12   leshort    0   FoxBase 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x03        
+#>8     leshort          >0
+#>>12   leshort    0   FoxBase+, FoxPro, dBaseIII+, dBaseIV, no memo 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x04        
+#>8     leshort          >0
+#>>12   leshort    0   dBASE IV no memo file 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x05        
+#>8     leshort          >0
+#>>12   leshort    0   dBASE V no memo file 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x30
+#>8     leshort          >0
+#>>12   leshort    0   Visual FoxPro 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x43
+#>8     leshort          >0
+#>>12   leshort    0   FlagShip with memo var size 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x7b
+#>8     leshort          >0
+#>>12   leshort    0   dBASEIV with memo 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x83        
+#>8     leshort          >0
+#>>12   leshort    0   FoxBase+, dBaseIII+ with memo 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x8b
+#>8     leshort          >0
+#>>12   leshort    0   dBaseIV with memo 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x8e        
+#>8     leshort          >0
+#>>12   leshort    0   dBaseIV with SQL Table 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0xb3
+#>8     leshort          >0
+#>>12   leshort    0   FlagShip with .dbt memo 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0xf5
+#>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
+
+# MS Access database
+4        string        Standard\ Jet\ DB       Microsoft Access Database
+
+# TDB database from Samba et al - Martin Pool <mbp@samba.org>
+0      string  TDB\ file               TDB database
+>32    lelong  0x2601196D              version 6, little-endian
+>>36   lelong  x                       hash size %d bytes
+
+# SE Linux policy database
+0       lelong  0xf97cff8c      SE Linux policy
+>16     lelong  x               v%d
+>20     lelong  1      MLS
+>24     lelong  x       %d symbols
+>28     lelong  x       %d ocons
+
+# ICE authority file data (Wolfram Kleff)
+2      string          ICE             ICE authority data
+
+# X11 Xauthority file (Wolfram Kleff)
+10     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+11     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+12     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+13     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+14     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+15     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+16     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+17     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+18     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
diff --git a/contrib/file-4/magic/Magdir/diamond b/contrib/file-4/magic/Magdir/diamond
new file mode 100644 (file)
index 0000000..1abd01e
--- /dev/null
@@ -0,0 +1,11 @@
+
+#------------------------------------------------------------------------------
+# diamond:  file(1) magic for Diamond system
+#
+# ... diamond is a multi-media mail and electronic conferencing system....
+#
+# XXX - I think it was either renamed Slate, or replaced by Slate....
+#
+#      The full deal is too long...
+#0     string  <list>\n<protocol\ bbn-multimedia-format>       Diamond Multimedia Document
+0      string  =<list>\n<protocol\ bbn-m       Diamond Multimedia Document
diff --git a/contrib/file-4/magic/Magdir/diff b/contrib/file-4/magic/Magdir/diff
new file mode 100644 (file)
index 0000000..9e65146
--- /dev/null
@@ -0,0 +1,8 @@
+
+#------------------------------------------------------------------------------
+# diff:  file(1) magic for diff(1) output
+#
+0      string          diff\   'diff' output text
+0      string          ***\            'diff' output text
+0      string          Only\ in\       'diff' output text
+0      string          Common\ subdirectories:\        'diff' output text
diff --git a/contrib/file-4/magic/Magdir/digital b/contrib/file-4/magic/Magdir/digital
new file mode 100644 (file)
index 0000000..6a573a6
--- /dev/null
@@ -0,0 +1,41 @@
+#  Digital UNIX - Info
+#
+0      string  !<arch>\n________64E    Alpha archive
+>22    string  X                       -- out of date
+#
+# Alpha COFF Based Executables
+# The stripped stuff really needs to be an 8 byte (64 bit) compare,
+# but this works
+0      leshort         0x183           COFF format alpha
+>22    leshort&020000  &010000         sharable library,
+>22    leshort&020000  ^010000         dynamically linked,
+>24    leshort         0410            pure
+>24    leshort         0413            demand paged
+>8     lelong          >0              executable or object module, not stripped
+>8     lelong          0
+>>12   lelong          0               executable or object module, stripped
+>>12   lelong          >0              executable or object module, not stripped
+>27     byte            >0              - version %d.
+>26     byte            >0              %d-
+>28     leshort         >0              %d
+#
+# The next is incomplete, we could tell more about this format,
+# but its not worth it.
+0      leshort         0x188   Alpha compressed COFF
+0      leshort         0x18f   Alpha u-code object
+#
+#
+# Some other interesting Digital formats,
+0      string  \377\377\177            ddis/ddif
+0      string  \377\377\174            ddis/dots archive
+0      string  \377\377\176            ddis/dtif table data
+0      string  \033c\033               LN03 output
+0      long    04553207                X image
+#
+0      string  !<PDF>!\n               profiling data file
+#
+# Locale data tables (MIPS and Alpha).
+#
+0      short           0x0501          locale data table
+>6     short           0x24            for MIPS
+>6     short           0x40            for Alpha
diff --git a/contrib/file-4/magic/Magdir/dolby b/contrib/file-4/magic/Magdir/dolby
new file mode 100644 (file)
index 0000000..230f738
--- /dev/null
@@ -0,0 +1,57 @@
+# 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,
+# fscod
+>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,
+#
+>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)
+# 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,
+#
+>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
diff --git a/contrib/file-4/magic/Magdir/dump b/contrib/file-4/magic/Magdir/dump
new file mode 100644 (file)
index 0000000..628ead8
--- /dev/null
@@ -0,0 +1,81 @@
+
+#------------------------------------------------------------------------------
+# 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),
+>4     bedate  x               Previous dump %s,
+>8     bedate  x               This dump %s,
+>12    belong  >0              Volume %ld,
+>692   belong  0               Level zero, type:
+>692   belong  >0              Level %d, type:
+>0     belong  1               tape header,
+>0     belong  2               beginning of file record,
+>0     belong  3               map of inodes on tape,
+>0     belong  4               continuation of file record,
+>0     belong  5               end of volume,
+>0     belong  6               map of inodes deleted,
+>0     belong  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   belong  >0              Flags %x
+
+24     belong  60011           old-fs dump file (big endian),
+#>4    bedate  x               Previous dump %s,
+#>8    bedate  x               This dump %s,
+>12    belong  >0              Volume %ld,
+>692   belong  0               Level zero, type:
+>692   belong  >0              Level %d, type:
+>0     belong  1               tape header,
+>0     belong  2               beginning of file record,
+>0     belong  3               map of inodes on tape,
+>0     belong  4               continuation of file record,
+>0     belong  5               end of volume,
+>0     belong  6               map of inodes deleted,
+>0     belong  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   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
diff --git a/contrib/file-4/magic/Magdir/dyadic b/contrib/file-4/magic/Magdir/dyadic
new file mode 100644 (file)
index 0000000..e8a9d25
--- /dev/null
@@ -0,0 +1,12 @@
+
+#------------------------------------------------------------------------------
+# Dyadic: file(1) magic for Dyalog APL.
+#
+0      byte    0xaa
+>1     byte    <4              Dyalog APL
+>>1    byte    0x00            incomplete workspace
+>>1    byte    0x01            component file
+>>1    byte    0x02            external variable
+>>1    byte    0x03            workspace
+>>2    byte    x               version %d
+>>3    byte    x               .%d
diff --git a/contrib/file-4/magic/Magdir/editors b/contrib/file-4/magic/Magdir/editors
new file mode 100644 (file)
index 0000000..7edbe8b
--- /dev/null
@@ -0,0 +1,13 @@
+
+#------------------------------------------------------------------------------
+# T602 editor documents 
+# by David Necas <yeti@physics.muni.cz>
+0      string  @CT\    T602 document data,
+>4     string  0       Kamenicky
+>4     string  1       CP 852
+>4     string  2       KOI8-CS
+>4     string  >2      unknown encoding
+
+# Vi IMproved Encrypted file 
+# by David Necas <yeti@physics.muni.cz>
+0      string  VimCrypt~       Vim encrypted file data
diff --git a/contrib/file-4/magic/Magdir/elf b/contrib/file-4/magic/Magdir/elf
new file mode 100644 (file)
index 0000000..1dee0bd
--- /dev/null
@@ -0,0 +1,222 @@
+
+#------------------------------------------------------------------------------
+# elf:  file(1) magic for ELF executables
+#
+# We have to check the byte order flag to see what byte order all the
+# other stuff in the header is in.
+#
+# What're the correct byte orders for the nCUBE and the Fujitsu VPP500?
+#
+# updated by Daniel Quinlan (quinlan@yggdrasil.com)
+0      string          \177ELF         ELF
+>4     byte            0               invalid class
+>4     byte            1               32-bit
+# only for MIPS - in the future, the ABI field of e_flags should be used.
+>>18   leshort         8
+>>>36  lelong          &0x20           N32
+>>18   leshort         10
+>>>36  lelong          &0x20           N32
+>>18   beshort         8
+>>>36  belong          &0x20           N32
+>>18   beshort         10
+>>>36  belong          &0x20           N32
+>4     byte            2               64-bit
+>5     byte            0               invalid byte order
+>5     byte            1               LSB
+# 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
+# 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      0x60000000      MIPS32
+>>>>36  lelong&0xf0000000      0x70000000      MIPS64
+>>>>36  lelong&0xf0000000      0x80000000      MIPS32 rel2
+>>>>36  lelong&0xf0000000      0x90000000      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      0x60000000      MIPS32
+>>>>48  lelong&0xf0000000      0x70000000      MIPS64 
+>>>>48  lelong&0xf0000000      0x80000000      MIPS32 rel2
+>>>>48  lelong&0xf0000000      0x90000000      MIPS64 rel2
+>>16   leshort         0               no file type,
+>>16   leshort         1               relocatable,
+>>16   leshort         2               executable,
+>>16   leshort         3               shared object,
+# Core handling from Peter Tobias <tobias@server.et-inf.fho-emden.de>
+# corrections by Christian 'Dr. Disk' Hechelmann <drdisk@ds9.au.s.shuttle.de>
+>>16   leshort         4               core file
+# 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,
+>>18   leshort         8               MIPS,
+>>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,
+>>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              Hitachi 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              Hitachi H8/300,
+>>18   leshort         47              Hitachi H8/300H,
+>>18   leshort         48              Hitachi H8S,
+>>18   leshort         49              Hitachi H8/500,
+>>18   leshort         50              IA-64 (Intel 64 bit architecture)
+>>18   leshort         51              Stanford MIPS-X,
+>>18   leshort         52              Motorola Coldfire,
+>>18   leshort         53              Motorola M68HC12,
+>>18   leshort         62              AMD x86-64,
+>>18   leshort         75              Digital VAX,
+>>18   leshort         88              Renesas M32R,
+>>18   leshort         97              NatSemi 32k,
+>>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
+# only for MIPS - see comment in little-endian section above.
+>>18    beshort                8
+# 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      0x60000000      MIPS32
+>>>>36  belong&0xf0000000      0x70000000      MIPS64
+>>>>36  belong&0xf0000000      0x80000000      MIPS32 rel2
+>>>>36  belong&0xf0000000      0x90000000      MIPS64 rel2
+# 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       0x60000000      MIPS32
+>>>>48 belong&0xf0000000       0x70000000      MIPS64 
+>>>>48 belong&0xf0000000       0x80000000      MIPS32 rel2
+>>>>48 belong&0xf0000000       0x90000000      MIPS64 rel2
+>>16   beshort         0               no file type,
+>>16   beshort         1               relocatable,
+>>16   beshort         2               executable,
+>>16   beshort         3               shared object,
+>>16   beshort         4               core file,
+#>>>(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,
+>>18   beshort         8               MIPS,
+>>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              cisco 7500,
+>>18   beshort         22              IBM S/390,
+>>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              Hitachi SH,
+>>18   beshort         43              SPARC V9,
+>>18   beshort         44              Siemens Tricore Embedded Processor,
+>>18   beshort         45              Argonaut RISC Core, Argonaut Technologies Inc.,
+>>18   beshort         46              Hitachi H8/300,
+>>18   beshort         47              Hitachi H8/300H,
+>>18   beshort         48              Hitachi H8S,
+>>18   beshort         49              Hitachi H8/500,
+>>18   beshort         50              Intel Merced Processor,
+>>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   beshort         97              NatSemi 32k,
+>>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
+# 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
+>>8    string          >\0             (%s)
+>8     string          \0
+>>7    byte            0               (SYSV)
+>>7    byte            1               (HP-UX)
+>>7    byte            2               (NetBSD)
+>>7    byte            3               (GNU/Linux)
+>>7    byte            4               (GNU/Hurd)
+>>7    byte            5               (86Open)
+>>7    byte            6               (Solaris)
+>>7    byte            7               (Monterey)
+>>7    byte            8               (IRIX)
+>>7    byte            9               (FreeBSD)
+>>7    byte            10              (Tru64)
+>>7    byte            11              (Novell Modesto)
+>>7    byte            12              (OpenBSD)
+>>7    byte            97              (ARM)
+>>7    byte            255             (embedded)
diff --git a/contrib/file-4/magic/Magdir/encore b/contrib/file-4/magic/Magdir/encore
new file mode 100644 (file)
index 0000000..63cb5d4
--- /dev/null
@@ -0,0 +1,21 @@
+
+#------------------------------------------------------------------------------
+# encore:  file(1) magic for Encore machines
+#
+# XXX - needs to have the byte order specified (NS32K was little-endian,
+# dunno whether they run the 88K in little-endian mode or not).
+#
+0      short           0x154           Encore
+>20    short           0x107           executable
+>20    short           0x108           pure executable
+>20    short           0x10b           demand-paged executable
+>20    short           0x10f           unsupported executable
+>12    long            >0              not stripped
+>22    short           >0              - version %ld
+>22    short           0               -
+#>4    date            x               stamp %s
+0      short           0x155           Encore unsupported executable
+>12    long            >0              not stripped
+>22    short           >0              - version %ld
+>22    short           0               -
+#>4    date            x               stamp %s
diff --git a/contrib/file-4/magic/Magdir/epoc b/contrib/file-4/magic/Magdir/epoc
new file mode 100644 (file)
index 0000000..29bd947
--- /dev/null
@@ -0,0 +1,10 @@
+
+#------------------------------------------------------------------------------
+# Epoc 32 : file(1) magic for Epoc Documents [psion/osaris
+# Stefan Praszalowicz (hpicollo@worldnet.fr)
+#0     lelong          0x10000037      Epoc32
+>4     lelong          0x1000006D
+>>8    lelong          0x1000007F      Word
+>>8    lelong          0x10000088      Sheet
+>>8    lelong          0x1000007D      Sketch
+>>8    lelong          0x10000085      TextEd
diff --git a/contrib/file-4/magic/Magdir/esri b/contrib/file-4/magic/Magdir/esri
new file mode 100644 (file)
index 0000000..35c3492
--- /dev/null
@@ -0,0 +1,27 @@
+
+#------------------------------------------------------------------------------
+# ESRI Shapefile format (.shp .shx .dbf=DBaseIII)
+# Based on info from
+# <URL:http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf>
+0      belong  9994    ESRI Shapefile
+>4     belong  =0
+>8     belong  =0
+>12    belong  =0
+>16    belong  =0
+>20    belong  =0
+>28    lelong  x       version %d
+>24    belong  x       length %d
+>32    lelong  =0      type Null Shape
+>32    lelong  =1      type Point
+>32    lelong  =3      type PolyLine
+>32    lelong  =5      type Polygon
+>32    lelong  =8      type MultiPoint
+>32    lelong  =11     type PointZ
+>32    lelong  =13     type PolyLineZ
+>32    lelong  =15     type PolygonZ
+>32    lelong  =18     type MultiPointZ
+>32    lelong  =21     type PointM
+>32    lelong  =23     type PolyLineM
+>32    lelong  =25     type PolygonM
+>32    lelong  =28     type MultiPointM
+>32    lelong  =31     type MultiPatch
diff --git a/contrib/file-4/magic/Magdir/fcs b/contrib/file-4/magic/Magdir/fcs
new file mode 100644 (file)
index 0000000..ac4b02c
--- /dev/null
@@ -0,0 +1,8 @@
+
+#------------------------------------------------------------------------------
+# fcs: file(1) magic for FCS (Flow Cytometry Standard) data files
+# From Roger Leigh <roger@whinlatter.uklinux.net>
+0       string          FCS1.0          Flow Cytometry Standard (FCS) data, version 1.0
+0       string          FCS2.0          Flow Cytometry Standard (FCS) data, version 2.0
+0       string          FCS3.0          Flow Cytometry Standard (FCS) data, version 3.0
+
diff --git a/contrib/file-4/magic/Magdir/filesystems b/contrib/file-4/magic/Magdir/filesystems
new file mode 100644 (file)
index 0000000..41fdc26
--- /dev/null
@@ -0,0 +1,589 @@
+
+#------------------------------------------------------------------------------
+# filesystems:  file(1) magic for different filesystems
+#
+0      string  \366\366\366\366        PC formatted floppy with no filesystem
+# Sun disk labels
+# From /usr/include/sun/dklabel.h:
+0774   beshort         0xdabe          Sun disk label
+>0     string          x               '%s
+>>31   string          >\0             \b%s
+>>>63          string          >\0             \b%s
+>>>>95         string          >\0             \b%s
+>0     string          x               \b'
+>0734  short           >0              %d rpm,
+>0736  short           >0              %d phys cys,
+>0740  short           >0              %d alts/cyl,
+>0746  short           >0              %d interleave,
+>0750  short           >0              %d data cyls,
+>0752  short           >0              %d alt cyls,
+>0754  short           >0              %d heads/partition,
+>0756  short           >0              %d sectors/track,
+>0764  long            >0              start cyl %ld,
+>0770  long            x               %ld blocks
+# Is there a boot block written 1 sector in?
+>512    belong&077777777       0600407 \b, boot block present
+# DOS Emulator image is 128 byte header + harddisc image
+0      string  DOSEMU\0                        
+>0x27E leshort 0xAA55                  DOS Emulator image
+0x1FE  leshort 0xAA55                  x86 boot sector
+>2     string  OSBS                    \b, OS/BS MBR
+# J\xf6rg Jenderek <joerg.jenderek@gmx.net>
+>0x8C  string  Invalid\ partition\ table       \b, MS-DOS MBR
+# dr-dos with some upper-, lowercase variants
+>0x9D  string  Invalid\ partition\ table$      
+>>181  string  No\ Operating\ System$          
+>>>201 string  Operating\ System\ load\ error$ \b, DR-DOS MBR, Version 7.01 to 7.03
+>0x9D  string  Invalid\ partition\ table$      
+>>181  string  No\ operating\ system$          
+>>>201 string  Operating\ system\ load\ error$ \b, DR-DOS MBR, Version 7.01 to 7.03
+>342   string  Invalid\ partition\ table$      
+>>366  string  No\ operating\ system$          
+>>>386 string  Operating\ system\ load\ error$ \b, DR-DOS MBR, version 7.01 to 7.03
+>295   string  NEWLDR\0                                
+>>302  string  Bad\ PT\ $                              
+>>>310 string  No\ OS\ $                               
+>>>>317        string  OS\ load\ err$                          
+>>>>>329       string  Moved\ or\ missing\ IBMBIO.LDR\n\r      
+>>>>>>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
+>0x8B  string  Ung\201ltige\ Partitionstabelle \b, MS-DOS MBR, german version 5.00 to 4.00.950
+>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           
+>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)
+>0x145 string  Default:\ F                             \b, FREE-DOS MBR
+>64    string  no\ active\ partition\ found    
+>>96   string  read\ error\ while\ reading\ drive      \b, FREE-DOS Beta9 MBR
+# bootloader, bootmanager
+>43    string  SMART\ BTMGRFAT12\ \ \          
+>>430  string  SBMK\ Bad!\r                    
+>>>3   string  SBM                             \b, Smart Boot Manager
+>>>>6  string  >\0                             \b, version %s
+>382   string  XOSLLOADXCF                     \b, EXtended Operating System Loader
+>6     string  LILO                            \b, LInux i386 boot LOader
+>>120  string  LILO                            \b, version 22.3.4 SuSe
+>>172  string  LILO                            \b, version 22.5.8 Debian
+>402   string  Geom\0Hard\ Disk\0Read\0\ Error\0
+>>394  string  stage1                          \b, GRand Unified Bootloader (0.5.95)
+>380   string  Geom\0Hard\ Disk\0Read\0\ Error\0
+>>374  string  GRUB\ \0                        \b, GRand Unified Bootloader
+>382   string  Geom\0Hard\ Disk\0Read\0\ Error\0
+>>376  string  GRUB\ \0                        \b, GRand Unified Bootloader (0.93)
+>383   string  Geom\0Hard\ Disk\0Read\0\ Error\0
+>>377  string  GRUB\ \0                        \b, GRand Unified Bootloader (0.94)
+>480   string  Boot\ failed\r                  
+>>495  string  LDLINUX\ SYS                    \b, SYSLINUX bootloader (2.06)
+>395   string  chksum\0\ ERROR!\0              \b, Gujin bootloader
+>185   string  FDBOOT\ Version\                        
+>>204  string  \rNo\ Systemdisk.\                      
+>>>220 string  Booting\ from\ harddisk.\n\r            
+>>>245 string  Cannot\ load\ from\ harddisk.\n\r       
+>>>>273 string Insert\ Systemdisk\                     
+>>>>>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
+>(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
+# XP
+>430   string  NTLDR\ is\ missing\xFF\r\n              
+>>449  string  Disk\ error\xFF\r\n                     
+>>>462 string  Press\ any\ key\ to\ restart\r          \b, Microsoft Windows XP Bootloader
+# DOS names like NTLDR,CMLDR,$LDR$ are 8 right space padded bytes+3 bytes
+>>>>417                ubyte           <0x7E                   
+>>>>>417       string          >\                      %-.5s
+>>>>>>422      ubyte           <0x7E                   
+>>>>>>>422     string          >\                      \b%-.3s
+>>>>>>425      string          >\                      \b.%-.3s
+#
+>>>>368                ubyte           <0x7E                   
+>>>>>368       string          >\                      %-.5s
+>>>>>>373      ubyte           <0x7E                   
+>>>>>>>373     string          >\                      \b%-.3s
+>>>>>>376      string          >\                      \b.%-.3s
+#
+>430   string  NTLDR\ nicht\ gefunden\xFF\r\n          
+>>453  string  Datentr\204gerfehler\xFF\r\n            
+>>>473 string  Neustart\ mit\ beliebiger\ Taste\r      \b, Microsoft Windows XP Bootloader (german)
+>>>>417                ubyte           <0x7E                   
+>>>>>417       string          >\                      %-.5s
+>>>>>>422      ubyte           <0x7E                   
+>>>>>>>422     string          >\                      \b%-.3s
+>>>>>>425      string          >\                      \b.%-.3s
+#
+>>>>368                ubyte           <0x7E                   
+>>>>>368       string          >\                      %-.5s
+>>>>>>373      ubyte           <0x7E                   
+>>>>>>>373     string          >\                      \b%-.3s
+>>>>>>376      string          >\                      \b.%-.3s
+#
+>430   string  NTLDR\ fehlt\xFF\r\n                    
+>>444  string  Datentr\204gerfehler\xFF\r\n            
+>>>464 string  Neustart\ mit\ beliebiger\ Taste\r      \b, Microsoft Windows XP Bootloader (2.german)
+>>>>417                ubyte           <0x7E                   
+>>>>>417       string          >\                      %-.5s
+>>>>>>422      ubyte           <0x7E                   
+>>>>>>>422     string          >\                      \b%-.3s
+>>>>>>425      string          >\                      \b.%-.3s
+#
+>430   string  NTLDR\ fehlt\xFF\r\n                    
+>>444  string  Medienfehler\xFF\r\n                    
+>>>459 string  Neustart:\ Taste\ dr\201cken\r          \b, Microsoft Windows XP Bootloader (3.german)
+>>>>368                ubyte           <0x7E                   
+>>>>>368       string          >\                      %-.5s
+>>>>>>373      ubyte           <0x7E                   
+>>>>>>>373     string          >\                      \b%-.3s
+>>>>>>376      string          >\                      \b.%-.3s
+>>>>417                ubyte           <0x7E                   
+>>>>>417       string          >\                      %-.5s
+>>>>>>422      ubyte           <0x7E                   
+>>>>>>>422     string          >\                      \b%-.3s
+>>>>>>425      string          >\                      \b.%-.3s
+#
+>430   string  Datentr\204ger\ entfernen\xFF\r\n       
+>>454  string  Medienfehler\xFF\r\n                    
+>>>469 string  Neustart:\ Taste\ dr\201cken\r          \b, Microsoft Windows XP Bootloader (4.german)
+>>>>368                ubyte           <0x7E                   
+>>>>>368       string          >\                      %-.5s
+>>>>>>373      ubyte           <0x7E                   
+>>>>>>>373     string          >\                      \b%-.3s
+>>>>>>376      string          >\                      \b.%-.3s
+#>3    string  NTFS\ \ \ \                             
+>389   string  Fehler\ beim\ Lesen\ 
+>>407  string  des\ Datentr\204gers
+>>>426 string  NTLDR\ fehlt                            
+>>>>440        string  NTLDR\ ist\ komprimiert
+>>>>>464 string        Neustart\ mit\ Strg+Alt+Entf\r          \b, Microsoft Windows XP Bootloader NTFS (german)
+#>3    string  NTFS\ \ \ \                             
+>313   string  A\ disk\ read\ error\ occurred.\r
+>>345  string  A\ kernel\ file\ is\ missing\   
+>>>370 string  from\ the\ disk.\r              
+>>>>484        string  NTLDR\ is\ compressed           
+>>>>>429 string        Insert\ a\ system\ diskette\    
+>>>>>>454 string and\ restart\r\nthe\ system.\r                \b, Microsoft Windows XP Bootloader NTFS
+# DOS loader variants different languages,offsets
+>472   string  IO\ \ \ \ \ \ SYSMSDOS\ \ \ SYS         
+>>497  string  WINBOOT\ SYS                            
+>>389  string  Invalid\ system\ disk\xFF\r\n           
+>>>411 string  Disk\ I/O\ error                        
+>>>>428        string  Replace\ the\ disk,\ and\               
+>>>>>455 string        press\ any\ key                         \b, Microsoft Windows 98 Bootloader
+#
+>>390  string  Invalid\ system\ disk\xFF\r\n           
+>>>412 string  Disk\ I/O\ error\xFF\r\n                
+>>>>429        string  Replace\ the\ disk,\ and\               
+>>>>>451 string        then\ press\ any\ key\r                 \b, Microsoft Windows 98 Bootloader
+>>388  string  Ungueltiges\ System\ \xFF\r\n           
+>>>410 string  E/A-Fehler\ \ \ \ \xFF\r\n              
+>>>>427        string  Datentraeger\ wechseln\ und\            
+>>>>>453 string        Taste\ druecken\r                       \b, Microsoft Windows 95/98/ME Bootloader (german)
+#
+>>390  string  Ungueltiges\ System\ \xFF\r\n           
+>>>412 string  E/A-Fehler\ \ \ \ \xFF\r\n              
+>>>>429        string  Datentraeger\ wechseln\ und\            
+>>>>>455 string        Taste\ druecken\r                       \b, Microsoft Windows 95/98/ME Bootloader (German)
+#
+>>389  string  Ungueltiges\ System\ \xFF\r\n           
+>>>411 string  E/A-Fehler\ \ \ \ \xFF\r\n              
+>>>>428        string  Datentraeger\ wechseln\ und\            
+>>>>>454 string        Taste\ druecken\r                       \b, Microsoft Windows 95/98/ME Bootloader (GERMAN)
+>479   string  IO\ \ \ \ \ \ SYSMSDOS\ \ \ SYS         
+>>416  string  Kein\ System\ oder\                     
+>>>433 string  Laufwerksfehler                         
+>>>>450        string  Wechseln\ und\ Taste\ dr\201cken        \b, Microsoft DOS Bootloader (german)
+>486   string  IO\ \ \ \ \ \ SYSMSDOS\ \ \ SYS         
+>>416  string  Non-System\ disk\ or\                   
+>>>435 string  disk\ error\r                           
+>>>>447        string  Replace\ and\ press\ any\ key\          
+>>>>>473 string        when\ ready\r                           \b, Microsoft DOS Bootloader
+>480   string  IO\ \ \ \ \ \ SYSMSDOS\ \ \ SYS         
+>>393  string  Non-System\ disk\ or\                   
+>>>412 string  disk\ error\r                           
+>>>>424        string  Replace\ and\ press\ any\ key\          
+>>>>>450 string        when\ ready\r                           \b, Microsoft DOS bootloader
+#>43   string  \224R-LOADER\ \ SYS                     =label                                  
+>54    string  SYS
+>>324  string  VASKK
+>>>495 string  NEWLDR\0                                \b, DR-DOS Bootloader (LOADER.SYS)
+#
+>70    string  IBMBIO\ \ COM                           
+>>472  string  Cannot\ load\ DOS!\                     
+>>>489 string  Any\ key\ to\ retry                     \b, DR-DOS Bootloader
+>>471  string  Cannot\ load\ DOS\                      
+>>487  string  press\ key\ to\ retry                   \b, Open-DOS Bootloader
+>444   string  KERNEL\ \ SYS                                   
+>>314  string  BOOT\ error!                            \b, FREE-DOS Bootloader
+>499   string  KERNEL\ \ SYS                           
+>>305  string  BOOT\ err!\0                            \b, Free-DOS Bootloader
+>449   string  KERNEL\ \ SYS                           
+>>319  string  BOOT\ error!                            \b, FREE-DOS 5.0 Bootloader
+>124   string  FreeDOS\0                               
+>>331  string  \ err\0                                 \b, FREE-DOS BETa 9 Bootloader
+# DOS names like KERNEL.SYS,KERNEL16.SYS,KERNEL32.SYS,METAKERN.SYS are 8 right space padded bytes+3 bytes
+>>>497         string          >\                      %-.6s
+>>>>503                string          >\                      \b%-.1s
+>>>>504                string          >\                      \b%-.1s
+>>>505         string          >\                      \b.%-.3s
+>>333  string  \ err\0                                 \b, FREE-DOS BEta 9 Bootloader
+>>>497         string          >\                      %-.6s
+>>>>503                string          >\                      \b%-.1s
+>>>>504                string          >\                      \b%-.1s
+>>>505         string          >\                      \b.%-.3s
+>>334  string  \ err\0                                 \b, FREE-DOS Beta 9 Bootloader
+>>>497         string          >\                      %-.6s
+>>>>503                string          >\                      \b%-.1s
+>>>>504                string          >\                      \b%-.1s
+>>>505         string          >\                      \b.%-.3s
+# loader end
+>0     string  \0\0\0\0                \b, extended partition table
+# JuMP short     bootcodeoffset NOP assembler instructions will usually be EB xx 90
+# older drives may use E9 xx xx
+>0             lelong&0x009000EB       0x009000EB 
+>0             lelong&0x000000E9       0x000000E9 
+>>1            ubyte                   >37     \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 are from 32 to 2048
+>>>11          uleshort        <2049   
+>>>>11         uleshort        >31     
+>>>>>3         string          >\0             \b, OEM-ID "%8.8s"
+>>>>>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
+>>>>>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 
+# NOT le FAT3=NOT 3TAF=0xCCABBEB9
+>>>>>82                ulelong&0xCCABBEB9      >0
+>>>>>>36       ubyte           >0x80           \b, physical drive 0x%x
+#>>>>>>36      ubyte           =0x80           \b, physical drive 0x%x=0x80 (usual harddisk)
+>>>>>>36       ubyte&0x7F      >0              \b, physical drive 0x%x
+#>>>>>>36      ubyte           =0              \b, physical drive 0x%x=0 (usual floppy)
+>>>>>>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          FAT1            \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
+
+
+# Minix filesystems - Juan Cespedes <cespedes@debian.org>
+0x410  leshort         0x137f          Minix filesystem
+0x410  beshort         0x137f          Minix filesystem (big endian),
+>0x402 beshort         !0              \b, %d zones
+>0x1e  string          minix           \b, bootable
+0x410  leshort         0x138f          Minix filesystem, 30 char names
+0x410  leshort         0x2468          Minix filesystem, version 2
+0x410  leshort         0x2478          Minix filesystem, version 2, 30 char names
+
+# romfs filesystems - Juan Cespedes <cespedes@debian.org>
+0      string          -rom1fs-\0      romfs filesystem, version 1
+>8     belong  x                       %d bytes,
+>16    string  x                       named %s.
+
+# netboot image - Juan Cespedes <cespedes@debian.org>
+0      lelong          0x1b031336L     Netboot image,
+>4     lelong&0xFFFFFF00       0
+>>4    lelong&0x100    0x000           mode 2
+>>4    lelong&0x100    0x100           mode 3
+>4     lelong&0xFFFFFF00       !0      unknown mode
+
+0x18b  string  OS/2    OS/2 Boot Manager
+
+9564   lelong          0x00011954      Unix Fast File system (little-endian),
+>8404  string          x               last mounted on %s,
+#>9504 ledate          x               last checked at %s,
+>8224  ledate          x               last written at %s,
+>8401  byte            x               clean flag %d,
+>8228  lelong          x               number of blocks %d,
+>8232  lelong          x               number of data blocks %d,
+>8236  lelong          x               number of cylinder groups %d,
+>8240  lelong          x               block size %d,
+>8244  lelong          x               fragment size %d,
+>8252  lelong          x               minimum percentage of free blocks %d,
+>8256  lelong          x               rotational delay %dms,
+>8260  lelong          x               disk rotational speed %drps,
+>8320  lelong          0               TIME optimization
+>8320  lelong          1               SPACE optimization
+
+9564   belong          0x00011954      Unix Fast File system (big-endian),
+>7168   long           0x4c41424c      Apple UFS Volume
+>>7186  string         x               named %s,
+>>7176  belong         x               volume label version %d,
+>>7180  bedate         x               created on %s,
+>8404  string          x               last mounted on %s,
+#>9504 bedate          x               last checked at %s,
+>8224  bedate          x               last written at %s,
+>8401  byte            x               clean flag %d,
+>8228  belong          x               number of blocks %d,
+>8232  belong          x               number of data blocks %d,
+>8236  belong          x               number of cylinder groups %d,
+>8240  belong          x               block size %d,
+>8244  belong          x               fragment size %d,
+>8252  belong          x               minimum percentage of free blocks %d,
+>8256  belong          x               rotational delay %dms,
+>8260  belong          x               disk rotational speed %drps,
+>8320  belong          0               TIME optimization
+>8320  belong          1               SPACE optimization
+
+# ext2/ext3 filesystems - Andreas Dilger <adilger@turbolabs.com>
+0x438  leshort         0xEF53          Linux
+>0x44c lelong          x               rev %d
+>0x43e leshort         x               \b.%d
+>0x45c lelong          ^0x0000004      ext2 filesystem data
+>>0x43a        leshort         ^0x0000001      (mounted or unclean)
+>0x45c lelong          &0x0000004      ext3 filesystem data
+>>0x460        lelong          &0x0000004      (needs journal recovery)
+>0x43a leshort         &0x0000002      (errors)
+>0x460 lelong          &0x0000001      (compressed)
+#>0x460        lelong          &0x0000002      (filetype)
+#>0x464        lelong          &0x0000001      (sparse_super)
+>0x464 lelong          &0x0000002      (large files)
+
+# SGI disk labels - Nathan Scott <nathans@debian.org>
+0      belong          0x0BE5A941      SGI disk label (volume header)
+
+# SGI XFS filesystem - Nathan Scott <nathans@debian.org>
+0      belong          0x58465342      SGI XFS filesystem data
+>0x4   belong          x               (blksz %d,
+>0x68  beshort         x               inosz %d,
+>0x64  beshort         ^0x2004         v1 dirs)
+>0x64  beshort         &0x2004         v2 dirs)
+
+############################################################################
+# 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
+
+############################################################################
+# 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          \100\013\360\011\0\022\0\2\0    DOS floppy 1440k
+>0x1FE leshort         0xAA55          \b, x86 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          \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
+
+#  Valid media descriptor bytes for MS-DOS:
+#
+#     Byte   Capacity   Media Size and Type
+#     -------------------------------------------------
+#
+#     F0     2.88 MB    3.5-inch, 2-sided, 36-sector
+#     F0     1.44 MB    3.5-inch, 2-sided, 18-sector
+#     F9     720K       3.5-inch, 2-sided, 9-sector
+#     F9     1.2 MB     5.25-inch, 2-sided, 15-sector
+#     FD     360K       5.25-inch, 2-sided, 9-sector
+#     FF     320K       5.25-inch, 2-sided, 8-sector
+#     FC     180K       5.25-inch, 1-sided, 9-sector
+#     FE     160K       5.25-inch, 1-sided, 8-sector
+#     FE     250K       8-inch, 1-sided, single-density
+#     FD     500K       8-inch, 2-sided, single-density
+#     FE     1.2 MB     8-inch, 2-sided, double-density
+#     F8     -----      Fixed disk 
+#
+#     FC     xxxK       Apricot 70x1x9 boot disk.
+#
+# Originally a bitmap:
+#  xxxxxxx0    Not two sided
+#  xxxxxxx1    Double sided
+#  xxxxxx0x    Not 8 SPT
+#  xxxxxx1x    8 SPT
+#  xxxxx0xx    Not Removable drive
+#  xxxxx1xx    Removable drive
+#  11111xxx    Must be one.
+#
+# But now it's rather random:
+#  111111xx    Low density disk
+#        00    SS, Not 8 SPT
+#        01    DS, Not 8 SPT
+#        10    SS, 8 SPT
+#        11    DS, 8 SPT
+#
+#  11111001    Double density 3½ floppy disk, high density 5¼
+#  11110000    High density 3½ floppy disk
+#  11111000    Hard disk any format
+#
+
+# CDROM Filesystems
+32769    string    CD001     ISO 9660 CD-ROM filesystem data
+# "application id" which appears to be used as a volume label
+>32808  string    >\0       '%s'
+>34816  string    \000CD001\001EL\ TORITO\ SPECIFICATION    (bootable)
+37633    string    CD001     ISO 9660 CD-ROM filesystem data (raw 2352 byte sectors)
+32776    string    CDROM     High Sierra CD-ROM filesystem data
+
+# cramfs filesystem - russell@coker.com.au
+0       lelong    0x28cd3d45      Linux Compressed ROM File System data, little endian
+>4      lelong  x size %d
+>8      lelong  &1 version #2
+>8      lelong  &2 sorted_dirs
+>8      lelong  &4 hole_support
+>32     lelong  x CRC 0x%x,
+>36     lelong  x edition %d,
+>40     lelong  x %d blocks,
+>44     lelong  x %d files
+
+0       belong    0x28cd3d45      Linux Compressed ROM File System data, big endian
+>4      belong  x size %d
+>8      belong  &1 version #2
+>8      belong  &2 sorted_dirs
+>8      belong  &4 hole_support
+>32     belong  x CRC 0x%x,
+>36     belong  x edition %d,
+>40     belong  x %d blocks,
+>44     belong  x %d files
+
+# reiserfs - russell@coker.com.au
+0x10034                string  ReIsErFs        ReiserFS V3.5
+0x10034                string  ReIsEr2Fs       ReiserFS V3.6
+>0x1002c       leshort x               block size %d
+>0x10032       leshort &2              (mounted or unclean)
+>0x10000       lelong  x               num blocks %d
+>0x10040       lelong  1               tea hash
+>0x10040       lelong  2               yura hash
+>0x10040       lelong  3               r5 hash
+
+# JFFS - russell@coker.com.au
+0      lelong  0x34383931      Linux Journalled Flash File system, little endian
+0      belong  0x34383931      Linux Journalled Flash File system, big endian
+
+# EST flat binary format (which isn't, but anyway)
+# From: Mark Brown <broonie@sirena.org.uk>
+0      string  ESTFBINR        EST flat binary
+
+# Aculab VoIP firmware
+# From: Mark Brown <broonie@sirena.org.uk>
+0      string  VoIP\ Startup\ and      Aculab VoIP firmware
+>35    string  x       format %s
+
+# PPCBoot image file
+# From: Mark Brown <broonie@sirena.org.uk>
+0      belong  0x27051956      PPCBoot image
+>4     string  PPCBoot
+>>12   string  x               version %s
+
+# JFFS2 file system
+0       leshort         0x1984                  Linux old jffs2 filesystem data little endian
+0       lelong          0xe0011985              Linux jffs2 filesystem data little endian
+
+# Squashfs
+0      string  sqsh    Squashfs filesystem, big endian,
+>28    beshort x       version %d.
+>30    beshort x       \b%d,
+>8     belong  x       %d bytes,
+>4     belong  x       %d inodes,
+>28    beshort <2
+>>32   beshort x       blocksize: %d bytes,
+>28    beshort >1
+>>51   belong  x       blocksize: %d bytes,
+>39    bedate  x       created: %s
+0      string  hsqs    Squashfs filesystem, little endian,
+>28    leshort x       version %d.
+>30    leshort x       \b%d,
+>8     lelong  x       %d bytes,
+>4     lelong  x       %d inodes,
+>28    leshort <2
+>>32   leshort x       blocksize: %d bytes,
+>28    leshort >1
+>>51   lelong  x       blocksize: %d bytes,
+>39    ledate  x       created: %s
diff --git a/contrib/file-4/magic/Magdir/flash b/contrib/file-4/magic/Magdir/flash
new file mode 100644 (file)
index 0000000..2f343d8
--- /dev/null
@@ -0,0 +1,15 @@
+
+#------------------------------------------------------------------------------
+# flash:       file(1) magic for Macromedia Flash file format
+#
+# See
+#
+#      http://www.macromedia.com/software/flash/open/
+#
+0      string          FWS             Macromedia Flash data,
+>3     byte            x               version %d
+0      string          CWS             Macromedia Flash data (compressed),
+>3     byte            x               version %d
+#
+# From Dave Wilson
+0      string AGD4\xbe\xb8\xbb\xcb\x00 Macromedia Freehand 9 Document
diff --git a/contrib/file-4/magic/Magdir/fonts b/contrib/file-4/magic/Magdir/fonts
new file mode 100644 (file)
index 0000000..6a1ad34
--- /dev/null
@@ -0,0 +1,61 @@
+
+#------------------------------------------------------------------------------
+# fonts:  file(1) magic for font data
+#
+0      string          FONT            ASCII vfont text
+0      short           0436            Berkeley vfont data
+0      short           017001          byte-swapped Berkeley vfont data
+
+# PostScript fonts (must precede "printer" entries), quinlan@yggdrasil.com
+0      string          %!PS-AdobeFont-1.       PostScript Type 1 font text
+>20    string          >\0                     (%s)
+6      string          %!PS-AdobeFont-1.       PostScript Type 1 font program data
+
+# X11 font files in SNF (Server Natural Format) format
+0      belong          00000004                X11 SNF font data, MSB first
+0      lelong          00000004                X11 SNF font data, LSB first
+
+# X11 Bitmap Distribution Format, from Daniel Quinlan (quinlan@yggdrasil.com)
+0      string          STARTFONT\040           X11 BDF font text
+
+# X11 fonts, from Daniel Quinlan (quinlan@yggdrasil.com)
+# PCF must come before SGI additions ("MIPSEL MIPS-II COFF" collides)
+0      string          \001fcp                 X11 Portable Compiled Font data
+>12    byte            0x02                    \b, LSB first
+>12    byte            0x0a                    \b, MSB first
+0      string          D1.0\015                X11 Speedo font data
+
+#------------------------------------------------------------------------------
+# FIGlet fonts and controlfiles
+# From figmagic supplied with Figlet version 2.2
+# "David E. O'Brien" <obrien@FreeBSD.ORG>
+0      string          flf             FIGlet font
+>3     string          >2a             version %-2.2s
+0      string          flc             FIGlet controlfile
+>3     string          >2a             version %-2.2s
+
+# libGrx graphics lib fonts, from Albert Cahalan (acahalan@cs.uml.edu)
+# Used with djgpp (DOS Gnu C++), sometimes Linux or Turbo C++
+0      belong          0x14025919      libGrx font data,
+>8     leshort         x               %dx
+>10    leshort         x               \b%d
+>40    string          x               %s
+# Misc. DOS VGA fonts, from Albert Cahalan (acahalan@cs.uml.edu)
+0      belong          0xff464f4e      DOS code page font data collection
+7      belong          0x00454741      DOS code page font data
+7      belong          0x00564944      DOS code page font data (from Linux?)
+4098   string          DOSFONT         DOSFONT2 encrypted font data
+
+# downloadable fonts for browser (prints type) anthon@mnt.org
+0      string          PFR1            PFR1 font
+>102   string          >0              \b: %s
+
+# True Type fonts
+0      string  \000\001\000\000\000    TrueType font data
+
+0      string          \007\001\001\000Copyright\ (c)\ 199     Adobe Multiple Master font
+0      string          \012\001\001\000Copyright\ (c)\ 199     Adobe Multiple Master font
+
+# Opentype font data from Avi Bercovich
+0      string          OTTO            OpenType font data 
+
diff --git a/contrib/file-4/magic/Magdir/frame b/contrib/file-4/magic/Magdir/frame
new file mode 100644 (file)
index 0000000..1b397df
--- /dev/null
@@ -0,0 +1,38 @@
+
+#------------------------------------------------------------------------------
+# frame:  file(1) magic for FrameMaker files
+#
+# This stuff came on a FrameMaker demo tape, most of which is
+# copyright, but this file is "published" as witness the following:
+#
+0      string          \<MakerFile     FrameMaker document
+>11    string          5.5              (5.5
+>11    string          5.0              (5.0
+>11    string          4.0              (4.0
+>11    string          3.0              (3.0
+>11    string          2.0              (2.0
+>11    string          1.0              (1.0
+>14    byte            x                 %c)
+0      string          \<MIFFile       FrameMaker MIF (ASCII) file
+>9     string          4.0              (4.0)
+>9     string          3.0              (3.0)
+>9     string          2.0              (2.0)
+>9     string          1.0              (1.x)
+0      string          \<MakerDictionary       FrameMaker Dictionary text
+>17    string          3.0              (3.0)
+>17    string          2.0              (2.0)
+>17    string          1.0              (1.x)
+0      string          \<MakerScreenFont       FrameMaker Font file
+>17    string          1.01             (%s)
+0      string          \<MML           FrameMaker MML file
+0      string          \<BookFile      FrameMaker Book file
+>10    string          3.0              (3.0
+>10    string          2.0              (2.0
+>10    string          1.0              (1.0
+>13    byte            x                 %c)
+# XXX - this book entry should be verified, if you find one, uncomment this
+#0     string          \<Book\         FrameMaker Book (ASCII) file
+#>6    string          3.0              (3.0)
+#>6    string          2.0              (2.0)
+#>6    string          1.0              (1.0)
+0      string          \<Maker Intermediate Print File FrameMaker IPL file
diff --git a/contrib/file-4/magic/Magdir/freebsd b/contrib/file-4/magic/Magdir/freebsd
new file mode 100644 (file)
index 0000000..ee710fa
--- /dev/null
@@ -0,0 +1,143 @@
+
+#------------------------------------------------------------------------------
+# freebsd:  file(1) magic for FreeBSD objects
+#
+# All new-style FreeBSD magic numbers are in host byte order (i.e.,
+# little-endian on x86).
+#
+# XXX - this comes from the file "freebsd" in a recent FreeBSD version of
+# "file"; it, and the NetBSD stuff in "netbsd", appear to use different
+# schemes for distinguishing between executable images, shared libraries,
+# and object files.
+#
+# FreeBSD says:
+#
+#    Regardless of whether it's pure, demand-paged, or none of the
+#    above:
+#
+#      if the entry point is < 4096, then it's a shared library if
+#      the "has run-time loader information" bit is set, and is
+#      position-independent if the "is position-independent" bit
+#      is set;
+#
+#      if the entry point is >= 4096 (or >4095, same thing), then it's
+#      an executable, and is dynamically-linked if the "has run-time
+#      loader information" bit is set.
+#
+# On x86, NetBSD says:
+#
+#    If it's neither pure nor demand-paged:
+#
+#      if it has the "has run-time loader information" bit set, it's
+#      a dynamically-linked executable;
+#
+#      if it doesn't have that bit set, then:
+#
+#          if it has the "is position-independent" bit set, it's
+#          position-independent;
+#
+#          if the entry point is non-zero, it's an executable, otherwise
+#          it's an object file.
+#
+#    If it's pure:
+#
+#      if it has the "has run-time loader information" bit set, it's
+#      a dynamically-linked executable, otherwise it's just an
+#      executable.
+#
+#    If it's demand-paged:
+#
+#      if it has the "has run-time loader information" bit set,
+#      then:
+#
+#          if the entry point is < 4096, it's a shared library;
+#
+#          if the entry point is = 4096 or > 4096 (i.e., >= 4096),
+#          it's a dynamically-linked executable);
+#
+#      if it doesn't have the "has run-time loader information" bit
+#      set, then it's just an executable.
+#
+# (On non-x86, NetBSD does much the same thing, except that it uses
+# 8192 on 68K - except for "68k4k", which is presumably "68K with 4K
+# pages - SPARC, and MIPS, presumably because Sun-3's and Sun-4's
+# had 8K pages; dunno about MIPS.)
+#
+# I suspect the two will differ only in perverse and uninteresting cases
+# ("shared" libraries that aren't demand-paged and whose pages probably
+# won't actually be shared, executables with entry points <4096).
+#
+# I leave it to those more familiar with FreeBSD and NetBSD to figure out
+# what the right answer is (although using ">4095", FreeBSD-style, is
+# probably better than separately checking for "=4096" and ">4096",
+# NetBSD-style).  (The old "netbsd" file analyzed FreeBSD demand paged
+# executables using the NetBSD technique.)
+#
+0      lelong&0377777777       041400407       FreeBSD/i386
+>20    lelong                  <4096
+>>3    byte&0xC0               &0x80           shared library
+>>3    byte&0xC0               0x40            PIC object
+>>3    byte&0xC0               0x00            object
+>20    lelong                  >4095
+>>3    byte&0x80               0x80            dynamically linked executable
+>>3    byte&0x80               0x00            executable
+>16    lelong                  >0              not stripped
+
+0      lelong&0377777777       041400410       FreeBSD/i386 pure
+>20    lelong                  <4096
+>>3    byte&0xC0               &0x80           shared library
+>>3    byte&0xC0               0x40            PIC object
+>>3    byte&0xC0               0x00            object
+>20    lelong                  >4095
+>>3    byte&0x80               0x80            dynamically linked executable
+>>3    byte&0x80               0x00            executable
+>16    lelong                  >0              not stripped
+
+0      lelong&0377777777       041400413       FreeBSD/i386 demand paged
+>20    lelong                  <4096
+>>3    byte&0xC0               &0x80           shared library
+>>3    byte&0xC0               0x40            PIC object
+>>3    byte&0xC0               0x00            object
+>20    lelong                  >4095
+>>3    byte&0x80               0x80            dynamically linked executable
+>>3    byte&0x80               0x00            executable
+>16    lelong                  >0              not stripped
+
+0      lelong&0377777777       041400314       FreeBSD/i386 compact demand paged
+>20    lelong                  <4096
+>>3    byte&0xC0               &0x80           shared library
+>>3    byte&0xC0               0x40            PIC object
+>>3    byte&0xC0               0x00            object
+>20    lelong                  >4095
+>>3    byte&0x80               0x80            dynamically linked executable
+>>3    byte&0x80               0x00            executable
+>16    lelong                  >0              not stripped
+
+# XXX gross hack to identify core files
+# cores start with a struct tss; we take advantage of the following:
+# byte 7:     highest byte of the kernel stack pointer, always 0xfe
+#      8/9:   kernel (ring 0) ss value, always 0x0010
+#      10 - 27: ring 1 and 2 ss/esp, unused, thus always 0
+#      28:    low order byte of the current PTD entry, always 0 since the
+#             PTD is page-aligned
+#
+7      string  \357\020\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0        FreeBSD/i386 a.out core file
+>1039  string  >\0     from '%s'
+
+# /var/run/ld.so.hints
+# What are you laughing about?
+0      lelong                  011421044151    ld.so hints file (Little Endian
+>4     lelong                  >0              \b, version %d)
+>4     belong                  <=0             \b)
+0      belong                  011421044151    ld.so hints file (Big Endian
+>4     belong                  >0              \b, version %d)
+>4     belong                  <=0             \b)
+
+#
+# Files generated by FreeBSD scrshot(1)/vidcontrol(1) utilities
+#
+0      string  SCRSHOT_        scrshot(1) screenshot,
+>8     byte    x               version %d,
+>9     byte    2               %d bytes in header,
+>>10   byte    x               %d chars wide by
+>>11   byte    x               %d chars high
diff --git a/contrib/file-4/magic/Magdir/fsav b/contrib/file-4/magic/Magdir/fsav
new file mode 100644 (file)
index 0000000..4218936
--- /dev/null
@@ -0,0 +1,27 @@
+
+#------------------------------------------------------------------------------
+# fsav:  file(1) magic for datafellows fsav virus definition files
+# Anthon van der Neut (anthon@mnt.org)
+0      beshort         0x1575          fsav (linux) macro virus
+>8     leshort         >0              (%d-
+>11    byte            >0              \b%02d-
+>10    byte            >0              \b%02d)
+
+# comment this out for now because it regognizes every file where
+# the eighth character is \n
+#8     byte            0x0a
+#>12   byte            0x07
+#>11   leshort         >0              fsav (linux) virus (%d-
+#>10   byte            0               \b01-
+#>10   byte            1               \b02-
+#>10   byte            2               \b03-
+#>10   byte            3               \b04-
+#>10   byte            4               \b05-
+#>10   byte            5               \b06-
+#>10   byte            6               \b07-
+#>10   byte            7               \b08-
+#>10   byte            8               \b08-
+#>10   byte            9               \b10-
+#>10   byte            10              \b11-
+#>10   byte            11              \b12-
+#>9    byte            >0              \b%02d)
diff --git a/contrib/file-4/magic/Magdir/games b/contrib/file-4/magic/Magdir/games
new file mode 100644 (file)
index 0000000..2dc17da
--- /dev/null
@@ -0,0 +1,157 @@
+#------------------------------------------------------------------------------
+# games:  file(1) for games
+
+# Thomas M. Ott (ThMO)
+1      string  =WAD            DOOM data,
+>0     string  =I              main wad
+>0     string  =P              patch wad
+>0     byte    x               unknown junk
+
+# Fabio Bonelli <fabiobonelli@libero.it>
+# Quake II - III data files
+0       string  IDP2           Quake II 3D Model file,
+>20     long    x               %lu skin(s),
+>8      long    x               (%lu x
+>12     long    x              %lu),
+>40     long    x               %lu frame(s),
+>16     long    x               Frame size %lu bytes,
+>24     long   x               %lu vertices/frame,
+>28     long    x              %lu texture coordinates,
+>32     long    x               %lu triangles/frame
+
+0       string  IBSP            Quake
+>4      long    0x26            II Map file (BSP)
+>4      long    0x2E           III Map file (BSP)
+
+0       string  IDS2            Quake II SP2 sprite file
+
+#---------------------------------------------------------------------------
+# Doom and Quake
+# submitted by Nicolas Patrois
+
+# DOOM
+
+0       string  IWAD    DOOM or DOOM ][ world
+0       string  PWAD    DOOM or DOOM ][ extension world
+
+0       string  \xcb\x1dBoom\xe6\xff\x03\x01    Boom or linuxdoom demo
+# some doom lmp files don't match, I've got one beginning with \x6d\x02\x01\x01
+
+24      string  LxD\ 203        Linuxdoom save
+>0      string  x       , name=%s
+>44     string  x       , world=%s
+
+# Quake
+
+0       string  PACK    Quake I or II world or extension
+
+#0       string  -1\x0a  Quake I demo
+#>30     string  x        version %.4s
+#>61     string  x        level %s       
+
+#0       string  5\x0a   Quake I save
+
+# The levels
+
+# Quake 1
+
+0      string  5\x0aIntroduction             Quake I save: start Introduction
+0      string  5\x0athe_Slipgate_Complex     Quake I save: e1m1 The slipgate complex
+0      string  5\x0aCastle_of_the_Damned     Quake I save: e1m2 Castle of the damned
+0      string  5\x0athe_Necropolis           Quake I save: e1m3 The necropolis
+0      string  5\x0athe_Grisly_Grotto        Quake I save: e1m4 The grisly grotto
+0      string  5\x0aZiggurat_Vertigo         Quake I save: e1m8 Ziggurat vertigo (secret)
+0      string  5\x0aGloom_Keep               Quake I save: e1m5 Gloom keep
+0      string  5\x0aThe_Door_To_Chthon       Quake I save: e1m6 The door to Chthon
+0      string  5\x0aThe_House_of_Chthon      Quake I save: e1m7 The house of Chthon
+0      string  5\x0athe_Installation         Quake I save: e2m1 The installation
+0      string  5\x0athe_Ogre_Citadel         Quake I save: e2m2 The ogre citadel
+0      string  5\x0athe_Crypt_of_Decay       Quake I save: e2m3 The crypt of decay (dopefish lives!)
+0      string  5\x0aUnderearth               Quake I save: e2m7 Underearth (secret)
+0      string  5\x0athe_Ebon_Fortress        Quake I save: e2m4 The ebon fortress
+0      string  5\x0athe_Wizard's_Manse       Quake I save: e2m5 The wizard's manse
+0      string  5\x0athe_Dismal_Oubliette     Quake I save: e2m6 The dismal oubliette
+0      string  5\x0aTermination_Central      Quake I save: e3m1 Termination central
+0      string  5\x0aVaults_of_Zin            Quake I save: e3m2 Vaults of Zin
+0      string  5\x0athe_Tomb_of_Terror       Quake I save: e3m3 The tomb of terror
+0      string  5\x0aSatan's_Dark_Delight     Quake I save: e3m4 Satan's dark delight
+0      string  5\x0athe_Haunted_Halls        Quake I save: e3m7 The haunted halls (secret)
+0      string  5\x0aWind_Tunnels             Quake I save: e3m5 Wind tunnels
+0      string  5\x0aChambers_of_Torment      Quake I save: e3m6 Chambers of torment
+0      string  5\x0athe_Sewage_System        Quake I save: e4m1 The sewage system
+0      string  5\x0aThe_Tower_of_Despair     Quake I save: e4m2 The tower of despair
+0      string  5\x0aThe_Elder_God_Shrine     Quake I save: e4m3 The elder god shrine
+0      string  5\x0athe_Palace_of_Hate       Quake I save: e4m4 The palace of hate
+0      string  5\x0aHell's_Atrium            Quake I save: e4m5 Hell's atrium
+0      string  5\x0athe_Nameless_City        Quake I save: e4m8 The nameless city (secret)
+0      string  5\x0aThe_Pain_Maze            Quake I save: e4m6 The pain maze
+0      string  5\x0aAzure_Agony              Quake I save: e4m7 Azure agony
+0      string  5\x0aShub-Niggurath's_Pit     Quake I save: end Shub-Niggurath's pit
+
+# Quake DeathMatch levels
+
+0      string  5\x0aPlace_of_Two_Deaths         Quake I save: dm1 Place of two deaths
+0      string  5\x0aClaustrophobopolis          Quake I save: dm2 Claustrophobopolis
+0      string  5\x0aThe_Abandoned_Base          Quake I save: dm3 The abandoned base
+0      string  5\x0aThe_Bad_Place               Quake I save: dm4 The bad place
+0      string  5\x0aThe_Cistern                 Quake I save: dm5 The cistern
+0      string  5\x0aThe_Dark_Zone               Quake I save: dm6 The dark zone
+
+# Scourge of Armagon
+
+0      string  5\x0aCommand_HQ               Quake I save: start Command HQ
+0      string  5\x0aThe_Pumping_Station      Quake I save: hip1m1 The pumping station
+0      string  5\x0aStorage_Facility         Quake I save: hip1m2 Storage facility
+0      string  5\x0aMilitary_Complex         Quake I save: hip1m5 Military complex (secret)
+0      string  5\x0athe_Lost_Mine            Quake I save: hip1m3 The lost mine
+0      string  5\x0aResearch_Facility        Quake I save: hip1m4 Research facility
+0      string  5\x0aAncient_Realms           Quake I save: hip2m1 Ancient realms
+0      string  5\x0aThe_Gremlin's_Domain     Quake I save: hip2m6 The gremlin's domain (secret)
+0      string  5\x0aThe_Black_Cathedral      Quake I save: hip2m2 The black cathedral
+0      string  5\x0aThe_Catacombs            Quake I save: hip2m3 The catacombs
+0      string  5\x0athe_Crypt__              Quake I save: hip2m4 The crypt
+0      string  5\x0aMortum's_Keep            Quake I save: hip2m5 Mortum's keep
+0      string  5\x0aTur_Torment              Quake I save: hip3m1 Tur torment
+0      string  5\x0aPandemonium              Quake I save: hip3m2 Pandemonium
+0      string  5\x0aLimbo                    Quake I save: hip3m3 Limbo
+0      string  5\x0athe_Edge_of_Oblivion     Quake I save: hipdm1 The edge of oblivion (secret)
+0      string  5\x0aThe_Gauntlet             Quake I save: hip3m4 The gauntlet
+0      string  5\x0aArmagon's_Lair           Quake I save: hipend Armagon's lair
+
+# Malice
+
+0      string  5\x0aThe_Academy      Quake I save: start The academy
+0      string  5\x0aThe_Lab          Quake I save: d1 The lab
+0      string  5\x0aArea_33          Quake I save: d1b Area 33
+0      string  5\x0aSECRET_MISSIONS  Quake I save: d3b Secret missions
+0      string  5\x0aThe_Hospital     Quake I save: d10 The hospital (secret)
+0      string  5\x0aThe_Genetics_Lab Quake I save: d11 The genetics lab (secret)
+0      string  5\x0aBACK_2_MALICE    Quake I save: d4b Back to Malice
+0      string  5\x0aArea44           Quake I save: d1c Area 44
+0      string  5\x0aTakahiro_Towers  Quake I save: d2 Takahiro towers
+0      string  5\x0aA_Rat's_Life     Quake I save: d3 A rat's life
+0      string  5\x0aInto_The_Flood   Quake I save: d4 Into the flood
+0      string  5\x0aThe_Flood        Quake I save: d5 The flood
+0      string  5\x0aNuclear_Plant    Quake I save: d6 Nuclear plant
+0      string  5\x0aThe_Incinerator_Plant    Quake I save: d7 The incinerator plant
+0      string  5\x0aThe_Foundry              Quake I save: d7b The foundry
+0      string  5\x0aThe_Underwater_Base      Quake I save: d8 The underwater base
+0      string  5\x0aTakahiro_Base            Quake I save: d9 Takahiro base
+0      string  5\x0aTakahiro_Laboratories    Quake I save: d12 Takahiro laboratories
+0      string  5\x0aStayin'_Alive    Quake I save: d13 Stayin' alive
+0      string  5\x0aB.O.S.S._HQ      Quake I save: d14 B.O.S.S. HQ
+0      string  5\x0aSHOWDOWN!        Quake I save: d15 Showdown!
+
+# Malice DeathMatch levels
+
+0      string  5\x0aThe_Seventh_Precinct        Quake I save: ddm1 The seventh precinct
+0      string  5\x0aSub_Station                 Quake I save: ddm2 Sub station
+0      string  5\x0aCrazy_Eights!               Quake I save: ddm3 Crazy eights!
+0      string  5\x0aEast_Side_Invertationa      Quake I save: ddm4 East side invertationa
+0      string  5\x0aSlaughterhouse              Quake I save: ddm5 Slaughterhouse
+0      string  5\x0aDOMINO                      Quake I save: ddm6 Domino
+0      string  5\x0aSANDRA'S_LADDER             Quake I save: ddm7 Sandra's ladder
+
+
+0      string  MComprHD        MAME CHD compressed hard disk image,
+>12    belong  x               version %lu
diff --git a/contrib/file-4/magic/Magdir/gcc b/contrib/file-4/magic/Magdir/gcc
new file mode 100644 (file)
index 0000000..ee726f3
--- /dev/null
@@ -0,0 +1,16 @@
+
+#------------------------------------------------------------------------------
+# gcc:  file(1) magic for GCC special files
+#
+0      string          gpch            GCC precompiled header
+
+# The version field is annoying.  It's 3 characters, not zero-terminated.
+>5     byte            x                       (version %c
+>6     byte            x                       \b%c
+>7     byte            x                       \b%c)
+
+# 67 = 'C', 111 = 'o', 43 = '+', 79 = 'O'
+>4     byte            67                      for C
+>4     byte            111                     for Objective C
+>4     byte            43                      for C++
+>4     byte            79                      for Objective C++
diff --git a/contrib/file-4/magic/Magdir/geos b/contrib/file-4/magic/Magdir/geos
new file mode 100644 (file)
index 0000000..af1df7b
--- /dev/null
@@ -0,0 +1,19 @@
+
+#------------------------------------------------------------------------------
+# GEOS files (Vidar Madsen, vidar@gimp.org)
+# semi-commonly used in embedded and handheld systems.
+0      belong  0xc745c153      GEOS
+>40    byte    1       executable
+>40    byte    2       VMFile
+>40    byte    3       binary
+>40    byte    4       directory label
+>40    byte    <1      unknown
+>40    byte    >4      unknown
+>4     string  >\0     \b, name "%s"
+#>44   short   x       \b, version %d
+#>46   short   x       \b.%d
+#>48   short   x       \b, rev %d
+#>50   short   x       \b.%d
+#>52   short   x       \b, proto %d
+#>54   short   x       \br%d
+#>168  string  >\0     \b, copyright "%s"
diff --git a/contrib/file-4/magic/Magdir/gimp b/contrib/file-4/magic/Magdir/gimp
new file mode 100644 (file)
index 0000000..9a9d61e
--- /dev/null
@@ -0,0 +1,36 @@
+#------------------------------------------------------------------------------
+# GIMP Gradient: file(1) magic for the GIMP's gradient data files
+# by Federico Mena <federico@nuclecu.unam.mx>
+
+0       string          GIMP\ Gradient  GIMP gradient data
+
+#------------------------------------------------------------------------------
+# XCF:  file(1) magic for the XCF image format used in the GIMP developed
+#       by Spencer Kimball and Peter Mattis
+#       ('Bucky' LaDieu, nega@vt.edu)
+
+0      string          gimp\ xcf       GIMP XCF image data,
+>9     string          file            version 0,
+>9     string          v               version
+>>10   string          >\0             %s,
+>14    belong          x               %lu x
+>18    belong          x               %lu,
+>22     belong          0               RGB Color
+>22     belong          1               Greyscale
+>22     belong          2               Indexed Color
+>22    belong          >2              Unknown Image Type.
+
+#------------------------------------------------------------------------------
+# XCF:  file(1) magic for the patterns used in the GIMP, developed
+#       by Spencer Kimball and Peter Mattis
+#       ('Bucky' LaDieu, nega@vt.edu)
+
+20      string          GPAT            GIMP pattern data,
+>24     string          x               %s
+
+#------------------------------------------------------------------------------
+# XCF:  file(1) magic for the brushes used in the GIMP, developed
+#       by Spencer Kimball and Peter Mattis
+#       ('Bucky' LaDieu, nega@vt.edu)
+
+20      string          GIMP            GIMP brush data
diff --git a/contrib/file-4/magic/Magdir/gnu b/contrib/file-4/magic/Magdir/gnu
new file mode 100644 (file)
index 0000000..212dfc7
--- /dev/null
@@ -0,0 +1,30 @@
+#
+# GNU nlsutils message catalog file format
+#
+0      string          \336\22\4\225   GNU message catalog (little endian),
+>4     lelong          x               revision %d,
+>8     lelong          x               %d messages
+0      string          \225\4\22\336   GNU message catalog (big endian),
+>4     belong          x               revision %d,
+>8     belong          x               %d messages
+# message catalogs, from Mitchum DSouza <m.dsouza@mrc-apu.cam.ac.uk>
+0      string          *nazgul*        Nazgul style compiled message catalog
+>8     lelong          >0              \b, version %ld
+# GnuPG
+# The format is very similar to pgp
+0      string          \001gpg                 GPG key trust database
+>4     byte            x                       version %d
+0       beshort         0x9901                  GPG key public ring
+# This magic is not particularly good, as the keyrings don't have true
+# magic. Nevertheless, it covers many keyrings.
+
+# 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
+39      string          =<gmr:Workbook           Gnumeric spreadsheet
+
+# From: James Youngman <jay@gnu.org> 
+# gnu find magic
+0      string  \0LOCATE        GNU findutils locate database data
+>7     string  >\0             \b, format %s
+>7     string  02              \b (frcode)
diff --git a/contrib/file-4/magic/Magdir/grace b/contrib/file-4/magic/Magdir/grace
new file mode 100644 (file)
index 0000000..a5f1433
--- /dev/null
@@ -0,0 +1,20 @@
+
+#------------------------------------------------------------------------------
+# ACE/gr and Grace type files - PLEASE DO NOT REMOVE THIS LINE
+#
+# ACE/gr binary
+0      string  \000\000\0001\000\000\0000\000\000\0000\000\000\0002\000\000\0000\000\000\0000\000\000\0003             old ACE/gr binary file
+>39    byte    >0                      - version %c
+# ACE/gr ascii
+0      string  #\ xvgr\ parameter\ file        ACE/gr ascii file
+0      string  #\ xmgr\ parameter\ file        ACE/gr ascii file
+0      string  #\ ACE/gr\ parameter\ file      ACE/gr ascii file
+# Grace projects
+0      string  #\ Grace\ project\ file         Grace project file
+>23    string  @version\                       (version
+>>32   byte    >0                              %c
+>>33   string  >\0                             \b.%.2s
+>>35   string  >\0                             \b.%.2s)
+# ACE/gr fit description files
+0      string  #\ ACE/gr\ fit\ description\    ACE/gr fit description file
+# end of ACE/gr and Grace type files - PLEASE DO NOT REMOVE THIS LINE
diff --git a/contrib/file-4/magic/Magdir/gringotts b/contrib/file-4/magic/Magdir/gringotts
new file mode 100644 (file)
index 0000000..6e833a3
--- /dev/null
@@ -0,0 +1,47 @@
+
+#------------------------------------------------------------------------------
+# gringotts:  file(1) magic for Gringotts
+# http://devel.pluto.linux.it/projects/Gringotts/
+# author: Germano Rizzo <mano@pluto.linux.it>
+#GRG3????Y
+0      string  GRG             Gringotts data file
+#file format 1
+>3     string          1               v.1, MCRYPT S2K, SERPENT crypt, SHA-256 hash, ZLib lvl.9
+#file format 2
+>3     string          2               v.2, MCRYPT S2K, 
+>>8    byte&0x70       0x00            RIJNDAEL-128 crypt,
+>>8    byte&0x70       0x10            SERPENT crypt,
+>>8    byte&0x70       0x20            TWOFISH crypt, 
+>>8    byte&0x70       0x30            CAST-256 crypt,
+>>8    byte&0x70       0x40            SAFER+ crypt,
+>>8    byte&0x70       0x50            LOKI97 crypt,
+>>8    byte&0x70       0x60            3DES crypt,
+>>8    byte&0x70       0x70            RIJNDAEL-256 crypt,
+>>8    byte&0x08       0x00            SHA1 hash,
+>>8    byte&0x08       0x08            RIPEMD-160 hash,
+>>8    byte&0x04       0x00            ZLib
+>>8    byte&0x04       0x04            BZip2
+>>8    byte&0x03       0x00            lvl.0
+>>8    byte&0x03       0x01            lvl.3
+>>8    byte&0x03       0x02            lvl.6
+>>8    byte&0x03       0x03            lvl.9
+#file format 3
+>3     string          3               v.3, OpenPGP S2K, 
+>>8    byte&0x70       0x00            RIJNDAEL-128 crypt,
+>>8    byte&0x70       0x10            SERPENT crypt,
+>>8    byte&0x70       0x20            TWOFISH crypt, 
+>>8    byte&0x70       0x30            CAST-256 crypt,
+>>8    byte&0x70       0x40            SAFER+ crypt,
+>>8    byte&0x70       0x50            LOKI97 crypt,
+>>8    byte&0x70       0x60            3DES crypt,
+>>8    byte&0x70       0x70            RIJNDAEL-256 crypt,
+>>8    byte&0x08       0x00            SHA1 hash,
+>>8    byte&0x08       0x08            RIPEMD-160 hash,
+>>8    byte&0x04       0x00            ZLib
+>>8    byte&0x04       0x04            BZip2
+>>8    byte&0x03       0x00            lvl.0
+>>8    byte&0x03       0x01            lvl.3
+>>8    byte&0x03       0x02            lvl.6
+>>8    byte&0x03       0x03            lvl.9
+#file format >3
+>3     string          >3              v.%.1s (unknown details)
diff --git a/contrib/file-4/magic/Magdir/hdf b/contrib/file-4/magic/Magdir/hdf
new file mode 100644 (file)
index 0000000..10a21b6
--- /dev/null
@@ -0,0 +1,7 @@
+
+#------------------------------------------------------------------------------
+# Hierarchical Data Format, used to facilitate scientific data exchange
+# specifications at http://hdf.ncsa.uiuc.edu/
+
+0      belong          0x0e031301      Hierarchical Data Format (version 4) data
+0      string          \211HDF\r\n\032 Hierarchical Data Format (version 5) data
diff --git a/contrib/file-4/magic/Magdir/hitachi-sh b/contrib/file-4/magic/Magdir/hitachi-sh
new file mode 100644 (file)
index 0000000..a096eeb
--- /dev/null
@@ -0,0 +1,18 @@
+
+#------------------------------------------------------------------------------
+# hitach-sh: file(1) magic for Hitachi Super-H
+#
+# Super-H COFF
+#
+0      beshort         0x0500          Hitachi SH big-endian COFF
+>18    beshort&0x0002  =0x0000         object
+>18    beshort&0x0002  =0x0002         executable
+>18    beshort&0x0008  =0x0008         \b, stripped
+>18    beshort&0x0008  =0x0000         \b, not stripped
+#
+0      leshort         0x0550          Hitachi SH little-endian COFF
+>18    leshort&0x0002  =0x0000         object
+>18    leshort&0x0002  =0x0002         executable
+>18    leshort&0x0008  =0x0008         \b, stripped
+>18    leshort&0x0008  =0x0000         \b, not stripped
+
diff --git a/contrib/file-4/magic/Magdir/hp b/contrib/file-4/magic/Magdir/hp
new file mode 100644 (file)
index 0000000..052f09a
--- /dev/null
@@ -0,0 +1,395 @@
+
+#------------------------------------------------------------------------------
+# hp:  file(1) magic for Hewlett Packard machines (see also "printer")
+#
+# XXX - somebody should figure out whether any byte order needs to be
+# applied to the "TML" stuff; I'm assuming the Apollo stuff is
+# big-endian as it was mostly 68K-based.
+#
+# I think the 500 series was the old stack-based machines, running a
+# UNIX environment atop the "SUN kernel"; dunno whether it was
+# big-endian or little-endian.
+#
+# Daniel Quinlan (quinlan@yggdrasil.com): hp200 machines are 68010 based;
+# hp300 are 68020+68881 based; hp400 are also 68k.  The following basic
+# HP magic is useful for reference, but using "long" magic is a better
+# practice in order to avoid collisions.
+#
+# Guy Harris (guy@netapp.com): some additions to this list came from
+# HP-UX 10.0's "/usr/include/sys/unistd.h" (68030, 68040, PA-RISC 1.1,
+# 1.2, and 2.0).  The 1.2 and 2.0 stuff isn't in the HP-UX 10.0
+# "/etc/magic", though, except for the "archive file relocatable library"
+# stuff, and the 68030 and 68040 stuff isn't there at all - are they not
+# used in executables, or have they just not yet updated "/etc/magic"
+# completely?
+#
+# 0    beshort         200             hp200 (68010) BSD binary
+# 0    beshort         300             hp300 (68020+68881) BSD binary
+# 0    beshort         0x20c           hp200/300 HP-UX binary
+# 0    beshort         0x20d           hp400 (68030) HP-UX binary
+# 0    beshort         0x20e           hp400 (68040?) HP-UX binary
+# 0    beshort         0x20b           PA-RISC1.0 HP-UX binary
+# 0    beshort         0x210           PA-RISC1.1 HP-UX binary
+# 0    beshort         0x211           PA-RISC1.2 HP-UX binary
+# 0    beshort         0x214           PA-RISC2.0 HP-UX binary
+
+#
+# The "misc" stuff needs a byte order; the archives look suspiciously
+# like the old 177545 archives (0xff65 = 0177545).
+#
+#### Old Apollo stuff
+0      beshort         0627            Apollo m68k COFF executable
+>18    beshort         ^040000         not stripped
+>22    beshort         >0              - version %ld
+0      beshort         0624            apollo a88k COFF executable
+>18    beshort         ^040000         not stripped
+>22    beshort         >0              - version %ld
+0       long            01203604016     TML 0123 byte-order format
+0       long            01702407010     TML 1032 byte-order format
+0       long            01003405017     TML 2301 byte-order format
+0       long            01602007412     TML 3210 byte-order format
+#### PA-RISC 1.1
+0      belong          0x02100106      PA-RISC1.1 relocatable object
+0      belong          0x02100107      PA-RISC1.1 executable
+>168   belong          &0x00000004     dynamically linked
+>(144) belong          0x054ef630      dynamically linked
+>96    belong          >0              - not stripped
+
+0      belong          0x02100108      PA-RISC1.1 shared executable
+>168   belong&0x4      0x4             dynamically linked
+>(144) belong          0x054ef630      dynamically linked
+>96    belong          >0              - not stripped
+
+0      belong          0x0210010b      PA-RISC1.1 demand-load executable
+>168   belong&0x4      0x4             dynamically linked
+>(144) belong          0x054ef630      dynamically linked
+>96    belong          >0              - not stripped
+
+0      belong          0x0210010e      PA-RISC1.1 shared library
+>96    belong          >0              - not stripped
+
+0      belong          0x0210010d      PA-RISC1.1 dynamic load library
+>96    belong          >0              - not stripped
+
+#### PA-RISC 2.0
+0      belong          0x02140106      PA-RISC2.0 relocatable object
+
+0       belong         0x02140107      PA-RISC2.0 executable
+>168   belong          &0x00000004     dynamically linked
+>(144) belong          0x054ef630      dynamically linked
+>96    belong          >0              - not stripped
+
+0       belong         0x02140108      PA-RISC2.0 shared executable
+>168   belong          &0x00000004     dynamically linked
+>(144) belong          0x054ef630      dynamically linked
+>96    belong          >0              - not stripped
+
+0       belong         0x0214010b      PA-RISC2.0 demand-load executable
+>168   belong          &0x00000004     dynamically linked
+>(144) belong          0x054ef630      dynamically linked
+>96    belong          >0              - not stripped
+
+0       belong         0x0214010e      PA-RISC2.0 shared library
+>96    belong          >0              - not stripped
+
+0       belong         0x0214010d      PA-RISC2.0 dynamic load library
+>96    belong          >0              - not stripped
+
+#### 800
+0      belong          0x020b0106      PA-RISC1.0 relocatable object
+
+0      belong          0x020b0107      PA-RISC1.0 executable
+>168   belong&0x4      0x4             dynamically linked
+>(144) belong          0x054ef630      dynamically linked
+>96    belong          >0              - not stripped
+
+0      belong          0x020b0108      PA-RISC1.0 shared executable
+>168   belong&0x4      0x4             dynamically linked
+>(144) belong          0x054ef630      dynamically linked
+>96    belong          >0              - not stripped
+
+0      belong          0x020b010b      PA-RISC1.0 demand-load executable
+>168   belong&0x4      0x4             dynamically linked
+>(144) belong          0x054ef630      dynamically linked
+>96    belong          >0              - not stripped
+
+0      belong          0x020b010e      PA-RISC1.0 shared library
+>96    belong          >0              - not stripped
+
+0      belong          0x