#include "recur.h" /* for INFINITE_RECURSION */
#include "convert.h" /* for convert_cleanup */
#include "res.h" /* for res_cleanup */
+#include "http.h" /* for http_cleanup */
+#include "retr.h" /* for output_stream */
/* We want tilde expansion enabled only when reading `.wgetrc' lines;
otherwise, it will be performed by the shell. This variable will
CMD_DECLARE (cmd_boolean);
CMD_DECLARE (cmd_bytes);
-CMD_DECLARE (cmd_bytes_large);
+CMD_DECLARE (cmd_bytes_sum);
#ifdef HAVE_SSL
CMD_DECLARE (cmd_cert_type);
#endif
#endif
CMD_DECLARE (cmd_spec_timeout);
CMD_DECLARE (cmd_spec_useragent);
+CMD_DECLARE (cmd_spec_verbose);
/* List of recognized commands, each consisting of name, place and
function. When adding a new command, simply add it to the list,
{ "proxypassword", &opt.proxy_passwd, cmd_string },
{ "proxyuser", &opt.proxy_user, cmd_string },
{ "quiet", &opt.quiet, cmd_boolean },
- { "quota", &opt.quota, cmd_bytes_large },
+ { "quota", &opt.quota, cmd_bytes_sum },
#ifdef HAVE_SSL
{ "randomfile", &opt.random_file, cmd_file },
#endif
{ "useproxy", &opt.use_proxy, cmd_boolean },
{ "user", &opt.user, cmd_string },
{ "useragent", NULL, cmd_spec_useragent },
- { "verbose", &opt.verbose, cmd_boolean },
+ { "verbose", NULL, cmd_spec_verbose },
{ "wait", &opt.wait, cmd_time },
{ "waitretry", &opt.waitretry, cmd_time }
};
return true;
}
-/* Engine for cmd_bytes and cmd_bytes_large: converts a string such as
+/* Engine for cmd_bytes and cmd_bytes_sum: converts a string such as
"100k" or "2.5G" to a floating point number. */
static bool
}
/* Like cmd_bytes, but PLACE is interpreted as a pointer to
- LARGE_INT. It works by converting the string to double, therefore
+ SIZE_SUM. It works by converting the string to double, therefore
working with values up to 2^53-1 without loss of precision. This
value (8192 TB) is large enough to serve for a while. */
static bool
-cmd_bytes_large (const char *com, const char *val, void *place)
+cmd_bytes_sum (const char *com, const char *val, void *place)
{
double byte_value;
if (!parse_bytes_helper (val, &byte_value))
exec_name, com, val);
return false;
}
- *(LARGE_INT *)place = (LARGE_INT)byte_value;
+ *(SUM_SIZE_INT *) place = (SUM_SIZE_INT) byte_value;
return true;
}
opt.useragent = xstrdup (val);
return true;
}
+
+/* The "verbose" option cannot be cmd_boolean because the variable is
+ not bool -- it's of type int (-1 means uninitialized because of
+ some random hackery for disallowing -q -v). */
+
+static bool
+cmd_spec_verbose (const char *com, const char *val, void *place_ignored)
+{
+ bool flag;
+ if (cmd_boolean (com, val, &flag))
+ {
+ opt.verbose = flag;
+ return true;
+ }
+ return false;
+}
\f
/* Miscellaneous useful routines. */
\f
void cleanup_html_url (void);
-void http_cleanup (void);
/* Free the memory allocated by global variables. */
{
/* Free external resources, close files, etc. */
- {
- extern FILE *output_stream;
- if (output_stream)
- fclose (output_stream);
- /* No need to check for error because Wget flushes its output (and
- checks for errors) after any data arrives. */
- }
+ if (output_stream)
+ fclose (output_stream);
+ /* No need to check for error because Wget flushes its output (and
+ checks for errors) after any data arrives. */
/* We're exiting anyway so there's no real need to call free()
hundreds of times. Skipping the frees will make Wget exit