Message header: Data Bytes Meaning FOB1 4 version 4 checksum 4 flattened size 4 'what' 1 flags Data field: Data Bytes Meaning 1 flags 4 type // Mini data (all data less than 256 bytes total) 1 item count (*if* there is more than one) 1 data length // Maxi data (all data more than 255 bytes total) 4 item count (*if* there is more than one) 4 data length 1 name length X name // Single item 4 item size (*if* this is a variable sized item) Y item data - NULL padded to 8-byte boundary // Multiple items 4 item size (*if* this is a variable sized item) Y item data - NULL padded to 8-byte boundary //------------------------------------------------------------------------------ // An example //------------------------------------------------------------------------------ // PrintToStream() Data Bytes Meaning //BMessage: what = (0x0, or 0) FOB1 4 version 0x90010001 4 checksum 0x00000192 4 flattened size (402 bytes) 0x0 4 'what' (none specified) 0x01 1 flags // entry ATTRIBUTE_MENU, type='LONG', c=5, size= 4, 0x07 1 flags LONG 4 type 0x05 1 item count 0x14 1 data length 0x0e 1 name length ATTRIBUTE_ 14 name (ATTRIBUTE_MENU) // data[0]: 0x8 (8, '') 0x8 4 data[0] // data[1]: 0x8 (8, '') 0x8 4 data[1] // data[2]: 0x6 (6, '') 0x6 4 data[2] // data[3]: 0x8 (8, '') 0x8 4 data[3] // data[4]: 0x6 (6, '') 0x6 4 data[4] // entry CRITERIA_MENU, type='LONG', c=5, size= 4, 0x07 1 flags LONG 4 type 0x05 1 item count 0x14 1 data length 0x0d 1 name length CRITERIA_ 13 name (CRITERIA_MENU) // data[0]: 0x0 (0, '') 0x0 4 data[0] // data[1]: 0x0 (0, '') 0x0 4 data[1] // data[2]: 0x0 (0, '') 0x0 4 data[2] // data[3]: 0x0 (0, '') 0x0 4 data[3] // data[4]: 0x0 (0, '') 0x0 4 data[4] // entry VALUE, type='CSTR', c=5, 0x03 1 flags CSTR 4 type 0x5 1 item count 0x90 1 data length 0x5 1 name length VALUE 5 name (VALUE) // size=18, data[0]: "listar@freelists." 0x12 4 item size listar@fre 18 data[0] 2 padding to 8-byte boundary // size=27, data[1]: "freelists-users@freelists." 0x1b 4 item size freelists@ 27 data[1] 1 padding to 8-byte boundary // size=27, data[2]: "freelists-users@freelists." 0x1b 4 item size freelists@ 27 data[2] 1 padding to 8-byte boundary // size=19, data[3]: "ecartis@freelists." 0x13 4 item size ecartis@fr 19 data[3] 1 padding to 8-byte boundary // size=26, data[4]: "freelists-news@freelists." 0x1a 4 item size freelists@ 26 data[4] 2 padding to 8-byte boundary // entry AND_OR_MENU, type='LONG', c=5, size= 4, 0x07 1 flags LONG 4 type 0x5 1 item count 0x14 1 data length 0x0b 1 name length AND_OR_MEN 11 name (AND_OR_MENU) // data[0]: 0x1 (1, '') 0x1 4 data[0] // data[1]: 0x1 (1, '') 0x1 4 data[1] // data[2]: 0x1 (1, '') 0x1 4 data[2] // data[3]: 0x1 (1, '') 0x1 4 data[3] // data[4]: 0x0 (0, '') 0x0 4 data[4] // entry COUNT, type='LONG', c=1, size= 4, data[0]: 0x5 (5, '') 0x0f 1 flags LONG 4 type 0x4 1 data length 0x5 1 name length COUNT 5 name (COUNT) 0x5 4 data // entry ACTION_MENU, type='LONG', c=1, size= 4, data[0]: 0x2 (2, '') 0x0f 1 flags LONG 4 type 0x4 1 data length 0x0b 1 name length ACTION_MEN 11 name (ACTION_MENU) 0x2 4 data // entry ACTION_VALUE, type='CSTR', c=1, size=42, data[0]: "/boot/home/mail/Erik's Mail/freelists.org" 0x0b 1 flags CSTR 4 type 0x30 1 data length 0x0c 1 name length ACTION_VAL 12 name (ACTION_VALUE) 0x2a 4 item size /boot/home 42 data 2 padding to 8-byte boundary //------------------------------------------------------------------------------ // An old example Data Bytes Meaning 1BOF(ascii) 4 version ?? 4 ?? 0x76 4 flattened size DPUQ 4 what(B_QUERY_UPDATE) ?? 1 ?? 0F 1 flags (including fixed chunk size) GNOL 4 type 04 1 chunk size 06 1 name length opcode 6 name 1 4 data(B_ENTRY_CREATED) 0F 1 flags (including fixed chunk size) GNOL 4 type 04 1 chunk size 06 1 name length device 6 name 4 4 data 0F 1 flags (including fixed chunk size) GNLL 4 type 08 1 chunk size 09 1 name length directory 9 name 524992 8 data 0F 1 flags (including fixed chunk size) GNLL 4 type 08 1 chunk size 04 1 name length node 4 name 524295 8 data 0B 1 flags (including variable chunk size) RTSC 4 type 08 1 chunk size 04 1 name length name 4 name 08 1 chunk size? 8 padded string?