import file-5.20; bug fixes and better image magic descriptions.

This commit is contained in:
christos 2014-10-10 20:08:15 +00:00
parent d424d94564
commit ebfd11214d
24 changed files with 642 additions and 159 deletions

View File

@ -1,3 +1,19 @@
2014-10-10 15:01 Christos Zoulas <christos@zoulas.com>
* release 5.20
2014-08-17 10:01 Christos Zoulas <christos@zoulas.com>
* recognize encrypted CDF documents
2014-08-04 9:18 Christos Zoulas <christos@zoulas.com>
* add magic_load_buffers from Brooks Davis
2014-07-24 16:40 Christos Zoulas <christos@zoulas.com>
* add thumbs.db support
2014-06-12 12:28 Christos Zoulas <christos@zoulas.com>
* release 5.19

View File

@ -1,6 +1,6 @@
#------------------------------------------------------------
# $File: android,v 1.4 2014/06/03 19:01:34 christos Exp $
# $File: android,v 1.6 2014/08/04 06:00:36 christos Exp $
# Various android related magic entries
#------------------------------------------------------------
@ -98,3 +98,85 @@
#>>>>>&1 regex/1l .* \b, PBKDF2 rounds: %s
#>>>>>>&1 regex/1l .* \b, IV: %s
#>>>>>>>&1 regex/1l .* \b, Key: %s
# *.pit files by Joerg Jenderek
# http://forum.xda-developers.com/showthread.php?p=9122369
# http://forum.xda-developers.com/showthread.php?t=816449
# Partition Information Table for Samsung's smartphone with Android
# used by flash software Odin
0 ulelong 0x12349876
# 1st pit entry marker
>0x01C ulequad&0xFFFFFFFCFFFFFFFC =0x0000000000000000
# minimal 13 and maximal 18 PIT entries found
>>4 ulelong <128 Partition Information Table for Samsung smartphone
>>>4 ulelong x \b, %d entries
# 1. pit entry
>>>4 ulelong >0 \b; #1
>>>0x01C use PIT-entry
>>>4 ulelong >1 \b; #2
>>>0x0A0 use PIT-entry
>>>4 ulelong >2 \b; #3
>>>0x124 use PIT-entry
>>>4 ulelong >3 \b; #4
>>>0x1A8 use PIT-entry
>>>4 ulelong >4 \b; #5
>>>0x22C use PIT-entry
>>>4 ulelong >5 \b; #6
>>>0x2B0 use PIT-entry
>>>4 ulelong >6 \b; #7
>>>0x334 use PIT-entry
>>>4 ulelong >7 \b; #8
>>>0x3B8 use PIT-entry
>>>4 ulelong >8 \b; #9
>>>0x43C use PIT-entry
>>>4 ulelong >9 \b; #10
>>>0x4C0 use PIT-entry
>>>4 ulelong >10 \b; #11
>>>0x544 use PIT-entry
>>>4 ulelong >11 \b; #12
>>>0x5C8 use PIT-entry
>>>4 ulelong >12 \b; #13
>>>>0x64C use PIT-entry
# 14. pit entry
>>>4 ulelong >13 \b; #14
>>>>0x6D0 use PIT-entry
>>>4 ulelong >14 \b; #15
>>>0x754 use PIT-entry
>>>4 ulelong >15 \b; #16
>>>0x7D8 use PIT-entry
>>>4 ulelong >16 \b; #17
>>>0x85C use PIT-entry
# 18. pit entry
>>>4 ulelong >17 \b; #18
>>>0x8E0 use PIT-entry
0 name PIT-entry
# garbage value implies end of pit entries
>0x00 ulequad&0xFFFFFFFCFFFFFFFC =0x0000000000000000
# skip empty partition name
>>0x24 ubyte !0
# partition name
>>>0x24 string >\0 %-.32s
# flags
>>>0x0C ulelong&0x00000002 2 \b+RW
# partition ID:
# 0~IPL,MOVINAND,GANG;1~PIT,GPT;2~HIDDEN;3~SBL,HIDDEN;4~SBL2,HIDDEN;5~BOOT;6~KENREl,RECOVER,misc;7~RECOVER
# ;11~MODEM;20~efs;21~PARAM;22~FACTORY,SYSTEM;23~DBDATAFS,USERDATA;24~CACHE;80~BOOTLOADER;81~TZSW
>>>0x08 ulelong x (0x%x)
# filename
>>>0x44 string >\0 "%-.64s"
#>>>0x18 ulelong >0
# blocksize in 512 byte units ?
#>>>>0x18 ulelong x \b, %db
# partition size in blocks ?
#>>>>0x22 ulelong x \b*%d
# Android bootimg format
# From https://android.googlesource.com/\
# platform/system/core/+/master/libsparse/sparse_format.h
0 lelong 0xed26ff3a Android sparse image
>4 leshort x \b, version: %d
>6 leshort x \b.%d
>16 lelong x \b, Total of %d
>12 lelong x \b %d-byte output blocks in
>20 lelong x \b %d input chunks.

View File

