diff options
-rw-r--r-- | apps/pdfapp.c | 4 | ||||
-rw-r--r-- | apps/pdfclean.c | 2 | ||||
-rw-r--r-- | apps/pdfdraw.c | 4 | ||||
-rw-r--r-- | apps/pdfextract.c | 2 | ||||
-rw-r--r-- | apps/pdfshow.c | 2 | ||||
-rw-r--r-- | fitz/base_error.c | 37 | ||||
-rw-r--r-- | fitz/fitz.h | 1 |
7 files changed, 49 insertions, 3 deletions
diff --git a/apps/pdfapp.c b/apps/pdfapp.c index 58f60352..3980c57d 100644 --- a/apps/pdfapp.c +++ b/apps/pdfapp.c @@ -205,6 +205,8 @@ void pdfapp_close(pdfapp_t *app) pdf_freexref(app->xref); app->xref = nil; } + + fz_flushwarnings(); } static fz_matrix pdfapp_viewctm(pdfapp_t *app) @@ -339,6 +341,8 @@ static void pdfapp_showpage(pdfapp_t *app, int loadpage, int drawpage, int repai wincursor(app, ARROW); } + + fz_flushwarnings(); } static void pdfapp_gotouri(pdfapp_t *app, fz_obj *uri) diff --git a/apps/pdfclean.c b/apps/pdfclean.c index 8f51157a..2be479aa 100644 --- a/apps/pdfclean.c +++ b/apps/pdfclean.c @@ -769,5 +769,7 @@ int main(int argc, char **argv) pdf_freexref(xref); + fz_flushwarnings(); + return 0; } diff --git a/apps/pdfdraw.c b/apps/pdfdraw.c index 9ce72cf0..9c46a3a9 100644 --- a/apps/pdfdraw.c +++ b/apps/pdfdraw.c @@ -238,6 +238,8 @@ static void drawpage(pdf_xref *xref, int pagenum) printf("\n"); pdf_agestore(xref->store, 3); + + fz_flushwarnings(); } static void drawrange(pdf_xref *xref, char *range) @@ -374,5 +376,7 @@ int main(int argc, char **argv) fz_freeglyphcache(glyphcache); + fz_flushwarnings(); + return 0; } diff --git a/apps/pdfextract.c b/apps/pdfextract.c index 340a351d..1d01b4d5 100644 --- a/apps/pdfextract.c +++ b/apps/pdfextract.c @@ -216,5 +216,7 @@ int main(int argc, char **argv) pdf_freexref(xref); + fz_flushwarnings(); + return 0; } diff --git a/apps/pdfshow.c b/apps/pdfshow.c index eda01e30..4eda9b81 100644 --- a/apps/pdfshow.c +++ b/apps/pdfshow.c @@ -234,5 +234,7 @@ int main(int argc, char **argv) pdf_freexref(xref); + fz_flushwarnings(); + return 0; } diff --git a/fitz/base_error.c b/fitz/base_error.c index 5aa8768c..4117bc92 100644 --- a/fitz/base_error.c +++ b/fitz/base_error.c @@ -1,19 +1,45 @@ #include "fitz.h" +enum { LINELEN = 160, LINECOUNT = 25 }; + +static char warnmessage[LINELEN] = ""; +static int warncount = 0; + +void fz_flushwarnings(void) +{ + if (warncount > 1) + fprintf(stderr, "warning: ... repeated %d times ...\n", warncount); + warnmessage[0] = 0; + warncount = 0; +} + void fz_warn(char *fmt, ...) { va_list ap; - fprintf(stderr, "warning: "); + char buf[LINELEN]; + va_start(ap, fmt); - vfprintf(stderr, fmt, ap); + vsnprintf(buf, sizeof buf, fmt, ap); va_end(ap); - fprintf(stderr, "\n"); + + if (!strcmp(buf, warnmessage)) + { + warncount++; + } + else + { + fz_flushwarnings(); + fprintf(stderr, "warning: %s\n", buf); + fz_strlcpy(warnmessage, buf, sizeof warnmessage); + warncount = 1; + } } fz_error fz_throwimp(const char *file, int line, const char *func, char *fmt, ...) { va_list ap; + fz_flushwarnings(); fprintf(stderr, "+ %s:%d: %s(): ", file, line, func); va_start(ap, fmt); vfprintf(stderr, fmt, ap); @@ -26,6 +52,7 @@ fz_error fz_rethrowimp(const char *file, int line, const char *func, fz_error cause, char *fmt, ...) { va_list ap; + fz_flushwarnings(); fprintf(stderr, "| %s:%d: %s(): ", file, line, func); va_start(ap, fmt); vfprintf(stderr, fmt, ap); @@ -38,6 +65,7 @@ void fz_catchimp(const char *file, int line, const char *func, fz_error cause, char *fmt, ...) { va_list ap; + fz_flushwarnings(); fprintf(stderr, "\\ %s:%d: %s(): ", file, line, func); va_start(ap, fmt); vfprintf(stderr, fmt, ap); @@ -49,6 +77,7 @@ fz_error fz_throwimpx(char *fmt, ...) { va_list ap; + fz_flushwarnings(); fprintf(stderr, "+ "); va_start(ap, fmt); vfprintf(stderr, fmt, ap); @@ -61,6 +90,7 @@ fz_error fz_rethrowimpx(fz_error cause, char *fmt, ...) { va_list ap; + fz_flushwarnings(); fprintf(stderr, "| "); va_start(ap, fmt); vfprintf(stderr, fmt, ap); @@ -73,6 +103,7 @@ void fz_catchimpx(fz_error cause, char *fmt, ...) { va_list ap; + fz_flushwarnings(); fprintf(stderr, "\\ "); va_start(ap, fmt); vfprintf(stderr, fmt, ap); diff --git a/fitz/fitz.h b/fitz/fitz.h index 13e285e6..14372efd 100644 --- a/fitz/fitz.h +++ b/fitz/fitz.h @@ -113,6 +113,7 @@ int gettimeofday(struct timeval *tv, struct timezone *tz); typedef int fz_error; void fz_warn(char *fmt, ...) __printflike(1, 2); +void fz_flushwarnings(void); fz_error fz_throwimp(const char *file, int line, const char *func, char *fmt, ...) __printflike(4, 5); fz_error fz_rethrowimp(const char *file, int line, const char *func, fz_error cause, char *fmt, ...) __printflike(5, 6); |