X-Git-Url: http://sjero.net/git/?a=blobdiff_plain;f=src%2Finit.c;h=a774061b413a4f1ecd1f98086b2ac4e14ae36238;hb=123f5c39669abc055987d69a311785c861494c87;hp=5ba0d76cd00a763e2d47ad6664107bdd427fc142;hpb=ae034d236f2c977a9029c0b315eb1ce84a3eaaf6;p=wget diff --git a/src/init.c b/src/init.c index 5ba0d76c..a774061b 100644 --- a/src/init.c +++ b/src/init.c @@ -140,6 +140,7 @@ static const struct { #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 }, { "dirstruct", NULL, cmd_spec_dirstruct }, @@ -301,6 +302,7 @@ defaults (void) tmp = getenv ("no_proxy"); if (tmp) opt.no_proxy = sepstring (tmp); + opt.prefer_family = prefer_none; opt.allow_cache = true; opt.read_timeout = 900; @@ -370,19 +372,14 @@ home_dir (void) return home ? xstrdup (home) : NULL; } -/* Return the path to the user's .wgetrc. This is either the value of - `WGETRC' environment variable, or `$HOME/.wgetrc'. - +/* Check the 'WGETRC' environment variable and return the file name + if 'WGETRC' is set and is a valid file. If the `WGETRC' variable exists but the file does not exist, the function will exit(). */ -static char * -wgetrc_file_name (void) +char * +wgetrc_env_file_name (void) { - char *env, *home; - char *file = NULL; - - /* Try the environment. */ - env = getenv ("WGETRC"); + char *env = getenv ("WGETRC"); if (env && *env) { if (!file_exists_p (env)) @@ -393,12 +390,40 @@ wgetrc_file_name (void) } return xstrdup (env); } - - /* If that failed, try $HOME/.wgetrc. */ - home = home_dir (); + return NULL; +} +/* Check for the existance of '$HOME/.wgetrc' and return it's path + if it exists and is set. */ +char * +wgetrc_user_file_name (void) +{ + char *home = home_dir(); + char *file = NULL; if (home) file = aprintf ("%s/.wgetrc", home); xfree_null (home); + if (!file) + return NULL; + if (!file_exists_p (file)) + { + xfree (file); + return NULL; + } + return file; +} +/* Return the path to the user's .wgetrc. This is either the value of + `WGETRC' environment variable, or `$HOME/.wgetrc'. + + Additionally, for windows, look in the directory where wget.exe + resides. */ +char * +wgetrc_file_name (void) +{ + char *file = wgetrc_env_file_name (); + if (file && *file) + return file; + + file = wgetrc_user_file_name (); #ifdef WINDOWS /* Under Windows, if we still haven't found .wgetrc, look for the file @@ -479,8 +504,8 @@ run_wgetrc (const char *file) ++errcnt; break; case line_unknown_command: - fprintf (stderr, _("%s: Unknown command `%s' in %s at line %d.\n"), - exec_name, com, file, ln); + fprintf (stderr, _("%s: Unknown command %s in %s at line %d.\n"), + exec_name, quote (com), file, ln); ++errcnt; break; case line_empty: @@ -525,8 +550,8 @@ initialize (void) if (!strcmp (file, SYSTEM_WGETRC)) { fprintf (stderr, _("\ -%s: Warning: Both system and user wgetrc point to `%s'.\n"), - exec_name, file); +%s: Warning: Both system and user wgetrc point to %s.\n"), + exec_name, quote (file)); } else #endif @@ -539,7 +564,7 @@ initialize (void) xfree (file); return; } - + /* Remove dashes and underscores from S, modifying S in the process. */ @@ -630,7 +655,7 @@ parse_line (const char *line, char **com, char **val, int *comind) static bool setval_internal (int comind, const char *com, const char *val) { - assert (0 <= comind && comind < countof (commands)); + assert (0 <= comind && ((size_t) comind) < countof (commands)); DEBUGP (("Setting %s (%s) to %s\n", com, commands[comind].name, val)); return commands[comind].action (com, val, commands[comind].place); } @@ -677,8 +702,8 @@ run_command (const char *opt) xfree (val); break; default: - fprintf (stderr, _("%s: Invalid --execute command `%s'\n"), - exec_name, opt); + fprintf (stderr, _("%s: Invalid --execute command %s\n"), + exec_name, quote (opt)); exit (2); } } @@ -722,8 +747,8 @@ cmd_boolean (const char *com, const char *val, void *place) else { fprintf (stderr, - _("%s: %s: Invalid boolean `%s'; use `on' or `off'.\n"), - exec_name, com, val); + _("%s: %s: Invalid boolean %s; use `on' or `off'.\n"), + exec_name, com, quote (val)); return false; } @@ -739,8 +764,8 @@ cmd_number (const char *com, const char *val, void *place) if (!simple_atoi (val, val + strlen (val), place) || *(int *) place < 0) { - fprintf (stderr, _("%s: %s: Invalid number `%s'.\n"), - exec_name, com, val); + fprintf (stderr, _("%s: %s: Invalid number %s.\n"), + exec_name, com, quote (val)); return false; } return true; @@ -970,8 +995,8 @@ cmd_bytes (const char *com, const char *val, void *place) double byte_value; if (!parse_bytes_helper (val, &byte_value)) { - fprintf (stderr, _("%s: %s: Invalid byte value `%s'\n"), - exec_name, com, val); + fprintf (stderr, _("%s: %s: Invalid byte value %s\n"), + exec_name, com, quote (val)); return false; } *(wgint *)place = (wgint)byte_value; @@ -989,8 +1014,8 @@ cmd_bytes_sum (const char *com, const char *val, void *place) double byte_value; if (!parse_bytes_helper (val, &byte_value)) { - fprintf (stderr, _("%s: %s: Invalid byte value `%s'\n"), - exec_name, com, val); + fprintf (stderr, _("%s: %s: Invalid byte value %s\n"), + exec_name, com, quote (val)); return false; } *(SUM_SIZE_INT *) place = (SUM_SIZE_INT) byte_value; @@ -1014,8 +1039,8 @@ cmd_time (const char *com, const char *val, void *place) if (val == end) { err: - fprintf (stderr, _("%s: %s: Invalid time period `%s'\n"), - exec_name, com, val); + fprintf (stderr, _("%s: %s: Invalid time period %s\n"), + exec_name, com, quote (val)); return false; } @@ -1068,7 +1093,7 @@ cmd_cert_type (const char *com, const char *val, void *place) }; int ok = decode_string (val, choices, countof (choices), place); if (!ok) - fprintf (stderr, _("%s: %s: Invalid value `%s'.\n"), exec_name, com, val); + fprintf (stderr, _("%s: %s: Invalid value %s.\n"), exec_name, com, quote (val)); return ok; } #endif @@ -1105,8 +1130,8 @@ cmd_spec_header (const char *com, const char *val, void *place_ignored) if (!check_user_specified_header (val)) { - fprintf (stderr, _("%s: %s: Invalid header `%s'.\n"), - exec_name, com, val); + fprintf (stderr, _("%s: %s: Invalid header %s.\n"), + exec_name, com, quote (val)); return false; } opt.user_headers = vec_append (opt.user_headers, val); @@ -1155,10 +1180,10 @@ cmd_spec_prefer_family (const char *com, const char *val, void *place_ignored) { "IPv6", prefer_ipv6 }, { "none", prefer_none }, }; - int prefer_family = prefer_ipv4; + int prefer_family = prefer_none; int ok = decode_string (val, choices, countof (choices), &prefer_family); if (!ok) - fprintf (stderr, _("%s: %s: Invalid value `%s'.\n"), exec_name, com, val); + fprintf (stderr, _("%s: %s: Invalid value %s.\n"), exec_name, com, quote (val)); opt.prefer_family = prefer_family; return ok; } @@ -1171,8 +1196,8 @@ cmd_spec_progress (const char *com, const char *val, void *place_ignored) { if (!valid_progress_implementation_p (val)) { - fprintf (stderr, _("%s: %s: Invalid progress type `%s'.\n"), - exec_name, com, val); + fprintf (stderr, _("%s: %s: Invalid progress type %s.\n"), + exec_name, com, quote (val)); return false; } xfree_null (opt.progress_type); @@ -1230,8 +1255,8 @@ cmd_spec_restrict_file_names (const char *com, const char *val, void *place_igno else { fprintf (stderr, - _("%s: %s: Invalid restriction `%s', use [unix|windows],[lowercase|uppercase],[nocontrol].\n"), - exec_name, com, val); + _("%s: %s: Invalid restriction %s, use [unix|windows],[lowercase|uppercase],[nocontrol].\n"), + exec_name, com, quote (val)); return false; } @@ -1261,7 +1286,7 @@ cmd_spec_secure_protocol (const char *com, const char *val, void *place) }; int ok = decode_string (val, choices, countof (choices), place); if (!ok) - fprintf (stderr, _("%s: %s: Invalid value `%s'.\n"), exec_name, com, val); + fprintf (stderr, _("%s: %s: Invalid value %s.\n"), exec_name, com, quote (val)); return ok; } #endif @@ -1286,8 +1311,8 @@ cmd_spec_useragent (const char *com, const char *val, void *place_ignored) /* Disallow embedded newlines. */ if (strchr (val, '\n')) { - fprintf (stderr, _("%s: %s: Invalid value `%s'.\n"), - exec_name, com, val); + fprintf (stderr, _("%s: %s: Invalid value %s.\n"), + exec_name, com, quote (val)); return false; } xfree_null (opt.useragent); @@ -1524,6 +1549,8 @@ cleanup (void) xfree_null (opt.cookies_output); xfree_null (opt.user); xfree_null (opt.passwd); + xfree_null (opt.base_href); + #endif /* DEBUG_MALLOC */ }