refactor: merge File/FileReceive, add optional metadata transfer with -M flag

- Remove FileReceive struct; use File everywhere with nullable FileMetadata*
- Remove struct stat from File; file size lives in Data->size (data_create_reserve)
- Add FileMetadata struct (mode, uid, gid, mtime) sent conditionally over wire
- Add -M / --preserve flag to client
- Restore permissions, ownership, timestamps on disk write
- Wire format uses per-file present flag for metadata (zero overhead when off)
This commit is contained in:
2026-07-05 20:21:46 +02:00
parent e7c23c135b
commit 4a1e666365
17 changed files with 285 additions and 165 deletions
+1
View File
@@ -9,6 +9,7 @@ typedef struct {
} Data;
Data *data_create_empty(size_t data_size);
Data *data_create_reserve(size_t size);
Data *data_create(void *data, size_t data_size);
void data_destroy(Data *data);
Data *data_compress(Data *data_to_compress, int compression_level);