#ifndef FILE_H #define FILE_H #include #include #include #include #include #include #include #include #include #include #include #ifdef _WIN32 #include #ifndef PATH_MAX #define PATH_MAX MAX_PATH #endif #else #include #ifndef PATH_MAX #define PATH_MAX 4096 #endif #endif #include "hash.h" #include "list.h" #include "action_list.h" #include "common.h" typedef struct { char** content; uint64_t lines; } File; typedef struct { mode_t mode; char* name; char* hash; } FileInfo; typedef List FileInfoBuffer; typedef struct { uint32_t insertions; uint32_t deletions; } Changes; File* new_empty_file(); File* new_file(const char*); File* from_string(char*); File* slice_file(File*, uint64_t, uint64_t); File* copy_file(File* original); int insert_line(File*, char*, size_t); int delete_line(File*, size_t); int snapshot_file(char*, char*, size_t, char*); void free_file(File*); FileInfoBuffer* file_info_buffer_new(); int file_info_buffer_push(FileInfoBuffer*, FileInfo); void file_info_buffer_free(FileInfoBuffer*); void file_info_buffer_sort(FileInfoBuffer*); FileInfo* file_info_buffer_search(FileInfoBuffer*, const char*); #endif // FILE_H