diff options
author | David Robillard <d@drobilla.net> | 2021-07-08 22:50:02 -0400 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2022-01-13 23:04:25 -0500 |
commit | 51f1de0235cfb091fcc481fa97d48326295d2c58 (patch) | |
tree | eb4114352fce89faeb239de9644d4f92f6e1db86 /src/reader.c | |
parent | 86178f4cac2259cd2c26ef27488c3ea36a947c7d (diff) | |
download | serd-51f1de0235cfb091fcc481fa97d48326295d2c58.tar.gz serd-51f1de0235cfb091fcc481fa97d48326295d2c58.tar.bz2 serd-51f1de0235cfb091fcc481fa97d48326295d2c58.zip |
Handle read errors more precisely
Diffstat (limited to 'src/reader.c')
-rw-r--r-- | src/reader.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/reader.c b/src/reader.c index cfea1b87..661d48ae 100644 --- a/src/reader.c +++ b/src/reader.c @@ -62,6 +62,21 @@ genid_size(const SerdReader* const reader) return reader->bprefix_len + 1 + 10 + 1; // + "b" + UINT32_MAX + \0 } +bool +tolerate_status(const SerdReader* const reader, const SerdStatus status) +{ + if (status == SERD_SUCCESS || status == SERD_FAILURE) { + return true; + } + + if (status == SERD_ERR_INTERNAL || status == SERD_ERR_OVERFLOW || + status == SERD_ERR_BAD_WRITE || status == SERD_ERR_NO_DATA) { + return false; + } + + return !reader->strict; +} + SerdNode* blank_id(SerdReader* const reader) { @@ -300,7 +315,7 @@ serd_reader_prepare(SerdReader* const reader) } else if (st == SERD_FAILURE) { reader->source.eof = true; } else { - r_err(reader, st, "read error: %s\n", strerror(errno)); + r_err(reader, st, "error preparing read: %s\n", strerror(errno)); } return st; } |