X-Git-Url: http://sjero.net/git/?p=wget;a=blobdiff_plain;f=src%2Finit.c;h=fbef133cf9d295217b1a166b996ccb5cfaf67242;hp=43d5ae989cd34dc40f8d29f20fffde817a6d69e7;hb=38a7829dcb4eb5dba28dbf0f05c6a80fea9217f8;hpb=b9e5c3e8b342c2fedfd4465191dfef85132ada58 diff --git a/src/init.c b/src/init.c index 43d5ae98..fbef133c 100644 --- a/src/init.c +++ b/src/init.c @@ -68,6 +68,7 @@ as that of the covered work. */ #include "http.h" /* for http_cleanup */ #include "retr.h" /* for output_stream */ #include "warc.h" /* for warc_close */ +#include "spider.h" /* for spider_cleanup */ #ifdef TESTING #include "test.h" @@ -157,9 +158,7 @@ static const struct { { "convertlinks", &opt.convert_links, cmd_boolean }, { "cookies", &opt.cookies, cmd_boolean }, { "cutdirs", &opt.cut_dirs, cmd_number }, -#ifdef ENABLE_DEBUG { "debug", &opt.debug, cmd_boolean }, -#endif { "defaultpage", &opt.default_page, cmd_string }, { "deleteafter", &opt.delete_after, cmd_boolean }, { "dirprefix", &opt.dir_prefix, cmd_directory }, @@ -270,8 +269,10 @@ static const struct { #endif { "serverresponse", &opt.server_response, cmd_boolean }, { "showalldnsentries", &opt.show_all_dns_entries, cmd_boolean }, + { "showprogress", &opt.show_progress, cmd_boolean }, { "spanhosts", &opt.spanhost, cmd_boolean }, { "spider", &opt.spider, cmd_boolean }, + { "startpos", &opt.start_pos, cmd_bytes }, { "strictcomments", &opt.strict_comments, cmd_boolean }, { "timeout", NULL, cmd_spec_timeout }, { "timestamping", &opt.timestamping, cmd_boolean }, @@ -408,6 +409,10 @@ defaults (void) opt.warc_cdx_dedup_filename = NULL; opt.warc_tempdir = NULL; opt.warc_keep_log = true; + + /* Use a negative value to mark the absence of --start-pos option */ + opt.start_pos = -1; + opt.show_progress = false; } /* Return the user's home directory (strdup-ed), or NULL if none is @@ -858,11 +863,11 @@ setoptval (const char *com, const char *val, const char *optname) This is used by the `--execute' flag in main.c. */ void -run_command (const char *opt) +run_command (const char *cmdopt) { char *com, *val; int comind; - switch (parse_line (opt, &com, &val, &comind)) + switch (parse_line (cmdopt, &com, &val, &comind)) { case line_ok: if (!setval_internal (comind, com, val)) @@ -872,7 +877,7 @@ run_command (const char *opt) break; default: fprintf (stderr, _("%s: Invalid --execute command %s\n"), - exec_name, quote (opt)); + exec_name, quote (cmdopt)); exit (2); } } @@ -955,7 +960,7 @@ cmd_number_inf (const char *com, const char *val, void *place) /* Copy (strdup) the string at COM to a new location and place a pointer to *PLACE. */ static bool -cmd_string (const char *com, const char *val, void *place) +cmd_string (const char *com _GL_UNUSED, const char *val, void *place) { char **pstring = (char **)place; @@ -966,7 +971,7 @@ cmd_string (const char *com, const char *val, void *place) /* Like cmd_string but ensure the string is upper case. */ static bool -cmd_string_uppercase (const char *com, const char *val, void *place) +cmd_string_uppercase (const char *com _GL_UNUSED, const char *val, void *place) { char *q, **pstring; pstring = (char **)place; @@ -986,7 +991,7 @@ cmd_string_uppercase (const char *com, const char *val, void *place) `.wgetrc'. In that case, and if VAL begins with `~', the tilde gets expanded to the user's home directory. */ static bool -cmd_file (const char *com, const char *val, void *place) +cmd_file (const char *com _GL_UNUSED, const char *val, void *place) { char **pstring = (char **)place; @@ -1033,7 +1038,7 @@ cmd_directory (const char *com, const char *val, void *place) PLACE vector is cleared instead. */ static bool -cmd_vector (const char *com, const char *val, void *place) +cmd_vector (const char *com _GL_UNUSED, const char *val, void *place) { char ***pvec = (char ***)place; @@ -1048,7 +1053,7 @@ cmd_vector (const char *com, const char *val, void *place) } static bool -cmd_directory_vector (const char *com, const char *val, void *place) +cmd_directory_vector (const char *com _GL_UNUSED, const char *val, void *place) { char ***pvec = (char ***)place; @@ -1264,7 +1269,7 @@ cmd_cert_type (const char *com, const char *val, void *place) static bool check_user_specified_header (const char *); static bool -cmd_spec_dirstruct (const char *com, const char *val, void *place_ignored) +cmd_spec_dirstruct (const char *com, const char *val, void *place_ignored _GL_UNUSED) { if (!cmd_boolean (com, val, &opt.dirstruct)) return false; @@ -1278,7 +1283,7 @@ cmd_spec_dirstruct (const char *com, const char *val, void *place_ignored) } static bool -cmd_spec_header (const char *com, const char *val, void *place_ignored) +cmd_spec_header (const char *com, const char *val, void *place_ignored _GL_UNUSED) { /* Empty value means reset the list of headers. */ if (*val == '\0') @@ -1299,7 +1304,7 @@ cmd_spec_header (const char *com, const char *val, void *place_ignored) } static bool -cmd_spec_warc_header (const char *com, const char *val, void *place_ignored) +cmd_spec_warc_header (const char *com, const char *val, void *place_ignored _GL_UNUSED) { /* Empty value means reset the list of headers. */ if (*val == '\0') @@ -1320,7 +1325,7 @@ cmd_spec_warc_header (const char *com, const char *val, void *place_ignored) } static bool -cmd_spec_htmlify (const char *com, const char *val, void *place_ignored) +cmd_spec_htmlify (const char *com, const char *val, void *place_ignored _GL_UNUSED) { int flag = cmd_boolean (com, val, &opt.htmlify); if (flag && !opt.htmlify) @@ -1332,7 +1337,7 @@ cmd_spec_htmlify (const char *com, const char *val, void *place_ignored) no limit on max. recursion depth, and don't remove listings. */ static bool -cmd_spec_mirror (const char *com, const char *val, void *place_ignored) +cmd_spec_mirror (const char *com, const char *val, void *place_ignored _GL_UNUSED) { int mirror; @@ -1354,7 +1359,7 @@ cmd_spec_mirror (const char *com, const char *val, void *place_ignored) "IPv4", "IPv6", and "none". */ static bool -cmd_spec_prefer_family (const char *com, const char *val, void *place_ignored) +cmd_spec_prefer_family (const char *com, const char *val, void *place_ignored _GL_UNUSED) { static const struct decode_item choices[] = { { "IPv4", prefer_ipv4 }, @@ -1373,7 +1378,7 @@ cmd_spec_prefer_family (const char *com, const char *val, void *place_ignored) implementation before that. */ static bool -cmd_spec_progress (const char *com, const char *val, void *place_ignored) +cmd_spec_progress (const char *com, const char *val, void *place_ignored _GL_UNUSED) { if (!valid_progress_implementation_p (val)) { @@ -1394,7 +1399,7 @@ cmd_spec_progress (const char *com, const char *val, void *place_ignored) is specified. */ static bool -cmd_spec_recursive (const char *com, const char *val, void *place_ignored) +cmd_spec_recursive (const char *com, const char *val, void *place_ignored _GL_UNUSED) { if (!cmd_boolean (com, val, &opt.recursive)) return false; @@ -1409,7 +1414,7 @@ cmd_spec_recursive (const char *com, const char *val, void *place_ignored) /* Validate --regex-type and set the choice. */ static bool -cmd_spec_regex_type (const char *com, const char *val, void *place_ignored) +cmd_spec_regex_type (const char *com, const char *val, void *place_ignored _GL_UNUSED) { static const struct decode_item choices[] = { { "posix", regex_type_posix }, @@ -1426,7 +1431,7 @@ cmd_spec_regex_type (const char *com, const char *val, void *place_ignored) } static bool -cmd_spec_restrict_file_names (const char *com, const char *val, void *place_ignored) +cmd_spec_restrict_file_names (const char *com, const char *val, void *place_ignored _GL_UNUSED) { int restrict_os = opt.restrict_files_os; int restrict_ctrl = opt.restrict_files_ctrl; @@ -1480,7 +1485,7 @@ cmd_spec_restrict_file_names (const char *com, const char *val, void *place_igno } static bool -cmd_spec_report_speed (const char *com, const char *val, void *place_ignored) +cmd_spec_report_speed (const char *com, const char *val, void *place_ignored _GL_UNUSED) { opt.report_bps = strcasecmp (val, "bits") == 0; if (!opt.report_bps) @@ -1509,7 +1514,7 @@ cmd_spec_secure_protocol (const char *com, const char *val, void *place) /* Set all three timeout values. */ static bool -cmd_spec_timeout (const char *com, const char *val, void *place_ignored) +cmd_spec_timeout (const char *com, const char *val, void *place_ignored _GL_UNUSED) { double value; if (!cmd_time (com, val, &value)) @@ -1521,7 +1526,7 @@ cmd_spec_timeout (const char *com, const char *val, void *place_ignored) } static bool -cmd_spec_useragent (const char *com, const char *val, void *place_ignored) +cmd_spec_useragent (const char *com, const char *val, void *place_ignored _GL_UNUSED) { /* Disallow embedded newlines. */ if (strchr (val, '\n')) @@ -1540,7 +1545,7 @@ cmd_spec_useragent (const char *com, const char *val, void *place_ignored) some random hackery for disallowing -q -v). */ static bool -cmd_spec_verbose (const char *com, const char *val, void *place_ignored) +cmd_spec_verbose (const char *com, const char *val, void *place_ignored _GL_UNUSED) { bool flag; if (cmd_boolean (com, val, &flag)) @@ -1693,11 +1698,6 @@ decode_string (const char *val, const struct decode_item *items, int itemcount, return false; } - -void cleanup_html_url (void); -void spider_cleanup (void); - - /* Free the memory allocated by global variables. */ void cleanup (void) @@ -1733,14 +1733,11 @@ cleanup (void) spider_cleanup (); host_cleanup (); log_cleanup (); + netrc_cleanup (netrc_list); for (i = 0; i < nurl; i++) xfree (url[i]); - { - extern acc_t *netrc_list; - free_netrc (netrc_list); - } xfree_null (opt.choose_config); xfree_null (opt.lfilename); xfree_null (opt.dir_prefix); @@ -1790,34 +1787,27 @@ cleanup (void) #ifdef TESTING const char * -test_commands_sorted() +test_commands_sorted(void) { - int prev_idx = 0, next_idx = 1; - int command_count = countof (commands) - 1; - int cmp = 0; - while (next_idx <= command_count) + unsigned i; + + for (i = 1; i < countof(commands); ++i) { - cmp = strcasecmp (commands[prev_idx].name, commands[next_idx].name); - if (cmp > 0) + if (strcasecmp (commands[i - 1].name, commands[i].name) > 0) { mu_assert ("FAILED", false); break; } - else - { - prev_idx ++; - next_idx ++; - } } return NULL; } const char * -test_cmd_spec_restrict_file_names() +test_cmd_spec_restrict_file_names(void) { - int i; - struct { - char *val; + unsigned i; + static const struct { + const char *val; int expected_restrict_files_os; int expected_restrict_files_ctrl; int expected_restrict_files_case; @@ -1829,7 +1819,7 @@ test_cmd_spec_restrict_file_names() { "unix,nocontrol,lowercase,", restrict_unix, false, restrict_lowercase, true }, }; - for (i = 0; i < sizeof(test_array)/sizeof(test_array[0]); ++i) + for (i = 0; i < countof(test_array); ++i) { bool res;