Virgin import of Christos Zoulas's FILE 3.36.

This commit is contained in:
David E. O'Brien 2001-07-30 03:09:46 +00:00
parent 61295bbb39
commit 2e67ec0205
40 changed files with 1666 additions and 277 deletions

12
contrib/file/Magdir/adi Normal file
View File

@ -0,0 +1,12 @@
#------------------------------------------------------------------------------
# adi: file(1) magic for ADi's objects
# From Gregory McGarry <g.mcgarry@ieee.org>
#
0 leshort 0x521c COFF DSP21k
>18 lelong &02 executable,
>18 lelong ^02
>>18 lelong &01 static object,
>>18 lelong ^01 relocatable object,
>18 lelong &010 stripped
>18 lelong ^010 not stripped

View File

@ -159,14 +159,12 @@
0 belong&0xFF5FFF1F 0x47400010 MPEG transport stream data
>188 byte !0x47 CORRUPTED
# ATARI ST relocatable PRG
#
# from Oskar Schirmer <schirmer@scara.com> Feb 3, 2001
# (according to Roland Waldi, Oct 21, 1987)
# besides the magic 0x601a, the text segment size is checked to be
# not larger than 1 MB (which is a lot on ST).
0 belong&0xFFFFFFF0 0x601A0000 Atari ST M68K executable
>2 belong x (txt=%ld,
>6 belong x dat=%ld,
>10 belong x bss=%ld,
>14 belong x sym=%ld)
# DIF digital video file format <mpruett@sgi.com>
0 belong&0xffffff00 0x1f070000 DIF
>4 byte &0x01 (DVCPRO) movie file
>4 byte ^0x01 (DV) movie file
>3 byte &0x80 (PAL)
>3 byte ^0x80 (NTSC)
# Microsoft Advanced Streaming Format (ASF) <mpruett@sgi.com>
0 belong 0x3026b275 Microsoft ASF

View File

@ -182,6 +182,8 @@
2 string -lh3- LHa 2.x? archive data [lh3]
2 string -lh4- LHa (2.x) archive data [lh4]
2 string -lh5- LHa (2.x) archive data [lh5]
2 string -lh6- LHa (2.x) archive data [lh6]
2 string -lh7- LHa (2.x) archive data [lh7]
>20 byte x - header level %d
# RAR archiver (Greg Roelofs, newt@uchicago.edu)

View File

@ -120,12 +120,12 @@
>14 beshort >1 %d songs,
>16 beshort >0 default song: %d
# IRCAM <mpruett@sgi.com>
0 belong 0x64a30400 IRCAM file (NeXT)
# VAX and MIPS files are little-endian; Sun and NeXT are big-endian
0 belong 0x64a30100 IRCAM file (VAX)
0 belong 0x64a30200 IRCAM file (Sun)
0 belong 0x64a30300 IRCAM file (MIPS little-endian)
0 belong 0x0001a364 IRCAM file
0 belong 0x64a30400 IRCAM file (NeXT)
# NIST SPHERE <mpruett@sgi.com>
0 string NIST_1A\n\ \ \ 1024\n NIST SPHERE file
@ -138,3 +138,7 @@
# From Felix von Leitner <leitner@fefe.de>
0 string OggS Ogg-Vorbis compressed sound file
# SGI SoundTrack <mpruett@sgi.com>
0 string _SGI_SoundTrack SGI SoundTrack project file
0 string ID3 mp3 file with ID3 2.0 tag

View File

@ -67,4 +67,8 @@
>16 belong >0 (Queue, version %d, big-endian)
12 lelong 0x00042253 Berkeley DB
>16 lelong >0 (Queue, version %d, little-endian)
#
#
# Round Robin Database Tool by Tobias Oetiker <oetiker@ee.ethz.ch>
0 string RRD RRDTool DB
>4 string x version %s

View File

@ -90,23 +90,6 @@
>>20 lelong 0 invalid version
>>20 lelong 1 version 1
>>36 lelong 1 MathCoPro/FPU/MAU Required
>8 string >\0 (%s)
>8 string \0
>>7 byte 0 (SYSV)
>>7 byte 1 (HP-UX)
>>7 byte 2 (NetBSD)
>>7 byte 3 (GNU/Linux)
>>7 byte 4 (GNU/Hurd)
>>7 byte 5 (86Open)
>>7 byte 6 (Solaris)
>>7 byte 7 (Monterey)
>>7 byte 8 (IRIX)
>>7 byte 9 (FreeBSD)
>>7 byte 10 (Tru64)
>>7 byte 11 (Novell Modesto)
>>7 byte 12 (OpenBSD)
>>7 byte 97 (ARM)
>>7 byte 255 (embedded)
>5 byte 2 MSB
# only for MIPS R3000_BE
>>18 beshort 8
@ -178,8 +161,26 @@
>>18 beshort 51 Stanford MIPS-X,
>>18 beshort 52 Motorola Coldfire,
>>18 beshort 53 Motorola M68HC12,
>>18 beshort 73 Cray NV1,
>>18 beshort 75 Digital VAX,
>>18 beshort 0x9026 Alpha (unofficial),
>>20 belong 0 invalid version
>>20 belong 1 version 1
>>36 belong 1 MathCoPro/FPU/MAU Required
>8 string >\0 (%s)
>8 string \0
>>7 byte 0 (SYSV)
>>7 byte 1 (HP-UX)
>>7 byte 2 (NetBSD)
>>7 byte 3 (GNU/Linux)
>>7 byte 4 (GNU/Hurd)
>>7 byte 5 (86Open)
>>7 byte 6 (Solaris)
>>7 byte 7 (Monterey)
>>7 byte 8 (IRIX)
>>7 byte 9 (FreeBSD)
>>7 byte 10 (Tru64)
>>7 byte 11 (Novell Modesto)
>>7 byte 12 (OpenBSD)
>>7 byte 97 (ARM)
>>7 byte 255 (embedded)

View File

@ -61,7 +61,7 @@
0x18b string OS/2 OS/2 Boot Manager
9564 lelong 0x00011954 Unix Fast File system,
9564 lelong 0x00011954 Unix Fast File system (little-endian),
>8404 string x last mounted on %s,
>9504 ledate x last checkd at %s,
>8224 ledate x last writen at %s,
@ -76,6 +76,21 @@
>8320 lelong 0 TIME optimization
>8320 lelong 1 SPACE optimization
9564 belong 0x00011954 Unix Fast File system (little-endian),
>8404 string x last mounted on %s,
>9504 bedate x last checkd at %s,
>8224 bedate x last writen at %s,
>8228 belong x number of blocks %d,
>8232 belong x number of data blocks %d,
>8236 belong x number of cylinder groups %d,
>8240 belong x number of basic blocks %d,
>8244 belong x number of fragment blocks %d,
>8248 belong x minimum percentage of free blocks %d,
>8252 belong x rotational delay %dms,
>8256 belong x disk rotational speed %drps,
>8320 belong 0 TIME optimization
>8320 belong 1 SPACE optimization
# ext2/ext3 filesystems - Andreas Dilger <adilger@turbolabs.com>
0x438 leshort 0xEF53 Linux
>0x44c lelong x rev %d

View File

@ -132,3 +132,12 @@
0 belong 011421044151 ld.so hints file (Big Endian
>4 belong >0 \b, version %d)
>4 belong <=0 \b)
#
# Files generated by FreeBSD scrshot(1)/vidcontrol(1) utilities
#
0 string SCRSHOT_ scrshot(1) screenshot,
>8 byte x version %d,
>9 byte 2 %d bytes in header,
>>10 byte x %d chars wide by
>>11 byte x %d chars high

View File

@ -300,3 +300,21 @@
0 string pM86 Atari ST STAD bitmap image data (vert)
>5 byte 0x00 (white background)
>5 byte 0xFF (black background)
# SGI RICE image file <mpruett@sgi.com>
0 beshort 0x5249 RICE image
>2 beshort x v%d
>4 beshort x (%d x
>6 beshort x %d)
>8 beshort 0 8 bit
>8 beshort 1 10 bit
>8 beshort 2 12 bit
>8 beshort 3 13 bit
>10 beshort 0 4:2:2
>10 beshort 1 4:2:2:4
>10 beshort 2 4:4:4
>10 beshort 3 4:4:4:4
>12 beshort 1 RGB
>12 beshort 2 CCIR601
>12 beshort 3 RP175
>12 beshort 4 YUV

View File

@ -240,3 +240,96 @@
0 string $FL2 SPSS System File
>24 string x %s
# Macintosh filesystem data
# From "Tom N Harris" <telliamed@mac.com>
# The MacOS epoch begins on 1 Jan 1904 instead of 1 Jan 1970, so these
# entries depend on the data arithmetic added after v.35
# There's also some Pascal strings in here, ditto...
# The boot block signature, according to IM:Files, is
# "for HFS volumes, this field always contains the value 0x4C4B."
# But if this is true for MFS or HFS+ volumes, I don't know.
# 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
0x400 beshort 0x4244 Macintosh HFS data
>0 beshort 0x4C4B (bootable)
>0x40a beshort &0x8000 (locked)
>0x40a beshort ^0x0100 (mounted)
>0x40a beshort &0x0800 (unclean)
>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
#>0x480 beshort =0x482B Embedded HFS+ Volume:
#>>((0x482*(0x414))+(0x41c*512)) x \b
# Well, this is (theoretically) how we could do this. But it occurs to
# me that we likely don't read in a large enough chunk. I don't have any
# HFS+ volumes to see what a typical offset would be.
0x400 beshort 0x482B Macintosh HFS Extended
>&2 beshort x version %d data
>0 beshort 0x4C4B (bootable)
>&4 belong ^0x00000100 (mounted)
>&4 belong &0x00000800 (unclean)
>&4 belong &0x00008000 (locked)
>&8 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"
>&16 beldate-0x7C25B080 x created: %s,
>&20 beldate-0x7C25B080 x last modified: %s,
>&24 beldate-0x7C25B080 >0 last backup: %s,
>&28 beldate-0x7C25B080 >0 last checked: %s,
>&40 belong x block size: %d,
>&44 belong x number of blocks: %d,
>&48 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?
0x200 beshort 0x504D Apple Partition data
>&2 beshort x block size: %d
>&48 string x first type: %s,
>&12 belong x number of blocks: %d,
>(&0x2.S) beshort 0x504D
>>&48 string x second type: %s
>>&12 belong x number of blocks: %d,
>>(&0x2.S) beshort 0x504D
>>>&48 string x third type: %s
>>>&12 belong x number of blocks: %d,
>>>(&0x2.S) beshort 0x504D
>>>>&48 string x fourth type: %s
>>>>&12 belong x number of blocks: %d,
# AFAIK, only the signature is different
0x200 beshort 0x5453 Apple Old Partition data
>&2 beshort x block size: %d
>&48 string x first type: %s,
>&12 belong x number of blocks: %d,
>(&0x2.S) beshort 0x504D
>>&48 string x second type: %s
>>&12 belong x number of blocks: %d,
>>(&0x2.S) beshort 0x504D
>>>&48 string x third type: %s
>>>&12 belong x number of blocks: %d,
>>>(&0x2.S) beshort 0x504D
>>>>&48 string x fourth type: %s
>>>>&12 belong x number of blocks: %d,

View File

@ -4,4 +4,6 @@
#
0 string #\ Magic magic text file for file(1) cmd
0 lelong 0xF11E041C magic binary file for file(1) cmd
>4 lelong x (version %d)
>4 lelong x (version %d) (little endian)
0 belong 0xF11E041C magic binary file for file(1) cmd
>4 belong x (version %d) (big endian)

View File

@ -22,3 +22,7 @@
# TNEF files...
0 lelong 0x223E9F78 Transport Neutral Encapsulation Format
# From: Kevin Sullivan <ksulliva@psc.edu>
0 string *mbx* MBX mail folder

View File

@ -30,3 +30,21 @@
#
# Motorola S-Records, from Gerd Truschinski <gt@freebsd.first.gmd.de>
0 string S0 Motorola S-Record; binary data in text format
# ATARI ST relocatable PRG
#
# from Oskar Schirmer <schirmer@scara.com> Feb 3, 2001
# (according to Roland Waldi, Oct 21, 1987)
# besides the magic 0x601a, the text segment size is checked to be
# not larger than 1 MB (which is a lot on ST).
# The additional 0x601b distinction I took from Doug Lee's magic.
0 belong&0xFFFFFFF0 0x601A0000 Atari ST M68K contiguous executable
>2 belong x (txt=%ld,
>6 belong x dat=%ld,
>10 belong x bss=%ld,
>14 belong x sym=%ld)
0 belong&0xFFFFFFF0 0x601B0000 Atari ST M68K non-contig executable
>2 belong x (txt=%ld,
>6 belong x dat=%ld,
>10 belong x bss=%ld,
>14 belong x sym=%ld)

View File

@ -225,6 +225,8 @@
#ico files
0 string \102\101\050\000\000\000\056\000\000\000\000\000\000\000 Icon for ms-windows
# Windows icons (Ian Springer <ips@fpk.hp.com>)
0 string \000\000\001\000 ms-windows icon resource
>4 byte 1 - 1 icon
>4 byte >1 - %d icons
@ -275,10 +277,6 @@
0 string !<spell> MKS Spell hash list (old format)
0 string !<spell2> MKS Spell hash list
0 string AH Halo(TM) bitmapped font file
0 leshort 0x601A Atari ST contiguous executable
>14 lelong &gt;0 - not stripped
0 leshort 0x601B Atari ST non-contig executable
>14 lelong &gt;0 - not stripped
0 lelong 0x08086b70 TurboC BGI file
0 lelong 0x08084b50 TurboC Font file

