#include "jinclude.h"
#include "jpeglib.h"
#include "jversion.h"
#include "jerror.h"
Go to the source code of this file.
Defines | |
#define | EXIT_FAILURE 1 |
#define | JMESSAGE(code, string) string , |
Functions | |
emit_message (j_common_ptr cinfo, int msg_level) | |
error_exit (j_common_ptr cinfo) | |
format_message (j_common_ptr cinfo, char *buffer) | |
jpeg_std_error (struct jpeg_error_mgr *err) | |
output_message (j_common_ptr cinfo) | |
reset_error_mgr (j_common_ptr cinfo) | |
Variables | |
const char *const | jpeg_std_message_table [] |
emit_message | ( | j_common_ptr | cinfo, | |
int | msg_level | |||
) |
Definition at line 128 of file jerror.c.
References jpeg_error_mgr::num_warnings, and jpeg_error_mgr::trace_level.
Referenced by jpeg_std_error().
00129 { 00130 struct jpeg_error_mgr * err = cinfo->err; 00131 00132 if (msg_level < 0) { 00133 /* It's a warning message. Since corrupt files may generate many warnings, 00134 * the policy implemented here is to show only the first warning, 00135 * unless trace_level >= 3. 00136 */ 00137 if (err->num_warnings == 0 || err->trace_level >= 3) 00138 (*err->output_message) (cinfo); 00139 /* Always count warnings in num_warnings. */ 00140 err->num_warnings++; 00141 } else { 00142 /* It's a trace message. Show it if trace_level >= msg_level. */ 00143 if (err->trace_level >= msg_level) 00144 (*err->output_message) (cinfo); 00145 } 00146 }
error_exit | ( | j_common_ptr | cinfo | ) |
Definition at line 70 of file jerror.c.
References jpeg_destroy().
Referenced by jpeg_std_error().
00071 { 00072 /* Always display the message */ 00073 (*cinfo->err->output_message) (cinfo); 00074 00075 /* Let the memory manager delete any temp files before we die */ 00076 jpeg_destroy(cinfo); 00077 00078 //exit(EXIT_FAILURE); 00079 }
format_message | ( | j_common_ptr | cinfo, | |
char * | buffer | |||
) |
Definition at line 157 of file jerror.c.
References jpeg_error_mgr::addon_message_table, FALSE, jpeg_error_mgr::first_addon_message, jpeg_error_mgr::i, jpeg_error_mgr::jpeg_message_table, jpeg_error_mgr::last_addon_message, jpeg_error_mgr::last_jpeg_message, jpeg_error_mgr::msg_code, jpeg_error_mgr::msg_parm, jpeg_error_mgr::s, and TRUE.
Referenced by jpeg_std_error().
00158 { 00159 struct jpeg_error_mgr * err = cinfo->err; 00160 int msg_code = err->msg_code; 00161 const char * msgtext = NULL; 00162 const char * msgptr; 00163 char ch; 00164 boolean isstring; 00165 00166 /* Look up message string in proper table */ 00167 if (msg_code > 0 && msg_code <= err->last_jpeg_message) { 00168 msgtext = err->jpeg_message_table[msg_code]; 00169 } else if (err->addon_message_table != NULL && 00170 msg_code >= err->first_addon_message && 00171 msg_code <= err->last_addon_message) { 00172 msgtext = err->addon_message_table[msg_code - err->first_addon_message]; 00173 } 00174 00175 /* Defend against bogus message number */ 00176 if (msgtext == NULL) { 00177 err->msg_parm.i[0] = msg_code; 00178 msgtext = err->jpeg_message_table[0]; 00179 } 00180 00181 /* Check for string parameter, as indicated by %s in the message text */ 00182 isstring = FALSE; 00183 msgptr = msgtext; 00184 while ((ch = *msgptr++) != '\0') { 00185 if (ch == '%') { 00186 if (*msgptr == 's') isstring = TRUE; 00187 break; 00188 } 00189 } 00190 00191 /* Format the message into the passed buffer */ 00192 if (isstring) 00193 sprintf(buffer, msgtext, err->msg_parm.s); 00194 else 00195 sprintf(buffer, msgtext, 00196 err->msg_parm.i[0], err->msg_parm.i[1], 00197 err->msg_parm.i[2], err->msg_parm.i[3], 00198 err->msg_parm.i[4], err->msg_parm.i[5], 00199 err->msg_parm.i[6], err->msg_parm.i[7]); 00200 }
jpeg_std_error | ( | struct jpeg_error_mgr * | err | ) |
Definition at line 231 of file jerror.c.
References emit_message(), error_exit(), format_message(), jpeg_std_message_table, output_message(), and reset_error_mgr().
Referenced by jpeg_lib_init(), main(), read_JPEG_file(), and write_JPEG_file().
00232 { 00233 err->error_exit = error_exit; 00234 err->emit_message = emit_message; 00235 err->output_message = output_message; 00236 err->format_message = format_message; 00237 err->reset_error_mgr = reset_error_mgr; 00238 00239 err->trace_level = 0; /* default = no tracing */ 00240 err->num_warnings = 0; /* no warnings emitted yet */ 00241 err->msg_code = 0; /* may be useful as a flag for "no error" */ 00242 00243 /* Initialize message table pointers */ 00244 err->jpeg_message_table = jpeg_std_message_table; 00245 err->last_jpeg_message = (int) JMSG_LASTMSGCODE - 1; 00246 00247 err->addon_message_table = NULL; 00248 err->first_addon_message = 0; /* for safety */ 00249 err->last_addon_message = 0; 00250 00251 return err; 00252 }
output_message | ( | j_common_ptr | cinfo | ) |
Definition at line 98 of file jerror.c.
References JMSG_LENGTH_MAX.
Referenced by jpeg_std_error().
00099 { 00100 char buffer[JMSG_LENGTH_MAX]; 00101 00102 /* Create the message */ 00103 (*cinfo->err->format_message) (cinfo, buffer); 00104 00105 #ifdef USE_WINDOWS_MESSAGEBOX 00106 /* Display it in a message dialog box */ 00107 MessageBox(GetActiveWindow(), buffer, "JPEG Library Error", 00108 MB_OK | MB_ICONERROR); 00109 #else 00110 /* Send it to stderr, adding a newline */ 00111 //fprintf(stderr, "%s\n", buffer); 00112 #endif 00113 }
reset_error_mgr | ( | j_common_ptr | cinfo | ) |
Definition at line 212 of file jerror.c.
Referenced by jpeg_std_error().
00213 { 00214 cinfo->err->num_warnings = 0; 00215 /* trace_level is not reset since it is an application-supplied parameter */ 00216 cinfo->err->msg_code = 0; /* may be useful as a flag for "no error" */ 00217 }
const char* const jpeg_std_message_table[] |