AmendHub

Download

nulleric

/

Fix-a-Fork

/

file_ext.c

 

(View History)

jcs   This format is easier to maintain and should be faster. Latest amendment: 34 on 2024-04-05

1 /*
2 Copyright Eric Helgeson, jcs 2023-2024.
3 */
4 // Simple file ext checks as fallback.
5 static const struct {
6 char *extension;
7 OSType type;
8 OSType creator;
9 } exttypes[] = {
10 { "1st", 'TEXT', 'ttxt' }, // Text Readme
11 { "669", '6669', 'SNPL' }, // 669 - MOD
12 { "8med", 'STrk', 'SCPL' }, // Amiga - OctaMed
13 { "8svx", '8SVX', 'SCPL' }, // Amiga - 8-bit
14 { "aif", 'AIFF', 'SCPL' }, // AIFF - Sound
15 { "aifc", 'AIFC', 'SCPL' }, // AIFF - Sound
16 { "aiff", 'AIFF', 'SCPL' }, // AIFF - Sound
17 { "al", 'ALAW', 'SCPL' }, // ALAW - Sound
18 { "ani", 'ANIi', 'GKON' }, // Animated - NeoChrome
19 { "apd", 'TEXT', 'ALD3' }, // Aldus - Printer
20 { "arc", 'mArc', 'SITx' }, // PC - ARChive
21 { "arj", 'BINA', 'DArj' }, // ARJ - Archive
22 { "arr", 'ARR ', 'GKON' }, // Amber - ARR
23 { "art", 'ART ', 'GKON' }, // First - Publisher
24 { "ascii", 'TEXT', 'ttxt' }, // ASCII - Text
25 { "asc", 'TEXT', 'ttxt' }, // ASCII - Text
26 { "asf", 'ASF_', 'Ms01' }, // Netshow - Player
27 { "asm", 'TEXT', 'ttxt' }, // Assembly - Source
28 { "asx", 'ASX_', 'Ms01' }, // Netshow - Player
29 { "a", 'TEXT', 'ttxt' }, // Assembly - Source
30 { "au", 'ULAW', 'TVOD' }, // Sun - Sound
31 { "avi", 'VfW ', 'TVOD' }, // AVI - Movie
32 { "bar", 'BARF', 'S691' }, // Unix - BAR
33 { "bas", 'TEXT', 'ttxt' }, // BASIC - Source
34 { "bat", 'TEXT', 'ttxt' }, // MS-DOS - Batch
35 { "bga", 'BMPp', 'ogle' }, // OS/2 - Bitmap
36 { "bib", 'TEXT', 'ttxt' }, // BibTex - Bibliography
37 { "binary", 'BINA', 'hDmp' }, // Untyped - Binary
38 { "bin", 'BINA', 'SITx' }, // MacBinary - StuffIt
39 { "bld", 'BLD ', 'GKON' }, // BLD - GraphicConverter
40 { "bmp", 'BMPp', 'ogle' }, // Windows - Bitmap
41 { "boo", 'TEXT', 'ttxt' }, // BOO - encoded
42 { "bst", 'TEXT', 'ttxt' }, // BibTex - Style
43 { "bum", '.bMp', 'GKON' }, // QuickTime - Importer(QuickDraw)
44 { "bw", 'SGI ', 'GKON' }, // SGI - Image
45 { "bz", 'Bzp2', 'SITx' }, // BZip2 - StuffIt
46 { "cel", 'CEL ', 'GKON' }, // KISS - CEL
47 { "cgm", 'CGMm', 'GKON' }, // Computer - Graphics
48 { "class", 'Clss', 'CWIE' }, // Java - Class
49 { "clp", 'CLPp', 'GKON' }, // Windows - Clipboard
50 { "cmd", 'TEXT', 'ttxt' }, // OS/2 - Batch
51 { "com", 'PCFA', 'SWIN' }, // MS-DOS - Executable
52 { "cpp", 'TEXT', 'CWIE' }, // C++ - Source
53 { "cp", 'TEXT', 'CWIE' }, // C++ - Source
54 { "cpt", 'PACT', 'SITx' }, // Compact - Pro
55 { "csv", 'TEXT', 'XCEL' }, // Comma - Separated
56 { "ct", '..CT', 'GKON' }, // Scitex-CT - GraphicConverter
57 { "c", 'TEXT', 'KAHL' }, // C - Source
58 { "cur", 'CUR ', 'GKON' }, // Windows - Cursor
59 { "cut", 'Halo', 'GKON' }, // Dr - Halo
60 { "cvs", 'drw2', 'DAD2' }, // Canvas - Drawing
61 { "cwj", 'CWSS', 'cwkj' }, // ClarisWorks - Document
62 { "dat", 'TCLl', 'GKON' }, // TCL - image
63 { "dbf", 'COMP', 'FOX+' }, // DBase - Document
64 { "dcx", 'DCXx', 'GKON' }, // Some - PCX
65 { "dif", 'TEXT', 'XCEL' }, // Data - Interchange
66 { "diz", 'TEXT', 'R*Ch' }, // BBS - Descriptive
67 { "dl", 'DL ', 'AnVw' }, // DL - Animation
68 { "dll", 'PCFL', 'SWIN' }, // Windows - DLL
69 { "doc", 'WDBN', 'MSWD' }, // Word - Document
70 { "dot", 'sDBN', 'MSWD' }, // Word - for
71 { "dsk", 'dimg', 'dCpy' }, // Apple - DiskCopy
72 { "dvi", 'ODVI', 'xdvi' }, // TeX - DVI
73 { "dwt", 'TEXT', 'DmWr' }, // Dreamweaver - Template
74 { "dxf", 'TEXT', 'SWVL' }, // AutoCAD - 3D
75 { "eps", 'EPSF', 'vgrd' }, // Postscript - LaserWriter
76 { "epsf", 'EPSF', 'vgrd' }, // Postscript - LaserWriter
77 { "etx", 'TEXT', 'ezVu' }, // SEText - Easy
78 { "evy", 'EVYD', 'ENVY' }, // Envoy - Document
79 { "exe", 'PCFA', 'SWIN' }, // MS-DOS - Executable
80 { "faq", 'TEXT', 'ttxt' }, // ASCII - Text
81 { "fit", 'FITS', 'GKON' }, // Flexible - Image
82 { "fla", 'SPA ', 'MFL2' }, // Flash - source
83 { "flc", 'FLI ', 'TVOD' }, // FLIC - Animation
84 { "fli", 'FLI ', 'TVOD' }, // FLI - Animation
85 { "fm", 'FMPR', 'FMPR' }, // FileMaker - Pro
86 { "for", 'TEXT', 'MPS ' }, // Fortran - Source
87 { "fts", 'FITS', 'GKON' }, // Flexible - Image
88 { "gem", 'GEM-', 'GKON' }, // GEM - Metafile
89 { "gif", 'GIFf', 'ogle' }, // GIF - Picture
90 { "gl", 'GL ', 'AnVw' }, // GL - Animation
91 { "grp", 'GRPp', 'GKON' }, // GRP - Image
92 { "gz", 'SIT!', 'SITx' }, // Gnu - ZIP
93 { "hcom", 'FSSD', 'SCPL' }, // SoundEdit - Sound
94 { "hpgl", 'HPGL', 'GKON' }, // HP - GL/2
95 { "hpp", 'TEXT', 'CWIE' }, // C - Include
96 { "hp", 'TEXT', 'CWIE' }, // C - Include
97 { "hqx", 'TEXT', 'SITx' }, // BinHex - StuffIt
98 { "hr", 'TR80', 'GKON' }, // TSR-80 - HR
99 { "h", 'TEXT', 'KAHL' }, // C - Include
100 { "html", 'TEXT', 'MOSS' }, // HyperText - Netscape
101 { "htm", 'TEXT', 'MOSS' }, // HyperText - Netscape
102 { "i3", 'TEXT', 'R*ch' }, // Modula - 3
103 { "ic1", 'IMAG', 'GKON' }, // Atari - Image
104 { "ic2", 'IMAG', 'GKON' }, // Atari - Image
105 { "ic3", 'IMAG', 'GKON' }, // Atari - Image
106 { "icn", 'ICO ', 'GKON' }, // Windows - Icon
107 { "ico", 'ICO ', 'GKON' }, // Windows - Icon
108 { "ief", 'IEF ', 'GKON' }, // IEF - image
109 { "iff", 'ILBM', 'GKON' }, // Amiga - IFF
110 { "ilbm", 'ILBM', 'GKON' }, // Amiga - ILBM
111 { "image", 'dImg', 'ddsk' }, // Apple - DiskCopy
112 { "img", 'dImg', 'ddsk' }, // Apple - DiskCopy
113 { "ini", 'TEXT', 'ttxt' }, // Windows - INI
114 { "iso", 'rodh', 'ddsk' }, // Apple - ISO
115 { "iss", 'ISS ', 'GKON' }, // ISS - GraphicConverter
116 { "java", 'TEXT', 'CWIE' }, // Java - Source
117 { "jfif", 'JPEG', 'ogle' }, // JFIF - Image
118 { "jif", 'JIFf', 'GKON' }, // JIF99a - GraphicConverter
119 { "jpeg", 'JPEG', 'ogle' }, // JPEG - Picture
120 { "jpe", 'JPEG', 'ogle' }, // JPEG - Picture
121 { "jpg", 'JPEG', 'ogle' }, // JPEG - Picture
122 { "latex", 'TEXT', 'OTEX' }, // Latex - OzTex
123 { "lbm", 'ILBM', 'GKON' }, // Amiga - IFF
124 { "lha", 'LHA ', 'SITx' }, // LHArc - Archive
125 { "lwf", 'lwfF', 'GKON' }, // LuraWave(LWF) - GraphicConverter
126 { "lzh", 'LHA ', 'SITx' }, // LHArc - Archive
127 { "m1a", 'MPEG', 'TVOD' }, // MPEG-1 - audiostream
128 { "m1s", 'MPEG', 'TVOD' }, // MPEG-1 - systemstream
129 { "m1v", 'M1V ', 'TVOD' }, // MPEG-1 - IPB
130 { "m2", 'TEXT', 'R*ch' }, // Modula - 2
131 { "m2v", 'MPG2', 'MPG2' }, // MPEG-2 - IPB
132 { "m3", 'TEXT', 'R*ch' }, // Modula - 3
133 { "mac", 'PICT', 'ogle' }, // PICT - Picture
134 { "mak", 'TEXT', 'R*ch' }, // Makefile - BBEdit
135 { "mbm", 'MBM ', 'GKON' }, // PSION - 5(MBM)
136 { "mcw", 'WDBN', 'MSWD' }, // Mac - Word
137 { "med", 'STrk', 'SCPL' }, // Amiga - MED
138 { "me", 'TEXT', 'ttxt' }, // Text - Readme
139 { "mf", 'TEXT', '*MF*' }, // Metafont - Metafont
140 { "midi", 'Midi', 'TVOD' }, // MIDI - Music
141 { "mid", 'Midi', 'TVOD' }, // MIDI - Music
142 { "mif", 'TEXT', 'Fram' }, // FrameMaker - MIF
143 { "mime", 'TEXT', 'SITx' }, // MIME - Message
144 { "ml", 'TEXT', 'R*ch' }, // ML - Source
145 { "mod", 'STrk', 'SCPL' }, // MOD - Music
146 { "mol", 'TEXT', 'RSML' }, // MDL - Molfile
147 { "moov", 'MooV', 'TVOD' }, // QuickTime - Movie
148 { "mov", 'MooV', 'TVOD' }, // QuickTime - Movie
149 { "mp2", 'MPEG', 'TVOD' }, // MPEG-1 - audiostream
150 { "mp3", 'MPG3', 'TVOD' }, // MPEG-3 - audiostream
151 { "mpa", 'MPEG', 'TVOD' }, // MPEG-1 - audiostream
152 { "mpeg", 'MPEG', 'TVOD' }, // MPEG - Movie
153 { "mpe", 'MPEG', 'TVOD' }, // MPEG - Movie
154 { "mpg", 'MPEG', 'TVOD' }, // MPEG - Movie
155 { "msp", 'MSPp', 'GKON' }, // Microsoft - Paint
156 { "mtm", 'MTM ', 'SNPL' }, // MultiMOD - Music
157 { "mwii", 'MW2D', 'MWII' }, // MacWrite - Document
158 { "mw", 'MW2D', 'MWII' }, // MacWrite - Document
159 { "neo", 'NeoC', 'GKON' }, // Atari - NeoChrome
160 { "nfo", 'TEXT', 'ttxt' }, // Info - Text
161 { "ngg", 'NGGC', 'GKON' }, // Mobile - Phone(Nokia)Format
162 { "nol", 'NOL ', 'GKON' }, // Mobile - Phone(Nokia)Format
163 { "nst", 'STrk', 'SCPL' }, // MOD - Music
164 { "obj", 'PCFL', 'SWIN' }, // Object - (DOS/Windows)
165 { "oda", 'ODIF', 'ODA ' }, // ODA - Document
166 { "okt", 'OKTA', 'SCPL' }, // Oktalyser - MOD
167 { "out", 'BINA', 'hDmp' }, // Output - File
168 { "ovl", 'PCFL', 'SWIN' }, // Overlay - (DOS/Windows)
169 { "pac", 'STAD', 'GKON' }, // Atari - STAD
170 { "pal", '8BCT', '8BIM' }, // Color - Table
171 { "pas", 'TEXT', 'CWIE' }, // Pascal - Source
172 { "pbm", 'PPGM', 'GKON' }, // Portable - Bitmap
173 { "pc1", 'Dega', 'GKON' }, // Atari - Degas
174 { "pc2", 'Dega', 'GKON' }, // Atari - Degas
175 { "pc3", 'Dega', 'GKON' }, // Atari - Degas
176 { "pcs", 'PICS', 'GKON' }, // Animated - PICTs
177 { "pct", 'PICT', 'ogle' }, // PICT - Picture
178 { "pcx", 'PCXx', 'GKON' }, // PC - PaintBrush
179 { "pdb", 'TEXT', 'RSML' }, // Brookhaven - PDB
180 { "pdf", 'PDF ', 'CARO' }, // Portable - Document
181 { "pdx", 'TEXT', 'ALD5' }, // Printer - Description
182 { "pf", 'CSIT', 'SITx' }, // Private - File
183 { "pgc", 'PGCF', 'GKON' }, // PGC/PGF - Atari
184 { "pgm", 'PPGM', 'GKON' }, // Portable - Graymap
185 { "pi1", 'Dega', 'GKON' }, // Atari - Degas
186 { "pi2", 'Dega', 'GKON' }, // Atari - Degas
187 { "pi3", 'Dega', 'GKON' }, // Atari - Degas
188 { "pic", 'PICT', 'ogle' }, // PICT - Picture
189 { "pics", 'PICS', 'GKON' }, // PICS-PICT - Sequence
190 { "pict", 'PICT', 'ogle' }, // PICT - Picture
191 { "pit", 'PIT ', 'SITx' }, // PackIt - Archive
192 { "pkg", 'HBSF', 'SITx' }, // AppleLink - Package
193 { "pl", 'TEXT', 'McPL' }, // Perl - Source
194 { "plt", 'HPGL', 'GKON' }, // HP - GL/2
195 { "pm3", 'ALB3', 'ALD3' }, // PageMaker - 3
196 { "pm4", 'ALB4', 'ALD4' }, // PageMaker - 4
197 { "pm5", 'ALB5', 'ALD5' }, // PageMaker - 5
198 { "pm", 'PMpm', 'GKON' }, // Bitmap - from
199 { "png", 'PNG ', 'ogle' }, // Portable - Network
200 { "pntg", 'PNTG', 'ogle' }, // Macintosh - Painting
201 { "ppd", 'TEXT', 'ALD5' }, // Printer - Description
202 { "ppm", 'PPGM', 'GKON' }, // Portable - Pixmap
203 { "prn", 'TEXT', 'R*ch' }, // Printer - Output
204 { "psd", '8BPS', '8BIM' }, // PhotoShop - Document
205 { "ps", 'TEXT', 'vgrd' }, // PostScript - LaserWriter
206 { "pt4", 'ALT4', 'ALD4' }, // PageMaker - 4
207 { "pt5", 'ALT5', 'ALD5' }, // PageMaker - 5
208 { "p", 'TEXT', 'CWIE' }, // Pascal - Source
209 { "pxr", 'PXR ', '8BIM' }, // Pixar - Image
210 { "qdv", 'QDVf', 'GKON' }, // QDV - image
211 { "qt", 'MooV', 'TVOD' }, // QuickTime - Movie
212 { "qxd", 'XDOC', 'XPR3' }, // QuarkXpress - Document
213 { "qxt", 'XTMP', 'XPR3' }, // QuarkXpress - Template
214 { "raw", 'rodh', 'ddsk' }, // Apple - raw
215 { "readme", 'TEXT', 'ttxt' }, // Text - Readme
216 { "rgba", 'SGI ', 'GKON' }, // SGI - Image
217 { "rgb", 'SGI ', 'GKON' }, // SGI - Image
218 { "rib", 'TEXT', 'RINI' }, // Renderman - 3D
219 { "rif", 'RIFF', 'GKON' }, // RIFF - Graphic
220 { "rle", 'RLE ', 'GKON' }, // RLE - image
221 { "rme", 'TEXT', 'ttxt' }, // Text - Readme
222 { "rpl", 'FRL!', 'REP!' }, // Replica - Document
223 { "rsc", 'rsrc', 'RSED' }, // Resource - File
224 { "rsrc", 'rsrc', 'RSED' }, // Resource - File
225 { "rtf", 'TEXT', 'MSWD' }, // Rich - Text
226 { "rtx", 'TEXT', 'R*ch' }, // Rich - Text
227 { "s3m", 'S3M ', 'SNPL' }, // ScreamTracker - 3
228 { "scc", 'MSX ', 'GKON' }, // MSX - pitcure
229 { "scg", 'RIX3', 'GKON' }, // ColoRIX - GraphicConverter
230 { "sci", 'RIX3', 'GKON' }, // ColoRIX - GraphicConverter
231 { "scp", 'RIX3', 'GKON' }, // ColoRIX - GraphicConverter
232 { "scr", 'RIX3', 'GKON' }, // ColoRIX - GraphicConverter
233 { "scu", 'RIX3', 'GKON' }, // ColoRIX - GraphicConverter
234 { "sea", 'APPL', '????' }, // Self-Extracting - Archive
235 { "sf", 'IRCM', 'SDHK' }, // IRCAM - Sound
236 { "sgi", '.SGI', 'ogle' }, // SGI - Image
237 { "shar", 'TEXT', 'UnSh' }, // Unix - Shell
238 { "sha", 'TEXT', 'UnSh' }, // Unix - Shell
239 { "shp", 'SHPp', 'GKON' }, // Printmaster - Icon
240 { "sithqx", 'TEXT', 'SITx' }, // BinHexed - StuffIt
241 { "sit", 'SIT!', 'SITx' }, // StuffIt - 1.5.1
242 { "six", 'SIXE', 'GKON' }, // SIXEL - image
243 { "slk", 'TEXT', 'XCEL' }, // SYLK - Spreadsheet
244 { "snd", 'BINA', 'SCPL' }, // Sound - of
245 { "spc", 'Spec', 'GKON' }, // Atari - Spectrum
246 { "sr", 'SUNn', 'GKON' }, // Sun - Raster
247 { "sty", 'TEXT', '*TEX' }, // TeX - Style
248 { "sun", 'SUNn', 'GKON' }, // Sun - Raster
249 { "sup", 'SCRN', 'GKON' }, // StartupScreen - GraphicConverter
250 { "svx", '8SVX', 'SCPL' }, // Amiga - IFF
251 { "swf", 'SWFL', 'SWF2' }, // Flash - Macromedia
252 { "syk", 'TEXT', 'XCEL' }, // SYLK - Spreadsheet
253 { "sylk", 'TEXT', 'XCEL' }, // SYLK - Spreadsheet
254 { "targa", 'TPIC', 'GKON' }, // Truevision - Image
255 { "tar", 'TARF', 'SITx' }, // Unix - Tape
256 { "taz", 'ZIVU', 'SITx' }, // Compressed - Tape
257 { "texinfo", 'TEXT', 'OTEX' }, // TeX - Document
258 { "texi", 'TEXT', 'OTEX' }, // TeX - Document
259 { "tex", 'TEXT', 'OTEX' }, // TeX - Document
260 { "text", 'TEXT', 'ttxt' }, // ASCII - Text
261 { "tga", 'TPIC', 'GKON' }, // Truevision - Image
262 { "tgz", 'Gzip', 'SITx' }, // Gnu - ZIPed
263 { "tiff", 'TIFF', 'ogle' }, // TIFF - Picture
264 { "tif", 'TIFF', 'ogle' }, // TIFF - Picture
265 { "tny", 'TINY', 'GKON' }, // Atari - TINY
266 { "toast", 'CDr3', 'GImg' }, // CD - Image
267 { "tsv", 'TEXT', 'XCEL' }, // Tab - Separated
268 { "tx8", 'TEXT', 'ttxt' }, // 8-bit - ASCII
269 { "txt", 'TEXT', 'ttxt' }, // ASCII - Text
270 { "ul", 'ULAW', 'TVOD' }, // Mu-Law - Sound
271 { "url", 'AURL', 'Arch' }, // URL - Bookmark
272 { "uue", 'TEXT', 'SITx' }, // UUEncode - StuffIt
273 { "uu", 'TEXT', 'SITx' }, // UUEncode - StuffIt
274 { "vff", 'VFFf', 'GKON' }, // DESR - VFF
275 { "vga", 'BMPp', 'ogle' }, // OS/2 - Bitmap
276 { "voc", 'VOC ', 'SCPL' }, // VOC - Sound
277 { "vpb", 'VPB ', 'GKON' }, // VPB - QUANTEL
278 { "w51", '.WP5', 'WPC2' }, // WordPerfect - PC
279 { "wav", 'WAVE', 'TVOD' }, // Windows - WAV
280 { "wbmp", 'WBMP', 'GKON' }, // WBMP - GraphicConverter
281 { "wk1", 'XLBN', 'XCEL' }, // Lotus - Spreadsheet
282 { "wks", 'XLBN', 'XCEL' }, // Lotus - Spreadsheet
283 { "wmf", 'WMF ', 'GKON' }, // Windows - Metafile
284 { "wp4", '.WP4', 'WPC2' }, // WordPerfect - PC
285 { "wp5", '.WP5', 'WPC2' }, // WordPerfect - PC
286 { "wp6", '.WP6', 'WPC2' }, // WordPerfect - PC
287 { "wpg", 'WPGf', 'GKON' }, // WordPerfect - Graphic
288 { "wpm", 'WPD1', 'WPC2' }, // WordPerfect - Mac
289 { "wp", '.WP5', 'WPC2' }, // WordPerfect - PC
290 { "wri", 'WDBN', 'MSWD' }, // MS - Write/Windows
291 { "wve", 'BINA', 'SCPL' }, // PSION - sound
292 { "x10", 'XWDd', 'GKON' }, // X-Windows - Dump
293 { "x11", 'XWDd', 'GKON' }, // X-Windows - Dump
294 { "xbm", 'XBM ', 'GKON' }, // X-Windows - Bitmap
295 { "x-face", 'TEXT', 'GKON' }, // X-Face - GraphicConverter
296 { "xlc", 'XLC ', 'XCEL' }, // Excel - Chart
297 { "xlm", 'XLM ', 'XCEL' }, // Excel - Macro
298 { "xls", 'XLS ', 'XCEL' }, // Excel - Spreadsheet
299 { "xlw", 'XLW ', 'XCEL' }, // Excel - Workspace
300 { "xl", 'XLS ', 'XCEL' }, // Excel - Spreadsheet
301 { "xm", 'XM ', 'SNPL' }, // FastTracker - MOD
302 { "xpm", 'XPM ', 'GKON' }, // X-Windows - Pixmap
303 { "xwd", 'XWDd', 'GKON' }, // X-Windows - Dump
304 { "zip", 'ZIP ', 'SITx' }, // PC - ZIP
305 { "zoo", 'Zoo ', 'Booz' }, // Zoo - Archive
306 { "Z", 'ZIVU', 'SITx' }, // Unix - Compress
307 };
308
309 Boolean CheckFileExt(const char *ext, OSType *type, OSType *creator)
310 {
311 short n, j;
312
313 for (n = 0; n < (sizeof(exttypes) / sizeof(exttypes[0])); n++) {
314 for (j = 0; ; j++) {
315 if (exttypes[n].extension[j] != ext[j])
316 break;
317 if (exttypes[n].extension[j] == '\0' && ext[j] == '\0') {
318 *type = exttypes[n].type;
319 *creator = exttypes[n].creator;
320 return true;
321 }
322 }
323 }
324 return false;
325 }