aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-09-08 23:34:22 +0200
committerJay Berkenbilt <ejb@ql.org>2022-09-08 23:36:51 +0200
commit66f1fd2ad9f2a4e3172bd07f6d71bb1321b0dce0 (patch)
treeddd736fe66d7831d725028e8b45baa03c190477e
parentb0f054e600bd07f540ac0a081dd8b5a8cc561617 (diff)
downloadqpdf-66f1fd2ad9f2a4e3172bd07f6d71bb1321b0dce0.tar.zst
Switch user-supplied functions in C API to return int
-rw-r--r--examples/qpdfjob-c-save-attachment.c4
-rw-r--r--include/qpdf/qpdflogger-c.h3
-rw-r--r--libqpdf/qpdflogger-c.cc7
-rw-r--r--libtests/logger_c.c4
4 files changed, 7 insertions, 11 deletions
diff --git a/examples/qpdfjob-c-save-attachment.c b/examples/qpdfjob-c-save-attachment.c
index 6f67e25b..39d1f69a 100644
--- a/examples/qpdfjob-c-save-attachment.c
+++ b/examples/qpdfjob-c-save-attachment.c
@@ -12,11 +12,11 @@
// something with QPDFJob. See qpdfjob-c-save-attachment.c for an
// implementation that uses the C API.
-static void
+static int
save_to_file(char const* data, size_t len, void* udata)
{
FILE* f = (FILE*)udata;
- fwrite(data, 1, len, f);
+ return fwrite(data, 1, len, f) != len;
}
static FILE*
diff --git a/include/qpdf/qpdflogger-c.h b/include/qpdf/qpdflogger-c.h
index 10ab5bb0..6bf456e7 100644
--- a/include/qpdf/qpdflogger-c.h
+++ b/include/qpdf/qpdflogger-c.h
@@ -59,7 +59,8 @@ extern "C" {
qpdf_log_dest_custom = 4,
};
- typedef void (*qpdf_log_fn_t)(char const* data, size_t len, void* udata);
+ /* Function should return 0 on success. */
+ typedef int (*qpdf_log_fn_t)(char const* data, size_t len, void* udata);
QPDF_DLL
void qpdflogger_set_info(
diff --git a/libqpdf/qpdflogger-c.cc b/libqpdf/qpdflogger-c.cc
index 4640c83b..290b2667 100644
--- a/libqpdf/qpdflogger-c.cc
+++ b/libqpdf/qpdflogger-c.cc
@@ -56,12 +56,7 @@ set_log_dest(
method(l->discard());
break;
case qpdf_log_dest_custom:
- method(std::make_shared<Pl_Function>(
- identifier,
- nullptr,
- [fn, udata](unsigned char const* data, size_t len) {
- fn(reinterpret_cast<char const*>(data), len, udata);
- }));
+ method(std::make_shared<Pl_Function>(identifier, nullptr, fn, udata));
break;
}
}
diff --git a/libtests/logger_c.c b/libtests/logger_c.c
index 94815601..5c4c519a 100644
--- a/libtests/logger_c.c
+++ b/libtests/logger_c.c
@@ -8,11 +8,11 @@
#include <stdio.h>
#include <stdlib.h>
-static void
+static int
fn(char const* data, size_t len, void* udata)
{
FILE* f = (FILE*)udata;
- fwrite(data, 1, len, f);
+ return fwrite(data, 1, len, f) != len;
}
static void