1 /* Subpart directory header version 1 support */
2 /* SPDX-License-Identifier: GPL-2.0-only */
6 #include "cse_serger.h"
9 uint32_t signature
; /* SUBPART_SIGNATURE */
11 uint8_t hdr_version
; /* Header version = 1 */
12 uint8_t entry_version
; /* Entry version = 1 */
18 static void subpart_hdr_print(const subpart_hdr_ptr ptr
)
20 const struct subpart_hdr
*hdr
= ptr
;
22 printf("%-25s %.4s\n", "Signature", (const char *)&hdr
->signature
);
23 printf("%-25s %-25d\n", "Count", hdr
->count
);
24 printf("%-25s %-25d\n", "Header Version", hdr
->hdr_version
);
25 printf("%-25s %-25d\n", "Entry Version", hdr
->entry_version
);
26 printf("%-25s 0x%-23x\n", "Header Length", hdr
->length
);
27 printf("%-25s 0x%-23x\n", "Checksum", hdr
->checksum
);
28 printf("%-25s ", "Name");
29 for (size_t i
= 0; i
< sizeof(hdr
->name
); i
++)
30 printf("%c", hdr
->name
[i
]);
34 static subpart_hdr_ptr
subpart_hdr_read(struct buffer
*buff
)
36 struct subpart_hdr
*hdr
= malloc(sizeof(*hdr
));
41 READ_MEMBER(buff
, hdr
->signature
);
42 READ_MEMBER(buff
, hdr
->count
);
43 READ_MEMBER(buff
, hdr
->hdr_version
);
44 READ_MEMBER(buff
, hdr
->entry_version
);
45 READ_MEMBER(buff
, hdr
->length
);
46 READ_MEMBER(buff
, hdr
->checksum
);
47 READ_MEMBER(buff
, hdr
->name
);
52 static size_t subpart_get_count(const subpart_hdr_ptr ptr
)
54 const struct subpart_hdr
*hdr
= ptr
;
59 static void subpart_hdr_free(subpart_hdr_ptr ptr
)
64 const struct subpart_hdr_ops subpart_hdr_1_ops
= {
65 .read
= subpart_hdr_read
,
66 .print
= subpart_hdr_print
,
67 .get_entry_count
= subpart_get_count
,
68 .free
= subpart_hdr_free
,