/* To (re)compile: flatc -r -b file_spec.fbs && mv file_spec_generated.rs ../src/escp/file_spec.rs flatc is very sensitive to the version of flatbuffers used (See Readme.md) You may need to manually compile flatc from: https://github.com/google/flatbuffers */ /* How we handle placing files on the remote system: By default all files specified end up at the root directory of target system: for instance in escp foo/bar/blah /tmp/baz/blob host:target on host, the resultant tree would be target/{blah, blob} The exception is for directories, where we retain the directory structure; for instance if you specify escp recursive_dir host: and recursive_dir contains 1/foo and 2/bar. The resultant host would contain 1/foo and 2/bar; Symlinks are a contentious issue; Time permitting we will do the right thing, but right now they are probably just ignored. Eventually, we will add a second 'links: [Link]' structure, which will be populated with symlinks assuming the user specified the correct flags. */ table ESCP_file_list { root: string; // Ideally root path for files files: [File]; complete: bool; fc_stat: bool; } table File { fino: uint64; // EScp mapping of blocks to files name: string; // Gets combined with root above. Ideally basename mode: uint32; uid: uint32; gid: uint32; sz: int64; atim_sec: int64; atim_nano: int64; mtim_sec: int64; mtim_nano: int64; crc: uint32; complete: uint32; } root_type ESCP_file_list;