SmartPDF - lightweight pdf viewer app for rosapps
[reactos.git] / rosapps / smartpdf / fitz / base / base_error.c
1 #include "fitz-base.h"
2
3 void
4 fz_warn(char *fmt, ...)
5 {
6 va_list ap;
7 fprintf(stderr, "warning: ");
8 va_start(ap, fmt);
9 vfprintf(stderr, fmt, ap);
10 va_end(ap);
11 fprintf(stderr, "\n");
12 }
13
14 fz_error *
15 fz_throw1(char *fmt, ...)
16 {
17 va_list ap;
18 fz_error *eo;
19
20 eo = fz_malloc(sizeof(fz_error));
21 if (!eo) return fz_outofmem;
22
23 eo->refs = 1;
24 strlcpy(eo->func, "unknown", sizeof eo->func);
25 strlcpy(eo->file, "unknown", sizeof eo->file);
26 eo->line = 0;
27
28 va_start(ap, fmt);
29 vsnprintf(eo->msg, sizeof eo->msg, fmt, ap);
30 eo->msg[sizeof(eo->msg) - 1] = '\0';
31 va_end(ap);
32
33 return eo;
34 }
35
36 fz_error *
37 fz_throw0(const char *func, const char *file, int line, char *fmt, ...)
38 {
39 va_list ap;
40 fz_error *eo;
41
42 eo = fz_malloc(sizeof(fz_error));
43 if (!eo) return fz_outofmem;
44
45 eo->refs = 1;
46 strlcpy(eo->func, func, sizeof eo->func);
47 strlcpy(eo->file, file, sizeof eo->file);
48 eo->line = line;
49
50 va_start(ap, fmt);
51 vsnprintf(eo->msg, sizeof eo->msg, fmt, ap);
52 eo->msg[sizeof(eo->msg) - 1] = '\0';
53 va_end(ap);
54
55 if (getenv("BOMB"))
56 {
57 fflush(stdout);
58 fprintf(stderr, "%s:%d: %s(): %s\n", eo->file, eo->line, eo->func, eo->msg);
59 fflush(stderr);
60 abort();
61 }
62
63 return eo;
64 }
65
66 void
67 fz_droperror(fz_error *eo)
68 {
69 if (eo->refs > 0)
70 eo->refs--;
71 if (eo->refs == 0)
72 fz_free(eo);
73 }
74