1 2#------------------------------------------------------------------------------ 3# $File: xenix,v 1.11 2017/03/17 21:35:28 christos Exp $ 4# xenix: file(1) magic for Microsoft Xenix 5# 6# "Middle model" stuff, and "Xenix 8086 relocatable or 80286 small 7# model" lifted from "magic.xenix", with comment "derived empirically; 8# treat as folklore until proven" 9# 10# "small model", "large model", "huge model" stuff lifted from XXX 11# 12# XXX - "x.out" collides with PDP-11 archives 13# 140 string core core file (Xenix) 15# URL: http://www.polarhome.com/service/man/?qf=86rel&tf=2&of=Xenix 16# Reference: http://www.azillionmonkeys.com/qed/Omfg.pdf 17# Update: Joerg Jenderek 18# recordtype~TranslatorHEADerRecord 190 byte 0x80 20# GRR: line above is too general as it catches also Extensible storage engine DataBase 21# skip examples like GENA.SND Switch.Snd by looking for record length maximal 1024-3 22>1 uleshort <1022 23# skip examples like GAME.PICTURE Strange.Pic by looking for positiv record length 24>>1 uleshort >0 25# skip examples like Xtable.Data FRACTAL.GEN SHR.VIEW by looking for positiv string length 26>>>3 ubyte >0 27# skip examples like OMBRE.6 with "UUUUUU" by looking for filename like "hello.c" 28>>>>4 regex [a-zA-Z_/]{1,8}[.] 8086 relocatable (Microsoft) 29#!:mime application/octet-stream 30!:mime application/x-object 31!:ext o/a 32>>>>>3 pstring x \b, "%s" 33# checksum 34#>>>>>(3.b+4) ubyte x \b, checksum 0x%2.2x 350 leshort 0xff65 x.out 36>2 string __.SYMDEF randomized 37>0 byte x archive 380 leshort 0x206 Microsoft a.out 39>8 leshort 1 Middle model 40>0x1e leshort &0x10 overlay 41>0x1e leshort &0x2 separate 42>0x1e leshort &0x4 pure 43>0x1e leshort &0x800 segmented 44>0x1e leshort &0x400 standalone 45>0x1e leshort &0x8 fixed-stack 46>0x1c byte &0x80 byte-swapped 47>0x1c byte &0x40 word-swapped 48>0x10 lelong >0 not-stripped 49>0x1e leshort ^0xc000 pre-SysV 50>0x1e leshort &0x4000 V2.3 51>0x1e leshort &0x8000 V3.0 52>0x1c byte &0x4 86 53>0x1c byte &0xb 186 54>0x1c byte &0x9 286 55>0x1c byte &0xa 386 56>0x1f byte <0x040 small model 57>0x1f byte =0x048 large model 58>0x1f byte =0x049 huge model 59>0x1e leshort &0x1 executable 60>0x1e leshort ^0x1 object file 61>0x1e leshort &0x40 Large Text 62>0x1e leshort &0x20 Large Data 63>0x1e leshort &0x120 Huge Objects Enabled 64>0x10 lelong >0 not stripped 65 660 leshort 0x140 old Microsoft 8086 x.out 67>0x3 byte &0x4 separate 68>0x3 byte &0x2 pure 69>0 byte &0x1 executable 70>0 byte ^0x1 relocatable 71>0x14 lelong >0 not stripped 72 730 lelong 0x206 b.out 74>0x1e leshort &0x10 overlay 75>0x1e leshort &0x2 separate 76>0x1e leshort &0x4 pure 77>0x1e leshort &0x800 segmented 78>0x1e leshort &0x400 standalone 79>0x1e leshort &0x1 executable 80>0x1e leshort ^0x1 object file 81>0x1e leshort &0x4000 V2.3 82>0x1e leshort &0x8000 V3.0 83>0x1c byte &0x4 86 84>0x1c byte &0xb 186 85>0x1c byte &0x9 286 86>0x1c byte &0x29 286 87>0x1c byte &0xa 386 88>0x1e leshort &0x4 Large Text 89>0x1e leshort &0x2 Large Data 90>0x1e leshort &0x102 Huge Objects Enabled 91 920 leshort 0x580 XENIX 8086 relocatable or 80286 small model 93