View File

@ -197,7 +197,7 @@
>10 leshort 0x0000 stripped
0 belong&0377777777 043200507 NetBSD/alpha core
>12 string >\0 from '%s'
>32 belong !0 (signal %d)
>32 lelong !0 (signal %d)
0 belong&0377777777 043400413 NetBSD/mips demand paged
>0 byte &0x80

View File

@ -39,6 +39,15 @@
>8 string WAVE \b, WAVE audio
>>20 leshort 1 \b, Microsoft PCM
>>>34 leshort >0 \b, %d bit
>>20 leshort 2 \b, Microsoft ADPCM
>>20 leshort 6 \b, ITU G.711 a-law
>>20 leshort 7 \b, ITU G.711 u-law
>>20 leshort 17 \b, IMA ADPCM
>>20 leshort 20 \b, ITU G.723 ADPCM (Yamaha)
>>20 leshort 49 \b, GSM 6.10
>>20 leshort 64 \b, ITU G.721 ADPCM
>>20 leshort 80 \b, MPEG
>>20 leshort 85 \b, MPEG Layer 3
>>22 leshort =1 \b, mono
>>22 leshort =2 \b, stereo
>>22 leshort >2 \b, %d channels

22
contrib/file/Magdir/sharc Normal file
View File

@ -0,0 +1,22 @@
#------------------------------------------------------------------------
# file(1) magic for sharc files
#
# SHARC DSP, MIDI SysEx and RiscOS filetype definitions added by
# FutureGroove Music (dsp@futuregroove.de)
#------------------------------------------------------------------------
0 string Draw RiscOS Drawfile
0 string PACK RiscOS PackdDir archive
#------------------------------------------------------------------------
# SHARC DSP stuff (based on the FGM SHARC DSP SDK)
0 string ! Assembler source
0 string Analog ADi asm listing file
0 string .SYSTEM SHARC architecture file
0 string .system SHARC architecture file
0 leshort 0x521C SHARC COFF binary
>2 leshort >1 , %hd sections
>>12 lelong >0 , not stripped

View File

@ -0,0 +1,5 @@
#------------------------------------------------------------------------------
# Sketch Drawings: http://sketch.sourceforge.net/
# From: Edwin Mons <e@ik.nu>
0 string ##Sketch Sketch document text

View File

@ -0,0 +1,23 @@
#-----------------------------------------------
# GNU Smalltalk image, starting at version 1.6.2
#
0 string GSTIm\0\0 GNU Smalltalk
# little-endian
>7 byte&1 =0 LE image version
>>10 byte x %d.
>>9 byte x \b%d.
>>8 byte x \b%d
#>>12 lelong x , data: %ld
#>>16 lelong x , table: %ld
#>>20 lelong x , memory: %ld
# big-endian
>7 byte&1 =1 BE image version
>>8 byte x %d.
>>9 byte x \b%d.
>>10 byte x \b%d
#>>12 belong x , data: %ld
#>>16 belong x , table: %ld
#>>20 belong x , memory: %ld

View File

