X-Git-Url: http://sjero.net/git/?p=wget;a=blobdiff_plain;f=src%2Flog.c;h=9ee0621160ebca923233e94889ce72153a532049;hp=5cce3513da0af0cc061051d5598f530382d56291;hb=d5e283b1a75c5f8249300b465b4e7b55130bec49;hpb=da99855784988c6bf125799f47c57d888bbc25f1
diff --git a/src/log.c b/src/log.c
index 5cce3513..9ee06211 100644
--- a/src/log.c
+++ b/src/log.c
@@ -1,6 +1,6 @@
/* Messages logging.
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2007 Free Software Foundation, Inc.
+ 2007, 2008 Free Software Foundation, Inc.
This file is part of GNU Wget.
@@ -17,17 +17,18 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Wget. If not, see .
-In addition, as a special exception, the Free Software Foundation
-gives permission to link the code of its release of Wget with the
-OpenSSL project's "OpenSSL" library (or with modified versions of it
-that use the same license as the "OpenSSL" library), and distribute
-the linked executables. You must obey the GNU General Public License
-in all respects for all of the code used other than "OpenSSL". If you
-modify this file, you may extend this exception to your version of the
-file, but you are not obligated to do so. If you do not wish to do
-so, delete this exception statement from your version. */
+Additional permission under GNU GPL version 3 section 7
-#include
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work. */
+
+#include "wget.h"
#include
#include
@@ -39,11 +40,23 @@ so, delete this exception statement from your version. */
#include
#include
-#include "wget.h"
#include "utils.h"
#include "log.h"
-/* This file impplement support for "logging". Logging means printing
+/* 2005-10-25 SMS.
+ VMS log files are often VFC record format, not stream, so fputs() can
+ produce multiple records, even when there's no newline terminator in
+ the buffer. The result is unsightly output with spurious newlines.
+ Using fprintf() instead of fputs(), along with inhibiting some
+ fflush() activity below, seems to solve the problem.
+*/
+#ifdef __VMS
+# define FPUTS( s, f) fprintf( (f), "%s", (s))
+#else /* def __VMS */
+# define FPUTS( s, f) fputs( (s), (f))
+#endif /* def __VMS [else] */
+
+/* This file implements support for "logging". Logging means printing
output, plus several additional features:
- Cataloguing output by importance. You can specify that a log
@@ -307,7 +320,7 @@ logputs (enum log_options o, const char *s)
return;
CHECK_VERBOSE (o);
- fputs (s, fp);
+ FPUTS (s, fp);
if (save_context_p)
saved_append (s);
if (flush_log_p)
@@ -397,7 +410,7 @@ log_vprintf_internal (struct logvprintf_state *state, const char *fmt,
/* Writing succeeded. */
saved_append (write_ptr);
- fputs (write_ptr, fp);
+ FPUTS (write_ptr, fp);
if (state->bigmsg)
xfree (state->bigmsg);
@@ -416,7 +429,19 @@ logflush (void)
{
FILE *fp = get_log_fp ();
if (fp)
- fflush (fp);
+ {
+/* 2005-10-25 SMS.
+ On VMS, flush only for a terminal. See note at FPUTS macro, above.
+*/
+#ifdef __VMS
+ if (isatty( fileno( fp)))
+ {
+ fflush (fp);
+ }
+#else /* def __VMS */
+ fflush (fp);
+#endif /* def __VMS [else] */
+ }
needs_flushing = false;
}
@@ -583,13 +608,13 @@ log_dump_context (void)
{
struct log_ln *ln = log_lines + num;
if (ln->content)
- fputs (ln->content, fp);
+ FPUTS (ln->content, fp);
ROT_ADVANCE (num);
}
while (num != log_line_current);
if (trailing_line)
if (log_lines[log_line_current].content)
- fputs (log_lines[log_line_current].content, fp);
+ FPUTS (log_lines[log_line_current].content, fp);
fflush (fp);
}
@@ -762,7 +787,7 @@ escnonprint_uri (const char *str)
void
log_cleanup (void)
{
- int i;
+ size_t i;
for (i = 0; i < countof (ring); i++)
xfree_null (ring[i].buffer);
}
@@ -781,8 +806,8 @@ redirect_output (void)
logfp = unique_create (DEFAULT_LOGFILE, false, &logfile);
if (logfp)
{
- fprintf (stderr, _("\n%s received, redirecting output to `%s'.\n"),
- redirect_request_signal_name, logfile);
+ fprintf (stderr, _("\n%s received, redirecting output to %s.\n"),
+ redirect_request_signal_name, quote (logfile));
xfree (logfile);
/* Dump the context output to the newly opened log. */
log_dump_context ();