file: update vendor branch to v5.04
authorJan Lentfer <Jan.Lentfer@web.de>
Mon, 25 Jan 2010 19:07:20 +0000 (20:07 +0100)
committerJan Lentfer <Jan.Lentfer@web.de>
Mon, 25 Jan 2010 19:07:20 +0000 (20:07 +0100)
232 files changed:
contrib/file/ChangeLog
contrib/file/README.DRAGONFLY [new file with mode: 0644]
contrib/file/doc/file.man
contrib/file/doc/libmagic.man
contrib/file/doc/magic.man
contrib/file/magic/Magdir/acorn
contrib/file/magic/Magdir/adi
contrib/file/magic/Magdir/adventure
contrib/file/magic/Magdir/allegro
contrib/file/magic/Magdir/alliant
contrib/file/magic/Magdir/alpha
contrib/file/magic/Magdir/amanda
contrib/file/magic/Magdir/amigaos
contrib/file/magic/Magdir/animation
contrib/file/magic/Magdir/apl
contrib/file/magic/Magdir/apple
contrib/file/magic/Magdir/applix
contrib/file/magic/Magdir/archive
contrib/file/magic/Magdir/asterix
contrib/file/magic/Magdir/att3b
contrib/file/magic/Magdir/audio
contrib/file/magic/Magdir/basis
contrib/file/magic/Magdir/bflt
contrib/file/magic/Magdir/blender
contrib/file/magic/Magdir/blit
contrib/file/magic/Magdir/bout
contrib/file/magic/Magdir/bsdi
contrib/file/magic/Magdir/btsnoop
contrib/file/magic/Magdir/c-lang
contrib/file/magic/Magdir/c64
contrib/file/magic/Magdir/cad
contrib/file/magic/Magdir/cafebabe
contrib/file/magic/Magdir/cddb
contrib/file/magic/Magdir/chord
contrib/file/magic/Magdir/cisco
contrib/file/magic/Magdir/citrus
contrib/file/magic/Magdir/clarion
contrib/file/magic/Magdir/claris
contrib/file/magic/Magdir/clipper
contrib/file/magic/Magdir/commands
contrib/file/magic/Magdir/communications
contrib/file/magic/Magdir/compress
contrib/file/magic/Magdir/console
contrib/file/magic/Magdir/convex
contrib/file/magic/Magdir/cracklib
contrib/file/magic/Magdir/ctags
contrib/file/magic/Magdir/dact
contrib/file/magic/Magdir/database
contrib/file/magic/Magdir/diamond
contrib/file/magic/Magdir/diff
contrib/file/magic/Magdir/digital
contrib/file/magic/Magdir/dolby
contrib/file/magic/Magdir/dump
contrib/file/magic/Magdir/dyadic
contrib/file/magic/Magdir/editors
contrib/file/magic/Magdir/efi
contrib/file/magic/Magdir/elf
contrib/file/magic/Magdir/encore
contrib/file/magic/Magdir/epoc
contrib/file/magic/Magdir/erlang
contrib/file/magic/Magdir/esri
contrib/file/magic/Magdir/fcs
contrib/file/magic/Magdir/filesystems
contrib/file/magic/Magdir/flash
contrib/file/magic/Magdir/fonts
contrib/file/magic/Magdir/fortran
contrib/file/magic/Magdir/frame
contrib/file/magic/Magdir/freebsd
contrib/file/magic/Magdir/fsav
contrib/file/magic/Magdir/games
contrib/file/magic/Magdir/gcc
contrib/file/magic/Magdir/geos
contrib/file/magic/Magdir/gimp
contrib/file/magic/Magdir/gnome-keyring
contrib/file/magic/Magdir/gnu
contrib/file/magic/Magdir/gnumeric
contrib/file/magic/Magdir/grace
contrib/file/magic/Magdir/graphviz
contrib/file/magic/Magdir/gringotts
contrib/file/magic/Magdir/hitachi-sh
contrib/file/magic/Magdir/hp
contrib/file/magic/Magdir/human68k
contrib/file/magic/Magdir/ibm370
contrib/file/magic/Magdir/ibm6000
contrib/file/magic/Magdir/iff
contrib/file/magic/Magdir/images
contrib/file/magic/Magdir/inform
contrib/file/magic/Magdir/intel
contrib/file/magic/Magdir/interleaf
contrib/file/magic/Magdir/island
contrib/file/magic/Magdir/ispell
contrib/file/magic/Magdir/java
contrib/file/magic/Magdir/jpeg
contrib/file/magic/Magdir/karma
contrib/file/magic/Magdir/kde
contrib/file/magic/Magdir/kml
contrib/file/magic/Magdir/lecter
contrib/file/magic/Magdir/lex
contrib/file/magic/Magdir/lif
contrib/file/magic/Magdir/linux
contrib/file/magic/Magdir/lisp
contrib/file/magic/Magdir/llvm
contrib/file/magic/Magdir/lua
contrib/file/magic/Magdir/luks
contrib/file/magic/Magdir/mach
contrib/file/magic/Magdir/macintosh
contrib/file/magic/Magdir/magic
contrib/file/magic/Magdir/mail.news
contrib/file/magic/Magdir/maple
contrib/file/magic/Magdir/mathcad
contrib/file/magic/Magdir/mathematica
contrib/file/magic/Magdir/matroska
contrib/file/magic/Magdir/mcrypt
contrib/file/magic/Magdir/mercurial
contrib/file/magic/Magdir/mime
contrib/file/magic/Magdir/mips
contrib/file/magic/Magdir/mirage
contrib/file/magic/Magdir/misctools
contrib/file/magic/Magdir/mkid
contrib/file/magic/Magdir/mlssa
contrib/file/magic/Magdir/mmdf
contrib/file/magic/Magdir/modem
contrib/file/magic/Magdir/motorola
contrib/file/magic/Magdir/mozilla
contrib/file/magic/Magdir/msdos
contrib/file/magic/Magdir/msvc
contrib/file/magic/Magdir/mup
contrib/file/magic/Magdir/natinst
contrib/file/magic/Magdir/ncr
contrib/file/magic/Magdir/netbsd
contrib/file/magic/Magdir/netscape
contrib/file/magic/Magdir/netware
contrib/file/magic/Magdir/news
contrib/file/magic/Magdir/nitpicker
contrib/file/magic/Magdir/ocaml
contrib/file/magic/Magdir/octave
contrib/file/magic/Magdir/ole2compounddocs
contrib/file/magic/Magdir/olf
contrib/file/magic/Magdir/os2
contrib/file/magic/Magdir/os400
contrib/file/magic/Magdir/os9
contrib/file/magic/Magdir/osf1
contrib/file/magic/Magdir/palm
contrib/file/magic/Magdir/parix
contrib/file/magic/Magdir/pbm
contrib/file/magic/Magdir/pdf
contrib/file/magic/Magdir/pdp
contrib/file/magic/Magdir/perl
contrib/file/magic/Magdir/pgp
contrib/file/magic/Magdir/pkgadd
contrib/file/magic/Magdir/plan9
contrib/file/magic/Magdir/plus5
contrib/file/magic/Magdir/printer
contrib/file/magic/Magdir/project
contrib/file/magic/Magdir/psdbms
contrib/file/magic/Magdir/pulsar
contrib/file/magic/Magdir/pyramid
contrib/file/magic/Magdir/python
contrib/file/magic/Magdir/revision
contrib/file/magic/Magdir/riff
contrib/file/magic/Magdir/rpm
contrib/file/magic/Magdir/rtf
contrib/file/magic/Magdir/ruby
contrib/file/magic/Magdir/sc
contrib/file/magic/Magdir/sccs
contrib/file/magic/Magdir/scientific
contrib/file/magic/Magdir/securitycerts
contrib/file/magic/Magdir/sendmail
contrib/file/magic/Magdir/sequent
contrib/file/magic/Magdir/sgi
contrib/file/magic/Magdir/sgml
contrib/file/magic/Magdir/sharc
contrib/file/magic/Magdir/sinclair
contrib/file/magic/Magdir/sketch
contrib/file/magic/Magdir/smalltalk
contrib/file/magic/Magdir/sniffer
contrib/file/magic/Magdir/softquad
contrib/file/magic/Magdir/spec
contrib/file/magic/Magdir/spectrum
contrib/file/magic/Magdir/sql
contrib/file/magic/Magdir/sun
contrib/file/magic/Magdir/sysex
contrib/file/magic/Magdir/teapot
contrib/file/magic/Magdir/terminfo
contrib/file/magic/Magdir/tex
contrib/file/magic/Magdir/tgif
contrib/file/magic/Magdir/ti-8x
contrib/file/magic/Magdir/timezone
contrib/file/magic/Magdir/troff
contrib/file/magic/Magdir/tuxedo
contrib/file/magic/Magdir/typeset
contrib/file/magic/Magdir/unicode
contrib/file/magic/Magdir/unknown
contrib/file/magic/Magdir/uuencode
contrib/file/magic/Magdir/varied.out
contrib/file/magic/Magdir/varied.script
contrib/file/magic/Magdir/vax
contrib/file/magic/Magdir/vicar
contrib/file/magic/Magdir/virtutech
contrib/file/magic/Magdir/visx
contrib/file/magic/Magdir/vms
contrib/file/magic/Magdir/vmware
contrib/file/magic/Magdir/vorbis
contrib/file/magic/Magdir/vxl
contrib/file/magic/Magdir/warc
contrib/file/magic/Magdir/weak
contrib/file/magic/Magdir/windows
contrib/file/magic/Magdir/wireless
contrib/file/magic/Magdir/wordprocessors
contrib/file/magic/Magdir/xdelta
contrib/file/magic/Magdir/xenix
contrib/file/magic/Magdir/xilinx
contrib/file/magic/Magdir/xo65
contrib/file/magic/Magdir/xwindows
contrib/file/magic/Magdir/zilog
contrib/file/magic/Magdir/zyxel
contrib/file/src/apprentice.c
contrib/file/src/cdf.c
contrib/file/src/cdf_time.c
contrib/file/src/compress.c
contrib/file/src/encoding.c
contrib/file/src/file.c
contrib/file/src/file.h
contrib/file/src/fsmagic.c
contrib/file/src/funcs.c
contrib/file/src/magic.c
contrib/file/src/magic.h
contrib/file/src/patchlevel.h
contrib/file/src/print.c
contrib/file/src/readcdf.c
contrib/file/src/readelf.c
contrib/file/src/softmagic.c

