30 |
uint16_t crc; |
uint16_t crc; |
31 |
uint16_t crc_len; |
uint16_t crc_len; |
32 |
uint32_t location; |
uint32_t location; |
33 |
} __attribute__((__packed__)) tag; |
} PACKED tag; |
34 |
union { |
union { |
35 |
struct anchor_descriptor { |
struct anchor_descriptor { |
36 |
uint32_t length; |
uint32_t length; |
37 |
uint32_t location; |
uint32_t location; |
38 |
} __attribute__((__packed__)) anchor; |
} PACKED anchor; |
39 |
struct primary_descriptor { |
struct primary_descriptor { |
40 |
uint32_t seq_num; |
uint32_t seq_num; |
41 |
uint32_t desc_num; |
uint32_t desc_num; |
42 |
struct dstring { |
struct dstring { |
43 |
uint8_t clen; |
uint8_t clen; |
44 |
uint8_t c[31]; |
uint8_t c[31]; |
45 |
} __attribute__((__packed__)) ident; |
} PACKED ident; |
46 |
} __attribute__((__packed__)) primary; |
} PACKED primary; |
47 |
} __attribute__((__packed__)) type; |
} PACKED type; |
48 |
} __attribute__((__packed__)); |
} PACKED; |
49 |
|
|
50 |
struct volume_structure_descriptor { |
struct volume_structure_descriptor { |
51 |
uint8_t type; |
uint8_t type; |
52 |
uint8_t id[5]; |
uint8_t id[5]; |
53 |
uint8_t version; |
uint8_t version; |
54 |
} __attribute__((__packed__)); |
} PACKED; |
55 |
|
|
56 |
#define UDF_VSD_OFFSET 0x8000 |
#define UDF_VSD_OFFSET 0x8000 |
57 |
|
|
58 |
int volume_id_probe_udf(struct volume_id *id, uint64_t off) |
int FAST_FUNC volume_id_probe_udf(struct volume_id *id /*,uint64_t off*/) |
59 |
{ |
{ |
60 |
|
#define off ((uint64_t)0) |
61 |
struct volume_descriptor *vd; |
struct volume_descriptor *vd; |
62 |
struct volume_structure_descriptor *vsd; |
struct volume_structure_descriptor *vsd; |
63 |
unsigned bs; |
unsigned bs; |