Browse Source

Import upstream version 5.22+2

Christoph Biedl 9 years ago
parent
commit
5f1cbb610e
26 changed files with 759 additions and 674 deletions
  1. 8 0
      ChangeLog
  2. 20 12
      README
  3. 10 10
      autom4te.cache/output.0
  4. 10 10
      autom4te.cache/output.1
  5. 10 10
      autom4te.cache/output.2
  6. 365 365
      autom4te.cache/requests
  7. 1 1
      autom4te.cache/traces.1
  8. 10 10
      configure
  9. 1 1
      configure.ac
  10. 7 2
      doc/magic.man
  11. 2 2
      magic/Magdir/cafebabe
  12. 8 1
      magic/Magdir/filesystems
  13. 66 5
      magic/Magdir/images
  14. 18 95
      magic/Magdir/jpeg
  15. 3 3
      src/Makefile.in
  16. 163 113
      src/apprentice.c
  17. 14 12
      src/cdf.c
  18. 2 3
      src/compress.c
  19. 7 1
      src/file.c
  20. 7 1
      src/file.h
  21. 6 5
      src/funcs.c
  22. 6 6
      src/magic.c
  23. 2 1
      src/print.c
  24. 5 1
      src/readcdf.c
  25. 5 3
      src/readelf.c
  26. 3 1
      src/softmagic.c

+ 8 - 0
ChangeLog

@@ -1,3 +1,11 @@
+2015-01-02  15:15  Christos Zoulas <christos@zoulas.com>
+
+	* release 5.22
+
+2015-01-01  12:01  Christos Zoulas <christos@zoulas.com>
+
+	* add indirect relative for TIFF/Exif
+
 2014-12-16  18:10  Christos Zoulas <christos@zoulas.com>
 	
 	* restructure elf note printing to avoid repeated messages

+ 20 - 12
README

@@ -1,6 +1,6 @@
 ## README for file(1) Command ##
 
