[gs-commits] mupdf/master - 0_8-4-g876a127 - Inhibit warning message spam by introducing a repeat counter.

Tor Andersson tor at ghostscript.com
Sun Mar 6 17:10:39 UTC 2011


commit 876a127dd098c76f757a34d1f3d0e65c8f6e6b08
Author: Tor Andersson <tor at ghostscript.com>
Date:   Sun Mar 6 14:25:41 2011 +0000

    Inhibit warning message spam by introducing a repeat counter.
    
    Ignore-this: b9acb0cb64722bc2abba9dc42769b874
    
    darcs-hash:20110306142541-f546f-d37c48df352cc1570fa41323b11fec436ad7b969.gz

 7 files changed, 49 insertions(+), 3 deletions(-)

diff --git a/apps/pdfapp.c b/apps/pdfapp.c
index 58f6035..3980c57 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 8f51157..2be479a 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 9ce72cf..9c46a3a 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 340a351..1d01b4d 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 eda01e3..4eda9b8 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 5aa8768..4117bc9 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 13e285e..14372ef 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);

--
git/hooks/post-receive


More information about the gs-commits mailing list