/* ****************************************************************************** Project: OWA EPANET Version: 2.2 Module: util/filemanager.h Description: Provides a simple interface for managing files Authors: see AUTHORS Copyright: see AUTHORS License: see LICENSE Last Updated: 04/01/2019 ****************************************************************************** */ #ifndef FILEMANAGER_H_ #define FILEMANAGER_H_ #include #include #include "cstr_helper.h" // F_OFF Must be a 8 byte / 64 bit integer for large file support #ifdef _MSC_VER // Windows (32-bit and 64-bit) #define F_OFF __int64 #else // Other platforms #define F_OFF off_t #endif #define FILE_MAXNAME 259 #if defined(__cplusplus) extern "C" { #endif // Forward declariation of file_handle_t typedef struct file_s file_handle_t; file_handle_t *create_file_manager(); void delete_file_manager(file_handle_t *file_handle); int get_filename(file_handle_t *file_handle, char **filename); int open_file(file_handle_t *file_handle, const char *filename, const char *file_mode); int seek_file(file_handle_t *file_handle, F_OFF offset, int whence); F_OFF tell_file(file_handle_t *file_handle); // Functions for working with binary files size_t read_file(void *ptr, size_t size, size_t nmemb, file_handle_t *file_handle); size_t write_file(const void *ptr, size_t size, size_t count, file_handle_t *file_handle); // Functions for working with text files int printf_file(file_handle_t *file_handle, const char *format, ... ); int gets_file(char *str, int num, file_handle_t *file_handle); int close_file(file_handle_t *file_handle); int remove_file(file_handle_t *file_handle); bool is_valid(file_handle_t *file_handle); #if defined(__cplusplus) } #endif #endif /* FILEMANAGER_H_ */