diff options
author | David Robillard <d@drobilla.net> | 2020-08-14 15:51:12 +0200 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2020-08-14 19:07:52 +0200 |
commit | 3f5ba5908117cf3351702c144a2509f4bf48d75b (patch) | |
tree | 3b0434d1ee5a6749ea1d4b5fecc7492b0272bbd0 /src/serdi.c | |
parent | 45cdfed515dbbcb85c6d54076b6103788d097400 (diff) | |
download | serd-3f5ba5908117cf3351702c144a2509f4bf48d75b.tar.gz serd-3f5ba5908117cf3351702c144a2509f4bf48d75b.tar.bz2 serd-3f5ba5908117cf3351702c144a2509f4bf48d75b.zip |
Clean up and separate internal headers
Diffstat (limited to 'src/serdi.c')
-rw-r--r-- | src/serdi.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/serdi.c b/src/serdi.c index 31e4ff91..604a54fa 100644 --- a/src/serdi.c +++ b/src/serdi.c @@ -14,8 +14,10 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#define _POSIX_C_SOURCE 200809L /* for fileno and posix_fadvise */ + #include "serd_config.h" -#include "serd_internal.h" +#include "string_utils.h" #include "serd/serd.h" @@ -24,6 +26,11 @@ #include <io.h> #endif +#if defined(HAVE_POSIX_FADVISE) && defined(HAVE_FILENO) +#include <fcntl.h> +#endif + +#include <errno.h> #include <stdbool.h> #include <stdint.h> #include <stdio.h> @@ -123,6 +130,22 @@ quiet_error_sink(void* handle, const SerdError* e) return SERD_SUCCESS; } +static inline FILE* +serd_fopen(const char* path, const char* mode) +{ + FILE* fd = fopen(path, mode); + if (!fd) { + SERDI_ERRORF("failed to open file %s (%s)\n", path, strerror(errno)); + return NULL; + } + +#if defined(HAVE_POSIX_FADVISE) && defined(HAVE_FILENO) + posix_fadvise(fileno(fd), 0, 0, POSIX_FADV_SEQUENTIAL|POSIX_FADV_NOREUSE); +#endif + + return fd; +} + int main(int argc, char** argv) { |