Published in <sxssnb6imyz.fsf@florida.arsdigita.de>.
+2001-11-22 Hrvoje Niksic <hniksic@arsdigita.com>
+
+ * retr.c (show_progress): Use it.
+
+ * log.c (log_set_flush): New function.
+
2001-11-22 Hrvoje Niksic <hniksic@arsdigita.com>
* utils.c (path_simplify): Don't remove trailing slashes.
/* 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'.
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
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
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? */
/* See the comment in gethttp() why this is needed. */
int global_download_count;
-void logflush PARAMS ((void));
\f
/* Flags for show_progress(). */
enum spflags { SP_NONE, SP_INIT, SP_FINISH };
}
/* 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. */
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;
}
\f
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