...
1 package magic
2
3 import (
4 "bytes"
5 "encoding/binary"
6 )
7
8
9
10 func Shp(raw []byte, limit uint32) bool {
11 if len(raw) < 112 {
12 return false
13 }
14
15 if !(binary.BigEndian.Uint32(raw[0:4]) == 9994 &&
16 binary.BigEndian.Uint32(raw[4:8]) == 0 &&
17 binary.BigEndian.Uint32(raw[8:12]) == 0 &&
18 binary.BigEndian.Uint32(raw[12:16]) == 0 &&
19 binary.BigEndian.Uint32(raw[16:20]) == 0 &&
20 binary.BigEndian.Uint32(raw[20:24]) == 0 &&
21 binary.LittleEndian.Uint32(raw[28:32]) == 1000) {
22 return false
23 }
24
25 shapeTypes := []int{
26 0,
27 1,
28 3,
29 5,
30 8,
31 11,
32 13,
33 15,
34 18,
35 21,
36 23,
37 25,
38 28,
39 31,
40 }
41
42 for _, st := range shapeTypes {
43 if st == int(binary.LittleEndian.Uint32(raw[108:112])) {
44 return true
45 }
46 }
47
48 return false
49 }
50
51
52
53 func Shx(raw []byte, limit uint32) bool {
54 return bytes.HasPrefix(raw, []byte{0x00, 0x00, 0x27, 0x0A})
55 }
56
View as plain text