Vendor import of file 5.29.
This commit is contained in:
parent
acd3b1450f
commit
fe359185f9
29
ChangeLog
29
ChangeLog
@ -1,3 +1,32 @@
|
|||||||
|
2016-10-25 10:40 Christos Zoulas <christos@zoulas.com>
|
||||||
|
|
||||||
|
* release 5.28
|
||||||
|
|
||||||
|
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>
|
2016-06-13 19:40 Christos Zoulas <christos@zoulas.com>
|
||||||
|
|
||||||
* release 5.28
|
* release 5.28
|
||||||
|
20
TODO
20
TODO
@ -6,7 +6,6 @@ file, not here. More speculative material can live here.
|
|||||||
listed in the BUGS section of the man page had been fixed!)
|
listed in the BUGS section of the man page had been fixed!)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
It would be nice to simplify file considerably. For example,
|
It would be nice to simplify file considerably. For example,
|
||||||
reimplement the apprentice and non-pattern magic methods in Python,
|
reimplement the apprentice and non-pattern magic methods in Python,
|
||||||
and compile the magic patterns to a giant regex (or something similar;
|
and compile the magic patterns to a giant regex (or something similar;
|
||||||
@ -15,8 +14,23 @@ small amount of C is needed (because fast execution is typically only
|
|||||||
required for soft magic, not the more detailed information given by
|
required for soft magic, not the more detailed information given by
|
||||||
hard-wired routines). In this regard, note that hplip, which is
|
hard-wired routines). In this regard, note that hplip, which is
|
||||||
BSD-licensed, has a magic reimplementation in Python.
|
BSD-licensed, has a magic reimplementation in Python.
|
||||||
|
---
|
||||||
Read the kerberos magic entry for more ideas.
|
Read the kerberos magic entry for more ideas.
|
||||||
|
---
|
||||||
Write a string merger to make magic entry sizes dynamic.
|
Write a string merger to make magic entry sizes dynamic.
|
||||||
Strings will be converted to offsets from the string table.
|
Strings will be converted to offsets from the string table.
|
||||||
|
---
|
||||||
|
Programming language support, we can introduce the concept of a group
|
||||||
|
of rules where n rules need to match before the rule is positive. This
|
||||||
|
could require structural changes to the matching code :-(
|
||||||
|
|
||||||
|
0 group 2 # require 2 matches
|
||||||
|
# rule 1
|
||||||
|
>0 ....
|
||||||
|
...
|
||||||
|
# rule 2
|
||||||
|
>0 ....
|
||||||
|
...
|
||||||
|
|
||||||
|
christos
|
||||||
|
|
||||||
|
362
config.guess
vendored
362
config.guess
vendored
@ -1,14 +1,12 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Attempt to guess a canonical system name.
|
# Attempt to guess a canonical system name.
|
||||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
# Copyright 1992-2015 Free Software Foundation, Inc.
|
||||||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
|
|
||||||
# 2011, 2012 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
timestamp='2012-02-10'
|
timestamp='2015-03-04'
|
||||||
|
|
||||||
# This file is free software; you can redistribute it and/or modify it
|
# 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
|
# under the terms of the GNU General Public License as published by
|
||||||
# the Free Software Foundation; either version 2 of the License, or
|
# the Free Software Foundation; either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful, but
|
# This program is distributed in the hope that it will be useful, but
|
||||||
@ -22,19 +20,17 @@ timestamp='2012-02-10'
|
|||||||
# As a special exception to the GNU General Public License, if you
|
# As a special exception to the GNU General Public License, if you
|
||||||
# distribute this file as part of a program that contains a
|
# distribute this file as part of a program that contains a
|
||||||
# configuration script generated by Autoconf, you may include it under
|
# configuration script generated by Autoconf, you may include it under
|
||||||
# the same distribution terms that you use for the rest of that program.
|
# the same distribution terms that you use for the rest of that
|
||||||
|
# program. This Exception is an additional permission under section 7
|
||||||
|
# of the GNU General Public License, version 3 ("GPLv3").
|
||||||
# Originally written by Per Bothner. Please send patches (context
|
|
||||||
# diff format) to <config-patches@gnu.org> and include a ChangeLog
|
|
||||||
# entry.
|
|
||||||
#
|
#
|
||||||
# This script attempts to guess a canonical system name similar to
|
# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
|
||||||
# config.sub. If it succeeds, it prints the system name on stdout, and
|
|
||||||
# exits with 0. Otherwise, it exits with 1.
|
|
||||||
#
|
#
|
||||||
# You can get the latest version of this script from:
|
# 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;hb=HEAD
|
# 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>.
|
||||||
|
|
||||||
|
|
||||||
me=`echo "$0" | sed -e 's,.*/,,'`
|
me=`echo "$0" | sed -e 's,.*/,,'`
|
||||||
|
|
||||||
@ -54,9 +50,7 @@ version="\
|
|||||||
GNU config.guess ($timestamp)
|
GNU config.guess ($timestamp)
|
||||||
|
|
||||||
Originally written by Per Bothner.
|
Originally written by Per Bothner.
|
||||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
|
Copyright 1992-2015 Free Software Foundation, Inc.
|
||||||
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
|
||||||
Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
This is free software; see the source for copying conditions. There is NO
|
This is free software; see the source for copying conditions. There is NO
|
||||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||||
@ -138,6 +132,27 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
|
|||||||
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
|
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
|
||||||
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
|
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
|
||||||
|
|
||||||
|
case "${UNAME_SYSTEM}" in
|
||||||
|
Linux|GNU|GNU/*)
|
||||||
|
# If the system lacks a compiler, then just pick glibc.
|
||||||
|
# We could probably try harder.
|
||||||
|
LIBC=gnu
|
||||||
|
|
||||||
|
eval $set_cc_for_build
|
||||||
|
cat <<-EOF > $dummy.c
|
||||||
|
#include <features.h>
|
||||||
|
#if defined(__UCLIBC__)
|
||||||
|
LIBC=uclibc
|
||||||
|
#elif defined(__dietlibc__)
|
||||||
|
LIBC=dietlibc
|
||||||
|
#else
|
||||||
|
LIBC=gnu
|
||||||
|
#endif
|
||||||
|
EOF
|
||||||
|
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
# Note: order is significant - the case branches are not exclusive.
|
# Note: order is significant - the case branches are not exclusive.
|
||||||
|
|
||||||
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||||
@ -153,20 +168,27 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
|||||||
# Note: NetBSD doesn't particularly care about the vendor
|
# Note: NetBSD doesn't particularly care about the vendor
|
||||||
# portion of the name. We always set it to "unknown".
|
# portion of the name. We always set it to "unknown".
|
||||||
sysctl="sysctl -n hw.machine_arch"
|
sysctl="sysctl -n hw.machine_arch"
|
||||||
UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
|
UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
|
||||||
/usr/sbin/$sysctl 2>/dev/null || echo unknown)`
|
/sbin/$sysctl 2>/dev/null || \
|
||||||
|
/usr/sbin/$sysctl 2>/dev/null || \
|
||||||
|
echo unknown)`
|
||||||
case "${UNAME_MACHINE_ARCH}" in
|
case "${UNAME_MACHINE_ARCH}" in
|
||||||
armeb) machine=armeb-unknown ;;
|
armeb) machine=armeb-unknown ;;
|
||||||
arm*) machine=arm-unknown ;;
|
arm*) machine=arm-unknown ;;
|
||||||
sh3el) machine=shl-unknown ;;
|
sh3el) machine=shl-unknown ;;
|
||||||
sh3eb) machine=sh-unknown ;;
|
sh3eb) machine=sh-unknown ;;
|
||||||
sh5el) machine=sh5le-unknown ;;
|
sh5el) machine=sh5le-unknown ;;
|
||||||
|
earmv*)
|
||||||
|
arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
|
||||||
|
endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
|
||||||
|
machine=${arch}${endian}-unknown
|
||||||
|
;;
|
||||||
*) machine=${UNAME_MACHINE_ARCH}-unknown ;;
|
*) machine=${UNAME_MACHINE_ARCH}-unknown ;;
|
||||||
esac
|
esac
|
||||||
# The Operating System including object format, if it has switched
|
# The Operating System including object format, if it has switched
|
||||||
# to ELF recently, or will in the future.
|
# to ELF recently, or will in the future.
|
||||||
case "${UNAME_MACHINE_ARCH}" in
|
case "${UNAME_MACHINE_ARCH}" in
|
||||||
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
|
arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax)
|
||||||
eval $set_cc_for_build
|
eval $set_cc_for_build
|
||||||
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
|
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||||
| grep -q __ELF__
|
| grep -q __ELF__
|
||||||
@ -182,6 +204,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
|||||||
os=netbsd
|
os=netbsd
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
# Determine ABI tags.
|
||||||
|
case "${UNAME_MACHINE_ARCH}" in
|
||||||
|
earm*)
|
||||||
|
expr='s/^earmv[0-9]/-eabi/;s/eb$//'
|
||||||
|
abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
|
||||||
|
;;
|
||||||
|
esac
|
||||||
# The OS release
|
# The OS release
|
||||||
# Debian GNU/NetBSD machines have a different userland, and
|
# Debian GNU/NetBSD machines have a different userland, and
|
||||||
# thus, need a distinct triplet. However, they do not need
|
# thus, need a distinct triplet. However, they do not need
|
||||||
@ -198,7 +227,11 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
|||||||
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
|
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
|
||||||
# contains redundant information, the shorter form:
|
# contains redundant information, the shorter form:
|
||||||
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
|
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
|
||||||
echo "${machine}-${os}${release}"
|
echo "${machine}-${os}${release}${abi}"
|
||||||
|
exit ;;
|
||||||
|
*:Bitrig:*:*)
|
||||||
|
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
|
||||||
|
echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
|
||||||
exit ;;
|
exit ;;
|
||||||
*:OpenBSD:*:*)
|
*:OpenBSD:*:*)
|
||||||
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
|
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
|
||||||
@ -302,7 +335,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
|||||||
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
|
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
|
||||||
echo arm-acorn-riscix${UNAME_RELEASE}
|
echo arm-acorn-riscix${UNAME_RELEASE}
|
||||||
exit ;;
|
exit ;;
|
||||||
arm:riscos:*:*|arm:RISCOS:*:*)
|
arm*:riscos:*:*|arm*:RISCOS:*:*)
|
||||||
echo arm-unknown-riscos
|
echo arm-unknown-riscos
|
||||||
exit ;;
|
exit ;;
|
||||||
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
|
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
|
||||||
@ -560,8 +593,9 @@ EOF
|
|||||||
else
|
else
|
||||||
IBM_ARCH=powerpc
|
IBM_ARCH=powerpc
|
||||||
fi
|
fi
|
||||||
if [ -x /usr/bin/oslevel ] ; then
|
if [ -x /usr/bin/lslpp ] ; then
|
||||||
IBM_REV=`/usr/bin/oslevel`
|
IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
|
||||||
|
awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
|
||||||
else
|
else
|
||||||
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
|
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
|
||||||
fi
|
fi
|
||||||
@ -801,10 +835,13 @@ EOF
|
|||||||
i*:CYGWIN*:*)
|
i*:CYGWIN*:*)
|
||||||
echo ${UNAME_MACHINE}-pc-cygwin
|
echo ${UNAME_MACHINE}-pc-cygwin
|
||||||
exit ;;
|
exit ;;
|
||||||
|
*:MINGW64*:*)
|
||||||
|
echo ${UNAME_MACHINE}-pc-mingw64
|
||||||
|
exit ;;
|
||||||
*:MINGW*:*)
|
*:MINGW*:*)
|
||||||
echo ${UNAME_MACHINE}-pc-mingw32
|
echo ${UNAME_MACHINE}-pc-mingw32
|
||||||
exit ;;
|
exit ;;
|
||||||
i*:MSYS*:*)
|
*:MSYS*:*)
|
||||||
echo ${UNAME_MACHINE}-pc-msys
|
echo ${UNAME_MACHINE}-pc-msys
|
||||||
exit ;;
|
exit ;;
|
||||||
i*:windows32*:*)
|
i*:windows32*:*)
|
||||||
@ -852,21 +889,21 @@ EOF
|
|||||||
exit ;;
|
exit ;;
|
||||||
*:GNU:*:*)
|
*:GNU:*:*)
|
||||||
# the GNU system
|
# the GNU system
|
||||||
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
|
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
|
||||||
exit ;;
|
exit ;;
|
||||||
*:GNU/*:*:*)
|
*:GNU/*:*:*)
|
||||||
# other systems with GNU libc and userland
|
# other systems with GNU libc and userland
|
||||||
echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
|
echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
i*86:Minix:*:*)
|
i*86:Minix:*:*)
|
||||||
echo ${UNAME_MACHINE}-pc-minix
|
echo ${UNAME_MACHINE}-pc-minix
|
||||||
exit ;;
|
exit ;;
|
||||||
aarch64:Linux:*:*)
|
aarch64:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
aarch64_be:Linux:*:*)
|
aarch64_be:Linux:*:*)
|
||||||
UNAME_MACHINE=aarch64_be
|
UNAME_MACHINE=aarch64_be
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
alpha:Linux:*:*)
|
alpha:Linux:*:*)
|
||||||
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
|
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
|
||||||
@ -879,59 +916,57 @@ EOF
|
|||||||
EV68*) UNAME_MACHINE=alphaev68 ;;
|
EV68*) UNAME_MACHINE=alphaev68 ;;
|
||||||
esac
|
esac
|
||||||
objdump --private-headers /bin/sh | grep -q ld.so.1
|
objdump --private-headers /bin/sh | grep -q ld.so.1
|
||||||
if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
|
if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
|
exit ;;
|
||||||
|
arc:Linux:*:* | arceb:Linux:*:*)
|
||||||
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
arm*:Linux:*:*)
|
arm*:Linux:*:*)
|
||||||
eval $set_cc_for_build
|
eval $set_cc_for_build
|
||||||
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
|
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||||
| grep -q __ARM_EABI__
|
| grep -q __ARM_EABI__
|
||||||
then
|
then
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
else
|
else
|
||||||
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
|
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||||
| grep -q __ARM_PCS_VFP
|
| grep -q __ARM_PCS_VFP
|
||||||
then
|
then
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnueabi
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
|
||||||
else
|
else
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
exit ;;
|
exit ;;
|
||||||
avr32*:Linux:*:*)
|
avr32*:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
cris:Linux:*:*)
|
cris:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-axis-linux-gnu
|
echo ${UNAME_MACHINE}-axis-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
crisv32:Linux:*:*)
|
crisv32:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-axis-linux-gnu
|
echo ${UNAME_MACHINE}-axis-linux-${LIBC}
|
||||||
|
exit ;;
|
||||||
|
e2k:Linux:*:*)
|
||||||
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
frv:Linux:*:*)
|
frv:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
hexagon:Linux:*:*)
|
hexagon:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
i*86:Linux:*:*)
|
i*86:Linux:*:*)
|
||||||
LIBC=gnu
|
echo ${UNAME_MACHINE}-pc-linux-${LIBC}
|
||||||
eval $set_cc_for_build
|
|
||||||
sed 's/^ //' << EOF >$dummy.c
|
|
||||||
#ifdef __dietlibc__
|
|
||||||
LIBC=dietlibc
|
|
||||||
#endif
|
|
||||||
EOF
|
|
||||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
|
|
||||||
echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
|
|
||||||
exit ;;
|
exit ;;
|
||||||
ia64:Linux:*:*)
|
ia64:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
m32r*:Linux:*:*)
|
m32r*:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
m68*:Linux:*:*)
|
m68*:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
mips:Linux:*:* | mips64:Linux:*:*)
|
mips:Linux:*:* | mips64:Linux:*:*)
|
||||||
eval $set_cc_for_build
|
eval $set_cc_for_build
|
||||||
@ -950,54 +985,63 @@ EOF
|
|||||||
#endif
|
#endif
|
||||||
EOF
|
EOF
|
||||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
|
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
|
||||||
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
|
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
|
||||||
;;
|
;;
|
||||||
or32:Linux:*:*)
|
openrisc*:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo or1k-unknown-linux-${LIBC}
|
||||||
|
exit ;;
|
||||||
|
or32:Linux:*:* | or1k*:Linux:*:*)
|
||||||
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
padre:Linux:*:*)
|
padre:Linux:*:*)
|
||||||
echo sparc-unknown-linux-gnu
|
echo sparc-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
parisc64:Linux:*:* | hppa64:Linux:*:*)
|
parisc64:Linux:*:* | hppa64:Linux:*:*)
|
||||||
echo hppa64-unknown-linux-gnu
|
echo hppa64-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
parisc:Linux:*:* | hppa:Linux:*:*)
|
parisc:Linux:*:* | hppa:Linux:*:*)
|
||||||
# Look for CPU level
|
# Look for CPU level
|
||||||
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
|
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
|
||||||
PA7*) echo hppa1.1-unknown-linux-gnu ;;
|
PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
|
||||||
PA8*) echo hppa2.0-unknown-linux-gnu ;;
|
PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
|
||||||
*) echo hppa-unknown-linux-gnu ;;
|
*) echo hppa-unknown-linux-${LIBC} ;;
|
||||||
esac
|
esac
|
||||||
exit ;;
|
exit ;;
|
||||||
ppc64:Linux:*:*)
|
ppc64:Linux:*:*)
|
||||||
echo powerpc64-unknown-linux-gnu
|
echo powerpc64-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
ppc:Linux:*:*)
|
ppc:Linux:*:*)
|
||||||
echo powerpc-unknown-linux-gnu
|
echo powerpc-unknown-linux-${LIBC}
|
||||||
|
exit ;;
|
||||||
|
ppc64le:Linux:*:*)
|
||||||
|
echo powerpc64le-unknown-linux-${LIBC}
|
||||||
|
exit ;;
|
||||||
|
ppcle:Linux:*:*)
|
||||||
|
echo powerpcle-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
s390:Linux:*:* | s390x:Linux:*:*)
|
s390:Linux:*:* | s390x:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-ibm-linux
|
echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
sh64*:Linux:*:*)
|
sh64*:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
sh*:Linux:*:*)
|
sh*:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
sparc:Linux:*:* | sparc64:Linux:*:*)
|
sparc:Linux:*:* | sparc64:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
tile*:Linux:*:*)
|
tile*:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
vax:Linux:*:*)
|
vax:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-dec-linux-gnu
|
echo ${UNAME_MACHINE}-dec-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
x86_64:Linux:*:*)
|
x86_64:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
xtensa*:Linux:*:*)
|
xtensa*:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||||
exit ;;
|
exit ;;
|
||||||
i*86:DYNIX/ptx:4*:*)
|
i*86:DYNIX/ptx:4*:*)
|
||||||
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
|
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
|
||||||
@ -1201,6 +1245,9 @@ EOF
|
|||||||
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
|
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
|
||||||
echo i586-pc-haiku
|
echo i586-pc-haiku
|
||||||
exit ;;
|
exit ;;
|
||||||
|
x86_64:Haiku:*:*)
|
||||||
|
echo x86_64-unknown-haiku
|
||||||
|
exit ;;
|
||||||
SX-4:SUPER-UX:*:*)
|
SX-4:SUPER-UX:*:*)
|
||||||
echo sx4-nec-superux${UNAME_RELEASE}
|
echo sx4-nec-superux${UNAME_RELEASE}
|
||||||
exit ;;
|
exit ;;
|
||||||
@ -1227,19 +1274,31 @@ EOF
|
|||||||
exit ;;
|
exit ;;
|
||||||
*:Darwin:*:*)
|
*:Darwin:*:*)
|
||||||
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
|
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
|
||||||
case $UNAME_PROCESSOR in
|
|
||||||
i386)
|
|
||||||
eval $set_cc_for_build
|
eval $set_cc_for_build
|
||||||
|
if test "$UNAME_PROCESSOR" = unknown ; then
|
||||||
|
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') | \
|
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
|
grep IS_64BIT_ARCH >/dev/null
|
||||||
then
|
then
|
||||||
UNAME_PROCESSOR="x86_64"
|
case $UNAME_PROCESSOR in
|
||||||
fi
|
i386) UNAME_PROCESSOR=x86_64 ;;
|
||||||
fi ;;
|
powerpc) UNAME_PROCESSOR=powerpc64 ;;
|
||||||
unknown) UNAME_PROCESSOR=powerpc ;;
|
|
||||||
esac
|
esac
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
elif test "$UNAME_PROCESSOR" = i386 ; then
|
||||||
|
# Avoid executing cc on OS X 10.9, as it ships with a stub
|
||||||
|
# that puts up a graphical alert prompting to install
|
||||||
|
# developer tools. Any system running Mac OS X 10.7 or
|
||||||
|
# later (Darwin 11 and later) is required to have a 64-bit
|
||||||
|
# processor. This is not true of the ARM version of Darwin
|
||||||
|
# that Apple uses in portable devices.
|
||||||
|
UNAME_PROCESSOR=x86_64
|
||||||
|
fi
|
||||||
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
|
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
|
||||||
exit ;;
|
exit ;;
|
||||||
*:procnto*:*:* | *:QNX:[0123456789]*:*)
|
*:procnto*:*:* | *:QNX:[0123456789]*:*)
|
||||||
@ -1256,7 +1315,7 @@ EOF
|
|||||||
NEO-?:NONSTOP_KERNEL:*:*)
|
NEO-?:NONSTOP_KERNEL:*:*)
|
||||||
echo neo-tandem-nsk${UNAME_RELEASE}
|
echo neo-tandem-nsk${UNAME_RELEASE}
|
||||||
exit ;;
|
exit ;;
|
||||||
NSE-?:NONSTOP_KERNEL:*:*)
|
NSE-*:NONSTOP_KERNEL:*:*)
|
||||||
echo nse-tandem-nsk${UNAME_RELEASE}
|
echo nse-tandem-nsk${UNAME_RELEASE}
|
||||||
exit ;;
|
exit ;;
|
||||||
NSR-?:NONSTOP_KERNEL:*:*)
|
NSR-?:NONSTOP_KERNEL:*:*)
|
||||||
@ -1330,157 +1389,6 @@ EOF
|
|||||||
exit ;;
|
exit ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
#echo '(No uname command or uname output not recognized.)' 1>&2
|
|
||||||
#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
|
|
||||||
|
|
||||||
eval $set_cc_for_build
|
|
||||||
cat >$dummy.c <<EOF
|
|
||||||
#ifdef _SEQUENT_
|
|
||||||
# include <sys/types.h>
|
|
||||||
# include <sys/utsname.h>
|
|
||||||
#endif
|
|
||||||
main ()
|
|
||||||
{
|
|
||||||
#if defined (sony)
|
|
||||||
#if defined (MIPSEB)
|
|
||||||
/* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
|
|
||||||
I don't know.... */
|
|
||||||
printf ("mips-sony-bsd\n"); exit (0);
|
|
||||||
#else
|
|
||||||
#include <sys/param.h>
|
|
||||||
printf ("m68k-sony-newsos%s\n",
|
|
||||||
#ifdef NEWSOS4
|
|
||||||
"4"
|
|
||||||
#else
|
|
||||||
""
|
|
||||||
#endif
|
|
||||||
); exit (0);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (__arm) && defined (__acorn) && defined (__unix)
|
|
||||||
printf ("arm-acorn-riscix\n"); exit (0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (hp300) && !defined (hpux)
|
|
||||||
printf ("m68k-hp-bsd\n"); exit (0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (NeXT)
|
|
||||||
#if !defined (__ARCHITECTURE__)
|
|
||||||
#define __ARCHITECTURE__ "m68k"
|
|
||||||
#endif
|
|
||||||
int version;
|
|
||||||
version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
|
|
||||||
if (version < 4)
|
|
||||||
printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
|
|
||||||
else
|
|
||||||
printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
|
|
||||||
exit (0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (MULTIMAX) || defined (n16)
|
|
||||||
#if defined (UMAXV)
|
|
||||||
printf ("ns32k-encore-sysv\n"); exit (0);
|
|
||||||
#else
|
|
||||||
#if defined (CMU)
|
|
||||||
printf ("ns32k-encore-mach\n"); exit (0);
|
|
||||||
#else
|
|
||||||
printf ("ns32k-encore-bsd\n"); exit (0);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (__386BSD__)
|
|
||||||
printf ("i386-pc-bsd\n"); exit (0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (sequent)
|
|
||||||
#if defined (i386)
|
|
||||||
printf ("i386-sequent-dynix\n"); exit (0);
|
|
||||||
#endif
|
|
||||||
#if defined (ns32000)
|
|
||||||
printf ("ns32k-sequent-dynix\n"); exit (0);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (_SEQUENT_)
|
|
||||||
struct utsname un;
|
|
||||||
|
|
||||||
uname(&un);
|
|
||||||
|
|
||||||
if (strncmp(un.version, "V2", 2) == 0) {
|
|
||||||
printf ("i386-sequent-ptx2\n"); exit (0);
|
|
||||||
}
|
|
||||||
if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
|
|
||||||
printf ("i386-sequent-ptx1\n"); exit (0);
|
|
||||||
}
|
|
||||||
printf ("i386-sequent-ptx\n"); exit (0);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (vax)
|
|
||||||
# if !defined (ultrix)
|
|
||||||
# include <sys/param.h>
|
|
||||||
# if defined (BSD)
|
|
||||||
# if BSD == 43
|
|
||||||
printf ("vax-dec-bsd4.3\n"); exit (0);
|
|
||||||
# else
|
|
||||||
# if BSD == 199006
|
|
||||||
printf ("vax-dec-bsd4.3reno\n"); exit (0);
|
|
||||||
# else
|
|
||||||
printf ("vax-dec-bsd\n"); exit (0);
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
# else
|
|
||||||
printf ("vax-dec-bsd\n"); exit (0);
|
|
||||||
# endif
|
|
||||||
# else
|
|
||||||
printf ("vax-dec-ultrix\n"); exit (0);
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (alliant) && defined (i860)
|
|
||||||
printf ("i860-alliant-bsd\n"); exit (0);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
exit (1);
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
|
|
||||||
{ echo "$SYSTEM_NAME"; exit; }
|
|
||||||
|
|
||||||
# Apollos put the system type in the environment.
|
|
||||||
|
|
||||||
test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
|
|
||||||
|
|
||||||
# Convex versions that predate uname can use getsysinfo(1)
|
|
||||||
|
|
||||||
if [ -x /usr/convex/getsysinfo ]
|
|
||||||
then
|
|
||||||
case `getsysinfo -f cpu_type` in
|
|
||||||
c1*)
|
|
||||||
echo c1-convex-bsd
|
|
||||||
exit ;;
|
|
||||||
c2*)
|
|
||||||
if getsysinfo -f scalar_acc
|
|
||||||
then echo c32-convex-bsd
|
|
||||||
else echo c2-convex-bsd
|
|
||||||
fi
|
|
||||||
exit ;;
|
|
||||||
c34*)
|
|
||||||
echo c34-convex-bsd
|
|
||||||
exit ;;
|
|
||||||
c38*)
|
|
||||||
echo c38-convex-bsd
|
|
||||||
exit ;;
|
|
||||||
c4*)
|
|
||||||
echo c4-convex-bsd
|
|
||||||
exit ;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat >&2 <<EOF
|
cat >&2 <<EOF
|
||||||
$0: unable to guess system type
|
$0: unable to guess system type
|
||||||
|
|
||||||
|
135
config.sub
vendored
135
config.sub
vendored
@ -1,24 +1,18 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Configuration validation subroutine script.
|
# Configuration validation subroutine script.
|
||||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
# Copyright 1992-2015 Free Software Foundation, Inc.
|
||||||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
|
|
||||||
# 2011, 2012 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
timestamp='2012-04-18'
|
timestamp='2015-03-08'
|
||||||
|
|
||||||
# This file is (in principle) common to ALL GNU software.
|
# This file is free software; you can redistribute it and/or modify it
|
||||||
# The presence of a machine in this file suggests that SOME GNU software
|
# under the terms of the GNU General Public License as published by
|
||||||
# can handle that machine. It does not imply ALL GNU software can.
|
# the Free Software Foundation; either version 3 of the License, or
|
||||||
#
|
|
||||||
# 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
|
|
||||||
# the Free Software Foundation; either version 2 of the License, or
|
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful, but
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
# GNU General Public License for more details.
|
# General Public License for more details.
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
@ -26,11 +20,12 @@ timestamp='2012-04-18'
|
|||||||
# As a special exception to the GNU General Public License, if you
|
# As a special exception to the GNU General Public License, if you
|
||||||
# distribute this file as part of a program that contains a
|
# distribute this file as part of a program that contains a
|
||||||
# configuration script generated by Autoconf, you may include it under
|
# configuration script generated by Autoconf, you may include it under
|
||||||
# the same distribution terms that you use for the rest of that program.
|
# the same distribution terms that you use for the rest of that
|
||||||
|
# program. This Exception is an additional permission under section 7
|
||||||
|
# of the GNU General Public License, version 3 ("GPLv3").
|
||||||
|
|
||||||
|
|
||||||
# Please send patches to <config-patches@gnu.org>. Submit a context
|
# Please send patches to <config-patches@gnu.org>.
|
||||||
# diff and a properly formatted GNU ChangeLog entry.
|
|
||||||
#
|
#
|
||||||
# Configuration subroutine to validate and canonicalize a configuration type.
|
# Configuration subroutine to validate and canonicalize a configuration type.
|
||||||
# Supply the specified configuration type as an argument.
|
# Supply the specified configuration type as an argument.
|
||||||
@ -73,9 +68,7 @@ Report bugs and patches to <config-patches@gnu.org>."
|
|||||||
version="\
|
version="\
|
||||||
GNU config.sub ($timestamp)
|
GNU config.sub ($timestamp)
|
||||||
|
|
||||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
|
Copyright 1992-2015 Free Software Foundation, Inc.
|
||||||
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
|
||||||
Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
This is free software; see the source for copying conditions. There is NO
|
This is free software; see the source for copying conditions. There is NO
|
||||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||||
@ -123,8 +116,8 @@ esac
|
|||||||
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
|
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
|
||||||
case $maybe_os in
|
case $maybe_os in
|
||||||
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
|
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
|
||||||
linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
|
linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
|
||||||
knetbsd*-gnu* | netbsd*-gnu* | \
|
knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
|
||||||
kopensolaris*-gnu* | \
|
kopensolaris*-gnu* | \
|
||||||
storm-chaos* | os2-emx* | rtmk-nova*)
|
storm-chaos* | os2-emx* | rtmk-nova*)
|
||||||
os=-$maybe_os
|
os=-$maybe_os
|
||||||
@ -156,7 +149,7 @@ case $os in
|
|||||||
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
|
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
|
||||||
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
|
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
|
||||||
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
|
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
|
||||||
-apple | -axis | -knuth | -cray | -microblaze)
|
-apple | -axis | -knuth | -cray | -microblaze*)
|
||||||
os=
|
os=
|
||||||
basic_machine=$1
|
basic_machine=$1
|
||||||
;;
|
;;
|
||||||
@ -259,21 +252,24 @@ case $basic_machine in
|
|||||||
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
||||||
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
||||||
| am33_2.0 \
|
| am33_2.0 \
|
||||||
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
|
| arc | arceb \
|
||||||
|
| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
|
||||||
|
| avr | avr32 \
|
||||||
| be32 | be64 \
|
| be32 | be64 \
|
||||||
| bfin \
|
| bfin \
|
||||||
| c4x | clipper \
|
| c4x | c8051 | clipper \
|
||||||
| d10v | d30v | dlx | dsp16xx \
|
| d10v | d30v | dlx | dsp16xx \
|
||||||
| epiphany \
|
| e2k | epiphany \
|
||||||
| fido | fr30 | frv \
|
| fido | fr30 | frv | ft32 \
|
||||||
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
||||||
| hexagon \
|
| hexagon \
|
||||||
| i370 | i860 | i960 | ia64 \
|
| i370 | i860 | i960 | ia64 \
|
||||||
| ip2k | iq2000 \
|
| ip2k | iq2000 \
|
||||||
|
| k1om \
|
||||||
| le32 | le64 \
|
| le32 | le64 \
|
||||||
| lm32 \
|
| lm32 \
|
||||||
| m32c | m32r | m32rle | m68000 | m68k | m88k \
|
| m32c | m32r | m32rle | m68000 | m68k | m88k \
|
||||||
| maxq | mb | microblaze | mcore | mep | metag \
|
| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
|
||||||
| mips | mipsbe | mipseb | mipsel | mipsle \
|
| mips | mipsbe | mipseb | mipsel | mipsle \
|
||||||
| mips16 \
|
| mips16 \
|
||||||
| mips64 | mips64el \
|
| mips64 | mips64el \
|
||||||
@ -287,23 +283,26 @@ case $basic_machine in
|
|||||||
| mips64vr5900 | mips64vr5900el \
|
| mips64vr5900 | mips64vr5900el \
|
||||||
| mipsisa32 | mipsisa32el \
|
| mipsisa32 | mipsisa32el \
|
||||||
| mipsisa32r2 | mipsisa32r2el \
|
| mipsisa32r2 | mipsisa32r2el \
|
||||||
|
| mipsisa32r6 | mipsisa32r6el \
|
||||||
| mipsisa64 | mipsisa64el \
|
| mipsisa64 | mipsisa64el \
|
||||||
| mipsisa64r2 | mipsisa64r2el \
|
| mipsisa64r2 | mipsisa64r2el \
|
||||||
|
| mipsisa64r6 | mipsisa64r6el \
|
||||||
| mipsisa64sb1 | mipsisa64sb1el \
|
| mipsisa64sb1 | mipsisa64sb1el \
|
||||||
| mipsisa64sr71k | mipsisa64sr71kel \
|
| mipsisa64sr71k | mipsisa64sr71kel \
|
||||||
|
| mipsr5900 | mipsr5900el \
|
||||||
| mipstx39 | mipstx39el \
|
| mipstx39 | mipstx39el \
|
||||||
| mn10200 | mn10300 \
|
| mn10200 | mn10300 \
|
||||||
| moxie \
|
| moxie \
|
||||||
| mt \
|
| mt \
|
||||||
| msp430 \
|
| msp430 \
|
||||||
| nds32 | nds32le | nds32be \
|
| nds32 | nds32le | nds32be \
|
||||||
| nios | nios2 \
|
| nios | nios2 | nios2eb | nios2el \
|
||||||
| ns16k | ns32k \
|
| ns16k | ns32k \
|
||||||
| open8 \
|
| open8 | or1k | or1knd | or32 \
|
||||||
| or32 \
|
|
||||||
| pdp10 | pdp11 | pj | pjl \
|
| pdp10 | pdp11 | pj | pjl \
|
||||||
| powerpc | powerpc64 | powerpc64le | powerpcle \
|
| powerpc | powerpc64 | powerpc64le | powerpcle \
|
||||||
| pyramid \
|
| pyramid \
|
||||||
|
| riscv32 | riscv64 \
|
||||||
| rl78 | rx \
|
| rl78 | rx \
|
||||||
| score \
|
| score \
|
||||||
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
|
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
|
||||||
@ -314,6 +313,7 @@ case $basic_machine in
|
|||||||
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
|
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
|
||||||
| ubicom32 \
|
| ubicom32 \
|
||||||
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
|
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
|
||||||
|
| visium \
|
||||||
| we32k \
|
| we32k \
|
||||||
| x86 | xc16x | xstormy16 | xtensa \
|
| x86 | xc16x | xstormy16 | xtensa \
|
||||||
| z8k | z80)
|
| z8k | z80)
|
||||||
@ -328,7 +328,10 @@ case $basic_machine in
|
|||||||
c6x)
|
c6x)
|
||||||
basic_machine=tic6x-unknown
|
basic_machine=tic6x-unknown
|
||||||
;;
|
;;
|
||||||
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
|
leon|leon[3-9])
|
||||||
|
basic_machine=sparc-$basic_machine
|
||||||
|
;;
|
||||||
|
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
|
||||||
basic_machine=$basic_machine-unknown
|
basic_machine=$basic_machine-unknown
|
||||||
os=-none
|
os=-none
|
||||||
;;
|
;;
|
||||||
@ -370,26 +373,28 @@ case $basic_machine in
|
|||||||
| aarch64-* | aarch64_be-* \
|
| aarch64-* | aarch64_be-* \
|
||||||
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
|
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
|
||||||
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
|
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
|
||||||
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
|
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
|
||||||
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
||||||
| avr-* | avr32-* \
|
| avr-* | avr32-* \
|
||||||
| be32-* | be64-* \
|
| be32-* | be64-* \
|
||||||
| bfin-* | bs2000-* \
|
| bfin-* | bs2000-* \
|
||||||
| c[123]* | c30-* | [cjt]90-* | c4x-* \
|
| c[123]* | c30-* | [cjt]90-* | c4x-* \
|
||||||
| clipper-* | craynv-* | cydra-* \
|
| c8051-* | clipper-* | craynv-* | cydra-* \
|
||||||
| d10v-* | d30v-* | dlx-* \
|
| d10v-* | d30v-* | dlx-* \
|
||||||
| elxsi-* \
|
| e2k-* | elxsi-* \
|
||||||
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
|
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
|
||||||
| h8300-* | h8500-* \
|
| h8300-* | h8500-* \
|
||||||
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
|
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
|
||||||
| hexagon-* \
|
| hexagon-* \
|
||||||
| i*86-* | i860-* | i960-* | ia64-* \
|
| i*86-* | i860-* | i960-* | ia64-* \
|
||||||
| ip2k-* | iq2000-* \
|
| ip2k-* | iq2000-* \
|
||||||
|
| k1om-* \
|
||||||
| le32-* | le64-* \
|
| le32-* | le64-* \
|
||||||
| lm32-* \
|
| lm32-* \
|
||||||
| m32c-* | m32r-* | m32rle-* \
|
| m32c-* | m32r-* | m32rle-* \
|
||||||
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
|
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
|
||||||
| m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
|
| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
|
||||||
|
| microblaze-* | microblazeel-* \
|
||||||
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
|
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
|
||||||
| mips16-* \
|
| mips16-* \
|
||||||
| mips64-* | mips64el-* \
|
| mips64-* | mips64el-* \
|
||||||
@ -403,18 +408,22 @@ case $basic_machine in
|
|||||||
| mips64vr5900-* | mips64vr5900el-* \
|
| mips64vr5900-* | mips64vr5900el-* \
|
||||||
| mipsisa32-* | mipsisa32el-* \
|
| mipsisa32-* | mipsisa32el-* \
|
||||||
| mipsisa32r2-* | mipsisa32r2el-* \
|
| mipsisa32r2-* | mipsisa32r2el-* \
|
||||||
|
| mipsisa32r6-* | mipsisa32r6el-* \
|
||||||
| mipsisa64-* | mipsisa64el-* \
|
| mipsisa64-* | mipsisa64el-* \
|
||||||
| mipsisa64r2-* | mipsisa64r2el-* \
|
| mipsisa64r2-* | mipsisa64r2el-* \
|
||||||
|
| mipsisa64r6-* | mipsisa64r6el-* \
|
||||||
| mipsisa64sb1-* | mipsisa64sb1el-* \
|
| mipsisa64sb1-* | mipsisa64sb1el-* \
|
||||||
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
||||||
|
| mipsr5900-* | mipsr5900el-* \
|
||||||
| mipstx39-* | mipstx39el-* \
|
| mipstx39-* | mipstx39el-* \
|
||||||
| mmix-* \
|
| mmix-* \
|
||||||
| mt-* \
|
| mt-* \
|
||||||
| msp430-* \
|
| msp430-* \
|
||||||
| nds32-* | nds32le-* | nds32be-* \
|
| nds32-* | nds32le-* | nds32be-* \
|
||||||
| nios-* | nios2-* \
|
| nios-* | nios2-* | nios2eb-* | nios2el-* \
|
||||||
| none-* | np1-* | ns16k-* | ns32k-* \
|
| none-* | np1-* | ns16k-* | ns32k-* \
|
||||||
| open8-* \
|
| open8-* \
|
||||||
|
| or1k*-* \
|
||||||
| orion-* \
|
| orion-* \
|
||||||
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
|
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
|
||||||
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
|
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
|
||||||
@ -432,6 +441,7 @@ case $basic_machine in
|
|||||||
| ubicom32-* \
|
| ubicom32-* \
|
||||||
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
|
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
|
||||||
| vax-* \
|
| vax-* \
|
||||||
|
| visium-* \
|
||||||
| we32k-* \
|
| we32k-* \
|
||||||
| x86-* | x86_64-* | xc16x-* | xps100-* \
|
| x86-* | x86_64-* | xc16x-* | xps100-* \
|
||||||
| xstormy16-* | xtensa*-* \
|
| xstormy16-* | xtensa*-* \
|
||||||
@ -508,6 +518,9 @@ case $basic_machine in
|
|||||||
basic_machine=i386-pc
|
basic_machine=i386-pc
|
||||||
os=-aros
|
os=-aros
|
||||||
;;
|
;;
|
||||||
|
asmjs)
|
||||||
|
basic_machine=asmjs-unknown
|
||||||
|
;;
|
||||||
aux)
|
aux)
|
||||||
basic_machine=m68k-apple
|
basic_machine=m68k-apple
|
||||||
os=-aux
|
os=-aux
|
||||||
@ -769,6 +782,9 @@ case $basic_machine in
|
|||||||
basic_machine=m68k-isi
|
basic_machine=m68k-isi
|
||||||
os=-sysv
|
os=-sysv
|
||||||
;;
|
;;
|
||||||
|
leon-*|leon[3-9]-*)
|
||||||
|
basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
|
||||||
|
;;
|
||||||
m68knommu)
|
m68knommu)
|
||||||
basic_machine=m68k-unknown
|
basic_machine=m68k-unknown
|
||||||
os=-linux
|
os=-linux
|
||||||
@ -788,11 +804,15 @@ case $basic_machine in
|
|||||||
basic_machine=ns32k-utek
|
basic_machine=ns32k-utek
|
||||||
os=-sysv
|
os=-sysv
|
||||||
;;
|
;;
|
||||||
microblaze)
|
microblaze*)
|
||||||
basic_machine=microblaze-xilinx
|
basic_machine=microblaze-xilinx
|
||||||
;;
|
;;
|
||||||
|
mingw64)
|
||||||
|
basic_machine=x86_64-pc
|
||||||
|
os=-mingw64
|
||||||
|
;;
|
||||||
mingw32)
|
mingw32)
|
||||||
basic_machine=i386-pc
|
basic_machine=i686-pc
|
||||||
os=-mingw32
|
os=-mingw32
|
||||||
;;
|
;;
|
||||||
mingw32ce)
|
mingw32ce)
|
||||||
@ -820,6 +840,10 @@ case $basic_machine in
|
|||||||
basic_machine=powerpc-unknown
|
basic_machine=powerpc-unknown
|
||||||
os=-morphos
|
os=-morphos
|
||||||
;;
|
;;
|
||||||
|
moxiebox)
|
||||||
|
basic_machine=moxie-unknown
|
||||||
|
os=-moxiebox
|
||||||
|
;;
|
||||||
msdos)
|
msdos)
|
||||||
basic_machine=i386-pc
|
basic_machine=i386-pc
|
||||||
os=-msdos
|
os=-msdos
|
||||||
@ -828,7 +852,7 @@ case $basic_machine in
|
|||||||
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
|
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
|
||||||
;;
|
;;
|
||||||
msys)
|
msys)
|
||||||
basic_machine=i386-pc
|
basic_machine=i686-pc
|
||||||
os=-msys
|
os=-msys
|
||||||
;;
|
;;
|
||||||
mvs)
|
mvs)
|
||||||
@ -1019,7 +1043,11 @@ case $basic_machine in
|
|||||||
basic_machine=i586-unknown
|
basic_machine=i586-unknown
|
||||||
os=-pw32
|
os=-pw32
|
||||||
;;
|
;;
|
||||||
rdos)
|
rdos | rdos64)
|
||||||
|
basic_machine=x86_64-pc
|
||||||
|
os=-rdos
|
||||||
|
;;
|
||||||
|
rdos32)
|
||||||
basic_machine=i386-pc
|
basic_machine=i386-pc
|
||||||
os=-rdos
|
os=-rdos
|
||||||
;;
|
;;
|
||||||
@ -1346,29 +1374,29 @@ case $os in
|
|||||||
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
|
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
|
||||||
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
|
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
|
||||||
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
|
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
|
||||||
| -sym* | -kopensolaris* \
|
| -sym* | -kopensolaris* | -plan9* \
|
||||||
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
|
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
|
||||||
| -aos* | -aros* \
|
| -aos* | -aros* | -cloudabi* \
|
||||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||||
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
||||||
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
|
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
|
||||||
| -openbsd* | -solidbsd* \
|
| -bitrig* | -openbsd* | -solidbsd* \
|
||||||
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
|
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
|
||||||
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
||||||
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
||||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||||
| -chorusos* | -chorusrdb* | -cegcc* \
|
| -chorusos* | -chorusrdb* | -cegcc* \
|
||||||
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||||
| -mingw32* | -linux-gnu* | -linux-android* \
|
| -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
|
||||||
| -linux-newlib* | -linux-uclibc* \
|
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
|
||||||
| -uxpv* | -beos* | -mpeix* | -udk* \
|
| -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
|
||||||
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
||||||
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
||||||
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
|
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
|
||||||
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
|
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
|
||||||
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
||||||
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
|
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
|
||||||
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
|
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
|
||||||
# Remember, each alternative MUST END IN *, to match a version number.
|
# Remember, each alternative MUST END IN *, to match a version number.
|
||||||
;;
|
;;
|
||||||
-qnx*)
|
-qnx*)
|
||||||
@ -1492,9 +1520,6 @@ case $os in
|
|||||||
-aros*)
|
-aros*)
|
||||||
os=-aros
|
os=-aros
|
||||||
;;
|
;;
|
||||||
-kaos*)
|
|
||||||
os=-kaos
|
|
||||||
;;
|
|
||||||
-zvmoe)
|
-zvmoe)
|
||||||
os=-zvmoe
|
os=-zvmoe
|
||||||
;;
|
;;
|
||||||
@ -1543,6 +1568,12 @@ case $basic_machine in
|
|||||||
c4x-* | tic4x-*)
|
c4x-* | tic4x-*)
|
||||||
os=-coff
|
os=-coff
|
||||||
;;
|
;;
|
||||||
|
c8051-*)
|
||||||
|
os=-elf
|
||||||
|
;;
|
||||||
|
hexagon-*)
|
||||||
|
os=-elf
|
||||||
|
;;
|
||||||
tic54x-*)
|
tic54x-*)
|
||||||
os=-coff
|
os=-coff
|
||||||
;;
|
;;
|
||||||
|
20
configure
vendored
20
configure
vendored
@ -1,6 +1,6 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.69 for file 5.28.
|
# Generated by GNU Autoconf 2.69 for file 5.29.
|
||||||
#
|
#
|
||||||
# Report bugs to <christos@astron.com>.
|
# Report bugs to <christos@astron.com>.
|
||||||
#
|
#
|
||||||
@ -590,8 +590,8 @@ MAKEFLAGS=
|
|||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='file'
|
PACKAGE_NAME='file'
|
||||||
PACKAGE_TARNAME='file'
|
PACKAGE_TARNAME='file'
|
||||||
PACKAGE_VERSION='5.28'
|
PACKAGE_VERSION='5.29'
|
||||||
PACKAGE_STRING='file 5.28'
|
PACKAGE_STRING='file 5.29'
|
||||||
PACKAGE_BUGREPORT='christos@astron.com'
|
PACKAGE_BUGREPORT='christos@astron.com'
|
||||||
PACKAGE_URL=''
|
PACKAGE_URL=''
|
||||||
|
|
||||||
@ -1328,7 +1328,7 @@ if test "$ac_init_help" = "long"; then
|
|||||||
# Omit some internal or obsolete options to make the list less imposing.
|
# 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.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
\`configure' configures file 5.28 to adapt to many kinds of systems.
|
\`configure' configures file 5.29 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
@ -1398,7 +1398,7 @@ fi
|
|||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of file 5.28:";;
|
short | recursive ) echo "Configuration of file 5.29:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
@ -1509,7 +1509,7 @@ fi
|
|||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
file configure 5.28
|
file configure 5.29
|
||||||
generated by GNU Autoconf 2.69
|
generated by GNU Autoconf 2.69
|
||||||
|
|
||||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||||
@ -2165,7 +2165,7 @@ cat >config.log <<_ACEOF
|
|||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
It was created by file $as_me 5.28, which was
|
It was created by file $as_me 5.29, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
$ $0 $@
|
$ $0 $@
|
||||||
@ -3031,7 +3031,7 @@ fi
|
|||||||
|
|
||||||
# Define the identity of the package.
|
# Define the identity of the package.
|
||||||
PACKAGE='file'
|
PACKAGE='file'
|
||||||
VERSION='5.28'
|
VERSION='5.29'
|
||||||
|
|
||||||
|
|
||||||
cat >>confdefs.h <<_ACEOF
|
cat >>confdefs.h <<_ACEOF
|
||||||
@ -15075,7 +15075,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
|||||||
# report actual input values of CONFIG_FILES etc. instead of their
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
ac_log="
|
||||||
This file was extended by file $as_me 5.28, which was
|
This file was extended by file $as_me 5.29, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
@ -15141,7 +15141,7 @@ _ACEOF
|
|||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
file config.status 5.28
|
file config.status 5.29
|
||||||
configured by $0, generated by GNU Autoconf 2.69,
|
configured by $0, generated by GNU Autoconf 2.69,
|
||||||
with options \\"\$ac_cs_config\\"
|
with options \\"\$ac_cs_config\\"
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
dnl Process this file with autoconf to produce a configure script.
|
dnl Process this file with autoconf to produce a configure script.
|
||||||
AC_INIT([file],[5.28],[christos@astron.com])
|
AC_INIT([file],[5.29],[christos@astron.com])
|
||||||
AM_INIT_AUTOMAKE([subdir-objects foreign])
|
AM_INIT_AUTOMAKE([subdir-objects foreign])
|
||||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||||
|
|
||||||
|
13
doc/file.man
13
doc/file.man
@ -1,5 +1,5 @@
|
|||||||
.\" $File: file.man,v 1.121 2016/06/07 22:09:20 rrt Exp $
|
.\" $File: file.man,v 1.124 2016/10/19 20:52:45 christos Exp $
|
||||||
.Dd March 13, 2016
|
.Dd October 19, 2016
|
||||||
.Dt FILE __CSECTION__
|
.Dt FILE __CSECTION__
|
||||||
.Os
|
.Os
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
@ -8,7 +8,7 @@
|
|||||||
.Sh SYNOPSIS
|
.Sh SYNOPSIS
|
||||||
.Nm
|
.Nm
|
||||||
.Bk -words
|
.Bk -words
|
||||||
.Op Fl bcEhiklLNnprsvzZ0
|
.Op Fl bcdEhiklLNnprsvzZ0
|
||||||
.Op Fl Fl apple
|
.Op Fl Fl apple
|
||||||
.Op Fl Fl extension
|
.Op Fl Fl extension
|
||||||
.Op Fl Fl mime-encoding
|
.Op Fl Fl mime-encoding
|
||||||
@ -181,6 +181,8 @@ Cause a checking printout of the parsed form of the magic file.
|
|||||||
This is usually used in conjunction with the
|
This is usually used in conjunction with the
|
||||||
.Fl m
|
.Fl m
|
||||||
flag to debug a new magic file before installing it.
|
flag to debug a new magic file before installing it.
|
||||||
|
.It Fl d
|
||||||
|
Prints internal debugging information to stderr.
|
||||||
.It Fl E
|
.It Fl E
|
||||||
On filesystem errors (file not found etc), instead of handling the error
|
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
|
as regular output as POSIX mandates and keep going, issue an error message
|
||||||
@ -208,7 +210,8 @@ Prints details of Compound Document Files.
|
|||||||
.It compress
|
.It compress
|
||||||
Checks for, and looks inside, compressed files.
|
Checks for, and looks inside, compressed files.
|
||||||
.It elf
|
.It elf
|
||||||
Prints ELF file details.
|
Prints ELF file details, provided soft magic tests are enabled and the
|
||||||
|
elf magic is found.
|
||||||
.It soft
|
.It soft
|
||||||
Consults magic files.
|
Consults magic files.
|
||||||
.It tar
|
.It tar
|
||||||
@ -312,7 +315,7 @@ attempt to preserve the access time of files analyzed, to pretend that
|
|||||||
never read them.
|
never read them.
|
||||||
.It Fl P , Fl Fl parameter Ar name=value
|
.It Fl P , Fl Fl parameter Ar name=value
|
||||||
Set various parameter limits.
|
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 Sy "Name" Ta Sy "Default" Ta Sy "Explanation"
|
||||||
.It Li indir Ta 15 Ta recursion limit for indirect magic
|
.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 name Ta 30 Ta use count limit for name/use magic
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
.\" $File: magic.man,v 1.86 2015/09/08 13:48:44 christos Exp $
|
.\" $File: magic.man,v 1.88 2016/07/27 09:42:49 rrt Exp $
|
||||||
.Dd January 1, 2015
|
.Dd July 20, 2016
|
||||||
.Dt MAGIC __FSECTION__
|
.Dt MAGIC __FSECTION__
|
||||||
.Os
|
.Os
|
||||||
.\" install as magic.4 on USG, magic.5 on V7, Berkeley and Linux systems.
|
.\" install as magic.4 on USG, magic.5 on V7, Berkeley and Linux systems.
|
||||||
@ -535,13 +535,18 @@ the file.
|
|||||||
The value at that offset is read, and is used again as an offset
|
The value at that offset is read, and is used again as an offset
|
||||||
in the file.
|
in the file.
|
||||||
Indirect offsets are of the form:
|
Indirect offsets are of the form:
|
||||||
.Em (( x [.[bislBISL]][+\-][ y ]) .
|
.Em (( x [[.,][bislBISL]][+\-][ y ]) .
|
||||||
The value of
|
The value of
|
||||||
.Em x
|
.Em x
|
||||||
is used as an offset in the file.
|
is used as an offset in the file.
|
||||||
A byte, id3 length, short or long is read at that offset depending on the
|
A byte, id3 length, short or long is read at that offset depending on the
|
||||||
.Em [bislBISLm]
|
.Em [bislBISLm]
|
||||||
type specifier.
|
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
|
The capitalized types interpret the number as a big endian
|
||||||
value, whereas the small letter versions interpret the number as a little
|
value, whereas the small letter versions interpret the number as a little
|
||||||
endian value;
|
endian value;
|
||||||
@ -564,9 +569,9 @@ That way variable length structures can be examined:
|
|||||||
\*[Gt]\*[Gt](0x3c.l) string LX\e0\e0 LX executable (OS/2)
|
\*[Gt]\*[Gt](0x3c.l) string LX\e0\e0 LX executable (OS/2)
|
||||||
.Ed
|
.Ed
|
||||||
.Pp
|
.Pp
|
||||||
This strategy of examining has a drawback: You must make sure that
|
This strategy of examining has a drawback: you must make sure that you
|
||||||
you eventually print something, or users may get empty output (like, when
|
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)
|
there is neither PE\e0\e0 nor LE\e0\e0 in the above example).
|
||||||
.Pp
|
.Pp
|
||||||
If this indirect offset cannot be used directly, simple calculations are
|
If this indirect offset cannot be used directly, simple calculations are
|
||||||
possible: appending
|
possible: appending
|
||||||
|
@ -9432,7 +9432,8 @@ dlpreopen='$dlprefiles'
|
|||||||
|
|
||||||
# Directory that this library needs to be installed in:
|
# Directory that this library needs to be installed in:
|
||||||
libdir='$install_libdir'"
|
libdir='$install_libdir'"
|
||||||
if test "$installed" = no && test "$need_relink" = yes; then
|
if test "$installed" = no && test "$need_relink" = yes && \
|
||||||
|
test -n "$relink_command"; then
|
||||||
$ECHO >> $output "\
|
$ECHO >> $output "\
|
||||||
relink_command=\"$relink_command\""
|
relink_command=\"$relink_command\""
|
||||||
fi
|
fi
|
||||||
|
19
magic/Magdir/algol68
Normal file
19
magic/Magdir/algol68
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# $File: algol68,v 1.2 2016/10/17 14:17:48 christos Exp $
|
||||||
|
# algol68: file(1) magic for Algol 68 source
|
||||||
|
#
|
||||||
|
0 search/8192 (input, Algol 68 source text
|
||||||
|
!:mime text/x-Algol68
|
||||||
|
0 regex \^PROC Algol 68 source text
|
||||||
|
!:mime text/x-Algol68
|
||||||
|
0 regex MODE[\t\ ] Algol 68 source text
|
||||||
|
!:mime text/x-Algol68
|
||||||
|
0 regex REF[\t\ ] Algol 68 source text
|
||||||
|
!:mime text/x-Algol68
|
||||||
|
0 regex FLEX[\t\ ]\*\\[ Algol 68 source text
|
||||||
|
!:mime text/x-Algol68
|
||||||
|
#0 regex [\t\ ]OD Algol 68 source text
|
||||||
|
#!:mime text/x-Algol68
|
||||||
|
#0 regex [\t\ ]FI Algol 68 source text
|
||||||
|
#!:mime text/x-Algol68
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# $File: animation,v 1.57 2015/11/29 22:11:07 christos Exp $
|
# $File: animation,v 1.58 2016/07/03 14:13:11 christos Exp $
|
||||||
# animation: file(1) magic for animation/movie formats
|
# animation: file(1) magic for animation/movie formats
|
||||||
#
|
#
|
||||||
# animation formats
|
# animation formats
|
||||||
@ -1008,3 +1008,11 @@
|
|||||||
>4 lelong x %d x
|
>4 lelong x %d x
|
||||||
>8 lelong x %d,
|
>8 lelong x %d,
|
||||||
>12 lelong x %d frames
|
>12 lelong x %d frames
|
||||||
|
|
||||||
|
# Material Exchange Format
|
||||||
|
# More information:
|
||||||
|
# https://en.wikipedia.org/wiki/Material_Exchange_Format
|
||||||
|
# http://www.freemxf.org/
|
||||||
|
0 string \x06\x0e\x2b\x34\x02\x05\x01\x01\x0d\x01\x02\x01\x01\x02 Material exchange container format
|
||||||
|
!:ext mxf
|
||||||
|
!:mime application/mxf
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# $File: apple,v 1.32 2015/12/04 20:40:10 christos Exp $
|
# $File: apple,v 1.35 2016/08/17 09:45:13 christos Exp $
|
||||||
# apple: file(1) magic for Apple file formats
|
# apple: file(1) magic for Apple file formats
|
||||||
#
|
#
|
||||||
0 search/1/t FiLeStArTfIlEsTaRt binscii (apple ][) text
|
0 search/1/t FiLeStArTfIlEsTaRt binscii (apple ][) text
|
||||||
@ -285,49 +285,118 @@
|
|||||||
# .vdi
|
# .vdi
|
||||||
4 string innotek\ VirtualBox\ Disk\ Image %s
|
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
|
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
|
>>2 beshort x \b, blocksize %d
|
||||||
>>4 belong x \b, blockcount %d
|
# sbBlkCount sometimes garbish like
|
||||||
>>10 beshort x \b, devtype %d
|
# 0xb0200000 for unzlibed install_flash_player_19.0.0.245_osx.dmg
|
||||||
>>12 beshort x \b, devid %d
|
# 0xf2720100 for bunziped Firefox 48.0-2.dmg
|
||||||
>>20 beshort x \b, descriptors %d
|
# 0xeb02ffff for super_grub2_disk_hybrid_2.02s3.iso
|
||||||
# Assume 8 partitions each at a multiple of the sector size.
|
# 0x00009090 by syslinux-6.03/utils/isohybrid.c
|
||||||
# We could glean this from the partition descriptors, but they are empty!?!?
|
>>4 ubelong x \b, blockcount %u
|
||||||
>>(2.S*1) indirect x \b, contains[@0x%x]:
|
# following device/driver information not very useful
|
||||||
>>(2.S*2) indirect x \b, contains[@0x%x]:
|
# device type 0 1 (37008 garbage for super_grub2_disk_hybrid_2.02s3.iso)
|
||||||
>>(2.S*3) indirect x \b, contains[@0x%x]:
|
>>8 ubeshort x \b, devtype %u
|
||||||
>>(2.S*4) indirect x \b, contains[@0x%x]:
|
# device id 0 1 (37008 garbage for super_grub2_disk_hybrid_2.02s3.iso)
|
||||||
>>(2.S*5) indirect x \b, contains[@0x%x]:
|
>>10 ubeshort x \b, devid %u
|
||||||
>>(2.S*6) indirect x \b, contains[@0x%x]:
|
# driver data 0 (2425393296 garbage for super_grub2_disk_hybrid_2.02s3.iso)
|
||||||
>>(2.S*7) indirect x \b, contains[@0x%x]:
|
>>12 ubelong >0
|
||||||
>>(2.S*8) indirect x \b, contains[@0x%x]:
|
>>>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.
|
# magic stronger.
|
||||||
0 belong 0x504d0000 Apple Partition Map
|
# for apple partition map stored as a single file
|
||||||
>4 belong x \b, map block count %d
|
0 belong 0x504d0000
|
||||||
>8 belong x \b, start block %d
|
# to display Apple Partition Map (strength=70) after Syslinux bootloader (71)
|
||||||
>12 belong x \b, block count %d
|
#!:strength +0
|
||||||
>16 string >0 \b, name %s
|
>0 use apple-apm
|
||||||
>48 string >0 \b, type %s
|
# magic/Magdir/apple14.test, 365: Warning: Current entry does not yet have a description for adding a EXTENSION type
|
||||||
>124 string >0 \b, processor %s
|
# file: could not find any valid magic files!
|
||||||
>140 string >0 \b, boot arguments %s
|
#!:ext bin
|
||||||
>92 belong & 1 \b, valid
|
# display apple partition map. Normally called after Apple driver map
|
||||||
>92 belong & 2 \b, allocated
|
0 name apple-apm
|
||||||
>92 belong & 4 \b, in use
|
>0 belong 0x504d0000 Apple Partition Map
|
||||||
>92 belong & 8 \b, has boot info
|
# number of partitions
|
||||||
>92 belong & 16 \b, readable
|
>>4 ubelong x \b, map block count %u
|
||||||
>92 belong & 32 \b, writable
|
# logical block (512 bytes) start of partition
|
||||||
>92 belong & 64 \b, pic boot code
|
>>8 ubelong x \b, start block %u
|
||||||
>92 belong & 128 \b, chain compatible driver
|
>>12 ubelong x \b, block count %u
|
||||||
>92 belong & 256 \b, real driver
|
>>16 string >0 \b, name %s
|
||||||
>92 belong & 512 \b, chain driver
|
>>48 string >0 \b, type %s
|
||||||
>92 belong & 1024 \b, mount at startup
|
# processor type dpme_process_id[16] e.g. "68000" "68020"
|
||||||
>92 belong & 2048 \b, is the startup partition
|
>>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
|
#http://en.wikipedia.org/wiki/.DS_Store
|
||||||
0 string \0\0\0\1Bud1\0 Apple Desktop Services Store
|
0 string \0\0\0\1Bud1\0 Apple Desktop Services Store
|
||||||
|
|
||||||
@ -339,3 +408,26 @@
|
|||||||
>4 leshort 0
|
>4 leshort 0
|
||||||
>>16 lelong 0 Apple HFS/HFS+ resource fork
|
>>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
|
||||||
|
7
magic/Magdir/application
Normal file
7
magic/Magdir/application
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# $File: application,v 1.1 2016/10/17 12:13:01 christos Exp $
|
||||||
|
# application: file(1) magic for applications on small devices
|
||||||
|
#
|
||||||
|
# Pebble Application
|
||||||
|
0 string PBLAPP\000\000 Pebble application
|
52
magic/Magdir/apt
Normal file
52
magic/Magdir/apt
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# $File: apt,v 1.1 2016/10/17 19:51:57 christos Exp $
|
||||||
|
# apt: file(1) magic for APT Cache files
|
||||||
|
# <http://www.fifi.org/doc/libapt-pkg-doc/cache.html/ch2.html>
|
||||||
|
# <https://anonscm.debian.org/cgit/apt/apt.git/tree/apt-pkg/pkgcache.h#n292>
|
||||||
|
|
||||||
|
# before version 10 ("old format"), data was in arch-specific long/short
|
||||||
|
|
||||||
|
# old format 64 bit
|
||||||
|
0 name apt-cache-64bit-be
|
||||||
|
>12 beshort 1 \b, dirty
|
||||||
|
>40 bequad x \b, %llu packages
|
||||||
|
>48 bequad x \b, %llu versions
|
||||||
|
|
||||||
|
# old format 32 bit
|
||||||
|
0 name apt-cache-32bit-be
|
||||||
|
>8 beshort 1 \b, dirty
|
||||||
|
>40 belong x \b, %u packages
|
||||||
|
>44 belong x \b, %u versions
|
||||||
|
|
||||||
|
# new format
|
||||||
|
0 name apt-cache-be
|
||||||
|
>6 byte 1 \b, dirty
|
||||||
|
>24 belong x \b, %u packages
|
||||||
|
>28 belong x \b, %u versions
|
||||||
|
|
||||||
|
0 bequad 0x98FE76DC
|
||||||
|
>8 ubeshort <10 APT cache data, version %u
|
||||||
|
>>10 beshort x \b.%u, 64 bit big-endian
|
||||||
|
>>0 use apt-cache-64bit-be
|
||||||
|
|
||||||
|
0 lequad 0x98FE76DC
|
||||||
|
>8 uleshort <10 APT cache data, version %u
|
||||||
|
>>10 leshort x \b.%u, 64 bit little-endian
|
||||||
|
>>0 use \^apt-cache-64bit-be
|
||||||
|
|
||||||
|
0 belong 0x98FE76DC
|
||||||
|
>4 ubeshort <10 APT cache data, version %u
|
||||||
|
>>6 ubeshort x \b.%u, 32 bit big-endian
|
||||||
|
>>0 use apt-cache-32bit-be
|
||||||
|
>4 ubyte >9 APT cache data, version %u
|
||||||
|
>>5 ubyte x \b.%u, big-endian
|
||||||
|
>>0 use apt-cache-be
|
||||||
|
|
||||||
|
0 lelong 0x98FE76DC
|
||||||
|
>4 uleshort <10 APT cache data, version %u
|
||||||
|
>>6 uleshort x \b.%u, 32 bit little-endian
|
||||||
|
>>0 use \^apt-cache-32bit-be
|
||||||
|
>4 ubyte >9 APT cache data, version %u
|
||||||
|
>>5 ubyte x \b.%u, little-endian
|
||||||
|
>>0 use \^apt-cache-be
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# $File: bioinformatics,v 1.2 2016/02/14 15:53:53 christos Exp $
|
# $File: bioinformatics,v 1.4 2016/06/20 16:13:46 christos Exp $
|
||||||
# bioinfomatics: file(1) magic for Bioinfomatics file formats
|
# bioinfomatics: file(1) magic for Bioinfomatics file formats
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@ -163,7 +163,7 @@
|
|||||||
# SAM Alignment MAPQ
|
# SAM Alignment MAPQ
|
||||||
>>>>0 regex =^([^\t]+\t){4}[0-9]{1,3}\t
|
>>>>0 regex =^([^\t]+\t){4}[0-9]{1,3}\t
|
||||||
# SAM Alignment CIGAR
|
# SAM Alignment CIGAR
|
||||||
>>>>>0 regex =\t\\*|([0-9]+[MIDNSHPX=])+)\t
|
>>>>>0 regex =\t(\\*|([0-9]+[MIDNSHPX=])+)\t
|
||||||
# SAM Alignment RNEXT
|
# SAM Alignment RNEXT
|
||||||
>>>>>>0 regex =\t(\\*|=|[!-()+->?-~][!-~]*)\t
|
>>>>>>0 regex =\t(\\*|=|[!-()+->?-~][!-~]*)\t
|
||||||
# SAM Alignment PNEXT
|
# SAM Alignment PNEXT
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# $File: c-lang,v 1.23 2016/05/21 14:28:27 christos Exp $
|
# $File: c-lang,v 1.24 2016/07/01 23:31:13 christos Exp $
|
||||||
# c-lang: file(1) magic for C and related languages programs
|
# c-lang: file(1) magic for C and related languages programs
|
||||||
#
|
#
|
||||||
# The strength is to beat standard HTML
|
# The strength is to beat standard HTML
|
||||||
@ -48,6 +48,11 @@
|
|||||||
!:strength + 30
|
!:strength + 30
|
||||||
!:mime text/x-c++
|
!:mime text/x-c++
|
||||||
|
|
||||||
|
# Objective-C
|
||||||
|
0 regex \^#import Objective-C source text
|
||||||
|
!:strength +25
|
||||||
|
!:mime text/x-objective-c
|
||||||
|
|
||||||
# From: Mikhail Teterin <mi@aldan.algebra.com>
|
# From: Mikhail Teterin <mi@aldan.algebra.com>
|
||||||
0 string cscope cscope reference data
|
0 string cscope cscope reference data
|
||||||
>7 string x version %.2s
|
>7 string x version %.2s
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# $File: claris,v 1.7 2014/06/03 19:17:27 christos Exp $
|
# $File: claris,v 1.8 2016/07/18 19:23:38 christos Exp $
|
||||||
# claris: file(1) magic for claris
|
# claris: file(1) magic for claris
|
||||||
# "H. Nanosecond" <aldomel@ix.netcom.com>
|
# "H. Nanosecond" <aldomel@ix.netcom.com>
|
||||||
# Claris Works a word processor, etc.
|
# Claris Works a word processor, etc.
|
||||||
@ -18,7 +18,8 @@
|
|||||||
|
|
||||||
# Claris works files
|
# Claris works files
|
||||||
# .cwk
|
# .cwk
|
||||||
0 string \002\000\210\003\102\117\102\117\000\001\206 Claris works document
|
# Moved to Apple AppleWorks document
|
||||||
|
#0 string \002\000\210\003\102\117\102\117\000\001\206 Claris works document
|
||||||
# .plt
|
# .plt
|
||||||
0 string \020\341\000\000\010\010 Claris Works palette files .plt
|
0 string \020\341\000\000\010\010 Claris Works palette files .plt
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# $File: commands,v 1.54 2016/04/19 13:40:02 christos Exp $
|
# $File: commands,v 1.56 2016/07/14 19:01:12 christos Exp $
|
||||||
# commands: file(1) magic for various shells and interpreters
|
# commands: file(1) magic for various shells and interpreters
|
||||||
#
|
#
|
||||||
#0 string/w : shell archive or script for antique kernel text
|
#0 string/w : shell archive or script for antique kernel text
|
||||||
@ -112,3 +112,7 @@
|
|||||||
# URL: http://packages.debian.org/pdmenu
|
# URL: http://packages.debian.org/pdmenu
|
||||||
# From: Edward Betts <edward@debian.org>
|
# From: Edward Betts <edward@debian.org>
|
||||||
0 string #!/usr/bin/pdmenu Pdmenu configuration file text
|
0 string #!/usr/bin/pdmenu Pdmenu configuration file text
|
||||||
|
|
||||||
|
# From Danny Weldon
|
||||||
|
0 string \x0b\x13\x08\x00
|
||||||
|
>0x04 uleshort <4 ksh byte-code version %d
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# $File: compress,v 1.65 2015/12/04 20:48:03 christos Exp $
|
# $File: compress,v 1.66 2016/09/16 12:12:05 christos Exp $
|
||||||
# compress: file(1) magic for pure-compression formats (no archives)
|
# compress: file(1) magic for pure-compression formats (no archives)
|
||||||
#
|
#
|
||||||
# compress, gzip, pack, compact, huf, squeeze, crunch, freeze, yabba, etc.
|
# compress, gzip, pack, compact, huf, squeeze, crunch, freeze, yabba, etc.
|
||||||
@ -220,6 +220,56 @@
|
|||||||
0 lelong 0x184c2102 LZ4 compressed data (v0.1-v0.9)
|
0 lelong 0x184c2102 LZ4 compressed data (v0.1-v0.9)
|
||||||
!:mime application/x-lz4
|
!:mime application/x-lz4
|
||||||
|
|
||||||
|
# Zstandard/LZ4 skippable frames
|
||||||
|
# https://github.com/facebook/zstd/blob/dev/zstd_compression_format.md
|
||||||
|
0 lelong&0xFFFFFFF0 0x184D2A50
|
||||||
|
>(4.l+8) indirect
|
||||||
|
|
||||||
|
# Zstandard Dictionary ID subroutine
|
||||||
|
0 name zstd-dictionary-id
|
||||||
|
# Single Segment = True
|
||||||
|
>0 byte &0x20 \b, Dictionary ID:
|
||||||
|
>>0 byte&0x03 0 None
|
||||||
|
>>0 byte&0x03 1
|
||||||
|
>>>1 byte x %u
|
||||||
|
>>0 byte&0x03 2
|
||||||
|
>>>1 leshort x %u
|
||||||
|
>>0 byte&0x03 3
|
||||||
|
>>>1 lelong x %u
|
||||||
|
# Single Segment = False
|
||||||
|
>0 byte ^0x20 \b, Dictionary ID:
|
||||||
|
>>0 byte&0x03 0 None
|
||||||
|
>>0 byte&0x03 1
|
||||||
|
>>>2 byte x %u
|
||||||
|
>>0 byte&0x03 2
|
||||||
|
>>>2 leshort x %u
|
||||||
|
>>0 byte&0x03 3
|
||||||
|
>>>2 lelong x %u
|
||||||
|
|
||||||
|
# Zstandard compressed data
|
||||||
|
# https://github.com/facebook/zstd/blob/dev/zstd_compression_format.md
|
||||||
|
0 lelong 0xFD2FB522 Zstandard compressed data (v0.2)
|
||||||
|
!:mime application/x-zstd
|
||||||
|
0 lelong 0xFD2FB523 Zstandard compressed data (v0.3)
|
||||||
|
!:mime application/x-zstd
|
||||||
|
0 lelong 0xFD2FB524 Zstandard compressed data (v0.4)
|
||||||
|
!:mime application/x-zstd
|
||||||
|
0 lelong 0xFD2FB525 Zstandard compressed data (v0.5)
|
||||||
|
!:mime application/x-zstd
|
||||||
|
0 lelong 0xFD2FB526 Zstandard compressed data (v0.6)
|
||||||
|
!:mime application/x-zstd
|
||||||
|
0 lelong 0xFD2FB527 Zstandard compressed data (v0.7)
|
||||||
|
!:mime application/x-zstd
|
||||||
|
>4 use zstd-dictionary-id
|
||||||
|
0 lelong 0xFD2FB528 Zstandard compressed data (v0.8+)
|
||||||
|
!:mime application/x-zstd
|
||||||
|
>4 use zstd-dictionary-id
|
||||||
|
|
||||||
|
# https://github.com/facebook/zstd/blob/dev/zstd_compression_format.md
|
||||||
|
0 lelong 0xEC30A437 Zstandard dictionary
|
||||||
|
!:mime application/x-zstd-dictionary
|
||||||
|
>4 lelong x (ID %u)
|
||||||
|
|
||||||
# AFX compressed files (Wolfram Kleff)
|
# AFX compressed files (Wolfram Kleff)
|
||||||
2 string -afx- AFX compressed file data
|
2 string -afx- AFX compressed file data
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# $File: cups,v 1.3 2014/05/28 19:50:41 christos Exp $
|
# $File: cups,v 1.4 2016/10/17 18:51:02 christos Exp $
|
||||||
# Cups: file(1) magic for the cups raster file format
|
# Cups: file(1) magic for the cups raster file format
|
||||||
# From: Laurent Martelli <martellilaurent@gmail.com>
|
# From: Laurent Martelli <martellilaurent@gmail.com>
|
||||||
# http://www.cups.org/documentation.php/spec-raster.html
|
# http://www.cups.org/documentation.php/spec-raster.html
|
||||||
@ -44,7 +44,7 @@
|
|||||||
>3 string 2 Cups Raster version 2, Big Endian
|
>3 string 2 Cups Raster version 2, Big Endian
|
||||||
>3 string 3 Cups Raster version 3, Big Endian
|
>3 string 3 Cups Raster version 3, Big Endian
|
||||||
!:mime application/vnd.cups-raster
|
!:mime application/vnd.cups-raster
|
||||||
>0 use ^cups-le
|
>0 use \^cups-le
|
||||||
|
|
||||||
|
|
||||||
# Cups Raster image format, Little Endian
|
# Cups Raster image format, Little Endian
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# $File: editors,v 1.8 2009/09/19 16:28:09 christos Exp $
|
# $File: editors,v 1.10 2016/07/18 17:44:49 christos Exp $
|
||||||
# T602 editor documents
|
# T602 editor documents
|
||||||
# by David Necas <yeti@physics.muni.cz>
|
# by David Necas <yeti@physics.muni.cz>
|
||||||
0 string @CT\ T602 document data,
|
0 string @CT\ T602 document data,
|
||||||
@ -12,7 +12,28 @@
|
|||||||
# Vi IMproved Encrypted file
|
# Vi IMproved Encrypted file
|
||||||
# by David Necas <yeti@physics.muni.cz>
|
# by David Necas <yeti@physics.muni.cz>
|
||||||
0 string VimCrypt~ Vim encrypted file data
|
0 string VimCrypt~ Vim encrypted file data
|
||||||
|
|
||||||
|
0 name vimnanoswap
|
||||||
|
>67 byte 0
|
||||||
|
>>107 byte 0
|
||||||
|
#>>>2 string x %s swap file
|
||||||
|
>>>24 ulelong x \b, pid %d
|
||||||
|
>>>28 string >\0 \b, user %s
|
||||||
|
>>>68 string >\0 \b, host %s
|
||||||
|
>>>108 string >\0 \b, file %s
|
||||||
|
>>>1007 byte 0x55 \b, modified
|
||||||
|
|
||||||
# Vi IMproved Swap file
|
# Vi IMproved Swap file
|
||||||
# by Sven Wegener <swegener@gentoo.org>
|
# by Sven Wegener <swegener@gentoo.org>
|
||||||
0 string b0VIM\ Vim swap file
|
0 string b0VIM\ Vim swap file
|
||||||
>&0 string >\0 \b, version %s
|
>&0 string >\0 \b, version %s
|
||||||
|
>0 use vimnanoswap
|
||||||
|
|
||||||
|
|
||||||
|
# Lock/swap file for several editors, at least
|
||||||
|
# Vi IMproved and nano
|
||||||
|
0 string b0nano Nano swap file
|
||||||
|
>0 use vimnanoswap
|
||||||
|
|
||||||
|
# kate (K Advanced Text Editor)
|
||||||
|
0 string \x00\x00\x00\x12Kate\ Swap\ File\ 2.0\x00 Kate swap file
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# $File: filesystems,v 1.113 2016/02/14 14:38:24 christos Exp $
|
# $File: filesystems,v 1.114 2016/09/05 08:34:25 christos Exp $
|
||||||
# filesystems: file(1) magic for different filesystems
|
# filesystems: file(1) magic for different filesystems
|
||||||
#
|
#
|
||||||
0 name partid
|
0 name partid
|
||||||
@ -539,8 +539,6 @@
|
|||||||
>>>514 string !HdrS
|
>>>514 string !HdrS
|
||||||
# not BeOS
|
# not BeOS
|
||||||
>>>>422 string !Be\ Boot\ Loader
|
>>>>422 string !Be\ Boot\ Loader
|
||||||
>>>>>32769 string CD001
|
|
||||||
>>>>>>0 use cdrom
|
|
||||||
# jump over BPB instruction implies DOS bootsector or AdvanceMAME mbr
|
# jump over BPB instruction implies DOS bootsector or AdvanceMAME mbr
|
||||||
>>>>>0 ubelong&0xFD000000 =0xE9000000
|
>>>>>0 ubelong&0xFD000000 =0xE9000000
|
||||||
# AdvanceMAME mbr
|
# AdvanceMAME mbr
|
||||||
@ -1929,6 +1927,7 @@
|
|||||||
>>38917 string 3 (version 2.0)
|
>>38917 string 3 (version 2.0)
|
||||||
>>38917 byte >0x33 (unknown version, ID 0x%X)
|
>>38917 byte >0x33 (unknown version, ID 0x%X)
|
||||||
>>38917 byte <0x31 (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)
|
>0x1FE leshort 0xAA55 (DOS/MBR boot sector)
|
||||||
# "application id" which appears to be used as a volume label
|
# "application id" which appears to be used as a volume label
|
||||||
>32808 string/T >\0 '%s'
|
>32808 string/T >\0 '%s'
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# $File: fonts,v 1.30 2016/03/22 22:27:47 christos Exp $
|
# $File: fonts,v 1.33 2016/09/14 01:26:26 christos Exp $
|
||||||
# fonts: file(1) magic for font data
|
# fonts: file(1) magic for font data
|
||||||
#
|
#
|
||||||
0 search/1 FONT ASCII vfont text
|
0 search/1 FONT ASCII vfont text
|
||||||
@ -15,6 +15,56 @@
|
|||||||
6 string %!FontType1 PostScript Type 1 font program data
|
6 string %!FontType1 PostScript Type 1 font program data
|
||||||
0 string %!PS-Adobe-3.0\ Resource-Font PostScript Type 1 font text
|
0 string %!PS-Adobe-3.0\ Resource-Font PostScript Type 1 font text
|
||||||
|
|
||||||
|
# Summary: PostScript Type 1 Printer Font Metrics
|
||||||
|
# URL: https://en.wikipedia.org/wiki/PostScript_fonts
|
||||||
|
# Reference: http://partners.adobe.com/public/developer/en/font/5178.PFM.pdf
|
||||||
|
# Modified by: Joerg Jenderek
|
||||||
|
# Note: moved from ./msdos magic
|
||||||
|
# dfVersion 256=0100h
|
||||||
|
0 uleshort 0x0100
|
||||||
|
# GRR: line above is too general as it catches also TrueType font,
|
||||||
|
# raw G3 data FAX, WhatsApp encrypted and Panorama database
|
||||||
|
# dfType 129=0081h
|
||||||
|
>66 uleshort 0x0081
|
||||||
|
# dfVertRes 300=012Ch not needed as additional test
|
||||||
|
#>>70 uleshort 0x012c
|
||||||
|
# dfHorizRes 300=012Ch
|
||||||
|
#>>>72 uleshort 0x012c
|
||||||
|
# dfDriverInfo points to postscript information section
|
||||||
|
>>(101.l) string/c Postscript Printer Font Metrics
|
||||||
|
# above labeled "PFM data" by ./msdos (version 5.28) or "Adobe Printer Font Metrics" by TrID
|
||||||
|
!:mime application/x-font-pfm
|
||||||
|
# AppleShare Print Server
|
||||||
|
#!:apple ASPS????
|
||||||
|
!:ext pfm
|
||||||
|
# dfCopyright 60 byte null padded Copyright string. uncomment it to get old looking
|
||||||
|
#>>>6 string >\060 - %-.60s
|
||||||
|
# dfDriverInfo
|
||||||
|
>>>139 ulelong >0
|
||||||
|
# often abbreviated and same as filename
|
||||||
|
>>>>(139.l) string x %s
|
||||||
|
# dfSize
|
||||||
|
>>>2 ulelong x \b, %d bytes
|
||||||
|
# dfFace 210=D2h 9Eh
|
||||||
|
>>>105 ulelong >0
|
||||||
|
# Windows font name
|
||||||
|
>>>>(105.l) string x \b, %s
|
||||||
|
# dfItalic
|
||||||
|
>>>80 ubyte 1 italic
|
||||||
|
# dfUnderline
|
||||||
|
>>>81 ubyte 1 underline
|
||||||
|
# dfStrikeOut
|
||||||
|
>>>82 ubyte 1 strikeout
|
||||||
|
# dfWeight 400=0x0190 300=0x012c 500=0x01f4 600=0x0258 700=0x02bc
|
||||||
|
>>>83 uleshort >699 bold
|
||||||
|
# dfPitchAndFamily 16 17 48 49 64 65
|
||||||
|
>>>90 ubyte 16 serif
|
||||||
|
>>>90 ubyte 17 serif proportional
|
||||||
|
#>>>90 ubyte 48 other
|
||||||
|
>>>90 ubyte 49 proportional
|
||||||
|
>>>90 ubyte 64 script
|
||||||
|
>>>90 ubyte 65 script proportional
|
||||||
|
|
||||||
# X11 font files in SNF (Server Natural Format) format
|
# X11 font files in SNF (Server Natural Format) format
|
||||||
# updated by Joerg Jenderek at Feb 2013
|
# updated by Joerg Jenderek at Feb 2013
|
||||||
# http://computer-programming-forum.com/51-perl/8f22fb96d2e34bab.htm
|
# http://computer-programming-forum.com/51-perl/8f22fb96d2e34bab.htm
|
||||||
@ -110,7 +160,12 @@
|
|||||||
>14 string x version %s
|
>14 string x version %s
|
||||||
|
|
||||||
# EOT
|
# EOT
|
||||||
34 string LP Embedded OpenType (EOT)
|
0x40 string \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
|
||||||
|
>0x22 string LP Embedded OpenType (EOT)
|
||||||
|
# workaround until there's lepstring16
|
||||||
|
# >>0x52 lepstring16/h >\0 \b, %s family
|
||||||
|
>>0x52 short !0
|
||||||
|
>>>0x54 lestring16 x \b, %s family
|
||||||
!:mime application/vnd.ms-fontobject
|
!:mime application/vnd.ms-fontobject
|
||||||
|
|
||||||
# Web Open Font Format (.woff)
|
# Web Open Font Format (.woff)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# $File: gcc,v 1.4 2009/09/19 16:28:09 christos Exp $
|
# $File: gcc,v 1.5 2016/07/01 23:31:13 christos Exp $
|
||||||
# gcc: file(1) magic for GCC special files
|
# gcc: file(1) magic for GCC special files
|
||||||
#
|
#
|
||||||
0 string gpch GCC precompiled header
|
0 string gpch GCC precompiled header
|
||||||
@ -12,6 +12,6 @@
|
|||||||
|
|
||||||
# 67 = 'C', 111 = 'o', 43 = '+', 79 = 'O'
|
# 67 = 'C', 111 = 'o', 43 = '+', 79 = 'O'
|
||||||
>4 byte 67 for C
|
>4 byte 67 for C
|
||||||
>4 byte 111 for Objective C
|
>4 byte 111 for Objective-C
|
||||||
>4 byte 43 for C++
|
>4 byte 43 for C++
|
||||||
>4 byte 79 for Objective C++
|
>4 byte 79 for Objective-C++
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# $File: gnu,v 1.16 2015/04/19 22:59:25 christos Exp $
|
# $File: gnu,v 1.17 2016/07/16 22:17:04 christos Exp $
|
||||||
# gnu: file(1) magic for various GNU tools
|
# gnu: file(1) magic for various GNU tools
|
||||||
#
|
#
|
||||||
# GNU nlsutils message catalog file format
|
# GNU nlsutils message catalog file format
|
||||||
@ -34,9 +34,12 @@
|
|||||||
|
|
||||||
# This magic is not particularly good, as the keyrings don't have true
|
# This magic is not particularly good, as the keyrings don't have true
|
||||||
# magic. Nevertheless, it covers many keyrings.
|
# magic. Nevertheless, it covers many keyrings.
|
||||||
0 beshort 0x9901 GPG key public ring
|
0 ubeshort-0x9901 <2
|
||||||
|
>3 byte 4
|
||||||
|
>>4 bedate x GPG key public ring, created %s
|
||||||
!:mime application/x-gnupg-keyring
|
!:mime application/x-gnupg-keyring
|
||||||
|
|
||||||
|
|
||||||
# Symmetric encryption
|
# Symmetric encryption
|
||||||
0 leshort 0x0d8c
|
0 leshort 0x0d8c
|
||||||
>4 leshort 0x0203
|
>4 leshort 0x0203
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# $File: images,v 1.116 2016/03/23 15:29:20 christos Exp $
|
# $File: images,v 1.117 2016/07/05 19:12:21 christos Exp $
|
||||||
# images: file(1) magic for image formats (see also "iff", and "c-lang" for
|
# images: file(1) magic for image formats (see also "iff", and "c-lang" for
|
||||||
# XPM bitmaps)
|
# XPM bitmaps)
|
||||||
#
|
#
|
||||||
@ -171,38 +171,44 @@
|
|||||||
>>>&0 regex =[0-9]{1,50} \b %s
|
>>>&0 regex =[0-9]{1,50} \b %s
|
||||||
|
|
||||||
0 search/1 P1
|
0 search/1 P1
|
||||||
>0 use netpbm
|
>0 regex/4 P1\\s
|
||||||
>>0 string x \b, bitmap
|
>>0 use netpbm
|
||||||
|
>>>0 string x \b, bitmap
|
||||||
!:strength + 45
|
!:strength + 45
|
||||||
!:mime image/x-portable-bitmap
|
!:mime image/x-portable-bitmap
|
||||||
|
|
||||||
0 search/1 P2
|
0 search/1 P2
|
||||||
>0 use netpbm
|
>0 regex/4 P2\\s
|
||||||
>>0 string x \b, greymap
|
>>0 use netpbm
|
||||||
|
>>>0 string x \b, greymap
|
||||||
!:strength + 45
|
!:strength + 45
|
||||||
!:mime image/x-portable-greymap
|
!:mime image/x-portable-greymap
|
||||||
|
|
||||||
0 search/1 P3
|
0 search/1 P3
|
||||||
>0 use netpbm
|
>0 regex/4 P3\\s
|
||||||
>>0 string x \b, pixmap
|
>>0 use netpbm
|
||||||
|
>>>0 string x \b, pixmap
|
||||||
!:strength + 45
|
!:strength + 45
|
||||||
!:mime image/x-portable-pixmap
|
!:mime image/x-portable-pixmap
|
||||||
|
|
||||||
0 string P4
|
0 string P4
|
||||||
>0 use netpbm
|
>0 regex/4 P4\\s
|
||||||
>>0 string x \b, rawbits, bitmap
|
>>0 use netpbm
|
||||||
|
>>>0 string x \b, rawbits, bitmap
|
||||||
!:strength + 45
|
!:strength + 45
|
||||||
!:mime image/x-portable-bitmap
|
!:mime image/x-portable-bitmap
|
||||||
|
|
||||||
0 string P5
|
0 string P5
|
||||||
>0 use netpbm
|
>0 regex/4 P5\\s
|
||||||
>>0 string x \b, rawbits, greymap
|
>>0 use netpbm
|
||||||
|
>>>0 string x \b, rawbits, greymap
|
||||||
!:strength + 45
|
!:strength + 45
|
||||||
!:mime image/x-portable-greymap
|
!:mime image/x-portable-greymap
|
||||||
|
|
||||||
0 string P6
|
0 string P6
|
||||||
>0 use netpbm
|
>0 regex/4 P6\\s
|
||||||
>>0 string x \b, rawbits, pixmap
|
>>0 use netpbm
|
||||||
|
>>>0 string x \b, rawbits, pixmap
|
||||||
!:strength + 45
|
!:strength + 45
|
||||||
!:mime image/x-portable-pixmap
|
!:mime image/x-portable-pixmap
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# $File: jpeg,v 1.29 2015/04/10 15:36:02 christos Exp $
|
# $File: jpeg,v 1.30 2016/07/04 15:18:23 christos Exp $
|
||||||
# JPEG images
|
# JPEG images
|
||||||
# SunOS 5.5.1 had
|
# SunOS 5.5.1 had
|
||||||
#
|
#
|
||||||
@ -117,3 +117,10 @@
|
|||||||
# From: Mathieu Malaterre <mathieu.malaterre@gmail.com>
|
# From: Mathieu Malaterre <mathieu.malaterre@gmail.com>
|
||||||
0 belong 0xff4fff51 JPEG 2000 codestream
|
0 belong 0xff4fff51 JPEG 2000 codestream
|
||||||
45 beshort 0xff52
|
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
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# $File: msdos,v 1.106 2016/06/11 00:52:14 christos Exp $
|
# $File: msdos,v 1.111 2016/09/14 01:26:26 christos Exp $
|
||||||
# msdos: file(1) magic for MS-DOS files
|
# msdos: file(1) magic for MS-DOS files
|
||||||
#
|
#
|
||||||
|
|
||||||
@ -328,15 +328,6 @@
|
|||||||
0 string \xffKEYB\ \ \ \0\0\0\0
|
0 string \xffKEYB\ \ \ \0\0\0\0
|
||||||
>12 string \0\0\0\0`\004\360 MS-DOS KEYBoard Layout file
|
>12 string \0\0\0\0`\004\360 MS-DOS KEYBoard Layout file
|
||||||
|
|
||||||
# .COM formats (Daniel Quinlan, quinlan@yggdrasil.com)
|
|
||||||
# Uncommenting only the first two lines will cover about 2/3 of COM files,
|
|
||||||
# but it isn't feasible to match all COM files since there must be at least
|
|
||||||
# two dozen different one-byte "magics".
|
|
||||||
# test too generic ?
|
|
||||||
0 byte 0xe9 DOS executable (COM)
|
|
||||||
>0x1FE leshort 0xAA55 \b, boot code
|
|
||||||
>6 string SFX\ of\ LHarc (%s)
|
|
||||||
|
|
||||||
# DOS device driver updated by Joerg Jenderek at May 2011
|
# DOS device driver updated by Joerg Jenderek at May 2011
|
||||||
# http://maben.homeip.net/static/S100/IBM/software/DOS/DOS%20techref/CHAPTER.009
|
# http://maben.homeip.net/static/S100/IBM/software/DOS/DOS%20techref/CHAPTER.009
|
||||||
0 ulequad&0x07a0ffffffff 0xffffffff DOS executable (
|
0 ulequad&0x07a0ffffffff 0xffffffff DOS executable (
|
||||||
@ -439,12 +430,37 @@
|
|||||||
# byte 0xeb conflicts with "sequent" magic leshort 0xn2eb
|
# byte 0xeb conflicts with "sequent" magic leshort 0xn2eb
|
||||||
0 ubeshort&0xeb8d >0xeb00
|
0 ubeshort&0xeb8d >0xeb00
|
||||||
# DR-DOS STACKER.COM SCREATE.SYS missed
|
# DR-DOS STACKER.COM SCREATE.SYS missed
|
||||||
>0 byte 0xeb
|
|
||||||
>>0x1FE leshort 0xAA55 DOS executable (COM), boot code
|
0 name msdos-com
|
||||||
>>85 string UPX DOS executable (COM), UPX compressed
|
>0 byte x DOS executable (COM)
|
||||||
>>4 string \ $ARX DOS executable (COM), ARX self-extracting archive
|
>6 string SFX\ of\ LHarc \b, %s
|
||||||
>>4 string \ $LHarc DOS executable (COM), LHarc self-extracting archive
|
>0x1FE leshort 0xAA55 \b, boot code
|
||||||
>>0x20e string SFX\ by\ LARC DOS executable (COM), LARC self-extracting archive
|
>85 string UPX \b, UPX compressed
|
||||||
|
>4 string \ $ARX \b, ARX self-extracting archive
|
||||||
|
>4 string \ $LHarc \b, LHarc self-extracting archive
|
||||||
|
>0x20e string SFX\ by\ LARC \b, LARC self-extracting archive
|
||||||
|
|
||||||
|
# JMP 8bit
|
||||||
|
0 byte 0xeb
|
||||||
|
# allow forward jumps only
|
||||||
|
>1 byte >-1
|
||||||
|
# that offset must be accessible
|
||||||
|
>>(1.b+2) byte x
|
||||||
|
>>>0 use msdos-com
|
||||||
|
|
||||||
|
# JMP 16bit
|
||||||
|
0 byte 0xe9
|
||||||
|
# forward jumps
|
||||||
|
>1 short >-1
|
||||||
|
# that offset must be accessible
|
||||||
|
>>(1.s+3) byte x
|
||||||
|
>>>0 use msdos-com
|
||||||
|
# negative offset, must not lead into PSP
|
||||||
|
>1 short <-259
|
||||||
|
# that offset must be accessible
|
||||||
|
>>(1,s+65539) byte x
|
||||||
|
>>>0 use msdos-com
|
||||||
|
|
||||||
# updated by Joerg Jenderek at Oct 2008,2015
|
# updated by Joerg Jenderek at Oct 2008,2015
|
||||||
# following line is too general
|
# following line is too general
|
||||||
0 ubyte 0xb8
|
0 ubyte 0xb8
|
||||||
@ -578,17 +594,158 @@
|
|||||||
0 string/b \x09\x04\x06\x00\x00\x00\x10\x00 Microsoft Excel Worksheet
|
0 string/b \x09\x04\x06\x00\x00\x00\x10\x00 Microsoft Excel Worksheet
|
||||||
!:mime application/vnd.ms-excel
|
!:mime application/vnd.ms-excel
|
||||||
#
|
#
|
||||||
0 belong 0x00001a00 Lotus 1-2-3
|
# Update: Joerg Jenderek
|
||||||
!:mime application/x-123
|
# URL: https://en.wikipedia.org/wiki/Lotus_1-2-3
|
||||||
>4 belong 0x00100400 wk3 document data
|
# Reference: http://www.aboutvb.de/bas/formate/pdf/wk3.pdf
|
||||||
>4 belong 0x02100400 wk4 document data
|
# Note: newer Lotus versions >2 use longer BOF record
|
||||||
>4 belong 0x07800100 fm3 or fmb document data
|
# record type (BeginningOfFile=0000h) + length (001Ah)
|
||||||
>4 belong 0x07800000 fm3 or fmb document data
|
0 belong 0x00001a00
|
||||||
|
# reserved should be 0h but 8c0dh for TUTMAC.WK3, 5h for SAMPADNS.WK3, 1h for a_readme.wk3, 1eh for K&G86.WK3
|
||||||
|
#>18 uleshort&0x73E0 0
|
||||||
|
# Lotus Multi Byte Character Set (LMBCS=1-31)
|
||||||
|
>20 ubyte >0
|
||||||
|
>>20 ubyte <32 Lotus 1-2-3
|
||||||
|
#!:mime application/x-123
|
||||||
|
!:mime application/vnd.lotus-1-2-3
|
||||||
|
!:apple ????L123
|
||||||
|
# (version 5.26) labeled the entry as "Lotus 1-2-3 wk3 document data"
|
||||||
|
>>>4 uleshort 0x1000 WorKsheet, version 3
|
||||||
|
!:ext wk3
|
||||||
|
# (version 5.26) labeled the entry as "Lotus 1-2-3 wk4 document data"
|
||||||
|
>>>4 uleshort 0x1002 WorKsheet, version 4
|
||||||
|
# also worksheet template 4 (.wt4)
|
||||||
|
!:ext wk4/wt4
|
||||||
|
# no example or documentation for wk5
|
||||||
|
#>>4 uleshort 0x???? WorKsheet, version 4
|
||||||
|
#!:ext wk5
|
||||||
|
# only MacrotoScript.123 example
|
||||||
|
>>>4 uleshort 0x1003 WorKsheet, version 97
|
||||||
|
# also worksheet template Smartmaster (.12M)?
|
||||||
|
!:ext 123
|
||||||
|
# only Set_Y2K.123 example
|
||||||
|
>>>4 uleshort 0x1005 WorKsheet, version 9.8 Millennium
|
||||||
|
!:ext 123
|
||||||
|
# no example for this version
|
||||||
|
>>>4 uleshort 0x8001 FoRMatting data
|
||||||
|
!:ext frm
|
||||||
|
# (version 5.26) labeled the entry as "Lotus 1-2-3 fm3 or fmb document data"
|
||||||
|
# TrID labeles the entry as "Formatting Data for Lotus 1-2-3 worksheet"
|
||||||
|
>>>4 uleshort 0x8007 ForMatting data, version 3
|
||||||
|
!:ext fm3
|
||||||
|
>>>4 default x unknown
|
||||||
|
# file revision sub code 0004h for worksheets
|
||||||
|
>>>>6 uleshort =0x0004 worksheet
|
||||||
|
!:ext wXX
|
||||||
|
>>>>6 uleshort !0x0004 formatting data
|
||||||
|
!:ext fXX
|
||||||
|
# main revision number
|
||||||
|
>>>>4 uleshort x \b, revision 0x%x
|
||||||
|
>>>6 uleshort =0x0004 \b, cell range
|
||||||
|
# active cellcoord range (start row, page,column ; end row, page, column)
|
||||||
|
# start values normally 0~1st sheet A1
|
||||||
|
>>>>8 ulelong !0
|
||||||
|
>>>>>10 ubyte >0 \b%d*
|
||||||
|
>>>>>8 uleshort x \b%d,
|
||||||
|
>>>>>11 ubyte x \b%d-
|
||||||
|
# end page mostly 0
|
||||||
|
>>>>14 ubyte >0 \b%d*
|
||||||
|
# end raw, column normally not 0
|
||||||
|
>>>>12 uleshort x \b%d,
|
||||||
|
>>>>15 ubyte x \b%d
|
||||||
|
# Lotus Multi Byte Character Set (1~cp850,2~cp851,...,16~japan,...,31~??)
|
||||||
|
>>>>20 ubyte >1 \b, character set 0x%x
|
||||||
|
# flags
|
||||||
|
>>>>21 ubyte x \b, flags 0x%x
|
||||||
|
>>>6 uleshort !0x0004
|
||||||
|
# record type (FONTNAME=00AEh)
|
||||||
|
>>>>30 search/29 \0\xAE
|
||||||
|
# variable length m (2) + entries (1) + ?? (1) + LCMBS string (n)
|
||||||
|
>>>>>&4 string >\0 \b, 1st font "%s"
|
||||||
#
|
#
|
||||||
0 belong 0x00000200 Lotus 1-2-3
|
# Update: Joerg Jenderek
|
||||||
!:mime application/x-123
|
# URL: http://fileformats.archiveteam.org/wiki/Lotus_1-2-3
|
||||||
>4 belong 0x06040600 wk1 document data
|
# Reference: http://www.schnarff.com/file-formats/lotus-1-2-3/WSFF2.TXT
|
||||||
>4 belong 0x06800200 fmt document data
|
# Note: Used by both old Lotus 1-2-3 and Lotus Symphony (DOS) til version 2.x
|
||||||
|
# record type (BeginningOfFile=0000h) + length (0002h)
|
||||||
|
0 belong 0x00000200
|
||||||
|
# GRR: line above is too general as it catches also MS Windows CURsor
|
||||||
|
# to display MS Windows cursor (strength=70) before Lotus 1-2-3 (strength=70-1)
|
||||||
|
!:strength -1
|
||||||
|
# skip Windows cursors with image height <256 and keep Lotus with low opcode 0001-0083h
|
||||||
|
>7 ubyte 0
|
||||||
|
# skip Windows cursors with image width 256 and keep Lotus with positiv opcode
|
||||||
|
>>6 ubyte >0 Lotus
|
||||||
|
# !:mime application/x-123
|
||||||
|
!:mime application/vnd.lotus-1-2-3
|
||||||
|
!:apple ????L123
|
||||||
|
# revision number (0404h = 123 1A, 0405h = Lotus Symphony , 0406h = 123 2.x wk1 , 8006h = fmt , ...)
|
||||||
|
# undocumented; (version 5.26) labeled the configurations as "Lotus 1-2-3"
|
||||||
|
>>>4 uleshort 0x0007 1-2-3 CoNFiguration, version 2.x (PGRAPH.CNF)
|
||||||
|
!:ext cnf
|
||||||
|
>>>4 uleshort 0x0C05 1-2-3 CoNFiguration, version 2.4J
|
||||||
|
!:ext cnf
|
||||||
|
>>>4 uleshort 0x0801 1-2-3 CoNFiguration, version 1-2.1
|
||||||
|
!:ext cnf
|
||||||
|
>>>4 uleshort 0x0802 Symphony CoNFiguration
|
||||||
|
!:ext cnf
|
||||||
|
>>>4 uleshort 0x0804 1-2-3 CoNFiguration, version 2.2
|
||||||
|
!:ext cnf
|
||||||
|
>>>4 uleshort 0x080A 1-2-3 CoNFiguration, version 2.3-2.4
|
||||||
|
!:ext cnf
|
||||||
|
>>>4 uleshort 0x1402 1-2-3 CoNFiguration, version 3.x
|
||||||
|
!:ext cnf
|
||||||
|
>>>4 uleshort 0x1450 1-2-3 CoNFiguration, version 4.x
|
||||||
|
!:ext cnf
|
||||||
|
# (version 5.26) labeled the entry as "Lotus 123"
|
||||||
|
# TrID labeles the entry as "Lotus 123 Worksheet (generic)"
|
||||||
|
>>>4 uleshort 0x0404 1-2-3 WorKSheet, version 1
|
||||||
|
# extension "wks" also for Microsoft Works document
|
||||||
|
!:ext wks
|
||||||
|
# (version 5.26) labeled the entry as "Lotus 123"
|
||||||
|
# TrID labeles the entry as "Lotus 123 Worksheet (generic)"
|
||||||
|
>>>4 uleshort 0x0405 Symphony WoRksheet, version 1.0
|
||||||
|
!:ext wrk/wr1
|
||||||
|
# (version 5.26) labeled the entry as "Lotus 1-2-3 wk1 document data"
|
||||||
|
# TrID labeles the entry as "Lotus 123 Worksheet (V2)"
|
||||||
|
>>>4 uleshort 0x0406 1-2-3/Symphony worksheet, version 2
|
||||||
|
# Symphony (.wr1)
|
||||||
|
!:ext wk1/wr1
|
||||||
|
# no example for this japan version
|
||||||
|
>>>4 uleshort 0x0600 1-2-3 WorKsheet, version 1.xJ
|
||||||
|
!:ext wj1
|
||||||
|
# no example or documentation for wk2
|
||||||
|
#>>>4 uleshort 0x???? 1-2-3 WorKsheet, version 2
|
||||||
|
#!:ext wk2
|
||||||
|
# undocumented japan version
|
||||||
|
>>>4 uleshort 0x0602 1-2-3 worksheet, version 2.4J
|
||||||
|
!:ext wj3
|
||||||
|
# (version 5.26) labeled the entry as "Lotus 1-2-3 fmt document data"
|
||||||
|
>>>4 uleshort 0x8006 1-2-3 ForMaTting data, version 2.x
|
||||||
|
# japan version 2.4J (fj3)
|
||||||
|
!:ext fmt/fj3
|
||||||
|
# no example for this version
|
||||||
|
>>>4 uleshort 0x8007 1-2-3 FoRMatting data, version 2.0
|
||||||
|
!:ext frm
|
||||||
|
# (version 5.26) labeled the entry as "Lotus 1-2-3"
|
||||||
|
>>>4 default x unknown worksheet or configuration
|
||||||
|
!:ext cnf
|
||||||
|
>>>>4 uleshort x \b, revision 0x%x
|
||||||
|
# 2nd record for most worksheets describes cells range
|
||||||
|
>>>6 use lotus-cells
|
||||||
|
# 3nd record for most japan worksheets describes cells range
|
||||||
|
>>>(8.s+10) use lotus-cells
|
||||||
|
# check and then display Lotus worksheet cells range
|
||||||
|
0 name lotus-cells
|
||||||
|
# look for type (RANGE=0006h) + length (0008h) at record begin
|
||||||
|
>0 ubelong 0x06000800 \b, cell range
|
||||||
|
# cell range (start column, row, end column, row) start values normally 0,0~A1 cell
|
||||||
|
>>4 ulong !0
|
||||||
|
>>>4 uleshort x \b%d,
|
||||||
|
>>>6 uleshort x \b%d-
|
||||||
|
# end of cell range
|
||||||
|
>>8 uleshort x \b%d,
|
||||||
|
>>10 uleshort x \b%d
|
||||||
|
# EndOfLotus123
|
||||||
0 string/b WordPro\0 Lotus WordPro
|
0 string/b WordPro\0 Lotus WordPro
|
||||||
!:mime application/vnd.lotus-wordpro
|
!:mime application/vnd.lotus-wordpro
|
||||||
0 string/b WordPro\r\373 Lotus WordPro
|
0 string/b WordPro\r\373 Lotus WordPro
|
||||||
@ -738,24 +895,6 @@
|
|||||||
0 lelong 0x00000005
|
0 lelong 0x00000005
|
||||||
>12 lelong 0x00000320 Windows Recycle Bin INFO2 file (Win2k - WinXP)
|
>12 lelong 0x00000320 Windows Recycle Bin INFO2 file (Win2k - WinXP)
|
||||||
|
|
||||||
|
|
||||||
##### put in Either Magic/font or Magic/news
|
|
||||||
# Acroread or something files wrongly identified as G3 .pfm
|
|
||||||
# these have the form \000 \001 any? \002 \000 \000
|
|
||||||
# or \000 \001 any? \022 \000 \000
|
|
||||||
0 belong&0xffff00ff 0x00010012 PFM data
|
|
||||||
>4 string \000\000
|
|
||||||
>6 string >\060 - %s
|
|
||||||
|
|
||||||
0 belong&0xffff00ff 0x00010002 PFM data
|
|
||||||
>4 string \000\000
|
|
||||||
>6 string >\060 - %s
|
|
||||||
#0 string \000\001 pfm?
|
|
||||||
#>3 string \022\000\000Copyright\ yes
|
|
||||||
#>3 string \002\000\000Copyright\ yes
|
|
||||||
#>3 string >\0 oops, not a font file. Cancel that.
|
|
||||||
#it clashes with ttf files so put it lower down.
|
|
||||||
|
|
||||||
# From Doug Lee via a FreeBSD pr
|
# From Doug Lee via a FreeBSD pr
|
||||||
9 string GERBILDOC First Choice document
|
9 string GERBILDOC First Choice document
|
||||||
9 string GERBILDB First Choice database
|
9 string GERBILDB First Choice database
|
||||||
@ -940,7 +1079,8 @@
|
|||||||
# Type: Microsoft Document Imaging Format (.mdi)
|
# Type: Microsoft Document Imaging Format (.mdi)
|
||||||
# URL: http://en.wikipedia.org/wiki/Microsoft_Document_Imaging_Format
|
# URL: http://en.wikipedia.org/wiki/Microsoft_Document_Imaging_Format
|
||||||
# From: Daniele Sempione <scrows@oziosi.org>
|
# From: Daniele Sempione <scrows@oziosi.org>
|
||||||
0 short 0x5045 Microsoft Document Imaging Format
|
# Too weak (EP)
|
||||||
|
#0 short 0x5045 Microsoft Document Imaging Format
|
||||||
|
|
||||||
# MS eBook format (.lit)
|
# MS eBook format (.lit)
|
||||||
0 string/b ITOLITLS Microsoft Reader eBook Data
|
0 string/b ITOLITLS Microsoft Reader eBook Data
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# $File: pgp,v 1.11 2014/11/11 21:32:38 christos Exp $
|
# $File: pgp,v 1.12 2016/10/07 20:22:12 christos Exp $
|
||||||
# pgp: file(1) magic for Pretty Good Privacy
|
# pgp: file(1) magic for Pretty Good Privacy
|
||||||
# see http://lists.gnupg.org/pipermail/gnupg-devel/1999-September/016052.html
|
# see http://lists.gnupg.org/pipermail/gnupg-devel/1999-September/016052.html
|
||||||
#
|
#
|
||||||
@ -194,6 +194,23 @@
|
|||||||
>0 byte 0x0a SHA512
|
>0 byte 0x0a SHA512
|
||||||
>0 byte 0x0b SHA224
|
>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
|
# pgp symmetric encrypted data
|
||||||
|
|
||||||
0 byte 0x8c PGP symmetric key encrypted data -
|
0 byte 0x8c PGP symmetric key encrypted data -
|
||||||
@ -465,5 +482,41 @@
|
|||||||
>1 use pgpkey
|
>1 use pgpkey
|
||||||
0 byte 0x97 PGP Secret Sub-key -
|
0 byte 0x97 PGP Secret Sub-key -
|
||||||
>1 use pgpkey
|
>1 use pgpkey
|
||||||
0 byte 0x9d PGP Secret Sub-key -
|
0 byte 0x9d
|
||||||
>1 use pgpkey
|
# 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
|
||||||
|
14
magic/Magdir/psl
Normal file
14
magic/Magdir/psl
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# $File: psl,v 1.2 2016/07/14 17:34:27 christos Exp $
|
||||||
|
# psl: file(1) magic for Public Suffix List representations
|
||||||
|
# From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
|
||||||
|
# URL: https://publicsuffix.org
|
||||||
|
# see also: http://thread.gmane.org/gmane.network.dns.libpsl.bugs/162/focus=166
|
||||||
|
|
||||||
|
0 search/512 \n\n//\ ===BEGIN\ ICANN\ DOMAINS===\n\n Public Suffix List data
|
||||||
|
|
||||||
|
0 string .DAFSA@PSL_
|
||||||
|
>15 string \n Public Suffix List data (optimized)
|
||||||
|
>>11 byte >0x2f
|
||||||
|
>>>11 byte <0x3a (Version %c)
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# $File: python,v 1.28 2015/09/16 22:19:54 christos Exp $
|
# $File: python,v 1.29 2016/07/27 09:42:16 rrt Exp $
|
||||||
# python: file(1) magic for python
|
# python: file(1) magic for python
|
||||||
#
|
#
|
||||||
# Outlook puts """ too for urgent messages
|
# Outlook puts """ too for urgent messages
|
||||||
@ -9,7 +9,7 @@
|
|||||||
0 string/t """ Python script text executable
|
0 string/t """ Python script text executable
|
||||||
# MAGIC as specified in Python/import.c (1.5 to 2.7a0 and 3.1a0, assuming
|
# MAGIC as specified in Python/import.c (1.5 to 2.7a0 and 3.1a0, assuming
|
||||||
# that Py_UnicodeFlag is off for Python 2)
|
# that Py_UnicodeFlag is off for Python 2)
|
||||||
# 20121 ( YEAR - 1995 ) + MONTH + DAY (little endian followed by "\r\n"
|
# two bytes of magic followed by "\r\n" in little endian order
|
||||||
0 belong 0x994e0d0a python 1.5/1.6 byte-compiled
|
0 belong 0x994e0d0a python 1.5/1.6 byte-compiled
|
||||||
0 belong 0x87c60d0a python 2.0 byte-compiled
|
0 belong 0x87c60d0a python 2.0 byte-compiled
|
||||||
0 belong 0x2aeb0d0a python 2.1 byte-compiled
|
0 belong 0x2aeb0d0a python 2.1 byte-compiled
|
||||||
@ -24,6 +24,7 @@
|
|||||||
0 belong 0x6c0c0d0a python 3.2 byte-compiled
|
0 belong 0x6c0c0d0a python 3.2 byte-compiled
|
||||||
0 belong 0x9e0c0d0a python 3.3 byte-compiled
|
0 belong 0x9e0c0d0a python 3.3 byte-compiled
|
||||||
0 belong 0xee0c0d0a python 3.4 byte-compiled
|
0 belong 0xee0c0d0a python 3.4 byte-compiled
|
||||||
|
0 belong 0x160d0d0a python 3.5 byte-compiled
|
||||||
|
|
||||||
0 search/1/w #!\ /usr/bin/python Python script text executable
|
0 search/1/w #!\ /usr/bin/python Python script text executable
|
||||||
!:strength + 15
|
!:strength + 15
|
||||||
|
@ -1,18 +1,22 @@
|
|||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# $File: ruby,v 1.5 2010/07/21 16:47:17 christos Exp $
|
# $File: ruby,v 1.6 2016/07/27 09:46:29 rrt Exp $
|
||||||
# ruby: file(1) magic for Ruby scripting language
|
# ruby: file(1) magic for Ruby scripting language
|
||||||
# URL: http://www.ruby-lang.org/
|
# URL: http://www.ruby-lang.org/
|
||||||
# From: Reuben Thomas <rrt@sc3d.org>
|
# From: Reuben Thomas <rrt@sc3d.org>
|
||||||
|
|
||||||
# Ruby scripts
|
# Ruby scripts
|
||||||
0 search/1/w #!\ /usr/bin/ruby Ruby script text executable
|
0 search/1/w #!\ /usr/bin/ruby Ruby script text executable
|
||||||
|
!:strength + 15
|
||||||
!:mime text/x-ruby
|
!:mime text/x-ruby
|
||||||
0 search/1/w #!\ /usr/local/bin/ruby Ruby script text executable
|
0 search/1/w #!\ /usr/local/bin/ruby Ruby script text executable
|
||||||
|
!:strength + 15
|
||||||
!:mime text/x-ruby
|
!:mime text/x-ruby
|
||||||
0 search/1 #!/usr/bin/env\ ruby Ruby script text executable
|
0 search/1 #!/usr/bin/env\ ruby Ruby script text executable
|
||||||
|
!:strength + 15
|
||||||
!:mime text/x-ruby
|
!:mime text/x-ruby
|
||||||
0 search/1 #!\ /usr/bin/env\ ruby Ruby script text executable
|
0 search/1 #!\ /usr/bin/env\ ruby Ruby script text executable
|
||||||
|
!:strength + 15
|
||||||
!:mime text/x-ruby
|
!:mime text/x-ruby
|
||||||
|
|
||||||
# What looks like ruby, but does not have a shebang
|
# What looks like ruby, but does not have a shebang
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#------------------------------------------------------------------------------ # $File: sgml,v 1.33 2015/11/29 22:14:49 christos Exp $
|
#------------------------------------------------------------------------------ # $File: sgml,v 1.34 2016/09/11 13:56:42 christos Exp $
|
||||||
# Type: SVG Vectorial Graphics
|
# Type: SVG Vectorial Graphics
|
||||||
# From: Noel Torres <tecnico@ejerciciosresueltos.com>
|
# From: Noel Torres <tecnico@ejerciciosresueltos.com>
|
||||||
0 string \<?xml\ version="
|
0 string \<?xml\ version="
|
||||||
@ -7,6 +7,8 @@
|
|||||||
!:mime image/svg+xml
|
!:mime image/svg+xml
|
||||||
>>19 search/4096 \<gnc-v2 GnuCash file
|
>>19 search/4096 \<gnc-v2 GnuCash file
|
||||||
!:mime application/x-gnucash
|
!:mime application/x-gnucash
|
||||||
|
0 string \<svg SVG Scalable Vector Graphics image
|
||||||
|
!:mime image/svg
|
||||||
|
|
||||||
# Sitemap file
|
# Sitemap file
|
||||||
0 string/t \<?xml\ version="
|
0 string/t \<?xml\ version="
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# $File: sql,v 1.18 2015/12/04 20:38:43 christos Exp $
|
# $File: sql,v 1.20 2016/07/05 19:49:59 christos Exp $
|
||||||
# sql: file(1) magic for SQL files
|
# sql: file(1) magic for SQL files
|
||||||
#
|
#
|
||||||
# From: "Marty Leisner" <mleisner@eng.mc.xerox.com>
|
# From: "Marty Leisner" <mleisner@eng.mc.xerox.com>
|
||||||
@ -10,25 +10,67 @@
|
|||||||
#
|
#
|
||||||
0 beshort 0xfe01 MySQL table definition file
|
0 beshort 0xfe01 MySQL table definition file
|
||||||
>2 byte x Version %d
|
>2 byte x Version %d
|
||||||
0 belong&0xffffff00 0xfefe0700 MySQL MyISAM index file
|
>3 byte 0 \b, type UNKNOWN
|
||||||
>3 byte x Version %d
|
>3 byte 1 \b, type DIAM_ISAM
|
||||||
0 belong&0xffffff00 0xfefe0800 MySQL MyISAM compressed data file
|
>3 byte 2 \b, type HASH
|
||||||
>3 byte x Version %d
|
>3 byte 3 \b, type MISAM
|
||||||
0 belong&0xffffff00 0xfefe0900 MySQL Maria index file
|
>3 byte 4 \b, type PISAM
|
||||||
>3 byte x Version %d
|
>3 byte 5 \b, type RMS_ISAM
|
||||||
0 belong&0xffffff00 0xfefe0A00 MySQL Maria compressed data file
|
>3 byte 6 \b, type HEAP
|
||||||
>3 byte x Version %d
|
>3 byte 7 \b, type ISAM
|
||||||
|
>3 byte 8 \b, type MRG_ISAM
|
||||||
|
>3 byte 9 \b, type MYISAM
|
||||||
|
>3 byte 10 \b, type MRG_MYISAM
|
||||||
|
>3 byte 11 \b, type BERKELEY_DB
|
||||||
|
>3 byte 12 \b, type INNODB
|
||||||
|
>3 byte 13 \b, type GEMINI
|
||||||
|
>3 byte 14 \b, type NDBCLUSTER
|
||||||
|
>3 byte 15 \b, type EXAMPLE_DB
|
||||||
|
>3 byte 16 \b, type CSV_DB
|
||||||
|
>3 byte 17 \b, type FEDERATED_DB
|
||||||
|
>3 byte 18 \b, type BLACKHOLE_DB
|
||||||
|
>3 byte 19 \b, type PARTITION_DB
|
||||||
|
>3 byte 20 \b, type BINLOG
|
||||||
|
>3 byte 21 \b, type SOLID
|
||||||
|
>3 byte 22 \b, type PBXT
|
||||||
|
>3 byte 23 \b, type TABLE_FUNCTION
|
||||||
|
>3 byte 24 \b, type MEMCACHE
|
||||||
|
>3 byte 25 \b, type FALCON
|
||||||
|
>3 byte 26 \b, type MARIA
|
||||||
|
>3 byte 27 \b, type PERFORMANCE_SCHEMA
|
||||||
|
>3 byte 127 \b, type DEFAULT
|
||||||
|
>0x0033 ulong x \b, MySQL version %d
|
||||||
0 belong&0xffffff00 0xfefe0500 MySQL ISAM index file
|
0 belong&0xffffff00 0xfefe0500 MySQL ISAM index file
|
||||||
>3 byte x Version %d
|
>3 byte x Version %d
|
||||||
0 belong&0xffffff00 0xfefe0600 MySQL ISAM compressed data file
|
0 belong&0xffffff00 0xfefe0600 MySQL ISAM compressed data file
|
||||||
>3 byte x Version %d
|
>3 byte x Version %d
|
||||||
0 string \376bin MySQL replication log
|
0 belong&0xffffff00 0xfefe0700 MySQL MyISAM index file
|
||||||
0 belong&0xffffff00 0xfefe0b00
|
>3 byte x Version %d
|
||||||
>4 string MARIALOG MySQL Maria transaction log file
|
>14 beshort x \b, %d key parts
|
||||||
>>3 byte x Version %d
|
>16 beshort x \b, %d unique key parts
|
||||||
|
>18 byte x \b, %d keys
|
||||||
|
>28 bequad x \b, %lld records
|
||||||
|
>36 bequad x \b, %lld deleted records
|
||||||
|
0 belong&0xffffff00 0xfefe0800 MySQL MyISAM compressed data file
|
||||||
|
>3 byte x Version %d
|
||||||
|
0 belong&0xffffff00 0xfefe0900 MySQL Maria index file
|
||||||
|
>3 byte x Version %d
|
||||||
|
0 belong&0xffffff00 0xfefe0a00 MySQL Maria compressed data file
|
||||||
|
>3 byte x Version %d
|
||||||
0 belong&0xffffff00 0xfefe0c00
|
0 belong&0xffffff00 0xfefe0c00
|
||||||
>4 string MACF MySQL Maria control file
|
>4 string MACF MySQL Maria control file
|
||||||
>>3 byte x Version %d
|
>>3 byte x Version %d
|
||||||
|
0 string \376bin MySQL replication log,
|
||||||
|
>9 long x server id %d
|
||||||
|
>8 byte 1
|
||||||
|
>>13 long 69 \b, MySQL V3.2.3
|
||||||
|
>>>19 string x \b, server version %s
|
||||||
|
>>13 long 75 \b, MySQL V4.0.2-V4.1
|
||||||
|
>>>25 string x \b, server version %s
|
||||||
|
>8 byte 15 MySQL V5+,
|
||||||
|
>>25 string x server version %s
|
||||||
|
>4 string MARIALOG MySQL Maria transaction log file
|
||||||
|
>>3 byte x Version %d
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# iRiver H Series database file
|
# iRiver H Series database file
|
||||||
@ -94,3 +136,6 @@
|
|||||||
>126 string SQLite\ format\ 3
|
>126 string SQLite\ format\ 3
|
||||||
#!:mime application/x-panasonic-sqlite3
|
#!:mime application/x-panasonic-sqlite3
|
||||||
>>&-15 indirect x \b; contains
|
>>&-15 indirect x \b; contains
|
||||||
|
|
||||||
|
# H2 Database from http://www.h2database.com/
|
||||||
|
0 string --\ H2\ 0.5/B\ --\ \n H2 Database file
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# $File: Makefile.am,v 1.116 2016/06/13 19:09:31 christos Exp $
|
# $File: Makefile.am,v 1.120 2016/10/17 19:52:29 christos Exp $
|
||||||
#
|
#
|
||||||
MAGIC_FRAGMENT_BASE = Magdir
|
MAGIC_FRAGMENT_BASE = Magdir
|
||||||
MAGIC_DIR = $(top_srcdir)/magic
|
MAGIC_DIR = $(top_srcdir)/magic
|
||||||
@ -13,6 +13,7 @@ $(MAGIC_DIR)/Localstuff \
|
|||||||
$(MAGIC_FRAGMENT_DIR)/acorn \
|
$(MAGIC_FRAGMENT_DIR)/acorn \
|
||||||
$(MAGIC_FRAGMENT_DIR)/adi \
|
$(MAGIC_FRAGMENT_DIR)/adi \
|
||||||
$(MAGIC_FRAGMENT_DIR)/adventure \
|
$(MAGIC_FRAGMENT_DIR)/adventure \
|
||||||
|
$(MAGIC_FRAGMENT_DIR)/algol68 \
|
||||||
$(MAGIC_FRAGMENT_DIR)/allegro \
|
$(MAGIC_FRAGMENT_DIR)/allegro \
|
||||||
$(MAGIC_FRAGMENT_DIR)/alliant \
|
$(MAGIC_FRAGMENT_DIR)/alliant \
|
||||||
$(MAGIC_FRAGMENT_DIR)/amanda \
|
$(MAGIC_FRAGMENT_DIR)/amanda \
|
||||||
@ -22,7 +23,9 @@ $(MAGIC_FRAGMENT_DIR)/animation \
|
|||||||
$(MAGIC_FRAGMENT_DIR)/aout \
|
$(MAGIC_FRAGMENT_DIR)/aout \
|
||||||
$(MAGIC_FRAGMENT_DIR)/apl \
|
$(MAGIC_FRAGMENT_DIR)/apl \
|
||||||
$(MAGIC_FRAGMENT_DIR)/apple \
|
$(MAGIC_FRAGMENT_DIR)/apple \
|
||||||
|
$(MAGIC_FRAGMENT_DIR)/application \
|
||||||
$(MAGIC_FRAGMENT_DIR)/applix \
|
$(MAGIC_FRAGMENT_DIR)/applix \
|
||||||
|
$(MAGIC_FRAGMENT_DIR)/apt \
|
||||||
$(MAGIC_FRAGMENT_DIR)/archive \
|
$(MAGIC_FRAGMENT_DIR)/archive \
|
||||||
$(MAGIC_FRAGMENT_DIR)/assembler \
|
$(MAGIC_FRAGMENT_DIR)/assembler \
|
||||||
$(MAGIC_FRAGMENT_DIR)/asterix \
|
$(MAGIC_FRAGMENT_DIR)/asterix \
|
||||||
@ -207,6 +210,7 @@ $(MAGIC_FRAGMENT_DIR)/polyml \
|
|||||||
$(MAGIC_FRAGMENT_DIR)/printer \
|
$(MAGIC_FRAGMENT_DIR)/printer \
|
||||||
$(MAGIC_FRAGMENT_DIR)/project \
|
$(MAGIC_FRAGMENT_DIR)/project \
|
||||||
$(MAGIC_FRAGMENT_DIR)/psdbms \
|
$(MAGIC_FRAGMENT_DIR)/psdbms \
|
||||||
|
$(MAGIC_FRAGMENT_DIR)/psl \
|
||||||
$(MAGIC_FRAGMENT_DIR)/pulsar \
|
$(MAGIC_FRAGMENT_DIR)/pulsar \
|
||||||
$(MAGIC_FRAGMENT_DIR)/pwsafe \
|
$(MAGIC_FRAGMENT_DIR)/pwsafe \
|
||||||
$(MAGIC_FRAGMENT_DIR)/pyramid \
|
$(MAGIC_FRAGMENT_DIR)/pyramid \
|
||||||
|
@ -273,7 +273,7 @@ top_builddir = @top_builddir@
|
|||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
|
|
||||||
#
|
#
|
||||||
# $File: Makefile.am,v 1.116 2016/06/13 19:09:31 christos Exp $
|
# $File: Makefile.am,v 1.120 2016/10/17 19:52:29 christos Exp $
|
||||||
#
|
#
|
||||||
MAGIC_FRAGMENT_BASE = Magdir
|
MAGIC_FRAGMENT_BASE = Magdir
|
||||||
MAGIC_DIR = $(top_srcdir)/magic
|
MAGIC_DIR = $(top_srcdir)/magic
|
||||||
@ -285,6 +285,7 @@ $(MAGIC_DIR)/Localstuff \
|
|||||||
$(MAGIC_FRAGMENT_DIR)/acorn \
|
$(MAGIC_FRAGMENT_DIR)/acorn \
|
||||||
$(MAGIC_FRAGMENT_DIR)/adi \
|
$(MAGIC_FRAGMENT_DIR)/adi \
|
||||||
$(MAGIC_FRAGMENT_DIR)/adventure \
|
$(MAGIC_FRAGMENT_DIR)/adventure \
|
||||||
|
$(MAGIC_FRAGMENT_DIR)/algol68 \
|
||||||
$(MAGIC_FRAGMENT_DIR)/allegro \
|
$(MAGIC_FRAGMENT_DIR)/allegro \
|
||||||
$(MAGIC_FRAGMENT_DIR)/alliant \
|
$(MAGIC_FRAGMENT_DIR)/alliant \
|
||||||
$(MAGIC_FRAGMENT_DIR)/amanda \
|
$(MAGIC_FRAGMENT_DIR)/amanda \
|
||||||
@ -294,7 +295,9 @@ $(MAGIC_FRAGMENT_DIR)/animation \
|
|||||||
$(MAGIC_FRAGMENT_DIR)/aout \
|
$(MAGIC_FRAGMENT_DIR)/aout \
|
||||||
$(MAGIC_FRAGMENT_DIR)/apl \
|
$(MAGIC_FRAGMENT_DIR)/apl \
|
||||||
$(MAGIC_FRAGMENT_DIR)/apple \
|
$(MAGIC_FRAGMENT_DIR)/apple \
|
||||||
|
$(MAGIC_FRAGMENT_DIR)/application \
|
||||||
$(MAGIC_FRAGMENT_DIR)/applix \
|
$(MAGIC_FRAGMENT_DIR)/applix \
|
||||||
|
$(MAGIC_FRAGMENT_DIR)/apt \
|
||||||
$(MAGIC_FRAGMENT_DIR)/archive \
|
$(MAGIC_FRAGMENT_DIR)/archive \
|
||||||
$(MAGIC_FRAGMENT_DIR)/assembler \
|
$(MAGIC_FRAGMENT_DIR)/assembler \
|
||||||
$(MAGIC_FRAGMENT_DIR)/asterix \
|
$(MAGIC_FRAGMENT_DIR)/asterix \
|
||||||
@ -479,6 +482,7 @@ $(MAGIC_FRAGMENT_DIR)/polyml \
|
|||||||
$(MAGIC_FRAGMENT_DIR)/printer \
|
$(MAGIC_FRAGMENT_DIR)/printer \
|
||||||
$(MAGIC_FRAGMENT_DIR)/project \
|
$(MAGIC_FRAGMENT_DIR)/project \
|
||||||
$(MAGIC_FRAGMENT_DIR)/psdbms \
|
$(MAGIC_FRAGMENT_DIR)/psdbms \
|
||||||
|
$(MAGIC_FRAGMENT_DIR)/psl \
|
||||||
$(MAGIC_FRAGMENT_DIR)/pulsar \
|
$(MAGIC_FRAGMENT_DIR)/pulsar \
|
||||||
$(MAGIC_FRAGMENT_DIR)/pwsafe \
|
$(MAGIC_FRAGMENT_DIR)/pwsafe \
|
||||||
$(MAGIC_FRAGMENT_DIR)/pyramid \
|
$(MAGIC_FRAGMENT_DIR)/pyramid \
|
||||||
|
@ -134,7 +134,7 @@ class Magic(object):
|
|||||||
if isinstance(r, str):
|
if isinstance(r, str):
|
||||||
return r
|
return r
|
||||||
else:
|
else:
|
||||||
return str(r).encode('utf-8')
|
return str(r, 'utf-8')
|
||||||
|
|
||||||
def descriptor(self, fd):
|
def descriptor(self, fd):
|
||||||
"""
|
"""
|
||||||
@ -152,7 +152,7 @@ class Magic(object):
|
|||||||
if isinstance(r, str):
|
if isinstance(r, str):
|
||||||
return r
|
return r
|
||||||
else:
|
else:
|
||||||
return str(r).encode('utf-8')
|
return str(r, 'utf-8')
|
||||||
|
|
||||||
def error(self):
|
def error(self):
|
||||||
"""
|
"""
|
||||||
@ -163,7 +163,7 @@ class Magic(object):
|
|||||||
if isinstance(e, str):
|
if isinstance(e, str):
|
||||||
return e
|
return e
|
||||||
else:
|
else:
|
||||||
return str(e).encode('utf-8')
|
return str(e, 'utf-8')
|
||||||
|
|
||||||
def setflags(self, flags):
|
def setflags(self, flags):
|
||||||
"""
|
"""
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
#include "file.h"
|
#include "file.h"
|
||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
FILE_RCSID("@(#)$File: apprentice.c,v 1.249 2016/05/17 21:43:07 christos Exp $")
|
FILE_RCSID("@(#)$File: apprentice.c,v 1.255 2016/10/24 18:02:17 christos Exp $")
|
||||||
#endif /* lint */
|
#endif /* lint */
|
||||||
|
|
||||||
#include "magic.h"
|
#include "magic.h"
|
||||||
@ -408,11 +408,11 @@ add_mlist(struct mlist *mlp, struct magic_map *map, size_t idx)
|
|||||||
{
|
{
|
||||||
struct mlist *ml;
|
struct mlist *ml;
|
||||||
|
|
||||||
mlp->map = idx == 0 ? map : NULL;
|
mlp->map = NULL;
|
||||||
if ((ml = CAST(struct mlist *, malloc(sizeof(*ml)))) == NULL)
|
if ((ml = CAST(struct mlist *, malloc(sizeof(*ml)))) == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
ml->map = NULL;
|
ml->map = idx == 0 ? map : NULL;
|
||||||
ml->magic = map->magic[idx];
|
ml->magic = map->magic[idx];
|
||||||
ml->nmagic = map->nmagic[idx];
|
ml->nmagic = map->nmagic[idx];
|
||||||
|
|
||||||
@ -451,6 +451,8 @@ apprentice_1(struct magic_set *ms, const char *fn, int action)
|
|||||||
|
|
||||||
#ifndef COMPILE_ONLY
|
#ifndef COMPILE_ONLY
|
||||||
map = apprentice_map(ms, fn);
|
map = apprentice_map(ms, fn);
|
||||||
|
if (map == (struct magic_map *)-1)
|
||||||
|
return -1;
|
||||||
if (map == NULL) {
|
if (map == NULL) {
|
||||||
if (ms->flags & MAGIC_CHECK)
|
if (ms->flags & MAGIC_CHECK)
|
||||||
file_magwarn(ms, "using regular magic file `%s'", fn);
|
file_magwarn(ms, "using regular magic file `%s'", fn);
|
||||||
@ -462,7 +464,7 @@ apprentice_1(struct magic_set *ms, const char *fn, int action)
|
|||||||
for (i = 0; i < MAGIC_SETS; i++) {
|
for (i = 0; i < MAGIC_SETS; i++) {
|
||||||
if (add_mlist(ms->mlist[i], map, i) == -1) {
|
if (add_mlist(ms->mlist[i], map, i) == -1) {
|
||||||
file_oomem(ms, sizeof(*ml));
|
file_oomem(ms, sizeof(*ml));
|
||||||
goto fail;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -476,12 +478,6 @@ apprentice_1(struct magic_set *ms, const char *fn, int action)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
fail:
|
|
||||||
for (i = 0; i < MAGIC_SETS; i++) {
|
|
||||||
mlist_free(ms->mlist[i]);
|
|
||||||
ms->mlist[i] = NULL;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
#else
|
#else
|
||||||
return 0;
|
return 0;
|
||||||
#endif /* COMPILE_ONLY */
|
#endif /* COMPILE_ONLY */
|
||||||
@ -554,7 +550,7 @@ apprentice_unmap(struct magic_map *map)
|
|||||||
case MAP_TYPE_MALLOC:
|
case MAP_TYPE_MALLOC:
|
||||||
for (i = 0; i < MAGIC_SETS; i++) {
|
for (i = 0; i < MAGIC_SETS; i++) {
|
||||||
if ((char *)map->magic[i] >= (char *)map->p &&
|
if ((char *)map->magic[i] >= (char *)map->p &&
|
||||||
(char *)map->magic[i] < (char *)map->p + map->len)
|
(char *)map->magic[i] <= (char *)map->p + map->len)
|
||||||
continue;
|
continue;
|
||||||
free(map->magic[i]);
|
free(map->magic[i]);
|
||||||
}
|
}
|
||||||
@ -594,7 +590,7 @@ mlist_free(struct mlist *mlist)
|
|||||||
ml = mlist->next;
|
ml = mlist->next;
|
||||||
for (ml = mlist->next; (next = ml->next) != NULL; ml = next) {
|
for (ml = mlist->next; (next = ml->next) != NULL; ml = next) {
|
||||||
if (ml->map)
|
if (ml->map)
|
||||||
apprentice_unmap(ml->map);
|
apprentice_unmap(CAST(struct magic_map *, ml->map));
|
||||||
free(ml);
|
free(ml);
|
||||||
if (ml == mlist)
|
if (ml == mlist)
|
||||||
break;
|
break;
|
||||||
@ -1879,10 +1875,13 @@ parse(struct magic_set *ms, struct magic_entry *me, const char *line,
|
|||||||
if (m->flag & INDIR) {
|
if (m->flag & INDIR) {
|
||||||
m->in_type = FILE_LONG;
|
m->in_type = FILE_LONG;
|
||||||
m->in_offset = 0;
|
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++;
|
l++;
|
||||||
switch (*l) {
|
switch (*l) {
|
||||||
case 'l':
|
case 'l':
|
||||||
@ -1934,7 +1933,6 @@ parse(struct magic_set *ms, struct magic_entry *me, const char *line,
|
|||||||
l++;
|
l++;
|
||||||
}
|
}
|
||||||
|
|
||||||
m->in_op = 0;
|
|
||||||
if (*l == '~') {
|
if (*l == '~') {
|
||||||
m->in_op |= FILE_OPINVERSE;
|
m->in_op |= FILE_OPINVERSE;
|
||||||
l++;
|
l++;
|
||||||
@ -2930,6 +2928,7 @@ apprentice_map(struct magic_set *ms, const char *fn)
|
|||||||
struct stat st;
|
struct stat st;
|
||||||
char *dbname = NULL;
|
char *dbname = NULL;
|
||||||
struct magic_map *map;
|
struct magic_map *map;
|
||||||
|
struct magic_map *rv = NULL;
|
||||||
|
|
||||||
fd = -1;
|
fd = -1;
|
||||||
if ((map = CAST(struct magic_map *, calloc(1, sizeof(*map)))) == NULL) {
|
if ((map = CAST(struct magic_map *, calloc(1, sizeof(*map)))) == NULL) {
|
||||||
@ -2978,8 +2977,10 @@ apprentice_map(struct magic_set *ms, const char *fn)
|
|||||||
(void)close(fd);
|
(void)close(fd);
|
||||||
fd = -1;
|
fd = -1;
|
||||||
|
|
||||||
if (check_buffer(ms, map, dbname) != 0)
|
if (check_buffer(ms, map, dbname) != 0) {
|
||||||
|
rv = (struct magic_map *)-1;
|
||||||
goto error;
|
goto error;
|
||||||
|
}
|
||||||
#ifdef QUICK
|
#ifdef QUICK
|
||||||
if (mprotect(map->p, (size_t)st.st_size, PROT_READ) == -1) {
|
if (mprotect(map->p, (size_t)st.st_size, PROT_READ) == -1) {
|
||||||
file_error(ms, errno, "cannot mprotect `%s'", dbname);
|
file_error(ms, errno, "cannot mprotect `%s'", dbname);
|
||||||
@ -2995,7 +2996,7 @@ error:
|
|||||||
(void)close(fd);
|
(void)close(fd);
|
||||||
apprentice_unmap(map);
|
apprentice_unmap(map);
|
||||||
free(dbname);
|
free(dbname);
|
||||||
return NULL;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int
|
private int
|
||||||
@ -3151,7 +3152,7 @@ mkdbname(struct magic_set *ms, const char *fn, int strip)
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* Compatibility with old code that looked in .mime */
|
/* Compatibility with old code that looked in .mime */
|
||||||
if (strstr(p, ".mime") != NULL)
|
if (strstr(fn, ".mime") != NULL)
|
||||||
ms->flags &= MAGIC_MIME_TYPE;
|
ms->flags &= MAGIC_MIME_TYPE;
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
#include "file.h"
|
#include "file.h"
|
||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
FILE_RCSID("@(#)$File: ascmagic.c,v 1.95 2016/05/03 16:10:37 christos Exp $")
|
FILE_RCSID("@(#)$File: ascmagic.c,v 1.97 2016/06/27 20:56:25 christos Exp $")
|
||||||
#endif /* lint */
|
#endif /* lint */
|
||||||
|
|
||||||
#include "magic.h"
|
#include "magic.h"
|
||||||
@ -144,8 +144,10 @@ file_ascmagic_with_encoding(struct magic_set *ms, const unsigned char *buf,
|
|||||||
(size_t)(utf8_end - utf8_buf), NULL, NULL,
|
(size_t)(utf8_end - utf8_buf), NULL, NULL,
|
||||||
TEXTTEST, text)) == 0)
|
TEXTTEST, text)) == 0)
|
||||||
rv = -1;
|
rv = -1;
|
||||||
if ((ms->flags & (MAGIC_APPLE|MAGIC_EXTENSION)))
|
if ((ms->flags & (MAGIC_APPLE|MAGIC_EXTENSION))) {
|
||||||
return rv == -1 ? 0 : 1;
|
rv = rv == -1 ? 0 : 1;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ((ms->flags & (MAGIC_APPLE|MAGIC_EXTENSION)))
|
if ((ms->flags & (MAGIC_APPLE|MAGIC_EXTENSION)))
|
||||||
return 0;
|
return 0;
|
||||||
|
32
src/cdf.c
32
src/cdf.c
@ -35,7 +35,7 @@
|
|||||||
#include "file.h"
|
#include "file.h"
|
||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
FILE_RCSID("@(#)$File: cdf.c,v 1.82 2016/06/01 22:25:25 christos Exp $")
|
FILE_RCSID("@(#)$File: cdf.c,v 1.85 2016/10/24 18:02:17 christos Exp $")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@ -266,7 +266,7 @@ cdf_unpack_dir(cdf_directory_t *d, char *buf)
|
|||||||
CDF_UNPACK(d->d_unused0);
|
CDF_UNPACK(d->d_unused0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
int
|
||||||
cdf_zero_stream(cdf_stream_t *scn)
|
cdf_zero_stream(cdf_stream_t *scn)
|
||||||
{
|
{
|
||||||
scn->sst_len = 0;
|
scn->sst_len = 0;
|
||||||
@ -731,22 +731,25 @@ cdf_read_short_stream(const cdf_info_t *info, const cdf_header_t *h,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
/* If the it is not there, just fake it; some docs don't have it */
|
/* 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;
|
goto out;
|
||||||
|
}
|
||||||
d = &dir->dir_tab[i];
|
d = &dir->dir_tab[i];
|
||||||
*root = d;
|
*root = d;
|
||||||
|
|
||||||
/* If the it is not there, just fake it; some docs don't have it */
|
/* 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;
|
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);
|
d->d_stream_first_sector, d->d_size, scn);
|
||||||
out:
|
out:
|
||||||
scn->sst_tab = NULL;
|
scn->sst_tab = NULL;
|
||||||
(void)cdf_zero_stream(scn);
|
(void)cdf_zero_stream(scn);
|
||||||
errno = EFTYPE;
|
return 0;
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -758,6 +761,15 @@ cdf_namecmp(const char *d, const uint16_t *s, size_t l)
|
|||||||
return 0;
|
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
|
int
|
||||||
cdf_read_summary_info(const cdf_info_t *info, const cdf_header_t *h,
|
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,
|
const cdf_sat_t *sat, const cdf_sat_t *ssat, const cdf_stream_t *sst,
|
||||||
@ -1098,7 +1110,7 @@ cdf_unpack_catalog(const cdf_header_t *h, const cdf_stream_t *sst,
|
|||||||
cep->ce_namlen = rlen;
|
cep->ce_namlen = rlen;
|
||||||
|
|
||||||
np = CAST(const uint16_t *, CAST(const void *, (b + 16)));
|
np = CAST(const uint16_t *, CAST(const void *, (b + 16)));
|
||||||
if (CAST(const char *, np + cep->ce_namlen) > eb) {
|
if (RCAST(const char *, np + cep->ce_namlen) > eb) {
|
||||||
cep->ce_namlen = 0;
|
cep->ce_namlen = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1275,7 +1287,7 @@ cdf_dump(const void *v, size_t len)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
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_ss;
|
size_t ss = sst->sst_ss;
|
||||||
cdf_dump(sst->sst_tab, ss * sst->sst_len);
|
cdf_dump(sst->sst_tab, ss * sst->sst_len);
|
||||||
@ -1331,7 +1343,7 @@ cdf_dump_dir(const cdf_info_t *info, const cdf_header_t *h,
|
|||||||
name, d->d_stream_first_sector, d->d_size);
|
name, d->d_stream_first_sector, d->d_size);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
cdf_dump_stream(h, &scn);
|
cdf_dump_stream(&scn);
|
||||||
free(scn.sst_tab);
|
free(scn.sst_tab);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -1507,7 +1519,7 @@ main(int argc, char *argv[])
|
|||||||
== -1)
|
== -1)
|
||||||
err(1, "Cannot read short stream");
|
err(1, "Cannot read short stream");
|
||||||
#ifdef CDF_DEBUG
|
#ifdef CDF_DEBUG
|
||||||
cdf_dump_stream(&h, &sst);
|
cdf_dump_stream(&sst);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CDF_DEBUG
|
#ifdef CDF_DEBUG
|
||||||
|
@ -316,6 +316,10 @@ int cdf_read_user_stream(const cdf_info_t *, const cdf_header_t *,
|
|||||||
const cdf_sat_t *, const cdf_sat_t *, const cdf_stream_t *,
|
const cdf_sat_t *, const cdf_sat_t *, const cdf_stream_t *,
|
||||||
const cdf_dir_t *, const char *, cdf_stream_t *);
|
const cdf_dir_t *, const char *, cdf_stream_t *);
|
||||||
int cdf_find_stream(const cdf_dir_t *, const char *, int);
|
int cdf_find_stream(const cdf_dir_t *, const char *, int);
|
||||||
|
int cdf_zero_stream(cdf_stream_t *);
|
||||||
|
int cdf_read_doc_summary_info(const cdf_info_t *, const cdf_header_t *,
|
||||||
|
const cdf_sat_t *, const cdf_sat_t *, const cdf_stream_t *,
|
||||||
|
const cdf_dir_t *, cdf_stream_t *);
|
||||||
int cdf_read_summary_info(const cdf_info_t *, const cdf_header_t *,
|
int cdf_read_summary_info(const cdf_info_t *, const cdf_header_t *,
|
||||||
const cdf_sat_t *, const cdf_sat_t *, const cdf_stream_t *,
|
const cdf_sat_t *, const cdf_sat_t *, const cdf_stream_t *,
|
||||||
const cdf_dir_t *, cdf_stream_t *);
|
const cdf_dir_t *, cdf_stream_t *);
|
||||||
@ -336,7 +340,7 @@ char *cdf_u16tos8(char *, size_t, const uint16_t *);
|
|||||||
void cdf_dump_header(const cdf_header_t *);
|
void cdf_dump_header(const cdf_header_t *);
|
||||||
void cdf_dump_sat(const char *, const cdf_sat_t *, size_t);
|
void cdf_dump_sat(const char *, const cdf_sat_t *, size_t);
|
||||||
void cdf_dump(const void *, size_t);
|
void cdf_dump(const void *, size_t);
|
||||||
void cdf_dump_stream(const cdf_header_t *, const cdf_stream_t *);
|
void cdf_dump_stream(const cdf_stream_t *);
|
||||||
void cdf_dump_dir(const cdf_info_t *, const cdf_header_t *, const cdf_sat_t *,
|
void cdf_dump_dir(const cdf_info_t *, const cdf_header_t *, const cdf_sat_t *,
|
||||||
const cdf_sat_t *, const cdf_stream_t *, const cdf_dir_t *);
|
const cdf_sat_t *, const cdf_stream_t *, const cdf_dir_t *);
|
||||||
void cdf_dump_property_info(const cdf_property_info_t *, size_t);
|
void cdf_dump_property_info(const cdf_property_info_t *, size_t);
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
#include "file.h"
|
#include "file.h"
|
||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
FILE_RCSID("@(#)$File: compress.c,v 1.97 2016/05/13 23:02:28 christos Exp $")
|
FILE_RCSID("@(#)$File: compress.c,v 1.100 2016/10/24 18:02:17 christos Exp $")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "magic.h"
|
#include "magic.h"
|
||||||
@ -132,6 +132,9 @@ static const char *lrzip_args[] = {
|
|||||||
static const char *lz4_args[] = {
|
static const char *lz4_args[] = {
|
||||||
"lz4", "-cd", NULL
|
"lz4", "-cd", NULL
|
||||||
};
|
};
|
||||||
|
static const char *zstd_args[] = {
|
||||||
|
"zstd", "-cd", NULL
|
||||||
|
};
|
||||||
|
|
||||||
private const struct {
|
private const struct {
|
||||||
const void *magic;
|
const void *magic;
|
||||||
@ -154,8 +157,9 @@ private const struct {
|
|||||||
{ "\3757zXZ\0", 6, xz_args }, /* XZ Utils */
|
{ "\3757zXZ\0", 6, xz_args }, /* XZ Utils */
|
||||||
{ "LRZI", 4, lrzip_args }, /* LRZIP */
|
{ "LRZI", 4, lrzip_args }, /* LRZIP */
|
||||||
{ "\004\"M\030",4, lz4_args }, /* LZ4 */
|
{ "\004\"M\030",4, lz4_args }, /* LZ4 */
|
||||||
|
{ "\x28\xB5\x2F\xFD", 4, zstd_args }, /* zstd */
|
||||||
#ifdef ZLIBSUPPORT
|
#ifdef ZLIBSUPPORT
|
||||||
{ zlibcmp, 0, zlib_args }, /* zlib */
|
{ RCAST(const void *, zlibcmp), 0, zlib_args }, /* zlib */
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -204,7 +208,7 @@ file_zmagic(struct magic_set *ms, int fd, const char *name,
|
|||||||
continue;
|
continue;
|
||||||
#ifdef ZLIBSUPPORT
|
#ifdef ZLIBSUPPORT
|
||||||
if (compr[i].maglen == 0)
|
if (compr[i].maglen == 0)
|
||||||
zm = (CAST(int (*)(const unsigned char *),
|
zm = (RCAST(int (*)(const unsigned char *),
|
||||||
CCAST(void *, compr[i].magic)))(buf);
|
CCAST(void *, compr[i].magic)))(buf);
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
@ -362,7 +366,7 @@ nocheck:
|
|||||||
return rn - n;
|
return rn - n;
|
||||||
default:
|
default:
|
||||||
n -= rv;
|
n -= rv;
|
||||||
buf = ((char *)buf) + rv;
|
buf = CAST(char *, CCAST(void *, buf)) + rv;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
while (n > 0);
|
while (n > 0);
|
||||||
@ -517,7 +521,7 @@ uncompresszlib(const unsigned char *old, unsigned char **newch,
|
|||||||
|
|
||||||
return OKDATA;
|
return OKDATA;
|
||||||
err:
|
err:
|
||||||
strlcpy((char *)*newch, z.msg, bytes_max);
|
strlcpy((char *)*newch, z.msg ? z.msg : zError(rc), bytes_max);
|
||||||
*n = strlen((char *)*newch);
|
*n = strlen((char *)*newch);
|
||||||
return ERRDATA;
|
return ERRDATA;
|
||||||
}
|
}
|
||||||
|
14
src/der.c
14
src/der.c
@ -35,13 +35,11 @@
|
|||||||
#include "file.h"
|
#include "file.h"
|
||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
FILE_RCSID("@(#)$File: der.c,v 1.7 2016/06/01 22:01:15 christos Exp $")
|
FILE_RCSID("@(#)$File: der.c,v 1.10 2016/10/24 18:02:17 christos Exp $")
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <sys/mman.h>
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
@ -53,6 +51,8 @@ FILE_RCSID("@(#)$File: der.c,v 1.7 2016/06/01 22:01:15 christos Exp $")
|
|||||||
#include "magic.h"
|
#include "magic.h"
|
||||||
#include "der.h"
|
#include "der.h"
|
||||||
#else
|
#else
|
||||||
|
#include <sys/mman.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
#include <err.h>
|
#include <err.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -181,6 +181,8 @@ getlength(const uint8_t *c, size_t *p, size_t l)
|
|||||||
|
|
||||||
for (i = 0; i < digits; i++)
|
for (i = 0; i < digits; i++)
|
||||||
len = (len << 8) | c[(*p)++];
|
len = (len << 8) | c[(*p)++];
|
||||||
|
if (*p + len >= l)
|
||||||
|
return DER_BAD;
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -198,7 +200,7 @@ der_tag(char *buf, size_t len, uint32_t tag)
|
|||||||
static int
|
static int
|
||||||
der_data(char *buf, size_t blen, uint32_t tag, const void *q, uint32_t len)
|
der_data(char *buf, size_t blen, uint32_t tag, const void *q, uint32_t len)
|
||||||
{
|
{
|
||||||
const uint8_t *d = q;
|
const uint8_t *d = CAST(const uint8_t *, q);
|
||||||
switch (tag) {
|
switch (tag) {
|
||||||
case DER_TAG_PRINTABLE_STRING:
|
case DER_TAG_PRINTABLE_STRING:
|
||||||
case DER_TAG_UTF8_STRING:
|
case DER_TAG_UTF8_STRING:
|
||||||
@ -220,7 +222,7 @@ der_data(char *buf, size_t blen, uint32_t tag, const void *q, uint32_t len)
|
|||||||
int32_t
|
int32_t
|
||||||
der_offs(struct magic_set *ms, struct magic *m, size_t nbytes)
|
der_offs(struct magic_set *ms, struct magic *m, size_t nbytes)
|
||||||
{
|
{
|
||||||
const uint8_t *b = CAST(const void *, ms->search.s);
|
const uint8_t *b = RCAST(const uint8_t *, ms->search.s);
|
||||||
size_t offs = 0, len = ms->search.s_len ? ms->search.s_len : nbytes;
|
size_t offs = 0, len = ms->search.s_len ? ms->search.s_len : nbytes;
|
||||||
|
|
||||||
if (gettag(b, &offs, len) == DER_BAD)
|
if (gettag(b, &offs, len) == DER_BAD)
|
||||||
@ -251,7 +253,7 @@ der_offs(struct magic_set *ms, struct magic *m, size_t nbytes)
|
|||||||
int
|
int
|
||||||
der_cmp(struct magic_set *ms, struct magic *m)
|
der_cmp(struct magic_set *ms, struct magic *m)
|
||||||
{
|
{
|
||||||
const uint8_t *b = CAST(const void *, ms->search.s);
|
const uint8_t *b = RCAST(const uint8_t *, ms->search.s);
|
||||||
const char *s = m->value.s;
|
const char *s = m->value.s;
|
||||||
size_t offs = 0, len = ms->search.s_len;
|
size_t offs = 0, len = ms->search.s_len;
|
||||||
uint32_t tag, tlen;
|
uint32_t tag, tlen;
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
#include "file.h"
|
#include "file.h"
|
||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
FILE_RCSID("@(#)$File: file.c,v 1.171 2016/05/17 15:52:45 christos Exp $")
|
FILE_RCSID("@(#)$File: file.c,v 1.172 2016/10/24 15:21:07 christos Exp $")
|
||||||
#endif /* lint */
|
#endif /* lint */
|
||||||
|
|
||||||
#include "magic.h"
|
#include "magic.h"
|
||||||
@ -431,6 +431,8 @@ private struct magic_set *
|
|||||||
load(const char *magicfile, int flags)
|
load(const char *magicfile, int flags)
|
||||||
{
|
{
|
||||||
struct magic_set *magic = magic_open(flags);
|
struct magic_set *magic = magic_open(flags);
|
||||||
|
const char *e;
|
||||||
|
|
||||||
if (magic == NULL) {
|
if (magic == NULL) {
|
||||||
(void)fprintf(stderr, "%s: %s\n", progname, strerror(errno));
|
(void)fprintf(stderr, "%s: %s\n", progname, strerror(errno));
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -441,6 +443,8 @@ load(const char *magicfile, int flags)
|
|||||||
magic_close(magic);
|
magic_close(magic);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
if ((e = magic_error(magic)) != NULL)
|
||||||
|
(void)fprintf(stderr, "%s: Warning: %s\n", progname, e);
|
||||||
return magic;
|
return magic;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
10
src/file.h
10
src/file.h
@ -27,7 +27,7 @@
|
|||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* file.h - definitions for file(1) program
|
* file.h - definitions for file(1) program
|
||||||
* @(#)$File: file.h,v 1.178 2016/03/31 17:51:12 christos Exp $
|
* @(#)$File: file.h,v 1.180 2016/07/20 11:27:08 christos Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __file_h__
|
#ifndef __file_h__
|
||||||
@ -134,11 +134,11 @@
|
|||||||
or directory */
|
or directory */
|
||||||
#define MAXDESC 64 /* max len of text description/MIME type */
|
#define MAXDESC 64 /* max len of text description/MIME type */
|
||||||
#define MAXMIME 80 /* max len of text 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 MAGICNO 0xF11E041C
|
||||||
#define VERSIONNO 13
|
#define VERSIONNO 14
|
||||||
#define FILE_MAGICSIZE 312
|
#define FILE_MAGICSIZE 344
|
||||||
|
|
||||||
#define FILE_LOAD 0
|
#define FILE_LOAD 0
|
||||||
#define FILE_CHECK 1
|
#define FILE_CHECK 1
|
||||||
@ -275,7 +275,7 @@ struct magic {
|
|||||||
#define FILE_OPS_MASK 0x07 /* mask for above ops */
|
#define FILE_OPS_MASK 0x07 /* mask for above ops */
|
||||||
#define FILE_UNUSED_1 0x08
|
#define FILE_UNUSED_1 0x08
|
||||||
#define FILE_UNUSED_2 0x10
|
#define FILE_UNUSED_2 0x10
|
||||||
#define FILE_UNUSED_3 0x20
|
#define FILE_OPSIGNED 0x20
|
||||||
#define FILE_OPINVERSE 0x40
|
#define FILE_OPINVERSE 0x40
|
||||||
#define FILE_OPINDIRECT 0x80
|
#define FILE_OPINDIRECT 0x80
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
#include "file.h"
|
#include "file.h"
|
||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
FILE_RCSID("@(#)$File: funcs.c,v 1.89 2016/03/21 15:56:53 christos Exp $")
|
FILE_RCSID("@(#)$File: funcs.c,v 1.90 2016/10/19 20:51:17 christos Exp $")
|
||||||
#endif /* lint */
|
#endif /* lint */
|
||||||
|
|
||||||
#include "magic.h"
|
#include "magic.h"
|
||||||
@ -250,7 +250,7 @@ file_buffer(struct magic_set *ms, int fd, const char *inname __attribute__ ((__u
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* try soft magic tests */
|
/* try soft magic tests */
|
||||||
if ((ms->flags & MAGIC_NO_CHECK_SOFT) == 0)
|
if ((ms->flags & MAGIC_NO_CHECK_SOFT) == 0) {
|
||||||
m = file_softmagic(ms, ubuf, nb, NULL, NULL, BINTEST,
|
m = file_softmagic(ms, ubuf, nb, NULL, NULL, BINTEST,
|
||||||
looks_text);
|
looks_text);
|
||||||
if ((ms->flags & MAGIC_DEBUG) != 0)
|
if ((ms->flags & MAGIC_DEBUG) != 0)
|
||||||
@ -277,6 +277,7 @@ file_buffer(struct magic_set *ms, int fd, const char *inname __attribute__ ((__u
|
|||||||
if (checkdone(ms, &rv))
|
if (checkdone(ms, &rv))
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* try text properties */
|
/* try text properties */
|
||||||
if ((ms->flags & MAGIC_NO_CHECK_TEXT) == 0) {
|
if ((ms->flags & MAGIC_NO_CHECK_TEXT) == 0) {
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
#include "file.h"
|
#include "file.h"
|
||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
FILE_RCSID("@(#)$File: magic.c,v 1.99 2016/05/03 16:09:38 christos Exp $")
|
FILE_RCSID("@(#)$File: magic.c,v 1.100 2016/07/18 11:43:05 christos Exp $")
|
||||||
#endif /* lint */
|
#endif /* lint */
|
||||||
|
|
||||||
#include "magic.h"
|
#include "magic.h"
|
||||||
@ -492,7 +492,7 @@ file_or_fd(struct magic_set *ms, const char *inname, int fd)
|
|||||||
if (r < PIPE_BUF) break;
|
if (r < PIPE_BUF) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nbytes == 0) {
|
if (nbytes == 0 && inname) {
|
||||||
/* We can not read it, but we were able to stat it. */
|
/* We can not read it, but we were able to stat it. */
|
||||||
if (unreadable_info(ms, sb.st_mode, inname) == -1)
|
if (unreadable_info(ms, sb.st_mode, inname) == -1)
|
||||||
goto done;
|
goto done;
|
||||||
|
187
src/readcdf.c
187
src/readcdf.c
@ -1,5 +1,5 @@
|
|||||||
/*-
|
/*-
|
||||||
* Copyright (c) 2008 Christos Zoulas
|
* Copyright (c) 2008, 2016 Christos Zoulas
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -26,7 +26,7 @@
|
|||||||
#include "file.h"
|
#include "file.h"
|
||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
FILE_RCSID("@(#)$File: readcdf.c,v 1.57 2016/05/03 16:08:49 christos Exp $")
|
FILE_RCSID("@(#)$File: readcdf.c,v 1.63 2016/10/18 22:25:42 christos Exp $")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@ -373,13 +373,61 @@ cdf_file_catalog_info(struct magic_set *ms, const cdf_info_t *info,
|
|||||||
dir, "Catalog", scn)) == -1)
|
dir, "Catalog", scn)) == -1)
|
||||||
return i;
|
return i;
|
||||||
#ifdef CDF_DEBUG
|
#ifdef CDF_DEBUG
|
||||||
cdf_dump_catalog(&h, scn);
|
cdf_dump_catalog(h, scn);
|
||||||
#endif
|
#endif
|
||||||
if ((i = cdf_file_catalog(ms, h, scn)) == -1)
|
if ((i = cdf_file_catalog(ms, h, scn)) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
return i;
|
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 {
|
private struct sinfo {
|
||||||
const char *name;
|
const char *name;
|
||||||
const char *mime;
|
const char *mime;
|
||||||
@ -388,10 +436,13 @@ private struct sinfo {
|
|||||||
} sectioninfo[] = {
|
} sectioninfo[] = {
|
||||||
{ "Encrypted", "encrypted",
|
{ "Encrypted", "encrypted",
|
||||||
{
|
{
|
||||||
"EncryptedPackage", NULL, NULL, NULL, NULL,
|
"EncryptedPackage", "EncryptedSummary",
|
||||||
|
NULL, NULL, NULL,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
CDF_DIR_TYPE_USER_STREAM, 0, 0, 0, 0,
|
CDF_DIR_TYPE_USER_STREAM,
|
||||||
|
CDF_DIR_TYPE_USER_STREAM,
|
||||||
|
0, 0, 0,
|
||||||
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -412,6 +463,46 @@ private struct sinfo {
|
|||||||
0, 0, 0, 0
|
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
|
private int
|
||||||
@ -423,22 +514,19 @@ cdf_file_dir_info(struct magic_set *ms, const cdf_dir_t *dir)
|
|||||||
const struct sinfo *si = §ioninfo[sd];
|
const struct sinfo *si = §ioninfo[sd];
|
||||||
for (j = 0; si->sections[j]; j++) {
|
for (j = 0; si->sections[j]; j++) {
|
||||||
if (cdf_find_stream(dir, si->sections[j], si->types[j])
|
if (cdf_find_stream(dir, si->sections[j], si->types[j])
|
||||||
<= 0) {
|
> 0)
|
||||||
#ifdef CDF_DEBUG
|
|
||||||
fprintf(stderr, "Can't read %s\n",
|
|
||||||
si->sections[j]);
|
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
|
#ifdef CDF_DEBUG
|
||||||
|
fprintf(stderr, "Can't read %s\n", si->sections[j]);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
if (si->sections[j] == NULL)
|
||||||
if (si->sections[j] != NULL)
|
|
||||||
continue;
|
continue;
|
||||||
if (NOTMIME(ms)) {
|
if (NOTMIME(ms)) {
|
||||||
if (file_printf(ms, "CDFV2 %s", si->name) == -1)
|
if (file_printf(ms, "CDFV2 %s", si->name) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
} else {
|
} else {
|
||||||
if (file_printf(ms, "application/CDFV2-%s",
|
if (file_printf(ms, "application/%s", si->mime) == -1)
|
||||||
si->mime) == -1)
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
@ -459,6 +547,7 @@ file_trycdf(struct magic_set *ms, int fd, const unsigned char *buf,
|
|||||||
const char *expn = "";
|
const char *expn = "";
|
||||||
const cdf_directory_t *root_storage;
|
const cdf_directory_t *root_storage;
|
||||||
|
|
||||||
|
scn.sst_tab = NULL;
|
||||||
info.i_fd = fd;
|
info.i_fd = fd;
|
||||||
info.i_buf = buf;
|
info.i_buf = buf;
|
||||||
info.i_len = nbytes;
|
info.i_len = nbytes;
|
||||||
@ -528,10 +617,7 @@ file_trycdf(struct magic_set *ms, int fd, const unsigned char *buf,
|
|||||||
i = 1;
|
i = 1;
|
||||||
goto out5;
|
goto out5;
|
||||||
} else {
|
} else {
|
||||||
free(scn.sst_tab);
|
cdf_zero_stream(&scn);
|
||||||
scn.sst_tab = NULL;
|
|
||||||
scn.sst_len = 0;
|
|
||||||
scn.sst_dirlen = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -539,56 +625,31 @@ file_trycdf(struct magic_set *ms, int fd, const unsigned char *buf,
|
|||||||
&scn)) == -1) {
|
&scn)) == -1) {
|
||||||
if (errno != ESRCH) {
|
if (errno != ESRCH) {
|
||||||
expn = "Cannot read summary info";
|
expn = "Cannot read summary info";
|
||||||
goto out4;
|
|
||||||
}
|
}
|
||||||
i = cdf_file_catalog_info(ms, &info, &h, &sat, &ssat, &sst,
|
} else {
|
||||||
&dir, &scn);
|
i = cdf_check_summary_info(ms, &info, &h,
|
||||||
if (i > 0)
|
&sat, &ssat, &sst, &dir, &scn, root_storage, &expn);
|
||||||
goto out4;
|
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 {
|
||||||
|
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);
|
i = cdf_file_dir_info(ms, &dir);
|
||||||
if (i < 0)
|
if (i < 0)
|
||||||
expn = "Cannot read section info";
|
expn = "Cannot read section 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 {
|
|
||||||
if (str == NULL)
|
|
||||||
str = "vnd.ms-office";
|
|
||||||
if (file_printf(ms, "application/%s", str) == -1)
|
|
||||||
return -1;
|
|
||||||
i = 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
out5:
|
out5:
|
||||||
free(scn.sst_tab);
|
cdf_zero_stream(&scn);
|
||||||
out4:
|
cdf_zero_stream(&sst);
|
||||||
free(sst.sst_tab);
|
|
||||||
out3:
|
out3:
|
||||||
free(dir.dir_tab);
|
free(dir.dir_tab);
|
||||||
out2:
|
out2:
|
||||||
@ -605,7 +666,7 @@ out0:
|
|||||||
if (file_printf(ms, ", %s", expn) == -1)
|
if (file_printf(ms, ", %s", expn) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
} else {
|
} else {
|
||||||
if (file_printf(ms, "application/CDFV2-unknown") == -1)
|
if (file_printf(ms, "application/CDFV2") == -1)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
i = 1;
|
i = 1;
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
#include "file.h"
|
#include "file.h"
|
||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
FILE_RCSID("@(#)$File: readelf.c,v 1.127 2015/11/18 12:29:29 christos Exp $")
|
FILE_RCSID("@(#)$File: readelf.c,v 1.128 2016/10/04 21:43:10 christos Exp $")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef BUILTIN_ELF
|
#ifdef BUILTIN_ELF
|
||||||
@ -509,12 +509,26 @@ do_bid_note(struct magic_set *ms, unsigned char *nbuf, uint32_t type,
|
|||||||
size_t noff, size_t doff, int *flags)
|
size_t noff, size_t doff, int *flags)
|
||||||
{
|
{
|
||||||
if (namesz == 4 && strcmp((char *)&nbuf[noff], "GNU") == 0 &&
|
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];
|
uint8_t desc[20];
|
||||||
|
const char *btype;
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
*flags |= FLAGS_DID_BUILD_ID;
|
*flags |= FLAGS_DID_BUILD_ID;
|
||||||
if (file_printf(ms, ", BuildID[%s]=", descsz == 16 ? "md5/uuid" :
|
switch (descsz) {
|
||||||
"sha1") == -1)
|
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;
|
return 1;
|
||||||
(void)memcpy(desc, &nbuf[doff], descsz);
|
(void)memcpy(desc, &nbuf[doff], descsz);
|
||||||
for (i = 0; i < descsz; i++)
|
for (i = 0; i < descsz; i++)
|
||||||
|
353
src/softmagic.c
353
src/softmagic.c
@ -32,7 +32,7 @@
|
|||||||
#include "file.h"
|
#include "file.h"
|
||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
FILE_RCSID("@(#)$File: softmagic.c,v 1.234 2016/06/13 12:02:06 christos Exp $")
|
FILE_RCSID("@(#)$File: softmagic.c,v 1.238 2016/10/24 18:02:17 christos Exp $")
|
||||||
#endif /* lint */
|
#endif /* lint */
|
||||||
|
|
||||||
#include "magic.h"
|
#include "magic.h"
|
||||||
@ -57,13 +57,13 @@ private int mcopy(struct magic_set *, union VALUETYPE *, int, int,
|
|||||||
const unsigned char *, uint32_t, size_t, struct magic *);
|
const unsigned char *, uint32_t, size_t, struct magic *);
|
||||||
private int mconvert(struct magic_set *, struct magic *, int);
|
private int mconvert(struct magic_set *, struct magic *, int);
|
||||||
private int print_sep(struct magic_set *, int);
|
private int print_sep(struct magic_set *, int);
|
||||||
private int handle_annotation(struct magic_set *, struct magic *);
|
private int handle_annotation(struct magic_set *, struct magic *, int);
|
||||||
private int cvt_8(union VALUETYPE *, const struct magic *);
|
private int cvt_8(union VALUETYPE *, const struct magic *);
|
||||||
private int cvt_16(union VALUETYPE *, const struct magic *);
|
private int cvt_16(union VALUETYPE *, const struct magic *);
|
||||||
private int cvt_32(union VALUETYPE *, const struct magic *);
|
private int cvt_32(union VALUETYPE *, const struct magic *);
|
||||||
private int cvt_64(union VALUETYPE *, const struct magic *);
|
private int cvt_64(union VALUETYPE *, const struct magic *);
|
||||||
|
|
||||||
#define OFFSET_OOB(n, o, i) ((n) < (o) || (i) > ((n) - (o)))
|
#define OFFSET_OOB(n, o, i) ((n) < (uint32_t)(o) || (i) > ((n) - (o)))
|
||||||
#define BE64(p) (((uint64_t)(p)->hq[0]<<56)|((uint64_t)(p)->hq[1]<<48)| \
|
#define BE64(p) (((uint64_t)(p)->hq[0]<<56)|((uint64_t)(p)->hq[1]<<48)| \
|
||||||
((uint64_t)(p)->hq[2]<<40)|((uint64_t)(p)->hq[3]<<32)| \
|
((uint64_t)(p)->hq[2]<<40)|((uint64_t)(p)->hq[3]<<32)| \
|
||||||
((uint64_t)(p)->hq[4]<<24)|((uint64_t)(p)->hq[5]<<16)| \
|
((uint64_t)(p)->hq[4]<<24)|((uint64_t)(p)->hq[5]<<16)| \
|
||||||
@ -80,6 +80,7 @@ private int cvt_64(union VALUETYPE *, const struct magic *);
|
|||||||
((uint32_t)(p)->hl[3]<<8)|((uint32_t)(p)->hl[2]))
|
((uint32_t)(p)->hl[3]<<8)|((uint32_t)(p)->hl[2]))
|
||||||
#define BE16(p) (((uint16_t)(p)->hs[0]<<8)|((uint16_t)(p)->hs[1]))
|
#define BE16(p) (((uint16_t)(p)->hs[0]<<8)|((uint16_t)(p)->hs[1]))
|
||||||
#define LE16(p) (((uint16_t)(p)->hs[1]<<8)|((uint16_t)(p)->hs[0]))
|
#define LE16(p) (((uint16_t)(p)->hs[1]<<8)|((uint16_t)(p)->hs[0]))
|
||||||
|
#define SEXT(s,v,p) ((s)?(intmax_t)(int##v##_t)(p):(intmax_t)(uint##v##_t)(p))
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* softmagic - lookup one file in parsed, in-memory copy of database
|
* softmagic - lookup one file in parsed, in-memory copy of database
|
||||||
@ -230,7 +231,7 @@ flush:
|
|||||||
goto flush;
|
goto flush;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((e = handle_annotation(ms, m)) != 0) {
|
if ((e = handle_annotation(ms, m, firstline)) != 0) {
|
||||||
*need_separator = 1;
|
*need_separator = 1;
|
||||||
*printed_something = 1;
|
*printed_something = 1;
|
||||||
*returnval = 1;
|
*returnval = 1;
|
||||||
@ -328,7 +329,7 @@ flush:
|
|||||||
} else
|
} else
|
||||||
ms->c.li[cont_level].got_match = 1;
|
ms->c.li[cont_level].got_match = 1;
|
||||||
|
|
||||||
if ((e = handle_annotation(ms, m)) != 0) {
|
if ((e = handle_annotation(ms, m, firstline)) != 0) {
|
||||||
*need_separator = 1;
|
*need_separator = 1;
|
||||||
*printed_something = 1;
|
*printed_something = 1;
|
||||||
*returnval = 1;
|
*returnval = 1;
|
||||||
@ -1226,7 +1227,7 @@ mcopy(struct magic_set *ms, union VALUETYPE *p, int type, int indir,
|
|||||||
memchr(c, '\r', CAST(size_t, (end - c))))));
|
memchr(c, '\r', CAST(size_t, (end - c))))));
|
||||||
lines--, b++) {
|
lines--, b++) {
|
||||||
last = b;
|
last = b;
|
||||||
if (b[0] == '\r' && b[1] == '\n')
|
if (b < end - 1 && b[0] == '\r' && b[1] == '\n')
|
||||||
b++;
|
b++;
|
||||||
}
|
}
|
||||||
if (lines)
|
if (lines)
|
||||||
@ -1294,6 +1295,45 @@ mcopy(struct magic_set *ms, union VALUETYPE *p, int type, int indir,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private uint32_t
|
||||||
|
do_ops(struct magic *m, intmax_t lhs, intmax_t off)
|
||||||
|
{
|
||||||
|
intmax_t offset;
|
||||||
|
if (off) {
|
||||||
|
switch (m->in_op & FILE_OPS_MASK) {
|
||||||
|
case FILE_OPAND:
|
||||||
|
offset = lhs & off;
|
||||||
|
break;
|
||||||
|
case FILE_OPOR:
|
||||||
|
offset = lhs | off;
|
||||||
|
break;
|
||||||
|
case FILE_OPXOR:
|
||||||
|
offset = lhs ^ off;
|
||||||
|
break;
|
||||||
|
case FILE_OPADD:
|
||||||
|
offset = lhs + off;
|
||||||
|
break;
|
||||||
|
case FILE_OPMINUS:
|
||||||
|
offset = lhs - off;
|
||||||
|
break;
|
||||||
|
case FILE_OPMULTIPLY:
|
||||||
|
offset = lhs * off;
|
||||||
|
break;
|
||||||
|
case FILE_OPDIVIDE:
|
||||||
|
offset = lhs / off;
|
||||||
|
break;
|
||||||
|
case FILE_OPMODULO:
|
||||||
|
offset = lhs % off;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
offset = lhs;
|
||||||
|
if (m->in_op & FILE_OPINVERSE)
|
||||||
|
offset = ~offset;
|
||||||
|
|
||||||
|
return (uint32_t)offset;
|
||||||
|
}
|
||||||
|
|
||||||
private int
|
private int
|
||||||
mget(struct magic_set *ms, const unsigned char *s, struct magic *m,
|
mget(struct magic_set *ms, const unsigned char *s, struct magic *m,
|
||||||
size_t nbytes, size_t o, unsigned int cont_level, int mode, int text,
|
size_t nbytes, size_t o, unsigned int cont_level, int mode, int text,
|
||||||
@ -1301,7 +1341,7 @@ mget(struct magic_set *ms, const unsigned char *s, struct magic *m,
|
|||||||
int *printed_something, int *need_separator, int *returnval)
|
int *printed_something, int *need_separator, int *returnval)
|
||||||
{
|
{
|
||||||
uint32_t offset = ms->offset;
|
uint32_t offset = ms->offset;
|
||||||
uint32_t lhs;
|
intmax_t lhs;
|
||||||
file_pushbuf_t *pb;
|
file_pushbuf_t *pb;
|
||||||
int rv, oneed_separator, in_type;
|
int rv, oneed_separator, in_type;
|
||||||
char *rbuf;
|
char *rbuf;
|
||||||
@ -1337,7 +1377,8 @@ mget(struct magic_set *ms, const unsigned char *s, struct magic *m,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (m->flag & INDIR) {
|
if (m->flag & INDIR) {
|
||||||
int off = m->in_offset;
|
intmax_t off = m->in_offset;
|
||||||
|
const int sgn = m->in_op & FILE_OPSIGNED;
|
||||||
if (m->in_op & FILE_OPINDIRECT) {
|
if (m->in_op & FILE_OPINDIRECT) {
|
||||||
const union VALUETYPE *q = CAST(const union VALUETYPE *,
|
const union VALUETYPE *q = CAST(const union VALUETYPE *,
|
||||||
((const void *)(s + offset + off)));
|
((const void *)(s + offset + off)));
|
||||||
@ -1345,178 +1386,55 @@ mget(struct magic_set *ms, const unsigned char *s, struct magic *m,
|
|||||||
return 0;
|
return 0;
|
||||||
switch (cvt_flip(m->in_type, flip)) {
|
switch (cvt_flip(m->in_type, flip)) {
|
||||||
case FILE_BYTE:
|
case FILE_BYTE:
|
||||||
off = q->b;
|
off = SEXT(sgn,8,q->b);
|
||||||
break;
|
break;
|
||||||
case FILE_SHORT:
|
case FILE_SHORT:
|
||||||
off = q->h;
|
off = SEXT(sgn,16,q->h);
|
||||||
break;
|
break;
|
||||||
case FILE_BESHORT:
|
case FILE_BESHORT:
|
||||||
off = (short)BE16(q);
|
off = SEXT(sgn,16,BE16(q));
|
||||||
break;
|
break;
|
||||||
case FILE_LESHORT:
|
case FILE_LESHORT:
|
||||||
off = (short)LE16(q);
|
off = SEXT(sgn,16,LE16(q));
|
||||||
break;
|
break;
|
||||||
case FILE_LONG:
|
case FILE_LONG:
|
||||||
off = q->l;
|
off = SEXT(sgn,32,q->l);
|
||||||
break;
|
break;
|
||||||
case FILE_BELONG:
|
case FILE_BELONG:
|
||||||
case FILE_BEID3:
|
case FILE_BEID3:
|
||||||
off = (int32_t)BE32(q);
|
off = SEXT(sgn,32,BE32(q));
|
||||||
break;
|
break;
|
||||||
case FILE_LEID3:
|
case FILE_LEID3:
|
||||||
case FILE_LELONG:
|
case FILE_LELONG:
|
||||||
off = (int32_t)LE32(q);
|
off = SEXT(sgn,32,LE32(q));
|
||||||
break;
|
break;
|
||||||
case FILE_MELONG:
|
case FILE_MELONG:
|
||||||
off = (int32_t)ME32(q);
|
off = SEXT(sgn,32,ME32(q));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ((ms->flags & MAGIC_DEBUG) != 0)
|
if ((ms->flags & MAGIC_DEBUG) != 0)
|
||||||
fprintf(stderr, "indirect offs=%u\n", off);
|
fprintf(stderr, "indirect offs=%jd\n", off);
|
||||||
}
|
}
|
||||||
switch (in_type = cvt_flip(m->in_type, flip)) {
|
switch (in_type = cvt_flip(m->in_type, flip)) {
|
||||||
case FILE_BYTE:
|
case FILE_BYTE:
|
||||||
if (OFFSET_OOB(nbytes, offset, 1))
|
if (OFFSET_OOB(nbytes, offset, 1))
|
||||||
return 0;
|
return 0;
|
||||||
if (off) {
|
offset = do_ops(m, SEXT(sgn,8,p->b), off);
|
||||||
switch (m->in_op & FILE_OPS_MASK) {
|
|
||||||
case FILE_OPAND:
|
|
||||||
offset = p->b & off;
|
|
||||||
break;
|
|
||||||
case FILE_OPOR:
|
|
||||||
offset = p->b | off;
|
|
||||||
break;
|
|
||||||
case FILE_OPXOR:
|
|
||||||
offset = p->b ^ off;
|
|
||||||
break;
|
|
||||||
case FILE_OPADD:
|
|
||||||
offset = p->b + off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMINUS:
|
|
||||||
offset = p->b - off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMULTIPLY:
|
|
||||||
offset = p->b * off;
|
|
||||||
break;
|
|
||||||
case FILE_OPDIVIDE:
|
|
||||||
offset = p->b / off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMODULO:
|
|
||||||
offset = p->b % off;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
offset = p->b;
|
|
||||||
if (m->in_op & FILE_OPINVERSE)
|
|
||||||
offset = ~offset;
|
|
||||||
break;
|
break;
|
||||||
case FILE_BESHORT:
|
case FILE_BESHORT:
|
||||||
if (OFFSET_OOB(nbytes, offset, 2))
|
if (OFFSET_OOB(nbytes, offset, 2))
|
||||||
return 0;
|
return 0;
|
||||||
lhs = (p->hs[0] << 8) | p->hs[1];
|
offset = do_ops(m, SEXT(sgn,16,BE16(p)), off);
|
||||||
if (off) {
|
|
||||||
switch (m->in_op & FILE_OPS_MASK) {
|
|
||||||
case FILE_OPAND:
|
|
||||||
offset = lhs & off;
|
|
||||||
break;
|
|
||||||
case FILE_OPOR:
|
|
||||||
offset = lhs | off;
|
|
||||||
break;
|
|
||||||
case FILE_OPXOR:
|
|
||||||
offset = lhs ^ off;
|
|
||||||
break;
|
|
||||||
case FILE_OPADD:
|
|
||||||
offset = lhs + off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMINUS:
|
|
||||||
offset = lhs - off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMULTIPLY:
|
|
||||||
offset = lhs * off;
|
|
||||||
break;
|
|
||||||
case FILE_OPDIVIDE:
|
|
||||||
offset = lhs / off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMODULO:
|
|
||||||
offset = lhs % off;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
offset = lhs;
|
|
||||||
if (m->in_op & FILE_OPINVERSE)
|
|
||||||
offset = ~offset;
|
|
||||||
break;
|
break;
|
||||||
case FILE_LESHORT:
|
case FILE_LESHORT:
|
||||||
if (OFFSET_OOB(nbytes, offset, 2))
|
if (OFFSET_OOB(nbytes, offset, 2))
|
||||||
return 0;
|
return 0;
|
||||||
lhs = (p->hs[1] << 8) | p->hs[0];
|
offset = do_ops(m, SEXT(sgn,16,LE16(p)), off);
|
||||||
if (off) {
|
|
||||||
switch (m->in_op & FILE_OPS_MASK) {
|
|
||||||
case FILE_OPAND:
|
|
||||||
offset = lhs & off;
|
|
||||||
break;
|
|
||||||
case FILE_OPOR:
|
|
||||||
offset = lhs | off;
|
|
||||||
break;
|
|
||||||
case FILE_OPXOR:
|
|
||||||
offset = lhs ^ off;
|
|
||||||
break;
|
|
||||||
case FILE_OPADD:
|
|
||||||
offset = lhs + off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMINUS:
|
|
||||||
offset = lhs - off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMULTIPLY:
|
|
||||||
offset = lhs * off;
|
|
||||||
break;
|
|
||||||
case FILE_OPDIVIDE:
|
|
||||||
offset = lhs / off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMODULO:
|
|
||||||
offset = lhs % off;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
offset = lhs;
|
|
||||||
if (m->in_op & FILE_OPINVERSE)
|
|
||||||
offset = ~offset;
|
|
||||||
break;
|
break;
|
||||||
case FILE_SHORT:
|
case FILE_SHORT:
|
||||||
if (OFFSET_OOB(nbytes, offset, 2))
|
if (OFFSET_OOB(nbytes, offset, 2))
|
||||||
return 0;
|
return 0;
|
||||||
if (off) {
|
offset = do_ops(m, SEXT(sgn,16,p->h), off);
|
||||||
switch (m->in_op & FILE_OPS_MASK) {
|
|
||||||
case FILE_OPAND:
|
|
||||||
offset = p->h & off;
|
|
||||||
break;
|
|
||||||
case FILE_OPOR:
|
|
||||||
offset = p->h | off;
|
|
||||||
break;
|
|
||||||
case FILE_OPXOR:
|
|
||||||
offset = p->h ^ off;
|
|
||||||
break;
|
|
||||||
case FILE_OPADD:
|
|
||||||
offset = p->h + off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMINUS:
|
|
||||||
offset = p->h - off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMULTIPLY:
|
|
||||||
offset = p->h * off;
|
|
||||||
break;
|
|
||||||
case FILE_OPDIVIDE:
|
|
||||||
offset = p->h / off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMODULO:
|
|
||||||
offset = p->h % off;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
offset = p->h;
|
|
||||||
if (m->in_op & FILE_OPINVERSE)
|
|
||||||
offset = ~offset;
|
|
||||||
break;
|
break;
|
||||||
case FILE_BELONG:
|
case FILE_BELONG:
|
||||||
case FILE_BEID3:
|
case FILE_BEID3:
|
||||||
@ -1524,38 +1442,8 @@ mget(struct magic_set *ms, const unsigned char *s, struct magic *m,
|
|||||||
return 0;
|
return 0;
|
||||||
lhs = BE32(p);
|
lhs = BE32(p);
|
||||||
if (in_type == FILE_BEID3)
|
if (in_type == FILE_BEID3)
|
||||||
lhs = cvt_id3(ms, lhs);
|
lhs = cvt_id3(ms, (uint32_t)lhs);
|
||||||
if (off) {
|
offset = do_ops(m, SEXT(sgn,32,lhs), off);
|
||||||
switch (m->in_op & FILE_OPS_MASK) {
|
|
||||||
case FILE_OPAND:
|
|
||||||
offset = lhs & off;
|
|
||||||
break;
|
|
||||||
case FILE_OPOR:
|
|
||||||
offset = lhs | off;
|
|
||||||
break;
|
|
||||||
case FILE_OPXOR:
|
|
||||||
offset = lhs ^ off;
|
|
||||||
break;
|
|
||||||
case FILE_OPADD:
|
|
||||||
offset = lhs + off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMINUS:
|
|
||||||
offset = lhs - off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMULTIPLY:
|
|
||||||
offset = lhs * off;
|
|
||||||
break;
|
|
||||||
case FILE_OPDIVIDE:
|
|
||||||
offset = lhs / off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMODULO:
|
|
||||||
offset = lhs % off;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
offset = lhs;
|
|
||||||
if (m->in_op & FILE_OPINVERSE)
|
|
||||||
offset = ~offset;
|
|
||||||
break;
|
break;
|
||||||
case FILE_LELONG:
|
case FILE_LELONG:
|
||||||
case FILE_LEID3:
|
case FILE_LEID3:
|
||||||
@ -1563,109 +1451,18 @@ mget(struct magic_set *ms, const unsigned char *s, struct magic *m,
|
|||||||
return 0;
|
return 0;
|
||||||
lhs = LE32(p);
|
lhs = LE32(p);
|
||||||
if (in_type == FILE_LEID3)
|
if (in_type == FILE_LEID3)
|
||||||
lhs = cvt_id3(ms, lhs);
|
lhs = cvt_id3(ms, (uint32_t)lhs);
|
||||||
if (off) {
|
offset = do_ops(m, SEXT(sgn,32,lhs), off);
|
||||||
switch (m->in_op & FILE_OPS_MASK) {
|
|
||||||
case FILE_OPAND:
|
|
||||||
offset = lhs & off;
|
|
||||||
break;
|
|
||||||
case FILE_OPOR:
|
|
||||||
offset = lhs | off;
|
|
||||||
break;
|
|
||||||
case FILE_OPXOR:
|
|
||||||
offset = lhs ^ off;
|
|
||||||
break;
|
|
||||||
case FILE_OPADD:
|
|
||||||
offset = lhs + off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMINUS:
|
|
||||||
offset = lhs - off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMULTIPLY:
|
|
||||||
offset = lhs * off;
|
|
||||||
break;
|
|
||||||
case FILE_OPDIVIDE:
|
|
||||||
offset = lhs / off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMODULO:
|
|
||||||
offset = lhs % off;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
offset = lhs;
|
|
||||||
if (m->in_op & FILE_OPINVERSE)
|
|
||||||
offset = ~offset;
|
|
||||||
break;
|
break;
|
||||||
case FILE_MELONG:
|
case FILE_MELONG:
|
||||||
if (OFFSET_OOB(nbytes, offset, 4))
|
if (OFFSET_OOB(nbytes, offset, 4))
|
||||||
return 0;
|
return 0;
|
||||||
lhs = ME32(p);
|
offset = do_ops(m, SEXT(sgn,32,ME32(p)), off);
|
||||||
if (off) {
|
|
||||||
switch (m->in_op & FILE_OPS_MASK) {
|
|
||||||
case FILE_OPAND:
|
|
||||||
offset = lhs & off;
|
|
||||||
break;
|
|
||||||
case FILE_OPOR:
|
|
||||||
offset = lhs | off;
|
|
||||||
break;
|
|
||||||
case FILE_OPXOR:
|
|
||||||
offset = lhs ^ off;
|
|
||||||
break;
|
|
||||||
case FILE_OPADD:
|
|
||||||
offset = lhs + off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMINUS:
|
|
||||||
offset = lhs - off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMULTIPLY:
|
|
||||||
offset = lhs * off;
|
|
||||||
break;
|
|
||||||
case FILE_OPDIVIDE:
|
|
||||||
offset = lhs / off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMODULO:
|
|
||||||
offset = lhs % off;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
offset = lhs;
|
|
||||||
if (m->in_op & FILE_OPINVERSE)
|
|
||||||
offset = ~offset;
|
|
||||||
break;
|
break;
|
||||||
case FILE_LONG:
|
case FILE_LONG:
|
||||||
if (OFFSET_OOB(nbytes, offset, 4))
|
if (OFFSET_OOB(nbytes, offset, 4))
|
||||||
return 0;
|
return 0;
|
||||||
if (off) {
|
offset = do_ops(m, SEXT(sgn,32,p->l), off);
|
||||||
switch (m->in_op & FILE_OPS_MASK) {
|
|
||||||
case FILE_OPAND:
|
|
||||||
offset = p->l & off;
|
|
||||||
break;
|
|
||||||
case FILE_OPOR:
|
|
||||||
offset = p->l | off;
|
|
||||||
break;
|
|
||||||
case FILE_OPXOR:
|
|
||||||
offset = p->l ^ off;
|
|
||||||
break;
|
|
||||||
case FILE_OPADD:
|
|
||||||
offset = p->l + off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMINUS:
|
|
||||||
offset = p->l - off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMULTIPLY:
|
|
||||||
offset = p->l * off;
|
|
||||||
break;
|
|
||||||
case FILE_OPDIVIDE:
|
|
||||||
offset = p->l / off;
|
|
||||||
break;
|
|
||||||
case FILE_OPMODULO:
|
|
||||||
offset = p->l % off;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
offset = p->l;
|
|
||||||
if (m->in_op & FILE_OPINVERSE)
|
|
||||||
offset = ~offset;
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -2078,7 +1875,7 @@ magiccheck(struct magic_set *ms, struct magic *m)
|
|||||||
size_t slen = ms->search.s_len;
|
size_t slen = ms->search.s_len;
|
||||||
char *copy;
|
char *copy;
|
||||||
if (slen != 0) {
|
if (slen != 0) {
|
||||||
copy = malloc(slen);
|
copy = CAST(char *, malloc(slen));
|
||||||
if (copy == NULL) {
|
if (copy == NULL) {
|
||||||
file_regfree(&rx);
|
file_regfree(&rx);
|
||||||
file_error(ms, errno,
|
file_error(ms, errno,
|
||||||
@ -2231,19 +2028,25 @@ magiccheck(struct magic_set *ms, struct magic *m)
|
|||||||
}
|
}
|
||||||
|
|
||||||
private int
|
private int
|
||||||
handle_annotation(struct magic_set *ms, struct magic *m)
|
handle_annotation(struct magic_set *ms, struct magic *m, int firstline)
|
||||||
{
|
{
|
||||||
if ((ms->flags & MAGIC_APPLE) && m->apple[0]) {
|
if ((ms->flags & MAGIC_APPLE) && m->apple[0]) {
|
||||||
|
if (!firstline && file_printf(ms, "\n- ") == -1)
|
||||||
|
return -1;
|
||||||
if (file_printf(ms, "%.8s", m->apple) == -1)
|
if (file_printf(ms, "%.8s", m->apple) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if ((ms->flags & MAGIC_EXTENSION) && m->ext[0]) {
|
if ((ms->flags & MAGIC_EXTENSION) && m->ext[0]) {
|
||||||
|
if (!firstline && file_printf(ms, "\n- ") == -1)
|
||||||
|
return -1;
|
||||||
if (file_printf(ms, "%s", m->ext) == -1)
|
if (file_printf(ms, "%s", m->ext) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if ((ms->flags & MAGIC_MIME_TYPE) && m->mimetype[0]) {
|
if ((ms->flags & MAGIC_MIME_TYPE) && m->mimetype[0]) {
|
||||||
|
if (!firstline && file_printf(ms, "\n- ") == -1)
|
||||||
|
return -1;
|
||||||
if (file_printf(ms, "%s", m->mimetype) == -1)
|
if (file_printf(ms, "%s", m->mimetype) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
return 1;
|
return 1;
|
||||||
@ -2254,8 +2057,8 @@ handle_annotation(struct magic_set *ms, struct magic *m)
|
|||||||
private int
|
private int
|
||||||
print_sep(struct magic_set *ms, int firstline)
|
print_sep(struct magic_set *ms, int firstline)
|
||||||
{
|
{
|
||||||
if (ms->flags & MAGIC_NODESC)
|
// if (ms->flags & MAGIC_NODESC)
|
||||||
return 0;
|
// return 0;
|
||||||
if (firstline)
|
if (firstline)
|
||||||
return 0;
|
return 0;
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user