aboutsummaryrefslogtreecommitdiffstats
path: root/libtests/logger_c.c
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-06-18 19:38:36 +0200
committerJay Berkenbilt <ejb@ql.org>2022-06-19 14:46:58 +0200
commit8130d50e3b5aa0235a133c3c5a3018ac01afb5e1 (patch)
tree461c961df0299707b628f4fa6a41539fafa2d193 /libtests/logger_c.c
parentdaef4e8fb856e84e2a9151cd7715a941a0ae9c6c (diff)
downloadqpdf-8130d50e3b5aa0235a133c3c5a3018ac01afb5e1.tar.zst
Add C API to QPDFLogger
Diffstat (limited to 'libtests/logger_c.c')
-rw-r--r--libtests/logger_c.c108
1 files changed, 108 insertions, 0 deletions
diff --git a/libtests/logger_c.c b/libtests/logger_c.c
new file mode 100644
index 00000000..94815601
--- /dev/null
+++ b/libtests/logger_c.c
@@ -0,0 +1,108 @@
+#include <qpdf/assert_test.h>
+
+#include <qpdf/qpdflogger-c.h>
+
+#include <qpdf/Constants.h>
+#include <qpdf/qpdfjob-c.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+static void
+fn(char const* data, size_t len, void* udata)
+{
+ FILE* f = (FILE*)udata;
+ fwrite(data, 1, len, f);
+}
+
+static void
+do_run(char const* json, int exp_status)
+{
+ int status = qpdfjob_run_from_json(json);
+ assert(status == exp_status);
+}
+
+static FILE*
+do_fopen(char const* filename)
+{
+ FILE* f = NULL;
+#ifdef _MSC_VER
+ if (fopen_s(&f, filename, "wb") != 0) {
+ f = NULL;
+ }
+#else
+ f = fopen(filename, "wb");
+#endif
+ if (f == NULL) {
+ fprintf(stderr, "unable to open %s\n", filename);
+ exit(2);
+ }
+ return f;
+}
+
+int
+main()
+{
+ FILE* info = do_fopen("info");
+ FILE* warn = do_fopen("warn");
+ FILE* error = do_fopen("error");
+ FILE* save = do_fopen("save");
+ FILE* save2 = do_fopen("save2");
+ qpdflogger_handle l = qpdflogger_default_logger();
+
+ qpdflogger_set_info(l, qpdf_log_dest_custom, fn, (void*)info);
+ qpdflogger_set_warn(l, qpdf_log_dest_custom, fn, (void*)warn);
+ qpdflogger_set_error(l, qpdf_log_dest_custom, fn, (void*)error);
+ qpdflogger_set_save(l, qpdf_log_dest_custom, fn, (void*)save, 0);
+
+ do_run(
+ "{\"inputFile\": \"normal.pdf\", \"showNpages\": \"\"}",
+ qpdf_exit_success);
+ do_run(
+ "{\"inputFile\": \"warning.pdf\", \"showNpages\": \"\"}",
+ qpdf_exit_warning);
+ do_run(
+ "{\"inputFile\": \"missing.pdf\", \"showNpages\": \"\"}",
+ qpdf_exit_error);
+ do_run(
+ "{\"inputFile\": \"normal.pdf\","
+ " \"staticId\": \"\","
+ " \"outputFile\": \"-\"}",
+ qpdf_exit_success);
+
+ fclose(info);
+ fclose(warn);
+ fclose(error);
+ fclose(save);
+
+ qpdflogger_set_info(l, qpdf_log_dest_stderr, NULL, NULL);
+ qpdflogger_set_warn(l, qpdf_log_dest_stdout, NULL, NULL);
+ qpdflogger_set_error(l, qpdf_log_dest_default, NULL, NULL);
+ qpdflogger_set_save(l, qpdf_log_dest_custom, fn, (void*)save2, 0);
+
+ do_run(
+ "{\"inputFile\": \"2pages.pdf\", \"showNpages\": \"\"}",
+ qpdf_exit_success);
+ do_run(
+ "{\"inputFile\": \"warning.pdf\", \"showNpages\": \"\"}",
+ qpdf_exit_warning);
+ do_run(
+
+ "{\"inputFile\": \"missing.pdf\", \"showNpages\": \"\"}",
+ qpdf_exit_error);
+ do_run(
+ "{\"inputFile\": \"attach.pdf\","
+ " \"showAttachment\": \"a\"}",
+ qpdf_exit_success);
+
+ /* This won't change save since it's already set */
+ qpdflogger_save_to_standard_output(l, 1);
+ do_run(
+ "{\"inputFile\": \"attach.pdf\","
+ " \"showAttachment\": \"a\"}",
+ qpdf_exit_success);
+
+ qpdflogger_cleanup(&l);
+
+ return 0;
+}