README: Reorder, add sections and extract stuff into FILEFORMAT file.
[metastore.git] / FILEFORMAT
blobfcd3d412933c5ca64df499e4646f412588ab6521
1 Version 0
2 ---------
4 Following sections explain internals of metastore file (.metadata).
7 ### Data types
9     CSTRING     = NUL-terminated binary string
10     BSTRING(N)  = binary string of length N
11     INT(N)      = N byte integer in big endian byte order
14 ### File layout
16     HEADER
17     N * ENTRY
20 ### HEADER format
22     BSTRING(10) - Magic header - "MeTaSt00r3"
23     BSTRING(8)  - Version - "\0\0\0\0\0\0\0\0" (currently)
26 ### ENTRY format
28     CSTRING     - Path  (absolute or relative)
29     CSTRING     - Owner (owner name, not uid)
30     CSTRING     - Group (group name, not gid)
32     INT(8)      - Mtime (seconds)
33     INT(8)      - Mtime (nanoseconds)
34     INT(2)      - Mode  (st_mode from struct stat st_mode AND 0177777,
35                          i.e. unix permissions and type of file)
37     INT(4)      - num_xattrs
38     FOR (i = 0; i < num_xattrs; i++) {
39         CSTRING            - xattr name
40         INT(4)             - xattrlen
41         BSTRING(xattrlen)  - xattr value
42     }