aboutsummaryrefslogtreecommitdiffstats
path: root/src/reader.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2021-07-08 22:50:02 -0400
committerDavid Robillard <d@drobilla.net>2022-01-13 23:04:25 -0500
commit51f1de0235cfb091fcc481fa97d48326295d2c58 (patch)
treeeb4114352fce89faeb239de9644d4f92f6e1db86 /src/reader.c
parent86178f4cac2259cd2c26ef27488c3ea36a947c7d (diff)
downloadserd-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.c17
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;
}