@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
# $File: animation,v 1.53 2014/04/30 21:41:02 christos Exp $
# $File: animation,v 1.55 2014/09/13 14:29:51 christos Exp $
# animation: file(1) magic for animation/movie formats
#
# animation formats
@ -32,43 +32,155 @@
!:mime application/x-quicktime-player
4 string/W jP JPEG 2000 image
!:mime image/jp2
# http://www.ftyps.com/ with local additions
4 string ftyp ISO Media
>8 string isom \b, MPEG v4 system, version 1
!:mime video/mp4
>8 string iso2 \b, MPEG v4 system, part 12 revision
>8 string mp41 \b, MPEG v4 system, version 1
!:mime video/mp4
>8 string mp42 \b, MPEG v4 system, version 2
!:mime video/mp4
>8 string mp7t \b, MPEG v4 system, MPEG v7 XML
>8 string mp7b \b, MPEG v4 system, MPEG v7 binary XML
>8 string/W jp2 \b, JPEG 2000
!:mime image/jp2
>8 string 3ge \b, MPEG v4 system, 3GPP
!:mime video/3gpp
>8 string 3gg \b, MPEG v4 system, 3GPP
!:mime video/3gpp
>8 string 3gp \b, MPEG v4 system, 3GPP
!:mime video/3gpp
>8 string 3gs \b, MPEG v4 system, 3GPP
!:mime video/3gpp
>8 string 3g2 \b, MPEG v4 system, 3GPP2
!:mime video/3gpp2
>>11 byte 4 \b v4 (H.263/AMR GSM 6.10)
>>11 byte 5 \b v5 (H.263/AMR GSM 6.10)
>>11 byte 6 \b v6 (ITU H.264/AMR GSM 6.10)
>8 string mmp4 \b, MPEG v4 system, 3GPP Mobile
!:mime video/mp4
>8 string avc1 \b, MPEG v4 system, 3GPP JVT AVC
>>11 byte a \b C.S0050-0 V1.0
>>11 byte b \b C.S0050-0-A V1.0.0
>>11 byte c \b C.S0050-0-B V1.0
>8 string 3ge \b, MPEG v4 system, 3GPP
!:mime video/3gpp
>8 string/W M4A \b, MPEG v4 system, iTunes AAC-LC
!:mime audio/mp4
>8 string/W M4V \b, MPEG v4 system, iTunes AVC-LC
>>11 byte 6 \b, Release 6 MBMS Extended Presentations
>>11 byte 7 \b, Release 7 MBMS Extended Presentations
>8 string 3gg \b, MPEG v4 system, 3GPP
>11 byte 6 \b, Release 6 General Profile
!:mime video/3gpp
>8 string 3gp \b, MPEG v4 system, 3GPP
>11 byte 1 \b, Release %d (non existent)
>11 byte 2 \b, Release %d (non existent)
>11 byte 3 \b, Release %d (non existent)
>11 byte 4 \b, Release %d
>11 byte 5 \b, Release %d
>11 byte 6 \b, Release %d
>11 byte 7 \b, Release %d Streaming Servers
!:mime video/3gpp
>8 string 3gs \b, MPEG v4 system, 3GPP
>11 byte 7 \b, Release %d Streaming Servers
!:mime video/3gpp
>8 string avc1 \b, MPEG v4 system, 3GPP JVT AVC [ISO 14496-12:2005]
!:mime video/mp4
>8 string/W M4P \b, MPEG v4 system, iTunes AES encrypted
>8 string/W M4B \b, MPEG v4 system, iTunes bookmarked
>8 string/W qt \b, Apple QuickTime movie
!:mime video/quicktime
>8 string CAEP \b, Canon Digital Camera
>8 string caqv \b, Casio Digital Camera
>8 string CDes \b, Convergent Design
>8 string da0a \b, DMB MAF w/ MPEG Layer II aud, MOT slides, DLS, JPG/PNG/MNG
>8 string da0b \b, DMB MAF, ext DA0A, with 3GPP timed text, DID, TVA, REL, IPMP
>8 string da1a \b, DMB MAF audio with ER-BSAC audio, JPG/PNG/MNG images
>8 string da1b \b, DMB MAF, ext da1a, with 3GPP timed text, DID, TVA, REL, IPMP
>8 string da2a \b, DMB MAF aud w/ HE-AAC v2 aud, MOT slides, DLS, JPG/PNG/MNG
>8 string da2b \b, DMB MAF, ext da2a, with 3GPP timed text, DID, TVA, REL, IPMP
>8 string da3a \b, DMB MAF aud with HE-AAC aud, JPG/PNG/MNG images
>8 string da3b \b, DMB MAF, ext da3a w/ BIFS, 3GPP, DID, TVA, REL, IPMP
>8 string dmb1 \b, DMB MAF supporting all the components defined in the spec
>8 string dmpf \b, Digital Media Project
>8 string drc1 \b, Dirac (wavelet compression), encap in ISO base media (MP4)
>8 string dv1a \b, DMB MAF vid w/ AVC vid, ER-BSAC aud, BIFS, JPG/PNG/MNG, TS
>8 string dv1b \b, DMB MAF, ext dv1a, with 3GPP timed text, DID, TVA, REL, IPMP
>8 string dv2a \b, DMB MAF vid w/ AVC vid, HE-AAC v2 aud, BIFS, JPG/PNG/MNG, TS
>8 string dv2b \b, DMB MAF, ext dv2a, with 3GPP timed text, DID, TVA, REL, IPMP
>8 string dv3a \b, DMB MAF vid w/ AVC vid, HE-AAC aud, BIFS, JPG/PNG/MNG, TS
>8 string dv3b \b, DMB MAF, ext dv3a, with 3GPP timed text, DID, TVA, REL, IPMP
>8 string dvr1 \b, DVB (.DVB) over RTP
!:mime video/vnd.dvb.file
>8 string dvt1 \b, DVB (.DVB) over MPEG-2 Transport Stream
!:mime video/vnd.dvb.file
>8 string F4V \b, Video for Adobe Flash Player 9+ (.F4V)
!:mime video/mp4
>8 string F4P \b, Protected Video for Adobe Flash Player 9+ (.F4P)
!:mime video/mp4
>8 string F4A \b, Audio for Adobe Flash Player 9+ (.F4A)
!:mime audio/mp4
>8 string F4B \b, Audio Book for Adobe Flash Player 9+ (.F4B)
!:mime audio/mp4
>8 string isc2 \b, ISMACryp 2.0 Encrypted File
# ?/enc-isoff-generic
>8 string iso2 \b, MP4 Base Media v2 [ISO 14496-12:2005]
!:mime video/mp4
>8 string isom \b, MP4 Base Media v1 [IS0 14496-12:2003]
!:mime video/mp4
>8 string/W jp2 \b, JPEG 2000
!:mime image/jp2
>8 string JP2 \b, JPEG 2000 Image (.JP2) [ISO 15444-1 ?]
!:mime image/jp2
>8 string JP20 \b, Unknown, from GPAC samples (prob non-existent)
>8 string jpm \b, JPEG 2000 Compound Image (.JPM) [ISO 15444-6]
!:mime image/jpm
>8 string jpx \b, JPEG 2000 w/ extensions (.JPX) [ISO 15444-2]
!:mime image/jpx
>8 string KDDI \b, 3GPP2 EZmovie for KDDI 3G cellphones
!:mime video/3gpp2
>8 string M4A \b, Apple iTunes AAC-LC (.M4A) Audio
!:mime audio/x-m4a
>8 string M4B \b, Apple iTunes AAC-LC (.M4B) Audio Book
!:mime audio/mp4
>8 string M4P \b, Apple iTunes AAC-LC (.M4P) AES Protected Audio
!:mime video/mp4
>8 string M4V \b, Apple iTunes Video (.M4V) Video
!:mime video/x-m4v
>8 string M4VH \b, Apple TV (.M4V)
!:mime video/x-m4v
>8 string M4VP \b, Apple iPhone (.M4V)
!:mime video/x-m4v
>8 string mj2s \b, Motion JPEG 2000 [ISO 15444-3] Simple Profile
!:mime video/mj2
>8 string mjp2 \b, Motion JPEG 2000 [ISO 15444-3] General Profile
!:mime video/mj2
>8 string mmp4 \b, MPEG-4/3GPP Mobile Profile (.MP4 / .3GP) (for NTT)
!:mime video/mp4
>8 string mobi \b, MPEG-4, MOBI format
!:mime video/mp4
>8 string mp21 \b, MPEG-21 [ISO/IEC 21000-9]
>8 string mp41 \b, MP4 v1 [ISO 14496-1:ch13]
!:mime video/mp4
>8 string mp42 \b, MP4 v2 [ISO 14496-14]
!:mime video/mp4
>8 string mp71 \b, MP4 w/ MPEG-7 Metadata [per ISO 14496-12]
>8 string mp7t \b, MPEG v4 system, MPEG v7 XML
>8 string mp7b \b, MPEG v4 system, MPEG v7 binary XML
>8 string mmp4 \b, MPEG v4 system, 3GPP Mobile
!:mime video/mp4
>8 string MPPI \b, Photo Player, MAF [ISO/IEC 23000-3]
>8 string mqt \b, Sony / Mobile QuickTime (.MQV) US Pat 7,477,830
!:mime video/quicktime
>8 string MSNV \b, MPEG-4 (.MP4) for SonyPSP
!:mime audio/mp4
>8 string NDAS \b, MP4 v2 [ISO 14496-14] Nero Digital AAC Audio
!:mime audio/mp4
>8 string NDSC \b, MPEG-4 (.MP4) Nero Cinema Profile
!:mime video/mp4
>8 string NDSH \b, MPEG-4 (.MP4) Nero HDTV Profile
!:mime video/mp4
>8 string NDSM \b, MPEG-4 (.MP4) Nero Mobile Profile
!:mime video/mp4
>8 string NDSP \b, MPEG-4 (.MP4) Nero Portable Profile
!:mime video/mp4
>8 string NDSS \b, MPEG-4 (.MP4) Nero Standard Profile
!:mime video/mp4
>8 string NDXC \b, H.264/MPEG-4 AVC (.MP4) Nero Cinema Profile
!:mime video/mp4
>8 string NDXH \b, H.264/MPEG-4 AVC (.MP4) Nero HDTV Profile
!:mime video/mp4
>8 string NDXM \b, H.264/MPEG-4 AVC (.MP4) Nero Mobile Profile
!:mime video/mp4
>8 string NDXP \b, H.264/MPEG-4 AVC (.MP4) Nero Portable Profile
!:mime video/mp4
>8 string NDXS \b, H.264/MPEG-4 AVC (.MP4) Nero Standard Profile
!:mime video/mp4
>8 string odcf \b, OMA DCF DRM Format 2.0 (OMA-TS-DRM-DCF-V2_0-20060303-A)
>8 string opf2 \b, OMA PDCF DRM Format 2.1 (OMA-TS-DRM-DCF-V2_1-20070724-C)
>8 string opx2 \b, OMA PDCF DRM + XBS ext (OMA-TS-DRM_XBS-V1_0-20070529-C)
>8 string pana \b, Panasonic Digital Camera
>8 string qt \b, Apple QuickTime (.MOV/QT)
!:mime video/quicktime
>8 string ROSS \b, Ross Video
>8 string sdv \b, SD Memory Card Video
>8 string ssc1 \b, Samsung stereo, single stream (patent pending)
>8 string ssc2 \b, Samsung stereo, dual stream (patent pending)
# MPEG sequences
# Scans for all common MPEG header start codes

