MFV r302218: file 5.28.
Relnotes: yes MFC after: 2 weeks Approved by: re (gjb)
This commit is contained in:
commit
282e23f07b
@ -1,3 +1,15 @@
|
||||
2016-06-13 19:40 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* release 5.28
|
||||
* fix leak on allocation failure
|
||||
|
||||
2016-06-01 1:20 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* PR/555: Avoid overflow for offset > nbytes
|
||||
* PR/550: Segv on DER parsing:
|
||||
- use the correct variable for length
|
||||
- set offset to 0 on failure.
|
||||
|
||||
2016-05-13 12:00 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* release 5.27
|
||||
|
@ -328,6 +328,9 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Enable zlib compression support */
|
||||
#undef ZLIBSUPPORT
|
||||
|
||||
/* Enable large inode numbers on Mac OS X 10.5. */
|
||||
#ifndef _DARWIN_USE_64_BIT_INODE
|
||||
# define _DARWIN_USE_64_BIT_INODE 1
|
||||
|
50
contrib/file/configure
vendored
50
contrib/file/configure
vendored
@ -1,6 +1,6 @@
|
||||
#! /bin/sh
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.69 for file 5.27.
|
||||
# Generated by GNU Autoconf 2.69 for file 5.28.
|
||||
#
|
||||
# Report bugs to <christos@astron.com>.
|
||||
#
|
||||
@ -590,8 +590,8 @@ MAKEFLAGS=
|
||||
# Identity of this package.
|
||||
PACKAGE_NAME='file'
|
||||
PACKAGE_TARNAME='file'
|
||||
PACKAGE_VERSION='5.27'
|
||||
PACKAGE_STRING='file 5.27'
|
||||
PACKAGE_VERSION='5.28'
|
||||
PACKAGE_STRING='file 5.28'
|
||||
PACKAGE_BUGREPORT='christos@astron.com'
|
||||
PACKAGE_URL=''
|
||||
|
||||
@ -766,6 +766,7 @@ enable_option_checking
|
||||
enable_silent_rules
|
||||
enable_elf
|
||||
enable_elf_core
|
||||
enable_zlib
|
||||
enable_fsect_man5
|
||||
enable_dependency_tracking
|
||||
enable_static
|
||||
@ -1327,7 +1328,7 @@ if test "$ac_init_help" = "long"; then
|
||||
# Omit some internal or obsolete options to make the list less imposing.
|
||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||
cat <<_ACEOF
|
||||
\`configure' configures file 5.27 to adapt to many kinds of systems.
|
||||
\`configure' configures file 5.28 to adapt to many kinds of systems.
|
||||
|
||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||
|
||||
@ -1397,7 +1398,7 @@ fi
|
||||
|
||||
if test -n "$ac_init_help"; then
|
||||
case $ac_init_help in
|
||||
short | recursive ) echo "Configuration of file 5.27:";;
|
||||
short | recursive ) echo "Configuration of file 5.28:";;
|
||||
esac
|
||||
cat <<\_ACEOF
|
||||
|
||||
@ -1409,6 +1410,7 @@ Optional Features:
|
||||
--disable-silent-rules verbose build output (undo: "make V=0")
|
||||
--disable-elf disable builtin ELF support
|
||||
--disable-elf-core disable ELF core file support
|
||||
--disable-zlib disable zlib compression support [default=auto]
|
||||
--enable-fsect-man5 enable file formats in man section 5
|
||||
--enable-dependency-tracking
|
||||
do not reject slow dependency extractors
|
||||
@ -1507,7 +1509,7 @@ fi
|
||||
test -n "$ac_init_help" && exit $ac_status
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
file configure 5.27
|
||||
file configure 5.28
|
||||
generated by GNU Autoconf 2.69
|
||||
|
||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||
@ -2163,7 +2165,7 @@ cat >config.log <<_ACEOF
|
||||
This file contains any messages produced by compilers while
|
||||
running configure, to aid debugging if configure makes a mistake.
|
||||
|
||||
It was created by file $as_me 5.27, which was
|
||||
It was created by file $as_me 5.28, which was
|
||||
generated by GNU Autoconf 2.69. Invocation command line was
|
||||
|
||||
$ $0 $@
|
||||
@ -3029,7 +3031,7 @@ fi
|
||||
|
||||
# Define the identity of the package.
|
||||
PACKAGE='file'
|
||||
VERSION='5.27'
|
||||
VERSION='5.28'
|
||||
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
@ -3218,6 +3220,16 @@ $as_echo "#define ELFCORE 1" >>confdefs.h
|
||||
fi
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for zlib support" >&5
|
||||
$as_echo_n "checking for zlib support... " >&6; }
|
||||
# Check whether --enable-zlib was given.
|
||||
if test "${enable_zlib+set}" = set; then :
|
||||
enableval=$enable_zlib;
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_zlib" >&5
|
||||
$as_echo "$enable_zlib" >&6; }
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for file formats in man section 5" >&5
|
||||
$as_echo_n "checking for file formats in man section 5... " >&6; }
|
||||
# Check whether --enable-fsect-man5 was given.
|
||||
@ -12812,7 +12824,8 @@ fi
|
||||
|
||||
done
|
||||
|
||||
for ac_header in zlib.h
|
||||
if test "$enable_zlib" != "no"; then
|
||||
for ac_header in zlib.h
|
||||
do :
|
||||
ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
|
||||
if test "x$ac_cv_header_zlib_h" = xyes; then :
|
||||
@ -12824,6 +12837,7 @@ fi
|
||||
|
||||
done
|
||||
|
||||
fi
|
||||
ac_fn_c_check_type "$LINENO" "sig_t" "ac_cv_type_sig_t" "
|
||||
#ifdef HAVE_SIGNAL_H
|
||||
#include <signal.h>
|
||||
@ -14400,7 +14414,8 @@ fi
|
||||
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gzopen in -lz" >&5
|
||||
if test "$enable_zlib" != "no"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gzopen in -lz" >&5
|
||||
$as_echo_n "checking for gzopen in -lz... " >&6; }
|
||||
if ${ac_cv_lib_z_gzopen+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
@ -14445,6 +14460,7 @@ _ACEOF
|
||||
|
||||
fi
|
||||
|
||||
fi
|
||||
if test "$MINGW" = 1; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for regexec in -lgnurx" >&5
|
||||
$as_echo_n "checking for regexec in -lgnurx... " >&6; }
|
||||
@ -14504,6 +14520,16 @@ else
|
||||
fi
|
||||
|
||||
|
||||
if test "$enable_zlib" = "yes"; then
|
||||
if test "$ac_cv_header_zlib_h$ac_cv_lib_z_gzopen" != "yesyes"; then
|
||||
as_fn_error $? "zlib support requested but not found" "$LINENO" 5
|
||||
fi
|
||||
elif test "$ac_cv_header_zlib_h$ac_cv_lib_z_gzopen" = "yesyes"; then
|
||||
|
||||
$as_echo "#define ZLIBSUPPORT 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
ac_config_files="$ac_config_files Makefile src/Makefile magic/Makefile tests/Makefile doc/Makefile python/Makefile"
|
||||
|
||||
cat >confcache <<\_ACEOF
|
||||
@ -15049,7 +15075,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
||||
# report actual input values of CONFIG_FILES etc. instead of their
|
||||
# values after options handling.
|
||||
ac_log="
|
||||
This file was extended by file $as_me 5.27, which was
|
||||
This file was extended by file $as_me 5.28, which was
|
||||
generated by GNU Autoconf 2.69. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
@ -15115,7 +15141,7 @@ _ACEOF
|
||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||
ac_cs_version="\\
|
||||
file config.status 5.27
|
||||
file config.status 5.28
|
||||
configured by $0, generated by GNU Autoconf 2.69,
|
||||
with options \\"\$ac_cs_config\\"
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_INIT([file],[5.27],[christos@astron.com])
|
||||
AC_INIT([file],[5.28],[christos@astron.com])
|
||||
AM_INIT_AUTOMAKE([subdir-objects foreign])
|
||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||
|
||||
@ -34,6 +34,11 @@ fi], [
|
||||
AC_DEFINE([ELFCORE], 1, [Define for ELF core file support])
|
||||
])
|
||||
|
||||
AC_MSG_CHECKING(for zlib support)
|
||||
AC_ARG_ENABLE(zlib,
|
||||
[AS_HELP_STRING([--disable-zlib], [disable zlib compression support @<:@default=auto@:>@])])
|
||||
AC_MSG_RESULT($enable_zlib)
|
||||
|
||||
AC_MSG_CHECKING(for file formats in man section 5)
|
||||
AC_ARG_ENABLE(fsect-man5,
|
||||
[ --enable-fsect-man5 enable file formats in man section 5],
|
||||
@ -84,7 +89,9 @@ AC_CHECK_HEADERS(stdint.h fcntl.h locale.h stdint.h inttypes.h unistd.h)
|
||||
AC_CHECK_HEADERS(stddef.h utime.h wchar.h wctype.h limits.h)
|
||||
AC_CHECK_HEADERS(getopt.h err.h xlocale.h signal.h)
|
||||
AC_CHECK_HEADERS(sys/mman.h sys/stat.h sys/types.h sys/utime.h sys/time.h)
|
||||
AC_CHECK_HEADERS(zlib.h)
|
||||
if test "$enable_zlib" != "no"; then
|
||||
AC_CHECK_HEADERS(zlib.h)
|
||||
fi
|
||||
AC_CHECK_TYPE([sig_t],[AC_DEFINE([HAVE_SIG_T],1,[Have sig_t type])],,[
|
||||
#ifdef HAVE_SIGNAL_H
|
||||
#include <signal.h>
|
||||
@ -148,7 +155,9 @@ dnl Provide implementation of some required functions if necessary
|
||||
AC_REPLACE_FUNCS(getopt_long asprintf vasprintf strlcpy strlcat getline ctime_r asctime_r localtime_r gmtime_r pread strcasestr fmtcheck dprintf)
|
||||
|
||||
dnl Checks for libraries
|
||||
AC_CHECK_LIB(z,gzopen)
|
||||
if test "$enable_zlib" != "no"; then
|
||||
AC_CHECK_LIB(z, gzopen)
|
||||
fi
|
||||
if test "$MINGW" = 1; then
|
||||
AC_CHECK_LIB(gnurx,regexec,,AC_MSG_ERROR([libgnurx is required to build file(1) with MinGW]))
|
||||
fi
|
||||
@ -156,5 +165,14 @@ fi
|
||||
dnl See if we are cross-compiling
|
||||
AM_CONDITIONAL(IS_CROSS_COMPILE, test "$cross_compiling" = yes)
|
||||
|
||||
dnl Final sanity checks
|
||||
if test "$enable_zlib" = "yes"; then
|
||||
if test "$ac_cv_header_zlib_h$ac_cv_lib_z_gzopen" != "yesyes"; then
|
||||
AC_MSG_ERROR([zlib support requested but not found])
|
||||
fi
|
||||
elif test "$ac_cv_header_zlib_h$ac_cv_lib_z_gzopen" = "yesyes"; then
|
||||
AC_DEFINE([ZLIBSUPPORT], 1, [Enable zlib compression support])
|
||||
fi
|
||||
|
||||
AC_CONFIG_FILES([Makefile src/Makefile magic/Makefile tests/Makefile doc/Makefile python/Makefile])
|
||||
AC_OUTPUT
|
||||
|
@ -1,4 +1,4 @@
|
||||
.\" $File: file.man,v 1.120 2016/03/31 17:51:12 christos Exp $
|
||||
.\" $File: file.man,v 1.121 2016/06/07 22:09:20 rrt Exp $
|
||||
.Dd March 13, 2016
|
||||
.Dt FILE __CSECTION__
|
||||
.Os
|
||||
@ -213,6 +213,9 @@ Prints ELF file details.
|
||||
Consults magic files.
|
||||
.It tar
|
||||
Examines tar files.
|
||||
.It text
|
||||
A synonym for
|
||||
.Sq ascii .
|
||||
.El
|
||||
.It Fl Fl extension
|
||||
Print a slash-separated list of valid extensions for the file type found.
|
||||
|
65
contrib/file/magic/Magdir/ber
Normal file
65
contrib/file/magic/Magdir/ber
Normal file
@ -0,0 +1,65 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: ber,v 1.1 2016/06/05 00:21:30 christos Exp $
|
||||
# ber: file(1) magic for several BER formats used in the mobile
|
||||
# telecommunications industry (Georg Sauthoff)
|
||||
|
||||
# The file formats are standardized by the GSMA (GSM association).
|
||||
# They are specified via ASN.1 schemas and some prose. Basic encoding
|
||||
# rules (BER) is the used encoding. The formats are used for exchanging
|
||||
# call data records (CDRs) between mobile operators and associated
|
||||
# parties for roaming clearing purposes and fraud detection.
|
||||
|
||||
# The magic file covers:
|
||||
|
||||
# - TAP files (TD.57) - CDR batches and notifications
|
||||
# - RAP files (TD.32) - return batches and acknowledgements
|
||||
# - NRT files (TD.35) - CDR batches for 'near real time' processing
|
||||
|
||||
#
|
||||
# TAP 3 Files
|
||||
# TAP -> Transferred Account Procedure
|
||||
# cf. http://www.gsma.com/newsroom/wp-content/uploads/TD.57-v32.31.pdf
|
||||
# TransferBatch short tag
|
||||
0 byte 0x61
|
||||
# BatchControlInfo short tag
|
||||
>&1 search/b5 \x64
|
||||
# Sender long tag #TAP 3.x (BER encoded)
|
||||
>>&1 search/b8 \x5f\x81\x44
|
||||
# <SpecificationVersionNumber>3</><ReleaseVersionNumber> block
|
||||
>>>&64 search/b64 \x5f\x81\x49\x01\x03\x5f\x81\x3d\x01
|
||||
>>>>&0 byte x TAP 3.%d Batch (TD.57, Transferred Account)
|
||||
|
||||
# Notification short tag
|
||||
0 byte 0x62
|
||||
# Sender long tag
|
||||
>2 search/b8 \x5f\x81\x44
|
||||
# <SpecificationVersionNumber>3</><ReleaseVersionNumber> block
|
||||
>>&64 search/b64 \x5f\x81\x49\x01\x03\x5f\x81\x3d\x01
|
||||
>>>&0 byte x TAP 3.%d Notification (TD.57, Transferred Account)
|
||||
|
||||
|
||||
# NRT Files
|
||||
# NRT a.k.a. NRTRDE
|
||||
0 byte 0x61
|
||||
# <SpecificationVersionNumber>2</><ReleaseVersionNumber> block
|
||||
>&1 search/b8 \x5f\x29\x01\x02\x5f\x25\x01
|
||||
>>&0 byte x NRT 2.%d (TD.35, Near Real Time Roaming Data Exchange)
|
||||
|
||||
# RAP Files
|
||||
# cf. http://www.gsma.com/newsroom/wp-content/uploads/TD.32-v6.11.pdf
|
||||
# Long ReturnBatch tag
|
||||
0 string \x7f\x84\x16
|
||||
# Long RapBatchControlInfo tag
|
||||
>&1 search/b8 \x7f\x84\x19
|
||||
# <SpecificationVersionNumber>3</><ReleaseVersionNumber> block
|
||||
>>&64 search/b64 \x5f\x81\x49\x01\x03\x5f\x81\x3d\x01
|
||||
# <RapSpecificationVersionNumber>1</><RapReleaseVersionNumber> block
|
||||
>>>&1 string/b \x5f\x84\x20\x01\x01\x5f\x84\x1f\x01
|
||||
>>>>&0 byte x RAP 1.%d Batch (TD.32, Returned Account Procedure),
|
||||
>>>&0 byte x TAP 3.%d
|
||||
|
||||
# Long Acknowledgement tag
|
||||
0 string \x7f\x84\x17
|
||||
# Long Sender tag
|
||||
>&1 search/b5 \x5f\x81\x44 RAP Acknowledgement (TD.32, Returned Account Procedure)
|
@ -1,5 +1,5 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: c-lang,v 1.22 2015/10/29 18:49:11 christos Exp $
|
||||
# $File: c-lang,v 1.23 2016/05/21 14:28:27 christos Exp $
|
||||
# c-lang: file(1) magic for C and related languages programs
|
||||
#
|
||||
# The strength is to beat standard HTML
|
||||
@ -38,7 +38,8 @@
|
||||
!:strength + 30
|
||||
!:mime text/x-c++
|
||||
0 regex \^class[\ \t\n]+ C++ source text
|
||||
!:strength + 30
|
||||
# But class is reduced to avoid beating php (Jens Schleusener)
|
||||
!:strength + 13
|
||||
!:mime text/x-c++
|
||||
0 regex \^public: C++ source text
|
||||
!:strength + 30
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: console,v 1.25 2016/04/18 20:22:10 christos Exp $
|
||||
# $File: console,v 1.26 2016/06/12 15:20:37 christos Exp $
|
||||
# Console game magic
|
||||
# Toby Deshane <hac@shoelace.digivill.net>
|
||||
|
||||
@ -55,6 +55,32 @@
|
||||
0 string UNIF
|
||||
>4 lelong <16 UNIF v%d format NES ROM image
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# fds: file(1) magic for Famciom Disk System disk images
|
||||
# Reference: http://wiki.nesdev.com/w/index.php/Family_Computer_Disk_System#.FDS_format
|
||||
# From: David Korth <gerbilsoft@gerbilsoft.com>
|
||||
# TODO: Check "Disk info block" and get info from that in addition to the optional header.
|
||||
|
||||
# Disk info block. (block 1)
|
||||
0 name nintendo-fds-disk-info-block
|
||||
>1 string *NINTENDO-HVC* Famicom Disk System disk image:
|
||||
>23 byte !1 FMC-
|
||||
>23 byte 1 FSC-
|
||||
>16 string x \b%.3s
|
||||
>15 byte x \b, mfr 0x%02X
|
||||
>20 byte x (Rev.%02u)
|
||||
|
||||
# Headered version.
|
||||
0 string FDS\x1A
|
||||
>0x11 string *NINTENDO-HVC*
|
||||
>>0x10 use nintendo-fds-disk-info-block
|
||||
>4 byte 1 (%u side)
|
||||
>4 byte !1 (%u sides)
|
||||
|
||||
# Unheadered version.
|
||||
1 string *NINTENDO-HVC*
|
||||
>0 use nintendo-fds-disk-info-block
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# gameboy: file(1) magic for the Nintendo (Color) Gameboy raw ROM format
|
||||
# Reference: http://gbdev.gg8.se/wiki/articles/The_Cartridge_Header
|
||||
@ -569,6 +595,15 @@
|
||||
0x1C belong 0xC2339F3D Nintendo GameCube disc image:
|
||||
>0 use nintendo-gcn-disc-common
|
||||
|
||||
# Type: Nintendo GameCube embedded disc image
|
||||
# Commonly found on demo discs.
|
||||
# From: David Korth <gerbilsoft@gerbilsoft.com>
|
||||
# Reference: http://hitmen.c02.at/files/yagcd/yagcd/index.html#idx14.8
|
||||
0 belong 0xAE0F38A2
|
||||
>0x0C belong 0x00100000
|
||||
>>(8.L+0x1C) belong 0xC2339F3D Nintendo GameCube embedded disc image:
|
||||
>>>(8.L) use nintendo-gcn-disc-common
|
||||
|
||||
# Type: Nintendo Wii disc image
|
||||
# From: David Korth <gerbilsoft@gerbilsoft.com>
|
||||
# Reference: http://wiibrew.org/wiki/Wii_Disc
|
||||
@ -586,22 +621,15 @@
|
||||
# Nintendo 3DS file formats.
|
||||
#
|
||||
|
||||
# Type: Nintendo 3DS "NCCH" header.
|
||||
# Contained within either a CXI executable or an NCSD image.
|
||||
# From: David Korth <gerbilsoft@gerbilsoft.com>
|
||||
# Reference: https://www.3dbrew.org/wiki/NCCH
|
||||
0 name nintendo-3ds-NCCH
|
||||
>0x100 string NCCH
|
||||
>>0x150 string >\0 \b: "%.16s"
|
||||
>>0x112 leshort x (v%u)
|
||||
>>0x18C byte 2 (New3DS only)
|
||||
|
||||
# Type: Nintendo 3DS "NCSD" image. (game cards and eMMC)
|
||||
# From: David Korth <gerbilsoft@gerbilsoft.com>
|
||||
# Reference: https://www.3dbrew.org/wiki/NCSD
|
||||
0x100 string NCSD
|
||||
>0x118 lequad 0 Nintendo 3DS Game Card image
|
||||
>>0x1000 use nintendo-3ds-NCCH
|
||||
# NCCH header for partition 0. (game data)
|
||||
>>0x1150 string >\0 \b: "%.16s"
|
||||
>>0x312 byte x (Rev.%02u)
|
||||
>>0x118C byte 2 (New3DS only)
|
||||
>>0x18D byte 0 (inner device)
|
||||
>>0x18D byte 1 (Card1)
|
||||
>>0x18D byte 2 (Card2)
|
||||
@ -609,12 +637,74 @@
|
||||
>0x118 bequad 0x0102020202000000 Nintendo 3DS eMMC dump (Old3DS)
|
||||
>0x118 bequad 0x0102020203000000 Nintendo 3DS eMMC dump (New3DS)
|
||||
|
||||
# Nintendo 3DS version code.
|
||||
# Reference: https://www.3dbrew.org/wiki/Titles
|
||||
# Format: leshort containing three fields:
|
||||
# - 6-bit: Major
|
||||
# - 6-bit: Minor
|
||||
# - 4-bit: Revision
|
||||
# NOTE: Only supporting major/minor versions from 0-15 right now.
|
||||
# NOTE: Should be prefixed with "v".
|
||||
0 name nintendo-3ds-version-code
|
||||
# Raw version.
|
||||
>0 leshort x \b%u,
|
||||
# Major version.
|
||||
>0 leshort&0xFC00 0x0000 0
|
||||
>0 leshort&0xFC00 0x0400 1
|
||||
>0 leshort&0xFC00 0x0800 2
|
||||
>0 leshort&0xFC00 0x0C00 3
|
||||
>0 leshort&0xFC00 0x1000 4
|
||||
>0 leshort&0xFC00 0x1400 5
|
||||
>0 leshort&0xFC00 0x1800 6
|
||||
>0 leshort&0xFC00 0x1C00 7
|
||||
>0 leshort&0xFC00 0x2000 8
|
||||
>0 leshort&0xFC00 0x2400 9
|
||||
>0 leshort&0xFC00 0x2800 10
|
||||
>0 leshort&0xFC00 0x2C00 11
|
||||
>0 leshort&0xFC00 0x3000 12
|
||||
>0 leshort&0xFC00 0x3400 13
|
||||
>0 leshort&0xFC00 0x3800 14
|
||||
>0 leshort&0xFC00 0x3C00 15
|
||||
# Minor version.
|
||||
>0 leshort&0x03F0 0x0000 \b.0
|
||||
>0 leshort&0x03F0 0x0010 \b.1
|
||||
>0 leshort&0x03F0 0x0020 \b.2
|
||||
>0 leshort&0x03F0 0x0030 \b.3
|
||||
>0 leshort&0x03F0 0x0040 \b.4
|
||||
>0 leshort&0x03F0 0x0050 \b.5
|
||||
>0 leshort&0x03F0 0x0060 \b.6
|
||||
>0 leshort&0x03F0 0x0070 \b.7
|
||||
>0 leshort&0x03F0 0x0080 \b.8
|
||||
>0 leshort&0x03F0 0x0090 \b.9
|
||||
>0 leshort&0x03F0 0x00A0 \b.10
|
||||
>0 leshort&0x03F0 0x00B0 \b.11
|
||||
>0 leshort&0x03F0 0x00C0 \b.12
|
||||
>0 leshort&0x03F0 0x00D0 \b.13
|
||||
>0 leshort&0x03F0 0x00E0 \b.14
|
||||
>0 leshort&0x03F0 0x00F0 \b.15
|
||||
# Revision.
|
||||
>0 leshort&0x000F x \b.%u
|
||||
|
||||
# Type: Nintendo 3DS "NCCH" container.
|
||||
# https://www.3dbrew.org/wiki/NCCH
|
||||
0x100 string NCCH Nintendo 3DS
|
||||
>0x18D byte&2 0 File Archive (CFA)
|
||||
>0x18D byte&2 2 Executable Image (CXI)
|
||||
>0 use nintendo-3ds-NCCH
|
||||
0x100 string NCCH Nintendo 3DS
|
||||
>0x18D byte&2 0 File Archive (CFA)
|
||||
>0x18D byte&2 2 Executable Image (CXI)
|
||||
>0x150 string >\0 \b: "%.16s"
|
||||
>0x18D byte 0x05
|
||||
>>0x10E leshort x (Old3DS System Update v
|
||||
>>0x10E use nintendo-3ds-version-code
|
||||
>>0x10E leshort x \b)
|
||||
>0x18D byte 0x15
|
||||
>>0x10E leshort x (New3DS System Update v
|
||||
>>0x10E use nintendo-3ds-version-code
|
||||
>>0x10E leshort x \b)
|
||||
>0x18D byte !0x05
|
||||
>>0x18D byte !0x15
|
||||
>>>0x112 byte x (v
|
||||
>>>0x112 use nintendo-3ds-version-code
|
||||
>>>0x112 byte x \b)
|
||||
>0x18C byte 2 (New3DS only)
|
||||
|
||||
# Type: Nintendo 3DS "SMDH" file. (application description)
|
||||
# From: David Korth <gerbilsoft@gerbilsoft.com>
|
||||
|
91
contrib/file/magic/Magdir/coverage
Normal file
91
contrib/file/magic/Magdir/coverage
Normal file
@ -0,0 +1,91 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: coverage,v 1.1 2016/06/05 00:26:32 christos Exp $
|
||||
# xoverage: file(1) magic for test coverage data
|
||||
|
||||
# File formats used to store test coverage data
|
||||
# 2016-05-21, Georg Sauthoff <mail@georg.so>
|
||||
|
||||
|
||||
# - GCC gcno - written by GCC at compile time when compiling with
|
||||
# gcc -ftest-coverage
|
||||
# - GCC gcda - written by a program that was compiled with
|
||||
# gcc -fprofile-arcs
|
||||
# - LLVM raw profiles - generated by a program compiled with
|
||||
# clang -fprofile-instr-generate -fcoverage-mapping ...
|
||||
# - LLVM indexed profiles - generated by
|
||||
# llvm-profdata
|
||||
# - GCOV reports, i.e. the annotated source code
|
||||
# - LCOV trace files, i.e. aggregated GCC profiles
|
||||
#
|
||||
# GCC coverage tracefiles
|
||||
# .gcno file are created during compile time,
|
||||
# while data collected during runtime is stored in .gcda files
|
||||
# cf. gcov-io.h
|
||||
# https://gcc.gnu.org/onlinedocs/gcc-5.3.0/gcc/Gcov-Data-Files.html
|
||||
# Examples:
|
||||
# Fedora 23/x86-64/gcc-5.3.1: 6f 6e 63 67 52 33 30 35
|
||||
# Debian 8 PPC64/gcc-4.9.2 : 67 63 6e 6f 34 30 39 2a
|
||||
0 lelong 0x67636e6f GCC gcno coverage (-ftest-coverage),
|
||||
>&3 byte x version %c.
|
||||
>&1 byte x \b%c
|
||||
|
||||
# big endian
|
||||
0 belong 0x67636e6f GCC gcno coverage (-ftest-coverage),
|
||||
>&0 byte x version %c.
|
||||
>&2 byte x \b%c (big-endian)
|
||||
|
||||
# Examples:
|
||||
# Fedora 23/x86-64/gcc-5.3.1: 61 64 63 67 52 33 30 35
|
||||
# Debian 8 PPC64/gcc-4.9.2 : 67 63 64 61 34 30 39 2a
|
||||
0 lelong 0x67636461 GCC gcda coverage (-fprofile-arcs),
|
||||
>&3 byte x version %c.
|
||||
>&1 byte x \b%c
|
||||
|
||||
# big endian
|
||||
0 belong 0x67636461 GCC gcda coverage (-fprofile-arcs),
|
||||
>&0 byte x version %c.
|
||||
>&2 byte x \b%c (big-endian)
|
||||
|
||||
|
||||
# LCOV tracefiles
|
||||
# cf. http://ltp.sourceforge.net/coverage/lcov/geninfo.1.php
|
||||
0 string TN:
|
||||
>&0 search/64 \nSF:/ LCOV coverage tracefile
|
||||
|
||||
|
||||
# Coverage reports generated by gcov
|
||||
# i.e. source code annoted with coverage information
|
||||
0 string \x20\x20\x20\x20\x20\x20\x20\x20-:\x20\x20\x20\ 0:Source:
|
||||
>&0 search/128 \x20\x20\x20\x20\x20\x20\x20\x20-:\x20\x20\x20\ 0:Graph:
|
||||
>>&0 search/128 \x20\x20\x20\x20\x20\x20\x20\x20-:\x20\x20\x20\ 0:Data: GCOV coverage report
|
||||
|
||||
|
||||
# LLVM coverage files
|
||||
|
||||
# raw data after running a program compiled with:
|
||||
# `clang -fprofile-instr-generate -fcoverage-mapping ...`
|
||||
# default name: default.profraw
|
||||
# magic is: \xFF lprofr \x81
|
||||
# cf. http://llvm.org/docs/doxygen/html/InstrProfData_8inc_source.html
|
||||
0 lequad 0xff6c70726f667281 LLVM raw profile data,
|
||||
>&0 byte x version %d
|
||||
|
||||
# big endian
|
||||
0 bequad 0xff6c70726f667281 LLVM raw profile data,
|
||||
>&7 byte x version %d (big-endian)
|
||||
|
||||
|
||||
# LLVM indexed instruction profile (as generated by llvm-profdata)
|
||||
# magic is: reverse(\xFF lprofi \x81)
|
||||
# cf. http://llvm.org/docs/CoverageMappingFormat.html
|
||||
# http://llvm.org/docs/doxygen/html/namespacellvm_1_1IndexedInstrProf.html
|
||||
# http://llvm.org/docs/CommandGuide/llvm-cov.html
|
||||
# http://llvm.org/docs/CommandGuide/llvm-profdata.html
|
||||
0 lequad 0x8169666f72706cff LLVM indexed profile data,
|
||||
>&0 byte x version %d
|
||||
|
||||
# big endian
|
||||
0 bequad 0x8169666f72706cff LLVM indexed profile data,
|
||||
>&7 byte x version %d (big-endian)
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: database,v 1.48 2016/04/14 20:34:28 christos Exp $
|
||||
# $File: database,v 1.49 2016/06/11 17:01:51 christos Exp $
|
||||
# database: file(1) magic for various databases
|
||||
#
|
||||
# extracted from header/code files by Graeme Wilford (eep2gw@ee.surrey.ac.uk)
|
||||
@ -611,3 +611,14 @@
|
||||
!:ext pan
|
||||
# database name
|
||||
>>>5 pstring x \b, "%s"
|
||||
|
||||
#
|
||||
#
|
||||
# askSam Database by Stefan A. Haubenthal <polluks@web.de>
|
||||
0 string askw40\0 askSam DB
|
||||
|
||||
#
|
||||
#
|
||||
# MUIbase Database Tool by Stefan A. Haubenthal <polluks@web.de>
|
||||
0 string MBSTV\040 MUIbase DB
|
||||
>6 string x version %s
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: elf,v 1.69 2015/06/16 17:23:08 christos Exp $
|
||||
# $File: elf,v 1.70 2016/06/02 12:36:30 christos Exp $
|
||||
# elf: file(1) magic for ELF executables
|
||||
#
|
||||
# We have to check the byte order flag to see what byte order all the
|
||||
@ -301,25 +301,23 @@
|
||||
>>0 use elf-le
|
||||
>5 byte 2 MSB
|
||||
>>0 use \^elf-le
|
||||
# Up to now only 0, 1 and 2 are defined; I've seen a file with 0x83, it seemed
|
||||
# like proper ELF, but extracting the string had bad results.
|
||||
>4 byte <0x80
|
||||
>>8 string >\0 (%s)
|
||||
>8 string \0
|
||||
>>7 byte 0 (SYSV)
|
||||
>>7 byte 1 (HP-UX)
|
||||
>>7 byte 2 (NetBSD)
|
||||
>>7 byte 3 (GNU/Linux)
|
||||
>>7 byte 4 (GNU/Hurd)
|
||||
>>7 byte 5 (86Open)
|
||||
>>7 byte 6 (Solaris)
|
||||
>>7 byte 7 (Monterey)
|
||||
>>7 byte 8 (IRIX)
|
||||
>>7 byte 9 (FreeBSD)
|
||||
>>7 byte 10 (Tru64)
|
||||
>>7 byte 11 (Novell Modesto)
|
||||
>>7 byte 12 (OpenBSD)
|
||||
>8 string \2
|
||||
>>7 byte 13 (OpenVMS)
|
||||
>>7 byte 97 (ARM)
|
||||
>>7 byte 255 (embedded)
|
||||
>7 byte 0 (SYSV)
|
||||
>7 byte 1 (HP-UX)
|
||||
>7 byte 2 (NetBSD)
|
||||
>7 byte 3 (GNU/Linux)
|
||||
>7 byte 4 (GNU/Hurd)
|
||||
>7 byte 5 (86Open)
|
||||
>7 byte 6 (Solaris)
|
||||
>7 byte 7 (Monterey)
|
||||
>7 byte 8 (IRIX)
|
||||
>7 byte 9 (FreeBSD)
|
||||
>7 byte 10 (Tru64)
|
||||
>7 byte 11 (Novell Modesto)
|
||||
>7 byte 12 (OpenBSD)
|
||||
>7 byte 13 (OpenVMS)
|
||||
>7 byte 14 (HP NonStop Kernel)
|
||||
>7 byte 15 (AROS Research Operating System)
|
||||
>7 byte 16 (FenixOS)
|
||||
>7 byte 17 (Nuxi CloudABI)
|
||||
>7 byte 97 (ARM)
|
||||
>7 byte 255 (embedded)
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: msdos,v 1.105 2016/03/03 18:58:14 christos Exp $
|
||||
# $File: msdos,v 1.106 2016/06/11 00:52:14 christos Exp $
|
||||
# msdos: file(1) magic for MS-DOS files
|
||||
#
|
||||
|
||||
@ -633,47 +633,86 @@
|
||||
0 string/b \102\101\050\000\000\000\056\000\000\000\000\000\000\000 Icon for MS Windows
|
||||
|
||||
# Windows icons
|
||||
0 name ico-dir
|
||||
# not entirely accurate, the number of icons is part of the header
|
||||
>0 byte 1 - 1 icon
|
||||
>0 ubyte >1 - %d icons
|
||||
>2 byte 0 \b, 256x
|
||||
>2 byte !0 \b, %dx
|
||||
>3 byte 0 \b256
|
||||
>3 byte !0 \b%d
|
||||
>4 ubyte !0 \b, %d colors
|
||||
|
||||
# Update: Joerg Jenderek
|
||||
# URL: https://en.wikipedia.org/wiki/CUR_(file_format)
|
||||
# Note: similiar to Windows CURsor. container for BMP (only DIB part) or PNG
|
||||
0 belong 0x00000100
|
||||
>9 byte 0
|
||||
>>0 byte x MS Windows icon resource
|
||||
!:mime image/x-icon
|
||||
>>4 use ico-dir
|
||||
>>0 byte x
|
||||
>>0 use cur-ico-dir
|
||||
>9 ubyte 0xff
|
||||
>>0 byte x MS Windows icon resource
|
||||
!:mime image/x-icon
|
||||
>>4 use ico-dir
|
||||
>>0 byte x
|
||||
>>0 use cur-ico-dir
|
||||
# displays number of icons and information for icon or cursor
|
||||
0 name cur-ico-dir
|
||||
# skip some Lotus 1-2-3 worksheets, CYCLE.PIC and keep Windows cursors with
|
||||
# 1st data offset = dir header size + n * dir entry size = 6 + n * 10h = ?6h
|
||||
>18 ulelong &0x00000006
|
||||
# skip remaining worksheets, because valid only for DIB image (40) or PNG image (\x89PNG)
|
||||
>>(18.l) ulelong x MS Windows
|
||||
>>>0 ubelong 0x00000100 icon resource
|
||||
#!:mime image/vnd.microsoft.icon
|
||||
!:mime image/x-icon
|
||||
!:ext ico
|
||||
>>>>4 uleshort x - %d icon
|
||||
# plural s
|
||||
>>>>4 uleshort >1 \bs
|
||||
# 1st icon
|
||||
>>>>0x06 use ico-entry
|
||||
# 2nd icon
|
||||
>>>>4 uleshort >1
|
||||
>>>>>0x16 use ico-entry
|
||||
>>>0 ubelong 0x00000200 cursor resource
|
||||
#!:mime image/x-cur
|
||||
!:mime image/x-win-bitmap
|
||||
!:ext cur
|
||||
>>>>4 uleshort x - %d icon
|
||||
>>>>4 uleshort >1 \bs
|
||||
# 1st cursor
|
||||
>>>>0x06 use cur-entry
|
||||
#>>>>0x16 use cur-entry
|
||||
# display information of one cursor entry
|
||||
0 name cur-entry
|
||||
>0 use cur-ico-entry
|
||||
>4 uleshort x \b, hotspot @%dx
|
||||
>6 uleshort x \b%d
|
||||
# display information of one icon entry
|
||||
0 name ico-entry
|
||||
>0 use cur-ico-entry
|
||||
# normally 0 1 but also found 14
|
||||
>4 uleshort >1 \b, %d planes
|
||||
# normally 0 1 but also found some 3, 4, some 6, 8, 24, many 32, two 256
|
||||
>6 uleshort >1 \b, %d bits/pixel
|
||||
# display shared information of cursor or icon entry
|
||||
0 name cur-ico-entry
|
||||
>0 byte =0 \b, 256x
|
||||
>0 byte !0 \b, %dx
|
||||
>1 byte =0 \b256
|
||||
>1 byte !0 \b%d
|
||||
# number of colors in palette
|
||||
>2 ubyte !0 \b, %d colors
|
||||
# reserved 0 FFh
|
||||
#>3 ubyte x \b, reserved %x
|
||||
#>8 ulelong x \b, image size %d
|
||||
# offset of PNG or DIB image
|
||||
#>12 ulelong x \b, offset 0x%x
|
||||
# PNG header (\x89PNG)
|
||||
>(12.l) ubelong =0x89504e47
|
||||
>>&-4 indirect x \b with
|
||||
# DIB image
|
||||
>(12.l) ubelong !0x89504e47
|
||||
#>>&-4 use dib-image
|
||||
|
||||
# Windows non-animated cursors
|
||||
0 name cur-dir
|
||||
# not entirely accurate, the number of icons is part of the header
|
||||
>0 byte 1 - 1 icon
|
||||
>0 ubyte >1 - %d icons
|
||||
>2 byte 0 \b, 256x
|
||||
>2 byte !0 \b, %dx
|
||||
>3 byte 0 \b256
|
||||
>3 byte !0 \b%d
|
||||
>6 uleshort x \b, hotspot @%dx
|
||||
>8 uleshort x \b%d
|
||||
|
||||
# Update: Joerg Jenderek
|
||||
# URL: https://en.wikipedia.org/wiki/CUR_(file_format)
|
||||
# Note: similiar to Windows ICOn. container for BMP ( only DIB part)
|
||||
# GRR: line below is too general as it catches also Lotus 1-2-3 files
|
||||
0 belong 0x00000200
|
||||
>9 byte 0
|
||||
>>0 byte x MS Windows cursor resource
|
||||
!:mime image/x-cur
|
||||
>>4 use cur-dir
|
||||
>>0 use cur-ico-dir
|
||||
>9 ubyte 0xff
|
||||
>>0 byte x MS Windows cursor resource
|
||||
!:mime image/x-cur
|
||||
>>4 use cur-dir
|
||||
>>0 use cur-ico-dir
|
||||
|
||||
# .chr files
|
||||
0 string/b PK\010\010BGI Borland font
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# msx: file(1) magic for the MSX Home Computer
|
||||
# v1.1
|
||||
# v1.3
|
||||
# Fabio R. Schmidlin <sd-snatcher@users.sourceforge.net>
|
||||
|
||||
############## MSX Music file formats ##############
|
||||
@ -99,34 +99,6 @@
|
||||
>>5 uleshort 0
|
||||
>>>3 uleshort >0x013D MSX Graph Saurus compressed image
|
||||
|
||||
# Maki-chan Graphic format
|
||||
0 string/b MAKI02\ \ Maki-chan image,
|
||||
>8 byte x system ID: %c
|
||||
>9 byte x \b%c
|
||||
>10 byte x \b%c
|
||||
>11 byte x \b%c,
|
||||
>13 search/0x200 \x1A
|
||||
# >>&3 ubyte 0 , video mode: PC-98 400 lines, 16 analog colors
|
||||
# >>&3 ubyte 1 , video mode: MSX SC7, 16 analog colors
|
||||
# >>&3 ubyte 2 , video mode: VM-98 400 lines, 8 analog colors
|
||||
# >>&3 ubyte 3 , video mode: PC-88 analog, 200 lines, 8 analog colors
|
||||
# >>&3 ubyte 4 , video mode: 400 lines, 16 digital colors
|
||||
# >>&3 ubyte 5 , video mode: 200 lines, 16 digital colors
|
||||
# >>&3 ubyte 6 , video mode: old PC-98 digital 400 lines, 8 colors
|
||||
# >>&3 ubyte 7 , video mode: PC-88 400 lines, 8 digital colors
|
||||
>>&8 uleshort+1 x %dx
|
||||
>>&10 uleshort+1 x \b%d,
|
||||
>>&3 ubyte&0x82 0x80 256 colors
|
||||
>>&3 ubyte&0x82 0x00 16 colors
|
||||
>>&3 ubyte&0x82 0x01 8 colors
|
||||
>>&3 ubyte&0x04 4 digital
|
||||
>>&3 ubyte&0x04 0 analog
|
||||
>>&3 ubyte&0x01 1 \b, 2:1 dot aspect ratio
|
||||
|
||||
# Japanese PIC file
|
||||
0 string/b PIC\x1A
|
||||
>4 lelong 0 Japanese PIC image file
|
||||
|
||||
# MSX G9B image file
|
||||
0 string/b G9B
|
||||
>1 uleshort 11
|
||||
@ -146,70 +118,152 @@
|
||||
|
||||
############## Other MSX file formats ##############
|
||||
|
||||
# MSX ROMs
|
||||
# MSX internal ROMs
|
||||
0 ubeshort 0xF3C3
|
||||
>2 uleshort <0x4000
|
||||
>>8 ubyte 0xC3
|
||||
>>>9 uleshort <0x4000
|
||||
>>>>0x0B ubeshort 0x00C3
|
||||
>>>>>0x0D uleshort <0x4000
|
||||
>>>>>>0x0F ubeshort 0x00C3
|
||||
>>>>>>>0x11 uleshort <0x4000
|
||||
>>>>>>>>0x13 ubeshort 0x00C3
|
||||
>>>>>>>>>0x15 uleshort <0x4000
|
||||
>>>>>>>>>>0x50 ubyte 0xC3
|
||||
>>>>>>>>>>>0x51 uleshort <0x4000
|
||||
>>>>>>>>>>>>(9.s) ubyte 0xC3
|
||||
>>>>>>>>>>>>>&0 uleshort >0x4000
|
||||
>>>>>>>>>>>>>>&0 ubyte 0xC3 MSX BIOS+BASIC
|
||||
>>>>>>>>>>>>>>>0x002D ubyte+1 <3 \b. version=MSX%d
|
||||
>>>>>>>>>>>>>>>0x002D ubyte 2 \b, version=MSX2+
|
||||
>>>>>>>>>>>>>>>0x002D ubyte 3 \b, version=MSX Turbo-R
|
||||
>>>>>>>>>>>>>>>0x002D ubyte >3 \b, version=Unknown MSX %d version
|
||||
>>>>>>>>>>>>>>>0x0006 ubyte x \b, VDP.DR=0x%2x
|
||||
>>>>>>>>>>>>>>>0x0007 ubyte x \b, VDP.DW=0x%2x
|
||||
>>>>>>>>>>>>>>>0x002B ubyte&0xF 0 \b, charset=Japanese
|
||||
>>>>>>>>>>>>>>>0x002B ubyte&0xF 1 \b, charset=International
|
||||
>>>>>>>>>>>>>>>0x002B ubyte&0xF 2 \b, charset=Korean
|
||||
>>>>>>>>>>>>>>>0x002B ubyte&0xF >2 \b, charset=Unknown id:%d
|
||||
>>>>>>>>>>>>>>>0x002B ubyte&0x70 0x00 \b, date format=Y-M-D
|
||||
>>>>>>>>>>>>>>>0x002B ubyte&0x70 0x10 \b, date format=M-D-Y
|
||||
>>>>>>>>>>>>>>>0x002B ubyte&0x70 0x20 \b, date format=D-M-Y
|
||||
>>>>>>>>>>>>>>>0x002B ubyte&0x80 0x00 \b, vfreq=60Hz
|
||||
>>>>>>>>>>>>>>>0x002B ubyte&0x80 0x80 \b, vfreq=50Hz
|
||||
>>>>>>>>>>>>>>>0x002C ubyte&0x0F 0 \b, keyboard=Japanese
|
||||
>>>>>>>>>>>>>>>0x002C ubyte&0x0F 1 \b, keyboard=International
|
||||
>>>>>>>>>>>>>>>0x002C ubyte&0x0F 2 \b, keyboard=French
|
||||
>>>>>>>>>>>>>>>0x002C ubyte&0x0F 3 \b, keyboard=UK
|
||||
>>>>>>>>>>>>>>>0x002C ubyte&0x0F 4 \b, keyboard=German
|
||||
>>>>>>>>>>>>>>>0x002C ubyte&0x0F 5 \b, keyboard=Unknown id:%d
|
||||
>>>>>>>>>>>>>>>0x002C ubyte&0x0F 6 \b, keyboard=Spanish
|
||||
>>>>>>>>>>>>>>>0x002C ubyte&0x0F >6 \b, keyboard=Unknown id:%d
|
||||
>>>>>>>>>>>>>>>0x002C ubyte&0xF0 0x00 \b, basic=Japanese
|
||||
>>>>>>>>>>>>>>>0x002C ubyte&0xF0 0x10 \b, basic=International
|
||||
>>>>>>>>>>>>>>>0x002C ubyte&0xF0 >0x10 \b, basic=Unknown id:%d
|
||||
>>>>>>>>>>>>>>>0x002E ubyte&1 1 \b, built-in MIDI
|
||||
|
||||
|
||||
0 string/b CD
|
||||
>2 uleshort >0x10
|
||||
>>2 uleshort <0x4000
|
||||
>>>4 uleshort <0x4000
|
||||
>>>>6 uleshort <0x4000
|
||||
>>>>>8 ubyte 0xC3
|
||||
>>>>>>9 uleshort <0x4000
|
||||
>>>>>>>0x10 ubyte 0xC3
|
||||
>>>>>>>>0x11 uleshort <0x4000
|
||||
>>>>>>>>>0x14 ubyte 0xC3
|
||||
>>>>>>>>>>0x15 uleshort <0x4000 MSX2/2+/TR SubROM
|
||||
|
||||
0 string \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
|
||||
>0x5F0 ubequad 0x8282828244380000
|
||||
>>0x150 ubyte 0x38
|
||||
>>>0x170 string \20\20\20
|
||||
>>>>0x1E32 string ())
|
||||
>>>>>0x2130 ubequad 0xA5A5594924231807
|
||||
>>>>>0x2138 ubequad 0x4A4A3424488830C0 MSX Kanji Font
|
||||
|
||||
|
||||
|
||||
# MSX extension ROMs
|
||||
0 string/b AB
|
||||
>2 uleshort 0x0010 MSX ROM
|
||||
>>2 uleshort x \b, init=0x%4x
|
||||
>>4 uleshort >0 \b, stat=0x%4x
|
||||
>>6 uleshort >0 \b, dev=0x%4x
|
||||
>>4 uleshort >0 \b, stahdl=0x%4x
|
||||
>>6 uleshort >0 \b, devhdl=0x%4x
|
||||
>>8 uleshort >0 \b, bas=0x%4x
|
||||
>2 uleshort 0x4010 MSX ROM
|
||||
>>2 uleshort x \b, init=0x%04x
|
||||
>>4 uleshort >0 \b, stat=0x%04x
|
||||
>>6 uleshort >0 \b, dev=0x%04x
|
||||
>>4 uleshort >0 \b, stahdl=0x%04x
|
||||
>>6 uleshort >0 \b, devhdl=0x%04x
|
||||
>>8 uleshort >0 \b, bas=0x%04x
|
||||
>2 uleshort 0x8010 MSX ROM
|
||||
>>2 uleshort x \b, init=0x%04x
|
||||
>>4 uleshort >0 \b, stat=0x%04x
|
||||
>>6 uleshort >0 \b, dev=0x%04x
|
||||
>>4 uleshort >0 \b, stahdl=0x%04x
|
||||
>>6 uleshort >0 \b, devhdl=0x%04x
|
||||
>>8 uleshort >0 \b, bas=0x%04x
|
||||
0 string/b AB\0\0
|
||||
>6 uleshort 0
|
||||
>>4 uleshort >0x400F MSX-BASIC extension ROM
|
||||
>>>4 uleshort >0 \b, stahdl=0x%04x
|
||||
>>>6 uleshort >0 \b, devhdl=0x%04x
|
||||
>>>0x1C string OPLL \b, MSX-Music
|
||||
>>>>0x18 string PAC2 \b (external)
|
||||
>>>>0x18 string APRL \b (internal)
|
||||
|
||||
0 string/b AB\0\0\0\0
|
||||
>6 uleshort >0x400F MSX device BIOS
|
||||
>>6 uleshort >0 \b, devhdl=0x%04x
|
||||
|
||||
|
||||
0 string/b AB
|
||||
#>2 string 5JSuperLAYDOCK MSX Super Laydock ROM
|
||||
#>3 string @HYDLIDE3MSX MSX Hydlide-3 ROM
|
||||
#>3 string @3\x80IA862 Golvellius MSX1 ROM
|
||||
>2 uleshort >10
|
||||
>>10 string \0\0\0\0\0\0 MSX ROM
|
||||
>>>0x10 string YZ\0\0\0\0 Konami Game Master 2 MSX ROM
|
||||
>>>0x10 string CD \b, Konami RC-
|
||||
>>>>0x12 ubyte x \b%d
|
||||
>>>>0x13 ubyte/16 x \b%d
|
||||
>>>>0x13 ubyte&0xF x \b%d
|
||||
>>>0x10 string EF \b, Konami RC-
|
||||
>>>>0x12 ubyte x \b%d
|
||||
>>>>0x13 ubyte/16 x \b%d
|
||||
>>>>0x13 ubyte&0xF x \b%d
|
||||
>>>2 uleshort x \b, init=0x%04x
|
||||
>>>4 uleshort >0 \b, stat=0x%04x
|
||||
>>>6 uleshort >0 \b, dev=0x%04x
|
||||
>>>8 uleshort >0 \b, bas=0x%04x
|
||||
>2 uleshort 0
|
||||
>>4 uleshort 0
|
||||
>>>6 uleshort 0
|
||||
>>>>8 uleshort >0 MSX BASIC program in ROM, bas=0x%04x
|
||||
>2 uleshort >15
|
||||
>>2 uleshort <0xC000
|
||||
>>>8 string \0\0\0\0\0\0\0\0
|
||||
>>>>(2.s&0x3FFF) uleshort >0 MSX ROM
|
||||
>>>>>0x10 string YZ\0\0\0\0 Konami Game Master 2 MSX ROM
|
||||
>>>>>0x10 string CD \b, Konami RC-
|
||||
>>>>>>0x12 ubyte x \b%d
|
||||
>>>>>>0x13 ubyte/16 x \b%d
|
||||
>>>>>>0x13 ubyte&0xF x \b%d
|
||||
>>>>>0x10 string EF \b, Konami RC-
|
||||
>>>>>>0x12 ubyte x \b%d
|
||||
>>>>>>0x13 ubyte/16 x \b%d
|
||||
>>>>>>0x13 ubyte&0xF x \b%d
|
||||
>>>>>2 uleshort x \b, init=0x%04x
|
||||
>>>>>4 uleshort >0 \b, stahdl=0x%04x
|
||||
>>>>>6 uleshort >0 \b, devhdl=0x%04x
|
||||
>>>>>8 uleshort >0 \b, bas=0x%04x
|
||||
>>>2 uleshort 0
|
||||
>>>>4 uleshort 0
|
||||
>>>>>6 uleshort 0
|
||||
>>>>>>8 uleshort >0 MSX BASIC program in ROM, bas=0x%04x
|
||||
|
||||
0x4000 string/b AB
|
||||
>0x4002 uleshort >0x4010
|
||||
>>0x400A string \0\0\0\0\0\0 MSX MegaROM with nonstandard page order
|
||||
>0x4002 uleshort >0x400F
|
||||
>>0x400A string \0\0\0\0\0\0 MSX ROM with nonstandard page order
|
||||
>>0x4002 uleshort x \b, init=0x%04x
|
||||
>>0x4004 uleshort >0 \b, stat=0x%04x
|
||||
>>0x4006 uleshort >0 \b, dev=0x%04x
|
||||
>>0x4004 uleshort >0 \b, stahdl=0x%04x
|
||||
>>0x4006 uleshort >0 \b, devhdl=0x%04x
|
||||
>>0x4008 uleshort >0 \b, bas=0x%04x
|
||||
|
||||
0x8000 string/b AB
|
||||
>0x8002 uleshort >0x4010
|
||||
>>0x800A string \0\0\0\0\0\0 MSX MegaROM with nonstandard page order
|
||||
>0x8002 uleshort >0x400F
|
||||
>>0x800A string \0\0\0\0\0\0 MSX ROM with nonstandard page order
|
||||
>>0x8002 uleshort x \b, init=0x%04x
|
||||
>>0x8004 uleshort >0 \b, stat=0x%04x
|
||||
>>0x8006 uleshort >0 \b, dev=0x%04x
|
||||
>>0x8004 uleshort >0 \b, stahdl=0x%04x
|
||||
>>0x8006 uleshort >0 \b, devhdl=0x%04x
|
||||
>>0x8008 uleshort >0 \b, bas=0x%04x
|
||||
|
||||
|
||||
0x3C000 string AB
|
||||
>0x3C008 string/b \0\0\0\0\0\0\0\0 MSX MegaROM with nonstandard page order
|
||||
0x3C000 string/b AB
|
||||
>0x3C008 string \0\0\0\0\0\0\0\0 MSX MegaROM with nonstandard page order
|
||||
>>0x3C002 uleshort x \b, init=0x%04x
|
||||
>>0x3C004 uleshort >0 \b, stat=0x%04x
|
||||
>>0x3C006 uleshort >0 \b, dev=0x%04x
|
||||
>>0x3C004 uleshort >0 \b, stahdl=0x%04x
|
||||
>>0x3C006 uleshort >0 \b, devhdl=0x%04x
|
||||
>>0x3C008 uleshort >0 \b, bas=0x%04x
|
||||
|
||||
# MSX BIN file
|
||||
@ -224,7 +278,7 @@
|
||||
>>1 uleshort >0x8000 MSX-BASIC program
|
||||
|
||||
# MSX .CAS file
|
||||
0 string \x1F\xA6\xDE\xBA\xCC\x13\x7D\x74 MSX cassette archive
|
||||
0 string/b \x1F\xA6\xDE\xBA\xCC\x13\x7D\x74 MSX cassette archive
|
||||
|
||||
# Mega-Assembler file
|
||||
0 byte 0xFE
|
||||
|
24
contrib/file/magic/Magdir/pc88
Normal file
24
contrib/file/magic/Magdir/pc88
Normal file
@ -0,0 +1,24 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# pc88: file(1) magic for the NEC Home Computer
|
||||
# v1.0
|
||||
# Fabio R. Schmidlin <sd-snatcher@users.sourceforge.net>
|
||||
|
||||
# PC88 2D disk image
|
||||
0x20 ulelong&0xFFFFFEFF 0x2A0
|
||||
>0x10 string \0\0\0\0\0\0\0\0\0\0
|
||||
>>0x280 string \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
|
||||
>>>0x1A ubyte&0xEF 0
|
||||
>>>>0x1B ubyte&0x8F 0
|
||||
>>>>>0x1B ubyte&70 <0x40
|
||||
>>>>>>0x1C ulelong >0x21
|
||||
>>>>>>>0 regex [[:print:]]* NEC PC-88 disk image, name=%s
|
||||
>>>>>>>>0x1B ubyte 0 \b, media=2D
|
||||
>>>>>>>>0x1B ubyte 0x10 \b, media=2DD
|
||||
>>>>>>>>0x1B ubyte 0x20 \b, media=2HD
|
||||
>>>>>>>>0x1B ubyte 0x30 \b, media=1D
|
||||
>>>>>>>>0x1B ubyte 0x40 \b, media=1DD
|
||||
>>>>>>>>0x1A ubyte 0x10 \b, write-protected
|
||||
|
||||
|
||||
|
||||
|
77
contrib/file/magic/Magdir/pc98
Normal file
77
contrib/file/magic/Magdir/pc98
Normal file
@ -0,0 +1,77 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# pc98: file(1) magic for the MSX Home Computer
|
||||
# v1.0
|
||||
# Fabio R. Schmidlin <sd-snatcher@users.sourceforge.net>
|
||||
|
||||
# Maki-chan v1 Graphic format
|
||||
# The image resolution should be X=(44.L - 40.L) and Y=(46.L - 42.L), but I couldn't find a way to do so
|
||||
# http://www.jisyo.com/viewer/faq/maki_tech.htm
|
||||
0 string/b MAKI01 Maki-chan v1.
|
||||
>6 ubyte|0x20 x \b%c image
|
||||
>8 ubelong >0x40404040 \b, system ID:
|
||||
>>8 byte x %c
|
||||
>>9 byte x \b%c
|
||||
>>10 byte x \b%c
|
||||
>>11 byte x \b%c
|
||||
>44 ubeshort x \b, %dx
|
||||
>46 ubeshort x \b%d
|
||||
>38 ubeshort&2 0 \b, 16 paletted RGB colors
|
||||
>38 ubeshort&2 2 \b, 8 fixed RGB colors
|
||||
>38 ubeshort&1 1 \b, 2:1 dot aspect ratio
|
||||
|
||||
# Maki-chan v2 Graphic format
|
||||
# http://www.jisyo.com/viewer/faq/mag_tech.htm
|
||||
# http://mooncore.eu/bunny/txt/makichan.htm
|
||||
# http://metanest.jp/mag/mag.xhtml
|
||||
0 string/b MAKI02\ \ Maki-chan v2 image,
|
||||
>8 byte x system ID: %c
|
||||
>9 byte x \b%c
|
||||
>10 byte x \b%c
|
||||
>11 byte x \b%c,
|
||||
>13 search/0x200 \x1A
|
||||
#Maki-chan video modes are a bit messy and seems to have been expanded over the years without too much planing:
|
||||
#1) When offset1(ubeshort) !=0x0344:
|
||||
# 1.1) And offset3(ubyte).b7=0:
|
||||
# - b0=pixel aspect ratio: 1=2:1 (note: this ignores that the machine's 1:1 pixel aspect ratio isn't really 1:1)
|
||||
# - b1=number of colors: 0=16 colors, 1=8 colors
|
||||
# - b2=Palette or fixed colors flag (called "analog" and "digital" in the doc): 0=Paletted, 1=Fixed colors encoded directly in the pixel data
|
||||
# 1.2) And offset3(ubyte).B7=1:
|
||||
# - b0=256 paletted colors
|
||||
# - b1=256 fixed colors using the MSX SCR8 palette
|
||||
#2) When offset1(ubeshort) =0x0344:
|
||||
# - 256x212 image with 19268 YJK colors. The usual resolution and color information fields from the file must be ignored
|
||||
>>&1 ubeshort 0x0344 256x212, 19268 fixed YJK colors
|
||||
>>&1 ubeshort !0x0344
|
||||
>>>&5 uleshort+1 x %dx
|
||||
>>>&7 uleshort+1 x \b%d,
|
||||
>>>&0 ubyte&0x86 0x00 16 paletted RGB colors
|
||||
>>>&0 ubyte&0x86 0x02 8 paletted RGB colors
|
||||
>>>&0 ubyte&0x86 0x04 16 fixed RGB colors
|
||||
>>>&0 ubyte&0x86 0x06 8 fixed RGB colors
|
||||
>>>&0 ubyte&0x81 0x80 256 paletted RGB colors
|
||||
>>>&0 ubyte&0x81 0x81 256 fixed MSX-SCR8 colors
|
||||
>>>&0 ubyte&0x01 1 \b, 2:1 dot aspect ratio
|
||||
|
||||
# XLD4 (Q4) picture
|
||||
11 string/b MAJYO XLD4(Q4) picture
|
||||
|
||||
# Yanagisawa Pi picture
|
||||
#0 string Pi\x1A\0 Yanagisawa Pi picture
|
||||
#>3 search/0x200 \x04
|
||||
0 string Pi
|
||||
>2 search/0x200 \x1A
|
||||
>>&0 ubyte 0
|
||||
>>>&3 ubyte 4 Yanagisawa Pi 16 color picture,
|
||||
>>>&4 byte x system ID: %c
|
||||
>>>&5 byte x \b%c
|
||||
>>>&6 byte x \b%c
|
||||
>>>&7 byte x \b%c,
|
||||
>>>&10 ubeshort x %dx
|
||||
>>>&12 ubeshort x \b%d
|
||||
>>>&3 ubyte 8 Yanagisawa Pi 256 color picture
|
||||
>>>&4 byte x system ID: %c
|
||||
>>>&5 byte x \b%c
|
||||
>>>&6 byte x \b%c
|
||||
>>>&7 byte x \b%c,
|
||||
>>>&10 ubeshort x %dx
|
||||
>>>&12 ubeshort x \b%d
|
@ -1,5 +1,5 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: perl,v 1.24 2015/03/27 17:58:58 christos Exp $
|
||||
# $File: perl,v 1.25 2016/06/07 23:28:37 rrt Exp $
|
||||
# perl: file(1) magic for Larry Wall's perl language.
|
||||
#
|
||||
# The `eval' lines recognizes an outrageously clever hack.
|
||||
@ -23,11 +23,11 @@
|
||||
!:mime text/x-perl
|
||||
0 search/1024 eval\ '(exit\ $?0)'\ &&\ eval\ 'exec Perl script text
|
||||
!:mime text/x-perl
|
||||
0 search/1024 #!/usr/bin/env\ perl Perl script text executable
|
||||
0 string #!/usr/bin/env\ perl Perl script text executable
|
||||
!:mime text/x-perl
|
||||
0 search/1024 #!\ /usr/bin/env\ perl Perl script text executable
|
||||
0 string #!\ /usr/bin/env\ perl Perl script text executable
|
||||
!:mime text/x-perl
|
||||
0 search/1024 #!
|
||||
0 string #!
|
||||
>0 regex \^#!.*/bin/perl([[:space:]].*)*$ Perl script text executable
|
||||
!:mime text/x-perl
|
||||
|
||||
|
25
contrib/file/magic/Magdir/x68000
Normal file
25
contrib/file/magic/Magdir/x68000
Normal file
@ -0,0 +1,25 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# x68000: file(1) magic for the Sharp Home Computer
|
||||
# v1.0
|
||||
# Fabio R. Schmidlin <sd-snatcher@users.sourceforge.net>
|
||||
|
||||
# Yanagisawa PIC picture
|
||||
0 string PIC
|
||||
>3 search/0x200 \x1A
|
||||
>>&0 search/0x200 \x0
|
||||
>>>&0 ubyte 0 Yanagisawa PIC image file,
|
||||
>>>>&0 ubyte&15 0 model: X68000,
|
||||
>>>>&0 ubyte&15 1 model: PC-88VA,
|
||||
>>>>&0 ubyte&15 2 model: FM-TOWNS,
|
||||
>>>>&0 ubyte&15 3 model: MAC,
|
||||
>>>>&0 ubyte&15 15 model: Generic,
|
||||
>>>>&3 ubeshort x %dx
|
||||
>>>>&5 ubeshort x \b%d,
|
||||
>>>>&1 ubeshort 4 colors: 16
|
||||
>>>>&1 ubeshort 8 colors: 256
|
||||
>>>>&1 ubeshort 12 colors: 4096
|
||||
>>>>&1 ubeshort 15 colors: 32768
|
||||
>>>>&1 ubeshort 16 colors: 65536
|
||||
>>>>&1 ubeshort >16 colors: %d-bit
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# $File: Makefile.am,v 1.113 2016/02/26 15:52:45 christos Exp $
|
||||
# $File: Makefile.am,v 1.116 2016/06/13 19:09:31 christos Exp $
|
||||
#
|
||||
MAGIC_FRAGMENT_BASE = Magdir
|
||||
MAGIC_DIR = $(top_srcdir)/magic
|
||||
@ -29,6 +29,7 @@ $(MAGIC_FRAGMENT_DIR)/asterix \
|
||||
$(MAGIC_FRAGMENT_DIR)/att3b \
|
||||
$(MAGIC_FRAGMENT_DIR)/audio \
|
||||
$(MAGIC_FRAGMENT_DIR)/basis \
|
||||
$(MAGIC_FRAGMENT_DIR)/ber \
|
||||
$(MAGIC_FRAGMENT_DIR)/bflt \
|
||||
$(MAGIC_FRAGMENT_DIR)/bioinformatics \
|
||||
$(MAGIC_FRAGMENT_DIR)/blackberry \
|
||||
@ -57,6 +58,7 @@ $(MAGIC_FRAGMENT_DIR)/communications \
|
||||
$(MAGIC_FRAGMENT_DIR)/compress \
|
||||
$(MAGIC_FRAGMENT_DIR)/console \
|
||||
$(MAGIC_FRAGMENT_DIR)/convex \
|
||||
$(MAGIC_FRAGMENT_DIR)/coverage \
|
||||
$(MAGIC_FRAGMENT_DIR)/cracklib \
|
||||
$(MAGIC_FRAGMENT_DIR)/ctags \
|
||||
$(MAGIC_FRAGMENT_DIR)/ctf \
|
||||
@ -191,6 +193,8 @@ $(MAGIC_FRAGMENT_DIR)/parrot \
|
||||
$(MAGIC_FRAGMENT_DIR)/pascal \
|
||||
$(MAGIC_FRAGMENT_DIR)/pbf \
|
||||
$(MAGIC_FRAGMENT_DIR)/pbm \
|
||||
$(MAGIC_FRAGMENT_DIR)/pc88 \
|
||||
$(MAGIC_FRAGMENT_DIR)/pc98 \
|
||||
$(MAGIC_FRAGMENT_DIR)/pdf \
|
||||
$(MAGIC_FRAGMENT_DIR)/pdp \
|
||||
$(MAGIC_FRAGMENT_DIR)/perl \
|
||||
@ -271,6 +275,7 @@ $(MAGIC_FRAGMENT_DIR)/windows \
|
||||
$(MAGIC_FRAGMENT_DIR)/wireless \
|
||||
$(MAGIC_FRAGMENT_DIR)/wordprocessors \
|
||||
$(MAGIC_FRAGMENT_DIR)/wsdl \
|
||||
$(MAGIC_FRAGMENT_DIR)/x68000 \
|
||||
$(MAGIC_FRAGMENT_DIR)/xdelta \
|
||||
$(MAGIC_FRAGMENT_DIR)/xenix \
|
||||
$(MAGIC_FRAGMENT_DIR)/xilinx \
|
||||
|
@ -273,7 +273,7 @@ top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
|
||||
#
|
||||
# $File: Makefile.am,v 1.113 2016/02/26 15:52:45 christos Exp $
|
||||
# $File: Makefile.am,v 1.116 2016/06/13 19:09:31 christos Exp $
|
||||
#
|
||||
MAGIC_FRAGMENT_BASE = Magdir
|
||||
MAGIC_DIR = $(top_srcdir)/magic
|
||||
@ -301,6 +301,7 @@ $(MAGIC_FRAGMENT_DIR)/asterix \
|
||||
$(MAGIC_FRAGMENT_DIR)/att3b \
|
||||
$(MAGIC_FRAGMENT_DIR)/audio \
|
||||
$(MAGIC_FRAGMENT_DIR)/basis \
|
||||
$(MAGIC_FRAGMENT_DIR)/ber \
|
||||
$(MAGIC_FRAGMENT_DIR)/bflt \
|
||||
$(MAGIC_FRAGMENT_DIR)/bioinformatics \
|
||||
$(MAGIC_FRAGMENT_DIR)/blackberry \
|
||||
@ -329,6 +330,7 @@ $(MAGIC_FRAGMENT_DIR)/communications \
|
||||
$(MAGIC_FRAGMENT_DIR)/compress \
|
||||
$(MAGIC_FRAGMENT_DIR)/console \
|
||||
$(MAGIC_FRAGMENT_DIR)/convex \
|
||||
$(MAGIC_FRAGMENT_DIR)/coverage \
|
||||
$(MAGIC_FRAGMENT_DIR)/cracklib \
|
||||
$(MAGIC_FRAGMENT_DIR)/ctags \
|
||||
$(MAGIC_FRAGMENT_DIR)/ctf \
|
||||
@ -463,6 +465,8 @@ $(MAGIC_FRAGMENT_DIR)/parrot \
|
||||
$(MAGIC_FRAGMENT_DIR)/pascal \
|
||||
$(MAGIC_FRAGMENT_DIR)/pbf \
|
||||
$(MAGIC_FRAGMENT_DIR)/pbm \
|
||||
$(MAGIC_FRAGMENT_DIR)/pc88 \
|
||||
$(MAGIC_FRAGMENT_DIR)/pc98 \
|
||||
$(MAGIC_FRAGMENT_DIR)/pdf \
|
||||
$(MAGIC_FRAGMENT_DIR)/pdp \
|
||||
$(MAGIC_FRAGMENT_DIR)/perl \
|
||||
@ -543,6 +547,7 @@ $(MAGIC_FRAGMENT_DIR)/windows \
|
||||
$(MAGIC_FRAGMENT_DIR)/wireless \
|
||||
$(MAGIC_FRAGMENT_DIR)/wordprocessors \
|
||||
$(MAGIC_FRAGMENT_DIR)/wsdl \
|
||||
$(MAGIC_FRAGMENT_DIR)/x68000 \
|
||||
$(MAGIC_FRAGMENT_DIR)/xdelta \
|
||||
$(MAGIC_FRAGMENT_DIR)/xenix \
|
||||
$(MAGIC_FRAGMENT_DIR)/xilinx \
|
||||
|
@ -1,6 +1,6 @@
|
||||
MAGIC = $(pkgdatadir)/magic
|
||||
lib_LTLIBRARIES = libmagic.la
|
||||
include_HEADERS = magic.h
|
||||
nodist_include_HEADERS = magic.h
|
||||
|
||||
bin_PROGRAMS = file
|
||||
|
||||
|
@ -98,8 +98,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(include_HEADERS) \
|
||||
$(am__DIST_COMMON)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
@ -193,7 +192,7 @@ am__can_run_installinfo = \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
HEADERS = $(include_HEADERS)
|
||||
HEADERS = $(nodist_include_HEADERS)
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
# Read a list of newline-separated strings from the standard input,
|
||||
# and print each of them once, without duplicates. Input order is
|
||||
@ -340,7 +339,7 @@ top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
MAGIC = $(pkgdatadir)/magic
|
||||
lib_LTLIBRARIES = libmagic.la
|
||||
include_HEADERS = magic.h
|
||||
nodist_include_HEADERS = magic.h
|
||||
AM_CPPFLAGS = -DMAGIC='"$(MAGIC)"'
|
||||
AM_CFLAGS = $(CFLAG_VISIBILITY) @WARNINGS@
|
||||
libmagic_la_SOURCES = magic.c apprentice.c softmagic.c ascmagic.c \
|
||||
@ -551,9 +550,9 @@ mostlyclean-libtool:
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
install-includeHEADERS: $(include_HEADERS)
|
||||
install-nodist_includeHEADERS: $(nodist_include_HEADERS)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
|
||||
@list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
|
||||
@ -567,9 +566,9 @@ install-includeHEADERS: $(include_HEADERS)
|
||||
$(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
|
||||
done
|
||||
|
||||
uninstall-includeHEADERS:
|
||||
uninstall-nodist_includeHEADERS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
|
||||
@list='$(nodist_include_HEADERS)'; test -n "$(includedir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
|
||||
|
||||
@ -721,7 +720,7 @@ info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-includeHEADERS
|
||||
install-data-am: install-nodist_includeHEADERS
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
@ -767,8 +766,8 @@ ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS \
|
||||
uninstall-libLTLIBRARIES
|
||||
uninstall-am: uninstall-binPROGRAMS uninstall-libLTLIBRARIES \
|
||||
uninstall-nodist_includeHEADERS
|
||||
|
||||
.MAKE: all check install install-am install-strip
|
||||
|
||||
@ -779,15 +778,15 @@ uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-binPROGRAMS install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am \
|
||||
install-includeHEADERS install-info install-info-am \
|
||||
install-libLTLIBRARIES install-man install-pdf install-pdf-am \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-libLTLIBRARIES install-man \
|
||||
install-nodist_includeHEADERS install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \
|
||||
uninstall-includeHEADERS uninstall-libLTLIBRARIES
|
||||
uninstall-libLTLIBRARIES uninstall-nodist_includeHEADERS
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
@ -32,7 +32,7 @@
|
||||
#include "file.h"
|
||||
|
||||
#ifndef lint
|
||||
FILE_RCSID("@(#)$File: apprentice.c,v 1.248 2016/03/31 17:51:12 christos Exp $")
|
||||
FILE_RCSID("@(#)$File: apprentice.c,v 1.249 2016/05/17 21:43:07 christos Exp $")
|
||||
#endif /* lint */
|
||||
|
||||
#include "magic.h"
|
||||
@ -3104,6 +3104,7 @@ apprentice_compile(struct magic_set *ms, struct magic_map *map, const char *fn)
|
||||
(void)close(fd);
|
||||
rv = 0;
|
||||
out:
|
||||
apprentice_unmap(map);
|
||||
free(dbname);
|
||||
return rv;
|
||||
}
|
||||
|
@ -35,7 +35,7 @@
|
||||
#include "file.h"
|
||||
|
||||
#ifndef lint
|
||||
FILE_RCSID("@(#)$File: cdf.c,v 1.80 2016/05/06 15:17:10 christos Exp $")
|
||||
FILE_RCSID("@(#)$File: cdf.c,v 1.82 2016/06/01 22:25:25 christos Exp $")
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
@ -572,11 +572,11 @@ cdf_read_short_sector_chain(const cdf_header_t *h,
|
||||
{
|
||||
size_t ss = CDF_SHORT_SEC_SIZE(h), i, j;
|
||||
scn->sst_tab = NULL;
|
||||
scn->sst_len = cdf_count_chain(ssat, sid, ss);
|
||||
scn->sst_len = cdf_count_chain(ssat, sid, CDF_SEC_SIZE(h));
|
||||
scn->sst_dirlen = len;
|
||||
scn->sst_ss = ss;
|
||||
|
||||
if (sst->sst_tab == NULL || scn->sst_len == (size_t)-1)
|
||||
if (scn->sst_len == (size_t)-1)
|
||||
goto out;
|
||||
|
||||
scn->sst_tab = calloc(scn->sst_len, ss);
|
||||
@ -683,7 +683,7 @@ cdf_read_ssat(const cdf_info_t *info, const cdf_header_t *h,
|
||||
cdf_secid_t sid = h->h_secid_first_sector_in_short_sat;
|
||||
|
||||
ssat->sat_tab = NULL;
|
||||
ssat->sat_len = cdf_count_chain(sat, sid, CDF_SEC_SIZE(h));
|
||||
ssat->sat_len = cdf_count_chain(sat, sid, ss);
|
||||
if (ssat->sat_len == (size_t)-1)
|
||||
goto out;
|
||||
|
||||
@ -1068,6 +1068,8 @@ cdf_unpack_catalog(const cdf_header_t *h, const cdf_stream_t *sst,
|
||||
if (b > eb)
|
||||
break;
|
||||
}
|
||||
if (nr == 0)
|
||||
return -1;
|
||||
nr--;
|
||||
*cat = CAST(cdf_catalog_t *,
|
||||
malloc(sizeof(cdf_catalog_t) + nr * sizeof(*ce)));
|
||||
|
@ -35,7 +35,7 @@
|
||||
#include "file.h"
|
||||
|
||||
#ifndef lint
|
||||
FILE_RCSID("@(#)$File: compress.c,v 1.96 2016/04/20 00:00:26 christos Exp $")
|
||||
FILE_RCSID("@(#)$File: compress.c,v 1.97 2016/05/13 23:02:28 christos Exp $")
|
||||
#endif
|
||||
|
||||
#include "magic.h"
|
||||
@ -62,10 +62,9 @@ typedef void (*sig_t)(int);
|
||||
#if defined(HAVE_SYS_TIME_H)
|
||||
#include <sys/time.h>
|
||||
#endif
|
||||
#if defined(HAVE_ZLIB_H) && defined(HAVE_LIBZ)
|
||||
#if defined(HAVE_ZLIB_H)
|
||||
#define BUILTIN_DECOMPRESS
|
||||
#include <zlib.h>
|
||||
#define ZLIBSUPPORT
|
||||
#endif
|
||||
#ifdef DEBUG
|
||||
int tty = -1;
|
||||
|
@ -35,7 +35,7 @@
|
||||
#include "file.h"
|
||||
|
||||
#ifndef lint
|
||||
FILE_RCSID("@(#)$File: der.c,v 1.6 2016/04/21 14:26:03 christos Exp $")
|
||||
FILE_RCSID("@(#)$File: der.c,v 1.7 2016/06/01 22:01:15 christos Exp $")
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ -221,7 +221,7 @@ int32_t
|
||||
der_offs(struct magic_set *ms, struct magic *m, size_t nbytes)
|
||||
{
|
||||
const uint8_t *b = CAST(const void *, ms->search.s);
|
||||
size_t offs = 0, len = ms->search.rm_len ? ms->search.rm_len : nbytes;
|
||||
size_t offs = 0, len = ms->search.s_len ? ms->search.s_len : nbytes;
|
||||
|
||||
if (gettag(b, &offs, len) == DER_BAD)
|
||||
return -1;
|
||||
|
@ -32,7 +32,7 @@
|
||||
#include "file.h"
|
||||
|
||||
#ifndef lint
|
||||
FILE_RCSID("@(#)$File: file.c,v 1.170 2016/03/31 17:51:12 christos Exp $")
|
||||
FILE_RCSID("@(#)$File: file.c,v 1.171 2016/05/17 15:52:45 christos Exp $")
|
||||
#endif /* lint */
|
||||
|
||||
#include "magic.h"
|
||||
@ -351,9 +351,10 @@ main(int argc, char *argv[])
|
||||
if (c == -1) {
|
||||
(void)fprintf(stderr, "%s: %s\n", progname,
|
||||
magic_error(magic));
|
||||
return 1;
|
||||
e = 1;
|
||||
goto out;
|
||||
}
|
||||
return 0;
|
||||
goto out;
|
||||
default:
|
||||
if (magic == NULL)
|
||||
if ((magic = load(magicfile, flags)) == NULL)
|
||||
@ -383,6 +384,7 @@ main(int argc, char *argv[])
|
||||
e |= process(magic, argv[optind], wid);
|
||||
}
|
||||
|
||||
out:
|
||||
if (magic)
|
||||
magic_close(magic);
|
||||
return e;
|
||||
|
@ -1,126 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Christos Zoulas 2003.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice immediately at the beginning of the file, without modification,
|
||||
* this list of conditions, and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
#ifndef _MAGIC_H
|
||||
#define _MAGIC_H
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#define MAGIC_NONE 0x0000000 /* No flags */
|
||||
#define MAGIC_DEBUG 0x0000001 /* Turn on debugging */
|
||||
#define MAGIC_SYMLINK 0x0000002 /* Follow symlinks */
|
||||
#define MAGIC_COMPRESS 0x0000004 /* Check inside compressed files */
|
||||
#define MAGIC_DEVICES 0x0000008 /* Look at the contents of devices */
|
||||
#define MAGIC_MIME_TYPE 0x0000010 /* Return the MIME type */
|
||||
#define MAGIC_CONTINUE 0x0000020 /* Return all matches */
|
||||
#define MAGIC_CHECK 0x0000040 /* Print warnings to stderr */
|
||||
#define MAGIC_PRESERVE_ATIME 0x0000080 /* Restore access time on exit */
|
||||
#define MAGIC_RAW 0x0000100 /* Don't convert unprintable chars */
|
||||
#define MAGIC_ERROR 0x0000200 /* Handle ENOENT etc as real errors */
|
||||
#define MAGIC_MIME_ENCODING 0x0000400 /* Return the MIME encoding */
|
||||
#define MAGIC_MIME (MAGIC_MIME_TYPE|MAGIC_MIME_ENCODING)
|
||||
#define MAGIC_APPLE 0x0000800 /* Return the Apple creator/type */
|
||||
#define MAGIC_EXTENSION 0x1000000 /* Return a /-separated list of
|
||||
* extensions */
|
||||
#define MAGIC_COMPRESS_TRANSP 0x2000000 /* Check inside compressed files
|
||||
* but not report compression */
|
||||
#define MAGIC_NODESC (MAGIC_EXTENSION|MAGIC_MIME|MAGIC_APPLE)
|
||||
|
||||
#define MAGIC_NO_CHECK_COMPRESS 0x0001000 /* Don't check for compressed files */
|
||||
#define MAGIC_NO_CHECK_TAR 0x0002000 /* Don't check for tar files */
|
||||
#define MAGIC_NO_CHECK_SOFT 0x0004000 /* Don't check magic entries */
|
||||
#define MAGIC_NO_CHECK_APPTYPE 0x0008000 /* Don't check application type */
|
||||
#define MAGIC_NO_CHECK_ELF 0x0010000 /* Don't check for elf details */
|
||||
#define MAGIC_NO_CHECK_TEXT 0x0020000 /* Don't check for text files */
|
||||
#define MAGIC_NO_CHECK_CDF 0x0040000 /* Don't check for cdf files */
|
||||
#define MAGIC_NO_CHECK_TOKENS 0x0100000 /* Don't check tokens */
|
||||
#define MAGIC_NO_CHECK_ENCODING 0x0200000 /* Don't check text encodings */
|
||||
|
||||
/* No built-in tests; only consult the magic file */
|
||||
#define MAGIC_NO_CHECK_BUILTIN ( \
|
||||
MAGIC_NO_CHECK_COMPRESS | \
|
||||
MAGIC_NO_CHECK_TAR | \
|
||||
/* MAGIC_NO_CHECK_SOFT | */ \
|
||||
MAGIC_NO_CHECK_APPTYPE | \
|
||||
MAGIC_NO_CHECK_ELF | \
|
||||
MAGIC_NO_CHECK_TEXT | \
|
||||
MAGIC_NO_CHECK_CDF | \
|
||||
MAGIC_NO_CHECK_TOKENS | \
|
||||
MAGIC_NO_CHECK_ENCODING | \
|
||||
0 \
|
||||
)
|
||||
|
||||
/* Defined for backwards compatibility (renamed) */
|
||||
#define MAGIC_NO_CHECK_ASCII MAGIC_NO_CHECK_TEXT
|
||||
|
||||
/* Defined for backwards compatibility; do nothing */
|
||||
#define MAGIC_NO_CHECK_FORTRAN 0x000000 /* Don't check ascii/fortran */
|
||||
#define MAGIC_NO_CHECK_TROFF 0x000000 /* Don't check ascii/troff */
|
||||
|
||||
#define MAGIC_VERSION 526 /* This implementation */
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct magic_set *magic_t;
|
||||
magic_t magic_open(int);
|
||||
void magic_close(magic_t);
|
||||
|
||||
const char *magic_getpath(const char *, int);
|
||||
const char *magic_file(magic_t, const char *);
|
||||
const char *magic_descriptor(magic_t, int);
|
||||
const char *magic_buffer(magic_t, const void *, size_t);
|
||||
|
||||
const char *magic_error(magic_t);
|
||||
int magic_setflags(magic_t, int);
|
||||
|
||||
int magic_version(void);
|
||||
int magic_load(magic_t, const char *);
|
||||
int magic_load_buffers(magic_t, void **, size_t *, size_t);
|
||||
|
||||
int magic_compile(magic_t, const char *);
|
||||
int magic_check(magic_t, const char *);
|
||||
int magic_list(magic_t, const char *);
|
||||
int magic_errno(magic_t);
|
||||
|
||||
#define MAGIC_PARAM_INDIR_MAX 0
|
||||
#define MAGIC_PARAM_NAME_MAX 1
|
||||
#define MAGIC_PARAM_ELF_PHNUM_MAX 2
|
||||
#define MAGIC_PARAM_ELF_SHNUM_MAX 3
|
||||
#define MAGIC_PARAM_ELF_NOTES_MAX 4
|
||||
#define MAGIC_PARAM_REGEX_MAX 5
|
||||
#define MAGIC_PARAM_BYTES_MAX 6
|
||||
|
||||
int magic_setparam(magic_t, int, const void *);
|
||||
int magic_getparam(magic_t, int, void *);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* _MAGIC_H */
|
@ -32,7 +32,7 @@
|
||||
#include "file.h"
|
||||
|
||||
#ifndef lint
|
||||
FILE_RCSID("@(#)$File: softmagic.c,v 1.231 2016/04/21 15:23:31 christos Exp $")
|
||||
FILE_RCSID("@(#)$File: softmagic.c,v 1.234 2016/06/13 12:02:06 christos Exp $")
|
||||
#endif /* lint */
|
||||
|
||||
#include "magic.h"
|
||||
@ -827,6 +827,7 @@ moffset(struct magic_set *ms, struct magic *m, size_t nbytes, int32_t *op)
|
||||
"Bad DER offset %d nbytes=%zu",
|
||||
o, nbytes);
|
||||
}
|
||||
*op = 0;
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
@ -1181,6 +1182,8 @@ mcopy(struct magic_set *ms, union VALUETYPE *p, int type, int indir,
|
||||
switch (type) {
|
||||
case FILE_DER:
|
||||
case FILE_SEARCH:
|
||||
if (offset > nbytes)
|
||||
offset = nbytes;
|
||||
ms->search.s = RCAST(const char *, s) + offset;
|
||||
ms->search.s_len = nbytes - offset;
|
||||
ms->search.offset = offset;
|
||||
@ -2077,6 +2080,7 @@ magiccheck(struct magic_set *ms, struct magic *m)
|
||||
if (slen != 0) {
|
||||
copy = malloc(slen);
|
||||
if (copy == NULL) {
|
||||
file_regfree(&rx);
|
||||
file_error(ms, errno,
|
||||
"can't allocate %" SIZE_T_FORMAT "u bytes",
|
||||
slen);
|
||||
|
@ -54,4 +54,10 @@ ${mp}: ${mp:C/[0-9]/man/}
|
||||
-e 's,__MAGIC__,${MAGICPATH}/magic,g' ${.ALLSRC} > ${.TARGET}
|
||||
.endfor
|
||||
|
||||
CLEANFILES+= ${INCS}
|
||||
.for inc in ${INCS}
|
||||
${inc}: ${inc}.in
|
||||
sed -e 's,X.YY,${FILEVER:S,",,g:S,.,,g},g' ${.ALLSRC} > ${.TARGET}
|
||||
.endfor
|
||||
|
||||
.include <bsd.lib.mk>
|
||||
|
@ -293,7 +293,7 @@
|
||||
#define PACKAGE_NAME "file"
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#define PACKAGE_STRING "file 5.27"
|
||||
#define PACKAGE_STRING "file 5.28"
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#define PACKAGE_TARNAME "file"
|
||||
@ -302,7 +302,7 @@
|
||||
#define PACKAGE_URL ""
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION "5.27"
|
||||
#define PACKAGE_VERSION "5.28"
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#define STDC_HEADERS 1
|
||||
@ -333,7 +333,7 @@
|
||||
|
||||
|
||||
/* Version number of package */
|
||||
#define VERSION "5.27"
|
||||
#define VERSION "5.28"
|
||||
|
||||
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
|
||||
significant byte first (like Motorola and SPARC, unlike Intel). */
|
||||
@ -347,6 +347,9 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Enable zlib compression support */
|
||||
#define ZLIBSUPPORT 1
|
||||
|
||||
/* Enable large inode numbers on Mac OS X 10.5. */
|
||||
#ifndef _DARWIN_USE_64_BIT_INODE
|
||||
# define _DARWIN_USE_64_BIT_INODE 1
|
||||
|
Loading…
Reference in New Issue
Block a user