From c157fe63567450ac46f5110a5d2660f038551796 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Tue, 14 Sep 2010 00:17:58 +0000 Subject: [PATCH] Limit av_log repeat detection to terminals so as to avoid filling files with lots of mess. Originally committed as revision 25117 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavutil/log.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libavutil/log.c b/libavutil/log.c index 2e225b3b50..2e95068db3 100644 --- a/libavutil/log.c +++ b/libavutil/log.c @@ -85,6 +85,7 @@ void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl) static int print_prefix=1; static int count; static char line[1024], prev[1024]; + static int detect_repeats; AVClass* avc= ptr ? *(AVClass**)ptr : NULL; if(level>av_log_level) return; @@ -103,7 +104,12 @@ void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl) vsnprintf(line + strlen(line), sizeof(line) - strlen(line), fmt, vl); print_prefix= line[strlen(line)-1] == '\n'; - if(print_prefix && !strcmp(line, prev)){ + +#if HAVE_ISATTY + if(!detect_repeats) detect_repeats= isatty(2) ? 1 : -1; +#endif + + if(print_prefix && detect_repeats==1 && !strcmp(line, prev)){ count++; fprintf(stderr, " Last message repeated %d times\r", count); return;