X-Git-Url: http://sjero.net/git/?p=wget;a=blobdiff_plain;f=src%2Finit.c;h=879d3aac80b27a419cdd9154128fe8cfaf2fe74b;hp=da900cce926dcf978f9a50a89cb4bef48e7e5a95;hb=d5e283b1a75c5f8249300b465b4e7b55130bec49;hpb=ca397aa5b00e320e2bae7a6e3ed000eaa240e635 diff --git a/src/init.c b/src/init.c index da900cce..879d3aac 100644 --- a/src/init.c +++ b/src/init.c @@ -157,6 +157,9 @@ static const struct { { "ftppasswd", &opt.ftp_passwd, cmd_string }, /* deprecated */ { "ftppassword", &opt.ftp_passwd, cmd_string }, { "ftpproxy", &opt.ftp_proxy, cmd_string }, +#ifdef __VMS + { "ftpstmlf", &opt.ftp_stmlf, cmd_boolean }, +#endif /* def __VMS */ { "ftpuser", &opt.ftp_user, cmd_string }, { "glob", &opt.ftp_glob, cmd_boolean }, { "header", NULL, cmd_spec_header }, @@ -177,9 +180,11 @@ static const struct { { "inet6only", &opt.ipv6_only, cmd_boolean }, #endif { "input", &opt.input_filename, cmd_file }, + { "iri", &opt.enable_iri, cmd_boolean }, { "keepsessioncookies", &opt.keep_session_cookies, cmd_boolean }, { "limitrate", &opt.limit_rate, cmd_bytes }, { "loadcookies", &opt.cookies_input, cmd_file }, + { "locale", &opt.locale, cmd_string }, { "logfile", &opt.lfilename, cmd_file }, { "login", &opt.ftp_user, cmd_string },/* deprecated*/ { "maxredirect", &opt.max_redirect, cmd_number }, @@ -219,6 +224,7 @@ static const struct { { "referer", &opt.referer, cmd_string }, { "reject", &opt.rejects, cmd_vector }, { "relativeonly", &opt.relative_only, cmd_boolean }, + { "remoteencoding", &opt.encoding_remote, cmd_string }, { "removelisting", &opt.remove_listing, cmd_boolean }, { "restrictfilenames", NULL, cmd_spec_restrict_file_names }, { "retrsymlinks", &opt.retr_symlinks, cmd_boolean }, @@ -328,6 +334,14 @@ defaults (void) opt.max_redirect = 20; opt.waitretry = 10; + +#ifdef ENABLE_IRI + opt.enable_iri = true; +#else + opt.enable_iri = false; +#endif + opt.locale = NULL; + opt.encoding_remote = NULL; } /* Return the user's home directory (strdup-ed), or NULL if none is @@ -403,9 +417,17 @@ wgetrc_user_file_name (void) { char *home = home_dir (); char *file = NULL; + /* If that failed, try $HOME/.wgetrc (or equivalent). */ + +#ifdef __VMS + file = "SYS$LOGIN:.wgetrc"; +#else /* def __VMS */ + home = home_dir (); if (home) file = aprintf ("%s/.wgetrc", home); xfree_null (home); +#endif /* def __VMS [else] */ + if (!file) return NULL; if (!file_exists_p (file)) @@ -424,7 +446,6 @@ wgetrc_user_file_name (void) char * wgetrc_file_name (void) { - char *home = NULL; char *file = wgetrc_env_file_name (); if (file && *file) return file; @@ -436,25 +457,25 @@ wgetrc_file_name (void) `wget.ini' in the directory where `wget.exe' resides; we do this for backward compatibility with previous versions of Wget. SYSTEM_WGETRC should not be defined under WINDOWS. */ - home = home_dir (); - if (!file || !file_exists_p (file)) + if (!file) { + char *home = home_dir (); xfree_null (file); file = NULL; home = ws_mypath (); if (home) - file = aprintf ("%s/wget.ini", home); + { + file = aprintf ("%s/wget.ini", home); + if (!file_exists_p (file)) + { + xfree (file); + file = NULL; + } + xfree (home); + } } - xfree_null (home); #endif /* WINDOWS */ - if (!file) - return NULL; - if (!file_exists_p (file)) - { - xfree (file); - return NULL; - } return file; } @@ -468,7 +489,7 @@ enum parse_line { static enum parse_line parse_line (const char *, char **, char **, int *); static bool setval_internal (int, const char *, const char *); -static bool setval_internal_wrapper (int, const char *, const char *); +static bool setval_internal_tilde (int, const char *, const char *); /* Initialize variables from a wgetrc file. Returns zero (failure) if there were errors in the file. */ @@ -481,7 +502,7 @@ run_wgetrc (const char *file) int ln; int errcnt = 0; - fp = fopen (file, "rb"); + fp = fopen (file, "r"); if (!fp) { fprintf (stderr, _("%s: Cannot read %s (%s).\n"), exec_name, @@ -499,7 +520,7 @@ run_wgetrc (const char *file) { case line_ok: /* If everything is OK, set the value. */ - if (!setval_internal_wrapper (comind, com, val)) + if (!setval_internal_tilde (comind, com, val)) { fprintf (stderr, _("%s: Error in %s at line %d.\n"), exec_name, file, ln); @@ -679,7 +700,7 @@ setval_internal (int comind, const char *com, const char *val) } static bool -setval_internal_wrapper (int comind, const char *com, const char *val) +setval_internal_tilde (int comind, const char *com, const char *val) { bool ret; int homelen; @@ -689,18 +710,19 @@ setval_internal_wrapper (int comind, const char *com, const char *val) /* We make tilde expansion for cmd_file and cmd_directory */ if (((commands[comind].action == cmd_file) || - (commands[comind].action == cmd_directory)) && ret) + (commands[comind].action == cmd_directory)) + && ret && (*val == '~' && ISSEP (val[1]))) { pstring = commands[comind].place; - home = home_dir(); + home = home_dir (); if (home) { - homelen = strlen(home); - while (homelen && ISSEP(home[homelen - 1])) + homelen = strlen (home); + while (homelen && ISSEP (home[homelen - 1])) home[--homelen] = '\0'; /* Skip the leading "~/". */ - for (++val; ISSEP(*val); val++) + for (++val; ISSEP (*val); val++) ; *pstring = concat_strings (home, "/", val, (char *)0); }