summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/pdfapp.c4
-rw-r--r--apps/pdfclean.c2
-rw-r--r--apps/pdfdraw.c4
-rw-r--r--apps/pdfextract.c2
-rw-r--r--apps/pdfshow.c2
-rw-r--r--fitz/base_error.c37
-rw-r--r--fitz/fitz.h1
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);