#ifndef FILE_UTILS_H #define FILE_UTILS_H #include #include #include #include #include #include #include "libpostal_config.h" #ifdef HAVE_DIRENT_H #include #define NAMLEN(dirent) strlen((dirent)->d_name) #else #define dirent direct #define NAMLEN(dirent) ((dirent)->d_namlen) #ifdef HAVE_SYS_NDIR_H #include #endif #ifdef HAVE_SYS_DIR_H #include #endif #ifdef HAVE_NDIR_H #include #endif #endif #ifndef BUFSIZ #define BUFSIZ 4096 #endif #ifdef _WIN32 #define PATH_SEPARATOR "\\" #else #define PATH_SEPARATOR "/" #endif #define PATH_SEPARATOR_LEN strlen(PATH_SEPARATOR) #define TAB_SEPARATOR "\t" #define TAB_SEPARATOR_LEN strlen(TAB_SEPARATOR) #define COMMA_SEPARATOR "," #define COMMA_SEPARATOR_LEN strlen(COMMA_SEPARATOR) char *file_getline(FILE * f); bool is_relative_path(struct dirent *ent); uint64_t file_deserialize_uint64(unsigned char *buf); bool file_read_uint64(FILE *file, uint64_t *value); bool file_write_uint64(FILE *file, uint64_t value); bool file_read_uint64_array(FILE *file, uint64_t *value, size_t n); bool file_read_float(FILE *file, float *value); bool file_write_float(FILE *file, float value); bool file_read_float_array(FILE *file, float *value, size_t n); bool file_read_double(FILE *file, double *value); bool file_write_double(FILE *file, double value); bool file_read_double_array(FILE *file, double *value, size_t n); uint32_t file_deserialize_uint32(unsigned char *buf); bool file_read_uint32(FILE *file, uint32_t *value); bool file_write_uint32(FILE *file, uint32_t value); bool file_read_uint32_array(FILE *file, uint32_t *value, size_t n); uint16_t file_deserialize_uint16(unsigned char *buf); bool file_read_uint16(FILE *file, uint16_t *value); bool file_write_uint16(FILE *file, uint16_t value); bool file_read_uint8(FILE *file, uint8_t *value); bool file_write_uint8(FILE *file, uint8_t value); bool file_read_chars(FILE *file, char *buf, size_t len); bool file_write_chars(FILE *file, const char *buf, size_t len); #endif