merge conflicts
This commit is contained in:
parent
ae9cfef6ef
commit
74db5203d3
197
external/bsd/file/dist/ChangeLog
vendored
197
external/bsd/file/dist/ChangeLog
vendored
@ -1,3 +1,200 @@
|
||||
2017-02-10 12:24 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* release 5.30
|
||||
|
||||
2017-02-07 23:27 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* If we exceeded the offset in a search return no match
|
||||
(Christoph Biedl)
|
||||
* Be more lenient on corrupt CDF files (Christoph Biedl)
|
||||
|
||||
2017-02-04 16:46 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* pacify ubsan sign extension (oss-fuzz/524)
|
||||
|
||||
2017-02-01 12:42 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* off by one in cdf parsing (PR/593)
|
||||
* report debugging sections in elf (PR/591)
|
||||
|
||||
2016-11-06 10:52 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* Allow @@@ in extensions
|
||||
* Add missing overflow check in der magic (Jonas Wagner)
|
||||
|
||||
2016-10-25 10:40 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* release 5.29
|
||||
|
||||
2016-10-24 11:20 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* der getlength overflow (Jonas Wagner)
|
||||
* multiple magic file load failure (Christoph Biedl)
|
||||
|
||||
2016-10-17 11:26 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* CDF parsing improvements (Guy Helmer)
|
||||
|
||||
2016-07-20 7:26 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* Add support for signed indirect offsets
|
||||
|
||||
2016-07-18 7:41 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* cat /dev/null | file - should print empty (Christoph Biedl)
|
||||
|
||||
2016-07-05 15:20 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* Bump string size from 64 to 96.
|
||||
|
||||
2016-06-13 20:20 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* PR/556: Fix separators on annotations.
|
||||
|
||||
2016-06-13 19:40 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* release 5.28
|
||||
* fix leak on allocation failure
|
||||
|
||||
2016-06-01 1:20 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* PR/555: Avoid overflow for offset > nbytes
|
||||
* PR/550: Segv on DER parsing:
|
||||
- use the correct variable for length
|
||||
- set offset to 0 on failure.
|
||||
|
||||
2016-05-13 12:00 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* release 5.27
|
||||
|
||||
2016-04-18 9:35 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* Errors comparing DER entries or computing offsets
|
||||
are just indications of malformed non-DER files.
|
||||
Don't print them.
|
||||
* Offset comparison was off-by-one.
|
||||
* Fix compression code (Werner Fink)
|
||||
* Put new bytes constant in the right file (not the generated one)
|
||||
|
||||
2016-04-16 18:34 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* release 5.26
|
||||
|
||||
2016-03-31 13:50 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* make the number of bytes read from files configurable.
|
||||
|
||||
2016-03-21 13:40 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* Add bounds checks for DER code (discovered by Thomas Jarosch)
|
||||
* Change indirect recursion limit to indirect use count and
|
||||
bump from 15 to 50 to prevent abuse.
|
||||
|
||||
2016-03-13 20:39 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* Add -00 which prints filename\0description\0
|
||||
|
||||
2016-03-01 13:28 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* Fix ID3 indirect parsing
|
||||
|
||||
2016-01-19 10:18 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* add DER parsing capability
|
||||
|
||||
2015-11-13 10:35 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* provide dprintf(3) for the OS's that don't have it.
|
||||
|
||||
2015-11-11 16:25 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* redo the compression code report decompression errors
|
||||
|
||||
2015-11-10 23:25 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* REG_STARTEND code is not working as expected, delete it.
|
||||
|
||||
2015-11-09 16:05 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* Add zlib support if we have it.
|
||||
|
||||
2015-11-05 11:22 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* PR/492: compression forking was broken with magic_buffer.
|
||||
|
||||
2015-09-16 9:50 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* release 5.25
|
||||
|
||||
2015-09-11 13:25 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* add a limit to the length of regex searches
|
||||
|
||||
2015-09-08 9:50 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* fix problems with --parameter (Christoph Biedl)
|
||||
|
||||
2015-07-11 10:35 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* Windows fixes PR/466 (Jason Hood)
|
||||
|
||||
2015-07-09 10:35 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* release 5.24
|
||||
|
||||
2015-06-11 8:52 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* redo long option encoding to fix off-by-one in 5.23
|
||||
|
||||
2015-06-10 13:50 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* release 5.23
|
||||
|
||||
2015-06-09 16:10 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* Fix issue with regex range for magic with offset
|
||||
* Always return true from mget with USE (success to mget not match
|
||||
indication). Fixes mime evaluation after USE magic
|
||||
* PR/459: Don't insert magic entries to the list if there are parsing
|
||||
errors for them.
|
||||
|
||||
2015-06-03 16:00 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* PR/455: Add utf-7 encoding
|
||||
|
||||
2015-06-03 14:30 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* PR/455: Implement -Z, look inside, but don't report on compression
|
||||
* PR/454: Fix allocation error on bad magic.
|
||||
|
||||
2015-05-29 10:30 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* handle MAGIC_CONTINUE everywhere, not just in softmagic
|
||||
|
||||
2015-05-21 14:30 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* don't print descriptions for NAME types when mime.
|
||||
|
||||
2015-04-09 15:59 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* Add --extension to list the known extensions for this file type
|
||||
Idea by Andrew J Roazen
|
||||
|
||||
2015-02-14 12:23 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* Bump file search buffer size to 1M.
|
||||
|
||||
2015-01-09 14:35 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* Fix multiple issues with date formats reported by Christoph Biedl:
|
||||
- T_LOCAL meaning was reversed
|
||||
- Arithmetic did not work
|
||||
Also stop adjusting daylight savings for gmt printing.
|
||||
|
||||
2015-01-05 13:00 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* PR/411: Fix memory corruption from corrupt cdf file.
|
||||
|
||||
2015-01-02 15:15 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* release 5.22
|
||||
|
46
external/bsd/file/dist/Makefile.in
vendored
46
external/bsd/file/dist/Makefile.in
vendored
@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.14 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -14,7 +14,17 @@
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
@ -77,11 +87,6 @@ POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = .
|
||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
||||
$(top_srcdir)/configure $(am__configure_deps) \
|
||||
$(srcdir)/config.h.in AUTHORS COPYING ChangeLog INSTALL NEWS \
|
||||
README TODO compile config.guess config.sub depcomp install-sh \
|
||||
missing ltmain.sh
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
@ -89,6 +94,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
|
||||
$(am__configure_deps) $(am__DIST_COMMON)
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno config.status.lineno
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
@ -152,6 +159,9 @@ ETAGS = etags
|
||||
CTAGS = ctags
|
||||
CSCOPE = cscope
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in AUTHORS \
|
||||
COPYING ChangeLog INSTALL NEWS README TODO compile \
|
||||
config.guess config.sub depcomp install-sh ltmain.sh missing
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
top_distdir = $(distdir)
|
||||
@ -317,7 +327,7 @@ top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
EXTRA_DIST = MAINT
|
||||
#SUBDIRS = src magic doc
|
||||
#SUBDIRS = src magic tests doc python
|
||||
SUBDIRS = src
|
||||
all: config.h
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||
@ -338,7 +348,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
@ -569,15 +578,15 @@ dist-xz: distdir
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-tarZ: distdir
|
||||
@echo WARNING: "Support for shar distribution archives is" \
|
||||
"deprecated." >&2
|
||||
@echo WARNING: "Support for distribution archives compressed with" \
|
||||
"legacy program 'compress' is deprecated." >&2
|
||||
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-shar: distdir
|
||||
@echo WARNING: "Support for distribution archives compressed with" \
|
||||
"legacy program 'compress' is deprecated." >&2
|
||||
@echo WARNING: "Support for shar distribution archives is" \
|
||||
"deprecated." >&2
|
||||
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
||||
$(am__post_remove_distdir)
|
||||
@ -613,16 +622,17 @@ distcheck: dist
|
||||
esac
|
||||
chmod -R a-w $(distdir)
|
||||
chmod u+w $(distdir)
|
||||
mkdir $(distdir)/_build $(distdir)/_inst
|
||||
mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
|
||||
chmod a-w $(distdir)
|
||||
test -d $(distdir)/_build || exit 0; \
|
||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& am__cwd=`pwd` \
|
||||
&& $(am__cd) $(distdir)/_build \
|
||||
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||
&& $(am__cd) $(distdir)/_build/sub \
|
||||
&& ../../configure \
|
||||
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
--srcdir=../.. --prefix="$$dc_install_base" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
@ -799,6 +809,8 @@ uninstall-am:
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
|
||||
uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
|
67
external/bsd/file/dist/aclocal.m4
vendored
67
external/bsd/file/dist/aclocal.m4
vendored
@ -1,6 +1,6 @@
|
||||
# generated automatically by aclocal 1.14 -*- Autoconf -*-
|
||||
# generated automatically by aclocal 1.15 -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -21,7 +21,7 @@ If you have problems, you may need to regenerate the build system entirely.
|
||||
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
|
||||
|
||||
# visibility.m4 serial 5 (gettext-0.18.2)
|
||||
dnl Copyright (C) 2005, 2008, 2010-2013 Free Software Foundation, Inc.
|
||||
dnl Copyright (C) 2005, 2008, 2010-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
@ -98,7 +98,7 @@ AC_DEFUN([gl_VISIBILITY],
|
||||
[Define to 1 or 0, depending whether the compiler supports simple visibility declarations.])
|
||||
])
|
||||
|
||||
# Copyright (C) 2002-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2002-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -110,10 +110,10 @@ AC_DEFUN([gl_VISIBILITY],
|
||||
# generated from the m4 files accompanying Automake X.Y.
|
||||
# (This private macro should not be called outside this file.)
|
||||
AC_DEFUN([AM_AUTOMAKE_VERSION],
|
||||
[am__api_version='1.14'
|
||||
[am__api_version='1.15'
|
||||
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
|
||||
dnl require some minimum version. Point them to the right macro.
|
||||
m4_if([$1], [1.14], [],
|
||||
m4_if([$1], [1.15], [],
|
||||
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
|
||||
])
|
||||
|
||||
@ -129,14 +129,14 @@ m4_define([_AM_AUTOCONF_VERSION], [])
|
||||
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
|
||||
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
|
||||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
||||
[AM_AUTOMAKE_VERSION([1.14])dnl
|
||||
[AM_AUTOMAKE_VERSION([1.15])dnl
|
||||
m4_ifndef([AC_AUTOCONF_VERSION],
|
||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
||||
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
|
||||
|
||||
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -181,15 +181,14 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
|
||||
# configured tree to be moved without reconfiguration.
|
||||
|
||||
AC_DEFUN([AM_AUX_DIR_EXPAND],
|
||||
[dnl Rely on autoconf to set up CDPATH properly.
|
||||
AC_PREREQ([2.50])dnl
|
||||
# expand $ac_aux_dir to an absolute path
|
||||
am_aux_dir=`cd $ac_aux_dir && pwd`
|
||||
[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
|
||||
# Expand $ac_aux_dir to an absolute path.
|
||||
am_aux_dir=`cd "$ac_aux_dir" && pwd`
|
||||
])
|
||||
|
||||
# AM_CONDITIONAL -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1997-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1997-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -220,7 +219,7 @@ AC_CONFIG_COMMANDS_PRE(
|
||||
Usually this means the macro was only invoked conditionally.]])
|
||||
fi])])
|
||||
|
||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -411,7 +410,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
|
||||
|
||||
# Generate code to set up dependency tracking. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -487,7 +486,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
|
||||
# Do all the work for Automake. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -577,8 +576,8 @@ AC_REQUIRE([AC_PROG_MKDIR_P])dnl
|
||||
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
|
||||
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
|
||||
AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
|
||||
# We need awk for the "check" target. The system "awk" is bad on
|
||||
# some platforms.
|
||||
# We need awk for the "check" target (and possibly the TAP driver). The
|
||||
# system "awk" is bad on some platforms.
|
||||
AC_REQUIRE([AC_PROG_AWK])dnl
|
||||
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
||||
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
|
||||
@ -651,7 +650,11 @@ to "yes", and re-run configure.
|
||||
END
|
||||
AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
|
||||
fi
|
||||
fi])
|
||||
fi
|
||||
dnl The trailing newline in this macro's definition is deliberate, for
|
||||
dnl backward compatibility and to allow trailing 'dnl'-style comments
|
||||
dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
|
||||
])
|
||||
|
||||
dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
|
||||
dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
|
||||
@ -680,7 +683,7 @@ for _am_header in $config_headers :; do
|
||||
done
|
||||
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
|
||||
|
||||
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -691,7 +694,7 @@ echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_co
|
||||
# Define $install_sh.
|
||||
AC_DEFUN([AM_PROG_INSTALL_SH],
|
||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
if test x"${install_sh}" != xset; then
|
||||
if test x"${install_sh+set}" != xset; then
|
||||
case $am_aux_dir in
|
||||
*\ * | *\ *)
|
||||
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
|
||||
@ -701,7 +704,7 @@ if test x"${install_sh}" != xset; then
|
||||
fi
|
||||
AC_SUBST([install_sh])])
|
||||
|
||||
# Copyright (C) 2003-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2003-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -758,7 +761,7 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
|
||||
|
||||
# Check to see how 'make' treats includes. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -808,7 +811,7 @@ rm -f confinc confmf
|
||||
|
||||
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1997-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1997-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -847,7 +850,7 @@ fi
|
||||
|
||||
# Helper functions for option handling. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -876,7 +879,7 @@ AC_DEFUN([_AM_SET_OPTIONS],
|
||||
AC_DEFUN([_AM_IF_OPTION],
|
||||
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
|
||||
|
||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -923,7 +926,7 @@ AC_LANG_POP([C])])
|
||||
# For backward compatibility.
|
||||
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
|
||||
|
||||
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -942,7 +945,7 @@ AC_DEFUN([AM_RUN_LOG],
|
||||
|
||||
# Check to make sure that the build environment is sane. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -1023,7 +1026,7 @@ AC_CONFIG_COMMANDS_PRE(
|
||||
rm -f conftest.file
|
||||
])
|
||||
|
||||
# Copyright (C) 2009-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2009-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -1083,7 +1086,7 @@ AC_SUBST([AM_BACKSLASH])dnl
|
||||
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
|
||||
])
|
||||
|
||||
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -1111,7 +1114,7 @@ fi
|
||||
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
|
||||
AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
||||
|
||||
# Copyright (C) 2006-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2006-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -1130,7 +1133,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
|
||||
|
||||
# Check how to create a tarball. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2004-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2004-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
|
2
external/bsd/file/dist/compile
vendored
2
external/bsd/file/dist/compile
vendored
@ -3,7 +3,7 @@
|
||||
|
||||
scriptversion=2012-10-14.11; # UTC
|
||||
|
||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
||||
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
|
32
external/bsd/file/dist/config.guess
vendored
32
external/bsd/file/dist/config.guess
vendored
@ -1,8 +1,8 @@
|
||||
#! /bin/sh
|
||||
# Attempt to guess a canonical system name.
|
||||
# Copyright 1992-2017 Free Software Foundation, Inc.
|
||||
# Copyright 1992-2015 Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2017-01-01'
|
||||
timestamp='2015-03-04'
|
||||
|
||||
# This file is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
@ -27,7 +27,7 @@ timestamp='2017-01-01'
|
||||
# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
|
||||
#
|
||||
# You can get the latest version of this script from:
|
||||
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
|
||||
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
|
||||
#
|
||||
# Please send patches to <config-patches@gnu.org>.
|
||||
|
||||
@ -50,7 +50,7 @@ version="\
|
||||
GNU config.guess ($timestamp)
|
||||
|
||||
Originally written by Per Bothner.
|
||||
Copyright 1992-2017 Free Software Foundation, Inc.
|
||||
Copyright 1992-2015 Free Software Foundation, Inc.
|
||||
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||
@ -188,10 +188,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
# The Operating System including object format, if it has switched
|
||||
# to ELF recently (or will in the future) and ABI.
|
||||
case "${UNAME_MACHINE_ARCH}" in
|
||||
earm*)
|
||||
os=netbsdelf
|
||||
;;
|
||||
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
|
||||
arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax)
|
||||
eval $set_cc_for_build
|
||||
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||
| grep -q __ELF__
|
||||
@ -903,7 +900,7 @@ EOF
|
||||
exit ;;
|
||||
*:GNU/*:*:*)
|
||||
# other systems with GNU libc and userland
|
||||
echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
|
||||
echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
|
||||
exit ;;
|
||||
i*86:Minix:*:*)
|
||||
echo ${UNAME_MACHINE}-pc-minix
|
||||
@ -926,7 +923,7 @@ EOF
|
||||
EV68*) UNAME_MACHINE=alphaev68 ;;
|
||||
esac
|
||||
objdump --private-headers /bin/sh | grep -q ld.so.1
|
||||
if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
|
||||
if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
arc:Linux:*:* | arceb:Linux:*:*)
|
||||
@ -972,9 +969,6 @@ EOF
|
||||
ia64:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
k1om:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
m32r*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
@ -1000,9 +994,6 @@ EOF
|
||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
|
||||
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
|
||||
;;
|
||||
mips64el:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
openrisc*:Linux:*:*)
|
||||
echo or1k-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
@ -1035,9 +1026,6 @@ EOF
|
||||
ppcle:Linux:*:*)
|
||||
echo powerpcle-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
riscv32:Linux:*:* | riscv64:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
s390:Linux:*:* | s390x:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
|
||||
exit ;;
|
||||
@ -1057,7 +1045,7 @@ EOF
|
||||
echo ${UNAME_MACHINE}-dec-linux-${LIBC}
|
||||
exit ;;
|
||||
x86_64:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-pc-linux-${LIBC}
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
xtensa*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
@ -1301,9 +1289,9 @@ EOF
|
||||
UNAME_PROCESSOR=powerpc
|
||||
fi
|
||||
if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
|
||||
if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
|
||||
if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
|
||||
if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
|
||||
(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
|
||||
(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
|
||||
grep IS_64BIT_ARCH >/dev/null
|
||||
then
|
||||
case $UNAME_PROCESSOR in
|
||||
|
18
external/bsd/file/dist/config.h.in
vendored
18
external/bsd/file/dist/config.h.in
vendored
@ -32,6 +32,9 @@
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#undef HAVE_DLFCN_H
|
||||
|
||||
/* Define to 1 if you have the `dprintf' function. */
|
||||
#undef HAVE_DPRINTF
|
||||
|
||||
/* Define to 1 if you have the <err.h> header file. */
|
||||
#undef HAVE_ERR_H
|
||||
|
||||
@ -62,6 +65,9 @@
|
||||
/* Define to 1 if you have the `getpagesize' function. */
|
||||
#undef HAVE_GETPAGESIZE
|
||||
|
||||
/* Define to 1 if you have the `gmtime_r' function. */
|
||||
#undef HAVE_GMTIME_R
|
||||
|
||||
/* Define to 1 if the system has the type `intptr_t'. */
|
||||
#undef HAVE_INTPTR_T
|
||||
|
||||
@ -80,6 +86,9 @@
|
||||
/* Define to 1 if you have the <locale.h> header file. */
|
||||
#undef HAVE_LOCALE_H
|
||||
|
||||
/* Define to 1 if you have the `localtime_r' function. */
|
||||
#undef HAVE_LOCALTIME_R
|
||||
|
||||
/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
|
||||
#undef HAVE_MBRTOWC
|
||||
|
||||
@ -107,6 +116,12 @@
|
||||
/* Define to 1 if you have the `setlocale' function. */
|
||||
#undef HAVE_SETLOCALE
|
||||
|
||||
/* Define to 1 if you have the <signal.h> header file. */
|
||||
#undef HAVE_SIGNAL_H
|
||||
|
||||
/* Have sig_t type */
|
||||
#undef HAVE_SIG_T
|
||||
|
||||
/* Define to 1 if you have the <stddef.h> header file. */
|
||||
#undef HAVE_STDDEF_H
|
||||
|
||||
@ -313,6 +328,9 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Enable zlib compression support */
|
||||
#undef ZLIBSUPPORT
|
||||
|
||||
/* Enable large inode numbers on Mac OS X 10.5. */
|
||||
#ifndef _DARWIN_USE_64_BIT_INODE
|
||||
# define _DARWIN_USE_64_BIT_INODE 1
|
||||
|
20
external/bsd/file/dist/config.sub
vendored
20
external/bsd/file/dist/config.sub
vendored
@ -1,8 +1,8 @@
|
||||
#! /bin/sh
|
||||
# Configuration validation subroutine script.
|
||||
# Copyright 1992-2017 Free Software Foundation, Inc.
|
||||
# Copyright 1992-2015 Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2017-01-01'
|
||||
timestamp='2015-03-08'
|
||||
|
||||
# This file is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
@ -67,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
|
||||
version="\
|
||||
GNU config.sub ($timestamp)
|
||||
|
||||
Copyright 1992-2017 Free Software Foundation, Inc.
|
||||
Copyright 1992-2015 Free Software Foundation, Inc.
|
||||
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||
@ -117,7 +117,7 @@ case $maybe_os in
|
||||
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
|
||||
linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
|
||||
knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
|
||||
kopensolaris*-gnu* | cloudabi*-eabi* | \
|
||||
kopensolaris*-gnu* | \
|
||||
storm-chaos* | os2-emx* | rtmk-nova*)
|
||||
os=-$maybe_os
|
||||
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
|
||||
@ -254,7 +254,6 @@ case $basic_machine in
|
||||
| arc | arceb \
|
||||
| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
|
||||
| avr | avr32 \
|
||||
| ba \
|
||||
| be32 | be64 \
|
||||
| bfin \
|
||||
| c4x | c8051 | clipper \
|
||||
@ -522,7 +521,7 @@ case $basic_machine in
|
||||
basic_machine=i386-pc
|
||||
os=-aros
|
||||
;;
|
||||
asmjs)
|
||||
asmjs)
|
||||
basic_machine=asmjs-unknown
|
||||
;;
|
||||
aux)
|
||||
@ -1388,18 +1387,18 @@ case $os in
|
||||
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
|
||||
| -sym* | -kopensolaris* | -plan9* \
|
||||
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
|
||||
| -aos* | -aros* | -cloudabi* | -sortix* \
|
||||
| -aos* | -aros* | -cloudabi* \
|
||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
||||
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
|
||||
| -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
|
||||
| -bitrig* | -openbsd* | -solidbsd* \
|
||||
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
|
||||
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
||||
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||
| -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
|
||||
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||
| -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
|
||||
| -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
|
||||
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
|
||||
| -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
|
||||
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
||||
@ -1408,8 +1407,7 @@ case $os in
|
||||
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
|
||||
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
||||
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
|
||||
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
|
||||
| -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*)
|
||||
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
|
||||
# Remember, each alternative MUST END IN *, to match a version number.
|
||||
;;
|
||||
-qnx*)
|
||||
|
136
external/bsd/file/dist/configure
vendored
136
external/bsd/file/dist/configure
vendored
@ -1,6 +1,6 @@
|
||||
#! /bin/sh
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.69 for file 5.22.
|
||||
# Generated by GNU Autoconf 2.69 for file 5.30.
|
||||
#
|
||||
# Report bugs to <christos@astron.com>.
|
||||
#
|
||||
@ -590,8 +590,8 @@ MAKEFLAGS=
|
||||
# Identity of this package.
|
||||
PACKAGE_NAME='file'
|
||||
PACKAGE_TARNAME='file'
|
||||
PACKAGE_VERSION='5.22'
|
||||
PACKAGE_STRING='file 5.22'
|
||||
PACKAGE_VERSION='5.30'
|
||||
PACKAGE_STRING='file 5.30'
|
||||
PACKAGE_BUGREPORT='christos@astron.com'
|
||||
PACKAGE_URL=''
|
||||
|
||||
@ -770,6 +770,7 @@ enable_silent_rules
|
||||
enable_maintainer_mode
|
||||
enable_elf
|
||||
enable_elf_core
|
||||
enable_zlib
|
||||
enable_fsect_man5
|
||||
enable_dependency_tracking
|
||||
enable_static
|
||||
@ -1331,7 +1332,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.22 to adapt to many kinds of systems.
|
||||
\`configure' configures file 5.30 to adapt to many kinds of systems.
|
||||
|
||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||
|
||||
@ -1401,7 +1402,7 @@ fi
|
||||
|
||||
if test -n "$ac_init_help"; then
|
||||
case $ac_init_help in
|
||||
short | recursive ) echo "Configuration of file 5.22:";;
|
||||
short | recursive ) echo "Configuration of file 5.30:";;
|
||||
esac
|
||||
cat <<\_ACEOF
|
||||
|
||||
@ -1416,6 +1417,7 @@ Optional Features:
|
||||
sometimes confusing) to the casual installer
|
||||
--disable-elf disable builtin ELF support
|
||||
--disable-elf-core disable ELF core file support
|
||||
--disable-zlib disable zlib compression support [default=auto]
|
||||
--enable-fsect-man5 enable file formats in man section 5
|
||||
--enable-dependency-tracking
|
||||
do not reject slow dependency extractors
|
||||
@ -1514,7 +1516,7 @@ fi
|
||||
test -n "$ac_init_help" && exit $ac_status
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
file configure 5.22
|
||||
file configure 5.30
|
||||
generated by GNU Autoconf 2.69
|
||||
|
||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||
@ -2170,7 +2172,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.22, which was
|
||||
It was created by file $as_me 5.30, which was
|
||||
generated by GNU Autoconf 2.69. Invocation command line was
|
||||
|
||||
$ $0 $@
|
||||
@ -2521,7 +2523,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
|
||||
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
|
||||
am__api_version='1.14'
|
||||
am__api_version='1.15'
|
||||
|
||||
ac_aux_dir=
|
||||
for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
|
||||
@ -2722,8 +2724,8 @@ test "$program_suffix" != NONE &&
|
||||
ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
|
||||
program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
|
||||
|
||||
# expand $ac_aux_dir to an absolute path
|
||||
am_aux_dir=`cd $ac_aux_dir && pwd`
|
||||
# Expand $ac_aux_dir to an absolute path.
|
||||
am_aux_dir=`cd "$ac_aux_dir" && pwd`
|
||||
|
||||
if test x"${MISSING+set}" != xset; then
|
||||
case $am_aux_dir in
|
||||
@ -2742,7 +2744,7 @@ else
|
||||
$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
|
||||
fi
|
||||
|
||||
if test x"${install_sh}" != xset; then
|
||||
if test x"${install_sh+set}" != xset; then
|
||||
case $am_aux_dir in
|
||||
*\ * | *\ *)
|
||||
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
|
||||
@ -3036,7 +3038,7 @@ fi
|
||||
|
||||
# Define the identity of the package.
|
||||
PACKAGE='file'
|
||||
VERSION='5.22'
|
||||
VERSION='5.30'
|
||||
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
@ -3070,8 +3072,8 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
|
||||
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
|
||||
mkdir_p='$(MKDIR_P)'
|
||||
|
||||
# We need awk for the "check" target. The system "awk" is bad on
|
||||
# some platforms.
|
||||
# We need awk for the "check" target (and possibly the TAP driver). The
|
||||
# system "awk" is bad on some platforms.
|
||||
# Always define AMTAR for backward compatibility. Yes, it's still used
|
||||
# in the wild :-( We should find a proper way to deprecate it ...
|
||||
AMTAR='$${TAR-tar}'
|
||||
@ -3129,28 +3131,6 @@ END
|
||||
fi
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
|
||||
$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
|
||||
# Check whether --enable-maintainer-mode was given.
|
||||
if test "${enable_maintainer_mode+set}" = set; then :
|
||||
enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
|
||||
else
|
||||
USE_MAINTAINER_MODE=no
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
|
||||
$as_echo "$USE_MAINTAINER_MODE" >&6; }
|
||||
if test $USE_MAINTAINER_MODE = yes; then
|
||||
MAINTAINER_MODE_TRUE=
|
||||
MAINTAINER_MODE_FALSE='#'
|
||||
else
|
||||
MAINTAINER_MODE_TRUE='#'
|
||||
MAINTAINER_MODE_FALSE=
|
||||
fi
|
||||
|
||||
MAINT=$MAINTAINER_MODE_TRUE
|
||||
|
||||
|
||||
# Check whether --enable-silent-rules was given.
|
||||
if test "${enable_silent_rules+set}" = set; then :
|
||||
enableval=$enable_silent_rules;
|
||||
@ -3247,6 +3227,16 @@ $as_echo "#define ELFCORE 1" >>confdefs.h
|
||||
fi
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for zlib support" >&5
|
||||
$as_echo_n "checking for zlib support... " >&6; }
|
||||
# Check whether --enable-zlib was given.
|
||||
if test "${enable_zlib+set}" = set; then :
|
||||
enableval=$enable_zlib;
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_zlib" >&5
|
||||
$as_echo "$enable_zlib" >&6; }
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for file formats in man section 5" >&5
|
||||
$as_echo_n "checking for file formats in man section 5... " >&6; }
|
||||
# Check whether --enable-fsect-man5 was given.
|
||||
@ -12815,7 +12805,7 @@ fi
|
||||
|
||||
done
|
||||
|
||||
for ac_header in getopt.h err.h xlocale.h
|
||||
for ac_header in getopt.h err.h xlocale.h signal.h
|
||||
do :
|
||||
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
|
||||
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
|
||||
@ -12841,7 +12831,8 @@ fi
|
||||
|
||||
done
|
||||
|
||||
for ac_header in zlib.h
|
||||
if test "$enable_zlib" != "no"; then
|
||||
for ac_header in zlib.h
|
||||
do :
|
||||
ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
|
||||
if test "x$ac_cv_header_zlib_h" = xyes; then :
|
||||
@ -12853,6 +12844,18 @@ fi
|
||||
|
||||
done
|
||||
|
||||
fi
|
||||
ac_fn_c_check_type "$LINENO" "sig_t" "ac_cv_type_sig_t" "
|
||||
#ifdef HAVE_SIGNAL_H
|
||||
#include <signal.h>
|
||||
#endif
|
||||
"
|
||||
if test "x$ac_cv_type_sig_t" = xyes; then :
|
||||
|
||||
$as_echo "#define HAVE_SIG_T 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
|
||||
$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
|
||||
@ -14338,6 +14341,32 @@ esac
|
||||
|
||||
fi
|
||||
|
||||
ac_fn_c_check_func "$LINENO" "localtime_r" "ac_cv_func_localtime_r"
|
||||
if test "x$ac_cv_func_localtime_r" = xyes; then :
|
||||
$as_echo "#define HAVE_LOCALTIME_R 1" >>confdefs.h
|
||||
|
||||
else
|
||||
case " $LIBOBJS " in
|
||||
*" localtime_r.$ac_objext "* ) ;;
|
||||
*) LIBOBJS="$LIBOBJS localtime_r.$ac_objext"
|
||||
;;
|
||||
esac
|
||||
|
||||
fi
|
||||
|
||||
ac_fn_c_check_func "$LINENO" "gmtime_r" "ac_cv_func_gmtime_r"
|
||||
if test "x$ac_cv_func_gmtime_r" = xyes; then :
|
||||
$as_echo "#define HAVE_GMTIME_R 1" >>confdefs.h
|
||||
|
||||
else
|
||||
case " $LIBOBJS " in
|
||||
*" gmtime_r.$ac_objext "* ) ;;
|
||||
*) LIBOBJS="$LIBOBJS gmtime_r.$ac_objext"
|
||||
;;
|
||||
esac
|
||||
|
||||
fi
|
||||
|
||||
ac_fn_c_check_func "$LINENO" "pread" "ac_cv_func_pread"
|
||||
if test "x$ac_cv_func_pread" = xyes; then :
|
||||
$as_echo "#define HAVE_PREAD 1" >>confdefs.h
|
||||
@ -14377,9 +14406,23 @@ esac
|
||||
|
||||
fi
|
||||
|
||||
ac_fn_c_check_func "$LINENO" "dprintf" "ac_cv_func_dprintf"
|
||||
if test "x$ac_cv_func_dprintf" = xyes; then :
|
||||
$as_echo "#define HAVE_DPRINTF 1" >>confdefs.h
|
||||
|
||||
else
|
||||
case " $LIBOBJS " in
|
||||
*" dprintf.$ac_objext "* ) ;;
|
||||
*) LIBOBJS="$LIBOBJS dprintf.$ac_objext"
|
||||
;;
|
||||
esac
|
||||
|
||||
fi
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gzopen in -lz" >&5
|
||||
|
||||
if test "$enable_zlib" != "no"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gzopen in -lz" >&5
|
||||
$as_echo_n "checking for gzopen in -lz... " >&6; }
|
||||
if ${ac_cv_lib_z_gzopen+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
@ -14424,6 +14467,7 @@ _ACEOF
|
||||
|
||||
fi
|
||||
|
||||
fi
|
||||
if test "$MINGW" = 1; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for regexec in -lgnurx" >&5
|
||||
$as_echo_n "checking for regexec in -lgnurx... " >&6; }
|
||||
@ -14483,6 +14527,16 @@ else
|
||||
fi
|
||||
|
||||
|
||||
if test "$enable_zlib" = "yes"; then
|
||||
if test "$ac_cv_header_zlib_h$ac_cv_lib_z_gzopen" != "yesyes"; then
|
||||
as_fn_error $? "zlib support requested but not found" "$LINENO" 5
|
||||
fi
|
||||
elif test "$ac_cv_header_zlib_h$ac_cv_lib_z_gzopen" = "yesyes"; then
|
||||
|
||||
$as_echo "#define ZLIBSUPPORT 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
ac_config_files="$ac_config_files Makefile src/Makefile magic/Makefile tests/Makefile doc/Makefile python/Makefile"
|
||||
|
||||
cat >confcache <<\_ACEOF
|
||||
@ -15032,7 +15086,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.22, which was
|
||||
This file was extended by file $as_me 5.30, which was
|
||||
generated by GNU Autoconf 2.69. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
@ -15098,7 +15152,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.22
|
||||
file config.status 5.30
|
||||
configured by $0, generated by GNU Autoconf 2.69,
|
||||
with options \\"\$ac_cs_config\\"
|
||||
|
||||
|
32
external/bsd/file/dist/configure.ac
vendored
32
external/bsd/file/dist/configure.ac
vendored
@ -1,5 +1,5 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_INIT([file],[5.22],[christos@astron.com])
|
||||
AC_INIT([file],[5.30],[christos@astron.com])
|
||||
AM_INIT_AUTOMAKE([subdir-objects foreign])
|
||||
AM_MAINTAINER_MODE(disable)
|
||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||
@ -35,6 +35,11 @@ fi], [
|
||||
AC_DEFINE([ELFCORE], 1, [Define for ELF core file support])
|
||||
])
|
||||
|
||||
AC_MSG_CHECKING(for zlib support)
|
||||
AC_ARG_ENABLE(zlib,
|
||||
[AS_HELP_STRING([--disable-zlib], [disable zlib compression support @<:@default=auto@:>@])])
|
||||
AC_MSG_RESULT($enable_zlib)
|
||||
|
||||
AC_MSG_CHECKING(for file formats in man section 5)
|
||||
AC_ARG_ENABLE(fsect-man5,
|
||||
[ --enable-fsect-man5 enable file formats in man section 5],
|
||||
@ -83,9 +88,15 @@ AC_HEADER_MAJOR
|
||||
AC_HEADER_SYS_WAIT
|
||||
AC_CHECK_HEADERS(stdint.h fcntl.h locale.h stdint.h inttypes.h unistd.h)
|
||||
AC_CHECK_HEADERS(stddef.h utime.h wchar.h wctype.h limits.h)
|
||||
AC_CHECK_HEADERS(getopt.h err.h xlocale.h)
|
||||
AC_CHECK_HEADERS(getopt.h err.h xlocale.h signal.h)
|
||||
AC_CHECK_HEADERS(sys/mman.h sys/stat.h sys/types.h sys/utime.h sys/time.h)
|
||||
AC_CHECK_HEADERS(zlib.h)
|
||||
if test "$enable_zlib" != "no"; then
|
||||
AC_CHECK_HEADERS(zlib.h)
|
||||
fi
|
||||
AC_CHECK_TYPE([sig_t],[AC_DEFINE([HAVE_SIG_T],1,[Have sig_t type])],,[
|
||||
#ifdef HAVE_SIGNAL_H
|
||||
#include <signal.h>
|
||||
#endif])
|
||||
|
||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_C_CONST
|
||||
@ -142,10 +153,12 @@ dnl Checks for functions
|
||||
AC_CHECK_FUNCS(strerror strndup strtoul mkstemp mkostemp utimes utime wcwidth strtof newlocale uselocale freelocale setlocale)
|
||||
|
||||
dnl Provide implementation of some required functions if necessary
|
||||
AC_REPLACE_FUNCS(getopt_long asprintf vasprintf strlcpy strlcat getline ctime_r asctime_r pread strcasestr fmtcheck)
|
||||
AC_REPLACE_FUNCS(getopt_long asprintf vasprintf strlcpy strlcat getline ctime_r asctime_r localtime_r gmtime_r pread strcasestr fmtcheck dprintf)
|
||||
|
||||
dnl Checks for libraries
|
||||
AC_CHECK_LIB(z,gzopen)
|
||||
if test "$enable_zlib" != "no"; then
|
||||
AC_CHECK_LIB(z, gzopen)
|
||||
fi
|
||||
if test "$MINGW" = 1; then
|
||||
AC_CHECK_LIB(gnurx,regexec,,AC_MSG_ERROR([libgnurx is required to build file(1) with MinGW]))
|
||||
fi
|
||||
@ -153,5 +166,14 @@ fi
|
||||
dnl See if we are cross-compiling
|
||||
AM_CONDITIONAL(IS_CROSS_COMPILE, test "$cross_compiling" = yes)
|
||||
|
||||
dnl Final sanity checks
|
||||
if test "$enable_zlib" = "yes"; then
|
||||
if test "$ac_cv_header_zlib_h$ac_cv_lib_z_gzopen" != "yesyes"; then
|
||||
AC_MSG_ERROR([zlib support requested but not found])
|
||||
fi
|
||||
elif test "$ac_cv_header_zlib_h$ac_cv_lib_z_gzopen" = "yesyes"; then
|
||||
AC_DEFINE([ZLIBSUPPORT], 1, [Enable zlib compression support])
|
||||
fi
|
||||
|
||||
AC_CONFIG_FILES([Makefile src/Makefile magic/Makefile tests/Makefile doc/Makefile python/Makefile])
|
||||
AC_OUTPUT
|
||||
|
2
external/bsd/file/dist/depcomp
vendored
2
external/bsd/file/dist/depcomp
vendored
@ -3,7 +3,7 @@
|
||||
|
||||
scriptversion=2013-05-30.07; # UTC
|
||||
|
||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
22
external/bsd/file/dist/doc/Makefile.in
vendored
22
external/bsd/file/dist/doc/Makefile.in
vendored
@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.14 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -14,7 +14,17 @@
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
@ -77,7 +87,6 @@ POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = doc
|
||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
@ -85,6 +94,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
@ -109,6 +119,7 @@ am__can_run_installinfo = \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
pkgdatadir = @pkgdatadir@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
@ -246,7 +257,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign doc/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
@ -421,6 +431,8 @@ uninstall-am:
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags-am uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
#MAGIC = $(pkgdatadir)/magic
|
||||
#man_MAGIC = magic.5
|
||||
|
61
external/bsd/file/dist/doc/file.1
vendored
61
external/bsd/file/dist/doc/file.1
vendored
@ -1,7 +1,7 @@
|
||||
.\" $NetBSD: file.1,v 1.17 2017/01/03 11:34:41 abhinav Exp $
|
||||
.\" $NetBSD: file.1,v 1.18 2017/02/10 17:53:24 christos Exp $
|
||||
.\"
|
||||
.\" $File: file.man,v 1.111 2014/12/16 23:18:40 christos Exp $
|
||||
.Dd December 16, 2014
|
||||
.\" $File: file.man,v 1.125 2017/01/03 11:24:46 christos Exp $
|
||||
.Dd October 19, 2016
|
||||
.Dt FILE 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -10,8 +10,9 @@
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Bk -words
|
||||
.Op Fl bcEhiklLNnprsvz0
|
||||
.Op Fl bcdEhiklLNnprsvzZ0
|
||||
.Op Fl Fl apple
|
||||
.Op Fl Fl extension
|
||||
.Op Fl Fl mime-encoding
|
||||
.Op Fl Fl mime-type
|
||||
.Op Fl e Ar testname
|
||||
@ -27,7 +28,7 @@
|
||||
.Nm
|
||||
.Op Fl Fl help
|
||||
.Sh DESCRIPTION
|
||||
This manual page documents version 5.22 of the
|
||||
This manual page documents version 5.30 of the
|
||||
.Nm
|
||||
command.
|
||||
.Pp
|
||||
@ -182,6 +183,8 @@ 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 d
|
||||
Prints internal debugging information to stderr.
|
||||
.It Fl E
|
||||
On filesystem errors (file not found etc), instead of handling the error
|
||||
as regular output as POSIX mandates and keep going, issue an error message
|
||||
@ -209,12 +212,18 @@ Prints details of Compound Document Files.
|
||||
.It compress
|
||||
Checks for, and looks inside, compressed files.
|
||||
.It elf
|
||||
Prints ELF file details.
|
||||
Prints ELF file details, provided soft magic tests are enabled and the
|
||||
elf magic is found.
|
||||
.It soft
|
||||
Consults magic files.
|
||||
.It tar
|
||||
Examines tar files.
|
||||
.It text
|
||||
A synonym for
|
||||
.Sq ascii .
|
||||
.El
|
||||
.It Fl Fl extension
|
||||
Print a slash-separated list of valid extensions for the file type found.
|
||||
.It Fl F , Fl Fl separator Ar separator
|
||||
Use the specified string as the separator between the filename and the
|
||||
file result returned.
|
||||
@ -308,13 +317,15 @@ attempt to preserve the access time of files analyzed, to pretend that
|
||||
never read them.
|
||||
.It Fl P , Fl Fl parameter Ar name=value
|
||||
Set various parameter limits.
|
||||
.Bl -column "elf_phnum" "Default" "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -offset indent
|
||||
.Bl -column "elf_phnum" "Default" "XXXXXXXXXXXXXXXXXXXXXXXXXXX" -offset indent
|
||||
.It Sy "Name" Ta Sy "Default" Ta Sy "Explanation"
|
||||
.It Li indir Ta 15 Ta recursion limit for indirect magic
|
||||
.It Li name Ta 30 Ta use count limit for name/use magic
|
||||
.It Li elf_notes Ta 256 Ta max ELF notes processed
|
||||
.It Li elf_phnum Ta 128 Ta max ELF program sections processed
|
||||
.It Li elf_shnum Ta 32768 Ta max ELF sections processed
|
||||
.It Li regex Ta 8192 Ta length limit for regex searches
|
||||
.It Li bytes Ta 1048576 Ta max number of bytes to read from file
|
||||
.El
|
||||
.It Fl r , Fl Fl raw
|
||||
Don't translate unprintable characters to \eooo.
|
||||
@ -345,6 +356,9 @@ since on some systems it reports a zero size for raw disk partitions.
|
||||
Print the version of the program and exit.
|
||||
.It Fl z , Fl Fl uncompress
|
||||
Try to look inside compressed files.
|
||||
.It Fl Z , Fl Fl uncompress-noreport
|
||||
Try to look inside compressed files, but report information about the contents
|
||||
only not the compression.
|
||||
.It Fl 0 , Fl Fl print0
|
||||
Output a null character
|
||||
.Sq \e0
|
||||
@ -353,6 +367,11 @@ Nice to
|
||||
.Xr cut 1
|
||||
the output.
|
||||
This does not affect the separator, which is still printed.
|
||||
.Pp
|
||||
If this option is repeated more than once, then
|
||||
.Nm
|
||||
prints just the filename followed by a NUL followed by the description
|
||||
(or ERROR: text) followed by a second NUL for each entry.
|
||||
.It Fl -help
|
||||
Print a help message and exit.
|
||||
.El
|
||||
@ -513,7 +532,7 @@ John Gilmore revised the code extensively, making it better than
|
||||
the first version.
|
||||
Geoff Collyer found several inadequacies
|
||||
and provided some magic file entries.
|
||||
Contribution of the
|
||||
Contributions of the
|
||||
.Sq \*[Am]
|
||||
operator by Rob McMahon,
|
||||
.Aq cudcv@warwick.ac.uk ,
|
||||
@ -585,20 +604,30 @@ last-pushed (most specific, one hopes) value at the end, or
|
||||
use a default if the list is empty.
|
||||
This should not slow down evaluation.
|
||||
.Pp
|
||||
The handling of
|
||||
.Dv MAGIC_CONTINUE
|
||||
and printing \e012- between entries is clumsy and complicated; refactor
|
||||
and centralize.
|
||||
.Pp
|
||||
Some of the encoding logic is hard-coded in encoding.c and can be moved
|
||||
to the magic files if we had a !:charset annotation
|
||||
.Pp
|
||||
Continue to squash all magic bugs.
|
||||
See Debian BTS for a good source.
|
||||
.Pp
|
||||
Store arbitrarily long strings, for example for %s patterns, so that
|
||||
they can be printed out.
|
||||
Fixes Debian bug #271672.
|
||||
Would require more complex store/load code in apprentice.
|
||||
This can be done by allocating strings in a string pool, storing the
|
||||
string pool at the end of the magic file and converting all the string
|
||||
pointers to relative offsets from the string pool.
|
||||
.Pp
|
||||
Add syntax for relative offsets after current level (Debian bug #466037).
|
||||
.Pp
|
||||
Make file -ki work, i.e. give multiple MIME types.
|
||||
.Pp
|
||||
Add a zip library so we can peek inside Office2007 documents to
|
||||
figure out what they are.
|
||||
print more details about their contents.
|
||||
.Pp
|
||||
Add an option to print URLs for the sources of the file descriptions.
|
||||
.Pp
|
||||
@ -608,6 +637,9 @@ string to be looked up in a table).
|
||||
This would avoid adding the same magic repeatedly for each new
|
||||
hash-bang interpreter.
|
||||
.Pp
|
||||
When a file descriptor is available, we can skip and adjust the buffer
|
||||
instead of the hacky buffer management we do now.
|
||||
.Pp
|
||||
Fix
|
||||
.Dq name
|
||||
and
|
||||
@ -625,6 +657,15 @@ Make
|
||||
more efficient by keeping a sorted list of names.
|
||||
Special-case ^ to flip endianness in the parser so that it does not
|
||||
have to be escaped, and document it.
|
||||
.Pp
|
||||
If the offsets specified internally in the file exceed the buffer size
|
||||
(
|
||||
.Dv HOWMANY
|
||||
variable in file.h), then we don't seek to that offset, but we give up.
|
||||
It would be better if buffer managements was done when the file descriptor
|
||||
is available so move around the file.
|
||||
One must be careful though because this has performance (and thus security
|
||||
considerations).
|
||||
.Sh AVAILABILITY
|
||||
You can obtain the original author's latest version by anonymous FTP
|
||||
on
|
||||
|
18
external/bsd/file/dist/doc/libmagic.3
vendored
18
external/bsd/file/dist/doc/libmagic.3
vendored
@ -1,6 +1,6 @@
|
||||
.\" $NetBSD: libmagic.3,v 1.14 2015/01/02 21:15:32 christos Exp $
|
||||
.\" $NetBSD: libmagic.3,v 1.15 2017/02/10 17:53:24 christos Exp $
|
||||
.\"
|
||||
.\" $File: libmagic.man,v 1.34 2014/12/16 23:18:40 christos Exp $
|
||||
.\" $File: libmagic.man,v 1.40 2016/03/31 17:51:12 christos Exp $
|
||||
.\"
|
||||
.\" Copyright (c) Christos Zoulas 2003.
|
||||
.\" All Rights Reserved.
|
||||
@ -27,7 +27,7 @@
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.Dd December 16, 2014
|
||||
.Dd September 11, 2015
|
||||
.Dt LIBMAGIC 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -134,6 +134,10 @@ Treat operating system errors while trying to open files and follow symlinks
|
||||
as real errors, instead of printing them in the magic buffer.
|
||||
.It Dv MAGIC_APPLE
|
||||
Return the Apple creator and type.
|
||||
.It Dv MAGIC_EXTENSION
|
||||
Return a slash-separated list of extensions for this file type.
|
||||
.It Dv MAGIC_COMPRESS_TRANSP
|
||||
Don't report on compression, only report about the uncompressed data.
|
||||
.It Dv MAGIC_NO_CHECK_APPTYPE
|
||||
Don't check for
|
||||
.Dv EMX
|
||||
@ -223,7 +227,7 @@ It returns 0 on success and \-1 on failure.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_compile
|
||||
function can be used to compile the the colon
|
||||
function can be used to compile the colon
|
||||
separated list of database files passed in as
|
||||
.Ar filename ,
|
||||
or
|
||||
@ -249,7 +253,7 @@ for the default database.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_load
|
||||
function must be used to load the the colon
|
||||
function must be used to load the colon
|
||||
separated list of database files passed in as
|
||||
.Ar filename ,
|
||||
or
|
||||
@ -281,7 +285,7 @@ The
|
||||
.Fn magic_getparam
|
||||
and
|
||||
.Fn magic_setparam
|
||||
allow getting and setting various limits related to the the magic
|
||||
allow getting and setting various limits related to the magic
|
||||
library.
|
||||
.Bl -column "MAGIC_PARAM_ELF_PHNUM_MAX" "size_t" "Default" -offset indent
|
||||
.It Sy "Parameter" Ta Sy "Type" Ta Sy "Default"
|
||||
@ -290,6 +294,8 @@ library.
|
||||
.It Li MAGIC_PARAM_ELF_NOTES_MAX Ta size_t Ta 256
|
||||
.It Li MAGIC_PARAM_ELF_PHNUM_MAX Ta size_t Ta 128
|
||||
.It Li MAGIC_PARAM_ELF_SHNUM_MAX Ta size_t Ta 32768
|
||||
.It Li MAGIC_PARAM_REGEX_MAX Ta size_t Ta 8192
|
||||
.It Li MAGIC_PARAM_BYTES_MAX Ta size_t Ta 1048576
|
||||
.El
|
||||
.Pp
|
||||
The
|
||||
|
41
external/bsd/file/dist/doc/magic.5
vendored
41
external/bsd/file/dist/doc/magic.5
vendored
@ -1,7 +1,7 @@
|
||||
.\" $NetBSD: magic.5,v 1.14 2015/01/02 21:15:32 christos Exp $
|
||||
.\" $NetBSD: magic.5,v 1.15 2017/02/10 17:53:24 christos Exp $
|
||||
.\"
|
||||
.\" $File: magic.man,v 1.85 2015/01/01 17:07:34 christos Exp $
|
||||
.Dd January 1, 2015
|
||||
.\" $File: magic.man,v 1.90 2017/02/08 21:52:03 christos Exp $
|
||||
.Dd February 8, 2017
|
||||
.Dt MAGIC 5
|
||||
.Os
|
||||
.\" install as magic.4 on USG, magic.5 on V7, Berkeley and Linux systems.
|
||||
@ -9,23 +9,29 @@
|
||||
.Nm magic
|
||||
.Nd file command's magic pattern file
|
||||
.Sh DESCRIPTION
|
||||
This manual page documents the format of the magic file as
|
||||
This manual page documents the format of magic files as
|
||||
used by the
|
||||
.Xr file 1
|
||||
command, version 5.22.
|
||||
command, version 5.30.
|
||||
The
|
||||
.Xr file 1
|
||||
command identifies the type of a file using,
|
||||
among other tests,
|
||||
a test for whether the file contains certain
|
||||
.Dq "magic patterns" .
|
||||
The file
|
||||
.Pa /usr/share/misc/magic
|
||||
specifies what patterns are to be tested for, what message or
|
||||
The database of these
|
||||
.Dq "magic patterns"
|
||||
is usually located in a binary file in
|
||||
.Pa /usr/share/misc/magic.mgc
|
||||
or a directory of source text magic pattern fragment files in
|
||||
.Pa /usr/share/misc/magic .
|
||||
The database specifies what patterns are to be tested for, what message or
|
||||
MIME type to print if a particular pattern is found,
|
||||
and additional information to extract from the file.
|
||||
.Pp
|
||||
Each line of the file specifies a test to be performed.
|
||||
The format of the source fragment files that are used to build this database
|
||||
is as follows:
|
||||
Each line of a fragment file specifies a test to be performed.
|
||||
A test compares the data starting at a particular offset
|
||||
in the file with a byte value, a string or a numeric value.
|
||||
If the test succeeds, a message is printed.
|
||||
@ -202,7 +208,7 @@ 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
|
||||
The offset of the
|
||||
.Dv indirect
|
||||
magic is by default absolute in the file, but one can specify
|
||||
.Dv /r
|
||||
@ -537,13 +543,18 @@ the file.
|
||||
The value at that offset is read, and is used again as an offset
|
||||
in the file.
|
||||
Indirect offsets are of the form:
|
||||
.Em (( x [.[bislBISL]][+\-][ y ]) .
|
||||
.Em (( x [[.,][bislBISL]][+\-][ y ]) .
|
||||
The value of
|
||||
.Em x
|
||||
is used as an offset in the file.
|
||||
A byte, id3 length, short or long is read at that offset depending on the
|
||||
.Em [bislBISLm]
|
||||
type specifier.
|
||||
The value is treated as signed if
|
||||
.Dq ,
|
||||
is specified or unsigned if
|
||||
.Dq .
|
||||
is specified.
|
||||
The capitalized types interpret the number as a big endian
|
||||
value, whereas the small letter versions interpret the number as a little
|
||||
endian value;
|
||||
@ -566,9 +577,9 @@ That way variable length structures can be examined:
|
||||
\*[Gt]\*[Gt](0x3c.l) string LX\e0\e0 LX executable (OS/2)
|
||||
.Ed
|
||||
.Pp
|
||||
This strategy of examining has a drawback: You must make sure that
|
||||
you eventually print something, or users may get empty output (like, when
|
||||
there is neither PE\e0\e0 nor LE\e0\e0 in the above example)
|
||||
This strategy of examining has a drawback: you must make sure that you
|
||||
eventually print something, or users may get empty output (such as when
|
||||
there is neither PE\e0\e0 nor LE\e0\e0 in the above example).
|
||||
.Pp
|
||||
If this indirect offset cannot be used directly, simple calculations are
|
||||
possible: appending
|
||||
@ -648,7 +659,7 @@ start of the main indirect offset.
|
||||
\*[Gt]\*[Gt]\*[Gt]\*[Gt](\*[Am]0xe.l+(-4)) string PK\e3\e4 \eb, ZIP self-extracting archive
|
||||
.Ed
|
||||
.Pp
|
||||
If you have a list of known avalues at a particular continuation level,
|
||||
If you have a list of known values at a particular continuation level,
|
||||
and you want to provide a switch-like default case:
|
||||
.Bd -literal -offset indent
|
||||
# clear that continuation level match
|
||||
|
25
external/bsd/file/dist/magic/Makefile.am
vendored
25
external/bsd/file/dist/magic/Makefile.am
vendored
@ -1,5 +1,5 @@
|
||||
#
|
||||
# $File: Makefile.am,v 1.101 2014/12/12 16:48:39 christos Exp $
|
||||
# $File: Makefile.am,v 1.122 2016/11/09 18:20:53 christos Exp $
|
||||
#
|
||||
MAGIC_FRAGMENT_BASE = magdir
|
||||
MAGIC_DIR = $(top_srcdir)/magic
|
||||
@ -13,6 +13,7 @@ $(MAGIC_DIR)/Localstuff \
|
||||
$(MAGIC_FRAGMENT_DIR)/acorn \
|
||||
$(MAGIC_FRAGMENT_DIR)/adi \
|
||||
$(MAGIC_FRAGMENT_DIR)/adventure \
|
||||
$(MAGIC_FRAGMENT_DIR)/algol68 \
|
||||
$(MAGIC_FRAGMENT_DIR)/allegro \
|
||||
$(MAGIC_FRAGMENT_DIR)/alliant \
|
||||
$(MAGIC_FRAGMENT_DIR)/amanda \
|
||||
@ -22,14 +23,18 @@ $(MAGIC_FRAGMENT_DIR)/animation \
|
||||
$(MAGIC_FRAGMENT_DIR)/aout \
|
||||
$(MAGIC_FRAGMENT_DIR)/apl \
|
||||
$(MAGIC_FRAGMENT_DIR)/apple \
|
||||
$(MAGIC_FRAGMENT_DIR)/application \
|
||||
$(MAGIC_FRAGMENT_DIR)/applix \
|
||||
$(MAGIC_FRAGMENT_DIR)/apt \
|
||||
$(MAGIC_FRAGMENT_DIR)/archive \
|
||||
$(MAGIC_FRAGMENT_DIR)/assembler \
|
||||
$(MAGIC_FRAGMENT_DIR)/asterix \
|
||||
$(MAGIC_FRAGMENT_DIR)/att3b \
|
||||
$(MAGIC_FRAGMENT_DIR)/audio \
|
||||
$(MAGIC_FRAGMENT_DIR)/basis \
|
||||
$(MAGIC_FRAGMENT_DIR)/ber \
|
||||
$(MAGIC_FRAGMENT_DIR)/bflt \
|
||||
$(MAGIC_FRAGMENT_DIR)/bioinformatics \
|
||||
$(MAGIC_FRAGMENT_DIR)/blackberry \
|
||||
$(MAGIC_FRAGMENT_DIR)/blcr \
|
||||
$(MAGIC_FRAGMENT_DIR)/blender \
|
||||
@ -42,6 +47,7 @@ $(MAGIC_FRAGMENT_DIR)/c-lang \
|
||||
$(MAGIC_FRAGMENT_DIR)/c64 \
|
||||
$(MAGIC_FRAGMENT_DIR)/cad \
|
||||
$(MAGIC_FRAGMENT_DIR)/cafebabe \
|
||||
$(MAGIC_FRAGMENT_DIR)/cbor \
|
||||
$(MAGIC_FRAGMENT_DIR)/cddb \
|
||||
$(MAGIC_FRAGMENT_DIR)/chord \
|
||||
$(MAGIC_FRAGMENT_DIR)/cisco \
|
||||
@ -49,11 +55,13 @@ $(MAGIC_FRAGMENT_DIR)/citrus \
|
||||
$(MAGIC_FRAGMENT_DIR)/clarion \
|
||||
$(MAGIC_FRAGMENT_DIR)/claris \
|
||||
$(MAGIC_FRAGMENT_DIR)/clipper \
|
||||
$(MAGIC_FRAGMENT_DIR)/coff \
|
||||
$(MAGIC_FRAGMENT_DIR)/commands \
|
||||
$(MAGIC_FRAGMENT_DIR)/communications \
|
||||
$(MAGIC_FRAGMENT_DIR)/compress \
|
||||
$(MAGIC_FRAGMENT_DIR)/console \
|
||||
$(MAGIC_FRAGMENT_DIR)/convex \
|
||||
$(MAGIC_FRAGMENT_DIR)/coverage \
|
||||
$(MAGIC_FRAGMENT_DIR)/cracklib \
|
||||
$(MAGIC_FRAGMENT_DIR)/ctags \
|
||||
$(MAGIC_FRAGMENT_DIR)/ctf \
|
||||
@ -61,6 +69,7 @@ $(MAGIC_FRAGMENT_DIR)/cubemap \
|
||||
$(MAGIC_FRAGMENT_DIR)/cups \
|
||||
$(MAGIC_FRAGMENT_DIR)/dact \
|
||||
$(MAGIC_FRAGMENT_DIR)/database \
|
||||
$(MAGIC_FRAGMENT_DIR)/der \
|
||||
$(MAGIC_FRAGMENT_DIR)/diamond \
|
||||
$(MAGIC_FRAGMENT_DIR)/diff \
|
||||
$(MAGIC_FRAGMENT_DIR)/digital \
|
||||
@ -77,7 +86,9 @@ $(MAGIC_FRAGMENT_DIR)/erlang \
|
||||
$(MAGIC_FRAGMENT_DIR)/esri \
|
||||
$(MAGIC_FRAGMENT_DIR)/fcs \
|
||||
$(MAGIC_FRAGMENT_DIR)/filesystems \
|
||||
$(MAGIC_FRAGMENT_DIR)/finger \
|
||||
$(MAGIC_FRAGMENT_DIR)/flash \
|
||||
$(MAGIC_FRAGMENT_DIR)/flif \
|
||||
$(MAGIC_FRAGMENT_DIR)/fonts \
|
||||
$(MAGIC_FRAGMENT_DIR)/fortran \
|
||||
$(MAGIC_FRAGMENT_DIR)/frame \
|
||||
@ -93,6 +104,7 @@ $(MAGIC_FRAGMENT_DIR)/gnome \
|
||||
$(MAGIC_FRAGMENT_DIR)/gnu \
|
||||
$(MAGIC_FRAGMENT_DIR)/gnumeric \
|
||||
$(MAGIC_FRAGMENT_DIR)/gpt \
|
||||
$(MAGIC_FRAGMENT_DIR)/gpu \
|
||||
$(MAGIC_FRAGMENT_DIR)/grace \
|
||||
$(MAGIC_FRAGMENT_DIR)/graphviz \
|
||||
$(MAGIC_FRAGMENT_DIR)/gringotts \
|
||||
@ -144,6 +156,7 @@ $(MAGIC_FRAGMENT_DIR)/mcrypt \
|
||||
$(MAGIC_FRAGMENT_DIR)/mercurial \
|
||||
$(MAGIC_FRAGMENT_DIR)/metastore \
|
||||
$(MAGIC_FRAGMENT_DIR)/meteorological \
|
||||
$(MAGIC_FRAGMENT_DIR)/microfocus \
|
||||
$(MAGIC_FRAGMENT_DIR)/mime \
|
||||
$(MAGIC_FRAGMENT_DIR)/mips \
|
||||
$(MAGIC_FRAGMENT_DIR)/mirage \
|
||||
@ -160,6 +173,7 @@ $(MAGIC_FRAGMENT_DIR)/msx \
|
||||
$(MAGIC_FRAGMENT_DIR)/msvc \
|
||||
$(MAGIC_FRAGMENT_DIR)/mup \
|
||||
$(MAGIC_FRAGMENT_DIR)/music \
|
||||
$(MAGIC_FRAGMENT_DIR)/nasa \
|
||||
$(MAGIC_FRAGMENT_DIR)/natinst \
|
||||
$(MAGIC_FRAGMENT_DIR)/ncr \
|
||||
$(MAGIC_FRAGMENT_DIR)/neko \
|
||||
@ -183,6 +197,8 @@ $(MAGIC_FRAGMENT_DIR)/parrot \
|
||||
$(MAGIC_FRAGMENT_DIR)/pascal \
|
||||
$(MAGIC_FRAGMENT_DIR)/pbf \
|
||||
$(MAGIC_FRAGMENT_DIR)/pbm \
|
||||
$(MAGIC_FRAGMENT_DIR)/pc88 \
|
||||
$(MAGIC_FRAGMENT_DIR)/pc98 \
|
||||
$(MAGIC_FRAGMENT_DIR)/pdf \
|
||||
$(MAGIC_FRAGMENT_DIR)/pdp \
|
||||
$(MAGIC_FRAGMENT_DIR)/perl \
|
||||
@ -191,9 +207,11 @@ $(MAGIC_FRAGMENT_DIR)/pgp \
|
||||
$(MAGIC_FRAGMENT_DIR)/pkgadd \
|
||||
$(MAGIC_FRAGMENT_DIR)/plan9 \
|
||||
$(MAGIC_FRAGMENT_DIR)/plus5 \
|
||||
$(MAGIC_FRAGMENT_DIR)/polyml \
|
||||
$(MAGIC_FRAGMENT_DIR)/printer \
|
||||
$(MAGIC_FRAGMENT_DIR)/project \
|
||||
$(MAGIC_FRAGMENT_DIR)/psdbms \
|
||||
$(MAGIC_FRAGMENT_DIR)/psl \
|
||||
$(MAGIC_FRAGMENT_DIR)/pulsar \
|
||||
$(MAGIC_FRAGMENT_DIR)/pwsafe \
|
||||
$(MAGIC_FRAGMENT_DIR)/pyramid \
|
||||
@ -245,6 +263,7 @@ $(MAGIC_FRAGMENT_DIR)/unknown \
|
||||
$(MAGIC_FRAGMENT_DIR)/uterus \
|
||||
$(MAGIC_FRAGMENT_DIR)/uuencode \
|
||||
$(MAGIC_FRAGMENT_DIR)/varied.out \
|
||||
$(MAGIC_FRAGMENT_DIR)/vacuum-cleaner \
|
||||
$(MAGIC_FRAGMENT_DIR)/varied.script \
|
||||
$(MAGIC_FRAGMENT_DIR)/vax \
|
||||
$(MAGIC_FRAGMENT_DIR)/vicar \
|
||||
@ -261,11 +280,13 @@ $(MAGIC_FRAGMENT_DIR)/windows \
|
||||
$(MAGIC_FRAGMENT_DIR)/wireless \
|
||||
$(MAGIC_FRAGMENT_DIR)/wordprocessors \
|
||||
$(MAGIC_FRAGMENT_DIR)/wsdl \
|
||||
$(MAGIC_FRAGMENT_DIR)/x68000 \
|
||||
$(MAGIC_FRAGMENT_DIR)/xdelta \
|
||||
$(MAGIC_FRAGMENT_DIR)/xenix \
|
||||
$(MAGIC_FRAGMENT_DIR)/xilinx \
|
||||
$(MAGIC_FRAGMENT_DIR)/xo65 \
|
||||
$(MAGIC_FRAGMENT_DIR)/xwindows \
|
||||
$(MAGIC_FRAGMENT_DIR)/yara \
|
||||
$(MAGIC_FRAGMENT_DIR)/zfs \
|
||||
$(MAGIC_FRAGMENT_DIR)/zilog \
|
||||
$(MAGIC_FRAGMENT_DIR)/zyxel
|
||||
@ -289,7 +310,7 @@ ${MAGIC}: $(EXTRA_DIST) $(FILE_COMPILE_DEP)
|
||||
@(if expr "${FILE_COMPILE}" : '.*/.*' > /dev/null; then \
|
||||
echo "Using ${FILE_COMPILE} to generate ${MAGIC}" > /dev/null; \
|
||||
else \
|
||||
v=$$(file --version | sed -e s/file-// -e q); \
|
||||
v=$$(${FILE_COMPILE} --version | sed -e s/file-// -e q); \
|
||||
if [ "$$v" != "${PACKAGE_VERSION}" ]; then \
|
||||
echo "Cannot use the installed version of file ($$v) to"; \
|
||||
echo "cross-compile file ${PACKAGE_VERSION}"; \
|
||||
|
47
external/bsd/file/dist/magic/Makefile.in
vendored
47
external/bsd/file/dist/magic/Makefile.in
vendored
@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.14 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -15,7 +15,17 @@
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
@ -78,7 +88,6 @@ POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = magic
|
||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
@ -86,6 +95,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
@ -139,6 +149,7 @@ am__uninstall_files_from_dir = { \
|
||||
am__installdirs = "$(DESTDIR)$(pkgdatadir)"
|
||||
DATA = $(pkgdata_DATA)
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
pkgdatadir = @pkgdatadir@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
@ -263,7 +274,7 @@ top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
|
||||
#
|
||||
# $File: Makefile.am,v 1.101 2014/12/12 16:48:39 christos Exp $
|
||||
# $File: Makefile.am,v 1.122 2016/11/09 18:20:53 christos Exp $
|
||||
#
|
||||
MAGIC_FRAGMENT_BASE = magdir
|
||||
MAGIC_DIR = $(top_srcdir)/magic
|
||||
@ -275,6 +286,7 @@ $(MAGIC_DIR)/Localstuff \
|
||||
$(MAGIC_FRAGMENT_DIR)/acorn \
|
||||
$(MAGIC_FRAGMENT_DIR)/adi \
|
||||
$(MAGIC_FRAGMENT_DIR)/adventure \
|
||||
$(MAGIC_FRAGMENT_DIR)/algol68 \
|
||||
$(MAGIC_FRAGMENT_DIR)/allegro \
|
||||
$(MAGIC_FRAGMENT_DIR)/alliant \
|
||||
$(MAGIC_FRAGMENT_DIR)/amanda \
|
||||
@ -284,14 +296,18 @@ $(MAGIC_FRAGMENT_DIR)/animation \
|
||||
$(MAGIC_FRAGMENT_DIR)/aout \
|
||||
$(MAGIC_FRAGMENT_DIR)/apl \
|
||||
$(MAGIC_FRAGMENT_DIR)/apple \
|
||||
$(MAGIC_FRAGMENT_DIR)/application \
|
||||
$(MAGIC_FRAGMENT_DIR)/applix \
|
||||
$(MAGIC_FRAGMENT_DIR)/apt \
|
||||
$(MAGIC_FRAGMENT_DIR)/archive \
|
||||
$(MAGIC_FRAGMENT_DIR)/assembler \
|
||||
$(MAGIC_FRAGMENT_DIR)/asterix \
|
||||
$(MAGIC_FRAGMENT_DIR)/att3b \
|
||||
$(MAGIC_FRAGMENT_DIR)/audio \
|
||||
$(MAGIC_FRAGMENT_DIR)/basis \
|
||||
$(MAGIC_FRAGMENT_DIR)/ber \
|
||||
$(MAGIC_FRAGMENT_DIR)/bflt \
|
||||
$(MAGIC_FRAGMENT_DIR)/bioinformatics \
|
||||
$(MAGIC_FRAGMENT_DIR)/blackberry \
|
||||
$(MAGIC_FRAGMENT_DIR)/blcr \
|
||||
$(MAGIC_FRAGMENT_DIR)/blender \
|
||||
@ -304,6 +320,7 @@ $(MAGIC_FRAGMENT_DIR)/c-lang \
|
||||
$(MAGIC_FRAGMENT_DIR)/c64 \
|
||||
$(MAGIC_FRAGMENT_DIR)/cad \
|
||||
$(MAGIC_FRAGMENT_DIR)/cafebabe \
|
||||
$(MAGIC_FRAGMENT_DIR)/cbor \
|
||||
$(MAGIC_FRAGMENT_DIR)/cddb \
|
||||
$(MAGIC_FRAGMENT_DIR)/chord \
|
||||
$(MAGIC_FRAGMENT_DIR)/cisco \
|
||||
@ -311,11 +328,13 @@ $(MAGIC_FRAGMENT_DIR)/citrus \
|
||||
$(MAGIC_FRAGMENT_DIR)/clarion \
|
||||
$(MAGIC_FRAGMENT_DIR)/claris \
|
||||
$(MAGIC_FRAGMENT_DIR)/clipper \
|
||||
$(MAGIC_FRAGMENT_DIR)/coff \
|
||||
$(MAGIC_FRAGMENT_DIR)/commands \
|
||||
$(MAGIC_FRAGMENT_DIR)/communications \
|
||||
$(MAGIC_FRAGMENT_DIR)/compress \
|
||||
$(MAGIC_FRAGMENT_DIR)/console \
|
||||
$(MAGIC_FRAGMENT_DIR)/convex \
|
||||
$(MAGIC_FRAGMENT_DIR)/coverage \
|
||||
$(MAGIC_FRAGMENT_DIR)/cracklib \
|
||||
$(MAGIC_FRAGMENT_DIR)/ctags \
|
||||
$(MAGIC_FRAGMENT_DIR)/ctf \
|
||||
@ -323,6 +342,7 @@ $(MAGIC_FRAGMENT_DIR)/cubemap \
|
||||
$(MAGIC_FRAGMENT_DIR)/cups \
|
||||
$(MAGIC_FRAGMENT_DIR)/dact \
|
||||
$(MAGIC_FRAGMENT_DIR)/database \
|
||||
$(MAGIC_FRAGMENT_DIR)/der \
|
||||
$(MAGIC_FRAGMENT_DIR)/diamond \
|
||||
$(MAGIC_FRAGMENT_DIR)/diff \
|
||||
$(MAGIC_FRAGMENT_DIR)/digital \
|
||||
@ -339,7 +359,9 @@ $(MAGIC_FRAGMENT_DIR)/erlang \
|
||||
$(MAGIC_FRAGMENT_DIR)/esri \
|
||||
$(MAGIC_FRAGMENT_DIR)/fcs \
|
||||
$(MAGIC_FRAGMENT_DIR)/filesystems \
|
||||
$(MAGIC_FRAGMENT_DIR)/finger \
|
||||
$(MAGIC_FRAGMENT_DIR)/flash \
|
||||
$(MAGIC_FRAGMENT_DIR)/flif \
|
||||
$(MAGIC_FRAGMENT_DIR)/fonts \
|
||||
$(MAGIC_FRAGMENT_DIR)/fortran \
|
||||
$(MAGIC_FRAGMENT_DIR)/frame \
|
||||
@ -355,6 +377,7 @@ $(MAGIC_FRAGMENT_DIR)/gnome \
|
||||
$(MAGIC_FRAGMENT_DIR)/gnu \
|
||||
$(MAGIC_FRAGMENT_DIR)/gnumeric \
|
||||
$(MAGIC_FRAGMENT_DIR)/gpt \
|
||||
$(MAGIC_FRAGMENT_DIR)/gpu \
|
||||
$(MAGIC_FRAGMENT_DIR)/grace \
|
||||
$(MAGIC_FRAGMENT_DIR)/graphviz \
|
||||
$(MAGIC_FRAGMENT_DIR)/gringotts \
|
||||
@ -406,6 +429,7 @@ $(MAGIC_FRAGMENT_DIR)/mcrypt \
|
||||
$(MAGIC_FRAGMENT_DIR)/mercurial \
|
||||
$(MAGIC_FRAGMENT_DIR)/metastore \
|
||||
$(MAGIC_FRAGMENT_DIR)/meteorological \
|
||||
$(MAGIC_FRAGMENT_DIR)/microfocus \
|
||||
$(MAGIC_FRAGMENT_DIR)/mime \
|
||||
$(MAGIC_FRAGMENT_DIR)/mips \
|
||||
$(MAGIC_FRAGMENT_DIR)/mirage \
|
||||
@ -422,6 +446,7 @@ $(MAGIC_FRAGMENT_DIR)/msx \
|
||||
$(MAGIC_FRAGMENT_DIR)/msvc \
|
||||
$(MAGIC_FRAGMENT_DIR)/mup \
|
||||
$(MAGIC_FRAGMENT_DIR)/music \
|
||||
$(MAGIC_FRAGMENT_DIR)/nasa \
|
||||
$(MAGIC_FRAGMENT_DIR)/natinst \
|
||||
$(MAGIC_FRAGMENT_DIR)/ncr \
|
||||
$(MAGIC_FRAGMENT_DIR)/neko \
|
||||
@ -445,6 +470,8 @@ $(MAGIC_FRAGMENT_DIR)/parrot \
|
||||
$(MAGIC_FRAGMENT_DIR)/pascal \
|
||||
$(MAGIC_FRAGMENT_DIR)/pbf \
|
||||
$(MAGIC_FRAGMENT_DIR)/pbm \
|
||||
$(MAGIC_FRAGMENT_DIR)/pc88 \
|
||||
$(MAGIC_FRAGMENT_DIR)/pc98 \
|
||||
$(MAGIC_FRAGMENT_DIR)/pdf \
|
||||
$(MAGIC_FRAGMENT_DIR)/pdp \
|
||||
$(MAGIC_FRAGMENT_DIR)/perl \
|
||||
@ -453,9 +480,11 @@ $(MAGIC_FRAGMENT_DIR)/pgp \
|
||||
$(MAGIC_FRAGMENT_DIR)/pkgadd \
|
||||
$(MAGIC_FRAGMENT_DIR)/plan9 \
|
||||
$(MAGIC_FRAGMENT_DIR)/plus5 \
|
||||
$(MAGIC_FRAGMENT_DIR)/polyml \
|
||||
$(MAGIC_FRAGMENT_DIR)/printer \
|
||||
$(MAGIC_FRAGMENT_DIR)/project \
|
||||
$(MAGIC_FRAGMENT_DIR)/psdbms \
|
||||
$(MAGIC_FRAGMENT_DIR)/psl \
|
||||
$(MAGIC_FRAGMENT_DIR)/pulsar \
|
||||
$(MAGIC_FRAGMENT_DIR)/pwsafe \
|
||||
$(MAGIC_FRAGMENT_DIR)/pyramid \
|
||||
@ -507,6 +536,7 @@ $(MAGIC_FRAGMENT_DIR)/unknown \
|
||||
$(MAGIC_FRAGMENT_DIR)/uterus \
|
||||
$(MAGIC_FRAGMENT_DIR)/uuencode \
|
||||
$(MAGIC_FRAGMENT_DIR)/varied.out \
|
||||
$(MAGIC_FRAGMENT_DIR)/vacuum-cleaner \
|
||||
$(MAGIC_FRAGMENT_DIR)/varied.script \
|
||||
$(MAGIC_FRAGMENT_DIR)/vax \
|
||||
$(MAGIC_FRAGMENT_DIR)/vicar \
|
||||
@ -523,11 +553,13 @@ $(MAGIC_FRAGMENT_DIR)/windows \
|
||||
$(MAGIC_FRAGMENT_DIR)/wireless \
|
||||
$(MAGIC_FRAGMENT_DIR)/wordprocessors \
|
||||
$(MAGIC_FRAGMENT_DIR)/wsdl \
|
||||
$(MAGIC_FRAGMENT_DIR)/x68000 \
|
||||
$(MAGIC_FRAGMENT_DIR)/xdelta \
|
||||
$(MAGIC_FRAGMENT_DIR)/xenix \
|
||||
$(MAGIC_FRAGMENT_DIR)/xilinx \
|
||||
$(MAGIC_FRAGMENT_DIR)/xo65 \
|
||||
$(MAGIC_FRAGMENT_DIR)/xwindows \
|
||||
$(MAGIC_FRAGMENT_DIR)/yara \
|
||||
$(MAGIC_FRAGMENT_DIR)/zfs \
|
||||
$(MAGIC_FRAGMENT_DIR)/zilog \
|
||||
$(MAGIC_FRAGMENT_DIR)/zyxel
|
||||
@ -556,7 +588,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign magic/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign magic/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
@ -756,6 +787,8 @@ uninstall-am: uninstall-pkgdataDATA
|
||||
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
|
||||
ps ps-am tags-am uninstall uninstall-am uninstall-pkgdataDATA
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
${MAGIC}: $(EXTRA_DIST) $(FILE_COMPILE_DEP)
|
||||
@rm -fr magic
|
||||
@ -763,7 +796,7 @@ ${MAGIC}: $(EXTRA_DIST) $(FILE_COMPILE_DEP)
|
||||
@(if expr "${FILE_COMPILE}" : '.*/.*' > /dev/null; then \
|
||||
echo "Using ${FILE_COMPILE} to generate ${MAGIC}" > /dev/null; \
|
||||
else \
|
||||
v=$$(file --version | sed -e s/file-// -e q); \
|
||||
v=$$(${FILE_COMPILE} --version | sed -e s/file-// -e q); \
|
||||
if [ "$$v" != "${PACKAGE_VERSION}" ]; then \
|
||||
echo "Cannot use the installed version of file ($$v) to"; \
|
||||
echo "cross-compile file ${PACKAGE_VERSION}"; \
|
||||
|
229
external/bsd/file/dist/magic/magdir/apple
vendored
229
external/bsd/file/dist/magic/magdir/apple
vendored
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: apple,v 1.29 2014/04/30 21:41:02 christos Exp $
|
||||
# $File: apple,v 1.35 2016/08/17 09:45:13 christos Exp $
|
||||
# apple: file(1) magic for Apple file formats
|
||||
#
|
||||
0 search/1/t FiLeStArTfIlEsTaRt binscii (apple ][) text
|
||||
@ -65,18 +65,48 @@
|
||||
# Eric Fischer <enf@pobox.com>
|
||||
|
||||
# AppleWorks word processor:
|
||||
#
|
||||
# This matches the standard tab stops for an AppleWorks file, but if
|
||||
# a file has a tab stop set in the first four columns this will fail.
|
||||
#
|
||||
# URL: https://en.wikipedia.org/wiki/AppleWorks
|
||||
# Reference: http://www.gno.org/pub/apple2/doc/apple/filetypes/ftn.1a.xxxx
|
||||
# Update: Joerg Jenderek
|
||||
# NOTE:
|
||||
# The "O" is really the magic number, but that's so common that it's
|
||||
# necessary to check the tab stops that follow it to avoid false positives.
|
||||
|
||||
4 string O==== AppleWorks word processor data
|
||||
>85 byte&0x01 >0 \b, zoomed
|
||||
>90 byte&0x01 >0 \b, paginated
|
||||
>92 byte&0x01 >0 \b, with mail merge
|
||||
#>91 byte x \b, left margin %d
|
||||
# and/or look for unused bits of booleans bytes like zoom, paginated, mail merge
|
||||
# the newer AppleWorks is from claris with extension CWK
|
||||
4 string O
|
||||
# test for unused bits of zoom- , paginated-boolean bytes
|
||||
>84 ubequad ^0x00Fe00000000Fe00
|
||||
# look for tabstop definitions "=" no tab, "|" no tab
|
||||
# "<" left tab,"^" center tab,">" right tab, "." decimal tab,
|
||||
# unofficial "!" other , "\x8a" other
|
||||
# official only if SFMinVers is nonzero
|
||||
>>5 regex/s [=.<>|!^\x8a]{79} AppleWorks Word Processor
|
||||
# AppleWorks Word Processor File (Apple II)
|
||||
# ./apple (version 5.25) labeled the entry as "AppleWorks word processor data"
|
||||
# application/x-appleworks is mime type for claris version with cwk extension
|
||||
!:mime application/x-appleworks3
|
||||
# http://home.earthlink.net/~hughhood/appleiiworksenvoy/
|
||||
# ('p' + 1-byte ProDOS File Type + 2-byte ProDOS Aux Type')
|
||||
# $70 $1A $F8 $FF is this the apple type ?
|
||||
#:apple pdospøÿ
|
||||
!:ext awp
|
||||
# minimum version needed to read this files. SFMinVers (0 , 30~3.0 )
|
||||
>>>183 ubyte 30 3.0
|
||||
>>>183 ubyte !30
|
||||
>>>>183 ubyte !0 0x%x
|
||||
# usual tabstop start sequence "=====<"
|
||||
>>>5 string x \b, tabstop ruler "%6.6s"
|
||||
# tabstop ruler
|
||||
#>>>5 string >\0 \b, tabstops "%-79s"
|
||||
# zoom switch
|
||||
>>>85 byte&0x01 >0 \b, zoomed
|
||||
# whether paginated
|
||||
>>>90 byte&0x01 >0 \b, paginated
|
||||
# contains any mail-merge commands
|
||||
>>>92 byte&0x01 >0 \b, with mail merge
|
||||
# left margin in 1/10 inches ( normally 0 or 10 )
|
||||
>>>91 ubyte >0
|
||||
>>>>91 ubyte x \b, %d/10 inch left margin
|
||||
|
||||
# AppleWorks database:
|
||||
#
|
||||
@ -255,48 +285,149 @@
|
||||
# .vdi
|
||||
4 string innotek\ VirtualBox\ Disk\ Image %s
|
||||
|
||||
# Apple disk partition stuff, strengthen the magic using byte 4
|
||||
# Apple disk partition stuff
|
||||
# URL: https://en.wikipedia.org/wiki/Apple_Partition_Map
|
||||
# Reference: https://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/sys/sys/bootblock.h
|
||||
# Update: Joerg Jenderek
|
||||
# "ER" is APPLE_DRVR_MAP_MAGIC signature
|
||||
0 beshort 0x4552
|
||||
>4 byte 0 Apple Driver Map
|
||||
# display Apple Driver Map (strength=50) after Syslinux bootloader (71)
|
||||
#!:strength +0
|
||||
# strengthen the magic by looking for used blocksizes 512 2048
|
||||
>2 ubeshort&0xf1FF 0 Apple Driver Map
|
||||
# last 6 bytes for padding found are 0 or end with 55AAh marker for MBR hybrid
|
||||
#>>504 ubequad&0x0000FFffFFff0000 0
|
||||
!:mime application/x-apple-diskimage
|
||||
!:apple ????devr
|
||||
# https://en.wikipedia.org/wiki/Apple_Disk_Image
|
||||
!:ext dmg/iso
|
||||
# sbBlkSize for driver descriptor map 512 2048
|
||||
>>2 beshort x \b, blocksize %d
|
||||
>>4 belong x \b, blockcount %d
|
||||
>>10 beshort x \b, devtype %d
|
||||
>>12 beshort x \b, devid %d
|
||||
>>20 beshort x \b, descriptors %d
|
||||
# Assume 8 partitions each at a multiple of the sector size.
|
||||
# We could glean this from the partition descriptors, but they are empty!?!?
|
||||
>>(2.S*1) indirect \b, contains[@0x%x]:
|
||||
>>(2.S*2) indirect \b, contains[@0x%x]:
|
||||
>>(2.S*3) indirect \b, contains[@0x%x]:
|
||||
>>(2.S*4) indirect \b, contains[@0x%x]:
|
||||
>>(2.S*5) indirect \b, contains[@0x%x]:
|
||||
>>(2.S*6) indirect \b, contains[@0x%x]:
|
||||
>>(2.S*7) indirect \b, contains[@0x%x]:
|
||||
>>(2.S*8) indirect \b, contains[@0x%x]:
|
||||
# sbBlkCount sometimes garbish like
|
||||
# 0xb0200000 for unzlibed install_flash_player_19.0.0.245_osx.dmg
|
||||
# 0xf2720100 for bunziped Firefox 48.0-2.dmg
|
||||
# 0xeb02ffff for super_grub2_disk_hybrid_2.02s3.iso
|
||||
# 0x00009090 by syslinux-6.03/utils/isohybrid.c
|
||||
>>4 ubelong x \b, blockcount %u
|
||||
# following device/driver information not very useful
|
||||
# device type 0 1 (37008 garbage for super_grub2_disk_hybrid_2.02s3.iso)
|
||||
>>8 ubeshort x \b, devtype %u
|
||||
# device id 0 1 (37008 garbage for super_grub2_disk_hybrid_2.02s3.iso)
|
||||
>>10 ubeshort x \b, devid %u
|
||||
# driver data 0 (2425393296 garbage for super_grub2_disk_hybrid_2.02s3.iso)
|
||||
>>12 ubelong >0
|
||||
>>>12 ubelong x \b, driver data %u
|
||||
# number of driver descriptors sbDrvrCount <= 61
|
||||
# (37008 garbage for super_grub2_disk_hybrid_2.02s3.iso)
|
||||
>>16 ubeshort x \b, driver count %u
|
||||
# 61 * apple_drvr_descriptor[8]. information not very useful or same as in partition map
|
||||
# >>18 use apple-driver-map
|
||||
# >>26 use apple-driver-map
|
||||
# # ...
|
||||
# >>500 use apple-driver-map
|
||||
# number of partitions is always same in every partition (map block count)
|
||||
#>>0x0204 ubelong x \b, %u partitions
|
||||
>>0x0204 ubelong >0 \b, contains[@0x200]:
|
||||
>>>0x0200 use apple-apm
|
||||
>>0x0204 ubelong >1 \b, contains[@0x400]:
|
||||
>>>0x0400 use apple-apm
|
||||
>>0x0204 ubelong >2 \b, contains[@0x600]:
|
||||
>>>0x0600 use apple-apm
|
||||
>>0x0204 ubelong >3 \b, contains[@0x800]:
|
||||
>>>0x0800 use apple-apm
|
||||
>>0x0204 ubelong >4 \b, contains[@0xA00]:
|
||||
>>>0x0A00 use apple-apm
|
||||
>>0x0204 ubelong >5 \b, contains[@0xC00]:
|
||||
>>>0x0C00 use apple-apm
|
||||
>>0x0204 ubelong >6 \b, contains[@0xE00]:
|
||||
>>>0x0E00 use apple-apm
|
||||
>>0x0204 ubelong >7 \b, contains[@0x1000]:
|
||||
>>>0x1000 use apple-apm
|
||||
# display apple driver descriptor map (start-block, # blocks in sbBlkSize sizes, type)
|
||||
0 name apple-driver-map
|
||||
>0 ubequad !0
|
||||
# descBlock first block of driver
|
||||
>>0 ubelong x \b, driver start block %u
|
||||
# descSize driver size in blocks
|
||||
>>4 ubeshort x \b, size %u
|
||||
# descType driver system type 1 701h F8FFh FFFFh
|
||||
>>6 ubeshort x \b, type 0x%x
|
||||
|
||||
# Yes, the 3rd and 4th bytes are reserved, but we use them to make the
|
||||
# URL: https://en.wikipedia.org/wiki/Apple_Partition_Map
|
||||
# Reference: http://opensource.apple.com/source/IOStorageFamily/IOStorageFamily-116/IOApplePartitionScheme.h
|
||||
# Update: Joerg Jenderek
|
||||
# Yes, the 3rd and 4th bytes pmSigPad are reserved, but we use them to make the
|
||||
# magic stronger.
|
||||
0 belong 0x504d0000 Apple Partition Map
|
||||
>4 belong x \b, map block count %d
|
||||
>8 belong x \b, start block %d
|
||||
>12 belong x \b, block count %d
|
||||
>16 string >0 \b, name %s
|
||||
>48 string >0 \b, type %s
|
||||
>124 string >0 \b, processor %s
|
||||
>140 string >0 \b, boot arguments %s
|
||||
>92 belong & 1 \b, valid
|
||||
>92 belong & 2 \b, allocated
|
||||
>92 belong & 4 \b, in use
|
||||
>92 belong & 8 \b, has boot info
|
||||
>92 belong & 16 \b, readable
|
||||
>92 belong & 32 \b, writable
|
||||
>92 belong & 64 \b, pic boot code
|
||||
>92 belong & 128 \b, chain compatible driver
|
||||
>92 belong & 256 \b, real driver
|
||||
>92 belong & 512 \b, chain driver
|
||||
>92 belong & 1024 \b, mount at startup
|
||||
>92 belong & 2048 \b, is the startup partition
|
||||
# for apple partition map stored as a single file
|
||||
0 belong 0x504d0000
|
||||
# to display Apple Partition Map (strength=70) after Syslinux bootloader (71)
|
||||
#!:strength +0
|
||||
>0 use apple-apm
|
||||
# magic/Magdir/apple14.test, 365: Warning: Current entry does not yet have a description for adding a EXTENSION type
|
||||
# file: could not find any valid magic files!
|
||||
#!:ext bin
|
||||
# display apple partition map. Normally called after Apple driver map
|
||||
0 name apple-apm
|
||||
>0 belong 0x504d0000 Apple Partition Map
|
||||
# number of partitions
|
||||
>>4 ubelong x \b, map block count %u
|
||||
# logical block (512 bytes) start of partition
|
||||
>>8 ubelong x \b, start block %u
|
||||
>>12 ubelong x \b, block count %u
|
||||
>>16 string >0 \b, name %s
|
||||
>>48 string >0 \b, type %s
|
||||
# processor type dpme_process_id[16] e.g. "68000" "68020"
|
||||
>>120 string >0 \b, processor %s
|
||||
# A/UX boot arguments BootArgs[128]
|
||||
>>136 string >0 \b, boot arguments %s
|
||||
# status of partition dpme_flags
|
||||
>>88 belong & 1 \b, valid
|
||||
>>88 belong & 2 \b, allocated
|
||||
>>88 belong & 4 \b, in use
|
||||
>>88 belong & 8 \b, has boot info
|
||||
>>88 belong & 16 \b, readable
|
||||
>>88 belong & 32 \b, writable
|
||||
>>88 belong & 64 \b, pic boot code
|
||||
>>88 belong & 128 \b, chain compatible driver
|
||||
>>88 belong & 256 \b, real driver
|
||||
>>88 belong & 512 \b, chain driver
|
||||
# mount automatically at startup APPLE_PS_AUTO_MOUNT
|
||||
>>88 ubelong &0x40000000 \b, mount at startup
|
||||
# is the startup partition APPLE_PS_STARTUP
|
||||
>>88 ubelong &0x80000000 \b, is the startup partition
|
||||
|
||||
#http://wiki.mozilla.org/DS_Store_File_Format`
|
||||
#http://wiki.mozilla.org/DS_Store_File_Format
|
||||
#http://en.wikipedia.org/wiki/.DS_Store
|
||||
0 string \0\0\0\1Bud1\0 Apple Desktop Services Store
|
||||
|
||||
# HFS/HFS+ Resource fork files (andrew.roazen@nau.edu Apr 13 2015)
|
||||
# Usually not in separate files, but have either filename rsrc with
|
||||
# no extension, or a filename corresponding to another file, with
|
||||
# extensions rsr/rsrc
|
||||
0 string \000\000\001\000
|
||||
>4 leshort 0
|
||||
>>16 lelong 0 Apple HFS/HFS+ resource fork
|
||||
|
||||
#https://en.wikipedia.org/wiki/AppleScript
|
||||
0 string FasdUAS AppleScript compiled
|
||||
|
||||
# AppleWorks/ClarisWorks
|
||||
# https://github.com/joshenders/appleworks_format
|
||||
# http://fileformats.archiveteam.org/wiki/AppleWorks
|
||||
0 name appleworks
|
||||
>0 belong&0x00ffffff 0x07e100 AppleWorks CWK Document
|
||||
>0 belong&0x00ffffff 0x008803 ClarisWorks CWK Document
|
||||
>0 default x
|
||||
>>0 belong x AppleWorks/ClarisWorks CWK Document
|
||||
>0 byte x \b, version %d
|
||||
>30 beshort x \b, %d
|
||||
>32 beshort x \bx%d
|
||||
!:ext cwk
|
||||
|
||||
4 string BOBO
|
||||
>0 byte >4
|
||||
>>12 belong 0
|
||||
>>>26 belong 0
|
||||
>>>>0 use appleworks
|
||||
>0 belong 0x0481ad00
|
||||
>>0 use appleworks
|
||||
|
343
external/bsd/file/dist/magic/magdir/archive
vendored
343
external/bsd/file/dist/magic/magdir/archive
vendored
@ -1,5 +1,5 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: archive,v 1.88 2014/08/16 10:42:17 christos Exp $
|
||||
# $File: archive,v 1.104 2017/02/10 14:03:22 christos Exp $
|
||||
# archive: file(1) magic for archive formats (see also "msdos" for self-
|
||||
# extracting compressed archives)
|
||||
#
|
||||
@ -246,7 +246,15 @@
|
||||
# BA
|
||||
# TODO: idarc says "bytes 0-2 == bytes 3-5"
|
||||
# TTComp
|
||||
0 string \0\6 TTComp archive data
|
||||
# URL: http://fileformats.archiveteam.org/wiki/TTComp_archive
|
||||
# Update: Joerg Jenderek
|
||||
# GRR: line below is too general as it matches also Panorama database "TCDB 2003-10 demo.pan", others
|
||||
0 string \0\6
|
||||
# look for first keyword of Panorama database *.pan
|
||||
>12 search/261 DESIGN
|
||||
# skip keyword with low entropy
|
||||
>12 default x TTComp archive, binary, 4K dictionary
|
||||
# (version 5.25) labeled the above entry as "TTComp archive data"
|
||||
# ESP, could this conflict with Easy Software Products' (e.g.ESP ghostscript) documentation?
|
||||
0 string ESP ESP archive data
|
||||
# ZPack
|
||||
@ -434,16 +442,34 @@
|
||||
# AIN
|
||||
0 string \x33\x18 AIN archive data
|
||||
0 string \x33\x17 AIN archive data
|
||||
# XPA32
|
||||
0 string xpa\0\1 XPA32 archive data
|
||||
# XPA32 test moved and merged with XPA by Joerg Jenderek at Sep 2015
|
||||
# SZip (TODO: doesn't catch all versions)
|
||||
0 string SZ\x0a\4 SZip archive data
|
||||
# XPack DiskImage
|
||||
0 string jm XPack DiskImage archive data
|
||||
# *.XDI updated by Joerg Jenderek Sep 2015
|
||||
# ftp://ftp.sac.sk/pub/sac/pack/0index.txt
|
||||
# GRR: this test is still too general as it catches also text files starting with jm
|
||||
0 string jm
|
||||
# only found examples with this additional characteristic 2 bytes
|
||||
>2 string \x2\x4 Xpack DiskImage archive data
|
||||
#!:ext xdi
|
||||
# XPack Data
|
||||
0 string xpa XPack archive data
|
||||
# *.xpa updated by Joerg Jenderek Sep 2015
|
||||
# ftp://ftp.elf.stuba.sk/pub/pc/pack/
|
||||
0 string xpa XPA
|
||||
!:ext xpa
|
||||
# XPA32
|
||||
# ftp://ftp.elf.stuba.sk/pub/pc/pack/xpa32.zip
|
||||
# created by XPA32.EXE version 1.0.2 for Windows
|
||||
>0 string xpa\0\1 \b32 archive data
|
||||
# created by XPACK.COM version 1.67m or 1.67r with short 0x1800
|
||||
>3 ubeshort !0x0001 \bck archive data
|
||||
# XPack Single Data
|
||||
0 string \xc3\x8d\ jm XPack single archive data
|
||||
# changed by Joerg Jenderek Sep 2015 back to like in version 5.12
|
||||
# letter 'I'+ acute accent is equivalent to \xcd
|
||||
0 string \xcd\ jm Xpack single archive data
|
||||
#!:mime application/x-xpa-compressed
|
||||
!:ext xpa
|
||||
|
||||
# TODO: missing due to unknown magic/magic at end of file:
|
||||
#DWC
|
||||
@ -526,55 +552,212 @@
|
||||
>>0x36 string >\0 fstype %.8s
|
||||
|
||||
# LHARC/LHA archiver (Greg Roelofs, newt@uchicago.edu)
|
||||
2 string -lh0- LHarc 1.x/ARX archive data [lh0]
|
||||
!:mime application/x-lharc
|
||||
2 string -lh1- LHarc 1.x/ARX archive data [lh1]
|
||||
!:mime application/x-lharc
|
||||
2 string -lz4- LHarc 1.x archive data [lz4]
|
||||
!:mime application/x-lharc
|
||||
2 string -lz5- LHarc 1.x archive data [lz5]
|
||||
!:mime application/x-lharc
|
||||
# Update: Joerg Jenderek
|
||||
# URL: https://en.wikipedia.org/wiki/LHA_(file_format)
|
||||
# Reference: http://web.archive.org/web/20021005080911/http://www.osirusoft.com/joejared/lzhformat.html
|
||||
#
|
||||
# check and display information of lharc (LHa,PMarc) file
|
||||
0 name lharc-file
|
||||
# check 1st character of method id like -lz4- -lh5- or -pm2-
|
||||
>2 string -
|
||||
# check 5th character of method id
|
||||
>>6 string -
|
||||
# check header level 0 1 2 3
|
||||
>>>20 ubyte <4
|
||||
# check 2nd, 3th and 4th character of method id
|
||||
>>>>3 regex \^(lh[0-9a-ex]|lz[s2-8]|pm[012]|pc1) \b
|
||||
!:mime application/x-lzh-compressed
|
||||
# creator type "LHA "
|
||||
!:apple ????LHA
|
||||
# display archive type name like "LHa/LZS archive data" or "LArc archive"
|
||||
>>>>>2 string -lz \b
|
||||
!:ext lzs
|
||||
# already known -lzs- -lz4- -lz5- with old names
|
||||
>>>>>>2 string -lzs LHa/LZS archive data
|
||||
>>>>>>3 regex \^lz[45] LHarc 1.x archive data
|
||||
# missing -lz?- with wikipedia names
|
||||
>>>>>>3 regex \^lz[2378] LArc archive
|
||||
# display archive type name like "LHa (2.x) archive data"
|
||||
>>>>>2 string -lh \b
|
||||
# already known -lh0- -lh1- -lh2- -lh3- -lh4- -lh5- -lh6- -lh7- -lhd- variants with old names
|
||||
>>>>>>3 regex \^lh[01] LHarc 1.x/ARX archive data
|
||||
# LHice archiver use ".ICE" as name extension instead usual one ".lzh"
|
||||
# FOOBAR archiver use ".foo" as name extension instead usual one
|
||||
# "Florain Orjanov's and Olga Bachetska's ARchiver" not found at the moment
|
||||
>>>>>>>2 string -lh1 \b
|
||||
!:ext lha/lzh/ice
|
||||
>>>>>>3 regex \^lh[23d] LHa 2.x? archive data
|
||||
>>>>>>3 regex \^lh[7] LHa (2.x)/LHark archive data
|
||||
>>>>>>3 regex \^lh[456] LHa (2.x) archive data
|
||||
>>>>>>>2 string -lh5 \b
|
||||
# https://en.wikipedia.org/wiki/BIOS
|
||||
# Some mainboard BIOS like Award use LHa compression. So archives with unusal extension are found like
|
||||
# bios.rom , kd7_v14.bin, 1010.004, ...
|
||||
!:ext lha/lzh/rom/bin
|
||||
# missing -lh?- variants (Joe Jared)
|
||||
>>>>>>3 regex \^lh[89a-ce] LHa (Joe Jared) archive
|
||||
# UNLHA32 2.67a
|
||||
>>>>>>2 string -lhx LHa (UNLHA32) archive
|
||||
# lha archives with standard file name extensions ".lha" ".lzh"
|
||||
>>>>>>3 regex !\^(lh1|lh5) \b
|
||||
!:ext lha/lzh
|
||||
# this should not happen if all -lh variants are described
|
||||
>>>>>>2 default x LHa (unknown) archive
|
||||
#!:ext lha
|
||||
# PMarc
|
||||
>>>>>3 regex \^pm[012] PMarc archive data
|
||||
!:ext pma
|
||||
# append method id without leading and trailing minus character
|
||||
>>>>>3 string x [%3.3s]
|
||||
>>>>>>0 use lharc-header
|
||||
#
|
||||
# check and display information of lharc header
|
||||
0 name lharc-header
|
||||
# header size 0x4 , 0x1b-0x61
|
||||
>0 ubyte x
|
||||
# compressed data size != compressed file size
|
||||
#>7 ulelong x \b, data size %d
|
||||
# attribute: 0x2~?? 0x10~symlink|target 0x20~normal
|
||||
#>19 ubyte x \b, 19_0x%x
|
||||
# level identifier 0 1 2 3
|
||||
#>20 ubyte x \b, level %d
|
||||
# time stamp
|
||||
#>15 ubelong x DATE 0x%8.8x
|
||||
# OS ID for level 1
|
||||
>20 ubyte 1
|
||||
# 0x20 types find for *.rom files
|
||||
>>(21.b+24) ubyte <0x21 \b, 0x%x OS
|
||||
# ascii type like M for MSDOS
|
||||
>>(21.b+24) ubyte >0x20 \b, '%c' OS
|
||||
# OS ID for level 2
|
||||
>20 ubyte 2
|
||||
#>>23 ubyte x \b, OS ID 0x%x
|
||||
>>23 ubyte <0x21 \b, 0x%x OS
|
||||
>>23 ubyte >0x20 \b, '%c' OS
|
||||
# filename only for level 0 and 1
|
||||
>20 ubyte <2
|
||||
# length of filename
|
||||
>>21 ubyte >0 \b, with
|
||||
# filename
|
||||
>>>21 pstring x "%s"
|
||||
#
|
||||
#2 string -lh0- LHarc 1.x/ARX archive data [lh0]
|
||||
#!:mime application/x-lharc
|
||||
2 string -lh0-
|
||||
>0 use lharc-file
|
||||
#2 string -lh1- LHarc 1.x/ARX archive data [lh1]
|
||||
#!:mime application/x-lharc
|
||||
2 string -lh1-
|
||||
>0 use lharc-file
|
||||
# NEW -lz2- ... -lz8-
|
||||
2 string -lz2-
|
||||
>0 use lharc-file
|
||||
2 string -lz3-
|
||||
>0 use lharc-file
|
||||
2 string -lz4-
|
||||
>0 use lharc-file
|
||||
2 string -lz5-
|
||||
>0 use lharc-file
|
||||
2 string -lz7-
|
||||
>0 use lharc-file
|
||||
2 string -lz8-
|
||||
>0 use lharc-file
|
||||
# [never seen any but the last; -lh4- reported in comp.compression:]
|
||||
2 string -lzs- LHa/LZS archive data [lzs]
|
||||
!:mime application/x-lha
|
||||
2 string -lh\40- LHa 2.x? archive data [lh ]
|
||||
!:mime application/x-lha
|
||||
2 string -lhd- LHa 2.x? archive data [lhd]
|
||||
!:mime application/x-lha
|
||||
2 string -lh2- LHa 2.x? archive data [lh2]
|
||||
!:mime application/x-lha
|
||||
2 string -lh3- LHa 2.x? archive data [lh3]
|
||||
!:mime application/x-lha
|
||||
2 string -lh4- LHa (2.x) archive data [lh4]
|
||||
!:mime application/x-lha
|
||||
2 string -lh5- LHa (2.x) archive data [lh5]
|
||||
!:mime application/x-lha
|
||||
2 string -lh6- LHa (2.x) archive data [lh6]
|
||||
!:mime application/x-lha
|
||||
2 string -lh7- LHa (2.x)/LHark archive data [lh7]
|
||||
!:mime application/x-lha
|
||||
>20 byte x - header level %d
|
||||
#2 string -lzs- LHa/LZS archive data [lzs]
|
||||
2 string -lzs-
|
||||
>0 use lharc-file
|
||||
# According to wikipedia and others such a version does not exist
|
||||
#2 string -lh\40- LHa 2.x? archive data [lh ]
|
||||
#2 string -lhd- LHa 2.x? archive data [lhd]
|
||||
2 string -lhd-
|
||||
>0 use lharc-file
|
||||
#2 string -lh2- LHa 2.x? archive data [lh2]
|
||||
2 string -lh2-
|
||||
>0 use lharc-file
|
||||
#2 string -lh3- LHa 2.x? archive data [lh3]
|
||||
2 string -lh3-
|
||||
>0 use lharc-file
|
||||
#2 string -lh4- LHa (2.x) archive data [lh4]
|
||||
2 string -lh4-
|
||||
>0 use lharc-file
|
||||
#2 string -lh5- LHa (2.x) archive data [lh5]
|
||||
2 string -lh5-
|
||||
>0 use lharc-file
|
||||
#2 string -lh6- LHa (2.x) archive data [lh6]
|
||||
2 string -lh6-
|
||||
>0 use lharc-file
|
||||
#2 string -lh7- LHa (2.x)/LHark archive data [lh7]
|
||||
2 string -lh7-
|
||||
# !:mime application/x-lha
|
||||
# >20 byte x - header level %d
|
||||
>0 use lharc-file
|
||||
# NEW -lh8- ... -lhe- , -lhx-
|
||||
2 string -lh8-
|
||||
>0 use lharc-file
|
||||
2 string -lh9-
|
||||
>0 use lharc-file
|
||||
2 string -lha-
|
||||
>0 use lharc-file
|
||||
2 string -lhb-
|
||||
>0 use lharc-file
|
||||
2 string -lhc-
|
||||
>0 use lharc-file
|
||||
2 string -lhe-
|
||||
>0 use lharc-file
|
||||
2 string -lhx-
|
||||
>0 use lharc-file
|
||||
# taken from idarc [JW]
|
||||
2 string -lZ PUT archive data
|
||||
2 string -lz LZS archive data
|
||||
# already done by LHarc magics
|
||||
# this should never happen if all sub types of LZS archive are identified
|
||||
#2 string -lz LZS archive data
|
||||
2 string -sw1- Swag archive data
|
||||
|
||||
# RAR archiver (Greg Roelofs, newt@uchicago.edu)
|
||||
0 string Rar! RAR archive data,
|
||||
0 name rar-file-header
|
||||
>24 byte 15 \b, v1.5
|
||||
>24 byte 20 \b, v2.0
|
||||
>24 byte 29 \b, v4
|
||||
>15 byte 0 \b, os: MS-DOS
|
||||
>15 byte 1 \b, os: OS/2
|
||||
>15 byte 2 \b, os: Win32
|
||||
>15 byte 3 \b, os: Unix
|
||||
>15 byte 4 \b, os: Mac OS
|
||||
>15 byte 5 \b, os: BeOS
|
||||
|
||||
0 name rar-archive-header
|
||||
>3 leshort&0x1ff >0 \b, flags:
|
||||
>>3 leshort &0x01 ArchiveVolume
|
||||
>>3 leshort &0x02 Commented
|
||||
>>3 leshort &0x04 Locked
|
||||
>>3 leshort &0x10 NewVolumeNaming
|
||||
>>3 leshort &0x08 Solid
|
||||
>>3 leshort &0x20 Authenticated
|
||||
>>3 leshort &0x40 RecoveryRecordPresent
|
||||
>>3 leshort &0x80 EncryptedBlockHeader
|
||||
>>3 leshort &0x100 FirstVolume
|
||||
|
||||
# RAR (Roshal Archive) archive
|
||||
0 string Rar!\x1a\7\0 RAR archive data
|
||||
!:mime application/x-rar
|
||||
>44 byte x v%0x,
|
||||
>10 byte >0 flags:
|
||||
>>10 byte &0x01 Archive volume,
|
||||
>>10 byte &0x02 Commented,
|
||||
>>10 byte &0x04 Locked,
|
||||
>>10 byte &0x08 Solid,
|
||||
>>10 byte &0x20 Authenticated,
|
||||
>35 byte 0 os: MS-DOS
|
||||
>35 byte 1 os: OS/2
|
||||
>35 byte 2 os: Win32
|
||||
>35 byte 3 os: Unix
|
||||
# some old version? idarc says:
|
||||
0 string RE\x7e\x5e RAR archive data
|
||||
!:ext rar/cbr
|
||||
# file header
|
||||
>(0xc.l+9) byte 0x74
|
||||
>>(0xc.l+7) use rar-file-header
|
||||
# subblock seems to share information with file header
|
||||
>(0xc.l+9) byte 0x7a
|
||||
>>(0xc.l+7) use rar-file-header
|
||||
>9 byte 0x73
|
||||
>>7 use rar-archive-header
|
||||
|
||||
0 string Rar!\x1a\7\1\0 RAR archive data, v5
|
||||
!:mime application/x-rar
|
||||
!:ext rar
|
||||
|
||||
# Very old RAR archive
|
||||
# http://jasonblanks.com/wp-includes/images/papers/KnowyourarchiveRAR.pdf
|
||||
0 string RE\x7e\x5e RAR archive data (<v1.5)
|
||||
!:mime application/x-rar
|
||||
!:ext rar/cbr
|
||||
|
||||
# SQUISH archiver (Greg Roelofs, newt@uchicago.edu)
|
||||
0 string SQSH squished archive data (Acorn RISCOS)
|
||||
@ -586,9 +769,12 @@
|
||||
# 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
|
||||
!:ext zip/cbz
|
||||
|
||||
# Zip archives (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu)
|
||||
0 string PK\005\006 Zip archive data (empty)
|
||||
!:mime application/zip
|
||||
!:ext zip/cbz
|
||||
0 string PK\003\004
|
||||
|
||||
# Specialised zip formats which start with a member named 'mimetype'
|
||||
@ -705,6 +891,14 @@
|
||||
>(26.s+30) leshort 0xcafe Java archive data (JAR)
|
||||
!:mime application/java-archive
|
||||
|
||||
# iOS App
|
||||
>(26.s+30) leshort !0xcafe
|
||||
>>26 string !\x8\0\0\0mimetype
|
||||
>>>30 string Payload/
|
||||
>>>>38 search/64 .app/ iOS App
|
||||
!:mime application/x-ios-app
|
||||
|
||||
|
||||
# Generic zip archives (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu)
|
||||
# Next line excludes specialized formats:
|
||||
>(26.s+30) leshort !0xcafe
|
||||
@ -714,7 +908,17 @@
|
||||
>>>4 byte 0x0a \b, at least v1.0 to extract
|
||||
>>>4 byte 0x0b \b, at least v1.1 to extract
|
||||
>>>4 byte 0x14 \b, at least v2.0 to extract
|
||||
>>>4 byte 0x2d \b, at least v3.0 to extract
|
||||
>>>4 byte 0x15 \b, at least v2.1 to extract
|
||||
>>>4 byte 0x19 \b, at least v2.5 to extract
|
||||
>>>4 byte 0x1b \b, at least v2.7 to extract
|
||||
>>>4 byte 0x2d \b, at least v4.5 to extract
|
||||
>>>4 byte 0x2e \b, at least v4.6 to extract
|
||||
>>>4 byte 0x32 \b, at least v5.0 to extract
|
||||
>>>4 byte 0x33 \b, at least v5.1 to extract
|
||||
>>>4 byte 0x34 \b, at least v5.2 to extract
|
||||
>>>4 byte 0x3d \b, at least v6.1 to extract
|
||||
>>>4 byte 0x3e \b, at least v6.2 to extract
|
||||
>>>4 byte 0x3f \b, at least v6.3 to extract
|
||||
>>>0x161 string WINZIP \b, WinZIP self-extracting
|
||||
|
||||
# StarView Metafile
|
||||
@ -746,12 +950,24 @@
|
||||
0 string \0\ \ \ \ \ \ \ \ \ \ \ \0\0 LBR archive data
|
||||
#
|
||||
# PMA (CP/M derivative of LHA)
|
||||
# Update: Joerg Jenderek
|
||||
# URL: https://en.wikipedia.org/wiki/LHA_(file_format)
|
||||
#
|
||||
2 string -pm0- PMarc archive data [pm0]
|
||||
2 string -pm1- PMarc archive data [pm1]
|
||||
2 string -pm2- PMarc archive data [pm2]
|
||||
#2 string -pm0- PMarc archive data [pm0]
|
||||
2 string -pm0-
|
||||
>0 use lharc-file
|
||||
#2 string -pm1- PMarc archive data [pm1]
|
||||
2 string -pm1-
|
||||
>0 use lharc-file
|
||||
#2 string -pm2- PMarc archive data [pm2]
|
||||
2 string -pm2-
|
||||
>0 use lharc-file
|
||||
2 string -pms- PMarc SFX archive (CP/M, DOS)
|
||||
#!:mime application/x-foobar-exec
|
||||
!:ext com
|
||||
5 string -pc1- PopCom compressed executable (CP/M)
|
||||
#!:mime application/x-
|
||||
#!:ext com
|
||||
|
||||
# From Rafael Laboissiere <rafael@laboissiere.net>
|
||||
# The Project Revision Control System (see
|
||||
@ -784,6 +1000,9 @@
|
||||
# Felix von Leitner <felix-file@fefe.de>
|
||||
0 string d8:announce BitTorrent file
|
||||
!:mime application/x-bittorrent
|
||||
# Durval Menezes, <jmgthbfile at durval dot com>
|
||||
0 string d13:announce-list BitTorrent file
|
||||
!:mime application/x-bittorrent
|
||||
|
||||
# Atari MSA archive - Teemu Hukkanen <tjhukkan@iki.fi>
|
||||
0 beshort 0x0e0f Atari MSA archive data
|
||||
@ -871,19 +1090,16 @@
|
||||
# From "Nelson A. de Oliveira" <naoliv@gmail.com>
|
||||
0 string MPQ\032 MoPaQ (MPQ) archive
|
||||
|
||||
# From: Dirk Jagdmann <doj@cubic.org>
|
||||
# xar archive format: http://code.google.com/p/xar/
|
||||
0 string xar! xar archive
|
||||
>6 beshort x - version %d
|
||||
|
||||
# From: "Nelson A. de Oliveira" <naoliv@gmail.com>
|
||||
# .kgb
|
||||
0 string KGB_arch KGB Archiver file
|
||||
>10 string x with compression level %.1s
|
||||
|
||||
# xar (eXtensible ARchiver) archive
|
||||
# xar archive format: http://code.google.com/p/xar/
|
||||
# From: "David Remahl" <dremahl@apple.com>
|
||||
0 string xar! xar archive
|
||||
!:mime application/x-xar
|
||||
#>4 beshort x header size %d
|
||||
>6 beshort x version %d,
|
||||
#>8 quad x compressed TOC: %d,
|
||||
@ -911,6 +1127,9 @@
|
||||
# ZPAQ: http://mattmahoney.net/dc/zpaq.html
|
||||
0 string zPQ ZPAQ stream
|
||||
>3 byte x \b, level %d
|
||||
# From: Barry Carter <carter.barry@gmail.com>
|
||||
# http://encode.ru/threads/456-zpaq-updates/page32
|
||||
0 string 7kSt ZPAQ file
|
||||
|
||||
# BBeB ebook, unencrypted (LRF format)
|
||||
# URL: http://www.sven.de/librie/Librie/LrfFormat
|
||||
@ -954,3 +1173,9 @@
|
||||
>0xE08 search/7776 \x55\xAA
|
||||
>>&-512 indirect x \b; contains
|
||||
|
||||
# Google Chrome extensions
|
||||
# https://developer.chrome.com/extensions/crx
|
||||
# https://developer.chrome.com/extensions/hosting
|
||||
0 string Cr24 Google Chrome extension
|
||||
!:mime application/x-chrome-extension
|
||||
>4 ulong x \b, version %u
|
||||
|
108
external/bsd/file/dist/magic/magdir/elf
vendored
108
external/bsd/file/dist/magic/magdir/elf
vendored
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: elf,v 1.68 2014/09/19 19:05:57 christos Exp $
|
||||
# $File: elf,v 1.70 2016/06/02 12:36:30 christos Exp $
|
||||
# elf: file(1) magic for ELF executables
|
||||
#
|
||||
# We have to check the byte order flag to see what byte order all the
|
||||
@ -15,6 +15,32 @@
|
||||
# Modified by (4): <gerardo.cacciari@gmail.com> (VMS Itanium)
|
||||
# Modified by (5): Matthias Urlichs <smurf@debian.org> (Listing of many architectures)
|
||||
|
||||
0 name elf-mips
|
||||
>0 lelong&0xf0000000 0x00000000 MIPS-I
|
||||
>0 lelong&0xf0000000 0x10000000 MIPS-II
|
||||
>0 lelong&0xf0000000 0x20000000 MIPS-III
|
||||
>0 lelong&0xf0000000 0x30000000 MIPS-IV
|
||||
>0 lelong&0xf0000000 0x40000000 MIPS-V
|
||||
>0 lelong&0xf0000000 0x50000000 MIPS32
|
||||
>0 lelong&0xf0000000 0x60000000 MIPS64
|
||||
>0 lelong&0xf0000000 0x70000000 MIPS32 rel2
|
||||
>0 lelong&0xf0000000 0x80000000 MIPS64 rel2
|
||||
>0 lelong&0xf0000000 0x90000000 MIPS32 rel6
|
||||
>0 lelong&0xf0000000 0xa0000000 MIPS64 rel6
|
||||
|
||||
0 name elf-sparc
|
||||
>0 lelong&0x00ffff00 0x00000100 V8+ Required,
|
||||
>0 lelong&0x00ffff00 0x00000200 Sun UltraSPARC1 Extensions Required,
|
||||
>0 lelong&0x00ffff00 0x00000400 HaL R1 Extensions Required,
|
||||
>0 lelong&0x00ffff00 0x00000800 Sun UltraSPARC3 Extensions Required,
|
||||
>0 lelong&0x3 0 total store ordering,
|
||||
>0 lelong&0x3 1 partial store ordering,
|
||||
>0 lelong&0x3 2 relaxed memory ordering,
|
||||
|
||||
0 name elf-pa-risc
|
||||
>2 leshort 0x0214 2.0
|
||||
>0 leshort &0x0008 (LP64)
|
||||
|
||||
0 name elf-le
|
||||
>16 leshort 0 no file type,
|
||||
!:mime application/octet-stream
|
||||
@ -55,47 +81,26 @@
|
||||
>18 leshort 8
|
||||
# only for 32-bit
|
||||
>>4 byte 1
|
||||
>>>36 lelong&0xf0000000 0x00000000 MIPS-I
|
||||
>>>36 lelong&0xf0000000 0x10000000 MIPS-II
|
||||
>>>36 lelong&0xf0000000 0x20000000 MIPS-III
|
||||
>>>36 lelong&0xf0000000 0x30000000 MIPS-IV
|
||||
>>>36 lelong&0xf0000000 0x40000000 MIPS-V
|
||||
>>>36 lelong&0xf0000000 0x50000000 MIPS32
|
||||
>>>36 lelong&0xf0000000 0x60000000 MIPS64
|
||||
>>>36 lelong&0xf0000000 0x70000000 MIPS32 rel2
|
||||
>>>36 lelong&0xf0000000 0x80000000 MIPS64 rel2
|
||||
>>>36 use elf-mips
|
||||
# only for 64-bit
|
||||
>>4 byte 2
|
||||
>>>48 lelong&0xf0000000 0x00000000 MIPS-I
|
||||
>>>48 lelong&0xf0000000 0x10000000 MIPS-II
|
||||
>>>48 lelong&0xf0000000 0x20000000 MIPS-III
|
||||
>>>48 lelong&0xf0000000 0x30000000 MIPS-IV
|
||||
>>>48 lelong&0xf0000000 0x40000000 MIPS-V
|
||||
>>>48 lelong&0xf0000000 0x50000000 MIPS32
|
||||
>>>48 lelong&0xf0000000 0x60000000 MIPS64
|
||||
>>>48 lelong&0xf0000000 0x70000000 MIPS32 rel2
|
||||
>>>48 lelong&0xf0000000 0x80000000 MIPS64 rel2
|
||||
>>>48 use elf-mips
|
||||
>18 leshort 9 Amdahl,
|
||||
>18 leshort 10 MIPS (deprecated),
|
||||
>18 leshort 11 RS6000,
|
||||
>18 leshort 15 PA-RISC,
|
||||
# only for 32-bit
|
||||
>>4 byte 1
|
||||
>>>38 leshort 0x0214 2.0
|
||||
>>>36 leshort &0x0008 (LP64)
|
||||
>>>36 use elf-pa-risc
|
||||
# only for 64-bit
|
||||
>>4 byte 2
|
||||
>>>50 leshort 0x0214 2.0
|
||||
>>>48 leshort &0x0008 (LP64)
|
||||
>>>48 use elf-pa-risc
|
||||
>18 leshort 16 nCUBE,
|
||||
>18 leshort 17 Fujitsu VPP500,
|
||||
>18 leshort 18 SPARC32PLUS,
|
||||
# only for 32-bit
|
||||
>>4 byte 1
|
||||
>>>36 lelong&0xffff00 0x000100 V8+ Required,
|
||||
>>>36 lelong&0xffff00 0x000200 Sun UltraSPARC1 Extensions Required,
|
||||
>>>36 lelong&0xffff00 0x000400 HaL R1 Extensions Required,
|
||||
>>>36 lelong&0xffff00 0x000800 Sun UltraSPARC3 Extensions Required,
|
||||
>>>36 use elf-sparc
|
||||
>18 leshort 19 Intel 80960,
|
||||
>18 leshort 20 PowerPC or cisco 4500,
|
||||
>18 leshort 21 64-bit PowerPC or cisco 7500,
|
||||
@ -117,12 +122,7 @@
|
||||
>18 leshort 42 Renesas SH,
|
||||
>18 leshort 43 SPARC V9,
|
||||
>>4 byte 2
|
||||
>>>48 lelong&0xffff00 0x000200 Sun UltraSPARC1 Extensions Required,
|
||||
>>>48 lelong&0xffff00 0x000400 HaL R1 Extensions Required,
|
||||
>>>48 lelong&0xffff00 0x000800 Sun UltraSPARC3 Extensions Required,
|
||||
>>>48 lelong&0x3 0 total store ordering,
|
||||
>>>48 lelong&0x3 1 partial store ordering,
|
||||
>>>48 lelong&0x3 2 relaxed memory ordering,
|
||||
>>>48 use elf-sparc
|
||||
>18 leshort 44 Siemens Tricore Embedded Processor,
|
||||
>18 leshort 45 Argonaut RISC Core, Argonaut Technologies Inc.,
|
||||
>18 leshort 46 Renesas H8/300,
|
||||
@ -301,25 +301,23 @@
|
||||
>>0 use elf-le
|
||||
>5 byte 2 MSB
|
||||
>>0 use \^elf-le
|
||||
# Up to now only 0, 1 and 2 are defined; I've seen a file with 0x83, it seemed
|
||||
# like proper ELF, but extracting the string had bad results.
|
||||
>4 byte <0x80
|
||||
>>8 string >\0 (%s)
|
||||
>8 string \0
|
||||
>>7 byte 0 (SYSV)
|
||||
>>7 byte 1 (HP-UX)
|
||||
>>7 byte 2 (NetBSD)
|
||||
>>7 byte 3 (GNU/Linux)
|
||||
>>7 byte 4 (GNU/Hurd)
|
||||
>>7 byte 5 (86Open)
|
||||
>>7 byte 6 (Solaris)
|
||||
>>7 byte 7 (Monterey)
|
||||
>>7 byte 8 (IRIX)
|
||||
>>7 byte 9 (FreeBSD)
|
||||
>>7 byte 10 (Tru64)
|
||||
>>7 byte 11 (Novell Modesto)
|
||||
>>7 byte 12 (OpenBSD)
|
||||
>8 string \2
|
||||
>>7 byte 13 (OpenVMS)
|
||||
>>7 byte 97 (ARM)
|
||||
>>7 byte 255 (embedded)
|
||||
>7 byte 0 (SYSV)
|
||||
>7 byte 1 (HP-UX)
|
||||
>7 byte 2 (NetBSD)
|
||||
>7 byte 3 (GNU/Linux)
|
||||
>7 byte 4 (GNU/Hurd)
|
||||
>7 byte 5 (86Open)
|
||||
>7 byte 6 (Solaris)
|
||||
>7 byte 7 (Monterey)
|
||||
>7 byte 8 (IRIX)
|
||||
>7 byte 9 (FreeBSD)
|
||||
>7 byte 10 (Tru64)
|
||||
>7 byte 11 (Novell Modesto)
|
||||
>7 byte 12 (OpenBSD)
|
||||
>7 byte 13 (OpenVMS)
|
||||
>7 byte 14 (HP NonStop Kernel)
|
||||
>7 byte 15 (AROS Research Operating System)
|
||||
>7 byte 16 (FenixOS)
|
||||
>7 byte 17 (Nuxi CloudABI)
|
||||
>7 byte 97 (ARM)
|
||||
>7 byte 255 (embedded)
|
||||
|
98
external/bsd/file/dist/magic/magdir/filesystems
vendored
98
external/bsd/file/dist/magic/magdir/filesystems
vendored
@ -1,5 +1,5 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: filesystems,v 1.108 2015/01/01 17:43:47 christos Exp $
|
||||
# $File: filesystems,v 1.116 2017/01/03 11:25:37 christos Exp $
|
||||
# filesystems: file(1) magic for different filesystems
|
||||
#
|
||||
0 name partid
|
||||
@ -539,8 +539,6 @@
|
||||
>>>514 string !HdrS
|
||||
# not BeOS
|
||||
>>>>422 string !Be\ Boot\ Loader
|
||||
>>>>>32769 string CD001
|
||||
>>>>>>0 use cdrom
|
||||
# jump over BPB instruction implies DOS bootsector or AdvanceMAME mbr
|
||||
>>>>>0 ubelong&0xFD000000 =0xE9000000
|
||||
# AdvanceMAME mbr
|
||||
@ -1721,7 +1719,7 @@
|
||||
0x410 leshort 0x137f
|
||||
!:strength / 2
|
||||
>0x402 beshort < 100
|
||||
>0x402 beshort > -1 Minix filesystem, V1, %d zones
|
||||
>0x402 beshort > -1 Minix filesystem, V1, 14 char names, %d zones
|
||||
>0x1e string minix \b, bootable
|
||||
0x410 beshort 0x137f
|
||||
!:strength / 2
|
||||
@ -1738,29 +1736,30 @@
|
||||
>0x402 beshort < 100
|
||||
>0x402 beshort > -1 Minix filesystem, V1, 30 char names (big endian), %d zones
|
||||
>0x1e string minix \b, bootable
|
||||
0x410 leshort 0x2468
|
||||
>0x402 beshort < 100
|
||||
>>0x402 beshort > -1 Minix filesystem, V2, %d zones
|
||||
>0x1e string minix \b, bootable
|
||||
0x410 beshort 0x2468
|
||||
>0x402 beshort < 100
|
||||
>0x402 beshort > -1 Minix filesystem, V2 (big endian), %d zones
|
||||
>0x1e string minix \b, bootable
|
||||
|
||||
0x410 leshort 0x2478
|
||||
>0x402 beshort < 100
|
||||
>0x402 beshort > -1 Minix filesystem, V2, 30 char names, %d zones
|
||||
>0x1e string minix \b, bootable
|
||||
0x410 leshort 0x2478
|
||||
>0x402 beshort < 100
|
||||
>0x402 beshort > -1 Minix filesystem, V2, 30 char names, %d zones
|
||||
>0x1e string minix \b, bootable
|
||||
0x410 beshort 0x2478
|
||||
>0x402 beshort !0 Minix filesystem, V2, 30 char names (big endian), %d zones
|
||||
>0x1e string minix \b, bootable
|
||||
0x410 leshort 0x4d5a
|
||||
>0x402 beshort !0 Minix filesystem, V3, %d zones
|
||||
>0x1e string minix \b, bootable
|
||||
# Weak Magic: this is $x
|
||||
#0x410 leshort 0x2468
|
||||
#>0x402 beshort < 100
|
||||
#>>0x402 beshort > -1 Minix filesystem, V2, 14 char names
|
||||
#>0x1e string minix \b, bootable
|
||||
#0x410 beshort 0x2468
|
||||
#>0x402 beshort < 100
|
||||
#>0x402 beshort > -1 Minix filesystem, V2 (big endian)
|
||||
#>0x1e string minix \b, bootable
|
||||
#0x410 leshort 0x2478
|
||||
#>0x402 beshort < 100
|
||||
#>0x402 beshort > -1 Minix filesystem, V2, 30 char names
|
||||
#>0x1e string minix \b, bootable
|
||||
#0x410 leshort 0x2478
|
||||
#>0x402 beshort < 100
|
||||
#>0x402 beshort > -1 Minix filesystem, V2, 30 char names
|
||||
#>0x1e string minix \b, bootable
|
||||
#0x410 beshort 0x2478
|
||||
#>0x402 beshort !0 Minix filesystem, V2, 30 char names (big endian)
|
||||
#>0x1e string minix \b, bootable
|
||||
# Weak Magic! this is MD
|
||||
#0x418 leshort 0x4d5a
|
||||
#>0x402 beshort <100
|
||||
#>>0x402 beshort > -1 Minix filesystem, V3, 60 char names
|
||||
|
||||
# SGI disk labels - Nathan Scott <nathans@debian.org>
|
||||
0 belong 0x0BE5A941 SGI disk label (volume header)
|
||||
@ -1928,6 +1927,8 @@
|
||||
>>38917 string 3 (version 2.0)
|
||||
>>38917 byte >0x33 (unknown version, ID 0x%X)
|
||||
>>38917 byte <0x31 (unknown version, ID 0x%X)
|
||||
# The next line is not necessary because the MBR staff is done looking for boot signature
|
||||
>0x1FE leshort 0xAA55 (DOS/MBR boot sector)
|
||||
# "application id" which appears to be used as a volume label
|
||||
>32808 string/T >\0 '%s'
|
||||
>34816 string \000CD001\001EL\ TORITO\ SPECIFICATION (bootable)
|
||||
@ -1948,7 +1949,19 @@
|
||||
>0 use cdrom
|
||||
|
||||
# .cso files
|
||||
0 string CISO Compressed ISO CD image
|
||||
# Reference: http://pismotec.com/ciso/ciso.h
|
||||
# NOTE: There are two other formats with the same magic but
|
||||
# completely incompatible specifications:
|
||||
# - GameCube/Wii CISO: https://github.com/dolphin-emu/dolphin/blob/master/Source/Core/DiscIO/CISOBlob.h
|
||||
# - PSP CISO: https://github.com/jamie/ciso/blob/master/ciso.h
|
||||
0 string CISO
|
||||
# Other fields are used to determine what type of CISO this is:
|
||||
# - 0x04 == 0x00200000: GameCube/Wii CISO (block_size)
|
||||
# - 0x10 == 0x00000800: PSP CISO (ISO-9660 sector size)
|
||||
# - None of the above: Compact ISO.
|
||||
>4 lelong !0
|
||||
>>4 lelong !0x200000
|
||||
>>>0x10 lelong !0x800 Compressed ISO CD image
|
||||
|
||||
# cramfs filesystem - russell@coker.com.au
|
||||
0 lelong 0x28cd3d45 Linux Compressed ROM File System data, little endian
|
||||
@ -2040,6 +2053,13 @@
|
||||
>29 byte 16 \bBlackfin,
|
||||
>29 byte 17 \bAVR32,
|
||||
>29 byte 18 \bSTMicroelectronics ST200,
|
||||
>29 byte 19 \bSandbox architecture,
|
||||
>29 byte 20 \bANDES Technology NDS32,
|
||||
>29 byte 21 \bOpenRISC 1000,
|
||||
>29 byte 22 \bARM 64-bit,
|
||||
>29 byte 23 \bDesignWare ARC,
|
||||
>29 byte 24 \bx86_64,
|
||||
>29 byte 25 \bXtensa,
|
||||
>30 byte 0 Invalid Image
|
||||
>30 byte 1 Standalone Program
|
||||
>30 byte 2 OS Kernel Image
|
||||
@ -2208,13 +2228,21 @@
|
||||
>>0x10024 belong x (blocksize %d,
|
||||
>>0x10060 string >\0 lockproto %s)
|
||||
|
||||
# BTRFS
|
||||
0x10040 string _BHRfS_M BTRFS Filesystem
|
||||
>0x1012b string >\0 (label "%s",
|
||||
>0x10090 lelong x sectorsize %d,
|
||||
>0x10094 lelong x nodesize %d,
|
||||
>0x10098 lelong x leafsize %d)
|
||||
|
||||
# Russell Coker <russell@coker.com.au>
|
||||
0x10040 string _BHRfS_M BTRFS Filesystem
|
||||
>0x1012b string >\0 label "%s",
|
||||
>0x10090 lelong x sectorsize %d,
|
||||
>0x10094 lelong x nodesize %d,
|
||||
>0x10098 lelong x leafsize %d,
|
||||
>0x10020 belong x UUID=%08x-
|
||||
>0x10024 beshort x \b%04x-
|
||||
>0x10026 beshort x \b%04x-
|
||||
>0x10028 beshort x \b%04x-
|
||||
>0x1002a beshort x \b%04x
|
||||
>0x1002c belong x \b%08x,
|
||||
>0x10078 lequad x %lld/
|
||||
>0x10070 lequad x \b%lld bytes used,
|
||||
>0x10088 lequad x %lld devices
|
||||
|
||||
# dvdisaster's .ecc
|
||||
# From: "Nelson A. de Oliveira" <naoliv@gmail.com>
|
||||
|
12
external/bsd/file/dist/magic/magdir/jpeg
vendored
12
external/bsd/file/dist/magic/magdir/jpeg
vendored
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: jpeg,v 1.26 2015/01/02 22:40:27 christos Exp $
|
||||
# $File: jpeg,v 1.30 2016/07/04 15:18:23 christos Exp $
|
||||
# JPEG images
|
||||
# SunOS 5.5.1 had
|
||||
#
|
||||
@ -12,7 +12,8 @@
|
||||
0 beshort 0xffd8 JPEG image data
|
||||
!:mime image/jpeg
|
||||
!:apple 8BIMJPEG
|
||||
!:strength +2
|
||||
!:strength *3
|
||||
!:ext jpeg/jpg/jpe/jfif
|
||||
>6 string JFIF \b, JFIF standard
|
||||
# The following added by Erik Rossen <rossen@freesurf.ch> 1999-09-06
|
||||
# in a vain attempt to add image size reporting for JFIF. Note that these
|
||||
@ -116,3 +117,10 @@
|
||||
# From: Mathieu Malaterre <mathieu.malaterre@gmail.com>
|
||||
0 belong 0xff4fff51 JPEG 2000 codestream
|
||||
45 beshort 0xff52
|
||||
|
||||
# JPEG extended range
|
||||
0 string \x49\x49\xbc
|
||||
>3 byte 1
|
||||
>>4 lelong%2 0 JPEG-XR
|
||||
!:mime image/jxr
|
||||
!:ext jxr
|
||||
|
19
external/bsd/file/dist/magic/magdir/netbsd
vendored
19
external/bsd/file/dist/magic/magdir/netbsd
vendored
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: netbsd,v 1.22 2014/12/08 20:53:52 christos Exp $
|
||||
# $File: netbsd,v 1.23 2015/11/29 01:55:14 christos Exp $
|
||||
# netbsd: file(1) magic for NetBSD objects
|
||||
#
|
||||
# All new-style magic numbers are in network byte order.
|
||||
@ -286,3 +286,20 @@
|
||||
>4 leshort x \b, (headersize = %d
|
||||
>6 leshort x \b, segmentsize = %d
|
||||
>6 lelong x \b, segments = %d)
|
||||
|
||||
# little endian only for now.
|
||||
0 name ktrace
|
||||
>4 leshort 7
|
||||
>>6 leshort <3 NetBSD ktrace file version %d
|
||||
>>>12 string x from %s
|
||||
>>>56 string x \b, emulation %s
|
||||
>>>8 lelong <65536 \b, pid=%d
|
||||
|
||||
56 string netbsd
|
||||
>0 use ktrace
|
||||
56 string linux
|
||||
>0 use ktrace
|
||||
56 string sunos
|
||||
>0 use ktrace
|
||||
56 string hpux
|
||||
>0 use ktrace
|
||||
|
65
external/bsd/file/dist/magic/magdir/pgp
vendored
65
external/bsd/file/dist/magic/magdir/pgp
vendored
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: pgp,v 1.11 2014/11/11 21:32:38 christos Exp $
|
||||
# $File: pgp,v 1.13 2017/01/22 21:13:13 christos Exp $
|
||||
# pgp: file(1) magic for Pretty Good Privacy
|
||||
# see http://lists.gnupg.org/pipermail/gnupg-devel/1999-September/016052.html
|
||||
#
|
||||
@ -19,15 +19,15 @@
|
||||
#>15 string SIGNED\040MESSAGE- signed message
|
||||
#>15 string PGP\040SIGNATURE- signature
|
||||
|
||||
2 string ---BEGIN\ PGP\ PUBLIC\ KEY\ BLOCK- PGP public key block
|
||||
2 string ---BEGIN\040PGP\040PUBLIC\040KEY\040BLOCK- PGP public key block
|
||||
!:mime application/pgp-keys
|
||||
>10 search/100 \n\n
|
||||
>>&0 use pgp
|
||||
0 string -----BEGIN\040PGP\40MESSAGE- PGP message
|
||||
0 string -----BEGIN\040PGP\040MESSAGE- PGP message
|
||||
!:mime application/pgp
|
||||
>10 search/100 \n\n
|
||||
>>&0 use pgp
|
||||
0 string -----BEGIN\040PGP\40SIGNATURE- PGP signature
|
||||
0 string -----BEGIN\040PGP\040SIGNATURE- PGP signature
|
||||
!:mime application/pgp-signature
|
||||
>10 search/100 \n\n
|
||||
>>&0 use pgp
|
||||
@ -194,6 +194,23 @@
|
||||
>0 byte 0x0a SHA512
|
||||
>0 byte 0x0b SHA224
|
||||
|
||||
# display public key algorithms as human readable text
|
||||
0 name key_algo
|
||||
>0 byte 0x01 RSA (Encrypt or Sign)
|
||||
# keep old look of version 5.28 without parentheses
|
||||
>0 byte 0x02 RSA Encrypt-Only
|
||||
>0 byte 0x03 RSA (Sign-Only)
|
||||
>0 byte 16 ElGamal (Encrypt-Only)
|
||||
>0 byte 17 DSA
|
||||
>0 byte 18 Elliptic Curve
|
||||
>0 byte 19 ECDSA
|
||||
>0 byte 20 ElGamal (Encrypt or Sign)
|
||||
>0 byte 21 Diffie-Hellman
|
||||
>0 default x
|
||||
>>0 ubyte <22 unknown (pub %d)
|
||||
# this should never happen
|
||||
>>0 ubyte >21 invalid (%d)
|
||||
|
||||
# pgp symmetric encrypted data
|
||||
|
||||
0 byte 0x8c PGP symmetric key encrypted data -
|
||||
@ -465,5 +482,41 @@
|
||||
>1 use pgpkey
|
||||
0 byte 0x97 PGP Secret Sub-key -
|
||||
>1 use pgpkey
|
||||
0 byte 0x9d PGP Secret Sub-key -
|
||||
>1 use pgpkey
|
||||
0 byte 0x9d
|
||||
# Update: Joerg Jenderek
|
||||
# secret subkey packet (tag 7) with same structure as secret key packet (tag 5)
|
||||
# skip Fetus.Sys16 CALIBUS.MAIN OrbFix.Sys16.Ex by looking for positive len
|
||||
>1 ubeshort >0
|
||||
#>1 ubeshort x \b, body length 0x%x
|
||||
# next packet type often 88h,89h~(tag 2)~Signature Packet
|
||||
#>>(1.S+3) ubyte x \b, next packet type 0x%x
|
||||
# skip Dragon.SHR DEMO.INIT by looking for positive version
|
||||
>>3 ubyte >0
|
||||
# skip BUISSON.13 GUITAR1 by looking for low version number
|
||||
>>>3 ubyte <5 PGP Secret Sub-key
|
||||
# sub-key are normally part of secret key. So it does not occur as standalone file
|
||||
#!:ext bin
|
||||
# version 2,3~old 4~new . Comment following line for version 5.28 look
|
||||
>>>>3 ubyte x (v%d)
|
||||
>>>>3 ubyte x -
|
||||
# old versions 2 or 3 but no real example found
|
||||
>>>>3 ubyte <4
|
||||
# 2 byte for key bits in version 5.28 look
|
||||
>>>>>11 ubeshort x %db
|
||||
>>>>>4 beldate x created on %s -
|
||||
# old versions use 2 additional bytes after time stamp
|
||||
#>>>>>8 ubeshort x 0x%x
|
||||
# display key algorithm 1~RSA Encrypt|Sign - 21~Diffie-Hellman
|
||||
>>>>>10 use key_algo
|
||||
>>>>>(11.S/8) ubequad x
|
||||
# look after first key
|
||||
>>>>>>&5 use keyend
|
||||
# new version
|
||||
>>>>3 ubyte >3
|
||||
>>>>>9 ubeshort x %db
|
||||
>>>>>4 beldate x created on %s -
|
||||
# display key algorithm
|
||||
>>>>>8 use key_algo
|
||||
>>>>>(9.S/8) ubequad x
|
||||
# look after first key for something like s2k
|
||||
>>>>>>&3 use keyend
|
||||
|
6
external/bsd/file/dist/missing
vendored
6
external/bsd/file/dist/missing
vendored
@ -1,9 +1,9 @@
|
||||
#! /bin/sh
|
||||
# Common wrapper for a few potentially missing GNU programs.
|
||||
|
||||
scriptversion=2012-06-26.16; # UTC
|
||||
scriptversion=2013-10-28.13; # UTC
|
||||
|
||||
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
|
||||
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
@ -160,7 +160,7 @@ give_advice ()
|
||||
;;
|
||||
autom4te*)
|
||||
echo "You might have modified some maintainer files that require"
|
||||
echo "the 'automa4te' program to be rebuilt."
|
||||
echo "the 'autom4te' program to be rebuilt."
|
||||
program_details 'autom4te'
|
||||
;;
|
||||
bison*|yacc*)
|
||||
|
22
external/bsd/file/dist/python/Makefile.in
vendored
22
external/bsd/file/dist/python/Makefile.in
vendored
@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.14 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -14,7 +14,17 @@
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
@ -77,7 +87,6 @@ POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = python
|
||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am README
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
@ -85,6 +94,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
@ -109,6 +119,7 @@ am__can_run_installinfo = \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in README
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
pkgdatadir = @pkgdatadir@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
@ -247,7 +258,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign python/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign python/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
@ -422,6 +432,8 @@ uninstall-am:
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags-am uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
|
64
external/bsd/file/dist/src/Makefile.in
vendored
64
external/bsd/file/dist/src/Makefile.in
vendored
@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.14 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -17,7 +17,17 @@
|
||||
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
@ -81,10 +91,6 @@ build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
bin_PROGRAMS = file$(EXEEXT)
|
||||
subdir = src
|
||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ctime_r.c \
|
||||
vasprintf.c asctime_r.c asprintf.c strcasestr.c pread.c \
|
||||
getline.c strlcpy.c strlcat.c fmtcheck.c getopt_long.c \
|
||||
$(top_srcdir)/depcomp $(include_HEADERS)
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
@ -92,6 +98,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
@ -130,8 +137,8 @@ am__DEPENDENCIES_1 =
|
||||
libmagic_la_DEPENDENCIES = $(LTLIBOBJS) $(am__DEPENDENCIES_1)
|
||||
am_libmagic_la_OBJECTS = magic.lo apprentice.lo softmagic.lo \
|
||||
ascmagic.lo encoding.lo compress.lo is_tar.lo readelf.lo \
|
||||
print.lo fsmagic.lo funcs.lo apptype.lo cdf.lo cdf_time.lo \
|
||||
readcdf.lo
|
||||
print.lo fsmagic.lo funcs.lo apptype.lo der.lo cdf.lo \
|
||||
cdf_time.lo readcdf.lo
|
||||
libmagic_la_OBJECTS = $(am_libmagic_la_OBJECTS)
|
||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
@ -185,7 +192,7 @@ am__can_run_installinfo = \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
HEADERS = $(include_HEADERS)
|
||||
HEADERS = $(nodist_include_HEADERS)
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
@ -205,6 +212,10 @@ am__define_uniq_tagged_files = \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
|
||||
asctime_r.c asprintf.c ctime_r.c dprintf.c fmtcheck.c \
|
||||
getline.c getopt_long.c gmtime_r.c localtime_r.c pread.c \
|
||||
strcasestr.c strlcat.c strlcpy.c vasprintf.c
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
pkgdatadir = @pkgdatadir@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
@ -329,12 +340,12 @@ top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
MAGIC = $(pkgdatadir)/magic
|
||||
lib_LTLIBRARIES = libmagic.la
|
||||
include_HEADERS = magic.h
|
||||
nodist_include_HEADERS = magic.h
|
||||
AM_CPPFLAGS = -DMAGIC='"$(MAGIC)"'
|
||||
AM_CFLAGS = $(CFLAG_VISIBILITY) @WARNINGS@
|
||||
libmagic_la_SOURCES = magic.c apprentice.c softmagic.c ascmagic.c \
|
||||
encoding.c compress.c is_tar.c readelf.c print.c fsmagic.c \
|
||||
funcs.c file.h readelf.h tar.h apptype.c \
|
||||
funcs.c file.h readelf.h tar.h apptype.c der.c der.h \
|
||||
file_opts.h elfclass.h mygetopt.h cdf.c cdf_time.c readcdf.c cdf.h
|
||||
|
||||
libmagic_la_LDFLAGS = -no-undefined -version-info 1:0:0
|
||||
@ -364,7 +375,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign src/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
@ -483,9 +493,12 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/asctime_r.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/asprintf.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/ctime_r.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/dprintf.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/fmtcheck.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getline.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getopt_long.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/gmtime_r.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/localtime_r.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/pread.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strcasestr.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strlcat.Plo@am__quote@
|
||||
@ -497,6 +510,7 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdf.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdf_time.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/compress.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/der.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encoding.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsmagic.Plo@am__quote@
|
||||
@ -537,9 +551,9 @@ mostlyclean-libtool:
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
install-includeHEADERS: $(include_HEADERS)
|
||||
install-nodist_includeHEADERS: $(nodist_include_HEADERS)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
|
||||
@list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
|
||||
@ -553,9 +567,9 @@ install-includeHEADERS: $(include_HEADERS)
|
||||
$(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
|
||||
done
|
||||
|
||||
uninstall-includeHEADERS:
|
||||
uninstall-nodist_includeHEADERS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
|
||||
@list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
|
||||
|
||||
@ -707,7 +721,7 @@ info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-includeHEADERS
|
||||
install-data-am: install-nodist_includeHEADERS
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
@ -753,8 +767,8 @@ ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS \
|
||||
uninstall-libLTLIBRARIES
|
||||
uninstall-am: uninstall-binPROGRAMS uninstall-libLTLIBRARIES \
|
||||
uninstall-nodist_includeHEADERS
|
||||
|
||||
.MAKE: all check install install-am install-strip
|
||||
|
||||
@ -765,15 +779,17 @@ uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-binPROGRAMS install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am \
|
||||
install-includeHEADERS install-info install-info-am \
|
||||
install-libLTLIBRARIES install-man install-pdf install-pdf-am \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-libLTLIBRARIES install-man \
|
||||
install-nodist_includeHEADERS install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \
|
||||
uninstall-includeHEADERS uninstall-libLTLIBRARIES
|
||||
uninstall-libLTLIBRARIES uninstall-nodist_includeHEADERS
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
magic.h: ${HDR}
|
||||
|
242
external/bsd/file/dist/src/apprentice.c
vendored
242
external/bsd/file/dist/src/apprentice.c
vendored
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: apprentice.c,v 1.14 2015/01/02 21:15:32 christos Exp $ */
|
||||
/* $NetBSD: apprentice.c,v 1.15 2017/02/10 17:53:24 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) Ian F. Darwin 1986-1995.
|
||||
@ -35,9 +35,9 @@
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
FILE_RCSID("@(#)$File: apprentice.c,v 1.229 2015/01/01 17:07:34 christos Exp $")
|
||||
FILE_RCSID("@(#)$File: apprentice.c,v 1.257 2017/02/04 16:46:16 christos Exp $")
|
||||
#else
|
||||
__RCSID("$NetBSD: apprentice.c,v 1.14 2015/01/02 21:15:32 christos Exp $");
|
||||
__RCSID("$NetBSD: apprentice.c,v 1.15 2017/02/10 17:53:24 christos Exp $");
|
||||
#endif
|
||||
#endif /* lint */
|
||||
|
||||
@ -92,9 +92,9 @@ __RCSID("$NetBSD: apprentice.c,v 1.14 2015/01/02 21:15:32 christos Exp $");
|
||||
#define ALLOC_CHUNK (size_t)10
|
||||
#define ALLOC_INCR (size_t)200
|
||||
|
||||
#define MAP_TYPE_MMAP 0
|
||||
#define MAP_TYPE_USER 0
|
||||
#define MAP_TYPE_MALLOC 1
|
||||
#define MAP_TYPE_USER 2
|
||||
#define MAP_TYPE_MMAP 2
|
||||
|
||||
struct magic_entry {
|
||||
struct magic *mp;
|
||||
@ -149,12 +149,13 @@ private int check_buffer(struct magic_set *, struct magic_map *, const char *);
|
||||
private void apprentice_unmap(struct magic_map *);
|
||||
private int apprentice_compile(struct magic_set *, struct magic_map *,
|
||||
const char *);
|
||||
private int check_format_type(const char *, int);
|
||||
private int check_format_type(const char *, int, const char **);
|
||||
private int check_format(struct magic_set *, struct magic *);
|
||||
private int get_op(char);
|
||||
private int parse_mime(struct magic_set *, struct magic_entry *, const char *);
|
||||
private int parse_strength(struct magic_set *, struct magic_entry *, const char *);
|
||||
private int parse_apple(struct magic_set *, struct magic_entry *, const char *);
|
||||
private int parse_ext(struct magic_set *, struct magic_entry *, const char *);
|
||||
|
||||
|
||||
private size_t magicsize = sizeof(struct magic);
|
||||
@ -169,6 +170,7 @@ private struct {
|
||||
#define DECLARE_FIELD(name) { # name, sizeof(# name) - 1, parse_ ## name }
|
||||
DECLARE_FIELD(mime),
|
||||
DECLARE_FIELD(apple),
|
||||
DECLARE_FIELD(ext),
|
||||
DECLARE_FIELD(strength),
|
||||
#undef DECLARE_FIELD
|
||||
{ NULL, 0, NULL }
|
||||
@ -272,6 +274,7 @@ static const struct type_tbl_s type_tbl[] = {
|
||||
{ XX("name"), FILE_NAME, FILE_FMT_NONE },
|
||||
{ XX("use"), FILE_USE, FILE_FMT_NONE },
|
||||
{ XX("clear"), FILE_CLEAR, FILE_FMT_NONE },
|
||||
{ XX("der"), FILE_DER, FILE_FMT_STR },
|
||||
{ XX_NULL, FILE_INVALID, FILE_FMT_NONE },
|
||||
};
|
||||
|
||||
@ -280,6 +283,7 @@ static const struct type_tbl_s type_tbl[] = {
|
||||
* unsigned.
|
||||
*/
|
||||
static const struct type_tbl_s special_tbl[] = {
|
||||
{ XX("der"), FILE_DER, FILE_FMT_STR },
|
||||
{ XX("name"), FILE_NAME, FILE_FMT_STR },
|
||||
{ XX("use"), FILE_USE, FILE_FMT_STR },
|
||||
{ XX_NULL, FILE_INVALID, FILE_FMT_NONE },
|
||||
@ -410,11 +414,11 @@ add_mlist(struct mlist *mlp, struct magic_map *map, size_t idx)
|
||||
{
|
||||
struct mlist *ml;
|
||||
|
||||
mlp->map = idx == 0 ? map : NULL;
|
||||
mlp->map = NULL;
|
||||
if ((ml = CAST(struct mlist *, malloc(sizeof(*ml)))) == NULL)
|
||||
return -1;
|
||||
|
||||
ml->map = NULL;
|
||||
ml->map = idx == 0 ? map : NULL;
|
||||
ml->magic = map->magic[idx];
|
||||
ml->nmagic = map->nmagic[idx];
|
||||
|
||||
@ -453,6 +457,8 @@ apprentice_1(struct magic_set *ms, const char *fn, int action)
|
||||
|
||||
#ifndef COMPILE_ONLY
|
||||
map = apprentice_map(ms, fn);
|
||||
if (map == (struct magic_map *)-1)
|
||||
return -1;
|
||||
if (map == NULL) {
|
||||
if (ms->flags & MAGIC_CHECK)
|
||||
file_magwarn(ms, "using regular magic file `%s'", fn);
|
||||
@ -464,7 +470,7 @@ apprentice_1(struct magic_set *ms, const char *fn, int action)
|
||||
for (i = 0; i < MAGIC_SETS; i++) {
|
||||
if (add_mlist(ms->mlist[i], map, i) == -1) {
|
||||
file_oomem(ms, sizeof(*ml));
|
||||
goto fail;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -478,12 +484,6 @@ apprentice_1(struct magic_set *ms, const char *fn, int action)
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
fail:
|
||||
for (i = 0; i < MAGIC_SETS; i++) {
|
||||
mlist_free(ms->mlist[i]);
|
||||
ms->mlist[i] = NULL;
|
||||
}
|
||||
return -1;
|
||||
#else
|
||||
return 0;
|
||||
#endif /* COMPILE_ONLY */
|
||||
@ -535,6 +535,8 @@ file_ms_alloc(int flags)
|
||||
ms->elf_shnum_max = FILE_ELF_SHNUM_MAX;
|
||||
ms->elf_phnum_max = FILE_ELF_PHNUM_MAX;
|
||||
ms->elf_notes_max = FILE_ELF_NOTES_MAX;
|
||||
ms->regex_max = FILE_REGEX_MAX;
|
||||
ms->bytes_max = FILE_BYTES_MAX;
|
||||
return ms;
|
||||
free:
|
||||
free(ms);
|
||||
@ -544,21 +546,28 @@ free:
|
||||
private void
|
||||
apprentice_unmap(struct magic_map *map)
|
||||
{
|
||||
size_t i;
|
||||
if (map == NULL)
|
||||
return;
|
||||
|
||||
switch (map->type) {
|
||||
case MAP_TYPE_USER:
|
||||
break;
|
||||
case MAP_TYPE_MALLOC:
|
||||
for (i = 0; i < MAGIC_SETS; i++) {
|
||||
if ((char *)map->magic[i] >= (char *)map->p &&
|
||||
(char *)map->magic[i] <= (char *)map->p + map->len)
|
||||
continue;
|
||||
free(map->magic[i]);
|
||||
}
|
||||
free(map->p);
|
||||
break;
|
||||
#ifdef QUICK
|
||||
case MAP_TYPE_MMAP:
|
||||
if (map->p)
|
||||
if (map->p && map->p != MAP_FAILED)
|
||||
(void)munmap(map->p, map->len);
|
||||
break;
|
||||
#endif
|
||||
case MAP_TYPE_MALLOC:
|
||||
free(map->p);
|
||||
break;
|
||||
case MAP_TYPE_USER:
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
@ -587,7 +596,7 @@ mlist_free(struct mlist *mlist)
|
||||
ml = mlist->next;
|
||||
for (ml = mlist->next; (next = ml->next) != NULL; ml = next) {
|
||||
if (ml->map)
|
||||
apprentice_unmap(ml->map);
|
||||
apprentice_unmap(CAST(struct magic_map *, ml->map));
|
||||
free(ml);
|
||||
if (ml == mlist)
|
||||
break;
|
||||
@ -862,6 +871,10 @@ apprentice_magic_strength(const struct magic *m)
|
||||
case FILE_USE:
|
||||
break;
|
||||
|
||||
case FILE_DER:
|
||||
val += MULT;
|
||||
break;
|
||||
|
||||
default:
|
||||
(void)fprintf(stderr, "Bad type %d\n", m->type);
|
||||
abort();
|
||||
@ -970,8 +983,9 @@ apprentice_list(struct mlist *mlist, int mode)
|
||||
*ml->magic[magindex].mimetype == '\0')
|
||||
magindex++;
|
||||
|
||||
printf("Strength = %3" SIZE_T_FORMAT "u : %s [%s]\n",
|
||||
printf("Strength = %3" SIZE_T_FORMAT "u@%u: %s [%s]\n",
|
||||
apprentice_magic_strength(m),
|
||||
ml->magic[magindex].lineno,
|
||||
ml->magic[magindex].desc,
|
||||
ml->magic[magindex].mimetype);
|
||||
}
|
||||
@ -1016,6 +1030,7 @@ set_test_type(struct magic *mstart, struct magic *m)
|
||||
case FILE_DOUBLE:
|
||||
case FILE_BEDOUBLE:
|
||||
case FILE_LEDOUBLE:
|
||||
case FILE_DER:
|
||||
mstart->flag |= BINTEST;
|
||||
break;
|
||||
case FILE_STRING:
|
||||
@ -1291,6 +1306,7 @@ apprentice_load(struct magic_set *ms, const char *fn, int action)
|
||||
file_oomem(ms, sizeof(*map));
|
||||
return NULL;
|
||||
}
|
||||
map->type = MAP_TYPE_MALLOC;
|
||||
|
||||
/* print silly verbose header for USG compat. */
|
||||
if (action == FILE_CHECK)
|
||||
@ -1351,8 +1367,9 @@ apprentice_load(struct magic_set *ms, const char *fn, int action)
|
||||
}
|
||||
i = set_text_binary(ms, mset[j].me, mset[j].count, i);
|
||||
}
|
||||
qsort(mset[j].me, mset[j].count, sizeof(*mset[j].me),
|
||||
apprentice_sort);
|
||||
if (mset[j].me)
|
||||
qsort(mset[j].me, mset[j].count, sizeof(*mset[j].me),
|
||||
apprentice_sort);
|
||||
|
||||
/*
|
||||
* Make sure that any level 0 "default" line is last
|
||||
@ -1445,6 +1462,7 @@ file_signextend(struct magic_set *ms, struct magic *m, uint64_t v)
|
||||
case FILE_NAME:
|
||||
case FILE_USE:
|
||||
case FILE_CLEAR:
|
||||
case FILE_DER:
|
||||
break;
|
||||
default:
|
||||
if (ms->flags & MAGIC_CHECK)
|
||||
@ -1845,24 +1863,31 @@ parse(struct magic_set *ms, struct magic_entry *me, const char *line,
|
||||
}
|
||||
}
|
||||
/* Indirect offsets are not valid at level 0. */
|
||||
if (m->cont_level == 0 && (m->flag & (OFFADD | INDIROFFADD)))
|
||||
if (m->cont_level == 0 && (m->flag & (OFFADD | INDIROFFADD))) {
|
||||
if (ms->flags & MAGIC_CHECK)
|
||||
file_magwarn(ms, "relative offset at level 0");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* get offset, then skip over it */
|
||||
m->offset = (uint32_t)strtoul(l, &t, 0);
|
||||
if (l == t)
|
||||
if (l == t) {
|
||||
if (ms->flags & MAGIC_CHECK)
|
||||
file_magwarn(ms, "offset `%s' invalid", l);
|
||||
return -1;
|
||||
}
|
||||
l = t;
|
||||
|
||||
if (m->flag & INDIR) {
|
||||
m->in_type = FILE_LONG;
|
||||
m->in_offset = 0;
|
||||
m->in_op = 0;
|
||||
/*
|
||||
* read [.lbs][+-]nnnnn)
|
||||
* read [.,lbs][+-]nnnnn)
|
||||
*/
|
||||
if (*l == '.') {
|
||||
if (*l == '.' || *l == ',') {
|
||||
if (*l == ',')
|
||||
m->in_op |= FILE_OPSIGNED;
|
||||
l++;
|
||||
switch (*l) {
|
||||
case 'l':
|
||||
@ -1909,12 +1934,11 @@ parse(struct magic_set *ms, struct magic_entry *me, const char *line,
|
||||
file_magwarn(ms,
|
||||
"indirect offset type `%c' invalid",
|
||||
*l);
|
||||
break;
|
||||
return -1;
|
||||
}
|
||||
l++;
|
||||
}
|
||||
|
||||
m->in_op = 0;
|
||||
if (*l == '~') {
|
||||
m->in_op |= FILE_OPINVERSE;
|
||||
l++;
|
||||
@ -1929,17 +1953,21 @@ parse(struct magic_set *ms, struct magic_entry *me, const char *line,
|
||||
}
|
||||
if (isdigit((unsigned char)*l) || *l == '-') {
|
||||
m->in_offset = (int32_t)strtol(l, &t, 0);
|
||||
if (l == t)
|
||||
if (l == t) {
|
||||
if (ms->flags & MAGIC_CHECK)
|
||||
file_magwarn(ms,
|
||||
"in_offset `%s' invalid", l);
|
||||
return -1;
|
||||
}
|
||||
l = t;
|
||||
}
|
||||
if (*l++ != ')' ||
|
||||
((m->in_op & FILE_OPINDIRECT) && *l++ != ')'))
|
||||
((m->in_op & FILE_OPINDIRECT) && *l++ != ')')) {
|
||||
if (ms->flags & MAGIC_CHECK)
|
||||
file_magwarn(ms,
|
||||
"missing ')' in indirect offset");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
EATAB;
|
||||
|
||||
@ -2092,7 +2120,7 @@ parse(struct magic_set *ms, struct magic_entry *me, const char *line,
|
||||
|
||||
/*
|
||||
* TODO finish this macro and start using it!
|
||||
* #define offsetcheck {if (offset > HOWMANY-1)
|
||||
* #define offsetcheck {if (offset > ms->bytes_max -1)
|
||||
* magwarn("offset too big"); }
|
||||
*/
|
||||
|
||||
@ -2256,7 +2284,20 @@ parse_apple(struct magic_set *ms, struct magic_entry *me, const char *line)
|
||||
|
||||
return parse_extra(ms, me, line,
|
||||
CAST(off_t, offsetof(struct magic, apple)),
|
||||
sizeof(m->apple), "APPLE", "!+-./", 0);
|
||||
sizeof(m->apple), "APPLE", "!+-./?", 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Parse a comma-separated list of extensions
|
||||
*/
|
||||
private int
|
||||
parse_ext(struct magic_set *ms, struct magic_entry *me, const char *line)
|
||||
{
|
||||
struct magic *m = &me->mp[0];
|
||||
|
||||
return parse_extra(ms, me, line,
|
||||
CAST(off_t, offsetof(struct magic, ext)),
|
||||
sizeof(m->ext), "EXTENSION", ",!+-/@", 0);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -2274,11 +2315,13 @@ parse_mime(struct magic_set *ms, struct magic_entry *me, const char *line)
|
||||
}
|
||||
|
||||
private int
|
||||
check_format_type(const char *ptr, int type)
|
||||
check_format_type(const char *ptr, int type, const char **estr)
|
||||
{
|
||||
int quad = 0, h;
|
||||
size_t len, cnt;
|
||||
if (*ptr == '\0') {
|
||||
/* Missing format string; bad */
|
||||
*estr = "missing format spec";
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -2315,15 +2358,22 @@ check_format_type(const char *ptr, int type)
|
||||
ptr++;
|
||||
if (*ptr == '.')
|
||||
ptr++;
|
||||
while (isdigit((unsigned char)*ptr)) ptr++;
|
||||
#define CHECKLEN() do { \
|
||||
for (len = cnt = 0; isdigit((unsigned char)*ptr); ptr++, cnt++) \
|
||||
len = len * 10 + (*ptr - '0'); \
|
||||
if (cnt > 5 || len > 1024) \
|
||||
goto toolong; \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
CHECKLEN();
|
||||
if (*ptr == '.')
|
||||
ptr++;
|
||||
while (isdigit((unsigned char)*ptr)) ptr++;
|
||||
CHECKLEN();
|
||||
if (quad) {
|
||||
if (*ptr++ != 'l')
|
||||
return -1;
|
||||
goto invalid;
|
||||
if (*ptr++ != 'l')
|
||||
return -1;
|
||||
goto invalid;
|
||||
}
|
||||
|
||||
switch (*ptr++) {
|
||||
@ -2337,9 +2387,11 @@ check_format_type(const char *ptr, int type)
|
||||
case 'o':
|
||||
case 'x':
|
||||
case 'X':
|
||||
return h != 0 ? -1 : 0;
|
||||
if (h == 0)
|
||||
return 0;
|
||||
/*FALLTHROUGH*/
|
||||
default:
|
||||
return -1;
|
||||
goto invalid;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -2348,11 +2400,11 @@ check_format_type(const char *ptr, int type)
|
||||
*/
|
||||
case 'h':
|
||||
if (h-- <= 0)
|
||||
return -1;
|
||||
goto invalid;
|
||||
switch (*ptr++) {
|
||||
case 'h':
|
||||
if (h-- <= 0)
|
||||
return -1;
|
||||
goto invalid;
|
||||
switch (*ptr++) {
|
||||
case 'i':
|
||||
case 'd':
|
||||
@ -2362,7 +2414,7 @@ check_format_type(const char *ptr, int type)
|
||||
case 'X':
|
||||
return 0;
|
||||
default:
|
||||
return -1;
|
||||
goto invalid;
|
||||
}
|
||||
case 'i':
|
||||
case 'd':
|
||||
@ -2370,13 +2422,17 @@ check_format_type(const char *ptr, int type)
|
||||
case 'o':
|
||||
case 'x':
|
||||
case 'X':
|
||||
return h != 0 ? -1 : 0;
|
||||
if (h == 0)
|
||||
return 0;
|
||||
/*FALLTHROUGH*/
|
||||
default:
|
||||
return -1;
|
||||
goto invalid;
|
||||
}
|
||||
#endif
|
||||
case 'c':
|
||||
return h != 2 ? -1 : 0;
|
||||
if (h == 2)
|
||||
return 0;
|
||||
goto invalid;
|
||||
case 'i':
|
||||
case 'd':
|
||||
case 'u':
|
||||
@ -2384,12 +2440,14 @@ check_format_type(const char *ptr, int type)
|
||||
case 'x':
|
||||
case 'X':
|
||||
#ifdef STRICT_FORMAT
|
||||
return h != 0 ? -1 : 0;
|
||||
if (h == 0)
|
||||
return 0;
|
||||
/*FALLTHROUGH*/
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
default:
|
||||
return -1;
|
||||
goto invalid;
|
||||
}
|
||||
|
||||
case FILE_FMT_FLOAT:
|
||||
@ -2398,11 +2456,10 @@ check_format_type(const char *ptr, int type)
|
||||
ptr++;
|
||||
if (*ptr == '.')
|
||||
ptr++;
|
||||
while (isdigit((unsigned char)*ptr)) ptr++;
|
||||
CHECKLEN();
|
||||
if (*ptr == '.')
|
||||
ptr++;
|
||||
while (isdigit((unsigned char)*ptr)) ptr++;
|
||||
|
||||
CHECKLEN();
|
||||
switch (*ptr++) {
|
||||
case 'e':
|
||||
case 'E':
|
||||
@ -2413,7 +2470,7 @@ check_format_type(const char *ptr, int type)
|
||||
return 0;
|
||||
|
||||
default:
|
||||
return -1;
|
||||
goto invalid;
|
||||
}
|
||||
|
||||
|
||||
@ -2432,14 +2489,17 @@ check_format_type(const char *ptr, int type)
|
||||
case 's':
|
||||
return 0;
|
||||
default:
|
||||
return -1;
|
||||
goto invalid;
|
||||
}
|
||||
|
||||
default:
|
||||
/* internal error */
|
||||
abort();
|
||||
}
|
||||
/*NOTREACHED*/
|
||||
invalid:
|
||||
*estr = "not valid";
|
||||
toolong:
|
||||
*estr = "too long";
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -2451,6 +2511,7 @@ private int
|
||||
check_format(struct magic_set *ms, struct magic *m)
|
||||
{
|
||||
char *ptr;
|
||||
const char *estr;
|
||||
|
||||
for (ptr = m->desc; *ptr; ptr++)
|
||||
if (*ptr == '%')
|
||||
@ -2474,13 +2535,13 @@ check_format(struct magic_set *ms, struct magic *m)
|
||||
}
|
||||
|
||||
ptr++;
|
||||
if (check_format_type(ptr, m->type) == -1) {
|
||||
if (check_format_type(ptr, m->type, &estr) == -1) {
|
||||
/*
|
||||
* TODO: this error message is unhelpful if the format
|
||||
* string is not one character long
|
||||
*/
|
||||
file_magwarn(ms, "Printf format `%c' is not valid for type "
|
||||
"`%s' in description `%s'", *ptr ? *ptr : '?',
|
||||
file_magwarn(ms, "Printf format is %s for type "
|
||||
"`%s' in description `%s'", estr,
|
||||
file_names[m->type], m->desc);
|
||||
return -1;
|
||||
}
|
||||
@ -2514,6 +2575,7 @@ getvalue(struct magic_set *ms, struct magic *m, const char **p, int action)
|
||||
case FILE_SEARCH:
|
||||
case FILE_NAME:
|
||||
case FILE_USE:
|
||||
case FILE_DER:
|
||||
*p = getstr(ms, m, *p, action == FILE_COMPILE);
|
||||
if (*p == NULL) {
|
||||
if (ms->flags & MAGIC_CHECK)
|
||||
@ -2537,12 +2599,14 @@ getvalue(struct magic_set *ms, struct magic *m, const char **p, int action)
|
||||
case FILE_LEFLOAT:
|
||||
if (m->reln != 'x') {
|
||||
char *ep;
|
||||
errno = 0;
|
||||
#ifdef HAVE_STRTOF
|
||||
m->value.f = strtof(*p, &ep);
|
||||
#else
|
||||
m->value.f = (float)strtod(*p, &ep);
|
||||
#endif
|
||||
*p = ep;
|
||||
if (errno == 0)
|
||||
*p = ep;
|
||||
}
|
||||
return 0;
|
||||
case FILE_DOUBLE:
|
||||
@ -2550,17 +2614,22 @@ getvalue(struct magic_set *ms, struct magic *m, const char **p, int action)
|
||||
case FILE_LEDOUBLE:
|
||||
if (m->reln != 'x') {
|
||||
char *ep;
|
||||
errno = 0;
|
||||
m->value.d = strtod(*p, &ep);
|
||||
*p = ep;
|
||||
if (errno == 0)
|
||||
*p = ep;
|
||||
}
|
||||
return 0;
|
||||
default:
|
||||
if (m->reln != 'x') {
|
||||
char *ep;
|
||||
errno = 0;
|
||||
m->value.q = file_signextend(ms, m,
|
||||
(uint64_t)strtoull(*p, &ep, 0));
|
||||
*p = ep;
|
||||
eatsize(p);
|
||||
if (errno == 0) {
|
||||
*p = ep;
|
||||
eatsize(p);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -2596,6 +2665,7 @@ getstr(struct magic_set *ms, struct magic *m, const char *s, int warn)
|
||||
case '\0':
|
||||
if (warn)
|
||||
file_magwarn(ms, "incomplete escape");
|
||||
s--;
|
||||
goto out;
|
||||
|
||||
case '\t':
|
||||
@ -2719,6 +2789,7 @@ getstr(struct magic_set *ms, struct magic *m, const char *s, int warn)
|
||||
} else
|
||||
*p++ = (char)c;
|
||||
}
|
||||
--s;
|
||||
out:
|
||||
*p = '\0';
|
||||
m->vallen = CAST(unsigned char, (p - origp));
|
||||
@ -2863,12 +2934,14 @@ apprentice_map(struct magic_set *ms, const char *fn)
|
||||
struct stat st;
|
||||
char *dbname = NULL;
|
||||
struct magic_map *map;
|
||||
struct magic_map *rv = NULL;
|
||||
|
||||
fd = -1;
|
||||
if ((map = CAST(struct magic_map *, calloc(1, sizeof(*map)))) == NULL) {
|
||||
file_oomem(ms, sizeof(*map));
|
||||
goto error;
|
||||
}
|
||||
map->type = MAP_TYPE_USER; /* unspecified */
|
||||
|
||||
dbname = mkdbname(ms, fn, 0);
|
||||
if (dbname == NULL)
|
||||
@ -2889,13 +2962,14 @@ apprentice_map(struct magic_set *ms, const char *fn)
|
||||
|
||||
map->len = (size_t)st.st_size;
|
||||
#ifdef QUICK
|
||||
map->type = MAP_TYPE_MMAP;
|
||||
if ((map->p = mmap(0, (size_t)st.st_size, PROT_READ|PROT_WRITE,
|
||||
MAP_PRIVATE|MAP_FILE, fd, (off_t)0)) == MAP_FAILED) {
|
||||
file_error(ms, errno, "cannot map `%s'", dbname);
|
||||
goto error;
|
||||
}
|
||||
map->type = MAP_TYPE_MMAP;
|
||||
#else
|
||||
map->type = MAP_TYPE_MALLOC;
|
||||
if ((map->p = CAST(void *, malloc(map->len))) == NULL) {
|
||||
file_oomem(ms, map->len);
|
||||
goto error;
|
||||
@ -2904,14 +2978,21 @@ apprentice_map(struct magic_set *ms, const char *fn)
|
||||
file_badread(ms);
|
||||
goto error;
|
||||
}
|
||||
map->type = MAP_TYPE_MALLOC;
|
||||
#define RET 1
|
||||
#endif
|
||||
(void)close(fd);
|
||||
fd = -1;
|
||||
|
||||
if (check_buffer(ms, map, dbname) != 0)
|
||||
if (check_buffer(ms, map, dbname) != 0) {
|
||||
rv = (struct magic_map *)-1;
|
||||
goto error;
|
||||
}
|
||||
#ifdef QUICK
|
||||
if (mprotect(map->p, (size_t)st.st_size, PROT_READ) == -1) {
|
||||
file_error(ms, errno, "cannot mprotect `%s'", dbname);
|
||||
goto error;
|
||||
}
|
||||
#endif
|
||||
|
||||
free(dbname);
|
||||
return map;
|
||||
@ -2921,7 +3002,7 @@ error:
|
||||
(void)close(fd);
|
||||
apprentice_unmap(map);
|
||||
free(dbname);
|
||||
return NULL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
private int
|
||||
@ -3030,6 +3111,7 @@ apprentice_compile(struct magic_set *ms, struct magic_map *map, const char *fn)
|
||||
(void)close(fd);
|
||||
rv = 0;
|
||||
out:
|
||||
apprentice_unmap(map);
|
||||
free(dbname);
|
||||
return rv;
|
||||
}
|
||||
@ -3076,7 +3158,7 @@ mkdbname(struct magic_set *ms, const char *fn, int strip)
|
||||
return NULL;
|
||||
|
||||
/* Compatibility with old code that looked in .mime */
|
||||
if (strstr(p, ".mime") != NULL)
|
||||
if (strstr(fn, ".mime") != NULL)
|
||||
ms->flags &= MAGIC_MIME_TYPE;
|
||||
return buf;
|
||||
}
|
||||
@ -3191,25 +3273,39 @@ file_pstring_length_size(const struct magic *m)
|
||||
}
|
||||
}
|
||||
protected size_t
|
||||
file_pstring_get_length(const struct magic *m, const char *s)
|
||||
file_pstring_get_length(const struct magic *m, const char *ss)
|
||||
{
|
||||
size_t len = 0;
|
||||
const unsigned char *s = (const unsigned char *)ss;
|
||||
unsigned int s3, s2, s1, s0;
|
||||
|
||||
switch (m->str_flags & PSTRING_LEN) {
|
||||
case PSTRING_1_LE:
|
||||
len = *s;
|
||||
break;
|
||||
case PSTRING_2_LE:
|
||||
len = (s[1] << 8) | s[0];
|
||||
s0 = s[0];
|
||||
s1 = s[1];
|
||||
len = (s1 << 8) | s0;
|
||||
break;
|
||||
case PSTRING_2_BE:
|
||||
len = (s[0] << 8) | s[1];
|
||||
s0 = s[0];
|
||||
s1 = s[1];
|
||||
len = (s0 << 8) | s1;
|
||||
break;
|
||||
case PSTRING_4_LE:
|
||||
len = (s[3] << 24) | (s[2] << 16) | (s[1] << 8) | s[0];
|
||||
s0 = s[0];
|
||||
s1 = s[1];
|
||||
s2 = s[2];
|
||||
s3 = s[3];
|
||||
len = (s3 << 24) | (s2 << 16) | (s1 << 8) | s0;
|
||||
break;
|
||||
case PSTRING_4_BE:
|
||||
len = (s[0] << 24) | (s[1] << 16) | (s[2] << 8) | s[3];
|
||||
s0 = s[0];
|
||||
s1 = s[1];
|
||||
s2 = s[2];
|
||||
s3 = s[3];
|
||||
len = (s0 << 24) | (s1 << 16) | (s2 << 8) | s3;
|
||||
break;
|
||||
default:
|
||||
abort(); /* Impossible */
|
||||
|
268
external/bsd/file/dist/src/cdf.c
vendored
268
external/bsd/file/dist/src/cdf.c
vendored
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: cdf.c,v 1.11 2015/01/02 21:15:32 christos Exp $ */
|
||||
/* $NetBSD: cdf.c,v 1.12 2017/02/10 17:53:24 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2008 Christos Zoulas
|
||||
@ -38,9 +38,9 @@
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
FILE_RCSID("@(#)$File: cdf.c,v 1.69 2014/12/04 15:56:46 christos Exp $")
|
||||
FILE_RCSID("@(#)$File: cdf.c,v 1.88 2017/02/07 23:21:29 christos Exp $")
|
||||
#else
|
||||
__RCSID("$NetBSD: cdf.c,v 1.11 2015/01/02 21:15:32 christos Exp $");
|
||||
__RCSID("$NetBSD: cdf.c,v 1.12 2017/02/10 17:53:24 christos Exp $");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ -272,14 +272,33 @@ cdf_unpack_dir(cdf_directory_t *d, char *buf)
|
||||
CDF_UNPACK(d->d_unused0);
|
||||
}
|
||||
|
||||
int
|
||||
cdf_zero_stream(cdf_stream_t *scn)
|
||||
{
|
||||
scn->sst_len = 0;
|
||||
scn->sst_dirlen = 0;
|
||||
scn->sst_ss = 0;
|
||||
free(scn->sst_tab);
|
||||
scn->sst_tab = NULL;
|
||||
return -1;
|
||||
}
|
||||
|
||||
static size_t
|
||||
cdf_check_stream(const cdf_stream_t *sst, const cdf_header_t *h)
|
||||
{
|
||||
size_t ss = sst->sst_dirlen < h->h_min_size_standard_stream ?
|
||||
CDF_SHORT_SEC_SIZE(h) : CDF_SEC_SIZE(h);
|
||||
assert(ss == sst->sst_ss);
|
||||
return sst->sst_ss;
|
||||
}
|
||||
|
||||
static int
|
||||
cdf_check_stream_offset(const cdf_stream_t *sst, const cdf_header_t *h,
|
||||
const void *p, size_t tail, int line)
|
||||
{
|
||||
const char *b = (const char *)sst->sst_tab;
|
||||
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);
|
||||
size_t ss = cdf_check_stream(sst, h);
|
||||
/*LINTED*/(void)&line;
|
||||
if (e >= b && (size_t)(e - b) <= ss * sst->sst_len)
|
||||
return 0;
|
||||
@ -296,10 +315,8 @@ cdf_read(const cdf_info_t *info, off_t off, void *buf, size_t len)
|
||||
{
|
||||
size_t siz = (size_t)off + len;
|
||||
|
||||
if ((off_t)(off + len) != (off_t)siz) {
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
if ((off_t)(off + len) != (off_t)siz)
|
||||
goto out;
|
||||
|
||||
if (info->i_buf != NULL && info->i_len >= siz) {
|
||||
(void)memcpy(buf, &info->i_buf[off], len);
|
||||
@ -307,12 +324,15 @@ cdf_read(const cdf_info_t *info, off_t off, void *buf, size_t len)
|
||||
}
|
||||
|
||||
if (info->i_fd == -1)
|
||||
return -1;
|
||||
goto out;
|
||||
|
||||
if (pread(info->i_fd, buf, len, off) != (ssize_t)len)
|
||||
return -1;
|
||||
|
||||
return (ssize_t)len;
|
||||
out:
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
|
||||
int
|
||||
@ -369,11 +389,14 @@ cdf_read_short_sector(const cdf_stream_t *sst, void *buf, size_t offs,
|
||||
DPRINTF(("Out of bounds read %" SIZE_T_FORMAT "u > %"
|
||||
SIZE_T_FORMAT "u\n",
|
||||
pos + len, CDF_SEC_SIZE(h) * sst->sst_len));
|
||||
return -1;
|
||||
goto out;
|
||||
}
|
||||
(void)memcpy(((char *)buf) + offs,
|
||||
((const char *)sst->sst_tab) + pos, len);
|
||||
return len;
|
||||
out:
|
||||
errno = EFTYPE;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -427,8 +450,7 @@ cdf_read_sat(const cdf_info_t *info, cdf_header_t *h, cdf_sat_t *sat)
|
||||
goto out;
|
||||
if (j >= CDF_LOOP_LIMIT) {
|
||||
DPRINTF(("Reading master sector loop limit"));
|
||||
errno = EFTYPE;
|
||||
goto out2;
|
||||
goto out3;
|
||||
}
|
||||
if (cdf_read_sector(info, msa, 0, ss, h, mid) != (ssize_t)ss) {
|
||||
DPRINTF(("Reading master sector %d", mid));
|
||||
@ -441,8 +463,7 @@ cdf_read_sat(const cdf_info_t *info, cdf_header_t *h, cdf_sat_t *sat)
|
||||
if (i >= sat->sat_len) {
|
||||
DPRINTF(("Out of bounds reading MSA %" SIZE_T_FORMAT
|
||||
"u >= %" SIZE_T_FORMAT "u", i, sat->sat_len));
|
||||
errno = EFTYPE;
|
||||
goto out2;
|
||||
goto out3;
|
||||
}
|
||||
if (cdf_read_sector(info, sat->sat_tab, ss * i, ss, h,
|
||||
sec) != (ssize_t)ss) {
|
||||
@ -457,6 +478,8 @@ out:
|
||||
sat->sat_len = i;
|
||||
free(msa);
|
||||
return 0;
|
||||
out3:
|
||||
errno = EFTYPE;
|
||||
out2:
|
||||
free(msa);
|
||||
out1:
|
||||
@ -482,23 +505,24 @@ cdf_count_chain(const cdf_sat_t *sat, cdf_secid_t sid, size_t size)
|
||||
DPRINTF((" %d", sid));
|
||||
if (j >= CDF_LOOP_LIMIT) {
|
||||
DPRINTF(("Counting chain loop limit"));
|
||||
errno = EFTYPE;
|
||||
return (size_t)-1;
|
||||
goto out;
|
||||
}
|
||||
if (sid >= maxsector) {
|
||||
DPRINTF(("Sector %d >= %d\n", sid, maxsector));
|
||||
errno = EFTYPE;
|
||||
return (size_t)-1;
|
||||
goto out;
|
||||
}
|
||||
sid = CDF_TOLE4((uint32_t)sat->sat_tab[sid]);
|
||||
}
|
||||
if (i == 0) {
|
||||
DPRINTF((" none, sid: %d\n", sid));
|
||||
return (size_t)-1;
|
||||
goto out;
|
||||
|
||||
}
|
||||
DPRINTF(("\n"));
|
||||
return i;
|
||||
out:
|
||||
errno = EFTYPE;
|
||||
return (size_t)-1;
|
||||
}
|
||||
|
||||
int
|
||||
@ -507,27 +531,30 @@ cdf_read_long_sector_chain(const cdf_info_t *info, const cdf_header_t *h,
|
||||
{
|
||||
size_t ss = CDF_SEC_SIZE(h), i, j;
|
||||
ssize_t nr;
|
||||
scn->sst_tab = NULL;
|
||||
scn->sst_len = cdf_count_chain(sat, sid, ss);
|
||||
scn->sst_dirlen = len;
|
||||
scn->sst_dirlen = MAX(h->h_min_size_standard_stream, len);
|
||||
scn->sst_ss = ss;
|
||||
|
||||
if (sid == CDF_SECID_END_OF_CHAIN || len == 0)
|
||||
return cdf_zero_stream(scn);
|
||||
|
||||
if (scn->sst_len == (size_t)-1)
|
||||
return -1;
|
||||
goto out;
|
||||
|
||||
scn->sst_tab = calloc(scn->sst_len, ss);
|
||||
if (scn->sst_tab == NULL)
|
||||
return -1;
|
||||
return cdf_zero_stream(scn);
|
||||
|
||||
for (j = i = 0; sid >= 0; i++, j++) {
|
||||
if (j >= CDF_LOOP_LIMIT) {
|
||||
DPRINTF(("Read long sector chain loop limit"));
|
||||
errno = EFTYPE;
|
||||
goto out;
|
||||
}
|
||||
if (i >= scn->sst_len) {
|
||||
DPRINTF(("Out of bounds reading long sector chain "
|
||||
"%" SIZE_T_FORMAT "u > %" SIZE_T_FORMAT "u\n", i,
|
||||
scn->sst_len));
|
||||
errno = EFTYPE;
|
||||
goto out;
|
||||
}
|
||||
if ((nr = cdf_read_sector(info, scn->sst_tab, i * ss, ss, h,
|
||||
@ -543,8 +570,8 @@ cdf_read_long_sector_chain(const cdf_info_t *info, const cdf_header_t *h,
|
||||
}
|
||||
return 0;
|
||||
out:
|
||||
free(scn->sst_tab);
|
||||
return -1;
|
||||
errno = EFTYPE;
|
||||
return cdf_zero_stream(scn);
|
||||
}
|
||||
|
||||
int
|
||||
@ -553,27 +580,27 @@ cdf_read_short_sector_chain(const cdf_header_t *h,
|
||||
cdf_secid_t sid, size_t len, cdf_stream_t *scn)
|
||||
{
|
||||
size_t ss = CDF_SHORT_SEC_SIZE(h), i, j;
|
||||
scn->sst_tab = NULL;
|
||||
scn->sst_len = cdf_count_chain(ssat, sid, CDF_SEC_SIZE(h));
|
||||
scn->sst_dirlen = len;
|
||||
scn->sst_ss = ss;
|
||||
|
||||
if (sst->sst_tab == NULL || scn->sst_len == (size_t)-1)
|
||||
return -1;
|
||||
if (scn->sst_len == (size_t)-1)
|
||||
goto out;
|
||||
|
||||
scn->sst_tab = calloc(scn->sst_len, ss);
|
||||
if (scn->sst_tab == NULL)
|
||||
return -1;
|
||||
return cdf_zero_stream(scn);
|
||||
|
||||
for (j = i = 0; sid >= 0; i++, j++) {
|
||||
if (j >= CDF_LOOP_LIMIT) {
|
||||
DPRINTF(("Read short sector chain loop limit"));
|
||||
errno = EFTYPE;
|
||||
goto out;
|
||||
}
|
||||
if (i >= scn->sst_len) {
|
||||
DPRINTF(("Out of bounds reading short sector chain "
|
||||
"%" SIZE_T_FORMAT "u > %" SIZE_T_FORMAT "u\n",
|
||||
i, scn->sst_len));
|
||||
errno = EFTYPE;
|
||||
goto out;
|
||||
}
|
||||
if (cdf_read_short_sector(sst, scn->sst_tab, i * ss, ss, h,
|
||||
@ -585,8 +612,8 @@ cdf_read_short_sector_chain(const cdf_header_t *h,
|
||||
}
|
||||
return 0;
|
||||
out:
|
||||
free(scn->sst_tab);
|
||||
return -1;
|
||||
errno = EFTYPE;
|
||||
return cdf_zero_stream(scn);
|
||||
}
|
||||
|
||||
int
|
||||
@ -631,7 +658,6 @@ cdf_read_dir(const cdf_info_t *info, const cdf_header_t *h,
|
||||
for (j = i = 0; i < ns; i++, j++) {
|
||||
if (j >= CDF_LOOP_LIMIT) {
|
||||
DPRINTF(("Read dir loop limit"));
|
||||
errno = EFTYPE;
|
||||
goto out;
|
||||
}
|
||||
if (cdf_read_sector(info, buf, 0, ss, h, sid) != (ssize_t)ss) {
|
||||
@ -652,6 +678,7 @@ cdf_read_dir(const cdf_info_t *info, const cdf_header_t *h,
|
||||
out:
|
||||
free(dir->dir_tab);
|
||||
free(buf);
|
||||
errno = EFTYPE;
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -664,36 +691,37 @@ cdf_read_ssat(const cdf_info_t *info, const cdf_header_t *h,
|
||||
size_t ss = CDF_SEC_SIZE(h);
|
||||
cdf_secid_t sid = h->h_secid_first_sector_in_short_sat;
|
||||
|
||||
ssat->sat_len = cdf_count_chain(sat, sid, CDF_SEC_SIZE(h));
|
||||
ssat->sat_tab = NULL;
|
||||
ssat->sat_len = cdf_count_chain(sat, sid, ss);
|
||||
if (ssat->sat_len == (size_t)-1)
|
||||
return -1;
|
||||
goto out;
|
||||
|
||||
ssat->sat_tab = CAST(cdf_secid_t *, calloc(ssat->sat_len, ss));
|
||||
if (ssat->sat_tab == NULL)
|
||||
return -1;
|
||||
goto out1;
|
||||
|
||||
for (j = i = 0; sid >= 0; i++, j++) {
|
||||
if (j >= CDF_LOOP_LIMIT) {
|
||||
DPRINTF(("Read short sat sector loop limit"));
|
||||
errno = EFTYPE;
|
||||
goto out;
|
||||
}
|
||||
if (i >= ssat->sat_len) {
|
||||
DPRINTF(("Out of bounds reading short sector chain "
|
||||
"%" SIZE_T_FORMAT "u > %" SIZE_T_FORMAT "u\n", i,
|
||||
ssat->sat_len));
|
||||
errno = EFTYPE;
|
||||
goto out;
|
||||
}
|
||||
if (cdf_read_sector(info, ssat->sat_tab, i * ss, ss, h, sid) !=
|
||||
(ssize_t)ss) {
|
||||
DPRINTF(("Reading short sat sector %d", sid));
|
||||
goto out;
|
||||
goto out1;
|
||||
}
|
||||
sid = CDF_TOLE4((uint32_t)sat->sat_tab[sid]);
|
||||
}
|
||||
return 0;
|
||||
out:
|
||||
errno = EFTYPE;
|
||||
out1:
|
||||
free(ssat->sat_tab);
|
||||
return -1;
|
||||
}
|
||||
@ -712,21 +740,24 @@ cdf_read_short_stream(const cdf_info_t *info, const cdf_header_t *h,
|
||||
break;
|
||||
|
||||
/* If the it is not there, just fake it; some docs don't have it */
|
||||
if (i == dir->dir_len)
|
||||
if (i == dir->dir_len) {
|
||||
DPRINTF(("Cannot find root storage dir\n"));
|
||||
goto out;
|
||||
}
|
||||
d = &dir->dir_tab[i];
|
||||
*root = d;
|
||||
|
||||
/* If the it is not there, just fake it; some docs don't have it */
|
||||
if (d->d_stream_first_sector < 0)
|
||||
if (d->d_stream_first_sector < 0) {
|
||||
DPRINTF(("No first secror in dir\n"));
|
||||
goto out;
|
||||
}
|
||||
|
||||
return cdf_read_long_sector_chain(info, h, sat,
|
||||
return cdf_read_long_sector_chain(info, h, sat,
|
||||
d->d_stream_first_sector, d->d_size, scn);
|
||||
out:
|
||||
scn->sst_tab = NULL;
|
||||
scn->sst_len = 0;
|
||||
scn->sst_dirlen = 0;
|
||||
(void)cdf_zero_stream(scn);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -739,6 +770,15 @@ cdf_namecmp(const char *d, const uint16_t *s, size_t l)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
cdf_read_doc_summary_info(const cdf_info_t *info, const cdf_header_t *h,
|
||||
const cdf_sat_t *sat, const cdf_sat_t *ssat, const cdf_stream_t *sst,
|
||||
const cdf_dir_t *dir, cdf_stream_t *scn)
|
||||
{
|
||||
return cdf_read_user_stream(info, h, sat, ssat, sst, dir,
|
||||
"\05DocumentSummaryInformation", scn);
|
||||
}
|
||||
|
||||
int
|
||||
cdf_read_summary_info(const cdf_info_t *info, const cdf_header_t *h,
|
||||
const cdf_sat_t *sat, const cdf_sat_t *ssat, const cdf_stream_t *sst,
|
||||
@ -753,26 +793,37 @@ cdf_read_user_stream(const cdf_info_t *info, const cdf_header_t *h,
|
||||
const cdf_sat_t *sat, const cdf_sat_t *ssat, const cdf_stream_t *sst,
|
||||
const cdf_dir_t *dir, const char *name, cdf_stream_t *scn)
|
||||
{
|
||||
size_t i;
|
||||
const cdf_directory_t *d;
|
||||
size_t name_len = strlen(name) + 1;
|
||||
int i = cdf_find_stream(dir, name, CDF_DIR_TYPE_USER_STREAM);
|
||||
|
||||
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, name_len)
|
||||
== 0)
|
||||
break;
|
||||
|
||||
if (i == 0) {
|
||||
DPRINTF(("Cannot find user stream `%s'\n", name));
|
||||
errno = ESRCH;
|
||||
if (i <= 0) {
|
||||
memset(scn, 0, sizeof(*scn));
|
||||
return -1;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
int
|
||||
cdf_find_stream(const cdf_dir_t *dir, const char *name, int type)
|
||||
{
|
||||
size_t i, name_len = strlen(name) + 1;
|
||||
|
||||
for (i = dir->dir_len; i > 0; i--)
|
||||
if (dir->dir_tab[i - 1].d_type == type &&
|
||||
cdf_namecmp(name, dir->dir_tab[i - 1].d_name, name_len)
|
||||
== 0)
|
||||
break;
|
||||
if (i > 0)
|
||||
return i;
|
||||
|
||||
DPRINTF(("Cannot find type %d `%s'\n", type, name));
|
||||
errno = ESRCH;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
cdf_read_property_info(const cdf_stream_t *sst, const cdf_header_t *h,
|
||||
uint32_t offs, cdf_property_info_t **info, size_t *count, size_t *maxcount)
|
||||
@ -821,7 +872,7 @@ cdf_read_property_info(const cdf_stream_t *sst, const cdf_header_t *h,
|
||||
malloc(*maxcount * sizeof(*inp)));
|
||||
}
|
||||
if (inp == NULL)
|
||||
goto out;
|
||||
goto out1;
|
||||
*info = inp;
|
||||
inp += *count;
|
||||
*count += sh.sh_properties;
|
||||
@ -846,8 +897,8 @@ cdf_read_property_info(const cdf_stream_t *sst, const cdf_header_t *h,
|
||||
DPRINTF(("Wrapped around %p < %p\n", q, p));
|
||||
goto out;
|
||||
}
|
||||
if (q > e) {
|
||||
DPRINTF(("Ran of the end %p > %p\n", q, e));
|
||||
if (q >= e) {
|
||||
DPRINTF(("Ran of the end %p >= %p\n", q, e));
|
||||
goto out;
|
||||
}
|
||||
inp[i].pi_id = CDF_GETUINT32(p, i << 1);
|
||||
@ -928,7 +979,7 @@ cdf_read_property_info(const cdf_stream_t *sst, const cdf_header_t *h,
|
||||
inp = CAST(cdf_property_info_t *,
|
||||
realloc(*info, *maxcount * sizeof(*inp)));
|
||||
if (inp == NULL)
|
||||
goto out;
|
||||
goto out1;
|
||||
*info = inp;
|
||||
inp = *info + nelem;
|
||||
}
|
||||
@ -973,6 +1024,8 @@ cdf_read_property_info(const cdf_stream_t *sst, const cdf_header_t *h,
|
||||
}
|
||||
return 0;
|
||||
out:
|
||||
errno = EFTYPE;
|
||||
out1:
|
||||
free(*info);
|
||||
return -1;
|
||||
}
|
||||
@ -1008,50 +1061,76 @@ cdf_unpack_summary_info(const cdf_stream_t *sst, const cdf_header_t *h,
|
||||
|
||||
|
||||
#define extract_catalog_field(t, f, l) \
|
||||
memcpy(&ce[i].f, b + (l), sizeof(ce[i].f)); \
|
||||
ce[i].f = CAST(t, CDF_TOLE(ce[i].f))
|
||||
if (b + l + sizeof(cep->f) > eb) { \
|
||||
cep->ce_namlen = 0; \
|
||||
break; \
|
||||
} \
|
||||
memcpy(&cep->f, b + (l), sizeof(cep->f)); \
|
||||
ce[i].f = CAST(t, CDF_TOLE(cep->f))
|
||||
|
||||
int
|
||||
cdf_unpack_catalog(const cdf_header_t *h, const cdf_stream_t *sst,
|
||||
cdf_catalog_t **cat)
|
||||
{
|
||||
size_t ss = sst->sst_dirlen < h->h_min_size_standard_stream ?
|
||||
CDF_SHORT_SEC_SIZE(h) : CDF_SEC_SIZE(h);
|
||||
size_t ss = cdf_check_stream(sst, h);
|
||||
const char *b = CAST(const char *, sst->sst_tab);
|
||||
const char *eb = b + ss * sst->sst_len;
|
||||
size_t nr, i, k;
|
||||
size_t nr, i, j, k;
|
||||
cdf_catalog_entry_t *ce;
|
||||
uint16_t reclen;
|
||||
const uint16_t *np;
|
||||
|
||||
for (nr = 0; b < eb; nr++) {
|
||||
for (nr = 0;; nr++) {
|
||||
memcpy(&reclen, b, sizeof(reclen));
|
||||
reclen = CDF_TOLE2(reclen);
|
||||
if (reclen == 0)
|
||||
break;
|
||||
b += reclen;
|
||||
if (b > eb)
|
||||
break;
|
||||
}
|
||||
if (nr == 0)
|
||||
return -1;
|
||||
nr--;
|
||||
*cat = CAST(cdf_catalog_t *,
|
||||
malloc(sizeof(cdf_catalog_t) + nr * sizeof(*ce)));
|
||||
(*cat)->cat_num = nr;
|
||||
if (*cat == NULL)
|
||||
return -1;
|
||||
ce = (*cat)->cat_e;
|
||||
memset(ce, 0, nr * sizeof(*ce));
|
||||
b = CAST(const char *, sst->sst_tab);
|
||||
for (i = 0; i < nr; i++) {
|
||||
for (j = i = 0; i < nr; b += reclen) {
|
||||
cdf_catalog_entry_t *cep = &ce[j];
|
||||
uint16_t rlen;
|
||||
|
||||
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 *, CAST(const void *, (b + 16)));
|
||||
for (k = 0; k < ce[i].ce_namlen; k++) {
|
||||
ce[i].ce_name[k] = np[k]; /* XXX: CDF_TOLE2? */
|
||||
extract_catalog_field(uint16_t, ce_num, 4);
|
||||
extract_catalog_field(uint64_t, ce_timestamp, 8);
|
||||
reclen = cep->ce_namlen;
|
||||
|
||||
if (reclen < 14) {
|
||||
cep->ce_namlen = 0;
|
||||
continue;
|
||||
}
|
||||
ce[i].ce_name[ce[i].ce_namlen] = 0;
|
||||
b += reclen;
|
||||
|
||||
cep->ce_namlen = __arraycount(cep->ce_name) - 1;
|
||||
rlen = reclen - 14;
|
||||
if (cep->ce_namlen > rlen)
|
||||
cep->ce_namlen = rlen;
|
||||
|
||||
np = CAST(const uint16_t *, CAST(const void *, (b + 16)));
|
||||
if (RCAST(const char *, np + cep->ce_namlen) > eb) {
|
||||
cep->ce_namlen = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
for (k = 0; k < cep->ce_namlen; k++)
|
||||
cep->ce_name[k] = np[k]; /* XXX: CDF_TOLE2? */
|
||||
cep->ce_name[cep->ce_namlen] = 0;
|
||||
j = i;
|
||||
i++;
|
||||
}
|
||||
(*cat)->cat_num = j;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1196,11 +1275,12 @@ cdf_dump_sat(const char *prefix, const cdf_sat_t *sat, size_t size)
|
||||
}
|
||||
|
||||
void
|
||||
cdf_dump(void *v, size_t len)
|
||||
cdf_dump(const void *v, size_t len)
|
||||
{
|
||||
size_t i, j;
|
||||
unsigned char *p = v;
|
||||
const unsigned char *p = v;
|
||||
char abuf[16];
|
||||
|
||||
(void)fprintf(stderr, "%.4x: ", 0);
|
||||
for (i = 0, j = 0; i < len; i++, p++) {
|
||||
(void)fprintf(stderr, "%.2x ", *p);
|
||||
@ -1216,10 +1296,9 @@ cdf_dump(void *v, size_t len)
|
||||
}
|
||||
|
||||
void
|
||||
cdf_dump_stream(const cdf_header_t *h, const cdf_stream_t *sst)
|
||||
cdf_dump_stream(const cdf_stream_t *sst)
|
||||
{
|
||||
size_t ss = sst->sst_dirlen < h->h_min_size_standard_stream ?
|
||||
CDF_SHORT_SEC_SIZE(h) : CDF_SEC_SIZE(h);
|
||||
size_t ss = sst->sst_ss;
|
||||
cdf_dump(sst->sst_tab, ss * sst->sst_len);
|
||||
}
|
||||
|
||||
@ -1273,7 +1352,7 @@ cdf_dump_dir(const cdf_info_t *info, const cdf_header_t *h,
|
||||
name, d->d_stream_first_sector, d->d_size);
|
||||
break;
|
||||
}
|
||||
cdf_dump_stream(h, &scn);
|
||||
cdf_dump_stream(&scn);
|
||||
free(scn.sst_tab);
|
||||
break;
|
||||
default:
|
||||
@ -1335,10 +1414,10 @@ cdf_dump_property_info(const cdf_property_info_t *info, size_t count)
|
||||
cdf_print_elapsed_time(buf, sizeof(buf), tp);
|
||||
(void)fprintf(stderr, "timestamp %s\n", buf);
|
||||
} else {
|
||||
char buf[26];
|
||||
char tbuf[26];
|
||||
cdf_timestamp_to_timespec(&ts, tp);
|
||||
(void)fprintf(stderr, "timestamp %s",
|
||||
cdf_ctime(&ts.tv_sec, buf));
|
||||
cdf_ctime(&ts.tv_sec, tbuf));
|
||||
}
|
||||
break;
|
||||
case CDF_CLIPBOARD:
|
||||
@ -1409,7 +1488,10 @@ main(int argc, char *argv[])
|
||||
cdf_dir_t dir;
|
||||
cdf_info_t info;
|
||||
const cdf_directory_t *root;
|
||||
|
||||
#ifdef __linux__
|
||||
#define getprogname() __progname
|
||||
extern char *__progname;
|
||||
#endif
|
||||
if (argc < 2) {
|
||||
(void)fprintf(stderr, "Usage: %s <filename>\n", getprogname());
|
||||
return -1;
|
||||
@ -1446,7 +1528,7 @@ main(int argc, char *argv[])
|
||||
== -1)
|
||||
err(1, "Cannot read short stream");
|
||||
#ifdef CDF_DEBUG
|
||||
cdf_dump_stream(&h, &sst);
|
||||
cdf_dump_stream(&sst);
|
||||
#endif
|
||||
|
||||
#ifdef CDF_DEBUG
|
||||
@ -1461,8 +1543,8 @@ main(int argc, char *argv[])
|
||||
else
|
||||
cdf_dump_summary_info(&h, &scn);
|
||||
#endif
|
||||
if (cdf_read_catalog(&info, &h, &sat, &ssat, &sst, &dir,
|
||||
&scn) == -1)
|
||||
if (cdf_read_user_stream(&info, &h, &sat, &ssat, &sst,
|
||||
&dir, "Catalog", &scn) == -1)
|
||||
warn("Cannot read catalog");
|
||||
#ifdef CDF_DEBUG
|
||||
else
|
||||
|
639
external/bsd/file/dist/src/compress.c
vendored
639
external/bsd/file/dist/src/compress.c
vendored
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: compress.c,v 1.10 2015/01/02 21:15:32 christos Exp $ */
|
||||
/* $NetBSD: compress.c,v 1.11 2017/02/10 17:53:24 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) Ian F. Darwin 1986-1995.
|
||||
@ -38,9 +38,9 @@
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
FILE_RCSID("@(#)$File: compress.c,v 1.77 2014/12/12 16:33:01 christos Exp $")
|
||||
FILE_RCSID("@(#)$File: compress.c,v 1.101 2017/01/18 16:33:57 christos Exp $")
|
||||
#else
|
||||
__RCSID("$NetBSD: compress.c,v 1.10 2015/01/02 21:15:32 christos Exp $");
|
||||
__RCSID("$NetBSD: compress.c,v 1.11 2017/02/10 17:53:24 christos Exp $");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ -51,7 +51,14 @@ __RCSID("$NetBSD: compress.c,v 1.10 2015/01/02 21:15:32 christos Exp $");
|
||||
#endif
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <ctype.h>
|
||||
#include <stdarg.h>
|
||||
#ifdef HAVE_SIGNAL_H
|
||||
#include <signal.h>
|
||||
# ifndef HAVE_SIG_T
|
||||
typedef void (*sig_t)(int);
|
||||
# endif /* HAVE_SIG_T */
|
||||
#endif
|
||||
#if !defined(__MINGW32__) && !defined(WIN32)
|
||||
#include <sys/ioctl.h>
|
||||
#endif
|
||||
@ -61,46 +68,126 @@ __RCSID("$NetBSD: compress.c,v 1.10 2015/01/02 21:15:32 christos Exp $");
|
||||
#if defined(HAVE_SYS_TIME_H)
|
||||
#include <sys/time.h>
|
||||
#endif
|
||||
#if defined(HAVE_ZLIB_H) && defined(HAVE_LIBZ)
|
||||
#if defined(HAVE_ZLIB_H) && defined(ZLIBSUPPORT)
|
||||
#define BUILTIN_DECOMPRESS
|
||||
#include <zlib.h>
|
||||
#endif
|
||||
#ifdef DEBUG
|
||||
int tty = -1;
|
||||
#define DPRINTF(...) do { \
|
||||
if (tty == -1) \
|
||||
tty = open("/dev/tty", O_RDWR); \
|
||||
if (tty == -1) \
|
||||
abort(); \
|
||||
dprintf(tty, __VA_ARGS__); \
|
||||
} while (/*CONSTCOND*/0)
|
||||
#else
|
||||
#define DPRINTF(...)
|
||||
#endif
|
||||
|
||||
private const struct {
|
||||
const char magic[8];
|
||||
size_t maglen;
|
||||
const char *argv[3];
|
||||
int silent;
|
||||
} compr[] = {
|
||||
{ "\037\235", 2, { "gzip", "-cdq", NULL }, 1 }, /* compressed */
|
||||
/* Uncompress can get stuck; so use gzip first if we have it
|
||||
* Idea from Damien Clark, thanks! */
|
||||
{ "\037\235", 2, { "uncompress", "-c", NULL }, 1 }, /* compressed */
|
||||
{ "\037\213", 2, { "gzip", "-cdq", NULL }, 1 }, /* gzipped */
|
||||
{ "\037\236", 2, { "gzip", "-cdq", NULL }, 1 }, /* frozen */
|
||||
{ "\037\240", 2, { "gzip", "-cdq", NULL }, 1 }, /* SCO LZH */
|
||||
/* the standard pack utilities do not accept standard input */
|
||||
{ "\037\036", 2, { "gzip", "-cdq", NULL }, 0 }, /* packed */
|
||||
{ "PK\3\4", 4, { "gzip", "-cdq", NULL }, 1 }, /* pkzipped, */
|
||||
/* ...only first file examined */
|
||||
{ "BZh", 3, { "bzip2", "-cd", NULL }, 1 }, /* bzip2-ed */
|
||||
{ "LZIP", 4, { "lzip", "-cdq", NULL }, 1 },
|
||||
{ "\3757zXZ\0",6,{ "xz", "-cd", NULL }, 1 }, /* XZ Utils */
|
||||
{ "LRZI", 4, { "lrzip", "-dqo-", NULL }, 1 }, /* LRZIP */
|
||||
{ "\004\"M\030", 4, { "lz4", "-cd", NULL }, 1 }, /* LZ4 */
|
||||
#ifdef ZLIBSUPPORT
|
||||
/*
|
||||
* The following python code is not really used because ZLIBSUPPORT is only
|
||||
* defined if we have a built-in zlib, and the built-in zlib handles that.
|
||||
* That is not true for android where we have zlib.h and not -lz.
|
||||
*/
|
||||
static const char zlibcode[] =
|
||||
"import sys, zlib; sys.stdout.write(zlib.decompress(sys.stdin.read()))";
|
||||
|
||||
static const char *zlib_args[] = { "python", "-c", zlibcode, NULL };
|
||||
|
||||
static int
|
||||
zlibcmp(const unsigned char *buf)
|
||||
{
|
||||
unsigned short x = 1;
|
||||
unsigned char *s = (unsigned char *)&x;
|
||||
|
||||
if ((buf[0] & 0xf) != 8 || (buf[0] & 0x80) != 0)
|
||||
return 0;
|
||||
if (s[0] != 1) /* endianness test */
|
||||
x = buf[0] | (buf[1] << 8);
|
||||
else
|
||||
x = buf[1] | (buf[0] << 8);
|
||||
if (x % 31)
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
#define gzip_flags "-cd"
|
||||
#define lrzip_flags "-do"
|
||||
#define lzip_flags gzip_flags
|
||||
|
||||
static const char *gzip_args[] = {
|
||||
"gzip", gzip_flags, NULL
|
||||
};
|
||||
static const char *uncompress_args[] = {
|
||||
"uncompress", "-c", NULL
|
||||
};
|
||||
static const char *bzip2_args[] = {
|
||||
"bzip2", "-cd", NULL
|
||||
};
|
||||
static const char *lzip_args[] = {
|
||||
"lzip", lzip_flags, NULL
|
||||
};
|
||||
static const char *xz_args[] = {
|
||||
"xz", "-cd", NULL
|
||||
};
|
||||
static const char *lrzip_args[] = {
|
||||
"lrzip", lrzip_flags, NULL
|
||||
};
|
||||
static const char *lz4_args[] = {
|
||||
"lz4", "-cd", NULL
|
||||
};
|
||||
static const char *zstd_args[] = {
|
||||
"zstd", "-cd", NULL
|
||||
};
|
||||
|
||||
#define NODATA ((size_t)~0)
|
||||
private const struct {
|
||||
const void *magic;
|
||||
size_t maglen;
|
||||
const char **argv;
|
||||
} compr[] = {
|
||||
{ "\037\235", 2, gzip_args }, /* compressed */
|
||||
/* Uncompress can get stuck; so use gzip first if we have it
|
||||
* Idea from Damien Clark, thanks! */
|
||||
{ "\037\235", 2, uncompress_args }, /* compressed */
|
||||
{ "\037\213", 2, gzip_args }, /* gzipped */
|
||||
{ "\037\236", 2, gzip_args }, /* frozen */
|
||||
{ "\037\240", 2, gzip_args }, /* SCO LZH */
|
||||
/* the standard pack utilities do not accept standard input */
|
||||
{ "\037\036", 2, gzip_args }, /* packed */
|
||||
{ "PK\3\4", 4, gzip_args }, /* pkzipped, */
|
||||
/* ...only first file examined */
|
||||
{ "BZh", 3, bzip2_args }, /* bzip2-ed */
|
||||
{ "LZIP", 4, lzip_args }, /* lzip-ed */
|
||||
{ "\3757zXZ\0", 6, xz_args }, /* XZ Utils */
|
||||
{ "LRZI", 4, lrzip_args }, /* LRZIP */
|
||||
{ "\004\"M\030",4, lz4_args }, /* LZ4 */
|
||||
{ "\x28\xB5\x2F\xFD", 4, zstd_args }, /* zstd */
|
||||
#ifdef ZLIBSUPPORT
|
||||
{ RCAST(const void *, zlibcmp), 0, zlib_args }, /* zlib */
|
||||
#endif
|
||||
};
|
||||
|
||||
#define OKDATA 0
|
||||
#define NODATA 1
|
||||
#define ERRDATA 2
|
||||
|
||||
private ssize_t swrite(int, const void *, size_t);
|
||||
#if HAVE_FORK
|
||||
private size_t ncompr = sizeof(compr) / sizeof(compr[0]);
|
||||
private size_t uncompressbuf(struct magic_set *, int, size_t,
|
||||
const unsigned char *, unsigned char **, size_t);
|
||||
private int uncompressbuf(int, size_t, size_t, const unsigned char *,
|
||||
unsigned char **, size_t *);
|
||||
#ifdef BUILTIN_DECOMPRESS
|
||||
private size_t uncompressgzipped(struct magic_set *, const unsigned char *,
|
||||
unsigned char **, size_t);
|
||||
private int uncompresszlib(const unsigned char *, unsigned char **, size_t,
|
||||
size_t *, int);
|
||||
private int uncompressgzipped(const unsigned char *, unsigned char **, size_t,
|
||||
size_t *);
|
||||
#endif
|
||||
static int makeerror(unsigned char **, size_t *, const char *, ...)
|
||||
__attribute__((__format__(__printf__, 3, 4)));
|
||||
private const char *methodname(size_t);
|
||||
|
||||
protected int
|
||||
file_zmagic(struct magic_set *ms, int fd, const char *name,
|
||||
@ -108,43 +195,95 @@ file_zmagic(struct magic_set *ms, int fd, const char *name,
|
||||
{
|
||||
unsigned char *newbuf = NULL;
|
||||
size_t i, nsz;
|
||||
int rv = 0;
|
||||
char *rbuf;
|
||||
file_pushbuf_t *pb;
|
||||
int urv, prv, rv = 0;
|
||||
int mime = ms->flags & MAGIC_MIME;
|
||||
#ifdef HAVE_SIGNAL_H
|
||||
sig_t osigpipe;
|
||||
#endif
|
||||
|
||||
if ((ms->flags & MAGIC_COMPRESS) == 0)
|
||||
return 0;
|
||||
|
||||
#ifdef HAVE_SIGNAL_H
|
||||
osigpipe = signal(SIGPIPE, SIG_IGN);
|
||||
#endif
|
||||
for (i = 0; i < ncompr; i++) {
|
||||
int zm;
|
||||
if (nbytes < compr[i].maglen)
|
||||
continue;
|
||||
if (memcmp(buf, compr[i].magic, compr[i].maglen) == 0 &&
|
||||
(nsz = uncompressbuf(ms, fd, i, buf, &newbuf,
|
||||
nbytes)) != NODATA) {
|
||||
#ifdef ZLIBSUPPORT
|
||||
if (compr[i].maglen == 0)
|
||||
zm = (RCAST(int (*)(const unsigned char *),
|
||||
CCAST(void *, compr[i].magic)))(buf);
|
||||
else
|
||||
#endif
|
||||
zm = memcmp(buf, compr[i].magic, compr[i].maglen) == 0;
|
||||
|
||||
if (!zm)
|
||||
continue;
|
||||
nsz = nbytes;
|
||||
urv = uncompressbuf(fd, ms->bytes_max, i, buf, &newbuf, &nsz);
|
||||
DPRINTF("uncompressbuf = %d, %s, %zu\n", urv, (char *)newbuf,
|
||||
nsz);
|
||||
switch (urv) {
|
||||
case OKDATA:
|
||||
case ERRDATA:
|
||||
|
||||
ms->flags &= ~MAGIC_COMPRESS;
|
||||
rv = -1;
|
||||
if (file_buffer(ms, -1, name, newbuf, nsz) == -1)
|
||||
if (urv == ERRDATA)
|
||||
prv = file_printf(ms, "%s ERROR: %s",
|
||||
methodname(i), newbuf);
|
||||
else
|
||||
prv = file_buffer(ms, -1, name, newbuf, nsz);
|
||||
if (prv == -1)
|
||||
goto error;
|
||||
|
||||
if (mime == MAGIC_MIME || mime == 0) {
|
||||
if (file_printf(ms, mime ?
|
||||
" compressed-encoding=" : " (") == -1)
|
||||
goto error;
|
||||
if (file_buffer(ms, -1, NULL, buf, nbytes) == -1)
|
||||
goto error;
|
||||
if (!mime && file_printf(ms, ")") == -1)
|
||||
goto error;
|
||||
}
|
||||
|
||||
rv = 1;
|
||||
if ((ms->flags & MAGIC_COMPRESS_TRANSP) != 0)
|
||||
goto out;
|
||||
if (mime != MAGIC_MIME && mime != 0)
|
||||
goto out;
|
||||
if ((file_printf(ms,
|
||||
mime ? " compressed-encoding=" : " (")) == -1)
|
||||
goto error;
|
||||
if ((pb = file_push_buffer(ms)) == NULL)
|
||||
goto error;
|
||||
/*
|
||||
* XXX: If file_buffer fails here, we overwrite
|
||||
* the compressed text. FIXME.
|
||||
*/
|
||||
if (file_buffer(ms, -1, NULL, buf, nbytes) == -1)
|
||||
goto error;
|
||||
if ((rbuf = file_pop_buffer(ms, pb)) != NULL) {
|
||||
if (file_printf(ms, "%s", rbuf) == -1) {
|
||||
free(rbuf);
|
||||
goto error;
|
||||
}
|
||||
free(rbuf);
|
||||
}
|
||||
if (!mime && file_printf(ms, ")") == -1)
|
||||
goto error;
|
||||
/*FALLTHROUGH*/
|
||||
case NODATA:
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
/*NOTREACHED*/
|
||||
error:
|
||||
rv = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
error:
|
||||
out:
|
||||
DPRINTF("rv = %d\n", rv);
|
||||
|
||||
#ifdef HAVE_SIGNAL_H
|
||||
(void)signal(SIGPIPE, osigpipe);
|
||||
#endif
|
||||
free(newbuf);
|
||||
ms->flags |= MAGIC_COMPRESS;
|
||||
DPRINTF("Zmagic returns %d\n", rv);
|
||||
return rv;
|
||||
}
|
||||
#endif
|
||||
@ -234,7 +373,7 @@ nocheck:
|
||||
return rn - n;
|
||||
default:
|
||||
n -= rv;
|
||||
buf = ((char *)buf) + rv;
|
||||
buf = CAST(char *, CCAST(void *, buf)) + rv;
|
||||
break;
|
||||
}
|
||||
while (n > 0);
|
||||
@ -316,222 +455,314 @@ file_pipe2file(struct magic_set *ms, int fd, const void *startbuf,
|
||||
#define FNAME (1 << 3)
|
||||
#define FCOMMENT (1 << 4)
|
||||
|
||||
private size_t
|
||||
uncompressgzipped(struct magic_set *ms, const unsigned char *old,
|
||||
unsigned char **newch, size_t n)
|
||||
|
||||
private int
|
||||
uncompressgzipped(const unsigned char *old, unsigned char **newch,
|
||||
size_t bytes_max, size_t *n)
|
||||
{
|
||||
unsigned char flg = old[3];
|
||||
size_t data_start = 10;
|
||||
z_stream z;
|
||||
int rc;
|
||||
|
||||
if (flg & FEXTRA) {
|
||||
if (data_start+1 >= n)
|
||||
return 0;
|
||||
if (data_start + 1 >= *n)
|
||||
goto err;
|
||||
data_start += 2 + old[data_start] + old[data_start + 1] * 256;
|
||||
}
|
||||
if (flg & FNAME) {
|
||||
while(data_start < n && old[data_start])
|
||||
while(data_start < *n && old[data_start])
|
||||
data_start++;
|
||||
data_start++;
|
||||
}
|
||||
if(flg & FCOMMENT) {
|
||||
while(data_start < n && old[data_start])
|
||||
if (flg & FCOMMENT) {
|
||||
while(data_start < *n && old[data_start])
|
||||
data_start++;
|
||||
data_start++;
|
||||
}
|
||||
if(flg & FHCRC)
|
||||
if (flg & FHCRC)
|
||||
data_start += 2;
|
||||
|
||||
if (data_start >= n)
|
||||
return 0;
|
||||
if ((*newch = CAST(unsigned char *, malloc(HOWMANY + 1))) == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* XXX: const castaway, via strchr */
|
||||
z.next_in = (Bytef *)strchr((const char *)old + data_start,
|
||||
old[data_start]);
|
||||
z.avail_in = CAST(uint32_t, (n - data_start));
|
||||
if (data_start >= *n)
|
||||
goto err;
|
||||
|
||||
*n -= data_start;
|
||||
old += data_start;
|
||||
return uncompresszlib(old, newch, bytes_max, n, 0);
|
||||
err:
|
||||
return makeerror(newch, n, "File too short");
|
||||
}
|
||||
|
||||
private int
|
||||
uncompresszlib(const unsigned char *old, unsigned char **newch,
|
||||
size_t bytes_max, size_t *n, int zlib)
|
||||
{
|
||||
int rc;
|
||||
z_stream z;
|
||||
|
||||
if ((*newch = CAST(unsigned char *, malloc(bytes_max + 1))) == NULL)
|
||||
return makeerror(newch, n, "No buffer, %s", strerror(errno));
|
||||
|
||||
z.next_in = CCAST(Bytef *, old);
|
||||
z.avail_in = CAST(uint32_t, *n);
|
||||
z.next_out = *newch;
|
||||
z.avail_out = HOWMANY;
|
||||
z.avail_out = bytes_max;
|
||||
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);
|
||||
return 0;
|
||||
}
|
||||
rc = zlib ? inflateInit(&z) : inflateInit2(&z, -15);
|
||||
if (rc != Z_OK)
|
||||
goto err;
|
||||
|
||||
rc = inflate(&z, Z_SYNC_FLUSH);
|
||||
if (rc != Z_OK && rc != Z_STREAM_END) {
|
||||
file_error(ms, 0, "zlib: %s", z.msg);
|
||||
return 0;
|
||||
}
|
||||
if (rc != Z_OK && rc != Z_STREAM_END)
|
||||
goto err;
|
||||
|
||||
n = (size_t)z.total_out;
|
||||
(void)inflateEnd(&z);
|
||||
*n = (size_t)z.total_out;
|
||||
rc = inflateEnd(&z);
|
||||
if (rc != Z_OK)
|
||||
goto err;
|
||||
|
||||
/* let's keep the nul-terminate tradition */
|
||||
(*newch)[n] = '\0';
|
||||
(*newch)[*n] = '\0';
|
||||
|
||||
return n;
|
||||
return OKDATA;
|
||||
err:
|
||||
strlcpy((char *)*newch, z.msg ? z.msg : zError(rc), bytes_max);
|
||||
*n = strlen((char *)*newch);
|
||||
return ERRDATA;
|
||||
}
|
||||
#endif
|
||||
|
||||
private size_t
|
||||
uncompressbuf(struct magic_set *ms, int fd, size_t method,
|
||||
const unsigned char *old, unsigned char **newch, size_t n)
|
||||
static int
|
||||
makeerror(unsigned char **buf, size_t *len, const char *fmt, ...)
|
||||
{
|
||||
char *msg;
|
||||
va_list ap;
|
||||
int rv;
|
||||
|
||||
va_start(ap, fmt);
|
||||
rv = vasprintf(&msg, fmt, ap);
|
||||
va_end(ap);
|
||||
if (rv < 0) {
|
||||
*buf = NULL;
|
||||
*len = 0;
|
||||
return NODATA;
|
||||
}
|
||||
*buf = (unsigned char *)msg;
|
||||
*len = strlen(msg);
|
||||
return ERRDATA;
|
||||
}
|
||||
|
||||
static void
|
||||
closefd(int *fd, size_t i)
|
||||
{
|
||||
if (fd[i] == -1)
|
||||
return;
|
||||
(void) close(fd[i]);
|
||||
fd[i] = -1;
|
||||
}
|
||||
|
||||
static void
|
||||
closep(int *fd)
|
||||
{
|
||||
size_t i;
|
||||
for (i = 0; i < 2; i++)
|
||||
closefd(fd, i);
|
||||
}
|
||||
|
||||
static void
|
||||
copydesc(int i, int *fd)
|
||||
{
|
||||
int j = fd[i == STDIN_FILENO ? 0 : 1];
|
||||
if (j == i)
|
||||
return;
|
||||
if (dup2(j, i) == -1) {
|
||||
DPRINTF("dup(%d, %d) failed (%s)\n", j, i, strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
closep(fd);
|
||||
}
|
||||
|
||||
static void
|
||||
writechild(int fdp[3][2], const void *old, size_t n)
|
||||
{
|
||||
int fdin[2], fdout[2];
|
||||
int status;
|
||||
|
||||
closefd(fdp[STDIN_FILENO], 0);
|
||||
/*
|
||||
* fork again, to avoid blocking because both
|
||||
* pipes filled
|
||||
*/
|
||||
switch (fork()) {
|
||||
case 0: /* child */
|
||||
closefd(fdp[STDOUT_FILENO], 0);
|
||||
if (swrite(fdp[STDIN_FILENO][1], old, n) != (ssize_t)n) {
|
||||
DPRINTF("Write failed (%s)\n", strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
exit(0);
|
||||
/*NOTREACHED*/
|
||||
|
||||
case -1:
|
||||
DPRINTF("Fork failed (%s)\n", strerror(errno));
|
||||
exit(1);
|
||||
/*NOTREACHED*/
|
||||
|
||||
default: /* parent */
|
||||
if (wait(&status) == -1) {
|
||||
DPRINTF("Wait failed (%s)\n", strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
DPRINTF("Grandchild wait return %#x\n", status);
|
||||
}
|
||||
closefd(fdp[STDIN_FILENO], 1);
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
filter_error(unsigned char *ubuf, ssize_t n)
|
||||
{
|
||||
char *p;
|
||||
char *buf;
|
||||
|
||||
ubuf[n] = '\0';
|
||||
buf = (char *)ubuf;
|
||||
while (isspace((unsigned char)*buf))
|
||||
buf++;
|
||||
DPRINTF("Filter error[[[%s]]]\n", buf);
|
||||
if ((p = strchr((char *)buf, '\n')) != NULL)
|
||||
*p = '\0';
|
||||
if ((p = strchr((char *)buf, ';')) != NULL)
|
||||
*p = '\0';
|
||||
if ((p = strrchr((char *)buf, ':')) != NULL) {
|
||||
++p;
|
||||
while (isspace((unsigned char)*p))
|
||||
p++;
|
||||
n = strlen(p);
|
||||
memmove(ubuf, p, n + 1);
|
||||
}
|
||||
DPRINTF("Filter error after[[[%s]]]\n", (char *)ubuf);
|
||||
if (islower(*ubuf))
|
||||
*ubuf = toupper(*ubuf);
|
||||
return n;
|
||||
}
|
||||
|
||||
private const char *
|
||||
methodname(size_t method)
|
||||
{
|
||||
#ifdef BUILTIN_DECOMPRESS
|
||||
/* FIXME: This doesn't cope with bzip2 */
|
||||
if (method == 2 || compr[method].maglen == 0)
|
||||
return "zlib";
|
||||
#endif
|
||||
return compr[method].argv[0];
|
||||
}
|
||||
|
||||
private int
|
||||
uncompressbuf(int fd, size_t bytes_max, size_t method, const unsigned char *old,
|
||||
unsigned char **newch, size_t* n)
|
||||
{
|
||||
int fdp[3][2];
|
||||
int status, rv;
|
||||
size_t i;
|
||||
ssize_t r;
|
||||
|
||||
#ifdef BUILTIN_DECOMPRESS
|
||||
/* FIXME: This doesn't cope with bzip2 */
|
||||
if (method == 2)
|
||||
return uncompressgzipped(ms, old, newch, n);
|
||||
return uncompressgzipped(old, newch, bytes_max, n);
|
||||
if (compr[method].maglen == 0)
|
||||
return uncompresszlib(old, newch, bytes_max, n, 1);
|
||||
#endif
|
||||
(void)fflush(stdout);
|
||||
(void)fflush(stderr);
|
||||
|
||||
if ((fd != -1 && pipe(fdin) == -1) || pipe(fdout) == -1) {
|
||||
file_error(ms, errno, "cannot create pipe");
|
||||
return NODATA;
|
||||
for (i = 0; i < __arraycount(fdp); i++)
|
||||
fdp[i][0] = fdp[i][1] = -1;
|
||||
|
||||
if ((fd == -1 && pipe(fdp[STDIN_FILENO]) == -1) ||
|
||||
pipe(fdp[STDOUT_FILENO]) == -1 || pipe(fdp[STDERR_FILENO]) == -1) {
|
||||
closep(fdp[STDIN_FILENO]);
|
||||
closep(fdp[STDOUT_FILENO]);
|
||||
return makeerror(newch, n, "Cannot create pipe, %s",
|
||||
strerror(errno));
|
||||
}
|
||||
switch (fork()) {
|
||||
case 0: /* child */
|
||||
(void) close(0);
|
||||
if (fd != -1) {
|
||||
if (dup(fd) == -1)
|
||||
_exit(1);
|
||||
(void) lseek(0, (off_t)0, SEEK_SET);
|
||||
} else {
|
||||
if (dup(fdin[0]) == -1)
|
||||
_exit(1);
|
||||
(void) close(fdin[0]);
|
||||
(void) close(fdin[1]);
|
||||
fdp[STDIN_FILENO][0] = fd;
|
||||
(void) lseek(fd, (off_t)0, SEEK_SET);
|
||||
}
|
||||
|
||||
(void) close(1);
|
||||
if (dup(fdout[1]) == -1)
|
||||
_exit(1);
|
||||
(void) close(fdout[0]);
|
||||
(void) close(fdout[1]);
|
||||
#ifndef DEBUG
|
||||
if (compr[method].silent)
|
||||
(void)close(2);
|
||||
#endif
|
||||
|
||||
for (i = 0; i < __arraycount(fdp); i++)
|
||||
copydesc(i, fdp[i]);
|
||||
|
||||
(void)execvp(compr[method].argv[0],
|
||||
(char *const *)(intptr_t)compr[method].argv);
|
||||
#ifdef DEBUG
|
||||
(void)fprintf(stderr, "exec `%s' failed (%s)\n",
|
||||
dprintf(STDERR_FILENO, "exec `%s' failed, %s",
|
||||
compr[method].argv[0], strerror(errno));
|
||||
#endif
|
||||
exit(1);
|
||||
/*NOTREACHED*/
|
||||
case -1:
|
||||
file_error(ms, errno, "could not fork");
|
||||
return NODATA;
|
||||
return makeerror(newch, n, "Cannot fork, %s",
|
||||
strerror(errno));
|
||||
|
||||
default: /* parent */
|
||||
(void) close(fdout[1]);
|
||||
if (fd == -1) {
|
||||
(void) close(fdin[0]);
|
||||
/*
|
||||
* fork again, to avoid blocking because both
|
||||
* pipes filled
|
||||
*/
|
||||
switch (fork()) {
|
||||
case 0: /* child */
|
||||
(void)close(fdout[0]);
|
||||
if (swrite(fdin[1], old, n) != (ssize_t)n) {
|
||||
#ifdef DEBUG
|
||||
(void)fprintf(stderr,
|
||||
"Write failed (%s)\n",
|
||||
strerror(errno));
|
||||
#endif
|
||||
exit(1);
|
||||
}
|
||||
exit(0);
|
||||
/*NOTREACHED*/
|
||||
for (i = 1; i < __arraycount(fdp); i++)
|
||||
closefd(fdp[i], 1);
|
||||
|
||||
case -1:
|
||||
#ifdef DEBUG
|
||||
(void)fprintf(stderr, "Fork failed (%s)\n",
|
||||
strerror(errno));
|
||||
#endif
|
||||
exit(1);
|
||||
/*NOTREACHED*/
|
||||
/* Write the buffer data to the child, if we don't have fd */
|
||||
if (fd == -1)
|
||||
writechild(fdp, old, *n);
|
||||
|
||||
default: /* parent */
|
||||
if (wait(&status) == -1) {
|
||||
#ifdef DEBUG
|
||||
(void)fprintf(stderr,
|
||||
"Wait failed (%s)\n",
|
||||
strerror(errno));
|
||||
#endif
|
||||
exit(1);
|
||||
}
|
||||
exit(WIFEXITED(status) ?
|
||||
WEXITSTATUS(status) : 1);
|
||||
/*NOTREACHED*/
|
||||
}
|
||||
(void) close(fdin[1]);
|
||||
fdin[1] = -1;
|
||||
}
|
||||
|
||||
if ((*newch = (unsigned char *) malloc(HOWMANY + 1)) == NULL) {
|
||||
#ifdef DEBUG
|
||||
(void)fprintf(stderr, "Malloc failed (%s)\n",
|
||||
*newch = CAST(unsigned char *, malloc(bytes_max + 1));
|
||||
if (*newch == NULL) {
|
||||
rv = makeerror(newch, n, "No buffer, %s",
|
||||
strerror(errno));
|
||||
#endif
|
||||
n = NODATA;
|
||||
goto err;
|
||||
}
|
||||
if ((r = sread(fdout[0], *newch, HOWMANY, 0)) <= 0) {
|
||||
#ifdef DEBUG
|
||||
(void)fprintf(stderr, "Read failed (%s)\n",
|
||||
strerror(errno));
|
||||
#endif
|
||||
free(*newch);
|
||||
n = NODATA;
|
||||
*newch = NULL;
|
||||
goto err;
|
||||
} else {
|
||||
n = r;
|
||||
}
|
||||
/* NUL terminate, as every buffer is handled here. */
|
||||
(*newch)[n] = '\0';
|
||||
err:
|
||||
if (fdin[1] != -1)
|
||||
(void) close(fdin[1]);
|
||||
(void) close(fdout[0]);
|
||||
if (wait(&status) == -1) {
|
||||
#ifdef DEBUG
|
||||
(void)fprintf(stderr, "Wait failed (%s)\n",
|
||||
strerror(errno));
|
||||
#endif
|
||||
n = NODATA;
|
||||
} else if (!WIFEXITED(status)) {
|
||||
#ifdef DEBUG
|
||||
(void)fprintf(stderr, "Child not exited (0x%x)\n",
|
||||
status);
|
||||
#endif
|
||||
} else if (WEXITSTATUS(status) != 0) {
|
||||
#ifdef DEBUG
|
||||
(void)fprintf(stderr, "Child exited (0x%d)\n",
|
||||
WEXITSTATUS(status));
|
||||
#endif
|
||||
}
|
||||
rv = OKDATA;
|
||||
if ((r = sread(fdp[STDOUT_FILENO][0], *newch, bytes_max, 0)) > 0)
|
||||
break;
|
||||
DPRINTF("Read stdout failed %d (%s)\n", fdp[STDOUT_FILENO][0],
|
||||
r != -1 ? strerror(errno) : "no data");
|
||||
|
||||
(void) close(fdin[0]);
|
||||
|
||||
return n;
|
||||
rv = ERRDATA;
|
||||
if (r == 0 &&
|
||||
(r = sread(fdp[STDERR_FILENO][0], *newch, bytes_max, 0)) > 0)
|
||||
{
|
||||
r = filter_error(*newch, r);
|
||||
break;
|
||||
}
|
||||
free(*newch);
|
||||
if (r == 0)
|
||||
rv = makeerror(newch, n, "Read failed, %s",
|
||||
strerror(errno));
|
||||
else
|
||||
rv = makeerror(newch, n, "No data");
|
||||
goto err;
|
||||
}
|
||||
|
||||
*n = r;
|
||||
/* NUL terminate, as every buffer is handled here. */
|
||||
(*newch)[*n] = '\0';
|
||||
err:
|
||||
closefd(fdp[STDIN_FILENO], 1);
|
||||
closefd(fdp[STDOUT_FILENO], 0);
|
||||
closefd(fdp[STDERR_FILENO], 0);
|
||||
if (wait(&status) == -1) {
|
||||
free(*newch);
|
||||
rv = makeerror(newch, n, "Wait failed, %s", strerror(errno));
|
||||
DPRINTF("Child wait return %#x\n", status);
|
||||
} else if (!WIFEXITED(status)) {
|
||||
DPRINTF("Child not exited (0x%x)\n", status);
|
||||
} else if (WEXITSTATUS(status) != 0) {
|
||||
DPRINTF("Child exited (0x%d)\n", WEXITSTATUS(status));
|
||||
}
|
||||
|
||||
closefd(fdp[STDIN_FILENO], 0);
|
||||
DPRINTF("Returning %p n=%zu rv=%d\n", *newch, *n, rv);
|
||||
|
||||
return rv;
|
||||
}
|
||||
#endif
|
||||
|
42
external/bsd/file/dist/src/encoding.c
vendored
42
external/bsd/file/dist/src/encoding.c
vendored
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: encoding.c,v 1.4 2015/01/02 21:15:32 christos Exp $ */
|
||||
/* $NetBSD: encoding.c,v 1.5 2017/02/10 17:53:24 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) Ian F. Darwin 1986-1995.
|
||||
@ -38,9 +38,9 @@
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
FILE_RCSID("@(#)$File: encoding.c,v 1.10 2014/09/11 12:08:52 christos Exp $")
|
||||
FILE_RCSID("@(#)$File: encoding.c,v 1.13 2015/06/04 19:16:28 christos Exp $")
|
||||
#else
|
||||
__RCSID("$NetBSD: encoding.c,v 1.4 2015/01/02 21:15:32 christos Exp $");
|
||||
__RCSID("$NetBSD: encoding.c,v 1.5 2017/02/10 17:53:24 christos Exp $");
|
||||
#endif
|
||||
#endif /* lint */
|
||||
|
||||
@ -53,6 +53,7 @@ __RCSID("$NetBSD: encoding.c,v 1.4 2015/01/02 21:15:32 christos Exp $");
|
||||
private int looks_ascii(const unsigned char *, size_t, unichar *, size_t *);
|
||||
private int looks_utf8_with_BOM(const unsigned char *, size_t, unichar *,
|
||||
size_t *);
|
||||
private int looks_utf7(const unsigned char *, size_t, unichar *, size_t *);
|
||||
private int looks_ucs16(const unsigned char *, size_t, unichar *, size_t *);
|
||||
private int looks_latin1(const unsigned char *, size_t, unichar *, size_t *);
|
||||
private int looks_extended(const unsigned char *, size_t, unichar *, size_t *);
|
||||
@ -94,9 +95,15 @@ file_encoding(struct magic_set *ms, const unsigned char *buf, size_t nbytes, uni
|
||||
}
|
||||
|
||||
if (looks_ascii(buf, nbytes, *ubuf, ulen)) {
|
||||
DPRINTF(("ascii %" SIZE_T_FORMAT "u\n", *ulen));
|
||||
*code = "ASCII";
|
||||
*code_mime = "us-ascii";
|
||||
if (looks_utf7(buf, nbytes, *ubuf, ulen) > 0) {
|
||||
DPRINTF(("utf-7 %" SIZE_T_FORMAT "u\n", *ulen));
|
||||
*code = "UTF-7 Unicode";
|
||||
*code_mime = "utf-7";
|
||||
} else {
|
||||
DPRINTF(("ascii %" SIZE_T_FORMAT "u\n", *ulen));
|
||||
*code = "ASCII";
|
||||
*code_mime = "us-ascii";
|
||||
}
|
||||
} else if (looks_utf8_with_BOM(buf, nbytes, *ubuf, ulen) > 0) {
|
||||
DPRINTF(("utf8/bom %" SIZE_T_FORMAT "u\n", *ulen));
|
||||
*code = "UTF-8 Unicode (with BOM)";
|
||||
@ -205,8 +212,8 @@ file_encoding(struct magic_set *ms, const unsigned char *buf, size_t nbytes, uni
|
||||
#define X 3 /* character appears in non-ISO extended ASCII (Mac, IBM PC) */
|
||||
|
||||
private char text_chars[256] = {
|
||||
/* BEL BS HT LF FF CR */
|
||||
F, F, F, F, F, F, F, T, T, T, T, F, T, T, F, F, /* 0x0X */
|
||||
/* BEL BS HT LF VT FF CR */
|
||||
F, F, F, F, F, F, F, T, T, T, T, T, T, T, F, F, /* 0x0X */
|
||||
/* ESC */
|
||||
F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, /* 0x1X */
|
||||
T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, /* 0x2X */
|
||||
@ -377,6 +384,25 @@ looks_utf8_with_BOM(const unsigned char *buf, size_t nbytes, unichar *ubuf,
|
||||
return -1;
|
||||
}
|
||||
|
||||
private int
|
||||
looks_utf7(const unsigned char *buf, size_t nbytes, unichar *ubuf, size_t *ulen)
|
||||
{
|
||||
if (nbytes > 4 && buf[0] == '+' && buf[1] == '/' && buf[2] == 'v')
|
||||
switch (buf[3]) {
|
||||
case '8':
|
||||
case '9':
|
||||
case '+':
|
||||
case '/':
|
||||
if (ubuf)
|
||||
*ulen = 0;
|
||||
return 1;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
private int
|
||||
looks_ucs16(const unsigned char *buf, size_t nbytes, unichar *ubuf,
|
||||
size_t *ulen)
|
||||
|
117
external/bsd/file/dist/src/file.c
vendored
117
external/bsd/file/dist/src/file.c
vendored
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: file.c,v 1.7 2015/01/02 21:15:32 christos Exp $ */
|
||||
/* $NetBSD: file.c,v 1.8 2017/02/10 17:53:24 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) Ian F. Darwin 1986-1995.
|
||||
@ -35,9 +35,9 @@
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
FILE_RCSID("@(#)$File: file.c,v 1.160 2014/12/16 23:18:40 christos Exp $")
|
||||
FILE_RCSID("@(#)$File: file.c,v 1.172 2016/10/24 15:21:07 christos Exp $")
|
||||
#else
|
||||
__RCSID("$NetBSD: file.c,v 1.7 2015/01/02 21:15:32 christos Exp $");
|
||||
__RCSID("$NetBSD: file.c,v 1.8 2017/02/10 17:53:24 christos Exp $");
|
||||
#endif
|
||||
#endif /* lint */
|
||||
|
||||
@ -74,14 +74,14 @@ int getopt_long(int argc, char * const *argv, const char *optstring, const struc
|
||||
#endif
|
||||
|
||||
#ifdef S_IFLNK
|
||||
#define FILE_FLAGS "-bcEhikLlNnprsvz0"
|
||||
#define FILE_FLAGS "-bcEhikLlNnprsvzZ0"
|
||||
#else
|
||||
#define FILE_FLAGS "-bcEiklNnprsvz0"
|
||||
#define FILE_FLAGS "-bcEiklNnprsvzZ0"
|
||||
#endif
|
||||
|
||||
# define USAGE \
|
||||
"Usage: %s [" FILE_FLAGS \
|
||||
"] [--apple] [--mime-encoding] [--mime-type]\n" \
|
||||
"] [--apple] [--extension] [--mime-encoding] [--mime-type]\n" \
|
||||
" [-e testname] [-F separator] [-f namefile] [-m magicfiles] " \
|
||||
"file ...\n" \
|
||||
" %s -C [-m magicfiles]\n" \
|
||||
@ -95,16 +95,21 @@ private int /* Global command-line options */
|
||||
|
||||
private const char *separator = ":"; /* Default field separator */
|
||||
private const struct option long_options[] = {
|
||||
#define OPT(shortname, longname, opt, doc) \
|
||||
#define OPT_HELP 1
|
||||
#define OPT_APPLE 2
|
||||
#define OPT_EXTENSIONS 3
|
||||
#define OPT_MIME_TYPE 4
|
||||
#define OPT_MIME_ENCODING 5
|
||||
#define OPT(shortname, longname, opt, def, doc) \
|
||||
{longname, opt, NULL, shortname},
|
||||
#define OPT_LONGONLY(longname, opt, doc) \
|
||||
{longname, opt, NULL, 0},
|
||||
#define OPT_LONGONLY(longname, opt, def, doc, id) \
|
||||
{longname, opt, NULL, id},
|
||||
#include "file_opts.h"
|
||||
#undef OPT
|
||||
#undef OPT_LONGONLY
|
||||
{0, 0, NULL, 0}
|
||||
};
|
||||
#define OPTSTRING "bcCde:Ef:F:hiklLm:nNpP:rsvz0"
|
||||
#define OPTSTRING "bcCde:Ef:F:hiklLm:nNpP:rsvzZ0"
|
||||
|
||||
private const struct {
|
||||
const char *name;
|
||||
@ -132,15 +137,18 @@ private struct {
|
||||
{ "elf_phnum", MAGIC_PARAM_ELF_PHNUM_MAX, 0 },
|
||||
{ "elf_shnum", MAGIC_PARAM_ELF_SHNUM_MAX, 0 },
|
||||
{ "elf_notes", MAGIC_PARAM_ELF_NOTES_MAX, 0 },
|
||||
{ "regex", MAGIC_PARAM_REGEX_MAX, 0 },
|
||||
{ "bytes", MAGIC_PARAM_BYTES_MAX, 0 },
|
||||
};
|
||||
|
||||
private char *progname; /* used throughout */
|
||||
private int posixly;
|
||||
|
||||
#ifdef __dead
|
||||
__dead
|
||||
#endif
|
||||
private void usage(void);
|
||||
private void docprint(const char *);
|
||||
private void docprint(const char *, int);
|
||||
#ifdef __dead
|
||||
__dead
|
||||
#endif
|
||||
@ -183,29 +191,29 @@ main(int argc, char *argv[])
|
||||
progname = argv[0];
|
||||
|
||||
#ifdef S_IFLNK
|
||||
flags |= getenv("POSIXLY_CORRECT") ? MAGIC_SYMLINK : 0;
|
||||
posixly = getenv("POSIXLY_CORRECT") != NULL;
|
||||
flags |= posixly ? MAGIC_SYMLINK : 0;
|
||||
#endif
|
||||
while ((c = getopt_long(argc, argv, OPTSTRING, long_options,
|
||||
&longindex)) != -1)
|
||||
switch (c) {
|
||||
case 0 :
|
||||
switch (longindex) {
|
||||
case 0:
|
||||
help();
|
||||
break;
|
||||
case 10:
|
||||
flags |= MAGIC_APPLE;
|
||||
break;
|
||||
case 11:
|
||||
flags |= MAGIC_MIME_TYPE;
|
||||
break;
|
||||
case 12:
|
||||
flags |= MAGIC_MIME_ENCODING;
|
||||
break;
|
||||
}
|
||||
case OPT_HELP:
|
||||
help();
|
||||
break;
|
||||
case OPT_APPLE:
|
||||
flags |= MAGIC_APPLE;
|
||||
break;
|
||||
case OPT_EXTENSIONS:
|
||||
flags |= MAGIC_EXTENSION;
|
||||
break;
|
||||
case OPT_MIME_TYPE:
|
||||
flags |= MAGIC_MIME_TYPE;
|
||||
break;
|
||||
case OPT_MIME_ENCODING:
|
||||
flags |= MAGIC_MIME_ENCODING;
|
||||
break;
|
||||
case '0':
|
||||
nulsep = 1;
|
||||
nulsep++;
|
||||
break;
|
||||
case 'b':
|
||||
bflag++;
|
||||
@ -239,6 +247,7 @@ main(int argc, char *argv[])
|
||||
if (magic == NULL)
|
||||
if ((magic = load(magicfile, flags)) == NULL)
|
||||
return 1;
|
||||
applyparam(magic);
|
||||
e |= unwrap(magic, optarg);
|
||||
++didsomefiles;
|
||||
break;
|
||||
@ -274,7 +283,6 @@ main(int argc, char *argv[])
|
||||
case 'r':
|
||||
flags |= MAGIC_RAW;
|
||||
break;
|
||||
break;
|
||||
case 's':
|
||||
flags |= MAGIC_DEVICES;
|
||||
break;
|
||||
@ -288,6 +296,10 @@ main(int argc, char *argv[])
|
||||
case 'z':
|
||||
flags |= MAGIC_COMPRESS;
|
||||
break;
|
||||
|
||||
case 'Z':
|
||||
flags |= MAGIC_COMPRESS|MAGIC_COMPRESS_TRANSP;
|
||||
break;
|
||||
#ifdef S_IFLNK
|
||||
case 'L':
|
||||
flags |= MAGIC_SYMLINK;
|
||||
@ -345,9 +357,10 @@ main(int argc, char *argv[])
|
||||
if (c == -1) {
|
||||
(void)fprintf(stderr, "%s: %s\n", progname,
|
||||
magic_error(magic));
|
||||
return 1;
|
||||
e = 1;
|
||||
goto out;
|
||||
}
|
||||
return 0;
|
||||
goto out;
|
||||
default:
|
||||
if (magic == NULL)
|
||||
if ((magic = load(magicfile, flags)) == NULL)
|
||||
@ -377,6 +390,7 @@ main(int argc, char *argv[])
|
||||
e |= process(magic, argv[optind], wid);
|
||||
}
|
||||
|
||||
out:
|
||||
if (magic)
|
||||
magic_close(magic);
|
||||
return e;
|
||||
@ -423,6 +437,8 @@ private struct magic_set *
|
||||
load(const char *magicfile, int flags)
|
||||
{
|
||||
struct magic_set *magic = magic_open(flags);
|
||||
const char *e;
|
||||
|
||||
if (magic == NULL) {
|
||||
(void)fprintf(stderr, "%s: %s\n", progname, strerror(errno));
|
||||
return NULL;
|
||||
@ -433,6 +449,8 @@ load(const char *magicfile, int flags)
|
||||
magic_close(magic);
|
||||
return NULL;
|
||||
}
|
||||
if ((e = magic_error(magic)) != NULL)
|
||||
(void)fprintf(stderr, "%s: Warning: %s\n", progname, e);
|
||||
return magic;
|
||||
}
|
||||
|
||||
@ -489,24 +507,28 @@ unwrap(struct magic_set *ms, const char *fn)
|
||||
private int
|
||||
process(struct magic_set *ms, const char *inname, int wid)
|
||||
{
|
||||
const char *type;
|
||||
const char *type, c = nulsep > 1 ? '\0' : '\n';
|
||||
int std_in = strcmp(inname, "-") == 0;
|
||||
|
||||
if (wid > 0 && !bflag) {
|
||||
(void)printf("%s", std_in ? "/dev/stdin" : inname);
|
||||
if (nulsep)
|
||||
(void)putc('\0', stdout);
|
||||
(void)printf("%s", separator);
|
||||
(void)printf("%*s ",
|
||||
(int) (nopad ? 0 : (wid - file_mbswidth(inname))), "");
|
||||
if (nulsep < 2) {
|
||||
(void)printf("%s", separator);
|
||||
(void)printf("%*s ",
|
||||
(int) (nopad ? 0 : (wid - file_mbswidth(inname))),
|
||||
"");
|
||||
}
|
||||
}
|
||||
|
||||
type = magic_file(ms, std_in ? NULL : inname);
|
||||
|
||||
if (type == NULL) {
|
||||
(void)printf("ERROR: %s\n", magic_error(ms));
|
||||
(void)printf("ERROR: %s%c", magic_error(ms), c);
|
||||
return 1;
|
||||
} else {
|
||||
(void)printf("%s\n", type);
|
||||
(void)printf("%s%c", type, c);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@ -556,7 +578,17 @@ usage(void)
|
||||
}
|
||||
|
||||
private void
|
||||
docprint(const char *opts)
|
||||
defprint(int def)
|
||||
{
|
||||
if (!def)
|
||||
return;
|
||||
if (((def & 1) && posixly) || ((def & 2) && !posixly))
|
||||
fprintf(stdout, " (default)");
|
||||
fputc('\n', stdout);
|
||||
}
|
||||
|
||||
private void
|
||||
docprint(const char *opts, int def)
|
||||
{
|
||||
size_t i;
|
||||
int comma;
|
||||
@ -565,6 +597,7 @@ docprint(const char *opts)
|
||||
p = strstr(opts, "%o");
|
||||
if (p == NULL) {
|
||||
fprintf(stdout, "%s", opts);
|
||||
defprint(def);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -592,12 +625,12 @@ help(void)
|
||||
"Usage: file [OPTION...] [FILE...]\n"
|
||||
"Determine type of FILEs.\n"
|
||||
"\n", stdout);
|
||||
#define OPT(shortname, longname, opt, doc) \
|
||||
#define OPT(shortname, longname, opt, def, doc) \
|
||||
fprintf(stdout, " -%c, --" longname, shortname), \
|
||||
docprint(doc);
|
||||
#define OPT_LONGONLY(longname, opt, doc) \
|
||||
docprint(doc, def);
|
||||
#define OPT_LONGONLY(longname, opt, def, doc, id) \
|
||||
fprintf(stdout, " --" longname), \
|
||||
docprint(doc);
|
||||
docprint(doc, def);
|
||||
#include "file_opts.h"
|
||||
#undef OPT
|
||||
#undef OPT_LONGONLY
|
||||
|
59
external/bsd/file/dist/src/file.h
vendored
59
external/bsd/file/dist/src/file.h
vendored
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: file.h,v 1.14 2015/01/02 21:15:32 christos Exp $ */
|
||||
/* $NetBSD: file.h,v 1.15 2017/02/10 17:53:24 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) Ian F. Darwin 1986-1995.
|
||||
@ -29,7 +29,7 @@
|
||||
*/
|
||||
/*
|
||||
* file.h - definitions for file(1) program
|
||||
* @(#)$File: file.h,v 1.164 2015/01/01 17:07:34 christos Exp $
|
||||
* @(#)$File: file.h,v 1.180 2016/07/20 11:27:08 christos Exp $
|
||||
*/
|
||||
|
||||
#ifndef __file_h__
|
||||
@ -46,9 +46,11 @@
|
||||
#define SIZE_T_FORMAT ""
|
||||
#endif
|
||||
#define INT64_T_FORMAT "I64"
|
||||
#define INTMAX_T_FORMAT "I64"
|
||||
#else
|
||||
#define SIZE_T_FORMAT "z"
|
||||
#define INT64_T_FORMAT "ll"
|
||||
#define INTMAX_T_FORMAT "j"
|
||||
#endif
|
||||
|
||||
#include <stdio.h> /* Include that here, to make sure __P gets defined */
|
||||
@ -127,18 +129,18 @@
|
||||
#define MAX(a,b) (((a) > (b)) ? (a) : (b))
|
||||
#endif
|
||||
|
||||
#ifndef HOWMANY
|
||||
# define HOWMANY (256 * 1024) /* how much of the file to look at */
|
||||
#ifndef FILE_BYTES_MAX
|
||||
# define FILE_BYTES_MAX (1024 * 1024) /* how much of the file to look at */
|
||||
#endif
|
||||
#define MAXMAGIS 8192 /* max entries in any one magic file
|
||||
or directory */
|
||||
#define MAXDESC 64 /* max len of text description/MIME type */
|
||||
#define MAXMIME 80 /* max len of text MIME type */
|
||||
#define MAXstring 64 /* max len of "string" types */
|
||||
#define MAXstring 96 /* max len of "string" types */
|
||||
|
||||
#define MAGICNO 0xF11E041C
|
||||
#define VERSIONNO 12
|
||||
#define FILE_MAGICSIZE 248
|
||||
#define VERSIONNO 14
|
||||
#define FILE_MAGICSIZE 344
|
||||
|
||||
#define FILE_LOAD 0
|
||||
#define FILE_CHECK 1
|
||||
@ -227,7 +229,8 @@ struct magic {
|
||||
#define FILE_NAME 45
|
||||
#define FILE_USE 46
|
||||
#define FILE_CLEAR 47
|
||||
#define FILE_NAMES_SIZE 48 /* size of array to contain all names */
|
||||
#define FILE_DER 48
|
||||
#define FILE_NAMES_SIZE 49 /* size of array to contain all names */
|
||||
|
||||
#define IS_STRING(t) \
|
||||
((t) == FILE_STRING || \
|
||||
@ -274,7 +277,7 @@ struct magic {
|
||||
#define FILE_OPS_MASK 0x07 /* mask for above ops */
|
||||
#define FILE_UNUSED_1 0x08
|
||||
#define FILE_UNUSED_2 0x10
|
||||
#define FILE_UNUSED_3 0x20
|
||||
#define FILE_OPSIGNED 0x20
|
||||
#define FILE_OPINVERSE 0x40
|
||||
#define FILE_OPINDIRECT 0x80
|
||||
|
||||
@ -302,14 +305,16 @@ struct magic {
|
||||
#define num_mask _u._mask
|
||||
#define str_range _u._s._count
|
||||
#define str_flags _u._s._flags
|
||||
/* Words 9-16 */
|
||||
/* Words 9-24 */
|
||||
union VALUETYPE value; /* either number or string */
|
||||
/* Words 17-32 */
|
||||
/* Words 25-40 */
|
||||
char desc[MAXDESC]; /* description */
|
||||
/* Words 33-52 */
|
||||
/* Words 41-60 */
|
||||
char mimetype[MAXMIME]; /* MIME type */
|
||||
/* Words 53-54 */
|
||||
char apple[8];
|
||||
/* Words 61-62 */
|
||||
char apple[8]; /* APPLE CREATOR/TYPE */
|
||||
/* Words 63-78 */
|
||||
char ext[64]; /* Popular extensions */
|
||||
};
|
||||
|
||||
#define BIT(A) (1 << (A))
|
||||
@ -363,9 +368,11 @@ struct mlist {
|
||||
#ifdef __cplusplus
|
||||
#define CAST(T, b) static_cast<T>(b)
|
||||
#define RCAST(T, b) reinterpret_cast<T>(b)
|
||||
#define CCAST(T, b) const_cast<T>(b)
|
||||
#else
|
||||
#define CAST(T, b) (T)(b)
|
||||
#define RCAST(T, b) (T)(b)
|
||||
#define CAST(T, b) ((T)(b))
|
||||
#define RCAST(T, b) ((T)(b))
|
||||
#define CCAST(T, b) ((T)(uintptr_t)(b))
|
||||
#endif
|
||||
|
||||
struct level_info {
|
||||
@ -413,11 +420,14 @@ struct magic_set {
|
||||
uint16_t elf_shnum_max;
|
||||
uint16_t elf_phnum_max;
|
||||
uint16_t elf_notes_max;
|
||||
#define FILE_INDIR_MAX 15
|
||||
uint16_t regex_max;
|
||||
size_t bytes_max; /* number of bytes to read from file */
|
||||
#define FILE_INDIR_MAX 50
|
||||
#define FILE_NAME_MAX 30
|
||||
#define FILE_ELF_SHNUM_MAX 32768
|
||||
#define FILE_ELF_PHNUM_MAX 128
|
||||
#define FILE_ELF_PHNUM_MAX 2048
|
||||
#define FILE_ELF_NOTES_MAX 256
|
||||
#define FILE_REGEX_MAX 8192
|
||||
};
|
||||
|
||||
/* Type for Unicode characters */
|
||||
@ -457,7 +467,7 @@ protected int file_encoding(struct magic_set *, const unsigned char *, size_t,
|
||||
unichar **, size_t *, const char **, const char **, const char **);
|
||||
protected int file_is_tar(struct magic_set *, const unsigned char *, size_t);
|
||||
protected int file_softmagic(struct magic_set *, const unsigned char *, size_t,
|
||||
uint16_t, uint16_t *, int, int);
|
||||
uint16_t *, uint16_t *, int, int);
|
||||
protected int file_apprentice(struct magic_set *, const char *, int);
|
||||
protected int buffer_apprentice(struct magic_set *, struct magic **,
|
||||
size_t *, size_t);
|
||||
@ -502,6 +512,8 @@ typedef struct {
|
||||
#define USE_C_LOCALE
|
||||
locale_t old_lc_ctype;
|
||||
locale_t c_lc_ctype;
|
||||
#else
|
||||
char *old_lc_ctype;
|
||||
#endif
|
||||
int rc;
|
||||
regex_t rx;
|
||||
@ -546,6 +558,9 @@ int vasprintf(char **, const char *, va_list);
|
||||
#ifndef HAVE_ASPRINTF
|
||||
int asprintf(char **, const char *, ...);
|
||||
#endif
|
||||
#ifndef HAVE_DPRINTF
|
||||
int dprintf(int, const char *, ...);
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_STRLCPY
|
||||
size_t strlcpy(char *, const char *, size_t);
|
||||
@ -566,6 +581,12 @@ char *ctime_r(const time_t *, char *);
|
||||
#ifndef HAVE_ASCTIME_R
|
||||
char *asctime_r(const struct tm *, char *);
|
||||
#endif
|
||||
#ifndef HAVE_GMTIME_R
|
||||
struct tm *gmtime_r(const time_t *, struct tm *);
|
||||
#endif
|
||||
#ifndef HAVE_LOCALTIME_R
|
||||
struct tm *localtime_r(const time_t *, struct tm *);
|
||||
#endif
|
||||
#ifndef HAVE_FMTCHECK
|
||||
const char *fmtcheck(const char *, const char *)
|
||||
__attribute__((__format_arg__(2)));
|
||||
|
8
external/bsd/file/dist/src/fsmagic.c
vendored
8
external/bsd/file/dist/src/fsmagic.c
vendored
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: fsmagic.c,v 1.11 2015/01/02 21:15:32 christos Exp $ */
|
||||
/* $NetBSD: fsmagic.c,v 1.12 2017/02/10 17:53:24 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) Ian F. Darwin 1986-1995.
|
||||
@ -35,9 +35,9 @@
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
FILE_RCSID("@(#)$File: fsmagic.c,v 1.75 2014/12/04 15:56:46 christos Exp $")
|
||||
FILE_RCSID("@(#)$File: fsmagic.c,v 1.76 2015/04/09 20:01:41 christos Exp $")
|
||||
#else
|
||||
__RCSID("$NetBSD: fsmagic.c,v 1.11 2015/01/02 21:15:32 christos Exp $");
|
||||
__RCSID("$NetBSD: fsmagic.c,v 1.12 2017/02/10 17:53:24 christos Exp $");
|
||||
#endif
|
||||
#endif /* lint */
|
||||
|
||||
@ -116,7 +116,7 @@ file_fsmagic(struct magic_set *ms, const char *fn, struct stat *sb)
|
||||
struct stat tstatbuf;
|
||||
#endif
|
||||
|
||||
if (ms->flags & MAGIC_APPLE)
|
||||
if (ms->flags & (MAGIC_APPLE|MAGIC_EXTENSION))
|
||||
return 0;
|
||||
if (fn == NULL)
|
||||
return 0;
|
||||
|
120
external/bsd/file/dist/src/funcs.c
vendored
120
external/bsd/file/dist/src/funcs.c
vendored
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: funcs.c,v 1.10 2015/01/02 21:15:32 christos Exp $ */
|
||||
/* $NetBSD: funcs.c,v 1.11 2017/02/10 17:53:24 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) Christos Zoulas 2003.
|
||||
@ -30,9 +30,9 @@
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
FILE_RCSID("@(#)$File: funcs.c,v 1.79 2014/12/16 20:52:49 christos Exp $")
|
||||
FILE_RCSID("@(#)$File: funcs.c,v 1.91 2016/12/01 16:16:14 christos Exp $")
|
||||
#else
|
||||
__RCSID("$NetBSD: funcs.c,v 1.10 2015/01/02 21:15:32 christos Exp $");
|
||||
__RCSID("$NetBSD: funcs.c,v 1.11 2017/02/10 17:53:24 christos Exp $");
|
||||
#endif
|
||||
#endif /* lint */
|
||||
|
||||
@ -82,7 +82,7 @@ file_vprintf(struct magic_set *ms, const char *fmt, va_list ap)
|
||||
ms->o.buf = buf;
|
||||
return 0;
|
||||
out:
|
||||
file_error(ms, errno, "vasprintf failed");
|
||||
fprintf(stderr, "vasprintf failed (%s)", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -113,8 +113,10 @@ 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 %" SIZE_T_FORMAT "u: ", lineno);
|
||||
file_printf(ms, "line %" SIZE_T_FORMAT "u:", lineno);
|
||||
}
|
||||
if (ms->o.buf && *ms->o.buf)
|
||||
file_printf(ms, " ");
|
||||
file_vprintf(ms, f, va);
|
||||
if (error > 0)
|
||||
file_printf(ms, " (%s)", strerror(error));
|
||||
@ -165,13 +167,23 @@ file_badread(struct magic_set *ms)
|
||||
}
|
||||
|
||||
#ifndef COMPILE_ONLY
|
||||
|
||||
static int
|
||||
checkdone(struct magic_set *ms, int *rv)
|
||||
{
|
||||
if ((ms->flags & MAGIC_CONTINUE) == 0)
|
||||
return 1;
|
||||
if (file_printf(ms, "\n- ") == -1)
|
||||
*rv = -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*ARGSUSED*/
|
||||
protected int
|
||||
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;
|
||||
int mime = ms->flags & MAGIC_MIME;
|
||||
const unsigned char *ubuf = CAST(const unsigned char *, buf);
|
||||
unichar *u8buf = NULL;
|
||||
size_t ulen;
|
||||
@ -197,7 +209,10 @@ file_buffer(struct magic_set *ms, int fd, const char *inname __attribute__ ((__u
|
||||
|
||||
#ifdef __EMX__
|
||||
if ((ms->flags & MAGIC_NO_CHECK_APPTYPE) == 0 && inname) {
|
||||
switch (file_os2_apptype(ms, inname, buf, nb)) {
|
||||
m = file_os2_apptype(ms, inname, buf, nb);
|
||||
if ((ms->flags & MAGIC_DEBUG) != 0)
|
||||
(void)fprintf(stderr, "[try os2_apptype %d]\n", m);
|
||||
switch (m) {
|
||||
case -1:
|
||||
return -1;
|
||||
case 0:
|
||||
@ -209,35 +224,44 @@ file_buffer(struct magic_set *ms, int fd, const char *inname __attribute__ ((__u
|
||||
#endif
|
||||
#if HAVE_FORK
|
||||
/* try compression stuff */
|
||||
if ((ms->flags & MAGIC_NO_CHECK_COMPRESS) == 0)
|
||||
if ((m = file_zmagic(ms, fd, inname, ubuf, nb)) != 0) {
|
||||
if ((ms->flags & MAGIC_DEBUG) != 0)
|
||||
(void)fprintf(stderr, "zmagic %d\n", m);
|
||||
if ((ms->flags & MAGIC_NO_CHECK_COMPRESS) == 0) {
|
||||
m = file_zmagic(ms, fd, inname, ubuf, nb);
|
||||
if ((ms->flags & MAGIC_DEBUG) != 0)
|
||||
(void)fprintf(stderr, "[try zmagic %d]\n", m);
|
||||
if (m) {
|
||||
goto done_encoding;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
/* Check if we have a tar file */
|
||||
if ((ms->flags & MAGIC_NO_CHECK_TAR) == 0)
|
||||
if ((m = file_is_tar(ms, ubuf, nb)) != 0) {
|
||||
if ((ms->flags & MAGIC_DEBUG) != 0)
|
||||
(void)fprintf(stderr, "tar %d\n", m);
|
||||
goto done;
|
||||
if ((ms->flags & MAGIC_NO_CHECK_TAR) == 0) {
|
||||
m = file_is_tar(ms, ubuf, nb);
|
||||
if ((ms->flags & MAGIC_DEBUG) != 0)
|
||||
(void)fprintf(stderr, "[try tar %d]\n", m);
|
||||
if (m) {
|
||||
if (checkdone(ms, &rv))
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
||||
/* Check if we have a CDF file */
|
||||
if ((ms->flags & MAGIC_NO_CHECK_CDF) == 0)
|
||||
if ((m = file_trycdf(ms, fd, ubuf, nb)) != 0) {
|
||||
if ((ms->flags & MAGIC_DEBUG) != 0)
|
||||
(void)fprintf(stderr, "cdf %d\n", m);
|
||||
goto done;
|
||||
if ((ms->flags & MAGIC_NO_CHECK_CDF) == 0) {
|
||||
m = file_trycdf(ms, fd, ubuf, nb);
|
||||
if ((ms->flags & MAGIC_DEBUG) != 0)
|
||||
(void)fprintf(stderr, "[try cdf %d]\n", m);
|
||||
if (m) {
|
||||
if (checkdone(ms, &rv))
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
||||
/* try soft magic tests */
|
||||
if ((ms->flags & MAGIC_NO_CHECK_SOFT) == 0)
|
||||
if ((m = file_softmagic(ms, ubuf, nb, 0, NULL, BINTEST,
|
||||
looks_text)) != 0) {
|
||||
if ((ms->flags & MAGIC_DEBUG) != 0)
|
||||
(void)fprintf(stderr, "softmagic %d\n", m);
|
||||
if ((ms->flags & MAGIC_NO_CHECK_SOFT) == 0) {
|
||||
m = file_softmagic(ms, ubuf, nb, NULL, NULL, BINTEST,
|
||||
looks_text);
|
||||
if ((ms->flags & MAGIC_DEBUG) != 0)
|
||||
(void)fprintf(stderr, "[try softmagic %d]\n", m);
|
||||
if (m) {
|
||||
#ifdef BUILTIN_ELF
|
||||
if ((ms->flags & MAGIC_NO_CHECK_ELF) == 0 && m == 1 &&
|
||||
nb > 5 && fd != -1) {
|
||||
@ -250,31 +274,45 @@ file_buffer(struct magic_set *ms, int fd, const char *inname __attribute__ ((__u
|
||||
* ELF headers that cannot easily * be
|
||||
* extracted with rules in the magic file.
|
||||
*/
|
||||
if ((m = file_tryelf(ms, fd, ubuf, nb)) != 0)
|
||||
if ((ms->flags & MAGIC_DEBUG) != 0)
|
||||
(void)fprintf(stderr,
|
||||
"elf %d\n", m);
|
||||
m = file_tryelf(ms, fd, ubuf, nb);
|
||||
if ((ms->flags & MAGIC_DEBUG) != 0)
|
||||
(void)fprintf(stderr, "[try elf %d]\n",
|
||||
m);
|
||||
}
|
||||
#endif
|
||||
goto done;
|
||||
if (checkdone(ms, &rv))
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
||||
/* try text properties */
|
||||
if ((ms->flags & MAGIC_NO_CHECK_TEXT) == 0) {
|
||||
|
||||
if ((m = file_ascmagic(ms, ubuf, nb, looks_text)) != 0) {
|
||||
if ((ms->flags & MAGIC_DEBUG) != 0)
|
||||
(void)fprintf(stderr, "ascmagic %d\n", m);
|
||||
goto done;
|
||||
m = file_ascmagic(ms, ubuf, nb, looks_text);
|
||||
if ((ms->flags & MAGIC_DEBUG) != 0)
|
||||
(void)fprintf(stderr, "[try ascmagic %d]\n", m);
|
||||
if (m) {
|
||||
if (checkdone(ms, &rv))
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
||||
simple:
|
||||
/* give up */
|
||||
m = 1;
|
||||
if ((!mime || (mime & MAGIC_MIME_TYPE)) &&
|
||||
file_printf(ms, "%s", mime ? type : def) == -1) {
|
||||
rv = -1;
|
||||
if (ms->flags & MAGIC_MIME) {
|
||||
if ((ms->flags & MAGIC_MIME_TYPE) &&
|
||||
file_printf(ms, "%s", type) == -1)
|
||||
rv = -1;
|
||||
} else if (ms->flags & MAGIC_APPLE) {
|
||||
if (file_printf(ms, "UNKNUNKN") == -1)
|
||||
rv = -1;
|
||||
} else if (ms->flags & MAGIC_EXTENSION) {
|
||||
if (file_printf(ms, "???") == -1)
|
||||
rv = -1;
|
||||
} else {
|
||||
if (file_printf(ms, "%s", def) == -1)
|
||||
rv = -1;
|
||||
}
|
||||
done:
|
||||
if ((ms->flags & MAGIC_MIME_ENCODING) != 0) {
|
||||
@ -407,7 +445,7 @@ file_check_mem(struct magic_set *ms, unsigned int level)
|
||||
size_t len;
|
||||
|
||||
if (level >= ms->c.len) {
|
||||
len = (ms->c.len += 20) * sizeof(*ms->c.li);
|
||||
len = (ms->c.len = 20 + level) * sizeof(*ms->c.li);
|
||||
ms->c.li = CAST(struct level_info *, (ms->c.li == NULL) ?
|
||||
malloc(len) :
|
||||
realloc(ms->c.li, len));
|
||||
@ -464,6 +502,8 @@ file_regcomp(file_regex_t *rx, const char *pat, int flags)
|
||||
assert(rx->c_lc_ctype != NULL);
|
||||
rx->old_lc_ctype = uselocale(rx->c_lc_ctype);
|
||||
assert(rx->old_lc_ctype != NULL);
|
||||
#else
|
||||
rx->old_lc_ctype = setlocale(LC_CTYPE, "C");
|
||||
#endif
|
||||
rx->pat = pat;
|
||||
|
||||
@ -486,6 +526,8 @@ file_regfree(file_regex_t *rx)
|
||||
#ifdef USE_C_LOCALE
|
||||
(void)uselocale(rx->old_lc_ctype);
|
||||
freelocale(rx->c_lc_ctype);
|
||||
#else
|
||||
(void)setlocale(LC_CTYPE, rx->old_lc_ctype);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
200
external/bsd/file/dist/src/magic.c
vendored
200
external/bsd/file/dist/src/magic.c
vendored
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: magic.c,v 1.10 2015/01/02 21:15:32 christos Exp $ */
|
||||
/* $NetBSD: magic.c,v 1.11 2017/02/10 17:53:24 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) Christos Zoulas 2003.
|
||||
@ -36,9 +36,9 @@
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
FILE_RCSID("@(#)$File: magic.c,v 1.91 2014/12/16 23:18:40 christos Exp $")
|
||||
FILE_RCSID("@(#)$File: magic.c,v 1.100 2016/07/18 11:43:05 christos Exp $")
|
||||
#else
|
||||
__RCSID("$NetBSD: magic.c,v 1.10 2015/01/02 21:15:32 christos Exp $");
|
||||
__RCSID("$NetBSD: magic.c,v 1.11 2017/02/10 17:53:24 christos Exp $");
|
||||
#endif
|
||||
#endif /* lint */
|
||||
|
||||
@ -89,6 +89,94 @@ private const char *file_or_fd(struct magic_set *, const char *, int);
|
||||
#define STDIN_FILENO 0
|
||||
#endif
|
||||
|
||||
#ifdef WIN32
|
||||
/* HINSTANCE of this shared library. Needed for get_default_magic() */
|
||||
static HINSTANCE _w32_dll_instance = NULL;
|
||||
|
||||
static void
|
||||
_w32_append_path(char **hmagicpath, const char *fmt, ...)
|
||||
{
|
||||
char *tmppath;
|
||||
char *newpath;
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
if (vasprintf(&tmppath, fmt, ap) < 0) {
|
||||
va_end(ap);
|
||||
return;
|
||||
}
|
||||
va_end(ap);
|
||||
|
||||
if (access(tmppath, R_OK) == -1)
|
||||
goto out;
|
||||
|
||||
if (*hmagicpath == NULL) {
|
||||
*hmagicpath = tmppath;
|
||||
return;
|
||||
}
|
||||
|
||||
if (asprintf(&newpath, "%s%c%s", *hmagicpath, PATHSEP, tmppath) < 0)
|
||||
goto out;
|
||||
|
||||
free(*hmagicpath);
|
||||
free(tmppath);
|
||||
*hmagicpath = newpath;
|
||||
return;
|
||||
out:
|
||||
free(tmppath);
|
||||
}
|
||||
|
||||
static void
|
||||
_w32_get_magic_relative_to(char **hmagicpath, HINSTANCE module)
|
||||
{
|
||||
static const char *trypaths[] = {
|
||||
"%s/share/misc/magic.mgc",
|
||||
"%s/magic.mgc",
|
||||
};
|
||||
LPSTR dllpath;
|
||||
size_t sp;
|
||||
|
||||
dllpath = calloc(MAX_PATH + 1, sizeof(*dllpath));
|
||||
|
||||
if (!GetModuleFileNameA(module, dllpath, MAX_PATH))
|
||||
goto out;
|
||||
|
||||
PathRemoveFileSpecA(dllpath);
|
||||
|
||||
if (module) {
|
||||
char exepath[MAX_PATH];
|
||||
GetModuleFileNameA(NULL, exepath, MAX_PATH);
|
||||
PathRemoveFileSpecA(exepath);
|
||||
if (stricmp(exepath, dllpath) == 0)
|
||||
goto out;
|
||||
}
|
||||
|
||||
sp = strlen(dllpath);
|
||||
if (sp > 3 && stricmp(&dllpath[sp - 3], "bin") == 0) {
|
||||
_w32_append_path(hmagicpath,
|
||||
"%s/../share/misc/magic.mgc", dllpath);
|
||||
goto out;
|
||||
}
|
||||
|
||||
for (sp = 0; sp < __arraycount(trypaths); sp++)
|
||||
_w32_append_path(hmagicpath, trypaths[sp], dllpath);
|
||||
out:
|
||||
free(dllpath);
|
||||
}
|
||||
|
||||
/* Placate GCC by offering a sacrificial previous prototype */
|
||||
BOOL WINAPI DllMain(HINSTANCE, DWORD, LPVOID);
|
||||
|
||||
BOOL WINAPI
|
||||
DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
|
||||
LPVOID lpvReserved __attribute__((__unused__)))
|
||||
{
|
||||
if (fdwReason == DLL_PROCESS_ATTACH)
|
||||
_w32_dll_instance = hinstDLL;
|
||||
return TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
private const char *
|
||||
get_default_magic(void)
|
||||
{
|
||||
@ -132,75 +220,33 @@ out:
|
||||
free(hmagicpath);
|
||||
return MAGIC;
|
||||
#else
|
||||
char *hmagicp;
|
||||
char *tmppath = NULL;
|
||||
LPTSTR dllpath;
|
||||
hmagicpath = NULL;
|
||||
|
||||
#define APPENDPATH() \
|
||||
do { \
|
||||
if (tmppath && access(tmppath, R_OK) != -1) { \
|
||||
if (hmagicpath == NULL) \
|
||||
hmagicpath = tmppath; \
|
||||
else { \
|
||||
if (asprintf(&hmagicp, "%s%c%s", hmagicpath, \
|
||||
PATHSEP, tmppath) >= 0) { \
|
||||
free(hmagicpath); \
|
||||
hmagicpath = hmagicp; \
|
||||
} \
|
||||
free(tmppath); \
|
||||
} \
|
||||
tmppath = NULL; \
|
||||
} \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
if (default_magic) {
|
||||
free(default_magic);
|
||||
default_magic = NULL;
|
||||
}
|
||||
|
||||
/* First, try to get user-specific magic file */
|
||||
if ((home = getenv("LOCALAPPDATA")) == NULL) {
|
||||
if ((home = getenv("USERPROFILE")) != NULL)
|
||||
if (asprintf(&tmppath,
|
||||
"%s/Local Settings/Application Data%s", home,
|
||||
hmagic) < 0)
|
||||
tmppath = NULL;
|
||||
} else {
|
||||
if (asprintf(&tmppath, "%s%s", home, hmagic) < 0)
|
||||
tmppath = NULL;
|
||||
}
|
||||
/* First, try to get a magic file from user-application data */
|
||||
if ((home = getenv("LOCALAPPDATA")) != NULL)
|
||||
_w32_append_path(&hmagicpath, "%s%s", home, hmagic);
|
||||
|
||||
APPENDPATH();
|
||||
/* Second, try to get a magic file from the user profile data */
|
||||
if ((home = getenv("USERPROFILE")) != NULL)
|
||||
_w32_append_path(&hmagicpath,
|
||||
"%s/Local Settings/Application Data%s", home, hmagic);
|
||||
|
||||
/* Second, try to get a magic file from Common Files */
|
||||
if ((home = getenv("COMMONPROGRAMFILES")) != NULL) {
|
||||
if (asprintf(&tmppath, "%s%s", home, hmagic) >= 0)
|
||||
APPENDPATH();
|
||||
}
|
||||
/* Third, try to get a magic file from Common Files */
|
||||
if ((home = getenv("COMMONPROGRAMFILES")) != NULL)
|
||||
_w32_append_path(&hmagicpath, "%s%s", home, hmagic);
|
||||
|
||||
/* Third, try to get magic file relative to dll location */
|
||||
dllpath = malloc(sizeof(*dllpath) * (MAX_PATH + 1));
|
||||
dllpath[MAX_PATH] = 0; /* just in case long path gets truncated and not null terminated */
|
||||
if (GetModuleFileNameA(NULL, dllpath, MAX_PATH)){
|
||||
PathRemoveFileSpecA(dllpath);
|
||||
if (strlen(dllpath) > 3 &&
|
||||
stricmp(&dllpath[strlen(dllpath) - 3], "bin") == 0) {
|
||||
if (asprintf(&tmppath,
|
||||
"%s/../share/misc/magic.mgc", dllpath) >= 0)
|
||||
APPENDPATH();
|
||||
} else {
|
||||
if (asprintf(&tmppath,
|
||||
"%s/share/misc/magic.mgc", dllpath) >= 0)
|
||||
APPENDPATH();
|
||||
else if (asprintf(&tmppath,
|
||||
"%s/magic.mgc", dllpath) >= 0)
|
||||
APPENDPATH();
|
||||
}
|
||||
}
|
||||
/* Fourth, try to get magic file relative to exe location */
|
||||
_w32_get_magic_relative_to(&hmagicpath, NULL);
|
||||
|
||||
/* Don't put MAGIC constant - it likely points to a file within MSys
|
||||
tree */
|
||||
/* Fifth, try to get magic file relative to dll location */
|
||||
_w32_get_magic_relative_to(&hmagicpath, _w32_dll_instance);
|
||||
|
||||
/* Avoid MAGIC constant - it likely points to a file within MSys tree */
|
||||
default_magic = hmagicpath;
|
||||
return default_magic;
|
||||
#endif
|
||||
@ -377,7 +423,7 @@ file_or_fd(struct magic_set *ms, const char *inname, int fd)
|
||||
* some overlapping space for matches near EOF
|
||||
*/
|
||||
#define SLOP (1 + sizeof(union VALUETYPE))
|
||||
if ((buf = CAST(unsigned char *, malloc(HOWMANY + SLOP))) == NULL)
|
||||
if ((buf = CAST(unsigned char *, malloc(ms->bytes_max + SLOP))) == NULL)
|
||||
return NULL;
|
||||
|
||||
switch (file_fsmagic(ms, inname, &sb)) {
|
||||
@ -441,18 +487,18 @@ file_or_fd(struct magic_set *ms, const char *inname, int fd)
|
||||
}
|
||||
|
||||
/*
|
||||
* try looking at the first HOWMANY bytes
|
||||
* try looking at the first ms->bytes_max bytes
|
||||
*/
|
||||
if (ispipe) {
|
||||
ssize_t r = 0;
|
||||
|
||||
while ((r = sread(fd, (void *)&buf[nbytes],
|
||||
(size_t)(HOWMANY - nbytes), 1)) > 0) {
|
||||
(size_t)(ms->bytes_max - nbytes), 1)) > 0) {
|
||||
nbytes += r;
|
||||
if (r < PIPE_BUF) break;
|
||||
}
|
||||
|
||||
if (nbytes == 0) {
|
||||
if (nbytes == 0 && inname) {
|
||||
/* We can not read it, but we were able to stat it. */
|
||||
if (unreadable_info(ms, sb.st_mode, inname) == -1)
|
||||
goto done;
|
||||
@ -463,10 +509,10 @@ file_or_fd(struct magic_set *ms, const char *inname, int fd)
|
||||
} else {
|
||||
/* Windows refuses to read from a big console buffer. */
|
||||
size_t howmany =
|
||||
#if defined(WIN32) && HOWMANY > 8 * 1024
|
||||
#if defined(WIN32)
|
||||
_isatty(fd) ? 8 * 1024 :
|
||||
#endif
|
||||
HOWMANY;
|
||||
ms->bytes_max;
|
||||
if ((nbytes = read(fd, (char *)buf, howmany)) == -1) {
|
||||
if (inname == NULL && fd != STDIN_FILENO)
|
||||
file_error(ms, errno, "cannot read fd %d", fd);
|
||||
@ -483,9 +529,11 @@ file_or_fd(struct magic_set *ms, const char *inname, int fd)
|
||||
rv = 0;
|
||||
done:
|
||||
free(buf);
|
||||
if (pos != (off_t)-1)
|
||||
(void)lseek(fd, pos, SEEK_SET);
|
||||
close_and_restore(ms, inname, fd, &sb);
|
||||
if (fd != -1) {
|
||||
if (pos != (off_t)-1)
|
||||
(void)lseek(fd, pos, SEEK_SET);
|
||||
close_and_restore(ms, inname, fd, &sb);
|
||||
}
|
||||
out:
|
||||
return rv == 0 ? file_getbuffer(ms) : NULL;
|
||||
}
|
||||
@ -563,6 +611,12 @@ magic_setparam(struct magic_set *ms, int param, const void *val)
|
||||
case MAGIC_PARAM_ELF_NOTES_MAX:
|
||||
ms->elf_notes_max = (uint16_t)*(const size_t *)val;
|
||||
return 0;
|
||||
case MAGIC_PARAM_REGEX_MAX:
|
||||
ms->elf_notes_max = (uint16_t)*(const size_t *)val;
|
||||
return 0;
|
||||
case MAGIC_PARAM_BYTES_MAX:
|
||||
ms->bytes_max = *(const size_t *)val;
|
||||
return 0;
|
||||
default:
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
@ -588,6 +642,12 @@ magic_getparam(struct magic_set *ms, int param, void *val)
|
||||
case MAGIC_PARAM_ELF_NOTES_MAX:
|
||||
*(size_t *)val = ms->elf_notes_max;
|
||||
return 0;
|
||||
case MAGIC_PARAM_REGEX_MAX:
|
||||
*(size_t *)val = ms->regex_max;
|
||||
return 0;
|
||||
case MAGIC_PARAM_BYTES_MAX:
|
||||
*(size_t *)val = ms->bytes_max;
|
||||
return 0;
|
||||
default:
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
|
52
external/bsd/file/dist/src/print.c
vendored
52
external/bsd/file/dist/src/print.c
vendored
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: print.c,v 1.8 2015/01/02 21:15:32 christos Exp $ */
|
||||
/* $NetBSD: print.c,v 1.9 2017/02/10 17:53:24 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) Ian F. Darwin 1986-1995.
|
||||
@ -35,9 +35,9 @@
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
FILE_RCSID("@(#)$File: print.c,v 1.76 2013/02/26 18:25:00 christos Exp $")
|
||||
FILE_RCSID("@(#)$File: print.c,v 1.81 2016/01/19 15:09:03 christos Exp $")
|
||||
#else
|
||||
__RCSID("$NetBSD: print.c,v 1.8 2015/01/02 21:15:32 christos Exp $");
|
||||
__RCSID("$NetBSD: print.c,v 1.9 2017/02/10 17:53:24 christos Exp $");
|
||||
#endif
|
||||
#endif /* lint */
|
||||
|
||||
@ -162,26 +162,26 @@ file_mdump(struct magic *m)
|
||||
case FILE_BEDATE:
|
||||
case FILE_MEDATE:
|
||||
(void)fprintf(stderr, "%s,",
|
||||
file_fmttime(m->value.l, FILE_T_LOCAL, tbuf));
|
||||
file_fmttime(m->value.l, 0, tbuf));
|
||||
break;
|
||||
case FILE_LDATE:
|
||||
case FILE_LELDATE:
|
||||
case FILE_BELDATE:
|
||||
case FILE_MELDATE:
|
||||
(void)fprintf(stderr, "%s,",
|
||||
file_fmttime(m->value.l, 0, tbuf));
|
||||
file_fmttime(m->value.l, FILE_T_LOCAL, tbuf));
|
||||
break;
|
||||
case FILE_QDATE:
|
||||
case FILE_LEQDATE:
|
||||
case FILE_BEQDATE:
|
||||
(void)fprintf(stderr, "%s,",
|
||||
file_fmttime(m->value.q, FILE_T_LOCAL, tbuf));
|
||||
file_fmttime(m->value.q, 0, tbuf));
|
||||
break;
|
||||
case FILE_QLDATE:
|
||||
case FILE_LEQLDATE:
|
||||
case FILE_BEQLDATE:
|
||||
(void)fprintf(stderr, "%s,",
|
||||
file_fmttime(m->value.q, 0, tbuf));
|
||||
file_fmttime(m->value.q, FILE_T_LOCAL, tbuf));
|
||||
break;
|
||||
case FILE_QWDATE:
|
||||
case FILE_LEQWDATE:
|
||||
@ -204,6 +204,7 @@ file_mdump(struct magic *m)
|
||||
break;
|
||||
case FILE_USE:
|
||||
case FILE_NAME:
|
||||
case FILE_DER:
|
||||
(void) fprintf(stderr, "'%s'", m->value.s);
|
||||
break;
|
||||
default:
|
||||
@ -238,40 +239,27 @@ protected const char *
|
||||
file_fmttime(uint64_t v, int flags, char *buf)
|
||||
{
|
||||
char *pp;
|
||||
time_t t = (time_t)v;
|
||||
struct tm *tm;
|
||||
time_t t;
|
||||
struct tm *tm, tmz;
|
||||
|
||||
if (flags & FILE_T_WINDOWS) {
|
||||
struct timespec ts;
|
||||
cdf_timestamp_to_timespec(&ts, t);
|
||||
cdf_timestamp_to_timespec(&ts, v);
|
||||
t = ts.tv_sec;
|
||||
} else {
|
||||
// XXX: perhaps detect and print something if overflow
|
||||
// on 32 bit time_t?
|
||||
t = (time_t)v;
|
||||
}
|
||||
|
||||
if (flags & FILE_T_LOCAL) {
|
||||
pp = ctime_r(&t, buf);
|
||||
tm = localtime_r(&t, &tmz);
|
||||
} else {
|
||||
#ifndef HAVE_DAYLIGHT
|
||||
private int daylight = 0;
|
||||
#ifdef HAVE_TM_ISDST
|
||||
private time_t now = (time_t)0;
|
||||
|
||||
if (now == (time_t)0) {
|
||||
struct tm *tm1;
|
||||
(void)time(&now);
|
||||
tm1 = localtime(&now);
|
||||
if (tm1 == NULL)
|
||||
goto out;
|
||||
daylight = tm1->tm_isdst;
|
||||
}
|
||||
#endif /* HAVE_TM_ISDST */
|
||||
#endif /* HAVE_DAYLIGHT */
|
||||
if (daylight)
|
||||
t += 3600;
|
||||
tm = gmtime(&t);
|
||||
if (tm == NULL)
|
||||
goto out;
|
||||
pp = asctime_r(tm, buf);
|
||||
tm = gmtime_r(&t, &tmz);
|
||||
}
|
||||
if (tm == NULL)
|
||||
goto out;
|
||||
pp = asctime_r(tm, buf);
|
||||
|
||||
if (pp == NULL)
|
||||
goto out;
|
||||
|
285
external/bsd/file/dist/src/readcdf.c
vendored
285
external/bsd/file/dist/src/readcdf.c
vendored
@ -1,7 +1,7 @@
|
||||
/* $NetBSD: readcdf.c,v 1.12 2015/01/02 21:15:32 christos Exp $ */
|
||||
/* $NetBSD: readcdf.c,v 1.13 2017/02/10 17:53:24 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2008 Christos Zoulas
|
||||
* Copyright (c) 2008, 2016 Christos Zoulas
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -29,9 +29,9 @@
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
FILE_RCSID("@(#)$File: readcdf.c,v 1.49 2014/12/04 15:56:46 christos Exp $")
|
||||
FILE_RCSID("@(#)$File: readcdf.c,v 1.63 2016/10/18 22:25:42 christos Exp $")
|
||||
#else
|
||||
__RCSID("$NetBSD: readcdf.c,v 1.12 2015/01/02 21:15:32 christos Exp $");
|
||||
__RCSID("$NetBSD: readcdf.c,v 1.13 2017/02/10 17:53:24 christos Exp $");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ -66,12 +66,16 @@ static const struct nv {
|
||||
{ "Windows Installer", "vnd.ms-msi", },
|
||||
{ NULL, NULL, },
|
||||
}, name2mime[] = {
|
||||
{ "Book", "vnd.ms-excel", },
|
||||
{ "Workbook", "vnd.ms-excel", },
|
||||
{ "WordDocument", "msword", },
|
||||
{ "PowerPoint", "vnd.ms-powerpoint", },
|
||||
{ "DigitalSignature", "vnd.ms-msi", },
|
||||
{ NULL, NULL, },
|
||||
}, name2desc[] = {
|
||||
{ "WordDocument", "Microsoft Office Word",},
|
||||
{ "Book", "Microsoft Excel", },
|
||||
{ "Workbook", "Microsoft Excel", },
|
||||
{ "WordDocument", "Microsoft Word", },
|
||||
{ "PowerPoint", "Microsoft PowerPoint", },
|
||||
{ "DigitalSignature", "Microsoft Installer", },
|
||||
{ NULL, NULL, },
|
||||
@ -106,6 +110,10 @@ cdf_clsid_to_mime(const uint64_t clsid[2], const struct cv *cv)
|
||||
if (clsid[0] == cv[i].clsid[0] && clsid[1] == cv[i].clsid[1])
|
||||
return cv[i].mime;
|
||||
}
|
||||
#ifdef CDF_DEBUG
|
||||
fprintf(stderr, "unknown mime %" PRIx64 ", %" PRIx64 "\n", clsid[0],
|
||||
clsid[1]);
|
||||
#endif
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -121,15 +129,22 @@ cdf_app_to_mime(const char *vbuf, const struct nv *nv)
|
||||
assert(c_lc_ctype != NULL);
|
||||
old_lc_ctype = uselocale(c_lc_ctype);
|
||||
assert(old_lc_ctype != NULL);
|
||||
#else
|
||||
char *old_lc_ctype = setlocale(LC_CTYPE, "C");
|
||||
#endif
|
||||
for (i = 0; nv[i].pattern != NULL; i++)
|
||||
if (strcasestr(vbuf, nv[i].pattern) != NULL) {
|
||||
rv = nv[i].mime;
|
||||
break;
|
||||
}
|
||||
#ifdef CDF_DEBUG
|
||||
fprintf(stderr, "unknown app %s\n", vbuf);
|
||||
#endif
|
||||
#ifdef USE_C_LOCALE
|
||||
(void)uselocale(old_lc_ctype);
|
||||
freelocale(c_lc_ctype);
|
||||
#else
|
||||
setlocale(LC_CTYPE, old_lc_ctype);
|
||||
#endif
|
||||
return rv;
|
||||
}
|
||||
@ -353,6 +368,178 @@ format_clsid(char *buf, size_t len, const uint64_t uuid[2]) {
|
||||
}
|
||||
#endif
|
||||
|
||||
private int
|
||||
cdf_file_catalog_info(struct magic_set *ms, const cdf_info_t *info,
|
||||
const cdf_header_t *h, const cdf_sat_t *sat, const cdf_sat_t *ssat,
|
||||
const cdf_stream_t *sst, const cdf_dir_t *dir, cdf_stream_t *scn)
|
||||
{
|
||||
int i;
|
||||
|
||||
if ((i = cdf_read_user_stream(info, h, sat, ssat, sst,
|
||||
dir, "Catalog", scn)) == -1)
|
||||
return i;
|
||||
#ifdef CDF_DEBUG
|
||||
cdf_dump_catalog(h, scn);
|
||||
#endif
|
||||
if ((i = cdf_file_catalog(ms, h, scn)) == -1)
|
||||
return -1;
|
||||
return i;
|
||||
}
|
||||
|
||||
private int
|
||||
cdf_check_summary_info(struct magic_set *ms, const cdf_info_t *info,
|
||||
const cdf_header_t *h, const cdf_sat_t *sat, const cdf_sat_t *ssat,
|
||||
const cdf_stream_t *sst, const cdf_dir_t *dir, cdf_stream_t *scn,
|
||||
const cdf_directory_t *root_storage, const char **expn)
|
||||
{
|
||||
int i;
|
||||
const char *str = NULL;
|
||||
cdf_directory_t *d;
|
||||
char name[__arraycount(d->d_name)];
|
||||
size_t j, k;
|
||||
|
||||
#ifdef CDF_DEBUG
|
||||
cdf_dump_summary_info(h, scn);
|
||||
#endif
|
||||
if ((i = cdf_file_summary_info(ms, h, scn, root_storage)) < 0) {
|
||||
*expn = "Can't expand summary_info";
|
||||
return i;
|
||||
}
|
||||
if (i == 1)
|
||||
return i;
|
||||
for (j = 0; str == NULL && j < dir->dir_len; j++) {
|
||||
d = &dir->dir_tab[j];
|
||||
for (k = 0; k < sizeof(name); k++)
|
||||
name[k] = (char)cdf_tole2(d->d_name[k]);
|
||||
str = cdf_app_to_mime(name,
|
||||
NOTMIME(ms) ? name2desc : name2mime);
|
||||
}
|
||||
if (NOTMIME(ms)) {
|
||||
if (str != NULL) {
|
||||
if (file_printf(ms, "%s", str) == -1)
|
||||
return -1;
|
||||
i = 1;
|
||||
}
|
||||
} else {
|
||||
if (str == NULL)
|
||||
str = "vnd.ms-office";
|
||||
if (file_printf(ms, "application/%s", str) == -1)
|
||||
return -1;
|
||||
i = 1;
|
||||
}
|
||||
if (i <= 0) {
|
||||
i = cdf_file_catalog_info(ms, info, h, sat, ssat, sst,
|
||||
dir, scn);
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
private struct sinfo {
|
||||
const char *name;
|
||||
const char *mime;
|
||||
const char *sections[5];
|
||||
const int types[5];
|
||||
} sectioninfo[] = {
|
||||
{ "Encrypted", "encrypted",
|
||||
{
|
||||
"EncryptedPackage", "EncryptedSummary",
|
||||
NULL, NULL, NULL,
|
||||
},
|
||||
{
|
||||
CDF_DIR_TYPE_USER_STREAM,
|
||||
CDF_DIR_TYPE_USER_STREAM,
|
||||
0, 0, 0,
|
||||
|
||||
},
|
||||
},
|
||||
{ "QuickBooks", "quickbooks",
|
||||
{
|
||||
#if 0
|
||||
"TaxForms", "PDFTaxForms", "modulesInBackup",
|
||||
#endif
|
||||
"mfbu_header", NULL, NULL, NULL, NULL,
|
||||
},
|
||||
{
|
||||
#if 0
|
||||
CDF_DIR_TYPE_USER_STORAGE,
|
||||
CDF_DIR_TYPE_USER_STORAGE,
|
||||
CDF_DIR_TYPE_USER_STREAM,
|
||||
#endif
|
||||
CDF_DIR_TYPE_USER_STREAM,
|
||||
0, 0, 0, 0
|
||||
},
|
||||
},
|
||||
{ "Microsoft Excel", "vnd.ms-excel",
|
||||
{
|
||||
"Book", "Workbook", NULL, NULL, NULL,
|
||||
},
|
||||
{
|
||||
CDF_DIR_TYPE_USER_STREAM,
|
||||
CDF_DIR_TYPE_USER_STREAM,
|
||||
0, 0, 0,
|
||||
},
|
||||
},
|
||||
{ "Microsoft Word", "msword",
|
||||
{
|
||||
"WordDocument", NULL, NULL, NULL, NULL,
|
||||
},
|
||||
{
|
||||
CDF_DIR_TYPE_USER_STREAM,
|
||||
0, 0, 0, 0,
|
||||
},
|
||||
},
|
||||
{ "Microsoft PowerPoint", "vnd.ms-powerpoint",
|
||||
{
|
||||
"PowerPoint", NULL, NULL, NULL, NULL,
|
||||
},
|
||||
{
|
||||
CDF_DIR_TYPE_USER_STREAM,
|
||||
0, 0, 0, 0,
|
||||
},
|
||||
},
|
||||
{ "Microsoft Outlook Message", "vnd.ms-outlook",
|
||||
{
|
||||
"__properties_version1.0",
|
||||
"__recip_version1.0_#00000000",
|
||||
NULL, NULL, NULL,
|
||||
},
|
||||
{
|
||||
CDF_DIR_TYPE_USER_STREAM,
|
||||
CDF_DIR_TYPE_USER_STORAGE,
|
||||
0, 0, 0,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
private int
|
||||
cdf_file_dir_info(struct magic_set *ms, const cdf_dir_t *dir)
|
||||
{
|
||||
size_t sd, j;
|
||||
|
||||
for (sd = 0; sd < __arraycount(sectioninfo); sd++) {
|
||||
const struct sinfo *si = §ioninfo[sd];
|
||||
for (j = 0; si->sections[j]; j++) {
|
||||
if (cdf_find_stream(dir, si->sections[j], si->types[j])
|
||||
> 0)
|
||||
break;
|
||||
#ifdef CDF_DEBUG
|
||||
fprintf(stderr, "Can't read %s\n", si->sections[j]);
|
||||
#endif
|
||||
}
|
||||
if (si->sections[j] == NULL)
|
||||
continue;
|
||||
if (NOTMIME(ms)) {
|
||||
if (file_printf(ms, "CDFV2 %s", si->name) == -1)
|
||||
return -1;
|
||||
} else {
|
||||
if (file_printf(ms, "application/%s", si->mime) == -1)
|
||||
return -1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
protected int
|
||||
file_trycdf(struct magic_set *ms, int fd, const unsigned char *buf,
|
||||
size_t nbytes)
|
||||
@ -364,13 +551,13 @@ file_trycdf(struct magic_set *ms, int fd, const unsigned char *buf,
|
||||
cdf_dir_t dir;
|
||||
int i;
|
||||
const char *expn = "";
|
||||
const char *corrupt = "corrupt: ";
|
||||
const cdf_directory_t *root_storage;
|
||||
|
||||
scn.sst_tab = NULL;
|
||||
info.i_fd = fd;
|
||||
info.i_buf = buf;
|
||||
info.i_len = nbytes;
|
||||
if (ms->flags & MAGIC_APPLE)
|
||||
if (ms->flags & (MAGIC_APPLE|MAGIC_EXTENSION))
|
||||
return 0;
|
||||
if (cdf_read_header(&info, &h) == -1)
|
||||
return 0;
|
||||
@ -436,76 +623,39 @@ file_trycdf(struct magic_set *ms, int fd, const unsigned char *buf,
|
||||
i = 1;
|
||||
goto out5;
|
||||
} else {
|
||||
free(scn.sst_tab);
|
||||
scn.sst_tab = NULL;
|
||||
scn.sst_len = 0;
|
||||
scn.sst_dirlen = 0;
|
||||
cdf_zero_stream(&scn);
|
||||
}
|
||||
}
|
||||
|
||||
if ((i = cdf_read_summary_info(&info, &h, &sat, &ssat, &sst, &dir,
|
||||
&scn)) == -1) {
|
||||
if (errno == ESRCH) {
|
||||
if ((i = cdf_read_catalog(&info, &h, &sat, &ssat, &sst,
|
||||
&dir, &scn)) == -1) {
|
||||
corrupt = expn;
|
||||
if ((i = cdf_read_encrypted_package(&info, &h,
|
||||
&sat, &ssat, &sst, &dir, &scn)) == -1)
|
||||
expn = "No summary info";
|
||||
else {
|
||||
expn = "Encrypted";
|
||||
i = -1;
|
||||
}
|
||||
goto out4;
|
||||
}
|
||||
#ifdef CDF_DEBUG
|
||||
cdf_dump_catalog(&h, &scn);
|
||||
#endif
|
||||
if ((i = cdf_file_catalog(ms, &h, &scn))
|
||||
< 0)
|
||||
expn = "Can't expand catalog";
|
||||
} else {
|
||||
if (errno != ESRCH) {
|
||||
expn = "Cannot read summary info";
|
||||
}
|
||||
goto out4;
|
||||
}
|
||||
#ifdef CDF_DEBUG
|
||||
cdf_dump_summary_info(&h, &scn);
|
||||
#endif
|
||||
if ((i = cdf_file_summary_info(ms, &h, &scn, root_storage)) < 0)
|
||||
expn = "Can't expand summary_info";
|
||||
|
||||
if (i == 0) {
|
||||
const char *str = NULL;
|
||||
cdf_directory_t *d;
|
||||
char name[__arraycount(d->d_name)];
|
||||
size_t j, k;
|
||||
|
||||
for (j = 0; str == NULL && j < dir.dir_len; j++) {
|
||||
d = &dir.dir_tab[j];
|
||||
for (k = 0; k < sizeof(name); k++)
|
||||
name[k] = (char)cdf_tole2(d->d_name[k]);
|
||||
str = cdf_app_to_mime(name,
|
||||
NOTMIME(ms) ? name2desc : name2mime);
|
||||
}
|
||||
if (NOTMIME(ms)) {
|
||||
if (str != NULL) {
|
||||
if (file_printf(ms, "%s", str) == -1)
|
||||
return -1;
|
||||
i = 1;
|
||||
} else {
|
||||
i = cdf_check_summary_info(ms, &info, &h,
|
||||
&sat, &ssat, &sst, &dir, &scn, root_storage, &expn);
|
||||
cdf_zero_stream(&scn);
|
||||
}
|
||||
if (i <= 0) {
|
||||
if ((i = cdf_read_doc_summary_info(&info, &h, &sat, &ssat,
|
||||
&sst, &dir, &scn)) == -1) {
|
||||
if (errno != ESRCH) {
|
||||
expn = "Cannot read summary info";
|
||||
}
|
||||
} else {
|
||||
if (str == NULL)
|
||||
str = "vnd.ms-office";
|
||||
if (file_printf(ms, "application/%s", str) == -1)
|
||||
return -1;
|
||||
i = 1;
|
||||
i = cdf_check_summary_info(ms, &info, &h, &sat, &ssat,
|
||||
&sst, &dir, &scn, root_storage, &expn);
|
||||
}
|
||||
}
|
||||
if (i <= 0) {
|
||||
i = cdf_file_dir_info(ms, &dir);
|
||||
if (i < 0)
|
||||
expn = "Cannot read section info";
|
||||
}
|
||||
out5:
|
||||
free(scn.sst_tab);
|
||||
out4:
|
||||
free(sst.sst_tab);
|
||||
cdf_zero_stream(&scn);
|
||||
cdf_zero_stream(&sst);
|
||||
out3:
|
||||
free(dir.dir_tab);
|
||||
out2:
|
||||
@ -519,11 +669,10 @@ out0:
|
||||
"Composite Document File V2 Document") == -1)
|
||||
return -1;
|
||||
if (*expn)
|
||||
if (file_printf(ms, ", %s%s", corrupt, expn) == -1)
|
||||
if (file_printf(ms, ", %s", expn) == -1)
|
||||
return -1;
|
||||
} else {
|
||||
if (file_printf(ms, "application/CDFV2-%s",
|
||||
*corrupt ? "corrupt" : "encrypted") == -1)
|
||||
if (file_printf(ms, "application/CDFV2") == -1)
|
||||
return -1;
|
||||
}
|
||||
i = 1;
|
||||
|
275
external/bsd/file/dist/src/readelf.c
vendored
275
external/bsd/file/dist/src/readelf.c
vendored
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: readelf.c,v 1.11 2015/01/02 21:15:32 christos Exp $ */
|
||||
/* $NetBSD: readelf.c,v 1.12 2017/02/10 17:53:24 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) Christos Zoulas 2003.
|
||||
@ -30,9 +30,9 @@
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
FILE_RCSID("@(#)$File: readelf.c,v 1.117 2014/12/16 23:29:42 christos Exp $")
|
||||
FILE_RCSID("@(#)$File: readelf.c,v 1.130 2017/01/29 19:34:24 christos Exp $")
|
||||
#else
|
||||
__RCSID("$NetBSD: readelf.c,v 1.11 2015/01/02 21:15:32 christos Exp $");
|
||||
__RCSID("$NetBSD: readelf.c,v 1.12 2017/02/10 17:53:24 christos Exp $");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ -56,7 +56,7 @@ private int dophn_exec(struct magic_set *, int, int, int, off_t, int, size_t,
|
||||
private int doshn(struct magic_set *, int, int, int, off_t, int, size_t,
|
||||
off_t, int, int, int *, uint16_t *);
|
||||
private size_t donote(struct magic_set *, void *, size_t, size_t, int,
|
||||
int, size_t, int *, uint16_t *);
|
||||
int, size_t, int *, uint16_t *, int, off_t, int, off_t);
|
||||
|
||||
#define ELF_ALIGN(a) ((((a) + align - 1) / align) * align)
|
||||
|
||||
@ -183,6 +183,11 @@ getu64(int swap, uint64_t value)
|
||||
elf_getu32(swap, ph32.p_align) : 4) \
|
||||
: (off_t) (ph64.p_align ? \
|
||||
elf_getu64(swap, ph64.p_align) : 4)))
|
||||
#define xph_vaddr (size_t)((clazz == ELFCLASS32 \
|
||||
? (off_t) (ph32.p_vaddr ? \
|
||||
elf_getu32(swap, ph32.p_vaddr) : 4) \
|
||||
: (off_t) (ph64.p_vaddr ? \
|
||||
elf_getu64(swap, ph64.p_vaddr) : 4)))
|
||||
#define xph_filesz (size_t)((clazz == ELFCLASS32 \
|
||||
? elf_getu32(swap, ph32.p_filesz) \
|
||||
: elf_getu64(swap, ph64.p_filesz)))
|
||||
@ -193,8 +198,8 @@ getu64(int swap, uint64_t value)
|
||||
? elf_getu32(swap, ph32.p_memsz) \
|
||||
: elf_getu64(swap, ph64.p_memsz)))
|
||||
#define xnh_sizeof (clazz == ELFCLASS32 \
|
||||
? sizeof nh32 \
|
||||
: sizeof nh64)
|
||||
? sizeof(nh32) \
|
||||
: sizeof(nh64))
|
||||
#define xnh_type (clazz == ELFCLASS32 \
|
||||
? elf_getu32(swap, nh32.n_type) \
|
||||
: elf_getu32(swap, nh64.n_type))
|
||||
@ -219,6 +224,18 @@ getu64(int swap, uint64_t value)
|
||||
#define xcap_val (clazz == ELFCLASS32 \
|
||||
? elf_getu32(swap, cap32.c_un.c_val) \
|
||||
: elf_getu64(swap, cap64.c_un.c_val))
|
||||
#define xauxv_addr (clazz == ELFCLASS32 \
|
||||
? (void *)&auxv32 \
|
||||
: (void *)&auxv64)
|
||||
#define xauxv_sizeof (clazz == ELFCLASS32 \
|
||||
? sizeof(auxv32) \
|
||||
: sizeof(auxv64))
|
||||
#define xauxv_type (clazz == ELFCLASS32 \
|
||||
? elf_getu32(swap, auxv32.a_type) \
|
||||
: elf_getu64(swap, auxv64.a_type))
|
||||
#define xauxv_val (clazz == ELFCLASS32 \
|
||||
? elf_getu32(swap, auxv32.a_v) \
|
||||
: elf_getu64(swap, auxv64.a_v))
|
||||
|
||||
#ifdef ELFCORE
|
||||
/*
|
||||
@ -308,6 +325,7 @@ private const char os_style_names[][8] = {
|
||||
#define FLAGS_DID_NETBSD_CMODEL 0x040
|
||||
#define FLAGS_DID_NETBSD_UNKNOWN 0x080
|
||||
#define FLAGS_IS_CORE 0x100
|
||||
#define FLAGS_DID_AUXV 0x200
|
||||
|
||||
private int
|
||||
dophn_core(struct magic_set *ms, int clazz, int swap, int fd, off_t off,
|
||||
@ -318,6 +336,8 @@ dophn_core(struct magic_set *ms, int clazz, int swap, int fd, off_t off,
|
||||
size_t offset, len;
|
||||
unsigned char nbuf[BUFSIZ];
|
||||
ssize_t bufsize;
|
||||
off_t ph_off = off;
|
||||
int ph_num = num;
|
||||
|
||||
if (size != xph_sizeof) {
|
||||
if (file_printf(ms, ", corrupted program header size") == -1)
|
||||
@ -357,7 +377,8 @@ dophn_core(struct magic_set *ms, int clazz, int swap, int fd, off_t off,
|
||||
if (offset >= (size_t)bufsize)
|
||||
break;
|
||||
offset = donote(ms, nbuf, offset, (size_t)bufsize,
|
||||
clazz, swap, 4, flags, notecount);
|
||||
clazz, swap, 4, flags, notecount, fd, ph_off,
|
||||
ph_num, fsize);
|
||||
if (offset == 0)
|
||||
break;
|
||||
|
||||
@ -494,12 +515,26 @@ do_bid_note(struct magic_set *ms, unsigned char *nbuf, uint32_t type,
|
||||
size_t noff, size_t doff, int *flags)
|
||||
{
|
||||
if (namesz == 4 && strcmp((char *)&nbuf[noff], "GNU") == 0 &&
|
||||
type == NT_GNU_BUILD_ID && (descsz == 16 || descsz == 20)) {
|
||||
type == NT_GNU_BUILD_ID && (descsz >= 4 || descsz <= 20)) {
|
||||
uint8_t desc[20];
|
||||
const char *btype;
|
||||
uint32_t i;
|
||||
*flags |= FLAGS_DID_BUILD_ID;
|
||||
if (file_printf(ms, ", BuildID[%s]=", descsz == 16 ? "md5/uuid" :
|
||||
"sha1") == -1)
|
||||
switch (descsz) {
|
||||
case 8:
|
||||
btype = "xxHash";
|
||||
break;
|
||||
case 16:
|
||||
btype = "md5/uuid";
|
||||
break;
|
||||
case 20:
|
||||
btype = "sha1";
|
||||
break;
|
||||
default:
|
||||
btype = "unknown";
|
||||
break;
|
||||
}
|
||||
if (file_printf(ms, ", BuildID[%s]=", btype) == -1)
|
||||
return 1;
|
||||
(void)memcpy(desc, &nbuf[doff], descsz);
|
||||
for (i = 0; i < descsz; i++)
|
||||
@ -819,9 +854,157 @@ do_core_note(struct magic_set *ms, unsigned char *nbuf, uint32_t type,
|
||||
return 0;
|
||||
}
|
||||
|
||||
private off_t
|
||||
get_offset_from_virtaddr(struct magic_set *ms, int swap, int clazz, int fd,
|
||||
off_t off, int num, off_t fsize, uint64_t virtaddr)
|
||||
{
|
||||
Elf32_Phdr ph32;
|
||||
Elf64_Phdr ph64;
|
||||
|
||||
/*
|
||||
* Loop through all the program headers and find the header with
|
||||
* virtual address in which the "virtaddr" belongs to.
|
||||
*/
|
||||
for ( ; num; num--) {
|
||||
if (pread(fd, xph_addr, xph_sizeof, off) < (ssize_t)xph_sizeof) {
|
||||
file_badread(ms);
|
||||
return -1;
|
||||
}
|
||||
off += xph_sizeof;
|
||||
|
||||
if (fsize != SIZE_UNKNOWN && xph_offset > fsize) {
|
||||
/* Perhaps warn here */
|
||||
continue;
|
||||
}
|
||||
|
||||
if (virtaddr >= xph_vaddr && virtaddr < xph_vaddr + xph_filesz)
|
||||
return xph_offset + (virtaddr - xph_vaddr);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private size_t
|
||||
get_string_on_virtaddr(struct magic_set *ms,
|
||||
int swap, int clazz, int fd, off_t ph_off, int ph_num,
|
||||
off_t fsize, uint64_t virtaddr, char *buf, ssize_t buflen)
|
||||
{
|
||||
char *bptr;
|
||||
off_t offset;
|
||||
|
||||
if (buflen == 0)
|
||||
return 0;
|
||||
|
||||
offset = get_offset_from_virtaddr(ms, swap, clazz, fd, ph_off, ph_num,
|
||||
fsize, virtaddr);
|
||||
if ((buflen = pread(fd, buf, buflen, offset)) <= 0) {
|
||||
file_badread(ms);
|
||||
return 0;
|
||||
}
|
||||
|
||||
buf[buflen - 1] = '\0';
|
||||
|
||||
/* We expect only printable characters, so return if buffer contains
|
||||
* non-printable character before the '\0' or just '\0'. */
|
||||
for (bptr = buf; *bptr && isprint((unsigned char)*bptr); bptr++)
|
||||
continue;
|
||||
if (*bptr != '\0')
|
||||
return 0;
|
||||
|
||||
return bptr - buf;
|
||||
}
|
||||
|
||||
|
||||
private int
|
||||
do_auxv_note(struct magic_set *ms, unsigned char *nbuf, uint32_t type,
|
||||
int swap, uint32_t namesz __attribute__((__unused__)),
|
||||
uint32_t descsz __attribute__((__unused__)),
|
||||
size_t noff __attribute__((__unused__)), size_t doff,
|
||||
int *flags, size_t size __attribute__((__unused__)), int clazz,
|
||||
int fd, off_t ph_off, int ph_num, off_t fsize)
|
||||
{
|
||||
#ifdef ELFCORE
|
||||
Aux32Info auxv32;
|
||||
Aux64Info auxv64;
|
||||
size_t elsize = xauxv_sizeof;
|
||||
const char *tag;
|
||||
int is_string;
|
||||
size_t nval;
|
||||
|
||||
if (type != NT_AUXV || (*flags & FLAGS_IS_CORE) == 0)
|
||||
return 0;
|
||||
|
||||
*flags |= FLAGS_DID_AUXV;
|
||||
|
||||
nval = 0;
|
||||
for (size_t off = 0; off + elsize <= descsz; off += elsize) {
|
||||
(void)memcpy(xauxv_addr, &nbuf[doff + off], xauxv_sizeof);
|
||||
/* Limit processing to 50 vector entries to prevent DoS */
|
||||
if (nval++ >= 50) {
|
||||
file_error(ms, 0, "Too many ELF Auxv elements");
|
||||
return 1;
|
||||
}
|
||||
|
||||
switch(xauxv_type) {
|
||||
case AT_LINUX_EXECFN:
|
||||
is_string = 1;
|
||||
tag = "execfn";
|
||||
break;
|
||||
case AT_LINUX_PLATFORM:
|
||||
is_string = 1;
|
||||
tag = "platform";
|
||||
break;
|
||||
case AT_LINUX_UID:
|
||||
is_string = 0;
|
||||
tag = "real uid";
|
||||
break;
|
||||
case AT_LINUX_GID:
|
||||
is_string = 0;
|
||||
tag = "real gid";
|
||||
break;
|
||||
case AT_LINUX_EUID:
|
||||
is_string = 0;
|
||||
tag = "effective uid";
|
||||
break;
|
||||
case AT_LINUX_EGID:
|
||||
is_string = 0;
|
||||
tag = "effective gid";
|
||||
break;
|
||||
default:
|
||||
is_string = 0;
|
||||
tag = NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
if (tag == NULL)
|
||||
continue;
|
||||
|
||||
if (is_string) {
|
||||
char buf[256];
|
||||
ssize_t buflen;
|
||||
buflen = get_string_on_virtaddr(ms, swap, clazz, fd,
|
||||
ph_off, ph_num, fsize, xauxv_val, buf, sizeof(buf));
|
||||
|
||||
if (buflen == 0)
|
||||
continue;
|
||||
|
||||
if (file_printf(ms, ", %s: '%s'", tag, buf) == -1)
|
||||
return 0;
|
||||
} else {
|
||||
if (file_printf(ms, ", %s: %d", tag, (int) xauxv_val)
|
||||
== -1)
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
private size_t
|
||||
donote(struct magic_set *ms, void *vbuf, size_t offset, size_t size,
|
||||
int clazz, int swap, size_t align, int *flags, uint16_t *notecount)
|
||||
int clazz, int swap, size_t align, int *flags, uint16_t *notecount,
|
||||
int fd, off_t ph_off, int ph_num, off_t fsize)
|
||||
{
|
||||
Elf32_Nhdr nh32;
|
||||
Elf64_Nhdr nh64;
|
||||
@ -845,6 +1028,7 @@ donote(struct magic_set *ms, void *vbuf, size_t offset, size_t size,
|
||||
|
||||
namesz = xnh_namesz;
|
||||
descsz = xnh_descsz;
|
||||
|
||||
if ((namesz == 0) && (descsz == 0)) {
|
||||
/*
|
||||
* We're out of note headers.
|
||||
@ -882,28 +1066,36 @@ donote(struct magic_set *ms, void *vbuf, size_t offset, size_t size,
|
||||
return (offset >= size) ? offset : size;
|
||||
}
|
||||
|
||||
|
||||
if ((*flags & FLAGS_DID_OS_NOTE) == 0) {
|
||||
if (do_os_note(ms, nbuf, xnh_type, swap,
|
||||
namesz, descsz, noff, doff, flags))
|
||||
return size;
|
||||
return offset;
|
||||
}
|
||||
|
||||
if ((*flags & FLAGS_DID_BUILD_ID) == 0) {
|
||||
if (do_bid_note(ms, nbuf, xnh_type, swap,
|
||||
namesz, descsz, noff, doff, flags))
|
||||
return size;
|
||||
return offset;
|
||||
}
|
||||
|
||||
if ((*flags & FLAGS_DID_NETBSD_PAX) == 0) {
|
||||
if (do_pax_note(ms, nbuf, xnh_type, swap,
|
||||
namesz, descsz, noff, doff, flags))
|
||||
return size;
|
||||
return offset;
|
||||
}
|
||||
|
||||
if ((*flags & FLAGS_DID_CORE) == 0) {
|
||||
if (do_core_note(ms, nbuf, xnh_type, swap,
|
||||
namesz, descsz, noff, doff, flags, size, clazz))
|
||||
return size;
|
||||
return offset;
|
||||
}
|
||||
|
||||
if ((*flags & FLAGS_DID_AUXV) == 0) {
|
||||
if (do_auxv_note(ms, nbuf, xnh_type, swap,
|
||||
namesz, descsz, noff, doff, flags, size, clazz,
|
||||
fd, ph_off, ph_num, fsize))
|
||||
return offset;
|
||||
}
|
||||
|
||||
if (namesz == 7 && strcmp((char *)&nbuf[noff], "NetBSD") == 0) {
|
||||
@ -911,32 +1103,32 @@ donote(struct magic_set *ms, void *vbuf, size_t offset, size_t size,
|
||||
descsz = 100;
|
||||
switch (xnh_type) {
|
||||
case NT_NETBSD_VERSION:
|
||||
return size;
|
||||
return offset;
|
||||
case NT_NETBSD_MARCH:
|
||||
if (*flags & FLAGS_DID_NETBSD_MARCH)
|
||||
return size;
|
||||
return offset;
|
||||
*flags |= FLAGS_DID_NETBSD_MARCH;
|
||||
if (file_printf(ms, ", compiled for: %.*s",
|
||||
(int)descsz, (const char *)&nbuf[doff]) == -1)
|
||||
return size;
|
||||
return offset;
|
||||
break;
|
||||
case NT_NETBSD_CMODEL:
|
||||
if (*flags & FLAGS_DID_NETBSD_CMODEL)
|
||||
return size;
|
||||
return offset;
|
||||
*flags |= FLAGS_DID_NETBSD_CMODEL;
|
||||
if (file_printf(ms, ", compiler model: %.*s",
|
||||
(int)descsz, (const char *)&nbuf[doff]) == -1)
|
||||
return size;
|
||||
return offset;
|
||||
break;
|
||||
default:
|
||||
if (*flags & FLAGS_DID_NETBSD_UNKNOWN)
|
||||
return size;
|
||||
return offset;
|
||||
*flags |= FLAGS_DID_NETBSD_UNKNOWN;
|
||||
if (file_printf(ms, ", note=%u", xnh_type) == -1)
|
||||
return size;
|
||||
return offset;
|
||||
break;
|
||||
}
|
||||
return size;
|
||||
return offset;
|
||||
}
|
||||
|
||||
return offset;
|
||||
@ -999,7 +1191,7 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
|
||||
{
|
||||
Elf32_Shdr sh32;
|
||||
Elf64_Shdr sh64;
|
||||
int stripped = 1;
|
||||
int stripped = 1, has_debug_info = 1;
|
||||
size_t nbadcap = 0;
|
||||
void *nbuf;
|
||||
off_t noff, coff, name_off;
|
||||
@ -1017,8 +1209,9 @@ 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, CAST(off_t, (off + size * strtab)))
|
||||
< (ssize_t)xsh_sizeof) {
|
||||
file_badread(ms);
|
||||
return -1;
|
||||
if (file_printf(ms, ", missing section headers") == -1)
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
name_off = xsh_offset;
|
||||
|
||||
@ -1029,8 +1222,10 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
|
||||
return -1;
|
||||
}
|
||||
name[namesize] = '\0';
|
||||
if (strcmp(name, ".debug_info") == 0)
|
||||
if (strcmp(name, ".debug_info") == 0) {
|
||||
has_debug_info = 1;
|
||||
stripped = 0;
|
||||
}
|
||||
|
||||
if (pread(fd, xsh_addr, xsh_sizeof, off) < (ssize_t)xsh_sizeof) {
|
||||
file_badread(ms);
|
||||
@ -1054,15 +1249,28 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
/* Things we can determine when we seek */
|
||||
switch (xsh_type) {
|
||||
case SHT_NOTE:
|
||||
if ((uintmax_t)(xsh_size + xsh_offset) >
|
||||
(uintmax_t)fsize) {
|
||||
if (file_printf(ms,
|
||||
", note offset/size 0x%" INTMAX_T_FORMAT
|
||||
"x+0x%" INTMAX_T_FORMAT "x exceeds"
|
||||
" file size 0x%" INTMAX_T_FORMAT "x",
|
||||
(uintmax_t)xsh_offset, (uintmax_t)xsh_size,
|
||||
(uintmax_t)fsize) == -1)
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
if ((nbuf = malloc(xsh_size)) == NULL) {
|
||||
file_error(ms, errno, "Cannot allocate memory"
|
||||
" for note");
|
||||
return -1;
|
||||
}
|
||||
if (pread(fd, nbuf, xsh_size, xsh_offset) < (ssize_t)xsh_size) {
|
||||
if (pread(fd, nbuf, xsh_size, xsh_offset) <
|
||||
(ssize_t)xsh_size) {
|
||||
file_badread(ms);
|
||||
free(nbuf);
|
||||
return -1;
|
||||
@ -1073,7 +1281,8 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
|
||||
if (noff >= (off_t)xsh_size)
|
||||
break;
|
||||
noff = donote(ms, nbuf, (size_t)noff,
|
||||
xsh_size, clazz, swap, 4, flags, notecount);
|
||||
xsh_size, clazz, swap, 4, flags, notecount,
|
||||
fd, 0, 0, 0);
|
||||
if (noff == 0)
|
||||
break;
|
||||
}
|
||||
@ -1172,6 +1381,10 @@ doshn(struct magic_set *ms, int clazz, int swap, int fd, off_t off, int num,
|
||||
|
||||
if (file_printf(ms, ", %sstripped", stripped ? "" : "not ") == -1)
|
||||
return -1;
|
||||
if (has_debug_info) {
|
||||
if (file_printf(ms, ", with debug_info") == -1)
|
||||
return -1;
|
||||
}
|
||||
if (cap_hw1) {
|
||||
const cap_desc_t *cdp;
|
||||
switch (mach) {
|
||||
@ -1322,7 +1535,7 @@ dophn_exec(struct magic_set *ms, int clazz, int swap, int fd, off_t off,
|
||||
break;
|
||||
offset = donote(ms, nbuf, offset,
|
||||
(size_t)bufsize, clazz, swap, align,
|
||||
flags, notecount);
|
||||
flags, notecount, fd, 0, 0, 0);
|
||||
if (offset == 0)
|
||||
break;
|
||||
}
|
||||
@ -1359,7 +1572,7 @@ file_tryelf(struct magic_set *ms, int fd, const unsigned char *buf,
|
||||
Elf64_Ehdr elf64hdr;
|
||||
uint16_t type, phnum, shnum, notecount;
|
||||
|
||||
if (ms->flags & (MAGIC_MIME|MAGIC_APPLE))
|
||||
if (ms->flags & (MAGIC_MIME|MAGIC_APPLE|MAGIC_EXTENSION))
|
||||
return 0;
|
||||
/*
|
||||
* ELF executables have multiple section headers in arbitrary
|
||||
|
819
external/bsd/file/dist/src/softmagic.c
vendored
819
external/bsd/file/dist/src/softmagic.c
vendored
File diff suppressed because it is too large
Load Diff
25
external/bsd/file/dist/tests/Makefile.in
vendored
25
external/bsd/file/dist/tests/Makefile.in
vendored
@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.14 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -14,7 +14,17 @@
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
@ -78,8 +88,6 @@ build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
check_PROGRAMS = test$(EXEEXT)
|
||||
subdir = tests
|
||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
||||
$(top_srcdir)/depcomp README
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
@ -87,6 +95,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
@ -158,6 +167,7 @@ am__define_uniq_tagged_files = \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp README
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
pkgdatadir = @pkgdatadir@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
@ -307,7 +317,6 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign tests/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
@ -596,9 +605,11 @@ uninstall-am:
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags tags-am uninstall uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
check-local:
|
||||
MAGIC=$(top_builddir)/magic/magic ./test
|
||||
for i in $T/*.testfile; do echo Running test: $$i; MAGIC=$(top_builddir)/magic/magic ./test $$i $${i%%.testfile}.result; done
|
||||
set -e; for i in $T/*.testfile; do echo Running test: $$i; TZ=UTC MAGIC=$(top_builddir)/magic/magic ./test $$i $${i%%.testfile}.result; done
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
|
26
external/bsd/file/include/config.h
vendored
26
external/bsd/file/include/config.h
vendored
@ -33,6 +33,9 @@
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#define HAVE_DLFCN_H 1
|
||||
|
||||
/* Define to 1 if you have the `dprintf' function. */
|
||||
#define HAVE_DPRINTF 1
|
||||
|
||||
/* Define to 1 if you have the <err.h> header file. */
|
||||
#define HAVE_ERR_H 1
|
||||
|
||||
@ -63,6 +66,9 @@
|
||||
/* Define to 1 if you have the `getpagesize' function. */
|
||||
#define HAVE_GETPAGESIZE 1
|
||||
|
||||
/* Define to 1 if you have the `gmtime_r' function. */
|
||||
#define HAVE_GMTIME_R 1
|
||||
|
||||
/* Define to 1 if the system has the type `intptr_t'. */
|
||||
#define HAVE_INTPTR_T 1
|
||||
|
||||
@ -81,6 +87,9 @@
|
||||
/* Define to 1 if you have the <locale.h> header file. */
|
||||
#define HAVE_LOCALE_H 1
|
||||
|
||||
/* Define to 1 if you have the `localtime_r' function. */
|
||||
#define HAVE_LOCALTIME_R 1
|
||||
|
||||
/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
|
||||
#define HAVE_MBRTOWC 1
|
||||
|
||||
@ -91,7 +100,7 @@
|
||||
#define HAVE_MEMORY_H 1
|
||||
|
||||
/* Define to 1 if you have the `mkostemp' function. */
|
||||
/* #undef HAVE_MKOSTEMP */
|
||||
#define HAVE_MKOSTEMP 1
|
||||
|
||||
/* Define to 1 if you have the `mkstemp' function. */
|
||||
#define HAVE_MKSTEMP 1
|
||||
@ -108,6 +117,12 @@
|
||||
/* Define to 1 if you have the `setlocale' function. */
|
||||
#define HAVE_SETLOCALE 1
|
||||
|
||||
/* Define to 1 if you have the <signal.h> header file. */
|
||||
#define HAVE_SIGNAL_H 1
|
||||
|
||||
/* Have sig_t type */
|
||||
#define HAVE_SIG_T 1
|
||||
|
||||
/* Define to 1 if you have the <stddef.h> header file. */
|
||||
#define HAVE_STDDEF_H 1
|
||||
|
||||
@ -260,7 +275,7 @@
|
||||
#define PACKAGE_NAME "file"
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#define PACKAGE_STRING "file 5.22"
|
||||
#define PACKAGE_STRING "file 5.30"
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#define PACKAGE_TARNAME "file"
|
||||
@ -269,7 +284,7 @@
|
||||
#define PACKAGE_URL ""
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION "5.22"
|
||||
#define PACKAGE_VERSION "5.30"
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#define STDC_HEADERS 1
|
||||
@ -300,7 +315,7 @@
|
||||
|
||||
|
||||
/* Version number of package */
|
||||
#define VERSION "5.22"
|
||||
#define VERSION "5.30"
|
||||
|
||||
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
|
||||
significant byte first (like Motorola and SPARC, unlike Intel). */
|
||||
@ -314,6 +329,9 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Enable zlib compression support */
|
||||
#define ZLIBSUPPORT 1
|
||||
|
||||
/* Enable large inode numbers on Mac OS X 10.5. */
|
||||
#ifndef _DARWIN_USE_64_BIT_INODE
|
||||
# define _DARWIN_USE_64_BIT_INODE 1
|
||||
|
Loading…
x
Reference in New Issue
Block a user