+ return OPJ_TRUE;
+}
+
+/* ----------------------------------------------------------------------- */
+opj_bool opj_event_msg_v2(opj_event_mgr_t* event_mgr, int event_type, const char *fmt, ...) {
+#define MSG_SIZE 512 /* 512 bytes should be more than enough for a short message */
+ opj_msg_callback msg_handler = NULL;
+
+ if(event_mgr != NULL) {
+ switch(event_type) {
+ case EVT_ERROR:
+ msg_handler = event_mgr->error_handler;
+ break;
+ case EVT_WARNING:
+ msg_handler = event_mgr->warning_handler;
+ break;
+ case EVT_INFO:
+ msg_handler = event_mgr->info_handler;
+ break;
+ default:
+ break;
+ }
+ if(msg_handler == NULL) {
+ return OPJ_FALSE;
+ }
+ } else {
+ return OPJ_FALSE;
+ }
+
+ if ((fmt != NULL) && (event_mgr != NULL)) {
+ va_list arg;
+ int str_length/*, i, j*/; /* UniPG */
+ char message[MSG_SIZE];
+ memset(message, 0, MSG_SIZE);
+ /* initialize the optional parameter list */
+ va_start(arg, fmt);
+ /* check the length of the format string */
+ str_length = (strlen(fmt) > MSG_SIZE) ? MSG_SIZE : strlen(fmt);
+ /* parse the format string and put the result in 'message' */
+ vsprintf(message, fmt, arg); /* UniPG */
+ /* deinitialize the optional parameter list */
+ va_end(arg);
+
+ /* output the message to the user program */
+ msg_handler(message, event_mgr->client_data);
+ }
+
+ return OPJ_TRUE;
+}
+
+/* ----------------------------------------------------------------------- */
+void OPJ_CALLCONV opj_initialize_default_event_handler(opj_event_mgr_t * p_event, opj_bool verbose)
+{
+ if (! p_event){
+ fprintf(stderr, "[ERROR] Event structure provided to the opj_set_default_event_handler is equal to null pointer.\n");
+ return;
+ }
+
+ p_event->client_data = NULL;
+ p_event->error_handler = opj_error_default_callback;
+
+ if (verbose) {
+ p_event->info_handler = opj_info_default_callback;
+ p_event->warning_handler = opj_warning_default_callback;
+ }
+ else {
+ /* FIXME (MSD) This message should be remove when the documentation will be updated */
+ fprintf(stdout, "[INFO] Verbose mode = OFF => no other info/warning output.\n");
+ p_event->info_handler = opj_default_callback ;
+ p_event->warning_handler = opj_default_callback ;
+ }
+}
+
+/* ---------------------------------------------------------------------- */
+/* Default callback functions */
+
+/**
+ * Default callback function.
+ * Do nothing.
+ */
+void opj_default_callback (const char *msg, void *client_data)
+{
+}
+
+/**
+ * Default info callback function.
+ * Output = stdout.
+ */
+void opj_info_default_callback (const char *msg, void *client_data)
+{
+ (void)client_data;
+ fprintf(stdout, "[INFO] %s", msg);
+}
+
+/**
+ * Default warning callback function.
+ * Output = stderr.
+ */
+void opj_warning_default_callback (const char *msg, void *client_data)
+{
+ (void)client_data;
+ fprintf(stderr, "[WARNING] %s", msg);