From 4d352013ac8b822fd334115928527824093f83fe Mon Sep 17 00:00:00 2001 From: hniksic Date: Thu, 22 Nov 2001 12:13:13 -0800 Subject: [PATCH] [svn] Replace opt.no_flush with a function to disable/enable flushing. Published in . --- src/ChangeLog | 6 ++++++ src/log.c | 42 +++++++++++++++++++++++++++++++++++++----- src/options.h | 1 - src/retr.c | 11 +++++------ src/wget.h | 2 ++ 5 files changed, 50 insertions(+), 12 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 36377658..8c799dda 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2001-11-22 Hrvoje Niksic + + * retr.c (show_progress): Use it. + + * log.c (log_set_flush): New function. + 2001-11-22 Hrvoje Niksic * utils.c (path_simplify): Don't remove trailing slashes. diff --git a/src/log.c b/src/log.c index 61766f90..f43351dc 100644 --- a/src/log.c +++ b/src/log.c @@ -52,6 +52,10 @@ static FILE *logfp; /* Whether logging is saved at all. */ int save_log_p; +/* Whether the log is flushed after each command. */ +int flush_log_p = 1; +int needs_flushing; + /* In the event of a hang-up, and if its output was on a TTY, Wget redirects its output to `wget-log'. @@ -268,10 +272,13 @@ logputs (enum log_options o, const char *s) CANONICALIZE_LOGFP_OR_RETURN; fputs (s, logfp); - if (!opt.no_flush) - fflush (logfp); if (save_log_p) saved_append (s); + + if (flush_log_p) + logflush (); + else + needs_flushing = 1; } /* Print a message to the log. A copy of message will be saved to @@ -348,16 +355,41 @@ logvprintf (enum log_options o, const char *fmt, va_list args) if (bigmsg) xfree (bigmsg); } - if (!opt.no_flush) - fflush (logfp); + if (flush_log_p) + logflush (); + else + needs_flushing = 1; } -/* Flush LOGFP. */ +/* Flush LOGFP. Useful while flushing is disabled. */ void logflush (void) { CANONICALIZE_LOGFP_OR_RETURN; fflush (logfp); + needs_flushing = 0; +} + +/* Enable or disable log flushing. */ +void +log_set_flush (int flush) +{ + if (flush == flush_log_p) + return; + + if (flush == 0) + { + /* Disable flushing by setting flush_log_p to 0. */ + flush_log_p = 0; + } + else + { + /* Reenable flushing. If anything was printed in no-flush mode, + flush the log now. */ + if (needs_flushing) + logflush (); + flush_log_p = 1; + } } /* Portability with pre-ANSI compilers makes these two functions look diff --git a/src/options.h b/src/options.h index c6f21b5b..f0d61505 100644 --- a/src/options.h +++ b/src/options.h @@ -49,7 +49,6 @@ struct options data. */ char *dir_prefix; /* The top of directory tree */ char *lfilename; /* Log filename */ - int no_flush; /* If non-zero, inhibit flushing log. */ char *input_filename; /* Input filename */ int force_html; /* Is the input file an HTML file? */ diff --git a/src/retr.c b/src/retr.c index 398bc52c..75ae3252 100644 --- a/src/retr.c +++ b/src/retr.c @@ -50,7 +50,6 @@ extern int errno; /* See the comment in gethttp() why this is needed. */ int global_download_count; -void logflush PARAMS ((void)); /* Flags for show_progress(). */ enum spflags { SP_NONE, SP_INIT, SP_FINISH }; @@ -198,7 +197,8 @@ show_progress (long res, long expected, enum spflags flags) } /* Temporarily disable flushing. */ - opt.no_flush = 1; + log_set_flush (0); + /* init set means initialization. If res is set, it also means that the retrieval is *not* done from the beginning. The part that was already retrieved is not shown again. */ @@ -255,11 +255,10 @@ show_progress (long res, long expected, enum spflags flags) logprintf (LOG_VERBOSE, "\n%5ldK", nrow * line_bytes / 1024); } } + /* Reenable flushing. */ - opt.no_flush = 0; - if (any_output) - /* Force flush. */ - logflush (); + log_set_flush (1); + return any_output; } diff --git a/src/wget.h b/src/wget.h index f5eff47e..f0cabd16 100644 --- a/src/wget.h +++ b/src/wget.h @@ -98,6 +98,8 @@ void logprintf (); void debug_logprintf (); #endif /* not HAVE_STDARG_H */ void logputs PARAMS ((enum log_options, const char *)); +void logflush PARAMS ((void)); +void log_set_flush PARAMS ((int)); /* Defined in `utils.c', but used literally everywhere. */ #ifndef DEBUG_MALLOC -- 2.39.2