aboutsummaryrefslogtreecommitdiffstats
path: root/src/writer.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2018-05-10 20:14:24 +0200
committerDavid Robillard <d@drobilla.net>2019-04-13 19:15:32 +0200
commit61cc66d1f56dfe1cfa8da20f95d7152ca414c903 (patch)
tree6386c68bc28a613d2ce869091d0a17f9c4fb5b26 /src/writer.c
parent0a375ebfb29b08d55824d9c18ea3812b8f6b9010 (diff)
downloadserd-61cc66d1f56dfe1cfa8da20f95d7152ca414c903.tar.gz
serd-61cc66d1f56dfe1cfa8da20f95d7152ca414c903.tar.bz2
serd-61cc66d1f56dfe1cfa8da20f95d7152ca414c903.zip
Move error handling to world
Diffstat (limited to 'src/writer.c')
-rw-r--r--src/writer.c27
1 files changed, 6 insertions, 21 deletions
diff --git a/src/writer.c b/src/writer.c
index 04ced4f5..ed8ab0c3 100644
--- a/src/writer.c
+++ b/src/writer.c
@@ -133,22 +133,6 @@ supports_abbrev(const SerdWriter* writer)
return writer->syntax == SERD_TURTLE || writer->syntax == SERD_TRIG;
}
-static void
-w_err(SerdWriter* writer, SerdStatus st, const char* fmt, ...)
-{
- /* TODO: This results in errors with no file information, which is not
- helpful when re-serializing a file (particularly for "undefined
- namespace prefix" errors. The statement sink API needs to be changed to
- add a Cursor parameter so the source can notify the writer of the
- statement origin for better error reporting. */
-
- va_list args;
- va_start(args, fmt);
- const SerdError e = { st, NULL, 0, 0, fmt, &args };
- serd_error(writer->world, &e);
- va_end(args);
-}
-
static inline WriteContext*
anon_stack_top(SerdWriter* writer)
{
@@ -191,7 +175,8 @@ write_character(SerdWriter* writer, const uint8_t* utf8, size_t* size)
const uint32_t c = parse_utf8_char(utf8, size);
switch (*size) {
case 0:
- w_err(writer, SERD_ERR_BAD_ARG, "invalid UTF-8: %X\n", utf8[0]);
+ serd_world_errorf(
+ writer->world, SERD_ERR_BAD_ARG, "invalid UTF-8: %X\n", utf8[0]);
return sink(replacement_char, sizeof(replacement_char), writer);
case 1:
snprintf(escape, sizeof(escape), "\\u%04X", utf8[0]);
@@ -580,7 +565,8 @@ write_curie(SerdWriter* const writer,
case SERD_NTRIPLES:
case SERD_NQUADS:
if ((st = serd_env_expand(writer->env, node, &prefix, &suffix))) {
- w_err(writer, st, "undefined namespace prefix `%s'\n", node_str);
+ serd_world_errorf(writer->world, st,
+ "undefined namespace prefix `%s'\n", node_str);
return false;
}
write_sep(writer, SEP_URI_BEGIN);
@@ -841,9 +827,8 @@ serd_writer_end_anon(SerdWriter* writer,
return SERD_SUCCESS;
}
if (serd_stack_is_empty(&writer->anon_stack) || writer->indent == 0) {
- w_err(writer, SERD_ERR_UNKNOWN,
- "unexpected end of anonymous node\n");
- return SERD_ERR_UNKNOWN;
+ return serd_world_errorf(writer->world, SERD_ERR_UNKNOWN,
+ "unexpected end of anonymous node\n");
}
--writer->indent;
write_sep(writer, SEP_ANON_END);