1
2#------------------------------------------------------------------------------
3# $File: os2,v 1.14 2022/03/21 21:25:50 christos Exp $
4# os2:  file(1) magic for OS/2 files
5#
6
7# Provided 1998/08/22 by
8# David Mediavilla <davidme.news@REMOVEIFNOTSPAMusa.net>
91         search/100          InternetShortcut    MS Windows 95 Internet shortcut text
10!:mime    application/x-mswinurl
11!:ext     url
12>17       search/100          URL=                          (URL=<
13>>&0      string              x                             \b%s>)
14
15# OS/2 URL objects
16# Provided 1998/08/22 by
17# David Mediavilla <davidme.news@REMOVEIFNOTSPAMusa.net>
18#0        string    http:                         OS/2 URL object text
19#>5       string    >\                            (WWW) <http:%s>
20#0        string    mailto:                       OS/2 URL object text
21#>7       string    >\                            (email) <%s>
22#0        string    news:                         OS/2 URL object text
23#>5       string    >\                            (Usenet) <%s>
24#0        string    ftp:                          OS/2 URL object text
25#>4       string    >\                            (FTP) <ftp:%s>
26#0        string    file:                         OS/2 URL object text
27#>5       string    >\                            (Local file) <%s>
28
29# >>>>> OS/2 INF/HLP <<<<<  (source: Daniel Dissett ddissett@netcom.com)
30# URL:              http://fileformats.archiveteam.org/wiki/INF/HLP_(OS/2)
31# Reference:        http://www.edm2.com/0308/inf.html
32# Carl Hauser (chauser.parc@xerox.com) and
33# Marcus Groeber (marcusg@ph-cip.uni-koeln.de)
34# list the following header format in inf02a.doc:
35#
36#  int16 ID;           // ID magic word (5348h = "HS")
37#  int8  unknown1;     // unknown purpose, could be third letter of ID
38#  int8  flags;        // probably a flag word...
39#                      //  bit 0: set if INF style file
40#                      //  bit 4: set if HLP style file
41#                      // patching this byte allows reading HLP files
42#                      // using the VIEW command, while help files
43#                      // seem to work with INF settings here as well.
44#  int16 hdrsize;      // total size of header
45#  int16 unknown2;     // unknown purpose
46#
470   string  HSP\x01\x9b\x00 OS/2 INF
48!:mime    application/x-os2-inf
49!:ext     inf
50>107 string >0                      (%s)
510   string  HSP\x10\x9b\x00     OS/2 HLP
52!:mime    application/x-os2-hlp
53!:ext     hlp
54>107 string >0                      (%s)
55
56# From:             Joerg Jenderek
57# URL:              http://fileformats.archiveteam.org/wiki/MSG_(OS/2)
58# Reference:        https://github.com/OS2World/UTIL-SYSTEM-MKMSGF/blob/master/mkmsgf.h
59# Note:             created by MKMSGF.EXE. Text source can be recreated by E_MSGF
60#                   example like OS001H.MSG
610         string                        \xffMKMSGF\0        OS/2 help message
62!:mime    application/x-os2-msg
63!:ext     msg
64# identifier[3] like: DOS NET REX SYS ...
65>8        string                                  x         '%.3s'
66# msgnumber: number of messages
67>11       uleshort                      x         \b, %u messages
68# firstmsgnumber; number of the first message like: some times 0 often 1 169 1000 3502
69>13       uleshort                                >1        \b, 1st number %u
70# offset16bit; 1~Index table has 16-bit offsets (files<64k) 0~Index table has 32-bit offsets
71>15       ubyte                                   =0        \b, 32-bit
72#>15      ubyte                                   =1        \b, 16-bit
73# version; file version: 2~new 0~old
74>16       uleshort                                !2        \b, version %u
75# indextaboffset; offset of index table: 1F~after header 0~no index table for version 0?
76>18       uleshort                      >0
77>>18                uleshort            !0x1f     \b, at %#x index
78#         32-bit offset
79>>15                ubyte                         =0
80# offset with message table
81>>>(18.s)           ulelong             x         \b, at %#x
82# 1st message
83# http://www.os2museum.com/files/docs/os210ptk/os2-1.0-ptk-tools-1988.pdf
84# message type: E~Error H~Help I~Information P~Prompt W~Warning ?
85>>>>(&-4.l)                   ubyte               x         %c-type
86>>>>>&0                       string              x         %s
87#         16-bit offset
88>>15                ubyte                         =1
89# msgnum; message number
90>>>(18.s)           uleshort  x         \b, number %u
91# msgindex; offset of message from begin of file
92>>>(18.s+2)                   uleshort  x         at %#x
93# message type E H I P W ?
94>>>>(&-2.s)                   ubyte               x         %c-type
95# skip newline carriage return
96>>>>>&0                       ubeshort  =0x0D0a
97>>>>>>&0            string              x         %s
98>>>>>&0                       ubeshort  !0x0D0a
99>>>>>>&-2           string              x         %s
100#                   for version 0 index table apparently at offset 1F
101>16       uleshort                                0
102>>15                ubyte                         1
103# 1st message 16-bit
104>>>0x1F                       uleshort  x         \b, at %#x
105# message type: E~Error H~Help I~Information P~Prompt W~Warning ?
106>>>>(0x1F.s)                  ubyte               x         %c-type
107>>>>>&0                       string              x         %s
108# 2nd message 16-bit
109>>>0x21                       uleshort  x         \b, at %#x
110>>>>(0x21.s)                  ubyte               x         %c-type
111>>>>>&0                       string              x         %s
112# 3rd message 16-bit
113>>>0x23                       uleshort  x         \b, at %#x
114>>>>(0x23.s)                  ubyte               x         %c-type
115>>>>>&0                       string              x         %s
116#                   version 0 32-bit
117>>15                ubyte                         0
118# 1st message 32-bit
119>>>0x1f                       ulelong             x         \b, at %#x
120>>>>(0x1F.l)                  ubyte               x         %c-type
121>>>>>&0                       string              x         %s
122# 2nd message 32-bit
123>>>0x23                       ulelong             x         \b, at %#x
124>>>>(0x23.l)                  ubyte               x         %c-type
125>>>>>&0                       string              x         %s
126# 3rd message 32-bit
127>>>0x27                       ulelong             x         \b, AT %#x
128>>>>(0x27.l)                  ubyte               x          %c-type
129>>>>>&0                       string              x         %s
130# countryinfo; offset of country info block: 0 for version 0
131>20       uleshort                      !0        \b, at %#x countryinfo
132# nextcoutryinfo
133>>22                uleshort            >0        \b, at %#x next
134# reserved[5]; Must be 0
135>>25      ulelong             !0                  \b, RESERVED %#x
136>>(20.s) use                                      os2-msg-info
137#         display country info block of MKMSGF message file
1380         name                os2-msg-info
139# bytesperchar; bytes per char: 1~SBCS 2~DBCS
140>0        ubyte               >1                  \b, %u bytes/char
141# reserved; Not known
142>1        uleshort  !0                  \b, reserved %#x
143# langfamilyID; language family ID like: 0~? 1~Arabic ... 7~German ... 9~English  ... 34~Slovene
144>3        uleshort  >0                  \b, language %u
145# langversionID; like: 7_1~German 7_2~Swiss German 12_1~French 12_3~Canadian French
146>>5       uleshort  x                   \b_%u
147# langfamilyID too high. This should not happen
148>3        uleshort  >34                 (invalid language)
149# codepagesnumber; number of codepages like: 1 2 ... 16
150>7        uleshort  x                   \b, %u code page
151# plural s
152>7        uleshort  >1                  \bs
153# too many number of codepages. This should not happen
154>7        uleshort  >16                 (Too many)
155# codepages[16]; codepages list like 437 850 ...
156>7        uleshort  <17
157# 1st code page
158>>9       uleshort  >0                  %u
159# possible 2nd code page number
160>>>7      uleshort  >1
161>>>>11    uleshort  x                   %u
162# filename[260]; name of file like: dbaseos2.msg dde4c01e.msg os2ldr.mgr xdfh.msg ...
163>41       string              x                   \b, %s
164
165# OS/2 INI (this is a guess)
1660  string   \xff\xff\xff\xff\x14\0\0\0  OS/2 INI
167!:mime    application/x-os2-ini
168!:ext     ini
169
170# From:             Joerg Jenderek
171# URL:              http://warpin.netlabs.org/
172# Reference:    http://mark0.net/download/triddefs_xml.7z/defs/a/ark-wpi.trid.xml
173# Note:             called by TrID "WarpIN Installer"
174# probably magic at the beginning
1750         ubelong             =0x770402BE         WarpIN Installer
176#>4       ubelong             =0x03000000
177#!:mime   application/octet-stream
178!:mime    application/x-os2-wpi
179!:ext     wpi
180# creator program name like: "reserved" or "WIC x.y.z"
181>0x106    string              x                   \b, created by %s
182# name like: "reserved" or "OS/2 Netlabs"
183>0x146    string              x                   \b, '%s'
184# name like: "N/A" "http://warpin.netlabs.org"
185>0x186    string              x                   \b, URL %s
186
187