=over
=item i_clear_error()
-
+=synopsis i_clear_error();
=category Error handling
Clears the error stack.
-Called by any imager function before doing any other processing.
+Called by any Imager function before doing any other processing.
=cut
*/
/*
=item i_push_error(int code, char const *msg)
-
+=synopsis i_push_error(0, "Yep, it's broken");
+=synopsis i_push_error(errno, "Error writing");
=category Error handling
-Called by an imager function to push an error message onto the stack.
+Called by an Imager function to push an error message onto the stack.
No message is pushed if the stack is full (since this means someone
forgot to call i_clear_error(), or that a function that doesn't do
}
/*
-=item i_push_errorvf(int code, char const *fmt, va_list ap)
+=item i_push_errorvf(int C<code>, char const *C<fmt>, va_list C<ap>)
=category Error handling
Intended for use by higher level functions, takes a varargs pointer
and a format to produce the finally pushed error message.
+Does not support perl specific format codes.
+
=cut
*/
void i_push_errorvf(int code, char const *fmt, va_list ap) {
/*
=item i_push_errorf(int code, char const *fmt, ...)
-
+=synopsis i_push_errorf(errno, "Cannot open file %s: %d", filename, errno);
=category Error handling
-A version of i_push_error() that does printf() like formating.
+A version of i_push_error() that does printf() like formatting.
+
+Does not support perl specific format codes.
=cut
*/
++sp;
}
/* we want to log the error too, build an error message to hand to
- m_fatal() */
+ i_fatal() */
total = 1; /* remember the NUL */
for (sp = error_sp; error_stack[sp].msg; ++sp) {
total += strlen(error_stack[sp].msg) + 2;
}
/* lose the extra ": " */
full[strlen(full)-2] = '\0';
- m_fatal(EXIT_FAILURE, "%s", full);
+ i_fatal(EXIT_FAILURE, "%s", full);
}
return 0;
#endif
+/*
+=item im_assert_fail(file, line, message)
+
+Called when an im_assert() assertion fails.
+
+=cut
+*/
+
+void
+im_assert_fail(char const *file, int line, char const *message) {
+ fprintf(stderr, "Assertion failed line %d file %s: %s\n",
+ line, file, message);
+ exit(EXIT_FAILURE);
+}
+
/*
=back