Expand description
Note record parsing.
A note is the unit of user-visible data inside an NSF database -
emails, calendar entries, contacts, design notes, the ACL, etc. all
live as notes distinguished by note_class.
Note header layout per libnsfdb/nsfdb_note.h (100 bytes):
offset width field
0 2 signature (0x0004)
2 4 size
6 4 rrv_identifier
10 8 file_identifier (TIMEDATE-shaped opaque)
18 8 note_identifier (TIMEDATE-shaped opaque - half of UNID)
26 4 sequence_number
30 8 sequence_time (TIMEDATE)
38 2 status_flags
40 2 note_class
42 8 modification_time (TIMEDATE)
50 2 number_of_note_items
52 2 unknown1
54 2 number_of_responses
56 4 non_summary_data_identifier
60 4 non_summary_data_size
64 8 access_time (TIMEDATE)
72 8 creation_time (TIMEDATE)
80 4 parent_note_identifier
84 2 unknown3
86 4 folder_reference_count
90 4 unknown4
94 4 folder_note_identifier
98 2 unknown5Note class catalogue (bit flags; a note can carry multiple class bits but in practice each note is one class):
NOTE_CLASS_DOCUMENT 0x0001 // user-visible documents (mail, etc)
NOTE_CLASS_INFO 0x0002 // database info note
NOTE_CLASS_FORM 0x0004 // form design
NOTE_CLASS_VIEW 0x0008 // view design
NOTE_CLASS_ICON 0x0010 // database icon
NOTE_CLASS_DESIGN 0x0020 // design collection
NOTE_CLASS_ACL 0x0040 // access control list
NOTE_CLASS_HELP_INDEX 0x0080
NOTE_CLASS_HELP 0x0100
NOTE_CLASS_FILTER 0x0200 // agent / mail rule
NOTE_CLASS_FIELD 0x0400 // shared field
NOTE_CLASS_REPLFORMULA 0x0800
NOTE_CLASS_PRIVATE 0x1000Modules§
- class
- Note class flag values. A note’s
note_classis typically one of these; multi-bit values are uncommon in practice.
Structs§
- Note
Header - Parsed note header. Self-contained snapshot - the reader does not retain a reference into bucket bytes.
Constants§
- NOTE_
HEADER_ BYTES - Note header size in bytes.
- NOTE_
SIGNATURE - Magic two bytes at offset 0 of every note header.