deno.land / x / sheetjs@v0.18.3 / packages / otorp / src / macho.ts

نووسراو ببینە
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*! otorp (C) 2013-present SheetJS -- http://sheetjs.com */
import { u8_to_dataview } from "../../../modules/src/util";
interface MachOEntry { type: number; subtype: number; offset: number; size: number; align?: number; data: Uint8Array;}var parse_fat = (buf: Uint8Array): MachOEntry[] => { var dv = u8_to_dataview(buf); if(dv.getUint32(0, false) !== 0xCAFEBABE) throw new Error("Unsupported file"); var nfat_arch = dv.getUint32(4, false); var out: MachOEntry[] = []; for(var i = 0; i < nfat_arch; ++i) { var start = i * 20 + 8;
var cputype = dv.getUint32(start, false); var cpusubtype = dv.getUint32(start+4, false); var offset = dv.getUint32(start+8, false); var size = dv.getUint32(start+12, false); var align = dv.getUint32(start+16, false);
out.push({ type: cputype, subtype: cpusubtype, offset, size, align, data: buf.slice(offset, offset + size) }); } return out;};var parse_macho = (buf: Uint8Array): MachOEntry[] => { var dv = u8_to_dataview(buf); var magic = dv.getUint32(0, false); switch(magic) { // fat binary (x86_64 / aarch64) case 0xCAFEBABE: return parse_fat(buf); // x86_64 case 0xCFFAEDFE: return [{ type: dv.getUint32(4, false), subtype: dv.getUint32(8, false), offset: 0, size: buf.length, data: buf }]; } throw new Error("Unsupported file");};export { MachOEntry, parse_macho };
sheetjs

Version Info

Tagged at
2 years ago