@ -74,7 +74,7 @@
>20 belong 3 (AX.25
>20 belong 4 (ProNET
>20 belong 5 (CHAOS
>20 belong 6 (IEEE 802.x network
>20 belong 6 (Token Ring
>20 belong 7 (ARCNET
>20 belong 8 (SLIP
>20 belong 9 (PPP
@ -83,6 +83,16 @@
>20 belong 12 (raw IP
>20 belong 13 (BSD/OS SLIP
>20 belong 14 (BSD/OS PPP
>20 belong 50 (PPP or Cisco HDLC
>20 belong 100 (RFC 1483 ATM
>20 belong 101 (raw IP
>20 belong 102 (BSD/OS SLIP
>20 belong 103 (BSD/OS PPP
>20 belong 104 (BSD/OS Cisco HDLC
>20 belong 105 (Linux Classical IP over ATM
>20 belong 108 (OpenBSD loopback
>20 belong 109 (OpenBSD IPSEC encrypted
>20 belong 113 (Linux "cooked"
>16 belong x \b, capture length %d)
0 ulelong 0xa1b2c3d4 tcpdump capture file (little-endian)
>4 leshort x - version %d
@ -93,7 +103,7 @@
>20 lelong 3 (AX.25
>20 lelong 4 (ProNET
>20 lelong 5 (CHAOS
>20 lelong 6 (IEEE 802.x network
>20 lelong 6 (Token Ring
>20 lelong 7 (ARCNET
>20 lelong 8 (SLIP
>20 lelong 9 (PPP
@ -102,6 +112,16 @@
>20 lelong 12 (raw IP
>20 lelong 13 (BSD/OS SLIP
>20 lelong 14 (BSD/OS PPP
>20 lelong 50 (PPP or Cisco HDLC
>20 lelong 100 (RFC 1483 ATM
>20 lelong 101 (raw IP
>20 lelong 102 (BSD/OS SLIP
>20 lelong 103 (BSD/OS PPP
>20 lelong 104 (BSD/OS Cisco HDLC
>20 lelong 105 (Linux Classical IP over ATM
>20 lelong 108 (OpenBSD loopback
>20 lelong 109 (OpenBSD IPSEC encrypted
>20 lelong 113 (Linux "cooked"
>16 lelong x \b, capture length %d)
#
@ -119,7 +139,7 @@
>20 belong 3 (AX.25
>20 belong 4 (ProNET
>20 belong 5 (CHAOS
>20 belong 6 (IEEE 802.x network
>20 belong 6 (Token Ring
>20 belong 7 (ARCNET
>20 belong 8 (SLIP
>20 belong 9 (PPP
@ -138,7 +158,7 @@
>20 lelong 3 (AX.25
>20 lelong 4 (ProNET
>20 lelong 5 (CHAOS
>20 lelong 6 (IEEE 802.x network
>20 lelong 6 (Token Ring
>20 lelong 7 (ARCNET
>20 lelong 8 (SLIP
>20 lelong 9 (PPP

142
contrib/file/Magdir/sysex Normal file
View File

@ -0,0 +1,142 @@
#------------------------------------------------------------------------
# sysex: file(1) magic for MIDI sysex files
#
#
0 byte 0xF0 SysEx File -
>1 byte 0x2f ELKA
>>3 byte 0x09 EK-44
>1 byte 0x3e Waldorf
>>3 byte 0x7f Microwave I
>1 byte 0x40 Kawai
>>3 byte 0x22 K4
>1 byte 0x41 Roland
>>3 byte 0x14 D-50
>>3 byte 0x2b U-220
>>3 byte 0x02 TR-707
>1 byte 0x42 Korg
>>3 byte 0x19 M1
>1 byte 0x43 Yamaha
>1 byte 0x44 Casio
>1 byte 0x46 Kamiya
>1 byte 0x47 Akai
>1 byte 0x48 Victor
>1 byte 0x4b Fujitsu
>1 byte 0x4c Sony
>1 byte 0x4e Teac
>1 byte 0x50 Matsushita
>1 byte 0x51 Fostex
>1 byte 0x52 Zoom
>1 byte 0x54 Matsushita
>1 byte 0x57 Acoustic tech. lab.
>1 belong&0xffffff00 0x00007400 Ta Horng
>1 belong&0xffffff00 0x00007500 e-Tek
>1 belong&0xffffff00 0x00007600 E-Voice
>1 belong&0xffffff00 0x00007700 Midisoft
>1 belong&0xffffff00 0x00007800 Q-Sound
>1 belong&0xffffff00 0x00007900 Westrex
>1 belong&0xffffff00 0x00007a00 Nvidia*
>1 belong&0xffffff00 0x00007b00 ESS
>1 belong&0xffffff00 0x00007c00 Mediatrix
>1 belong&0xffffff00 0x00007d00 Brooktree
>1 belong&0xffffff00 0x00007e00 Otari
>1 belong&0xffffff00 0x00007f00 Key Electronics
>1 belong&0xffffff00 0x00010000 Shure
>1 belong&0xffffff00 0x00010100 AuraSound
>1 belong&0xffffff00 0x00010200 Crystal
>1 belong&0xffffff00 0x00010300 Rockwell
>1 belong&0xffffff00 0x00010400 Silicon Graphics
>1 belong&0xffffff00 0x00010500 Midiman
>1 belong&0xffffff00 0x00010600 PreSonus
>1 belong&0xffffff00 0x00010800 Topaz
>1 belong&0xffffff00 0x00010900 Cast Lightning
>1 belong&0xffffff00 0x00010a00 Microsoft
>1 belong&0xffffff00 0x00010b00 Sonic Foundry
>1 belong&0xffffff00 0x00010c00 Line 6
>1 belong&0xffffff00 0x00010d00 Beatnik Inc.
>1 belong&0xffffff00 0x00010e00 Van Koerving
>1 belong&0xffffff00 0x00010f00 Altech Systems
>1 belong&0xffffff00 0x00011000 S & S Research
>1 belong&0xffffff00 0x00011100 VLSI Technology
>1 belong&0xffffff00 0x00011200 Chromatic
>1 belong&0xffffff00 0x00011300 Sapphire
>1 belong&0xffffff00 0x00011400 IDRC
>1 belong&0xffffff00 0x00011500 Justonic Tuning
>1 belong&0xffffff00 0x00011600 TorComp
>1 belong&0xffffff00 0x00011700 Newtek Inc.
>1 belong&0xffffff00 0x00011800 Sound Sculpture
>1 belong&0xffffff00 0x00011900 Walker Technical
>1 belong&0xffffff00 0x00011a00 Digital Harmony
>1 belong&0xffffff00 0x00011b00 InVision
>1 belong&0xffffff00 0x00011c00 T-Square
>1 belong&0xffffff00 0x00011d00 Nemesys
>1 belong&0xffffff00 0x00011e00 DBX
>1 belong&0xffffff00 0x00011f00 Syndyne
>1 belong&0xffffff00 0x00012000 Bitheadz
>1 belong&0xffffff00 0x00012100 Cakewalk
>1 belong&0xffffff00 0x00012200 Staccato
>1 belong&0xffffff00 0x00012300 National Semicon.
>1 belong&0xffffff00 0x00012400 Boom Theory
>1 belong&0xffffff00 0x00012500 Virtual DSP Corp
>1 belong&0xffffff00 0x00012600 Antares
>1 belong&0xffffff00 0x00012700 Angel Software
>1 belong&0xffffff00 0x00012800 St Louis Music
>1 belong&0xffffff00 0x00012900 Lyrrus dba G-VOX
>1 belong&0xffffff00 0x00012a00 Ashley Audio
>1 belong&0xffffff00 0x00012b00 Vari-Lite
>1 belong&0xffffff00 0x00012c00 Summit Audio
>1 belong&0xffffff00 0x00012d00 Aureal Semicon.
>1 belong&0xffffff00 0x00012e00 SeaSound
>1 belong&0xffffff00 0x00012f00 U.S. Robotics
>1 belong&0xffffff00 0x00013000 Aurisis
>1 belong&0xffffff00 0x00013100 Nearfield Multimedia
>1 belong&0xffffff00 0x00013200 FM7 Inc.
>1 belong&0xffffff00 0x00013300 Swivel Systems
>1 belong&0xffffff00 0x00013400 Hyperactive
>1 belong&0xffffff00 0x00013500 MidiLite
>1 belong&0xffffff00 0x00013600 Radical
>1 belong&0xffffff00 0x00013700 Roger Linn
>1 belong&0xffffff00 0x00013800 Helicon
>1 belong&0xffffff00 0x00013900 Event
>1 belong&0xffffff00 0x00013a00 Sonic Network
>1 belong&0xffffff00 0x00013b00 Realtime Music
>1 belong&0xffffff00 0x00013c00 Apogee Digital
>1 belong&0xffffff00 0x00202b00 Medeli Electronics
>1 belong&0xffffff00 0x00202c00 Charlie Lab
>1 belong&0xffffff00 0x00202d00 Blue Chip Music
>1 belong&0xffffff00 0x00202e00 BEE OH Corp
>1 belong&0xffffff00 0x00202f00 LG Semicon America
>1 belong&0xffffff00 0x00203000 TESI
>1 belong&0xffffff00 0x00203100 EMAGIC
>1 belong&0xffffff00 0x00203200 Behringer
>1 belong&0xffffff00 0x00203300 Access Music
>1 belong&0xffffff00 0x00203400 Synoptic
>1 belong&0xffffff00 0x00203500 Hanmesoft Corp
>1 belong&0xffffff00 0x00203600 Terratec
>1 belong&0xffffff00 0x00203700 Proel SpA
>1 belong&0xffffff00 0x00203800 IBK MIDI
>1 belong&0xffffff00 0x00203900 IRCAM
>1 belong&0xffffff00 0x00203a00 Propellerhead Software
>1 belong&0xffffff00 0x00203b00 Red Sound Systems
>1 belong&0xffffff00 0x00203c00 Electron ESI AB
>1 belong&0xffffff00 0x00203d00 Sintefex Audio
>1 belong&0xffffff00 0x00203e00 Music and More
>1 belong&0xffffff00 0x00203f00 Amsaro
>1 belong&0xffffff00 0x00204000 CDS Advanced Technology
>1 belong&0xffffff00 0x00204100 Touched by Sound
>1 belong&0xffffff00 0x00204200 DSP Arts
>1 belong&0xffffff00 0x00204300 Phil Rees Music
>1 belong&0xffffff00 0x00204400 Stamer Musikanlagen GmbH
>1 belong&0xffffff00 0x00204500 Soundart
>1 belong&0xffffff00 0x00204600 C-Mexx Software
>1 belong&0xffffff00 0x00204700 Klavis Tech.
>1 belong&0xffffff00 0x00204800 Noteheads AB
0 string T707 Roland TR-707 Data

View File

@ -9,6 +9,7 @@
0 string '\\" troff or preprocessor input text
0 string '.\\" troff or preprocessor input text
0 string \\" troff or preprocessor input text
0 string ''' troff or preprocessor input text
# ditroff intermediate output text
0 string x\ T ditroff output text

View File

@ -0,0 +1,65 @@
#------------------------------------------------------------------------------
# vorbis: file(1) magic for Ogg/Vorbis files
#
# From Felix von Leitner <leitner@fefe.de>
# Extended by Beni Cherniavsky <cben@crosswinds.net>
#
# Most (everything but the number of channels and bitrate) is commented
# out with `##' as it's not interesting to the average user. The most
# probable things advanced users would want to uncomment are probably
# the number of comments and the encoder version.
#
# --- Ogg Framing ---
0 string OggS Ogg data
>4 byte !0 UNKNOWN REVISION %u
##>4 byte 0 revision 0
>4 byte 0
##>>14 lelong x (Serial %lX)
# --- First vorbis packet - general header ---
>>28 string \x01vorbis \b, Vorbis audio,
>>>35 lelong !0 UNKNOWN VERSION %lu,
##>>>35 lelong 0 version 0,
>>>35 lelong 0
>>>>39 ubyte 1 mono,
>>>>39 ubyte 2 stereo,
>>>>39 ubyte >2 %u channels,
>>>>40 lelong x %lu Hz
# Minimal, nominal and maximal bitrates specified when encoding
>>>>48 string <\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff \b,
# The above tests if at least one of these is specified:
>>>>>44 lelong !-1
>>>>>>44 lelong x >%lu
>>>>>48 lelong !-1
>>>>>>48 lelong x ~%lu
>>>>>52 lelong !-1
>>>>>>52 lelong x <%lu
>>>>>48 string <\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff kbps
# -- Second vorbis header packet - the comments
>>>102 string \x03vorbis
# A kludge to read the vendor string. It's a counted string, not a
# zero-terminated one, so file(1) can't read it in a generic way.
# libVorbis is the only one existing currently, so I detect specifically
# it. The interesting value is the cvs date (8 digits decimal).
##>>>>113 string/c Xiphophorus\ libVorbis\ I \b, created by: Xiphophorus libVorbis I
##>>>>>137 string >00000000 %.8s
# Map to beta version numbers:
##>>>>>>137 string <20000508 (<beta1 - prepublic)
# The string has not changed from beta1 to 2 - they are indistinguishable.
##>>>>>>137 string 20000508 (beta1/2)
##>>>>>>137 string >20000508
##>>>>>>>137 string <20001031 (beta2-3)
##>>>>>>137 string 20001031 (beta3)
##>>>>>>137 string >20001031
##>>>>>>>137 string <20010225 (beta3-4)
##>>>>>>137 string 20010225 (beta4)
##>>>>>>137 string >20010225
##>>>>>>>137 string <20010615 (beta4-RC1)
##>>>>>>137 string 20010615 (RC1)
##>>>>>>137 string >20010615 (>RC1)
# Then come the comments, again length-counted (and number-counted).
# Some looping constructs and registers would allow reading them but now
# it's impossible. However we can print the number of comments present
# (skipping by the vendor string length):
##>>>>(109.l.113) lelong 0 \b, no comments
##>>>>(109.l+113) lelong >0 \b, %lu comments

View File

@ -6,9 +6,15 @@ bin_PROGRAMS = file
data_DATA = magic magic.mime magic.mgc
MAGIC = @datadir@/magic
CPPFLAGS = -DMAGIC='"$(MAGIC)"' -DQUICK
CPPFLAGS = -DMAGIC='"$(MAGIC)"'
man_MANS = file.1 magic.4
if FSECT5
man_MAGIC = magic.5
else
man_MAGIC = magic.4
endif
fsect = @fsect@
man_MANS = file.1 $(man_MAGIC)
file_SOURCES = file.c apprentice.c fsmagic.c softmagic.c ascmagic.c \
compress.c is_tar.c readelf.c print.c \
@ -36,18 +42,18 @@ magic.mgc: magic file
file.1: Makefile file.man
@rm -f $@
sed -e s@__CSECTION__@1@g \
-e s@__FSECTION__@4@g \
-e s@__FSECTION__@${fsect}@g \
-e s@__VERSION__@${VERSION}@g \
-e s@__MAGIC__@${MAGIC}@g $(srcdir)/file.man > $@
magic.4: Makefile magic.man
magic.${fsect}: Makefile magic.man
@rm -f $@
sed -e s@__CSECTION__@1@g \
-e s@__FSECTION__@4@g \
-e s@__FSECTION__@${fsect}@g \
-e s@__VERSION__@${VERSION}@g \
-e s@__MAGIC__@${MAGIC}@g $(srcdir)/magic.man > $@
magic_FRAGMENTS = Magdir/adventure Magdir/allegro Magdir/alliant \
magic_FRAGMENTS = Magdir/adi Magdir/adventure Magdir/allegro Magdir/alliant \
Magdir/alpha Magdir/amanda Magdir/amigaos Magdir/animation \
Magdir/apl Magdir/apple Magdir/applix Magdir/archive Magdir/asterix \
Magdir/att3b Magdir/audio Magdir/blender Magdir/blit Magdir/bsdi \
@ -69,7 +75,7 @@ magic_FRAGMENTS = Magdir/adventure Magdir/allegro Magdir/alliant \
Magdir/pgp Magdir/pkgadd Magdir/plus5 Magdir/printer Magdir/project \
Magdir/psdbms Magdir/pyramid Magdir/python Magdir/riff Magdir/rpm \
Magdir/rtf Magdir/sc Magdir/sccs Magdir/sendmail Magdir/sequent \
Magdir/sgml Magdir/sniffer Magdir/softquad Magdir/spectrum \
Magdir/sgml Magdir/sketch Magdir/sniffer Magdir/softquad Magdir/spectrum \
Magdir/sun Magdir/teapot Magdir/terminfo Magdir/tex Magdir/ti-8x \
Magdir/timezone Magdir/troff Magdir/typeset Magdir/unknown \
Magdir/uuencode Magdir/varied.out Magdir/vax Magdir/vicar Magdir/visx \

View File

@ -72,9 +72,11 @@ bin_PROGRAMS = file
data_DATA = magic magic.mime magic.mgc
MAGIC = @datadir@/magic
CPPFLAGS = -DMAGIC='"$(MAGIC)"' -DQUICK
man_MANS = file.1 magic.4
CPPFLAGS = -DMAGIC='"$(MAGIC)"'
@FSECT5_TRUE@man_MAGIC = magic.5
@FSECT5_FALSE@man_MAGIC = magic.4
fsect = @fsect@
man_MANS = file.1 $(man_MAGIC)
file_SOURCES = file.c apprentice.c fsmagic.c softmagic.c ascmagic.c compress.c is_tar.c readelf.c print.c file.h names.h patchlevel.h readelf.h tar.h
@ -84,7 +86,7 @@ EXTRA_DIST = LEGAL.NOTICE MAINT PORTING Makefile.std magic2mime Localstuff Head
CLEANFILES = $(man_MANS) magic magic.mgc
magic_FRAGMENTS = Magdir/adventure Magdir/allegro Magdir/alliant Magdir/alpha Magdir/amanda Magdir/amigaos Magdir/animation Magdir/apl Magdir/apple Magdir/applix Magdir/archive Magdir/asterix Magdir/att3b Magdir/audio Magdir/blender Magdir/blit Magdir/bsdi Magdir/c-lang Magdir/chi Magdir/cisco Magdir/claris Magdir/clipper Magdir/commands Magdir/compress Magdir/console Magdir/convex Magdir/database Magdir/diamond Magdir/diff Magdir/digital Magdir/dump Magdir/elf Magdir/encore Magdir/epoc Magdir/filesystems Magdir/flash Magdir/fonts Magdir/frame Magdir/freebsd Magdir/fsav Magdir/gimp Magdir/gnu Magdir/grace Magdir/hp Magdir/ibm370 Magdir/ibm6000 Magdir/iff Magdir/images Magdir/intel Magdir/interleaf Magdir/island Magdir/ispell Magdir/java Magdir/jpeg Magdir/karma Magdir/lecter Magdir/lex Magdir/lif Magdir/linux Magdir/lisp Magdir/mach Magdir/macintosh Magdir/magic Magdir/mail.news Magdir/maple Magdir/mathematica Magdir/mcrypt Magdir/mime Magdir/mips Magdir/mirage Magdir/mkid Magdir/mmdf Magdir/modem Magdir/motorola Magdir/msdos Magdir/msvc Magdir/ncr Magdir/netbsd Magdir/netscape Magdir/news Magdir/octave Magdir/olf Magdir/os2 Magdir/os9 Magdir/osf1 Magdir/palm Magdir/pbm Magdir/pdf Magdir/pdp Magdir/pgp Magdir/pkgadd Magdir/plus5 Magdir/printer Magdir/project Magdir/psdbms Magdir/pyramid Magdir/python Magdir/riff Magdir/rpm Magdir/rtf Magdir/sc Magdir/sccs Magdir/sendmail Magdir/sequent Magdir/sgml Magdir/sniffer Magdir/softquad Magdir/spectrum Magdir/sun Magdir/teapot Magdir/terminfo Magdir/tex Magdir/ti-8x Magdir/timezone Magdir/troff Magdir/typeset Magdir/unknown Magdir/uuencode Magdir/varied.out Magdir/vax Magdir/vicar Magdir/visx Magdir/vms Magdir/vmware Magdir/wordperfect Magdir/xdelta Magdir/xenix Magdir/zilog Magdir/zyxel
magic_FRAGMENTS = Magdir/adi Magdir/adventure Magdir/allegro Magdir/alliant Magdir/alpha Magdir/amanda Magdir/amigaos Magdir/animation Magdir/apl Magdir/apple Magdir/applix Magdir/archive Magdir/asterix Magdir/att3b Magdir/audio Magdir/blender Magdir/blit Magdir/bsdi Magdir/c-lang Magdir/chi Magdir/cisco Magdir/claris Magdir/clipper Magdir/commands Magdir/compress Magdir/console Magdir/convex Magdir/database Magdir/diamond Magdir/diff Magdir/digital Magdir/dump Magdir/elf Magdir/encore Magdir/epoc Magdir/filesystems Magdir/flash Magdir/fonts Magdir/frame Magdir/freebsd Magdir/fsav Magdir/gimp Magdir/gnu Magdir/grace Magdir/hp Magdir/ibm370 Magdir/ibm6000 Magdir/iff Magdir/images Magdir/intel Magdir/interleaf Magdir/island Magdir/ispell Magdir/java Magdir/jpeg Magdir/karma Magdir/lecter Magdir/lex Magdir/lif Magdir/linux Magdir/lisp Magdir/mach Magdir/macintosh Magdir/magic Magdir/mail.news Magdir/maple Magdir/mathematica Magdir/mcrypt Magdir/mime Magdir/mips Magdir/mirage Magdir/mkid Magdir/mmdf Magdir/modem Magdir/motorola Magdir/msdos Magdir/msvc Magdir/ncr Magdir/netbsd Magdir/netscape Magdir/news Magdir/octave Magdir/olf Magdir/os2 Magdir/os9 Magdir/osf1 Magdir/palm Magdir/pbm Magdir/pdf Magdir/pdp Magdir/pgp Magdir/pkgadd Magdir/plus5 Magdir/printer Magdir/project Magdir/psdbms Magdir/pyramid Magdir/python Magdir/riff Magdir/rpm Magdir/rtf Magdir/sc Magdir/sccs Magdir/sendmail Magdir/sequent Magdir/sgml Magdir/sketch Magdir/sniffer Magdir/softquad Magdir/spectrum Magdir/sun Magdir/teapot Magdir/terminfo Magdir/tex Magdir/ti-8x Magdir/timezone Magdir/troff Magdir/typeset Magdir/unknown Magdir/uuencode Magdir/varied.out Magdir/vax Magdir/vicar Magdir/visx Magdir/vms Magdir/vmware Magdir/wordperfect Magdir/xdelta Magdir/xenix Magdir/zilog Magdir/zyxel
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@ -107,6 +109,7 @@ CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
man1dir = $(mandir)/man1
man4dir = $(mandir)/man4
man5dir = $(mandir)/man5
MANS = $(man_MANS)
NROFF = nroff
@ -119,7 +122,7 @@ missing mkinstalldirs
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = gtar
TAR = tar
GZIP_ENV = --best
SOURCES = $(file_SOURCES)
OBJECTS = $(file_OBJECTS)
@ -283,12 +286,45 @@ uninstall-man4:
echo " rm -f $(DESTDIR)$(man4dir)/$$inst"; \
rm -f $(DESTDIR)$(man4dir)/$$inst; \
done
install-man5:
$(mkinstalldirs) $(DESTDIR)$(man5dir)
@list='$(man5_MANS)'; \
l2='$(man_MANS)'; for i in $$l2; do \
case "$$i" in \
*.5*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
else file=$$i; fi; \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man5dir)/$$inst"; \
$(INSTALL_DATA) $$file $(DESTDIR)$(man5dir)/$$inst; \
done
uninstall-man5:
@list='$(man5_MANS)'; \
l2='$(man_MANS)'; for i in $$l2; do \
case "$$i" in \
*.5*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " rm -f $(DESTDIR)$(man5dir)/$$inst"; \
rm -f $(DESTDIR)$(man5dir)/$$inst; \
done
install-man: $(MANS)
@$(NORMAL_INSTALL)
$(MAKE) $(AM_MAKEFLAGS) install-man1 install-man4
$(MAKE) $(AM_MAKEFLAGS) install-man1 install-man4 install-man5
uninstall-man:
@$(NORMAL_UNINSTALL)
$(MAKE) $(AM_MAKEFLAGS) uninstall-man1 uninstall-man4
$(MAKE) $(AM_MAKEFLAGS) uninstall-man1 uninstall-man4 uninstall-man5
install-dataDATA: $(data_DATA)
@$(NORMAL_INSTALL)
@ -415,7 +451,8 @@ install-strip:
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs:
$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(mandir)/man1 \
$(DESTDIR)$(mandir)/man4 $(DESTDIR)$(datadir)
$(DESTDIR)$(mandir)/man4 $(DESTDIR)$(mandir)/man5 \
$(DESTDIR)$(datadir)
mostlyclean-generic:
@ -459,12 +496,12 @@ mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \
maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \
mostlyclean-compile distclean-compile clean-compile \
maintainer-clean-compile install-man1 uninstall-man1 install-man4 \
uninstall-man4 install-man uninstall-man uninstall-dataDATA \
install-dataDATA tags mostlyclean-tags distclean-tags clean-tags \
maintainer-clean-tags distdir info-am info dvi-am dvi check check-am \
installcheck-am installcheck all-recursive-am install-exec-am \
install-exec install-data-am install-data install-am install \
uninstall-am uninstall all-redirect all-am all installdirs \
uninstall-man4 install-man5 uninstall-man5 install-man uninstall-man \
uninstall-dataDATA install-dataDATA tags mostlyclean-tags \
distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \
install-exec-am install-exec install-data-am install-data install-am \
install uninstall-am uninstall all-redirect all-am all installdirs \
mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
@ -486,14 +523,14 @@ magic.mgc: magic file
file.1: Makefile file.man
@rm -f $@
sed -e s@__CSECTION__@1@g \
-e s@__FSECTION__@4@g \
-e s@__FSECTION__@${fsect}@g \
-e s@__VERSION__@${VERSION}@g \
-e s@__MAGIC__@${MAGIC}@g $(srcdir)/file.man > $@
magic.4: Makefile magic.man
magic.${fsect}: Makefile magic.man
@rm -f $@
sed -e s@__CSECTION__@1@g \
-e s@__FSECTION__@4@g \
-e s@__FSECTION__@${fsect}@g \
-e s@__VERSION__@${VERSION}@g \
-e s@__MAGIC__@${MAGIC}@g $(srcdir)/magic.man > $@

View File

@ -1,6 +1,6 @@
# Makefile for file(1) cmd.
# Copyright (c) Ian F. Darwin 86/09/01 - see LEGAL.NOTICE.
# @(#)$Id: Makefile.std,v 1.10 2000/11/13 00:30:49 christos Exp $
# @(#)$Id: Makefile.std,v 1.11 2001/07/22 21:04:15 christos Exp $
#
# This software is not subject to any license of the American Telephone
# and Telegraph Company or of the Regents of the University of California.
@ -22,7 +22,7 @@
#
# 4. This notice may not be removed or altered.
#
VERSION = 3.33
VERSION = 3.36
SHELL = /bin/sh
#MAGIC = /etc/magic
MAGIC = /usr/local/etc/magic

View File

@ -1,8 +1,8 @@
/* Autoheader needs me */
#define PACKAGE "file"
#undef PACKAGE
/* Autoheader needs me */
#define VERSION "3.35"
#undef VERSION
/* Define if builtin ELF support is enabled. */
#undef BUILTIN_ELF

View File

@ -205,3 +205,16 @@ for am_file in <<$1>>; do
done<<>>dnl>>)
changequote([,]))])
# Define a conditional.
AC_DEFUN(AM_CONDITIONAL,
[AC_SUBST($1_TRUE)
AC_SUBST($1_FALSE)
if $2; then
$1_TRUE=
$1_FALSE='#'
else
$1_TRUE='#'
$1_FALSE=
fi])

View File

@ -25,6 +25,7 @@
* 4. This notice may not be removed or altered.
*/
#include "file.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@ -32,13 +33,13 @@
#include <errno.h>
#ifdef QUICK
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#endif
#include "file.h"
#ifndef lint
FILE_RCSID("@(#)$Id: apprentice.c,v 1.39 2001/04/24 14:40:24 christos Exp $")
FILE_RCSID("@(#)$Id: apprentice.c,v 1.42 2001/07/22 21:04:15 christos Exp $")
#endif /* lint */
#define EATAB {while (isascii((unsigned char) *l) && \
@ -78,22 +79,49 @@ static void eatsize __P((char **));
static int apprentice_1 __P((const char *, int));
static int apprentice_file __P((struct magic **, uint32 *,
const char *, int));
#ifdef QUICK
static void byteswap __P((struct magic *, uint32));
static void bs1 __P((struct magic *));
static uint16 swap2 __P((uint16));
static uint32 swap4 __P((uint32));
static char * mkdbname __P((const char *));
static char *mkdbname __P((const char *));
static int apprentice_map __P((struct magic **, uint32 *,
const char *, int));
static int apprentice_compile __P((struct magic **, uint32 *,
const char *, int));
#endif
static int maxmagic = 0;
struct mlist mlist;
#ifdef COMPILE_ONLY
const char *magicfile;
char *progname;
int lineno;
int main __P((int, char *[]));
int
main(argc, argv)
int argc;
char *argv[];
{
int ret;
if ((progname = strrchr(argv[0], '/')) != NULL)
progname++;
else
progname = argv[0];
if (argc != 2) {
(void)fprintf(stderr, "usage: %s file\n", progname);
exit(1);
}
magicfile = argv[1];
exit(apprentice(magicfile, COMPILE));
}
#endif /* COMPILE_ONLY */
/*
* Handle one file.
@ -108,7 +136,6 @@ apprentice_1(fn, action)
struct mlist *ml;
int rv = -1;
#ifdef QUICK
if (action == COMPILE) {
rv = apprentice_file(&magic, &nmagic, fn, action);
if (rv == 0)
@ -116,10 +143,10 @@ apprentice_1(fn, action)
else
return rv;
}
#ifndef COMPILE_ONLY
if ((rv = apprentice_map(&magic, &nmagic, fn, action)) != 0)
(void)fprintf(stderr, "%s: Using regular magic file `%s'\n",
progname, fn);
#endif
if (rv != 0)
rv = apprentice_file(&magic, &nmagic, fn, action);
@ -128,7 +155,8 @@ apprentice_1(fn, action)
return rv;
if ((ml = malloc(sizeof(*ml))) == NULL) {
(void) fprintf(stderr, "%s: Out of memory.\n", progname);
(void) fprintf(stderr, "%s: Out of memory (%s).\n", progname,
strerror(errno));
if (action == CHECK)
return -1;
}
@ -145,6 +173,7 @@ apprentice_1(fn, action)
mlist.prev = ml;
return rv;
#endif /* COMPILE_ONLY */
}
@ -159,7 +188,8 @@ apprentice(fn, action)
mlist.next = mlist.prev = &mlist;
mfn = malloc(strlen(fn)+1);
if (mfn == NULL) {
(void) fprintf(stderr, "%s: Out of memory.\n", progname);
(void) fprintf(stderr, "%s: Out of memory (%s).\n", progname,
strerror(errno));
if (action == CHECK)
return -1;
else
@ -214,7 +244,8 @@ apprentice_file(magicp, nmagicp, fn, action)
maxmagic = MAXMAGIS;
*magicp = (struct magic *) calloc(sizeof(struct magic), maxmagic);
if (*magicp == NULL) {
(void) fprintf(stderr, "%s: Out of memory.\n", progname);
(void) fprintf(stderr, "%s: Out of memory (%s).\n", progname,
strerror(errno));
if (action == CHECK)
return -1;
}
@ -268,12 +299,16 @@ signextend(m, v)
case DATE:
case BEDATE:
case LEDATE:
case LDATE:
case BELDATE:
case LELDATE:
case LONG:
case BELONG:
case LELONG:
v = (int32) v;
break;
case STRING:
case PSTRING:
break;
default:
magwarn("can't happen: m->type=%d\n",
@ -302,8 +337,8 @@ parse(magicp, nmagicp, l, action)
maxmagic += ALLOC_INCR;
if ((m = (struct magic *) realloc(*magicp,
sizeof(struct magic) * maxmagic)) == NULL) {
(void) fprintf(stderr, "%s: Out of memory.\n",
progname);
(void) fprintf(stderr, "%s: Out of memory (%s).\n",
progname, strerror(errno));
if (*magicp)
free(*magicp);
if (action == CHECK)
@ -330,7 +365,7 @@ parse(magicp, nmagicp, l, action)
}
if (m->cont_level != 0 && *l == '&') {
++l; /* step over */
m->flag |= ADD;
m->flag |= OFFADD;
}
/* get offset, then skip over it */
@ -374,12 +409,46 @@ parse(magicp, nmagicp, l, action)
}
l++;
}
s = l;
if (*l == '+' || *l == '-') l++;
if (isdigit((unsigned char)*l)) {
m->in_offset = strtoul(l, &t, 0);
if (*s == '-') m->in_offset = - m->in_offset;
if (*l == '~') {
m->in_op = OPINVERSE;
l++;
}
switch (*l) {
case '&':
m->in_op |= OPAND;
l++;
break;
case '|':
m->in_op |= OPOR;
l++;
break;
case '^':
m->in_op |= OPXOR;
l++;
break;
case '+':
m->in_op |= OPADD;
l++;
break;
case '-':
m->in_op |= OPMINUS;
l++;
break;
case '*':
m->in_op |= OPMULTIPLY;
l++;
break;
case '/':
m->in_op |= OPDIVIDE;
l++;
break;
case '%':
m->in_op |= OPMODULO;
l++;
break;
}
if (isdigit((unsigned char)*l))
m->in_offset = strtoul(l, &t, 0);
else
t = l;
if (*t++ != ')')
@ -403,6 +472,10 @@ parse(magicp, nmagicp, l, action)
#define NLESHORT 7
#define NLELONG 6
#define NLEDATE 6
#define NPSTRING 7
#define NLDATE 5
#define NBELDATE 7
#define NLELDATE 7
if (*l == 'u') {
++l;
@ -446,18 +519,80 @@ parse(magicp, nmagicp, l, action)
} else if (strncmp(l, "ledate", NLEDATE)==0) {
m->type = LEDATE;
l += NLEDATE;
} else if (strncmp(l, "pstring", NPSTRING)==0) {
m->type = PSTRING;
l += NPSTRING;
} else if (strncmp(l, "ldate", NLDATE)==0) {
m->type = LDATE;
l += NLDATE;
} else if (strncmp(l, "beldate", NBELDATE)==0) {
m->type = BELDATE;
l += NBELDATE;
} else if (strncmp(l, "leldate", NLELDATE)==0) {
m->type = LELDATE;
l += NLELDATE;
} else {
magwarn("type %s invalid", l);
return -1;
}
/* New-style anding: "0 byte&0x80 =0x80 dynamically linked" */
if (*l == '&') {
/* New and improved: ~ & | ^ + - * / % -- exciting, isn't it? */
if (*l == '~') {
if (STRING != m->type && PSTRING != m->type)
m->mask_op = OPINVERSE;
++l;
}
switch (*l) {
case '&':
m->mask_op |= OPAND;
++l;
m->mask = signextend(m, strtoul(l, &l, 0));
eatsize(&l);
} else if (STRING == m->type) {
m->mask = 0L;
if (*l == '/') {
break;
case '|':
m->mask_op |= OPOR;
++l;
m->mask = signextend(m, strtoul(l, &l, 0));
eatsize(&l);
break;
case '^':
m->mask_op |= OPXOR;
++l;
m->mask = signextend(m, strtoul(l, &l, 0));
eatsize(&l);
break;
case '+':
m->mask_op |= OPADD;
++l;
m->mask = signextend(m, strtoul(l, &l, 0));
eatsize(&l);
break;
case '-':
m->mask_op |= OPMINUS;
++l;
m->mask = signextend(m, strtoul(l, &l, 0));
eatsize(&l);
break;
case '*':
m->mask_op |= OPMULTIPLY;
++l;
m->mask = signextend(m, strtoul(l, &l, 0));
eatsize(&l);
break;
case '%':
m->mask_op |= OPMODULO;
++l;
m->mask = signextend(m, strtoul(l, &l, 0));
eatsize(&l);
break;
case '/':
if (STRING != m->type && PSTRING != m->type) {
m->mask_op |= OPDIVIDE;
++l;
m->mask = signextend(m, strtoul(l, &l, 0));
eatsize(&l);
} else {
m->mask = 0L;
while (!isspace(*++l)) {
switch (*l) {
case CHAR_IGNORE_LOWERCASE:
@ -477,8 +612,10 @@ parse(magicp, nmagicp, l, action)
}
}
}
} else
m->mask = ~0L;
break;
}
/* We used to set mask to all 1's here, instead let's just not do anything
if mask = 0 (unless you have a better idea) */
EATAB;
switch (*l) {
@ -496,7 +633,7 @@ parse(magicp, nmagicp, l, action)
}
break;
case '!':
if (m->type != STRING) {
if (m->type != STRING && m->type != PSTRING) {
m->reln = *l;
++l;
break;
@ -558,7 +695,7 @@ getvalue(m, p)
{
int slen;
if (m->type == STRING) {
if (m->type == STRING || m->type == PSTRING) {
*p = getstr(*p, m->value.s, sizeof(m->value.s), &slen);
m->vallen = slen;
} else
@ -780,7 +917,6 @@ eatsize(p)
*p = l;
}
#ifdef QUICK
/*
* handle an mmaped file.
*/
@ -798,6 +934,9 @@ apprentice_map(magicp, nmagicp, fn, action)
int needsbyteswap;
char *dbname = mkdbname(fn);
if (dbname == NULL)
return -1;
if ((fd = open(dbname, O_RDONLY)) == -1)
return -1;
@ -807,12 +946,25 @@ apprentice_map(magicp, nmagicp, fn, action)
goto error;
}
#ifdef QUICK
if ((*magicp = mmap(0, (size_t)st.st_size, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FILE, fd, (off_t)0)) == MAP_FAILED) {
(void)fprintf(stderr, "%s: Cannot map `%s' (%s)\n",
progname, dbname, strerror(errno));
goto error;
}
#else
if ((*magicp = malloc((size_t)st.st_size)) == NULL) {
(void) fprintf(stderr, "%s: Out of memory (%s).\n", progname,
strerror(errno));
goto error;
}
if (read(fd, *magicp, (size_t)st.st_size) != (size_t)st.st_size) {
(void) fprintf(stderr, "%s: Read failed (%s).\n", progname,
strerror(errno));
goto error;
}
#endif
(void)close(fd);
fd = -1;
ptr = (uint32 *) *magicp;
@ -844,9 +996,13 @@ apprentice_map(magicp, nmagicp, fn, action)
error:
if (fd != -1)
(void)close(fd);
if (*magicp)
if (*magicp) {
#ifdef QUICK
(void)munmap(*magicp, (size_t)st.st_size);
else {
#else
free(*magicp);
#endif
} else {
*magicp = NULL;
*nmagicp = 0;
}
@ -869,6 +1025,9 @@ apprentice_compile(magicp, nmagicp, fn, action)
MAGICNO, VERSIONNO
};
if (dbname == NULL)
return -1;
if ((fd = open(dbname, O_WRONLY|O_CREAT|O_TRUNC, 0644)) == -1) {
(void)fprintf(stderr, "%s: Cannot open `%s' (%s)\n",
progname, dbname, strerror(errno));
@ -912,6 +1071,11 @@ mkdbname(fn)
buf = malloc(len);
else
buf = realloc(buf, len);
if (buf == NULL) {
(void) fprintf(stderr, "%s: Out of memory (%s).\n", progname,
strerror(errno));
return NULL;
}
(void)strcpy(buf, fn);
(void)strcat(buf, ext);
return buf;
@ -976,4 +1140,3 @@ void bs1(m)
m->value.l = swap4(m->value.l);
m->mask = swap4(m->mask);
}
#endif

View File

@ -16,7 +16,7 @@
#include <sys/wait.h>
#endif
#ifndef lint
FILE_RCSID("@(#)$Id: compress.c,v 1.19 2001/03/20 04:22:02 christos Exp $")
FILE_RCSID("@(#)$Id: compress.c,v 1.20 2001/07/22 21:04:15 christos Exp $")
#endif
@ -35,7 +35,7 @@ static struct {
{ "\037\240", 2, { "gzip", "-cdq", NULL }, 1 }, /* SCO LZH */
/* the standard pack utilities do not accept standard input */
{ "\037\036", 2, { "gzip", "-cdq", NULL }, 0 }, /* packed */
{ "BZh", 3, { "bzip2", "-d", NULL }, 1 }, /* bzip2-ed */
{ "BZh", 3, { "bzip2", "-cd", NULL }, 1 }, /* bzip2-ed */
};
static int ncompr = sizeof(compr) / sizeof(compr[0]);

View File

@ -58,6 +58,9 @@
/* The number of bytes in a uint64_t. */
#define SIZEOF_UINT64_T 0
/* Define if you have the mmap function. */
#undef HAVE_MMAP
/* Define if you have the strerror function. */
#undef HAVE_STRERROR
@ -67,6 +70,9 @@
/* Define if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H
/* Define if you have the <sys/mman.h> header file. */
#undef HAVE_SYS_MMAN_H
/* Define if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H

260
contrib/file/configure vendored
View File

@ -15,6 +15,8 @@ ac_help="$ac_help
--disable-elf disable builtin ELF support"
ac_help="$ac_help
--disable-elf-core disable ELF core file support"
ac_help="$ac_help
--enable-fsect-man5 enable file formats in man section 5"
# Initialize some variables set by options.
# The variables have the same names as the options, with
@ -556,7 +558,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
echo "configure:560: checking for a BSD compatible install" >&5
echo "configure:562: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@ -609,7 +611,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6
echo "configure:613: checking whether build environment is sane" >&5
echo "configure:615: checking whether build environment is sane" >&5
# Just in case
sleep 1
echo timestamp > conftestfile
@ -666,7 +668,7 @@ test "$program_suffix" != NONE &&
test "$program_transform_name" = "" && program_transform_name="s,x,x,"
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
echo "configure:670: checking whether ${MAKE-make} sets \${MAKE}" >&5
echo "configure:672: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@ -695,7 +697,7 @@ fi
PACKAGE=file
VERSION=3.35
VERSION=3.36
if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
{ echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; }
@ -712,7 +714,7 @@ EOF
missing_dir=`cd $ac_aux_dir && pwd`
echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
echo "configure:716: checking for working aclocal" >&5
echo "configure:718: checking for working aclocal" >&5
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
@ -725,7 +727,7 @@ else
fi
echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
echo "configure:729: checking for working autoconf" >&5
echo "configure:731: checking for working autoconf" >&5
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
@ -738,7 +740,7 @@ else
fi
echo $ac_n "checking for working automake""... $ac_c" 1>&6
echo "configure:742: checking for working automake" >&5
echo "configure:744: checking for working automake" >&5
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
@ -751,7 +753,7 @@ else
fi
echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
echo "configure:755: checking for working autoheader" >&5
echo "configure:757: checking for working autoheader" >&5
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
@ -764,7 +766,7 @@ else
fi
echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
echo "configure:768: checking for working makeinfo" >&5
echo "configure:770: checking for working makeinfo" >&5
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
@ -782,7 +784,7 @@ fi
echo $ac_n "checking for builtin ELF support""... $ac_c" 1>&6
echo "configure:786: checking for builtin ELF support" >&5
echo "configure:788: checking for builtin ELF support" >&5
# Check whether --enable-elf or --disable-elf was given.
if test "${enable_elf+set}" = set; then
enableval="$enable_elf"
@ -808,7 +810,7 @@ fi
echo $ac_n "checking for ELF core file support""... $ac_c" 1>&6
echo "configure:812: checking for ELF core file support" >&5
echo "configure:814: checking for ELF core file support" >&5
# Check whether --enable-elf-core or --disable-elf-core was given.
if test "${enable_elf_core+set}" = set; then
enableval="$enable_elf_core"
@ -833,10 +835,41 @@ EOF
fi
echo $ac_n "checking for file formats in man section 5""... $ac_c" 1>&6
echo "configure:840: checking for file formats in man section 5" >&5
# Check whether --enable-fsect-man5 or --disable-fsect-man5 was given.
if test "${enable_fsect_man5+set}" = set; then
enableval="$enable_fsect_man5"
if test "${enableval}" = yes; then
echo "$ac_t""yes" 1>&6
fsect=5
else
echo "$ac_t""no" 1>&6
fsect=4
fi
else
# disable by default
echo "$ac_t""no" 1>&6
fsect=4
fi
if test x$fsect = x5; then
FSECT5_TRUE=
FSECT5_FALSE='#'
else
FSECT5_TRUE='#'
FSECT5_FALSE=
fi
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:840: checking for $ac_word" >&5
echo "configure:873: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -866,7 +899,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:870: checking for $ac_word" >&5
echo "configure:903: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -917,7 +950,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:921: checking for $ac_word" >&5
echo "configure:954: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -949,7 +982,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
echo "configure:953: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
echo "configure:986: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@ -960,12 +993,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
#line 964 "configure"
#line 997 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
if { (eval echo configure:969: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:1002: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@ -991,12 +1024,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
echo "configure:995: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "configure:1028: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
echo "configure:1000: checking whether we are using GNU C" >&5
echo "configure:1033: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1005,7 +1038,7 @@ else
yes;
#endif
EOF
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1009: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1042: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@ -1024,7 +1057,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
echo "configure:1028: checking whether ${CC-cc} accepts -g" >&5
echo "configure:1061: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1067,7 +1100,7 @@ fi
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
echo "configure:1071: checking for a BSD compatible install" >&5
echo "configure:1104: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@ -1120,7 +1153,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
echo "configure:1124: checking whether ln -s works" >&5
echo "configure:1157: checking whether ln -s works" >&5
if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1142,7 +1175,7 @@ fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
echo "configure:1146: checking how to run the C preprocessor" >&5
echo "configure:1179: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@ -1157,13 +1190,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
#line 1161 "configure"
#line 1194 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1167: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:1200: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@ -1174,13 +1207,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
#line 1178 "configure"
#line 1211 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1184: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:1217: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@ -1191,13 +1224,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
#line 1195 "configure"
#line 1228 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1201: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:1234: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@ -1222,12 +1255,12 @@ fi
echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
echo "configure:1226: checking for ANSI C header files" >&5
echo "configure:1259: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1231 "configure"
#line 1264 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@ -1235,7 +1268,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1239: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:1272: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@ -1252,7 +1285,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
#line 1256 "configure"
#line 1289 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@ -1270,7 +1303,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
#line 1274 "configure"
#line 1307 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@ -1291,7 +1324,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
#line 1295 "configure"
#line 1328 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@ -1302,7 +1335,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
if { (eval echo configure:1306: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
if { (eval echo configure:1339: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@ -1326,19 +1359,19 @@ EOF
fi
echo $ac_n "checking whether sys/types.h defines makedev""... $ac_c" 1>&6
echo "configure:1330: checking whether sys/types.h defines makedev" >&5
echo "configure:1363: checking whether sys/types.h defines makedev" >&5
if eval "test \"`echo '$''{'ac_cv_header_sys_types_h_makedev'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1335 "configure"
#line 1368 "configure"
#include "confdefs.h"
#include <sys/types.h>
int main() {
return makedev(0, 0);
; return 0; }
EOF
if { (eval echo configure:1342: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:1375: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_sys_types_h_makedev=yes
else
@ -1356,17 +1389,17 @@ echo "$ac_t""$ac_cv_header_sys_types_h_makedev" 1>&6
if test $ac_cv_header_sys_types_h_makedev = no; then
ac_safe=`echo "sys/mkdev.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for sys/mkdev.h""... $ac_c" 1>&6
echo "configure:1360: checking for sys/mkdev.h" >&5
echo "configure:1393: checking for sys/mkdev.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1365 "configure"
#line 1398 "configure"
#include "confdefs.h"
#include <sys/mkdev.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1370: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:1403: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@ -1394,17 +1427,17 @@ fi
if test $ac_cv_header_sys_mkdev_h = no; then
ac_safe=`echo "sys/sysmacros.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for sys/sysmacros.h""... $ac_c" 1>&6
echo "configure:1398: checking for sys/sysmacros.h" >&5
echo "configure:1431: checking for sys/sysmacros.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1403 "configure"
#line 1436 "configure"
#include "confdefs.h"
#include <sys/sysmacros.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1408: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:1441: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@ -1432,12 +1465,12 @@ fi
fi
echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
echo "configure:1436: checking for sys/wait.h that is POSIX.1 compatible" >&5
echo "configure:1469: checking for sys/wait.h that is POSIX.1 compatible" >&5
if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1441 "configure"
#line 1474 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/wait.h>
@ -1453,7 +1486,7 @@ wait (&s);
s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
; return 0; }
EOF
if { (eval echo configure:1457: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:1490: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_sys_wait_h=yes
else
@ -1477,17 +1510,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:1481: checking for $ac_hdr" >&5
echo "configure:1514: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1486 "configure"
#line 1519 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1491: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:1524: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@ -1517,17 +1550,57 @@ for ac_hdr in locale.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:1521: checking for $ac_hdr" >&5
echo "configure:1554: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1526 "configure"
#line 1559 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1531: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:1564: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
eval "ac_cv_header_$ac_safe=yes"
else
echo "$ac_err" >&5
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
eval "ac_cv_header_$ac_safe=no"
fi
rm -f conftest*
fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
cat >> confdefs.h <<EOF
#define $ac_tr_hdr 1
EOF
else
echo "$ac_t""no" 1>&6
fi
done
for ac_hdr in sys/mman.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:1594: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1599 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1604: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@ -1555,12 +1628,12 @@ done
echo $ac_n "checking for working const""... $ac_c" 1>&6
echo "configure:1559: checking for working const" >&5
echo "configure:1632: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1564 "configure"
#line 1637 "configure"
#include "confdefs.h"
int main() {
@ -1609,7 +1682,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
if { (eval echo configure:1613: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:1686: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@ -1630,12 +1703,12 @@ EOF
fi
echo $ac_n "checking for off_t""... $ac_c" 1>&6
echo "configure:1634: checking for off_t" >&5
echo "configure:1707: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1639 "configure"
#line 1712 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@ -1663,12 +1736,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
echo "configure:1667: checking for size_t" >&5
echo "configure:1740: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1672 "configure"
#line 1745 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@ -1696,12 +1769,12 @@ EOF
fi
echo $ac_n "checking for st_rdev in struct stat""... $ac_c" 1>&6
echo "configure:1700: checking for st_rdev in struct stat" >&5
echo "configure:1773: checking for st_rdev in struct stat" >&5
if eval "test \"`echo '$''{'ac_cv_struct_st_rdev'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1705 "configure"
#line 1778 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
@ -1709,7 +1782,7 @@ int main() {
struct stat s; s.st_rdev;
; return 0; }
EOF
if { (eval echo configure:1713: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:1786: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_st_rdev=yes
else
@ -1731,12 +1804,12 @@ fi
echo $ac_n "checking for uint8_t""... $ac_c" 1>&6
echo "configure:1735: checking for uint8_t" >&5
echo "configure:1808: checking for uint8_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_uint8_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1740 "configure"
#line 1813 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@ -1764,12 +1837,12 @@ EOF
fi
echo $ac_n "checking for uint16_t""... $ac_c" 1>&6
echo "configure:1768: checking for uint16_t" >&5
echo "configure:1841: checking for uint16_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_uint16_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1773 "configure"
#line 1846 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@ -1797,12 +1870,12 @@ EOF
fi
echo $ac_n "checking for uint32_t""... $ac_c" 1>&6
echo "configure:1801: checking for uint32_t" >&5
echo "configure:1874: checking for uint32_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_uint32_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1806 "configure"
#line 1879 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@ -1831,7 +1904,7 @@ fi
echo $ac_n "checking for long long""... $ac_c" 1>&6
echo "configure:1835: checking for long long" >&5
echo "configure:1908: checking for long long" >&5
if eval "test \"`echo '$''{'ac_cv_c_long_long'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1842,13 +1915,13 @@ if test "$cross_compiling" = yes; then
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
#line 1846 "configure"
#line 1919 "configure"
#include "confdefs.h"
int main() {
long long foo = 0;
exit(sizeof(long long) < sizeof(long)); }
EOF
if { (eval echo configure:1852: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
if { (eval echo configure:1925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_long_long=yes
else
@ -1877,12 +1950,12 @@ else
long64='unsigned long';
fi
echo $ac_n "checking for uint64_t""... $ac_c" 1>&6
echo "configure:1881: checking for uint64_t" >&5
echo "configure:1954: checking for uint64_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_uint64_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1886 "configure"
#line 1959 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@ -1913,7 +1986,7 @@ fi
echo $ac_n "checking size of uint8_t""... $ac_c" 1>&6
echo "configure:1917: checking size of uint8_t" >&5
echo "configure:1990: checking size of uint8_t" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_uint8_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1921,7 +1994,7 @@ else
ac_cv_sizeof_uint8_t=0
else
cat > conftest.$ac_ext <<EOF
#line 1925 "configure"
#line 1998 "configure"
#include "confdefs.h"
#include <sys/types.h>
#ifdef STDC_HEADERS
@ -1937,7 +2010,7 @@ main()
exit(0);
}
EOF
if { (eval echo configure:1941: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
if { (eval echo configure:2014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_sizeof_uint8_t=`cat conftestval`
else
@ -1958,7 +2031,7 @@ EOF
echo $ac_n "checking size of uint16_t""... $ac_c" 1>&6
echo "configure:1962: checking size of uint16_t" >&5
echo "configure:2035: checking size of uint16_t" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_uint16_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1966,7 +2039,7 @@ else
ac_cv_sizeof_uint16_t=0
else
cat > conftest.$ac_ext <<EOF
#line 1970 "configure"
#line 2043 "configure"
#include "confdefs.h"
#include <sys/types.h>
#ifdef STDC_HEADERS
@ -1982,7 +2055,7 @@ main()
exit(0);
}
EOF
if { (eval echo configure:1986: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
if { (eval echo configure:2059: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_sizeof_uint16_t=`cat conftestval`
else
@ -2003,7 +2076,7 @@ EOF
echo $ac_n "checking size of uint32_t""... $ac_c" 1>&6
echo "configure:2007: checking size of uint32_t" >&5
echo "configure:2080: checking size of uint32_t" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_uint32_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -2011,7 +2084,7 @@ else
ac_cv_sizeof_uint32_t=0
else
cat > conftest.$ac_ext <<EOF
#line 2015 "configure"
#line 2088 "configure"
#include "confdefs.h"
#include <sys/types.h>
#ifdef STDC_HEADERS
@ -2027,7 +2100,7 @@ main()
exit(0);
}
EOF
if { (eval echo configure:2031: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
if { (eval echo configure:2104: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_sizeof_uint32_t=`cat conftestval`
else
@ -2048,7 +2121,7 @@ EOF
echo $ac_n "checking size of uint64_t""... $ac_c" 1>&6
echo "configure:2052: checking size of uint64_t" >&5
echo "configure:2125: checking size of uint64_t" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_uint64_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -2056,7 +2129,7 @@ else
ac_cv_sizeof_uint64_t=0
else
cat > conftest.$ac_ext <<EOF
#line 2060 "configure"
#line 2133 "configure"
#include "confdefs.h"
#include <sys/types.h>
#ifdef STDC_HEADERS
@ -2072,7 +2145,7 @@ main()
exit(0);
}
EOF
if { (eval echo configure:2076: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
if { (eval echo configure:2149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_sizeof_uint64_t=`cat conftestval`
else
@ -2093,15 +2166,15 @@ EOF
for ac_func in strerror strtoul
for ac_func in mmap strerror strtoul
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:2100: checking for $ac_func" >&5
echo "configure:2173: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2105 "configure"
#line 2178 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@ -2124,7 +2197,7 @@ $ac_func();
; return 0; }
EOF
if { (eval echo configure:2128: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:2201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@ -2293,6 +2366,9 @@ s%@AUTOMAKE@%$AUTOMAKE%g
s%@AUTOHEADER@%$AUTOHEADER%g
s%@MAKEINFO@%$MAKEINFO%g
s%@SET_MAKE@%$SET_MAKE%g
s%@fsect@%$fsect%g
s%@FSECT5_TRUE@%$FSECT5_TRUE%g
s%@FSECT5_FALSE@%$FSECT5_FALSE%g
s%@CC@%$CC%g
s%@LN_S@%$LN_S%g
s%@CPP@%$CPP%g

View File

@ -1,6 +1,6 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT(file.c)
AM_INIT_AUTOMAKE(file, 3.35)
AM_INIT_AUTOMAKE(file, 3.36)
AM_CONFIG_HEADER(config.h)
AC_MSG_CHECKING(for builtin ELF support)
@ -31,6 +31,23 @@ fi], [
AC_DEFINE(ELFCORE)
])
AC_MSG_CHECKING(for file formats in man section 5)
AC_ARG_ENABLE(fsect-man5,
[ --enable-fsect-man5 enable file formats in man section 5],
[if test "${enableval}" = yes; then
AC_MSG_RESULT(yes)
fsect=5
else
AC_MSG_RESULT(no)
fsect=4
fi], [
# disable by default
AC_MSG_RESULT(no)
fsect=4
])
AC_SUBST(fsect)
AM_CONDITIONAL(FSECT5, test x$fsect = x5)
dnl Checks for programs.
AC_PROG_CC
AC_PROG_INSTALL
@ -42,6 +59,7 @@ AC_HEADER_MAJOR
AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS(unistd.h)
AC_CHECK_HEADERS(locale.h)
AC_CHECK_HEADERS(sys/mman.h)
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
@ -69,6 +87,6 @@ AC_CHECK_SIZEOF_STDC_HEADERS(uint32_t, 0)
AC_CHECK_SIZEOF_STDC_HEADERS(uint64_t, 0)
dnl Checks for functions
AC_CHECK_FUNCS(strerror strtoul)
AC_CHECK_FUNCS(mmap strerror strtoul)
AC_OUTPUT(Makefile)

View File

@ -56,14 +56,14 @@
#include "patchlevel.h"
#ifndef lint
FILE_RCSID("@(#)$Id: file.c,v 1.56 2001/03/11 20:29:16 christos Exp $")
FILE_RCSID("@(#)$Id: file.c,v 1.58 2001/07/22 21:04:15 christos Exp $")
#endif /* lint */
#ifdef S_IFLNK
# define USAGE "Usage: %s [-bciknvzL] [-f namefile] [-m magicfiles] file...\n"
# define USAGE "Usage: %s [-bciknsvzL] [-f namefile] [-m magicfiles] file...\n"
#else
# define USAGE "Usage: %s [-bciknvz] [-f namefile] [-m magicfiles] file...\n"
# define USAGE "Usage: %s [-bciknsvz] [-f namefile] [-m magicfiles] file...\n"
#endif
#ifndef MAGIC
@ -89,7 +89,7 @@ int /* Misc globals */
struct magic *magic; /* array of magic entries */
const char *magicfile; /* where magic be found */
const char *magicfile = 0; /* where the magic is */
const char *default_magicfile = MAGIC;
char *progname; /* used throughout */
@ -115,7 +115,8 @@ main(argc, argv)
{
int c;
int action = 0, didsomefiles = 0, errflg = 0, ret = 0, app = 0;
char *mime;
char *mime, *home, *usermagic;
struct stat sb;
#ifdef LC_CTYPE
setlocale(LC_CTYPE, ""); /* makes islower etc work for other langs */
@ -126,8 +127,20 @@ main(argc, argv)
else
progname = argv[0];
if (!(magicfile = getenv("MAGIC")))
magicfile = default_magicfile;
magicfile = default_magicfile;
if ((usermagic = getenv("MAGIC")) != NULL)
magicfile = usermagic;
else
if (home = getenv("HOME")) {
if ((usermagic = malloc(strlen(home) + 8)) != NULL) {
(void)strcpy(usermagic, home);
(void)strcat(usermagic, "/.magic");
if (stat(usermagic, &sb)<0)
free(usermagic);
else
magicfile = usermagic;
}
}
while ((c = getopt(argc, argv, "bcdf:ikm:nsvzCL")) != EOF)
switch (c) {
@ -155,7 +168,7 @@ main(argc, argv)
break;
case 'i':
iflag++;
if ((mime = malloc(strlen(magicfile) + 5)) != NULL) {
if ((mime = malloc(strlen(magicfile) + 6)) != NULL) {
(void)strcpy(mime, magicfile);
(void)strcat(mime, ".mime");
magicfile = mime;
@ -458,8 +471,6 @@ static void
usage()
{
(void)fprintf(stderr, USAGE, progname);
#ifdef QUICK
(void)fprintf(stderr, "Usage: %s -C [-m magic]\n", progname);
#endif
exit(1);
}

View File

@ -1,6 +1,6 @@
/*
* file.h - definitions for file(1) program
* @(#)$Id: file.h,v 1.35 2001/03/11 20:29:16 christos Exp $
* @(#)$Id: file.h,v 1.37 2001/07/22 21:04:15 christos Exp $
*
* Copyright (c) Ian F. Darwin, 1987.
* Written by Ian F. Darwin.
@ -59,7 +59,7 @@ struct magic {
uint8 flag;
#define INDIR 1 /* if '>(...)' appears, */
#define UNSIGNED 2 /* comparison is unsigned */
#define ADD 4 /* if '>&' appears, */
#define OFFADD 4 /* if '>&' appears, */
uint8 reln; /* relation (0=eq, '>'=gt, etc) */
uint8 vallen; /* length of string value, if any */
uint8 type; /* int, short, long or string. */
@ -75,6 +75,21 @@ struct magic {
#define LESHORT 10
#define LELONG 11
#define LEDATE 12
#define PSTRING 13
#define LDATE 14
#define BELDATE 15
#define LELDATE 16
uint8 in_op; /* operator for indirection */
uint8 mask_op; /* operator for mask */
#define OPAND 1
#define OPOR 2
#define OPXOR 3
#define OPADD 4
#define OPMINUS 5
#define OPMULTIPLY 6
#define OPDIVIDE 7
#define OPMODULO 8
#define OPINVERSE 0x80
int32 offset; /* offset to magic number */
int32 in_offset; /* offset from indirection */
union VALUETYPE {
@ -123,6 +138,7 @@ extern void error __P((const char *, ...));
extern void ckfputs __P((const char *, FILE *));
struct stat;
extern int fsmagic __P((const char *, struct stat *));
extern char *fmttime __P((long, int));
extern int is_compress __P((const unsigned char *, int *));
extern int is_tar __P((unsigned char *, int));
extern void magwarn __P((const char *, ...));
@ -162,6 +178,10 @@ extern char *sys_errlist[];
#define strtoul(a, b, c) strtol(a, b, c)
#endif
#if defined(HAVE_MMAP) && defined(HAVE_SYS_MMAN_H) && !defined(QUICK)
#define QUICK
#endif
#ifdef __STDC__
#define FILE_RCSID(id) \
static const char *rcsid(const char *p) { \

View File

@ -1,5 +1,5 @@
.TH FILE __CSECTION__ "Copyright but distributable"
.\" $Id: file.man,v 1.38 2001/03/11 20:37:08 christos Exp $
.\" $Id: file.man,v 1.39 2001/04/27 22:48:33 christos Exp $
.SH NAME
file
\- determine file type
@ -10,11 +10,14 @@ file
]
[
.B \-f
namefile ]
.I namefile
]
[
.B \-m
magicfiles ]
file ...
.I magicfiles
]
.I file
\&...
.br
.B file
.B -C
@ -152,13 +155,14 @@ Do not prepend filenames to output lines (brief mode).
.B \-c
Cause a checking printout of the parsed form of the magic file.
This is usually used in conjunction with
.B \-C
Write a magic.mgc output file that contains a pre-parsed version of
file.
.B \-m
to debug a new magic file before installing it.
.TP 8
.B \-f namefile
.B \-C
Write a magic.mgc output file that contains a pre-parsed version of
file.
.TP 8
.BI \-f " namefile"
Read the names of the files to be examined from
.I namefile
(one per line)
@ -182,7 +186,7 @@ text file types, directories etc), and makes use of an alternative
.B \-k
Don't stop at the first match, keep going.
.TP 8
.B \-m list
.BI \-m " list"
Specify an alternate list of files containing magic numbers.
This can be a single file, or a colon-separated list of files.
.TP 8

View File

@ -96,6 +96,10 @@
# MPEG Layer 3 sound files
# Modified the 11/20/97 at 15:59:04 by Christophe Prud'homme <christophe.prudhomme@asci.fr>
0 belong 0xfffb audio/x-mp3
#MP3 with ID3 tag
0 string ID3 audio/x-mp3
# Ogg/Vorbis
0 string OggS audio/x-ogg
#------------------------------------------------------------------------------
# c-lang: file(1) magic for C programs or various scripts
@ -265,6 +269,8 @@
2 string -lh3- application/x-lha lh3
2 string -lh4- application/x-lha lh4
2 string -lh5- application/x-lha lh5
2 string -lh6- application/x-lha lh6
2 string -lh7- application/x-lha lh7
# Shell archives
10 string #\ This\ is\ a\ shell\ archive application/octet-stream x-shell
@ -533,4 +539,5 @@
#
0 string #\ PaCkAgE\ DaTaStReAm application/x-svr4-package
#PNG Image Format
0 string \x89PNG image/png

View File

@ -1,11 +1,16 @@
#define FILE_VERSION_MAJOR 3
#define patchlevel 35
#define patchlevel 36
/*
* Patchlevel file for Ian Darwin's MAGIC command.
* $Id: patchlevel.h,v 1.35 2001/04/24 14:40:25 christos Exp $
* $Id: patchlevel.h,v 1.36 2001/07/22 21:04:15 christos Exp $
*
* $Log: patchlevel.h,v $
* Revision 1.36 2001/07/22 21:04:15 christos
* - magic fixes
* - add new operators, pascal strings, UTC date printing, $HOME/.magic
* [from "Tom N Harris" <telliamed@mac.com>]
*
* Revision 1.35 2001/04/24 14:40:25 christos
* - rename magic file sgi to mips and fix it
* - add support for building magic.mgc

View File

@ -41,7 +41,7 @@
#include <time.h>
#ifndef lint
FILE_RCSID("@(#)$Id: print.c,v 1.32 2001/03/11 20:29:16 christos Exp $")
FILE_RCSID("@(#)$Id: print.c,v 1.33 2001/07/22 21:04:15 christos Exp $")
#endif /* lint */
#define SZOF(a) (sizeof(a) / sizeof(a[0]))
@ -53,26 +53,38 @@ mdump(m)
static const char *typ[] = { "invalid", "byte", "short", "invalid",
"long", "string", "date", "beshort",
"belong", "bedate", "leshort", "lelong",
"ledate" };
"ledate", "pstring", "ldate", "beldate",
"leldate" };
static const char optyp[] = { '@', '&', '|', '^', '+', '-',
'*', '/', '%' };
(void) fputc('[', stderr);
(void) fprintf(stderr, ">>>>>>>> %d" + 8 - (m->cont_level & 7),
m->offset);
if (m->flag & INDIR)
(void) fprintf(stderr, "(%s,%d),",
/* Note: in.type is unsigned */
if (m->flag & INDIR) {
(void) fprintf(stderr, "(%s,",
/* Note: type is unsigned */
(m->in_type < SZOF(typ)) ?
typ[m->in_type] : "*bad*",
m->in_offset);
typ[m->in_type] : "*bad*");
if (m->in_op & OPINVERSE)
(void) fputc('~', stderr);
(void) fprintf(stderr, "%c%d),",
((m->in_op&0x7F) < SZOF(optyp)) ?
optyp[m->in_op&0x7F] : '?',
m->in_offset);
}
(void) fprintf(stderr, " %s%s", (m->flag & UNSIGNED) ? "u" : "",
/* Note: type is unsigned */
(m->type < SZOF(typ)) ? typ[m->type] : "*bad*");
if (m->mask != ~((uint32)0)) {
if(STRING != m->type)
(void) fprintf(stderr, " & %.8x", m->mask);
if (m->mask_op & OPINVERSE)
(void) fputc('~', stderr);
if (m->mask) {
((m->mask_op&0x7F) < SZOF(optyp)) ?
(void) fputc(optyp[m->mask_op&0x7F], stderr) :
(void) fputc('?', stderr);
if(STRING != m->type || PSTRING != m->type)
(void) fprintf(stderr, "%.8x", m->mask);
else {
(void) fputc('/', stderr);
if (m->mask & STRING_IGNORE_LOWERCASE)
(void) fputc(CHAR_IGNORE_LOWERCASE, stderr);
if (m->mask & STRING_COMPACT_BLANK)
@ -97,21 +109,18 @@ mdump(m)
(void) fprintf(stderr, "%d", m->value.l);
break;
case STRING:
case PSTRING:
showstr(stderr, m->value.s, -1);
break;
case DATE:
case LEDATE:
case BEDATE:
{
time_t t = m->value.l;
char *rt, *pp = ctime(&t);
if ((rt = strchr(pp, '\n')) != NULL)
*rt = '\0';
(void) fprintf(stderr, "%s,", pp);
if (rt)
*rt = '\n';
}
(void)fprintf(stderr, "%s,", fmttime(m->value.l, 1));
break;
case LDATE:
case LELDATE:
case BELDATE:
(void)fprintf(stderr, "%s,", fmttime(m->value.l, 0));
break;
default:
(void) fputs("*bad*", stderr);
@ -122,7 +131,7 @@ mdump(m)
}
/*
* ckfputs - futs, but with error checking
* ckfputs - fputs, but with error checking
* ckfprintf - fprintf, but with error checking
*/
void
@ -216,3 +225,26 @@ magwarn(va_alist)
va_end(va);
fputc('\n', stderr);
}
char *
fmttime(v, local)
long v;
int local;
{
char *pp, *rt;
time_t t = (time_t)v;
if (local) {
pp = ctime(&t);
} else {
struct tm *tm;
if (daylight)
t += 3600;
tm = gmtime(&t);
pp = asctime(tm);
}
if ((rt = strchr(pp, '\n')) != NULL)
*rt = '\0';
return pp;
}

View File

@ -35,7 +35,7 @@
#include "file.h"
#ifndef lint
FILE_RCSID("@(#)$Id: softmagic.c,v 1.44 2001/03/17 19:32:50 christos Exp $")
FILE_RCSID("@(#)$Id: softmagic.c,v 1.45 2001/07/22 21:04:15 christos Exp $")
#endif /* lint */
static int match __P((struct magic *, uint32, unsigned char *, int));
@ -157,7 +157,7 @@ match(magic, nmagic, s, nbytes)
*/
cont_level = magic[magindex].cont_level;
}
if (magic[magindex].flag & ADD) {
if (magic[magindex].flag & OFFADD) {
oldoff=magic[magindex].offset;
magic[magindex].offset +=
tmpoff[cont_level-1];
@ -195,7 +195,7 @@ match(magic, nmagic, s, nbytes)
tmplen += 20)) == NULL)
error("out of memory\n");
}
if (magic[magindex].flag & ADD) {
if (magic[magindex].flag & OFFADD) {
magic[magindex].offset = oldoff;
}
}
@ -215,6 +215,7 @@ mprint(p, m)
struct magic *m;
{
char *pp, *rt;
char *oldtz, tz[16];
uint32 v;
time_t curtime;
int32 t=0 ;
@ -222,8 +223,7 @@ mprint(p, m)
switch (m->type) {
case BYTE:
v = p->b;
v = signextend(m, v) & m->mask;
v = signextend(m, p->b);
(void) printf(m->desc, (unsigned char) v);
t = m->offset + sizeof(char);
break;
@ -231,8 +231,7 @@ mprint(p, m)
case SHORT:
case BESHORT:
case LESHORT:
v = p->h;
v = signextend(m, v) & m->mask;
v = signextend(m, p->h);
(void) printf(m->desc, (unsigned short) v);
t = m->offset + sizeof(short);
break;
@ -240,13 +239,13 @@ mprint(p, m)
case LONG:
case BELONG:
case LELONG:
v = p->l;
v = signextend(m, v) & m->mask;
v = signextend(m, p->l);
(void) printf(m->desc, (uint32) v);
t = m->offset + sizeof(int32);
break;
case STRING:
case PSTRING:
if (m->reln == '=') {
(void) printf(m->desc, m->value.s);
t = m->offset + strlen(m->value.s);
@ -265,11 +264,14 @@ mprint(p, m)
case DATE:
case BEDATE:
case LEDATE:
curtime = p->l;
pp = ctime(&curtime);
if ((rt = strchr(pp, '\n')) != NULL)
*rt = '\0';
(void) printf(m->desc, pp);
(void) printf(m->desc, fmttime(p->l, 1));
t = m->offset + sizeof(time_t);
break;
case LDATE:
case BELDATE:
case LELDATE:
(void) printf(m->desc, fmttime(p->l, 0));
t = m->offset + sizeof(time_t);
break;
@ -282,6 +284,8 @@ mprint(p, m)
/*
* Convert the byte order of the data we are looking at
* While we're here, let's apply the mask operation
* (unless you have a better idea)
*/
static int
mconvert(p, m)
@ -290,35 +294,259 @@ mconvert(p, m)
{
switch (m->type) {
case BYTE:
if (m->mask)
switch (m->mask_op&0x7F) {
case OPAND:
p->b &= m->mask;
break;
case OPOR:
p->b |= m->mask;
break;
case OPXOR:
p->b ^= m->mask;
break;
case OPADD:
p->b += m->mask;
break;
case OPMINUS:
p->b -= m->mask;
break;
case OPMULTIPLY:
p->b *= m->mask;
break;
case OPDIVIDE:
p->b /= m->mask;
break;
case OPMODULO:
p->b %= m->mask;
break;
}
if (m->mask_op & OPINVERSE)
p->b = ~p->b;
return 1;
case SHORT:
if (m->mask)
switch (m->mask_op&0x7F) {
case OPAND:
p->h &= m->mask;
break;
case OPOR:
p->h |= m->mask;
break;
case OPXOR:
p->h ^= m->mask;
break;
case OPADD:
p->h += m->mask;
break;
case OPMINUS:
p->h -= m->mask;
break;
case OPMULTIPLY:
p->h *= m->mask;
break;
case OPDIVIDE:
p->h /= m->mask;
break;
case OPMODULO:
p->h %= m->mask;
break;
}
if (m->mask_op & OPINVERSE)
p->h = ~p->h;
return 1;
case LONG:
case DATE:
case LDATE:
if (m->mask)
switch (m->mask_op&0x7F) {
case OPAND:
p->l &= m->mask;
break;
case OPOR:
p->l |= m->mask;
break;
case OPXOR:
p->l ^= m->mask;
break;
case OPADD:
p->l += m->mask;
break;
case OPMINUS:
p->l -= m->mask;
break;
case OPMULTIPLY:
p->l *= m->mask;
break;
case OPDIVIDE:
p->l /= m->mask;
break;
case OPMODULO:
p->l %= m->mask;
break;
}
if (m->mask_op & OPINVERSE)
p->l = ~p->l;
return 1;
case STRING:
{
char *ptr;
int n;
/* Null terminate and eat the return */
/* Null terminate and eat *trailing* return */
p->s[sizeof(p->s) - 1] = '\0';
if ((ptr = strchr(p->s, '\n')) != NULL)
*ptr = '\0';
n = strlen(p->s) - 1;
if (p->s[n] == '\n')
p->s[n] = '\0';
return 1;
}
case PSTRING:
{
char *ptr1 = p->s, *ptr2 = ptr1 + 1;
int n = *p->s;
if (n >= sizeof(p->s))
n = sizeof(p->s) - 1;
while (n--)
*ptr1++ = *ptr2++;
*ptr1 = '\0';
n = strlen(p->s) - 1;
if (p->s[n] == '\n')
p->s[n] = '\0';
return 1;
}
case BESHORT:
p->h = (short)((p->hs[0]<<8)|(p->hs[1]));
if (m->mask)
switch (m->mask_op&0x7F) {
case OPAND:
p->h &= m->mask;
break;
case OPOR:
p->h |= m->mask;
break;
case OPXOR:
p->h ^= m->mask;
break;
case OPADD:
p->h += m->mask;
break;
case OPMINUS:
p->h -= m->mask;
break;
case OPMULTIPLY:
p->h *= m->mask;
break;
case OPDIVIDE:
p->h /= m->mask;
break;
case OPMODULO:
p->h %= m->mask;
break;
}
if (m->mask_op & OPINVERSE)
p->h = ~p->h;
return 1;
case BELONG:
case BEDATE:
case BELDATE:
p->l = (int32)
((p->hl[0]<<24)|(p->hl[1]<<16)|(p->hl[2]<<8)|(p->hl[3]));
if (m->mask)
switch (m->mask_op&0x7F) {
case OPAND:
p->l &= m->mask;
break;
case OPOR:
p->l |= m->mask;
break;
case OPXOR:
p->l ^= m->mask;
break;
case OPADD:
p->l += m->mask;
break;
case OPMINUS:
p->l -= m->mask;
break;
case OPMULTIPLY:
p->l *= m->mask;
break;
case OPDIVIDE:
p->l /= m->mask;
break;
case OPMODULO:
p->l %= m->mask;
break;
}
if (m->mask_op & OPINVERSE)
p->l = ~p->l;
return 1;
case LESHORT:
p->h = (short)((p->hs[1]<<8)|(p->hs[0]));
if (m->mask)
switch (m->mask_op&0x7F) {
case OPAND:
p->h &= m->mask;
break;
case OPOR:
p->h |= m->mask;
break;
case OPXOR:
p->h ^= m->mask;
break;
case OPADD:
p->h += m->mask;
break;
case OPMINUS:
p->h -= m->mask;
break;
case OPMULTIPLY:
p->h *= m->mask;
break;
case OPDIVIDE:
p->h /= m->mask;
break;
case OPMODULO:
p->h %= m->mask;
break;
}
if (m->mask_op & OPINVERSE)
p->h = ~p->h;
return 1;
case LELONG:
case LEDATE:
case LELDATE:
p->l = (int32)
((p->hl[3]<<24)|(p->hl[2]<<16)|(p->hl[1]<<8)|(p->hl[0]));
if (m->mask)
switch (m->mask_op&0x7F) {
case OPAND:
p->l &= m->mask;
break;
case OPOR:
p->l |= m->mask;
break;
case OPXOR:
p->l ^= m->mask;
break;
case OPADD:
p->l += m->mask;
break;
case OPMINUS:
p->l -= m->mask;
break;
case OPMULTIPLY:
p->l *= m->mask;
break;
case OPDIVIDE:
p->l /= m->mask;
break;
case OPMODULO:
p->l %= m->mask;
break;
}
if (m->mask_op & OPINVERSE)
p->l = ~p->l;
return 1;
default:
error("invalid type %d in mconvert().\n", m->type);
@ -371,31 +599,324 @@ mget(p, s, m, nbytes)
switch (m->in_type) {
case BYTE:
offset = p->b + m->in_offset;
if (m->in_offset)
switch (m->in_op&0x7F) {
case OPAND:
offset = p->b & m->in_offset;
break;
case OPOR:
offset = p->b | m->in_offset;
break;
case OPXOR:
offset = p->b ^ m->in_offset;
break;
case OPADD:
offset = p->b + m->in_offset;
break;
case OPMINUS:
offset = p->b - m->in_offset;
break;
case OPMULTIPLY:
offset = p->b * m->in_offset;
break;
case OPDIVIDE:
offset = p->b / m->in_offset;
break;
case OPMODULO:
offset = p->b % m->in_offset;
break;
}
if (m->in_op & OPINVERSE)
offset = ~offset;
break;
case BESHORT:
offset = (short)((p->hs[0]<<8)|(p->hs[1]))+
m->in_offset;
if (m->in_offset)
switch (m->in_op&0x7F) {
case OPAND:
offset = (short)((p->hs[0]<<8)|
(p->hs[1])) &
m->in_offset;
break;
case OPOR:
offset = (short)((p->hs[0]<<8)|
(p->hs[1])) |
m->in_offset;
break;
case OPXOR:
offset = (short)((p->hs[0]<<8)|
(p->hs[1])) ^
m->in_offset;
break;
case OPADD:
offset = (short)((p->hs[0]<<8)|
(p->hs[1])) +
m->in_offset;
break;
case OPMINUS:
offset = (short)((p->hs[0]<<8)|
(p->hs[1])) -
m->in_offset;
break;
case OPMULTIPLY:
offset = (short)((p->hs[0]<<8)|
(p->hs[1])) *
m->in_offset;
break;
case OPDIVIDE:
offset = (short)((p->hs[0]<<8)|
(p->hs[1])) /
m->in_offset;
break;
case OPMODULO:
offset = (short)((p->hs[0]<<8)|
(p->hs[1])) %
m->in_offset;
break;
}
if (m->in_op & OPINVERSE)
offset = ~offset;
break;
case LESHORT:
offset = (short)((p->hs[1]<<8)|(p->hs[0]))+
m->in_offset;
if (m->in_offset)
switch (m->in_op&0x7F) {
case OPAND:
offset = (short)((p->hs[1]<<8)|
(p->hs[0])) &
m->in_offset;
break;
case OPOR:
offset = (short)((p->hs[1]<<8)|
(p->hs[0])) |
m->in_offset;
break;
case OPXOR:
offset = (short)((p->hs[1]<<8)|
(p->hs[0])) ^
m->in_offset;
break;
case OPADD:
offset = (short)((p->hs[1]<<8)|
(p->hs[0])) +
m->in_offset;
break;
case OPMINUS:
offset = (short)((p->hs[1]<<8)|
(p->hs[0])) -
m->in_offset;
break;
case OPMULTIPLY:
offset = (short)((p->hs[1]<<8)|
(p->hs[0])) *
m->in_offset;
break;
case OPDIVIDE:
offset = (short)((p->hs[1]<<8)|
(p->hs[0])) /
m->in_offset;
break;
case OPMODULO:
offset = (short)((p->hs[1]<<8)|
(p->hs[0])) %
m->in_offset;
break;
}
if (m->in_op & OPINVERSE)
offset = ~offset;
break;
case SHORT:
offset = p->h + m->in_offset;
if (m->in_offset)
switch (m->in_op&0x7F) {
case OPAND:
offset = p->h & m->in_offset;
break;
case OPOR:
offset = p->h | m->in_offset;
break;
case OPXOR:
offset = p->h ^ m->in_offset;
break;
case OPADD:
offset = p->h + m->in_offset;
break;
case OPMINUS:
offset = p->h - m->in_offset;
break;
case OPMULTIPLY:
offset = p->h * m->in_offset;
break;
case OPDIVIDE:
offset = p->h / m->in_offset;
break;
case OPMODULO:
offset = p->h % m->in_offset;
break;
}
if (m->in_op & OPINVERSE)
offset = ~offset;
break;
case BELONG:
offset = (int32)((p->hl[0]<<24)|(p->hl[1]<<16)|
(p->hl[2]<<8)|(p->hl[3]))+
m->in_offset;
if (m->in_offset)
switch (m->in_op&0x7F) {
case OPAND:
offset = (int32)((p->hl[0]<<24)|
(p->hl[1]<<16)|
(p->hl[2]<<8)|
(p->hl[3])) &
m->in_offset;
break;
case OPOR:
offset = (int32)((p->hl[0]<<24)|
(p->hl[1]<<16)|
(p->hl[2]<<8)|
(p->hl[3])) |
m->in_offset;
break;
case OPXOR:
offset = (int32)((p->hl[0]<<24)|
(p->hl[1]<<16)|
(p->hl[2]<<8)|
(p->hl[3])) ^
m->in_offset;
break;
case OPADD:
offset = (int32)((p->hl[0]<<24)|
(p->hl[1]<<16)|
(p->hl[2]<<8)|
(p->hl[3])) +
m->in_offset;
break;
case OPMINUS:
offset = (int32)((p->hl[0]<<24)|
(p->hl[1]<<16)|
(p->hl[2]<<8)|
(p->hl[3])) -
m->in_offset;
break;
case OPMULTIPLY:
offset = (int32)((p->hl[0]<<24)|
(p->hl[1]<<16)|
(p->hl[2]<<8)|
(p->hl[3])) *
m->in_offset;
break;
case OPDIVIDE:
offset = (int32)((p->hl[0]<<24)|
(p->hl[1]<<16)|
(p->hl[2]<<8)|
(p->hl[3])) /
m->in_offset;
break;
case OPMODULO:
offset = (int32)((p->hl[0]<<24)|
(p->hl[1]<<16)|
(p->hl[2]<<8)|
(p->hl[3])) %
m->in_offset;
break;
}
if (m->in_op & OPINVERSE)
offset = ~offset;
break;
case LELONG:
offset = (int32)((p->hl[3]<<24)|(p->hl[2]<<16)|
(p->hl[1]<<8)|(p->hl[0]))+
m->in_offset;
if (m->in_offset)
switch (m->in_op&0x7F) {
case OPAND:
offset = (int32)((p->hl[3]<<24)|
(p->hl[2]<<16)|
(p->hl[1]<<8)|
(p->hl[0])) &
m->in_offset;
break;
case OPOR:
offset = (int32)((p->hl[3]<<24)|
(p->hl[2]<<16)|
(p->hl[1]<<8)|
(p->hl[0])) |
m->in_offset;
break;
case OPXOR:
offset = (int32)((p->hl[3]<<24)|
(p->hl[2]<<16)|
(p->hl[1]<<8)|
(p->hl[0])) ^
m->in_offset;
break;
case OPADD:
offset = (int32)((p->hl[3]<<24)|
(p->hl[2]<<16)|
(p->hl[1]<<8)|
(p->hl[0])) +
m->in_offset;
break;
case OPMINUS:
offset = (int32)((p->hl[3]<<24)|
(p->hl[2]<<16)|
(p->hl[1]<<8)|
(p->hl[0])) -
m->in_offset;
break;
case OPMULTIPLY:
offset = (int32)((p->hl[3]<<24)|
(p->hl[2]<<16)|
(p->hl[1]<<8)|
(p->hl[0])) *
m->in_offset;
break;
case OPDIVIDE:
offset = (int32)((p->hl[3]<<24)|
(p->hl[2]<<16)|
(p->hl[1]<<8)|
(p->hl[0])) /
m->in_offset;
break;
case OPMODULO:
offset = (int32)((p->hl[3]<<24)|
(p->hl[2]<<16)|
(p->hl[1]<<8)|
(p->hl[0])) %
m->in_offset;
break;
}
if (m->in_op & OPINVERSE)
offset = ~offset;
break;
case LONG:
offset = p->l + m->in_offset;
if (m->in_offset)
switch (m->in_op&0x7F) {
case OPAND:
offset = p->l & m->in_offset;
break;
case OPOR:
offset = p->l | m->in_offset;
break;
case OPXOR:
offset = p->l ^ m->in_offset;
break;
case OPADD:
offset = p->l + m->in_offset;
break;
case OPMINUS:
offset = p->l - m->in_offset;
break;
case OPMULTIPLY:
offset = p->l * m->in_offset;
break;
case OPDIVIDE:
offset = p->l / m->in_offset;
break;
case OPMODULO:
offset = p->l % m->in_offset;
break;
/* case TOOMANYSWITCHBLOCKS:
* ugh = p->eye % m->strain;
* rub;
* case BEER:
* off = p->tab & m->in_gest;
* sleep;
*/
}
if (m->in_op & OPINVERSE)
offset = ~offset;
break;
}
@ -446,10 +967,15 @@ mcheck(p, m)
case DATE:
case BEDATE:
case LEDATE:
case LDATE:
case BELDATE:
case LELDATE:
v = p->l;
break;
case STRING: {
case STRING:
case PSTRING:
{
/*
* What we want here is:
* v = strncmp(m->value.s, p->s, m->vallen);
@ -499,8 +1025,8 @@ mcheck(p, m)
return 0;/*NOTREACHED*/
}
if(m->type != STRING)
v = signextend(m, v) & m->mask;
if(m->type != STRING && m->type != PSTRING)
v = signextend(m, v);
switch (m->reln) {
case 'x':