X-Git-Url: http://sjero.net/git/?a=blobdiff_plain;f=src%2Fmain.c;h=d68cdbd6b937db48b44ca3d20b926c88e27cee08;hb=f7235a59b707cabf831127100916de63b2ef1bc7;hp=04ff76f372d6eb7182c216ad08e3027b5536dc74;hpb=76780021d822779f839bbf85883292e15eb3f587;p=wget diff --git a/src/main.c b/src/main.c index 04ff76f3..d68cdbd6 100644 --- a/src/main.c +++ b/src/main.c @@ -28,8 +28,6 @@ Corresponding Source for a non-source form of such a combination shall include the source code for the parts of OpenSSL used as well as that of the covered work. */ -#define USE_GNULIB_ALLOC - #include "wget.h" #include @@ -58,6 +56,8 @@ as that of the covered work. */ #include "http.h" /* for save_cookies */ #include +#include +#include #ifndef PATH_SEPARATOR # define PATH_SEPARATOR '/' @@ -132,6 +132,7 @@ static struct cmdline_option option_data[] = { { "accept", 'A', OPT_VALUE, "accept", -1 }, { "append-output", 'a', OPT__APPEND_OUTPUT, NULL, required_argument }, + { "ask-password", 0, OPT_BOOLEAN, "askpassword", -1 }, { "auth-no-challenge", 0, OPT_BOOLEAN, "authnochallenge", -1 }, { "background", 'b', OPT_BOOLEAN, "background", -1 }, { "backup-converted", 'K', OPT_BOOLEAN, "backupconverted", -1 }, @@ -474,6 +475,8 @@ Download:\n"), --user=USER set both ftp and http user to USER.\n"), N_("\ --password=PASS set both ftp and http password to PASS.\n"), + N_("\ + --ask-password prompt for passwords.\n"), "\n", N_("\ @@ -675,6 +678,16 @@ secs_to_human_time (double interval) return buf; } +static char * +prompt_for_password (void) +{ + if (opt.user) + printf (_("Password for user %s: "), quote (opt.user)); + else + printf (_("Password: ")); + return getpass(""); +} + static void print_version (void) { @@ -882,22 +895,44 @@ Can't timestamp and not clobber old files at the same time.\n")); exit (1); } #endif - if (opt.output_document - && (opt.page_requisites - || opt.recursive - || opt.timestamping)) + if (opt.output_document) { - printf (_("Cannot specify -r, -p or -N if -O is given.\n")); + if (opt.convert_links + && (nurl > 1 || opt.page_requisites || opt.recursive)) + { + fputs (_("\ +Cannot specify both -k and -O if multiple URLs are given, or in combination\n\ +with -p or -r. See the manual for details.\n\n"), stdout); print_usage (); exit (1); + } + if (opt.page_requisites + || opt.recursive) + { + logprintf (LOG_NOTQUIET, "%s", _("\ +WARNING: combining -O with -r or -p will mean that all downloaded content\n\ +will be placed in the single file you specified.\n\n")); + } + if (opt.timestamping) + { + logprintf (LOG_NOTQUIET, "%s", _("\ +WARNING: timestamping does nothing in combination with -O. See the manual\n\ +for details.\n\n")); + opt.timestamping = false; + } + if (opt.noclobber && file_exists_p(opt.output_document)) + { + /* Check if output file exists; if it does, exit. */ + logprintf (LOG_VERBOSE, _("File `%s' already there; not retrieving.\n"), opt.output_document); + exit(1); + } } - if (opt.output_document - && opt.convert_links - && nurl > 1) + + if (opt.ask_passwd && opt.passwd) { - printf (_("Cannot specify both -k and -O if multiple URLs are given.\n")); - print_usage (); - exit (1); + printf (_("Cannot specify both --ask-password and --password.\n")); + print_usage (); + exit (1); } if (!nurl && !opt.input_filename) @@ -912,6 +947,14 @@ Can't timestamp and not clobber old files at the same time.\n")); exit (1); } + if (opt.ask_passwd) + { + opt.passwd = prompt_for_password (); + + if (opt.passwd == NULL || opt.passwd[0] == '\0') + exit (1); + } + #ifdef MSDOS if (opt.wdebug) dbug_init();