diff options
author | Sebastian Rasmussen <sebras@gmail.com> | 2019-09-15 15:45:47 +0200 |
---|---|---|
committer | Sebastian Rasmussen <sebras@gmail.com> | 2020-03-20 17:53:52 +0800 |
commit | 3f01ab3739773db83040d8c2a7c3562b9103ed4e (patch) | |
tree | 27c5452dd16ba5cf85590e9e621acd5a827cb00f /jbig2dec | |
parent | e4dd74c63031c705b3b6938fdac6b69e6317f00a (diff) | |
download | ghostpdl-3f01ab3739773db83040d8c2a7c3562b9103ed4e.tar.gz |
jbig2dec: Separate command line tool error callback state from parameters.
Diffstat (limited to 'jbig2dec')
-rw-r--r-- | jbig2dec/jbig2dec.c | 72 |
1 files changed, 39 insertions, 33 deletions
diff --git a/jbig2dec/jbig2dec.c b/jbig2dec/jbig2dec.c index 4f95589b6..45691839a 100644 --- a/jbig2dec/jbig2dec.c +++ b/jbig2dec/jbig2dec.c @@ -65,11 +65,15 @@ typedef struct { SHA1_CTX *hash_ctx; char *output_filename; jbig2dec_format output_format; +} jbig2dec_params_t; + +typedef struct { + int verbose; char *last_message; Jbig2Severity severity; char *type; long repeats; -} jbig2dec_params_t; +} jbig2dec_error_callback_state_t; static int print_version(void); static int print_usage(void); @@ -251,7 +255,7 @@ print_usage(void) static void error_callback(void *error_callback_data, const char *buf, Jbig2Severity severity, int32_t seg_idx) { - jbig2dec_params_t *params = (jbig2dec_params_t *) error_callback_data; + jbig2dec_error_callback_state_t *state = (jbig2dec_error_callback_state_t *) error_callback_data; char *type; char segment[22]; int len; @@ -259,17 +263,17 @@ error_callback(void *error_callback_data, const char *buf, Jbig2Severity severit switch (severity) { case JBIG2_SEVERITY_DEBUG: - if (params->verbose < 3) + if (state->verbose < 3) return; type = "DEBUG"; break; case JBIG2_SEVERITY_INFO: - if (params->verbose < 2) + if (state->verbose < 2) return; type = "info"; break; case JBIG2_SEVERITY_WARNING: - if (params->verbose < 1) + if (state->verbose < 1) return; type = "WARNING"; break; @@ -302,34 +306,34 @@ error_callback(void *error_callback_data, const char *buf, Jbig2Severity severit return; } - if (params->last_message != NULL && strcmp(message, params->last_message)) { - if (params->repeats > 1) - fprintf(stderr, "jbig2dec %s last message repeated %ld times\n", params->type, params->repeats); + if (state->last_message != NULL && strcmp(message, state->last_message)) { + if (state->repeats > 1) + fprintf(stderr, "jbig2dec %s last message repeated %ld times\n", state->type, state->repeats); fprintf(stderr, "%s\n", message); - free(params->last_message); - params->last_message = message; - params->severity = severity; - params->type = type; - params->repeats = 0; - } else if (params->last_message != NULL) { - params->repeats++; - if (params->repeats % 1000000 == 0) - fprintf(stderr, "jbig2dec %s last message repeated %ld times so far\n", params->type, params->repeats); + free(state->last_message); + state->last_message = message; + state->severity = severity; + state->type = type; + state->repeats = 0; + } else if (state->last_message != NULL) { + state->repeats++; + if (state->repeats % 1000000 == 0) + fprintf(stderr, "jbig2dec %s last message repeated %ld times so far\n", state->type, state->repeats); free(message); - } else if (params->last_message == NULL) { + } else if (state->last_message == NULL) { fprintf(stderr, "%s\n", message); - params->last_message = message; - params->severity = severity; - params->type = type; - params->repeats = 0; + state->last_message = message; + state->severity = severity; + state->type = type; + state->repeats = 0; } } static void -flush_errors(jbig2dec_params_t *params) +flush_errors(jbig2dec_error_callback_state_t *state) { - if (params->repeats > 1) { - fprintf(stderr, "jbig2dec last message repeated %ld times\n", params->repeats); + if (state->repeats > 1) { + fprintf(stderr, "jbig2dec last message repeated %ld times\n", state->repeats); } } @@ -426,6 +430,7 @@ main(int argc, char **argv) Jbig2Ctx *ctx = NULL; uint8_t buf[4096]; jbig2dec_params_t params; + jbig2dec_error_callback_state_t error_callback_state; int filearg; int result = 1; int code; @@ -437,8 +442,6 @@ main(int argc, char **argv) params.output_filename = NULL; params.output_format = jbig2dec_format_none; params.embedded = 0; - params.last_message = NULL; - params.repeats = 0; filearg = parse_options(argc, argv, ¶ms); @@ -487,7 +490,11 @@ main(int argc, char **argv) goto cleanup; } - ctx = jbig2_ctx_new(NULL, (Jbig2Options)(f_page != NULL || params.embedded ? JBIG2_OPTIONS_EMBEDDED : 0), NULL, error_callback, ¶ms); + error_callback_state.verbose = params.verbose; + error_callback_state.last_message = NULL; + error_callback_state.repeats = 0; + + ctx = jbig2_ctx_new(NULL, (Jbig2Options)(f_page != NULL || params.embedded ? JBIG2_OPTIONS_EMBEDDED : 0), NULL, error_callback, &error_callback_state); if (ctx == NULL) { fclose(f); if (f_page) @@ -510,7 +517,7 @@ main(int argc, char **argv) if (f_page != NULL) { Jbig2GlobalCtx *global_ctx = jbig2_make_global_ctx(ctx); - ctx = jbig2_ctx_new(NULL, JBIG2_OPTIONS_EMBEDDED, global_ctx, error_callback, ¶ms); + ctx = jbig2_ctx_new(NULL, JBIG2_OPTIONS_EMBEDDED, global_ctx, error_callback, &error_callback_state); if (ctx != NULL) { for (;;) { int n_bytes = fread(buf, 1, sizeof(buf), f_page); @@ -586,17 +593,16 @@ main(int argc, char **argv) write_document_hash(¶ms); } - } /* end params.mode switch */ /* fin */ result = 0; cleanup: - flush_errors(¶ms); + flush_errors(&error_callback_state); jbig2_ctx_free(ctx); - if (params.last_message) - free(params.last_message); + if (error_callback_state.last_message) + free(error_callback_state.last_message); if (params.output_filename) free(params.output_filename); if (params.hash) |