# WhatIs.library Copyright by Sylvain Rougier and Pierre Carrette # send donnation bug/report to : # Sylvain Rougier # 39 rue carnot # 86000 Poitiers # France # # For commercial use, ask written permision. # For non-comercial use, you can redistribute whatis.library package # # "# " = Comment # example definition: TYPE "Src Ada" # you define a new type, his IDString ( curently 9 # char max) was "Src Ada", this is the string that # was return by WhatIs.library and you can see in # BrowserII when you put the "Show file type", it # is also the way you identify this FileType. SUBTYPE "Text" # OPT: the file MUST be prior of the type "Text", # this means that if the file is not of the type # test, WhatIs.library think it is not the type # "Src Ada" INSERTAFTER "Script" # OPT: You want that the type "Src Ada" # was put after the type "Script", it not # an alpha order but an arbitrary FileType # order, you can see this order when you # choose "Sort by file type" in BrowserII ICONNAME "def_Src Ada" # OPT: this is the name of the default icon # file name, in case the file you # examine haven't, this is only the # file name ( returned by # GetIconName()) whitout any path, # it is to the appli-prog to # search it in the apropiate # directory. (commnly the # "ENV:Sys/" directory) # now come the decription of the file, if ANY condition below is # not reach, the WhatIs.library say it is not this filetype. # Exepte for OPNAMEPATTERN which is use for light WhatIs() (only # based on the file name) NAMEPATTERN "#?.ada" # OPT: if the filename don't match to this # pattern, it not of this FileType # it is exclusive whith OPTNAMEPATTERN # OPTNAMEPATTERN "#?.ada" # OPT: same thing than NAMEPATTERN but it # use ONLY if no DEEP scan is # available ( light WhatIs() ), in # any other scan ( for instance # DEEP scan), it is IGNORED # now come the DEEP desciption, it is the heart of reconised # process. You can specify number in decimal ( begining whith # nothing), in hex ( begining whith "$"), in binary (begining # whith "%"), or in string (begining whith '"') # All the search ( and acces) are in the first few byte of file ( # currently 484) # all this contion are optional. and is considered as TRUE if # light WhatIs COMPAREBYTE 12 $ABADCAFE # test if the file contain the byte $AB # $AD $CA $FE at offset 12 COMPAREBYTE $23 "Hello" # test if the file contain the string # "Hello" ( i.e the byte $48 $65 # $6c $6f) at offset $23 ( decimal 35) # in version 2 of WhatIs.library ( only unde KS2.x) you have a CASE # modifier, this means "A" is different of "a". SEARCHBYTE "Good" # search in the first few byte of file ( # currently 480 first byte) the string # "Good" SEARCHBYTE $DEADBEEF # search the byte $DE $AD $BE $EF (in this # order and in succetion) in the file SEARCHPATTERN "ST-??:" # search if the pattern "ST-??:" are present # in the file. # MATCHPATTERN .... ENDTYPE # this mark the end of this FileType definition ####################################################################### TYPE "Catalog" SUBTYPE "IFF" NAMEPATTERN "#?.catalog" ENDTYPE TYPE "Icn Disq" SUBTYPE "Icon" INSERTAFTER "Icon" OPTNAMEPATTERN "Disk.info" COMPAREBYTE $30 $01 ENDTYPE TYPE "Icn Rép" SUBTYPE "Icon" INSERTAFTER "Icn Disq" COMPAREBYTE $30 $02 ENDTYPE TYPE "Icn Outil" SUBTYPE "Icon" INSERTAFTER "Icn Rép" COMPAREBYTE $30 $03 ENDTYPE TYPE "Icn Proj" SUBTYPE "Icon" INSERTAFTER "Icn Outil" COMPAREBYTE $30 $04 ENDTYPE TYPE "Icn Poub" SUBTYPE "Icon" INSERTAFTER "Icn Proj" COMPAREBYTE $30 $05 ENDTYPE TYPE "PPLoadSeg" INSERTAFTER "PP40 Exe" COMPAREBYTE 0 "PPLS" ENDTYPE TYPE "PPLibHead" INSERTAFTER "PP40 Exe" COMPAREBYTE $78 $FE864CDF7FFF4E75 ENDTYPE TYPE "Impl Exe" SUBTYPE "Exe" SEARCHBYTE "aVN" # I am not sure this is a real identifier for IMPL loadseg ENDTYPE TYPE "CrM Exe" SUBTYPE "Exe" SEARCHBYTE "IRFN" ENDTYPE TYPE "CrM Lib" SUBTYPE "CrM Exe" NAMEPATTERN "#?.library#?" ENDTYPE TYPE "ImpLS" # executable imploded whith Imploder-Library root to alow crunche of amiga device/fonts/library SUBTYPE "Exe" SEARCHBYTE "explode.library" ENDTYPE TYPE "ImpLS Lib" # library imploded whith Imploder-Library root to alow crunche of amiga device/fonts/library SUBTYPE "ImpLS" NAMEPATTERN "#?.library#?" ENDTYPE TYPE "Doc" SUBTYPE "Text" INSERTAFTER "Text" ICONNAME "def_doc" NAMEPATTERN "#?.doc~(#?.INFO)" ENDTYPE TYPE "HTML" SUBTYPE "Text" INSERTAFTER "Text" NAMEPATTERN "#?.htm~(#?.INFO)" ENDTYPE TYPE "SOURCE C" SUBTYPE "Text" ICONNAME "def_Source C" NAMEPATTERN "#?.c" ENDTYPE TYPE "Src CXX" SUBTYPE "Source C" ICONNAME "def_Source CXX" NAMEPATTERN "#?.cxx" ENDTYPE TYPE "Include C" SUBTYPE "Text" ICONNAME "def_Include C" NAMEPATTERN "#?.h" ENDTYPE TYPE "Asm" SUBTYPE "Text" ICONNAME "def_Asm" NAMEPATTERN "#?.(a|s|asm)" ENDTYPE TYPE "Incld Asm" SUBTYPE "Text" ICONNAME "def_Include Asm" NAMEPATTERN "#?.i" ENDTYPE TYPE "Rexx" SUBTYPE "Text" ICONNAME "def_Rexx" OPTNAMEPATTERN "#?.rexx" SEARCHBYTE "rexx" ENDTYPE TYPE "Tex" SUBTYPE "Text" ICONNAME "def_Tex" NAMEPATTERN "#?.Tex" ENDTYPE TYPE "PS" SUBTYPE "Text" ICONNAME "def_PostScript" NAMEPATTERN "#?.ps" ENDTYPE TYPE "PDF" ICONNAME "def_PostScript" NAMEPATTERN "#?.pdf" MATCHPATTERN 0 "%PDF" ENDTYPE TYPE ".PDF" SUBTYPE "Text" ICONNAME "def_PostScript" NAMEPATTERN "#?.pdf" MATCHPATTERN 0 "%PDF" ENDTYPE TYPE "MPEGaudio" NAMEPATTERN "#?.mp#?" ENDTYPE TYPE "MIDI" OPTNAMEPATTERN "#?.mid" SEARCHBYTE "MThd" ENDTYPE TYPE "MIDI xPK" SUBTYPE "MIDI" SEARCHBYTE "XPKF" ENDTYPE TYPE "Guide" SUBTYPE "Text" ICONNAME "def_Guide" OPTNAMEPATTERN "#?.(Guide|AmigaGuide)" MATCHPATTERN 0 "@database" ENDTYPE TYPE "Install" SUBTYPE "Text" ICONNAME "def_Install" OPTNAMEPATTERN "#?Install#?" SEARCHPATTERN "$VER#?Install#?" ENDTYPE TYPE "GFA" OPTNAMEPATTERN "#?.GFA" COMPAREBYTE 2 "GFA-AMIGAB" ENDTYPE TYPE MakeFile SUBTYPE "Text" ICONNAME "def_MakeFile" NAMEPATTERN "(#?MakeFile)|(#?LmkFile)" ENDTYPE TYPE ReadMe SUBTYPE "Text" ICONNAME "def_ReadMe" NAMEPATTERN "Read#?Me" ENDTYPE TYPE UUCode SUBTYPE "Text" SEARCHBYTE "begin" ENDTYPE TYPE "PP Doc" SUBTYPE "PP Data" ICONNAME "def_PP Doc" NAMEPATTERN "#?.doc#?" ENDTYPE TYPE "PP Guide" SUBTYPE "PP Data" ICONNAME "def_Guide" NAMEPATTERN "#?.guide#?" ENDTYPE TYPE "PP ILBM" SUBTYPE "PP Data" SEARCHBYTE $62F24A ENDTYPE TYPE "SFX" #Self extracting LHA/LZH file SUBTYPE "Exe" INSERTAFTER "LHArc" ICONNAME "def_SFX" OPTNAMEPATTERN "#?.run" COMPAREBYTE 44 "SFX" ENDTYPE TYPE "LZX arc" OPTNAMEPATTERN "#?.LZX" COMPAREBYTE 0 "LZX" ENDTYPE TYPE "Tex Font" COMPAREBYTE 0 $F7593647 ENDTYPE TYPE "Tex DVI" OPTNAMEPATTERN "#?.dvi" COMPAREBYTE 0 $F7020183 ENDTYPE TYPE "DMS" OPTNAMEPATTERN "#?.dms" COMPAREBYTE 0 "DMS!" ENDTYPE TYPE "Warp" OPTNAMEPATTERN "#?.wrp" COMPAREBYTE 0 "Warp" ENDTYPE TYPE "Zoom" OPTNAMEPATTERN "#?.zoom" COMPAREBYTE 0 "ZOOM" ENDTYPE TYPE "ZIP" OPTNAMEPATTERN "#?.zip" COMPAREBYTE 0 $504B0304 ENDTYPE TYPE "Manx DMP" OPTNAMEPATTERN "#?.dmp" COMPAREBYTE 0 "djg!" ENDTYPE TYPE "Manx DBG" OPTNAMEPATTERN "#?.dbg" COMPAREBYTE 0 $35D2 ENDTYPE TYPE "PPM V1.8" OPTNAMEPATTERN "#?.PPM" COMPAREBYTE 0 $07231988 ENDTYPE TYPE "PPM V2.1" OPTNAMEPATTERN "#?.PPM" COMPAREBYTE 0 $07231988 ENDTYPE TYPE "MEd Song" OPTNAMEPATTERN "#?.med" COMPAREBYTE 0 $4d454404 # "MED" $04 ENDTYPE #built in #TYPE "MEd Mod" # OPTNAMEPATTERN "#?.mmd" # COMPAREBYTE 0 "MMD" #ENDTYPE TYPE "PP MEdMOD" SUBTYPE "PP Data" INSERTAFTER "MEd MOD" ICONNAME "def_PP MEd MOD" NAMEPATTERN "#?.mmd.pp#?" ENDTYPE TYPE "STSong" COMPAREBYTE 0 "PACK" ENDTYPE TYPE "ST Mod" OPTNAMEPATTERN "(mod.#?|#?.mod)" COMPAREBYTE $32 "ST-" COMPAREBYTE $37 ":" COMPAREBYTE $50 "ST-" COMPAREBYTE $55 ":" # SEARCHPATTERN "#?st-??:#?" ENDTYPE TYPE "PP ST Mod" SUBTYPE "PP Data" NAMEPATTERN "(#?mod.#?|#?.?mod#?|mod.#?|#?.mod#?)" ENDTYPE TYPE "PP à lire" SUBTYPE "PP Data" NAMEPATTERN "(#?readme#?|#?.?read#?me#?|read#?me#?)" ENDTYPE TYPE "PP Anim" SUBTYPE "PP Data" NAMEPATTERN "(#?anim#?|#?.?anim#?|anim#?)" ENDTYPE TYPE "Fred" OPTNAMEPATTERN "#?.Fred.#?" COMPAREBYTE $00 $4EFA00104EFA00A44EFA008E4EFA007C0F00123A ENDTYPE TYPE "TFMX Trck" OPTNAMEPATTERN "MDAT.#?" COMPAREBYTE $00 "TFMX" ENDTYPE TYPE "TFMX SMPL" OPTNAMEPATTERN "SMPL.#?" COMPAREBYTE $00 $00000000F805EFFCF3F40007DB00FDF0E804E7E0 ENDTYPE TYPE "S3M" #this are module format which came from PC OPTNAMEPATTERN "#?.s3m#?" COMPAREBYTE $2C "SCRM" ENDTYPE TYPE "JPEG" # the real name are JFIF, since JPEG are only a compression algorithms, not a file format OPTNAMEPATTERN "#?.j[pf]#?" COMPAREBYTE 0 $FFD8FFE0 #COMPAREBYTE $06 "JFIF" #if not here it si not a real JFIF file ENDTYPE TYPE "PCX" OPTNAMEPATTERN "#?.pcx#?" COMPAREBYTE 0 $0a0501 ENDTYPE TYPE "GIF" OPTNAMEPATTERN "#?.gif#?" COMPAREBYTE 0 "GIF8" COMPAREBYTE 5 "a" ENDTYPE TYPE "PNG" COMPAREBYTE 1 "PNG" ENDTYPE TYPE "BMP" OPTNAMEPATTERN "#?.bmp#?" COMPAREBYTE 0 "BM" COMPAREBYTE 6 $00000000 ENDTYPE TYPE "BMP 1Bit" SUBTYPE "BMP" COMPAREBYTE $1c $01 ENDTYPE TYPE "BMP 4Bit" SUBTYPE "BMP" COMPAREBYTE $1c $04 ENDTYPE TYPE "BMP 8Bit" SUBTYPE "BMP" COMPAREBYTE $1c $08 ENDTYPE TYPE "TARGA" OPTNAMEPATTERN "#?.tga#?" COMPAREBYTE 0 $00000A0000000000000000008002E001 ENDTYPE TYPE "TIFF" #this type must be somewhere AFTER med mod because the first byte are the same OPTNAMEPATTERN "#?.tif#?" COMPAREBYTE 0 "MM" ENDTYPE TYPE "TIFF Gray" OPTNAMEPATTERN "#?.tif#?" COMPAREBYTE 0 $49492A00 ENDTYPE TYPE "SUNRASTER" COMPAREBYTE 0 $59A66A95 ENDTYPE TYPE "Wave" OPTNAMEPATTERN "#?.wav#?" COMPAREBYTE 0 "RIFF" COMPAREBYTE 8 "WAVE" ENDTYPE TYPE "MaxiPlan" COMPAREBYTE 0 $474c424c ENDTYPE TYPE "TurboCalc" OPTNAMEPATTERN "#?.TCD" SEARCHBYTE "TURBOCALC" ENDTYPE TYPE "Mnx5.0Obj" INSERTAFTER "Object" ICONNAME "def_Mnx5.0Obj" COMPAREBYTE 0 $434a ENDTYPE TYPE "Mnx3.6Obj" INSERTAFTER "Object" ICONNAME "def_Mnx3.6Obj" COMPAREBYTE 0 $414a ENDTYPE TYPE "Mnx5.0Lib" INSERTAFTER "Object" ICONNAME "def_Mnx5.0Lib" COMPAREBYTE 0 $636a ENDTYPE TYPE "Mnx3.6Lib" INSERTAFTER "Object" ICONNAME "def_Mnx3.6Lib" COMPAREBYTE 0 $616a ENDTYPE TYPE "Imagine" SUBTYPE "IFF" INSERTAFTER "FTXT" ICONNAME "def_Imagine" COMPAREBYTE 8 "TDDD" ENDTYPE TYPE "CDAF" # Compressed Data Archive File SUBTYPE "IFF" ICONNAME "def_CDAF" COMPAREBYTE 8 "CDAF" ENDTYPE TYPE "Shrink" SUBTYPE "CDAF" ICONNAME "def_Shrink" OPTNAMEPATTERN "#?.shr" COMPAREBYTE 20 "shrinkFILE" # 20 is offset of archiver name ENDTYPE TYPE "Caligari" ICONNAME "def_Caligari" COMPAREBYTE 0 "CALB" ENDTYPE TYPE "Son HSN" SEARCHBYTE "HSN" ENDTYPE TYPE "Mod FTM" SEARCHBYTE "FTMN" ENDTYPE TYPE "Vista DEM" ICONNAME "def_Vista_DEM" OPTNAMEPATTERN "#?.DEM#?" COMPAREBYTE 0 "Vista DEM File" ENDTYPE TYPE "EPUed" COMPAREBYTE 0 $018063680561 ENDTYPE TYPE "EPU-XPK" SUBTYPE "EPUed" COMPAREBYTE $10 "xpk" ENDTYPE TYPE "EPU-NUKE" SUBTYPE "EPU-XPK" COMPAREBYTE $13 "NUKE" ENDTYPE TYPE "EPU-SQSH" SUBTYPE "EPU-XPK" COMPAREBYTE $13 "SQSH" ENDTYPE TYPE "GZip" COMPAREBYTE 0 $1F8B0800 ENDTYPE TYPE "CG.Type" OPTNAMEPATTERN "#?.Type" COMPAREBYTE 0 $004400010000002000000002000002200014FFFF ENDTYPE TYPE "CG.otag" OPTNAMEPATTERN "#?.otag" COMPAREBYTE 0 $80001001 ENDTYPE TYPE "CrM Data" COMPAREBYTE 0 "CrM2" ENDTYPE TYPE "CrM Doc" SUBTYPE "CrM Data" NAMEPATTERN "#?.doc#?" ENDTYPE TYPE "CrM àLire" SUBTYPE "CrM Data" NAMEPATTERN "(#?readme#?|#?.?read#?me#?|read#?me#?)" ENDTYPE TYPE "CrM Anim" SUBTYPE "CrM Data" NAMEPATTERN "(#?anim#?|#?.?anim#?|anim#?)" ENDTYPE TYPE "CrLib Exe" SUBTYPE "Exe" SEARCHBYTE "CrM.library" ENDTYPE TYPE "CrLib Lib" SUBTYPE "CrLib Exe" NAMEPATTERN "#?.library#?" ENDTYPE TYPE "PureIMPLS" SUBTYPE "Pure Exe" SEARCHBYTE "explode.library" ENDTYPE TYPE "PurIMPLib" SUBTYPE "PureIMPLS" NAMEPATTERN "#?.library#?" ENDTYPE TYPE "Pure Lib" SUBTYPE "Pure Exe" NAMEPATTERN "#?.library#?" ENDTYPE TYPE "Library" SUBTYPE "Exe" INSERTAFTER "ImpLS Lib" NAMEPATTERN "#?.library#?" ENDTYPE TYPE "RNC" COMPAREBYTE 0 "RNC" ENDTYPE TYPE "xPK" OPTNAMEPATTERN "#?.xPK????" COMPAREBYTE 0 "XPKF" ENDTYPE TYPE "ILBM xPK" SUBTYPE "xPK" SEARCHPATTERN "ILBM" ENDTYPE TYPE "xPK Mod" SUBTYPE "xPK" NAMEPATTERN "(mod.#?|#?.(%|?)mod(%|.pp|.xPK)|#?.mmd(%|.pp|.xPK))" ENDTYPE TYPE "XPK Guide" SUBTYPE "XPK" NAMEPATTERN "#?.guide#?" ENDTYPE TYPE "XPK SQSH" SUBTYPE "xPK" OPTNAMEPATTERN "#?.xPKSQSH" COMPAREBYTE 8 "SQSH" ENDTYPE TYPE "xPK NUKE" SUBTYPE "xPK" OPTNAMEPATTERN "#?.xPKNUKE" COMPAREBYTE 8 "NUKE" ENDTYPE TYPE "xPK BLZW" SUBTYPE "xPK" OPTNAMEPATTERN "#?.xPKBLZW" COMPAREBYTE 8 "BLZW" ENDTYPE TYPE "xPK CBR0" SUBTYPE "xPK" OPTNAMEPATTERN "#?.xPKCBR0" COMPAREBYTE 8 "CBR0" ENDTYPE TYPE "xPK CRM2" SUBTYPE "xPK" OPTNAMEPATTERN "#?.xPKCRM2" COMPAREBYTE 8 "CRM2" ENDTYPE TYPE "xPK CRMS" SUBTYPE "xPK" OPTNAMEPATTERN "#?.xPKCRMS" COMPAREBYTE 8 "CRMS" ENDTYPE TYPE "xPK DLTA" SUBTYPE "xPK" OPTNAMEPATTERN "#?.xPKDLTA" COMPAREBYTE 8 "DLTA" ENDTYPE TYPE "xPK FAST" SUBTYPE "xPK" OPTNAMEPATTERN "#?.xPKFAST" COMPAREBYTE 8 "FAST" ENDTYPE TYPE "xPK FEAL" SUBTYPE "xPK" OPTNAMEPATTERN "#?.xPKFEAL" COMPAREBYTE 8 "FEAL" ENDTYPE TYPE "xPK HFMN" SUBTYPE "xPK" OPTNAMEPATTERN "#?.xPKHFMN" COMPAREBYTE 8 "HFMN" ENDTYPE TYPE "xPK HUFF" SUBTYPE "xPK" OPTNAMEPATTERN "#?.xPKHUFF" COMPAREBYTE 8 "HUFF" ENDTYPE TYPE "xPK IDEA" SUBTYPE "xPK" OPTNAMEPATTERN "#?.xPKIDEA" COMPAREBYTE 8 "IDEA" ENDTYPE TYPE "xPK IMPL" SUBTYPE "xPK" OPTNAMEPATTERN "#?.xPKIMPL" COMPAREBYTE 8 "IMPL" ENDTYPE TYPE "xPK LHLB" SUBTYPE "xPK" OPTNAMEPATTERN "#?.xPKLHLB" COMPAREBYTE 8 "LHLB" ENDTYPE TYPE "xPK MASH" SUBTYPE "xPK" OPTNAMEPATTERN "#?.xPKMASH" COMPAREBYTE 8 "MASH" ENDTYPE TYPE "xPK NONE" SUBTYPE "xPK" OPTNAMEPATTERN "#?.xPKNONE" COMPAREBYTE 8 "NONE" ENDTYPE TYPE "xPK RAKE" SUBTYPE "xPK" OPTNAMEPATTERN "#?.xPKRAKE" COMPAREBYTE 8 "RAKE" ENDTYPE TYPE "xPK RDCN" SUBTYPE "xPK" OPTNAMEPATTERN "#?.xPKRDCN" COMPAREBYTE 8 "RDCN" ENDTYPE TYPE "xPK RLEN" SUBTYPE "xPK" OPTNAMEPATTERN "#?.xPKRLEN" COMPAREBYTE 8 "RLEN" ENDTYPE TYPE "xPK SHRI" SUBTYPE "xPK" OPTNAMEPATTERN "#?.xPKSHRI" COMPAREBYTE 8 "SHRI" ENDTYPE TYPE "xPK SMPL" SUBTYPE "xPK" OPTNAMEPATTERN "#?.xPKSMPL" COMPAREBYTE 8 "SMPL" ENDTYPE TYPE "BSD Exe" COMPAREBYTE 1 $87010B00 ENDTYPE # all 'completly light FileType' you must put it at the end, or it can be accepted before a DEEP one (wich was probably better) TYPE "ABasic" NAMEPATTERN "#?.bas" ENDTYPE TYPE ".Mod" # light-only version of the mod type, because it is hard to recognise a module NAMEPATTERN "(mod.#?|#?.(%|?)mod(%|.pp|.xPK)|#?.mmd(%|.pp|.xPK))" ENDTYPE TYPE "Tar" NAMEPATTERN "#?.tar" ENDTYPE TYPE "BAD IFF" SEARCHBYTE "FORM" ENDTYPE