-    @(#) $File: README,v 1.46 2013/03/25 14:33:10 christos Exp $
+    @(#) $File: README,v 1.48 2014/03/07 13:55:30 christos Exp $
 
 Mailing List: file@mx.gw.com  
 Mailing List archives: http://mx.gw.com/pipermail/file/  
@@ -25,8 +25,8 @@ A public read-only git repository of the same sources is available at:
 
 	https://github.com/file/file
 
-The major changes for 5.x are CDF file parsing, indirect magic, and
-overhaul in mime and ascii encoding handling.
+The major changes for 5.x are CDF file parsing, indirect magic, name/use
+(recursion) and overhaul in mime and ascii encoding handling.
 
 The major feature of 4.x is the refactoring of the code into a library,
 and the re-write of the file command in terms of that library. The library
@@ -67,33 +67,41 @@ in magic(5) format please, to the maintainer, Christos Zoulas.
 COPYING - read this first.  
 README - read this second (you are currently reading this file).  
 INSTALL - read on how to install
-
 src/apprentice.c - parses /etc/magic to learn magic  
+src/asctime_r.c - replacement for OS's that don't have it.  
 src/apptype.c - used for OS/2 specific application type magic  
 src/asprintf.c - replacement for OS's that don't have it.  
 src/ascmagic.c - third & last set of tests, based on hardwired assumptions.  
-src/asctime_r.c - for systems that don't have it.  
-src/asprintf.c - for systems that don't have it.  
-src/cdf.c - parser for Microsoft Compound Document Files  
+src/asctime_r.c - replacement for OS's that don't have it.  
+src/asprintf.c - replacement for OS's that don't have it.  
+src/cdf.[ch] - parser for Microsoft Compound Document Files  
 src/cdf_time.c - time converter for CDF.  
 src/compress.c - handles decompressing files to look inside.  
-src/ctime_r.c - for systems that don't have it.  
+src/ctime_r.c - replacement for OS's that don't have it.  
+src/elfclass.h - common code for elf 32/64.
 src/encoding.c - handles unicode encodings  
 src/file.c - the main program  
 src/file.h - header file  
+src/file_opts.h - list of options
+src/fmtcheck.c - replacement for OS's that don't have it.  
 src/fsmagic.c - first set of tests the program runs, based on filesystem info  
 src/funcs.c - utilility functions  
-src/getopt_long.c - for systems that don't have it.  
-src/getline.c - for systems that don't have it.  
+src/getline.c - replacement for OS's that don't have it.  
+src/getopt_long.c - replacement for OS's that don't have it.  
 src/is_tar.c, tar.h - knows about tarchives (courtesy John Gilmore).  
 src/names.h - header file for ascmagic.c  
+src/magic.h.in - source file for magic.h
 src/magic.c - the libmagic api  
+src/pread.c - replacement for OS's that don't have it.  
 src/print.c - print results, errors, warnings.  
 src/readcdf.c - CDF wrapper.  
 src/readelf.[ch] - Stand-alone elf parsing code.  
 src/softmagic.c - 2nd set of tests, based on /etc/magic  
-src/strlcat.c - for systems that don't have it.  
-src/strlcpy.c - for systems that don't have it.  
+src/mygetopt.h - replacement for OS's that don't have it.  
+src/strcasestr.c - replacement for OS's that don't have it.  
+src/strlcat.c - replacement for OS's that don't have it.  
+src/strlcpy.c - replacement for OS's that don't have it.  
+src/tar.h - tar file definitions
 src/vasprintf.c - for systems that don't have it.  
 doc/file.man - man page for the command  
 doc/magic.man - man page for the magic file, courtesy Guy Harris.

+ 10 - 10
autom4te.cache/output.0

@@ -1,6 +1,6 @@
 @%:@! /bin/sh
 @%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.69 for file 5.21.
+@%:@ Generated by GNU Autoconf 2.69 for file 5.22.
 @%:@
 @%:@ Report bugs to <christos@astron.com>.
 @%:@ 
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='file'
 PACKAGE_TARNAME='file'
-PACKAGE_VERSION='5.21'
-PACKAGE_STRING='file 5.21'
+PACKAGE_VERSION='5.22'
+PACKAGE_STRING='file 5.22'
 PACKAGE_BUGREPORT='christos@astron.com'
 PACKAGE_URL=''
 
@@ -1327,7 +1327,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures file 5.21 to adapt to many kinds of systems.
+\`configure' configures file 5.22 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1397,7 +1397,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of file 5.21:";;
+     short | recursive ) echo "Configuration of file 5.22:";;
    esac
   cat <<\_ACEOF
 
@@ -1507,7 +1507,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-file configure 5.21
+file configure 5.22
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2163,7 +2163,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by file $as_me 5.21, which was
+It was created by file $as_me 5.22, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3029,7 +3029,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='file'
- VERSION='5.21'
+ VERSION='5.22'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -15014,7 +15014,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by file $as_me 5.21, which was
+This file was extended by file $as_me 5.22, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -15080,7 +15080,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-file config.status 5.21
+file config.status 5.22
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 

+ 10 - 10
autom4te.cache/output.1

@@ -1,6 +1,6 @@
 @%:@! /bin/sh
 @%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.69 for file 5.21.
+@%:@ Generated by GNU Autoconf 2.69 for file 5.22.
 @%:@
 @%:@ Report bugs to <christos@astron.com>.
 @%:@ 
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='file'
 PACKAGE_TARNAME='file'
-PACKAGE_VERSION='5.21'
-PACKAGE_STRING='file 5.21'
+PACKAGE_VERSION='5.22'
+PACKAGE_STRING='file 5.22'
 PACKAGE_BUGREPORT='christos@astron.com'
 PACKAGE_URL=''
 
@@ -1327,7 +1327,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures file 5.21 to adapt to many kinds of systems.
+\`configure' configures file 5.22 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1397,7 +1397,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of file 5.21:";;
+     short | recursive ) echo "Configuration of file 5.22:";;
    esac
   cat <<\_ACEOF
 
@@ -1507,7 +1507,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-file configure 5.21
+file configure 5.22
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2163,7 +2163,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by file $as_me 5.21, which was
+It was created by file $as_me 5.22, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3029,7 +3029,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='file'
- VERSION='5.21'
+ VERSION='5.22'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -15014,7 +15014,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by file $as_me 5.21, which was
+This file was extended by file $as_me 5.22, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -15080,7 +15080,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-file config.status 5.21
+file config.status 5.22
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 

+ 10 - 10
autom4te.cache/output.2

@@ -1,6 +1,6 @@
 @%:@! /bin/sh
 @%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.69 for file 5.21.
+@%:@ Generated by GNU Autoconf 2.69 for file 5.22.
 @%:@
 @%:@ Report bugs to <christos@astron.com>.
 @%:@ 
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='file'
 PACKAGE_TARNAME='file'
-PACKAGE_VERSION='5.21'
-PACKAGE_STRING='file 5.21'
+PACKAGE_VERSION='5.22'
+PACKAGE_STRING='file 5.22'
 PACKAGE_BUGREPORT='christos@astron.com'
 PACKAGE_URL=''
 
@@ -1327,7 +1327,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures file 5.21 to adapt to many kinds of systems.
+\`configure' configures file 5.22 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1397,7 +1397,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of file 5.21:";;
+     short | recursive ) echo "Configuration of file 5.22:";;
    esac
   cat <<\_ACEOF
 
@@ -1507,7 +1507,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-file configure 5.21
+file configure 5.22
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2163,7 +2163,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by file $as_me 5.21, which was
+It was created by file $as_me 5.22, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3029,7 +3029,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='file'
- VERSION='5.21'
+ VERSION='5.22'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -15014,7 +15014,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by file $as_me 5.21, which was
+This file was extended by file $as_me 5.22, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -15080,7 +15080,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-file config.status 5.21
+file config.status 5.22
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 

+ 365 - 365
autom4te.cache/requests

@@ -43,188 +43,188 @@
                         'configure.ac'
                       ],
                       {
-                        '_LT_LINKER_OPTION' => 1,
+                        'AU_DEFUN' => 1,
+                        'AC_LIBTOOL_DLOPEN_SELF' => 1,
+                        '_LT_REQUIRED_DARWIN_CHECKS' => 1,
+                        'AC_PATH_MAGIC' => 1,
+                        'AC_CHECK_LIBM' => 1,
+                        'AC_LTDL_DLSYM_USCORE' => 1,
+                        '_LT_AC_TAGCONFIG' => 1,
+                        'AC_LIBTOOL_CXX' => 1,
+                        '_LTDL_SETUP' => 1,
+                        '_m4_warn' => 1,
+                        'include' => 1,
                         'AC_PROG_LD_RELOAD_FLAG' => 1,
-                        '_LT_CC_BASENAME' => 1,
-                        'AC_LIB_LTDL' => 1,
+                        'AM_AUX_DIR_EXPAND' => 1,
                         'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
-                        '_LT_LIBOBJ' => 1,
-                        'AM_SILENT_RULES' => 1,
-                        'LT_OUTPUT' => 1,
-                        'gl_VISIBILITY' => 1,
-                        'AC_PROG_EGREP' => 1,
-                        'AM_DISABLE_SHARED' => 1,
-                        'gl_PREREQ_ARGZ' => 1,
-                        'AC_LTDL_DLLIB' => 1,
-                        'LT_LIB_DLLOAD' => 1,
-                        '_LT_AC_FILE_LTDLL_C' => 1,
-                        '_LT_REQUIRED_DARWIN_CHECKS' => 1,
-                        'AC_DEFUN_ONCE' => 1,
-                        'LT_PROG_GCJ' => 1,
-                        'AM_SUBST_NOTMAKE' => 1,
-                        'AM_MISSING_HAS_RUN' => 1,
-                        'AC_DISABLE_FAST_INSTALL' => 1,
-                        '_LT_COMPILER_BOILERPLATE' => 1,
-                        'AC_LIBLTDL_INSTALLABLE' => 1,
-                        'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
-                        '_LT_PROG_CXX' => 1,
-                        'AM_SET_DEPDIR' => 1,
-                        'AC_PROG_NM' => 1,
-                        'LT_PATH_NM' => 1,
+                        'AC_LIBTOOL_GCJ' => 1,
+                        'AM_RUN_LOG' => 1,
                         'AC_LIBTOOL_SETUP' => 1,
-                        'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
-                        'AM_MISSING_PROG' => 1,
-                        'AC_DISABLE_STATIC' => 1,
+                        '_AM_SET_OPTIONS' => 1,
+                        'LT_CONFIG_LTDL_DIR' => 1,
                         'AC_LTDL_ENABLE_INSTALL' => 1,
-                        'AM_CONDITIONAL' => 1,
-                        'AM_SANITY_CHECK' => 1,
-                        '_LT_AC_LOCK' => 1,
-                        'AC_LIBTOOL_OBJDIR' => 1,
-                        'AC_ENABLE_SHARED' => 1,
-                        'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
+                        'LT_AC_PROG_EGREP' => 1,
                         'AC_STRUCT_TIMEZONE_DAYLIGHT' => 1,
-                        'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
-                        'AC_LIBTOOL_PICMODE' => 1,
+                        'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
+                        '_LT_LINKER_BOILERPLATE' => 1,
+                        'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
+                        'AC_LIBTOOL_LINKER_OPTION' => 1,
+                        '_LT_AC_SYS_COMPILER' => 1,
+                        'LT_PATH_LD' => 1,
+                        'AM_MISSING_PROG' => 1,
+                        '_LT_AC_LANG_GCJ' => 1,
                         'LTDL_CONVENIENCE' => 1,
-                        '_LT_PREPARE_SED_QUOTE_VARS' => 1,
-                        'AC_LTDL_SYMBOL_USCORE' => 1,
+                        'AC_DISABLE_FAST_INSTALL' => 1,
                         '_LT_AC_PROG_CXXCPP' => 1,
-                        'AC_STRUCT_OPTION_GETOPT_H' => 1,
-                        'AC_LIBTOOL_F77' => 1,
-                        '_LT_AC_TAGCONFIG' => 1,
-                        '_LT_AC_LANG_F77_CONFIG' => 1,
-                        'AC_PROG_LD_GNU' => 1,
-                        '_LT_PATH_TOOL_PREFIX' => 1,
-                        'LT_AC_PROG_GCJ' => 1,
-                        'AC_LIBTOOL_DLOPEN_SELF' => 1,
-                        '_LT_PROG_FC' => 1,
-                        'LT_LANG' => 1,
-                        'AC_CHECK_LIBM' => 1,
-                        '_LT_AC_PROG_ECHO_BACKSLASH' => 1,
-                        'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
-                        'LTDL_INIT' => 1,
-                        'AM_AUX_DIR_EXPAND' => 1,
+                        '_LT_LIBOBJ' => 1,
+                        'AC_ENABLE_STATIC' => 1,
+                        'AC_LTDL_SHLIBEXT' => 1,
+                        '_LT_AC_LANG_C_CONFIG' => 1,
+                        'AC_LIBTOOL_OBJDIR' => 1,
                         'LT_CMD_MAX_LEN' => 1,
-                        'AC_WITH_LTDL' => 1,
-                        'AU_DEFUN' => 1,
-                        '_AM_PROG_TAR' => 1,
-                        'AM_RUN_LOG' => 1,
-                        'AC_LTDL_SHLIBPATH' => 1,
-                        '_LT_AC_CHECK_DLFCN' => 1,
-                        'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
-                        'AM_PROG_CC_C_O' => 1,
-                        'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
-                        'AC_LIBTOOL_LANG_C_CONFIG' => 1,
-                        'LT_INIT' => 1,
-                        'AC_PATH_TOOL_PREFIX' => 1,
-                        'gl_FUNC_ARGZ' => 1,
-                        'AC_LIBTOOL_PROG_CC_C_O' => 1,
-                        '_LT_COMPILER_OPTION' => 1,
-                        'AC_ENABLE_FAST_INSTALL' => 1,
-                        '_LT_AC_LANG_GCJ' => 1,
-                        '_LT_AC_SHELL_INIT' => 1,
-                        'LT_AC_PROG_RC' => 1,
-                        '_LT_LINKER_BOILERPLATE' => 1,
-                        'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
-                        'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
-                        'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
-                        'LT_CONFIG_LTDL_DIR' => 1,
-                        'LT_WITH_LTDL' => 1,
-                        'LT_LIB_M' => 1,
-                        '_AM_CONFIG_MACRO_DIRS' => 1,
-                        '_LT_AC_TRY_DLOPEN_SELF' => 1,
-                        'LTVERSION_VERSION' => 1,
-                        'AC_DEFUN' => 1,
+                        '_LT_AC_LANG_CXX' => 1,
+                        'AM_PROG_INSTALL_SH' => 1,
+                        '_LT_LINKER_OPTION' => 1,
+                        'AM_INIT_AUTOMAKE' => 1,
                         '_LT_PROG_LTMAIN' => 1,
-                        'LT_PROG_RC' => 1,
-                        '_LT_AC_SYS_COMPILER' => 1,
-                        'AM_AUTOMAKE_VERSION' => 1,
-                        '_LT_PROG_F77' => 1,
-                        'AC_PATH_MAGIC' => 1,
+                        'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
+                        'AM_SUBST_NOTMAKE' => 1,
+                        'AM_PROG_CC_C_O' => 1,
+                        '_LT_AC_LANG_CXX_CONFIG' => 1,
+                        'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
+                        '_LT_CC_BASENAME' => 1,
                         '_LT_PROG_ECHO_BACKSLASH' => 1,
-                        'AC_LTDL_PREOPEN' => 1,
-                        '_LT_AC_TAGVAR' => 1,
-                        'AM_PROG_INSTALL_SH' => 1,
-                        'm4_include' => 1,
+                        'AM_SET_DEPDIR' => 1,
+                        '_LT_PREPARE_SED_QUOTE_VARS' => 1,
+                        'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
+                        '_LT_AC_LANG_F77' => 1,
+                        'm4_pattern_allow' => 1,
+                        'gl_PREREQ_ARGZ' => 1,
+                        'AC_LIBLTDL_INSTALLABLE' => 1,
+                        'AC_DISABLE_STATIC' => 1,
                         '_AM_SUBST_NOTMAKE' => 1,
-                        'AC_LTDL_SHLIBEXT' => 1,
+                        'LTSUGAR_VERSION' => 1,
+                        'AC_LIBTOOL_COMPILER_OPTION' => 1,
+                        'LT_SUPPORTED_TAG' => 1,
+                        'LT_LANG' => 1,
+                        'LT_WITH_LTDL' => 1,
+                        '_AM_PROG_CC_C_O' => 1,
+                        'gl_VISIBILITY' => 1,
+                        '_AM_SET_OPTION' => 1,
+                        '_LT_AC_TRY_DLOPEN_SELF' => 1,
+                        'AM_SILENT_RULES' => 1,
+                        'AM_MISSING_HAS_RUN' => 1,
+                        '_LT_AC_SYS_LIBPATH_AIX' => 1,
+                        '_LT_AC_PROG_ECHO_BACKSLASH' => 1,
+                        '_LT_COMPILER_OPTION' => 1,
+                        'AC_LIBTOOL_CONFIG' => 1,
+                        'AC_PROG_LD' => 1,
+                        'AC_LTDL_DLLIB' => 1,
                         'LT_SYS_DLOPEN_SELF' => 1,
-                        'AC_ENABLE_STATIC' => 1,
                         '_LT_WITH_SYSROOT' => 1,
-                        'AM_MAKE_INCLUDE' => 1,
-                        'AC_LIBTOOL_CONFIG' => 1,
-                        'AM_ENABLE_SHARED' => 1,
-                        'AM_ENABLE_STATIC' => 1,
+                        'AM_PROG_LD' => 1,
+                        'AM_CONDITIONAL' => 1,
+                        'AC_LIBTOOL_PROG_CC_C_O' => 1,
+                        'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
+                        'AM_DISABLE_STATIC' => 1,
+                        'AC_CONFIG_MACRO_DIR' => 1,
                         'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
-                        'AC_LIBTOOL_GCJ' => 1,
-                        'LT_SYS_MODULE_EXT' => 1,
-                        'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
-                        'LT_AC_PROG_EGREP' => 1,
+                        'AC_LTDL_OBJDIR' => 1,
+                        'AC_DEFUN' => 1,
+                        '_AM_CONFIG_MACRO_DIRS' => 1,
+                        'AM_PROG_INSTALL_STRIP' => 1,
+                        'AM_SET_LEADING_DOT' => 1,
+                        'LT_OUTPUT' => 1,
+                        '_LT_AC_SHELL_INIT' => 1,
+                        'AM_ENABLE_SHARED' => 1,
                         'LT_SYS_DLOPEN_DEPLIBS' => 1,
-                        'LT_SUPPORTED_TAG' => 1,
-                        'LTOBSOLETE_VERSION' => 1,
-                        'AM_DISABLE_STATIC' => 1,
-                        'AC_LIBLTDL_CONVENIENCE' => 1,
-                        'AC_LIBTOOL_WIN32_DLL' => 1,
-                        '_AC_AM_CONFIG_HEADER_HOOK' => 1,
+                        '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+                        '_LT_PATH_TOOL_PREFIX' => 1,
+                        'AC_LIBTOOL_DLOPEN' => 1,
+                        'LT_AC_PROG_GCJ' => 1,
+                        'AC_ENABLE_SHARED' => 1,
+                        'AC_LTDL_SHLIBPATH' => 1,
                         'LT_SYS_SYMBOL_USCORE' => 1,
-                        'AC_CONFIG_MACRO_DIR_TRACE' => 1,
-                        '_AM_AUTOCONF_VERSION' => 1,
-                        'AC_DISABLE_SHARED' => 1,
-                        '_AM_PROG_CC_C_O' => 1,
-                        'AM_PROG_LIBTOOL' => 1,
-                        'AC_LTDL_DLSYM_USCORE' => 1,
+                        'AC_LTDL_SYMBOL_USCORE' => 1,
                         'AM_PROG_NM' => 1,
+                        'LT_SYS_DLSEARCH_PATH' => 1,
+                        'm4_pattern_forbid' => 1,
+                        'AC_ENABLE_FAST_INSTALL' => 1,
+                        '_AM_MANGLE_OPTION' => 1,
+                        '_LT_AC_LANG_F77_CONFIG' => 1,
+                        '_LT_COMPILER_BOILERPLATE' => 1,
+                        'LTVERSION_VERSION' => 1,
                         'LT_FUNC_DLSYM_USCORE' => 1,
-                        'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
-                        '_AM_SET_OPTIONS' => 1,
-                        'AC_LIBTOOL_FC' => 1,
                         '_LT_AC_LANG_GCJ_CONFIG' => 1,
-                        'AC_DEPLIBS_CHECK_METHOD' => 1,
-                        'LT_SYS_DLSEARCH_PATH' => 1,
-                        '_LT_AC_LANG_C_CONFIG' => 1,
-                        'AM_PROG_INSTALL_STRIP' => 1,
-                        '_LT_AC_SYS_LIBPATH_AIX' => 1,
-                        '_LT_AC_LANG_CXX' => 1,
-                        'LT_SYS_MODULE_PATH' => 1,
-                        '_LT_AC_LANG_RC_CONFIG' => 1,
-                        'include' => 1,
+                        'AC_LTDL_PREOPEN' => 1,
+                        'AC_DEFUN_ONCE' => 1,
+                        'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
                         '_AM_DEPENDENCIES' => 1,
-                        '_m4_warn' => 1,
-                        'm4_pattern_allow' => 1,
+                        '_AC_AM_CONFIG_HEADER_HOOK' => 1,
+                        'LT_SYS_MODULE_EXT' => 1,
+                        'AC_LIBLTDL_CONVENIENCE' => 1,
+                        'LT_INIT' => 1,
+                        'AC_PROG_LIBTOOL' => 1,
+                        'AC_DISABLE_SHARED' => 1,
+                        'AC_CONFIG_MACRO_DIR_TRACE' => 1,
                         'LT_PROG_GO' => 1,
-                        'LTDL_INSTALLABLE' => 1,
-                        '_AM_SET_OPTION' => 1,
-                        'AC_CONFIG_MACRO_DIR' => 1,
-                        'AC_LIBTOOL_CXX' => 1,
-                        'LTSUGAR_VERSION' => 1,
-                        'AM_SET_LEADING_DOT' => 1,
-                        'LT_PATH_LD' => 1,
-                        'AM_PROG_LD' => 1,
-                        '_LTDL_SETUP' => 1,
-                        'AC_LIBTOOL_RC' => 1,
-                        'AM_INIT_AUTOMAKE' => 1,
-                        'AC_PROG_LD' => 1,
-                        'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
-                        'm4_pattern_forbid' => 1,
-                        'AC_LIBTOOL_DLOPEN' => 1,
-                        'LTOPTIONS_VERSION' => 1,
-                        '_AC_PROG_LIBTOOL' => 1,
-                        'LT_AC_PROG_SED' => 1,
-                        '_LT_AC_LANG_CXX_CONFIG' => 1,
-                        'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
                         'AC_LTDL_SYSSEARCHPATH' => 1,
+                        'LTOPTIONS_VERSION' => 1,
+                        'AC_LIBTOOL_WIN32_DLL' => 1,
+                        'AC_PROG_LD_GNU' => 1,
                         'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
+                        'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
+                        'm4_include' => 1,
+                        'LTDL_INIT' => 1,
+                        'AC_STRUCT_OPTION_GETOPT_H' => 1,
+                        'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
+                        'AC_LIBTOOL_RC' => 1,
+                        'LTDL_INSTALLABLE' => 1,
+                        'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
+                        'AM_PROG_LIBTOOL' => 1,
+                        '_LT_AC_FILE_LTDLL_C' => 1,
+                        '_LT_PROG_CXX' => 1,
+                        'LT_PROG_GCJ' => 1,
+                        '_AM_PROG_TAR' => 1,
+                        'AC_LIBTOOL_LANG_C_CONFIG' => 1,
+                        '_LT_AC_TAGVAR' => 1,
+                        'gl_FUNC_ARGZ' => 1,
+                        'AM_DISABLE_SHARED' => 1,
+                        'AM_ENABLE_STATIC' => 1,
                         '_AM_IF_OPTION' => 1,
-                        'AC_PROG_LIBTOOL' => 1,
-                        'AC_LTDL_OBJDIR' => 1,
-                        'AC_LIBTOOL_COMPILER_OPTION' => 1,
-                        '_LT_AC_LANG_F77' => 1,
-                        'AC_LIBTOOL_LINKER_OPTION' => 1,
+                        'AM_SANITY_CHECK' => 1,
+                        'AC_LIBTOOL_FC' => 1,
+                        'AC_LIB_LTDL' => 1,
                         'AM_DEP_TRACK' => 1,
-                        '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
-                        '_AM_MANGLE_OPTION' => 1,
-                        'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1
+                        'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
+                        'AC_PROG_NM' => 1,
+                        'LT_AC_PROG_SED' => 1,
+                        'AC_DEPLIBS_CHECK_METHOD' => 1,
+                        'LT_AC_PROG_RC' => 1,
+                        'AC_LIBTOOL_PICMODE' => 1,
+                        'LT_PATH_NM' => 1,
+                        'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+                        '_AC_PROG_LIBTOOL' => 1,
+                        '_LT_AC_CHECK_DLFCN' => 1,
+                        'LTOBSOLETE_VERSION' => 1,
+                        'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
+                        '_LT_PROG_FC' => 1,
+                        'AC_LIBTOOL_F77' => 1,
+                        'AM_AUTOMAKE_VERSION' => 1,
+                        'LT_PROG_RC' => 1,
+                        'LT_LIB_M' => 1,
+                        'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
+                        '_LT_PROG_F77' => 1,
+                        'AC_PROG_EGREP' => 1,
+                        'AC_WITH_LTDL' => 1,
+                        'AC_PATH_TOOL_PREFIX' => 1,
+                        'LT_LIB_DLLOAD' => 1,
+                        'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
+                        'LT_SYS_MODULE_PATH' => 1,
+                        'AM_MAKE_INCLUDE' => 1,
+                        '_LT_AC_LOCK' => 1,
+                        '_AM_AUTOCONF_VERSION' => 1,
+                        '_LT_AC_LANG_RC_CONFIG' => 1
                       }
                     ], 'Autom4te::Request' ),
              bless( [
@@ -239,66 +239,66 @@
                         'configure.ac'
                       ],
                       {
-                        '_AM_COND_IF' => 1,
-                        'AC_CANONICAL_HOST' => 1,
-                        'LT_INIT' => 1,
-                        'AM_INIT_AUTOMAKE' => 1,
-                        'm4_sinclude' => 1,
-                        'AC_CANONICAL_SYSTEM' => 1,
-                        'm4_pattern_forbid' => 1,
-                        'LT_SUPPORTED_TAG' => 1,
-                        'AM_GNU_GETTEXT' => 1,
-                        'AC_FC_PP_SRCEXT' => 1,
-                        'AM_PROG_FC_C_O' => 1,
-                        'AH_OUTPUT' => 1,
+                        'AM_XGETTEXT_OPTION' => 1,
+                        'AM_PROG_MKDIR_P' => 1,
+                        'm4_include' => 1,
+                        'AM_SILENT_RULES' => 1,
                         'AC_CONFIG_FILES' => 1,
-                        'AM_PROG_CC_C_O' => 1,
-                        'AC_FC_FREEFORM' => 1,
-                        'AM_NLS' => 1,
-                        'AC_FC_SRCEXT' => 1,
                         'AM_POT_TOOLS' => 1,
+                        'LT_CONFIG_LTDL_DIR' => 1,
+                        'AM_AUTOMAKE_VERSION' => 1,
                         'AC_FC_PP_DEFINE' => 1,
-                        'm4_pattern_allow' => 1,
-                        'AC_CONFIG_LINKS' => 1,
-                        '_AM_COND_ELSE' => 1,
-                        'include' => 1,
+                        'sinclude' => 1,
+                        'LT_SUPPORTED_TAG' => 1,
+                        'AM_PATH_GUILE' => 1,
+                        'AC_CONFIG_HEADERS' => 1,
+                        'AC_CANONICAL_TARGET' => 1,
+                        '_AM_COND_ENDIF' => 1,
+                        'AM_PROG_LIBTOOL' => 1,
+                        'AC_FC_SRCEXT' => 1,
+                        'AH_OUTPUT' => 1,
+                        'AC_CANONICAL_SYSTEM' => 1,
+                        'AM_INIT_AUTOMAKE' => 1,
+                        'AC_SUBST' => 1,
                         'AC_INIT' => 1,
-                        '_AM_MAKEFILE_INCLUDE' => 1,
+                        '_AM_COND_IF' => 1,
                         'AC_LIBSOURCE' => 1,
-                        'AM_SILENT_RULES' => 1,
-                        'AM_EXTRA_RECURSIVE_TARGETS' => 1,
-                        '_AM_SUBST_NOTMAKE' => 1,
-                        '_m4_warn' => 1,
-                        'm4_include' => 1,
+                        '_AM_COND_ELSE' => 1,
+                        'AC_CONFIG_SUBDIRS' => 1,
+                        '_AM_MAKEFILE_INCLUDE' => 1,
                         'AC_CONFIG_LIBOBJ_DIR' => 1,
-                        'AC_SUBST' => 1,
-                        'AM_AUTOMAKE_VERSION' => 1,
-                        'AM_XGETTEXT_OPTION' => 1,
-                        'AC_REQUIRE_AUX_FILE' => 1,
-                        'AM_PROG_F77_C_O' => 1,
+                        'AC_SUBST_TRACE' => 1,
+                        'AM_NLS' => 1,
+                        'AM_CONDITIONAL' => 1,
+                        'm4_pattern_forbid' => 1,
+                        'm4_sinclude' => 1,
+                        'AC_CANONICAL_BUILD' => 1,
+                        'AM_PROG_MOC' => 1,
+                        'AC_FC_PP_SRCEXT' => 1,
+                        'AC_FC_FREEFORM' => 1,
                         '_LT_AC_TAGCONFIG' => 1,
+                        'AM_PROG_AR' => 1,
+                        'AM_PROG_F77_C_O' => 1,
+                        '_m4_warn' => 1,
+                        'AM_PROG_CC_C_O' => 1,
                         'AM_MAINTAINER_MODE' => 1,
-                        'AC_SUBST_TRACE' => 1,
+                        'AC_CANONICAL_HOST' => 1,
+                        'AC_DEFINE_TRACE_LITERAL' => 1,
                         'AC_CONFIG_AUX_DIR' => 1,
-                        'AC_CANONICAL_TARGET' => 1,
-                        '_AM_COND_ENDIF' => 1,
+                        'AC_REQUIRE_AUX_FILE' => 1,
+                        'AM_EXTRA_RECURSIVE_TARGETS' => 1,
+                        'AM_GNU_GETTEXT' => 1,
+                        'LT_INIT' => 1,
+                        'AC_PROG_LIBTOOL' => 1,
+                        '_AM_SUBST_NOTMAKE' => 1,
+                        'm4_pattern_allow' => 1,
+                        'include' => 1,
                         'AM_ENABLE_MULTILIB' => 1,
-                        'AM_PROG_MKDIR_P' => 1,
-                        'AC_CANONICAL_BUILD' => 1,
-                        'LT_CONFIG_LTDL_DIR' => 1,
-                        'AM_MAKEFILE_INCLUDE' => 1,
-                        'AC_DEFINE_TRACE_LITERAL' => 1,
+                        'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
                         'AM_PROG_CXX_C_O' => 1,
-                        'AC_CONFIG_SUBDIRS' => 1,
-                        'AM_PATH_GUILE' => 1,
-                        'AM_CONDITIONAL' => 1,
-                        'AM_PROG_LIBTOOL' => 1,
-                        'AM_PROG_AR' => 1,
-                        'AC_PROG_LIBTOOL' => 1,
-                        'AM_PROG_MOC' => 1,
-                        'AC_CONFIG_HEADERS' => 1,
-                        'sinclude' => 1,
-                        'AM_GNU_GETTEXT_INTL_SUBDIR' => 1
+                        'AC_CONFIG_LINKS' => 1,
+                        'AM_PROG_FC_C_O' => 1,
+                        'AM_MAKEFILE_INCLUDE' => 1
                       }
                     ], 'Autom4te::Request' ),
              bless( [
@@ -341,188 +341,188 @@
                         'configure.ac'
                       ],
                       {
-                        'AM_SILENT_RULES' => 1,
-                        '_LT_LIBOBJ' => 1,
-                        'AC_LIB_LTDL' => 1,
-                        'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
-                        '_LT_CC_BASENAME' => 1,
-                        'AC_PROG_LD_RELOAD_FLAG' => 1,
-                        '_LT_LINKER_OPTION' => 1,
-                        'LT_OUTPUT' => 1,
-                        'LT_LIB_DLLOAD' => 1,
-                        'AC_LTDL_DLLIB' => 1,
-                        'AM_DISABLE_SHARED' => 1,
-                        'gl_PREREQ_ARGZ' => 1,
-                        'AC_PROG_EGREP' => 1,
-                        'gl_VISIBILITY' => 1,
-                        '_LT_COMPILER_BOILERPLATE' => 1,
-                        'AC_DISABLE_FAST_INSTALL' => 1,
-                        'AM_MISSING_HAS_RUN' => 1,
-                        'AM_SUBST_NOTMAKE' => 1,
+                        'LTDL_INSTALLABLE' => 1,
+                        'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
                         '_LT_AC_FILE_LTDLL_C' => 1,
-                        'LT_PROG_GCJ' => 1,
-                        '_LT_REQUIRED_DARWIN_CHECKS' => 1,
-                        'AC_DEFUN_ONCE' => 1,
-                        'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
-                        'AC_LIBTOOL_SETUP' => 1,
-                        'LT_PATH_NM' => 1,
-                        'AM_SET_DEPDIR' => 1,
-                        'AC_PROG_NM' => 1,
-                        'AC_LIBLTDL_INSTALLABLE' => 1,
                         '_LT_PROG_CXX' => 1,
-                        'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
-                        'AM_CONDITIONAL' => 1,
-                        'AC_LTDL_ENABLE_INSTALL' => 1,
-                        'AC_DISABLE_STATIC' => 1,
-                        'AM_MISSING_PROG' => 1,
-                        'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
-                        'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
-                        'AC_ENABLE_SHARED' => 1,
-                        'AC_STRUCT_TIMEZONE_DAYLIGHT' => 1,
-                        'AC_LIBTOOL_OBJDIR' => 1,
-                        '_LT_AC_LOCK' => 1,
-                        'AM_SANITY_CHECK' => 1,
-                        '_LT_AC_TAGCONFIG' => 1,
+                        'AM_PROG_LIBTOOL' => 1,
+                        '_LT_AC_TAGVAR' => 1,
+                        'LT_PROG_GCJ' => 1,
+                        '_AM_PROG_TAR' => 1,
+                        'AC_LIBTOOL_LANG_C_CONFIG' => 1,
+                        'LTOPTIONS_VERSION' => 1,
+                        'AC_LTDL_SYSSEARCHPATH' => 1,
+                        'AC_LIBTOOL_WIN32_DLL' => 1,
                         'AC_PROG_LD_GNU' => 1,
-                        '_LT_AC_LANG_F77_CONFIG' => 1,
+                        'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
+                        'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
                         'AC_STRUCT_OPTION_GETOPT_H' => 1,
-                        'AC_LIBTOOL_F77' => 1,
-                        'AC_LTDL_SYMBOL_USCORE' => 1,
-                        '_LT_AC_PROG_CXXCPP' => 1,
-                        '_LT_PREPARE_SED_QUOTE_VARS' => 1,
-                        'LTDL_CONVENIENCE' => 1,
-                        'AC_LIBTOOL_PICMODE' => 1,
-                        'AC_CHECK_LIBM' => 1,
-                        'LT_LANG' => 1,
-                        'AC_LIBTOOL_DLOPEN_SELF' => 1,
-                        '_LT_PROG_FC' => 1,
+                        'm4_include' => 1,
+                        'LTDL_INIT' => 1,
+                        'AC_LIBTOOL_RC' => 1,
+                        'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
+                        '_LT_AC_LANG_GCJ_CONFIG' => 1,
+                        'LTVERSION_VERSION' => 1,
+                        'LT_FUNC_DLSYM_USCORE' => 1,
+                        'AC_LTDL_PREOPEN' => 1,
+                        'AC_DEFUN_ONCE' => 1,
+                        'AC_LIBLTDL_CONVENIENCE' => 1,
+                        'LT_SYS_MODULE_EXT' => 1,
+                        'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
+                        '_AC_AM_CONFIG_HEADER_HOOK' => 1,
+                        '_AM_DEPENDENCIES' => 1,
+                        'LT_PROG_GO' => 1,
+                        'AC_CONFIG_MACRO_DIR_TRACE' => 1,
+                        'AC_PROG_LIBTOOL' => 1,
+                        'AC_DISABLE_SHARED' => 1,
+                        'LT_INIT' => 1,
                         'LT_AC_PROG_GCJ' => 1,
                         '_LT_PATH_TOOL_PREFIX' => 1,
-                        'AM_RUN_LOG' => 1,
-                        '_AM_PROG_TAR' => 1,
-                        'AU_DEFUN' => 1,
-                        'AC_WITH_LTDL' => 1,
-                        'LT_CMD_MAX_LEN' => 1,
-                        'AM_AUX_DIR_EXPAND' => 1,
-                        'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
-                        '_LT_AC_PROG_ECHO_BACKSLASH' => 1,
-                        'LTDL_INIT' => 1,
-                        'AC_LIBTOOL_LANG_C_CONFIG' => 1,
-                        'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
-                        'AM_PROG_CC_C_O' => 1,
-                        'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
-                        '_LT_AC_CHECK_DLFCN' => 1,
+                        'AC_LIBTOOL_DLOPEN' => 1,
+                        '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
                         'AC_LTDL_SHLIBPATH' => 1,
-                        '_LT_AC_SHELL_INIT' => 1,
-                        '_LT_AC_LANG_GCJ' => 1,
-                        '_LT_COMPILER_OPTION' => 1,
+                        'LT_SYS_SYMBOL_USCORE' => 1,
+                        'AC_ENABLE_SHARED' => 1,
+                        'AM_PROG_NM' => 1,
+                        'LT_SYS_DLSEARCH_PATH' => 1,
+                        'AC_LTDL_SYMBOL_USCORE' => 1,
+                        'm4_pattern_forbid' => 1,
+                        '_LT_AC_LANG_F77_CONFIG' => 1,
+                        '_AM_MANGLE_OPTION' => 1,
+                        '_LT_COMPILER_BOILERPLATE' => 1,
                         'AC_ENABLE_FAST_INSTALL' => 1,
-                        'AC_LIBTOOL_PROG_CC_C_O' => 1,
                         'AC_PATH_TOOL_PREFIX' => 1,
+                        'AC_WITH_LTDL' => 1,
+                        'AC_PROG_EGREP' => 1,
+                        'LT_SYS_MODULE_PATH' => 1,
+                        'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
+                        'LT_LIB_DLLOAD' => 1,
+                        'AM_MAKE_INCLUDE' => 1,
+                        '_LT_AC_LANG_RC_CONFIG' => 1,
+                        '_AM_AUTOCONF_VERSION' => 1,
+                        '_LT_AC_LOCK' => 1,
+                        'AC_LIBTOOL_F77' => 1,
+                        'AM_AUTOMAKE_VERSION' => 1,
+                        '_LT_PROG_FC' => 1,
+                        'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
+                        'LT_PROG_RC' => 1,
+                        '_LT_PROG_F77' => 1,
+                        'LT_LIB_M' => 1,
+                        'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
+                        'LT_AC_PROG_SED' => 1,
+                        'AC_PROG_NM' => 1,
+                        'LT_PATH_NM' => 1,
+                        'AC_DEPLIBS_CHECK_METHOD' => 1,
+                        'AC_LIBTOOL_PICMODE' => 1,
+                        'LT_AC_PROG_RC' => 1,
+                        '_LT_AC_CHECK_DLFCN' => 1,
+                        'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+                        '_AC_PROG_LIBTOOL' => 1,
+                        'LTOBSOLETE_VERSION' => 1,
+                        '_AM_IF_OPTION' => 1,
                         'gl_FUNC_ARGZ' => 1,
-                        'LT_INIT' => 1,
+                        'AM_ENABLE_STATIC' => 1,
+                        'AM_DISABLE_SHARED' => 1,
+                        'AC_LIBTOOL_FC' => 1,
+                        'AC_LIB_LTDL' => 1,
+                        'AM_SANITY_CHECK' => 1,
+                        'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
+                        'AM_DEP_TRACK' => 1,
+                        '_LT_AC_LANG_C_CONFIG' => 1,
+                        'AC_LIBTOOL_OBJDIR' => 1,
+                        'AM_PROG_INSTALL_SH' => 1,
+                        '_LT_LINKER_OPTION' => 1,
+                        'LT_CMD_MAX_LEN' => 1,
+                        '_LT_AC_LANG_CXX' => 1,
                         'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
-                        '_LT_LINKER_BOILERPLATE' => 1,
-                        'LT_AC_PROG_RC' => 1,
-                        'LT_LIB_M' => 1,
-                        'LT_WITH_LTDL' => 1,
+                        '_LT_PROG_LTMAIN' => 1,
+                        'AM_SUBST_NOTMAKE' => 1,
+                        'AM_INIT_AUTOMAKE' => 1,
+                        'AC_LTDL_ENABLE_INSTALL' => 1,
                         'LT_CONFIG_LTDL_DIR' => 1,
-                        'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
-                        'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
+                        'AC_LIBTOOL_LINKER_OPTION' => 1,
                         '_LT_AC_SYS_COMPILER' => 1,
-                        'LT_PROG_RC' => 1,
-                        '_LT_PROG_LTMAIN' => 1,
-                        'AC_DEFUN' => 1,
-                        'LTVERSION_VERSION' => 1,
-                        '_LT_AC_TRY_DLOPEN_SELF' => 1,
-                        '_AM_CONFIG_MACRO_DIRS' => 1,
-                        '_LT_PROG_ECHO_BACKSLASH' => 1,
-                        'AC_PATH_MAGIC' => 1,
-                        '_LT_PROG_F77' => 1,
-                        'AM_AUTOMAKE_VERSION' => 1,
+                        'AC_STRUCT_TIMEZONE_DAYLIGHT' => 1,
+                        'LT_AC_PROG_EGREP' => 1,
+                        'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
+                        'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
+                        '_LT_LINKER_BOILERPLATE' => 1,
+                        'AM_MISSING_PROG' => 1,
+                        '_LT_AC_LANG_GCJ' => 1,
+                        'LT_PATH_LD' => 1,
                         'AC_LTDL_SHLIBEXT' => 1,
-                        '_AM_SUBST_NOTMAKE' => 1,
-                        'm4_include' => 1,
-                        '_LT_AC_TAGVAR' => 1,
-                        'AC_LTDL_PREOPEN' => 1,
-                        'AM_PROG_INSTALL_SH' => 1,
-                        'AM_ENABLE_SHARED' => 1,
-                        'AC_LIBTOOL_CONFIG' => 1,
-                        'AM_MAKE_INCLUDE' => 1,
                         'AC_ENABLE_STATIC' => 1,
-                        '_LT_WITH_SYSROOT' => 1,
-                        'LT_SYS_DLOPEN_SELF' => 1,
+                        'AC_DISABLE_FAST_INSTALL' => 1,
+                        'LTDL_CONVENIENCE' => 1,
+                        '_LT_AC_PROG_CXXCPP' => 1,
+                        '_LT_LIBOBJ' => 1,
+                        'AM_AUX_DIR_EXPAND' => 1,
+                        'include' => 1,
+                        'AC_PROG_LD_RELOAD_FLAG' => 1,
+                        'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
+                        'AM_RUN_LOG' => 1,
                         'AC_LIBTOOL_GCJ' => 1,
-                        'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
-                        'AM_ENABLE_STATIC' => 1,
-                        'AC_LIBLTDL_CONVENIENCE' => 1,
-                        'AC_LIBTOOL_WIN32_DLL' => 1,
-                        'AM_DISABLE_STATIC' => 1,
-                        'LTOBSOLETE_VERSION' => 1,
-                        'LT_SUPPORTED_TAG' => 1,
-                        'LT_AC_PROG_EGREP' => 1,
-                        'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
-                        'LT_SYS_DLOPEN_DEPLIBS' => 1,
-                        'LT_SYS_MODULE_EXT' => 1,
-                        '_AM_AUTOCONF_VERSION' => 1,
-                        'AC_CONFIG_MACRO_DIR_TRACE' => 1,
-                        'LT_SYS_SYMBOL_USCORE' => 1,
-                        '_AC_AM_CONFIG_HEADER_HOOK' => 1,
-                        'AM_PROG_LIBTOOL' => 1,
-                        '_AM_PROG_CC_C_O' => 1,
-                        'AC_DISABLE_SHARED' => 1,
-                        '_LT_AC_LANG_C_CONFIG' => 1,
-                        'LT_SYS_DLSEARCH_PATH' => 1,
-                        'AC_LIBTOOL_FC' => 1,
-                        '_LT_AC_LANG_GCJ_CONFIG' => 1,
-                        'AC_DEPLIBS_CHECK_METHOD' => 1,
-                        'LT_FUNC_DLSYM_USCORE' => 1,
                         '_AM_SET_OPTIONS' => 1,
-                        'AM_PROG_NM' => 1,
-                        'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
-                        'AC_LTDL_DLSYM_USCORE' => 1,
-                        '_LT_AC_LANG_CXX' => 1,
-                        '_LT_AC_SYS_LIBPATH_AIX' => 1,
-                        'AM_PROG_INSTALL_STRIP' => 1,
-                        '_AM_DEPENDENCIES' => 1,
+                        'AC_LIBTOOL_SETUP' => 1,
+                        'AC_LIBTOOL_DLOPEN_SELF' => 1,
+                        '_LT_REQUIRED_DARWIN_CHECKS' => 1,
+                        'AU_DEFUN' => 1,
+                        'AC_PATH_MAGIC' => 1,
+                        'AC_CHECK_LIBM' => 1,
+                        '_LTDL_SETUP' => 1,
                         '_m4_warn' => 1,
-                        '_LT_AC_LANG_RC_CONFIG' => 1,
-                        'include' => 1,
-                        'LT_SYS_MODULE_PATH' => 1,
+                        'AC_LTDL_DLSYM_USCORE' => 1,
+                        'AC_LIBTOOL_CXX' => 1,
+                        '_LT_AC_TAGCONFIG' => 1,
+                        '_LT_COMPILER_OPTION' => 1,
+                        'AC_LIBTOOL_CONFIG' => 1,
+                        'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
+                        'AM_CONDITIONAL' => 1,
+                        'AC_LIBTOOL_PROG_CC_C_O' => 1,
+                        'AM_DISABLE_STATIC' => 1,
                         'AC_CONFIG_MACRO_DIR' => 1,
-                        '_AM_SET_OPTION' => 1,
-                        'LTDL_INSTALLABLE' => 1,
-                        'LT_PROG_GO' => 1,
-                        'm4_pattern_allow' => 1,
+                        'LT_SYS_DLOPEN_SELF' => 1,
+                        'AC_LTDL_DLLIB' => 1,
+                        'AC_PROG_LD' => 1,
                         'AM_PROG_LD' => 1,
-                        'LT_PATH_LD' => 1,
+                        '_LT_WITH_SYSROOT' => 1,
+                        'AM_PROG_INSTALL_STRIP' => 1,
+                        'AC_DEFUN' => 1,
                         'AM_SET_LEADING_DOT' => 1,
-                        'LTSUGAR_VERSION' => 1,
-                        'AC_LIBTOOL_CXX' => 1,
-                        '_AC_PROG_LIBTOOL' => 1,
-                        'LTOPTIONS_VERSION' => 1,
-                        'AC_LIBTOOL_DLOPEN' => 1,
-                        'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
-                        'm4_pattern_forbid' => 1,
-                        'AM_INIT_AUTOMAKE' => 1,
-                        'AC_PROG_LD' => 1,
-                        '_LTDL_SETUP' => 1,
-                        'AC_LIBTOOL_RC' => 1,
-                        '_AM_IF_OPTION' => 1,
-                        'AC_LTDL_SYSSEARCHPATH' => 1,
-                        'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
-                        'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
-                        '_LT_AC_LANG_CXX_CONFIG' => 1,
-                        'LT_AC_PROG_SED' => 1,
-                        'AC_LIBTOOL_COMPILER_OPTION' => 1,
+                        '_AM_CONFIG_MACRO_DIRS' => 1,
                         'AC_LTDL_OBJDIR' => 1,
-                        'AC_PROG_LIBTOOL' => 1,
-                        'AC_LIBTOOL_LINKER_OPTION' => 1,
+                        'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
+                        'LT_SYS_DLOPEN_DEPLIBS' => 1,
+                        'LT_OUTPUT' => 1,
+                        '_LT_AC_SHELL_INIT' => 1,
+                        'AM_ENABLE_SHARED' => 1,
+                        'AC_LIBTOOL_COMPILER_OPTION' => 1,
+                        'LT_WITH_LTDL' => 1,
+                        '_AM_PROG_CC_C_O' => 1,
+                        'LT_SUPPORTED_TAG' => 1,
+                        'LT_LANG' => 1,
+                        '_AM_SET_OPTION' => 1,
+                        'gl_VISIBILITY' => 1,
+                        '_LT_AC_PROG_ECHO_BACKSLASH' => 1,
+                        '_LT_AC_TRY_DLOPEN_SELF' => 1,
+                        'AM_MISSING_HAS_RUN' => 1,
+                        'AM_SILENT_RULES' => 1,
+                        '_LT_AC_SYS_LIBPATH_AIX' => 1,
                         '_LT_AC_LANG_F77' => 1,
-                        'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
-                        '_AM_MANGLE_OPTION' => 1,
-                        '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
-                        'AM_DEP_TRACK' => 1
+                        'm4_pattern_allow' => 1,
+                        'gl_PREREQ_ARGZ' => 1,
+                        'AC_LIBLTDL_INSTALLABLE' => 1,
+                        'LTSUGAR_VERSION' => 1,
+                        '_AM_SUBST_NOTMAKE' => 1,
+                        'AC_DISABLE_STATIC' => 1,
+                        'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
+                        '_LT_AC_LANG_CXX_CONFIG' => 1,
+                        'AM_PROG_CC_C_O' => 1,
+                        'AM_SET_DEPDIR' => 1,
+                        '_LT_PROG_ECHO_BACKSLASH' => 1,
+                        '_LT_CC_BASENAME' => 1,
+                        '_LT_PREPARE_SED_QUOTE_VARS' => 1,
+                        'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1
                       }
                     ], 'Autom4te::Request' )
            );

+ 1 - 1
autom4te.cache/traces.1

@@ -4,7 +4,7 @@ m4trace:aclocal.m4:1230: -1- m4_include([m4/ltsugar.m4])
 m4trace:aclocal.m4:1231: -1- m4_include([m4/ltversion.m4])
 m4trace:aclocal.m4:1232: -1- m4_include([m4/lt~obsolete.m4])
 m4trace:aclocal.m4:1233: -1- m4_include([acinclude.m4])
-m4trace:configure.ac:2: -1- AC_INIT([file], [5.21], [christos@astron.com])
+m4trace:configure.ac:2: -1- AC_INIT([file], [5.22], [christos@astron.com])
 m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?A[CHUM]_])
 m4trace:configure.ac:2: -1- m4_pattern_forbid([_AC_])
 m4trace:configure.ac:2: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])

+ 10 - 10
configure

@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for file 5.21.
+# Generated by GNU Autoconf 2.69 for file 5.22.
 #
 # Report bugs to <christos@astron.com>.
 #
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='file'
 PACKAGE_TARNAME='file'
-PACKAGE_VERSION='5.21'
-PACKAGE_STRING='file 5.21'
+PACKAGE_VERSION='5.22'
+PACKAGE_STRING='file 5.22'
 PACKAGE_BUGREPORT='christos@astron.com'
 PACKAGE_URL=''
 
@@ -1327,7 +1327,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures file 5.21 to adapt to many kinds of systems.
+\`configure' configures file 5.22 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1397,7 +1397,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of file 5.21:";;
+     short | recursive ) echo "Configuration of file 5.22:";;
    esac
   cat <<\_ACEOF
 
@@ -1507,7 +1507,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-file configure 5.21
+file configure 5.22
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2163,7 +2163,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by file $as_me 5.21, which was
+It was created by file $as_me 5.22, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3029,7 +3029,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='file'
- VERSION='5.21'
+ VERSION='5.22'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -15014,7 +15014,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by file $as_me 5.21, which was
+This file was extended by file $as_me 5.22, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -15080,7 +15080,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-file config.status 5.21
+file config.status 5.22
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 

+ 1 - 1
configure.ac

@@ -1,5 +1,5 @@
 dnl Process this file with autoconf to produce a configure script.
-AC_INIT([file],[5.21],[christos@astron.com])
+AC_INIT([file],[5.22],[christos@astron.com])
 AM_INIT_AUTOMAKE([subdir-objects foreign])
 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
 

+ 7 - 2
doc/magic.man

@@ -1,5 +1,5 @@
-.\" $File: magic.man,v 1.83 2014/06/03 17:36:13 christos Exp $
-.Dd June 3, 2014
+.\" $File: magic.man,v 1.84 2014/06/03 19:01:34 christos Exp $
+.Dd January 1, 2015
 .Dt MAGIC __FSECTION__
 .Os
 .\" install as magic.4 on USG, magic.5 on V7, Berkeley and Linux systems.
@@ -200,6 +200,11 @@ interpreted as a UNIX-style date, but interpreted as local time rather
 than UTC.
 .It Dv indirect
 Starting at the given offset, consult the magic database again.
+The offset of th
+.Dv indirect
+magic is by default absolute in the file, but one can specify
+.Dv /r
+to indicate that the offset is relative from the beginning of the entry.
 .It Dv name
 Define a
 .Dq named

+ 2 - 2
magic/Magdir/cafebabe

@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: cafebabe,v 1.15 2014/03/14 18:47:29 christos Exp $
+# $File: cafebabe,v 1.16 2014/04/30 21:41:02 christos Exp $
 # Cafe Babes unite!
 #
 # Since Java bytecode and Mach-O universal binaries have the same magic number,
@@ -45,7 +45,7 @@
 
 0	name		mach-o		\b [
 >0	use		mach-o-cpu	\b
->&(8.L)	indirect			\b: 
+>(8.L)	indirect			\b: 
 >0	belong		x		\b]
 
 0	belong		0xcafebabe

+ 8 - 1
magic/Magdir/filesystems

@@ -1,5 +1,5 @@
 #------------------------------------------------------------------------------
-# $File: filesystems,v 1.106 2014/10/23 17:17:09 christos Exp $
+# $File: filesystems,v 1.107 2014/12/03 18:02:52 christos Exp $
 # filesystems:  file(1) magic for different filesystems
 #
 0	name	partid  
@@ -260,6 +260,13 @@
 >>(11.s-2)	uleshort	0xAA55		DOS/MBR boot sector
 # for sector sizes with 512 or more Bytes
 >0x1FE		leshort		0xAA55		DOS/MBR boot sector
+
+# keep old DOS/MBR boot sector as dummy for mbr and bootloader displaying
+# only for sector sizes with 512 or more Bytes
+0x1FE          leshort         0xAA55         	DOS/MBR boot sector
+#
+# to display information (50) before DOS BPB (strength=70) and after DOS floppy (120) like in old file version
+!:strength +65
 >2		string		OSBS		OS/BS MBR
 # added by Joerg Jenderek at Feb 2013 according to http://thestarman.pcministry.com/asm/mbr/
 # and http://en.wikipedia.org/wiki/Master_Boot_Record

+ 66 - 5
magic/Magdir/images

@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: images,v 1.97 2014/12/08 16:06:19 christos Exp $
+# $File: images,v 1.101 2015/01/01 04:16:51 christos Exp $
 # images:  file(1) magic for image formats (see also "iff", and "c-lang" for
 # XPM bitmaps)
 #
@@ -125,6 +125,9 @@
 >2	use		tiff_entry
 
 0	name		tiff_entry
+# NewSubFileType
+>0	leshort		0xfe
+>>12	use		tiff_entry
 >0	leshort		0x100
 >>4	lelong		1
 >>>12	use		tiff_entry
@@ -186,21 +189,79 @@
 >0	leshort		0x10e
 >>(8.l)	string		x		\b, description=%s
 >>>12	use		tiff_entry
+# Make
+>0	leshort		0x10f
+>>(8.l)	string		x		\b, manufacturer=%s
+>>>12	use		tiff_entry
+# Model
+>0	leshort		0x110
+>>(8.l)	string		x		\b, model=%s
+>>>12	use		tiff_entry
 # StripOffsets
 >0	leshort		0x111
 >>12	use		tiff_entry
-# NewSubFileType
->0	leshort		0xfe
+# Orientation
+>0	leshort		0x112		\b, orientation=
+>>8	leshort		1		\bupper-left
+>>8	leshort		3		\blower-right
+>>8	leshort		6		\bupper-right
+>>8	leshort		8		\blower-left
+>>8	leshort		9		\bundefined
+>>8	default		x
+>>>8	leshort		x		\b[*%d*]
+>>12	use		tiff_entry
+# XResolution
+>0	leshort		0x11a
+>>8	lelong		x		\b, xresolution=%d
+>>12	use		tiff_entry
+# YResolution
+>0	leshort		0x11b
+>>8	lelong		x		\b, yresolution=%d
+>>12	use		tiff_entry
+# ResolutionUnit
+>0	leshort		0x128
+>>8	leshort		x		\b, resolutionunit=%d
+>>12	use		tiff_entry
+# Software
+>0	leshort		0x131
+>>(8.l)	string		x		\b, software=%s
 >>12	use		tiff_entry
 # Datetime
 >0	leshort		0x132
 >>(8.l)	string		x		\b, datetime=%s
->>>12	use		tiff_entry
+>>12	use		tiff_entry
 # HostComputer
 >0	leshort		0x13c
 >>(8.l)	string		x		\b, hostcomputer=%s
->>>12	use		tiff_entry
+>>12	use		tiff_entry
+# WhitePoint
+>0	leshort		0x13e
+>>12	use		tiff_entry
+# PrimaryChromaticities
+>0	leshort		0x13f
+>>12	use		tiff_entry
+# YCbCrCoefficients
+>0	leshort		0x211
+>>12	use		tiff_entry
+# YCbCrPositioning
+>0	leshort		0x213
+>>12	use		tiff_entry
+# ReferenceBlackWhite
+>0	leshort		0x214
+>>12	use		tiff_entry
+# Copyright
+>0	leshort		0x8298
+>>(8.l)	string		x		\b, copyright=%s
+>>12	use		tiff_entry
+# ExifOffset
+>0	leshort		0x8769
+>>12	use		tiff_entry
+# GPS IFD
+>0	leshort		0x8825		\b, GPS-Data
+>>12	use		tiff_entry
+
 #>0	leshort		x		\b, unknown=0x%x
+#>>12	use		tiff_entry
 
 0	string		MM\x00\x2b	Big TIFF image data, big-endian
 !:mime	image/tiff

+ 18 - 95
magic/Magdir/jpeg

@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: jpeg,v 1.20 2014/08/05 07:32:31 christos Exp $
+# $File: jpeg,v 1.25 2015/01/02 16:56:50 christos Exp $
 # JPEG images
 # SunOS 5.5.1 had
 #
@@ -31,98 +31,9 @@
 # Next, show thumbnail info, if it exists:
 >>18	byte		!0		\b, thumbnail %dx
 >>>19	byte		x		\b%d
-
-# EXIF moved down here to avoid reporting a bogus version number,
-# and EXIF version number printing added.
-#   - Patrik R=E5dman <patrik+file-magic@iki.fi>
->6	string		Exif		\b, EXIF standard
-# Look for EXIF IFD offset in IFD 0, and then look for EXIF version tag in EXIF IFD.
-# All possible combinations of entries have to be enumerated, since no looping
-# is possible. And both endians are possible...
-# The combinations included below are from real-world JPEGs.
-# Little-endian
->>12	string		II		
-# IFD 0 Entry #5:
->>>70	leshort		0x8769          
-# EXIF IFD Entry #1:
->>>>(78.l+14)	leshort	0x9000		
->>>>>(78.l+23)	byte	x		%c
->>>>>(78.l+24)	byte	x		\b.%c
->>>>>(78.l+25)	byte	!0x30		\b%c
-# IFD 0 Entry #9:
->>>118	leshort		0x8769          
-# EXIF IFD Entry #3:
->>>>(126.l+38)	leshort	0x9000		
->>>>>(126.l+47)	byte	x		%c
->>>>>(126.l+48)	byte	x		\b.%c
->>>>>(126.l+49)	byte	!0x30		\b%c
-# IFD 0 Entry #10
->>>130	leshort		0x8769          
-# EXIF IFD Entry #3:
->>>>(138.l+38)	leshort	0x9000		
->>>>>(138.l+47)	byte	x		%c
->>>>>(138.l+48)	byte	x		\b.%c
->>>>>(138.l+49)	byte	!0x30		\b%c
-# EXIF IFD Entry #4:
->>>>(138.l+50)	leshort	0x9000		
->>>>>(138.l+59)	byte	x		%c
->>>>>(138.l+60)	byte	x		\b.%c
->>>>>(138.l+61)	byte	!0x30		\b%c
-# EXIF IFD Entry #5:
->>>>(138.l+62)	leshort	0x9000		
->>>>>(138.l+71)	byte	x		%c
->>>>>(138.l+72)	byte	x		\b.%c
->>>>>(138.l+73)	byte	!0x30		\b%c
-# IFD 0 Entry #11
->>>142	leshort		0x8769          
-# EXIF IFD Entry #3:
->>>>(150.l+38)	leshort	0x9000		
->>>>>(150.l+47)	byte	x		%c
->>>>>(150.l+48)	byte	x		\b.%c
->>>>>(150.l+49)	byte	!0x30		\b%c
-# EXIF IFD Entry #4:
->>>>(150.l+50)	leshort	0x9000		
->>>>>(150.l+59)	byte	x		%c
->>>>>(150.l+60)	byte	x		\b.%c
->>>>>(150.l+61)	byte	!0x30		\b%c
-# EXIF IFD Entry #5:
->>>>(150.l+62)	leshort	0x9000		
->>>>>(150.l+71)	byte	x		%c
->>>>>(150.l+72)	byte	x		\b.%c
->>>>>(150.l+73)	byte	!0x30		\b%c
-# Big-endian
->>12	string		MM		
-# IFD 0 Entry #9:
->>>118	beshort		0x8769          
-# EXIF IFD Entry #1:
->>>>(126.L+14)	beshort	0x9000		
->>>>>(126.L+23)	byte	x		%c
->>>>>(126.L+24)	byte	x		\b.%c
->>>>>(126.L+25)	byte	!0x30		\b%c
-# EXIF IFD Entry #3:
->>>>(126.L+38)	beshort	0x9000		
->>>>>(126.L+47)	byte	x		%c
->>>>>(126.L+48)	byte	x		\b.%c
->>>>>(126.L+49)	byte	!0x30		\b%c
-# IFD 0 Entry #10
->>>130	beshort		0x8769          
-# EXIF IFD Entry #3:
->>>>(138.L+38)	beshort	0x9000		
->>>>>(138.L+47)	byte	x		%c
->>>>>(138.L+48)	byte	x		\b.%c
->>>>>(138.L+49)	byte	!0x30		\b%c
-# EXIF IFD Entry #5:
->>>>(138.L+62)	beshort	0x9000		
->>>>>(138.L+71)	byte	x		%c
->>>>>(138.L+72)	byte	x		\b.%c
->>>>>(138.L+73)	byte	!0x30		\b%c
-# IFD 0 Entry #11
->>>142	beshort		0x8769          
-# EXIF IFD Entry #4:
->>>>(150.L+50)	beshort	0x9000		
->>>>>(150.L+59)	byte	x		%c
->>>>>(150.L+60)	byte	x		\b.%c
->>>>>(150.L+61)	byte	!0x30		\b%c
+>6	string		Exif		\b, Exif standard: [
+>>12	indirect/r	x
+>>12	string		x		\b]
 
 # Jump to the first segment
 >(4.S+4)	use		jpeg_segment
@@ -130,7 +41,8 @@
 # This uses recursion...
 0		name		jpeg_segment
 >0	beshort		0xFFFE
->>(2.S+2)	use			jpeg_segment
+# Recursion handled by FFE0
+#>>(2.S+2)	use			jpeg_segment
 >>2	pstring/HJ	x		\b, comment: "%s"
 
 >0	beshort		0xFFC0
@@ -158,6 +70,13 @@
 >0	beshort		0xFFC4
 >>(2.S+2)	use			jpeg_segment
 
+>0	beshort		0xFFE1		
+# Recursion handled by FFE0
+#>>(2.S+2)	use			jpeg_segment
+>>4	string		Exif		\b, Exif Standard: [
+>>>10	indirect/r	x		
+>>>10	string		x		\b]
+
 # Application specific markers
 >0	beshort&0xFFE0	=0xFFE0
 >>(2.S+2)	use			jpeg_segment
@@ -168,7 +87,11 @@
 # D9: End of image
 # Dn: Restart
 >0	beshort&0xFFD0	=0xFFD0
->>(2.S+2)	use			jpeg_segment
+>>0	beshort&0xFFE0	!0xFFE0
+>>>(2.S+2)	use			jpeg_segment
+
+#>0	beshort		x		unknown 0x%x
+#>>(2.S+2)	use			jpeg_segment
 
 # HSI is Handmade Software's proprietary JPEG encoding scheme
 0	string		hsi1		JPEG image data, HSI proprietary

+ 3 - 3
src/Makefile.in

@@ -81,9 +81,9 @@ build_triplet = @build@
 host_triplet = @host@
 bin_PROGRAMS = file$(EXEEXT)
 subdir = src
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am strcasestr.c \
-	asctime_r.c vasprintf.c strlcpy.c getopt_long.c pread.c \
-	strlcat.c ctime_r.c fmtcheck.c asprintf.c getline.c \
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am strlcat.c \
+	strlcpy.c getopt_long.c pread.c asctime_r.c fmtcheck.c \
+	strcasestr.c getline.c asprintf.c ctime_r.c vasprintf.c \
 	$(top_srcdir)/depcomp $(include_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \

+ 163 - 113
src/apprentice.c

@@ -32,7 +32,7 @@
 #include "file.h"
 
 #ifndef	lint
-FILE_RCSID("@(#)$File: apprentice.c,v 1.227 2014/11/28 02:46:39 christos Exp $")
+FILE_RCSID("@(#)$File: apprentice.c,v 1.229 2015/01/01 17:07:34 christos Exp $")
 #endif	/* lint */
 
 #include "magic.h"
@@ -1605,6 +1605,145 @@ check_cond(struct magic_set *ms, int cond, uint32_t cont_level)
 }
 #endif /* ENABLE_CONDITIONALS */
 
+private int
+parse_indirect_modifier(struct magic_set *ms, struct magic *m, const char **lp)
+{
+	const char *l = *lp;
+
+	while (!isspace((unsigned char)*++l))
+		switch (*l) {
+		case CHAR_INDIRECT_RELATIVE:
+			m->str_flags |= INDIRECT_RELATIVE;
+			break;
+		default:
+			if (ms->flags & MAGIC_CHECK)
+				file_magwarn(ms, "indirect modifier `%c' "
+					"invalid", *l);
+			*lp = l;
+			return -1;
+		}
+	*lp = l;
+	return 0;
+}
+
+private void
+parse_op_modifier(struct magic_set *ms, struct magic *m, const char **lp,
+    int op)
+{
+	const char *l = *lp;
+	char *t;
+	uint64_t val;
+
+	++l;
+	m->mask_op |= op;
+	val = (uint64_t)strtoull(l, &t, 0);
+	l = t;
+	m->num_mask = file_signextend(ms, m, val);
+	eatsize(&l);
+	*lp = l;
+}
+
+private int
+parse_string_modifier(struct magic_set *ms, struct magic *m, const char **lp)
+{
+	const char *l = *lp;
+	char *t;
+	int have_range = 0;
+
+	while (!isspace((unsigned char)*++l)) {
+		switch (*l) {
+		case '0':  case '1':  case '2':
+		case '3':  case '4':  case '5':
+		case '6':  case '7':  case '8':
+		case '9':
+			if (have_range && (ms->flags & MAGIC_CHECK))
+				file_magwarn(ms, "multiple ranges");
+			have_range = 1;
+			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_WHITESPACE:
+			m->str_flags |= STRING_COMPACT_WHITESPACE;
+			break;
+		case CHAR_COMPACT_OPTIONAL_WHITESPACE:
+			m->str_flags |= STRING_COMPACT_OPTIONAL_WHITESPACE;
+			break;
+		case CHAR_IGNORE_LOWERCASE:
+			m->str_flags |= STRING_IGNORE_LOWERCASE;
+			break;
+		case CHAR_IGNORE_UPPERCASE:
+			m->str_flags |= STRING_IGNORE_UPPERCASE;
+			break;
+		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;
+		case CHAR_TRIM:
+			m->str_flags |= STRING_TRIM;
+			break;
+		case CHAR_PSTRING_1_LE:
+#define SET_LENGTH(a) m->str_flags = (m->str_flags & ~PSTRING_LEN) | (a)
+			if (m->type != FILE_PSTRING)
+				goto bad;
+			SET_LENGTH(PSTRING_1_LE);
+			break;
+		case CHAR_PSTRING_2_BE:
+			if (m->type != FILE_PSTRING)
+				goto bad;
+			SET_LENGTH(PSTRING_2_BE);
+			break;
+		case CHAR_PSTRING_2_LE:
+			if (m->type != FILE_PSTRING)
+				goto bad;
+			SET_LENGTH(PSTRING_2_LE);
+			break;
+		case CHAR_PSTRING_4_BE:
+			if (m->type != FILE_PSTRING)
+				goto bad;
+			SET_LENGTH(PSTRING_4_BE);
+			break;
+		case CHAR_PSTRING_4_LE:
+			switch (m->type) {
+			case FILE_PSTRING:
+			case FILE_REGEX:
+				break;
+			default:
+				goto bad;
+			}
+			SET_LENGTH(PSTRING_4_LE);
+			break;
+		case CHAR_PSTRING_LENGTH_INCLUDES_ITSELF:
+			if (m->type != FILE_PSTRING)
+				goto bad;
+			m->str_flags |= PSTRING_LENGTH_INCLUDES_ITSELF;
+			break;
+		default:
+		bad:
+			if (ms->flags & MAGIC_CHECK)
+				file_magwarn(ms, "string modifier `%c' "
+					"invalid", *l);
+			goto out;
+		}
+		/* allow multiple '/' for readability */
+		if (l[1] == '/' && !isspace((unsigned char)l[2]))
+			l++;
+	}
+	if (string_modifier_check(ms, m) == -1)
+		goto out;
+	*lp = l;
+	return 0;
+out:
+	*lp = l;
+	return -1;
+}
+
 /*
  * parse one line from magic file, put into magic[index++] if valid
  */
