diff options
author | Jay Berkenbilt <ejb@ql.org> | 2022-06-18 19:38:36 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2022-06-19 14:46:58 +0200 |
commit | 8130d50e3b5aa0235a133c3c5a3018ac01afb5e1 (patch) | |
tree | 461c961df0299707b628f4fa6a41539fafa2d193 /libtests/logger_c.c | |
parent | daef4e8fb856e84e2a9151cd7715a941a0ae9c6c (diff) | |
download | qpdf-8130d50e3b5aa0235a133c3c5a3018ac01afb5e1.tar.zst |
Add C API to QPDFLogger
Diffstat (limited to 'libtests/logger_c.c')
-rw-r--r-- | libtests/logger_c.c | 108 |
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; +} |