From: Saint Xavier Date: Sat, 14 Jun 2008 15:46:53 +0000 (+0200) Subject: Automated merge. X-Git-Tag: v1.13~338^2~7^2~6^2~13^2~28 X-Git-Url: http://sjero.net/git/?p=wget;a=commitdiff_plain;h=1a33947ca02dbb568eda1eb0a020abe39e87d86d;hp=-c Automated merge. --- 1a33947ca02dbb568eda1eb0a020abe39e87d86d diff --combined src/init.c index 2aa8e133,a634fa79..167c84fe --- a/src/init.c +++ b/src/init.c @@@ -181,15 -181,9 +181,15 @@@ static const struct { "inet6only", &opt.ipv6_only, cmd_boolean }, #endif { "input", &opt.input_filename, cmd_file }, +#ifdef ENABLE_IRI + { "iri", &opt.enable_iri, cmd_boolean }, +#endif { "keepsessioncookies", &opt.keep_session_cookies, cmd_boolean }, { "limitrate", &opt.limit_rate, cmd_bytes }, { "loadcookies", &opt.cookies_input, cmd_file }, +#ifdef ENABLE_IRI + { "locale", &opt.locale, cmd_string }, +#endif { "logfile", &opt.lfilename, cmd_file }, { "login", &opt.ftp_user, cmd_string },/* deprecated*/ { "maxredirect", &opt.max_redirect, cmd_number }, @@@ -229,9 -223,6 +229,9 @@@ { "referer", &opt.referer, cmd_string }, { "reject", &opt.rejects, cmd_vector }, { "relativeonly", &opt.relative_only, cmd_boolean }, +#ifdef ENABLE_IRI + { "remoteencoding", &opt.encoding_remote, cmd_string }, +#endif { "removelisting", &opt.remove_listing, cmd_boolean }, { "restrictfilenames", NULL, cmd_spec_restrict_file_names }, { "retrsymlinks", &opt.retr_symlinks, cmd_boolean }, @@@ -380,19 -371,14 +380,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)) @@@ -403,12 -389,40 +398,40 @@@ } 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 @@@ -549,7 -563,7 +572,7 @@@ initialize (void xfree (file); return; } - + /* Remove dashes and underscores from S, modifying S in the process. */ diff --combined src/main.c index 0727b1db,dc15bfbf..9b449438 --- a/src/main.c +++ b/src/main.c @@@ -43,9 -43,6 +43,9 @@@ as that of the covered work. * #include #include #include +#ifdef ENABLE_IRI +#include +#endif #include "utils.h" #include "init.h" @@@ -68,7 -65,17 +68,17 @@@ struct options opt; + /* defined in version.c */ extern char *version_string; + extern char *compilation_string; + extern char *system_getrc; + extern char *link_string; + /* defined in build_info.c */ + extern char *compiled_features[]; + extern char *system_wgetrc; + extern char *locale_dir; + /* Used for --version output in print_version */ + static const int max_chars_per_line = 72; #if defined(SIGHUP) || defined(SIGUSR1) static void redirect_output_signal (int); @@@ -193,16 -200,10 +203,16 @@@ static struct cmdline_option option_dat { "inet6-only", '6', OPT_BOOLEAN, "inet6only", -1 }, #endif { "input-file", 'i', OPT_VALUE, "input", -1 }, +#ifdef ENABLE_IRI + { "iri", 0, OPT_BOOLEAN, "iri", -1 }, +#endif { "keep-session-cookies", 0, OPT_BOOLEAN, "keepsessioncookies", -1 }, { "level", 'l', OPT_VALUE, "reclevel", -1 }, { "limit-rate", 0, OPT_VALUE, "limitrate", -1 }, { "load-cookies", 0, OPT_VALUE, "loadcookies", -1 }, +#ifdef ENABLE_IRI + { "locale", 0, OPT_VALUE, "locale", -1 }, +#endif { "max-redirect", 0, OPT_VALUE, "maxredirect", -1 }, { "mirror", 'm', OPT_BOOLEAN, "mirror", -1 }, { "no", 'n', OPT__NO, NULL, required_argument }, @@@ -236,9 -237,6 +246,9 @@@ { "referer", 0, OPT_VALUE, "referer", -1 }, { "reject", 'R', OPT_VALUE, "reject", -1 }, { "relative", 'L', OPT_BOOLEAN, "relativeonly", -1 }, +#ifdef ENABLE_IRI + { "remote-encoding", 0, OPT_VALUE, "remoteencoding", -1}, +#endif { "remove-listing", 0, OPT_BOOLEAN, "removelisting", -1 }, { "restrict-file-names", 0, OPT_BOOLEAN, "restrictfilenames", -1 }, { "retr-symlinks", 0, OPT_BOOLEAN, "retrsymlinks", -1 }, @@@ -700,10 -698,111 +710,111 @@@ prompt_for_password (void return getpass(""); } + /* Function that prints the line argument while limiting it + to at most line_length. prefix is printed on the first line + and an appropriate number of spaces are added on subsequent + lines.*/ + static void + format_and_print_line (char* prefix, char* line, + int line_length) + { + assert (prefix != NULL); + assert (line != NULL); + + if (line_length <= 0) + line_length = max_chars_per_line; + + const int leading_spaces = strlen (prefix); + printf ("%s", prefix); + int remaining_chars = line_length - leading_spaces; + /* We break on spaces. */ + char* token = strtok (line, " "); + while (token != NULL) + { + /* If however a token is much larger than the maximum + line length, all bets are off and we simply print the + token on the next line. */ + if (remaining_chars <= strlen (token)) + { + printf ("\n"); + int j = 0; + for (j = 0; j < leading_spaces; j++) + { + printf (" "); + } + remaining_chars = line_length - leading_spaces; + } + printf ("%s ", token); + remaining_chars -= strlen (token) + 1; // account for " " + token = strtok (NULL, " "); + } + + printf ("\n"); + xfree (prefix); + xfree (line); + } + static void print_version (void) { - printf ("GNU Wget %s\n\n", version_string); + const char *options_title = "Options : "; + const char *wgetrc_title = "Wgetrc : "; + const char *locale_title = "Locale : "; + const char *compile_title = "Compile : "; + const char *link_title = "Link : "; + const char *prefix_spaces = " "; + const int prefix_space_length = strlen (prefix_spaces); + + printf ("GNU Wget %s\n", version_string); + printf (options_title); + /* compiled_features is a char*[]. We limit the characters per + line to max_chars_per_line and prefix each line with a constant + number of spaces for proper alignment. */ + int i =0; + for (i = 0; compiled_features[i] != NULL; ) + { + int line_length = max_chars_per_line - prefix_space_length; + while ((line_length > 0) && (compiled_features[i] != NULL)) + { + printf ("%s ", compiled_features[i]); + line_length -= strlen (compiled_features[i]) + 2; + i++; + } + printf ("\n"); + if (compiled_features[i] != NULL) + { + printf (prefix_spaces); + } + } + /* Handle the case when $WGETRC is unset and $HOME/.wgetrc is + absent. */ + printf (wgetrc_title); + char *env_wgetrc = wgetrc_env_file_name (); + if (env_wgetrc && *env_wgetrc) + { + printf ("%s (env)\n%s", env_wgetrc, prefix_spaces); + xfree (env_wgetrc); + } + char *user_wgetrc = wgetrc_user_file_name (); + if (user_wgetrc) + { + printf ("%s (user)\n%s", user_wgetrc, prefix_spaces); + xfree (user_wgetrc); + } + printf ("%s (system)\n", system_wgetrc); + + format_and_print_line (strdup (locale_title), + strdup (locale_dir), + max_chars_per_line); + + format_and_print_line (strdup (compile_title), + strdup (compilation_string), + max_chars_per_line); + + format_and_print_line (strdup (link_title), + strdup (link_string), + max_chars_per_line); + printf ("\n"); /* TRANSLATORS: When available, an actual copyright character (cirle-c) should be used in preference to "(C)". */ fputs (_("\ @@@ -721,7 -820,6 +832,6 @@@ There is NO WARRANTY, to the extent per stdout); exit (0); } - int main (int argc, char **argv) @@@ -959,24 -1057,6 +1069,24 @@@ for details.\n\n")) exit (1); } +#ifdef ENABLE_IRI + if (opt.enable_iri) + { + if (!opt.locale) + { + opt.locale = getenv ("CHARSET"); + + if (opt.locale == NULL) + opt.locale = nl_langinfo(CODESET); + } + else + { + /* sXXXav : check given locale */ + logprintf (LOG_VERBOSE, "Check the locale...\n"); + } + } +#endif + if (opt.ask_passwd) { opt.passwd = prompt_for_password ();