@@ -1874,118 +2013,27 @@ parse(struct magic_set *ms, struct magic_entry *me, const char *line,
 	m->str_range = 0;
 	m->str_flags = m->type == FILE_PSTRING ? PSTRING_1_LE : 0;
 	if ((op = get_op(*l)) != -1) {
-		if (!IS_STRING(m->type)) {
-			uint64_t val;
-			++l;
-			m->mask_op |= op;
-			val = (uint64_t)strtoull(l, &t, 0);
-			l = t;
-			m->num_mask = file_signextend(ms, m, val);
-			eatsize(&l);
-		}
-		else if (op == FILE_OPDIVIDE) {
-			int have_range = 0;
-			while (!isspace((unsigned char)*++l)) {
-				switch (*l) {
-				case '0':  case '1':  case '2':
-				case '3':  case '4':  case '5':
-				case '6':  case '7':  case '8':
-				case '9':
-					if (have_range &&
-					    (ms->flags & MAGIC_CHECK))
-						file_magwarn(ms,
-						    "multiple ranges");
-					have_range = 1;
-					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_WHITESPACE:
-					m->str_flags |=
-					    STRING_COMPACT_WHITESPACE;
-					break;
-				case CHAR_COMPACT_OPTIONAL_WHITESPACE:
-					m->str_flags |=
-					    STRING_COMPACT_OPTIONAL_WHITESPACE;
-					break;
-				case CHAR_IGNORE_LOWERCASE:
-					m->str_flags |= STRING_IGNORE_LOWERCASE;
-					break;
-				case CHAR_IGNORE_UPPERCASE:
-					m->str_flags |= STRING_IGNORE_UPPERCASE;
-					break;
-				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;
-				case CHAR_TRIM:
-					m->str_flags |= STRING_TRIM;
-					break;
-				case CHAR_PSTRING_1_LE:
-					if (m->type != FILE_PSTRING)
-						goto bad;
-					m->str_flags = (m->str_flags & ~PSTRING_LEN) | PSTRING_1_LE;
-					break;
-				case CHAR_PSTRING_2_BE:
-					if (m->type != FILE_PSTRING)
-						goto bad;
-					m->str_flags = (m->str_flags & ~PSTRING_LEN) | PSTRING_2_BE;
-					break;
-				case CHAR_PSTRING_2_LE:
-					if (m->type != FILE_PSTRING)
-						goto bad;
-					m->str_flags = (m->str_flags & ~PSTRING_LEN) | PSTRING_2_LE;
-					break;
-				case CHAR_PSTRING_4_BE:
-					if (m->type != FILE_PSTRING)
-						goto bad;
-					m->str_flags = (m->str_flags & ~PSTRING_LEN) | PSTRING_4_BE;
-					break;
-				case CHAR_PSTRING_4_LE:
-					switch (m->type) {
-					case FILE_PSTRING:
-					case FILE_REGEX:
-						break;
-					default:
-						goto bad;
-					}
-					m->str_flags = (m->str_flags & ~PSTRING_LEN) | PSTRING_4_LE;
-					break;
-				case CHAR_PSTRING_LENGTH_INCLUDES_ITSELF:
-					if (m->type != FILE_PSTRING)
-						goto bad;
-					m->str_flags |= PSTRING_LENGTH_INCLUDES_ITSELF;
-					break;
-				default:
-				bad:
-					if (ms->flags & MAGIC_CHECK)
-						file_magwarn(ms,
-						    "string extension `%c' "
-						    "invalid", *l);
-					return -1;
-				}
-				/* allow multiple '/' for readability */
-				if (l[1] == '/' &&
-				    !isspace((unsigned char)l[2]))
-					l++;
+		if (IS_STRING(m->type)) {
+			int r;
+
+			if (op != FILE_OPDIVIDE) {
+				if (ms->flags & MAGIC_CHECK)
+					file_magwarn(ms,
+					    "invalid string/indirect op: "
+					    "`%c'", *t);
+				return -1;
 			}
-			if (string_modifier_check(ms, m) == -1)
+
+			if (m->type == FILE_INDIRECT)
+				r = parse_indirect_modifier(ms, m, &l);
+			else
+				r = parse_string_modifier(ms, m, &l);
+			if (r == -1)
 				return -1;
-		}
-		else {
-			if (ms->flags & MAGIC_CHECK)
-				file_magwarn(ms, "invalid string op: %c", *t);
-			return -1;
-		}
+		} else
+			parse_op_modifier(ms, m, &l, op);
 	}
+
 	/*
 	 * We used to set mask to all 1's here, instead let's just not do
 	 * anything if mask = 0 (unless you have a better idea)
@@ -2151,7 +2199,7 @@ parse_extra(struct magic_set *ms, struct magic_entry *me, const char *line,
 	size_t i;
 	const char *l = line;
 	struct magic *m = &me->mp[me->cont_count == 0 ? 0 : me->cont_count - 1];
-	char *buf = (char *)m + off;
+	char *buf = CAST(char *, CAST(void *, m)) + off;
 
 	if (buf[0] != '\0') {
 		len = nt ? strlen(buf) : len;
@@ -2200,7 +2248,8 @@ parse_apple(struct magic_set *ms, struct magic_entry *me, const char *line)
 {
 	struct magic *m = &me->mp[0];
 
-	return parse_extra(ms, me, line, offsetof(struct magic, apple),
+	return parse_extra(ms, me, line,
+	    CAST(off_t, offsetof(struct magic, apple)),
 	    sizeof(m->apple), "APPLE", "!+-./", 0);
 }
 
@@ -2213,7 +2262,8 @@ parse_mime(struct magic_set *ms, struct magic_entry *me, const char *line)
 {
 	struct magic *m = &me->mp[0];
 
-	return parse_extra(ms, me, line, offsetof(struct magic, mimetype),
+	return parse_extra(ms, me, line,
+	    CAST(off_t, offsetof(struct magic, mimetype)),
 	    sizeof(m->mimetype), "MIME", "+-/.", 1);
 }
 

+ 14 - 12
src/cdf.c

@@ -35,7 +35,7 @@
 #include "file.h"
 
 #ifndef lint
-FILE_RCSID("@(#)$File: cdf.c,v 1.68 2014/10/22 19:27:36 christos Exp $")
+FILE_RCSID("@(#)$File: cdf.c,v 1.69 2014/12/04 15:56:46 christos Exp $")
 #endif
 
 #include <assert.h>
@@ -73,8 +73,11 @@ static union {
 #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)))
-#define CDF_TOLE(x)	(sizeof(x) == 2 ? CDF_TOLE2(x) : (sizeof(x) == 4 ? \
-    CDF_TOLE4(x) : CDF_TOLE8(x)))
+#define CDF_TOLE(x)	(/*CONSTCOND*/sizeof(x) == 2 ? \
+			    CDF_TOLE2(CAST(uint16_t, x)) : \
+			(/*CONSTCOND*/sizeof(x) == 4 ? \
+			    CDF_TOLE4(CAST(uint32_t, x)) : \
+			    CDF_TOLE8(CAST(uint64_t, x))))
 #define CDF_GETUINT32(x, y)	cdf_getuint32(x, y)
 
 
@@ -271,7 +274,7 @@ cdf_check_stream_offset(const cdf_stream_t *sst, const cdf_header_t *h,
 	const char *e = ((const char *)p) + tail;
 	size_t ss = sst->sst_dirlen < h->h_min_size_standard_stream ?
 	    CDF_SHORT_SEC_SIZE(h) : CDF_SEC_SIZE(h);
-	(void)&line;
+	/*LINTED*/(void)&line;
 	if (e >= b && (size_t)(e - b) <= ss * sst->sst_len)
 		return 0;
 	DPRINTF(("%d: offset begin %p < end %p || %" SIZE_T_FORMAT "u"
@@ -998,9 +1001,9 @@ cdf_unpack_summary_info(const cdf_stream_t *sst, const cdf_header_t *h,
 }
 
 
-#define extract_catalog_field(f, l) \
+#define extract_catalog_field(t, f, l) \
     memcpy(&ce[i].f, b + (l), sizeof(ce[i].f)); \
-    ce[i].f = CDF_TOLE(ce[i].f)
+    ce[i].f = CAST(t, CDF_TOLE(ce[i].f))
 
 int
 cdf_unpack_catalog(const cdf_header_t *h, const cdf_stream_t *sst,
@@ -1028,18 +1031,17 @@ cdf_unpack_catalog(const cdf_header_t *h, const cdf_stream_t *sst,
 	ce = (*cat)->cat_e;
 	b = CAST(const char *, sst->sst_tab);
 	for (i = 0; i < nr; i++) {
-		extract_catalog_field(ce_namlen, 0);
-		extract_catalog_field(ce_num, 2);
-		extract_catalog_field(ce_timestamp, 6);
+		extract_catalog_field(uint16_t, ce_namlen, 0);
+		extract_catalog_field(uint16_t, ce_num, 2);
+		extract_catalog_field(uint64_t, ce_timestamp, 6);
 		reclen = ce[i].ce_namlen;
 		ce[i].ce_namlen =
 		    sizeof(ce[i].ce_name) / sizeof(ce[i].ce_name[0]) - 1;
 		if (ce[i].ce_namlen > reclen - 14)
 			ce[i].ce_namlen = reclen - 14;
-		np = CAST(const uint16_t *, (b + 16));
+		np = CAST(const uint16_t *, CAST(const void *, (b + 16)));
 		for (k = 0; k < ce[i].ce_namlen; k++) {
-			ce[i].ce_name[k] = np[k];
-			CDF_TOLE2(ce[i].ce_name[k]);
+			ce[i].ce_name[k] = np[k]; /* XXX: CDF_TOLE2? */
 		}
 		ce[i].ce_name[ce[i].ce_namlen] = 0;
 		b += reclen;

+ 2 - 3
src/compress.c

@@ -35,7 +35,7 @@
 #include "file.h"
 
 #ifndef lint
-FILE_RCSID("@(#)$File: compress.c,v 1.76 2014/12/11 11:47:08 christos Exp $")
+FILE_RCSID("@(#)$File: compress.c,v 1.77 2014/12/12 16:33:01 christos Exp $")
 #endif
 
 #include "magic.h"
@@ -383,7 +383,6 @@ uncompressbuf(struct magic_set *ms, int fd, size_t method,
 	int fdin[2], fdout[2];
 	int status;
 	ssize_t r;
-	pid_t pid;
 
 #ifdef BUILTIN_DECOMPRESS
         /* FIXME: This doesn't cope with bzip2 */
@@ -397,7 +396,7 @@ uncompressbuf(struct magic_set *ms, int fd, size_t method,
 		file_error(ms, errno, "cannot create pipe");	
 		return NODATA;
 	}
-	switch (pid = fork()) {
+	switch (fork()) {
 	case 0:	/* child */
 		(void) close(0);
 		if (fd != -1) {

+ 7 - 1
src/file.c

@@ -32,7 +32,7 @@
 #include "file.h"
 
 #ifndef	lint
-FILE_RCSID("@(#)$File: file.c,v 1.159 2014/11/28 02:46:39 christos Exp $")
+FILE_RCSID("@(#)$File: file.c,v 1.160 2014/12/16 23:18:40 christos Exp $")
 #endif	/* lint */
 
 #include "magic.h"
@@ -130,8 +130,14 @@ private struct {
 
 private char *progname;		/* used throughout 		*/
 
+#ifdef __dead
+__dead
+#endif
 private void usage(void);
 private void docprint(const char *);
+#ifdef __dead
+__dead
+#endif
 private void help(void);
 
 private int unwrap(struct magic_set *, const char *);

+ 7 - 1
src/file.h

@@ -27,7 +27,7 @@
  */
 /*
  * file.h - definitions for file(1) program
- * @(#)$File: file.h,v 1.162 2014/12/11 12:34:24 christos Exp $
+ * @(#)$File: file.h,v 1.164 2015/01/01 17:07:34 christos Exp $
  */
 
 #ifndef __file_h__
@@ -234,6 +234,7 @@ struct magic {
 	 (t) == FILE_LESTRING16 || \
 	 (t) == FILE_REGEX || \
 	 (t) == FILE_SEARCH || \
+	 (t) == FILE_INDIRECT || \
 	 (t) == FILE_NAME || \
 	 (t) == FILE_USE)
 
@@ -346,6 +347,8 @@ struct magic {
 #define STRING_IGNORE_CASE		(STRING_IGNORE_LOWERCASE|STRING_IGNORE_UPPERCASE)
 #define STRING_DEFAULT_RANGE		100
 
+#define	INDIRECT_RELATIVE			BIT(0)
+#define	CHAR_INDIRECT_RELATIVE			'r'
 
 /* list of magic entries */
 struct mlist {
@@ -587,5 +590,8 @@ static const char *rcsid(const char *p) { \
 #else
 #define FILE_RCSID(id)
 #endif
+#ifndef __RCSID
+#define __RCSID(a)
+#endif
 
 #endif /* __file_h__ */

+ 6 - 5
src/funcs.c

@@ -27,7 +27,7 @@
 #include "file.h"
 
 #ifndef	lint
-FILE_RCSID("@(#)$File: funcs.c,v 1.78 2014/12/11 12:34:24 christos Exp $")
+FILE_RCSID("@(#)$File: funcs.c,v 1.79 2014/12/16 20:52:49 christos Exp $")
 #endif	/* lint */
 
 #include "magic.h"
@@ -159,8 +159,9 @@ file_badread(struct magic_set *ms)
 }
 
 #ifndef COMPILE_ONLY
+/*ARGSUSED*/
 protected int
-file_buffer(struct magic_set *ms, int fd, const char *inname __attribute__ ((unused)),
+file_buffer(struct magic_set *ms, int fd, const char *inname __attribute__ ((__unused__)),
     const void *buf, size_t nb)
 {
 	int m = 0, rv = 0, looks_text = 0;
@@ -549,9 +550,9 @@ file_printable(char *buf, size_t bufsiz, const char *str)
 		if (ptr >= eptr - 3)
 			break;
 		*ptr++ = '\\';
-		*ptr++ = ((*s >> 6) & 7) + '0';
-		*ptr++ = ((*s >> 3) & 7) + '0';
-		*ptr++ = ((*s >> 0) & 7) + '0';
+		*ptr++ = ((CAST(unsigned int, *s) >> 6) & 7) + '0';
+		*ptr++ = ((CAST(unsigned int, *s) >> 3) & 7) + '0';
+		*ptr++ = ((CAST(unsigned int, *s) >> 0) & 7) + '0';
 	}
 	*ptr = '\0';
 	return buf;

+ 6 - 6
src/magic.c

@@ -33,7 +33,7 @@
 #include "file.h"
 
 #ifndef	lint
-FILE_RCSID("@(#)$File: magic.c,v 1.90 2014/12/04 15:56:46 christos Exp $")
+FILE_RCSID("@(#)$File: magic.c,v 1.91 2014/12/16 23:18:40 christos Exp $")
 #endif	/* lint */
 
 #include "magic.h"
@@ -543,19 +543,19 @@ magic_setparam(struct magic_set *ms, int param, const void *val)
 {
 	switch (param) {
 	case MAGIC_PARAM_INDIR_MAX:
-		ms->indir_max = *(const size_t *)val;
+		ms->indir_max = (uint16_t)*(const size_t *)val;
 		return 0;
 	case MAGIC_PARAM_NAME_MAX:
-		ms->name_max = *(const size_t *)val;
+		ms->name_max = (uint16_t)*(const size_t *)val;
 		return 0;
 	case MAGIC_PARAM_ELF_PHNUM_MAX:
-		ms->elf_phnum_max = *(const size_t *)val;
+		ms->elf_phnum_max = (uint16_t)*(const size_t *)val;
 		return 0;
 	case MAGIC_PARAM_ELF_SHNUM_MAX:
-		ms->elf_shnum_max = *(const size_t *)val;
+		ms->elf_shnum_max = (uint16_t)*(const size_t *)val;
 		return 0;
 	case MAGIC_PARAM_ELF_NOTES_MAX:
-		ms->elf_notes_max = *(const size_t *)val;
+		ms->elf_notes_max = (uint16_t)*(const size_t *)val;
 		return 0;
 	default:
 		errno = EINVAL;

+ 2 - 1
src/print.c

@@ -32,7 +32,7 @@
 #include "file.h"
 
 #ifndef lint
-FILE_RCSID("@(#)$File: print.c,v 1.75 2012/10/30 23:11:51 christos Exp $")
+FILE_RCSID("@(#)$File: print.c,v 1.76 2013/02/26 18:25:00 christos Exp $")
 #endif  /* lint */
 
 #include <string.h>
@@ -164,6 +164,7 @@ file_mdump(struct magic *m)
 		case FILE_MELDATE:
 			(void)fprintf(stderr, "%s,",
 			    file_fmttime(m->value.l, 0, tbuf));
+			break;
 		case FILE_QDATE:
 		case FILE_LEQDATE:
 		case FILE_BEQDATE:

+ 5 - 1
src/readcdf.c

@@ -26,7 +26,7 @@
 #include "file.h"
 
 #ifndef lint
-FILE_RCSID("@(#)$File: readcdf.c,v 1.48 2014/09/10 18:41:51 christos Exp $")
+FILE_RCSID("@(#)$File: readcdf.c,v 1.49 2014/12/04 15:56:46 christos Exp $")
 #endif
 
 #include <assert.h>
@@ -39,6 +39,10 @@ FILE_RCSID("@(#)$File: readcdf.c,v 1.48 2014/09/10 18:41:51 christos Exp $")
 #include "cdf.h"
 #include "magic.h"
 
+#ifndef __arraycount
+#define __arraycount(a) (sizeof(a) / sizeof(a[0]))
+#endif
+
 #define NOTMIME(ms) (((ms)->flags & MAGIC_MIME) == 0)
 
 static const struct nv {

+ 5 - 3
src/readelf.c

@@ -27,7 +27,7 @@
 #include "file.h"
 
 #ifndef lint
-FILE_RCSID("@(#)$File: readelf.c,v 1.116 2014/12/16 23:18:40 christos Exp $")
+FILE_RCSID("@(#)$File: readelf.c,v 1.117 2014/12/16 23:29:42 christos Exp $")
 #endif
 
 #ifdef BUILTIN_ELF
@@ -482,6 +482,7 @@ do_note_freebsd_version(struct magic_set *ms, int swap, void *v)
 }
 
 private int
+/*ARGSUSED*/
 do_bid_note(struct magic_set *ms, unsigned char *nbuf, uint32_t type,
     int swap __attribute__((__unused__)), uint32_t namesz, uint32_t descsz,
     size_t noff, size_t doff, int *flags)
@@ -622,7 +623,7 @@ do_pax_note(struct magic_set *ms, unsigned char *nbuf, uint32_t type,
 			return 1;
 
 		for (i = 0; i < __arraycount(pax); i++) {
-			if (((1 << i) & desc) == 0)
+			if (((1 << (int)i) & desc) == 0)
 				continue;
 			if (file_printf(ms, "%s%s", did++ ? "," : "",
 			    pax[i]) == -1)
@@ -1008,7 +1009,8 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
 	}
 
 	/* Read offset of name section to be able to read section names later */
-	if (pread(fd, xsh_addr, xsh_sizeof, off + size * strtab) < (ssize_t)xsh_sizeof) {
+	if (pread(fd, xsh_addr, xsh_sizeof, CAST(off_t, (off + size * strtab)))
+	    < (ssize_t)xsh_sizeof) {
 		file_badread(ms);
 		return -1;
 	}

+ 3 - 1
src/softmagic.c

@@ -32,7 +32,7 @@
 #include "file.h"
 
 #ifndef	lint
-FILE_RCSID("@(#)$File: softmagic.c,v 1.203 2014/12/04 15:22:05 christos Exp $")
+FILE_RCSID("@(#)$File: softmagic.c,v 1.206 2015/01/01 17:07:34 christos Exp $")
 #endif	/* lint */
 
 #include "magic.h"
@@ -1665,6 +1665,8 @@ mget(struct magic_set *ms, const unsigned char *s, struct magic *m,
 		break;
 
 	case FILE_INDIRECT:
+		if (m->str_flags & INDIRECT_RELATIVE)
+			offset += CAST(uint32_t, o);
 		if (offset == 0)
 			return 0;