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
+3 -1
View File
@@ -4,14 +4,16 @@
#include "chunk.h"
#include "queue.h"
#include <dirent.h>
#include <stdbool.h>
typedef struct {
Queue *directories;
DIR *current_dir;
char *current_path;
bool use_metadata;
} DirectoryScanner;
DirectoryScanner *directory_scanner_create(char *root_directory);
DirectoryScanner *directory_scanner_create(char *root_directory, bool use_metadata);
Chunk *directory_scanner_next(DirectoryScanner *scanner);
void directory_scanner_destroy(DirectoryScanner *scanner);