View File

@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
# $File: blender,v 1.5 2009/09/19 16:28:08 christos Exp $
# $File: blender,v 1.6 2014/08/30 08:34:17 christos Exp $
# blender: file(1) magic for Blender 3D related files
#
# Native format rule v1.2. For questions use the developers list
@ -35,5 +35,5 @@
>>>0x44 string =GLOB \b.
>>>>0x60 beshort x \b%.4d
# Scripts that run in the embeded Python interpreter
# Scripts that run in the embedded Python interpreter
0 string #!BPY Blender3D BPython script

View File

@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
# $File: commands,v 1.50 2014/05/30 16:48:44 christos Exp $
# $File: commands,v 1.51 2014/09/27 00:12:55 christos Exp $
# commands: file(1) magic for various shells and interpreters
#
#0 string/w : shell archive or script for antique kernel text
@ -56,7 +56,7 @@
!:mime text/x-awk
0 string/wt #!\ /usr/bin/awk awk script text executable
!:mime text/x-awk
0 regex/4096 =^\\s{0,100}BEGIN\\s{0,100}[{] awk script text
0 regex/4096 =^\\s{0,100}BEGIN\\s{0,100}[{] awk or perl script text
# AT&T Bell Labs' Plan 9 shell
0 string/wt #!\ /bin/rc Plan 9 rc shell script text executable

View File

@ -1,5 +1,5 @@
#------------------------------------------------------------------------------
# $File: compress,v 1.58 2014/05/07 19:36:59 christos Exp $
# $File: compress,v 1.62 2014/09/13 14:27:12 christos Exp $
# compress: file(1) magic for pure-compression formats (no archives)
#
# compress, gzip, pack, compact, huf, squeeze, crunch, freeze, yabba, etc.
@ -251,3 +251,13 @@
# http://code.google.com/p/snappy/source/browse/trunk/framing_format.txt
0 string \377\006\0\0sNaPpY snappy framed data
!:mime application/x-snappy-framed
# qpress, http://www.quicklz.com/
0 string qpress10 qpress compressed data
!:mime application/x-qpress
# Zlib https://www.ietf.org/rfc/rfc6713.txt
0 beshort%31 =0
>0 byte&0xf =8
>>0 byte&0x80 =0 zlib compressed data
!:mime application/zlib

View File

@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
# $File: database,v 1.41 2014/06/03 19:17:27 christos Exp $
# $File: database,v 1.42 2014/08/19 14:18:04 christos Exp $
# database: file(1) magic for various databases
#
# extracted from header/code files by Graeme Wilford (eep2gw@ee.surrey.ac.uk)
@ -9,9 +9,17 @@
# GDBM magic numbers
# Will be maintained as part of the GDBM distribution in the future.
# <downsj@teeny.org>
0 belong 0x13579ace GNU dbm 1.x or ndbm database, big endian
0 belong 0x13579acd GNU dbm 1.x or ndbm database, big endian, 32-bit
!:mime application/x-gdbm
0 lelong 0x13579ace GNU dbm 1.x or ndbm database, little endian
0 belong 0x13579ace GNU dbm 1.x or ndbm database, big endian, old
!:mime application/x-gdbm
0 belong 0x13579acf GNU dbm 1.x or ndbm database, big endian, 64-bit
!:mime application/x-gdbm
0 lelong 0x13579acd GNU dbm 1.x or ndbm database, little endian, 32-bit
!:mime application/x-gdbm
0 lelong 0x13579ace GNU dbm 1.x or ndbm database, little endian, old
!:mime application/x-gdbm
0 lelong 0x13579acf GNU dbm 1.x or ndbm database, little endian, 64-bit
!:mime application/x-gdbm
0 string GDBM GNU dbm 2.x database
!:mime application/x-gdbm

View File

@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
# $File: images,v 1.91 2014/04/30 21:41:02 christos Exp $
# $File: images,v 1.95 2014/09/22 21:21:59 christos Exp $
# images: file(1) magic for image formats (see also "iff", and "c-lang" for
# XPM bitmaps)
#
@ -115,8 +115,92 @@
# never changed. The TIFF specification recommends testing for it.
0 string MM\x00\x2a TIFF image data, big-endian
!:mime image/tiff
>(4.L) use tiff_ifd
0 string II\x2a\x00 TIFF image data, little-endian
!:mime image/tiff
>(4.l) use tiff_ifd
0 name tiff_ifd
>0 leshort x \b, direntries=%d
>2 use tiff_entry
0 name tiff_entry
>0 leshort 0x100
>>4 lelong 1
>>>12 use tiff_entry
>>>8 lelong x \b, width=%d
>0 leshort 0x101
>>4 lelong 1
>>>8 lelong x \b, height=%d
>>>12 use tiff_entry
>0 leshort 0x102
>>8 lelong x \b, bps=%d
>>12 use tiff_entry
>0 leshort 0x103
>>4 lelong 1 \b, compression=
>>>8 lelong 1 \bnone
>>>8 lelong 2 \bhuffman
>>>8 lelong 3 \bbi-level group 3
>>>8 lelong 4 \bbi-level group 4
>>>8 lelong 5 \bLZW
>>>8 lelong 6 \bJPEG (old)
>>>8 lelong 7 \bJPEG
>>>8 lelong 8 \bdeflate
>>>8 lelong 9 \bJBIG, ITU-T T.85
>>>8 lelong 0xa \bJBIG, ITU-T T.43
>>>8 lelong 0x7ffe \bNeXT RLE 2-bit
>>>8 lelong 0x8005 \bPackBits (Macintosh RLE)
>>>8 lelong 0x8029 \bThunderscan RLE
>>>8 lelong 0x807f \bRasterPadding (CT or MP)
>>>8 lelong 0x8080 \bRLE (Line Work)
>>>8 lelong 0x8081 \bRLE (High-Res Cont-Tone)
>>>8 lelong 0x8082 \bRLE (Binary Line Work)
>>>8 lelong 0x80b2 \bDeflate (PKZIP)
>>>8 lelong 0x80b3 \bKodak DCS
>>>8 lelong 0x8765 \bJBIG
>>>8 lelong 0x8798 \bJPEG2000
>>>8 lelong 0x8799 \bNikon NEF Compressed
>>>8 default x
>>>>8 lelong x \b(unknown 0x%x)
>>>12 use tiff_entry
>0 leshort 0x106 \b, PhotometricIntepretation=
>>8 lelong 0 \bWhiteIsZero
>>8 lelong 1 \bBlackIsZero
>>8 lelong 2 \bRGB
>>8 lelong 3 \bRGB Palette
>>8 lelong 4 \bTransparency Mask
>>8 lelong 5 \bCMYK
>>8 lelong 6 \bYCbCr
>>8 lelong 8 \bCIELab
>>>8 lelong x \b(unknown=0x%x)
>>12 use tiff_entry
# FillOrder
>0 leshort 0x10a
>>4 lelong 1
>>>12 use tiff_entry
# DocumentName
>0 leshort 0x10d
>>(8.l) string x \b, name=%s
>>>12 use tiff_entry
# ImageDescription
>0 leshort 0x10e
>>(8.l) string x \b, description=%s
>>>12 use tiff_entry
# StripOffsets
>0 leshort 0x111
>>12 use tiff_entry
# NewSubFileType
>0 leshort 0xfe
>>12 use tiff_entry
# Datetime
>0 leshort 0x132
>>(8.l) string x \b, datetime=%s
>>>12 use tiff_entry
# HostComputer
>0 leshort 0x13c
>>(8.l) string x \b, hostcomputer=%s
>>>12 use tiff_entry
#>0 leshort x \b, unknown=0x%x
0 string MM\x00\x2b Big TIFF image data, big-endian
!:mime image/tiff
@ -892,6 +976,56 @@
0 string \x46\x4d\x52\x00 ISO/IEC 19794-2 Format Minutiae Record (FMR)
# WEBP https://developers.google.com/speed/webp/docs/riff_container
0 string RIFF
>8 string WEBP Web/P image data
>>4 lelong x \b, %d bytes
#0 string RIFF
#>8 string WEBP Web/P image data
#>>4 lelong x \b, %d bytes
# doc: http://www.shikino.co.jp/eng/products/images/FLOWER.jpg.zip
# example: http://www.shikino.co.jp/eng/products/images/FLOWER.wdp.zip
90 bequad 0x574D50484F544F00 JPEG-XR Image
>98 byte&0x08 =0x08 \b, hard tiling
>99 byte&0x80 =0x80 \b, tiling present
>99 byte&0x40 =0x40 \b, codestream present
>99 byte&0x38 x \b, spatial xform=
>99 byte&0x38 0x00 \bTL
>99 byte&0x38 0x08 \bBL
>99 byte&0x38 0x10 \bTR
>99 byte&0x38 0x18 \bBR
>99 byte&0x38 0x20 \bBT
>99 byte&0x38 0x28 \bRB
>99 byte&0x38 0x30 \bLT
>99 byte&0x38 0x38 \bLB
>100 byte&0x80 =0x80 \b, short header
>>102 beshort+1 x \b, %d
>>104 beshort+1 x \bx%d
>100 byte&0x80 =0x00 \b, long header
>>102 belong+1 x \b, %x
>>106 belong+1 x \bx%x
>101 beshort&0xf x \b, bitdepth=
>>101 beshort&0xf 0x0 \b1-WHITE=1
>>101 beshort&0xf 0x1 \b8
>>101 beshort&0xf 0x2 \b16
>>101 beshort&0xf 0x3 \b16-SIGNED
>>101 beshort&0xf 0x4 \b16-FLOAT
>>101 beshort&0xf 0x5 \b(reserved 5)
>>101 beshort&0xf 0x6 \b32-SIGNED
>>101 beshort&0xf 0x7 \b32-FLOAT
>>101 beshort&0xf 0x8 \b5
>>101 beshort&0xf 0x9 \b10
>>101 beshort&0xf 0xa \b5-6-5
>>101 beshort&0xf 0xb \b(reserved %d)
>>101 beshort&0xf 0xc \b(reserved %d)
>>101 beshort&0xf 0xd \b(reserved %d)
>>101 beshort&0xf 0xe \b(reserved %d)
>>101 beshort&0xf 0xf \b1-BLACK=1
>101 beshort&0xf0 x \b, colorfmt=
>>101 beshort&0xf0 0x00 \bYONLY
>>101 beshort&0xf0 0x10 \bYUV240
>>101 beshort&0xf0 0x20 \bYWV422
>>101 beshort&0xf0 0x30 \bYWV444
>>101 beshort&0xf0 0x40 \bCMYK
>>101 beshort&0xf0 0x50 \bCMYKDIRECT
>>101 beshort&0xf0 0x60 \bNCOMPONENT
>>101 beshort&0xf0 0x70 \bRGB
>>101 beshort&0xf0 0x80 \bRGBE
>>101 beshort&0xf0 >0x80 \b(reserved 0x%x)

View File

@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
# $File: jpeg,v 1.19 2013/02/04 15:50:03 christos Exp $
# $File: jpeg,v 1.21 2014/09/12 20:47:00 christos Exp $
# JPEG images
# SunOS 5.5.1 had
#
@ -22,10 +22,12 @@
>>11 byte x \b %d.
>>12 byte x \b%02d
# Next, the resolution or aspect ratio of the image:
#>>13 byte 0 \b, aspect ratio
#>>13 byte 1 \b, resolution (DPI)
#>>13 byte 2 \b, resolution (DPCM)
#>>4 beshort x \b, segment length %d
>>13 byte 0 \b, aspect ratio
>>13 byte 1 \b, resolution (DPI)
>>13 byte 2 \b, resolution (DPCM)
>>14 beshort x \b, density %dx
>>16 beshort x \b%d
>>4 beshort x \b, segment length %d
# Next, show thumbnail info, if it exists:
>>18 byte !0 \b, thumbnail %dx
>>>19 byte x \b%d
@ -121,33 +123,52 @@
>>>>>(150.L+59) byte x %c
>>>>>(150.L+60) byte x \b.%c
>>>>>(150.L+61) byte !0x30 \b%c
# Here things get sticky. We can do ONE MORE marker segment with
# indirect addressing, and that's all. It would be great if we could
# do pointer arithemetic like in an assembler language. Christos?
# And if there was some sort of looping construct to do searches, plus a few
# named accumulators, it would be even more effective...
# At least we can show a comment if no other segments got inserted before:
>(4.S+5) byte 0xFE \b, comment:
>>(4.S+6) pstring/HJ x "%s"
# Or, we can show the encoding type (I've included only the three most common)
# and image dimensions if we are lucky and the SOFn (image segment) is here:
>(4.S+5) byte 0xC0 \b, baseline
>>(4.S+6) byte x \b, precision %d
>>(4.S+7) beshort x \b, %dx
>>(4.S+9) beshort x \b%d
>(4.S+5) byte 0xC1 \b, extended sequential
>>(4.S+6) byte x \b, precision %d
>>(4.S+7) beshort x \b, %dx
>>(4.S+9) beshort x \b%d
>(4.S+5) byte 0xC2 \b, progressive
>>(4.S+6) byte x \b, precision %d
>>(4.S+7) beshort x \b, %dx
>>(4.S+9) beshort x \b%d
# I've commented-out quantisation table reporting. I doubt anyone cares yet.
#>(4.S+5) byte 0xDB \b, quantisation table
#>>(4.S+6) beshort x \b length=%d
#>14 beshort x \b, %d x
#>16 beshort x \b %d
# Jump to the first segment
>(4.S+4) use jpeg_segment
# This uses recursion...
0 name jpeg_segment
>0 beshort 0xFFFE
>>(2.S+2) use jpeg_segment
>>2 pstring/HJ x \b, comment: "%s"
>0 beshort 0xFFC0
>>(2.S+2) use jpeg_segment
>>4 byte x \b, baseline, precision %d
>>7 beshort x \b, %dx
>>5 beshort x \b%d
>>9 byte x \b, frames %d
>0 beshort 0xFFC1
>>(2.S+2) use jpeg_segment
>>4 byte x \b, extended sequential, precision %d
>>7 beshort x \b, %dx
>>5 beshort x \b%d
>>9 byte x \b, frames %d
>0 beshort 0xFFC2
>>(2.S+2) use jpeg_segment
>>4 byte x \b, progressive, precision %d
>>7 beshort x \b, %dx
>>5 beshort x \b%d
>>9 byte x \b, frames %d
# Define Huffman Tables
>0 beshort 0xFFC4
>>(2.S+2) use jpeg_segment
# Application specific markers
>0 beshort&0xFFE0 =0xFFE0
>>(2.S+2) use jpeg_segment
# DB: Define Quantization tables
# DD: Define Restart interval [XXX: wrong here, it is 4 bytes]
# D8: Start of image
# D9: End of image
# Dn: Restart
>0 beshort&0xFFD0 =0xFFD0
>>(2.S+2) use jpeg_segment
# HSI is Handmade Software's proprietary JPEG encoding scheme
0 string hsi1 JPEG image data, HSI proprietary

View File

@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
# $File: linux,v 1.57 2014/05/20 20:10:17 christos Exp $
# $File: linux,v 1.58 2014/08/04 06:21:30 christos Exp $
# linux: file(1) magic for Linux files
#
# Values for Linux/i386 binaries, from Daniel Quinlan <quinlan@yggdrasil.com>
@ -413,3 +413,6 @@
>>>>20 belong >16
>>>>>36 belong x \b, DT structure block size=%d
# glibc locale archive as defined in glibc locale/locarchive.h
0 lelong 0xde020109 locale archive
>24 lelong x %d strings

View File

@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
# $File: macintosh,v 1.23 2013/11/19 18:47:58 christos Exp $
# $File: macintosh,v 1.25 2014/09/03 13:34:16 christos Exp $
# macintosh description
#
# BinHex is the Macintosh ASCII-encoded file format (see also "apple")
@ -165,7 +165,7 @@
#>65 string ZSYS (Pre-System 7 system file)
#>65 string acf3 (Aldus FreeHand)
#>65 string cdev (control panel)
#>65 string dfil (Desk Acessory suitcase)
#>65 string dfil (Desk Accessory suitcase)
#>65 string libr (library)
#>65 string nX^d (WriteNow word processor)
#>65 string nX^w (WriteNow dictionary)
@ -288,20 +288,38 @@
>0x412 beshort x number of blocks: %d,
>0x424 pstring x volume name: %s
# *.hfs updated by Joerg Jenderek
# http://en.wikipedia.org/wiki/Hierarchical_File_System
# "BD" gives many false positives
#0x400 beshort 0x4244 Macintosh HFS data
#>0 beshort 0x4C4B (bootable)
#>0x40a beshort &0x8000 (locked)
#>0x40a beshort ^0x0100 (mounted)
#>0x40a beshort &0x0200 (spared blocks)
#>0x40a beshort &0x0800 (unclean)
#>0x47C beshort 0x482B (Embedded HFS+ Volume)
#>0x402 beldate-0x7C25B080 x created: %s,
#>0x406 beldate-0x7C25B080 x last modified: %s,
#>0x440 beldate-0x7C25B080 >0 last backup: %s,
#>0x414 belong x block size: %d,
#>0x412 beshort x number of blocks: %d,
#>0x424 pstring x volume name: %s
0x400 beshort 0x4244
# ftp://ftp.mars.org/pub/hfs/hfsutils-3.2.6.tar.gz/hfsutils-3.2.6/libhfs/apple.h
# first block of volume bit map (always 3)
>0x40e ubeshort 0x0003
# maximal length of volume name is 27
>>0x424 ubyte <28 Macintosh HFS data
#!:mime application/octet-stream
# these mime and apple types are not sure
!:mime application/x-apple-diskimage
#!:apple hfsdINIT
#!:apple MACSdisk
>>>0 beshort 0x4C4B (bootable)
#>>>0 beshort 0x0000 (not bootable)
>>>0x40a beshort &0x8000 (locked)
>>>0x40a beshort ^0x0100 (mounted)
>>>0x40a beshort &0x0200 (spared blocks)
>>>0x40a beshort &0x0800 (unclean)
>>>0x47C beshort 0x482B (Embedded HFS+ Volume)
# http://www.epochconverter.com/
# 0x7C245F00 seconds ~ 2082758400 ~ 01 Jan 2036 00:00:00 ~ 66 years to 1970
# 0x7C25B080 seconds ~ 2082844800 ~ 02 Jan 2036 00:00:00
# construct not working
#>>>0x402 beldate-0x7C25B080 x created: %s,
#>>>0x406 beldate-0x7C25B080 x last modified: %s,
#>>>0x440 beldate-0x7C25B080 >0 last backup: %s,
# found block sizes 200h,1200h,2800h
>>>0x414 belong x block size: %d,
>>>0x412 beshort x number of blocks: %d,
>>>0x424 pstring x volume name: %s
0x400 beshort 0x482B Macintosh HFS Extended
>&0 beshort x version %d data
@ -322,43 +340,9 @@
>&42 belong x number of blocks: %d,
>&46 belong x free blocks: %d
# I don't think this is really necessary since it doesn't do much and
# anything with a valid driver descriptor will also have a valid
# partition map
#0 beshort 0x4552 Apple Device Driver data
#>&24 beshort =1 \b, MacOS
# Is that the partition type a cstring or a pstring? Well, IM says "strings
# shorter than 32 bytes must be terminated with NULL" so I'll treat it as a
# cstring. Of course, partitions can contain more than four entries, but
# what're you gonna do?
# GRR: This magic is too weak, it is just "PM"
#0x200 beshort 0x504D Apple Partition data
#>0x2 beshort x (block size: %d):
#>0x230 string x first type: %s,
#>0x210 string x name: %s,
#>0x254 belong x number of blocks: %d,
#>0x400 beshort 0x504D
#>>0x430 string x second type: %s,
#>>0x410 string x name: %s,
#>>0x454 belong x number of blocks: %d,
#>>0x600 beshort 0x504D
#>>>0x630 string x third type: %s,
#>>>0x610 string x name: %s,
#>>>0x654 belong x number of blocks: %d,
#>>0x800 beshort 0x504D
#>>>0x830 string x fourth type: %s,
#>>>0x810 string x name: %s,
#>>>0x854 belong x number of blocks: %d,
#>>>0xa00 beshort 0x504D
#>>>>0xa30 string x fifth type: %s,
#>>>>0xa10 string x name: %s,
#>>>>0xa54 belong x number of blocks: %d
#>>>0xc00 beshort 0x504D
#>>>>0xc30 string x sixth type: %s,
#>>>>0xc10 string x name: %s,
#>>>>0xc54 belong x number of blocks: %d
## AFAIK, only the signature is different
# same as Apple Partition Map
# GRR: This magic is too weak, it is just "TS"
#0x200 beshort 0x5453 Apple Old Partition data
#>0x2 beshort x block size: %d,
#>0x230 string x first type: %s,

View File

@ -0,0 +1,49 @@
#------------------------------------------------------------------------------
# $File: meteorological,v 1.1 2014/08/04 06:26:16 christos Exp $
# rinex: file(1) magic for RINEX files
# http://igscb.jpl.nasa.gov/igscb/data/format/rinex210.txt
# ftp://cddis.gsfc.nasa.gov/pub/reports/formats/rinex300.pdf
# data for testing: ftp://cddis.gsfc.nasa.gov/pub/gps/data
60 string RINEX
>80 search/256 XXRINEXB RINEX Data, GEO SBAS Broadcast
>>&32 string x \b, date %15.15s
>>5 string x \b, version %6.6s
!:mime rinex/broadcast
>80 search/256 XXRINEXD RINEX Data, Observation (Hatanaka comp)
>>&32 string x \b, date %15.15s
>>5 string x \b, version %6.6s
!:mime rinex/observation
>80 search/256 XXRINEXC RINEX Data, Clock
>>&32 string x \b, date %15.15s
>>5 string x \b, version %6.6s
!:mime rinex/clock
>80 search/256 XXRINEXH RINEX Data, GEO SBAS Navigation
>>&32 string x \b, date %15.15s
>>5 string x \b, version %6.6s
!:mime rinex/navigation
>80 search/256 XXRINEXG RINEX Data, GLONASS Navigation
>>&32 string x \b, date %15.15s
>>5 string x \b, version %6.6s
!:mime rinex/navigation
>80 search/256 XXRINEXL RINEX Data, Galileo Navigation
>>&32 string x \b, date %15.15s
>>5 string x \b, version %6.6s
!:mime rinex/navigation
>80 search/256 XXRINEXM RINEX Data, Meteorological
>>&32 string x \b, date %15.15s
>>5 string x \b, version %6.6s
!:mime rinex/meteorological
>80 search/256 XXRINEXN RINEX Data, Navigation
>>&32 string x \b, date %15.15s
>>5 string x \b, version %6.6s
!:mime rinex/navigation
>80 search/256 XXRINEXO RINEX Data, Observation
>>&32 string x \b, date %15.15s
>>5 string x \b, version %6.6s
!:mime rinex/observation
# https://en.wikipedia.org/wiki/GRIB
0 string GRIB
>7 byte =1 Gridded binary (GRIB) version 1
>7 byte =2 Gridded binary (GRIB) version 2

View File

@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
# $File: msooxml,v 1.4 2014/01/06 18:16:24 rrt Exp $
# $File: msooxml,v 1.5 2014/08/05 07:38:45 christos Exp $
# msooxml: file(1) magic for Microsoft Office XML
# From: Ralf Brown <ralf.brown@gmail.com>
@ -16,7 +16,7 @@
0 string PK\003\004
!:strength +10
# make sure the first file is correct
>0x1E regex \[Content_Types\]\.xml|_rels/\.rels
>0x1E regex \\[Content_Types\\]\\.xml|_rels/\\.rels
# skip to the second local file header
# since some documents include a 520-byte extra field following the file
# header, we need to scan for the next header

View File

@ -1,10 +1,10 @@
#------------------------------------------------------------------------------
# $File: pascal,v 1.1 2011/12/08 12:12:46 rrt Exp $
# $File: pascal,v 1.2 2014/07/14 14:21:33 rrt Exp $
# pascal: file(1) magic for Pascal source
#
0 search/8192 (input, Pascal source text
!:mime text/x-pascal
0 regex \^program Pascal source text
!:mime text/x-pascal
0 regex \^record Pascal source text
!:mime text/x-pascal
#0 regex \^program Pascal source text
#!:mime text/x-pascal
#0 regex \^record Pascal source text
#!:mime text/x-pascal

View File

@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
# $File: python,v 1.25 2014/05/06 16:08:32 christos Exp $
# $File: python,v 1.26 2014/08/04 05:58:40 christos Exp $
# python: file(1) magic for python
#
# Outlook puts """ too for urgent messages
@ -23,6 +23,7 @@
0 belong 0x4f0c0d0a python 3.1 byte-compiled
0 belong 0x6c0c0d0a python 3.2 byte-compiled
0 belong 0x9e0c0d0a python 3.3 byte-compiled
0 belong 0xee0c0d0a python 3.4 byte-compiled
0 search/1/w #!\ /usr/bin/python Python script text executable
!:mime text/x-python

View File

@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
# $File: riff,v 1.27 2014/04/30 21:41:02 christos Exp $
# $File: riff,v 1.30 2014/09/23 17:02:12 christos Exp $
# riff: file(1) magic for RIFF format
# See
#
@ -45,6 +45,26 @@
>>&(4.l+4) use riff-walk
>0 string fact
>>&(4.l+4) use riff-walk
>0 string VP8
>>11 byte 0x9d
>>>12 byte 0x01
>>>>13 byte 0x2a \b, VP8 encoding
>>>>>14 leshort&0x3fff x \b, %d
>>>>>16 leshort&0x3fff x \bx%d, Scaling:
>>>>>14 leshort&0xc000 0x0000 \b [none]
>>>>>14 leshort&0xc000 0x1000 \b [5/4]
>>>>>14 leshort&0xc000 0x2000 \b [5/3]
>>>>>14 leshort&0xc000 0x3000 \b [2]
>>>>>14 leshort&0xc000 0x0000 \bx[none]
>>>>>14 leshort&0xc000 0x1000 \bx[5/4]
>>>>>14 leshort&0xc000 0x2000 \bx[5/3]
>>>>>14 leshort&0xc000 0x3000 \bx[2]
>>>>>15 byte&0x80 =0x00 \b, YUV color
>>>>>15 byte&0x80 =0x80 \b, bad color specification
>>>>>15 byte&0x40 =0x40 \b, no clamping required
>>>>>15 byte&0x40 =0x00 \b, decoders should clamp
#>0 string x we got %s
#>>&(4.l+4) use riff-walk
# AVI section extended by Patrik Radman <patrik+file-magic@iki.fi>
#
@ -209,6 +229,8 @@
>8 string 4XMV \b, 4X Movie file
# AMV-type AVI file: http://wiki.multimedia.cx/index.php?title=AMV
>8 string AMV\040 \b, AMV
>8 string WEBP \b, Web/P image
>>12 use riff-walk
#
# XXX - some of the below may only appear in little-endian form.
@ -284,4 +306,3 @@
>>&6 leshort =2 \b, stereo
>>&6 leshort >2 \b, %d channels
>>&8 lelong >0 %d Hz

View File

@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
# $File: sequent,v 1.11 2014/06/02 19:27:54 christos Exp $
# $File: sequent,v 1.12 2014/08/16 16:07:12 christos Exp $
# sequent: file(1) magic for Sequent machines
#
# Sequent information updated by Don Dwiggins <atsun!dwiggins>.
@ -30,9 +30,6 @@
0 leshort 0x32eb SYMMETRY i386 executable (invalid @ 0)
>16 lelong >0 not stripped
>124 lelong >0 version %d
0 leshort 0x42eb SYMMETRY i386 standalone executable
>16 lelong >0 not stripped
>124 lelong >0 version %d
# http://en.wikipedia.org/wiki/Sequent_Computer_Systems
# below test line conflicts with MS-DOS 2.11 floppies and Acronis loader
#0 leshort 0x42eb SYMMETRY i386 standalone executable

View File

@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
# $File: vms,v 1.7 2013/03/09 22:36:00 christos Exp $
# $File: vms,v 1.9 2014/08/17 13:47:59 christos Exp $
# vms: file(1) magic for VMS executables (experimental)
#
# VMS .exe formats, both VAX and AXP (Greg Roelofs, newt@uchicago.edu)

View File

@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
# $File: vorbis,v 1.18 2014/04/30 21:41:02 christos Exp $
# $File: vorbis,v 1.20 2014/09/23 16:35:08 christos Exp $
# vorbis: file(1) magic for Ogg/Vorbis files
#
# From Felix von Leitner <leitner@fefe.de>
@ -23,7 +23,6 @@
# --- Ogg Framing ---
#0 search/1000 OggS Ogg data
0 string OggS Ogg data
!:mime application/ogg
>4 byte !0 UNKNOWN REVISION %u
##>4 byte 0 revision 0
>4 byte 0
@ -31,9 +30,12 @@
# non-Vorbis content: FLAC (Free Lossless Audio Codec, http://flac.sourceforge.net)
>>28 string \x7fFLAC \b, FLAC audio
# non-Vorbis content: Theora
!:mime audio/ogg
>>28 string \x80theora \b, Theora video
!:mime video/ogg
# non-Vorbis content: Kate
>>28 string \x80kate\0\0\0\0 \b, Kate
>>28 string \x80kate\0\0\0\0 \b, Kate (Karaoke and Text)
!:mime application/ogg
>>>37 ubyte x v%u
>>>38 ubyte x \b.%u,
>>>40 byte 0 utf8 encoding,
@ -44,18 +46,22 @@
>>>76 string \0 no category set
# non-Vorbis content: Skeleton
>>28 string fishead\0 \b, Skeleton
!:mime video/ogg
>>>36 short x v%u
>>>40 short x \b.%u
# non-Vorbis content: Speex
>>28 string Speex\ \ \ \b, Speex audio
!:mime audio/ogg
# non-Vorbis content: OGM
>>28 string \x01video\0\0\0 \b, OGM video
!:mime video/ogg
>>>37 string/c div3 (DivX 3)
>>>37 string/c divx (DivX 4)
>>>37 string/c dx50 (DivX 5)
>>>37 string/c xvid (XviD)
# --- First vorbis packet - general header ---
>>28 string \x01vorbis \b, Vorbis audio,
!:mime audio/ogg
>>>35 lelong !0 UNKNOWN VERSION %u,
##>>>35 lelong 0 version 0,
>>>35 lelong 0

View File

@ -1,6 +1,6 @@
#------------------------------------------------------------------------------
# $File: windows,v 1.8 2014/04/30 21:41:02 christos Exp $
# $File: windows,v 1.10 2014/09/24 19:52:46 christos Exp $
# windows: file(1) magic for Microsoft Windows
#
# This file is mainly reserved for files where programs
@ -159,8 +159,9 @@
>&0 string Version\ 5.00\r\n\r\n Windows Registry text (Win2K or above)
# Windows *.INF *.INI files updated by Joerg Jenderek at Apr 2013
# emtpy ,comment , section , unicode line
0 regex/s \\`(\r\n|;|[[]|\xFF\xFE)
# empty ,comment , section
# PR/383: remove unicode BOM because it is not portable across regex impls
0 regex/s \\`(\\r\\n|;|[[])
# left bracket in section line
>&0 search/8192 [
# http://en.wikipedia.org/wiki/Autorun.inf

View File

@ -1,4 +1,4 @@
/* $NetBSD: cdf.h,v 1.1.1.5 2014/06/13 01:48:23 christos Exp $ */
/* $NetBSD: cdf.h,v 1.1.1.6 2014/10/10 20:08:20 christos Exp $ */
/*-
* Copyright (c) 2008 Christos Zoulas
* All rights reserved.
@ -268,6 +268,19 @@ typedef struct {
size_t i_len;
} cdf_info_t;
typedef struct {
uint16_t ce_namlen;
uint32_t ce_num;
uint64_t ce_timestamp;
uint16_t ce_name[256];
} cdf_catalog_entry_t;
typedef struct {
size_t cat_num;
cdf_catalog_entry_t cat_e[0];
} cdf_catalog_t;
struct timespec;
int cdf_timestamp_to_timespec(struct timespec *, cdf_timestamp_t);
int cdf_timespec_to_timestamp(cdf_timestamp_t *, const struct timespec *);
@ -302,11 +315,19 @@ int cdf_read_property_info(const cdf_stream_t *, const cdf_header_t *, uint32_t,
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_dir_t *, const char *, cdf_stream_t *);
#define cdf_read_catalog(info, header, sat, ssat, stream, dir, scn) \
cdf_read_user_stream(info, header, sat, ssat, stream, dir, "Catalog", \
scn)
#define cdf_read_encrypted_package(info, header, sat, ssat, stream, dir, scn) \
cdf_read_user_stream(info, header, sat, ssat, stream, dir, \
"EncryptedPackage", scn)
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_dir_t *, cdf_stream_t *);
int cdf_unpack_summary_info(const cdf_stream_t *, const cdf_header_t *,
cdf_summary_info_header_t *, cdf_property_info_t **, size_t *);
int cdf_unpack_catalog(const cdf_header_t *, const cdf_stream_t *,
cdf_catalog_t **);
int cdf_print_classid(char *, size_t, const cdf_classid_t *);
int cdf_print_property_name(char *, size_t, uint32_t);
int cdf_print_elapsed_time(char *, size_t, cdf_timestamp_t);
@ -314,6 +335,7 @@ uint16_t cdf_tole2(uint16_t);
uint32_t cdf_tole4(uint32_t);
uint64_t cdf_tole8(uint64_t);
char *cdf_ctime(const time_t *, char *);
char *cdf_u16tos8(char *, size_t, const uint16_t *);
#ifdef CDF_DEBUG
void cdf_dump_header(const cdf_header_t *);
@ -324,6 +346,7 @@ 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 *);
void cdf_dump_property_info(const cdf_property_info_t *, size_t);
void cdf_dump_summary_info(const cdf_header_t *, const cdf_stream_t *);
void cdf_dump_catalog(const cdf_header_t *, const cdf_stream_t *);
#endif

View File

@ -1,5 +1,5 @@
/* $NetBSD: getline.c,v 1.1.1.4 2014/06/13 01:48:21 christos Exp $ */
/* NetBSD: fgetln.c,v 1.9 2008/04/29 06:53:03 martin Exp */
/* $NetBSD: getline.c,v 1.1.1.5 2014/10/10 20:08:17 christos Exp $ */
/* NetBSD: getline.c,v 1.2 2014/09/16 17:23:50 christos Exp */
/*-
* Copyright (c) 2011 The NetBSD Foundation, Inc.
@ -53,10 +53,14 @@ getdelim(char **buf, size_t *bufsiz, int delimiter, FILE *fp)
for (ptr = *buf, eptr = *buf + *bufsiz;;) {
int c = fgetc(fp);
if (c == -1) {
if (feof(fp))
return ptr == *buf ? -1 : ptr - *buf;
else
return -1;
if (feof(fp)) {
ssize_t diff = (ssize_t)(ptr - *buf);
if (diff != 0) {
*ptr = '\0';
return diff;
}
}
return -1;
}
*ptr++ = c;
if (c == delimiter) {
@ -94,7 +98,7 @@ main(int argc, char *argv[])
size_t n = 0;
while ((len = getline(&p, &n, stdin)) != -1)
(void)printf("%zd %s", len, p);
(void)printf("%" SIZE_T_FORMAT "d %s", len, p);
free(p);
return 0;
}

View File

@ -96,6 +96,8 @@ int magic_setflags(magic_t, int);
int magic_version(void);
int magic_load(magic_t, const char *);
int magic_load_buffers(struct magic_set *, 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 *);

View File

@ -1,10 +1,10 @@
/* $NetBSD: pread.c,v 1.1.1.3 2014/06/13 01:48:21 christos Exp $ */
/* $NetBSD: pread.c,v 1.1.1.4 2014/10/10 20:08:17 christos Exp $ */
#include "file.h"
#ifndef lint
#if 0
FILE_RCSID("@(#)$File: pread.c,v 1.2 2013/04/02 16:23:07 christos Exp $")
FILE_RCSID("@(#)$File: pread.c,v 1.3 2014/09/15 19:11:25 christos Exp $")
#else
__RCSID("$NetBSD: pread.c,v 1.1.1.3 2014/06/13 01:48:21 christos Exp $");
__RCSID("$NetBSD: pread.c,v 1.1.1.4 2014/10/10 20:08:17 christos Exp $");
#endif
#endif /* lint */
#include <fcntl.h>
@ -12,8 +12,17 @@ __RCSID("$NetBSD: pread.c,v 1.1.1.3 2014/06/13 01:48:21 christos Exp $");
ssize_t
pread(int fd, void *buf, size_t len, off_t off) {
if (lseek(fd, off, SEEK_SET) == (off_t)-1)
off_t old;
ssize_t rv;
if ((old = lseek(fd, off, SEEK_SET)) == -1)
return -1;
return read(fd, buf, len);
if ((rv = read(fd, buf, len)) == -1)
return -1;
if (lseek(fd, old, SEEK_SET) == -1)
return -1;
return rv;
}