#include "url.h"
#include "progress.h" /* for progress_handle_sigwinch */
#include "convert.h"
+#include "http.h" /* for save_cookies */
/* On GNU system this will include system-wide getopt.h. */
#include "getopt.h"
extern char *version_string;
-extern struct cookie_jar *wget_cookie_jar;
-
static void redirect_output_signal (int);
const char *exec_name;
/* HAVE_NLS implies existence of functions invoked here. */
#ifdef HAVE_NLS
/* Set the current locale. */
- /* Where possible, sets only LC_MESSAGES and LC_CTYPE. Other
- categories, such as numeric, time, or collation, break code that
- parses data received from the network and relies on C-locale
- behavior of libc functions. For example, Solaris strptime fails
- to recognize English month names in non-English locales, which
- breaks http_atotm. Some implementations of fnmatch perform
- unwanted case folding in non-C locales. ctype macros, while they
- were used, provided another example against LC_ALL. */
-#if defined(LC_MESSAGES) && defined(LC_CTYPE)
- setlocale (LC_MESSAGES, "");
- setlocale (LC_CTYPE, ""); /* safe because we use safe-ctype */
-#else
setlocale (LC_ALL, "");
-#endif
/* Set the text message domain. */
bindtextdomain ("wget", LOCALEDIR);
textdomain ("wget");
int argtype; /* for non-standard options */
};
-struct cmdline_option option_data[] =
+static struct cmdline_option option_data[] =
{
{ "accept", 'A', OPT_VALUE, "accept", -1 },
{ "append-output", 'a', OPT__APPEND_OUTPUT, NULL, required_argument },
exit (0);
}
+/* Return a human-readable printed representation of INTERVAL,
+ measured in seconds. */
+
static char *
-secs_to_human_time (double secs_decimal)
+secs_to_human_time (double interval)
{
static char buf[32];
- int secs = (int) (secs_decimal + 0.5);
+ int secs = (int) (interval + 0.5);
int hours, mins, days;
days = secs / 86400, secs %= 86400;
mins = secs / 60, secs %= 60;
if (days)
- sprintf (buf, _("%dd %dh %dm %ds"), days, hours, mins, secs);
+ sprintf (buf, "%dd %dh %dm %ds", days, hours, mins, secs);
else if (hours)
- sprintf (buf, _("%dh %dm %ds"), hours, mins, secs);
+ sprintf (buf, "%dh %dm %ds", hours, mins, secs);
else if (mins)
- sprintf (buf, _("%dm %ds"), mins, secs);
- else if (secs_decimal >= 1)
- sprintf (buf, _("%ds"), secs);
+ sprintf (buf, "%dm %ds", mins, secs);
+ else if (interval >= 10)
+ sprintf (buf, "%ds", secs);
else
- sprintf (buf, _("%.2fs"), secs_decimal);
+ /* For very quick downloads show more exact timing information. */
+ sprintf (buf, "%.*fs",
+ interval < 0.001 ? 0 : /* 0s instead of 0.000s */
+ interval < 0.01 ? 3 : /* 0.00x */
+ interval < 0.1 ? 2 : /* 0.0x */
+ 1, /* 0.x, 1.x, ..., 9.x */
+ interval);
return buf;
}
/* Open the output filename if necessary. */
if (opt.output_document)
{
- extern FILE *output_stream;
- extern bool output_stream_regular;
-
if (HYPHENP (opt.output_document))
output_stream = stdout;
else