index 90a32fc..fff2f57 100644 (file)
@@ -1,3 +1,81 @@
+2010-01-22  15:45  Christos Zoulas <christos@zoulas.com>
+
+       * print proper mime for crystal reports file
+
+       * print the last summary information of a cdf document, not the
+         first so that nested documents print the right info
+
+2010-01-16  18:42  Charles Longeau <chl@tuxfamily.org>
+
+       * bring back some fixes from OpenBSD:
+               - make gcc2 builds file
+               - fix typos in a magic file comment
+
+2009-11-17  18:35  Christos Zoulas <christos@zoulas.com>
+
+       * ctime/asctime can return NULL on some OS's although
+         they should not (Toshit Antani)
+
+2009-09-14  13:49  Christos Zoulas <christos@zoulas.com>
+
+       * Centralize magic path handling routines and remove the
+         special-casing from file.c so that the python module for
+         example comes up with the same magic path (Fixes ~/.magic
+         handling) (from Gab)
+
+2009-09-11  23:38  Reuben Thomas <rrt@sc3d.org>
+
+       * When magic argument is a directory, read the files in
+         strcmp-sorted order (fixes Debian bug #488562 and our own FIXME).
+
+2009-09-11  13:11  Reuben Thomas <rrt@sc3d.org>
+
+       * Combine overlapping epoc and psion magic files into one (epoc).
+
+       * Add some more EPOC MIME types.
+
+2009-08-19  15:55  Christos Zoulas <christos@zoulas.com>
+
+       * Fix 3 bugs (From Ian Darwin):
+           - file_showstr could move one past the end of the array
+           - parse_apple did not nul terminate the string in the overflow case
+           - parse_mime truncated the wrong string in the overflow case
+
+2009-08-12  12:28  Robert Byrnes  <byrnes@wildpumpkin.net>
+
+       * Include Localstuff when compiling magic.
+
+2009-07-15  10:05  Christos Zoulas <christos@zoulas.com>
+
+       * Fix logic for including mygetopts.h
+
+       * Make cdf.c compile again with debugging
+
+       * Add the necessary field handling for crystal reports files to work
+
+2009-06-23 01:34  Reuben Thomas <rrt@sc3d.org>
+
+       * Stop "(if" identifying Lisp files, that's plain dumb!
+
+2009-06-09 22:13  Reuben Thomas <rrt@sc3d.org>
+
+       * Add a couple of missing MP3 MIME types.
+
+2009-05-27 23:00  Reuben Thomas <rrt@sc3d.org>
+
+       * Add full range of hash-bang tests for Python and Ruby.
+
+       * Add MIME types for Python and Ruby scripts.
+
+2009-05-13  10:44  Christos Zoulas <christos@zoulas.com>
+
+       * off by one in parsing hw capabilities in elf
+         (Cheng Renquan)
+
+2009-05-08  13:40  Christos Zoulas <christos@zoulas.com>
+       
+       * lint fixes and more from NetBSD
+
 2009-05-06  10:25  Christos Zoulas <christos@zoulas.com>
 
        * Avoid null dereference in cdf code (Drew Yao)
diff --git a/contrib/file/README.DRAGONFLY b/contrib/file/README.DRAGONFLY
new file mode 100644 (file)
index 0000000..9d01cde
--- /dev/null
@@ -0,0 +1,12 @@
+This directory contains most of the file distribution. The original
+source can be obtained from:
+       ftp://ftp.astron.com/pub/file/
+
+       MD5 (file-5.04.tar.gz) = accade81ff1cc774904b47c72c8aeea0
+       SHA1 (file-5.04.tar.gz) = 56ddf7135471aa656334ed8fefe1112bcccc2cc3
+
+A list of the omitted files and directories can be found in
+README.DELETED.
+
+This is used in lib/libmagic and usr.bin/file.  When upgrading, remember
+to update config.h in lib/libmagic.
index 1215e69..444842a 100644 (file)
@@ -1,4 +1,4 @@
-.\" $File: file.man,v 1.79 2008/11/06 22:49:08 rrt Exp $
+.\" $File: file.man,v 1.82 2009/11/04 22:30:34 christos Exp $
 .Dd October 9, 2008
 .Dt FILE __CSECTION__
 .Os
@@ -7,16 +7,20 @@
 .Nd determine file type
 .Sh SYNOPSIS
 .Nm
-.Op Fl bchikLnNprsvz
-.Op Fl -mime-type
+.Bk -words
+.Op Fl bchikLNnprsvz0
+.Op Fl -apple
 .Op Fl -mime-encoding
-.Op Fl f Ar namefile
+.Op Fl -mime-type
+.Op Fl e Ar testname
 .Op Fl F Ar separator
+.Op Fl f Ar namefile
 .Op Fl m Ar magicfiles
-.Ar file
+.Ar
+.Ek -words
 .Nm
 .Fl C
-.Op Fl m Ar magicfile
+.Op Fl m Ar magicfiles
 .Nm
 .Op Fl -help
 .Sh DESCRIPTION
@@ -161,21 +165,21 @@ in any of the character sets listed above is simply said to be
 .Bl -tag -width indent
 .It Fl b , -brief
 Do not prepend filenames to output lines (brief mode).
+.It Fl C , -compile
+Write a
+.Pa magic.mgc
+output file that contains a pre-parsed version of the magic file or directory.
 .It Fl c , -checking-printout
 Cause a checking printout of the parsed form of the magic file.
 This is usually used in conjunction with the
 .Fl m
 flag to debug a new magic file before installing it.
-.It Fl C , -compile
-Write a
-.Pa magic.mgc
-output file that contains a pre-parsed version of the magic file or directory.
 .It Fl e , -exclude Ar testname
 Exclude the test named in
 .Ar testname
 from the list of tests made to determine the file type. Valid test names
 are:
-.Bl -tag -width
+.Bl -tag -width compress
 .It apptype
 .Dv EMX
 application type (only on EMX).
@@ -198,6 +202,10 @@ Consults magic files.
 .It tar
 Examines tar files.
 .El
+.It Fl F , -separator Ar separator
+Use the specified string as the separator between the filename and the
+file result returned. Defaults to
+.Sq \&: .
 .It Fl f , -files-from Ar namefile
 Read the names of the files to be examined from
 .Ar namefile
@@ -209,10 +217,6 @@ or at least one filename argument must be present;
 to test the standard input, use
 .Sq -
 as a filename argument.
-.It Fl F , -separator Ar separator
-Use the specified string as the separator between the filename and the
-file result returned. Defaults to
-.Sq \&: .
 .It Fl h , -no-dereference
 option causes symlinks not to be followed
 (on systems that support symbolic links). This is the default if the
@@ -250,16 +254,16 @@ option causes symlinks to be followed, as the like-named option in
 This is the default if the environment variable
 .Dv POSIXLY_CORRECT
 is defined.
-.It Fl m , -magic-file Ar list
+.It Fl m , -magic-file Ar magicfiles
 Specify an alternate list of files and directories containing magic.
 This can be a single item, or a colon-separated list.
 If a compiled magic file is found alongside a file or directory, it will be used instead.
+.It Fl N , -no-pad
+Don't pad filenames so that they align in the output.
 .It Fl n , -no-buffer
 Force stdout to be flushed after checking each file.
 This is only useful if checking a list of files.
 It is intended to be used by programs that want filetype output from a pipe.
-.It Fl N , -no-pad
-Don't pad filenames so that they align in the output.
 .It Fl p , -preserve-date
 On systems that support
 .Xr utime 2
index e39a610..a9e5921 100644 (file)
@@ -1,4 +1,4 @@
-.\" $File: libmagic.man,v 1.19 2008/10/06 20:16:04 christos Exp $
+.\" $File: libmagic.man,v 1.21 2009/11/24 21:16:14 christos Exp $
 .\"
 .\" Copyright (c) Christos Zoulas 2003.
 .\" All Rights Reserved.
@@ -12,7 +12,7 @@
 .\" 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
@@ -25,8 +25,8 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.Dd October 6, 2008
-.Dt MAGIC 3
+.Dd November 24, 2009
+.Dt LIBMAGIC 3
 .Os
 .Sh NAME
 .Nm magic_open ,
@@ -73,7 +73,7 @@ in
 The function
 .Fn magic_open
 creates a magic cookie pointer and returns it. It returns NULL if
-there was an error allocating the magic cookie. The 
+there was an error allocating the magic cookie. The
 .Ar flags
 argument specifies how the other magic functions should behave:
 .Bl -tag -width MAGIC_COMPRESS
@@ -165,7 +165,7 @@ bytes size.
 .Pp
 The
 .Fn magic_setflags
-function sets the 
+function sets the
 .Ar flags
 described above. Note that using both MIME flags together can also
 return extra information on the charset.
@@ -219,7 +219,7 @@ functions return 0 on success and -1 on failure.
 The
 .Fn magic_file ,
 and
-.Fn magic_buffer 
+.Fn magic_buffer
 functions return a string on success and NULL on failure. The
 .Fn magic_error
 function returns a textual description of the errors of the above
@@ -242,7 +242,7 @@ The compiled default magic database.
 .El
 .Sh SEE ALSO
 .Xr file __CSECTION__ ,
-.Xr magic __FSECTION__ 
+.Xr magic __FSECTION__
 .Sh AUTHORS
 Måns Rullgård Initial libmagic implementation,
 and configuration.
index fb334bc..f95280c 100644 (file)
@@ -1,4 +1,4 @@
-.\" $File: magic.man,v 1.59 2008/11/06 23:22:53 christos Exp $
+.\" $File: magic.man,v 1.60 2009/05/08 23:02:44 christos Exp $
 .Dd August 30, 2008
 .Dt MAGIC __FSECTION__
 .Os
@@ -297,14 +297,14 @@ space.
 .El
 .Pp
 An APPLE 4+4 character APPLE creator and type can be specified as:
-.Bd -literal -offset indent 
+.Bd -literal -offset indent
 !:apple        CREATYPE
 .Ed
 .Pp
 A MIME type is given on a separate line, which must be the next
 non-blank or comment line after the magic line that identifies the
 file type, and has the following format:
-.Bd -literal -offset indent 
+.Bd -literal -offset indent
 !:mime MIMETYPE
 .Ed
 .Pp
@@ -314,13 +314,13 @@ followed by the MIME type.
 .Pp
 An optional strength can be supplied on a separate line which refers to
 the current magic description using the following format:
-.Bd -literal -offset indent 
+.Bd -literal -offset indent
 !:strength OP VALUE
 .Ed
 .Pp
 The operand
 .Dv OP
-can be: 
+can be:
 .Dv + ,
 .Dv - ,
 .Dv * ,
index 5acb31e..4202be9 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: acorn,v 1.5 2009/09/19 16:28:07 christos Exp $
 # acorn:  file(1) magic for files found on Acorn systems
 #
 
index 12d7da5..2fe79d4 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: adi,v 1.4 2009/09/19 16:28:07 christos Exp $
 # adi: file(1) magic for ADi's objects
 # From Gregory McGarry <g.mcgarry@ieee.org>
 #
index 7b30c49..5087ce6 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: adventure,v 1.10 2009/09/19 16:28:07 christos Exp $
 # adventure: file(1) magic for Adventure game files
 #
 # from Allen Garvin <earendil@faeryland.tamu-commerce.edu>
index 41f4ad6..b937c9c 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: allegro,v 1.4 2009/09/19 16:28:07 christos Exp $
 # allegro:  file(1) magic for Allegro datafiles
 # Toby Deshane <hac@shoelace.digivill.net>
 #
index 69cf4b4..9620202 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: alliant,v 1.7 2009/09/19 16:28:07 christos Exp $
 # 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
index c0191fb..f1bdb6d 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: alpha,v 1.7 2009/09/19 16:28:07 christos Exp $
 # alpha architecture description
 #
 
index 2b95650..395ef54 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: amanda,v 1.5 2009/09/19 16:28:07 christos Exp $
 # amanda:  file(1) magic for amanda file format
 #
 0      string  AMANDA:\                AMANDA 
index bb98299..f4c9cf2 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: amigaos,v 1.14 2009/09/19 16:28:07 christos Exp $
 # amigaos:  file(1) magic for AmigaOS binary formats:
 
 #
index 46b23ec..5fdb3d0 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: animation,v 1.39 2009/09/27 19:02:12 christos Exp $
 # animation:  file(1) magic for animation/movie formats
 #
 # animation formats
@@ -29,7 +30,7 @@
 #!:mime        image/x-quicktime
 4       string          pckg            Apple QuickTime compressed archive
 !:mime application/x-quicktime-player
-4      string/B        jP              JPEG 2000 image
+4      string/W        jP              JPEG 2000 image
 !:mime image/jp2
 4      string          ftyp            ISO Media
 >8     string          isom            \b, MPEG v4 system, version 1
@@ -41,7 +42,7 @@
 !:mime video/mp4
 >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/W        jp2             \b, JPEG 2000
 !:mime image/jp2
 >8     string          3gp             \b, MPEG v4 system, 3GPP
 !:mime video/3gpp
 !:mime video/mp4
 >8     string          avc1            \b, MPEG v4 system, 3GPP JVT AVC
 !:mime video/3gpp
->8     string/B        M4A             \b, MPEG v4 system, iTunes AAC-LC
+>8     string/W        M4A             \b, MPEG v4 system, iTunes AAC-LC
 !:mime audio/mp4
->8     string/B        M4V             \b, MPEG v4 system, iTunes AVC-LC
+>8     string/W        M4V             \b, MPEG v4 system, iTunes AVC-LC
 !:mime video/mp4
->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
+>8     string/W        M4P             \b, MPEG v4 system, iTunes AES encrypted
+>8     string/W        M4B             \b, MPEG v4 system, iTunes bookmarked
+>8     string/W        qt              \b, Apple QuickTime movie
 !:mime video/quicktime
 
 # MPEG sequences
@@ -71,6 +72,7 @@
 >>7      byte               x              \b @ L %u
 0        belong&0xFFFFFF00  0x00000100     
 >3       byte               0xBA           MPEG sequence
+!:mime  video/mpeg
 >>4      byte               &0x40          \b, v2, program multiplex
 >>4      byte               ^0x40          \b, v1, system multiplex
 >3       byte               0xBB           MPEG sequence, v1/2, multiplex (missing pack header)
@@ -80,6 +82,7 @@
 >>4      byte               88             \b, extended
 >>6      byte               x              \b @ L %u
 >3       byte               0xB0           MPEG sequence, v4
+!:mime  video/mpeg4-generic
 >>5      belong             0x000001B5
 >>>9     byte               &0x80
 >>>>10   byte&0xF0          16             \b, video
 
 # MPA, M2A
 0       beshort&0xFFFE  0xFFF6         MPEG ADTS, layer I, v2
+!:mime audio/mpeg
 # rate
 >2      byte&0xF0       0x10           \b,  32 kbps
 >2      byte&0xF0       0x20           \b,  48 kbps
 
 # MP3, M25A
 0       beshort&0xFFFE  0xFFE2         MPEG ADTS, layer III,  v2.5
+!:mime audio/mpeg
 # rate  
 >2      byte&0xF0       0x10           \b,   8 kbps
 >2      byte&0xF0       0x20           \b,  16 kbps
 
 # Microsoft Advanced Streaming Format (ASF) <mpruett@sgi.com>
 0      belong                  0x3026b275      Microsoft ASF
+!:mime  video/x-ms-asf
 
 # MNG Video Format, <URL:http://www.libpng.org/pub/mng/spec/>
 0      string                  \x8aMNG         MNG video data,
 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/w        #VRML\ V1.0\ ascii     VRML 1 file
 !:mime model/vrml
-0      string/b        #VRML\ V2.0\ utf8       ISO/IEC 14772 VRML 97 file
+0      string/w        #VRML\ V2.0\ utf8       ISO/IEC 14772 VRML 97 file
 !:mime model/vrml
 
 # X3D (Extensible 3D) [http://www.web3d.org/specifications/x3d-3.0.dtd]
 # From Michel Briand <michelbriand@free.fr>
 0      string          \<?xml\ version="
 !:strength +1
->20    search/1000/cb  \<!DOCTYPE\ X3D         X3D (Extensible 3D) model xml text
+>20    search/1000/cw  \<!DOCTYPE\ X3D         X3D (Extensible 3D) model xml text
 !:mime model/x3d
 
 #---------------------------------------------------------------------------
index 0400431..d717e37 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: apl,v 1.6 2009/09/19 16:28:07 christos Exp $
 # apl:  file(1) magic for APL (see also "pdp" and "vax" for other APL
 #       workspaces)
 #
index 669ab04..0d04c51 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: apple,v 1.23 2009/09/19 16:28:08 christos Exp $
 # apple:  file(1) magic for Apple file formats
 #
 0      search/1        FiLeStArTfIlEsTaRt      binscii (apple ][) text
index 9d348d1..f3f362e 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: applix,v 1.5 2009/09/19 16:28:08 christos Exp $
 # applix:  file(1) magic for Applixware
 # From: Peter Soos <sp@osb.hu>
 #
index b75fac0..07c509c 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: archive,v 1.55 2009/12/04 15:00:47 christos Exp $
 # archive:  file(1) magic for archive formats (see also "msdos" for self-
 #           extracting compressed archives)
 #
 # [JW] see exe section for self-extracting version
 0      string          UC2\x1a         UC2 archive data
 
+# PKZIP multi-volume archive
+0      string          PK\x07\x08PK\x03\x04    Zip multi-volume archive data, at least PKZIP v2.50 to extract
+!:mime application/zip
+
 # ZIP archives (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu)
 0      string          PK\003\004
->4     byte            0x00            Zip archive data
+>30    ubelong         !0x6d696d65
+>>4    byte            0x00            Zip archive data
 !:mime application/zip
->    byte            0x09            Zip archive data, at least v0.9 to extract
+>>4    byte            0x09            Zip archive data, at least v0.9 to extract
 !:mime application/zip
->    byte            0x0a            Zip archive data, at least v1.0 to extract
+>>4    byte            0x0a            Zip archive data, at least v1.0 to extract
 !:mime application/zip
->    byte            0x0b            Zip archive data, at least v1.1 to extract
+>>4    byte            0x0b            Zip archive data, at least v1.1 to extract
 !:mime application/zip
->0x161 string          WINZIP          Zip archive data, WinZIP self-extracting
+>>0x161        string          WINZIP          Zip archive data, WinZIP self-extracting
 !:mime application/zip
->4     byte            0x14
->>30   ubelong         !0x6d696d65     Zip archive data, at least v2.0 to extract
+>>4    byte            0x14            Zip archive data, at least v2.0 to extract
 !:mime application/zip
 
 # OpenOffice.org / KOffice / StarOffice documents
 # Listed here because they ARE zip files
 #
 # From: Abel Cheung <abel@oaka.org>
->4     byte            0x14
->>30   string          mimetype
+>30    string          mimetype
 
 # KOffice (1.2 or above) formats
->>>50  string  vnd.kde.                KOffice (>=1.2)
->>>>58 string  karbon                  Karbon document
->>>>58 string  kchart                  KChart document
->>>>58 string  kformula                KFormula document
->>>>58 string  kivio                   Kivio document
->>>>58 string  kontour                 Kontour document
->>>>58 string  kpresenter              KPresenter document
->>>>58 string  kspread                 KSpread document
->>>>58 string  kword                   KWord document
+>>50   string  vnd.kde.                KOffice (>=1.2)
+>>>58  string  karbon                  Karbon document
+>>>58  string  kchart                  KChart document
+>>>58  string  kformula                KFormula document
+>>>58  string  kivio                   Kivio document
+>>>58  string  kontour                 Kontour document
+>>>58  string  kpresenter              KPresenter document
+>>>58  string  kspread                 KSpread document
+>>>58  string  kword                   KWord document
 
 # OpenOffice formats (for OpenOffice 1.x / StarOffice 6/7)
->>>50  string  vnd.sun.xml.            OpenOffice.org 1.x
->>>>62 string  writer                  Writer
->>>>>68        byte    !0x2e                   document
->>>>>68        string  .template               template
->>>>>68        string  .global                 global document
->>>>62 string  calc                    Calc
->>>>>66        byte    !0x2e                   spreadsheet
->>>>>66        string  .template               template
->>>>62 string  draw                    Draw
->>>>>66        byte    !0x2e                   document
->>>>>66        string  .template               template
->>>>62 string  impress                 Impress
->>>>>69        byte    !0x2e                   presentation
->>>>>69        string  .template               template
->>>>62 string  math                    Math document
->>>>62 string  base                    Database file
+>>50   string  vnd.sun.xml.            OpenOffice.org 1.x
+>>>62  string  writer                  Writer
+>>>>68 byte    !0x2e                   document
+>>>>68 string  .template               template
+>>>>68 string  .global                 global document
+>>>62  string  calc                    Calc
+>>>>66 byte    !0x2e                   spreadsheet
+>>>>66 string  .template               template
+>>>62  string  draw                    Draw
+>>>>66 byte    !0x2e                   document
+>>>>66 string  .template               template
+>>>62  string  impress                 Impress
+>>>>69 byte    !0x2e                   presentation
+>>>>69 string  .template               template
+>>>62  string  math                    Math document
+>>>62  string  base                    Database file
 
 # OpenDocument formats (for OpenOffice 2.x / StarOffice >= 8)
 # http://lists.oasis-open.org/archives/office/200505/msg00006.html
->>>50  string  vnd.oasis.opendocument. OpenDocument
->>>>73 string  text
->>>>>77        byte    !0x2d                   Text
+>>50   string  vnd.oasis.opendocument. OpenDocument
+>>>73  string  text
+>>>>77 byte    !0x2d                   Text
 !:mime application/vnd.oasis.opendocument.text
->>>>>77        string  -template               Text Template
->>>>>77        string  -web                    HTML Document Template
->>>>>77        string  -master                 Master Document
->>>>73 string  graphics                Drawing
->>>>>81        string  -template               Template
->>>>73 string  presentation            Presentation
->>>>>85        string  -template               Template
->>>>73 string  spreadsheet             Spreadsheet
->>>>>84        string  -template               Template
->>>>73 string  chart                   Chart
->>>>>78        string  -template               Template
->>>>73 string  formula                 Formula
->>>>>80        string  -template               Template
->>>>73 string  database                Database
->>>>73 string  image                   Image
+>>>>77 string  -template               Text Template
+!:mime application/vnd.oasis.opendocument.text-template
+>>>>77 string  -web                    HTML Document Template
+!:mime application/vnd.oasis.opendocument.text-web
+>>>>77 string  -master                 Master Document
+!:mime application/vnd.oasis.opendocument.text-master
+>>>73  string  graphics
+>>>>81 byte    !0x2d                   Drawing
+!:mime application/vnd.oasis.opendocument.graphics
+>>>>81 string  -template               Template
+!:mime application/vnd.oasis.opendocument.graphics-template
+>>>73  string  presentation
+>>>>85 byte    !0x2d                   Presentation
+!:mime application/vnd.oasis.opendocument.presentation
+>>>>85 string  -template               Template
+!:mime application/vnd.oasis.opendocument.presentation-template
+>>>73  string  spreadsheet
+>>>>84 byte    !0x2d                   Spreadsheet
+!:mime application/vnd.oasis.opendocument.spreadsheet
+>>>>84 string  -template               Template
+!:mime application/vnd.oasis.opendocument.spreadsheet-template
+>>>73  string  chart
+>>>>78 byte    !0x2d                   Chart
+!:mime application/vnd.oasis.opendocument.chart
+>>>>78 string  -template               Template
+!:mime application/vnd.oasis.opendocument.chart-template
+>>>73  string  formula
+>>>>80 byte    !0x2d                   Formula
+!:mime application/vnd.oasis.opendocument.formula
+>>>>80 string  -template               Template
+!:mime application/vnd.oasis.opendocument.formula-template
+>>>73  string  database                Database
+!:mime application/vnd.oasis.opendocument.database
+>>>73  string  image
+>>>>78 byte    !0x2d                   Image
+!:mime application/vnd.oasis.opendocument.image
+>>>>78 string  -template               Template
+!:mime application/vnd.oasis.opendocument.image-template
 
 # Zoo archiver
 20     lelong          0xfdc4a7dc      Zoo archive data
 >24    belong  0               no checksum
 >24    belong  1               SHA-1 checksum
 >24    belong  2               MD5 checksum
-
index d89504a..a9ea885 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: asterix,v 1.5 2009/09/19 16:28:08 christos Exp $
 # 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)
index 884ad4a..9688011 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: att3b,v 1.8 2009/09/19 16:28:08 christos Exp $
 # att3b:  file(1) magic for AT&T 3B machines
 #
 # The `versions' should be un-commented if they work for you.
index 04f80eb..e969491 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: audio,v 1.59 2009/11/04 17:27:37 christos Exp $
 # audio:  file(1) magic for sound formats (see also "iff")
 #
 # Jan Nicolai Langfeldt (janl@ifi.uio.no), Dan Quinlan (quinlan@yggdrasil.com),
 >21    ubyte           <128                    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            =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
index 1813c0e..128aa4c 100644 (file)
@@ -1,4 +1,6 @@
+
 #----------------------------------------------------------------
+# $File: basis,v 1.4 2009/09/19 16:28:08 christos Exp $
 # basis: file(1) magic for BBx/Pro5-files
 #      Oliver Dammer <dammer@olida.de>  2005/11/07
 # http://www.basis.com business-basic-files.
index 5e288d1..03eb59d 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: bflt,v 1.4 2009/09/19 16:28:08 christos Exp $
 # bFLT: file(1) magic for BFLT uclinux binary files
 #
 # From Philippe De Muyter <phdm@macqel.be>
index 6ef7950..1814738 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: blender,v 1.5 2009/09/19 16:28:08 christos Exp $
 # blender: file(1) magic for Blender 3D related files
 #
 # Native format rule v1.2. For questions use the developers list 
index 7a470ed..d5b687f 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: blit,v 1.8 2009/09/19 16:28:08 christos Exp $
 # blit:  file(1) magic for 68K Blit stuff as seen from 680x0 machine
 #
 # Note that this 0407 conflicts with several other a.out formats...
index 4cd6f76..693cc2a 100644 (file)
@@ -1,4 +1,6 @@
-#
+
+#------------------------------------------------------------------------------
+# $File: bout,v 1.5 2009/09/19 16:28:08 christos Exp $
 # i80960 b.out objects and archives
 #
 0      long            0x10d           i960 b.out relocatable object
index ad54759..be16e3a 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: bsdi,v 1.5 2009/09/19 16:28:08 christos Exp $
 # bsdi:  file(1) magic for BSD/OS (from BSDI) objects
 #
 
index 85d867a..d72daad 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: btsnoop,v 1.5 2009/09/19 16:28:08 christos Exp $
 # BTSnoop:  file(1) magic for BTSnoop files
 #
 # From <marcel@holtmann.org>
index 895e37f..cb6d10a 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: c-lang,v 1.14 2009/09/19 16:28:08 christos Exp $
 # c-lang:  file(1) magic for C programs (or REXX)
 #
 
index f8a8b76..eea3e31 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: c64,v 1.5 2009/09/19 16:28:08 christos Exp $
 # c64:  file(1) magic for various commodore 64 related files
 #
 # From: Dirk Jagdmann <doj@cubic.org>
index 757dab6..f2b0eba 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: cad,v 1.9 2009/09/19 16:28:08 christos Exp $
 # autocad:  file(1) magic for cad files
 #
 
index e25c974..6400e2f 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: cafebabe,v 1.8 2009/09/19 16:28:08 christos Exp $
 # Cafe Babes unite!
 #
 # Since Java bytecode and Mach-O fat-files have the same magic number, the test
index 42ca416..5d8a851 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: cddb,v 1.4 2009/09/19 16:28:08 christos Exp $
 # CDDB: file(1) magic for CDDB(tm) format CD text data files
 #
 # From <steve@gracenote.com>
@@ -7,4 +9,4 @@
 # CDDB-enabled CD player applications.
 #
 
-0      search/1/b      #\040xmcd       CDDB(tm) format CD text data
+0      search/1/w      #\040xmcd       CDDB(tm) format CD text data
index 3639f3c..134ee81 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: chord,v 1.4 2009/09/19 16:28:08 christos Exp $
 # chord: file(1) magic for Chord music sheet typesetting utility input files
 #
 # From Philippe De Muyter <phdm@macqel.be>
index 77e3efb..0279bbb 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: cisco,v 1.4 2009/09/19 16:28:08 christos Exp $
 # cisco:  file(1) magic for cisco Systems routers
 #
 # Most cisco file-formats are covered by the generic elf code
index 6d44794..ff2471e 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: citrus,v 1.4 2009/09/19 16:28:08 christos Exp $
 # citrus locale declaration
 #
 
index 5f5f6e7..cff7a3b 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: clarion,v 1.4 2009/09/19 16:28:08 christos Exp $
 # clarion:  file(1) magic for # Clarion Personal/Professional Developer
 # (v2 and above)
 # From: Julien Blache <jb@jblache.org>
index 368b473..a2b120a 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: claris,v 1.5 2009/09/19 16:28:08 christos Exp $
 # claris:  file(1) magic for claris
 # "H. Nanosecond" <aldomel@ix.netcom.com>
 # Claris Works a word processor, etc.
index c325cb8..9f47534 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: clipper,v 1.6 2009/09/19 16:28:08 christos Exp $
 # clipper:  file(1) magic for Intergraph (formerly Fairchild) Clipper.
 #
 # XXX - what byte order does the Clipper use?
index 0942802..7874de7 100644 (file)
@@ -1,62 +1,63 @@
 
 #------------------------------------------------------------------------------
+# $File: commands,v 1.36 2010/01/24 18:41:11 christos Exp $
 # commands:  file(1) magic for various shells and interpreters
 #
 #0     string          :                       shell archive or script for antique kernel text
-0      string/b        #!\ /bin/sh             POSIX shell script text executable
+0      string/w        #!\ /bin/sh             POSIX shell script text executable
 !:mime text/x-shellscript
-0      string/b        #!\ /bin/csh            C shell script text executable
+0      string/w        #!\ /bin/csh            C shell script text executable
 !:mime text/x-shellscript
 # korn shell magic, sent by George Wu, gwu@clyde.att.com
-0      string/b        #!\ /bin/ksh            Korn shell script text executable
+0      string/w        #!\ /bin/ksh            Korn shell script text executable
 !:mime text/x-shellscript
-0      string/b        #!\ /bin/tcsh           Tenex C shell script text executable
+0      string/w        #!\ /bin/tcsh           Tenex C shell script text executable
 !:mime text/x-shellscript
-0      string/b        #!\ /usr/local/tcsh     Tenex C shell script text executable
+0      string/w        #!\ /usr/local/tcsh     Tenex C shell script text executable
 !:mime text/x-shellscript
-0      string/b        #!\ /usr/local/bin/tcsh Tenex C shell script text executable
+0      string/w        #!\ /usr/local/bin/tcsh Tenex C shell script text executable
 !:mime text/x-shellscript
 
 #
 # 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/w        #!\ /bin/zsh            Paul Falstad's zsh script text executable
 !:mime text/x-shellscript
-0      string/b        #!\ /usr/bin/zsh        Paul Falstad's zsh script text executable
+0      string/w        #!\ /usr/bin/zsh        Paul Falstad's zsh script text executable
 !:mime text/x-shellscript
-0      string/b        #!\ /usr/local/bin/zsh  Paul Falstad's zsh script text executable
+0      string/w        #!\ /usr/local/bin/zsh  Paul Falstad's zsh script text executable
 !:mime text/x-shellscript
-0      string/b        #!\ /usr/local/bin/ash  Neil Brown's ash script text executable
+0      string/w        #!\ /usr/local/bin/ash  Neil Brown's ash script text executable
 !:mime text/x-shellscript
-0      string/b        #!\ /usr/local/bin/ae   Neil Brown's ae script text executable
+0      string/w        #!\ /usr/local/bin/ae   Neil Brown's ae script text executable
 !:mime text/x-shellscript
-0      string/b        #!\ /bin/nawk           new awk script text executable
+0      string/w        #!\ /bin/nawk           new awk script text executable
 !:mime text/x-nawk
-0      string/b        #!\ /usr/bin/nawk       new awk script text executable
+0      string/w        #!\ /usr/bin/nawk       new awk script text executable
 !:mime text/x-nawk
-0      string/b        #!\ /usr/local/bin/nawk new awk script text executable
+0      string/w        #!\ /usr/local/bin/nawk new awk script text executable
 !:mime text/x-nawk
-0      string/b        #!\ /bin/gawk           GNU awk script text executable
+0      string/w        #!\ /bin/gawk           GNU awk script text executable
 !:mime text/x-gawk
-0      string/b        #!\ /usr/bin/gawk       GNU awk script text executable
+0      string/w        #!\ /usr/bin/gawk       GNU awk script text executable
 !:mime text/x-gawk
-0      string/b        #!\ /usr/local/bin/gawk GNU awk script text executable
+0      string/w        #!\ /usr/local/bin/gawk GNU awk script text executable
 !:mime text/x-gawk
 #
-0      string/b        #!\ /bin/awk            awk script text executable
+0      string/w        #!\ /bin/awk            awk script text executable
 !:mime text/x-awk
-0      string/b        #!\ /usr/bin/awk        awk script text executable
+0      string/w        #!\ /usr/bin/awk        awk script text executable
 !:mime text/x-awk
 # update to distinguish from *.vcf files
 # this is broken because postscript has /EBEGIN{ for example.
-#0     search/Bb       BEGIN {                 awk script text
+#0     search/Ww       BEGIN {                 awk script text
 
 # AT&T Bell Labs' Plan 9 shell
-0      string/b        #!\ /bin/rc     Plan 9 rc shell script text executable
+0      string/w        #!\ /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/w        #!\ /bin/bash   Bourne-Again shell script text executable
 !:mime text/x-shellscript
-0      string/b        #!\ /usr/local/bin/bash Bourne-Again shell script text executable
+0      string/w        #!\ /usr/local/bin/bash Bourne-Again shell script text executable
 !:mime text/x-shellscript
 
 # using env
@@ -73,9 +74,9 @@
 !:mime text/x-php
 0      search/1        =<?\r                   PHP script text
 !:mime text/x-php
-0      search/1/b      #!\ /usr/local/bin/php  PHP script text executable
+0      search/1/w      #!\ /usr/local/bin/php  PHP script text executable
 !:mime text/x-php
-0      search/1/b      #!\ /usr/bin/php        PHP script text executable
+0      search/1/w      #!\ /usr/bin/php        PHP script text executable
 !:mime text/x-php
 
 0      string          Zend\x00                PHP script Zend Optimizer data
index 81417ec..8e1d908 100644 (file)
@@ -1,5 +1,6 @@
 
 #----------------------------------------------------------------------------
+# $File: communications,v 1.5 2009/09/19 16:28:08 christos Exp $
 # communication
 
 # TTCN is the Tree and Tabular Combined Notation described in ISO 9646-3.
index 5e18de0..d529486 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: compress,v 1.42 2009/09/19 16:28:08 christos Exp $
 # compress:  file(1) magic for pure-compression formats (no archives)
 #
 # compress, gzip, pack, compact, huf, squeeze, crunch, freeze, yabba, etc.
index 2af6575..f12af6d 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: console,v 1.16 2009/09/19 16:28:08 christos Exp $
 # Console game magic
 # Toby Deshane <hac@shoelace.digivill.net>
 #    ines:  file(1) magic for Marat's iNES Nintendo Entertainment System
index b1235d7..6141a82 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: convex,v 1.7 2009/09/19 16:28:08 christos Exp $
 # convex:  file(1) magic for Convex boxes
 #
 # Convexes are big-endian.
index a1a5a27..1676596 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: cracklib,v 1.7 2009/09/19 16:28:08 christos Exp $
 # cracklib:  file (1) magic for cracklib v2.7
 
 0      lelong  0x70775631      Cracklib password index, little endian
index f326cf5..f480d32 100644 (file)
@@ -1,4 +1,6 @@
+
 # ----------------------------------------------------------------------------
+# $File: ctags,v 1.6 2009/09/19 16:28:08 christos Exp $
 # ctags:  file (1) magic for Exuberant Ctags files
 # From: Alexander Mai <mai@migdal.ikp.physik.tu-darmstadt.de>
 0      search/1        =!_TAG  Exuberant Ctags tag file text
index 5cca8d9..04627c9 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: dact,v 1.4 2009/09/19 16:28:08 christos Exp $
 # dact:  file(1) magic for DACT compressed files
 #
 0      long            0x444354C3      DACT compressed data
index 0134355..c4a03f4 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: database,v 1.24 2009/09/19 16:28:08 christos Exp $
 # database:  file(1) magic for various databases
 #
 # extracted from header/code files by Graeme Wilford (eep2gw@ee.surrey.ac.uk)
index 1abd01e..39d1ed6 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: diamond,v 1.7 2009/09/19 16:28:08 christos Exp $
 # diamond:  file(1) magic for Diamond system
 #
 # ... diamond is a multi-media mail and electronic conferencing system....
index 291bae6..0992caa 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: diff,v 1.10 2009/09/19 16:28:08 christos Exp $
 # diff:  file(1) magic for diff(1) output
 #
 0      search/1        diff\           diff output text
@@ -12,3 +14,6 @@
 
 0      search/1        Index:          RCS/CVS diff output text
 !:mime text/x-diff
+
+# bsdiff:  file(1) magic for bsdiff(1) output
+0      string          BSDIFF40        bsdiff(1) patch file
index 615ef7a..7f08b44 100644 (file)
@@ -1,3 +1,6 @@
+
+#------------------------------------------------------------------------------
+# $File: digital,v 1.8 2009/09/19 16:28:08 christos Exp $
 #  Digital UNIX - Info
 #
 0      string  =!<arch>\n________64E   Alpha archive
index 230f738..fee287c 100644 (file)
@@ -1,3 +1,6 @@
+
+#------------------------------------------------------------------------------
+# $File: dolby,v 1.5 2009/09/19 16:28:08 christos Exp $
 # ATSC A/53 aka AC-3 aka Dolby Digital <ashitaka@gmx.at>
 # from http://www.atsc.org/standards/a_52a.pdf
 # corrections, additions, etc. are always welcome!
index cef191a..1ac91e2 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: dump,v 1.11 2009/09/19 16:28:09 christos Exp $
 # dump:  file(1) magic for dump file format--for new and old dump filesystems
 #
 # We specify both byte orders in order to recognize byte-swapped dumps.
index e8a9d25..aa10c2e 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: dyadic,v 1.4 2009/09/19 16:28:09 christos Exp $
 # Dyadic: file(1) magic for Dyalog APL.
 #
 0      byte    0xaa
index 0b15bf8..4c5b8a6 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: editors,v 1.8 2009/09/19 16:28:09 christos Exp $
 # T602 editor documents 
 # by David Necas <yeti@physics.muni.cz>
 0      string  @CT\    T602 document data,
index 4eec2eb..7335c5c 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: efi,v 1.4 2009/09/19 16:28:09 christos Exp $
 # efi:  file(1) magic for Universal EFI binaries
 
 0      lelong  0x0ef1fab9
index c605495..f4e7af5 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: elf,v 1.53 2009/09/19 16:28:09 christos Exp $
 # elf:  file(1) magic for ELF executables
 #
 # We have to check the byte order flag to see what byte order all the
index 63cb5d4..ef82eed 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: encore,v 1.6 2009/09/19 16:28:09 christos Exp $
 # encore:  file(1) magic for Encore machines
 #
 # XXX - needs to have the byte order specified (NS32K was little-endian,
index 80229c4..c67a8b6 100644 (file)
@@ -1,11 +1,53 @@
+
 #------------------------------------------------------------------------------
+# $File: epoc,v 1.7 2009/09/19 16:28:09 christos Exp $
 # EPOC : file(1) magic for EPOC documents [Psion Series 5/Osaris/Geofox 1]
-# Stefan Praszalowicz (hpicollo@worldnet.fr)
+# Stefan Praszalowicz <hpicollo@worldnet.fr> and Peter Breitenlohner <peb@mppmu.mpg.de>
 # Useful information for improving this file can be found at:
 # http://software.frodo.looijaard.name/psiconv/formats/Index.html
-0      lelong          0x10000037
+#------------------------------------------------------------------------------
+0      lelong          0x10000037      Psion Series 5
+>4     lelong          0x10000039      font file
+>4     lelong          0x1000003A      printer driver
+>4     lelong          0x1000003B      clipboard
+>4     lelong          0x10000042      multi-bitmap image
+!:mime image/x-epoc-mbm
+>4     lelong          0x1000006A      application information file
 >4     lelong          0x1000006D
->>8    lelong          0x1000007F      Psion Word
->>8    lelong          0x10000088      Psion Sheet
->>8    lelong          0x1000007D      Psion Sketch
->>8    lelong          0x10000085      Psion TextEd
+>>8    lelong          0x1000007D      Sketch image
+!:mime image/x-epoc-sketch
+>>8    lelong          0x1000007E      voice note
+>>8    lelong          0x1000007F      Word file
+!:mime application/x-epoc-word
+>>8    lelong          0x10000085      OPL program (TextEd)
+!:mime application/x-epoc-opl
+>>8    lelong          0x10000088      Sheet file
+!:mime application/x-epoc-sheet
+>>8    lelong          0x100001C4      EasyFax initialisation file
+>4     lelong          0x10000073      OPO module
+!:mime application/x-epoc-opo
+>4     lelong          0x10000074      OPL application
+!:mime application/x-epoc-app
+>4     lelong          0x1000008A      exported multi-bitmap image
+
+0      lelong          0x10000041      Psion Series 5 ROM multi-bitmap image
+
+0      lelong          0x10000050      Psion Series 5
+>4     lelong          0x1000006D      database
+>4     lelong          0x100000E4      ini file
+
+0      lelong          0x10000079      Psion Series 5 binary:
+>4     lelong          0x00000000      DLL
+>4     lelong          0x10000049      comms hardware library
+>4     lelong          0x1000004A      comms protocol library
+>4     lelong          0x1000005D      OPX
+>4     lelong          0x1000006C      application
+>4     lelong          0x1000008D      DLL
+>4     lelong          0x100000AC      logical device driver
+>4     lelong          0x100000AD      physical device driver
+>4     lelong          0x100000E5      file transfer protocol
+>4     lelong          0x100000E5      file transfer protocol
+>4     lelong          0x10000140      printer definition
+>4     lelong          0x10000141      printer definition
+
+0      lelong          0x1000007A      Psion Series 5 executable
index 6b2c4dc..4686868 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: erlang,v 1.5 2009/09/19 16:28:09 christos Exp $
 # erlang:  file(1) magic for Erlang JAM and BEAM files
 # URL:  http://www.erlang.org/faq/x779.html#AEN812
 
index 35c3492..e070e4f 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: esri,v 1.4 2009/09/19 16:28:09 christos Exp $
 # ESRI Shapefile format (.shp .shx .dbf=DBaseIII)
 # Based on info from
 # <URL:http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf>
index ac4b02c..613437f 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: fcs,v 1.4 2009/09/19 16:28:09 christos Exp $
 # 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
index 93da429..8d60f69 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: filesystems,v 1.55 2010/01/16 17:45:12 chl Exp $
 # filesystems:  file(1) magic for different filesystems
 #
 0      string  \366\366\366\366        PC formatted floppy with no filesystem
 # http://www.bcdwb.de/bcdw/index_e.htm
 >3     string  BCDL                            
 >>498  string  BCDL\ \ \ \ BIN                 \b, Bootable CD Loader (1.50Z)
-# mbr partion table entries
+# mbr partition table entries
 # OEM-ID does not contain MicroSoft,NEWLDR,DOS,SYSLINUX,or MTOOLs
 >3                     string          !MS
 >>3                    string          !SYSLINUX
 #>>>>>>>>>>>>496               ubeshort&1023   x       \b, startcylinder? %d
 >>>>>>>>>>>>502                ulelong         x       \b, startsector %u
 >>>>>>>>>>>>506                ulelong         x       \b, %u sectors
-# mbr partion table entries end
+# mbr partition table entries end
 # http://www.acronis.de/
 #FAT label=ACRONIS\ SZ
 #OEM-ID=BOOTWIZ0
 
 
 # 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
+0x410  leshort         0x137f
+>0x402 beshort         < 100           Minix filesystem, V1, %d zones
+>0x1e  string          minix           \b, bootable
+0x410  beshort         0x137f
+>0x402 beshort         < 100           Minix filesystem, V1 (big endian), %d zones
+>0x1e  string          minix           \b, bootable
+0x410  leshort         0x138f
+>0x402 beshort         < 100           Minix filesystem, V1, 30 char names, %d zones
+>0x1e  string          minix           \b, bootable
+0x410  beshort         0x138f
+>0x402 beshort         < 100           Minix filesystem, V1, 30 char names (big endian), %d zones
+>0x1e  string          minix           \b, bootable
+0x410  leshort         0x2468
+>0x402 beshort         < 100           Minix filesystem, V2, %d zones
+>0x1e  string          minix           \b, bootable
+0x410  beshort         0x2468
+>0x402 beshort         < 100           Minix filesystem, V2 (big endian), %d zones
+>0x1e  string          minix           \b, bootable
+
+0x410  leshort         0x2478
+>0x402 beshort         < 100           Minix filesystem, V2, 30 char names, %d zones
+>0x1e  string          minix           \b, bootable
+0x410  leshort         0x2478
+>0x402 beshort         < 100           Minix filesystem, V2, 30 char names, %d zones
+>0x1e  string          minix           \b, bootable
+0x410  beshort         0x2478
+>0x402 beshort         !0              Minix filesystem, V2, 30 char names (big endian), %d zones
+>0x1e  string          minix           \b, bootable
+0x410  leshort         0x4d5a
+>0x402 beshort         !0              Minix filesystem, V3, %d zones
 >0x1e  string          minix           \b, bootable
-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-        romfs filesystem, version 1
 !:mime application/x-iso9660-image
 32776  string    CDROM     High Sierra CD-ROM filesystem data
 
+# .cso files
+0    string    CISO    Compressed ISO CD image
+
 # cramfs filesystem - russell@coker.com.au
 0       lelong    0x28cd3d45      Linux Compressed ROM File System data, little endian
 >4      lelong  x size %lu
 0      string  VoIP\ Startup\ and      Aculab VoIP firmware
 >35    string  x       format %s
 
-# u-boot/PPCBoot image file
-# From: Mark Brown <broonie@sirena.org.uk>
-0      belong  0x27051956      u-boot/PPCBoot image
->4     string  PPCBoot
->>12   string  x               version %s
+# From: Mark Brown <broonie@sirena.org.uk> [old]
+# From: Behan Webster <behanw@websterwood.com>
+0      belong  0x27051956      u-boot legacy uImage,
+>32    string  x               %s,
+>28    byte    0               Invalid os/
+>28    byte    1               OpenBSD/
+>28    byte    2               NetBSD/
+>28    byte    3               FreeBSD/
+>28    byte    4               4.4BSD/
+>28    byte    5               Linux/
+>28    byte    6               SVR4/
+>28    byte    7               Esix/
+>28    byte    8               Solaris/
+>28    byte    9               Irix/
+>28    byte    10              SCO/
+>28    byte    11              Dell/
+>28    byte    12              NCR/
+>28    byte    13              LynxOS/
+>28    byte    14              VxWorks/
+>28    byte    15              pSOS/
+>28    byte    16              QNX/
+>28    byte    17              Firmware/
+>28    byte    18              RTEMS/
+>28    byte    19              ARTOS/
+>28    byte    20              Unity OS/
+>28    byte    21              INTEGRITY/
+>29    byte    0               \bInvalid CPU,
+>29    byte    1               \bAlpha,
+>29    byte    2               \bARM,
+>29    byte    3               \bIntel x86,
+>29    byte    4               \bIA64,
+>29    byte    5               \bMIPS,
+>29    byte    6               \bMIPS 64-bit,
+>29    byte    7               \bPowerPC,
+>29    byte    8               \bIBM S390,
+>29    byte    9               \bSuperH,
+>29    byte    10              \bSparc,
+>29    byte    11              \bSparc 64-bit,
+>29    byte    12              \bM68K,
+>29    byte    13              \bNios-32,
+>29    byte    14              \bMicroBlaze,
+>29    byte    15              \bNios-II,
+>29    byte    16              \bBlackfin,
+>29    byte    17              \bAVR32,
+>29    byte    18              \bSTMicroelectronics ST200,
+>30    byte    0               Invalid Image
+>30    byte    1               Standalone Program
+>30    byte    2               OS Kernel Image
+>30    byte    3               RAMDisk Image
+>30    byte    4               Multi-File Image
+>30    byte    5               Firmware Image
+>30    byte    6               Script File
+>30    byte    7               Filesystem Image (any type)
+>30    byte    8               Binary Flat Device Tree BLOB
+>31    byte    0               (Not compressed),
+>31    byte    1               (gzip),
+>31    byte    2               (bzip2),
+>31    byte    3               (lzma),
+>12    belong  x               %d bytes,
+>8     bedate  x               %s,
+>16    belong  x               Load Address: 0x%08X,
+>20    belong  x               Entry Point: 0x%08X,
+>4     belong  x               Header CRC: 0x%08X,
+>24    belong  x               Data CRC: 0x%08X
 
 # JFFS2 file system
 0      leshort 0x1984          Linux old jffs2 filesystem data little endian
 >>>>>>>>&0      bedate          !0                      incremental since: %s
 
 #----------------------------------------------------------
+#delta ISO    Daniel Novotny (dnovotny@redhat.com)
+0      string  DISO    Delta ISO data
+>4     belong  x       version %d
+
 # VMS backup savesets - gerardo.cacciari@gmail.com
 #
 4            string  \x01\x00\x01\x00\x01\x00
 # dvdisaster's .ecc
 # From: "Nelson A. de Oliveira" <naoliv@gmail.com>
 0      string  *dvdisaster*    dvdisaster error correction file
+
+# xfs metadump image 
+# mb_magic XFSM at 0; superblock magic XFSB at 1 << mb_blocklog
+# but can we do the << ?  For now it's always 512 (0x200) anyway.
+0      string XFSM
+>0x200 string XFSB     XFS filesystem metadump image
+
index 0b985f2..dea35ae 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: flash,v 1.9 2009/11/08 01:30:01 christos Exp $
 # flash:       file(1) magic for Macromedia Flash file format
 #
 # See
@@ -17,5 +18,8 @@
 !:mime video/x-flv
 
 #
+# Yosu Gomez
+0       string AGD2\xbe\xb8\xbb\xcd\x00 Macromedia Freehand 7 Document
+0       string AGD3\xbe\xb8\xbb\xcc\x00 Macromedia Freehand 8 Document
 # From Dave Wilson
 0      string AGD4\xbe\xb8\xbb\xcb\x00 Macromedia Freehand 9 Document
index 31ff8a2..3c5d744 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: fonts,v 1.21 2009/12/06 23:17:52 rrt Exp $
 # fonts:  file(1) magic for font data
 #
 0      search/1        FONT            ASCII vfont text
@@ -9,6 +11,9 @@
 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
+0      string          %!FontType1     PostScript Type 1 font program data
+6      string          %!FontType1     PostScript Type 1 font program data
+0      string          %!PS-Adobe-3.0\ Resource-Font   PostScript Type 1 font text
 
 # X11 font files in SNF (Server Natural Format) format
 0      belong          00000004                X11 SNF font data, MSB first
@@ -51,6 +56,7 @@
 
 # True Type fonts
 0      string  \000\001\000\000\000    TrueType font data
+!:mime application/x-font-ttf
 
 0      string          \007\001\001\000Copyright\ (c)\ 199     Adobe Multiple Master font
 0      string          \012\001\001\000Copyright\ (c)\ 199     Adobe Multiple Master font
 0      string          ttcf            TrueType font collection data
 
 # Opentype font data from Avi Bercovich
-0      string          OTTO            OpenType font data 
+0      string          OTTO            OpenType font data
+!:mime application/vnd.ms-opentype
 
 # Gürkan Sengün <gurkan@linuks.mine.nu>, www.linuks.mine.nu 
 0      string          SplineFontDB:   Spline Font Database 
+!:mime application/vnd.font-fontforge-sfd
 >14    string          x               version %s
index f42c7c8..e2ef0cd 100644 (file)
@@ -1,3 +1,6 @@
+
+#------------------------------------------------------------------------------
+# $File: fortran,v 1.6 2009/09/19 16:28:09 christos Exp $
 # FORTRAN source
 0      regex/100       \^[Cc][\ \t]    FORTRAN program
 !:mime text/x-fortran
index 3699b44..babe890 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: frame,v 1.12 2009/09/19 16:28:09 christos Exp $
 # frame:  file(1) magic for FrameMaker files
 #
 # This stuff came on a FrameMaker demo tape, most of which is
index be30417..a01ac4a 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: freebsd,v 1.7 2009/09/19 16:28:09 christos Exp $
 # freebsd:  file(1) magic for FreeBSD objects
 #
 # All new-style FreeBSD magic numbers are in host byte order (i.e.,
index ccc6d59..0a7a7f8 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: fsav,v 1.11 2009/09/19 16:28:09 christos Exp $
 # fsav:  file(1) magic for datafellows fsav virus definition files
 # Anthon van der Neut (anthon@mnt.org)
 
index 32ccdfe..782bfe9 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: games,v 1.8 2009/09/19 16:28:09 christos Exp $
 # games:  file(1) for games
 
 # Fabio Bonelli <fabiobonelli@libero.it>
index ee726f3..893d0d9 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: gcc,v 1.4 2009/09/19 16:28:09 christos Exp $
 # gcc:  file(1) magic for GCC special files
 #
 0      string          gpch            GCC precompiled header
index af1df7b..66c2bd1 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: geos,v 1.4 2009/09/19 16:28:09 christos Exp $
 # GEOS files (Vidar Madsen, vidar@gimp.org)
 # semi-commonly used in embedded and handheld systems.
 0      belong  0xc745c153      GEOS
index 674bbfb..4fc6521 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: gimp,v 1.6 2009/09/19 16:28:09 christos Exp $
 # GIMP Gradient: file(1) magic for the GIMP's gradient data files
 # by Federico Mena <federico@nuclecu.unam.mx>
 
index 80a4f88..463688f 100644 (file)
@@ -1,3 +1,6 @@
+
+#------------------------------------------------------------------------------
+# $File: gnome-keyring,v 1.2 2009/09/19 16:28:09 christos Exp $
 # GNOME keyring
 # Contributed by Josh Triplett
 # FIXME: Could be simplified if pstring supported two-byte counts
index 66c670c..55df7b7 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: gnu,v 1.11 2009/09/19 16:28:09 christos Exp $
 # gnu:  file(1) magic for various GNU tools
 #
 # GNU nlsutils message catalog file format
index 76dfa90..928ad3e 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: gnumeric,v 1.4 2009/09/19 16:28:09 christos Exp $
 # gnumeric:  file(1) magic for 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
index a5f1433..25bd759 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: grace,v 1.4 2009/09/19 16:28:09 christos Exp $
 # ACE/gr and Grace type files - PLEASE DO NOT REMOVE THIS LINE
 #
 # ACE/gr binary
index 831a002..b944d46 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: graphviz,v 1.7 2009/09/19 16:28:09 christos Exp $
 # graphviz:  file(1) magic for http://www.graphviz.org/
 
 # FIXME: These patterns match too generally. For example, the first
index 6e833a3..2bfef1b 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: gringotts,v 1.5 2009/09/19 16:28:09 christos Exp $
 # gringotts:  file(1) magic for Gringotts
 # http://devel.pluto.linux.it/projects/Gringotts/
 # author: Germano Rizzo <mano@pluto.linux.it>
index a096eeb..96067e9 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: hitachi-sh,v 1.5 2009/09/19 16:28:09 christos Exp $
 # hitach-sh: file(1) magic for Hitachi Super-H
 #
 # Super-H COFF
index 2d064cc..3201c15 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: hp,v 1.23 2009/09/19 16:28:09 christos Exp $
 # hp:  file(1) magic for Hewlett Packard machines (see also "printer")
 #
 # XXX - somebody should figure out whether any byte order needs to be
index d8070f7..b3d66ce 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: human68k,v 1.5 2009/09/19 16:28:09 christos Exp $
 # human68k:  file(1) magic for Human68k (X680x0 DOS) binary formats
 # Magic too short!
 #0             string  HU              Human68k
index 8cd9da2..37d17bd 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: ibm370,v 1.8 2009/09/19 16:28:09 christos Exp $
 # ibm370:  file(1) magic for IBM 370 and compatibles.
 #
 # "ibm370" said that 0x15d == 0535 was "ibm 370 pure executable".
index 6870c31..72755fa 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: ibm6000,v 1.9 2009/09/19 16:28:09 christos Exp $
 # ibm6000:  file(1) magic for RS/6000 and the RT PC.
 #
 0      beshort         0x01df          executable (RISC System/6000 V3.1) or obj module
index 4d2a832..bde16b1 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: iff,v 1.12 2009/09/19 16:28:09 christos Exp $
 # iff: file(1) magic for Interchange File Format (see also "audio" & "images")
 #
 # Daniel Quinlan (quinlan@yggdrasil.com) -- IFF was designed by Electronic
index 7eacf86..7586ad8 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: images,v 1.64 2009/12/06 00:38:50 christos Exp $
 # images:  file(1) magic for image formats (see also "iff", and "c-lang" for
 # XPM bitmaps)
 #
@@ -75,7 +77,7 @@
 #
 # 137 P N G \r \n ^Z \n [4-byte length] H E A D [HEAD data] [HEAD crc] ...
 #
-0      string          \x89PNG\x0d\x0a\x1a\x0a         PNG image
+0      string          \x89PNG\x0d\x0a\x1a\x0a         PNG image data
 !:mime image/png
 >16    belong          x               \b, %ld x
 >20    belong          x               %ld,
 >2     byte            1       RLE compressed
 
 # Adobe Photoshop
+# From: Asbjoern Sloth Toennesen <asbjorn@lila.io>
 0      string          8BPS Adobe Photoshop Image
 !:mime image/vnd.adobe.photoshop
+>4   beshort 2 (PSB)
+>18  belong  x \b, %d x
+>14  belong  x %d,
+>24  beshort 0 bitmap
+>24  beshort 1 grayscale
+>>12 beshort 2 with alpha
+>24  beshort 2 indexed
+>24  beshort 3 RGB
+>>12 beshort 4 \bA
+>24  beshort 4 CMYK
+>>12 beshort 5 \bA
+>24  beshort 7 multichannel
+>24  beshort 8 duotone
+>24  beshort 9 lab
+>12  beshort > 1
+>>12  beshort x \b, %dx
+>12  beshort 1 \b,
+>22  beshort x %d-bit channel
+>12  beshort > 1 \bs
 
 # XV thumbnail indicator (ThMO)
 0      string          P7\ 332         XV thumbnail image data
 # Submitted by: Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
 # Modified by (1): Abel Cheung <abelcheung@gmail.com>
 0      string  AT&TFORM
-!:mime image/vnd.djvu
 >12    string  DJVM            DjVu multiple page document
+!:mime image/vnd.djvu
 >12    string  DJVU            DjVu image or single page document
+!:mime image/vnd.djvu
 >12    string  DJVI            DjVu shared document
+!:mime image/vnd.djvu
 >12    string  THUM            DjVu page thumbnails
+!:mime image/vnd.djvu
 
 
 # From Marc Espie
index ba35d61..fe518ec 100644 (file)
@@ -1,8 +1,9 @@
 
 #------------------------------------------------------------------------------
+# $File: inform,v 1.5 2009/09/19 16:28:09 christos Exp $
 # inform:  file(1) magic for Inform interactive fiction language
 
 # URL:  http://www.inform-fiction.org/
 # From: Reuben Thomas <rrt@sc3d.org>
 
-0      search/cB/100   constant\ story         Inform source text
+0      search/100/cW   constant\ story         Inform source text
index 00942c2..9cd5d7e 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: intel,v 1.8 2009/09/19 16:28:10 christos Exp $
 # intel:  file(1) magic for x86 Unix
 #
 # Various flavors of x86 UNIX executable/object (other than Xenix, which
index 3eea3cf..8e3aaf5 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: interleaf,v 1.10 2009/09/19 16:28:10 christos Exp $
 # interleaf:  file(1) magic for InterLeaf TPS:
 #
 0      string          =\210OPS        Interleaf saved data
index 9903cdd..f40521a 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: island,v 1.5 2009/09/19 16:28:10 christos Exp $
 # island:  file(1) magic for IslandWite/IslandDraw, from SunOS 5.5.1
 # "/etc/magic":
 # From: guy@netapp.com (Guy Harris)
index 592f064..57a6e9e 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: ispell,v 1.8 2009/09/19 16:28:10 christos Exp $
 # ispell:  file(1) magic for ispell
 #
 # Ispell 3.0 has a magic of 0x9601 and ispell 3.1 has 0x9602.  This magic
index cca5542..9d8b488 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------
+# $File: java,v 1.12 2009/09/19 16:28:10 christos Exp $
 # Java ByteCode and Mach-O binaries (e.g., Mac OS X) use the
 # same magic number, 0xcafebabe, so they are both handled
 # in the entry called "cafebabe".
index 4470be4..dbf8be7 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: jpeg,v 1.15 2009/09/19 16:28:10 christos Exp $
 # JPEG images
 # SunOS 5.5.1 had
 #
index 89e7772..007a4b7 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: karma,v 1.6 2009/09/19 16:28:10 christos Exp $
 # karma:  file(1) magic for Karma data files
 #
 # From <rgooch@atnf.csiro.au>
index d81ee69..f8a1e84 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: kde,v 1.4 2009/09/19 16:28:10 christos Exp $
 # kde:  file(1) magic for KDE
 
 0              string  [KDE\ Desktop\ Entry]   KDE desktop entry
index 5b59b9e..5770101 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: kml,v 1.2 2009/09/19 16:28:10 christos Exp $
 # Type: Google KML, formerly Keyhole Markup Language
 # Future development of this format has been handed
 # over to the Open Geospatial Consortium.
index 87c186b..6ae87c1 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: lecter,v 1.4 2009/09/19 16:28:10 christos Exp $
 # DEC SRC Virtual Paper: Lectern files
 # Karl M. Hegbloom <karlheg@inetarena.com>
 0      string  lect    DEC SRC Virtual Paper Lectern file
index eae9b10..cc9fac5 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: lex,v 1.6 2009/09/19 16:28:10 christos Exp $
 # lex:  file(1) magic for lex
 #
 #      derived empirically, your offsets may vary!
index cf20e49..a7a0a8a 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: lif,v 1.8 2009/09/19 16:28:10 christos Exp $
 # lif:  file(1) magic for lif
 #
 # (Daniel Quinlan <quinlan@yggdrasil.com>)
index 83d4305..ce337f1 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: linux,v 1.33 2009/10/23 16:44:59 christos Exp $
 # linux:  file(1) magic for Linux files
 #
 # Values for Linux/i386 binaries, from Daniel Quinlan <quinlan@yggdrasil.com>
@@ -61,6 +63,9 @@
 >0x404 long            x               size %d pages
 >>4086 string          SWAPSPACE2      
 >>>1052        string          >\0             Label %s
+# From Daniel Novotny <dnovotny@redhat.com>
+# swap file for PowerPC
+65526  string          SWAPSPACE2      Linux/ppc swap file
 # ECOFF magic for OSF/1 and Linux (only tested under Linux though)
 #
 #      from Erik Troan (ewt@redhat.com) examining od dumps, so this
index c6f31da..1109880 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: lisp,v 1.23 2009/09/19 16:28:10 christos Exp $
 # lisp:  file(1) magic for lisp programs
 #
 # various lisp types, from Daniel Quinlan (quinlan@yggdrasil.com)
@@ -11,8 +13,6 @@
 #>2    search/4096     !\r             Lisp/Scheme program text
 #>2    search/4096     \r              Windows INF file
 
-0      search/4096     (if\                    Lisp/Scheme program text
-!:mime text/x-lisp
 0      search/4096     (setq\                  Lisp/Scheme program text
 !:mime text/x-lisp
 0      search/4096     (defvar\                Lisp/Scheme program text
index 8c1610c..058fe4e 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: llvm,v 1.4 2009/09/19 16:28:10 christos Exp $
 # llvm:  file(1) magic for LLVM byte-codes
 # URL:  http://llvm.cs.uiuc.edu/docs/BytecodeFormat.html#signature
 # From: Al Stone <ahs3@fc.hp.com>
index 9aa87b1..61e69a6 100644 (file)
@@ -1,12 +1,14 @@
+
 #------------------------------------------------------------------------------
+# $File: lua,v 1.5 2009/09/19 16:28:10 christos Exp $
 # lua:  file(1) magic for Lua scripting language
 # URL:  http://www.lua.org/
 # From: Reuben Thomas <rrt@sc3d.org>, Seo Sanghyeon <tinuviel@sparcs.kaist.ac.kr>
 
 # Lua scripts
-0      search/1/b      #!\ /usr/bin/lua        Lua script text executable
+0      search/1/w      #!\ /usr/bin/lua        Lua script text executable
 !:mime text/x-lua
-0      search/1/b      #!\ /usr/local/bin/lua  Lua script text executable
+0      search/1/w      #!\ /usr/local/bin/lua  Lua script text executable
 !:mime text/x-lua
 0      search/1        #!/usr/bin/env\ lua     Lua script text executable
 !:mime text/x-lua
index 2ab2393..6ecc40a 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: luks,v 1.4 2009/09/19 16:28:10 christos Exp $
 # luks:  file(1) magic for Linux Unified Key Setup
 # URL: http://luks.endorphin.org/spec
 # From:        Anthon van der Neut <anthon@mnt.org>
index e53be07..8d03f1a 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------
+# $File: mach,v 1.9 2009/09/19 16:28:10 christos Exp $
 # Mach has two magic numbers, 0xcafebabe and 0xfeedface.
 # Unfortunately the first, cafebabe, is shared with
 # Java ByteCode, so they are both handled in the file "cafebabe".
index ca665de..42c8e55 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: macintosh,v 1.20 2009/09/19 16:28:10 christos Exp $
 # macintosh description
 #
 # BinHex is the Macintosh ASCII-encoded file format (see also "apple")
index 3bf4e2e..ba56caa 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: magic,v 1.9 2009/09/19 16:28:10 christos Exp $
 # magic:  file(1) magic for magic files
 #
 0      string          #\ Magic        magic text file for file(1) cmd
index 0b9d90a..56a5250 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: mail.news,v 1.17 2009/09/19 16:28:10 christos Exp $
 # mail.news:  file(1) magic for mail and news
 #
 # Unfortunately, saved netnews also has From line added in some news software.
index 6bc7562..4a263e0 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: maple,v 1.6 2009/09/19 16:28:10 christos Exp $
 # maple:  file(1) magic for maple files
 # "H. Nanosecond" <aldomel@ix.netcom.com>
 # Maple V release 4, a multi-purpose math program
index 4180196..b186641 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: mathcad,v 1.5 2009/09/19 16:28:10 christos Exp $
 # mathcad:  file(1) magic for Mathcad documents
 # URL: http://www.mathsoft.com/
 # From:        Josh Triplett <josh@freedesktop.org>
index abbc112..3c10a57 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: mathematica,v 1.7 2009/09/19 16:28:10 christos Exp $
 # mathematica:  file(1) magic for mathematica files
 # "H. Nanosecond" <aldomel@ix.netcom.com>
 # Mathematica a multi-purpose math program
index ca00db4..0ede715 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: matroska,v 1.5 2009/09/27 19:02:12 christos Exp $
 # matroska:  file(1) magic for Matroska files
 #
 # See http://www.matroska.org/
@@ -11,4 +12,4 @@
 >5             beshort         0x4282
 # DocType contents:
 >>8            string          matroska        Matroska data
-
+!:mime  video/x-matroska
index e862f59..9c66af4 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: mcrypt,v 1.5 2009/09/19 16:28:10 christos Exp $
 # Mavroyanopoulos Nikos <nmav@hellug.gr>
 # mcrypt:   file(1) magic for mcrypt 2.2.x;
 0      string          \0m\3           mcrypt 2.5 encrypted data,
index 3f1bdfc..8bc5a54 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: mercurial,v 1.4 2009/09/19 16:28:10 christos Exp $
 # mercurial:  file(1) magic for Mercurial changeset bundles
 # http://www.selenic.com/mercurial/wiki/
 #
index 2219094..d1740e8 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: mime,v 1.5 2009/09/19 16:28:10 christos Exp $
 # mime:  file(1) magic for MIME encoded files
 #
 0      string          Content-Type:\ 
index 634eff4..6ed7c9a 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: mips,v 1.5 2009/09/19 16:28:10 christos Exp $
 # mips:  file(1) magic for Silicon Graphics (MIPS, IRIS, IRIX, etc.)
 #                         Dec Ultrix (MIPS)
 # all of SGI's *current* machines and OSes run in big-endian mode on the
index 73c3747..cdeb3fc 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: mirage,v 1.7 2009/09/19 16:28:10 christos Exp $
 # mirage:  file(1) magic for Mirage executables
 #
 # XXX - byte order?
index 9a43e7b..03fcfc0 100644 (file)
@@ -1,4 +1,6 @@
+
 #-----------------------------------------------------------------------------
+# $File: misctools,v 1.10 2009/09/19 16:28:10 christos Exp $
 # misctools:  file(1) magic for miscellaneous UNIX tools.
 #
 0      search/1        %%!!                    X-Post-It-Note text
index dfb2d93..faad396 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: mkid,v 1.6 2009/09/19 16:28:10 christos Exp $
 # mkid:  file(1) magic for mkid(1) databases
 #
 # ID is the binary tags database produced by mkid(1).
index 21ab61e..3c8875e 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: mlssa,v 1.4 2009/09/19 16:28:10 christos Exp $
 # mlssa: file(1) magic for MLSSA datafiles
 #
 0              lelong          0xffffabcd      MLSSA datafile,
index 72cd9f3..5576a66 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: mmdf,v 1.6 2009/09/19 16:28:10 christos Exp $
 # mmdf:  file(1) magic for MMDF mail files
 #
 0      string  \001\001\001\001        MMDF mailbox
index 73e747e..6d2540a 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: modem,v 1.4 2009/09/19 16:28:10 christos Exp $
 # modem:  file(1) magic for modem programs
 #
 # From: Florian La Roche <florian@knorke.saar.de>
index bfe7ea0..b56e5e4 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: motorola,v 1.10 2009/09/19 16:28:11 christos Exp $
 # motorola:  file(1) magic for Motorola 68K and 88K binaries
 #
 # 68K
index 0698860..1f89589 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: mozilla,v 1.4 2009/09/19 16:28:11 christos Exp $
 # mozilla:  file(1) magic for Mozilla XUL fastload files 
 # (XUL.mfasl and XPC.mfasl)
 # URL: http://www.mozilla.org/
index a44533b..223724e 100644 (file)
@@ -1,18 +1,19 @@
 
 #------------------------------------------------------------------------------
+# $File: msdos,v 1.65 2009/09/19 16:28:11 christos Exp $
 # msdos:  file(1) magic for MS-DOS files
 #
 
 # .BAT files (Daniel Quinlan, quinlan@yggdrasil.com)
 # updated by Joerg Jenderek at Oct 2008
 0      string  @                       
->1     string/cB       \ echo\ off     DOS batch file text
+>1     string/cW       \ echo\ off     DOS batch file text
 !:mime text/x-msdos-batch
->1     string/cB       echo\ off       DOS batch file text
+>1     string/cW       echo\ off       DOS batch file text
 !:mime text/x-msdos-batch
->1     string/cB       rem\            DOS batch file text
+>1     string/cW       rem\            DOS batch file text
 !:mime text/x-msdos-batch
->1     string/cB       set\            DOS batch file text
+>1     string/cW       set\            DOS batch file text
 !:mime text/x-msdos-batch
 
 
index 95853fe..1095d05 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: msvc,v 1.5 2009/09/19 16:28:11 christos Exp $
 # msvc:  file(1) magic for msvc
 # "H. Nanosecond" <aldomel@ix.netcom.com>
 # Microsoft visual C
index f1022e3..5060c01 100644 (file)
@@ -1,4 +1,6 @@
+
 # ------------------------------------------------------------------------
+# $File: mup,v 1.4 2009/09/19 16:28:11 christos Exp $
 # mup: file(1) magic for Mup (Music Publisher) input file.
 #
 # From: Abel Cheung <abel (@) oaka.org>
index 5deb9de..7c31980 100644 (file)
@@ -1,5 +1,6 @@
 
 #-----------------------------------------------------------------------------
+# $File: natinst,v 1.4 2009/09/19 16:28:11 christos Exp $
 # natinst:  file(1) magic for National Instruments Code Files
 
 #
index 2faf98a..4067596 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: ncr,v 1.7 2009/09/19 16:28:11 christos Exp $
 # ncr:  file(1) magic for NCR Tower objects
 #
 # contributed by
index b6aae1a..a889a31 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: netbsd,v 1.18 2009/09/19 16:28:11 christos Exp $
 # netbsd:  file(1) magic for NetBSD objects
 #
 # All new-style magic numbers are in network byte order.
index f14227d..942f08a 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: netscape,v 1.6 2009/09/19 16:28:11 christos Exp $
 # netscape:  file(1) magic for Netscape files
 # "H. Nanosecond" <aldomel@ix.netcom.com>
 # version 3 and 4 I think
index fbc1605..c3f57e8 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: netware,v 1.4 2009/09/19 16:28:11 christos Exp $
 # netware:  file(1) magic for NetWare Loadable Modules (NLMs)
 # From: Mads Martin Joergensen <mmj@suse.de>
 
index 0ac4fa2..eea8aed 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: news,v 1.6 2009/09/19 16:28:11 christos Exp $
 # news:  file(1) magic for SunOS NeWS fonts (not "news" as in "netnews")
 #
 0      string          StartFontMetrics        ASCII font metrics
index c40daec..d1a6628 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: nitpicker,v 1.4 2009/09/19 16:28:11 christos Exp $
 # nitpicker:  file(1) magic for Flowfiles.
 # From: Christian Jachmann <C.Jachmann@gmx.net> http://www.nitpicker.de
 0      string  NPFF    NItpicker Flow File 
index f8ba976..7fc626c 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: ocaml,v 1.4 2009/09/19 16:28:11 christos Exp $
 # ocaml: file(1) magic for Objective Caml files.
 0      string  Caml1999        Objective caml
 >8     string  X               exec file
index 3093148..49ea3e7 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: octave,v 1.4 2009/09/19 16:28:11 christos Exp $
 # octave binary data file(1) magic, from Dirk Eddelbuettel <edd@debian.org>
 0      string          Octave-1-L      Octave binary data (little endian)
 0      string          Octave-1-B      Octave binary data (big endian)
index ee07514..383948b 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: ole2compounddocs,v 1.4 2009/09/19 16:28:11 christos Exp $
 # Microsoft OLE 2 Compound Documents : file(1) magic for Microsoft Structured
 # storage (http://en.wikipedia.org/wiki/Structured_Storage)
 # Additional tests for OLE 2 Compound Documents should be under this recipe.
index e698c36..6ae3fc0 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: olf,v 1.4 2009/09/19 16:28:11 christos Exp $
 # olf:  file(1) magic for OLF executables
 #
 # We have to check the byte order flag to see what byte order all the
index 35f79ef..8643adc 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: os2,v 1.7 2009/09/19 16:28:11 christos Exp $
 # os2:  file(1) magic for OS/2 files
 #
 
index 3dc05bf..6a05f08 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: os400,v 1.5 2009/09/19 16:28:11 christos Exp $
 # os400:  file(1) magic for IBM OS/400 files
 #
 # IBM OS/400 (i5/OS) Save file (SAVF) - gerardo.cacciari@gmail.com
index ed2ed2c..f311a89 100644 (file)
@@ -1,3 +1,6 @@
+
+#------------------------------------------------------------------------------
+# $File: os9,v 1.6 2009/09/19 16:28:11 christos Exp $
 #
 # Copyright (c) 1996 Ignatios Souvatzis. All rights reserved.
 #
index 31166c1..4e91471 100644 (file)
@@ -1,3 +1,6 @@
+
+#------------------------------------------------------------------------------
+# $File: osf1,v 1.7 2009/09/19 16:28:11 christos Exp $
 #
 # Mach magic number info
 #
index e57e119..a9d42bf 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: palm,v 1.7 2009/09/19 16:28:11 christos Exp $
 # palm:  file(1) magic for PalmOS {.prc,.pdb}: applications, docfiles, and hacks
 #
 # Brian Lalor <blalor@hcirisc.cs.binghamton.edu>
index 09965d1..221f491 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: parix,v 1.4 2009/09/19 16:28:11 christos Exp $
 #
 # Parix COFF executables
 # From: Ignatios Souvatzis <ignatios@cs.uni-bonn.de>
index 98c15f7..40ecf49 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: pbm,v 1.6 2009/09/19 16:28:11 christos Exp $
 # pbm:  file(1) magic for Portable Bitmap files
 #
 # XXX - byte order?
index 8a4d2e7..ccde22f 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: pdf,v 1.6 2009/09/19 16:28:11 christos Exp $
 # pdf:  file(1) magic for Portable Document Format
 #
 
index 5452005..fa4b82b 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: pdp,v 1.8 2009/09/19 16:28:11 christos Exp $
 # pdp:  file(1) magic for PDP-11 executable/object and APL workspace
 #
 0      lelong          0101555         PDP-11 single precision APL workspace
index 4c22ecc..1186833 100644 (file)
@@ -1,18 +1,20 @@
+
 #------------------------------------------------------------------------------
+# $File: perl,v 1.16 2009/09/19 16:28:11 christos Exp $
 # perl:  file(1) magic for Larry Wall's perl language.
 #
 # The `eval' lines recognizes an outrageously clever hack.
 # Keith Waclena <keith@cerberus.uchicago.edu>
 # Send additions to <perl5-porters@perl.org>
-0      search/1/b      #!\ /bin/perl                   Perl script text executable
+0      search/1/w      #!\ /bin/perl                   Perl script text executable
 !:mime text/x-perl
 0      search/1        eval\ "exec\ /bin/perl          Perl script text
 !:mime text/x-perl
-0      search/1/b      #!\ /usr/bin/perl               Perl script text executable
+0      search/1/w      #!\ /usr/bin/perl               Perl script text executable
 !:mime text/x-perl
 0      search/1        eval\ "exec\ /usr/bin/perl      Perl script text
 !:mime text/x-perl
-0      search/1/b      #!\ /usr/local/bin/perl         Perl script text executable
+0      search/1/w      #!\ /usr/local/bin/perl         Perl script text executable
 !:mime text/x-perl
 0      search/1        eval\ "exec\ /usr/local/bin/perl        Perl script text
 !:mime text/x-perl
 
 # Perl POD documents
 # From: Tom Hukins <tom@eborcom.com>
-0      search/1/B      \=pod\n         Perl POD document text
-0      search/1/B      \n\=pod\n       Perl POD document text
-0      search/1/B      \=head1\        Perl POD document text
-0      search/1/B      \n\=head1\      Perl POD document text
-0      search/1/B      \=head2\        Perl POD document text
-0      search/1/B      \n\=head2\      Perl POD document text
+0      search/1/W      \=pod\n         Perl POD document text
+0      search/1/W      \n\=pod\n       Perl POD document text
+0      search/1/W      \=head1\        Perl POD document text
+0      search/1/W      \n\=head1\      Perl POD document text
+0      search/1/W      \=head2\        Perl POD document text
+0      search/1/W      \n\=head2\      Perl POD document text
 
 # Perl Storable data files.
 0      string  perl-store      perl Storable (v0.6) data
index 63042ad..a8d3c9a 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: pgp,v 1.9 2009/09/19 16:28:11 christos Exp $
 # pgp:  file(1) magic for Pretty Good Privacy
 # see http://lists.gnupg.org/pipermail/gnupg-devel/1999-September/016052.html
 #
index 876dacd..7dfb286 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: pkgadd,v 1.6 2009/09/19 16:28:11 christos Exp $
 # pkgadd:  file(1) magic for SysV R4 PKG Datastreams
 #
 0       string          #\ PaCkAgE\ DaTaStReAm  pkg Datastream (SVR4)
index 58fb071..da5eb66 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: plan9,v 1.5 2009/09/19 16:28:11 christos Exp $
 # plan9:  file(1) magic for AT&T Bell Labs' Plan 9 executables
 # From: "Stefan A. Haubenthal" <polluks@web.de>
 #
index acf3bf4..795cca1 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: plus5,v 1.6 2009/09/19 16:28:11 christos Exp $
 # plus5:  file(1) magic for Plus Five's UNIX MUMPS
 #
 # XXX - byte order?  Paging Hokey....
index e25d03e..d3edb6f 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: printer,v 1.22 2009/09/19 16:28:11 christos Exp $
 # printer:  file(1) magic for printer-formatted files
 #
 
index 04e8865..efa5d40 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: project,v 1.4 2009/09/19 16:28:11 christos Exp $
 # project:  file(1) magic for Project management
 # 
 # Magic strings for ftnchek project files. Alexander Mai
index f36121f..09c733f 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: psdbms,v 1.6 2009/09/19 16:28:11 christos Exp $
 # psdbms:  file(1) magic for psdatabase
 #
 0      belong&0xff00ffff       0x56000000      ps database
index a4a5c21..7cb6f18 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: pulsar,v 1.5 2009/09/19 16:28:12 christos Exp $
 # pulsar:  file(1) magic for Pulsar POP3 daemon binary files
 #
 # http://pulsar.sourceforge.net
index fe16608..ee47c80 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: pyramid,v 1.7 2009/09/19 16:28:12 christos Exp $
 # pyramid:  file(1) magic for Pyramids
 #
 # XXX - byte order?
index 4803203..703504c 100644 (file)
@@ -1,11 +1,13 @@
 
 #------------------------------------------------------------------------------
+# $File: python,v 1.12 2009/10/27 14:49:57 christos Exp $
 # python:  file(1) magic for python
 #
 # From: David Necas <yeti@physics.muni.cz>
 # often the module starts with a multiline string
 0      string          """     a python script text executable
-# MAGIC as specified in Python/import.c (1.5 to 2.3.0a)
+# MAGIC as specified in Python/import.c (1.5 to 2.6a1 and 3.1a0, assuming
+# that Py_UnicodeFlag is off for Python 2)
 # 20121  ( YEAR - 1995 ) + MONTH  + DAY (little endian followed by "\r\n"
 0      belong          0x994e0d0a      python 1.5/1.6 byte-compiled
 0      belong          0x87c60d0a      python 2.0 byte-compiled
 0      belong          0x6df20d0a      python 2.4 byte-compiled
 0      belong          0xb3f20d0a      python 2.5 byte-compiled
 0      belong          0xd1f20d0a      python 2.6 byte-compiled
+0      belong          0x3b0c0d0a      python 3.0 byte-compiled
+0      belong          0x4f0c0d0a      python 3.1 byte-compiled
 
-
-0      string/b  #!\ /usr/bin/python   python script text executable
-
+0      search/1/w      #!\ /usr/bin/python     Python script text executable
+!:mime text/x-python
+0      search/1/w      #!\ /usr/local/bin/python       Python script text executable
+!:mime text/x-python
+0      search/1        #!/usr/bin/env\ python  Python script text executable
+!:mime text/x-python
+0      search/1        #!\ /usr/bin/env\ ruby  Python script text executable
+!:mime text/x-python
index a809cb9..d973faf 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: revision,v 1.6 2009/09/19 16:28:12 christos Exp $
 # file(1) magic for revision control files
 # From Hendrik Scholz <hendrik@scholz.net>
 0      string  /1\ :pserver:   cvs password text file
index c6e3070..9bc3c4b 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: riff,v 1.18 2009/09/19 16:28:12 christos Exp $
 # riff:  file(1) magic for RIFF format
 # See
 #
index 6d7e850..455f9c7 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: rpm,v 1.9 2009/11/06 13:53:52 christos Exp $
 #
 # RPM: file(1) magic for Red Hat Packages   Erik Troan (ewt@redhat.com)
 #
@@ -6,18 +8,31 @@
 >2     beshort         0xeedb          RPM
 !:mime application/x-rpm
 >>4    byte            x               v%d
->>6    beshort         0               bin
+>>5    byte            x               \b.%d
 >>6    beshort         1               src
->>8    beshort         1               i386
->>8    beshort         2               Alpha
->>8    beshort         3               Sparc
->>8    beshort         4               MIPS
->>8    beshort         5               PowerPC
->>8    beshort         6               68000
->>8    beshort         7               SGI
->>8    beshort         8               RS6000
->>8    beshort         9               IA64
->>8    beshort         10              Sparc64
->>8    beshort         11              MIPSel
->>8    beshort         12              ARM
+>>6    beshort         0               bin
+>>>8   beshort         1               i386/x86_64
+>>>8   beshort         2               Alpha/Sparc64
+>>>8   beshort         3               Sparc
+>>>8   beshort         4               MIPS
+>>>8   beshort         5               PowerPC
+>>>8   beshort         6               68000
+>>>8   beshort         7               SGI
+>>>8   beshort         8               RS6000
+>>>8   beshort         9               IA64
+>>>8   beshort         10              Sparc64
+
+#delta RPM    Daniel Novotny (dnovotny@redhat.com)
+0      string  drpm    Delta RPM
+!:mime  application/x-rpm
+>12    string  x       %s
+
+>>>8   beshort         11              MIPSel
+>>>8   beshort         12              ARM
+>>>8   beshort         13              MiNT
+>>>8   beshort         14              S/390
+>>>8   beshort         15              S/390x
+>>>8   beshort         16              PowerPC64
+>>>8   beshort         17              SuperH
+>>>8   beshort         18              Xtensa
 >>10   string          x               %s
index 8e5bfe0..dca3195 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: rtf,v 1.7 2009/09/19 16:28:12 christos Exp $
 # rtf: file(1) magic for Rich Text Format (RTF)
 #
 # Duncan P. Simpson, D.P.Simpson@dcs.warwick.ac.uk
index de6f2a0..7030295 100644 (file)
@@ -1,10 +1,16 @@
+
 #------------------------------------------------------------------------------
-# ruby:  file(1) magic for Lua scripting language
+# $File: ruby,v 1.3 2009/09/19 16:28:12 christos Exp $
+# ruby:  file(1) magic for Ruby scripting language
 # URL:  http://www.ruby-lang.org/
 # From: Reuben Thomas <rrt@sc3d.org>
 
 # Ruby scripts
-0      search/1/b      #!\ /usr/bin/ruby       Ruby script text executable
-0      search/1/b      #!\ /usr/local/bin/ruby Ruby script text executable
+0      search/1/w      #!\ /usr/bin/ruby       Ruby script text executable
+!:mime text/x-ruby
+0      search/1/w      #!\ /usr/local/bin/ruby Ruby script text executable
+!:mime text/x-ruby
 0      search/1        #!/usr/bin/env\ ruby    Ruby script text executable
+!:mime text/x-ruby
 0      search/1        #!\ /usr/bin/env\ ruby  Ruby script text executable
+!:mime text/x-ruby
index 72027d6..dc6d6c8 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: sc,v 1.6 2009/09/19 16:28:12 christos Exp $
 # sc:  file(1) magic for "sc" spreadsheet
 #
 38     string          Spreadsheet     sc spreadsheet file
index 11d50b2..95b3a5d 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: sccs,v 1.6 2009/09/19 16:28:12 christos Exp $
 # sccs:  file(1) magic for SCCS archives
 #
 # SCCS archive structure:
index f7aedae..dcdde17 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: scientific,v 1.6 2009/09/19 16:28:12 christos Exp $
 # scientific:  file(1) magic for scientific formats 
 #
 # From: Joe Krahn <krahn@niehs.nih.gov>
index aa55d21..8785dd8 100644 (file)
@@ -1,3 +1,6 @@
+
+#------------------------------------------------------------------------------
+# $File: securitycerts,v 1.4 2009/09/19 16:28:12 christos Exp $
 0      search/1                -----BEGIN\ CERTIFICATE------   RFC1421 Security Certificate text
 0      search/1                -----BEGIN\ NEW\ CERTIFICATE    RFC1421 Security Certificate Signing Request text
 0      belong  0xedfeedfe      Sun 'jks' Java Keystore File data
index 7880ab5..aeb6203 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: sendmail,v 1.7 2009/09/19 16:28:12 christos Exp $
 # sendmail:  file(1) magic for sendmail config files
 #
 # XXX - byte order?
index e6f7b52..0ce6bf2 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: sequent,v 1.8 2009/09/19 16:28:12 christos Exp $
 # sequent:  file(1) magic for Sequent machines
 #
 # Sequent information updated by Don Dwiggins <atsun!dwiggins>.
index 5b54027..b1b154b 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: sgi,v 1.17 2009/09/19 16:28:12 christos Exp $
 # sgi:  file(1) magic for Silicon Graphics applications
 
 #
index 7e3391b..0a57375 100644 (file)
@@ -1,36 +1,59 @@
 #------------------------------------------------------------------------------
+# $File: sgml,v 1.24 2009/09/19 17:31:35 christos Exp $
 # Type:        SVG Vectorial Graphics
 # From:        Noel Torres <tecnico@ejerciciosresueltos.com>
 0      string          \<?xml\ version="
 >15    string          >\0
->>23   search/400      \<svg                   SVG Scalable Vector Graphics image
+>>19   search/4096     \<svg                   SVG Scalable Vector Graphics image
 !:mime image/svg+xml
->>23   search/400      \<gnc-v2                GnuCash file
+>>19   search/4096     \<gnc-v2                GnuCash file
 !:mime application/x-gnucash
 
 # Sitemap file
 0      string          \<?xml\ version="
 >15    string          >\0
->>23   search/400      \<urlset                XML Sitemap document text
+>>19   search/4096     \<urlset                XML Sitemap document text
 !:mime application/xml-sitemap
 
+# xhtml
+0      string          \<?xml\ version="
+>15    string          >\0
+>>19   search/4096/cWbt        \<!doctype\ html        xHTML document text
+!:mime text/html
+0      string          \<?xml\ version='
+>15    string          >\0
+>>19   search/4096/cWbt        \<!doctype\ html        xHTML document text
+!:mime text/html
+0      string          \<?xml\ version="
+>15    string          >\0
+>>19   search/4096/cWbt        \<html  broken xHTML document text
+!:mime text/html
+
 #------------------------------------------------------------------------------
 # sgml:  file(1) magic for Standard Generalized Markup Language
 # HyperText Markup Language (HTML) is an SGML document type,
 # from Daniel Quinlan (quinlan@yggdrasil.com)
 # adapted to string extenstions by Anthon van der Neut <anthon@mnt.org)
-0      search/1/cB     \<!doctype\ html        HTML document text
+0      search/4096/cWbt        \<!doctype\ html        HTML document text
+!:mime text/html
+0      search/4096/cwbt        \<head                  HTML document text
+!:mime text/html
+0      search/4096/cwbt        \<title                 HTML document text
+!:mime text/html
+0      search/4096/cwbt        \<html                  HTML document text
+!:mime text/html
+0      search/4096/cwbt        \<script                HTML document text
 !:mime text/html
-0      search/1/cb     \<head                  HTML document text
+0      search/4096/cwbt        \<style                 HTML document text
 !:mime text/html
-0      search/1/cb     \<title                 HTML document text
+0      search/4096/cwbt        \<table                 HTML document text
 !:mime text/html
-0      search/1/cb     \<html                  HTML document text
+0      search/4096/cwbt        \<a\ href=              HTML document text
 !:mime text/html
 
 # Extensible markup language (XML), a subset of SGML
 # from Marc Prud'hommeaux (marc@apocalypse.org)
-0      search/1/cb     \<?xml                  XML document text
+0      search/1/cwbt   \<?xml                  XML document text
 !:mime application/xml
 0      string          \<?xml\ version\ "      XML
 !:mime application/xml
 >15    search/1        >\0                     %.3s document text
 >>23   search/1        \<xsl:stylesheet        (XSL stylesheet)
 >>24   search/1        \<xsl:stylesheet        (XSL stylesheet)
-0      search/1/b      \<?xml                  XML document text
+0      search/1/wbt    \<?xml                  XML document text
 !:mime application/xml
-0      search/1/b      \<?XML                  broken XML document text
+!:strength - 10
+0      search/1/wbt    \<?XML                  broken XML document text
 !:mime application/xml
+!:strength - 10
 
 
 # SGML, mostly from rph@sq
-0      search/1/cb     \<!doctype              exported SGML document text
-0      search/1/cb     \<!subdoc               exported SGML subdocument text
-0      search/1/cb     \<!--                   exported SGML document text
+0      search/4096/cwbt        \<!doctype              exported SGML document text
+0      search/4096/cwbt        \<!subdoc               exported SGML subdocument text
+0      search/4096/cwbt        \<!--                   exported SGML document text
+!:strength - 10
 
 # Web browser cookie files
 # (Mozilla, Galeon, Netscape 4, Konqueror..)
index 0e0e4e3..d5f3604 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------
+# $File: sharc,v 1.6 2009/09/19 16:28:12 christos Exp $
 # file(1) magic for sharc files
 #
 # SHARC DSP, MIDI SysEx and RiscOS filetype definitions added by 
index fbad852..5882a64 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: sinclair,v 1.5 2009/09/19 16:28:12 christos Exp $
 # sinclair:  file(1) sinclair QL
 
 # additions to /etc/magic by Thomas M. Ott (ThMO)
index a14803e..82dacb8 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: sketch,v 1.4 2009/09/19 16:28:12 christos Exp $
 # Sketch Drawings: http://sketch.sourceforge.net/ 
 # From: Edwin Mons <e@ik.nu>
 0      search/1        ##Sketch        Sketch document text
index b882759..9ff2c6b 100644 (file)
@@ -1,5 +1,6 @@
 
 #-----------------------------------------------
+# $File: smalltalk,v 1.5 2009/09/19 16:28:12 christos Exp $
 # GNU Smalltalk image, starting at version 1.6.2
 # From: catull_us@yahoo.com
 #
index 282c44f..26eee39 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: sniffer,v 1.14 2009/09/19 16:28:12 christos Exp $
 # sniffer:  file(1) magic for packet capture files
 #
 # From: guy@alum.mit.edu (Guy Harris)
index ac7891d..06c1f01 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: softquad,v 1.13 2009/09/19 16:28:12 christos Exp $
 # softquad:  file(1) magic for SoftQuad Publishing Software
 #
 # Author/Editor and RulesBuilder
index bfda306..c504b1f 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: spec,v 1.4 2009/09/19 16:28:12 christos Exp $
 # spec:  file(1) magic for SPEC raw results (*.raw, *.rsf)
 #
 # Cloyce D. Spradling <cloyce@headgear.org>
index a48ac41..e25ebf2 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: spectrum,v 1.6 2009/09/19 16:28:12 christos Exp $
 # spectrum:  file(1) magic for Spectrum emulator files.
 #
 # John Elliott <jce@seasip.demon.co.uk>
index 21c6e51..cce5550 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: sql,v 1.6 2009/09/19 16:28:12 christos Exp $
 # sql:  file(1) magic for SQL files
 #
 # From: "Marty Leisner" <mleisner@eng.mc.xerox.com>
index 871071e..2711938 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: sun,v 1.20 2009/09/19 16:28:12 christos Exp $
 # sun:  file(1) magic for Sun machines
 #
 # Values for big-endian Sun (MC680x0, SPARC) binaries on pre-5.x
index 03d6cdd..70b5b1c 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------
+# $File: sysex,v 1.6 2009/09/19 16:28:12 christos Exp $
 # sysex: file(1) magic for MIDI sysex files
 #
 # 
index d9554bf..b6577b6 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: teapot,v 1.4 2009/09/19 16:28:12 christos Exp $
 # teapot:  file(1) magic for "teapot" spreadsheet
 #
 0       string          #!teapot\012xdr      teapot work sheet (XDR format)
index 2226ce8..97ea429 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: terminfo,v 1.6 2009/09/19 16:28:12 christos Exp $
 # terminfo:  file(1) magic for terminfo
 #
 # XXX - byte order for screen images?
index 5416db1..b650497 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: tex,v 1.16 2009/09/19 16:28:12 christos Exp $
 # tex:  file(1) magic for TeX files
 #
 # XXX - needs byte-endian stuff (big-endian and little-endian DVI?)
index 779883a..18c6df9 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: tgif,v 1.5 2009/09/19 16:28:12 christos Exp $
 # file(1) magic for tgif(1) files
 # From Hendrik Scholz <hendrik@scholz.net>
 
index 89e2204..d7903fe 100644 (file)
@@ -1,4 +1,6 @@
-# ------------------------------------------------------------------------
+
+#------------------------------------------------------------------------------
+# $File: ti-8x,v 1.6 2009/09/19 16:28:12 christos Exp $
 # ti-8x: file(1) magic for the TI-8x and TI-9x Graphing Calculators.
 #
 # From: Ryan McGuire (rmcguire@freenet.columbus.oh.us).
index c9ce025..9381a0c 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: timezone,v 1.11 2009/09/19 16:28:12 christos Exp $
 # timezone:  file(1) magic for timezone data
 #
 # from Daniel Quinlan (quinlan@yggdrasil.com)
index 73731a8..b24ea0a 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: troff,v 1.10 2009/09/19 16:28:12 christos Exp $
 # troff:  file(1) magic for *roff
 #
 # updated by Daniel Quinlan (quinlan@yggdrasil.com)
index 119afa6..191501d 100644 (file)
@@ -1,5 +1,6 @@
-#
+
 #------------------------------------------------------------------------------
+# $File: tuxedo,v 1.4 2009/09/19 16:28:13 christos Exp $
 # tuxedo:      file(1) magic for BEA TUXEDO data files
 #
 # from Ian Springer <ispringer@hotmail.com>
index 2eda7c3..e99fe37 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: typeset,v 1.8 2009/09/19 16:28:13 christos Exp $
 # typeset:  file(1) magic for other typesetting
 #
 0      string          Interpress/Xerox        Xerox InterPress data
index 5f4a576..ef92c1e 100644 (file)
@@ -1,4 +1,6 @@
-#---------------------------------------------------------------------------
+
+#------------------------------------------------------------------------------
+# $File: unicode,v 1.5 2009/09/19 16:28:13 christos Exp $
 # Unicode:  BOM prefixed text files - Adrian Havill <havill@turbolinux.co.jp>
 # GRR: These types should be recognised in file_ascmagic so these
 # encodings can be treated by text patterns.
index 910cea4..82ac2ad 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: unknown,v 1.7 2009/09/19 16:28:13 christos Exp $
 # unknown:  file(1) magic for unknown machines
 #
 # XXX - this probably should be pruned, as it'll match PDP-11 and
index 982cba9..c00ddab 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: uuencode,v 1.7 2009/09/19 16:28:13 christos Exp $
 # uuencode:  file(1) magic for ASCII-encoded files
 #
 
index 6df6fd9..f9135fd 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: varied.out,v 1.21 2009/09/19 16:28:13 christos Exp $
 # varied.out:  file(1) magic for various USG systems
 #
 #      Herewith many of the object file formats used by USG systems.
index 61f935c..ea5725e 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: varied.script,v 1.6 2009/09/19 16:28:13 christos Exp $
 # varied.script:  file(1) magic for various interpreter scripts
 
 0      string          #!\ /                   a
index 7dd86cc..31a3512 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: vax,v 1.7 2009/09/19 16:28:13 christos Exp $
 # vax:  file(1) magic for VAX executable/object and APL workspace
 #
 0      lelong          0101557         VAX single precision APL workspace
index ab216ee..59d843d 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: vicar,v 1.4 2009/09/19 16:28:13 christos Exp $
 # vicar:  file(1) magic for VICAR files.
 #
 # From: Ossama Othman <othman@astrosun.tn.cornell.edu
index cea8443..410ab9e 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: virtutech,v 1.4 2009/09/19 16:28:13 christos Exp $
 # Virtutech Compressed Random Access File Format
 #
 # From <gustav@virtutech.com>
index 4919964..fe5c827 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: visx,v 1.5 2009/09/19 16:28:13 christos Exp $
 # visx:  file(1) magic for Visx format files
 #
 0      short           0x5555          VISX image file
index c91186f..d114dfd 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: vms,v 1.6 2009/09/19 16:28:13 christos Exp $
 # vms:  file(1) magic for VMS executables (experimental)
 #
 # VMS .exe formats, both VAX and AXP (Greg Roelofs, newt@uchicago.edu)
index 28e19e5..b6b6a61 100644 (file)
@@ -1,5 +1,6 @@
 
-# -----------------------------------------------------------
+#------------------------------------------------------------------------------
+# $File: vmware,v 1.7 2009/09/19 16:28:13 christos Exp $
 # VMware specific files (deducted from version 1.1 and log file entries)
 # Anthon van der Neut (anthon@mnt.org)
 0      belong  0x4d52564e      VMware nvram 
index cbef5fd..ed6c040 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: vorbis,v 1.16 2009/09/19 16:28:13 christos Exp $
 # vorbis:  file(1) magic for Ogg/Vorbis files
 #
 # From Felix von Leitner <leitner@fefe.de>
index d3f5561..0fdc68a 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: vxl,v 1.4 2009/09/19 16:28:13 christos Exp $
 # VXL: file(1) magic for VXL binary IO data files
 #
 # from Ian Scott <scottim@sf.net>
index 968e267..72a22ee 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: warc,v 1.2 2009/09/19 16:28:13 christos Exp $
 # warc:  file(1) magic for WARC files
 
 0      string  WARC/   WARC Archive
index 21324ea..6dc1793 100644 (file)
@@ -1,3 +1,4 @@
+
 #------------------------------------------------------------------------------
 # weak:  file(1) magic for very weak magic entries, disabled by default
 #
index 8d76807..cd760ec 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: windows,v 1.4 2009/09/19 16:28:13 christos Exp $
 # windows:  file(1) magic for Microsoft Windows
 #
 # This file is mainly reserved for files where programs
index aaae5a5..badb73b 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: wireless,v 1.2 2009/09/19 16:28:13 christos Exp $
 # wireless-regdb:        file(1) magic for CRDA wireless-regdb file format
 #
 0      string  RGDB    CRDA wireless regulatory database file
index 8965d33..6e35c7d 100644 (file)
@@ -1,4 +1,6 @@
+
 #------------------------------------------------------------------------------
+# $File: wordprocessors,v 1.14 2009/09/19 16:28:13 christos Exp $
 # wordprocessors:  file(1) magic fo word processors.
 #
 ####### PWP file format used on Smith Corona Personal Word Processors:
index 80c92da..1177521 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: xdelta,v 1.4 2009/09/19 16:28:13 christos Exp $
 # file(1) magic(5) data for xdelta  Josh MacDonald <jmacd@CS.Berkeley.EDU>
 #
 0      string  %XDELTA%        XDelta binary patch file 0.14
index 1acadec..3d238df 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: xenix,v 1.9 2009/09/19 16:28:13 christos Exp $
 # xenix:  file(1) magic for Microsoft Xenix
 #
 # "Middle model" stuff, and "Xenix 8086 relocatable or 80286 small
index 8f411ce..26efb1b 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: xilinx,v 1.4 2009/09/19 16:28:13 christos Exp $
 # This is Aaron's attempt at a MAGIC file for Xilinx .bit files.
 # Xilinx-Magic@RevRagnarok.com
 # Got the info from FPGA-FAQ 0026
index 1020cee..7b38818 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: xo65,v 1.4 2009/09/19 16:28:13 christos Exp $
 # xo65 object files
 # From: "Ullrich von Bassewitz" <uz@cc65.org>
 #
index cae45a7..0cb5b11 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: xwindows,v 1.6 2009/09/19 16:28:13 christos Exp $
 # xwindows:  file(1) magic for various X/Window system file formats.
 
 # Compiled X Keymap 
index b746e20..1c861fb 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: zilog,v 1.7 2009/09/19 16:28:13 christos Exp $
 # zilog:  file(1) magic for Zilog Z8000.
 #
 # Was it big-endian or little-endian?  My Product Specification doesn't
index 12a6abd..d3a43e4 100644 (file)
@@ -1,5 +1,6 @@
 
 #------------------------------------------------------------------------------
+# $File: zyxel,v 1.6 2009/09/19 16:28:13 christos Exp $
 # zyxel:  file(1) magic for ZyXEL modems
 #
 # From <rob@pe1chl.ampr.org>
index bbadc0c..58826c3 100644 (file)
@@ -32,7 +32,7 @@
 #include "file.h"
 
 #ifndef        lint
-FILE_RCSID("@(#)$File: apprentice.c,v 1.151 2009/03/18 15:19:23 christos Exp $")
+FILE_RCSID("@(#)$File: apprentice.c,v 1.158 2009/10/19 13:10:20 christos Exp $")
 #endif /* lint */
 
 #include "magic.h"
@@ -353,12 +353,10 @@ file_apprentice(struct magic_set *ms, const char *fn, int action)
        int file_err, errs = -1;
        struct mlist *mlist;
 
-       init_file_tables();
+       if ((fn = magic_getpath(fn, action)) == NULL)
+               return NULL;
 
-       if (fn == NULL)
-               fn = getenv("MAGIC");
-       if (fn == NULL)
-               fn = MAGIC;
+       init_file_tables();
 
        if ((mfn = strdup(fn)) == NULL) {
                file_oomem(ms, strlen(fn));
@@ -594,10 +592,21 @@ set_test_type(struct magic *mstart, struct magic *m)
                break;
        case FILE_REGEX:
        case FILE_SEARCH:
+               /* Check for override */
+               if (mstart->str_flags & STRING_BINTEST)
+                       mstart->flag |= BINTEST;
+               if (mstart->str_flags & STRING_TEXTTEST)
+                       mstart->flag |= TEXTTEST;
+                   
+               if (mstart->flag & (TEXTTEST|BINTEST))
+                       break;
+
                /* binary test if pattern is not text */
                if (file_looks_utf8(m->value.us, (size_t)m->vallen, NULL,
                    NULL) <= 0)
                        mstart->flag |= BINTEST;
+               else
+                       mstart->flag |= TEXTTEST;
                break;
        case FILE_DEFAULT:
                /* can't deduce anything; we shouldn't see this at the
@@ -627,7 +636,9 @@ load_1(struct magic_set *ms, int action, const char *fn, int *errs,
                (*errs)++;
        } else {
                /* read and parse this file */
-               for (ms->line = 1; fgets(line, sizeof(line), f) != NULL; ms->line++) {
+               for (ms->line = 1;
+                   fgets(line, CAST(int, sizeof(line)), f) != NULL;
+                   ms->line++) {
                        size_t len;
                        len = strlen(line);
                        if (len == 0) /* null line, garbage, etc */
@@ -683,6 +694,12 @@ load_1(struct magic_set *ms, int action, const char *fn, int *errs,
  * parse a file or directory of files
  * const char *fn: name of magic file or directory
  */
+private int
+cmpstrp(const void *p1, const void *p2)
+{
+        return strcmp(*(char *const *)p1, *(char *const *)p2);
+}
+
 private int
 apprentice_load(struct magic_set *ms, struct magic **magicp, uint32_t *nmagicp,
     const char *fn, int action)
@@ -690,8 +707,8 @@ apprentice_load(struct magic_set *ms, struct magic **magicp, uint32_t *nmagicp,
        int errs = 0;
        struct magic_entry *marray;
        uint32_t marraycount, i, mentrycount = 0, starttest;
-       size_t slen;
-       char subfn[MAXPATHLEN];
+       size_t slen, files = 0, maxfiles = 0;
+       char subfn[MAXPATHLEN], **filearr = NULL, *mfn;
        struct stat st;
        DIR *dir;
        struct dirent *d;
@@ -711,23 +728,43 @@ apprentice_load(struct magic_set *ms, struct magic **magicp, uint32_t *nmagicp,
                (void)fprintf(stderr, "%s\n", usg_hdr);
 
        /* load directory or file */
-        /* FIXME: Read file names and sort them to prevent
-           non-determinism. See Debian bug #488562. */
        if (stat(fn, &st) == 0 && S_ISDIR(st.st_mode)) {
                dir = opendir(fn);
-               if (dir) {
-                       while ((d = readdir(dir)) != NULL) {
-                               snprintf(subfn, sizeof(subfn), "%s/%s",
-                                   fn, d->d_name);
-                               if (stat(subfn, &st) == 0 &&
-                                   S_ISREG(st.st_mode)) {
-                                       load_1(ms, action, subfn, &errs,
-                                           &marray, &marraycount);
+               if (!dir) {
+                       errs++;
+                       goto out;
+               }
+               while ((d = readdir(dir)) != NULL) {
+                       (void)snprintf(subfn, sizeof(subfn), "%s/%s",
+                           fn, d->d_name);
+                       if (stat(subfn, &st) == -1 || !S_ISREG(st.st_mode))
+                               continue;
+                       if ((mfn = strdup(subfn)) == NULL) {
+                               file_oomem(ms, strlen(subfn));
+                               errs++;
+                               goto out;
+                       }
+                       if (files >= maxfiles) {
+                               size_t mlen;
+                               maxfiles = (maxfiles + 1) * 2;
+                               mlen = maxfiles * sizeof(*filearr);
+                               if ((filearr = CAST(char **,
+                                   realloc(filearr, mlen))) == NULL) {
+                                       file_oomem(ms, mlen);
+                                       errs++;
+                                       goto out;
                                }
                        }
-                       closedir(dir);
-               } else
-                       errs++;
+                       filearr[files++] = mfn;
+               }
+               closedir(dir);
+               qsort(filearr, files, sizeof(*filearr), cmpstrp);
+               for (i = 0; i < files; i++) {
+                       load_1(ms, action, filearr[i], &errs, &marray,
+                           &marraycount);
+                       free(filearr[i]);
+               }
+               free(filearr);
        } else
                load_1(ms, action, fn, &errs, &marray, &marraycount);
        if (errs)
@@ -923,14 +960,14 @@ string_modifier_check(struct magic_set *ms, struct magic *m)
                }
                break;
        case FILE_REGEX:
-               if ((m->str_flags & STRING_COMPACT_BLANK) != 0) {
+               if ((m->str_flags & STRING_COMPACT_WHITESPACE) != 0) {
                        file_magwarn(ms, "'/%c' not allowed on regex\n",
-                           CHAR_COMPACT_BLANK);
+                           CHAR_COMPACT_WHITESPACE);
                        return -1;
                }
-               if ((m->str_flags & STRING_COMPACT_OPTIONAL_BLANK) != 0) {
+               if ((m->str_flags & STRING_COMPACT_OPTIONAL_WHITESPACE) != 0) {
                        file_magwarn(ms, "'/%c' not allowed on regex\n",
-                           CHAR_COMPACT_OPTIONAL_BLANK);
+                           CHAR_COMPACT_OPTIONAL_WHITESPACE);
                        return -1;
                }
                break;
@@ -1087,7 +1124,7 @@ parse(struct magic_set *ms, struct magic_entry **mentryp, uint32_t *nmentryp,
                                return -1;
                        }
                        me->mp = m = nm;
-                       me->max_count = cnt;
+                       me->max_count = CAST(uint32_t, cnt);
                }
                m = &me->mp[me->cont_count++];
                (void)memset(m, 0, sizeof(*m));
@@ -1123,7 +1160,7 @@ parse(struct magic_set *ms, struct magic_entry **mentryp, uint32_t *nmentryp,
                m->cont_level = 0;
                me->cont_count = 1;
        }
-       m->lineno = lineno;
+       m->lineno = CAST(uint32_t, lineno);
 
        if (*l == '&') {  /* m->cont_level == 0 checked below. */
                 ++l;            /* step over */
@@ -1296,18 +1333,19 @@ parse(struct magic_set *ms, struct magic_entry **mentryp, uint32_t *nmentryp,
                                                file_magwarn(ms,
                                                    "multiple ranges");
                                        have_range = 1;
-                                       m->str_range = strtoul(l, &t, 0);
+                                       m->str_range = CAST(uint32_t,
+                                           strtoul(l, &t, 0));
                                        if (m->str_range == 0)
                                                file_magwarn(ms,
                                                    "zero range");
                                        l = t - 1;
                                        break;
-                               case CHAR_COMPACT_BLANK:
-                                       m->str_flags |= STRING_COMPACT_BLANK;
+                               case CHAR_COMPACT_WHITESPACE:
+                                       m->str_flags |= STRING_COMPACT_WHITESPACE;
                                        break;
-                               case CHAR_COMPACT_OPTIONAL_BLANK:
+                               case CHAR_COMPACT_OPTIONAL_WHITESPACE:
                                        m->str_flags |=
-                                           STRING_COMPACT_OPTIONAL_BLANK;
+                                           STRING_COMPACT_OPTIONAL_WHITESPACE;
                                        break;
                                case CHAR_IGNORE_LOWERCASE:
                                        m->str_flags |= STRING_IGNORE_LOWERCASE;
@@ -1318,6 +1356,12 @@ parse(struct magic_set *ms, struct magic_entry **mentryp, uint32_t *nmentryp,
                                case CHAR_REGEX_OFFSET_START:
                                        m->str_flags |= REGEX_OFFSET_START;
                                        break;
+                               case CHAR_BINTEST:
+                                       m->str_flags |= STRING_BINTEST;
+                                       break;
+                               case CHAR_TEXTTEST:
+                                       m->str_flags |= STRING_TEXTTEST;
+                                       break;
                                default:
                                        if (ms->flags & MAGIC_CHECK)
                                                file_magwarn(ms,
@@ -1509,6 +1553,7 @@ parse_apple(struct magic_set *ms, struct magic_entry *me, const char *line)
             || strchr("-+/.", *l)) && i < sizeof(m->apple); m->apple[i++] = *l++)
                continue;
        if (i == sizeof(m->apple) && *l) {
+               /* We don't need to NUL terminate here, printing handles it */
                if (ms->flags & MAGIC_CHECK)
                        file_magwarn(ms, "APPLE type `%s' truncated %zu",
                            line, i);
@@ -1542,7 +1587,7 @@ parse_mime(struct magic_set *ms, struct magic_entry *me, const char *line)
             || strchr("-+/.", *l)) && i < sizeof(m->mimetype); m->mimetype[i++] = *l++)
                continue;
        if (i == sizeof(m->mimetype)) {
-               m->desc[sizeof(m->mimetype) - 1] = '\0';
+               m->mimetype[sizeof(m->mimetype) - 1] = '\0';
                if (ms->flags & MAGIC_CHECK)
                        file_magwarn(ms, "MIME type `%s' truncated %zu",
                            m->mimetype, i);
@@ -1943,7 +1988,7 @@ getstr(struct magic_set *ms, struct magic *m, const char *s, int warn)
        }
 out:
        *p = '\0';
-       m->vallen = p - origp;
+       m->vallen = CAST(unsigned char, (p - origp));
        if (m->type == FILE_PSTRING)
                m->vallen++;
        return s;
@@ -1975,14 +2020,15 @@ file_showstr(FILE *fp, const char *s, size_t len)
        char    c;
 
        for (;;) {
-               c = *s++;
                if (len == ~0U) {
+                       c = *s++;
                        if (c == '\0')
                                break;
                }
                else  {
                        if (len-- == 0)
                                break;
+                       c = *s++;
                }
                if (c >= 040 && c <= 0176)      /* TODO isprint && !iscntrl */
                        (void) fputc(c, fp);
index fd13bc0..92791ea 100644 (file)
@@ -32,7 +32,7 @@
 #include "file.h"
 
 #ifndef lint
-FILE_RCSID("@(#)$File: cdf.c,v 1.30 2009/05/06 14:29:47 christos Exp $")
+FILE_RCSID("@(#)$File: cdf.c,v 1.36 2010/01/22 20:56:26 christos Exp $")
 #endif
 
 #include <assert.h>
@@ -44,6 +44,9 @@ FILE_RCSID("@(#)$File: cdf.c,v 1.30 2009/05/06 14:29:47 christos Exp $")
 #include <string.h>
 #include <time.h>
 #include <ctype.h>
+#ifdef HAVE_LIMITS_H
+#include <limits.h>
+#endif
 
 #ifndef EFTYPE
 #define EFTYPE EINVAL
@@ -68,9 +71,9 @@ static union {
 
 #define NEED_SWAP      (cdf_bo.u == (uint32_t)0x01020304)
 
-#define CDF_TOLE8(x)   (NEED_SWAP ? cdf_tole8(x) : (uint64_t)(x))
-#define CDF_TOLE4(x)   (NEED_SWAP ? cdf_tole4(x) : (uint32_t)(x))
-#define CDF_TOLE2(x)   (NEED_SWAP ? cdf_tole2(x) : (uint16_t)(x))
+#define CDF_TOLE8(x)   ((uint64_t)(NEED_SWAP ? cdf_tole8(x) : (uint64_t)(x)))
+#define CDF_TOLE4(x)   ((uint32_t)(NEED_SWAP ? cdf_tole4(x) : (uint32_t)(x)))
+#define CDF_TOLE2(x)   ((uint16_t)(NEED_SWAP ? cdf_tole2(x) : (uint16_t)(x)))
 
 /*
  * swap a short
@@ -145,15 +148,15 @@ cdf_swap_header(cdf_header_t *h)
        h->h_min_size_standard_stream =
            CDF_TOLE4(h->h_min_size_standard_stream);
        h->h_secid_first_sector_in_short_sat =
-           CDF_TOLE4(h->h_secid_first_sector_in_short_sat);
+           CDF_TOLE4((uint32_t)h->h_secid_first_sector_in_short_sat);
        h->h_num_sectors_in_short_sat =
            CDF_TOLE4(h->h_num_sectors_in_short_sat);
        h->h_secid_first_sector_in_master_sat =
-           CDF_TOLE4(h->h_secid_first_sector_in_master_sat);
+           CDF_TOLE4((uint32_t)h->h_secid_first_sector_in_master_sat);
        h->h_num_sectors_in_master_sat =
            CDF_TOLE4(h->h_num_sectors_in_master_sat);
        for (i = 0; i < __arraycount(h->h_master_sat); i++)
-               h->h_master_sat[i] = CDF_TOLE4(h->h_master_sat[i]);
+               h->h_master_sat[i] = CDF_TOLE4((uint32_t)h->h_master_sat[i]);
 }
 
 void
@@ -186,15 +189,15 @@ void
 cdf_swap_dir(cdf_directory_t *d)
 {
        d->d_namelen = CDF_TOLE2(d->d_namelen);
-       d->d_left_child = CDF_TOLE4(d->d_left_child);
-       d->d_right_child = CDF_TOLE4(d->d_right_child);
-       d->d_storage = CDF_TOLE4(d->d_storage);
+       d->d_left_child = CDF_TOLE4((uint32_t)d->d_left_child);
+       d->d_right_child = CDF_TOLE4((uint32_t)d->d_right_child);
+       d->d_storage = CDF_TOLE4((uint32_t)d->d_storage);
        d->d_storage_uuid[0] = CDF_TOLE8(d->d_storage_uuid[0]);
        d->d_storage_uuid[1] = CDF_TOLE8(d->d_storage_uuid[1]);
        d->d_flags = CDF_TOLE4(d->d_flags);
-       d->d_created = CDF_TOLE8(d->d_created);
-       d->d_modified = CDF_TOLE8(d->d_modified);
-       d->d_stream_first_sector = CDF_TOLE4(d->d_stream_first_sector);
+       d->d_created = CDF_TOLE8((uint64_t)d->d_created);
+       d->d_modified = CDF_TOLE8((uint64_t)d->d_modified);
+       d->d_stream_first_sector = CDF_TOLE4((uint32_t)d->d_stream_first_sector);
        d->d_size = CDF_TOLE4(d->d_size);
 }
 
@@ -228,14 +231,17 @@ cdf_unpack_dir(cdf_directory_t *d, char *buf)
 }
 
 static int
-cdf_check_stream_offset(const cdf_stream_t *sst, const void *p, size_t tail)
+cdf_check_stream_offset(const cdf_stream_t *sst, const void *p, size_t tail,
+    int line)
 {
        const char *b = (const char *)sst->sst_tab;
        const char *e = ((const char *)p) + tail;
+       (void)&line;
        if (e >= b && (size_t)(e - b) < sst->sst_dirlen * sst->sst_len)
                return 0;
-       DPRINTF((stderr, "offset begin %p end %p %zu >= %zu\n", b, e,
-           (size_t)(e - b), sst->sst_dirlen * sst->sst_len));
+       DPRINTF(("%d: offset begin %p end %p %zu >= %zu [%zu %zu]\n",
+           line, b, e, (size_t)(e - b), sst->sst_dirlen * sst->sst_len,
+           sst->sst_dirlen, sst->sst_len));
        errno = EFTYPE;
        return -1;
 }
@@ -344,7 +350,8 @@ cdf_read_sat(const cdf_info_t *info, cdf_header_t *h, cdf_sat_t *sat)
 
        sat->sat_len = h->h_num_sectors_in_master_sat * nsatpersec + i;
        DPRINTF(("sat_len = %zu ss = %zu\n", sat->sat_len, ss));
-       if ((sat->sat_tab = calloc(sat->sat_len, ss)) == NULL)
+       if ((sat->sat_tab = CAST(cdf_secid_t *, calloc(sat->sat_len, ss)))
+           == NULL)
                return -1;
 
        for (i = 0; i < __arraycount(h->h_master_sat); i++) {
@@ -357,7 +364,7 @@ cdf_read_sat(const cdf_info_t *info, cdf_header_t *h, cdf_sat_t *sat)
                }
        }
 
-       if ((msa = calloc(1, ss)) == NULL)
+       if ((msa = CAST(cdf_secid_t *, calloc(1, ss))) == NULL)
                goto out1;
 
        mid = h->h_secid_first_sector_in_master_sat;
@@ -374,7 +381,7 @@ cdf_read_sat(const cdf_info_t *info, cdf_header_t *h, cdf_sat_t *sat)
                        goto out2;
                }
                for (k = 0; k < nsatpersec; k++, i++) {
-                       sec = CDF_TOLE4(msa[k]);
+                       sec = CDF_TOLE4((uint32_t)msa[k]);
                        if (sec < 0)
                                goto out;
                        if (i >= sat->sat_len) {
@@ -390,7 +397,7 @@ cdf_read_sat(const cdf_info_t *info, cdf_header_t *h, cdf_sat_t *sat)
                                goto out2;
                        }
                }
-               mid = CDF_TOLE4(msa[nsatpersec]);
+               mid = CDF_TOLE4((uint32_t)msa[nsatpersec]);
        }
 out:
        sat->sat_len = i;
@@ -422,7 +429,7 @@ cdf_count_chain(const cdf_sat_t *sat, cdf_secid_t sid, size_t size)
                        errno = EFTYPE;
                        return (size_t)-1;
                }
-               sid = CDF_TOLE4(sat->sat_tab[sid]);
+               sid = CDF_TOLE4((uint32_t)sat->sat_tab[sid]);
        }
        DPRINTF(("\n"));
        return i;
@@ -465,7 +472,7 @@ cdf_read_long_sector_chain(const cdf_info_t *info, const cdf_header_t *h,
                        DPRINTF(("Reading long sector chain %d", sid));
                        goto out;
                }
-               sid = CDF_TOLE4(sat->sat_tab[sid]);
+               sid = CDF_TOLE4((uint32_t)sat->sat_tab[sid]);
        }
        return 0;
 out:
@@ -506,7 +513,7 @@ cdf_read_short_sector_chain(const cdf_header_t *h,
                        DPRINTF(("Reading short sector chain %d", sid));
                        goto out;
                }
-               sid = CDF_TOLE4(ssat->sat_tab[sid]);
+               sid = CDF_TOLE4((uint32_t)ssat->sat_tab[sid]);
        }
        return 0;
 out:
@@ -520,7 +527,7 @@ cdf_read_sector_chain(const cdf_info_t *info, const cdf_header_t *h,
     cdf_secid_t sid, size_t len, cdf_stream_t *scn)
 {
 
-       if (len < h->h_min_size_standard_stream)
+       if (len < h->h_min_size_standard_stream && sst->sst_tab != NULL)
                return cdf_read_short_sector_chain(h, ssat, sst, sid, len,
                    scn);
        else
@@ -543,11 +550,12 @@ cdf_read_dir(const cdf_info_t *info, const cdf_header_t *h,
        nd = ss / CDF_DIRECTORY_SIZE;
 
        dir->dir_len = ns * nd;
-       dir->dir_tab = calloc(dir->dir_len, sizeof(dir->dir_tab[0]));
+       dir->dir_tab = CAST(cdf_directory_t *, 
+           calloc(dir->dir_len, sizeof(dir->dir_tab[0])));
        if (dir->dir_tab == NULL)
                return -1;
 
-       if ((buf = malloc(ss)) == NULL) {
+       if ((buf = CAST(char *, malloc(ss))) == NULL) {
                free(dir->dir_tab);
                return -1;
        }
@@ -566,7 +574,7 @@ cdf_read_dir(const cdf_info_t *info, const cdf_header_t *h,
                        cdf_unpack_dir(&dir->dir_tab[i * nd + j],
                            &buf[j * CDF_DIRECTORY_SIZE]);
                }
-               sid = CDF_TOLE4(sat->sat_tab[sid]);
+               sid = CDF_TOLE4((uint32_t)sat->sat_tab[sid]);
        }
        if (NEED_SWAP)
                for (i = 0; i < dir->dir_len; i++)
@@ -592,7 +600,7 @@ cdf_read_ssat(const cdf_info_t *info, const cdf_header_t *h,
        if (ssat->sat_len == (size_t)-1)
                return -1;
 
-       ssat->sat_tab = calloc(ssat->sat_len, ss);
+       ssat->sat_tab = CAST(cdf_secid_t *, calloc(ssat->sat_len, ss));
        if (ssat->sat_tab == NULL)
                return -1;
 
@@ -613,7 +621,7 @@ cdf_read_ssat(const cdf_info_t *info, const cdf_header_t *h,
                        DPRINTF(("Reading short sat sector %d", sid));
                        goto out;
                }
-               sid = CDF_TOLE4(sat->sat_tab[sid]);
+               sid = CDF_TOLE4((uint32_t)sat->sat_tab[sid]);
        }
        return 0;
 out:
@@ -668,18 +676,18 @@ cdf_read_summary_info(const cdf_info_t *info, const cdf_header_t *h,
        const cdf_directory_t *d;
        static const char name[] = "\05SummaryInformation";
 
-       for (i = 0; i < dir->dir_len; i++)
-               if (dir->dir_tab[i].d_type == CDF_DIR_TYPE_USER_STREAM &&
-                   cdf_namecmp(name, dir->dir_tab[i].d_name, sizeof(name))
+       for (i = dir->dir_len; i > 0; i--)
+               if (dir->dir_tab[i - 1].d_type == CDF_DIR_TYPE_USER_STREAM &&
+                   cdf_namecmp(name, dir->dir_tab[i - 1].d_name, sizeof(name))
                    == 0)
                        break;
 
-       if (i == dir->dir_len) {
+       if (i == 0) {
                DPRINTF(("Cannot find summary information section\n"));
-               errno = EFTYPE;
+               errno = ESRCH;
                return -1;
        }
-       d = &dir->dir_tab[i];
+       d = &dir->dir_tab[i - 1];
        return cdf_read_sector_chain(info, h, sat, ssat, sst,
            d->d_stream_first_sector, d->d_size, scn);
 }
@@ -704,8 +712,9 @@ cdf_read_property_info(const cdf_stream_t *sst, uint32_t offs,
                errno = EFTYPE;
                goto out;
        }
-       shp = (const void *)((const char *)sst->sst_tab + offs);
-       if (cdf_check_stream_offset(sst, shp, sizeof(*shp)) == -1)
+       shp = CAST(const cdf_section_header_t *, (const void *)
+           ((const char *)sst->sst_tab + offs));
+       if (cdf_check_stream_offset(sst, shp, sizeof(*shp), __LINE__) == -1)
                goto out;
        sh.sh_len = CDF_TOLE4(shp->sh_len);
 #define CDF_SHLEN_LIMIT (UINT32_MAX / 8)
@@ -723,22 +732,28 @@ cdf_read_property_info(const cdf_stream_t *sst, uint32_t offs,
                if (*maxcount > CDF_PROP_LIMIT)
                        goto out;
                *maxcount += sh.sh_properties;
-               inp = realloc(*info, *maxcount * sizeof(*inp));
+               inp = CAST(cdf_property_info_t *,
+                   realloc(*info, *maxcount * sizeof(*inp)));
        } else {
                *maxcount = sh.sh_properties;
-               inp = malloc(*maxcount * sizeof(*inp));
+               inp = CAST(cdf_property_info_t *,
+                   malloc(*maxcount * sizeof(*inp)));
        }
        if (inp == NULL)
                goto out;
        *info = inp;
        inp += *count;
        *count += sh.sh_properties;
-       p = (const void *)((const char *)sst->sst_tab + offs + sizeof(sh));
-       e = (const void *)(((const char *)shp) + sh.sh_len);
-       if (cdf_check_stream_offset(sst, e, 0) == -1)
+       p = CAST(const uint32_t *, (const void *)
+           ((const char *)(const void *)sst->sst_tab +
+           offs + sizeof(sh)));
+       e = CAST(const uint32_t *, (const void *)
+           (((const char *)(const void *)shp) + sh.sh_len));
+       if (cdf_check_stream_offset(sst, e, 0, __LINE__) == -1)
                goto out;
        for (i = 0; i < sh.sh_properties; i++) {
-               q = (const uint32_t *)((const char *)p +
+               q = (const uint32_t *)(const void *)
+                   ((const char *)(const void *)p +
                    CDF_TOLE4(p[(i << 1) + 1])) - 2;
                if (q > e) {
                        DPRINTF(("Ran of the end %p > %p\n", q, e));
@@ -758,6 +773,7 @@ cdf_read_property_info(const cdf_stream_t *sst, uint32_t offs,
                if (inp[i].pi_type & (CDF_ARRAY|CDF_BYREF|CDF_RESERVED))
                        goto unknown;
                switch (inp[i].pi_type & CDF_TYPEMASK) {
+               case CDF_NULL:
                case CDF_EMPTY:
                        break;
                case CDF_SIGNED16:
@@ -770,7 +786,7 @@ cdf_read_property_info(const cdf_stream_t *sst, uint32_t offs,
                        if (inp[i].pi_type & CDF_VECTOR)
                                goto unknown;
                        (void)memcpy(&s32, &q[o], sizeof(s32));
-                       inp[i].pi_s32 = CDF_TOLE4(s32);
+                       inp[i].pi_s32 = CDF_TOLE4((uint32_t)s32);
                        break;
                case CDF_BOOL:
                case CDF_UNSIGNED32:
@@ -783,22 +799,24 @@ cdf_read_property_info(const cdf_stream_t *sst, uint32_t offs,
                        if (inp[i].pi_type & CDF_VECTOR)
                                goto unknown;
                        (void)memcpy(&s64, &q[o], sizeof(s64));
-                       inp[i].pi_s64 = CDF_TOLE4(s64);
+                       inp[i].pi_s64 = CDF_TOLE8((uint64_t)s64);
                        break;
                case CDF_UNSIGNED64:
                        if (inp[i].pi_type & CDF_VECTOR)
                                goto unknown;
                        (void)memcpy(&u64, &q[o], sizeof(u64));
-                       inp[i].pi_u64 = CDF_TOLE4(u64);
+                       inp[i].pi_u64 = CDF_TOLE8((uint64_t)u64);
                        break;
                case CDF_LENGTH32_STRING:
+               case CDF_LENGTH32_WSTRING:
                        if (nelements > 1) {
                                size_t nelem = inp - *info;
                                if (*maxcount > CDF_PROP_LIMIT
                                    || nelements > CDF_PROP_LIMIT)
                                        goto out;
                                *maxcount += nelements;
-                               inp = realloc(*info, *maxcount * sizeof(*inp));
+                               inp = CAST(cdf_property_info_t *,
+                                   realloc(*info, *maxcount * sizeof(*inp)));
                                if (inp == NULL)
                                        goto out;
                                *info = inp;
@@ -808,11 +826,12 @@ cdf_read_property_info(const cdf_stream_t *sst, uint32_t offs,
                        for (j = 0; j < nelements; j++, i++) {
                                uint32_t l = CDF_TOLE4(q[o]);
                                inp[i].pi_str.s_len = l;
-                               inp[i].pi_str.s_buf = (const char *)(&q[o+1]);
+                               inp[i].pi_str.s_buf =
+                                   (const char *)(const void *)(&q[o+1]);
                                DPRINTF(("l = %d, r = %d, s = %s\n", l,
                                    CDF_ROUND(l, sizeof(l)),
                                    inp[i].pi_str.s_buf));
-                               l = 4 + CDF_ROUND(l, sizeof(l));
+                               l = 4 + (uint32_t)CDF_ROUND(l, sizeof(l));
                                o += l >> 2;
                        }
                        i--;
@@ -821,7 +840,7 @@ cdf_read_property_info(const cdf_stream_t *sst, uint32_t offs,
                        if (inp[i].pi_type & CDF_VECTOR)
                                goto unknown;
                        (void)memcpy(&tp, &q[o], sizeof(tp));
-                       inp[i].pi_tp = CDF_TOLE8(tp);
+                       inp[i].pi_tp = CDF_TOLE8((uint64_t)tp);
                        break;
                case CDF_CLIPBOARD:
                        if (inp[i].pi_type & CDF_VECTOR)
@@ -845,12 +864,14 @@ cdf_unpack_summary_info(const cdf_stream_t *sst, cdf_summary_info_header_t *ssi,
     cdf_property_info_t **info, size_t *count)
 {
        size_t i, maxcount;
-       const cdf_summary_info_header_t *si = sst->sst_tab;
-       const cdf_section_declaration_t *sd = (const void *)
-           ((const char *)sst->sst_tab + CDF_SECTION_DECLARATION_OFFSET);
-
-       if (cdf_check_stream_offset(sst, si, sizeof(*si)) == -1 ||
-           cdf_check_stream_offset(sst, sd, sizeof(*sd)) == -1)
+       const cdf_summary_info_header_t *si =
+           CAST(const cdf_summary_info_header_t *, sst->sst_tab);
+       const cdf_section_declaration_t *sd =
+           CAST(const cdf_section_declaration_t *, (const void *)
+           ((const char *)sst->sst_tab + CDF_SECTION_DECLARATION_OFFSET));
+
+       if (cdf_check_stream_offset(sst, si, sizeof(*si), __LINE__) == -1 ||
+           cdf_check_stream_offset(sst, sd, sizeof(*sd), __LINE__) == -1)
                return -1;
        ssi->si_byte_order = CDF_TOLE2(si->si_byte_order);
        ssi->si_os_version = CDF_TOLE2(si->si_os_version);
@@ -926,32 +947,32 @@ cdf_print_property_name(char *buf, size_t bufsiz, uint32_t p)
 int
 cdf_print_elapsed_time(char *buf, size_t bufsiz, cdf_timestamp_t ts)
 {
-       size_t len = 0;
+       int len = 0;
        int days, hours, mins, secs;
 
        ts /= CDF_TIME_PREC;
-       secs = ts % 60;
+       secs = (int)(ts % 60);
        ts /= 60;
-       mins = ts % 60;
+       mins = (int)(ts % 60);
        ts /= 60;
-       hours = ts % 24;
+       hours = (int)(ts % 24);
        ts /= 24;
-       days = ts;
+       days = (int)ts;
 
        if (days) {
                len += snprintf(buf + len, bufsiz - len, "%dd+", days);
-               if (len >= bufsiz)
+               if ((size_t)len >= bufsiz)
                        return len;
        }
 
        if (days || hours) {
                len += snprintf(buf + len, bufsiz - len, "%.2d:", hours);
-               if (len >= bufsiz)
+               if ((size_t)len >= bufsiz)
                        return len;
        }
 
        len += snprintf(buf + len, bufsiz - len, "%.2d:", mins);
-       if (len >= bufsiz)
+       if ((size_t)len >= bufsiz)
                return len;
 
        len += snprintf(buf + len, bufsiz - len, "%.2d", secs);
@@ -1096,12 +1117,14 @@ cdf_dump_property_info(const cdf_property_info_t *info, size_t count)
        cdf_timestamp_t tp;
        struct timespec ts;
        char buf[64];
-       size_t i;
+       size_t i, j;
 
        for (i = 0; i < count; i++) {
                cdf_print_property_name(buf, sizeof(buf), info[i].pi_id);
                (void)fprintf(stderr, "%zu) %s: ", i, buf); 
                switch (info[i].pi_type) {
+               case CDF_NULL:
+                       break;
                case CDF_SIGNED16:
                        (void)fprintf(stderr, "signed 16 [%hd]\n",
                            info[i].pi_s16);
@@ -1119,6 +1142,13 @@ cdf_dump_property_info(const cdf_property_info_t *info, size_t count)
                            info[i].pi_str.s_len,
                            info[i].pi_str.s_len, info[i].pi_str.s_buf);
                        break;
+               case CDF_LENGTH32_WSTRING:
+                       (void)fprintf(stderr, "string %u [", 
+                           info[i].pi_str.s_len);
+                       for (j = 0; j < info[i].pi_str.s_len - 1; j++)
+                           (void)fputc(info[i].pi_str.s_buf[j << 1], stderr);
+                       (void)fprintf(stderr, "]\n"); 
+                       break;
                case CDF_FILETIME:
                        tp = info[i].pi_tp;
                        if (tp < 1000000000000000LL) {
@@ -1203,7 +1233,7 @@ main(int argc, char *argv[])
                if (cdf_read_ssat(&info, &h, &sat, &ssat) == -1)
                        err(1, "Cannot read ssat");
 #ifdef CDF_DEBUG
-               cdf_dump_sat("SSAT", &h, &ssat, CDF_SHORT_SEC_SIZE(&h));
+               cdf_dump_sat("SSAT", &ssat, CDF_SHORT_SEC_SIZE(&h));
 #endif
 
                if (cdf_read_dir(&info, &h, &sat, &dir) == -1)
index 932253b..14dcfc6 100644 (file)
@@ -27,7 +27,7 @@
 #include "file.h"
 
 #ifndef lint
-FILE_RCSID("@(#)$File: cdf_time.c,v 1.6 2009/03/10 11:44:29 christos Exp $")
+FILE_RCSID("@(#)$File: cdf_time.c,v 1.8 2009/06/20 20:47:30 christos Exp $")
 #endif
 
 #include <time.h>
@@ -45,6 +45,12 @@ static const int mdays[] = {
     31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
 };
 
+#ifdef __DJGPP__
+#define timespec timeval
+#define tv_nsec tv_usec
+#endif
+
+
 /*
  * Return the number of days between jan 01 1601 and jan 01 of year.
  */
@@ -108,22 +114,22 @@ cdf_timestamp_to_timespec(struct timespec *ts, cdf_timestamp_t t)
        ts->tv_nsec = (t % CDF_TIME_PREC) * 100;
 
        t /= CDF_TIME_PREC;
-       tm.tm_sec = t % 60;
+       tm.tm_sec = (int)(t % 60);
        t /= 60;
 
-       tm.tm_min = t % 60;
+       tm.tm_min = (int)(t % 60);
        t /= 60;
 
-       tm.tm_hour = t % 24;
+       tm.tm_hour = (int)(t % 24);
        t /= 24;
 
        // XXX: Approx
-       tm.tm_year = CDF_BASE_YEAR + (t / 365);
+       tm.tm_year = (int)(CDF_BASE_YEAR + (t / 365));
 
        rdays = cdf_getdays(tm.tm_year);
        t -= rdays;
-       tm.tm_mday = cdf_getday(tm.tm_year, t);
-       tm.tm_mon = cdf_getmonth(tm.tm_year, t);
+       tm.tm_mday = cdf_getday(tm.tm_year, (int)t);
+       tm.tm_mon = cdf_getmonth(tm.tm_year, (int)t);
        tm.tm_wday = 0;
        tm.tm_yday = 0;
        tm.tm_isdst = 0;
@@ -143,10 +149,13 @@ cdf_timestamp_to_timespec(struct timespec *ts, cdf_timestamp_t t)
 }
 
 int
+/*ARGSUSED*/
 cdf_timespec_to_timestamp(cdf_timestamp_t *t, const struct timespec *ts)
 {
+#ifndef __lint__
        (void)&t;
        (void)&ts;
+#endif
 #ifdef notyet
        struct tm tm;
        if (gmtime_r(&ts->ts_sec, &tm) == NULL) {
index 28dacd3..f04ab27 100644 (file)
@@ -35,7 +35,7 @@
 #include "file.h"
 
 #ifndef lint
-FILE_RCSID("@(#)$File: compress.c,v 1.63 2009/03/23 14:21:51 christos Exp $")
+FILE_RCSID("@(#)$File: compress.c,v 1.64 2009/05/08 17:41:58 christos Exp $")
 #endif
 
 #include "magic.h"
@@ -144,7 +144,7 @@ error:
 private ssize_t
 swrite(int fd, const void *buf, size_t n)
 {
-       int rv;
+       ssize_t rv;
        size_t rn = n;
 
        do
@@ -155,7 +155,7 @@ swrite(int fd, const void *buf, size_t n)
                        return -1;
                default:
                        n -= rv;
-                       buf = ((const char *)buf) + rv;
+                       buf = CAST(const char *, buf) + rv;
                        break;
                }
        while (n > 0);
@@ -169,7 +169,7 @@ swrite(int fd, const void *buf, size_t n)
 protected ssize_t
 sread(int fd, void *buf, size_t n, int canbepipe)
 {
-       int rv, cnt;
+       ssize_t rv, cnt;
 #ifdef FIONREAD
        int t = 0;
 #endif
@@ -235,7 +235,8 @@ file_pipe2file(struct magic_set *ms, int fd, const void *startbuf,
     size_t nbytes)
 {
        char buf[4096];
-       int r, tfd;
+       ssize_t r;
+       int tfd, te;
 
        (void)strlcpy(buf, "/tmp/file.XXXXXX", sizeof buf);
 #ifndef HAVE_MKSTEMP
@@ -248,9 +249,9 @@ file_pipe2file(struct magic_set *ms, int fd, const void *startbuf,
        }
 #else
        tfd = mkstemp(buf);
-       r = errno;
+       te = errno;
        (void)unlink(buf);
-       errno = r;
+       errno = te;
 #endif
        if (tfd == -1) {
                file_error(ms, errno,
@@ -337,13 +338,14 @@ uncompressgzipped(struct magic_set *ms, const unsigned char *old,
        /* XXX: const castaway, via strchr */
        z.next_in = (Bytef *)strchr((const char *)old + data_start,
            old[data_start]);
-       z.avail_in = n - data_start;
+       z.avail_in = CAST(uint32_t, (n - data_start));
        z.next_out = *newch;
        z.avail_out = HOWMANY;
        z.zalloc = Z_NULL;
        z.zfree = Z_NULL;
        z.opaque = Z_NULL;
 
+       /* LINTED bug in header macro */
        rc = inflateInit2(&z, -15);
        if (rc != Z_OK) {
                file_error(ms, 0, "zlib: %s", z.msg);
@@ -371,7 +373,7 @@ uncompressbuf(struct magic_set *ms, int fd, size_t method,
     const unsigned char *old, unsigned char **newch, size_t n)
 {
        int fdin[2], fdout[2];
-       int r;
+       ssize_t r;
 
 #ifdef BUILTIN_DECOMPRESS
         /* FIXME: This doesn't cope with bzip2 */
index 4e94f9b..0440514 100644 (file)
@@ -35,7 +35,7 @@
 #include "file.h"
 
 #ifndef        lint
-FILE_RCSID("@(#)$File: encoding.c,v 1.3 2009/02/03 20:27:51 christos Exp $")
+FILE_RCSID("@(#)$File: encoding.c,v 1.4 2009/09/13 19:02:22 christos Exp $")
 #endif /* lint */
 
 #include "magic.h"
@@ -52,6 +52,12 @@ private int looks_latin1(const unsigned char *, size_t, unichar *, size_t *);
 private int looks_extended(const unsigned char *, size_t, unichar *, size_t *);
 private void from_ebcdic(const unsigned char *, size_t, unsigned char *);
 
+#ifdef DEBUG_ENCODING
+#define DPRINTF(a) printf a
+#else
+#define DPRINTF(a)
+#endif
+
 /*
  * Try to determine whether text is in some character code we can
  * identify.  Each of these tests, if it succeeds, will leave
@@ -78,12 +84,16 @@ file_encoding(struct magic_set *ms, const unsigned char *buf, size_t nbytes, uni
 
        *type = "text";
        if (looks_ascii(buf, nbytes, *ubuf, ulen)) {
+               DPRINTF(("ascii %zu\n", *ulen));
                *code = "ASCII";
                *code_mime = "us-ascii";
        } else if (looks_utf8_with_BOM(buf, nbytes, *ubuf, ulen) > 0) {
+               DPRINTF(("utf8/bom %zu\n", *ulen));
                *code = "UTF-8 Unicode (with BOM)";
                *code_mime = "utf-8";
        } else if (file_looks_utf8(buf, nbytes, *ubuf, ulen) > 1) {
+               DPRINTF(("utf8 %zu\n", *ulen));
+               *code = "UTF-8 Unicode (with BOM)";
                *code = "UTF-8 Unicode";
                *code_mime = "utf-8";
        } else if ((ucs_type = looks_ucs16(buf, nbytes, *ubuf, ulen)) != 0) {
@@ -94,22 +104,28 @@ file_encoding(struct magic_set *ms, const unsigned char *buf, size_t nbytes, uni
                        *code = "Big-endian UTF-16 Unicode";
                        *code_mime = "utf-16be";
                }
+               DPRINTF(("ucs16 %zu\n", *ulen));
        } else if (looks_latin1(buf, nbytes, *ubuf, ulen)) {
+               DPRINTF(("latin1 %zu\n", *ulen));
                *code = "ISO-8859";
                *code_mime = "iso-8859-1";
        } else if (looks_extended(buf, nbytes, *ubuf, ulen)) {
+               DPRINTF(("extended %zu\n", *ulen));
                *code = "Non-ISO extended-ASCII";
                *code_mime = "unknown-8bit";
        } else {
                from_ebcdic(buf, nbytes, nbuf);
 
                if (looks_ascii(nbuf, nbytes, *ubuf, ulen)) {
+                       DPRINTF(("ebcdic %zu\n", *ulen));
                        *code = "EBCDIC";
                        *code_mime = "ebcdic";
                } else if (looks_latin1(nbuf, nbytes, *ubuf, ulen)) {
+                       DPRINTF(("ebcdic/international %zu\n", *ulen));
                        *code = "International EBCDIC";
                        *code_mime = "ebcdic";
                } else { /* Doesn't look like text at all */
+                       DPRINTF(("binary\n"));
                        rv = 0;
                        *type = "binary";
                }
index 34aa44c..3b73c56 100644 (file)
@@ -32,7 +32,7 @@
 #include "file.h"
 
 #ifndef        lint
-FILE_RCSID("@(#)$File: file.c,v 1.131 2009/02/13 18:48:05 christos Exp $")
+FILE_RCSID("@(#)$File: file.c,v 1.136 2009/12/06 23:18:04 rrt Exp $")
 #endif /* lint */
 
 #include "magic.h"
@@ -63,24 +63,27 @@ FILE_RCSID("@(#)$File: file.c,v 1.131 2009/02/13 18:48:05 christos Exp $")
 
 #if defined(HAVE_GETOPT_H) && defined(HAVE_STRUCT_OPTION)
 #include <getopt.h>
-#else
-#include "mygetopt.h"
-#endif
 #ifndef HAVE_GETOPT_LONG
 int getopt_long(int argc, char * const *argv, const char *optstring, const struct option *longopts, int *longindex);
 #endif
-
-#include <netinet/in.h>                /* for byte swapping */
+#else
+#include "mygetopt.h"
+#endif
 
 #include "patchlevel.h"
 
 #ifdef S_IFLNK
-#define SYMLINKFLAG "Lh"
+#define FILE_FLAGS "-bchikLNnprsvz0"
 #else
-#define SYMLINKFLAG ""
+#define FILE_FLAGS "-bcikNnprsvz0"
 #endif
 
-# define USAGE  "Usage: %s [-bcik" SYMLINKFLAG "nNrsvz0] [-e test] [-f namefile] [-F separator] [-m magicfiles] file...\n       %s -C -m magicfiles\n"
+# define USAGE  \
+    "Usage: %s [" FILE_FLAGS \
+       "] [--apple] [--mime-encoding] [--mime-type]\n" \
+    "            [-e testname] [-F separator] [-f namefile] [-m magicfiles] file ...\n" \
+    "       %s -C [-m magicfiles]\n" \
+    "       %s [--help]\n"
 
 #ifndef MAXPATHLEN
 #define        MAXPATHLEN      1024
@@ -92,9 +95,7 @@ private int           /* Global command-line options          */
        nobuffer = 0,   /* Do not buffer stdout                 */
        nulsep = 0;     /* Append '\0' to the separator         */
 
-private const char *default_magicfile = MAGIC;
 private const char *separator = ":";   /* Default field separator      */
-private        const char hmagic[] = "/.magic";
 private const struct option long_options[] = {
 #define OPT(shortname, longname, opt, doc)      \
     {longname, opt, NULL, shortname},
@@ -143,11 +144,9 @@ main(int argc, char *argv[])
        size_t i;
        int action = 0, didsomefiles = 0, errflg = 0;
        int flags = 0, e = 0;
-       char *home, *usermagic;
        struct magic_set *magic = NULL;
-       char magicpath[2 * MAXPATHLEN + 2];
        int longindex;
-       const char *magicfile;          /* where the magic is   */
+       const char *magicfile = NULL;           /* where the magic is   */
 
        /* makes islower etc work for other langs */
        (void)setlocale(LC_CTYPE, "");
@@ -162,20 +161,6 @@ main(int argc, char *argv[])
        else
                progname = argv[0];
 
-       magicfile = default_magicfile;
-       if ((usermagic = getenv("MAGIC")) != NULL)
-               magicfile = usermagic;
-       else
-               if ((home = getenv("HOME")) != NULL) {
-                       (void)snprintf(magicpath, sizeof(magicpath), "%s%s",
-                            home, hmagic);
-                       if (access(magicpath, R_OK) == 0) {
-                               (void)snprintf(magicpath, sizeof(magicpath),
-                                   "%s%s:%s", home, hmagic, magicfile);
-                               magicfile = magicpath;
-                       }
-               }
-
 #ifdef S_IFLNK
        flags |= getenv("POSIXLY_CORRECT") ? MAGIC_SYMLINK : 0;
 #endif
@@ -263,6 +248,8 @@ main(int argc, char *argv[])
                        flags |= MAGIC_DEVICES;
                        break;
                case 'v':
+                       if (magicfile == NULL) 
+                               magicfile = magic_getpath(magicfile, action);
                        (void)fprintf(stderr, "%s-%d.%.2d\n", progname,
                                       FILE_VERSION_MAJOR, patchlevel);
                        (void)fprintf(stderr, "magic file from %s\n",
@@ -298,8 +285,6 @@ main(int argc, char *argv[])
                 * Don't try to check/compile ~/.magic unless we explicitly
                 * ask for it.
                 */
-               if (magicfile == magicpath)
-                       magicfile = default_magicfile;
                magic = magic_open(flags|MAGIC_CHECK);
                if (magic == NULL) {
                        (void)fprintf(stderr, "%s: %s\n", progname,
@@ -475,8 +460,7 @@ file_mbswidth(const char *s)
 private void
 usage(void)
 {
-       (void)fprintf(stderr, USAGE, progname, progname);
-       (void)fputs("Try `file --help' for more information.\n", stderr);
+       (void)fprintf(stderr, USAGE, progname, progname, progname);
        exit(1);
 }
 
index ce12e64..c07f2d4 100644 (file)
@@ -27,7 +27,7 @@
  */
 /*
  * file.h - definitions for file(1) program
- * @(#)$File: file.h,v 1.119 2009/02/04 18:24:32 christos Exp $
+ * @(#)$File: file.h,v 1.124 2010/01/16 17:45:12 chl Exp $
  */
 
 #ifndef __file_h__
@@ -41,6 +41,9 @@
 #include <errno.h>
 #include <fcntl.h>     /* For open and flags */
 #ifdef HAVE_STDINT_H
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS
+#endif
 #include <stdint.h>
 #endif
 #ifdef HAVE_INTTYPES_H
@@ -136,7 +139,7 @@ struct magic {
 #define NOSPACE                0x10    /* suppress space character before output */
 #define BINTEST                0x20    /* test is for a binary type (set only
                                   for top-level tests) */
-#define TEXTTEST       0       /* for passing to file_softmagic */
+#define TEXTTEST       0x40    /* for passing to file_softmagic */
 
        uint8_t factor;
 
@@ -271,16 +274,20 @@ struct magic {
 };
 
 #define BIT(A)   (1 << (A))
-#define STRING_COMPACT_BLANK           BIT(0)
-#define STRING_COMPACT_OPTIONAL_BLANK  BIT(1)
-#define STRING_IGNORE_LOWERCASE                BIT(2)
-#define STRING_IGNORE_UPPERCASE                BIT(3)
-#define REGEX_OFFSET_START             BIT(4)
-#define CHAR_COMPACT_BLANK             'B'
-#define CHAR_COMPACT_OPTIONAL_BLANK    'b'
-#define CHAR_IGNORE_LOWERCASE          'c'
-#define CHAR_IGNORE_UPPERCASE          'C'
-#define CHAR_REGEX_OFFSET_START                's'
+#define STRING_COMPACT_WHITESPACE              BIT(0)
+#define STRING_COMPACT_OPTIONAL_WHITESPACE     BIT(1)
+#define STRING_IGNORE_LOWERCASE                        BIT(2)
+#define STRING_IGNORE_UPPERCASE                        BIT(3)
+#define REGEX_OFFSET_START                     BIT(4)
+#define STRING_TEXTTEST                                BIT(5)
+#define STRING_BINTEST                         BIT(6)
+#define CHAR_COMPACT_WHITESPACE                        'W'
+#define CHAR_COMPACT_OPTIONAL_WHITESPACE       'w'
+#define CHAR_IGNORE_LOWERCASE                  'c'
+#define CHAR_IGNORE_UPPERCASE                  'C'
+#define CHAR_REGEX_OFFSET_START                        's'
+#define CHAR_TEXTTEST                          't'
+#define CHAR_BINTEST                           'b'
 #define STRING_IGNORE_CASE             (STRING_IGNORE_LOWERCASE|STRING_IGNORE_UPPERCASE)
 #define STRING_DEFAULT_RANGE           100
 
@@ -298,7 +305,7 @@ struct mlist {
 #ifdef __cplusplus
 #define CAST(T, b)     static_cast<T>(b)
 #else
-#define CAST(T, b)     (b)
+#define CAST(T, b)     (T)(b)
 #endif
 
 struct level_info {
@@ -434,7 +441,7 @@ size_t strlcat(char *dst, const char *src, size_t siz);
 #endif
 
 #ifndef __cplusplus
-#ifdef __GNUC__
+#if defined(__GNUC__) && (__GNUC__ >= 3)
 #define FILE_RCSID(id) \
 static const char rcsid[] __attribute__((__used__)) = id;
 #else
index a68cd10..537fb14 100644 (file)
@@ -32,7 +32,7 @@
 #include "file.h"
 
 #ifndef        lint
-FILE_RCSID("@(#)$File: fsmagic.c,v 1.59 2009/02/03 20:27:51 christos Exp $")
+FILE_RCSID("@(#)$File: fsmagic.c,v 1.60 2009/05/08 17:41:59 christos Exp $")
 #endif /* lint */
 
 #include "magic.h"
@@ -106,7 +106,7 @@ file_fsmagic(struct magic_set *ms, const char *fn, struct stat *sb)
        int mime = ms->flags & MAGIC_MIME;
 #ifdef S_IFLNK
        char buf[BUFSIZ+4];
-       int nch;
+       ssize_t nch;
        struct stat tstatbuf;
 #endif
 
index c6f0d09..2397417 100644 (file)
@@ -27,7 +27,7 @@
 #include "file.h"
 
 #ifndef        lint
-FILE_RCSID("@(#)$File: funcs.c,v 1.53 2009/04/07 11:07:00 christos Exp $")
+FILE_RCSID("@(#)$File: funcs.c,v 1.54 2009/05/08 17:41:59 christos Exp $")
 #endif /* lint */
 
 #include "magic.h"
@@ -95,7 +95,7 @@ file_printf(struct magic_set *ms, const char *fmt, ...)
 /*VARARGS*/
 private void
 file_error_core(struct magic_set *ms, int error, const char *f, va_list va,
-    uint32_t lineno)
+    size_t lineno)
 {
        /* Only the first error is ok */
        if (ms->event_flags & EVENT_HAD_ERR)
@@ -103,7 +103,7 @@ file_error_core(struct magic_set *ms, int error, const char *f, va_list va,
        if (lineno != 0) {
                free(ms->o.buf);
                ms->o.buf = NULL;
-               file_printf(ms, "line %u: ", lineno);
+               file_printf(ms, "line %zu: ", lineno);
        }
        file_vprintf(ms, f, va);
        if (error > 0)
index b89989b..d49c29a 100644 (file)
@@ -28,7 +28,7 @@
 #include "file.h"
 
 #ifndef        lint
-FILE_RCSID("@(#)$File: magic.c,v 1.62 2009/03/20 21:25:41 christos Exp $")
+FILE_RCSID("@(#)$File: magic.c,v 1.65 2009/09/14 17:50:38 christos Exp $")
 #endif /* lint */
 
 #include "magic.h"
@@ -57,8 +57,6 @@ FILE_RCSID("@(#)$File: magic.c,v 1.62 2009/03/20 21:25:41 christos Exp $")
 #include <unistd.h>    /* for read() */
 #endif
 
-#include <netinet/in.h>                /* for byte swapping */
-
 #include "patchlevel.h"
 
 #ifndef PIPE_BUF
@@ -74,6 +72,7 @@ private void free_mlist(struct mlist *);
 private void close_and_restore(const struct magic_set *, const char *, int,
     const struct stat *);
 private int unreadable_info(struct magic_set *, mode_t, const char *);
+private const char* get_default_magic(void);
 #ifndef COMPILE_ONLY
 private const char *file_or_fd(struct magic_set *, const char *, int);
 #endif
@@ -82,13 +81,48 @@ private const char *file_or_fd(struct magic_set *, const char *, int);
 #define        STDIN_FILENO    0
 #endif
 
+private const char *
+get_default_magic(void)
+{
+       static const char hmagic[] = "/.magic";
+       static char default_magic[2 * MAXPATHLEN + 2];
+       char *home;
+       char hmagicpath[MAXPATHLEN + 1];
+
+       if ((home = getenv("HOME")) == NULL)
+               return MAGIC;
+
+       (void)snprintf(hmagicpath, sizeof(hmagicpath), "%s%s", home, hmagic);
+
+       if (access(hmagicpath, R_OK) == -1)
+               return MAGIC;
+
+       (void)snprintf(default_magic, sizeof(default_magic), "%s:%s",
+           hmagicpath, MAGIC);
+
+       return default_magic;
+}
+
+public const char *
+magic_getpath(const char *magicfile, int action)
+{
+       if (magicfile != NULL)
+               return magicfile;
+
+       magicfile = getenv("MAGIC");
+       if (magicfile != NULL)
+               return magicfile;
+
+       return action == FILE_LOAD ? get_default_magic() : MAGIC;
+}
+
 public struct magic_set *
 magic_open(int flags)
 {
        struct magic_set *ms;
        size_t len;
 
-       if ((ms = CAST(magic_set *, calloc((size_t)1,
+       if ((ms = CAST(struct magic_set *, calloc((size_t)1,
            sizeof(struct magic_set)))) == NULL)
                return NULL;