Group :: File tools
RPM: file
Main Changelog Spec Patches Sources Download Gear Bugs and FR Repocop
Patch: file-4.20-alt5.1.patch
Download
Download
diff -urN file-4.20.orig/configure.in file-4.20/configure.in
--- file-4.20.orig/configure.in 2007-05-22 10:53:10 +0300
+++ file-4.20/configure.in 2007-08-21 03:23:37 +0300
@@ -51,6 +51,7 @@
AM_CONDITIONAL(FSECT5, test x$fsect = x5)
dnl Checks for programs.
+AC_GNU_SOURCE
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_LN_S
diff -urN file-4.20.orig/doc/file.man file-4.20/doc/file.man
--- file-4.20.orig/doc/file.man 2007-05-22 10:53:10 +0300
+++ file-4.20/doc/file.man 2007-08-21 03:23:37 +0300
@@ -47,9 +47,9 @@
or non-printable).
Exceptions are well-known file formats (core files, tar archives)
that are known to contain binary data.
-When modifying the file
-.Pa __MAGIC__
-or the program itself, make sure to
+When adding local definitions to the file
+.Pa /etc/magic ,
+make sure to
.Em "preserve these keywords" .
People depend on knowing that all the readable files in a directory
have the word
@@ -239,7 +239,8 @@
.Dq FILES
section, below).
.It Fl k , -keep-going
-Don't stop at the first match, keep going.
+Don't stop at the first match, keep going. Subsequent matches will be
+prepended by ``\\012\- ''. (If you want a newline, see ``\-r'' option.)
.It Fl L , -dereference
option causes symlinks to be followed, as the like-named option in
.Xr ls 1
@@ -413,12 +414,6 @@
The order of entries in the magic file is significant.
Depending on what system you are using, the order that
they are put together may be incorrect.
-If your old
-.Nm
-command uses a magic file,
-keep the old magic file around for comparison purposes
-(rename it to
-.Pa __MAGIC__.orig ).
.Sh EXAMPLES
.Bd -literal -offset indent
$ file file.c file /dev/{wd0a,hda}
@@ -586,9 +581,19 @@
The new support for multiple character codes makes it even slower.
.Pp
This manual page, and particularly this section, is too long.
+.Sh RETURN CODE
+.Nm
+almost always returns 0. It returns a different if it cannot open a file.
.Sh AVAILABILITY
You can obtain the original author's latest version by anonymous FTP
on
.Dv ftp.astron.com
in the directory
.Dv /pub/file/file-X.YZ.tar.gz
+.Pp
+This
+.Nm
+version adds a number of new magix entries.
+It can be obtained from
+.Dv git://git.altlinux.org/people/ldv/packages/file.git
+and its mirrors.
diff -urN file-4.20.orig/doc/magic.man file-4.20/doc/magic.man
--- file-4.20.orig/doc/magic.man 2007-05-22 10:53:10 +0300
+++ file-4.20/doc/magic.man 2007-08-21 03:23:37 +0300
@@ -65,7 +65,7 @@
.Dq c
flag, specifies case insensitive matching: lowercase
characters in the magic match both lower and upper case characters in the
-targer, whereas upper case characters in the magic, only much uppercase
+target, whereas upper case characters in the magic, only much uppercase
characters in the target.
.It Dv pstring
A pascal style string where the first byte is interpreted as the an
diff -urN file-4.20.orig/magic/Header file-4.20/magic/Header
--- file-4.20.orig/magic/Header 2007-05-22 10:53:10 +0300
+++ file-4.20/magic/Header 2007-08-21 03:23:37 +0300
@@ -1,5 +1,5 @@
-# Magic
# Magic data for file(1) command.
-# Machine-generated from src/cmd/file/magdir/*; edit there only!
-# Format is described in magic(files), where:
-# files is 5 on V7 and BSD, 4 on SV, and ?? in the SVID.
+# Format is described in magic(5).
+# Don't edit this file, edit /etc/magic or send your suggested inclusions to
+# this file as a wishlist bug against file (using the reportbug utility).
+
diff -urN file-4.20.orig/magic/Magdir/animation file-4.20/magic/Magdir/animation
--- file-4.20.orig/magic/Magdir/animation 2007-05-22 10:53:10 +0300
+++ file-4.20/magic/Magdir/animation 2007-08-21 03:23:37 +0300
@@ -322,8 +322,8 @@
# MPA, M1A
# updated by Joerg Jenderek
# GRR the original test are too common for many DOS files, so test 32 <= kbits <= 448
-0 beshort&0xFFFE 0xFFFE
->2 ubyte&0xF0 >0x0F
+0 beshort&0xFFFE 0xFFFE
+>2 ubyte&0xF0 >0x0F
>>2 ubyte&0xF0 <0xE1 MPEG ADTS, layer I, v1
# rate
>>>2 byte&0xF0 0x10 \b, 32 kBits
@@ -640,13 +640,23 @@
0 belong 0x3026b275 Microsoft ASF
# MNG Video Format, <URL:http://www.libpng.org/pub/mng/spec/>
+# 0x8a M N G 0x0d 0x0a 0x1a 0x0a [4-byte pad]
+# M H D R [4-byte width][4-byte height][4-byte ticks][4-byte layers]
+# [4-byte frame][4-byte time][4-byte profile]
0 string \x8aMNG MNG video data,
>4 belong !0x0d0a1a0a CORRUPTED,
>4 belong 0x0d0a1a0a
>>16 belong x %ld x
->>20 belong x %ld
+>>20 belong x %ld,
+>>24 belong x %ld tps,
+>>28 belong x %ld layers,
+>>32 belong x %ld frames,
+>>36 belong x %ld time,
+>>40 belong x profile = %ld
# JNG Video Format, <URL:http://www.libpng.org/pub/mng/spec/>
+# 0x8b J N G 0x0d 0x0a 0x1a 0x0a [4-byte pad]
+# J H D R [4-byte width][4-byte height]
0 string \x8bJNG JNG video data,
>4 belong !0x0d0a1a0a CORRUPTED,
>4 belong 0x0d0a1a0a
diff -urN file-4.20.orig/magic/Magdir/archive file-4.20/magic/Magdir/archive
--- file-4.20.orig/magic/Magdir/archive 2007-05-22 10:53:10 +0300
+++ file-4.20/magic/Magdir/archive 2007-08-21 03:23:37 +0300
@@ -146,84 +146,84 @@
# probably many can be enhanced by finding some 0-byte or control char near the start
# idarc calls this Crush/Uncompressed... *shrug*
-0 string CRUSH Crush archive data
+#0 string CRUSH Crush archive data
# Squeeze It (.sqz)
-0 string HLSQZ Squeeze It archive data
+#0 string HLSQZ Squeeze It archive data
# SQWEZ
-0 string SQWEZ SQWEZ archive data
+#0 string SQWEZ SQWEZ archive data
# HPack (.hpk)
-0 string HPAK HPack archive data
+#0 string HPAK HPack archive data
# HAP
-0 string \x91\x33HF HAP archive data
+#0 string \x91\x33HF HAP archive data
# MD/MDCD
-0 string MDmd MDCD archive data
+#0 string MDmd MDCD archive data
# LIM
-0 string LIM\x1a LIM archive data
+#0 string LIM\x1a LIM archive data
# SAR
-3 string LH5 SAR archive data
+#3 string LH5 SAR archive data
# BSArc/BS2
-0 string \212\3SB \0 BSArc/BS2 archive data
+#0 string \212\3SB \0 BSArc/BS2 archive data
# MAR
-2 string =-ah MAR archive data
+#2 string =-ah MAR archive data
# ACB
-0 belong&0x00f800ff 0x00800000 ACB archive data
+#0 belong&0x00f800ff 0x00800000 ACB archive data
# CPZ
# TODO, this is what idarc says: 0 string \0\0\0 CPZ archive data
# JRC
-0 string JRchive JRC archive data
+#0 string JRchive JRC archive data
# Quantum
-0 string DS\0 Quantum archive data
+#0 string DS\0 Quantum archive data
# ReSOF
-0 string PK\3\6 ReSOF archive data
+#0 string PK\3\6 ReSOF archive data
# QuArk
-0 string 7\4 QuArk archive data
+#0 string 7\4 QuArk archive data
# YAC
-14 string YC YAC archive data
+#14 string YC YAC archive data
# X1
-0 string X1 X1 archive data
-0 string XhDr X1 archive data
+#0 string X1 X1 archive data
+#0 string XhDr X1 archive data
# CDC Codec (.dqt)
-0 belong&0xffffe000 0x76ff2000 CDC Codec archive data
+#0 belong&0xffffe000 0x76ff2000 CDC Codec archive data
# AMGC
-0 string \xad6" AMGC archive data
+#0 string \xad6" AMGC archive data
# NuLIB
-0 string NõFélå NuLIB archive data
+#0 string NõFélå NuLIB archive data
# PakLeo
-0 string LEOLZW PAKLeo archive data
+#0 string LEOLZW PAKLeo archive data
# ChArc
-0 string SChF ChArc archive data
+#0 string SChF ChArc archive data
# PSA
-0 string PSA PSA archive data
+#0 string PSA PSA archive data
# CrossePAC
-0 string DSIGDCC CrossePAC archive data
+#0 string DSIGDCC CrossePAC archive data
# Freeze
-0 string \x1f\x9f\x4a\x10\x0a Freeze archive data
+#0 string \x1f\x9f\x4a\x10\x0a Freeze archive data
# KBoom
-0 string ¨MP¨ KBoom archive data
+#0 string ¨MP¨ KBoom archive data
# NSQ, must go after CDC Codec
-0 string \x76\xff NSQ archive data
+#0 string \x76\xff NSQ archive data
# DPA
-0 string Dirk\ Paehl DPA archive data
+#0 string Dirk\ Paehl DPA archive data
# BA
# TODO: idarc says "bytes 0-2 == bytes 3-5"
# TTComp
-0 string \0\6 TTComp archive data
+#0 string \0\6 TTComp archive data
# ESP, could this conflict with Easy Software Products' (e.g.ESP ghostscript) documentation?
-0 string ESP ESP archive data
+#0 string ESP ESP archive data
# ZPack
0 string \1ZPK\1 ZPack archive data
# Sky
-0 string \xbc\x40 Sky archive data
+#0 string \xbc\x40 Sky archive data
# UFA
-0 string UFA UFA archive data
+#0 string UFA UFA archive data
# Dry
-0 string =-H2O DRY archive data
+#0 string =-H2O DRY archive data
# FoxSQZ
-0 string FOXSQZ FoxSQZ archive data
+#0 string FOXSQZ FoxSQZ archive data
# AR7
-0 string ,AR7 AR7 archive data
+#0 string ,AR7 AR7 archive data
# PPMZ
-0 string PPMZ PPMZ archive data
+#0 string PPMZ PPMZ archive data
# MS Compress
4 string \x88\xf0\x27 MS Compress archive data
# updated by Joerg Jenderek
@@ -237,32 +237,32 @@
# MP3 (archiver, not lossy audio compression)
0 string MP3\x1a MP3-Archiver archive data
# ZET
-0 string OZÝ ZET archive data
+#0 string OZÝ ZET archive data
# TSComp
0 string \x65\x5d\x13\x8c\x08\x01\x03\x00 TSComp archive data
# ARQ
0 string gW\4\1 ARQ archive data
# Squash
-3 string OctSqu Squash archive data
+#3 string OctSqu Squash archive data
# Terse
0 string \5\1\1\0 Terse archive data
# PUCrunch
0 string \x01\x08\x0b\x08\xef\x00\x9e\x32\x30\x36\x31 PUCrunch archive data
# UHarc
-0 string UHA UHarc archive data
+#0 string UHA UHarc archive data
# ABComp
-0 string \2AB ABComp archive data
-0 string \3AB2 ABComp archive data
+#0 string \2AB ABComp archive data
+#0 string \3AB2 ABComp archive data
# CMP
-0 string CO\0 CMP archive data
+#0 string CO\0 CMP archive data
# Splint
-0 string \x93\xb9\x06 Splint archive data
+#0 string \x93\xb9\x06 Splint archive data
# InstallShield
0 string \x13\x5d\x65\x8c InstallShield Z archive Data
# Gather
-1 string GTH Gather archive data
+#1 string GTH Gather archive data
# BOA
-0 string BOA BOA archive data
+#0 string BOA BOA archive data
# RAX
0 string ULEB\xa RAX archive data
# Xtreme
@@ -270,22 +270,22 @@
# Pack Magic
0 string @â\1\0 Pack Magic archive data
# BTS
-0 belong&0xfeffffff 0x1a034465 BTS archive data
+#0 belong&0xfeffffff 0x1a034465 BTS archive data
# ELI 5750
-0 string Ora\ ELI 5750 archive data
+#0 string Ora\ ELI 5750 archive data
# QFC
-0 string \x1aFC\x1a QFC archive data
-0 string \x1aQF\x1a QFC archive data
+#0 string \x1aFC\x1a QFC archive data
+#0 string \x1aQF\x1a QFC archive data
# PRO-PACK
-0 string RNC PRO-PACK archive data
+#0 string RNC PRO-PACK archive data
# 777
-0 string 777 777 archive data
+#0 string 777 777 archive data
# LZS221
-0 string sTaC LZS221 archive data
+#0 string sTaC LZS221 archive data
# HPA
-0 string HPA HPA archive data
+#0 string HPA HPA archive data
# Arhangel
-0 string LG Arhangel archive data
+#0 string LG Arhangel archive data
# EXP1, uses bzip2
0 string 0123456789012345BZh EXP1 archive data
# IMP
@@ -293,25 +293,25 @@
# NRV
0 string \x00\x9E\x6E\x72\x76\xFF NRV archive data
# Squish
-0 string \x73\xb2\x90\xf4 Squish archive data
+#0 string \x73\xb2\x90\xf4 Squish archive data
# Par
-0 string PHILIPP Par archive data
-0 string PAR Par archive data
+#0 string PHILIPP Par archive data
+#0 string PAR Par archive data
# HIT
-0 string UB HIT archive data
+#0 string UB HIT archive data
# SBX
-0 belong&0xfffff000 0x53423000 SBX archive data
+#0 belong&0xfffff000 0x53423000 SBX archive data
# NaShrink
-0 string NSK NaShrink archive data
+#0 string NSK NaShrink archive data
# SAPCAR
0 string #\ CAR\ archive\ header SAPCAR archive data
0 string CAR\ 2.00RG SAPCAR archive data
# Disintegrator
-0 string DST Disintegrator archive data
+#0 string DST Disintegrator archive data
# ASD
-0 string ASD ASD archive data
+#0 string ASD ASD archive data
# InstallShield CAB
-0 string ISc( InstallShield CAB
+#0 string ISc( InstallShield CAB
# TOP4
0 string T4\x1a TOP4 archive data
# BatComp left out: sig looks like COM executable
@@ -319,32 +319,32 @@
# BlakHole
0 string BH\5\7 BlakHole archive data
# BIX
-0 string BIX0 BIX archive data
+#0 string BIX0 BIX archive data
# ChiefLZA
-0 string ChfLZ ChiefLZA archive data
+#0 string ChfLZ ChiefLZA archive data
# Blink
-0 string Blink Blink archive data
+#0 string Blink Blink archive data
# Logitech Compress
-0 string \xda\xfa Logitech Compress archive data
+#0 string \xda\xfa Logitech Compress archive data
# ARS-Sfx (FIXME: really a SFX? then goto COM/EXE)
-1 string (C)\ STEPANYUK ARS-Sfx archive data
+#1 string (C)\ STEPANYUK ARS-Sfx archive data
# AKT/AKT32
-0 string AKT32 AKT32 archive data
-0 string AKT AKT archive data
+#0 string AKT32 AKT32 archive data
+#0 string AKT AKT archive data
# NPack
-0 string MSTSM NPack archive data
+#0 string MSTSM NPack archive data
# PFT
0 string \0\x50\0\x14 PFT archive data
# SemOne
-0 string SEM SemOne archive data
+#0 string SEM SemOne archive data
# PPMD
0 string \x8f\xaf\xac\x84 PPMD archive data
# FIZ
-0 string FIZ FIZ archive data
+#0 string FIZ FIZ archive data
# MSXiE
0 belong&0xfffff0f0 0x4d530000 MSXiE archive data
# DeepFreezer
-0 belong&0xfffffff0 0x797a3030 DeepFreezer archive data
+#0 belong&0xfffffff0 0x797a3030 DeepFreezer archive data
# DC
0 string =<DC- DC archive data
# TPac
@@ -356,35 +356,35 @@
0 string Ai\2\0 Ai32 archive data
0 string Ai\2\1 Ai32 archive data
# SBC
-0 string SBC SBC archive data
+#0 string SBC SBC archive data
# Ybs
-0 string YBS Ybs archive data
+#0 string YBS Ybs archive data
# DitPack
0 string \x9e\0\0 DitPack archive data
# DMS
-0 string DMS! DMS archive data
+#0 string DMS! DMS archive data
# EPC
0 string \x8f\xaf\xac\x8c EPC archive data
# VSARC
0 string VS\x1a VSARC archive data
# PDZ
-0 string PDZ PDZ archive data
+#0 string PDZ PDZ archive data
# ReDuq
-0 string rdqx ReDuq archive data
+#0 string rdqx ReDuq archive data
# GCA
-0 string GCAX GCA archive data
+#0 string GCAX GCA archive data
# PPMN
-0 string pN PPMN archive data
+#0 string pN PPMN archive data
# WinImage
-3 string WINIMAGE WinImage archive data
+#3 string WINIMAGE WinImage archive data
# Compressia
0 string CMP0CMP Compressia archive data
# UHBC
-0 string UHB UHBC archive data
+#0 string UHB UHBC archive data
# WinHKI
0 string \x61\x5C\x04\x05 WinHKI archive data
# WWPack data file
-0 string WWP WWPack archive data
+#0 string WWP WWPack archive data
# BSN (BSA, PTS-DOS)
0 string \xffBSG BSN archive data
1 string \xffBSG BSN archive data
@@ -400,11 +400,11 @@
# SZip (TODO: doesn't catch all versions)
0 string SZ\x0a\4 SZip archive data
# XPack DiskImage
-0 string jm XPack DiskImage archive data
+#0 string jm XPack DiskImage archive data
# XPack Data
-0 string xpa XPack archive data
+#0 string xpa XPack archive data
# XPack Single Data
-0 string Í\ jm XPack single archive data
+#0 string Í\ jm XPack single archive data
# TODO: missing due to unknown magic/magic at end of file:
#DWC
@@ -418,17 +418,17 @@
# These were inspired by idarc, but actually verified
# Dzip archiver (.dz)
-0 string DZ Dzip archive data
->2 byte x \b, version %i
->3 byte x \b.%i
+#0 string DZ Dzip archive data
+#>2 byte x \b, version %i
+#>3 byte x \b.%i
# ZZip archiver (.zz)
0 string ZZ\ \0\0 ZZip archive data
-0 string ZZ0 ZZip archive data
+#0 string ZZ0 ZZip archive data
# PAQ archiver (.paq)
0 string \xaa\x40\x5f\x77\x1f\xe5\x82\x0d PAQ archive data
-0 string PAQ PAQ archive data
->3 byte&0xf0 0x30
->>3 byte x (v%c)
+#0 string PAQ PAQ archive data
+#>3 byte&0xf0 0x30
+#>>3 byte x (v%c)
# JAR archiver (.j), this is the successor to ARJ, not Java's JAR (which is essentially ZIP)
0xe string \x1aJar\x1b JAR (ARJ Software, Inc.) archive data
0 string JARCS JAR (ARJ Software, Inc.) archive data
@@ -452,7 +452,7 @@
>7 byte 9 os: VAX/VMS
>3 byte >0 %d]
# [JW] idarc says this is also possible
-2 leshort 0xea60 ARJ archive data
+#2 leshort 0xea60 ARJ archive data
# HA archiver (Greg Roelofs, newt@uchicago.edu)
# This is a really bad format. A file containing HAWAII will match this...
diff -urN file-4.20.orig/magic/Magdir/audio file-4.20/magic/Magdir/audio
--- file-4.20.orig/magic/Magdir/audio 2007-05-22 10:53:10 +0300
+++ file-4.20/magic/Magdir/audio 2007-08-21 03:23:37 +0300
@@ -110,8 +110,8 @@
#0 string FAR Module sound data
#>4 string >\15 Title: "%s"
-0x2c string SCRM ScreamTracker III Module sound data
->0 string >\0 Title: "%s"
+#0x2c string SCRM ScreamTracker III Module sound data
+#>0 string >\0 Title: "%s"
# Gravis UltraSound patches
# From <ache@nagual.ru>
@@ -222,8 +222,8 @@
0 string _SGI_SoundTrack SGI SoundTrack project file
# ID3 version 2 tags <waschk@informatik.uni-rostock.de>
0 string ID3 Audio file with ID3 version 2
->3 ubyte <0xff \b%d.
->4 ubyte <0xff \b%d tag
+>3 ubyte <0xff \b.%d
+>>4 ubyte <0xff \b.%d tag
>2584 string fLaC \b, FLAC encoding
>>2588 byte&0x7f >0 \b, unknown version
>>2588 byte&0x7f 0 \b
@@ -458,7 +458,7 @@
# From Gürkan Sengün <gurkan@linuks.mine.nu>, http://www.linuks.mine.nu
0 string RAWADATA RdosPlay RAW
-1068 string RoR AMUSIC Adlib Tracker
+#1068 string RoR AMUSIC Adlib Tracker
0 string JCH EdLib
@@ -482,7 +482,7 @@
>15 byte =0 lossy,
>16 byte x mid-side
-384 string LockStream LockStream Embedded file (mostly MP3 on old Nokia phones)
+#384 string LockStream LockStream Embedded file (mostly MP3 on old Nokia phones)
# format VQF (proprietary codec for sound)
# some infos on the header file available at :
diff -urN file-4.20.orig/magic/Magdir/commands file-4.20/magic/Magdir/commands
--- file-4.20.orig/magic/Magdir/commands 2007-05-22 10:53:10 +0300
+++ file-4.20/magic/Magdir/commands 2007-08-21 03:23:37 +0300
@@ -28,7 +28,7 @@
0 string/b #!\ /bin/awk awk script text executable
0 string/b #!\ /usr/bin/awk awk script text executable
# update to distinguish from *.vcf files
-0 regex BEGIN[[:space:]]*[{] awk script text
+#0 regex BEGIN[[:space:]]*[{] awk script text
# AT&T Bell Labs' Plan 9 shell
0 string/b #!\ /bin/rc Plan 9 rc shell script text executable
diff -urN file-4.20.orig/magic/Magdir/compress file-4.20/magic/Magdir/compress
--- file-4.20.orig/magic/Magdir/compress 2007-05-22 10:53:10 +0300
+++ file-4.20/magic/Magdir/compress 2007-08-21 03:23:37 +0300
@@ -101,18 +101,18 @@
# bzip a block-sorting file compressor
# by Julian Seward <sewardj@cs.man.ac.uk> and others
-#
-0 string BZ bzip compressed data
->2 byte x \b, version: %c
->3 string =1 \b, compression block size 100k
->3 string =2 \b, compression block size 200k
->3 string =3 \b, compression block size 300k
->3 string =4 \b, compression block size 400k
->3 string =5 \b, compression block size 500k
->3 string =6 \b, compression block size 600k
->3 string =7 \b, compression block size 700k
->3 string =8 \b, compression block size 800k
->3 string =9 \b, compression block size 900k
+# Disabled because it is too weak (MPi)
+#0 string BZ bzip compressed data
+#>2 byte x \b, version: %c
+#>3 string =1 \b, compression block size 100k
+#>3 string =2 \b, compression block size 200k
+#>3 string =3 \b, compression block size 300k
+#>3 string =4 \b, compression block size 400k
+#>3 string =5 \b, compression block size 500k
+#>3 string =6 \b, compression block size 600k
+#>3 string =7 \b, compression block size 700k
+#>3 string =8 \b, compression block size 800k
+#>3 string =9 \b, compression block size 900k
# lzop from <markus.oberhumer@jk.uni-linz.ac.at>
0 string \x89\x4c\x5a\x4f\x00\x0d\x0a\x1a\x0a lzop compressed data
diff -urN file-4.20.orig/magic/Magdir/cracklib file-4.20/magic/Magdir/cracklib
--- file-4.20.orig/magic/Magdir/cracklib 2007-05-22 10:53:10 +0300
+++ file-4.20/magic/Magdir/cracklib 2007-08-21 03:23:37 +0300
@@ -9,5 +9,5 @@
0 belong 0x70775631 Cracklib password index, big endian
>4 belong >-1 (%i words)
# really bellong 0x0000000070775631
-4 belong 0x70775631 Cracklib password index, big endian ("64-bit")
+0 search/1 \0\0\0\0pwV1 Cracklib password index, big endian ("64-bit")
>12 belong >0 (%i words)
diff -urN file-4.20.orig/magic/Magdir/elf file-4.20/magic/Magdir/elf
--- file-4.20.orig/magic/Magdir/elf 2007-05-22 10:53:10 +0300
+++ file-4.20/magic/Magdir/elf 2007-08-21 03:23:37 +0300
@@ -51,7 +51,7 @@
>>>>36 lelong&0xf0000000 0x20000000 MIPS-III
>>>>36 lelong&0xf0000000 0x30000000 MIPS-IV
>>>>36 lelong&0xf0000000 0x40000000 MIPS-V
->>>>36 lelong&0xf0000000 0x60000000 MIPS32
+>>>>36 lelong&0xf0000000 0x5fffffff MIPS32
>>>>36 lelong&0xf0000000 0x70000000 MIPS64
>>>>36 lelong&0xf0000000 0x80000000 MIPS32 rel2
>>>>36 lelong&0xf0000000 0x90000000 MIPS64 rel2
diff -urN file-4.20.orig/magic/Magdir/erlang file-4.20/magic/Magdir/erlang
--- file-4.20.orig/magic/Magdir/erlang 1970-01-01 03:00:00 +0300
+++ file-4.20/magic/Magdir/erlang 2007-08-21 03:17:27 +0300
@@ -0,0 +1,13 @@
+# OTP R3-R4
+0 string \0177BEAM! Old Erlang BEAM file
+>6 short >0 - version %d
+
+# OTP R5 and onwards
+0 string FOR1
+>8 string BEAM Erlang BEAM file
+
+# 4.2 version may have a copyright notice!!
+4 string Tue Jan 22 14:32:44 MET 1991 Erlang JAM file - version 4.2
+79 string Tue Jan 22 14:32:44 MET 1991 Erlang JAM file - version 4.2
+
+4 string 1.0 Fri Feb 3 09:55:56 MET 1995 Erlang JAM file - version 4.3
diff -urN file-4.20.orig/magic/Magdir/fsav file-4.20/magic/Magdir/fsav
--- file-4.20.orig/magic/Magdir/fsav 2007-05-22 10:53:10 +0300
+++ file-4.20/magic/Magdir/fsav 2007-08-21 03:23:37 +0300
@@ -54,7 +54,5 @@
>>>>>>>>37 string x \b%-.1s
>>>>>>>>>38 string !:
>>>>>>>>>>38 string x \b%-.1s
->>>>512 string \037\213 \b, gzipped
->>>>769 string ustar\0 \b, tared
>512 string \037\213 \b, gzipped
>769 string ustar\0 \b, tared
diff -urN file-4.20.orig/magic/Magdir/hp file-4.20/magic/Magdir/hp
--- file-4.20.orig/magic/Magdir/hp 2007-05-22 10:53:10 +0300
+++ file-4.20/magic/Magdir/hp 2007-08-21 03:23:37 +0300
@@ -203,33 +203,36 @@
>8 long >0 %d messages
# addendum to /etc/magic with HP-48sx file-types by phk@data.fls.dk 1jan92
-0 string HPHP48- HP48 binary
->7 byte >0 - Rev %c
->8 beshort 0x1129 (ADR)
->8 beshort 0x3329 (REAL)
->8 beshort 0x5529 (LREAL)
->8 beshort 0x7729 (COMPLX)
->8 beshort 0x9d29 (LCOMPLX)
->8 beshort 0xbf29 (CHAR)
->8 beshort 0xe829 (ARRAY)
->8 beshort 0x0a2a (LNKARRAY)
->8 beshort 0x2c2a (STRING)
->8 beshort 0x4e2a (HXS)
->8 beshort 0x742a (LIST)
->8 beshort 0x962a (DIR)
->8 beshort 0xb82a (ALG)
->8 beshort 0xda2a (UNIT)
->8 beshort 0xfc2a (TAGGED)
->8 beshort 0x1e2b (GROB)
->8 beshort 0x402b (LIB)
->8 beshort 0x622b (BACKUP)
->8 beshort 0x882b (LIBDATA)
->8 beshort 0x9d2d (PROG)
->8 beshort 0xcc2d (CODE)
->8 beshort 0x482e (GNAME)
->8 beshort 0x6d2e (LNAME)
->8 beshort 0x922e (XLIB)
-0 string %%HP: HP48 text
+0 string HPHP4 HP
+>5 string 8 48 binary
+>5 string 9 49 binary
+>7 byte >64 - Rev %c
+>8 leshort 0x2911 (ADR)
+>8 leshort 0x2933 (REAL)
+>8 leshort 0x2955 (LREAL)
+>8 leshort 0x2977 (COMPLX)
+>8 leshort 0x299d (LCOMPLX)
+>8 leshort 0x29bf (CHAR)
+>8 leshort 0x29e8 (ARRAY)
+>8 leshort 0x2a0a (LNKARRAY)
+>8 leshort 0x2a2c (STRING)
+>8 leshort 0x2a4e (HXS)
+>8 leshort 0x2a74 (LIST)
+>8 leshort 0x2a96 (DIR)
+>8 leshort 0x2ab8 (ALG)
+>8 leshort 0x2ada (UNIT)
+>8 leshort 0x2afc (TAGGED)
+>8 leshort 0x2b1e (GROB)
+>8 leshort 0x2b40 (LIB)
+>8 leshort 0x2b62 (BACKUP)
+>8 leshort 0x2b88 (LIBDATA)
+>8 leshort 0x2d9d (PROG)
+>8 leshort 0x2dcc (CODE)
+>8 leshort 0x2e48 (GNAME)
+>8 leshort 0x2e6d (LNAME)
+>8 leshort 0x2e92 (XLIB)
+
+0 string %%HP: HP text
>6 string T(0) - T(0)
>6 string T(1) - T(1)
>6 string T(2) - T(2)
@@ -240,6 +243,23 @@
>14 string F(.) F(.);
>14 string F(,) F(,);
+0 string HP3 HP
+>3 string 8 38
+>3 string 9 39
+>4 string Bin binary
+>4 string Asc ASCII
+>7 string A (Directory List)
+>7 string B (Zaplet)
+>7 string C (Note)
+>7 string D (Program)
+>7 string E (Variable)
+>7 string F (List)
+>7 string G (Matrix)
+>7 string H (Library)
+>7 string I (Target List)
+>7 string J (ASCII Vector specification)
+>7 string K (wildcard)
+
# hpBSD magic numbers
0 beshort 200 hp200 (68010) BSD
>2 beshort 0407 impure binary
@@ -390,6 +410,3 @@
>>>>>>>>>0xC4 belong 33 - received SIGXCPU
>>>>>>>>>0xC4 belong 34 - received SIGXFSZ
-# From: AMAKAWA Shuhei <sa264@cam.ac.uk>
-0 string HPHP49- HP49 binary
-
diff -urN file-4.20.orig/magic/Magdir/images file-4.20/magic/Magdir/images
--- file-4.20.orig/magic/Magdir/images 2007-05-22 10:53:10 +0300
+++ file-4.20/magic/Magdir/images 2007-08-21 03:23:37 +0300
@@ -490,11 +490,11 @@
# Bio-Rad .PIC is an image format used by microscope control systems
# and related image processing software used by biologists.
# From: Vebjorn Ljosa <vebjorn@ljosa.com>
-54 leshort 12345 Bio-Rad .PIC Image File
->0 leshort >0 %hd x
->2 leshort >0 %hd,
->4 leshort =1 1 image in file
->4 leshort >1 %hd images in file
+#54 leshort 12345 Bio-Rad .PIC Image File
+#>0 leshort >0 %hd x
+#>2 leshort >0 %hd,
+#>4 leshort =1 1 image in file
+#>4 leshort >1 %hd images in file
# From Jan "Yenya" Kasprzak <kas@fi.muni.cz>
# The description of *.mrw format can be found at
diff -urN file-4.20.orig/magic/Magdir/linux file-4.20/magic/Magdir/linux
--- file-4.20.orig/magic/Magdir/linux 2007-05-22 10:53:10 +0300
+++ file-4.20/magic/Magdir/linux 2007-08-21 03:23:37 +0300
@@ -187,14 +187,6 @@
0 string OOOM User-Mode-Linux's Copy-On-Write disk image
>4 belong x version %d
-# SE Linux policy database
-# From: Mike Frysinger <vapier@gentoo.org>
-0 lelong 0xf97cff8c SE Linux policy
->16 lelong x v%d
->20 lelong 1 MLS
->24 lelong x %d symbols
->28 lelong x %d ocons
-
# Linux Logical Volume Manager (LVM)
# Emmanuel VARAGNAT <emmanuel.varagnat@guzu.net>
#
@@ -230,9 +222,8 @@
0x618 string LVM2\ 001 LVM2 (Linux Logical Volume Manager)
>(0x614.l+0x600) string >\0 , UUID: %s
-# SE Linux policy database
-0 lelong 0xf97cff8c SE Linux policy
->16 lelong x v%d
->20 lelong 1 MLS
->24 lelong x %d symbols
->28 lelong x %d ocons
+# File magic for Xen, the virtual machine monitor for x86
+0 string LinuxGuestRecord Xen saved domain
+#>2 regex \(name\ [^)]*\) %s
+>20 search/256 (name (name
+>>&1 string x %s...)
diff -urN file-4.20.orig/magic/Magdir/macintosh file-4.20/magic/Magdir/macintosh
--- file-4.20.orig/magic/Magdir/macintosh 2007-05-22 10:53:10 +0300
+++ file-4.20/magic/Magdir/macintosh 2007-08-21 03:23:37 +0300
@@ -267,14 +267,15 @@
# Alternatively, the boot block is supposed to be zeroed if it's
# unused, so a simply >0 should suffice.
-0x400 beshort 0xD2D7 Macintosh MFS data
->0 beshort 0x4C4B (bootable)
->0x40a beshort &0x8000 (locked)
->0x402 beldate-0x7C25B080 x created: %s,
->0x406 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
+# disabled due to false positives (ldv)
+#0x400 beshort 0xD2D7 Macintosh MFS data
+#>0 beshort 0x4C4B (bootable)
+#>0x40a beshort &0x8000 (locked)
+#>0x402 beldate-0x7C25B080 x created: %s,
+#>0x406 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
# "BD" is has many false positives
#0x400 beshort 0x4244 Macintosh HFS data
@@ -291,24 +292,25 @@
#>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
->0 beshort 0x4C4B (bootable)
->0x404 belong ^0x00000100 (mounted)
->&2 belong &0x00000200 (spared blocks)
->&2 belong &0x00000800 (unclean)
->&2 belong &0x00008000 (locked)
->&6 string x last mounted by: '%.4s',
+# disabled due to false positives (ldv)
+#0x400 beshort 0x482B Macintosh HFS Extended
+#>&0 beshort x version %d data
+#>0 beshort 0x4C4B (bootable)
+#>0x404 belong ^0x00000100 (mounted)
+#>&2 belong &0x00000200 (spared blocks)
+#>&2 belong &0x00000800 (unclean)
+#>&2 belong &0x00008000 (locked)
+#>&6 string x last mounted by: '%.4s',
# really, that should be treated as a belong and we print a string
# based on the value. TN1150 only mentions '8.10' for "MacOS 8.1"
>&14 beldate-0x7C25B080 x created: %s,
# only the creation date is local time, all other timestamps in HFS+ are UTC.
->&18 bedate-0x7C25B080 x last modified: %s,
->&22 bedate-0x7C25B080 >0 last backup: %s,
->&26 bedate-0x7C25B080 >0 last checked: %s,
->&38 belong x block size: %d,
->&42 belong x number of blocks: %d,
->&46 belong x free blocks: %d
+#>&18 bedate-0x7C25B080 x last modified: %s,
+#>&22 bedate-0x7C25B080 >0 last backup: %s,
+#>&26 bedate-0x7C25B080 >0 last checked: %s,
+#>&38 belong x block size: %d,
+#>&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
@@ -320,41 +322,42 @@
# 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?
-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,
->>0x800 beshort 0x504D
->>>0x830 string x third type: %s,
->>>0x810 string x name: %s,
->>>0x854 belong x number of blocks: %d,
->>>0xa00 beshort 0x504D
->>>>0xa30 string x fourth type: %s,
->>>>0xa10 string x name: %s,
->>>>0xa54 belong x number of blocks: %d
-# AFAIK, only the signature is different
-0x200 beshort 0x5453 Apple Old 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,
->>0x800 beshort 0x504D
->>>0x830 string x third type: %s,
->>>0x810 string x name: %s,
->>>0x854 belong x number of blocks: %d,
->>>0xa00 beshort 0x504D
->>>>0xa30 string x fourth type: %s,
->>>>0xa10 string x name: %s,
->>>>0xa54 belong x number of blocks: %d
+# disabled due to false positives (ldv)
+#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,
+#>>0x800 beshort 0x504D
+#>>>0x830 string x third type: %s,
+#>>>0x810 string x name: %s,
+#>>>0x854 belong x number of blocks: %d,
+#>>>0xa00 beshort 0x504D
+#>>>>0xa30 string x fourth type: %s,
+#>>>>0xa10 string x name: %s,
+#>>>>0xa54 belong x number of blocks: %d
+## AFAIK, only the signature is different
+#0x200 beshort 0x5453 Apple Old 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,
+#>>0x800 beshort 0x504D
+#>>>0x830 string x third type: %s,
+#>>>0x810 string x name: %s,
+#>>>0x854 belong x number of blocks: %d,
+#>>>0xa00 beshort 0x504D
+#>>>>0xa30 string x fourth type: %s,
+#>>>>0xa10 string x name: %s,
+#>>>>0xa54 belong x number of blocks: %d
# From: Remi Mommsen <mommsen@slac.stanford.edu>
0 string BOMStore Mac OS X bill of materials (BOM) fil
diff -urN file-4.20.orig/magic/Magdir/mcrypt file-4.20/magic/Magdir/mcrypt
--- file-4.20.orig/magic/Magdir/mcrypt 2007-05-22 10:53:10 +0300
+++ file-4.20/magic/Magdir/mcrypt 2007-08-21 03:23:37 +0300
@@ -1,13 +1,17 @@
#------------------------------------------------------------------------------
# Mavroyanopoulos Nikos <nmav@hellug.gr>
-# mcrypt: file(1) magic for mcrypt 2.2.x;
+# mcrypt: file(1) magic for mcrypt 2.5;
0 string \0m\3 mcrypt 2.5 encrypted data,
>4 string >\0 algorithm: %s,
>>&1 leshort >0 keysize: %d bytes,
>>>&0 string >\0 mode: %s,
+>>>>&1 string >\0 key generator: %s
+#end mcrypt 2.5
+#------------------------------------------------------------------------------
+# mcrypt: file(1) magic for mcrypt 2.2;
0 string \0m\2 mcrypt 2.2 encrypted data,
->3 byte 0 algorithm: blowfish-448,
+>3 byte 0 algorithm: BLOWFISH-448,
>3 byte 1 algorithm: DES,
>3 byte 2 algorithm: 3DES,
>3 byte 3 algorithm: 3-WAY,
@@ -17,20 +21,62 @@
>3 byte 8 algorithm: CAST-128,
>3 byte 9 algorithm: xTEA,
>3 byte 10 algorithm: TWOFISH-128,
->3 byte 11 algorithm: RC2,
+>3 byte 11 algorithm: RC2-1024,
>3 byte 12 algorithm: TWOFISH-192,
>3 byte 13 algorithm: TWOFISH-256,
->3 byte 14 algorithm: blowfish-128,
->3 byte 15 algorithm: blowfish-192,
->3 byte 16 algorithm: blowfish-256,
->3 byte 100 algorithm: RC6,
+>3 byte 14 algorithm: BLOWFISH-128,
+>3 byte 15 algorithm: BLOWFISH-192,
+>3 byte 16 algorithm: BLOWFISH-256,
+>3 byte 17 algorithm: CAST-256,
+>3 byte 18 algorithm: SAFER+,
+>3 byte 19 algorithm: LOKI97,
+>3 byte 20 algorithm: SERPENT-128,
+>3 byte 21 algorithm: SERPENT-192,
+>3 byte 22 algorithm: SERPENT-256,
+>3 byte 23 algorithm: RIJNDAEL-128,
+>3 byte 24 algorithm: RIJNDAEL-192,
+>3 byte 25 algorithm: RIJNDAEL-256,
+>3 byte 26 algorithm: RC2-256,
+>3 byte 27 algorithm: RC2-128,
+>3 byte 100 algorithm: RC6-256,
>3 byte 101 algorithm: IDEA,
+>3 byte 102 algorithm: RC6-128,
+>3 byte 103 algorithm: RC6-192,
+>3 byte 104 algorithm: RC4,
>4 byte 0 mode: CBC,
>4 byte 1 mode: ECB,
>4 byte 2 mode: CFB,
>4 byte 3 mode: OFB,
>4 byte 4 mode: nOFB,
+>4 byte 5 mode: STREAM,
>5 byte 0 keymode: 8bit
>5 byte 1 keymode: 4bit
>5 byte 2 keymode: SHA-1 hash
>5 byte 3 keymode: MD5 hash
+#end mcrypt 2.2
+
+#------------------------------------------------------------------------------
+# mcrypt: file(1) magic for mcrypt 2.1;
+0 string \0m\0 mcrypt 2.1 encrypted data,
+>3 byte 0 algorithm: BLOWFISH,
+>3 byte 1 algorithm: DES,
+>3 byte 2 algorithm: 3DES,
+>3 byte 3 algorithm: 3-WAY,
+>3 byte 4 algorithm: GOST,
+>3 byte 6 algorithm: SAFER-SK64,
+>3 byte 7 algorithm: SAFER-SK128,
+>3 byte 8 algorithm: CAST-128,
+>3 byte 9 algorithm: xTEA,
+>3 byte 10 algorithm: TWOFISH-128,
+>3 byte 11 algorithm: RC2,
+>3 byte 12 algorithm: TWOFISH-192,
+>3 byte 13 algorithm: TWOFISH-256,
+>3 byte 100 algorithm: RC6,
+>3 byte 101 algorithm: IDEA,
+>4 byte 0 mode: CBC,
+>4 byte 1 mode: ECB,
+>4 byte 2 mode: CFB,
+>4 byte 3 mode: OFB,
+>5 byte 0 keymode: 8bit
+>5 byte 1 keymode: 4bit
+#end mcrypt 2.1
diff -urN file-4.20.orig/magic/Magdir/msdos file-4.20/magic/Magdir/msdos
--- file-4.20.orig/magic/Magdir/msdos 2007-05-22 10:53:10 +0300
+++ file-4.20/magic/Magdir/msdos 2007-08-21 03:23:37 +0300
@@ -14,8 +14,8 @@
# OS/2 batch files are REXX. the second regex is a bit generic, oh well
# the matched commands seem to be common in REXX and uncommon elsewhere
-100 regex/c =^\\s*call\\s+rxfuncadd.*sysloadfu OS/2 REXX batch file text
-100 regex/c =^\\s*say\ ['"] OS/2 REXX batch file text
+#100 regex/c =^\\s*call\\s+rxfuncadd.*sysloadfu OS/2 REXX batch file text
+#100 regex/c =^\\s*say\ ['"] OS/2 REXX batch file text
0 leshort 0x14c MS Windows COFF Intel 80386 object file
#>4 ledate x stamp %s
@@ -337,7 +337,7 @@
# FIXME: missing diet .com compression
# miscellaneous formats
-0 string LZ MS-DOS executable (built-in)
+#0 string LZ MS-DOS executable (built-in)
#0 byte 0xf0 MS-DOS program library data
#
@@ -407,7 +407,7 @@
>15 string 1.0\ --\ HyperTerminal\ data\ file MS-windows Hyperterminal
# Windows Metafont .WMF
-0 string \327\315\306\232 ms-windows metafont .wmf
+0 string \327\315\306\232\000 ms-windows metafont .wmf
0 string \002\000\011\000 ms-windows metafont .wmf
0 string \001\000\011\000 ms-windows metafont .wmf
@@ -572,24 +572,25 @@
>4 byte =0x30 Offline database
-# Windows Enhanced Metafile (EMF)
-# See msdn.microsoft.com/archive/en-us/dnargdi/html/msdn_enhmeta.asp
-# for further information. Note that "0 lelong 1" should be true i.e.
-# the first double word in the file should be 1. With the extended
-# syntax available by some file commands you could write:
-# 0 lelong 1
-# &40 ulelong 0x464D4520 Windows Enhanced Metafile (EMF) image data
-40 ulelong 0x464D4520 Windows Enhanced Metafile (EMF) image data
->44 ulelong x version 0x%x.
-# If the description has a length greater than zero, it exists and is
-# found at offset (*64).
->64 ulelong >0 Description available at offset 0x%x
->>60 ulelong >0 (length 0x%x)
-# Note it would be better to print out the description, which is found
-# as below. Unfortunately the following only prints out the first couple
-# of characters instead of all the "description length"
-# number of characters -- indicated by the ulelong at offset 60.
->>(64.l) lestring16 >0 Description: %15.15s
+# This is pure ASCII magic, "EMF " at position 40 (MPi)
+## Windows Enhanced Metafile (EMF)
+## See msdn.microsoft.com/archive/en-us/dnargdi/html/msdn_enhmeta.asp
+## for further information. Note that "0 lelong 1" should be true i.e.
+## the first double word in the file should be 1. With the extended
+## syntax available by some file commands you could write:
+## 0 lelong 1
+## &40 ulelong 0x464D4520 Windows Enhanced Metafile (EMF) image data
+#40 ulelong 0x464D4520 Windows Enhanced Metafile (EMF) image data
+#>44 ulelong x version 0x%x.
+## If the description has a length greater than zero, it exists and is
+## found at offset (*64).
+#>64 ulelong >0 Description available at offset 0x%x
+#>>60 ulelong >0 (length 0x%x)
+## Note it would be better to print out the description, which is found
+## as below. Unfortunately the following only prints out the first couple
+## of characters instead of all the "description length"
+## number of characters -- indicated by the ulelong at offset 60.
+#>>(64.l) lestring16 >0 Description: %15.15s
# From: Alex Beregszaszi <alex@fsn.hu>
0 string COWD VMWare3
diff -urN file-4.20.orig/magic/Magdir/os400 file-4.20/magic/Magdir/os400
--- file-4.20.orig/magic/Magdir/os400 2007-05-22 10:53:10 +0300
+++ file-4.20/magic/Magdir/os400 2007-08-21 03:23:37 +0300
@@ -9,24 +9,24 @@
# so we must search in a somewhat large area for a particular string
# that represents the EBCDIC encoding of 'QSRDSSPC' (save/restore
# descriptor space) preceded by a two byte constant.
-40 string @@@@@@@@
->1089 search/7394 \x19\xDB\xD8\xE2\xD9\xC4\xE2\xE2\xD7\xC3 IBM OS/400 save file data
->>&212 byte 0x01 \b, created with SAVOBJ
->>&212 byte 0x02 \b, created with SAVLIB
->>&212 byte 0x07 \b, created with SAVCFG
->>&212 byte 0x0B \b, created with SAVDLO
->>&213 byte 0x43 \b, at least V5R3 to open
->>&213 byte 0x42 \b, at least V5R2 to open
->>&213 byte 0x41 \b, at least V5R1 to open
->>&213 byte 0x40 \b, at least V4R5 to open
->>&213 byte 0x3F \b, at least V4R4 to open
->>&213 byte 0x3E \b, at least V4R3 to open
->>&213 byte 0x3C \b, at least V4R2 to open
->>&213 byte 0x3D \b, at least V4R1M4 to open
->>&213 byte 0x3B \b, at least V4R1 to open
->>&213 byte 0x3A \b, at least V3R7 to open
->>&213 byte 0x35 \b, at least V3R6 to open
->>&213 byte 0x36 \b, at least V3R2 to open
->>&213 byte 0x34 \b, at least V3R1 to open
->>&213 byte 0x31 \b, at least V3R0M5 to open
->>&213 byte 0x30 \b, at least V2R3 to open
+#40 string @@@@@@@@
+#>1089 search/7394 \x19\xDB\xD8\xE2\xD9\xC4\xE2\xE2\xD7\xC3 IBM OS/400 save file data
+#>>&212 byte 0x01 \b, created with SAVOBJ
+#>>&212 byte 0x02 \b, created with SAVLIB
+#>>&212 byte 0x07 \b, created with SAVCFG
+#>>&212 byte 0x0B \b, created with SAVDLO
+#>>&213 byte 0x43 \b, at least V5R3 to open
+#>>&213 byte 0x42 \b, at least V5R2 to open
+#>>&213 byte 0x41 \b, at least V5R1 to open
+#>>&213 byte 0x40 \b, at least V4R5 to open
+#>>&213 byte 0x3F \b, at least V4R4 to open
+#>>&213 byte 0x3E \b, at least V4R3 to open
+#>>&213 byte 0x3C \b, at least V4R2 to open
+#>>&213 byte 0x3D \b, at least V4R1M4 to open
+#>>&213 byte 0x3B \b, at least V4R1 to open
+#>>&213 byte 0x3A \b, at least V3R7 to open
+#>>&213 byte 0x35 \b, at least V3R6 to open
+#>>&213 byte 0x36 \b, at least V3R2 to open
+#>>&213 byte 0x34 \b, at least V3R1 to open
+#>>&213 byte 0x31 \b, at least V3R0M5 to open
+#>>&213 byte 0x30 \b, at least V2R3 to open
diff -urN file-4.20.orig/magic/Magdir/perl file-4.20/magic/Magdir/perl
--- file-4.20.orig/magic/Magdir/perl 2007-05-22 10:53:10 +0300
+++ file-4.20/magic/Magdir/perl 2007-08-21 03:23:37 +0300
@@ -9,8 +9,8 @@
0 string eval\ "exec\ /bin/perl perl script text
0 string/b #!\ /usr/bin/perl perl script text executable
0 string eval\ "exec\ /usr/bin/perl perl script text
-0 string/b #!\ /usr/local/bin/perl perl script text
-0 string eval\ "exec\ /usr/local/bin/perl perl script text executable
+0 string/b #!\ /usr/local/bin/perl perl script text executable
+0 string eval\ "exec\ /usr/local/bin/perl perl script text
0 string eval\ '(exit\ $?0)'\ &&\ eval\ 'exec perl script text
@@ -25,15 +25,14 @@
>>0 regex \^1\ *;|\^(use|sub|my)\ .*[(;{=] Perl5 module source text
-
# Perl POD documents
# From: Tom Hukins <tom@eborcom.com>
-0 string/B \=pod\n Perl POD document
-0 string/B \n\=pod\n Perl POD document
-0 string/B \=head1\ Perl POD document
-0 string/B \n\=head1\ Perl POD document
-0 string/B \=head2\ Perl POD document
-0 string/B \n\=head2\ Perl POD document
+#0 string/B \=pod\n Perl POD document
+#0 string/B \n\=pod\n Perl POD document
+#0 string/B \=head1\ Perl POD document
+#0 string/B \n\=head1\ Perl POD document
+#0 string/B \=head2\ Perl POD document
+#0 string/B \n\=head2\ Perl POD document
# Perl Storable data files.
0 string perl-store perl Storable(v0.6) data
diff -urN file-4.20.orig/magic/Magdir/revision file-4.20/magic/Magdir/revision
--- file-4.20.orig/magic/Magdir/revision 2007-05-22 10:53:10 +0300
+++ file-4.20/magic/Magdir/revision 2007-08-21 03:23:37 +0300
@@ -3,3 +3,9 @@
# file(1) magic for revision control files
# From Hendrik Scholz <hendrik@scholz.net>
0 string /1\ :pserver: cvs password text file
+
+
+# Subversion (SVN) dumps
+# Uwe Zeisberger <zeisberg@informatik.uni-freiburg.de>
+0 string SVN-fs-dump-format-version: Subversion dumpfile
+>28 string >\0 (version: %s)
diff -urN file-4.20.orig/magic/Magdir/scientific file-4.20/magic/Magdir/scientific
--- file-4.20.orig/magic/Magdir/scientific 2007-05-22 10:53:10 +0300
+++ file-4.20/magic/Magdir/scientific 2007-08-21 03:23:37 +0300
@@ -16,22 +16,22 @@
# Electron density MAP/MASK formats
0 string EZD_MAP NEWEZD Electron Density Map
-109 string MAP\040( Old EZD Electron Density Map
+#109 string MAP\040( Old EZD Electron Density Map
0 string/c :-)\040Origin BRIX Electron Density Map
>170 string >0 , Sigma:%.12s
#>4 string >0 %.178s
#>4 addr x %.178s
-7 string 18\040!NTITLE XPLOR ASCII Electron Density Map
-9 string \040!NTITLE\012\040REMARK CNS ASCII electron density map
+#7 string 18\040!NTITLE XPLOR ASCII Electron Density Map
+#9 string \040!NTITLE\012\040REMARK CNS ASCII electron density map
-208 string MAP\040 CCP4 Electron Density Map
+#208 string MAP\040 CCP4 Electron Density Map
# Assumes same stamp for float and double (normal case)
->212 byte 17 \b, Big-endian
->212 byte 34 \b, VAX format
->212 byte 68 \b, Little-endian
->212 byte 85 \b, Convex native
+#>212 byte 17 \b, Big-endian
+#>212 byte 34 \b, VAX format
+#>212 byte 68 \b, Little-endian
+#>212 byte 85 \b, Convex native
############################################################
# X-Ray Area Detector images
diff -urN file-4.20.orig/magic/magic.mime file-4.20/magic/magic.mime
--- file-4.20.orig/magic/magic.mime 2007-05-22 10:53:10 +0300
+++ file-4.20/magic/magic.mime 2007-08-21 03:23:37 +0300
@@ -273,7 +273,7 @@
0 string #!/usr/bin/awk application/x-awk
0 string #!\ /usr/bin/awk application/x-awk
# update to distinguish from *.vcf files by Joerg Jenderek: joerg dot jenderek at web dot de
-0 regex BEGIN[[:space:]]*[{] application/x-awk
+#0 regex BEGIN[[:space:]]*[{] application/x-awk
# For Larry Wall's perl language. The ``eval'' line recognizes an
# outrageously clever hack for USG systems.
@@ -298,10 +298,10 @@
# because it tries to uncompress it to figure out what's inside.
# standard unix compress
-0 string \037\235 application/x-compress
+#0 string \037\235 application/x-compress
# gzip (GNU zip, not to be confused with [Info-ZIP/PKWARE] zip archiver)
-0 string \037\213 application/x-gzip
+#0 string \037\213 application/x-gzip
0 string PK\003\004 application/x-zip
@@ -402,16 +402,13 @@
#
# from Daniel Quinlan <quinlan@yggdrasil.com>
#
-0 string \<HEAD text/html
-0 string \<head text/html
-0 string \<TITLE text/html
-0 string \<title text/html
-0 string \<html text/html
-0 string \<HTML text/html
+0 string/c \<head text/html
+0 string/c \<title text/html
+0 string/c \<html text/html
0 string \<!-- text/html
-0 string \<h1 text/html
-0 string \<H1 text/html
-0 string/c \<!doctype\ html text/html
+0 string/c \<h1 text/html
+0 string/Bc \<!doctype\ html text/html
+0 string \<?xml text/xml
#------------------------------------------------------------------------------
# images: file(1) magic for image formats (see also "c-lang" for XPM bitmaps)
@@ -474,7 +471,7 @@
0 beshort 0xffd8 image/jpeg
# PC bitmaps (OS/2, Windoze BMP files) (Greg Roelofs, newt@uchicago.edu)
-0 string BM image/bmp
+0 string BM image/x-ms-bmp
#>14 byte 12 (OS/2 1.x format)
#>14 byte 64 (OS/2 2.x format)
#>14 byte 40 (Windows 3.x format)
@@ -706,8 +703,10 @@
#------------------------------------------------------------------------------
# Hierarchical Data Format, used to facilitate scientific data exchange
# specifications at http://hdf.ncsa.uiuc.edu/
-0 belong 0x0e031301 Hierarchical Data Format (version 4) data
-0 string \211HDF\r\n\032 Hierarchical Data Format (version 5) data
+#Hierarchical Data Format (version 4) data
+0 belong 0x0e031301 application/x-hdf
+#Hierarchical Data Format (version 5) data
+0 string \211HDF\r\n\032 application/x-hdf
# Adobe Photoshop
0 string 8BPS image/x-photoshop
@@ -777,21 +776,27 @@
# Debian has entries for the old PGP formats:
# pgp: file(1) magic for Pretty Good Privacy
# see http://lists.gnupg.org/pipermail/gnupg-devel/1999-September/016052.html
-0 beshort 0x9900 text/PGP key public ring
-0 beshort 0x9501 text/PGP key security ring
-0 beshort 0x9500 text/PGP key security ring
-0 beshort 0xa600 text/PGP encrypted data
-0 string -----BEGIN\040PGP text/PGP armored data
->15 string PUBLIC\040KEY\040BLOCK- public key block
->15 string MESSAGE- message
->15 string SIGNED\040MESSAGE- signed message
->15 string PGP\040SIGNATURE- signature
-0 beshort 0x8501 data
+#text/PGP key public ring
+0 beshort 0x9900 application/pgp
+#text/PGP key security ring
+0 beshort 0x9501 application/pgp
+#text/PGP key security ring
+0 beshort 0x9500 application/pgp
+#text/PGP encrypted data
+0 beshort 0xa600 application/pgp-encrypted
+#text/PGP armored data
+##public key block
+2 string ---BEGIN\ PGP\ PUBLIC\ KEY\ BLOCK- application/pgp-keys
+0 string -----BEGIN\ PGP\ MESSAGE- application/pgp
+0 string -----BEGIN\ PGP\ SIGNED\ MESSAGE- application/pgp
+0 string -----BEGIN\ PGP\ SIGNATURE- application/pgp-signature
#
# GnuPG Magic:
#
-0 beshort 0x9901 text/GnuPG key public ring
-0 beshort 0x8501 text/OpenPGP data
+#text/GnuPG key public ring
+0 beshort 0x9901 application/pgp
+#text/OpenPGP data
+0 beshort 0x8501 application/pgp-encrypted
# flash: file(1) magic for Macromedia Flash file format
#
@@ -949,5 +954,10 @@
0 string WordPro\r\373 application/vnd.lotus-wordpro
0 string CPC\262 image/cpi
+# Gnumeric spreadsheet
+# This entry is only semi-helpful, as Gnumeric compresses its files, so
+# they will ordinarily reported as "compressed", but at least -z helps
+39 string =<gmr:Workbook application/x-gnumeric
+
#
128 string DICM application/dicom
diff -urN file-4.20.orig/magic/Makefile.am file-4.20/magic/Makefile.am
--- file-4.20.orig/magic/Makefile.am 2007-05-22 10:53:10 +0300
+++ file-4.20/magic/Makefile.am 2007-08-21 03:24:02 +0300
@@ -28,6 +28,7 @@
$(FILE_COMPILE) -C -m $(srcdir)/magic.mime
magic_FRAGMENTS = \
+Magdir/rpm \
Magdir/acorn \
Magdir/adi \
Magdir/adventure \
@@ -80,6 +81,7 @@
Magdir/elf \
Magdir/encore \
Magdir/epoc \
+Magdir/erlang \
Magdir/esri \
Magdir/fcs \
Magdir/filesystems \
@@ -166,7 +168,6 @@
Magdir/python \
Magdir/revision \
Magdir/riff \
-Magdir/rpm \
Magdir/rtf \
Magdir/sc \
Magdir/sccs \
diff -urN file-4.20.orig/src/ascmagic.c file-4.20/src/ascmagic.c
--- file-4.20.orig/src/ascmagic.c 2007-05-22 10:53:10 +0300
+++ file-4.20/src/ascmagic.c 2007-08-21 03:23:37 +0300
@@ -167,7 +167,7 @@
* I believe Plan 9 troff allows non-ASCII characters in the names
* of macros, so this test might possibly fail on such a file.
*/
- if ((ms->flags & MAGIC_NO_CHECK_TROFF) != 0 && *ubuf == '.') {
+ if ((ms->flags & MAGIC_NO_CHECK_TROFF) == 0 && *ubuf == '.') {
unichar *tp = ubuf + 1;
while (ISSPC(*tp))
@@ -184,7 +184,7 @@
}
}
- if ((ms->flags & MAGIC_NO_CHECK_FORTRAN) &&
+ if ((ms->flags & MAGIC_NO_CHECK_FORTRAN) == 0 &&
(*buf == 'c' || *buf == 'C') && ISSPC(buf[1])) {
subtype_mime = "text/fortran";
subtype = "fortran program";
diff -urN file-4.20.orig/src/compress.c file-4.20/src/compress.c
--- file-4.20.orig/src/compress.c 2007-05-22 10:53:10 +0300
+++ file-4.20/src/compress.c 2007-08-21 03:23:37 +0300
@@ -362,6 +362,7 @@
const unsigned char *old, unsigned char **newch, size_t n)
{
int fdin[2], fdout[2];
+ pid_t pid1 = -1, pid2 = -1;
int r;
#ifdef HAVE_LIBZ
@@ -375,7 +376,7 @@
file_error(ms, errno, "cannot create pipe");
return NODATA;
}
- switch (fork()) {
+ switch ((pid1=fork())) {
case 0: /* child */
(void) close(0);
if (fd != -1) {
@@ -416,7 +417,7 @@
* fork again, to avoid blocking because both
* pipes filled
*/
- switch (fork()) {
+ switch ((pid2=fork())) {
case 0: /* child */
(void)close(fdout[0]);
if (swrite(fdin[1], old, n) != (ssize_t)n) {
@@ -471,12 +472,8 @@
if (fdin[1] != -1)
(void) close(fdin[1]);
(void) close(fdout[0]);
-#ifdef WNOHANG
- while (waitpid(-1, NULL, WNOHANG) != -1)
- continue;
-#else
- (void)wait(NULL);
-#endif
+ waitpid(pid1, NULL, 0);
+ waitpid(pid2, NULL, 0);
return n;
}
}
diff -urN file-4.20.orig/src/file.c file-4.20/src/file.c
--- file-4.20.orig/src/file.c 2007-05-22 10:53:10 +0300
+++ file-4.20/src/file.c 2007-08-21 03:23:37 +0300
@@ -138,7 +138,7 @@
{"brief", 0, 0, 'b'},
{"checking-printout", 0, 0, 'c'},
{"debug", 0, 0, 'd'},
- {"exclude", 0, 0, 'e' },
+ {"exclude", 1, 0, 'e' },
{"files-from", 1, 0, 'f'},
{"separator", 1, 0, 'F'},
{"mime", 0, 0, 'i'},
@@ -351,8 +351,9 @@
process(argv[optind], wid);
}
+ c = magic->haderr ? 1 : 0;
magic_close(magic);
- return 0;
+ return c;
}
diff -urN file-4.20.orig/src/fsmagic.c file-4.20/src/fsmagic.c
--- file-4.20.orig/src/fsmagic.c 2007-05-22 10:53:10 +0300
+++ file-4.20/src/fsmagic.c 2007-08-21 03:23:37 +0300
@@ -92,7 +92,8 @@
if (file_printf(ms, "cannot open `%s' (%s)",
fn, strerror(errno)) == -1)
return -1;
- return 1;
+ ms->haderr++;
+ return -1;
}
if ((ms->flags & MAGIC_MIME) != 0) {
diff -urN file-4.20.orig/src/funcs.c file-4.20/src/funcs.c
--- file-4.20.orig/src/funcs.c 2007-05-22 10:53:10 +0300
+++ file-4.20/src/funcs.c 2007-08-21 03:23:37 +0300
@@ -26,7 +26,6 @@
*/
#include "file.h"
#include "magic.h"
-#include <assert.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
@@ -37,6 +36,7 @@
#if defined(HAVE_WCTYPE_H)
#include <wctype.h>
#endif
+#include <limits.h> /* for ULONG_MAX */
#ifndef lint
FILE_RCSID("@(#)$File: funcs.c,v 1.28 2007/03/01 22:14:54 christos Exp $")
@@ -219,6 +219,7 @@
return -1;
}
ms->o.ptr = ms->o.buf;
+ ms->o.left = ms->o.size;
ms->haderr = 0;
ms->error = -1;
return 0;
@@ -246,8 +247,12 @@
len = ms->o.size - ms->o.left;
/* * 4 is for octal representation, + 1 is for NUL */
+ if (len > (ULONG_MAX - 1) / 4) {
+ file_oomem(ms, ULONG_MAX);
+ return NULL;
+ }
psize = len * 4 + 1;
- assert(psize > len);
+
if (ms->o.psize < psize) {
if ((pbuf = realloc(ms->o.pbuf, psize)) == NULL) {
file_oomem(ms, psize);
diff -urN file-4.20.orig/src/magic.c file-4.20/src/magic.c
--- file-4.20.orig/src/magic.c 2007-05-22 10:53:10 +0300
+++ file-4.20/src/magic.c 2007-08-21 03:23:37 +0300
@@ -86,7 +86,7 @@
{
struct magic_set *ms;
- if ((ms = malloc(sizeof(struct magic_set))) == NULL)
+ if ((ms = calloc(1, sizeof(struct magic_set))) == NULL)
return NULL;
if (magic_setflags(ms, flags) == -1) {
diff -urN file-4.20.orig/src/Makefile.am file-4.20/src/Makefile.am
--- file-4.20.orig/src/Makefile.am 2007-05-22 10:53:10 +0300
+++ file-4.20/src/Makefile.am 2007-08-21 03:23:37 +0300
@@ -5,7 +5,7 @@
bin_PROGRAMS = file
-AM_CPPFLAGS = -DMAGIC='"$(MAGIC)"'
+AM_CPPFLAGS = -DMAGIC='"/etc/magic:$(MAGIC)"'
libmagic_la_SOURCES = magic.c apprentice.c softmagic.c ascmagic.c \
compress.c is_tar.c readelf.c print.c fsmagic.c \
diff -urN file-4.20.orig/src/readelf.c file-4.20/src/readelf.c
--- file-4.20.orig/src/readelf.c 2007-05-22 10:53:10 +0300
+++ file-4.20/src/readelf.c 2007-08-21 03:23:37 +0300
@@ -45,7 +45,7 @@
off_t, int *);
#endif
private int dophn_exec(struct magic_set *, int, int, int, off_t, int, size_t,
- off_t, int *);
+ off_t, int *, int);
private int doshn(struct magic_set *, int, int, int, off_t, int, size_t, int *);
private size_t donote(struct magic_set *, unsigned char *, size_t, size_t, int,
int, size_t, int *);
@@ -396,6 +396,14 @@
if (file_printf(ms, "Solaris") == -1)
return size;
break;
+ case GNU_OS_KFREEBSD:
+ if (file_printf(ms, "kFreeBSD") == -1)
+ return size;
+ break;
+ case GNU_OS_KNETBSD:
+ if (file_printf(ms, "kNetBSD") == -1)
+ return size;
+ break;
default:
if (file_printf(ms, "<unknown>") == -1)
return size;
@@ -785,7 +793,7 @@
*/
private int
dophn_exec(struct magic_set *ms, int class, int swap, int fd, off_t off,
- int num, size_t size, off_t fsize, int *flags)
+ int num, size_t size, off_t fsize, int *flags, int sh_num)
{
Elf32_Phdr ph32;
Elf64_Phdr ph64;
@@ -854,6 +862,19 @@
return -1;
align = 4;
}
+ /* If we have a section header table, handle note
+ sections just in doshn. Handling them also here
+ means that for executables we print the note content
+ twice and, more importantly, don't handle
+ strip -o created debuginfo files correctly.
+ They have PT_NOTE header, but the actual note
+ content is not present in the debuginfo file,
+ only in the original stripped executable or library.
+ The corresponding .note.* section is SHT_NOBITS
+ rather than SHT_NOTE, so doshn will not look
+ at it. */
+ if (sh_num)
+ break;
/*
* This is a PT_NOTE section; loop through all the notes
* in the section.
@@ -908,6 +929,14 @@
int flags = 0;
/*
+ * Return if it is not ELF to avoid unneeded file_pipe2file() call.
+ */
+ if (buf[EI_MAG0] != ELFMAG0
+ || (buf[EI_MAG1] != ELFMAG1 && buf[EI_MAG1] != OLFMAG1)
+ || buf[EI_MAG2] != ELFMAG2 || buf[EI_MAG3] != ELFMAG3)
+ return 0;
+
+ /*
* If we cannot seek, it must be a pipe, socket or fifo.
*/
if((lseek(fd, (off_t)0, SEEK_SET) == (off_t)-1) && (errno == ESPIPE))
@@ -925,11 +954,6 @@
* Instead we traverse thru all section headers until a symbol table
* one is found or else the binary is stripped.
*/
- if (buf[EI_MAG0] != ELFMAG0
- || (buf[EI_MAG1] != ELFMAG1 && buf[EI_MAG1] != OLFMAG1)
- || buf[EI_MAG2] != ELFMAG2 || buf[EI_MAG3] != ELFMAG3)
- return 0;
-
class = buf[EI_CLASS];
@@ -960,7 +984,8 @@
fd, (off_t)getu32(swap, elfhdr.e_phoff),
getu16(swap, elfhdr.e_phnum),
(size_t)getu16(swap, elfhdr.e_phentsize),
- fsize, &flags)
+ fsize, &flags,
+ getu16(swap, elfhdr.e_shnum))
== -1)
return -1;
}
@@ -1001,7 +1026,8 @@
(off_t)elf_getu64(swap, elfhdr.e_phoff),
getu16(swap, elfhdr.e_phnum),
(size_t)getu16(swap, elfhdr.e_phentsize),
- fsize, &flags) == -1)
+ fsize, &flags,
+ getu16(swap, elfhdr.e_shnum)) == -1)
return -1;
}
if (doshn(ms, class, swap, fd,
diff -urN file-4.20.orig/src/readelf.h file-4.20/src/readelf.h
--- file-4.20.orig/src/readelf.h 2007-05-22 10:53:10 +0300
+++ file-4.20/src/readelf.h 2007-08-21 03:23:37 +0300
@@ -232,5 +232,7 @@
#define GNU_OS_LINUX 0
#define GNU_OS_HURD 1
#define GNU_OS_SOLARIS 2
+#define GNU_OS_KFREEBSD 3
+#define GNU_OS_KNETBSD 4
#endif
diff -urN file-4.20.orig/src/softmagic.c file-4.20/src/softmagic.c
--- file-4.20.orig/src/softmagic.c 2007-05-22 10:53:10 +0300
+++ file-4.20/src/softmagic.c 2007-08-21 03:23:37 +0300
@@ -38,7 +38,7 @@
#ifndef lint
-FILE_RCSID("@(#)$File: softmagic.c,v 1.91 2007/01/18 05:29:33 ljt Exp $")
+FILE_RCSID("@(#)$File: softmagic.c,v 1.95 2007/03/03 19:09:25 christos Exp $")
#endif /* lint */
private int match(struct magic_set *, struct magic *, uint32_t,
@@ -168,9 +168,9 @@
* main entry didn't match,
* flush its continuations
*/
- while (magindex < nmagic - 1 &&
- magic[magindex + 1].cont_level != 0)
- magindex++;
+ while (magindex + 1 < nmagic &&
+ magic[magindex + 1].cont_level != 0)
+ magindex++;
continue;
}
@@ -1523,10 +1523,20 @@
}
else {
regmatch_t pmatch[1];
+#ifndef REG_STARTEND
+#define REG_STARTEND 0
+ size_t l = ms->search.s_len - 1;
+ char c = ms->search.s[l];
+ ((char *)(intptr_t)ms->search.s)[l] = '\0';
+#else
pmatch[0].rm_so = 0;
pmatch[0].rm_eo = ms->search.s_len;
+#endif
rc = regexec(&rx, (const char *)ms->search.s,
1, pmatch, REG_STARTEND);
+#if REG_STARTEND == 0
+ ((char *)(intptr_t)ms->search.s)[l] = c;
+#endif
switch (rc) {
case 0:
ms->search.s += (int)pmatch[0].rm_so;