#ifndef FILE_H #define FILE_H #include "config.h" #include "data.h" #include #include typedef struct { mode_t mode; uid_t uid; gid_t gid; time_t mtime_sec; long mtime_nsec; } FileMetadata; typedef struct { char *path; Data *data; FileMetadata *metadata; } File; File *file_create(const char *path); void file_destroy(void *item); bool file_load_data(File *file); File *file_receive(Config *config, int file_descriptor); bool file_send_single_calls(File *file, int file_descriptor, bool use_metadata, int compression_level); bool file_send_single_calls_no_path(File *file, int file_descriptor, bool use_metadata, int compression_level); bool file_send_sendfile(File *file, int file_descriptor, bool use_metadata); size_t file_content_to_buffer(File *file); FileMetadata *file_metadata_create(struct stat *stats); void file_metadata_destroy(void *metadata); bool to_disk(const char *path, const void *data, unsigned long long data_size); #endif